{"version":3,"names":["dynamic","createMemo","omit","Show","composeRefs","userRef","mergeRootProps","useOpenChangeComplete","resolveClassStyle","useTransitionStatus","useComboboxItemContext","ComboboxItemIndicator","props","item","keepMounted","selected","indicatorRef","current","mounted","transitionStatus","setMounted","open","ref","onComplete","state","internal","children","data-starting-style","undefined","data-ending-style","userClassStyle","userProps","merged","setIndicatorRef","el","Tag","as","element"],"sources":["combobox-item-indicator.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit, Show } from \"solid-js\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport type { MutableRef } from \"../../internals/floating-ui/types\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { useOpenChangeComplete } from \"../../internals/popups/use-open-change-complete\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport {\n\ttype TransitionStatus,\n\tuseTransitionStatus,\n} from \"../../internals/use-transition-status/use-transition-status\";\nimport { useComboboxItemContext } from \"../item/item-context\";\n\nexport interface ComboboxItemIndicatorState {\n\tselected: boolean;\n\ttransitionStatus: TransitionStatus;\n}\n\nexport interface ComboboxItemIndicatorProps\n\textends BaseUIComponentProps<\"span\", ComboboxItemIndicatorState> {\n\tas?: ValidComponent;\n\tkeepMounted?: boolean | undefined;\n\tchildren?: JSX.Element;\n}\n\n/**\n * Indicates whether the item is selected. Renders a `<span>`.\n */\nexport function ComboboxItemIndicator(\n\tprops: ComboboxItemIndicatorProps,\n): JSX.Element {\n\tconst item = useComboboxItemContext();\n\tconst keepMounted = (): boolean => props.keepMounted ?? false;\n\n\tconst selected = item.selected;\n\n\tconst indicatorRef: MutableRef<HTMLElement | null> = { current: null };\n\tconst { mounted, transitionStatus, setMounted } = useTransitionStatus(\n\t\tselected,\n\t\t() => true,\n\t\t() => false,\n\t);\n\n\tuseOpenChangeComplete({\n\t\topen: selected,\n\t\tref: indicatorRef,\n\t\tonComplete: () => {\n\t\t\tif (!selected()) setMounted(false);\n\t\t},\n\t});\n\n\tconst state = createMemo<ComboboxItemIndicatorState>(() => ({\n\t\tselected: selected(),\n\t\ttransitionStatus: transitionStatus(),\n\t}));\n\n\tconst internal = {\n\t\t\"aria-hidden\": true,\n\t\tget children() {\n\t\t\treturn props.children;\n\t\t},\n\t\tget \"data-starting-style\"() {\n\t\t\treturn state().transitionStatus === \"starting\" ? \"\" : undefined;\n\t\t},\n\t\tget \"data-ending-style\"() {\n\t\t\treturn state().transitionStatus === \"ending\" ? \"\" : 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\"keepMounted\",\n\t\t\"children\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tinternal,\n\t\tuserClassStyle,\n\t);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst setIndicatorRef = (el: HTMLElement | null): void => {\n\t\tindicatorRef.current = el;\n\t};\n\n\tconst Tag = dynamic(() => props.as ?? \"span\");\n\tconst element = (\n\t\t<Tag {...merged} ref={composeRefs(setIndicatorRef, userRef(props))} />\n\t);\n\n\treturn <Show when={keepMounted() || mounted()}>{element}</Show>;\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,UAAU;AACjD,SAASC,WAAW,EAAEC,OAAO,QAAQ,8BAA8B;AAEnE,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,qBAAqB,QAAQ,iDAAiD;AACvF,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAECC,mBAAmB,QACb,6DAA6D;AACpE,SAASC,sBAAsB,QAAQ,sBAAsB;AAc7D;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACpCC,KAAiC,EACnB;EACd,MAAMC,IAAI,GAAGH,sBAAsB,CAAC,CAAC;EACrC,MAAMI,WAAW,GAAGA,CAAA,KAAeF,KAAK,CAACE,WAAW,IAAI,KAAK;EAE7D,MAAMC,QAAQ,GAAGF,IAAI,CAACE,QAAQ;EAE9B,MAAMC,YAA4C,GAAG;IAAEC,OAAO,EAAE;EAAK,CAAC;EACtE,MAAM;IAAEC,OAAO;IAAEC,gBAAgB;IAAEC;EAAW,CAAC,GAAGX,mBAAmB,CACpEM,QAAQ,EACR,MAAM,IAAI,EACV,MAAM,KACP,CAAC;EAEDR,qBAAqB,CAAC;IACrBc,IAAI,EAAEN,QAAQ;IACdO,GAAG,EAAEN,YAAY;IACjBO,UAAU,EAAEA,CAAA,KAAM;MACjB,IAAI,CAACR,QAAQ,CAAC,CAAC,EAAEK,UAAU,CAAC,KAAK,CAAC;IACnC;EACD,CAAC,CAAC;EAEF,MAAMI,KAAK,GAAGvB,UAAU,CAA6B,OAAO;IAC3Dc,QAAQ,EAAEA,QAAQ,CAAC,CAAC;IACpBI,gBAAgB,EAAEA,gBAAgB,CAAC;EACpC,CAAC,CAAC,CAAC;EAEH,MAAMM,QAAQ,GAAG;IAChB,aAAa,EAAE,IAAI;IACnB,IAAIC,QAAQA,CAAA,EAAG;MACd,OAAOd,KAAK,CAACc,QAAQ;IACtB,CAAC;IACD,IAAI,qBAAqBC,CAAA,EAAG;MAC3B,OAAOH,KAAK,CAAC,CAAC,CAACL,gBAAgB,KAAK,UAAU,GAAG,EAAE,GAAGS,SAAS;IAChE,CAAC;IACD,IAAI,mBAAmBC,CAAA,EAAG;MACzB,OAAOL,KAAK,CAAC,CAAC,CAACL,gBAAgB,KAAK,QAAQ,GAAG,EAAE,GAAGS,SAAS;IAC9D;EACD,CAAC;EAED,MAAME,cAAc,GAAGtB,iBAAiB,CAACI,KAAK,EAAE,MAAMY,KAAK,CAAC,CAAC,CAAC;EAC9D,MAAMO,SAAS,GAAG7B,IAAI,CACrBU,KAAK,EACL,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EAEP,aAAa,EACb,UACD,CAAC;EAED,IAAIoB,MAA+B,GAAG1B,cAAc,CACnDmB,QAAQ,EACRK,cACD,CAAC;EACDE,MAAM,GAAG1B,cAAc,CAAC0B,MAAM,EAAED,SAAS,CAAC;EAE1C,MAAME,eAAe,GAAIC,EAAsB,IAAW;IACzDlB,YAAY,CAACC,OAAO,GAAGiB,EAAE;EAC1B,CAAC;EAED,MAAMC,GAAG,GAAGnC,OAAO,CAAC,MAAMY,KAAK,CAACwB,EAAE,IAAI,MAAM,CAAC;EAC7C,MAAMC,OAAO,GACZ,CAAC,GAAG,CAAC,IAAIL,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC5B,WAAW,CAAC6B,eAAe,EAAE5B,OAAO,CAACO,KAAK,CAAC,CAAC,CAAC,GACnE;EAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAACE,WAAW,CAAC,CAAC,IAAII,OAAO,CAAC,CAAC,CAAC,CAAC,CAACmB,OAAO,CAAC,EAAE,IAAI,CAAC;AAChE","ignoreList":[]}