@k2b/ui 0.35.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/browser/actions/Dropdown.js +132 -116
  2. package/dist/browser/actions/Dropdown.js.map +1 -1
  3. package/dist/browser/actions/Tabs.js +18 -15
  4. package/dist/browser/actions/Tabs.js.map +1 -1
  5. package/dist/browser/chat/ChatComposer.js +58 -25
  6. package/dist/browser/chat/ChatComposer.js.map +1 -1
  7. package/dist/browser/content/MapView.js +128 -13
  8. package/dist/browser/content/MapView.js.map +1 -1
  9. package/dist/browser/content/MapViewFrame.js +1 -1
  10. package/dist/browser/content/MapViewFrame.js.map +1 -1
  11. package/dist/browser/content/MessageRow.js +164 -152
  12. package/dist/browser/content/MessageRow.js.map +1 -1
  13. package/dist/browser/content/index.js +1 -0
  14. package/dist/browser/content/index.js.map +1 -1
  15. package/dist/browser/content/map-view-glyphs.js +23 -0
  16. package/dist/browser/content/map-view-glyphs.js.map +1 -0
  17. package/dist/browser/content/map-view-live.js +45 -22
  18. package/dist/browser/content/map-view-live.js.map +1 -1
  19. package/dist/browser/content/map-view-snapshot.js +191 -0
  20. package/dist/browser/content/map-view-snapshot.js.map +1 -0
  21. package/dist/browser/content/map-view-types.js.map +1 -1
  22. package/dist/browser/feedback/prompts.js +23 -9
  23. package/dist/browser/feedback/prompts.js.map +1 -1
  24. package/dist/browser/inputs/Combobox.js +164 -82
  25. package/dist/browser/inputs/Combobox.js.map +1 -1
  26. package/dist/browser/inputs/RichSelect.js +86 -67
  27. package/dist/browser/inputs/RichSelect.js.map +1 -1
  28. package/dist/browser/inputs/TextInput.js +1 -1
  29. package/dist/browser/inputs/TextInput.js.map +1 -1
  30. package/dist/browser/internal/keyed-for.js +47 -0
  31. package/dist/browser/internal/keyed-for.js.map +1 -0
  32. package/dist/browser/layout/AppWorkspace.js +73 -70
  33. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  34. package/dist/browser/layout/ScrollArea.js +4 -1
  35. package/dist/browser/layout/ScrollArea.js.map +1 -1
  36. package/dist/browser/text-editor/engine.js +13 -10
  37. package/dist/browser/text-editor/engine.js.map +1 -1
  38. package/dist/ssr/actions/Dropdown.js +101 -85
  39. package/dist/ssr/actions/Dropdown.js.map +1 -1
  40. package/dist/ssr/actions/Tabs.js +12 -9
  41. package/dist/ssr/actions/Tabs.js.map +1 -1
  42. package/dist/ssr/chat/ChatComposer.js +41 -15
  43. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  44. package/dist/ssr/content/MapView.js +128 -13
  45. package/dist/ssr/content/MapView.js.map +1 -1
  46. package/dist/ssr/content/MapViewFrame.js +1 -1
  47. package/dist/ssr/content/MapViewFrame.js.map +1 -1
  48. package/dist/ssr/content/MessageRow.js +9 -2
  49. package/dist/ssr/content/MessageRow.js.map +1 -1
  50. package/dist/ssr/content/index.js +1 -0
  51. package/dist/ssr/content/index.js.map +1 -1
  52. package/dist/ssr/content/map-view-glyphs.js +23 -0
  53. package/dist/ssr/content/map-view-glyphs.js.map +1 -0
  54. package/dist/ssr/content/map-view-snapshot.js +191 -0
  55. package/dist/ssr/content/map-view-snapshot.js.map +1 -0
  56. package/dist/ssr/content/map-view-types.js.map +1 -1
  57. package/dist/ssr/feedback/prompts.js +22 -8
  58. package/dist/ssr/feedback/prompts.js.map +1 -1
  59. package/dist/ssr/inputs/Combobox.js +79 -28
  60. package/dist/ssr/inputs/Combobox.js.map +1 -1
  61. package/dist/ssr/inputs/RichSelect.js +47 -28
  62. package/dist/ssr/inputs/RichSelect.js.map +1 -1
  63. package/dist/ssr/inputs/TextInput.js.map +1 -1
  64. package/dist/ssr/internal/keyed-for.js +47 -0
  65. package/dist/ssr/internal/keyed-for.js.map +1 -0
  66. package/dist/ssr/layout/AppWorkspace.js +1 -1
  67. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  68. package/dist/ssr/layout/ScrollArea.js +4 -1
  69. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  70. package/dist/ssr/text-editor/engine.js +13 -10
  71. package/dist/ssr/text-editor/engine.js.map +1 -1
  72. package/dist/styles.css +1 -1
  73. package/dist/types/content/MapViewFrame.d.ts +1 -1
  74. package/dist/types/content/MessageRow.d.ts +1 -1
  75. package/dist/types/content/index.d.ts +2 -1
  76. package/dist/types/content/map-view-glyphs.d.ts +5 -0
  77. package/dist/types/content/map-view-live.d.ts +1 -1
  78. package/dist/types/content/map-view-snapshot.d.ts +13 -0
  79. package/dist/types/content/map-view-types.d.ts +15 -0
  80. package/dist/types/feedback/prompts.d.ts +5 -0
  81. package/dist/types/inputs/Combobox.d.ts +12 -0
  82. package/dist/types/inputs/TextInput.d.ts +2 -1
  83. package/dist/types/internal/keyed-for.d.ts +13 -0
  84. package/dist/types/layout/AppWorkspace.d.ts +4 -1
  85. package/dist/types/layout/ScrollArea.d.ts +2 -0
  86. package/dist/types/text-editor/engine.d.ts +1 -1
  87. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["inputs/RichSelect.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { dialogCore } from \"../feedback/dialog-core\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { LocaleProvider, useLocale } from \"../intl/locale\";\nimport BottomSheet, { bottomSheetOptions } from \"../layout/BottomSheet\";\nimport { createChoicePopover, filterChoiceOptions, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { type RichSelectMessages, useRichSelectMessages } from \"./rich-select-messages\";\nimport type { ChoiceAppearance } from \"./Select\";\n\n/** One option: a name plus at most one short line. */\nexport type RichSelectItem = {\n value: string;\n /** Wraps; never truncated. */\n label: string;\n /** At most one short line that says what the choice changes. */\n description?: string;\n /** Icon class shown before the name. */\n icon?: string;\n /** Color dot shown before the name, such as a space color. Replaces `icon`. */\n color?: string;\n /** Creates a fresh visual for each render location. Replaces `icon` and `color`. */\n visual?: () => JSX.Element;\n /** Makes the row unavailable. The reason replaces `description`; the arrow keys still reach the row. */\n disabledReason?: string;\n /** Section id. Headings show only from eight options; keep each section's items together. */\n section?: string;\n /** Extra search terms that are not shown. */\n keywords?: readonly string[];\n};\n\nexport type RichSelectSection = { id: string; label: string };\n\nexport type RichSelectStatus = \"ready\" | \"loading\" | \"error\";\n\nexport type RichSelectFooter =\n | { label: string; icon?: string; onActivate: () => void }\n | { label: string; icon?: string; create: { placeholder: string; onCreate: (name: string) => void } };\n\nexport type RichSelectFact = {\n icon: string;\n text: JSX.Element;\n tone?: \"default\" | \"warning\";\n};\n\nexport type RichSelectProps = ValueFieldProps<string | null> & {\n items: readonly RichSelectItem[];\n /** Labels for the `section` ids of the items. */\n sections?: readonly RichSelectSection[];\n /** Names the list: the heading of a list without preview, the phone sheet title, and the listbox label. */\n title?: string;\n placeholder?: string;\n /** Replaces the selected item's name in the trigger, such as \"Name · address\". */\n triggerLabel?: string;\n /** Icon class for the trigger while no item with its own visual is selected. */\n icon?: string;\n tone?: \"default\" | \"warning\";\n /** Custom content inside the shared trigger button, which keeps the combobox semantics. */\n renderTrigger?: (selected: RichSelectItem | undefined) => JSX.Element;\n /**\n * The body of the preview beside the list, for options whose consequences differ.\n * Without it the picker shows only the list. Keep it to at most three facts.\n */\n renderPreview?: (item: RichSelectItem) => JSX.Element;\n searchPlaceholder?: string;\n status?: RichSelectStatus;\n onRetry?: () => void;\n /** Shown when the list is ready and has no items. */\n empty?: JSX.Element;\n footer?: RichSelectFooter;\n appearance?: ChoiceAppearance;\n placement?: \"bottom-start\" | \"top-start\";\n /** CSS lengths for the desktop popover. */\n size?: { width?: string; height?: string };\n name?: string;\n};\n\n/** Search and section headings appear from this many options. */\nexport const RICH_SELECT_SEARCH_FROM = 8;\nconst PHONE_QUERY = \"(max-width: 47.999rem)\";\nconst PLACEHOLDER_ROWS = 4;\n\ntype Row = { kind: \"heading\"; id: string; label: string } | { kind: \"item\"; item: RichSelectItem; index: number };\n\nconst isPhone = () => typeof matchMedia === \"function\" && matchMedia(PHONE_QUERY).matches;\n\nfunction RichSelectVisual(props: { item: RichSelectItem }): JSX.Element {\n return (\n <Switch>\n <Match when={props.item.visual}>{(visual) => <span class=\"k2b-rich-select__visual\">{visual()()}</span>}</Match>\n <Match when={props.item.color}>\n {(color) => (\n <span class=\"k2b-rich-select__visual\" aria-hidden=\"true\">\n <span class=\"k2b-rich-select__dot\" style={{ \"background-color\": color() }} />\n </span>\n )}\n </Match>\n <Match when={props.item.icon}>\n {(icon) => (\n <span class=\"k2b-rich-select__visual\" aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Match>\n </Switch>\n );\n}\n\nconst hasVisual = (item: RichSelectItem) => Boolean(item.visual || item.color || item.icon);\n\n/** Name and second line. The reason of an unavailable row replaces the description. */\nfunction RichSelectRowText(props: { item: RichSelectItem; labelId: string; lineId: string }): JSX.Element {\n return (\n <span class=\"k2b-rich-select__text\">\n <span id={props.labelId} class=\"k2b-rich-select__label\">\n {props.item.label}\n </span>\n <Show when={props.item.disabledReason ?? props.item.description}>\n {(line) => (\n <span id={props.lineId} class=\"k2b-rich-select__line\" data-reason={props.item.disabledReason ? \"true\" : undefined}>\n {line()}\n </span>\n )}\n </Show>\n </span>\n );\n}\n\nfunction RichSelectPlaceholders(props: { visual: boolean }): JSX.Element {\n return (\n <For each={Array.from({ length: PLACEHOLDER_ROWS }, (_, index) => index)}>\n {(index) => (\n <div class=\"k2b-rich-select__placeholder\" data-visual={props.visual ? \"true\" : undefined} aria-hidden=\"true\">\n <Show when={props.visual}>\n <span class=\"k2b-rich-select__placeholder-visual\" />\n </Show>\n <span class=\"k2b-rich-select__placeholder-lines\">\n <span style={{ width: `${[58, 46, 66, 50][index % 4]}%` }} />\n <span style={{ width: `${[34, 28, 40, 30][index % 4]}%` }} />\n </span>\n </div>\n )}\n </For>\n );\n}\n\nfunction RichSelectState(props: {\n status: \"error\" | \"empty\";\n messages: RichSelectMessages;\n empty?: JSX.Element;\n onRetry?: () => void;\n restoreFocus?: () => void;\n}): JSX.Element {\n let retryButton: HTMLButtonElement | undefined;\n onCleanup(() => {\n if (retryButton && document.activeElement === retryButton) queueMicrotask(() => props.restoreFocus?.());\n });\n return (\n <div class=\"k2b-rich-select__state\" data-status={props.status} role={props.status === \"error\" ? \"alert\" : \"status\"}>\n <span class=\"k2b-rich-select__state-icon\" aria-hidden=\"true\">\n <i class={props.status === \"error\" ? \"ti ti-alert-triangle\" : \"ti ti-list-search\"} />\n </span>\n <Show\n when={props.status === \"error\"}\n fallback={<div class=\"k2b-rich-select__state-text\">{props.empty ?? props.messages.noOptions}</div>}\n >\n <div class=\"k2b-rich-select__state-text\">{props.messages.couldNotLoad}</div>\n <Show when={props.onRetry}>\n {(retry) => (\n <Button ref={retryButton} variant=\"secondary\" size=\"sm\" onClick={() => retry()()}>\n <i class=\"ti ti-refresh\" aria-hidden=\"true\" />\n {props.messages.retry}\n </Button>\n )}\n </Show>\n </Show>\n </div>\n );\n}\n\nfunction RichSelectPreview(props: { item: RichSelectItem; render: (item: RichSelectItem) => JSX.Element; id?: string }): JSX.Element {\n return (\n <div id={props.id}>\n <h3 class=\"k2b-rich-select__preview-title\">\n <RichSelectVisual item={props.item} />\n <span>{props.item.label}</span>\n </h3>\n {props.render(props.item)}\n </div>\n );\n}\n\n/** Up to three short facts for a preview, each with an icon; warnings in the warning tone. */\nexport function RichSelectFacts(props: { facts: readonly RichSelectFact[] }): JSX.Element {\n return (\n <ul class=\"k2b-rich-select__facts\">\n <For each={props.facts.slice(0, 3)}>\n {(fact) => (\n <li data-tone={fact.tone === \"warning\" ? \"warning\" : undefined}>\n <i class={fact.icon} aria-hidden=\"true\" />\n <span>{fact.text}</span>\n </li>\n )}\n </For>\n </ul>\n );\n}\n\nfunction RichSelectFooterControl(props: {\n footer: RichSelectFooter;\n initialName: () => string;\n messages: RichSelectMessages;\n done: (run: () => void) => void;\n restoreFocus: () => void;\n}): JSX.Element {\n const [creating, setCreating] = createSignal(false);\n const [name, setName] = createSignal(\"\");\n let input: HTMLInputElement | undefined;\n let start: HTMLButtonElement | undefined;\n let controls: HTMLDivElement | undefined;\n onCleanup(() => {\n if (controls?.contains(document.activeElement)) queueMicrotask(props.restoreFocus);\n });\n const create = () => {\n const footer = props.footer;\n const value = name().trim();\n if (!(\"create\" in footer) || !value) return;\n props.done(() => footer.create.onCreate(value));\n };\n return (\n <div ref={controls} class=\"k2b-rich-select__footer\">\n <Show\n when={creating() && \"create\" in props.footer ? props.footer.create : undefined}\n fallback={\n <button\n ref={start}\n type=\"button\"\n class=\"k2b-rich-select__footer-action\"\n onClick={() => {\n const footer = props.footer;\n if (\"create\" in footer) {\n setName(props.initialName());\n setCreating(true);\n queueMicrotask(() => input?.focus());\n } else props.done(footer.onActivate);\n }}\n >\n <span class=\"k2b-rich-select__visual\" aria-hidden=\"true\">\n <i class={props.footer.icon ?? \"ti ti-plus\"} />\n </span>\n <span class=\"k2b-rich-select__label\">{props.footer.label}</span>\n </button>\n }\n >\n {(create_) => (\n <div class=\"k2b-rich-select__create\">\n <input\n ref={input}\n class=\"k2b-rich-select__create-input\"\n value={name()}\n placeholder={create_().placeholder}\n aria-label={props.footer.label}\n autocomplete=\"off\"\n onInput={(event) => setName(event.currentTarget.value)}\n onKeyDown={(event) => {\n event.stopPropagation();\n if (event.key === \"Escape\") {\n event.preventDefault();\n setCreating(false);\n queueMicrotask(() => start?.focus());\n } else if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n create();\n }\n }}\n />\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!name().trim()} onClick={create}>\n {props.messages.create}\n </Button>\n </div>\n )}\n </Show>\n </div>\n );\n}\n\n/**\n * A dropdown whose rows explain each choice: a name plus one short line, an\n * unavailable row with its reason, and an optional preview of what a choice\n * changes. Desktop opens a popover beside the trigger; a phone opens a bottom\n * sheet whose info buttons show the preview as a second level.\n */\nexport function RichSelect(props: RichSelectProps): JSX.Element {\n const messages = useRichSelectMessages();\n const locale = useLocale();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const previewId = `${meta.controlId}-preview`;\n const [query, setQuery] = createSignal(\"\");\n const [active, setActive] = createSignal(-1);\n const [height, setHeight] = createSignal<string>();\n const [sheetOpen, setSheetOpen] = createSignal(false);\n const [phone, setPhone] = createSignal(false);\n const [sheetId, setSheetId] = createSignal<string>();\n onMount(() => {\n const media = window.matchMedia(PHONE_QUERY);\n setPhone(media.matches);\n const update = () => setPhone(media.matches);\n media.addEventListener(\"change\", update);\n onCleanup(() => media.removeEventListener(\"change\", update));\n });\n let searchRef: HTMLInputElement | undefined;\n let closeSheet: (() => void) | undefined;\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const error = () => resolveMaybeAccessor(props.error);\n const status = () => props.status ?? \"ready\";\n const withPreview = () => Boolean(props.renderPreview);\n const title = () =>\n props.title ?? (typeof props.label === \"string\" ? props.label : (props[\"aria-label\"] ?? props.placeholder ?? messages().chooseOption));\n const searchable = () => status() === \"ready\" && props.items.length >= RICH_SELECT_SEARCH_FROM;\n const visible = createMemo(() => (searchable() ? filterChoiceOptions(props.items, query()) : props.items));\n const anyVisual = createMemo(() => props.items.some(hasVisual));\n const rows = createMemo<Row[]>(() => {\n const headings = props.items.length >= RICH_SELECT_SEARCH_FROM && props.sections ? props.sections : undefined;\n const result: Row[] = [];\n let section: string | undefined;\n visible().forEach((item, index) => {\n if (headings && item.section && item.section !== section) {\n const heading = headings.find((candidate) => candidate.id === item.section);\n if (heading) result.push({ kind: \"heading\", id: heading.id, label: heading.label });\n }\n section = item.section;\n result.push({ kind: \"item\", item, index });\n });\n return result;\n });\n const selected = createMemo(() => {\n const current = value();\n return current === null ? undefined : props.items.find((item) => item.value === current);\n });\n const activeItem = () => (status() === \"ready\" ? visible()[active()] : undefined);\n const optionId = (index: number) => `${listboxId}-${index}`;\n const popover = createChoicePopover(\n () => Boolean(props.disabled),\n () => ({ width: \"own\", side: props.placement === \"top-start\" ? \"above\" : \"below\" }),\n );\n const expanded = () => popover.open() || sheetOpen();\n const restorePopoverFocus = () => {\n if (popover.open()) (searchable() ? searchRef : popover.trigger())?.focus();\n };\n\n createEffect(() => {\n if (props.disabled) {\n popover.hide();\n closeSheet?.();\n }\n });\n createEffect(() => {\n const count = visible().length;\n if (!popover.open() || status() !== \"ready\") return;\n const current = untrack(active);\n if (current < 0 || current >= count) setActive(startIndex());\n });\n\n const scrollToActive = () => {\n const element = document.getElementById(optionId(active()));\n element?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (next: number) => {\n if (next < 0) return;\n setActive(next);\n queueMicrotask(scrollToActive);\n };\n const startIndex = () => {\n const index = visible().findIndex((item) => item.value === value());\n return index >= 0 ? index : visible().length > 0 ? 0 : -1;\n };\n\n const openPopover = () => {\n setQuery(\"\");\n setActive(startIndex());\n // The preview popover keeps one height while it is open, so moving\n // through rows, filtering, or the end of loading never resizes it.\n const rowsTall = status() === \"ready\" ? props.items.length : PLACEHOLDER_ROWS;\n const rem = Math.min(27.5, Math.max(18.75, rowsTall * 3.625 + 1.5));\n setHeight(props.size?.height ?? (withPreview() ? `${rem}rem` : undefined));\n popover.show();\n if (searchable()) queueMicrotask(() => searchRef?.focus());\n queueMicrotask(scrollToActive);\n };\n const open = () => {\n if (props.disabled || expanded()) return;\n if (isPhone()) openSheet();\n else openPopover();\n };\n const close = (restoreFocus = false) => {\n popover.hide(restoreFocus);\n setQuery(\"\");\n setActive(-1);\n };\n const choose = (item: RichSelectItem | undefined) => {\n if (props.disabled || status() !== \"ready\" || !item || item.disabledReason) return;\n // Hide first: the old list must never stay visible with the next value.\n close(true);\n commitFieldValue(props, item.value);\n };\n const runFooter = (run: () => void) => {\n close(true);\n run();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing) return;\n const target = event.target;\n if (\n event.key !== \"Escape\" &&\n target instanceof Element &&\n target !== popover.trigger() &&\n target !== searchRef &&\n target.closest(\"input, button, textarea, a, [contenteditable]\")\n )\n return;\n const isOpen = popover.open();\n const count = visible().length;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!isOpen) open();\n else if (status() === \"ready\") move(nextEnabledChoiceIndex(visible(), active(), event.key === \"ArrowDown\" ? 1 : -1));\n } else if ((event.key === \"Home\" || event.key === \"End\") && isOpen) {\n event.preventDefault();\n if (status() === \"ready\" && count > 0) move(event.key === \"Home\" ? 0 : count - 1);\n } else if ((event.key === \"Enter\" || event.key === \" \") && !isOpen && event.target === popover.trigger()) {\n event.preventDefault();\n open();\n } else if (event.key === \"Enter\" && isOpen) {\n // Enter on an unavailable row does nothing; the list stays open.\n event.preventDefault();\n choose(activeItem());\n } else if (event.key === \"Escape\" && isOpen) {\n // A closed picker lets Escape reach an enclosing dialog.\n event.preventDefault();\n event.stopPropagation();\n close(true);\n } else if (\n isOpen &&\n searchable() &&\n event.key.length === 1 &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n event.target !== searchRef\n ) {\n // Typing anywhere in the open picker goes to the search field.\n event.preventDefault();\n setQuery(query() + event.key);\n setActive(visible().length > 0 ? 0 : -1);\n searchRef?.focus();\n }\n };\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (!popover.open() || !(next instanceof Node)) return;\n if (popover.trigger()?.contains(next) || popoverElement?.contains(next)) return;\n close();\n };\n\n let popoverElement: HTMLDivElement | undefined;\n\n const openSheet = () => {\n const current = locale();\n const lifetime = new AbortController();\n // dialogCore can wait for a previous sheet's history traversal. Disabling\n // or unmounting the field must also cancel an opening that is still queued.\n closeSheet = () => lifetime.abort();\n let after: (() => void) | undefined;\n setSheetOpen(true);\n void dialogCore\n .open<void>(\n (closeDialog, context) => {\n context.dialog.id ||= `${meta.controlId}-sheet`;\n setSheetId(context.dialog.id);\n return (\n <LocaleProvider locale={current}>\n <BottomSheet onDismiss={context.requestDismiss}>\n <RichSelectSheet\n props={props}\n title={title()}\n value={value}\n dialog={context.dialog}\n close={() => closeDialog()}\n done={(run) => {\n after = run;\n closeDialog();\n }}\n />\n </BottomSheet>\n </LocaleProvider>\n );\n },\n {\n ...bottomSheetOptions,\n history: true,\n signal: lifetime.signal,\n // A phone keyboard must not cover the list as it opens: focus starts on the sheet.\n initialFocus: (dialog) => {\n dialog.tabIndex = -1;\n return dialog;\n },\n },\n )\n .then(() => {\n if (!lifetime.signal.aborted) after?.();\n })\n .finally(() => {\n closeSheet = undefined;\n setSheetOpen(false);\n });\n };\n onCleanup(() => closeSheet?.());\n\n const triggerText = () => props.triggerLabel ?? selected()?.label ?? props.placeholder ?? messages().chooseOption;\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-choice-control k2b-rich-select\"\n data-appearance={props.appearance ?? \"field\"}\n data-invalid={error() ? \"true\" : undefined}\n onFocusOut={onFocusOut}\n >\n <button\n ref={popover.setTrigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-choice-trigger k2b-rich-select__trigger\"\n role=\"combobox\"\n aria-haspopup={sheetOpen() || (!popover.open() && phone()) ? \"dialog\" : \"listbox\"}\n aria-expanded={expanded()}\n aria-controls={sheetOpen() ? sheetId() : popover.open() ? listboxId : undefined}\n aria-activedescendant={popover.open() && activeItem() ? optionId(active()) : undefined}\n data-tone={props.tone === \"warning\" ? \"warning\" : undefined}\n {...fieldControlAria(meta, {\n ...props,\n \"aria-label\": props[\"aria-label\"] ?? (typeof props.label === \"string\" ? undefined : title()),\n })}\n disabled={props.disabled}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={onKeyDown}\n >\n <Show\n when={props.renderTrigger}\n fallback={\n <>\n <Show\n when={selected() && hasVisual(selected()!) ? selected() : undefined}\n fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}\n >\n {(item) => <RichSelectVisual item={item()} />}\n </Show>\n <span class=\"k2b-choice-trigger__value\" data-placeholder={selected() || props.triggerLabel ? undefined : \"true\"}>\n {triggerText()}\n </span>\n <i class=\"ti ti-selector k2b-choice-trigger__chevron\" aria-hidden=\"true\" />\n </>\n }\n >\n {(render) => render()(selected())}\n </Show>\n </button>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <div\n ref={(element) => {\n popoverElement = element;\n popover.setPopover(element);\n }}\n popover=\"manual\"\n class=\"k2b-choice-popover k2b-rich-select__popover\"\n role=\"group\"\n aria-label={title()}\n data-preview={withPreview() ? \"true\" : undefined}\n data-status={status()}\n style={{ width: props.size?.width, height: height() }}\n onKeyDown={onKeyDown}\n onPointerDown={(event) => {\n // Keep focus on the trigger or search field, so the keys keep working after a click on the preview.\n if (!(event.target as Element).closest(\"input, button, textarea, a\")) event.preventDefault();\n }}\n >\n <Show when={!withPreview()}>\n <div class=\"k2b-rich-select__title\" aria-hidden=\"true\">\n {title()}\n </div>\n </Show>\n <Switch>\n <Match when={status() === \"error\"}>\n <div id={listboxId} role=\"listbox\" aria-label={title()} />\n <RichSelectState status=\"error\" messages={messages()} onRetry={props.onRetry} restoreFocus={restorePopoverFocus} />\n </Match>\n <Match when={status() === \"ready\" && props.items.length === 0}>\n <div id={listboxId} role=\"listbox\" aria-label={title()} />\n <RichSelectState status=\"empty\" messages={messages()} empty={props.empty} />\n <Show when={props.footer}>\n {(footer) => (\n <RichSelectFooterControl\n footer={footer()}\n initialName={query}\n messages={messages()}\n done={runFooter}\n restoreFocus={restorePopoverFocus}\n />\n )}\n </Show>\n </Match>\n <Match when>\n <div class=\"k2b-rich-select__body\">\n <div class=\"k2b-rich-select__column\">\n <Show when={searchable()}>\n <div class=\"k2b-choice-search k2b-rich-select__search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(input) => {\n searchRef = input;\n onCleanup(() => {\n if (document.activeElement === input)\n queueMicrotask(() => {\n if (popover.open()) popover.trigger()?.focus();\n });\n });\n }}\n type=\"search\"\n role=\"combobox\"\n aria-expanded={popover.open()}\n aria-autocomplete=\"list\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().search}\n aria-controls={listboxId}\n aria-activedescendant={activeItem() ? optionId(active()) : undefined}\n autocomplete=\"off\"\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n setActive(visible().length > 0 ? 0 : -1);\n }}\n />\n </div>\n </Show>\n <div\n id={listboxId}\n class=\"k2b-rich-select__list\"\n role=\"listbox\"\n aria-label={title()}\n aria-busy={status() === \"loading\" ? \"true\" : undefined}\n data-visual={anyVisual() ? \"true\" : undefined}\n data-choice-scroll\n >\n <Show when={status() === \"loading\"}>\n <span class=\"k2b-sr-only\">{messages().loading}</span>\n <RichSelectPlaceholders visual={anyVisual() || props.items.length === 0} />\n </Show>\n <Show when={status() === \"ready\"}>\n <For each={rows()} fallback={<div class=\"k2b-rich-select__no-results\">{messages().noResults}</div>}>\n {(row) =>\n row.kind === \"heading\" ? (\n <div class=\"k2b-rich-select__heading\" role=\"presentation\">\n {row.label}\n </div>\n ) : (\n // biome-ignore lint/a11y/useKeyWithClickEvents: the trigger or search field handles the keys through aria-activedescendant.\n <div\n id={optionId(row.index)}\n class=\"k2b-rich-select__option\"\n role=\"option\"\n aria-selected={row.item.value === value()}\n aria-disabled={row.item.disabledReason ? \"true\" : undefined}\n aria-labelledby={`${optionId(row.index)}-label`}\n aria-describedby={\n [\n row.item.disabledReason || row.item.description ? `${optionId(row.index)}-line` : \"\",\n withPreview() && row.index === active() ? previewId : \"\",\n ]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n data-active={row.index === active() ? \"true\" : undefined}\n onPointerMove={() => {\n if (active() !== row.index) setActive(row.index);\n }}\n onClick={() => choose(row.item)}\n >\n <Show when={anyVisual()}>\n <Show when={hasVisual(row.item)} fallback={<span class=\"k2b-rich-select__visual\" />}>\n <RichSelectVisual item={row.item} />\n </Show>\n </Show>\n <RichSelectRowText\n item={row.item}\n labelId={`${optionId(row.index)}-label`}\n lineId={`${optionId(row.index)}-line`}\n />\n <i class=\"ti ti-check k2b-rich-select__check\" aria-hidden=\"true\" />\n </div>\n )\n }\n </For>\n </Show>\n </div>\n <Show when={props.footer && status() === \"ready\"}>\n <RichSelectFooterControl\n footer={props.footer!}\n initialName={query}\n messages={messages()}\n done={runFooter}\n restoreFocus={restorePopoverFocus}\n />\n </Show>\n </div>\n <Show when={props.renderPreview}>\n {(render) => (\n <div class=\"k2b-rich-select__preview\" data-choice-scroll>\n <Show when={status() === \"loading\"}>\n <div class=\"k2b-rich-select__preview-placeholder\" aria-hidden=\"true\">\n <span />\n <span style={{ width: \"86%\" }} />\n <span style={{ width: \"72%\" }} />\n <span style={{ width: \"80%\" }} />\n </div>\n </Show>\n <Show when={activeItem()}>{(item) => <RichSelectPreview id={previewId} item={item()} render={render()} />}</Show>\n </div>\n )}\n </Show>\n </div>\n </Match>\n </Switch>\n </div>\n </div>\n </Field>\n );\n}\n\n/**\n * The phone presentation: a bottom sheet with the list. With a preview, an\n * info button beside each row, unavailable rows included, opens the preview as\n * a second level with Back and Choose.\n */\nfunction RichSelectSheet(sheet: {\n props: RichSelectProps;\n title: string;\n value: () => string | null;\n dialog: HTMLDialogElement;\n close: () => void;\n done: (run: () => void) => void;\n}): JSX.Element {\n const messages = useRichSelectMessages();\n const props = sheet.props;\n const uid = createUniqueId();\n const [query, setQuery] = createSignal(\"\");\n const [detailValue, setDetailValue] = createSignal<string>();\n // Resolve from the current snapshot: access and availability can change while\n // the detail level is open.\n const detail = createMemo(() => props.items.find((item) => item.value === detailValue()));\n let back: HTMLButtonElement | undefined;\n let returnValue: string | undefined;\n const status = () => props.status ?? \"ready\";\n const searchable = () => status() === \"ready\" && props.items.length >= RICH_SELECT_SEARCH_FROM;\n const visible = createMemo(() => (searchable() ? filterChoiceOptions(props.items, query()) : props.items));\n const anyVisual = createMemo(() => props.items.some(hasVisual));\n const headings = () => (props.items.length >= RICH_SELECT_SEARCH_FROM && props.sections ? props.sections : undefined);\n const restoreSheetFocus = () => {\n if (sheet.dialog.open) sheet.dialog.focus();\n };\n const headingBefore = (index: number) => {\n const item = visible()[index];\n const list = headings();\n if (!list || !item?.section || visible()[index - 1]?.section === item.section) return undefined;\n return list.find((candidate) => candidate.id === item.section)?.label;\n };\n const choose = (item: RichSelectItem) => {\n if (props.disabled || status() !== \"ready\" || item.disabledReason) return;\n sheet.done(() => {\n const current = props.items.find((candidate) => candidate.value === item.value);\n if (!props.disabled && status() === \"ready\" && current && !current.disabledReason) commitFieldValue(props, current.value);\n });\n };\n const rowId = (index: number) => `k2b-rich-select-sheet-${uid}-${index}`;\n const showDetail = (item: RichSelectItem) => {\n returnValue = item.value;\n // The second level keeps the sheet's height, so Back and Choose stay where they are.\n sheet.dialog.style.minHeight = `${sheet.dialog.getBoundingClientRect().height}px`;\n setDetailValue(item.value);\n queueMicrotask(() => back?.focus());\n };\n const leaveDetail = () => {\n sheet.dialog.style.minHeight = \"\";\n setDetailValue(undefined);\n const value = returnValue;\n queueMicrotask(() => {\n const index = visible().findIndex((item) => item.value === value);\n const original = index >= 0 ? document.getElementById(`${rowId(index)}-info`) : undefined;\n const fallback = sheet.dialog.querySelector<HTMLButtonElement>(\".k2b-rich-select__sheet-row > button\");\n (original ?? fallback ?? sheet.dialog).focus();\n });\n };\n createEffect(() => {\n if (detailValue() !== undefined && (!detail() || status() !== \"ready\")) leaveDetail();\n });\n // Escape on the second level goes back to the list instead of closing the sheet.\n const onEscape = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\" || !detail()) return;\n event.preventDefault();\n event.stopPropagation();\n leaveDetail();\n };\n onMount(() => {\n sheet.dialog.addEventListener(\"keydown\", onEscape, true);\n onCleanup(() => {\n sheet.dialog.removeEventListener(\"keydown\", onEscape, true);\n // dialogCore may reuse the dialog element for the next dialog.\n sheet.dialog.style.minHeight = \"\";\n });\n });\n\n return (\n <>\n <header class=\"k2b-rich-select__sheet-header\">\n <Show when={detail()}>\n <button ref={back} type=\"button\" class=\"k2b-dialog__close\" aria-label={messages().back} onClick={leaveDetail}>\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </button>\n </Show>\n <h2>{detail()?.label ?? sheet.title}</h2>\n <button type=\"button\" class=\"k2b-dialog__close\" aria-label={messages().close} onClick={sheet.close}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </header>\n <Show\n when={detail()}\n fallback={\n <BottomSheet.Body>\n <Switch>\n <Match when={status() === \"error\"}>\n <RichSelectState status=\"error\" messages={messages()} onRetry={props.onRetry} restoreFocus={restoreSheetFocus} />\n </Match>\n <Match when={status() === \"ready\" && props.items.length === 0}>\n <RichSelectState status=\"empty\" messages={messages()} empty={props.empty} />\n <Show when={props.footer}>\n {(footer) => (\n <RichSelectFooterControl\n footer={footer()}\n initialName={query}\n messages={messages()}\n done={sheet.done}\n restoreFocus={restoreSheetFocus}\n />\n )}\n </Show>\n </Match>\n <Match when>\n <Show when={searchable()}>\n <div class=\"k2b-choice-search k2b-rich-select__search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(input) => {\n onCleanup(() => {\n if (document.activeElement === input) queueMicrotask(restoreSheetFocus);\n });\n }}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().search}\n autocomplete=\"off\"\n onInput={(event) => setQuery(event.currentTarget.value)}\n />\n </div>\n </Show>\n <div\n class=\"k2b-rich-select__list\"\n role=\"list\"\n aria-label={sheet.title}\n aria-busy={status() === \"loading\" ? \"true\" : undefined}\n data-visual={anyVisual() ? \"true\" : undefined}\n >\n <Show when={status() === \"loading\"}>\n <span class=\"k2b-sr-only\">{messages().loading}</span>\n <RichSelectPlaceholders visual={anyVisual() || props.items.length === 0} />\n </Show>\n <Show when={status() === \"ready\"}>\n <For each={visible()} fallback={<div class=\"k2b-rich-select__no-results\">{messages().noResults}</div>}>\n {(item, index) => (\n <>\n <Show when={headingBefore(index())}>{(label) => <div class=\"k2b-rich-select__heading\">{label()}</div>}</Show>\n <div class=\"k2b-rich-select__sheet-row\" role=\"listitem\" data-info={props.renderPreview ? \"true\" : undefined}>\n <button\n id={rowId(index())}\n type=\"button\"\n class=\"k2b-rich-select__option\"\n aria-current={item.value === sheet.value() ? \"true\" : undefined}\n aria-disabled={item.disabledReason ? \"true\" : undefined}\n aria-labelledby={`${rowId(index())}-label`}\n aria-describedby={item.disabledReason || item.description ? `${rowId(index())}-line` : undefined}\n onClick={() => choose(item)}\n >\n <Show when={anyVisual()}>\n <Show when={hasVisual(item)} fallback={<span class=\"k2b-rich-select__visual\" />}>\n <RichSelectVisual item={item} />\n </Show>\n </Show>\n <RichSelectRowText item={item} labelId={`${rowId(index())}-label`} lineId={`${rowId(index())}-line`} />\n <i class=\"ti ti-check k2b-rich-select__check\" aria-hidden=\"true\" />\n </button>\n <Show when={props.renderPreview}>\n <button\n id={`${rowId(index())}-info`}\n type=\"button\"\n class=\"k2b-rich-select__info\"\n aria-label={messages().detailsFor({ name: item.label })}\n onClick={() => showDetail(item)}\n >\n <i class=\"ti ti-info-circle\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </>\n )}\n </For>\n </Show>\n </div>\n <Show when={props.footer && status() === \"ready\"}>\n <RichSelectFooterControl\n footer={props.footer!}\n initialName={query}\n messages={messages()}\n done={sheet.done}\n restoreFocus={restoreSheetFocus}\n />\n </Show>\n </Match>\n </Switch>\n </BottomSheet.Body>\n }\n >\n {(item) => (\n <>\n <BottomSheet.Body>\n <div class=\"k2b-rich-select__preview\" data-level=\"detail\">\n <RichSelectPreview item={item()} render={props.renderPreview!} />\n </div>\n </BottomSheet.Body>\n <BottomSheet.Footer>\n <Button\n variant=\"primary\"\n size=\"lg\"\n class=\"k2b-rich-select__choose\"\n disabled={Boolean(item().disabledReason)}\n onClick={() => choose(item())}\n >\n <i class=\"ti ti-check\" aria-hidden=\"true\" />\n {messages().choose}\n </Button>\n </BottomSheet.Footer>\n </>\n )}\n </Show>\n </>\n );\n}\n\nexport default RichSelect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SACE,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,GAAG,EAEH,KAAK,EACL,SAAS,EACT,OAAO,EACP,IAAI,EACJ,MAAM,EACN,OAAO,QACF,UAAU;AACjB,SAAS,MAAM,QAAQ,mBAAmB;AAC1C,SAAS,UAAU,QAAQ,yBAAyB;AACpD,SAAS,eAAe,EAAE,KAAK,EAAE,gBAAgB,QAAQ,mBAAmB;AAC5E,SAAS,cAAc,EAAE,SAAS,QAAQ,gBAAgB;AAC1D,OAAO,WAAW,IAAI,kBAAkB,QAAQ,uBAAuB;AACvE,SAAS,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,QAAQ,UAAU;AAE3F,SAAS,gBAAgB,EAAE,oBAAoB,QAAQ,kBAAkB;AACzE,SAAkC,qBAAqB,QAAQ,wBAAwB;;AAGvF;;AAmEA;AACA,OAAO,MAAM,uBAAuB,GAAG,CAAC;AACxC,MAAM,WAAW,GAAG,wBAAwB;AAC5C,MAAM,gBAAgB,GAAG,CAAC;AAI1B,MAAM,OAAO,GAAG,MAAM,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO;AAEzF,SAAS,gBAAgB,CAAC,KAA+B,EAAe;EACtE,yBACG,MAAM;IAAA;MAAA,0BACJ,KAAK;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,IAAI,CAAC,MAAM;QAAA;QAAA,UAAI,MAAM;UAAA;UAAA,qBAA4C,MAAM,CAAC,CAAC,CAAC,CAAC;UAAA;QAAA;MAAQ,sBACrG,KAAK;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,IAAI,CAAC,KAAK;QAAA;QAAA,UACzB,KAAK;UAAA;YAAA;UAAA,8DAE6D,KAAK,CAAC,CAAC;UAAA;QAAA;MAE1E,sBAEF,KAAK;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,IAAI,CAAC,IAAI;QAAA;QAAA,UACxB,IAAI;UAAA;YAAA;UAAA,kCAEQ,IAAI,CAAC,CAAC;UAAA;QAAA;MAEnB;IAAA;EAAA;AAIT;AAEA,MAAM,SAAS,GAAI,IAAoB,IAAK,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;;AAE3F;AACA,SAAS,iBAAiB,CAAC,KAAgE,EAAe;EACxG;IAAA;MAAA;MAAA;MAAA;IAAA,sBAGO,KAAK,CAAC,IAAI,CAAC,KAAK;IAAA,kCAElB,IAAI;MAAA,IAAC,IAAI;QAAA,OAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW;MAAA;MAAA,UAC3D,IAAI;QAAA;QAAA,gBAED,IAAI;QAAA;UAAA,UADG,KAAK,CAAC,MAAM;YAAA,OAA6C,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,SAAS;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;QAAA;MAAA;IAGlH;IAAA,2CARO,KAAK,CAAC,OAAO;IAAA;EAAA;AAY7B;AAEA,SAAS,sBAAsB,CAAC,KAA0B,EAAe;EACvE,yBACG,GAAG;IAAA,IAAC,IAAI;MAAA,OAAE,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,EAAE;MAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;IAAA;IAAA,UACpE,KAAK;MAAA;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA,kCAEF,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,MAAM;QAAA;QAAA;UAAA;QAAA;MAAA;MAAA;QAAA,WAD6B,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS;UAAA,OAK9D,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG;UAAA,OACjC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG;QAAA;QAAA;QAAA;QAAA;MAAA;QAAA;QAAA;QAAA;MAAA;MAAA;IAAA;EAG5D;AAGP;AAEA,SAAS,eAAe,CAAC,KAMxB,EAAe;EACd,IAAI,WAA0C;EAC9C,SAAS,CAAC,MAAM;IACd,IAAI,WAAW,IAAI,QAAQ,CAAC,aAAa,KAAK,WAAW,EAAE,cAAc,CAAC,MAAM,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;EACzG,CAAC,CAAC;EACF;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA,mCAKK,IAAI;MAAA,IACH,IAAI;QAAA,OAAE,KAAK,CAAC,MAAM,KAAK,OAAO;MAAA;MAAA,IAC9B,QAAQ;QAAA;UAAA;UAAA,uBAA4C,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS;UAAA;QAAA;MAAA;MAAA;QAAA;UAAA;UAAA,uBAEjD,KAAK,CAAC,QAAQ,CAAC,YAAY;UAAA;QAAA,wBACpE,IAAI;UAAA,IAAC,IAAI;YAAA,OAAE,KAAK,CAAC,OAAO;UAAA;UAAA,UACrB,KAAK,sBACJ,MAAM;YAAA;cAAA,YAAM,WAAW;cAAA,0CAAX,WAAW;YAAA;YAAE,OAAO;YAAa,IAAI;YAAM,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAAA;cAAA,gDAE7E,KAAK,CAAC,QAAQ,CAAC,KAAK;YAAA;UAAA;QAExB;MAAA;IAAA;IAAA;MAAA,WAf0C,KAAK,CAAC,MAAM;QAAA,OAAQ,KAAK,CAAC,MAAM,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ;QAAA,OAEpG,KAAK,CAAC,MAAM,KAAK,OAAO,GAAG,sBAAsB,GAAG,mBAAmB;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;MAAA;MAAA;IAAA;IAAA;EAAA;AAkBzF;AAEA,SAAS,iBAAiB,CAAC,KAA2F,EAAe;EACnI;IAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA,mCAGO,gBAAgB;MAAA,IAAC,IAAI;QAAA,OAAE,KAAK,CAAC,IAAI;MAAA;IAAA;IAAA,uBAC3B,KAAK,CAAC,IAAI,CAAC,KAAK;IAAA,uBAExB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAAA,4CALlB,KAAK,CAAC,EAAE;IAAA;EAAA;AAQrB;;AAEA;AACA,OAAO,SAAS,eAAe,CAAC,KAA2C,EAAe;EACxF;IAAA;IAAA,mCAEK,GAAG;MAAA,IAAC,IAAI;QAAA,OAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;MAAA;MAAA,UAC9B,IAAI;QAAA;UAAA;UAAA;QAAA,uBAGK,IAAI,CAAC,IAAI;QAAA;UAAA,WAFH,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;YAAA,OAClD,IAAI,CAAC,IAAI;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;QAAA;MAAA;IAGtB;IAAA;EAAA;AAIT;AAEA,SAAS,uBAAuB,CAAC,KAMhC,EAAe;EACd,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;EACxC,IAAI,KAAmC;EACvC,IAAI,KAAoC;EACxC,IAAI,QAAoC;EACxC,SAAS,CAAC,MAAM;IACd,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;EACpF,CAAC,CAAC;EACF,MAAM,MAAM,GAAG,MAAM;IACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;IACrC,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACjD,CAAC;EACD;IAAA;IAAA,aACY,QAAQ;IAAA,uDAAR,QAAQ;IAAA,mCACf,IAAI;MAAA,IACH,IAAI;QAAA,OAAE,wBAAQ,CAAC,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,OAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS;MAAA;MAAA,IAC9E,QAAQ;QAAA;UAAA;YAAA;YAAA;YAAA;UAAA,iBAKK,MAAM;YACb,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;YAC3B,IAAI,QAAQ,IAAI,MAAM,EAAE;cACtB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;cAC5B,WAAW,CAAC,IAAI,CAAC;cACjB,cAAc,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;UACtC,CAAC;UAAA,aAVI,KAAK;UAAA,uDAAL,KAAK;UAAA,uBAe4B,KAAK,CAAC,MAAM,CAAC,KAAK;UAAA,mCAF5C,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY;UAAA;UAAA;QAAA;MAAA;MAAA,UAM/C,OAAO;QAAA;UAAA;UAAA;UAAA;QAAA,mBAUS,KAAK,IAAK;UACpB,KAAK,CAAC,eAAe,CAAC,CAAC;UACvB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,CAAC,CAAC;YACtB,WAAW,CAAC,KAAK,CAAC;YAClB,cAAc,CAAC,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;UACtC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACtD,KAAK,CAAC,cAAc,CAAC,CAAC;YACtB,MAAM,CAAC,CAAC;UACV;QACF,CAAC;QAAA,iBAXS,KAAK,IAAK,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;QAAA,aANjD,KAAK;QAAA,uDAAL,KAAK;QAAA,mCAmBX,MAAM;UAAC,IAAI;UAAU,OAAO;UAAW,IAAI;UAAA,IAAM,QAAQ;YAAA,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;UAAA;UAAE,OAAO,EAAE,MAAM;UAAA;YAAA,OACxF,KAAK,CAAC,QAAQ,CAAC,MAAM;UAAA;QAAA;QAAA;UAAA,WAjBT,OAAO,CAAC,CAAC,CAAC,WAAW;YAAA,QACtB,KAAK,CAAC,MAAM,CAAC,KAAK;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;QAAA,8CAFvB,IAAI,CAAC,CAAC;QAAA;QAAA;MAAA;IAqBlB;IAAA;EAAA;AAIT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS,UAAU,CAAC,KAAsB,EAAe;EAC9D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,CAAC;EACxC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;EACtC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU;EAC7C,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU;EAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;EAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,YAAY,CAAS,CAAC;EAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,YAAY,CAAS,CAAC;EACpD,OAAO,CAAC,MAAM;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EAC9D,CAAC,CAAC;EACF,IAAI,SAAuC;EAC3C,IAAI,UAAoC;EACxC,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI;EAC7D,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC;EACrD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,IAAI,OAAO;EAC5C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;EACtD,MAAM,KAAK,GAAG,MACZ,KAAK,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAa,CAAC;EACxI,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,uBAAuB;EAC9F,MAAM,OAAO,GAAG,UAAU,CAAC,MAAO,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAM,CAAC;EAC1G,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC/D,MAAM,IAAI,GAAG,UAAU,CAAQ,MAAM;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,uBAAuB,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS;IAC7G,MAAM,MAAa,GAAG,EAAE;IACxB,IAAI,OAA2B;IAC/B,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;MACjC,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAE,SAAS,IAAK,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;QAC3E,IAAI,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;UAAE,IAAI,EAAE,SAAS;UAAE,EAAE,EAAE,OAAO,CAAC,EAAE;UAAE,KAAK,EAAE,OAAO,CAAC;QAAM,CAAC,CAAC;MACrF;MACA,OAAO,GAAG,IAAI,CAAC,OAAO;MACtB,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,EAAE,MAAM;QAAE,IAAI;QAAE;MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,OAAO,MAAM;EACf,CAAC,CAAC;EACF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC;IACvB,OAAO,OAAO,KAAK,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAE,IAAI,IAAK,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;EAC1F,CAAC,CAAC;EACF,MAAM,UAAU,GAAG,MAAO,MAAM,CAAC,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAU;EACjF,MAAM,QAAQ,GAAI,KAAa,IAAK,GAAG,SAAS,IAAI,KAAK,EAAE;EAC3D,MAAM,OAAO,GAAG,mBAAmB,CACjC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC7B,OAAO;IAAE,KAAK,EAAE,KAAK;IAAE,IAAI,EAAE,KAAK,CAAC,SAAS,KAAK,WAAW,GAAG,OAAO,GAAG;EAAQ,CAAC,CACpF,CAAC;EACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;EACpD,MAAM,mBAAmB,GAAG,MAAM;IAChC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC7E,CAAC;EAED,YAAY,CAAC,MAAM;IACjB,IAAI,KAAK,CAAC,QAAQ,EAAE;MAClB,OAAO,CAAC,IAAI,CAAC,CAAC;MACd,UAAU,GAAG,CAAC;IAChB;EACF,CAAC,CAAC;EACF,YAAY,CAAC,MAAM;IACjB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM;IAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEF,MAAM,cAAc,GAAG,MAAM;IAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,cAAc,CAAC;MAAE,KAAK,EAAE;IAAU,CAAC,CAAC;EAC/C,CAAC;EACD,MAAM,IAAI,GAAI,IAAY,IAAK;IAC7B,IAAI,IAAI,GAAG,CAAC,EAAE;IACd,SAAS,CAAC,IAAI,CAAC;IACf,cAAc,CAAC,cAAc,CAAC;EAChC,CAAC;EACD,MAAM,UAAU,GAAG,MAAM;IACvB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAE,IAAI,IAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;IACnE,OAAO,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3D,CAAC;EAED,MAAM,WAAW,GAAG,MAAM;IACxB,QAAQ,CAAC,EAAE,CAAC;IACZ,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACvB;IACA;IACA,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IACnE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,cAAc,CAAC,cAAc,CAAC;EAChC,CAAC;EACD,MAAM,IAAI,GAAG,MAAM;IACjB,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,EAAE;IAClC,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,KACtB,WAAW,CAAC,CAAC;EACpB,CAAC;EACD,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,KAAK,KAAK;IACtC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC;IACZ,SAAS,CAAC,CAAC,CAAC,CAAC;EACf,CAAC;EACD,MAAM,MAAM,GAAI,IAAgC,IAAK;IACnD,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;IAC5E;IACA,KAAK,CAAC,IAAI,CAAC;IACX,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;EACrC,CAAC;EACD,MAAM,SAAS,GAAI,GAAe,IAAK;IACrC,KAAK,CAAC,IAAI,CAAC;IACX,GAAG,CAAC,CAAC;EACP,CAAC;EAED,MAAM,SAAS,GAAI,KAAoB,IAAK;IAC1C,IAAI,KAAK,CAAC,WAAW,EAAE;IACvB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;IAC3B,IACE,KAAK,CAAC,GAAG,KAAK,QAAQ,IACtB,MAAM,YAAY,OAAO,IACzB,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,IAC5B,MAAM,KAAK,SAAS,IACpB,MAAM,CAAC,OAAO,CAAC,+CAA+C,CAAC,EAE/D;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM;IAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;MACxD,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KACf,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,KAAK,MAAM,EAAE;MAClE,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACnF,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;MACxG,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,CAAC,CAAC;IACR,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,EAAE;MAC1C;MACA,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACtB,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,EAAE;MAC3C;MACA,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,KAAK,CAAC,eAAe,CAAC,CAAC;MACvB,KAAK,CAAC,IAAI,CAAC;IACb,CAAC,MAAM,IACL,MAAM,IACN,UAAU,CAAC,CAAC,IACZ,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IACtB,CAAC,KAAK,CAAC,OAAO,IACd,CAAC,KAAK,CAAC,OAAO,IACd,CAAC,KAAK,CAAC,MAAM,IACb,KAAK,CAAC,MAAM,KAAK,SAAS,EAC1B;MACA;MACA,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;MAC7B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;MACxC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpB;EACF,CAAC;EACD,MAAM,UAAU,GAAI,KAAiB,IAAK;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa;IAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,EAAE;IAChD,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;IACzE,KAAK,CAAC,CAAC;EACT,CAAC;EAED,IAAI,cAA0C;EAE9C,MAAM,SAAS,GAAG,MAAM;IACtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC;IACxB,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,CAAC;IACtC;IACA;IACA,UAAU,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,KAA+B;IACnC,YAAY,CAAC,IAAI,CAAC;IAClB,KAAK,UAAU,CACZ,IAAI,CACH,CAAC,WAAW,EAAE,OAAO,KAAK;MACxB,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,QAAQ;MAC/C,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;MAC7B,yBACG,cAAc;QAAC,MAAM,EAAE,OAAO;QAAA;UAAA,yBAC5B,WAAW;YAAA,IAAC,SAAS;cAAA,OAAE,OAAO,CAAC,cAAc;YAAA;YAAA;cAAA,yBAC3C,eAAe;gBACd,KAAK,EAAE,KAAK;gBAAA,IACZ,KAAK;kBAAA,OAAE,KAAK,CAAC,CAAC;gBAAA;gBACd,KAAK,EAAE,KAAK;gBAAA,IACZ,MAAM;kBAAA,OAAE,OAAO,CAAC,MAAM;gBAAA;gBACtB,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC;gBAC1B,IAAI,EAAG,GAAG,IAAK;kBACb,KAAK,GAAG,GAAG;kBACX,WAAW,CAAC,CAAC;gBACf;cAAC;YAAA;UAAA;QAAA;MAAA;IAKX,CAAC,EACD;MACE,GAAG,kBAAkB;MACrB,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,QAAQ,CAAC,MAAM;MACvB;MACA,YAAY,EAAG,MAAM,IAAK;QACxB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,OAAO,MAAM;MACf;IACF,CACF,CAAC,CACA,IAAI,CAAC,MAAM;MACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC;IACzC,CAAC,CAAC,CACD,OAAO,CAAC,MAAM;MACb,UAAU,GAAG,SAAS;MACtB,YAAY,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;EACN,CAAC;EACD,SAAS,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;EAE/B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY;EAEjH,yBACG,KAAK;IAAA;MAAA,OACG,KAAK,CAAC,KAAK;IAAA;IAAA,IAClB,KAAK;MAAA,OAAE,KAAK,CAAC,KAAK;IAAA;IAAA,IAClB,WAAW;MAAA,OAAE,KAAK,CAAC,WAAW;IAAA;IAAA,IAC9B,KAAK;MAAA,OAAE,KAAK,CAAC,CAAC;IAAA;IACd,IAAI,EAAE,IAAI;IAAA,IACV,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA,IACxB,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA;MAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA,oBAMV,UAAU;MAAA,aAGf,OAAO,CAAC,UAAU;MAAA,uDAAlB,OAAO,CAAC,UAAU;MAAA;QAAA,IACvB,EAAE;UAAA,OAAE,IAAI,CAAC,SAAS;QAAA;QAAA;UAAA,OAIH,SAAS,CAAC,CAAC,IAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAE,GAAG,QAAQ,GAAG,SAAS;QAAA;QAAA;UAAA,OAClE,QAAQ,CAAC,CAAC;QAAA;QAAA;UAAA,OACV,wBAAS,CAAC,CAAC,MAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS;QAAA;QAAA;UAAA,OACxD,uBAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,OAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;QAAA;QAAA;UAAA,OAC3E,KAAK,CAAC,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;QAAA;MAAA,SACvD,gBAAgB,CAAC,IAAI,EAAE;QACzB,GAAG,KAAK;QACR,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;MAC7F,CAAC,CAAC;QAAA,IACF,QAAQ;UAAA,OAAE,KAAK,CAAC,QAAQ;QAAA;QAAA,WACf,MAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAE;QAAA,aACvC;MAAS;MAAA,mCAEnB,IAAI;QAAA,IACH,IAAI;UAAA,OAAE,KAAK,CAAC,aAAa;QAAA;QAAA,IACzB,QAAQ;UAAA,0BAEH,IAAI;YAAA,IACH,IAAI;cAAA,OAAE,wBAAQ,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAE,CAAC,OAAG,QAAQ,CAAC,CAAC,GAAG,SAAS;YAAA;YAAA,IACnE,QAAQ;cAAA,yBAAG,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,KAAK,CAAC,IAAI;gBAAA;gBAAA,UAAI,IAAI;kBAAA;kBAAA,mCAAe,IAAI,CAAC,CAAC;kBAAA;gBAAA;cAAuB;YAAA;YAAA,UAElF,IAAI,sBAAM,gBAAgB;cAAA,IAAC,IAAI;gBAAA,OAAE,IAAI,CAAC,CAAC;cAAA;YAAA;UAAI;YAAA;YAAA,iBAG5C,WAAW;YAAA,0DAD4C,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,SAAS,GAAG,MAAM;YAAA;UAAA;QAAA;QAAA,UAOjH,MAAM,IAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;MAAC;MAAA,mCAGpC,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,IAAI;QAAA;QAAA,UAAI,IAAI;UAAA;UAAA,8CAAgC,IAAI,CAAC,CAAC;UAAA,8CAAS,KAAK,CAAC,CAAC,IAAI,EAAE;UAAA;QAAA;MAAI;MAAA,uBAc5E,KAAK,IAAK;QACxB;QACA,IAAI,CAAE,KAAK,CAAC,MAAM,CAAa,OAAO,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;MAC9F,CAAC;MAAA,mBAJU,SAAS;MAAA,MAXd,OAAO,IAAK;QAChB,cAAc,GAAG,OAAO;QACxB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;MAC7B,CAAC;MAAA,mCAcA,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,CAAC,WAAW,CAAC,CAAC;QAAA;QAAA;UAAA;UAAA,iBAErB,KAAK;UAAA;QAAA;MAAA;MAAA,mCAGT,MAAM;QAAA;UAAA,0BACJ,KAAK;YAAA,IAAC,IAAI;cAAA,OAAE,MAAM,CAAC,CAAC,KAAK,OAAO;YAAA;YAAA;cAAA;gBAAA;gBAAA,6BACtB,SAAS;gBAAA,oDAA6B,KAAK,CAAC,CAAC;gBAAA;cAAA,wBACrD,eAAe;gBAAC,MAAM;gBAAA,IAAS,QAAQ;kBAAA,OAAE,QAAQ,CAAC,CAAC;gBAAA;gBAAA,IAAE,OAAO;kBAAA,OAAE,KAAK,CAAC,OAAO;gBAAA;gBAAE,YAAY,EAAE;cAAmB;YAAA;UAAA,sBAEhH,KAAK;YAAA,IAAC,IAAI;cAAA,OAAE,mBAAM,CAAC,CAAC,KAAK,OAAO,OAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAA;YAAA;cAAA;gBAAA;gBAAA,6BAClD,SAAS;gBAAA,oDAA6B,KAAK,CAAC,CAAC;gBAAA;cAAA,wBACrD,eAAe;gBAAC,MAAM;gBAAA,IAAS,QAAQ;kBAAA,OAAE,QAAQ,CAAC,CAAC;gBAAA;gBAAA,IAAE,KAAK;kBAAA,OAAE,KAAK,CAAC,KAAK;gBAAA;cAAA,sBACvE,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,KAAK,CAAC,MAAM;gBAAA;gBAAA,UACpB,MAAM,sBACL,uBAAuB;kBAAA,IACtB,MAAM;oBAAA,OAAE,MAAM,CAAC,CAAC;kBAAA;kBAChB,WAAW,EAAE,KAAK;kBAAA,IAClB,QAAQ;oBAAA,OAAE,QAAQ,CAAC,CAAC;kBAAA;kBACpB,IAAI,EAAE,SAAS;kBACf,YAAY,EAAE;gBAAmB;cAEpC;YAAA;UAAA,sBAGJ,KAAK;YAAC,IAAI;YAAA;cAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA,mCAGJ,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,UAAU,CAAC,CAAC;gBAAA;gBAAA;kBAAA;oBAAA;oBAAA;kBAAA,iBAuBR,KAAK,IAAK;oBAClB,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;oBACnC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;kBAC1C,CAAC;kBAAA,MAtBK,KAAK,IAAK;oBACd,SAAS,GAAG,KAAK;oBACjB,SAAS,CAAC,MAAM;sBACd,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAClC,cAAc,CAAC,MAAM;wBACnB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;sBAChD,CAAC,CAAC;oBACN,CAAC,CAAC;kBACJ,CAAC;kBAAA,wCAQc,SAAS;kBAAA;oBAAA,YALT,OAAO,CAAC,IAAI,CAAC,CAAC;sBAAA,QAGhB,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM;sBAAA,QAC7C,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM;sBAAA,QAEjC,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAAA;oBAAA;kBAAA;kBAAA,8CAJ7D,KAAK,CAAC,CAAC;kBAAA;kBAAA;gBAAA;cAAA;cAAA,6BAcd,SAAS;cAAA,mCAQZ,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,MAAM,CAAC,CAAC,KAAK,SAAS;gBAAA;gBAAA;kBAAA;oBAAA;oBAAA,uBACL,QAAQ,CAAC,CAAC,CAAC,OAAO;oBAAA;kBAAA,wBAC5C,sBAAsB;oBAAA,IAAC,MAAM;sBAAA,OAAE,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAA;kBAAA;gBAAA;cAAA;cAAA,mCAExE,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,MAAM,CAAC,CAAC,KAAK,OAAO;gBAAA;gBAAA;kBAAA,yBAC7B,GAAG;oBAAA,IAAC,IAAI;sBAAA,OAAE,IAAI,CAAC,CAAC;oBAAA;oBAAA,IAAE,QAAQ;sBAAA;wBAAA;wBAAA,uBAA4C,QAAQ,CAAC,CAAC,CAAC,SAAS;wBAAA;sBAAA;oBAAA;oBAAA,UACvF,GAAG,IACH,GAAG,CAAC,IAAI,KAAK,SAAS;sBAAA;sBAAA,uBAEjB,GAAG,CAAC,KAAK;sBAAA;oBAAA,OAGZ;oBAAA;sBAAA;wBAAA;wBAAA;wBAAA;wBAAA;wBAAA;sBAAA,iBAoBW,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;sBAAA,uBAHhB,MAAM;wBACnB,IAAI,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;sBAClD,CAAC;sBAAA,mCAGA,IAAI;wBAAA,IAAC,IAAI;0BAAA,OAAE,SAAS,CAAC,CAAC;wBAAA;wBAAA;0BAAA,yBACpB,IAAI;4BAAA,IAAC,IAAI;8BAAA,OAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;4BAAA;4BAAA,IAAE,QAAQ;8BAAA;4BAAA;4BAAA;8BAAA,yBACtC,gBAAgB;gCAAA,IAAC,IAAI;kCAAA,OAAE,GAAG,CAAC,IAAI;gCAAA;8BAAA;4BAAA;0BAAA;wBAAA;sBAAA;sBAAA,mCAGnC,iBAAiB;wBAAA,IAChB,IAAI;0BAAA,OAAE,GAAG,CAAC,IAAI;wBAAA;wBAAA,IACd,OAAO;0BAAA,OAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;wBAAA;wBAAA,IACvC,MAAM;0BAAA,OAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;wBAAA;sBAAA;sBAAA;wBAAA,YA5BnC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;0BAAA,QAGR,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;0BAAA,QAC1B,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,SAAS;0BAAA,QAC1C,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;0BAAA,QAE7C,CACE,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,EACpF,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,CACzD,CACE,MAAM,CAAC,OAAO,CAAC,CACf,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;0BAAA,QAEd,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;wBAAA;wBAAA;wBAAA;wBAAA;wBAAA;wBAAA;wBAAA;sBAAA;wBAAA;wBAAA;wBAAA;wBAAA;wBAAA;wBAAA;sBAAA;sBAAA;sBAAA;oBAAA;kBAkB3D;gBAAA;cAAA;cAAA,mCAKR,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,oBAAK,CAAC,MAAM,OAAI,MAAM,CAAC,CAAC,KAAK,OAAO;gBAAA;gBAAA;kBAAA,yBAC7C,uBAAuB;oBAAA,IACtB,MAAM;sBAAA,OAAE,KAAK,CAAC,MAAM;oBAAA;oBACpB,WAAW,EAAE,KAAK;oBAAA,IAClB,QAAQ;sBAAA,OAAE,QAAQ,CAAC,CAAC;oBAAA;oBACpB,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE;kBAAmB;gBAAA;cAAA;cAAA,mCAItC,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,KAAK,CAAC,aAAa;gBAAA;gBAAA,UAC3B,MAAM;kBAAA;oBAAA;oBAAA;oBAAA;oBAAA;kBAAA,mCAEH,IAAI;oBAAA,IAAC,IAAI;sBAAA,OAAE,MAAM,CAAC,CAAC,KAAK,SAAS;oBAAA;oBAAA;sBAAA;wBAAA;wBAAA;wBAAA;wBAAA;sBAAA;oBAAA;kBAAA;kBAAA,mCAQjC,IAAI;oBAAA,IAAC,IAAI;sBAAA,OAAE,UAAU,CAAC,CAAC;oBAAA;oBAAA,UAAI,IAAI,sBAAM,iBAAiB;sBAAC,EAAE,EAAE,SAAS;sBAAA,IAAE,IAAI;wBAAA,OAAE,IAAI,CAAC,CAAC;sBAAA;sBAAA,IAAE,MAAM;wBAAA,OAAE,MAAM,CAAC,CAAC;sBAAA;oBAAA;kBAAI;kBAAA;gBAAA;cAE5G;cAAA;gBAAA,YA/Ea,KAAK,CAAC,CAAC;kBAAA,QACR,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS;kBAAA,QACzC,SAAS,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;gBAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;cAAA;cAAA;YAAA;UAAA;QAAA;MAAA;MAAA;QAAA,YA9HxC,KAAK,CAAC,UAAU,IAAI,OAAO;UAAA,QAC9B,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;UAAA,QAmD5B,KAAK,CAAC,CAAC;UAAA,QACL,WAAW,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;UAAA,QACnC,MAAM,CAAC,CAAC;UAAA,QACL,KAAK,CAAC,IAAI,EAAE,KAAK;UAAA,QAAU,MAAM,CAAC,CAAC;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA;MAAA;MAAA;IAAA;EAAA;AA6J7D;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,KAOxB,EAAe;EACd,MAAM,QAAQ,GAAG,qBAAqB,CAAC,CAAC;EACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;EACzB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC;EAC5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;EAC1C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,YAAY,CAAS,CAAC;EAC5D;EACA;EACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAE,IAAI,IAAK,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;EACzF,IAAI,IAAmC;EACvC,IAAI,WAA+B;EACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,IAAI,OAAO;EAC5C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,uBAAuB;EAC9F,MAAM,OAAO,GAAG,UAAU,CAAC,MAAO,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAM,CAAC;EAC1G,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC/D,MAAM,QAAQ,GAAG,MAAO,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,uBAAuB,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAU;EACrH,MAAM,iBAAiB,GAAG,MAAM;IAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC7C,CAAC;EACD,MAAM,aAAa,GAAI,KAAa,IAAK;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,SAAS;IAC/F,OAAO,IAAI,CAAC,IAAI,CAAE,SAAS,IAAK,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK;EACvE,CAAC;EACD,MAAM,MAAM,GAAI,IAAoB,IAAK;IACvC,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;IACnE,KAAK,CAAC,IAAI,CAAC,MAAM;MACf,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAE,SAAS,IAAK,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;MAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;IAC3H,CAAC,CAAC;EACJ,CAAC;EACD,MAAM,KAAK,GAAI,KAAa,IAAK,yBAAyB,GAAG,IAAI,KAAK,EAAE;EACxE,MAAM,UAAU,GAAI,IAAoB,IAAK;IAC3C,WAAW,GAAG,IAAI,CAAC,KAAK;IACxB;IACA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,IAAI;IACjF,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B,cAAc,CAAC,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;EACrC,CAAC;EACD,MAAM,WAAW,GAAG,MAAM;IACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;IACjC,cAAc,CAAC,SAAS,CAAC;IACzB,MAAM,KAAK,GAAG,WAAW;IACzB,cAAc,CAAC,MAAM;MACnB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAE,IAAI,IAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;MACjE,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS;MACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAoB,sCAAsC,CAAC;MACtG,CAAC,QAAQ,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC;EACD,YAAY,CAAC,MAAM;IACjB,IAAI,WAAW,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;EACvF,CAAC,CAAC;EACF;EACA,MAAM,QAAQ,GAAI,KAAoB,IAAK;IACzC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;IACzC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtB,KAAK,CAAC,eAAe,CAAC,CAAC;IACvB,WAAW,CAAC,CAAC;EACf,CAAC;EACD,OAAO,CAAC,MAAM;IACZ,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC;IACxD,SAAS,CAAC,MAAM;MACd,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC;MAC3D;MACA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;IACnC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA,mCAGO,IAAI;MAAA,IAAC,IAAI;QAAA,OAAE,MAAM,CAAC,CAAC;MAAA;MAAA;QAAA;QAAA,iBAC+E,WAAW;QAAA,aAA/F,IAAI;QAAA,uDAAJ,IAAI;QAAA,oDAAsD,QAAQ,CAAC,CAAC,CAAC,IAAI;QAAA;QAAA;MAAA;IAAA;IAAA,uBAInF,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK;IAAA,oCACoD,KAAK,CAAC,KAAK;IAAA,oDAAtC,QAAQ,CAAC,CAAC,CAAC,KAAK;IAAA;IAAA;EAAA,wBAI7E,IAAI;IAAA,IACH,IAAI;MAAA,OAAE,MAAM,CAAC,CAAC;IAAA;IAAA,IACd,QAAQ;MAAA,yBACL,WAAW,CAAC,IAAI;QAAA;UAAA,yBACd,MAAM;YAAA;cAAA,0BACJ,KAAK;gBAAA,IAAC,IAAI;kBAAA,OAAE,MAAM,CAAC,CAAC,KAAK,OAAO;gBAAA;gBAAA;kBAAA,yBAC9B,eAAe;oBAAC,MAAM;oBAAA,IAAS,QAAQ;sBAAA,OAAE,QAAQ,CAAC,CAAC;oBAAA;oBAAA,IAAE,OAAO;sBAAA,OAAE,KAAK,CAAC,OAAO;oBAAA;oBAAE,YAAY,EAAE;kBAAiB;gBAAA;cAAA,sBAE9G,KAAK;gBAAA,IAAC,IAAI;kBAAA,OAAE,mBAAM,CAAC,CAAC,KAAK,OAAO,OAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAA;gBAAA;kBAAA,0BAC1D,eAAe;oBAAC,MAAM;oBAAA,IAAS,QAAQ;sBAAA,OAAE,QAAQ,CAAC,CAAC;oBAAA;oBAAA,IAAE,KAAK;sBAAA,OAAE,KAAK,CAAC,KAAK;oBAAA;kBAAA,sBACvE,IAAI;oBAAA,IAAC,IAAI;sBAAA,OAAE,KAAK,CAAC,MAAM;oBAAA;oBAAA,UACpB,MAAM,sBACL,uBAAuB;sBAAA,IACtB,MAAM;wBAAA,OAAE,MAAM,CAAC,CAAC;sBAAA;sBAChB,WAAW,EAAE,KAAK;sBAAA,IAClB,QAAQ;wBAAA,OAAE,QAAQ,CAAC,CAAC;sBAAA;sBAAA,IACpB,IAAI;wBAAA,OAAE,KAAK,CAAC,IAAI;sBAAA;sBAChB,YAAY,EAAE;oBAAiB;kBAElC;gBAAA;cAAA,sBAGJ,KAAK;gBAAC,IAAI;gBAAA;kBAAA,0BACR,IAAI;oBAAA,IAAC,IAAI;sBAAA,OAAE,UAAU,CAAC,CAAC;oBAAA;oBAAA;sBAAA;wBAAA;wBAAA;sBAAA,kBAcR,KAAK,IAAK,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;sBAAA,MAVjD,KAAK,IAAK;wBACd,SAAS,CAAC,MAAM;0BACd,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC;wBACzE,CAAC,CAAC;sBACJ,CAAC;sBAAA;wBAAA,YAGY,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM;0BAAA,QAC7C,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM;wBAAA;wBAAA;wBAAA;sBAAA;wBAAA;wBAAA;sBAAA;sBAAA,+CAFjD,KAAK,CAAC,CAAC;sBAAA;sBAAA;oBAAA;kBAAA;oBAAA;sBAAA;sBAAA;sBAAA;sBAAA;oBAAA,oCAejB,IAAI;sBAAA,IAAC,IAAI;wBAAA,OAAE,MAAM,CAAC,CAAC,KAAK,SAAS;sBAAA;sBAAA;wBAAA;0BAAA;0BAAA,wBACL,QAAQ,CAAC,CAAC,CAAC,OAAO;0BAAA;wBAAA,wBAC5C,sBAAsB;0BAAA,IAAC,MAAM;4BAAA,OAAE,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;0BAAA;wBAAA;sBAAA;oBAAA;oBAAA,oCAExE,IAAI;sBAAA,IAAC,IAAI;wBAAA,OAAE,MAAM,CAAC,CAAC,KAAK,OAAO;sBAAA;sBAAA;wBAAA,yBAC7B,GAAG;0BAAA,IAAC,IAAI;4BAAA,OAAE,OAAO,CAAC,CAAC;0BAAA;0BAAA,IAAE,QAAQ;4BAAA;8BAAA;8BAAA,wBAA4C,QAAQ,CAAC,CAAC,CAAC,SAAS;8BAAA;4BAAA;0BAAA;0BAAA,UAC3F,CAAC,IAAI,EAAE,KAAK,wBAER,IAAI;4BAAA,IAAC,IAAI;8BAAA,OAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;4BAAA;4BAAA,UAAI,KAAK;8BAAA;8BAAA,kBAA4C,KAAK;8BAAA;4BAAA;0BAAS;4BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;4BAAA,kBAUxF,MAAM,MAAM,CAAC,IAAI,CAAC;4BAAA,oCAE1B,IAAI;8BAAA,IAAC,IAAI;gCAAA,OAAE,SAAS,CAAC,CAAC;8BAAA;8BAAA;gCAAA,yBACpB,IAAI;kCAAA,IAAC,IAAI;oCAAA,OAAE,SAAS,CAAC,IAAI,CAAC;kCAAA;kCAAA,IAAE,QAAQ;oCAAA;kCAAA;kCAAA;oCAAA,yBAClC,gBAAgB;sCAAC,IAAI,EAAE;oCAAI;kCAAA;gCAAA;8BAAA;4BAAA;4BAAA,oCAG/B,iBAAiB;8BAAC,IAAI,EAAE,IAAI;8BAAA,IAAE,OAAO;gCAAA,OAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;8BAAA;8BAAA,IAAE,MAAM;gCAAA,OAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;8BAAA;4BAAA;4BAAA,oCAGpG,IAAI;8BAAA,IAAC,IAAI;gCAAA,OAAE,KAAK,CAAC,aAAa;8BAAA;8BAAA;gCAAA;gCAAA,kBAMlB,MAAM,UAAU,CAAC,IAAI,CAAC;gCAAA;kCAAA,YAJ3B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oCAAA,QAGhB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;sCAAE,IAAI,EAAE,IAAI,CAAC;oCAAM,CAAC,CAAC;kCAAA;kCAAA;kCAAA;gCAAA;kCAAA;kCAAA;gCAAA;gCAAA;gCAAA;8BAAA;4BAAA;4BAAA;8BAAA,YAxBM,KAAK,CAAC,aAAa,GAAG,MAAM,GAAG,SAAS;gCAAA,QAEnG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCAAA,QAGJ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;gCAAA,QAChD,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,SAAS;gCAAA,QACtC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;gCAAA,QACxB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;4BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;8BAAA;4BAAA;4BAAA;4BAAA;0BAAA;wBAwBvG;sBAAA;oBAAA;oBAAA;sBAAA,YA7CO,KAAK,CAAC,KAAK;wBAAA,QACZ,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS;wBAAA,QACzC,SAAS,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;sBAAA;sBAAA;sBAAA;sBAAA;oBAAA;sBAAA;sBAAA;sBAAA;oBAAA;oBAAA;kBAAA,wBA+C9C,IAAI;oBAAA,IAAC,IAAI;sBAAA,OAAE,oBAAK,CAAC,MAAM,OAAI,MAAM,CAAC,CAAC,KAAK,OAAO;oBAAA;oBAAA;sBAAA,yBAC7C,uBAAuB;wBAAA,IACtB,MAAM;0BAAA,OAAE,KAAK,CAAC,MAAM;wBAAA;wBACpB,WAAW,EAAE,KAAK;wBAAA,IAClB,QAAQ;0BAAA,OAAE,QAAQ,CAAC,CAAC;wBAAA;wBAAA,IACpB,IAAI;0BAAA,OAAE,KAAK,CAAC,IAAI;wBAAA;wBAChB,YAAY,EAAE;sBAAiB;oBAAA;kBAAA;gBAAA;cAAA;YAAA;UAAA;QAAA;MAAA;IAAA;IAAA,UAQzC,IAAI,uBAED,WAAW,CAAC,IAAI;MAAA;QAAA;QAAA,oCAEZ,iBAAiB;UAAA,IAAC,IAAI;YAAA,OAAE,IAAI,CAAC,CAAC;UAAA;UAAA,IAAE,MAAM;YAAA,OAAE,KAAK,CAAC,aAAa;UAAA;QAAA;QAAA;MAAA;IAAA,sBAG/D,WAAW,CAAC,MAAM;MAAA;QAAA,yBAChB,MAAM;UACL,OAAO;UACP,IAAI;UAAA;UAAA,IAEJ,QAAQ;YAAA,OAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;UAAA;UACxC,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;UAAA;YAAA,iDAG5B,QAAQ,CAAC,CAAC,CAAC,MAAM;UAAA;QAAA;MAAA;IAAA;EAIzB;AAIT;AAEA,eAAe,UAAU;AAAC","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/RichSelect.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { dialogCore } from \"../feedback/dialog-core\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { LocaleProvider, useLocale } from \"../intl/locale\";\nimport BottomSheet, { bottomSheetOptions } from \"../layout/BottomSheet\";\nimport { createChoicePopover, filterChoiceOptions, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { type RichSelectMessages, useRichSelectMessages } from \"./rich-select-messages\";\nimport type { ChoiceAppearance } from \"./Select\";\n\n/** One option: a name plus at most one short line. */\nexport type RichSelectItem = {\n value: string;\n /** Wraps; never truncated. */\n label: string;\n /** At most one short line that says what the choice changes. */\n description?: string;\n /** Icon class shown before the name. */\n icon?: string;\n /** Color dot shown before the name, such as a space color. Replaces `icon`. */\n color?: string;\n /** Creates a fresh visual for each render location. Replaces `icon` and `color`. */\n visual?: () => JSX.Element;\n /** Makes the row unavailable. The reason replaces `description`; the arrow keys still reach the row. */\n disabledReason?: string;\n /** Section id. Headings show only from eight options; keep each section's items together. */\n section?: string;\n /** Extra search terms that are not shown. */\n keywords?: readonly string[];\n};\n\nexport type RichSelectSection = { id: string; label: string };\n\nexport type RichSelectStatus = \"ready\" | \"loading\" | \"error\";\n\nexport type RichSelectFooter =\n | { label: string; icon?: string; onActivate: () => void }\n | { label: string; icon?: string; create: { placeholder: string; onCreate: (name: string) => void } };\n\nexport type RichSelectFact = {\n icon: string;\n text: JSX.Element;\n tone?: \"default\" | \"warning\";\n};\n\nexport type RichSelectProps = ValueFieldProps<string | null> & {\n items: readonly RichSelectItem[];\n /** Labels for the `section` ids of the items. */\n sections?: readonly RichSelectSection[];\n /** Names the list: the heading of a list without preview, the phone sheet title, and the listbox label. */\n title?: string;\n placeholder?: string;\n /** Replaces the selected item's name in the trigger, such as \"Name · address\". */\n triggerLabel?: string;\n /** Icon class for the trigger while no item with its own visual is selected. */\n icon?: string;\n tone?: \"default\" | \"warning\";\n /** Custom content inside the shared trigger button, which keeps the combobox semantics. */\n renderTrigger?: (selected: RichSelectItem | undefined) => JSX.Element;\n /**\n * The body of the preview beside the list, for options whose consequences differ.\n * Without it the picker shows only the list. Keep it to at most three facts.\n */\n renderPreview?: (item: RichSelectItem) => JSX.Element;\n searchPlaceholder?: string;\n status?: RichSelectStatus;\n onRetry?: () => void;\n /** Shown when the list is ready and has no items. */\n empty?: JSX.Element;\n footer?: RichSelectFooter;\n appearance?: ChoiceAppearance;\n placement?: \"bottom-start\" | \"top-start\";\n /** CSS lengths for the desktop popover. */\n size?: { width?: string; height?: string };\n name?: string;\n};\n\n/** Search and section headings appear from this many options. */\nexport const RICH_SELECT_SEARCH_FROM = 8;\nconst PHONE_QUERY = \"(max-width: 47.999rem)\";\nconst PLACEHOLDER_ROWS = 4;\n\ntype Row = { kind: \"heading\"; id: string; label: string } | { kind: \"item\"; item: RichSelectItem; index: number };\n\nconst rowKey = (row: Row) => (row.kind === \"heading\" ? `heading:${row.id}` : `item:${row.item.value}`);\n\nconst isPhone = () => typeof matchMedia === \"function\" && matchMedia(PHONE_QUERY).matches;\n\nfunction RichSelectVisual(props: { item: RichSelectItem }): JSX.Element {\n return (\n <Switch>\n <Match when={props.item.visual}>{(visual) => <span class=\"k2b-rich-select__visual\">{visual()()}</span>}</Match>\n <Match when={props.item.color}>\n {(color) => (\n <span class=\"k2b-rich-select__visual\" aria-hidden=\"true\">\n <span class=\"k2b-rich-select__dot\" style={{ \"background-color\": color() }} />\n </span>\n )}\n </Match>\n <Match when={props.item.icon}>\n {(icon) => (\n <span class=\"k2b-rich-select__visual\" aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Match>\n </Switch>\n );\n}\n\nconst hasVisual = (item: RichSelectItem) => Boolean(item.visual || item.color || item.icon);\n\n/** Name and second line. The reason of an unavailable row replaces the description. */\nfunction RichSelectRowText(props: { item: RichSelectItem; labelId: string; lineId: string }): JSX.Element {\n return (\n <span class=\"k2b-rich-select__text\">\n <span id={props.labelId} class=\"k2b-rich-select__label\">\n {props.item.label}\n </span>\n <Show when={props.item.disabledReason ?? props.item.description}>\n {(line) => (\n <span id={props.lineId} class=\"k2b-rich-select__line\" data-reason={props.item.disabledReason ? \"true\" : undefined}>\n {line()}\n </span>\n )}\n </Show>\n </span>\n );\n}\n\nfunction RichSelectPlaceholders(props: { visual: boolean }): JSX.Element {\n return (\n <For each={Array.from({ length: PLACEHOLDER_ROWS }, (_, index) => index)}>\n {(index) => (\n <div class=\"k2b-rich-select__placeholder\" data-visual={props.visual ? \"true\" : undefined} aria-hidden=\"true\">\n <Show when={props.visual}>\n <span class=\"k2b-rich-select__placeholder-visual\" />\n </Show>\n <span class=\"k2b-rich-select__placeholder-lines\">\n <span style={{ width: `${[58, 46, 66, 50][index % 4]}%` }} />\n <span style={{ width: `${[34, 28, 40, 30][index % 4]}%` }} />\n </span>\n </div>\n )}\n </For>\n );\n}\n\nfunction RichSelectState(props: {\n status: \"error\" | \"empty\";\n messages: RichSelectMessages;\n empty?: JSX.Element;\n onRetry?: () => void;\n restoreFocus?: () => void;\n}): JSX.Element {\n let retryButton: HTMLButtonElement | undefined;\n onCleanup(() => {\n if (retryButton && document.activeElement === retryButton) queueMicrotask(() => props.restoreFocus?.());\n });\n return (\n <div class=\"k2b-rich-select__state\" data-status={props.status} role={props.status === \"error\" ? \"alert\" : \"status\"}>\n <span class=\"k2b-rich-select__state-icon\" aria-hidden=\"true\">\n <i class={props.status === \"error\" ? \"ti ti-alert-triangle\" : \"ti ti-list-search\"} />\n </span>\n <Show\n when={props.status === \"error\"}\n fallback={<div class=\"k2b-rich-select__state-text\">{props.empty ?? props.messages.noOptions}</div>}\n >\n <div class=\"k2b-rich-select__state-text\">{props.messages.couldNotLoad}</div>\n <Show when={props.onRetry}>\n {(retry) => (\n <Button ref={retryButton} variant=\"secondary\" size=\"sm\" onClick={() => retry()()}>\n <i class=\"ti ti-refresh\" aria-hidden=\"true\" />\n {props.messages.retry}\n </Button>\n )}\n </Show>\n </Show>\n </div>\n );\n}\n\nfunction RichSelectPreview(props: { item: RichSelectItem; render: (item: RichSelectItem) => JSX.Element; id?: string }): JSX.Element {\n return (\n <div id={props.id}>\n <h3 class=\"k2b-rich-select__preview-title\">\n <RichSelectVisual item={props.item} />\n <span>{props.item.label}</span>\n </h3>\n {props.render(props.item)}\n </div>\n );\n}\n\n/** Up to three short facts for a preview, each with an icon; warnings in the warning tone. */\nexport function RichSelectFacts(props: { facts: readonly RichSelectFact[] }): JSX.Element {\n return (\n <ul class=\"k2b-rich-select__facts\">\n <For each={props.facts.slice(0, 3)}>\n {(fact) => (\n <li data-tone={fact.tone === \"warning\" ? \"warning\" : undefined}>\n <i class={fact.icon} aria-hidden=\"true\" />\n <span>{fact.text}</span>\n </li>\n )}\n </For>\n </ul>\n );\n}\n\nfunction RichSelectFooterControl(props: {\n footer: RichSelectFooter;\n initialName: () => string;\n messages: RichSelectMessages;\n done: (run: () => void) => void;\n restoreFocus: () => void;\n}): JSX.Element {\n const [creating, setCreating] = createSignal(false);\n const [name, setName] = createSignal(\"\");\n let input: HTMLInputElement | undefined;\n let start: HTMLButtonElement | undefined;\n let controls: HTMLDivElement | undefined;\n onCleanup(() => {\n if (controls?.contains(document.activeElement)) queueMicrotask(props.restoreFocus);\n });\n const create = () => {\n const footer = props.footer;\n const value = name().trim();\n if (!(\"create\" in footer) || !value) return;\n props.done(() => footer.create.onCreate(value));\n };\n return (\n <div ref={controls} class=\"k2b-rich-select__footer\">\n <Show\n when={creating() && \"create\" in props.footer ? props.footer.create : undefined}\n fallback={\n <button\n ref={start}\n type=\"button\"\n class=\"k2b-rich-select__footer-action\"\n onClick={() => {\n const footer = props.footer;\n if (\"create\" in footer) {\n setName(props.initialName());\n setCreating(true);\n queueMicrotask(() => input?.focus());\n } else props.done(footer.onActivate);\n }}\n >\n <span class=\"k2b-rich-select__visual\" aria-hidden=\"true\">\n <i class={props.footer.icon ?? \"ti ti-plus\"} />\n </span>\n <span class=\"k2b-rich-select__label\">{props.footer.label}</span>\n </button>\n }\n >\n {(create_) => (\n <div class=\"k2b-rich-select__create\">\n <input\n ref={input}\n class=\"k2b-rich-select__create-input\"\n value={name()}\n placeholder={create_().placeholder}\n aria-label={props.footer.label}\n autocomplete=\"off\"\n onInput={(event) => setName(event.currentTarget.value)}\n onKeyDown={(event) => {\n event.stopPropagation();\n if (event.key === \"Escape\") {\n event.preventDefault();\n setCreating(false);\n queueMicrotask(() => start?.focus());\n } else if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n create();\n }\n }}\n />\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!name().trim()} onClick={create}>\n {props.messages.create}\n </Button>\n </div>\n )}\n </Show>\n </div>\n );\n}\n\n/**\n * A dropdown whose rows explain each choice: a name plus one short line, an\n * unavailable row with its reason, and an optional preview of what a choice\n * changes. Desktop opens a popover beside the trigger; a phone opens a bottom\n * sheet whose info buttons show the preview as a second level.\n */\nexport function RichSelect(props: RichSelectProps): JSX.Element {\n const messages = useRichSelectMessages();\n const locale = useLocale();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const previewId = `${meta.controlId}-preview`;\n const [query, setQuery] = createSignal(\"\");\n const [active, setActive] = createSignal(-1);\n const [height, setHeight] = createSignal<string>();\n const [sheetOpen, setSheetOpen] = createSignal(false);\n const [phone, setPhone] = createSignal(false);\n const [sheetId, setSheetId] = createSignal<string>();\n onMount(() => {\n const media = window.matchMedia(PHONE_QUERY);\n setPhone(media.matches);\n const update = () => setPhone(media.matches);\n media.addEventListener(\"change\", update);\n onCleanup(() => media.removeEventListener(\"change\", update));\n });\n let searchRef: HTMLInputElement | undefined;\n let closeSheet: (() => void) | undefined;\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const error = () => resolveMaybeAccessor(props.error);\n const status = () => props.status ?? \"ready\";\n const withPreview = () => Boolean(props.renderPreview);\n const title = () =>\n props.title ?? (typeof props.label === \"string\" ? props.label : (props[\"aria-label\"] ?? props.placeholder ?? messages().chooseOption));\n const searchable = () => status() === \"ready\" && props.items.length >= RICH_SELECT_SEARCH_FROM;\n const visible = createMemo(() => (searchable() ? filterChoiceOptions(props.items, query()) : props.items));\n const anyVisual = createMemo(() => props.items.some(hasVisual));\n const rows = createMemo<Row[]>(() => {\n const headings = props.items.length >= RICH_SELECT_SEARCH_FROM && props.sections ? props.sections : undefined;\n const result: Row[] = [];\n let section: string | undefined;\n visible().forEach((item, index) => {\n if (headings && item.section && item.section !== section) {\n const heading = headings.find((candidate) => candidate.id === item.section);\n if (heading) result.push({ kind: \"heading\", id: heading.id, label: heading.label });\n }\n section = item.section;\n result.push({ kind: \"item\", item, index });\n });\n return result;\n });\n // Rows are keyed by heading and value, not by object: a host that rebuilds equal items must not replace the option\n // under a press, which would swallow its click.\n const rowsByKey = createMemo(() => new Map(rows().map((row) => [rowKey(row), row])));\n const selected = createMemo(() => {\n const current = value();\n return current === null ? undefined : props.items.find((item) => item.value === current);\n });\n const activeItem = () => (status() === \"ready\" ? visible()[active()] : undefined);\n const optionId = (index: number) => `${listboxId}-${index}`;\n const popover = createChoicePopover(\n () => Boolean(props.disabled),\n () => ({ width: \"own\", side: props.placement === \"top-start\" ? \"above\" : \"below\" }),\n );\n const expanded = () => popover.open() || sheetOpen();\n const restorePopoverFocus = () => {\n if (popover.open()) (searchable() ? searchRef : popover.trigger())?.focus();\n };\n\n createEffect(() => {\n if (props.disabled) {\n popover.hide();\n closeSheet?.();\n }\n });\n createEffect(() => {\n const count = visible().length;\n if (!popover.open() || status() !== \"ready\") return;\n const current = untrack(active);\n if (current < 0 || current >= count) setActive(startIndex());\n });\n\n const scrollToActive = () => {\n const element = document.getElementById(optionId(active()));\n element?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (next: number) => {\n if (next < 0) return;\n setActive(next);\n queueMicrotask(scrollToActive);\n };\n const startIndex = () => {\n const index = visible().findIndex((item) => item.value === value());\n return index >= 0 ? index : visible().length > 0 ? 0 : -1;\n };\n\n const openPopover = () => {\n setQuery(\"\");\n setActive(startIndex());\n // The preview popover keeps one height while it is open, so moving\n // through rows, filtering, or the end of loading never resizes it.\n const rowsTall = status() === \"ready\" ? props.items.length : PLACEHOLDER_ROWS;\n const rem = Math.min(27.5, Math.max(18.75, rowsTall * 3.625 + 1.5));\n setHeight(props.size?.height ?? (withPreview() ? `${rem}rem` : undefined));\n popover.show();\n if (searchable()) queueMicrotask(() => searchRef?.focus());\n queueMicrotask(scrollToActive);\n };\n const open = () => {\n if (props.disabled || expanded()) return;\n if (isPhone()) openSheet();\n else openPopover();\n };\n const close = (restoreFocus = false) => {\n popover.hide(restoreFocus);\n setQuery(\"\");\n setActive(-1);\n };\n const choose = (item: RichSelectItem | undefined) => {\n if (props.disabled || status() !== \"ready\" || !item || item.disabledReason) return;\n // Hide first: the old list must never stay visible with the next value.\n close(true);\n commitFieldValue(props, item.value);\n };\n const runFooter = (run: () => void) => {\n close(true);\n run();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing) return;\n const target = event.target;\n if (\n event.key !== \"Escape\" &&\n target instanceof Element &&\n target !== popover.trigger() &&\n target !== searchRef &&\n target.closest(\"input, button, textarea, a, [contenteditable]\")\n )\n return;\n const isOpen = popover.open();\n const count = visible().length;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!isOpen) open();\n else if (status() === \"ready\") move(nextEnabledChoiceIndex(visible(), active(), event.key === \"ArrowDown\" ? 1 : -1));\n } else if ((event.key === \"Home\" || event.key === \"End\") && isOpen) {\n event.preventDefault();\n if (status() === \"ready\" && count > 0) move(event.key === \"Home\" ? 0 : count - 1);\n } else if ((event.key === \"Enter\" || event.key === \" \") && !isOpen && event.target === popover.trigger()) {\n event.preventDefault();\n open();\n } else if (event.key === \"Enter\" && isOpen) {\n // Enter on an unavailable row does nothing; the list stays open.\n event.preventDefault();\n choose(activeItem());\n } else if (event.key === \"Escape\" && isOpen) {\n // A closed picker lets Escape reach an enclosing dialog.\n event.preventDefault();\n event.stopPropagation();\n close(true);\n } else if (\n isOpen &&\n searchable() &&\n event.key.length === 1 &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n event.target !== searchRef\n ) {\n // Typing anywhere in the open picker goes to the search field.\n event.preventDefault();\n setQuery(query() + event.key);\n setActive(visible().length > 0 ? 0 : -1);\n searchRef?.focus();\n }\n };\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (!popover.open() || !(next instanceof Node)) return;\n if (popover.trigger()?.contains(next) || popoverElement?.contains(next)) return;\n close();\n };\n\n let popoverElement: HTMLDivElement | undefined;\n\n const openSheet = () => {\n const current = locale();\n const lifetime = new AbortController();\n // dialogCore can wait for a previous sheet's history traversal. Disabling\n // or unmounting the field must also cancel an opening that is still queued.\n closeSheet = () => lifetime.abort();\n let after: (() => void) | undefined;\n setSheetOpen(true);\n void dialogCore\n .open<void>(\n (closeDialog, context) => {\n context.dialog.id ||= `${meta.controlId}-sheet`;\n setSheetId(context.dialog.id);\n return (\n <LocaleProvider locale={current}>\n <BottomSheet onDismiss={context.requestDismiss}>\n <RichSelectSheet\n props={props}\n title={title()}\n value={value}\n dialog={context.dialog}\n close={() => closeDialog()}\n done={(run) => {\n after = run;\n closeDialog();\n }}\n />\n </BottomSheet>\n </LocaleProvider>\n );\n },\n {\n ...bottomSheetOptions,\n history: true,\n signal: lifetime.signal,\n // A phone keyboard must not cover the list as it opens: focus starts on the sheet.\n initialFocus: (dialog) => {\n dialog.tabIndex = -1;\n return dialog;\n },\n },\n )\n .then(() => {\n if (!lifetime.signal.aborted) after?.();\n })\n .finally(() => {\n closeSheet = undefined;\n setSheetOpen(false);\n });\n };\n onCleanup(() => closeSheet?.());\n\n const triggerText = () => props.triggerLabel ?? selected()?.label ?? props.placeholder ?? messages().chooseOption;\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-choice-control k2b-rich-select\"\n data-appearance={props.appearance ?? \"field\"}\n data-invalid={error() ? \"true\" : undefined}\n onFocusOut={onFocusOut}\n >\n <button\n ref={popover.setTrigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-choice-trigger k2b-rich-select__trigger\"\n role=\"combobox\"\n aria-haspopup={sheetOpen() || (!popover.open() && phone()) ? \"dialog\" : \"listbox\"}\n aria-expanded={expanded()}\n aria-controls={sheetOpen() ? sheetId() : popover.open() ? listboxId : undefined}\n aria-activedescendant={popover.open() && activeItem() ? optionId(active()) : undefined}\n data-tone={props.tone === \"warning\" ? \"warning\" : undefined}\n {...fieldControlAria(meta, {\n ...props,\n \"aria-label\": props[\"aria-label\"] ?? (typeof props.label === \"string\" ? undefined : title()),\n })}\n disabled={props.disabled}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={onKeyDown}\n >\n <Show\n when={props.renderTrigger}\n fallback={\n <>\n <Show\n when={selected() && hasVisual(selected()!) ? selected() : undefined}\n fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}\n >\n {(item) => <RichSelectVisual item={item()} />}\n </Show>\n <span class=\"k2b-choice-trigger__value\" data-placeholder={selected() || props.triggerLabel ? undefined : \"true\"}>\n {triggerText()}\n </span>\n <i class=\"ti ti-selector k2b-choice-trigger__chevron\" aria-hidden=\"true\" />\n </>\n }\n >\n {(render) => render()(selected())}\n </Show>\n </button>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <div\n ref={(element) => {\n popoverElement = element;\n popover.setPopover(element);\n }}\n popover=\"manual\"\n class=\"k2b-choice-popover k2b-rich-select__popover\"\n role=\"group\"\n aria-label={title()}\n data-preview={withPreview() ? \"true\" : undefined}\n data-status={status()}\n style={{ width: props.size?.width, height: height() }}\n onKeyDown={onKeyDown}\n onPointerDown={(event) => {\n // Keep focus on the trigger or search field, so the keys keep working after a click on the preview.\n if (!(event.target as Element).closest(\"input, button, textarea, a\")) event.preventDefault();\n }}\n >\n <Show when={!withPreview()}>\n <div class=\"k2b-rich-select__title\" aria-hidden=\"true\">\n {title()}\n </div>\n </Show>\n <Switch>\n <Match when={status() === \"error\"}>\n <div id={listboxId} role=\"listbox\" aria-label={title()} />\n <RichSelectState status=\"error\" messages={messages()} onRetry={props.onRetry} restoreFocus={restorePopoverFocus} />\n </Match>\n <Match when={status() === \"ready\" && props.items.length === 0}>\n <div id={listboxId} role=\"listbox\" aria-label={title()} />\n <RichSelectState status=\"empty\" messages={messages()} empty={props.empty} />\n <Show when={props.footer}>\n {(footer) => (\n <RichSelectFooterControl\n footer={footer()}\n initialName={query}\n messages={messages()}\n done={runFooter}\n restoreFocus={restorePopoverFocus}\n />\n )}\n </Show>\n </Match>\n <Match when>\n <div class=\"k2b-rich-select__body\">\n <div class=\"k2b-rich-select__column\">\n <Show when={searchable()}>\n <div class=\"k2b-choice-search k2b-rich-select__search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(input) => {\n searchRef = input;\n onCleanup(() => {\n if (document.activeElement === input)\n queueMicrotask(() => {\n if (popover.open()) popover.trigger()?.focus();\n });\n });\n }}\n type=\"search\"\n role=\"combobox\"\n aria-expanded={popover.open()}\n aria-autocomplete=\"list\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().search}\n aria-controls={listboxId}\n aria-activedescendant={activeItem() ? optionId(active()) : undefined}\n autocomplete=\"off\"\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n setActive(visible().length > 0 ? 0 : -1);\n }}\n />\n </div>\n </Show>\n <div\n id={listboxId}\n class=\"k2b-rich-select__list\"\n role=\"listbox\"\n aria-label={title()}\n aria-busy={status() === \"loading\" ? \"true\" : undefined}\n data-visual={anyVisual() ? \"true\" : undefined}\n data-choice-scroll\n >\n <Show when={status() === \"loading\"}>\n <span class=\"k2b-sr-only\">{messages().loading}</span>\n <RichSelectPlaceholders visual={anyVisual() || props.items.length === 0} />\n </Show>\n <Show when={status() === \"ready\"}>\n <For each={rows().map(rowKey)} fallback={<div class=\"k2b-rich-select__no-results\">{messages().noResults}</div>}>\n {(key) => {\n const first = rowsByKey().get(key)!;\n if (first.kind === \"heading\") {\n const label = () => {\n const current = rowsByKey().get(key);\n return current?.kind === \"heading\" ? current.label : first.label;\n };\n return (\n <div class=\"k2b-rich-select__heading\" role=\"presentation\">\n {label()}\n </div>\n );\n }\n const entry = () => {\n const current = rowsByKey().get(key);\n return current?.kind === \"item\" ? current : first;\n };\n return (\n // biome-ignore lint/a11y/useKeyWithClickEvents: the trigger or search field handles the keys through aria-activedescendant.\n <div\n id={optionId(entry().index)}\n class=\"k2b-rich-select__option\"\n role=\"option\"\n aria-selected={entry().item.value === value()}\n aria-disabled={entry().item.disabledReason ? \"true\" : undefined}\n aria-labelledby={`${optionId(entry().index)}-label`}\n aria-describedby={\n [\n entry().item.disabledReason || entry().item.description ? `${optionId(entry().index)}-line` : \"\",\n withPreview() && entry().index === active() ? previewId : \"\",\n ]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n data-active={entry().index === active() ? \"true\" : undefined}\n onPointerMove={() => {\n if (active() !== entry().index) setActive(entry().index);\n }}\n onClick={() => choose(entry().item)}\n >\n <Show when={anyVisual()}>\n <Show when={hasVisual(entry().item)} fallback={<span class=\"k2b-rich-select__visual\" />}>\n <RichSelectVisual item={entry().item} />\n </Show>\n </Show>\n <RichSelectRowText\n item={entry().item}\n labelId={`${optionId(entry().index)}-label`}\n lineId={`${optionId(entry().index)}-line`}\n />\n <i class=\"ti ti-check k2b-rich-select__check\" aria-hidden=\"true\" />\n </div>\n );\n }}\n </For>\n </Show>\n </div>\n <Show when={props.footer && status() === \"ready\"}>\n <RichSelectFooterControl\n footer={props.footer!}\n initialName={query}\n messages={messages()}\n done={runFooter}\n restoreFocus={restorePopoverFocus}\n />\n </Show>\n </div>\n <Show when={props.renderPreview}>\n {(render) => (\n <div class=\"k2b-rich-select__preview\" data-choice-scroll>\n <Show when={status() === \"loading\"}>\n <div class=\"k2b-rich-select__preview-placeholder\" aria-hidden=\"true\">\n <span />\n <span style={{ width: \"86%\" }} />\n <span style={{ width: \"72%\" }} />\n <span style={{ width: \"80%\" }} />\n </div>\n </Show>\n <Show when={activeItem()}>{(item) => <RichSelectPreview id={previewId} item={item()} render={render()} />}</Show>\n </div>\n )}\n </Show>\n </div>\n </Match>\n </Switch>\n </div>\n </div>\n </Field>\n );\n}\n\n/**\n * The phone presentation: a bottom sheet with the list. With a preview, an\n * info button beside each row, unavailable rows included, opens the preview as\n * a second level with Back and Choose.\n */\nfunction RichSelectSheet(sheet: {\n props: RichSelectProps;\n title: string;\n value: () => string | null;\n dialog: HTMLDialogElement;\n close: () => void;\n done: (run: () => void) => void;\n}): JSX.Element {\n const messages = useRichSelectMessages();\n const props = sheet.props;\n const uid = createUniqueId();\n const [query, setQuery] = createSignal(\"\");\n const [detailValue, setDetailValue] = createSignal<string>();\n // Resolve from the current snapshot: access and availability can change while\n // the detail level is open.\n const detail = createMemo(() => props.items.find((item) => item.value === detailValue()));\n let back: HTMLButtonElement | undefined;\n let returnValue: string | undefined;\n const status = () => props.status ?? \"ready\";\n const searchable = () => status() === \"ready\" && props.items.length >= RICH_SELECT_SEARCH_FROM;\n const visible = createMemo(() => (searchable() ? filterChoiceOptions(props.items, query()) : props.items));\n const anyVisual = createMemo(() => props.items.some(hasVisual));\n const headings = () => (props.items.length >= RICH_SELECT_SEARCH_FROM && props.sections ? props.sections : undefined);\n const restoreSheetFocus = () => {\n if (sheet.dialog.open) sheet.dialog.focus();\n };\n const headingBefore = (index: number) => {\n const item = visible()[index];\n const list = headings();\n if (!list || !item?.section || visible()[index - 1]?.section === item.section) return undefined;\n return list.find((candidate) => candidate.id === item.section)?.label;\n };\n const choose = (item: RichSelectItem) => {\n if (props.disabled || status() !== \"ready\" || item.disabledReason) return;\n sheet.done(() => {\n const current = props.items.find((candidate) => candidate.value === item.value);\n if (!props.disabled && status() === \"ready\" && current && !current.disabledReason) commitFieldValue(props, current.value);\n });\n };\n const rowId = (index: number) => `k2b-rich-select-sheet-${uid}-${index}`;\n const showDetail = (item: RichSelectItem) => {\n returnValue = item.value;\n // The second level keeps the sheet's height, so Back and Choose stay where they are.\n sheet.dialog.style.minHeight = `${sheet.dialog.getBoundingClientRect().height}px`;\n setDetailValue(item.value);\n queueMicrotask(() => back?.focus());\n };\n const leaveDetail = () => {\n sheet.dialog.style.minHeight = \"\";\n setDetailValue(undefined);\n const value = returnValue;\n queueMicrotask(() => {\n const index = visible().findIndex((item) => item.value === value);\n const original = index >= 0 ? document.getElementById(`${rowId(index)}-info`) : undefined;\n const fallback = sheet.dialog.querySelector<HTMLButtonElement>(\".k2b-rich-select__sheet-row > button\");\n (original ?? fallback ?? sheet.dialog).focus();\n });\n };\n createEffect(() => {\n if (detailValue() !== undefined && (!detail() || status() !== \"ready\")) leaveDetail();\n });\n // Escape on the second level goes back to the list instead of closing the sheet.\n const onEscape = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\" || !detail()) return;\n event.preventDefault();\n event.stopPropagation();\n leaveDetail();\n };\n onMount(() => {\n sheet.dialog.addEventListener(\"keydown\", onEscape, true);\n onCleanup(() => {\n sheet.dialog.removeEventListener(\"keydown\", onEscape, true);\n // dialogCore may reuse the dialog element for the next dialog.\n sheet.dialog.style.minHeight = \"\";\n });\n });\n\n return (\n <>\n <header class=\"k2b-rich-select__sheet-header\">\n <Show when={detail()}>\n <button ref={back} type=\"button\" class=\"k2b-dialog__close\" aria-label={messages().back} onClick={leaveDetail}>\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </button>\n </Show>\n <h2>{detail()?.label ?? sheet.title}</h2>\n <button type=\"button\" class=\"k2b-dialog__close\" aria-label={messages().close} onClick={sheet.close}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </header>\n <Show\n when={detail()}\n fallback={\n <BottomSheet.Body>\n <Switch>\n <Match when={status() === \"error\"}>\n <RichSelectState status=\"error\" messages={messages()} onRetry={props.onRetry} restoreFocus={restoreSheetFocus} />\n </Match>\n <Match when={status() === \"ready\" && props.items.length === 0}>\n <RichSelectState status=\"empty\" messages={messages()} empty={props.empty} />\n <Show when={props.footer}>\n {(footer) => (\n <RichSelectFooterControl\n footer={footer()}\n initialName={query}\n messages={messages()}\n done={sheet.done}\n restoreFocus={restoreSheetFocus}\n />\n )}\n </Show>\n </Match>\n <Match when>\n <Show when={searchable()}>\n <div class=\"k2b-choice-search k2b-rich-select__search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(input) => {\n onCleanup(() => {\n if (document.activeElement === input) queueMicrotask(restoreSheetFocus);\n });\n }}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().search}\n autocomplete=\"off\"\n onInput={(event) => setQuery(event.currentTarget.value)}\n />\n </div>\n </Show>\n <div\n class=\"k2b-rich-select__list\"\n role=\"list\"\n aria-label={sheet.title}\n aria-busy={status() === \"loading\" ? \"true\" : undefined}\n data-visual={anyVisual() ? \"true\" : undefined}\n >\n <Show when={status() === \"loading\"}>\n <span class=\"k2b-sr-only\">{messages().loading}</span>\n <RichSelectPlaceholders visual={anyVisual() || props.items.length === 0} />\n </Show>\n <Show when={status() === \"ready\"}>\n <For each={visible()} fallback={<div class=\"k2b-rich-select__no-results\">{messages().noResults}</div>}>\n {(item, index) => (\n <>\n <Show when={headingBefore(index())}>{(label) => <div class=\"k2b-rich-select__heading\">{label()}</div>}</Show>\n <div class=\"k2b-rich-select__sheet-row\" role=\"listitem\" data-info={props.renderPreview ? \"true\" : undefined}>\n <button\n id={rowId(index())}\n type=\"button\"\n class=\"k2b-rich-select__option\"\n aria-current={item.value === sheet.value() ? \"true\" : undefined}\n aria-disabled={item.disabledReason ? \"true\" : undefined}\n aria-labelledby={`${rowId(index())}-label`}\n aria-describedby={item.disabledReason || item.description ? `${rowId(index())}-line` : undefined}\n onClick={() => choose(item)}\n >\n <Show when={anyVisual()}>\n <Show when={hasVisual(item)} fallback={<span class=\"k2b-rich-select__visual\" />}>\n <RichSelectVisual item={item} />\n </Show>\n </Show>\n <RichSelectRowText item={item} labelId={`${rowId(index())}-label`} lineId={`${rowId(index())}-line`} />\n <i class=\"ti ti-check k2b-rich-select__check\" aria-hidden=\"true\" />\n </button>\n <Show when={props.renderPreview}>\n <button\n id={`${rowId(index())}-info`}\n type=\"button\"\n class=\"k2b-rich-select__info\"\n aria-label={messages().detailsFor({ name: item.label })}\n onClick={() => showDetail(item)}\n >\n <i class=\"ti ti-info-circle\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </>\n )}\n </For>\n </Show>\n </div>\n <Show when={props.footer && status() === \"ready\"}>\n <RichSelectFooterControl\n footer={props.footer!}\n initialName={query}\n messages={messages()}\n done={sheet.done}\n restoreFocus={restoreSheetFocus}\n />\n </Show>\n </Match>\n </Switch>\n </BottomSheet.Body>\n }\n >\n {(item) => (\n <>\n <BottomSheet.Body>\n <div class=\"k2b-rich-select__preview\" data-level=\"detail\">\n <RichSelectPreview item={item()} render={props.renderPreview!} />\n </div>\n </BottomSheet.Body>\n <BottomSheet.Footer>\n <Button\n variant=\"primary\"\n size=\"lg\"\n class=\"k2b-rich-select__choose\"\n disabled={Boolean(item().disabledReason)}\n onClick={() => choose(item())}\n >\n <i class=\"ti ti-check\" aria-hidden=\"true\" />\n {messages().choose}\n </Button>\n </BottomSheet.Footer>\n </>\n )}\n </Show>\n </>\n );\n}\n\nexport default RichSelect;\n"],"mappings":"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","ignoreList":[]}
