{"version":3,"names":["dynamic","createMemo","omit","Show","composeRefs","userRef","mergeRootProps","resolveClassStyle","useComboboxRootContext","EMPTY_STATE","ComboboxEmpty","props","root","empty","items","undefined","flatFilteredItems","length","visibleItemCount","internal","role","children","userClassStyle","userProps","merged","setEmptyRef","el","emptyRef","current","Tag","as"],"sources":["combobox-empty.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 { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport { useComboboxRootContext } from \"../root/combobox-root-context\";\n\nexport type ComboboxEmptyState = Record<string, never>;\n\nexport interface ComboboxEmptyProps\n\textends BaseUIComponentProps<\"div\", ComboboxEmptyState> {\n\tas?: ValidComponent;\n}\n\nconst EMPTY_STATE: ComboboxEmptyState = {};\n\n/**\n * Renders its children only when the items list is empty. Announces\n * changes politely via `role=\"status\"`.\n */\nexport function ComboboxEmpty(props: ComboboxEmptyProps): JSX.Element {\n\tconst root = useComboboxRootContext();\n\n\t// Items-mode counts the filtered items; static-children mode (no `items`\n\t// prop) counts the registered children currently matching the query.\n\tconst empty = createMemo<boolean>(() =>\n\t\troot.items() !== undefined\n\t\t\t? root.flatFilteredItems().length === 0\n\t\t\t: root.visibleItemCount() === 0,\n\t);\n\n\tconst internal = {\n\t\trole: \"status\" as const,\n\t\t\"aria-live\": \"polite\" as const,\n\t\t\"aria-atomic\": true,\n\t\tget children() {\n\t\t\treturn <Show when={empty()}>{props.children}</Show>;\n\t\t},\n\t};\n\n\tconst userClassStyle = resolveClassStyle(props, () => EMPTY_STATE);\n\t// Strip children explicitly so user's children getter doesn't shadow ours.\n\tconst userProps = omit(props, \"as\", \"class\", \"style\", \"attrs\", \"children\");\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tinternal,\n\t\tuserClassStyle,\n\t);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst setEmptyRef = (el: HTMLElement | null): void => {\n\t\troot.emptyRef.current = el;\n\t};\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn <Tag {...merged} ref={composeRefs(setEmptyRef, userRef(props))} />;\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,UAAU;AACjD,SAASC,WAAW,EAAEC,OAAO,QAAQ,8BAA8B;AACnE,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,sBAAsB,QAAQ,+BAA+B;AAStE,MAAMC,WAA+B,GAAG,CAAC,CAAC;;AAE1C;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAe;EACrE,MAAMC,IAAI,GAAGJ,sBAAsB,CAAC,CAAC;;EAErC;EACA;EACA,MAAMK,KAAK,GAAGZ,UAAU,CAAU,MACjCW,IAAI,CAACE,KAAK,CAAC,CAAC,KAAKC,SAAS,GACvBH,IAAI,CAACI,iBAAiB,CAAC,CAAC,CAACC,MAAM,KAAK,CAAC,GACrCL,IAAI,CAACM,gBAAgB,CAAC,CAAC,KAAK,CAChC,CAAC;EAED,MAAMC,QAAQ,GAAG;IAChBC,IAAI,EAAE,QAAiB;IACvB,WAAW,EAAE,QAAiB;IAC9B,aAAa,EAAE,IAAI;IACnB,IAAIC,QAAQA,CAAA,EAAG;MACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAACR,KAAK,CAAC,CAAC,CAAC,CAAC,CAACF,KAAK,CAACU,QAAQ,CAAC,EAAE,IAAI,CAAC;IACpD;EACD,CAAC;EAED,MAAMC,cAAc,GAAGf,iBAAiB,CAACI,KAAK,EAAE,MAAMF,WAAW,CAAC;EAClE;EACA,MAAMc,SAAS,GAAGrB,IAAI,CAACS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;EAE1E,IAAIa,MAA+B,GAAGlB,cAAc,CACnDa,QAAQ,EACRG,cACD,CAAC;EACDE,MAAM,GAAGlB,cAAc,CAACkB,MAAM,EAAED,SAAS,CAAC;EAE1C,MAAME,WAAW,GAAIC,EAAsB,IAAW;IACrDd,IAAI,CAACe,QAAQ,CAACC,OAAO,GAAGF,EAAE;EAC3B,CAAC;EAED,MAAMG,GAAG,GAAG7B,OAAO,CAAC,MAAMW,KAAK,CAACmB,EAAE,IAAI,KAAK,CAAC;EAC5C,OAAO,CAAC,GAAG,CAAC,IAAIN,MAAM,CAAC,CAAC,GAAG,CAAC,CAACpB,WAAW,CAACqB,WAAW,EAAEpB,OAAO,CAACM,KAAK,CAAC,CAAC,CAAC,GAAG;AAC1E","ignoreList":[]}