{"version":3,"names":["dynamic","createMemo","omit","useBaseUiId","createChangeEventDetails","REASONS","composeRefs","userRef","useCompositeListItem","createControlledState","useFloatingParentNodeId","mergeRootProps","resolveClassStyle","useButton","useMenuRootContext","createItemHoverEmitter","MenuCheckboxItemContext","MenuCheckboxItem","props","root","emitItemHover","fallbackId","id","disabled","Boolean","closeOnClick","nativeButton","listItem","label","highlighted","activeIndex","index","checked","setUncontrolledChecked","controlled","undefined","default","defaultChecked","fallback","name","state","setChecked","next","details","onCheckedChange","isCanceled","buttonProps","ref","buttonRef","focusableWhenDisabled","native","composite","contextValue","internal","role","aria-checked","tabindex","onKeyDown","event","key","typingRef","current","preventDefault","onMouseMove","onClick","itemPress","setOpen","data-highlighted","data-disabled","data-checked","data-unchecked","userClassStyle","userProps","merged","interactions","getItemProps","Tag","as","children"],"sources":["menu-checkbox-item.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\n/**\n * `<Menu.CheckboxItem>` — a toggleable menu item. Mirrors React.\n */\n\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, 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 { createControlledState } from \"../../internals/create-controlled-state\";\nimport { useFloatingParentNodeId } from \"../../internals/floating-ui/components/floating-tree\";\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 type { MenuRootChangeEventDetails } from \"../root/menu-root-context\";\nimport { useMenuRootContext } from \"../root/menu-root-context\";\nimport { createItemHoverEmitter } from \"../utils/item-hover\";\nimport {\n\tMenuCheckboxItemContext,\n\ttype MenuCheckboxItemContextValue,\n} from \"./menu-checkbox-item-context\";\n\nexport type MenuCheckboxItemChangeEventDetails = MenuRootChangeEventDetails;\n\nexport interface MenuCheckboxItemState {\n\tdisabled: boolean;\n\thighlighted: boolean;\n\tchecked: boolean;\n}\n\nexport interface MenuCheckboxItemProps\n\textends NonNativeButtonProps,\n\t\tOmit<BaseUIComponentProps<\"div\", MenuCheckboxItemState>, \"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\t/**\n\t * Controlled checked state. When provided (not `undefined`), the\n\t * consumer owns the state — pair with {@link onCheckedChange}. When\n\t * omitted, the item manages its own checked state (seeded from\n\t * {@link defaultChecked}).\n\t */\n\tchecked?: boolean | undefined;\n\t/**\n\t * Initial checked state when uncontrolled. Read once at mount.\n\t * @default false\n\t */\n\tdefaultChecked?: boolean | undefined;\n\t/**\n\t * Fires when the item is ticked or unticked. Calling\n\t * `details.cancel()` keeps the item's own (uncontrolled) state\n\t * unchanged, mirroring React Base UI.\n\t */\n\tonCheckedChange?:\n\t\t| ((checked: boolean, details: MenuCheckboxItemChangeEventDetails) => void)\n\t\t| undefined;\n\t/** @default false */\n\tdisabled?: boolean | undefined;\n\tlabel?: string | undefined;\n\t/** @default false */\n\tcloseOnClick?: boolean | undefined;\n}\n\nexport function MenuCheckboxItem(props: MenuCheckboxItemProps): JSX.Element {\n\tconst root = useMenuRootContext();\n\tconst emitItemHover = createItemHoverEmitter(root, useFloatingParentNodeId());\n\n\tconst fallbackId = useBaseUiId();\n\tconst id = (): string | undefined =>\n\t\ttypeof props.id === \"string\" ? props.id : fallbackId;\n\n\tconst disabled = (): boolean => Boolean(props.disabled);\n\tconst closeOnClick = (): boolean => props.closeOnClick ?? false;\n\tconst nativeButton = (): boolean => props.nativeButton ?? false;\n\n\tconst listItem = useCompositeListItem({ label: props.label });\n\tconst highlighted = createMemo<boolean>(\n\t\t() => root.activeIndex() === listItem.index(),\n\t);\n\n\t// Controlled / uncontrolled checked state (Base UI `checked` /\n\t// `defaultChecked` contract): the `checked` prop wins while defined;\n\t// otherwise an internal signal (seeded once from `defaultChecked`)\n\t// backs the state and `setChecked` writes it.\n\tconst [checked, setUncontrolledChecked] = createControlledState<boolean>({\n\t\tcontrolled: () =>\n\t\t\tprops.checked === undefined ? undefined : Boolean(props.checked),\n\t\tdefault: () => props.defaultChecked,\n\t\tfallback: false,\n\t\tname: \"<Menu.CheckboxItem>\",\n\t\tstate: \"checked\",\n\t});\n\n\t// Base UI change flow: fire `onCheckedChange`, honor `details.cancel()`,\n\t// then write the uncontrolled state (inert while controlled).\n\tconst setChecked = (\n\t\tnext: boolean,\n\t\tdetails: MenuCheckboxItemChangeEventDetails,\n\t): void => {\n\t\tprops.onCheckedChange?.(next, details);\n\t\tif (details.isCanceled) return;\n\t\tsetUncontrolledChecked(next);\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 state = createMemo<MenuCheckboxItemState>(() => ({\n\t\tdisabled: disabled(),\n\t\thighlighted: highlighted(),\n\t\tchecked: checked(),\n\t}));\n\n\tconst contextValue: MenuCheckboxItemContextValue = {\n\t\tchecked,\n\t\tdisabled,\n\t\thighlighted,\n\t};\n\n\tconst internal = {\n\t\tget id() {\n\t\t\treturn id();\n\t\t},\n\t\trole: \"menuitemcheckbox\",\n\t\tget \"aria-checked\"() {\n\t\t\treturn checked() ? \"true\" : \"false\";\n\t\t},\n\t\tget tabindex() {\n\t\t\treturn highlighted() ? 0 : -1;\n\t\t},\n\t\tonKeyDown(event: KeyboardEvent) {\n\t\t\tif (event.key === \" \" && root.typingRef.current) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tonMouseMove: emitItemHover,\n\t\tonClick(event: MouseEvent) {\n\t\t\tif (disabled()) return;\n\t\t\tconst next = !checked();\n\t\t\tsetChecked(\n\t\t\t\tnext,\n\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\tREASONS.itemPress,\n\t\t\t\t\tevent,\n\t\t\t\t) as MenuCheckboxItemChangeEventDetails,\n\t\t\t);\n\t\t\tif (closeOnClick()) {\n\t\t\t\troot.setOpen(false, createChangeEventDetails(REASONS.itemPress, event));\n\t\t\t}\n\t\t},\n\t\tget \"data-highlighted\"() {\n\t\t\treturn state().highlighted ? \"\" : undefined;\n\t\t},\n\t\tget \"data-disabled\"() {\n\t\t\treturn state().disabled ? \"\" : undefined;\n\t\t},\n\t\tget \"data-checked\"() {\n\t\t\treturn state().checked ? \"\" : undefined;\n\t\t},\n\t\tget \"data-unchecked\"() {\n\t\t\treturn state().checked ? 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\"children\",\n\t\t\"id\",\n\t\t\"checked\",\n\t\t\"defaultChecked\",\n\t\t\"onCheckedChange\",\n\t\t\"disabled\",\n\t\t\"label\",\n\t\t\"closeOnClick\",\n\t\t\"nativeButton\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\troot.interactions.getItemProps(),\n\t\tbuttonProps,\n\t);\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 {...merged} ref={composeRefs(buttonRef, listItem.ref, userRef(props))}>\n\t\t\t<MenuCheckboxItemContext value={contextValue}>\n\t\t\t\t{props.children}\n\t\t\t</MenuCheckboxItemContext>\n\t\t</Tag>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}