Bluesky app fork with some witchin' additions 馃挮
at main 1.2 kB view raw
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}