forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import React from 'react'
2
3import {
4 type ContextType,
5 type ItemContextType,
6 type MenuContextType,
7} from '#/components/ContextMenu/types'
8
9export const Context = React.createContext<ContextType | null>(null)
10Context.displayName = 'ContextMenuContext'
11
12export const MenuContext = React.createContext<MenuContextType | null>(null)
13MenuContext.displayName = 'ContextMenuMenuContext'
14
15export const ItemContext = React.createContext<ItemContextType | null>(null)
16ItemContext.displayName = 'ContextMenuItemContext'
17
18export function useContextMenuContext() {
19 const context = React.useContext(Context)
20
21 if (!context) {
22 throw new Error(
23 'useContextMenuContext must be used within a Context.Provider',
24 )
25 }
26
27 return context
28}
29
30export function useContextMenuMenuContext() {
31 const context = React.useContext(MenuContext)
32
33 if (!context) {
34 throw new Error(
35 'useContextMenuMenuContext must be used within a Context.Provider',
36 )
37 }
38
39 return context
40}
41
42export function useContextMenuItemContext() {
43 const context = React.useContext(ItemContext)
44
45 if (!context) {
46 throw new Error(
47 'useContextMenuItemContext must be used within a Context.Provider',
48 )
49 }
50
51 return context
52}