{"version":3,"names":["dynamic","createEffect","createMemo","omit","onCleanup","Show","untrack","findItemIndex","useComboboxRootContext","composeRefs","userRef","useCompositeListItem","mergeRootProps","resolveClassStyle","useButton","AutocompleteItem","props","root","itemValue","value","disabled","nativeButton","listItem","hasItems","items","undefined","resolvedIndex","index","iv","flatFilteredItems","isItemEqualToValue","highlighted","activeIndex","itemRef","has","idx","listRef","current","list","valuesRef","allValuesRef","includes","push","id","rid","state","ref","buttonRef","focusableWhenDisabled","native","composite","onPointerDown","event","preventDefault","onMouseDown","onClick","readOnly","handleSelection","internal","role","data-highlighted","data-disabled","userClassStyle","userProps","merged","interactions","getItemProps","active","selected","visible","matchesQuery","visibilityToken","Symbol","reportVisible","setItemVisible","Tag","as","el"],"sources":["autocomplete-item.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\n/**\n * `<Autocomplete.Item>` — like `<Combobox.Item>` but with no `selected` state.\n */\n\nimport { dynamic } from \"@solidjs/web\";\nimport {\n\tcreateEffect,\n\tcreateMemo,\n\tomit,\n\tonCleanup,\n\tShow,\n\tuntrack,\n} from \"solid-js\";\nimport { findItemIndex } from \"../../combobox/internals/item-equality\";\nimport { useComboboxRootContext } from \"../../combobox/root/combobox-root-context\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { useCompositeListItem } from \"../../internals/composite/composite-list\";\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\";\n\nexport interface AutocompleteItemState {\n\tdisabled: boolean;\n\thighlighted: boolean;\n}\n\nexport interface AutocompleteItemProps<Value = unknown>\n\textends NonNativeButtonProps,\n\t\tOmit<BaseUIComponentProps<\"div\", AutocompleteItemState>, \"id\"> {\n\tas?: ValidComponent;\n\tvalue?: Value | null | undefined;\n\tindex?: number | undefined;\n\tdisabled?: boolean | undefined;\n\tchildren?: JSX.Element;\n}\n\n/**\n * An individual item in the list. Renders a `<div>` with `role=\"option\"`.\n */\nexport function AutocompleteItem<Value = unknown>(\n\tprops: AutocompleteItemProps<Value>,\n): JSX.Element {\n\tconst root = useComboboxRootContext<Value>();\n\n\tconst itemValue = (): Value | null => (props.value ?? null) as Value | null;\n\tconst disabled = (): boolean => props.disabled ?? false;\n\tconst nativeButton = (): boolean => props.nativeButton ?? false;\n\n\tconst listItem = useCompositeListItem<null>();\n\n\tconst hasItems = (): boolean => root.items() !== undefined;\n\n\tconst resolvedIndex = createMemo<number>(() => {\n\t\tif (props.index != null) return props.index;\n\t\tif (hasItems()) {\n\t\t\tconst iv = itemValue();\n\t\t\tif (iv == null) return -1;\n\t\t\treturn findItemIndex(\n\t\t\t\troot.flatFilteredItems(),\n\t\t\t\tiv,\n\t\t\t\troot.isItemEqualToValue(),\n\t\t\t);\n\t\t}\n\t\treturn listItem.index();\n\t});\n\n\tconst highlighted = createMemo<boolean>(\n\t\t() => root.activeIndex() === resolvedIndex() && resolvedIndex() !== -1,\n\t);\n\n\tlet itemRef: HTMLElement | null = null;\n\n\tcreateEffect(\n\t\t() => ({ has: hasItems(), idx: resolvedIndex(), iv: itemValue() }),\n\t\t({ has, idx, iv }) => {\n\t\t\tif (idx === -1 || iv == null) return;\n\t\t\t// Register the rendered node into `listRef` in BOTH modes. In\n\t\t\t// `items`-mode the root only SIZES `listRef` (`.length = flat.length`)\n\t\t\t// and never fills the nodes, so `useListNavigation`'s pointer path\n\t\t\t// (`listRef.indexOf(currentTarget)`) returns -1 and hover highlighting\n\t\t\t// is dead. Keyboard nav is unaffected (it drives `activeIndex`\n\t\t\t// numerically). The `valuesRef` / `allValuesRef` bookkeeping below\n\t\t\t// stays items-mode-excluded — the root owns it from the items list.\n\t\t\tif (itemRef) root.listRef.current[idx] = itemRef;\n\t\t\tif (has) return;\n\t\t\tconst list = root.valuesRef.current;\n\t\t\tlist[idx] = iv;\n\t\t\tif (!root.allValuesRef.current.includes(iv)) {\n\t\t\t\troot.allValuesRef.current.push(iv);\n\t\t\t}\n\t\t},\n\t);\n\n\tonCleanup(() => {\n\t\tconst idx = resolvedIndex();\n\t\tif (idx === -1) return;\n\t\tif (root.listRef.current[idx] === itemRef) {\n\t\t\tdelete root.listRef.current[idx];\n\t\t}\n\t\tif (!hasItems()) {\n\t\t\tdelete root.valuesRef.current[idx];\n\t\t}\n\t});\n\n\tconst id = createMemo<string | undefined>(() => {\n\t\tconst rid = root.id();\n\t\tconst idx = resolvedIndex();\n\t\tif (rid == null || idx === -1) return undefined;\n\t\treturn `${rid}-${idx}`;\n\t});\n\n\tconst state = createMemo<AutocompleteItemState>(() => ({\n\t\tdisabled: disabled(),\n\t\thighlighted: highlighted(),\n\t}));\n\n\tconst { ref: buttonRef } = useButton({\n\t\tdisabled,\n\t\tfocusableWhenDisabled: () => true,\n\t\tnative: nativeButton,\n\t\tcomposite: true,\n\t});\n\n\tfunction onPointerDown(event: PointerEvent): void {\n\t\tevent.preventDefault();\n\t}\n\tfunction onMouseDown(event: MouseEvent): void {\n\t\tevent.preventDefault();\n\t}\n\tfunction onClick(event: MouseEvent): void {\n\t\tif (disabled() || root.readOnly()) return;\n\t\tconst iv = itemValue();\n\t\tif (iv == null) return;\n\t\troot.handleSelection(event, iv);\n\t}\n\n\tconst internal = {\n\t\trole: \"option\" as const,\n\t\tget id() {\n\t\t\treturn id() ?? \"\";\n\t\t},\n\t\tonPointerDown,\n\t\tonMouseDown,\n\t\tonClick,\n\t\t// itemStateAttributesMapping projection.\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};\n\n\tconst userClassStyle = resolveClassStyle(props, () => state());\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\"value\",\n\t\t\"index\",\n\t\t\"disabled\",\n\t\t\"nativeButton\",\n\t);\n\n\t// `getItemProps` resolves the interaction `item` bags eagerly (the `useRole`\n\t// item callback reads `active` synchronously). It only feeds an unused\n\t// `-fui-option` id here, so this is a one-shot snapshot — untrack the read\n\t// to avoid `[STRICT_READ_UNTRACKED]`.\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tuntrack(() =>\n\t\t\troot.interactions.getItemProps({\n\t\t\t\tget active() {\n\t\t\t\t\treturn highlighted();\n\t\t\t\t},\n\t\t\t\tselected: false,\n\t\t\t}),\n\t\t),\n\t\tinternal,\n\t);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\t// In items-mode an item is visible iff it survived filtering\n\t// (`resolvedIndex() !== -1`). In static-children mode there is no\n\t// `flatFilteredItems`, so the item filters itself against the live query via\n\t// `root.matchesQuery` (mode-aware: `inline` / `none` keep all items visible).\n\tconst visible = createMemo<boolean>(() => {\n\t\tif (hasItems()) return resolvedIndex() !== -1;\n\t\tconst iv = itemValue();\n\t\tif (iv == null) return true;\n\t\treturn root.matchesQuery(iv);\n\t});\n\n\t// Report live visibility so `<Autocomplete.Empty>` / `<Autocomplete.List>`\n\t// can reflect the count of matching static children. Inert in items-mode\n\t// (always reports `false`; empty derives from `flatFilteredItems` there).\n\tconst visibilityToken = Symbol(\"autocomplete-item-visible\");\n\tcreateEffect(\n\t\t() => (hasItems() ? false : visible()),\n\t\t(reportVisible) => {\n\t\t\troot.setItemVisible(visibilityToken, reportVisible);\n\t\t},\n\t);\n\tonCleanup(() => {\n\t\troot.setItemVisible(visibilityToken, false);\n\t});\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn (\n\t\t<Show when={visible()}>\n\t\t\t<Tag\n\t\t\t\t{...merged}\n\t\t\t\tref={composeRefs(\n\t\t\t\t\tbuttonRef,\n\t\t\t\t\tlistItem.ref,\n\t\t\t\t\t(el: HTMLElement | null) => {\n\t\t\t\t\t\titemRef = el;\n\t\t\t\t\t},\n\t\t\t\t\tuserRef(props),\n\t\t\t\t)}\n\t\t\t/>\n\t\t</Show>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}