{"version":3,"names":["dynamic","createMemo","createRenderEffect","createSignal","omit","useBaseUiId","createChangeEventDetails","REASONS","composeRefs","userRef","useCompositeListItem","useClick","useHoverReferenceInteraction","useInteractions","safePolygon","mergeRootProps","resolveClassStyle","useButton","useMenuRootContext","useMenuSubmenuRootContext","createItemHoverEmitter","MenuSubmenuTrigger","props","root","submenu","Error","parentRoot","parentMenu","emitItemHover","floatingParentNodeId","closeDelay","delay","closeDelayRef","current","fallbackId","id","disabled","Boolean","nativeButton","listItem","label","highlighted","activeIndex","index","buttonProps","ref","buttonRef","focusableWhenDisabled","native","composite","triggerElementRef","triggerElement","setTriggerElement","ownedWrite","hoverProps","floatingRootContext","enabled","openOnHover","mouseOnly","move","handleClose","open","close","click","event","toggle","localInteractions","reference","undefined","state","markActive","setActiveTriggerElement","setTriggerRef","el","internal","onPointerEnter","onMouseMove","onFocus","role","aria-expanded","tabindex","onKeyDown","key","preventDefault","setOpen","listNavigation","data-popup-open","data-pressed","data-disabled","data-highlighted","userClassStyle","userProps","merged","interactions","getReferenceProps","getItemProps","Tag","as"],"sources":["menu-submenu-trigger.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\n/**\n * `<Menu.SubmenuTrigger>` — a menu item that opens a nested submenu.\n * Mirrors `packages/react/src/menu/submenu-trigger/MenuSubmenuTrigger.tsx`.\n *\n * The submenu-trigger reads BOTH the parent menu root context (to register\n * into its composite-list) AND the inner `<Menu.SubmenuRoot>` / nested\n * `<Menu.Root>` context (to drive its own open state via `useClick`).\n *\n * ### Port deviations\n *\n *  - Hover-to-open via `useHoverReferenceInteraction` when `openOnHover`\n *    is set.\n *  - `openOnArrowKeyDown` (Arrow-Right in the parent list opens the\n *    submenu) is installed via a custom keydown handler.\n */\n\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, createRenderEffect, createSignal, omit } from \"solid-js\";\nimport { useBaseUiId } from \"../../internals/base-ui-id\";\nimport {\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../../internals/change-event-details\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { useCompositeListItem } from \"../../internals/composite/composite-list\";\nimport { useClick } from \"../../internals/floating-ui/hooks/use-click\";\nimport { useHoverReferenceInteraction } from \"../../internals/floating-ui/hooks/use-hover-reference-interaction\";\nimport { useInteractions } from \"../../internals/floating-ui/hooks/use-interactions\";\nimport { safePolygon } from \"../../internals/floating-ui/safe-polygon\";\nimport type { Delay, MutableRef } from \"../../internals/floating-ui/types\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type {\n\tBaseUIComponentProps,\n\tNonNativeButtonProps,\n} from \"../../internals/types\";\nimport { useButton } from \"../../internals/use-button/use-button\";\nimport { useMenuRootContext } from \"../root/menu-root-context\";\nimport { useMenuSubmenuRootContext } from \"../submenu-root/menu-submenu-root-context\";\nimport { createItemHoverEmitter } from \"../utils/item-hover\";\n\nexport interface MenuSubmenuTriggerState {\n\tdisabled: boolean;\n\thighlighted: boolean;\n\topen: boolean;\n}\n\nexport interface MenuSubmenuTriggerProps\n\textends NonNativeButtonProps,\n\t\tOmit<BaseUIComponentProps<\"div\", MenuSubmenuTriggerState>, \"id\"> {\n\t/**\n\t * Tag/component to render. Defaults to `\"div\"`. Replaces the\n\t * pre-spike `render` prop (axis G).\n\t */\n\tas?: ValidComponent;\n\tid?: string | undefined;\n\tlabel?: string | undefined;\n\t/** @default false */\n\tdisabled?: boolean | undefined;\n\t/** Whether the submenu should open when the trigger is hovered. */\n\topenOnHover?: boolean | undefined;\n\t/** @default 100 */\n\tdelay?: number | undefined;\n\t/** @default 0 */\n\tcloseDelay?: number | undefined;\n}\n\nexport function MenuSubmenuTrigger(\n\tprops: MenuSubmenuTriggerProps,\n): JSX.Element {\n\tconst root = useMenuRootContext(); // this is the NESTED menu root\n\n\tconst submenu = useMenuSubmenuRootContext();\n\tif (submenu == null) {\n\t\tthrow new Error(\n\t\t\t\"Base UI: <Menu.SubmenuTrigger> must be placed inside <Menu.SubmenuRoot>.\",\n\t\t);\n\t}\n\tconst parentRoot = submenu.parentMenu;\n\t// This trigger is an item of the parent menu, whose popup node is this\n\t// submenu's floating parent.\n\tconst emitItemHover = createItemHoverEmitter(\n\t\tparentRoot,\n\t\troot.floatingParentNodeId(),\n\t);\n\tcreateRenderEffect(\n\t\t() => props.closeDelay ?? 0,\n\t\t(delay) => {\n\t\t\troot.closeDelayRef.current = delay;\n\t\t},\n\t);\n\n\tconst fallbackId = useBaseUiId();\n\tconst id = (): string | undefined =>\n\t\ttypeof props.id === \"string\" ? props.id : fallbackId;\n\n\tconst disabled = (): boolean =>\n\t\tBoolean(props.disabled) || root.disabled() || parentRoot.disabled();\n\tconst nativeButton = (): boolean => props.nativeButton ?? false;\n\n\t// Register into the PARENT menu's composite-list.\n\tconst listItem = useCompositeListItem({ label: props.label });\n\n\tconst highlighted = createMemo<boolean>(\n\t\t() => parentRoot.activeIndex() === listItem.index(),\n\t);\n\n\tconst { props: buttonProps, ref: buttonRef } = useButton({\n\t\tdisabled,\n\t\tfocusableWhenDisabled: () => true,\n\t\tnative: nativeButton,\n\t\tcomposite: () => true,\n\t});\n\n\tconst triggerElementRef: MutableRef<HTMLElement | null> = { current: null };\n\tconst [triggerElement, setTriggerElement] = createSignal<HTMLElement | null>(\n\t\tnull,\n\t\t{ ownedWrite: true },\n\t);\n\n\tconst hoverProps = useHoverReferenceInteraction(root.floatingRootContext, {\n\t\tenabled: () => (props.openOnHover ?? true) && !disabled(),\n\t\tmouseOnly: true,\n\t\tmove: false,\n\t\thandleClose: safePolygon(),\n\t\tdelay: (): Delay => ({\n\t\t\topen: props.delay ?? 100,\n\t\t\tclose: props.closeDelay ?? 0,\n\t\t}),\n\t\ttriggerElementRef,\n\t\ttriggerElement,\n\t});\n\n\t// Click + local interactions for opening the submenu.\n\tconst click = useClick(root.floatingRootContext, {\n\t\tenabled: true,\n\t\tevent: \"mousedown\",\n\t\ttoggle: true,\n\t});\n\tconst localInteractions = useInteractions([\n\t\thoverProps ? { reference: hoverProps } : undefined,\n\t\tclick,\n\t]);\n\n\tconst state = createMemo<MenuSubmenuTriggerState>(() => ({\n\t\tdisabled: disabled(),\n\t\thighlighted: highlighted(),\n\t\topen: root.open(),\n\t}));\n\n\tconst markActive = (): void => {\n\t\tif (triggerElementRef.current) {\n\t\t\troot.setActiveTriggerElement(triggerElementRef.current);\n\t\t}\n\t};\n\n\tconst setTriggerRef = (el: HTMLElement | null): void => {\n\t\ttriggerElementRef.current = el;\n\t\tsetTriggerElement(el);\n\t\tif (el) {\n\t\t\troot.setActiveTriggerElement(el);\n\t\t}\n\t};\n\n\tconst internal = {\n\t\tget id() {\n\t\t\treturn id();\n\t\t},\n\t\tonPointerEnter: markActive,\n\t\tonMouseMove: emitItemHover,\n\t\tonFocus: markActive,\n\t\trole: \"menuitem\",\n\t\t\"aria-haspopup\": \"menu\",\n\t\tget \"aria-expanded\"() {\n\t\t\treturn root.open() ? \"true\" : \"false\";\n\t\t},\n\t\tget tabindex() {\n\t\t\treturn highlighted() || root.open() ? 0 : -1;\n\t\t},\n\t\tonKeyDown(event: KeyboardEvent) {\n\t\t\t// Right arrow opens the submenu (horizontal orientation\n\t\t\t// would use down-arrow; happy-dom can't test pointer\n\t\t\t// geometry so we stick to ArrowRight / ArrowLeft).\n\t\t\tif (event.key === \"ArrowRight\" && !root.open() && !disabled()) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\troot.setOpen(\n\t\t\t\t\ttrue,\n\t\t\t\t\tcreateChangeEventDetails(REASONS.listNavigation, event),\n\t\t\t\t);\n\t\t\t} else if (event.key === \"ArrowLeft\" && root.open()) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\troot.setOpen(\n\t\t\t\t\tfalse,\n\t\t\t\t\tcreateChangeEventDetails(REASONS.listNavigation, event),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tget \"data-popup-open\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget \"data-pressed\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget \"data-disabled\"() {\n\t\t\treturn state().disabled ? \"\" : undefined;\n\t\t},\n\t\tget \"data-highlighted\"() {\n\t\t\treturn state().highlighted ? \"\" : undefined;\n\t\t},\n\t};\n\n\tconst userClassStyle = resolveClassStyle(props, () => state());\n\n\tconst userProps = omit(\n\t\tprops,\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\n\t\t\"id\",\n\t\t\"disabled\",\n\t\t\"label\",\n\t\t\"openOnHover\",\n\t\t\"delay\",\n\t\t\"closeDelay\",\n\t\t\"nativeButton\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\troot.interactions.getReferenceProps(),\n\t\tlocalInteractions.getReferenceProps(),\n\t);\n\tmerged = mergeRootProps(merged, parentRoot.interactions.getItemProps());\n\tmerged = mergeRootProps(merged, buttonProps);\n\tmerged = mergeRootProps(merged, internal);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn (\n\t\t<Tag\n\t\t\t{...merged}\n\t\t\tref={composeRefs(buttonRef, listItem.ref, setTriggerRef, userRef(props))}\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}