@vireo-ai/trellis-ui 0.1.58 → 0.1.59

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 (77) hide show
  1. package/package.json +1 -1
  2. package/packages/client/src/components/keybinding/styles.css +15 -5
  3. package/packages/client/src/components/tabs/styles.css +9 -1
  4. package/packages/client/src/components/tooltip/styles.css +2 -2
  5. package/packages/client/src/directives/sortable.css +8 -0
  6. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  7. package/packages/client/src/styles/generated/theme-palette.css +1 -1
  8. package/packages/client/src/styles/generated/theme-runtime.css +3 -3
  9. package/packages/client/src/styles/generated-sources.css +1 -1
  10. package/packages/client/types/components/keybinding/contract.d.ts +5 -5
  11. package/packages/client/types/components/modal/contract.d.ts +9 -3
  12. package/packages/client/types/motion/recipe.d.ts +2 -2
  13. package/packages/client/types/runtime/drag-and-drop/pdd.d.ts +2 -2
  14. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +45 -13
  15. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  16. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +277 -277
  17. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  18. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  19. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-BGVnZE_T.js → capability-motion-D_BJBnwB.js} +2 -2
  20. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-BGVnZE_T.js.map → capability-motion-D_BJBnwB.js.map} +1 -1
  21. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BDbURlVO.js +5 -0
  22. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BDbURlVO.js.map +1 -0
  23. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js +2 -0
  24. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +1 -0
  25. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DYQxGle9.js → entry.generated-18lXAVBg.js} +2 -2
  26. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DYQxGle9.js.map → entry.generated-18lXAVBg.js.map} +1 -1
  27. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C_ObpRjR.js → entry.generated-2YvnuzOD.js} +2 -2
  28. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C_ObpRjR.js.map → entry.generated-2YvnuzOD.js.map} +1 -1
  29. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-z3EbXrD0.js → entry.generated-BITa8xFV.js} +2 -2
  30. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-z3EbXrD0.js.map → entry.generated-BITa8xFV.js.map} +1 -1
  31. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D_jeOgRf.js → entry.generated-BSVJpGWu.js} +2 -2
  32. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D_jeOgRf.js.map → entry.generated-BSVJpGWu.js.map} +1 -1
  33. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js +2 -0
  34. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js.map +1 -0
  35. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-COp9wMCd.js → entry.generated-Bp3Npe3t.js} +2 -2
  36. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-COp9wMCd.js.map → entry.generated-Bp3Npe3t.js.map} +1 -1
  37. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CVOYoh61.js → entry.generated-Ce_fpT15.js} +2 -2
  38. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CVOYoh61.js.map → entry.generated-Ce_fpT15.js.map} +1 -1
  39. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cb-VMAE1.js → entry.generated-DDrayI_M.js} +2 -2
  40. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cb-VMAE1.js.map → entry.generated-DDrayI_M.js.map} +1 -1
  41. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DaXIKPN9.js → entry.generated-HqE8R7N1.js} +2 -2
  42. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DaXIKPN9.js.map → entry.generated-HqE8R7N1.js.map} +1 -1
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BREj4oHG.js → entry.generated-OT_bt7F2.js} +2 -2
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BREj4oHG.js.map → entry.generated-OT_bt7F2.js.map} +1 -1
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BAghaHV-.js → entry.generated-WRveW7p9.js} +2 -2
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BAghaHV-.js.map → entry.generated-WRveW7p9.js.map} +1 -1
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D6ai6meC.js → entry.generated-dcqwycC7.js} +2 -2
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D6ai6meC.js.map → entry.generated-dcqwycC7.js.map} +1 -1
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-Bzn312Nc.js → flip-crNQSZEa.js} +2 -2
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-Bzn312Nc.js.map → flip-crNQSZEa.js.map} +1 -1
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-DI5H1Js0.js → motion-B90yNOaV.js} +2 -2
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-B90yNOaV.js.map +1 -0
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +1 -1
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +77 -77
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +7 -7
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +7 -7
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-ehmPfdn1.js +0 -5
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-ehmPfdn1.js.map +0 -1
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-CalXJ5hB.js +0 -2
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-CalXJ5hB.js.map +0 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js +0 -2
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js.map +0 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-DI5H1Js0.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"entry.generated-DYQxGle9.js","names":[],"sources":["../../../../../../../../client/src/runtime/option-data.ts","../../../../../../../../client/src/components/badge/contract.ts","../../../../../../../../client/src/components/select/contract.ts","../../../../../../../../client/src/components/select/machine.ts","../../../../../../../../client/src/components/select/presentation.ts","../../../../../../../../client/src/components/select/styles.ts","../../../../../../../../client/src/components/select/index.ts","../../../../../../../../client/src/components/select/entry.generated.ts"],"sourcesContent":["const normalizeOptionText = (value: string): string => value.trim().toLowerCase();\n\nconst splitControlValues = (value: string): string[] => value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n\nconst parseItemData = (raw: string | undefined): unknown => {\n if (!raw) return undefined;\n\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n};\n\nconst getPathValue = (item: unknown, path: string): unknown => {\n if (!path || item === null || item === undefined) return undefined;\n\n return path.split('.').reduce<unknown>((value, key) => {\n if (value === null || value === undefined || typeof value !== 'object') return undefined;\n return (value as Record<string, unknown>)[key];\n }, item);\n};\n\nexport {getPathValue, normalizeOptionText, parseItemData, splitControlValues};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n BUTTON_TYPES,\n COMPONENT_RADII,\n CONTROL_SIZES,\n ICON_VARIANTS,\n type CommonButtonType,\n type ComponentRadius,\n type ControlSize,\n type IconVariant,\n} from '../common';\n\nconst BADGE_VARIANTS = ['soft', 'surface', 'outline', 'solid'] as const;\nconst BADGE_COLORS = ['neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst BADGE_SIZES = CONTROL_SIZES;\nconst BADGE_AS_VALUES = ['span', 'button'] as const;\nconst BADGE_TYPES = BUTTON_TYPES;\nconst BADGE_ICON_VARIANTS = ICON_VARIANTS;\nconst BADGE_RADII = COMPONENT_RADII;\n\nconst badgeSchema = {\n variant: oneOf(BADGE_VARIANTS, 'soft'),\n color: oneOf(BADGE_COLORS, 'neutral'),\n size: oneOf(BADGE_SIZES, 'sm'),\n radius: oneOf(BADGE_RADII, 'sm'),\n href: string,\n as: oneOf(BADGE_AS_VALUES, 'span'),\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n inset: string,\n class: string,\n};\n\nconst badgeCloseSchema = {\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string.default('close'),\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n size: oneOf(BADGE_SIZES, 'sm'),\n label: string.default('Remove'),\n class: string,\n};\n\ntype BadgeVariant = typeof BADGE_VARIANTS[number];\ntype BadgeColor = typeof BADGE_COLORS[number];\ntype BadgeSize = ControlSize;\ntype BadgeRadius = ComponentRadius;\ntype BadgeAs = typeof BADGE_AS_VALUES[number];\ntype BadgeType = CommonButtonType;\ntype BadgeIconVariant = IconVariant;\ntype BadgeProps = SchemaToProps<typeof badgeSchema>;\ntype BadgeCloseProps = SchemaToProps<typeof badgeCloseSchema>;\n\nexport {\n BADGE_AS_VALUES,\n BADGE_COLORS,\n BADGE_ICON_VARIANTS,\n BADGE_RADII,\n BADGE_SIZES,\n BADGE_TYPES,\n BADGE_VARIANTS,\n badgeCloseSchema,\n badgeSchema,\n};\nexport type {\n BadgeAs,\n BadgeCloseProps,\n BadgeColor,\n BadgeIconVariant,\n BadgeProps,\n BadgeRadius,\n BadgeSize,\n BadgeType,\n BadgeVariant,\n};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n ICON_VARIANTS,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type ElevationReference,\n type IconVariant,\n type Position,\n type SurfaceReference,\n} from '../common';\nimport {\n BADGE_COLORS,\n BADGE_VARIANTS,\n type BadgeColor,\n type BadgeVariant,\n} from '../badge/contract';\n\nconst SELECT_MODES = ['listbox', 'combobox', 'pillbox', 'native'] as const;\nconst SELECT_VARIANTS = CONTROL_VARIANTS;\nconst SELECT_SIZES = CONTROL_SIZES;\nconst SELECT_RADII = COMPONENT_RADII;\nconst SELECT_SIDES = POSITIONS;\nconst SELECT_ALIGNS = ALIGNMENTS;\nconst SELECT_ICON_VARIANTS = ICON_VARIANTS;\nconst SELECT_CLEARS = ['stay', 'close'] as const;\nconst SELECT_MARKS = ['check', 'checkbox', 'none'] as const;\nconst SELECT_SURFACES = SURFACE_REFERENCES;\nconst SELECT_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype SelectMode = typeof SELECT_MODES[number];\ntype SelectVariant = ControlVariant;\ntype SelectSize = ControlSize;\ntype SelectRadius = ComponentRadius;\ntype SelectSide = Position;\ntype SelectAlign = Alignment;\ntype SelectIconVariant = IconVariant;\ntype SelectClear = typeof SELECT_CLEARS[number];\ntype SelectMark = typeof SELECT_MARKS[number];\ntype SelectSurface = SurfaceReference;\ntype SelectElevation = ElevationReference;\ntype SelectChipVariant = BadgeVariant;\ntype SelectChipColor = BadgeColor;\n\nconst selectSchema = {\n name: string,\n optionsId: string,\n value: string,\n values: json.array<string>([]),\n placeholder: string,\n mode: oneOf(SELECT_MODES, 'listbox' as SelectMode),\n multiple: bool,\n searchable: bool,\n searchMinItems: number.min(0).default(5),\n virtualized: bool,\n optionsFetchUrl: string,\n optionsTotalItems: number.min(0).default(0),\n optionItemSize: number.min(Number.EPSILON).default(36),\n optionBufferSize: number.min(1).default(50),\n optionOverscan: number.min(0).default(0),\n optionSearchParam: string.default('q'),\n optionSearchDebounce: number.min(0).default(150),\n selectedLabelMap: json.object<Record<string, string>>({}),\n creatable: bool,\n filter: bool.default(true),\n clearable: bool,\n clear: oneOf(SELECT_CLEARS, 'stay' as SelectClear),\n suffix: string.default('selected'),\n mark: oneOf(SELECT_MARKS, 'check' as SelectMark),\n open: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n autoHighlight: bool.default(true),\n loop: bool.default(true),\n path: string,\n size: oneOf(SELECT_SIZES, 'lg' as SelectSize),\n variant: oneOf(SELECT_VARIANTS, 'outline' as SelectVariant),\n radius: oneOf(SELECT_RADII, 'md' as SelectRadius),\n surface: oneOf(SELECT_SURFACES, '+2' as SelectSurface),\n elevation: oneOf(SELECT_ELEVATIONS, '3' as SelectElevation),\n side: oneOf(SELECT_SIDES, 'bottom' as SelectSide),\n align: oneOf(SELECT_ALIGNS, 'start' as SelectAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n empty: string.default('No results found.'),\n icon: string,\n iconTrailing: string.default('chevron__down'),\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n buttonClass: string,\n inputClass: string,\n listboxClass: string,\n optionClass: string,\n chipVariant: oneOf(BADGE_VARIANTS, 'soft' as SelectChipVariant),\n chipColor: oneOf(BADGE_COLORS, 'neutral' as SelectChipColor),\n chipClass: string,\n class: string,\n};\n\nconst selectOptionSchema = {\n value: string,\n label: string,\n selectedLabel: string,\n textValue: string,\n disabled: bool,\n selected: bool,\n item: string,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n suffix: string,\n class: string,\n};\n\nconst selectCreateOptionSchema = {\n minLength: number.clamp(0, 100).default(0),\n modal: string,\n disabled: bool,\n value: string,\n class: string,\n};\n\ntype SelectProps = SchemaToProps<typeof selectSchema>;\ntype SelectOptionProps = SchemaToProps<typeof selectOptionSchema>;\ntype SelectCreateOptionProps = SchemaToProps<typeof selectCreateOptionSchema>;\n\nexport {\n SELECT_ALIGNS,\n SELECT_CLEARS,\n SELECT_ELEVATIONS,\n BADGE_COLORS as SELECT_CHIP_COLORS,\n BADGE_VARIANTS as SELECT_CHIP_VARIANTS,\n SELECT_ICON_VARIANTS,\n SELECT_MARKS,\n SELECT_MODES,\n SELECT_RADII,\n SELECT_SIDES,\n SELECT_SIZES,\n SELECT_SURFACES,\n SELECT_VARIANTS,\n selectCreateOptionSchema,\n selectOptionSchema,\n selectSchema,\n};\nexport type {\n SelectAlign,\n SelectClear,\n SelectChipColor,\n SelectChipVariant,\n SelectCreateOptionProps,\n SelectElevation,\n SelectIconVariant,\n SelectMark,\n SelectOptionProps,\n SelectSide,\n SelectProps,\n SelectRadius,\n SelectSize,\n SelectSurface,\n SelectMode,\n SelectVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SelectProps} from './contract';\n\ntype SelectedOption = {\n value: string;\n label: string;\n};\n\ntype SelectContext = {\n selection: SelectedOption[];\n search: {query: string; optionsId: string};\n navigation: {activeValue: string};\n creation: {value: string};\n};\n\ntype SelectMachineEffects = {\n prepareOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n finishOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareClose(scope: MachineScope<SelectContext, SelectProps>): void;\n finishClose(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSelection(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSearch(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareCreate(scope: MachineScope<SelectContext, SelectProps>): void;\n syncProps(scope: MachineScope<SelectContext, SelectProps>): void;\n syncOptions(scope: MachineScope<SelectContext, SelectProps>): void;\n syncActive(scope: MachineScope<SelectContext, SelectProps>): void;\n syncDom(scope: MachineScope<SelectContext, SelectProps>): void;\n};\n\ntype CreateSelectMachineOptions = {\n props: SelectProps;\n context: SelectContext;\n effects: SelectMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'disclosure.closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {\n open: () => ({type: 'OPEN'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'closing'>);\n\nconst searchingHook = defineHook({\n name: 'searching',\n state: 'feature.searching',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n optionsId: snapshot.context.search.optionsId,\n }),\n onDone: 'SEARCHING_DONE',\n onError: 'SEARCHING_ERROR',\n sends: {\n search: (query: string) => ({type: 'SEARCH', query}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; optionsId: string},\n 'searching'\n>);\n\nconst creatingHook = defineHook({\n name: 'creating',\n state: 'feature.creating',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n value: snapshot.context.creation.value,\n }),\n onDone: 'CREATING_DONE',\n onError: 'CREATING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; value: string},\n 'creating'\n>);\n\nconst selectHooks = [openingHook, closingHook, searchingHook, creatingHook] as const;\n\nconst nextProps = (event: MachineEventObject): SelectProps | null => propsChangedEvent<SelectProps>(event)?.props ?? null;\nconst blocked = (props: SelectProps): boolean => props.disabled || props.readonly;\n\nconst shouldOpenFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props || blocked(props) || !props.open) return false;\n return propsChanged<SelectProps>(event, 'open', 'disabled', 'readonly');\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props) return false;\n return (propsChanged<SelectProps>(event, 'open') && !props.open)\n || (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly);\n};\n\nconst shouldStopFeatureFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly)\n || (propsChanged<SelectProps>(event, 'searchable') && !props.searchable)\n ));\n};\n\nconst nextSelection = (event: MachineEventObject): SelectContext['selection'] | null => {\n if (!Array.isArray(event.selection)) return null;\n if (!event.selection.every((option): option is SelectedOption => (\n typeof option === 'object'\n && option !== null\n && typeof option.value === 'string'\n && typeof option.label === 'string'\n ))) return null;\n return event.selection.map(({value, label}) => ({value, label}));\n};\n\nconst createSelectMachine = ({\n props,\n context,\n effects,\n}: CreateSelectMachineOptions): Machine<SelectContext, SelectProps> => createMachine<SelectContext, SelectProps>({\n type: 'parallel',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n disclosure: {\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n on: {\n SELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n DESELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n SELECT_ALL: {reduce: 'replaceSelection', effects: 'commitSelection'},\n RECONCILE_SELECTION: {reduce: 'replaceSelection', effects: 'syncActive'},\n CLEAR: {reduce: 'clear', effects: 'commitSelection'},\n ACTIVE: {reduce: 'setActive', effects: 'syncActive'},\n OPTIONS_CHANGED: {effects: 'syncOptions'},\n CLOSING_DONE: {reduce: 'resetTransient', effects: 'syncActive'},\n CLOSING_ERROR: {reduce: 'resetTransient', effects: 'syncActive'},\n },\n states: {\n idle: {\n on: {\n CLOSE: {},\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'},\n },\n },\n searching: {\n tags: ['searching'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n SEARCHING_DONE: 'idle',\n SEARCHING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n creating: {\n tags: ['creating'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n CREATING_DONE: {target: 'idle'},\n CREATING_ERROR: {target: 'idle'},\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = nextProps(event);\n return next ? {props: next} : undefined;\n },\n replaceSelection: ({context: current, event}) => {\n const selection = nextSelection(event);\n if (!selection) return undefined;\n return {context: {\n ...current,\n selection,\n }};\n },\n clear: ({context: current}) => ({context: {\n ...current,\n selection: [],\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n }}),\n setSearch: ({context: current, event}) => ({context: {\n ...current,\n search: {\n query: typeof event.query === 'string' ? event.query : '',\n optionsId: typeof event.optionsId === 'string' ? event.optionsId : current.search.optionsId,\n },\n navigation: {\n activeValue: typeof event.activeValue === 'string'\n ? event.activeValue\n : current.navigation.activeValue,\n },\n }}),\n setActive: ({context: current, event}) => ({context: {\n ...current,\n navigation: {activeValue: typeof event.value === 'string' ? event.value : ''},\n }}),\n setCreation: ({context: current, event}) => ({context: {\n ...current,\n creation: {value: typeof event.value === 'string' ? event.value : current.search.query},\n }}),\n resetTransient: ({context: current}) => ({context: {\n ...current,\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n }}),\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n single: ({props: current}) => !current.multiple,\n clearCloses: ({props: current}) => current.clear === 'close',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n commitSelection: effects.commitSelection,\n commitSearch: effects.commitSearch,\n prepareCreate: effects.prepareCreate,\n syncProps: effects.syncProps,\n syncOptions: effects.syncOptions,\n syncActive: effects.syncActive,\n syncDom: effects.syncDom,\n },\n});\n\nexport {createSelectMachine, selectHooks};\nexport type {\n CreateSelectMachineOptions,\n SelectedOption,\n SelectContext,\n SelectMachineEffects,\n};\n","import {\n createAnchoredPopover,\n type AnchoredPopoverOptions,\n} from '@client/runtime/anchored-popover';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\n\ntype SelectPresentation = 'anchored' | 'dialog' | 'fullscreen';\n\ntype SelectPresentationMetrics = {\n viewportWidth: number;\n viewportHeight: number;\n layoutViewportHeight: number;\n referenceTop: number;\n referenceBottom: number;\n touch: boolean;\n};\n\ntype SelectSurfaceOptions = AnchoredPopoverOptions & {\n labelId: () => string;\n};\n\ntype SelectSurface = {\n opened(): boolean;\n open(): void;\n close(): void;\n sync(): void;\n destroy(): void;\n presentation(): SelectPresentation;\n};\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\nconst PHONE_MAX_WIDTH = 640;\nconst MIN_ANCHORED_RESULTS_HEIGHT = 256;\nconst TABLET_KEYBOARD_HEIGHT = 520;\nconst KEYBOARD_VIEWPORT_RATIO = 0.72;\nconst FULLSCREEN_DIALOG_MARGIN = 12;\nconst DIALOG_MARGIN = 16;\nconst DIALOG_MAX_WIDTH = 720;\nconst DIALOG_MAX_HEIGHT = 720;\n\nconst resolveSelectPresentation = ({\n viewportWidth,\n viewportHeight,\n layoutViewportHeight,\n referenceTop,\n referenceBottom,\n touch,\n}: SelectPresentationMetrics): SelectPresentation => {\n if (viewportWidth <= PHONE_MAX_WIDTH) return 'fullscreen';\n\n const keyboardConstrained = viewportHeight < TABLET_KEYBOARD_HEIGHT\n || viewportHeight < layoutViewportHeight * KEYBOARD_VIEWPORT_RATIO;\n if (touch && keyboardConstrained) return 'fullscreen';\n if (touch) return 'dialog';\n\n const spaceAbove = Math.max(0, referenceTop);\n const spaceBelow = Math.max(0, viewportHeight - referenceBottom);\n return Math.max(spaceAbove, spaceBelow) < MIN_ANCHORED_RESULTS_HEIGHT ? 'dialog' : 'anchored';\n};\n\nconst viewportMetrics = (): {\n width: number;\n height: number;\n offsetTop: number;\n offsetLeft: number;\n} => {\n const viewport = window.visualViewport;\n return viewport\n ? {\n width: viewport.width,\n height: viewport.height,\n offsetTop: viewport.offsetTop,\n offsetLeft: viewport.offsetLeft,\n }\n : {width: window.innerWidth, height: window.innerHeight, offsetTop: 0, offsetLeft: 0};\n};\n\nconst hasTouchPointer = (): boolean => (\n window.matchMedia?.('(any-pointer: coarse)').matches === true\n || navigator.maxTouchPoints > 0\n);\n\nconst createSelectSurface = (options: SelectSurfaceOptions): SelectSurface => {\n const anchored = createAnchoredPopover(options);\n let open = false;\n let currentPresentation: SelectPresentation = 'anchored';\n let releaseScrollLock: (() => void) | null = null;\n let stopViewportListeners: (() => void) | null = null;\n\n const surface = (): PopoverElement => options.floating() as PopoverElement;\n\n const setScrollLock = (locked: boolean): void => {\n if (locked) releaseScrollLock ??= acquireDocumentScrollLock(surface().ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\n };\n\n const clearModalGeometry = (element: HTMLElement): void => {\n element.style.removeProperty('border-radius');\n element.style.removeProperty('height');\n element.style.removeProperty('inset');\n element.style.removeProperty('max-height');\n element.style.removeProperty('max-width');\n element.style.removeProperty('position');\n element.style.removeProperty('transform-origin');\n element.style.removeProperty('width');\n };\n\n const applyDialogGeometry = (\n element: HTMLElement,\n presentation: Exclude<SelectPresentation, 'anchored'>,\n ): void => {\n const viewport = viewportMetrics();\n const margin = presentation === 'dialog'\n ? DIALOG_MARGIN\n : FULLSCREEN_DIALOG_MARGIN;\n const maxWidth = presentation === 'dialog' ? DIALOG_MAX_WIDTH : Number.POSITIVE_INFINITY;\n const maxHeight = presentation === 'dialog' ? DIALOG_MAX_HEIGHT : Number.POSITIVE_INFINITY;\n const width = Math.min(maxWidth, Math.max(0, viewport.width - margin * 2));\n const height = Math.min(maxHeight, Math.max(0, viewport.height - margin * 2));\n const left = viewport.offsetLeft + (viewport.width - width) / 2;\n const top = viewport.offsetTop + (viewport.height - height) / 2;\n\n Object.assign(element.style, {\n borderRadius: 'var(--radius-overlay-md)',\n position: 'fixed',\n inset: `${top}px auto auto ${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n maxWidth: 'none',\n maxHeight: 'none',\n transformOrigin: 'center',\n });\n };\n\n const resolveCurrentPresentation = (): SelectPresentation => {\n const viewport = viewportMetrics();\n const reference = options.reference().getBoundingClientRect();\n return resolveSelectPresentation({\n viewportWidth: viewport.width,\n viewportHeight: viewport.height,\n layoutViewportHeight: window.innerHeight,\n referenceTop: reference.top - viewport.offsetTop,\n referenceBottom: reference.bottom - viewport.offsetTop,\n touch: hasTouchPointer(),\n });\n };\n\n const applyPresentation = (): void => {\n if (!open) return;\n const element = surface();\n const next = resolveCurrentPresentation();\n currentPresentation = next;\n element.dataset.presentation = next;\n const heading = element.querySelector<HTMLElement>('[data-ui-select-sheet-heading]');\n if (heading) heading.style.display = next === 'anchored' ? 'none' : 'flex';\n\n if (next === 'anchored') {\n element.removeAttribute('aria-modal');\n element.removeAttribute('aria-labelledby');\n element.removeAttribute('role');\n setScrollLock(false);\n clearModalGeometry(element);\n anchored.mount();\n return;\n }\n\n anchored.unmount();\n element.setAttribute('role', 'dialog');\n element.setAttribute('aria-modal', 'true');\n element.setAttribute('aria-labelledby', options.labelId());\n setScrollLock(true);\n applyDialogGeometry(element, next);\n };\n\n const listenToViewport = (): (() => void) => {\n const update = (): void => applyPresentation();\n const viewport = window.visualViewport;\n const pointer = window.matchMedia?.('(any-pointer: coarse)');\n window.addEventListener('resize', update);\n window.addEventListener('orientationchange', update);\n viewport?.addEventListener('resize', update);\n viewport?.addEventListener('scroll', update);\n pointer?.addEventListener('change', update);\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('orientationchange', update);\n viewport?.removeEventListener('resize', update);\n viewport?.removeEventListener('scroll', update);\n pointer?.removeEventListener('change', update);\n };\n };\n\n const show = (): void => {\n if (open) return;\n open = true;\n try {\n surface().showPopover();\n } catch {\n // Reversal may find the native surface already in the top layer.\n }\n applyPresentation();\n stopViewportListeners = listenToViewport();\n };\n\n const hide = (): void => {\n if (!open) return;\n open = false;\n stopViewportListeners?.();\n stopViewportListeners = null;\n anchored.unmount();\n setScrollLock(false);\n try {\n surface().hidePopover();\n } catch {\n // Native teardown may already have removed the surface from the top layer.\n }\n };\n\n return {\n opened: () => open,\n open: show,\n close: hide,\n sync: applyPresentation,\n destroy: hide,\n presentation: () => currentPresentation,\n };\n};\n\nexport {createSelectSurface, resolveSelectPresentation};\nexport type {SelectPresentation, SelectPresentationMetrics, SelectSurface};\n","import {defineStyles} from '../../runtime';\nimport {\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_RADIUS_CLASSES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n OPTION_ICON_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n OPTION_META_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst selectStyles = defineStyles({definition: {\n component: 'ui.select',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n control: {\n base: FIELD_CONTROL_ROOT_CLASSES,\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n variant: {\n outline: '',\n filled: '',\n plain: '',\n },\n mode: {\n listbox: '',\n combobox: '',\n pillbox: 'flex-wrap gap-1 py-0.5',\n native: '',\n },\n empty: {\n true: '',\n false: '',\n },\n },\n compounds: [\n {when: {mode: 'pillbox', empty: false}, class: '!pl-1.5'},\n ],\n defaults: {\n size: 'lg',\n variant: 'outline',\n radius: 'md',\n mode: 'listbox',\n empty: false,\n },\n },\n button: {\n base: [\n 'flex min-w-0 flex-1 items-center gap-2 border-0 bg-transparent p-0 text-left text-inherit outline-none',\n ],\n },\n pillboxTrigger: {\n base: 'min-w-16 self-stretch',\n },\n value: {\n base: 'min-w-0 flex-1 truncate',\n },\n placeholder: {\n base: 'min-w-0 flex-1 truncate text-surface-ink-muted',\n },\n input: {\n base: [\n 'w-full min-w-16 flex-1',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n search: {\n base: [\n 'flex min-h-control-xlg shrink-0 items-center gap-2 px-3',\n 'text-sm',\n ],\n },\n searchInput: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n sheetHeader: {\n base: '',\n },\n sheetHeading: {\n base: 'min-w-0 items-center gap-3 px-4 pt-4',\n },\n sheetTitle: {\n base: 'min-w-0 flex-1 truncate text-base font-medium',\n },\n sheetClose: {\n base: [\n 'inline-flex size-control-md shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent',\n 'text-surface-ink-muted outline-none focus-visible:ui-focus-ring',\n ],\n },\n chips: {\n base: 'flex min-w-0 flex-wrap items-center gap-1',\n },\n chip: {\n base: [\n 'max-w-64',\n ],\n },\n chipLabel: {\n base: 'flex min-w-0 flex-1 items-center',\n },\n chipPlainLabel: {\n base: 'block min-w-0 flex-1 truncate',\n },\n chipRemove: {\n base: '',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-surface-ink-muted',\n variants: {\n position: {\n leading: '',\n trailing: '',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'overflow-hidden rounded-overlay-sm',\n ],\n },\n listbox: {\n base: 'min-h-0 min-w-0 max-w-full overflow-hidden outline-none',\n },\n viewport: {\n base: 'min-h-0 min-w-0 max-w-full',\n },\n options: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 p-popover-padding',\n },\n virtualOptions: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 px-popover-padding',\n },\n create: {\n base: 'shrink-0 p-popover-padding',\n },\n option: {\n base: [\n OPTION_ITEM_CLASSES,\n 'min-w-0 max-w-full overflow-hidden',\n '[&:has([data-ui-select-option-label]>*+*)]:h-auto',\n '[&:has([data-ui-select-option-label]>*+*)]:items-start',\n '[&:has([data-ui-select-option-label]>*+*)]:py-2',\n ],\n },\n optionLabel: {\n base: 'min-w-0 flex-1 truncate',\n },\n optionMeta: {\n base: OPTION_META_CLASSES,\n },\n optionIcon: {\n base: OPTION_ICON_CLASSES,\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n optionIndicator: {\n base: OPTION_INDICATOR_CLASSES,\n },\n group: {\n base: 'grid auto-rows-min content-start gap-1',\n },\n label: {\n base: 'px-menu-item-padding-inline py-1',\n },\n empty: {\n base: 'px-menu-item-padding-inline py-2 text-sm text-surface-ink-muted',\n },\n separatorRoot: {\n base: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n separatorRule: {\n base: 'h-[var(--border-width-edge-separator)] w-full border-0',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n 'appearance-none pe-10',\n ],\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n size: 'lg',\n radius: 'md',\n },\n },\n nativeIcon: {\n base: 'pointer-events-none absolute right-3 top-1/2 size-icon -translate-y-1/2 fill-current text-icon',\n },\n },\n}});\n\nexport {selectStyles};\n","import type Alpine from 'alpinejs';\n\nimport {badgeStyles} from '@client/components/badge/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {trapFocus} from '@client/runtime/focus-scope';\nimport {focusElement} from '@client/runtime/focus';\nimport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n} from '@client/runtime/form-control';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {declareMorphAttributes} from '@client/runtime/morph';\nimport {getPathValue, normalizeOptionText, parseItemData} from '@client/runtime/option-data';\nimport {observeSemanticChanges} from '@client/runtime/semantic-observer';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, setPresence} from '@client/utils';\nimport {selectSchema, type SelectProps} from './contract';\nimport {\n createSelectMachine,\n type SelectContext,\n type SelectedOption,\n selectHooks,\n} from './machine';\nimport {createSelectSurface, type SelectSurface} from './presentation';\nimport {selectStyles} from './styles';\n\ntype SelectTransitionName = (typeof selectHooks)[number]['name'];\ntype SelectTransition<TName extends SelectTransitionName = SelectTransitionName> = TransitionForHook<\n Extract<(typeof selectHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype SelectOption = {\n el: HTMLElement;\n id: string;\n value: string;\n label: string;\n selectedLabel: string;\n disabled: boolean;\n selected: boolean;\n visible: boolean;\n create: boolean;\n};\n\ntype CatalogOption = Omit<SelectOption, 'selected' | 'visible'> & {\n minLength: number;\n suffix: string;\n};\n\ntype OptionProjection = {\n options: SelectOption[];\n enabled: SelectOption[];\n firstByValue: ReadonlyMap<string, SelectOption>;\n byElement: ReadonlyMap<HTMLElement, SelectOption>;\n};\n\nclass OptionCatalog {\n readonly ordinaryCount: number;\n\n private readonly filter: boolean;\n private readonly records: CatalogOption[];\n private readonly projections = new Map<string, OptionProjection>();\n\n constructor({\n root,\n listboxId,\n props,\n resolveLabel,\n rememberLabel,\n }: {\n root: HTMLElement;\n listboxId: string;\n props: Readonly<SelectProps>;\n resolveLabel(el: HTMLElement, props: Readonly<SelectProps>): string;\n rememberLabel(value: string, label: string): void;\n }) {\n this.filter = props.filter;\n this.records = Array.from(root.querySelectorAll<HTMLElement>(optionSelector)).map((el, index) => {\n const label = resolveLabel(el, props);\n const value = el.dataset.value || label;\n const create = el.hasAttribute('data-ui-select-option-create');\n const record = {\n el,\n id: el.id || `${listboxId}-option-${index}`,\n value,\n label,\n selectedLabel: el.dataset.selectedLabel || label,\n disabled: asBool({value: el.dataset.disabled}),\n create,\n minLength: Number(el.dataset.minLength ?? '0'),\n suffix: el.dataset.suffix ?? '',\n };\n return record;\n });\n const remembered = new Set<string>();\n this.records.forEach((option) => {\n if (option.create || remembered.has(option.value)) return;\n remembered.add(option.value);\n rememberLabel(option.value, option.selectedLabel);\n });\n this.ordinaryCount = this.records.filter((option) => !option.create).length;\n }\n\n project(query: string, selection: readonly SelectedOption[]): OptionProjection {\n const selectedValues = selection.map(({value}) => value);\n const key = JSON.stringify([query, selectedValues]);\n const cached = this.projections.get(key);\n if (cached) return cached;\n\n const normalizedQuery = normalizeOptionText(query);\n const exact = normalizedQuery !== '' && this.records.some((option) => (\n !option.create && normalizeOptionText(option.label) === normalizedQuery\n ));\n const options = this.records.map((option) => {\n const matches = !normalizedQuery\n || normalizeOptionText(`${option.label} ${option.suffix}`).includes(normalizedQuery);\n return {\n ...option,\n value: option.create ? option.el.dataset.value || query : option.value,\n selected: selectedValues.includes(option.value),\n visible: option.create\n ? !exact && query.length >= option.minLength\n : !this.filter || normalizedQuery === '' || matches,\n };\n });\n const firstByValue = new Map<string, SelectOption>();\n const byElement = new Map<HTMLElement, SelectOption>();\n options.forEach((option) => {\n if (!firstByValue.has(option.value)) firstByValue.set(option.value, option);\n byElement.set(option.el, option);\n });\n const projection = {\n options,\n enabled: options.filter((option) => option.visible && !option.disabled && !option.create),\n firstByValue,\n byElement,\n };\n this.projections.set(key, projection);\n return projection;\n }\n}\n\ntype NestedVirtualizerApi = {\n setUrl(url: string, options?: {reset?: boolean}): void;\n setTotalItems(count: number): void;\n};\n\ntype NestedVirtualizerElement = HTMLElement & {\n _x_dataStack?: Array<Partial<NestedVirtualizerApi>>;\n};\n\n/**\n * Public Alpine API for `ui.select`.\n *\n * @public\n */\ninterface UiSelectApi {\n /** Whether the select is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Whether a searching transition hook is pending. */\n readonly isSearching: boolean;\n\n /** First selected value, or an empty string. */\n readonly value: string;\n\n /** Selected values in committed order. */\n readonly values: readonly string[];\n\n /** Display labels corresponding to the selected values. */\n readonly selectedLabels: readonly string[];\n\n /** Current search query. */\n readonly search: string;\n\n /** Value of the currently highlighted option. */\n readonly activeValue: string;\n\n /** Opens the listbox unless the select is disabled or readonly. */\n open(event?: Event): void;\n\n /** Closes the listbox. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n\n /** Selects the rendered option with this value. */\n select(value: string, event?: Event): void;\n\n /** Removes a selected value. */\n deselect(value: string, event?: Event): void;\n\n /** Selects every rendered, visible, enabled option in multiple mode. */\n selectAll(event?: Event): void;\n\n /** Clears search, selection, highlight, and submitted values. */\n clear(event?: Event): void;\n\n /** Sets the query and enters the searching feature state. */\n setSearch(query: string): void;\n}\n\ntype SelectData = AlpineMachine<SelectContext, SelectProps, typeof selectHooks> & UiSelectApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst optionSelector = '[data-ui-select-option], [data-ui-select-option-create]';\nconst selectedTemplateSelector = 'template[data-ui-select-option-selected-template]';\n\nconst projectedInteractiveElements = new Set([\n 'A', 'AREA', 'BUTTON', 'DETAILS', 'EMBED', 'IFRAME', 'INPUT', 'OBJECT', 'OPTION', 'SELECT', 'SUMMARY', 'TEXTAREA',\n]);\nconst projectedExecutableElements = new Set(['SCRIPT', 'STYLE']);\nconst projectedInteractionAttributes = new Set([\n 'autofocus',\n 'contenteditable',\n 'controls',\n 'download',\n 'draggable',\n 'form',\n 'formaction',\n 'formenctype',\n 'formmethod',\n 'formnovalidate',\n 'formtarget',\n 'href',\n 'id',\n 'name',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'role',\n 'tabindex',\n 'target',\n]);\n\nconst isProjectedInteractionAttribute = (name: string): boolean => (\n projectedInteractionAttributes.has(name)\n || (name.startsWith('aria-') && name !== 'aria-hidden')\n || name.startsWith('data-ui-select')\n || name === 'data-ui-interactive'\n || name.startsWith('data-ui-action')\n || name.startsWith('data-selected')\n || name.startsWith('data-highlighted')\n || name.startsWith('data-disabled')\n || name.startsWith('x-')\n || name.startsWith('hx-')\n || name.startsWith('v-')\n || name.startsWith('wire:')\n || name.startsWith('@')\n || name.startsWith(':')\n || name.startsWith('on')\n);\n\nconst sanitizeSelectedContent = (node: Node): Node | null => {\n if (!(node instanceof Element)) return node;\n const elementName = node.localName.toUpperCase();\n if (projectedExecutableElements.has(elementName)) return null;\n\n let projected = node;\n if (projectedInteractiveElements.has(elementName) || node.hasAttribute('contenteditable')) {\n projected = document.createElement('span');\n Array.from(node.attributes).forEach((attribute) => {\n if (!isProjectedInteractionAttribute(attribute.name)) {\n projected.setAttribute(attribute.name, attribute.value);\n }\n });\n projected.append(...Array.from(node.childNodes));\n }\n\n Array.from(projected.attributes).forEach((attribute) => {\n if (isProjectedInteractionAttribute(attribute.name)) projected.removeAttribute(attribute.name);\n });\n\n Array.from(projected.childNodes).forEach((child) => {\n const sanitized = sanitizeSelectedContent(child);\n if (!sanitized) child.remove();\n else if (sanitized !== child) child.replaceWith(sanitized);\n });\n projected.setAttribute('x-ignore', 'true');\n return projected;\n};\n\nconst cloneSelectedNodes = (nodes: Iterable<Node>): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n Array.from(nodes).forEach((node) => {\n if (node instanceof HTMLTemplateElement && node.matches(selectedTemplateSelector)) return;\n const clone = node.cloneNode(true);\n const sanitized = sanitizeSelectedContent(clone);\n if (sanitized) fragment.append(sanitized);\n });\n return fragment;\n};\n\nconst sameStrings = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst UiSelect = (): TrellisAlpineComponent<SelectData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let reflectControlledState = false;\n let buttonId = '';\n let inputId = '';\n let listboxId = '';\n let optionsId = '';\n let popover: SelectSurface | null = null;\n let disconnectObserver: (() => void) | null = null;\n let disconnectSelectedTemplateObservers: (() => void) | null = null;\n let cleanup: CleanupManager;\n let hiddenInputsKey = '';\n let chipsKey = '';\n let inputSearching = false;\n let restoreFocusAfterClose = false;\n let lastOptionEl: HTMLElement | null = null;\n let typeahead = '';\n let typeaheadTimer = 0;\n let virtualSearchTimer = 0;\n let virtualTotal = 0;\n let virtualSearchPopulation = 0;\n let synchronizedVirtualizerUrl: string | null = null;\n let activeOptionCatalog: OptionCatalog | null = null;\n let optionRevision = 0;\n const selectedLabelCache = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Select has not been initialized.');\n return rootEl;\n };\n\n const control = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-control]');\n if (!el) throw new Error('Select requires a control element.');\n return el;\n };\n\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-trigger], [data-ui-select-button], [data-ui-select-input]');\n if (!el) throw new Error('Select requires a trigger element.');\n return el;\n };\n\n const input = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-input]');\n const searchInput = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-search-input]');\n const sheetTitle = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-sheet-title]');\n if (!el) throw new Error('Select requires an adaptive picker title.');\n return el;\n };\n\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-popover]');\n if (!el) throw new Error('Select requires a popover element.');\n return el as PopoverElement;\n };\n\n const listbox = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-listbox]');\n if (!el) throw new Error('Select requires a listbox element.');\n return el;\n };\n\n const optionsEl = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-options]');\n if (!el) throw new Error('Select requires an options element.');\n return el;\n };\n\n const virtualizerEl = (): NestedVirtualizerElement | null => (\n root().querySelector<NestedVirtualizerElement>('[data-ui-select-virtualizer]')\n );\n\n const virtualizerApi = (): NestedVirtualizerApi | null => {\n const scope = virtualizerEl()?._x_dataStack?.find((candidate) => (\n typeof candidate.setUrl === 'function' && typeof candidate.setTotalItems === 'function'\n ));\n return scope as NestedVirtualizerApi | undefined ?? null;\n };\n\n const chipsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-chips]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-hidden-inputs]');\n const currentProps = (): Readonly<SelectProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<SelectContext> => bridge.getCommittedSnapshot().context;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const resolveOptionLabel = (el: HTMLElement, props: Readonly<SelectProps>): string => {\n const explicit = el.dataset.label || el.getAttribute('aria-label') || '';\n if (explicit) return explicit;\n if (el.dataset.textValue) return el.dataset.textValue;\n const itemValue = getPathValue(parseItemData(el.dataset.item), props.path);\n if (itemValue !== undefined && itemValue !== null) return String(itemValue);\n const label = el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n return (label?.textContent ?? el.textContent ?? '').trim();\n };\n\n const createOptionCatalog = (props: Readonly<SelectProps> = currentProps()): OptionCatalog => new OptionCatalog({\n root: root(),\n listboxId,\n props,\n resolveLabel: resolveOptionLabel,\n rememberLabel: (value, label) => selectedLabelCache.set(value, label),\n });\n\n const withOptionCatalog = <T>(operation: (catalog: OptionCatalog) => T, props?: Readonly<SelectProps>): T => {\n if (activeOptionCatalog) return operation(activeOptionCatalog);\n activeOptionCatalog = createOptionCatalog(props);\n try {\n return operation(activeOptionCatalog);\n } finally {\n activeOptionCatalog = null;\n }\n };\n\n const selectionValues = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({value}) => value)\n );\n const selectionLabels = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({label}) => label)\n );\n const optionProjection = (\n catalog: OptionCatalog,\n query = currentContext().search.query,\n selection: readonly SelectedOption[] = currentContext().selection,\n ): OptionProjection => catalog.project(query, selection);\n\n const fixedSearchAvailable = (catalog: OptionCatalog): boolean => {\n const props = currentProps();\n if (!searchInput()) return false;\n if (props.mode === 'combobox') return true;\n const mountedOptions = catalog.ordinaryCount;\n const optionCount = props.virtualized\n ? Math.max(mountedOptions, props.optionsTotalItems, virtualSearchPopulation)\n : mountedOptions;\n return optionCount >= props.searchMinItems;\n };\n\n const selectionForValues = (\n values: readonly string[],\n catalog: OptionCatalog,\n props: Readonly<SelectProps> = currentProps(),\n ): SelectContext['selection'] => {\n const unique = Array.from(new Set(values.filter(Boolean)));\n const normalized = props.multiple ? unique : unique.slice(0, 1);\n const projection = catalog.project('', []);\n return normalized.map((value) => ({\n value,\n label: projection.firstByValue.get(value)?.selectedLabel\n ?? selectedLabelCache.get(value)\n ?? (typeof props.selectedLabelMap[value] === 'string' ? props.selectedLabelMap[value] : undefined)\n ?? value,\n }));\n };\n\n const valuesFromProps = (props: Readonly<SelectProps>): string[] => (\n props.multiple\n ? Array.from(new Set([...props.values, ...(props.value ? [props.value] : [])]))\n : props.value ? [props.value] : props.values.slice(0, 1)\n );\n\n const initialContext = (props: SelectProps): SelectContext => {\n return withOptionCatalog((catalog) => {\n const explicit = valuesFromProps(props);\n const selectedFromOptions = catalog.project('', [])\n .options.filter((option) => asBool({value: option.el.dataset.selected}))\n .map((option) => option.value);\n return {\n selection: selectionForValues(explicit.length > 0 ? explicit : selectedFromOptions, catalog, props),\n search: {query: '', optionsId: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n };\n }, props);\n };\n\n const selectedSummary = (): string => {\n const {selection} = currentContext();\n const props = currentProps();\n if (selection.length === 0 || (props.mode === 'pillbox' && props.multiple)) return '';\n if (props.multiple && selection.length > 1) return `${selection.length} ${props.suffix}`;\n return selection[0]?.label ?? selection[0]?.value ?? '';\n };\n\n const explicitSelectedContent = (option: SelectOption): DocumentFragment | null => {\n const template = option.el.querySelector<HTMLTemplateElement>(selectedTemplateSelector);\n return template ? cloneSelectedNodes(template.content.childNodes) : null;\n };\n\n const selectedContent = (option: SelectOption): DocumentFragment => {\n const explicit = explicitSelectedContent(option);\n if (explicit) return explicit;\n const source = option.el.querySelector<HTMLElement>('[data-ui-select-option-selected-content]')\n ?? option.el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n if (source) return cloneSelectedNodes(source.childNodes);\n const fragment = document.createDocumentFragment();\n fragment.append(document.createTextNode(option.selectedLabel));\n return fragment;\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (reflectControlledState) {\n const values = selectionValues();\n if (isExpanded() || !props.open || (!props.disabled && !props.readonly)) {\n reflectSchemaProp({el: root(), schema: selectSchema, key: 'open', value: isExpanded()});\n }\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'value',\n value: props.multiple ? '' : values[0] ?? '',\n });\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'values',\n value: props.multiple ? [...values] : [],\n });\n }\n root().dataset.state = isExpanded() ? 'open' : 'closed';\n root().dataset.mark = props.mark;\n syncControlPresence({el: root(), state: {\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }, value: 'true'});\n };\n\n const isPillbox = (): boolean => currentProps().mode === 'pillbox' && currentProps().multiple;\n\n const syncControl = (): void => {\n const props = currentProps();\n const empty = isPillbox() && currentContext().selection.length === 0;\n const el = control();\n el.className = resolveStyle({\n part: selectStyles.parts.control,\n props: {...props, mode: isPillbox() ? 'pillbox' : props.mode === 'combobox' ? 'combobox' : 'listbox', empty},\n });\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.dataset.mode = isPillbox() ? 'pillbox' : props.mode;\n setPresence({el, attr: 'data-ui-select-pillbox-control', present: isPillbox(), value: ''});\n setPresence({el, attr: 'data-empty', present: empty, value: 'true'});\n syncControlPresence({el, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n };\n\n const syncTrigger = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const el = trigger();\n el.id ||= buttonId;\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n el.setAttribute('aria-controls', listboxId);\n setPresence({el, attr: 'aria-invalid', present: props.invalid, value: 'true'});\n if (el instanceof HTMLButtonElement) el.disabled = props.disabled;\n\n const summary = selectedSummary();\n const valueEl = root().querySelector<HTMLElement>('[data-ui-select-button-value]');\n const placeholder = root().querySelector<HTMLElement>('[data-ui-select-button-placeholder]');\n if (valueEl) {\n valueEl.replaceChildren();\n const selected = currentContext().selection.length === 1 && summary\n ? catalog.project('', currentContext().selection).firstByValue.get(currentContext().selection[0]?.value ?? '')\n : undefined;\n if (selected) valueEl.append(selectedContent(selected));\n else valueEl.textContent = summary;\n valueEl.hidden = summary === '';\n }\n if (placeholder) {\n placeholder.hidden = isPillbox()\n ? currentContext().selection.length > 0\n : summary !== '';\n }\n\n root().querySelectorAll<HTMLElement>('[data-ui-select-clear], [data-ui-select-button-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !props.clearable || currentContext().selection.length === 0;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-select-search-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !currentContext().search.query;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n };\n\n const syncInputs = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n const inputEl = input();\n if (inputEl) {\n inputEl.id ||= inputId;\n inputEl.className = resolveStyle({part: selectStyles.parts.input, className: props.inputClass});\n inputEl.value = isPillbox()\n ? context.search.query\n : isExpanded() && inputSearching ? context.search.query : selectedSummary();\n inputEl.placeholder = isPillbox() && context.selection.length > 0 ? '' : props.placeholder;\n inputEl.setAttribute('role', 'combobox');\n inputEl.setAttribute('autocomplete', 'off');\n inputEl.setAttribute('aria-autocomplete', 'list');\n inputEl.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n inputEl.setAttribute('aria-controls', listboxId);\n syncNativeControl({input: inputEl, state: {\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n nativeRequired: false,\n invalid: props.invalid,\n ariaRequired: props.required,\n }});\n }\n\n const search = searchInput();\n if (search) {\n const searchRow = search.closest<HTMLElement>('[data-ui-select-search]');\n if (searchRow) searchRow.hidden = !fixedSearchAvailable(catalog);\n search.value = context.search.query;\n search.disabled = props.disabled;\n search.readOnly = props.readonly;\n }\n\n const active = optionProjection(catalog).firstByValue.get(context.navigation.activeValue);\n [trigger(), inputEl, search, listbox()].forEach((element) => {\n if (active?.id) element?.setAttribute('aria-activedescendant', active.id);\n else element?.removeAttribute('aria-activedescendant');\n });\n };\n\n const syncListbox = (): void => {\n const props = currentProps();\n const surface = popoverEl();\n const box = listbox();\n surface.id = `${listboxId}-popover`;\n surface.className = resolveStyle({part: selectStyles.parts.popover, props, className: props.listboxClass});\n surface.dataset.uiSurface = props.surface;\n surface.dataset.uiElevation = props.elevation;\n surface.setAttribute('popover', 'manual');\n surface.dataset.state = isExpanded() ? 'open' : 'closed';\n surface.hidden = !isVisible();\n box.id = listboxId;\n box.setAttribute('role', 'listbox');\n box.tabIndex = -1;\n box.setAttribute('aria-labelledby', trigger().id);\n setPresence({el: box, attr: 'aria-multiselectable', present: props.multiple, value: 'true'});\n };\n\n const syncOptions = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n root().querySelectorAll<HTMLElement>('[data-ui-select-create-query]').forEach((query) => {\n query.textContent = context.search.query;\n });\n const records = optionProjection(catalog).options;\n records.forEach((option) => {\n option.el.id = option.id;\n option.el.hidden = !option.visible;\n option.el.setAttribute('role', 'option');\n option.el.setAttribute('aria-selected', option.selected ? 'true' : 'false');\n if (!option.create) option.el.dataset.value = option.value;\n if (!option.create) option.el.dataset.label = option.label;\n setPresence({el: option.el, attr: 'data-selected', present: option.selected, value: 'true'});\n setPresence({el: option.el, attr: 'data-highlighted', present: option.value === context.navigation.activeValue, value: 'true'});\n setPresence({el: option.el, attr: 'data-disabled', present: option.disabled, value: 'true'});\n setPresence({el: option.el, attr: 'aria-disabled', present: option.disabled, value: 'true'});\n option.el.querySelectorAll<HTMLElement>('[data-ui-select-option-indicator]').forEach((indicator) => {\n setPresence({el: indicator, attr: 'data-selected', present: option.selected, value: 'true'});\n });\n });\n const empty = root().querySelector<HTMLElement>('[data-ui-select-option-empty]');\n if (empty) {\n empty.hidden = props.virtualized && props.optionsFetchUrl\n ? virtualTotal !== 0\n : records.some((option) => option.visible && !option.create);\n }\n };\n\n const optionDomSignature = (): string => JSON.stringify(\n Array.from(root().querySelectorAll<HTMLElement>(optionSelector)).map((option) => ({\n create: option.hasAttribute('data-ui-select-option-create'),\n value: option.dataset.value ?? '',\n label: option.hasAttribute('data-ui-select-option-create')\n ? option.textContent?.trim() ?? ''\n : option.dataset.label ?? option.textContent?.trim() ?? '',\n disabled: option.dataset.disabled ?? '',\n selected: option.dataset.selected ?? '',\n selectedContent: option.querySelector<HTMLTemplateElement>(selectedTemplateSelector)?.innerHTML ?? null,\n })),\n );\n\n const syncChips = (catalog: OptionCatalog): void => {\n const container = chipsEl();\n if (!container) return;\n const props = currentProps();\n const context = currentContext();\n const records = catalog.project('', context.selection);\n const chips = context.selection.map(({value, label}) => ({\n value,\n label,\n disabled: records.firstByValue.get(value)?.disabled ?? false,\n option: records.firstByValue.get(value),\n }));\n const chipSize = props.size === 'xs' || props.size === 'sm' ? 'xs' : 'sm';\n const key = JSON.stringify({chips: chips.map(({value, label, disabled}) => ({value, label, disabled})), optionRevision,\n pillbox: isPillbox(), disabled: props.disabled, readonly: props.readonly,\n variant: props.chipVariant, color: props.chipColor, size: chipSize, className: props.chipClass});\n if (key === chipsKey) return;\n chipsKey = key;\n container.replaceChildren();\n container.hidden = !isPillbox() || chips.length === 0;\n if (container.hidden) return;\n\n const chipClass = resolveStyle({\n part: badgeStyles.parts.root,\n props: {variant: props.chipVariant, color: props.chipColor, size: chipSize, radius: 'sm'},\n className: resolveStyle({part: selectStyles.parts.chip, props: {}, className: props.chipClass}),\n });\n const labelClass = resolveStyle({part: selectStyles.parts.chipLabel});\n const plainLabelClass = resolveStyle({part: selectStyles.parts.chipPlainLabel});\n const removeClass = resolveStyle({\n part: badgeStyles.parts.close,\n props: {size: chipSize},\n className: resolveStyle({part: selectStyles.parts.chipRemove}),\n });\n\n chips.forEach((chipData) => {\n const plainLabel = chipData.label || chipData.value;\n const chip = document.createElement('span');\n chip.className = chipClass;\n chip.setAttribute('data-ui-badge', '');\n chip.setAttribute('data-ui-action-recipe', 'badge');\n chip.setAttribute('data-ui-select-chip', '');\n chip.dataset.value = chipData.value;\n chip.dataset.variant = props.chipVariant;\n chip.dataset.color = props.chipColor;\n chip.dataset.size = chipSize;\n chip.dataset.radius = 'sm';\n const label = document.createElement('span');\n label.className = labelClass;\n label.setAttribute('data-ui-select-chip-label', '');\n const selected = chipData.option ? explicitSelectedContent(chipData.option) : null;\n if (selected) label.append(selected);\n else {\n const fallback = document.createElement('span');\n fallback.className = plainLabelClass;\n fallback.textContent = plainLabel;\n label.append(fallback);\n }\n chip.append(label);\n const remove = document.createElement('button');\n remove.type = 'button';\n remove.className = removeClass;\n remove.setAttribute('data-ui-badge-close', '');\n remove.setAttribute('data-ui-select-chip-remove', '');\n remove.dataset.value = chipData.value;\n remove.setAttribute('aria-label', `Remove ${plainLabel}`);\n remove.disabled = props.disabled || props.readonly || chipData.disabled;\n const icon = root().querySelector<HTMLTemplateElement>('[data-ui-select-chip-remove-icon]');\n if (icon) remove.append(icon.content.cloneNode(true));\n else remove.textContent = 'x';\n chip.append(remove);\n container.append(chip);\n });\n };\n\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n hiddenInputsKey = syncRepeatedHiddenInputs({container, state: {\n name: props.name,\n required: props.required,\n values: props.disabled ? [] : selectionValues(),\n form: root().dataset.form ?? '',\n marker: 'data-ui-select-hidden-input',\n }, currentKey: hiddenInputsKey});\n };\n\n const syncAll = (): void => withOptionCatalog((catalog) => {\n syncRoot();\n syncControl();\n syncTrigger(catalog);\n syncInputs(catalog);\n syncListbox();\n syncOptions(catalog);\n syncChips(catalog);\n syncHiddenInputs();\n });\n\n const focusForOpen = (): void => {\n if (!rootEl) return;\n withOptionCatalog((catalog) => {\n if (!bridge.hasTag('interactive')) return;\n const props = currentProps();\n const focusTarget = (target: HTMLElement | null): void => {\n const showIndicator = target !== null\n && target.ownerDocument.activeElement === target\n && target.matches(':focus-visible');\n focusElement(target, {showIndicator});\n };\n if (popover?.presentation() !== 'anchored') {\n const target = (fixedSearchAvailable(catalog) ? searchInput() : null)\n ?? root().querySelector<HTMLElement>('[data-ui-select-sheet-close]')\n ?? listbox();\n focusTarget(target);\n } else if (props.mode === 'combobox') focusTarget(input());\n else if (fixedSearchAvailable(catalog)) focusTarget(searchInput());\n else focusTarget(trigger());\n });\n };\n\n const activateCommittedOption = (): void => withOptionCatalog((catalog) => {\n if (currentContext().navigation.activeValue) return;\n const enabled = optionProjection(catalog).enabled;\n const selected = selectionValues()\n .map((value) => enabled.find((option) => option.value === value))\n .find((option): option is SelectOption => option !== undefined);\n if (selected) setActive(selected.value);\n });\n\n const reconcileOptions = (): void => withOptionCatalog((catalog) => {\n const context = currentContext();\n const selection = selectionForValues(selectionValues(context.selection), catalog);\n if (!sameStrings(selectionLabels(selection), selectionLabels(context.selection))) {\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n const enabled = optionProjection(catalog).enabled;\n if (context.navigation.activeValue && !enabled.some((option) => option.value === context.navigation.activeValue)) {\n bridge.send({type: 'ACTIVE', value: currentProps().autoHighlight ? enabled[0]?.value ?? '' : ''});\n }\n syncAll();\n });\n\n const propsChanged = (event: Record<string, unknown>): void => withOptionCatalog((catalog) => {\n const changes = Array.isArray(event.changes) ? event.changes : [];\n const keys = changes.flatMap((change) => (\n change && typeof change === 'object' && 'key' in change ? [String(change.key)] : []\n ));\n if (keys.some((key) => key === 'value' || key === 'values' || key === 'multiple' || key === 'selectedLabelMap')) {\n const selection = selectionForValues(valuesFromProps(currentProps()), catalog);\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n if (keys.includes('optionsTotalItems')) {\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n virtualizerApi()?.setTotalItems(virtualTotal);\n }\n if (keys.includes('optionsFetchUrl')) {\n syncVirtualizerUrl();\n queueMicrotask(syncVirtualizerUrl);\n }\n syncAll();\n });\n\n const virtualizedOptionsUrl = (query: string): string => {\n const props = currentProps();\n const url = new URL(props.optionsFetchUrl, document.baseURI);\n if (query) url.searchParams.set(props.optionSearchParam, query);\n else url.searchParams.delete(props.optionSearchParam);\n return /^[a-z][a-z\\d+.-]*:/i.test(props.optionsFetchUrl) || props.optionsFetchUrl.startsWith('//')\n ? url.href\n : `${url.pathname}${url.search}${url.hash}`;\n };\n\n const syncVirtualizerUrl = (): void => {\n if (!rootEl) return;\n const props = currentProps();\n if (!props.virtualized) return;\n const desired = props.optionsFetchUrl\n ? virtualizedOptionsUrl(currentContext().search.query)\n : '';\n const virtualizer = virtualizerEl();\n if (!virtualizer) return;\n if (virtualizer.dataset.fetchUrl === desired) {\n synchronizedVirtualizerUrl = desired;\n return;\n }\n if (synchronizedVirtualizerUrl === desired) return;\n const api = virtualizerApi();\n if (!api) return;\n synchronizedVirtualizerUrl = desired;\n api.setUrl(desired, {reset: true});\n };\n\n const scheduleVirtualSearch = (): void => {\n window.clearTimeout(virtualSearchTimer);\n const props = currentProps();\n if (\n !props.virtualized\n || !props.optionsFetchUrl\n || (!props.searchable && props.mode !== 'combobox')\n ) return;\n virtualSearchTimer = window.setTimeout(() => {\n syncVirtualizerUrl();\n const api = virtualizerApi();\n if (!api) return;\n if (virtualTotal === 0 && props.optionsTotalItems > 0) {\n virtualTotal = props.optionsTotalItems;\n api.setTotalItems(virtualTotal);\n }\n }, props.optionSearchDebounce);\n };\n\n const bridge = createAlpineMachine({\n schema: selectSchema,\n hooks: selectHooks,\n createMachine: ({props}) => createSelectMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareOpen: () => withOptionCatalog(() => {\n restoreFocusAfterClose = false;\n popover?.open();\n activateCommittedOption();\n syncAll();\n queueMicrotask(focusForOpen);\n }),\n finishOpen: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: ({event}) => {\n inputSearching = false;\n restoreFocusAfterClose = event.restoreFocus === true\n || event.type === 'SELECT'\n || event.type === 'CREATE';\n if (restoreFocusAfterClose) focusElement(trigger(), {showIndicator: false});\n syncAll();\n },\n finishClose: () => {\n popover?.close();\n syncAll();\n if (restoreFocusAfterClose) focusElement(trigger(), {showIndicator: false});\n restoreFocusAfterClose = false;\n dispatch({el: root(), name: 'ui:close'});\n },\n commitSelection: ({event}) => {\n syncAll();\n declareMorphAttributes(root(), 'data-value', 'data-values');\n dispatchNativeControlChange({\n container: hiddenInputsEl(),\n fallback: root(),\n marker: 'data-ui-select-hidden-input',\n });\n const {selection} = currentContext();\n if (event.type === 'CLEAR') dispatch({el: root(), name: 'ui:clear'});\n dispatch({el: root(), name: 'ui:change', detail: {\n value: selection[0]?.value ?? '',\n values: selectionValues(selection),\n label: selection[0]?.label ?? '',\n labels: selectionLabels(selection),\n option: lastOptionEl,\n }});\n lastOptionEl = null;\n },\n commitSearch: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:search', detail: {search: currentContext().search.query}});\n scheduleVirtualSearch();\n },\n prepareCreate: ({event}) => {\n syncAll();\n dispatch({el: root(), name: 'ui:create', detail: {\n search: currentContext().search.query,\n value: currentContext().creation.value,\n modal: typeof event.modal === 'string' ? event.modal : '',\n }});\n },\n syncProps: ({event}) => propsChanged(event),\n syncOptions: reconcileOptions,\n syncActive: syncAll,\n syncDom: syncAll,\n },\n }),\n });\n\n const sendSelection = (\n type: 'SELECT' | 'DESELECT' | 'SELECT_ALL',\n selection: SelectContext['selection'],\n ): void => bridge.send({type, selection});\n\n const selectOption = (option: SelectOption, catalog: OptionCatalog, event?: Event): void => {\n event?.preventDefault();\n const props = currentProps();\n if (props.disabled || props.readonly || option.disabled) return;\n if (option.create) {\n bridge.send({\n type: 'CREATE',\n value: option.value || currentContext().search.query,\n modal: option.el.dataset.modal ?? '',\n });\n return;\n }\n\n lastOptionEl = option.el;\n inputSearching = false;\n const currentValues = selectionValues();\n const values = props.multiple\n ? currentValues.includes(option.value)\n ? currentValues.filter((value) => value !== option.value)\n : [...currentValues, option.value]\n : [option.value];\n sendSelection('SELECT', selectionForValues(values, catalog));\n };\n\n const setActive = (value: string): void => withOptionCatalog((catalog) => {\n if (value === currentContext().navigation.activeValue) return;\n bridge.send({type: 'ACTIVE', value});\n const option = optionProjection(catalog).firstByValue.get(value);\n dispatch({el: root(), name: 'ui:highlight', detail: {value, option: option?.el ?? null}});\n });\n\n const moveActive = (delta: 1 | -1): void => withOptionCatalog((catalog) => {\n const records = optionProjection(catalog).enabled;\n if (records.length === 0) return;\n const current = records.findIndex((option) => option.value === currentContext().navigation.activeValue);\n let index = current < 0 ? delta > 0 ? 0 : records.length - 1 : current + delta;\n if (index >= records.length) index = currentProps().loop ? 0 : records.length - 1;\n if (index < 0) index = currentProps().loop ? records.length - 1 : 0;\n setActive(records[index]?.value ?? '');\n });\n\n const setSearch = (query: string): void => withOptionCatalog((catalog) => {\n const props = currentProps();\n if (props.disabled || props.readonly) return;\n inputSearching = true;\n const first = props.autoHighlight ? optionProjection(catalog, query).enabled[0]?.value ?? '' : '';\n bridge.send({type: 'SEARCH', query, optionsId, activeValue: first});\n });\n\n const handleKeydown = (event: KeyboardEvent): void => withOptionCatalog((catalog) => {\n if (event.key === 'Tab' && popover?.presentation() !== 'anchored') {\n trapFocus(event, popoverEl());\n return;\n }\n const textInput = event.target instanceof HTMLInputElement;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n moveActive(event.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n if (!textInput && isExpanded() && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const records = optionProjection(catalog).enabled;\n setActive(event.key === 'Home' ? records[0]?.value ?? '' : records.at(-1)?.value ?? '');\n return;\n }\n if (isExpanded() && (event.key === 'Enter' || (!textInput && event.key === ' '))) {\n const option = optionProjection(catalog).firstByValue.get(currentContext().navigation.activeValue);\n if (option) selectOption(option, catalog, event);\n return;\n }\n if ((event.key === 'Backspace' || event.key === 'Delete') && isPillbox() && !currentContext().search.query) {\n const inputEl = input();\n if (inputEl && (inputEl.selectionStart !== 0 || inputEl.selectionEnd !== 0)) return;\n const unfiltered = catalog.project('', currentContext().selection);\n const value = [...selectionValues()].reverse().find((candidate) => (\n !unfiltered.firstByValue.get(candidate)?.disabled\n ));\n if (value) {\n event.preventDefault();\n component.deselect(value, event);\n }\n return;\n }\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n bridge.send({type: 'CLOSE', restoreFocus: true});\n return;\n }\n if (!textInput && !fixedSearchAvailable(catalog) && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n typeahead += event.key.toLowerCase();\n window.clearTimeout(typeaheadTimer);\n typeaheadTimer = window.setTimeout(() => { typeahead = ''; }, 500);\n const match = optionProjection(catalog).enabled.find((option) => normalizeOptionText(option.label).startsWith(typeahead));\n if (match) setActive(match.value);\n }\n });\n\n const setup = (): void => {\n const el = root();\n const activateControl = (event: Event, target: Element): boolean => {\n if (!target.closest('[data-ui-select-trigger], [data-ui-select-icon=\"trailing\"], [data-ui-select-control]')) {\n return false;\n }\n event.preventDefault();\n if (event instanceof PointerEvent || (event instanceof MouseEvent && event.detail > 0)) {\n focusElement(trigger(), {showIndicator: false});\n } else focusElement(trigger());\n if (trigger() instanceof HTMLInputElement) {\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n } else component.toggle(event);\n return true;\n };\n\n addListener({target: el, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-select-sheet-close]')) {\n component.close(event);\n return;\n }\n const searchClear = target.closest('[data-ui-select-search-clear]');\n if (searchClear) {\n event.preventDefault();\n setSearch('');\n return;\n }\n const clear = target.closest('[data-ui-select-clear], [data-ui-select-button-clear]');\n if (clear) {\n component.clear(event);\n return;\n }\n const chipRemove = target.closest<HTMLElement>('[data-ui-select-chip-remove]');\n if (chipRemove) {\n component.deselect(chipRemove.dataset.value ?? '', event);\n return;\n }\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (optionEl) {\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option) selectOption(option, catalog, event);\n });\n return;\n }\n if (!(event instanceof MouseEvent) || event.detail === 0) activateControl(event, target);\n }});\n addListener({target: el, event: 'input', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) return;\n if (target.matches('[data-ui-select-input], [data-ui-select-search-input]')) setSearch(target.value);\n }});\n addListener({target: el, event: 'keydown', cleanup, handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }});\n addListener({target: el, event: 'pointerdown', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (\n target.closest(optionSelector)\n || target.closest('[data-ui-select-search-clear]')\n || target.closest('[data-ui-select-clear], [data-ui-select-button-clear], [data-ui-select-chip-remove]')\n ) {\n event.preventDefault();\n return;\n }\n activateControl(event, target);\n }});\n addListener({target: el, event: 'pointerover', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (!optionEl) return;\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option && option.visible && !option.disabled) setActive(option.value);\n });\n }});\n addListener({target: el, event: 'focusout', cleanup, handler: (event) => {\n if (!(event instanceof FocusEvent)) return;\n const next = event.relatedTarget;\n if (next instanceof Node && el.contains(next)) return;\n if (isVisible()) bridge.send({type: 'CLOSE'});\n }});\n addListener({target: el, event: 'ui:virtualizer-total-change', cleanup, handler: (event) => {\n if (!(event instanceof CustomEvent) || !virtualizerEl()?.contains(event.target as Node)) return;\n const total = Number(event.detail?.totalItems);\n if (Number.isFinite(total) && total >= 0) {\n virtualTotal = Math.floor(total);\n virtualSearchPopulation = Math.max(virtualSearchPopulation, virtualTotal);\n }\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: el, event: 'ui:virtualizer-load', cleanup, handler: (event) => {\n if (!virtualizerEl()?.contains(event.target as Node)) return;\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: popoverEl(), event: 'toggle', cleanup, handler: (event) => {\n if (!('newState' in event) || event.newState !== 'closed' || !isVisible()) return;\n bridge.send({type: 'CLOSE'});\n }});\n cleanup.add(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), popoverEl()],\n onDismiss: () => bridge.send({type: 'CLOSE'}),\n }));\n\n const observeSelectedTemplates = (): void => {\n disconnectSelectedTemplateObservers?.();\n const observers = Array.from(root().querySelectorAll<HTMLTemplateElement>(selectedTemplateSelector))\n .map((template) => {\n const observer = new MutationObserver(() => {\n optionRevision += 1;\n bridge.send({type: 'OPTIONS_CHANGED'});\n });\n observer.observe(template.content, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return observer;\n });\n disconnectSelectedTemplateObservers = () => observers.forEach((observer) => observer.disconnect());\n };\n\n disconnectObserver = observeSemanticChanges({\n targets: listbox(),\n read: optionDomSignature,\n onChange: () => {\n optionRevision += 1;\n observeSelectedTemplates();\n bridge.send({type: 'OPTIONS_CHANGED'});\n },\n observer: {\n attributes: true,\n attributeFilter: [\n 'data-disabled',\n 'data-item',\n 'data-label',\n 'data-selected',\n 'data-selected-label',\n 'data-text-value',\n 'data-ui-select-option-selected-template',\n 'data-value',\n ],\n characterData: true,\n childList: true,\n subtree: true,\n },\n });\n observeSelectedTemplates();\n };\n\n let component!: TrellisAlpineComponent<SelectData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n get isSearching(): boolean {\n return this.snapshot.current?.tags.includes('searching') ?? false;\n },\n get value(): string {\n return this.snapshot.current?.context.selection[0]?.value ?? '';\n },\n get values(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({value}) => value) ?? [];\n },\n get selectedLabels(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({label}) => label) ?? [];\n },\n get search(): string {\n return this.snapshot.current?.context.search.query ?? '';\n },\n get activeValue(): string {\n return this.snapshot.current?.context.navigation.activeValue ?? '';\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n buttonId = this.$id('select-button');\n inputId = this.$id('select-input');\n listboxId = this.$id('select-listbox');\n optionsId = optionsEl().id || root().dataset.optionsId || this.$id('select-options');\n optionsEl().id = optionsId;\n bridge.connect(this.$el, this.snapshot);\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n sheetTitle().id ||= `${listboxId}-title`;\n popover = createSelectSurface({\n reference: control,\n floating: popoverEl,\n labelId: () => sheetTitle().id,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: true,\n });\n setup();\n syncAll();\n queueMicrotask(syncVirtualizerUrl);\n reflectControlledState = true;\n if (currentProps().open && !currentProps().disabled && !currentProps().readonly) {\n queueMicrotask(() => bridge.send({type: 'OPEN'}));\n }\n },\n destroy(): void {\n window.clearTimeout(typeaheadTimer);\n window.clearTimeout(virtualSearchTimer);\n disconnectObserver?.();\n disconnectObserver = null;\n disconnectSelectedTemplateObservers?.();\n disconnectSelectedTemplateObservers = null;\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: selectStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-select': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'OPEN'});\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus: event instanceof KeyboardEvent});\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'TOGGLE'});\n },\n select(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option && !option.create) selectOption(option, catalog, event);\n });\n },\n deselect(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option?.disabled) return;\n sendSelection('DESELECT', selectionForValues(\n selectionValues().filter((candidate) => candidate !== value),\n catalog,\n ));\n });\n },\n selectAll(event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (!currentProps().multiple || currentProps().disabled || currentProps().readonly) return;\n const records = optionProjection(catalog).enabled;\n sendSelection('SELECT_ALL', records.map((option) => ({\n value: option.value,\n label: option.selectedLabel,\n })));\n });\n },\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (currentProps().disabled || currentProps().readonly) return;\n inputSearching = false;\n const resetRemoteSearch = currentContext().search.query !== '';\n bridge.send({type: 'CLEAR'});\n if (resetRemoteSearch) scheduleVirtualSearch();\n },\n setSearch,\n };\n\n return component;\n};\n\nconst registerSelect = defineAlpineData('UiSelect', UiSelect);\n\nexport {registerSelect, UiSelect};\nexport type {SelectData, SelectTransition, UiSelectApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerSelect as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSelect = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSelect};\nexport default registerSelect;\nexport * from './index';\n"],"mappings":"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"}
1
+ {"version":3,"file":"entry.generated-18lXAVBg.js","names":[],"sources":["../../../../../../../../client/src/runtime/option-data.ts","../../../../../../../../client/src/components/badge/contract.ts","../../../../../../../../client/src/components/select/contract.ts","../../../../../../../../client/src/components/select/machine.ts","../../../../../../../../client/src/components/select/presentation.ts","../../../../../../../../client/src/components/select/styles.ts","../../../../../../../../client/src/components/select/index.ts","../../../../../../../../client/src/components/select/entry.generated.ts"],"sourcesContent":["const normalizeOptionText = (value: string): string => value.trim().toLowerCase();\n\nconst splitControlValues = (value: string): string[] => value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n\nconst parseItemData = (raw: string | undefined): unknown => {\n if (!raw) return undefined;\n\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n};\n\nconst getPathValue = (item: unknown, path: string): unknown => {\n if (!path || item === null || item === undefined) return undefined;\n\n return path.split('.').reduce<unknown>((value, key) => {\n if (value === null || value === undefined || typeof value !== 'object') return undefined;\n return (value as Record<string, unknown>)[key];\n }, item);\n};\n\nexport {getPathValue, normalizeOptionText, parseItemData, splitControlValues};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n BUTTON_TYPES,\n COMPONENT_RADII,\n CONTROL_SIZES,\n ICON_VARIANTS,\n type CommonButtonType,\n type ComponentRadius,\n type ControlSize,\n type IconVariant,\n} from '../common';\n\nconst BADGE_VARIANTS = ['soft', 'surface', 'outline', 'solid'] as const;\nconst BADGE_COLORS = ['neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst BADGE_SIZES = CONTROL_SIZES;\nconst BADGE_AS_VALUES = ['span', 'button'] as const;\nconst BADGE_TYPES = BUTTON_TYPES;\nconst BADGE_ICON_VARIANTS = ICON_VARIANTS;\nconst BADGE_RADII = COMPONENT_RADII;\n\nconst badgeSchema = {\n variant: oneOf(BADGE_VARIANTS, 'soft'),\n color: oneOf(BADGE_COLORS, 'neutral'),\n size: oneOf(BADGE_SIZES, 'sm'),\n radius: oneOf(BADGE_RADII, 'sm'),\n href: string,\n as: oneOf(BADGE_AS_VALUES, 'span'),\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n inset: string,\n class: string,\n};\n\nconst badgeCloseSchema = {\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string.default('close'),\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n size: oneOf(BADGE_SIZES, 'sm'),\n label: string.default('Remove'),\n class: string,\n};\n\ntype BadgeVariant = typeof BADGE_VARIANTS[number];\ntype BadgeColor = typeof BADGE_COLORS[number];\ntype BadgeSize = ControlSize;\ntype BadgeRadius = ComponentRadius;\ntype BadgeAs = typeof BADGE_AS_VALUES[number];\ntype BadgeType = CommonButtonType;\ntype BadgeIconVariant = IconVariant;\ntype BadgeProps = SchemaToProps<typeof badgeSchema>;\ntype BadgeCloseProps = SchemaToProps<typeof badgeCloseSchema>;\n\nexport {\n BADGE_AS_VALUES,\n BADGE_COLORS,\n BADGE_ICON_VARIANTS,\n BADGE_RADII,\n BADGE_SIZES,\n BADGE_TYPES,\n BADGE_VARIANTS,\n badgeCloseSchema,\n badgeSchema,\n};\nexport type {\n BadgeAs,\n BadgeCloseProps,\n BadgeColor,\n BadgeIconVariant,\n BadgeProps,\n BadgeRadius,\n BadgeSize,\n BadgeType,\n BadgeVariant,\n};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n ICON_VARIANTS,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type ElevationReference,\n type IconVariant,\n type Position,\n type SurfaceReference,\n} from '../common';\nimport {\n BADGE_COLORS,\n BADGE_VARIANTS,\n type BadgeColor,\n type BadgeVariant,\n} from '../badge/contract';\n\nconst SELECT_MODES = ['listbox', 'combobox', 'pillbox', 'native'] as const;\nconst SELECT_VARIANTS = CONTROL_VARIANTS;\nconst SELECT_SIZES = CONTROL_SIZES;\nconst SELECT_RADII = COMPONENT_RADII;\nconst SELECT_SIDES = POSITIONS;\nconst SELECT_ALIGNS = ALIGNMENTS;\nconst SELECT_ICON_VARIANTS = ICON_VARIANTS;\nconst SELECT_CLEARS = ['stay', 'close'] as const;\nconst SELECT_MARKS = ['check', 'checkbox', 'none'] as const;\nconst SELECT_SURFACES = SURFACE_REFERENCES;\nconst SELECT_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype SelectMode = typeof SELECT_MODES[number];\ntype SelectVariant = ControlVariant;\ntype SelectSize = ControlSize;\ntype SelectRadius = ComponentRadius;\ntype SelectSide = Position;\ntype SelectAlign = Alignment;\ntype SelectIconVariant = IconVariant;\ntype SelectClear = typeof SELECT_CLEARS[number];\ntype SelectMark = typeof SELECT_MARKS[number];\ntype SelectSurface = SurfaceReference;\ntype SelectElevation = ElevationReference;\ntype SelectChipVariant = BadgeVariant;\ntype SelectChipColor = BadgeColor;\n\nconst selectSchema = {\n name: string,\n optionsId: string,\n value: string,\n values: json.array<string>([]),\n placeholder: string,\n mode: oneOf(SELECT_MODES, 'listbox' as SelectMode),\n multiple: bool,\n searchable: bool,\n searchMinItems: number.min(0).default(5),\n virtualized: bool,\n optionsFetchUrl: string,\n optionsTotalItems: number.min(0).default(0),\n optionItemSize: number.min(Number.EPSILON).default(36),\n optionBufferSize: number.min(1).default(50),\n optionOverscan: number.min(0).default(0),\n optionSearchParam: string.default('q'),\n optionSearchDebounce: number.min(0).default(150),\n selectedLabelMap: json.object<Record<string, string>>({}),\n creatable: bool,\n filter: bool.default(true),\n clearable: bool,\n clear: oneOf(SELECT_CLEARS, 'stay' as SelectClear),\n suffix: string.default('selected'),\n mark: oneOf(SELECT_MARKS, 'check' as SelectMark),\n open: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n autoHighlight: bool.default(true),\n loop: bool.default(true),\n path: string,\n size: oneOf(SELECT_SIZES, 'lg' as SelectSize),\n variant: oneOf(SELECT_VARIANTS, 'outline' as SelectVariant),\n radius: oneOf(SELECT_RADII, 'md' as SelectRadius),\n surface: oneOf(SELECT_SURFACES, '+2' as SelectSurface),\n elevation: oneOf(SELECT_ELEVATIONS, '3' as SelectElevation),\n side: oneOf(SELECT_SIDES, 'bottom' as SelectSide),\n align: oneOf(SELECT_ALIGNS, 'start' as SelectAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n empty: string.default('No results found.'),\n icon: string,\n iconTrailing: string.default('chevron__down'),\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n buttonClass: string,\n inputClass: string,\n listboxClass: string,\n optionClass: string,\n chipVariant: oneOf(BADGE_VARIANTS, 'soft' as SelectChipVariant),\n chipColor: oneOf(BADGE_COLORS, 'neutral' as SelectChipColor),\n chipClass: string,\n class: string,\n};\n\nconst selectOptionSchema = {\n value: string,\n label: string,\n selectedLabel: string,\n textValue: string,\n disabled: bool,\n selected: bool,\n item: string,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n suffix: string,\n class: string,\n};\n\nconst selectCreateOptionSchema = {\n minLength: number.clamp(0, 100).default(0),\n modal: string,\n disabled: bool,\n value: string,\n class: string,\n};\n\ntype SelectProps = SchemaToProps<typeof selectSchema>;\ntype SelectOptionProps = SchemaToProps<typeof selectOptionSchema>;\ntype SelectCreateOptionProps = SchemaToProps<typeof selectCreateOptionSchema>;\n\nexport {\n SELECT_ALIGNS,\n SELECT_CLEARS,\n SELECT_ELEVATIONS,\n BADGE_COLORS as SELECT_CHIP_COLORS,\n BADGE_VARIANTS as SELECT_CHIP_VARIANTS,\n SELECT_ICON_VARIANTS,\n SELECT_MARKS,\n SELECT_MODES,\n SELECT_RADII,\n SELECT_SIDES,\n SELECT_SIZES,\n SELECT_SURFACES,\n SELECT_VARIANTS,\n selectCreateOptionSchema,\n selectOptionSchema,\n selectSchema,\n};\nexport type {\n SelectAlign,\n SelectClear,\n SelectChipColor,\n SelectChipVariant,\n SelectCreateOptionProps,\n SelectElevation,\n SelectIconVariant,\n SelectMark,\n SelectOptionProps,\n SelectSide,\n SelectProps,\n SelectRadius,\n SelectSize,\n SelectSurface,\n SelectMode,\n SelectVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SelectProps} from './contract';\n\ntype SelectedOption = {\n value: string;\n label: string;\n};\n\ntype SelectContext = {\n selection: SelectedOption[];\n search: {query: string; optionsId: string};\n navigation: {activeValue: string};\n creation: {value: string};\n};\n\ntype SelectMachineEffects = {\n prepareOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n finishOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareClose(scope: MachineScope<SelectContext, SelectProps>): void;\n finishClose(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSelection(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSearch(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareCreate(scope: MachineScope<SelectContext, SelectProps>): void;\n syncProps(scope: MachineScope<SelectContext, SelectProps>): void;\n syncOptions(scope: MachineScope<SelectContext, SelectProps>): void;\n syncActive(scope: MachineScope<SelectContext, SelectProps>): void;\n syncDom(scope: MachineScope<SelectContext, SelectProps>): void;\n};\n\ntype CreateSelectMachineOptions = {\n props: SelectProps;\n context: SelectContext;\n effects: SelectMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'disclosure.closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {\n open: () => ({type: 'OPEN'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'closing'>);\n\nconst searchingHook = defineHook({\n name: 'searching',\n state: 'feature.searching',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n optionsId: snapshot.context.search.optionsId,\n }),\n onDone: 'SEARCHING_DONE',\n onError: 'SEARCHING_ERROR',\n sends: {\n search: (query: string) => ({type: 'SEARCH', query}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; optionsId: string},\n 'searching'\n>);\n\nconst creatingHook = defineHook({\n name: 'creating',\n state: 'feature.creating',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n value: snapshot.context.creation.value,\n }),\n onDone: 'CREATING_DONE',\n onError: 'CREATING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; value: string},\n 'creating'\n>);\n\nconst selectHooks = [openingHook, closingHook, searchingHook, creatingHook] as const;\n\nconst nextProps = (event: MachineEventObject): SelectProps | null => propsChangedEvent<SelectProps>(event)?.props ?? null;\nconst blocked = (props: SelectProps): boolean => props.disabled || props.readonly;\n\nconst shouldOpenFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props || blocked(props) || !props.open) return false;\n return propsChanged<SelectProps>(event, 'open', 'disabled', 'readonly');\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props) return false;\n return (propsChanged<SelectProps>(event, 'open') && !props.open)\n || (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly);\n};\n\nconst shouldStopFeatureFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly)\n || (propsChanged<SelectProps>(event, 'searchable') && !props.searchable)\n ));\n};\n\nconst nextSelection = (event: MachineEventObject): SelectContext['selection'] | null => {\n if (!Array.isArray(event.selection)) return null;\n if (!event.selection.every((option): option is SelectedOption => (\n typeof option === 'object'\n && option !== null\n && typeof option.value === 'string'\n && typeof option.label === 'string'\n ))) return null;\n return event.selection.map(({value, label}) => ({value, label}));\n};\n\nconst createSelectMachine = ({\n props,\n context,\n effects,\n}: CreateSelectMachineOptions): Machine<SelectContext, SelectProps> => createMachine<SelectContext, SelectProps>({\n type: 'parallel',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n disclosure: {\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'single', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n on: {\n SELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n DESELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n SELECT_ALL: {reduce: 'replaceSelection', effects: 'commitSelection'},\n RECONCILE_SELECTION: {reduce: 'replaceSelection', effects: 'syncActive'},\n CLEAR: {reduce: 'clear', effects: 'commitSelection'},\n ACTIVE: {reduce: 'setActive', effects: 'syncActive'},\n OPTIONS_CHANGED: {effects: 'syncOptions'},\n CLOSING_DONE: {reduce: 'resetTransient', effects: 'syncActive'},\n CLOSING_ERROR: {reduce: 'resetTransient', effects: 'syncActive'},\n },\n states: {\n idle: {\n on: {\n CLOSE: {},\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'},\n },\n },\n searching: {\n tags: ['searching'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n SEARCHING_DONE: 'idle',\n SEARCHING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n creating: {\n tags: ['creating'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n CREATING_DONE: {target: 'idle'},\n CREATING_ERROR: {target: 'idle'},\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = nextProps(event);\n return next ? {props: next} : undefined;\n },\n replaceSelection: ({context: current, event}) => {\n const selection = nextSelection(event);\n if (!selection) return undefined;\n return {context: {\n ...current,\n selection,\n }};\n },\n clear: ({context: current}) => ({context: {\n ...current,\n selection: [],\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n }}),\n setSearch: ({context: current, event}) => ({context: {\n ...current,\n search: {\n query: typeof event.query === 'string' ? event.query : '',\n optionsId: typeof event.optionsId === 'string' ? event.optionsId : current.search.optionsId,\n },\n navigation: {\n activeValue: typeof event.activeValue === 'string'\n ? event.activeValue\n : current.navigation.activeValue,\n },\n }}),\n setActive: ({context: current, event}) => ({context: {\n ...current,\n navigation: {activeValue: typeof event.value === 'string' ? event.value : ''},\n }}),\n setCreation: ({context: current, event}) => ({context: {\n ...current,\n creation: {value: typeof event.value === 'string' ? event.value : current.search.query},\n }}),\n resetTransient: ({context: current}) => ({context: {\n ...current,\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n }}),\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n single: ({props: current}) => !current.multiple,\n clearCloses: ({props: current}) => current.clear === 'close',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n commitSelection: effects.commitSelection,\n commitSearch: effects.commitSearch,\n prepareCreate: effects.prepareCreate,\n syncProps: effects.syncProps,\n syncOptions: effects.syncOptions,\n syncActive: effects.syncActive,\n syncDom: effects.syncDom,\n },\n});\n\nexport {createSelectMachine, selectHooks};\nexport type {\n CreateSelectMachineOptions,\n SelectedOption,\n SelectContext,\n SelectMachineEffects,\n};\n","import {\n createAnchoredPopover,\n type AnchoredPopoverOptions,\n} from '@client/runtime/anchored-popover';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\n\ntype SelectPresentation = 'anchored' | 'dialog' | 'fullscreen';\n\ntype SelectPresentationMetrics = {\n viewportWidth: number;\n viewportHeight: number;\n layoutViewportHeight: number;\n referenceTop: number;\n referenceBottom: number;\n touch: boolean;\n};\n\ntype SelectSurfaceOptions = AnchoredPopoverOptions & {\n labelId: () => string;\n};\n\ntype SelectSurface = {\n opened(): boolean;\n open(): void;\n close(): void;\n sync(): void;\n destroy(): void;\n presentation(): SelectPresentation;\n};\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\nconst PHONE_MAX_WIDTH = 640;\nconst MIN_ANCHORED_RESULTS_HEIGHT = 256;\nconst TABLET_KEYBOARD_HEIGHT = 520;\nconst KEYBOARD_VIEWPORT_RATIO = 0.72;\nconst FULLSCREEN_DIALOG_MARGIN = 12;\nconst DIALOG_MARGIN = 16;\nconst DIALOG_MAX_WIDTH = 720;\nconst DIALOG_MAX_HEIGHT = 720;\n\nconst resolveSelectPresentation = ({\n viewportWidth,\n viewportHeight,\n layoutViewportHeight,\n referenceTop,\n referenceBottom,\n touch,\n}: SelectPresentationMetrics): SelectPresentation => {\n if (viewportWidth <= PHONE_MAX_WIDTH) return 'fullscreen';\n\n const keyboardConstrained = viewportHeight < TABLET_KEYBOARD_HEIGHT\n || viewportHeight < layoutViewportHeight * KEYBOARD_VIEWPORT_RATIO;\n if (touch && keyboardConstrained) return 'fullscreen';\n if (touch) return 'dialog';\n\n const spaceAbove = Math.max(0, referenceTop);\n const spaceBelow = Math.max(0, viewportHeight - referenceBottom);\n return Math.max(spaceAbove, spaceBelow) < MIN_ANCHORED_RESULTS_HEIGHT ? 'dialog' : 'anchored';\n};\n\nconst viewportMetrics = (): {\n width: number;\n height: number;\n offsetTop: number;\n offsetLeft: number;\n} => {\n const viewport = window.visualViewport;\n return viewport\n ? {\n width: viewport.width,\n height: viewport.height,\n offsetTop: viewport.offsetTop,\n offsetLeft: viewport.offsetLeft,\n }\n : {width: window.innerWidth, height: window.innerHeight, offsetTop: 0, offsetLeft: 0};\n};\n\nconst hasTouchPointer = (): boolean => (\n window.matchMedia?.('(any-pointer: coarse)').matches === true\n || navigator.maxTouchPoints > 0\n);\n\nconst createSelectSurface = (options: SelectSurfaceOptions): SelectSurface => {\n const anchored = createAnchoredPopover(options);\n let open = false;\n let currentPresentation: SelectPresentation = 'anchored';\n let releaseScrollLock: (() => void) | null = null;\n let stopViewportListeners: (() => void) | null = null;\n\n const surface = (): PopoverElement => options.floating() as PopoverElement;\n\n const setScrollLock = (locked: boolean): void => {\n if (locked) releaseScrollLock ??= acquireDocumentScrollLock(surface().ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\n };\n\n const clearModalGeometry = (element: HTMLElement): void => {\n element.style.removeProperty('border-radius');\n element.style.removeProperty('height');\n element.style.removeProperty('inset');\n element.style.removeProperty('max-height');\n element.style.removeProperty('max-width');\n element.style.removeProperty('position');\n element.style.removeProperty('transform-origin');\n element.style.removeProperty('width');\n };\n\n const applyDialogGeometry = (\n element: HTMLElement,\n presentation: Exclude<SelectPresentation, 'anchored'>,\n ): void => {\n const viewport = viewportMetrics();\n const margin = presentation === 'dialog'\n ? DIALOG_MARGIN\n : FULLSCREEN_DIALOG_MARGIN;\n const maxWidth = presentation === 'dialog' ? DIALOG_MAX_WIDTH : Number.POSITIVE_INFINITY;\n const maxHeight = presentation === 'dialog' ? DIALOG_MAX_HEIGHT : Number.POSITIVE_INFINITY;\n const width = Math.min(maxWidth, Math.max(0, viewport.width - margin * 2));\n const height = Math.min(maxHeight, Math.max(0, viewport.height - margin * 2));\n const left = viewport.offsetLeft + (viewport.width - width) / 2;\n const top = viewport.offsetTop + (viewport.height - height) / 2;\n\n Object.assign(element.style, {\n borderRadius: 'var(--radius-overlay-md)',\n position: 'fixed',\n inset: `${top}px auto auto ${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n maxWidth: 'none',\n maxHeight: 'none',\n transformOrigin: 'center',\n });\n };\n\n const resolveCurrentPresentation = (): SelectPresentation => {\n const viewport = viewportMetrics();\n const reference = options.reference().getBoundingClientRect();\n return resolveSelectPresentation({\n viewportWidth: viewport.width,\n viewportHeight: viewport.height,\n layoutViewportHeight: window.innerHeight,\n referenceTop: reference.top - viewport.offsetTop,\n referenceBottom: reference.bottom - viewport.offsetTop,\n touch: hasTouchPointer(),\n });\n };\n\n const applyPresentation = (): void => {\n if (!open) return;\n const element = surface();\n const next = resolveCurrentPresentation();\n currentPresentation = next;\n element.dataset.presentation = next;\n const heading = element.querySelector<HTMLElement>('[data-ui-select-sheet-heading]');\n if (heading) heading.style.display = next === 'anchored' ? 'none' : 'flex';\n\n if (next === 'anchored') {\n element.removeAttribute('aria-modal');\n element.removeAttribute('aria-labelledby');\n element.removeAttribute('role');\n setScrollLock(false);\n clearModalGeometry(element);\n anchored.mount();\n return;\n }\n\n anchored.unmount();\n element.setAttribute('role', 'dialog');\n element.setAttribute('aria-modal', 'true');\n element.setAttribute('aria-labelledby', options.labelId());\n setScrollLock(true);\n applyDialogGeometry(element, next);\n };\n\n const listenToViewport = (): (() => void) => {\n const update = (): void => applyPresentation();\n const viewport = window.visualViewport;\n const pointer = window.matchMedia?.('(any-pointer: coarse)');\n window.addEventListener('resize', update);\n window.addEventListener('orientationchange', update);\n viewport?.addEventListener('resize', update);\n viewport?.addEventListener('scroll', update);\n pointer?.addEventListener('change', update);\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('orientationchange', update);\n viewport?.removeEventListener('resize', update);\n viewport?.removeEventListener('scroll', update);\n pointer?.removeEventListener('change', update);\n };\n };\n\n const show = (): void => {\n if (open) return;\n open = true;\n try {\n surface().showPopover();\n } catch {\n // Reversal may find the native surface already in the top layer.\n }\n applyPresentation();\n stopViewportListeners = listenToViewport();\n };\n\n const hide = (): void => {\n if (!open) return;\n open = false;\n stopViewportListeners?.();\n stopViewportListeners = null;\n anchored.unmount();\n setScrollLock(false);\n try {\n surface().hidePopover();\n } catch {\n // Native teardown may already have removed the surface from the top layer.\n }\n };\n\n return {\n opened: () => open,\n open: show,\n close: hide,\n sync: applyPresentation,\n destroy: hide,\n presentation: () => currentPresentation,\n };\n};\n\nexport {createSelectSurface, resolveSelectPresentation};\nexport type {SelectPresentation, SelectPresentationMetrics, SelectSurface};\n","import {defineStyles} from '../../runtime';\nimport {\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_RADIUS_CLASSES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n OPTION_ICON_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n OPTION_META_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst selectStyles = defineStyles({definition: {\n component: 'ui.select',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n control: {\n base: FIELD_CONTROL_ROOT_CLASSES,\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n variant: {\n outline: '',\n filled: '',\n plain: '',\n },\n mode: {\n listbox: '',\n combobox: '',\n pillbox: 'flex-wrap gap-1 py-0.5',\n native: '',\n },\n empty: {\n true: '',\n false: '',\n },\n },\n compounds: [\n {when: {mode: 'pillbox', empty: false}, class: '!pl-1.5'},\n ],\n defaults: {\n size: 'lg',\n variant: 'outline',\n radius: 'md',\n mode: 'listbox',\n empty: false,\n },\n },\n button: {\n base: [\n 'flex min-w-0 flex-1 items-center gap-2 border-0 bg-transparent p-0 text-left text-inherit outline-none',\n ],\n },\n pillboxTrigger: {\n base: 'min-w-16 self-stretch',\n },\n value: {\n base: 'min-w-0 flex-1 truncate',\n },\n placeholder: {\n base: 'min-w-0 flex-1 truncate text-surface-ink-muted',\n },\n input: {\n base: [\n 'w-full min-w-16 flex-1',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n search: {\n base: [\n 'flex min-h-control-xlg shrink-0 items-center gap-2 px-3',\n 'text-sm',\n ],\n },\n searchInput: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n sheetHeader: {\n base: '',\n },\n sheetHeading: {\n base: 'min-w-0 items-center gap-3 px-4 pt-4',\n },\n sheetTitle: {\n base: 'min-w-0 flex-1 truncate text-base font-medium',\n },\n sheetClose: {\n base: [\n 'inline-flex size-control-md shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent',\n 'text-surface-ink-muted outline-none focus-visible:ui-focus-ring',\n ],\n },\n chips: {\n base: 'flex min-w-0 flex-wrap items-center gap-1',\n },\n chip: {\n base: [\n 'max-w-64',\n ],\n },\n chipLabel: {\n base: 'flex min-w-0 flex-1 items-center',\n },\n chipPlainLabel: {\n base: 'block min-w-0 flex-1 truncate',\n },\n chipRemove: {\n base: '',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-surface-ink-muted',\n variants: {\n position: {\n leading: '',\n trailing: '',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'overflow-hidden rounded-overlay-sm',\n ],\n },\n listbox: {\n base: 'min-h-0 min-w-0 max-w-full overflow-hidden outline-none',\n },\n viewport: {\n base: 'min-h-0 min-w-0 max-w-full',\n },\n options: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 p-popover-padding',\n },\n virtualOptions: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 px-popover-padding',\n },\n create: {\n base: 'shrink-0 p-popover-padding',\n },\n option: {\n base: [\n OPTION_ITEM_CLASSES,\n 'min-w-0 max-w-full overflow-hidden',\n '[&:has([data-ui-select-option-label]>*+*)]:h-auto',\n '[&:has([data-ui-select-option-label]>*+*)]:items-start',\n '[&:has([data-ui-select-option-label]>*+*)]:py-2',\n ],\n },\n optionLabel: {\n base: 'min-w-0 flex-1 truncate',\n },\n optionMeta: {\n base: OPTION_META_CLASSES,\n },\n optionIcon: {\n base: OPTION_ICON_CLASSES,\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n optionIndicator: {\n base: OPTION_INDICATOR_CLASSES,\n },\n group: {\n base: 'grid auto-rows-min content-start gap-1',\n },\n label: {\n base: 'px-menu-item-padding-inline py-1',\n },\n empty: {\n base: 'px-menu-item-padding-inline py-2 text-sm text-surface-ink-muted',\n },\n separatorRoot: {\n base: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n separatorRule: {\n base: 'h-[var(--border-width-edge-separator)] w-full border-0',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n 'appearance-none pe-10',\n ],\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n size: 'lg',\n radius: 'md',\n },\n },\n nativeIcon: {\n base: 'pointer-events-none absolute right-3 top-1/2 size-icon -translate-y-1/2 fill-current text-icon',\n },\n },\n}});\n\nexport {selectStyles};\n","import type Alpine from 'alpinejs';\n\nimport {badgeStyles} from '@client/components/badge/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {trapFocus} from '@client/runtime/focus-scope';\nimport {focusElement} from '@client/runtime/focus';\nimport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n} from '@client/runtime/form-control';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {declareMorphAttributes} from '@client/runtime/morph';\nimport {getPathValue, normalizeOptionText, parseItemData} from '@client/runtime/option-data';\nimport {observeSemanticChanges} from '@client/runtime/semantic-observer';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, setPresence} from '@client/utils';\nimport {selectSchema, type SelectProps} from './contract';\nimport {\n createSelectMachine,\n type SelectContext,\n type SelectedOption,\n selectHooks,\n} from './machine';\nimport {createSelectSurface, type SelectSurface} from './presentation';\nimport {selectStyles} from './styles';\n\ntype SelectTransitionName = (typeof selectHooks)[number]['name'];\ntype SelectTransition<TName extends SelectTransitionName = SelectTransitionName> = TransitionForHook<\n Extract<(typeof selectHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype SelectOption = {\n el: HTMLElement;\n id: string;\n value: string;\n label: string;\n selectedLabel: string;\n disabled: boolean;\n selected: boolean;\n visible: boolean;\n create: boolean;\n};\n\ntype CatalogOption = Omit<SelectOption, 'selected' | 'visible'> & {\n minLength: number;\n suffix: string;\n};\n\ntype OptionProjection = {\n options: SelectOption[];\n enabled: SelectOption[];\n firstByValue: ReadonlyMap<string, SelectOption>;\n byElement: ReadonlyMap<HTMLElement, SelectOption>;\n};\n\nclass OptionCatalog {\n readonly ordinaryCount: number;\n\n private readonly filter: boolean;\n private readonly records: CatalogOption[];\n private readonly projections = new Map<string, OptionProjection>();\n\n constructor({\n root,\n listboxId,\n props,\n resolveLabel,\n rememberLabel,\n }: {\n root: HTMLElement;\n listboxId: string;\n props: Readonly<SelectProps>;\n resolveLabel(el: HTMLElement, props: Readonly<SelectProps>): string;\n rememberLabel(value: string, label: string): void;\n }) {\n this.filter = props.filter;\n this.records = Array.from(root.querySelectorAll<HTMLElement>(optionSelector)).map((el, index) => {\n const label = resolveLabel(el, props);\n const value = el.dataset.value || label;\n const create = el.hasAttribute('data-ui-select-option-create');\n const record = {\n el,\n id: el.id || `${listboxId}-option-${index}`,\n value,\n label,\n selectedLabel: el.dataset.selectedLabel || label,\n disabled: asBool({value: el.dataset.disabled}),\n create,\n minLength: Number(el.dataset.minLength ?? '0'),\n suffix: el.dataset.suffix ?? '',\n };\n return record;\n });\n const remembered = new Set<string>();\n this.records.forEach((option) => {\n if (option.create || remembered.has(option.value)) return;\n remembered.add(option.value);\n rememberLabel(option.value, option.selectedLabel);\n });\n this.ordinaryCount = this.records.filter((option) => !option.create).length;\n }\n\n project(query: string, selection: readonly SelectedOption[]): OptionProjection {\n const selectedValues = selection.map(({value}) => value);\n const key = JSON.stringify([query, selectedValues]);\n const cached = this.projections.get(key);\n if (cached) return cached;\n\n const normalizedQuery = normalizeOptionText(query);\n const exact = normalizedQuery !== '' && this.records.some((option) => (\n !option.create && normalizeOptionText(option.label) === normalizedQuery\n ));\n const options = this.records.map((option) => {\n const matches = !normalizedQuery\n || normalizeOptionText(`${option.label} ${option.suffix}`).includes(normalizedQuery);\n return {\n ...option,\n value: option.create ? option.el.dataset.value || query : option.value,\n selected: selectedValues.includes(option.value),\n visible: option.create\n ? !exact && query.length >= option.minLength\n : !this.filter || normalizedQuery === '' || matches,\n };\n });\n const firstByValue = new Map<string, SelectOption>();\n const byElement = new Map<HTMLElement, SelectOption>();\n options.forEach((option) => {\n if (!firstByValue.has(option.value)) firstByValue.set(option.value, option);\n byElement.set(option.el, option);\n });\n const projection = {\n options,\n enabled: options.filter((option) => option.visible && !option.disabled && !option.create),\n firstByValue,\n byElement,\n };\n this.projections.set(key, projection);\n return projection;\n }\n}\n\ntype NestedVirtualizerApi = {\n setUrl(url: string, options?: {reset?: boolean}): void;\n setTotalItems(count: number): void;\n};\n\ntype NestedVirtualizerElement = HTMLElement & {\n _x_dataStack?: Array<Partial<NestedVirtualizerApi>>;\n};\n\n/**\n * Public Alpine API for `ui.select`.\n *\n * @public\n */\ninterface UiSelectApi {\n /** Whether the select is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Whether a searching transition hook is pending. */\n readonly isSearching: boolean;\n\n /** First selected value, or an empty string. */\n readonly value: string;\n\n /** Selected values in committed order. */\n readonly values: readonly string[];\n\n /** Display labels corresponding to the selected values. */\n readonly selectedLabels: readonly string[];\n\n /** Current search query. */\n readonly search: string;\n\n /** Value of the currently highlighted option. */\n readonly activeValue: string;\n\n /** Opens the listbox unless the select is disabled or readonly. */\n open(event?: Event): void;\n\n /** Closes the listbox. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n\n /** Selects the rendered option with this value. */\n select(value: string, event?: Event): void;\n\n /** Removes a selected value. */\n deselect(value: string, event?: Event): void;\n\n /** Selects every rendered, visible, enabled option in multiple mode. */\n selectAll(event?: Event): void;\n\n /** Clears search, selection, highlight, and submitted values. */\n clear(event?: Event): void;\n\n /** Sets the query and enters the searching feature state. */\n setSearch(query: string): void;\n}\n\ntype SelectData = AlpineMachine<SelectContext, SelectProps, typeof selectHooks> & UiSelectApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst optionSelector = '[data-ui-select-option], [data-ui-select-option-create]';\nconst selectedTemplateSelector = 'template[data-ui-select-option-selected-template]';\n\nconst projectedInteractiveElements = new Set([\n 'A', 'AREA', 'BUTTON', 'DETAILS', 'EMBED', 'IFRAME', 'INPUT', 'OBJECT', 'OPTION', 'SELECT', 'SUMMARY', 'TEXTAREA',\n]);\nconst projectedExecutableElements = new Set(['SCRIPT', 'STYLE']);\nconst projectedInteractionAttributes = new Set([\n 'autofocus',\n 'contenteditable',\n 'controls',\n 'download',\n 'draggable',\n 'form',\n 'formaction',\n 'formenctype',\n 'formmethod',\n 'formnovalidate',\n 'formtarget',\n 'href',\n 'id',\n 'name',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'role',\n 'tabindex',\n 'target',\n]);\n\nconst isProjectedInteractionAttribute = (name: string): boolean => (\n projectedInteractionAttributes.has(name)\n || (name.startsWith('aria-') && name !== 'aria-hidden')\n || name.startsWith('data-ui-select')\n || name === 'data-ui-interactive'\n || name.startsWith('data-ui-action')\n || name.startsWith('data-selected')\n || name.startsWith('data-highlighted')\n || name.startsWith('data-disabled')\n || name.startsWith('x-')\n || name.startsWith('hx-')\n || name.startsWith('v-')\n || name.startsWith('wire:')\n || name.startsWith('@')\n || name.startsWith(':')\n || name.startsWith('on')\n);\n\nconst sanitizeSelectedContent = (node: Node): Node | null => {\n if (!(node instanceof Element)) return node;\n const elementName = node.localName.toUpperCase();\n if (projectedExecutableElements.has(elementName)) return null;\n\n let projected = node;\n if (projectedInteractiveElements.has(elementName) || node.hasAttribute('contenteditable')) {\n projected = document.createElement('span');\n Array.from(node.attributes).forEach((attribute) => {\n if (!isProjectedInteractionAttribute(attribute.name)) {\n projected.setAttribute(attribute.name, attribute.value);\n }\n });\n projected.append(...Array.from(node.childNodes));\n }\n\n Array.from(projected.attributes).forEach((attribute) => {\n if (isProjectedInteractionAttribute(attribute.name)) projected.removeAttribute(attribute.name);\n });\n\n Array.from(projected.childNodes).forEach((child) => {\n const sanitized = sanitizeSelectedContent(child);\n if (!sanitized) child.remove();\n else if (sanitized !== child) child.replaceWith(sanitized);\n });\n projected.setAttribute('x-ignore', 'true');\n return projected;\n};\n\nconst cloneSelectedNodes = (nodes: Iterable<Node>): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n Array.from(nodes).forEach((node) => {\n if (node instanceof HTMLTemplateElement && node.matches(selectedTemplateSelector)) return;\n const clone = node.cloneNode(true);\n const sanitized = sanitizeSelectedContent(clone);\n if (sanitized) fragment.append(sanitized);\n });\n return fragment;\n};\n\nconst sameStrings = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst UiSelect = (): TrellisAlpineComponent<SelectData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let reflectControlledState = false;\n let buttonId = '';\n let inputId = '';\n let listboxId = '';\n let optionsId = '';\n let popover: SelectSurface | null = null;\n let disconnectObserver: (() => void) | null = null;\n let disconnectSelectedTemplateObservers: (() => void) | null = null;\n let cleanup: CleanupManager;\n let hiddenInputsKey = '';\n let chipsKey = '';\n let inputSearching = false;\n let restoreFocusAfterClose = false;\n let lastOptionEl: HTMLElement | null = null;\n let typeahead = '';\n let typeaheadTimer = 0;\n let virtualSearchTimer = 0;\n let virtualTotal = 0;\n let virtualSearchPopulation = 0;\n let synchronizedVirtualizerUrl: string | null = null;\n let activeOptionCatalog: OptionCatalog | null = null;\n let optionRevision = 0;\n const selectedLabelCache = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Select has not been initialized.');\n return rootEl;\n };\n\n const control = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-control]');\n if (!el) throw new Error('Select requires a control element.');\n return el;\n };\n\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-trigger], [data-ui-select-button], [data-ui-select-input]');\n if (!el) throw new Error('Select requires a trigger element.');\n return el;\n };\n\n const input = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-input]');\n const searchInput = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-search-input]');\n const sheetTitle = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-sheet-title]');\n if (!el) throw new Error('Select requires an adaptive picker title.');\n return el;\n };\n\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-popover]');\n if (!el) throw new Error('Select requires a popover element.');\n return el as PopoverElement;\n };\n\n const listbox = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-listbox]');\n if (!el) throw new Error('Select requires a listbox element.');\n return el;\n };\n\n const optionsEl = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-options]');\n if (!el) throw new Error('Select requires an options element.');\n return el;\n };\n\n const virtualizerEl = (): NestedVirtualizerElement | null => (\n root().querySelector<NestedVirtualizerElement>('[data-ui-select-virtualizer]')\n );\n\n const virtualizerApi = (): NestedVirtualizerApi | null => {\n const scope = virtualizerEl()?._x_dataStack?.find((candidate) => (\n typeof candidate.setUrl === 'function' && typeof candidate.setTotalItems === 'function'\n ));\n return scope as NestedVirtualizerApi | undefined ?? null;\n };\n\n const chipsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-chips]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-hidden-inputs]');\n const currentProps = (): Readonly<SelectProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<SelectContext> => bridge.getCommittedSnapshot().context;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const resolveOptionLabel = (el: HTMLElement, props: Readonly<SelectProps>): string => {\n const explicit = el.dataset.label || el.getAttribute('aria-label') || '';\n if (explicit) return explicit;\n if (el.dataset.textValue) return el.dataset.textValue;\n const itemValue = getPathValue(parseItemData(el.dataset.item), props.path);\n if (itemValue !== undefined && itemValue !== null) return String(itemValue);\n const label = el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n return (label?.textContent ?? el.textContent ?? '').trim();\n };\n\n const createOptionCatalog = (props: Readonly<SelectProps> = currentProps()): OptionCatalog => new OptionCatalog({\n root: root(),\n listboxId,\n props,\n resolveLabel: resolveOptionLabel,\n rememberLabel: (value, label) => selectedLabelCache.set(value, label),\n });\n\n const withOptionCatalog = <T>(operation: (catalog: OptionCatalog) => T, props?: Readonly<SelectProps>): T => {\n if (activeOptionCatalog) return operation(activeOptionCatalog);\n activeOptionCatalog = createOptionCatalog(props);\n try {\n return operation(activeOptionCatalog);\n } finally {\n activeOptionCatalog = null;\n }\n };\n\n const selectionValues = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({value}) => value)\n );\n const selectionLabels = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({label}) => label)\n );\n const optionProjection = (\n catalog: OptionCatalog,\n query = currentContext().search.query,\n selection: readonly SelectedOption[] = currentContext().selection,\n ): OptionProjection => catalog.project(query, selection);\n\n const fixedSearchAvailable = (catalog: OptionCatalog): boolean => {\n const props = currentProps();\n if (!searchInput()) return false;\n if (props.mode === 'combobox') return true;\n const mountedOptions = catalog.ordinaryCount;\n const optionCount = props.virtualized\n ? Math.max(mountedOptions, props.optionsTotalItems, virtualSearchPopulation)\n : mountedOptions;\n return optionCount >= props.searchMinItems;\n };\n\n const selectionForValues = (\n values: readonly string[],\n catalog: OptionCatalog,\n props: Readonly<SelectProps> = currentProps(),\n ): SelectContext['selection'] => {\n const unique = Array.from(new Set(values.filter(Boolean)));\n const normalized = props.multiple ? unique : unique.slice(0, 1);\n const projection = catalog.project('', []);\n return normalized.map((value) => ({\n value,\n label: projection.firstByValue.get(value)?.selectedLabel\n ?? selectedLabelCache.get(value)\n ?? (typeof props.selectedLabelMap[value] === 'string' ? props.selectedLabelMap[value] : undefined)\n ?? value,\n }));\n };\n\n const valuesFromProps = (props: Readonly<SelectProps>): string[] => (\n props.multiple\n ? Array.from(new Set([...props.values, ...(props.value ? [props.value] : [])]))\n : props.value ? [props.value] : props.values.slice(0, 1)\n );\n\n const initialContext = (props: SelectProps): SelectContext => {\n return withOptionCatalog((catalog) => {\n const explicit = valuesFromProps(props);\n const selectedFromOptions = catalog.project('', [])\n .options.filter((option) => asBool({value: option.el.dataset.selected}))\n .map((option) => option.value);\n return {\n selection: selectionForValues(explicit.length > 0 ? explicit : selectedFromOptions, catalog, props),\n search: {query: '', optionsId: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n };\n }, props);\n };\n\n const selectedSummary = (): string => {\n const {selection} = currentContext();\n const props = currentProps();\n if (selection.length === 0 || (props.mode === 'pillbox' && props.multiple)) return '';\n if (props.multiple && selection.length > 1) return `${selection.length} ${props.suffix}`;\n return selection[0]?.label ?? selection[0]?.value ?? '';\n };\n\n const explicitSelectedContent = (option: SelectOption): DocumentFragment | null => {\n const template = option.el.querySelector<HTMLTemplateElement>(selectedTemplateSelector);\n return template ? cloneSelectedNodes(template.content.childNodes) : null;\n };\n\n const selectedContent = (option: SelectOption): DocumentFragment => {\n const explicit = explicitSelectedContent(option);\n if (explicit) return explicit;\n const source = option.el.querySelector<HTMLElement>('[data-ui-select-option-selected-content]')\n ?? option.el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n if (source) return cloneSelectedNodes(source.childNodes);\n const fragment = document.createDocumentFragment();\n fragment.append(document.createTextNode(option.selectedLabel));\n return fragment;\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (reflectControlledState) {\n const values = selectionValues();\n if (isExpanded() || !props.open || (!props.disabled && !props.readonly)) {\n reflectSchemaProp({el: root(), schema: selectSchema, key: 'open', value: isExpanded()});\n }\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'value',\n value: props.multiple ? '' : values[0] ?? '',\n });\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'values',\n value: props.multiple ? [...values] : [],\n });\n }\n root().dataset.state = isExpanded() ? 'open' : 'closed';\n root().dataset.mark = props.mark;\n syncControlPresence({el: root(), state: {\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }, value: 'true'});\n };\n\n const isPillbox = (): boolean => currentProps().mode === 'pillbox' && currentProps().multiple;\n\n const syncControl = (): void => {\n const props = currentProps();\n const empty = isPillbox() && currentContext().selection.length === 0;\n const el = control();\n el.className = resolveStyle({\n part: selectStyles.parts.control,\n props: {...props, mode: isPillbox() ? 'pillbox' : props.mode === 'combobox' ? 'combobox' : 'listbox', empty},\n });\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.dataset.mode = isPillbox() ? 'pillbox' : props.mode;\n setPresence({el, attr: 'data-ui-select-pillbox-control', present: isPillbox(), value: ''});\n setPresence({el, attr: 'data-empty', present: empty, value: 'true'});\n syncControlPresence({el, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n };\n\n const syncTrigger = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const el = trigger();\n el.id ||= buttonId;\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n el.setAttribute('aria-controls', listboxId);\n setPresence({el, attr: 'aria-invalid', present: props.invalid, value: 'true'});\n if (el instanceof HTMLButtonElement) el.disabled = props.disabled;\n\n const summary = selectedSummary();\n const valueEl = root().querySelector<HTMLElement>('[data-ui-select-button-value]');\n const placeholder = root().querySelector<HTMLElement>('[data-ui-select-button-placeholder]');\n if (valueEl) {\n valueEl.replaceChildren();\n const selected = currentContext().selection.length === 1 && summary\n ? catalog.project('', currentContext().selection).firstByValue.get(currentContext().selection[0]?.value ?? '')\n : undefined;\n if (selected) valueEl.append(selectedContent(selected));\n else valueEl.textContent = summary;\n valueEl.hidden = summary === '';\n }\n if (placeholder) {\n placeholder.hidden = isPillbox()\n ? currentContext().selection.length > 0\n : summary !== '';\n }\n\n root().querySelectorAll<HTMLElement>('[data-ui-select-clear], [data-ui-select-button-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !props.clearable || currentContext().selection.length === 0;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-select-search-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !currentContext().search.query;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n };\n\n const syncInputs = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n const inputEl = input();\n if (inputEl) {\n inputEl.id ||= inputId;\n inputEl.className = resolveStyle({part: selectStyles.parts.input, className: props.inputClass});\n inputEl.value = isPillbox()\n ? context.search.query\n : isExpanded() && inputSearching ? context.search.query : selectedSummary();\n inputEl.placeholder = isPillbox() && context.selection.length > 0 ? '' : props.placeholder;\n inputEl.setAttribute('role', 'combobox');\n inputEl.setAttribute('autocomplete', 'off');\n inputEl.setAttribute('aria-autocomplete', 'list');\n inputEl.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n inputEl.setAttribute('aria-controls', listboxId);\n syncNativeControl({input: inputEl, state: {\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n nativeRequired: false,\n invalid: props.invalid,\n ariaRequired: props.required,\n }});\n }\n\n const search = searchInput();\n if (search) {\n const searchRow = search.closest<HTMLElement>('[data-ui-select-search]');\n if (searchRow) searchRow.hidden = !fixedSearchAvailable(catalog);\n search.value = context.search.query;\n search.disabled = props.disabled;\n search.readOnly = props.readonly;\n }\n\n const active = optionProjection(catalog).firstByValue.get(context.navigation.activeValue);\n [trigger(), inputEl, search, listbox()].forEach((element) => {\n if (active?.id) element?.setAttribute('aria-activedescendant', active.id);\n else element?.removeAttribute('aria-activedescendant');\n });\n };\n\n const syncListbox = (): void => {\n const props = currentProps();\n const surface = popoverEl();\n const box = listbox();\n surface.id = `${listboxId}-popover`;\n surface.className = resolveStyle({part: selectStyles.parts.popover, props, className: props.listboxClass});\n surface.dataset.uiSurface = props.surface;\n surface.dataset.uiElevation = props.elevation;\n surface.setAttribute('popover', 'manual');\n surface.dataset.state = isExpanded() ? 'open' : 'closed';\n surface.hidden = !isVisible();\n box.id = listboxId;\n box.setAttribute('role', 'listbox');\n box.tabIndex = -1;\n box.setAttribute('aria-labelledby', trigger().id);\n setPresence({el: box, attr: 'aria-multiselectable', present: props.multiple, value: 'true'});\n };\n\n const syncOptions = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n root().querySelectorAll<HTMLElement>('[data-ui-select-create-query]').forEach((query) => {\n query.textContent = context.search.query;\n });\n const records = optionProjection(catalog).options;\n records.forEach((option) => {\n option.el.id = option.id;\n option.el.hidden = !option.visible;\n option.el.setAttribute('role', 'option');\n option.el.setAttribute('aria-selected', option.selected ? 'true' : 'false');\n if (!option.create) option.el.dataset.value = option.value;\n if (!option.create) option.el.dataset.label = option.label;\n setPresence({el: option.el, attr: 'data-selected', present: option.selected, value: 'true'});\n setPresence({el: option.el, attr: 'data-highlighted', present: option.value === context.navigation.activeValue, value: 'true'});\n setPresence({el: option.el, attr: 'data-disabled', present: option.disabled, value: 'true'});\n setPresence({el: option.el, attr: 'aria-disabled', present: option.disabled, value: 'true'});\n option.el.querySelectorAll<HTMLElement>('[data-ui-select-option-indicator]').forEach((indicator) => {\n setPresence({el: indicator, attr: 'data-selected', present: option.selected, value: 'true'});\n });\n });\n const empty = root().querySelector<HTMLElement>('[data-ui-select-option-empty]');\n if (empty) {\n empty.hidden = props.virtualized && props.optionsFetchUrl\n ? virtualTotal !== 0\n : records.some((option) => option.visible && !option.create);\n }\n };\n\n const optionDomSignature = (): string => JSON.stringify(\n Array.from(root().querySelectorAll<HTMLElement>(optionSelector)).map((option) => ({\n create: option.hasAttribute('data-ui-select-option-create'),\n value: option.dataset.value ?? '',\n label: option.hasAttribute('data-ui-select-option-create')\n ? option.textContent?.trim() ?? ''\n : option.dataset.label ?? option.textContent?.trim() ?? '',\n disabled: option.dataset.disabled ?? '',\n selected: option.dataset.selected ?? '',\n selectedContent: option.querySelector<HTMLTemplateElement>(selectedTemplateSelector)?.innerHTML ?? null,\n })),\n );\n\n const syncChips = (catalog: OptionCatalog): void => {\n const container = chipsEl();\n if (!container) return;\n const props = currentProps();\n const context = currentContext();\n const records = catalog.project('', context.selection);\n const chips = context.selection.map(({value, label}) => ({\n value,\n label,\n disabled: records.firstByValue.get(value)?.disabled ?? false,\n option: records.firstByValue.get(value),\n }));\n const chipSize = props.size === 'xs' || props.size === 'sm' ? 'xs' : 'sm';\n const key = JSON.stringify({chips: chips.map(({value, label, disabled}) => ({value, label, disabled})), optionRevision,\n pillbox: isPillbox(), disabled: props.disabled, readonly: props.readonly,\n variant: props.chipVariant, color: props.chipColor, size: chipSize, className: props.chipClass});\n if (key === chipsKey) return;\n chipsKey = key;\n container.replaceChildren();\n container.hidden = !isPillbox() || chips.length === 0;\n if (container.hidden) return;\n\n const chipClass = resolveStyle({\n part: badgeStyles.parts.root,\n props: {variant: props.chipVariant, color: props.chipColor, size: chipSize, radius: 'sm'},\n className: resolveStyle({part: selectStyles.parts.chip, props: {}, className: props.chipClass}),\n });\n const labelClass = resolveStyle({part: selectStyles.parts.chipLabel});\n const plainLabelClass = resolveStyle({part: selectStyles.parts.chipPlainLabel});\n const removeClass = resolveStyle({\n part: badgeStyles.parts.close,\n props: {size: chipSize},\n className: resolveStyle({part: selectStyles.parts.chipRemove}),\n });\n\n chips.forEach((chipData) => {\n const plainLabel = chipData.label || chipData.value;\n const chip = document.createElement('span');\n chip.className = chipClass;\n chip.setAttribute('data-ui-badge', '');\n chip.setAttribute('data-ui-action-recipe', 'badge');\n chip.setAttribute('data-ui-select-chip', '');\n chip.dataset.value = chipData.value;\n chip.dataset.variant = props.chipVariant;\n chip.dataset.color = props.chipColor;\n chip.dataset.size = chipSize;\n chip.dataset.radius = 'sm';\n const label = document.createElement('span');\n label.className = labelClass;\n label.setAttribute('data-ui-select-chip-label', '');\n const selected = chipData.option ? explicitSelectedContent(chipData.option) : null;\n if (selected) label.append(selected);\n else {\n const fallback = document.createElement('span');\n fallback.className = plainLabelClass;\n fallback.textContent = plainLabel;\n label.append(fallback);\n }\n chip.append(label);\n const remove = document.createElement('button');\n remove.type = 'button';\n remove.className = removeClass;\n remove.setAttribute('data-ui-badge-close', '');\n remove.setAttribute('data-ui-select-chip-remove', '');\n remove.dataset.value = chipData.value;\n remove.setAttribute('aria-label', `Remove ${plainLabel}`);\n remove.disabled = props.disabled || props.readonly || chipData.disabled;\n const icon = root().querySelector<HTMLTemplateElement>('[data-ui-select-chip-remove-icon]');\n if (icon) remove.append(icon.content.cloneNode(true));\n else remove.textContent = 'x';\n chip.append(remove);\n container.append(chip);\n });\n };\n\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n hiddenInputsKey = syncRepeatedHiddenInputs({container, state: {\n name: props.name,\n required: props.required,\n values: props.disabled ? [] : selectionValues(),\n form: root().dataset.form ?? '',\n marker: 'data-ui-select-hidden-input',\n }, currentKey: hiddenInputsKey});\n };\n\n const syncAll = (): void => withOptionCatalog((catalog) => {\n syncRoot();\n syncControl();\n syncTrigger(catalog);\n syncInputs(catalog);\n syncListbox();\n syncOptions(catalog);\n syncChips(catalog);\n syncHiddenInputs();\n });\n\n const focusForOpen = (): void => {\n if (!rootEl) return;\n withOptionCatalog((catalog) => {\n if (!bridge.hasTag('interactive')) return;\n const props = currentProps();\n const focusTarget = (target: HTMLElement | null): void => {\n const showIndicator = target !== null\n && target.ownerDocument.activeElement === target\n && target.matches(':focus-visible');\n focusElement(target, {showIndicator});\n };\n if (popover?.presentation() !== 'anchored') {\n const target = (fixedSearchAvailable(catalog) ? searchInput() : null)\n ?? root().querySelector<HTMLElement>('[data-ui-select-sheet-close]')\n ?? listbox();\n focusTarget(target);\n } else if (props.mode === 'combobox') focusTarget(input());\n else if (fixedSearchAvailable(catalog)) focusTarget(searchInput());\n else focusTarget(trigger());\n });\n };\n\n const activateCommittedOption = (): void => withOptionCatalog((catalog) => {\n if (currentContext().navigation.activeValue) return;\n const enabled = optionProjection(catalog).enabled;\n const selected = selectionValues()\n .map((value) => enabled.find((option) => option.value === value))\n .find((option): option is SelectOption => option !== undefined);\n if (selected) setActive(selected.value);\n });\n\n const reconcileOptions = (): void => withOptionCatalog((catalog) => {\n const context = currentContext();\n const selection = selectionForValues(selectionValues(context.selection), catalog);\n if (!sameStrings(selectionLabels(selection), selectionLabels(context.selection))) {\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n const enabled = optionProjection(catalog).enabled;\n if (context.navigation.activeValue && !enabled.some((option) => option.value === context.navigation.activeValue)) {\n bridge.send({type: 'ACTIVE', value: currentProps().autoHighlight ? enabled[0]?.value ?? '' : ''});\n }\n syncAll();\n });\n\n const propsChanged = (event: Record<string, unknown>): void => withOptionCatalog((catalog) => {\n const changes = Array.isArray(event.changes) ? event.changes : [];\n const keys = changes.flatMap((change) => (\n change && typeof change === 'object' && 'key' in change ? [String(change.key)] : []\n ));\n if (keys.some((key) => key === 'value' || key === 'values' || key === 'multiple' || key === 'selectedLabelMap')) {\n const selection = selectionForValues(valuesFromProps(currentProps()), catalog);\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n if (keys.includes('optionsTotalItems')) {\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n virtualizerApi()?.setTotalItems(virtualTotal);\n }\n if (keys.includes('optionsFetchUrl')) {\n syncVirtualizerUrl();\n queueMicrotask(syncVirtualizerUrl);\n }\n syncAll();\n });\n\n const virtualizedOptionsUrl = (query: string): string => {\n const props = currentProps();\n const url = new URL(props.optionsFetchUrl, document.baseURI);\n if (query) url.searchParams.set(props.optionSearchParam, query);\n else url.searchParams.delete(props.optionSearchParam);\n return /^[a-z][a-z\\d+.-]*:/i.test(props.optionsFetchUrl) || props.optionsFetchUrl.startsWith('//')\n ? url.href\n : `${url.pathname}${url.search}${url.hash}`;\n };\n\n const syncVirtualizerUrl = (): void => {\n if (!rootEl) return;\n const props = currentProps();\n if (!props.virtualized) return;\n const desired = props.optionsFetchUrl\n ? virtualizedOptionsUrl(currentContext().search.query)\n : '';\n const virtualizer = virtualizerEl();\n if (!virtualizer) return;\n if (virtualizer.dataset.fetchUrl === desired) {\n synchronizedVirtualizerUrl = desired;\n return;\n }\n if (synchronizedVirtualizerUrl === desired) return;\n const api = virtualizerApi();\n if (!api) return;\n synchronizedVirtualizerUrl = desired;\n api.setUrl(desired, {reset: true});\n };\n\n const scheduleVirtualSearch = (): void => {\n window.clearTimeout(virtualSearchTimer);\n const props = currentProps();\n if (\n !props.virtualized\n || !props.optionsFetchUrl\n || (!props.searchable && props.mode !== 'combobox')\n ) return;\n virtualSearchTimer = window.setTimeout(() => {\n syncVirtualizerUrl();\n const api = virtualizerApi();\n if (!api) return;\n if (virtualTotal === 0 && props.optionsTotalItems > 0) {\n virtualTotal = props.optionsTotalItems;\n api.setTotalItems(virtualTotal);\n }\n }, props.optionSearchDebounce);\n };\n\n const bridge = createAlpineMachine({\n schema: selectSchema,\n hooks: selectHooks,\n createMachine: ({props}) => createSelectMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareOpen: () => withOptionCatalog(() => {\n restoreFocusAfterClose = false;\n popover?.open();\n activateCommittedOption();\n syncAll();\n queueMicrotask(focusForOpen);\n }),\n finishOpen: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: ({event}) => {\n inputSearching = false;\n restoreFocusAfterClose = event.restoreFocus === true\n || event.type === 'SELECT'\n || event.type === 'CREATE';\n if (restoreFocusAfterClose) focusElement(trigger(), {showIndicator: false});\n syncAll();\n },\n finishClose: () => {\n popover?.close();\n syncAll();\n if (restoreFocusAfterClose) focusElement(trigger(), {showIndicator: false});\n restoreFocusAfterClose = false;\n dispatch({el: root(), name: 'ui:close'});\n },\n commitSelection: ({event}) => {\n syncAll();\n declareMorphAttributes(root(), 'data-value', 'data-values');\n dispatchNativeControlChange({\n container: hiddenInputsEl(),\n fallback: root(),\n marker: 'data-ui-select-hidden-input',\n });\n const {selection} = currentContext();\n if (event.type === 'CLEAR') dispatch({el: root(), name: 'ui:clear'});\n dispatch({el: root(), name: 'ui:change', detail: {\n value: selection[0]?.value ?? '',\n values: selectionValues(selection),\n label: selection[0]?.label ?? '',\n labels: selectionLabels(selection),\n option: lastOptionEl,\n }});\n lastOptionEl = null;\n },\n commitSearch: () => {\n syncAll();\n dispatch({el: root(), name: 'ui:search', detail: {search: currentContext().search.query}});\n scheduleVirtualSearch();\n },\n prepareCreate: ({event}) => {\n syncAll();\n dispatch({el: root(), name: 'ui:create', detail: {\n search: currentContext().search.query,\n value: currentContext().creation.value,\n modal: typeof event.modal === 'string' ? event.modal : '',\n }});\n },\n syncProps: ({event}) => propsChanged(event),\n syncOptions: reconcileOptions,\n syncActive: syncAll,\n syncDom: syncAll,\n },\n }),\n });\n\n const sendSelection = (\n type: 'SELECT' | 'DESELECT' | 'SELECT_ALL',\n selection: SelectContext['selection'],\n ): void => bridge.send({type, selection});\n\n const selectOption = (option: SelectOption, catalog: OptionCatalog, event?: Event): void => {\n event?.preventDefault();\n const props = currentProps();\n if (props.disabled || props.readonly || option.disabled) return;\n if (option.create) {\n bridge.send({\n type: 'CREATE',\n value: option.value || currentContext().search.query,\n modal: option.el.dataset.modal ?? '',\n });\n return;\n }\n\n lastOptionEl = option.el;\n inputSearching = false;\n const currentValues = selectionValues();\n const values = props.multiple\n ? currentValues.includes(option.value)\n ? currentValues.filter((value) => value !== option.value)\n : [...currentValues, option.value]\n : [option.value];\n sendSelection('SELECT', selectionForValues(values, catalog));\n };\n\n const setActive = (value: string): void => withOptionCatalog((catalog) => {\n if (value === currentContext().navigation.activeValue) return;\n bridge.send({type: 'ACTIVE', value});\n const option = optionProjection(catalog).firstByValue.get(value);\n dispatch({el: root(), name: 'ui:highlight', detail: {value, option: option?.el ?? null}});\n });\n\n const moveActive = (delta: 1 | -1): void => withOptionCatalog((catalog) => {\n const records = optionProjection(catalog).enabled;\n if (records.length === 0) return;\n const current = records.findIndex((option) => option.value === currentContext().navigation.activeValue);\n let index = current < 0 ? delta > 0 ? 0 : records.length - 1 : current + delta;\n if (index >= records.length) index = currentProps().loop ? 0 : records.length - 1;\n if (index < 0) index = currentProps().loop ? records.length - 1 : 0;\n setActive(records[index]?.value ?? '');\n });\n\n const setSearch = (query: string): void => withOptionCatalog((catalog) => {\n const props = currentProps();\n if (props.disabled || props.readonly) return;\n inputSearching = true;\n const first = props.autoHighlight ? optionProjection(catalog, query).enabled[0]?.value ?? '' : '';\n bridge.send({type: 'SEARCH', query, optionsId, activeValue: first});\n });\n\n const handleKeydown = (event: KeyboardEvent): void => withOptionCatalog((catalog) => {\n if (event.key === 'Tab' && popover?.presentation() !== 'anchored') {\n trapFocus(event, popoverEl());\n return;\n }\n const textInput = event.target instanceof HTMLInputElement;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n moveActive(event.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n if (!textInput && isExpanded() && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const records = optionProjection(catalog).enabled;\n setActive(event.key === 'Home' ? records[0]?.value ?? '' : records.at(-1)?.value ?? '');\n return;\n }\n if (isExpanded() && (event.key === 'Enter' || (!textInput && event.key === ' '))) {\n const option = optionProjection(catalog).firstByValue.get(currentContext().navigation.activeValue);\n if (option) selectOption(option, catalog, event);\n return;\n }\n if ((event.key === 'Backspace' || event.key === 'Delete') && isPillbox() && !currentContext().search.query) {\n const inputEl = input();\n if (inputEl && (inputEl.selectionStart !== 0 || inputEl.selectionEnd !== 0)) return;\n const unfiltered = catalog.project('', currentContext().selection);\n const value = [...selectionValues()].reverse().find((candidate) => (\n !unfiltered.firstByValue.get(candidate)?.disabled\n ));\n if (value) {\n event.preventDefault();\n component.deselect(value, event);\n }\n return;\n }\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n bridge.send({type: 'CLOSE', restoreFocus: true});\n return;\n }\n if (!textInput && !fixedSearchAvailable(catalog) && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n typeahead += event.key.toLowerCase();\n window.clearTimeout(typeaheadTimer);\n typeaheadTimer = window.setTimeout(() => { typeahead = ''; }, 500);\n const match = optionProjection(catalog).enabled.find((option) => normalizeOptionText(option.label).startsWith(typeahead));\n if (match) setActive(match.value);\n }\n });\n\n const setup = (): void => {\n const el = root();\n const activateControl = (event: Event, target: Element): boolean => {\n if (!target.closest('[data-ui-select-trigger], [data-ui-select-icon=\"trailing\"], [data-ui-select-control]')) {\n return false;\n }\n event.preventDefault();\n if (event instanceof PointerEvent || (event instanceof MouseEvent && event.detail > 0)) {\n focusElement(trigger(), {showIndicator: false});\n } else focusElement(trigger());\n if (trigger() instanceof HTMLInputElement) {\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n } else component.toggle(event);\n return true;\n };\n\n addListener({target: el, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-select-sheet-close]')) {\n component.close(event);\n return;\n }\n const searchClear = target.closest('[data-ui-select-search-clear]');\n if (searchClear) {\n event.preventDefault();\n setSearch('');\n return;\n }\n const clear = target.closest('[data-ui-select-clear], [data-ui-select-button-clear]');\n if (clear) {\n component.clear(event);\n return;\n }\n const chipRemove = target.closest<HTMLElement>('[data-ui-select-chip-remove]');\n if (chipRemove) {\n component.deselect(chipRemove.dataset.value ?? '', event);\n return;\n }\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (optionEl) {\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option) selectOption(option, catalog, event);\n });\n return;\n }\n if (!(event instanceof MouseEvent) || event.detail === 0) activateControl(event, target);\n }});\n addListener({target: el, event: 'input', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) return;\n if (target.matches('[data-ui-select-input], [data-ui-select-search-input]')) setSearch(target.value);\n }});\n addListener({target: el, event: 'keydown', cleanup, handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }});\n addListener({target: el, event: 'pointerdown', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (\n target.closest(optionSelector)\n || target.closest('[data-ui-select-search-clear]')\n || target.closest('[data-ui-select-clear], [data-ui-select-button-clear], [data-ui-select-chip-remove]')\n ) {\n event.preventDefault();\n return;\n }\n activateControl(event, target);\n }});\n addListener({target: el, event: 'pointerover', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (!optionEl) return;\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option && option.visible && !option.disabled) setActive(option.value);\n });\n }});\n addListener({target: el, event: 'focusout', cleanup, handler: (event) => {\n if (!(event instanceof FocusEvent)) return;\n const next = event.relatedTarget;\n if (next instanceof Node && el.contains(next)) return;\n if (isVisible()) bridge.send({type: 'CLOSE'});\n }});\n addListener({target: el, event: 'ui:virtualizer-total-change', cleanup, handler: (event) => {\n if (!(event instanceof CustomEvent) || !virtualizerEl()?.contains(event.target as Node)) return;\n const total = Number(event.detail?.totalItems);\n if (Number.isFinite(total) && total >= 0) {\n virtualTotal = Math.floor(total);\n virtualSearchPopulation = Math.max(virtualSearchPopulation, virtualTotal);\n }\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: el, event: 'ui:virtualizer-load', cleanup, handler: (event) => {\n if (!virtualizerEl()?.contains(event.target as Node)) return;\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: popoverEl(), event: 'toggle', cleanup, handler: (event) => {\n if (!('newState' in event) || event.newState !== 'closed' || !isVisible()) return;\n bridge.send({type: 'CLOSE'});\n }});\n cleanup.add(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), popoverEl()],\n onDismiss: () => bridge.send({type: 'CLOSE'}),\n }));\n\n const observeSelectedTemplates = (): void => {\n disconnectSelectedTemplateObservers?.();\n const observers = Array.from(root().querySelectorAll<HTMLTemplateElement>(selectedTemplateSelector))\n .map((template) => {\n const observer = new MutationObserver(() => {\n optionRevision += 1;\n bridge.send({type: 'OPTIONS_CHANGED'});\n });\n observer.observe(template.content, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return observer;\n });\n disconnectSelectedTemplateObservers = () => observers.forEach((observer) => observer.disconnect());\n };\n\n disconnectObserver = observeSemanticChanges({\n targets: listbox(),\n read: optionDomSignature,\n onChange: () => {\n optionRevision += 1;\n observeSelectedTemplates();\n bridge.send({type: 'OPTIONS_CHANGED'});\n },\n observer: {\n attributes: true,\n attributeFilter: [\n 'data-disabled',\n 'data-item',\n 'data-label',\n 'data-selected',\n 'data-selected-label',\n 'data-text-value',\n 'data-ui-select-option-selected-template',\n 'data-value',\n ],\n characterData: true,\n childList: true,\n subtree: true,\n },\n });\n observeSelectedTemplates();\n };\n\n let component!: TrellisAlpineComponent<SelectData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n get isSearching(): boolean {\n return this.snapshot.current?.tags.includes('searching') ?? false;\n },\n get value(): string {\n return this.snapshot.current?.context.selection[0]?.value ?? '';\n },\n get values(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({value}) => value) ?? [];\n },\n get selectedLabels(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({label}) => label) ?? [];\n },\n get search(): string {\n return this.snapshot.current?.context.search.query ?? '';\n },\n get activeValue(): string {\n return this.snapshot.current?.context.navigation.activeValue ?? '';\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n buttonId = this.$id('select-button');\n inputId = this.$id('select-input');\n listboxId = this.$id('select-listbox');\n optionsId = optionsEl().id || root().dataset.optionsId || this.$id('select-options');\n optionsEl().id = optionsId;\n bridge.connect(this.$el, this.snapshot);\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n sheetTitle().id ||= `${listboxId}-title`;\n popover = createSelectSurface({\n reference: control,\n floating: popoverEl,\n labelId: () => sheetTitle().id,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: true,\n });\n setup();\n syncAll();\n queueMicrotask(syncVirtualizerUrl);\n reflectControlledState = true;\n if (currentProps().open && !currentProps().disabled && !currentProps().readonly) {\n queueMicrotask(() => bridge.send({type: 'OPEN'}));\n }\n },\n destroy(): void {\n window.clearTimeout(typeaheadTimer);\n window.clearTimeout(virtualSearchTimer);\n disconnectObserver?.();\n disconnectObserver = null;\n disconnectSelectedTemplateObservers?.();\n disconnectSelectedTemplateObservers = null;\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: selectStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-select': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'OPEN'});\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus: event instanceof KeyboardEvent});\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'TOGGLE'});\n },\n select(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option && !option.create) selectOption(option, catalog, event);\n });\n },\n deselect(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option?.disabled) return;\n sendSelection('DESELECT', selectionForValues(\n selectionValues().filter((candidate) => candidate !== value),\n catalog,\n ));\n });\n },\n selectAll(event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (!currentProps().multiple || currentProps().disabled || currentProps().readonly) return;\n const records = optionProjection(catalog).enabled;\n sendSelection('SELECT_ALL', records.map((option) => ({\n value: option.value,\n label: option.selectedLabel,\n })));\n });\n },\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (currentProps().disabled || currentProps().readonly) return;\n inputSearching = false;\n const resetRemoteSearch = currentContext().search.query !== '';\n bridge.send({type: 'CLEAR'});\n if (resetRemoteSearch) scheduleVirtualSearch();\n },\n setSearch,\n };\n\n return component;\n};\n\nconst registerSelect = defineAlpineData('UiSelect', UiSelect);\n\nexport {registerSelect, UiSelect};\nexport type {SelectData, SelectTransition, UiSelectApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerSelect as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSelect = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSelect};\nexport default registerSelect;\nexport * from './index';\n"],"mappings":"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"}