import { createBitAttrs, getOptionUpdater, removeUndefined } from "../../internal/index.js"; import { createContextMenu } from "@melt-ui/svelte"; import { getContext, setContext } from "svelte"; import { getPositioningUpdater } from "../floating/helpers.js"; export function getContextMenuData() { const NAME = "menu"; const PARTS = [ "arrow", "checkbox-indicator", "checkbox-item", "content", "group", "item", "label", "radio-group", "radio-item", "separator", "sub-content", "sub-trigger", "trigger", ]; return { NAME, PARTS, }; } export function setCtx(props) { const { NAME, PARTS } = getContextMenuData(); const getAttrs = createBitAttrs("menu", PARTS); const contextMenu = { ...createContextMenu(removeUndefined(props)), getAttrs }; setContext(NAME, contextMenu); return { ...contextMenu, updateOption: getOptionUpdater(contextMenu.options), }; } export function getCtx() { const { NAME } = getContextMenuData(); return getContext(NAME); } export function updatePositioning(props) { const defaultPlacement = { side: "bottom", align: "start", }; const withDefaults = { ...defaultPlacement, ...props }; const { options: { positioning }, } = getCtx(); const updater = getPositioningUpdater(positioning); updater(withDefaults); }