Files
v10/dist/dev/ui/menu/context.js

44 lines
1.9 KiB
JavaScript

"use client";
import { createContext, useContext } from "react";
//#region src/ui/menu/context.tsx
const MenuContext = createContext(null);
const MenuContextProvider = MenuContext.Provider;
function useMenuContext() {
const ctx = useContext(MenuContext);
if (!ctx) throw new Error("Menu compound components must be used within a Menu.Root");
return ctx;
}
function useOptionalMenuContext() {
return useContext(MenuContext);
}
const SubMenuContext = createContext(null);
const SubMenuContextProvider = SubMenuContext.Provider;
function useSubMenuContext() {
return useContext(SubMenuContext);
}
const MenuGroupContext = createContext(null);
const MenuGroupContextProvider = MenuGroupContext.Provider;
function useMenuGroupContext() {
return useContext(MenuGroupContext);
}
const MenuRadioGroupContext = createContext(null);
const MenuRadioGroupContextProvider = MenuRadioGroupContext.Provider;
function useMenuRadioGroupContext() {
const ctx = useContext(MenuRadioGroupContext);
if (!ctx) throw new Error("Menu.RadioItem must be used within a Menu.RadioGroup");
return ctx;
}
const MenuTriggerChildContext = createContext(false);
const MenuTriggerChildContextProvider = MenuTriggerChildContext.Provider;
function useOptionalMenuTriggerChildContext() {
return useContext(MenuTriggerChildContext);
}
const MenuItemSettingContext = createContext(null);
const MenuItemSettingContextProvider = MenuItemSettingContext.Provider;
function useOptionalMenuItemSettingContext() {
return useContext(MenuItemSettingContext);
}
//#endregion
export { MenuContextProvider, MenuGroupContextProvider, MenuItemSettingContextProvider, MenuRadioGroupContextProvider, MenuTriggerChildContextProvider, SubMenuContextProvider, useMenuContext, useMenuGroupContext, useMenuRadioGroupContext, useOptionalMenuContext, useOptionalMenuItemSettingContext, useOptionalMenuTriggerChildContext, useSubMenuContext };
//# sourceMappingURL=context.js.map