@@ -225,7 +225,7 @@ export function TextInput(props) {
225
225
  input(event.currentTarget.value);
226
226
  },
227
227
  "onChange": event => commit(event.currentTarget.value),
228
- "onKeyDown": submitOnEnter
228
+ "onKeyDown": keyDown
229
229
  }), false, true);
230
230
  _$insert(_el$6, () => isServer ? `\n${value()}` : undefined);
231
231
  _$runHydrationEvents();
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["inputs/TextInput.tsx"],"sourcesContent":["import { createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { Completion } from \"./completion\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\nimport { MarkdownEditor } from \"./markdown/MarkdownEditor\";\n\nexport type TextInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"onInput\" | \"prefix\" | \"suffix\" | \"type\" | \"value\" | keyof ValueFieldProps<string>\n> &\n ValueFieldProps<string> & {\n minLength?: number;\n maxLength?: number;\n type?: \"text\" | \"search\" | \"email\" | \"url\" | \"tel\";\n variant?: \"default\" | \"ai\" | \"compact\";\n /** Set false for a plain field without a leading icon. */\n icon?: string | false;\n activeIcon?: string;\n /** ID of a consumer-owned visible error; caller owns its announcement. Native controls only. */\n externalErrorId?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n multiline?: boolean;\n monospace?: boolean;\n password?: boolean;\n markdown?: boolean;\n onSubmit?: () => void;\n lines?: number;\n abbreviations?: Record<string, string>;\n completions?: readonly Completion[];\n };\n\nexport function TextInput(props: TextInputProps): JSX.Element {\n const messages = useUiMessages();\n const inputMessages = useInputMessages();\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"completions\",\n \"description\",\n \"error\",\n \"externalErrorId\",\n \"icon\",\n \"id\",\n \"label\",\n \"lines\",\n \"markdown\",\n \"minLength\",\n \"maxLength\",\n \"onKeyDown\",\n \"monospace\",\n \"multiline\",\n \"onClear\",\n \"onValueCommit\",\n \"onSubmit\",\n \"onValueChange\",\n \"password\",\n \"prefix\",\n \"required\",\n \"suffix\",\n \"type\",\n \"value\",\n \"variant\",\n \"abbreviations\",\n ]);\n const meta = createFieldMeta(local.id);\n const value = () => resolveMaybeAccessor(local.value) ?? \"\";\n const error = () => resolveMaybeAccessor(local.error);\n // HTML IDs are single nonempty tokens; numeric starts and punctuation are valid.\n const externalErrorId = () => {\n const id = local.externalErrorId;\n return id && !/[\\t\\n\\f\\r ]/.test(id) ? id : undefined;\n };\n const controlMeta = {\n ...meta,\n get errorId() {\n return externalErrorId() ?? meta.errorId;\n },\n };\n const [passwordVisible, setPasswordVisible] = createSignal(false);\n const multiline = () => Boolean(local.multiline || local.markdown);\n const compact = () => local.variant === \"compact\";\n const icon = () =>\n local.icon === false\n ? \"\"\n : (local.icon ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : local.markdown ? \"ti ti-markdown\" : \"ti ti-cursor-text\"));\n // A custom icon stays while typing (a search field keeps its magnifier); only the default icon switches to the pencil.\n const activeIcon = () => local.activeIcon ?? (local.icon || undefined) ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : \"ti ti-pencil\");\n // Names, addresses and passwords are typed exactly: phone keyboards must not capitalize or \"correct\" them.\n const verbatim = () =>\n local.password || local.type === \"email\" || local.type === \"url\" || /\\b(username|email|url)\\b/.test(String(rest.autocomplete ?? \"\"));\n const input = (next: string) => local.onValueChange?.(next);\n const commit = (next: string) => local.onValueCommit?.(next);\n const submitOnEnter = (event: KeyboardEvent) => {\n if (local.onSubmit && event.key === \"Enter\" && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n local.onSubmit();\n }\n };\n /** The caller's key handler runs first; Enter submits unless it handled the key. */\n const keyDown: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (event) => {\n const handler = local.onKeyDown;\n if (typeof handler === \"function\") handler(event);\n else if (Array.isArray(handler)) handler[0](handler[1], event);\n if (!event.defaultPrevented) submitOnEnter(event);\n };\n const clear: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n // Clearing removes the button. Return to the field before notifying the caller, whose handler\n // may deliberately navigate or move focus somewhere else.\n event.currentTarget.ownerDocument.getElementById(meta.controlId)?.focus();\n if (local.onClear) {\n local.onClear();\n return;\n }\n commitFieldValue(local, \"\");\n };\n\n return (\n <Show\n when={local.markdown}\n fallback={\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={externalErrorId() ? undefined : error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-text-input\"\n data-variant={compact() ? \"compact\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n data-ai={local.variant === \"ai\" ? \"true\" : undefined}\n data-multiline={multiline() ? \"true\" : undefined}\n data-monospace={local.monospace ? \"true\" : undefined}\n style={multiline() ? { \"--k2b-editor-lines\": String(local.lines ?? 3) } : undefined}\n >\n <Show when={!compact() && local.icon !== false}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={icon()} />\n <i class={activeIcon()} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <Show\n when={multiline()}\n fallback={\n <input\n autocapitalize={verbatim() ? \"none\" : undefined}\n autocorrect={verbatim() ? \"off\" : undefined}\n spellcheck={verbatim() ? false : undefined}\n {...rest}\n id={meta.controlId}\n class=\"k2b-input\"\n size={rest.size ?? (compact() ? 9 : undefined)}\n type={local.password && !passwordVisible() ? \"password\" : (local.type ?? \"text\")}\n value={value()}\n minlength={local.minLength}\n maxlength={local.maxLength}\n required={local.required}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={keyDown}\n />\n }\n >\n <textarea\n {...(rest as unknown as JSX.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n id={meta.controlId}\n class=\"k2b-input k2b-text-input__textarea\"\n value={value()}\n rows={local.lines ?? 3}\n required={local.required}\n minlength={local.minLength}\n maxlength={local.maxLength}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={submitOnEnter}\n >\n {/* HTML consumes one leading newline in textarea content. */}\n {isServer ? `\\n${value()}` : undefined}\n </textarea>\n </Show>\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && value() && !multiline() && !local.password && !rest.disabled && !rest.readOnly}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action\"\n aria-label={local.clearLabel ?? messages().clear}\n onClick={clear}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={local.password && !multiline()}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear\"\n aria-label={passwordVisible() ? inputMessages().hidePassword : inputMessages().showPassword}\n aria-pressed={passwordVisible()}\n disabled={rest.disabled}\n onClick={() => setPasswordVisible((visible) => !visible)}\n >\n <i class={passwordVisible() ? \"ti ti-eye-off\" : \"ti ti-eye\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n }\n >\n <MarkdownEditor\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n id={meta.controlId}\n name={rest.name}\n value={value()}\n onValueChange={input}\n onValueCommit={local.onValueCommit}\n onSubmit={local.onSubmit}\n placeholder={rest.placeholder}\n disabled={rest.disabled}\n required={local.required}\n lines={local.lines}\n maxLength={local.maxLength}\n spellcheck={rest.spellcheck === undefined ? undefined : rest.spellcheck === true || rest.spellcheck === \"true\"}\n abbreviations={local.abbreviations}\n completions={local.completions}\n aria-label={local[\"aria-label\"]}\n aria-describedby={local[\"aria-describedby\"]}\n />\n </Show>\n );\n}\n\nexport default TextInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/TextInput.tsx"],"sourcesContent":["import { createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { Completion } from \"./completion\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\nimport { MarkdownEditor } from \"./markdown/MarkdownEditor\";\n\nexport type TextInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"onInput\" | \"onKeyDown\" | \"prefix\" | \"suffix\" | \"type\" | \"value\" | keyof ValueFieldProps<string>\n> &\n ValueFieldProps<string> & {\n minLength?: number;\n maxLength?: number;\n type?: \"text\" | \"search\" | \"email\" | \"url\" | \"tel\";\n variant?: \"default\" | \"ai\" | \"compact\";\n /** Set false for a plain field without a leading icon. */\n icon?: string | false;\n activeIcon?: string;\n /** ID of a consumer-owned visible error; caller owns its announcement. Native controls only. */\n externalErrorId?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n multiline?: boolean;\n monospace?: boolean;\n password?: boolean;\n markdown?: boolean;\n onSubmit?: () => void;\n onKeyDown?: JSX.EventHandlerUnion<HTMLInputElement | HTMLTextAreaElement, KeyboardEvent>;\n lines?: number;\n abbreviations?: Record<string, string>;\n completions?: readonly Completion[];\n };\n\nexport function TextInput(props: TextInputProps): JSX.Element {\n const messages = useUiMessages();\n const inputMessages = useInputMessages();\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"completions\",\n \"description\",\n \"error\",\n \"externalErrorId\",\n \"icon\",\n \"id\",\n \"label\",\n \"lines\",\n \"markdown\",\n \"minLength\",\n \"maxLength\",\n \"onKeyDown\",\n \"monospace\",\n \"multiline\",\n \"onClear\",\n \"onValueCommit\",\n \"onSubmit\",\n \"onValueChange\",\n \"password\",\n \"prefix\",\n \"required\",\n \"suffix\",\n \"type\",\n \"value\",\n \"variant\",\n \"abbreviations\",\n ]);\n const meta = createFieldMeta(local.id);\n const value = () => resolveMaybeAccessor(local.value) ?? \"\";\n const error = () => resolveMaybeAccessor(local.error);\n // HTML IDs are single nonempty tokens; numeric starts and punctuation are valid.\n const externalErrorId = () => {\n const id = local.externalErrorId;\n return id && !/[\\t\\n\\f\\r ]/.test(id) ? id : undefined;\n };\n const controlMeta = {\n ...meta,\n get errorId() {\n return externalErrorId() ?? meta.errorId;\n },\n };\n const [passwordVisible, setPasswordVisible] = createSignal(false);\n const multiline = () => Boolean(local.multiline || local.markdown);\n const compact = () => local.variant === \"compact\";\n const icon = () =>\n local.icon === false\n ? \"\"\n : (local.icon ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : local.markdown ? \"ti ti-markdown\" : \"ti ti-cursor-text\"));\n // A custom icon stays while typing (a search field keeps its magnifier); only the default icon switches to the pencil.\n const activeIcon = () => local.activeIcon ?? (local.icon || undefined) ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : \"ti ti-pencil\");\n // Names, addresses and passwords are typed exactly: phone keyboards must not capitalize or \"correct\" them.\n const verbatim = () =>\n local.password || local.type === \"email\" || local.type === \"url\" || /\\b(username|email|url)\\b/.test(String(rest.autocomplete ?? \"\"));\n const input = (next: string) => local.onValueChange?.(next);\n const commit = (next: string) => local.onValueCommit?.(next);\n const submitOnEnter = (event: KeyboardEvent) => {\n if (local.onSubmit && event.key === \"Enter\" && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n local.onSubmit();\n }\n };\n /** The caller's key handler runs first; Enter submits unless it handled the key. */\n const keyDown: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, KeyboardEvent> = (event) => {\n const handler = local.onKeyDown;\n if (typeof handler === \"function\") handler(event);\n else if (Array.isArray(handler)) handler[0](handler[1], event);\n if (!event.defaultPrevented) submitOnEnter(event);\n };\n const clear: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n // Clearing removes the button. Return to the field before notifying the caller, whose handler\n // may deliberately navigate or move focus somewhere else.\n event.currentTarget.ownerDocument.getElementById(meta.controlId)?.focus();\n if (local.onClear) {\n local.onClear();\n return;\n }\n commitFieldValue(local, \"\");\n };\n\n return (\n <Show\n when={local.markdown}\n fallback={\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={externalErrorId() ? undefined : error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-text-input\"\n data-variant={compact() ? \"compact\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n data-ai={local.variant === \"ai\" ? \"true\" : undefined}\n data-multiline={multiline() ? \"true\" : undefined}\n data-monospace={local.monospace ? \"true\" : undefined}\n style={multiline() ? { \"--k2b-editor-lines\": String(local.lines ?? 3) } : undefined}\n >\n <Show when={!compact() && local.icon !== false}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={icon()} />\n <i class={activeIcon()} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <Show\n when={multiline()}\n fallback={\n <input\n autocapitalize={verbatim() ? \"none\" : undefined}\n autocorrect={verbatim() ? \"off\" : undefined}\n spellcheck={verbatim() ? false : undefined}\n {...rest}\n id={meta.controlId}\n class=\"k2b-input\"\n size={rest.size ?? (compact() ? 9 : undefined)}\n type={local.password && !passwordVisible() ? \"password\" : (local.type ?? \"text\")}\n value={value()}\n minlength={local.minLength}\n maxlength={local.maxLength}\n required={local.required}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={keyDown}\n />\n }\n >\n <textarea\n {...(rest as unknown as JSX.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n id={meta.controlId}\n class=\"k2b-input k2b-text-input__textarea\"\n value={value()}\n rows={local.lines ?? 3}\n required={local.required}\n minlength={local.minLength}\n maxlength={local.maxLength}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={keyDown}\n >\n {/* HTML consumes one leading newline in textarea content. */}\n {isServer ? `\\n${value()}` : undefined}\n </textarea>\n </Show>\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && value() && !multiline() && !local.password && !rest.disabled && !rest.readOnly}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action\"\n aria-label={local.clearLabel ?? messages().clear}\n onClick={clear}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={local.password && !multiline()}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear\"\n aria-label={passwordVisible() ? inputMessages().hidePassword : inputMessages().showPassword}\n aria-pressed={passwordVisible()}\n disabled={rest.disabled}\n onClick={() => setPasswordVisible((visible) => !visible)}\n >\n <i class={passwordVisible() ? \"ti ti-eye-off\" : \"ti ti-eye\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n }\n >\n <MarkdownEditor\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n id={meta.controlId}\n name={rest.name}\n value={value()}\n onValueChange={input}\n onValueCommit={local.onValueCommit}\n onSubmit={local.onSubmit}\n placeholder={rest.placeholder}\n disabled={rest.disabled}\n required={local.required}\n lines={local.lines}\n maxLength={local.maxLength}\n spellcheck={rest.spellcheck === undefined ? undefined : rest.spellcheck === true || rest.spellcheck === \"true\"}\n abbreviations={local.abbreviations}\n completions={local.completions}\n aria-label={local[\"aria-label\"]}\n aria-describedby={local[\"aria-describedby\"]}\n />\n </Show>\n );\n}\n\nexport default TextInput;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ import { createComponent as _$createComponent } from "solid-js/web";
2
+ import { createMemo, For, untrack } from "solid-js";
3
+ /**
4
+ * `<For>` that keeps a row's element while its item stays the same: the same object, also when its getters change, or
5
+ * a new object with the same identity (`by`). Hosts rebuild equal items whenever their inputs change; `<For>` would
6
+ * then replace each row, and a row replaced between press and release swallows the click (#2140).
7
+ * Each row reads its current item.
8
+ */
9
+ export function KeyedFor(props) {
10
+ let previous = [];
11
+ let counter = 0;
12
+ const entries = createMemo(() => {
13
+ const byObject = new Map(previous.map(entry => [entry.item, entry.key]));
14
+ const byIdentity = new Map();
15
+ for (const entry of previous) byIdentity.set(entry.identity, [...(byIdentity.get(entry.identity) ?? []), entry.key]);
16
+ const used = new Set();
17
+ const next = props.each.map(item => {
18
+ // Only a new list reconciles rows; a getter behind the identity changing alone must not re-read the list.
19
+ const identity = untrack(() => props.by(item));
20
+ const same = byObject.get(item);
21
+ const equal = byIdentity.get(identity)?.find(key => !used.has(key));
22
+ const key = same !== undefined && !used.has(same) ? same : equal ?? `row-${counter++}`;
23
+ used.add(key);
24
+ return {
25
+ item,
26
+ key,
27
+ identity
28
+ };
29
+ });
30
+ previous = next;
31
+ return next;
32
+ });
33
+ const byKey = createMemo(() => new Map(entries().map(entry => [entry.key, entry.item])));
34
+ return _$createComponent(For, {
35
+ get each() {
36
+ return entries().map(entry => entry.key);
37
+ },
38
+ get fallback() {
39
+ return props.fallback;
40
+ },
41
+ children: (key, index) => {
42
+ const first = byKey().get(key);
43
+ return props.children(() => byKey().get(key) ?? first, index);
44
+ }
45
+ });
46
+ }
47
+ //# sourceMappingURL=keyed-for.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["internal/keyed-for.tsx"],"sourcesContent":["import { createMemo, For, type JSX, untrack } from \"solid-js\";\n\ntype Entry<T> = { item: T; key: string; identity: string };\n\n/**\n * `<For>` that keeps a row's element while its item stays the same: the same object, also when its getters change, or\n * a new object with the same identity (`by`). Hosts rebuild equal items whenever their inputs change; `<For>` would\n * then replace each row, and a row replaced between press and release swallows the click (#2140).\n * Each row reads its current item.\n */\nexport function KeyedFor<T>(props: {\n each: readonly T[];\n by: (item: T) => string;\n fallback?: JSX.Element;\n children: (item: () => T, index: () => number) => JSX.Element;\n}): JSX.Element {\n let previous: Entry<T>[] = [];\n let counter = 0;\n const entries = createMemo(() => {\n const byObject = new Map(previous.map((entry) => [entry.item, entry.key]));\n const byIdentity = new Map<string, string[]>();\n for (const entry of previous) byIdentity.set(entry.identity, [...(byIdentity.get(entry.identity) ?? []), entry.key]);\n const used = new Set<string>();\n const next = props.each.map((item): Entry<T> => {\n // Only a new list reconciles rows; a getter behind the identity changing alone must not re-read the list.\n const identity = untrack(() => props.by(item));\n const same = byObject.get(item);\n const equal = byIdentity.get(identity)?.find((key) => !used.has(key));\n const key = same !== undefined && !used.has(same) ? same : (equal ?? `row-${counter++}`);\n used.add(key);\n return { item, key, identity };\n });\n previous = next;\n return next;\n });\n const byKey = createMemo(() => new Map(entries().map((entry) => [entry.key, entry.item])));\n return (\n <For each={entries().map((entry) => entry.key)} fallback={props.fallback}>\n {(key, index) => {\n const first = byKey().get(key)!;\n return props.children(() => byKey().get(key) ?? first, index);\n }}\n </For>\n );\n}\n"],"mappings":";AAAA,SAAS,UAAU,EAAE,GAAG,EAAY,OAAO,QAAQ,UAAU;AAI7D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS,QAAQ,CAAI,KAK3B,EAAe;EACd,IAAI,QAAoB,GAAG,EAAE;EAC7B,IAAI,OAAO,GAAG,CAAC;EACf,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;IAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAE,KAAK,IAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAmB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,IAAe;MAC9C;MACA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;MAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;MAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAE,GAAG,IAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MACrE,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAI,KAAK,IAAI,OAAO,OAAO,EAAE,EAAG;MACxF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;MACb,OAAO;QAAE,IAAI;QAAE,GAAG;QAAE;MAAS,CAAC;IAChC,CAAC,CAAC;IACF,QAAQ,GAAG,IAAI;IACf,OAAO,IAAI;EACb,CAAC,CAAC;EACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAE,KAAK,IAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC1F,yBACG,GAAG;IAAA,IAAC,IAAI;MAAA,OAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAE,KAAK,IAAK,KAAK,CAAC,GAAG,CAAC;IAAA;IAAA,IAAE,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA,UACrE,CAAC,GAAG,EAAE,KAAK,KAAK;MACf,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAE;MAC/B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC;IAC/D;EAAC;AAGP","ignoreList":[]}