@vireo-ai/trellis-ui 0.1.47 → 0.1.48

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 (83) hide show
  1. package/package.json +1 -1
  2. package/packages/client/src/components/checkbox/styles.css +5 -0
  3. package/packages/client/src/components/sidebar/styles.css +8 -0
  4. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  5. package/packages/client/src/styles/generated/theme-palette.css +1 -1
  6. package/packages/client/src/styles/generated/theme-runtime.css +37 -37
  7. package/packages/client/src/styles/generated-sources.css +1 -1
  8. package/packages/client/src/styles/recipes/selection.css +0 -4
  9. package/packages/client/types/components/sidebar/machine.d.ts +3 -3
  10. package/packages/client/types/motion/flip.d.ts +2 -2
  11. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +43 -42
  12. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  13. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +256 -256
  14. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  15. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  16. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-DCacA4wj.js → capability-motion-C8JwDQHB.js} +2 -2
  17. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-DCacA4wj.js.map → capability-motion-C8JwDQHB.js.map} +1 -1
  18. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-BnB9Wz0E.js → capability-sortable-Ms02uATJ.js} +2 -2
  19. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-BnB9Wz0E.js.map → capability-sortable-Ms02uATJ.js.map} +1 -1
  20. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DBX5qDXb.js → core-D_APohl9.js} +2 -2
  21. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DBX5qDXb.js.map → core-D_APohl9.js.map} +1 -1
  22. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-By9j8PrV.js → entry.generated-6GztwKjx.js} +2 -2
  23. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-By9j8PrV.js.map → entry.generated-6GztwKjx.js.map} +1 -1
  24. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DcXzHGIV.js → entry.generated-BK8q8vxJ.js} +2 -2
  25. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DcXzHGIV.js.map → entry.generated-BK8q8vxJ.js.map} +1 -1
  26. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BdiyPh0p.js → entry.generated-BNM7EWpC.js} +2 -2
  27. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BdiyPh0p.js.map → entry.generated-BNM7EWpC.js.map} +1 -1
  28. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DeXEkXMW.js → entry.generated-Bl38ruYD.js} +2 -2
  29. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DeXEkXMW.js.map → entry.generated-Bl38ruYD.js.map} +1 -1
  30. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BUbxiHwA.js → entry.generated-C0kdsGqX.js} +2 -2
  31. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BUbxiHwA.js.map → entry.generated-C0kdsGqX.js.map} +1 -1
  32. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CZWpqP88.js +2 -0
  33. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CZWpqP88.js.map +1 -0
  34. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6qaa8bk.js +2 -0
  35. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6qaa8bk.js.map +1 -0
  36. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-F2czAXCg.js → entry.generated-DRZyI4u3.js} +2 -2
  37. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-F2czAXCg.js.map → entry.generated-DRZyI4u3.js.map} +1 -1
  38. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C0S3uZrm.js → entry.generated-DcCdeWRk.js} +2 -2
  39. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C0S3uZrm.js.map → entry.generated-DcCdeWRk.js.map} +1 -1
  40. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dqyot6vM.js → entry.generated-DckTWjSU.js} +2 -2
  41. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dqyot6vM.js.map → entry.generated-DckTWjSU.js.map} +1 -1
  42. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BEjAV5NT.js → entry.generated-DldFffYN.js} +2 -2
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BEjAV5NT.js.map → entry.generated-DldFffYN.js.map} +1 -1
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BV49EHah.js → entry.generated-OqzkZfIu.js} +2 -2
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BV49EHah.js.map → entry.generated-OqzkZfIu.js.map} +1 -1
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-EAAmcnsg.js → entry.generated-RR5GZAgO.js} +2 -2
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-EAAmcnsg.js.map → entry.generated-RR5GZAgO.js.map} +1 -1
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dyQ_HJ8D.js +2 -0
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dyQ_HJ8D.js.map +1 -0
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-jxSblEo7.js +2 -0
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-jxSblEo7.js.map +1 -0
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BlyJpJAE.js +3 -0
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-DT-Hq9qe.js.map → motion-BlyJpJAE.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/checkbox.js +1 -1
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +1 -1
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +80 -80
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B8aXTJK6.js +0 -2
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B8aXTJK6.js.map +0 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B_xTkYSB.js +0 -2
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B_xTkYSB.js.map +0 -1
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSgqcIg6.js +0 -2
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSgqcIg6.js.map +0 -1
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-a2NebZsn.js +0 -2
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-a2NebZsn.js.map +0 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-DT-Hq9qe.js +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-CZWpqP88.js","names":[],"sources":["../../../../../../../../client/src/components/radio/contract.ts","../../../../../../../../client/src/components/radio/machine.ts","../../../../../../../../client/src/components/radio/styles.ts","../../../../../../../../client/src/components/radio/index.ts","../../../../../../../../client/src/components/radio/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n INDICATOR_PLACEMENTS,\n INTERACTION_TREATMENTS,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type IndicatorPlacement,\n type Orientation,\n} from '../common';\n\nconst RADIO_GROUP_ORIENTATIONS = ORIENTATIONS;\nconst RADIO_GROUP_VARIANTS = ['default', 'cards', 'pills', 'menu'] as const;\nconst RADIO_PLACEMENTS = INDICATOR_PLACEMENTS;\nconst RADIO_SIZES = CONTROL_SIZES;\nconst RADIO_VARIANTS = ['default', 'cards', 'pills', 'menu'] as const;\nconst RADIO_COLORS = SELECTION_COLORS;\nconst RADIO_INTERACTIONS = INTERACTION_TREATMENTS;\n\ntype RadioGroupOrientation = Orientation;\ntype RadioGroupVariant = typeof RADIO_GROUP_VARIANTS[number];\ntype RadioPlacement = IndicatorPlacement;\ntype RadioSize = ControlSize;\ntype RadioVariant = typeof RADIO_VARIANTS[number];\ntype RadioColor = typeof RADIO_COLORS[number];\ntype RadioInteraction = typeof RADIO_INTERACTIONS[number];\n\nconst radioGroupSchema = {\n name: string,\n value: attribute(string, 'prop-value'),\n orientation: oneOf(RADIO_GROUP_ORIENTATIONS, 'vertical' as RadioGroupOrientation),\n variant: oneOf(RADIO_GROUP_VARIANTS, 'default' as RadioGroupVariant),\n color: oneOf(RADIO_COLORS, 'neutral' as RadioColor),\n interaction: oneOf(RADIO_INTERACTIONS, 'tonal' as RadioInteraction),\n indicator: bool.default(true),\n placement: oneOf(RADIO_PLACEMENTS, 'leading' as RadioPlacement),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n loop: bool.default(true),\n class: string,\n};\n\nconst radioSchema = {\n value: string,\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n indicator: bool.default(true),\n placement: oneOf(RADIO_PLACEMENTS, 'leading' as RadioPlacement),\n icon: string,\n variant: oneOf(RADIO_VARIANTS, 'default' as RadioVariant),\n color: oneOf(RADIO_COLORS, 'neutral' as RadioColor),\n interaction: oneOf(RADIO_INTERACTIONS, 'tonal' as RadioInteraction),\n size: oneOf(RADIO_SIZES, 'md' as RadioSize),\n inputClass: string,\n indicatorClass: string,\n iconClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst radioIndicatorSchema = {\n size: oneOf(RADIO_SIZES, 'md' as RadioSize),\n class: string,\n};\n\ntype RadioGroupProps = SchemaToProps<typeof radioGroupSchema>;\ntype RadioProps = SchemaToProps<typeof radioSchema>;\n\nexport {\n RADIO_GROUP_ORIENTATIONS,\n RADIO_GROUP_VARIANTS,\n RADIO_COLORS,\n RADIO_INTERACTIONS,\n RADIO_PLACEMENTS,\n RADIO_SIZES,\n RADIO_VARIANTS,\n radioGroupSchema,\n radioIndicatorSchema,\n radioSchema,\n};\nexport type {\n RadioColor,\n RadioGroupOrientation,\n RadioGroupProps,\n RadioGroupVariant,\n RadioInteraction,\n RadioPlacement,\n RadioProps,\n RadioSize,\n RadioVariant,\n};\n","import {createMachine, propsChanged, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {RadioGroupProps, RadioProps} from './contract';\n\ntype RadioItemRecord = {id: string; value: string; disabled: boolean; checked: boolean};\ntype RadioGroupContext = {\n selection: {value: string};\n collection: {items: RadioItemRecord[]};\n};\ntype RadioItemContext = {checked: boolean};\n\ntype RadioGroupEffects = {\n sync(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n emitInput(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n emitChange(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n focus(scope: MachineScope<RadioGroupContext, RadioGroupProps>): void;\n};\ntype RadioItemEffects = {sync(scope: MachineScope<RadioItemContext, RadioProps>): void};\n\nconst radioGroupHooks = [] as const;\nconst radioItemHooks = [] as const;\nconst eventValue = (event: MachineEventObject): string => typeof event.value === 'string' ? event.value : '';\nconst eventItem = (event: MachineEventObject): RadioItemRecord | null => {\n const item = event.item;\n if (!item || typeof item !== 'object') return null;\n const candidate = item as Partial<RadioItemRecord>;\n if (typeof candidate.id !== 'string' || typeof candidate.value !== 'string') return null;\n return {\n id: candidate.id,\n value: candidate.value,\n disabled: candidate.disabled === true,\n checked: candidate.checked === true,\n };\n};\nconst isSelectable = (scope: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => {\n const {context, event} = scope;\n if (scope.props.disabled) return false;\n const value = eventValue(event);\n if (!value) return !scope.props.required;\n return context.collection.items.some((item) => item.value === value && !item.disabled);\n};\nconst hasValue = (value: boolean) => ({event}: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => (\n Boolean(eventValue(event)) === value\n);\nconst changedGroupValue = ({event}: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => (\n propsChanged<RadioGroupProps>(event, 'value')\n);\nconst nextGroupSelection = (scope: MachineScope<RadioGroupContext, RadioGroupProps>): string => {\n const next = propsChangedEvent<RadioGroupProps>(scope.event)?.props;\n if (!changedGroupValue(scope) || !next) return scope.context.selection.value;\n return next.value || scope.context.collection.items.find((item) => item.checked)?.value || '';\n};\nconst nextGroupHasValue = (value: boolean) => (scope: MachineScope<RadioGroupContext, RadioGroupProps>): boolean => {\n return changedGroupValue(scope) && Boolean(nextGroupSelection(scope)) === value;\n};\n\nconst select = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => ({\n context: {...scope.context, selection: {value: eventValue(scope.event)}},\n});\nconst reconcileProps = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const next = propsChangedEvent<RadioGroupProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: changedGroupValue(scope)\n ? {...scope.context, selection: {value: nextGroupSelection(scope)}}\n : scope.context,\n };\n};\nconst registerItem = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const item = eventItem(scope.event);\n if (!item) return;\n const items = [...scope.context.collection.items.filter((candidate) => candidate.id !== item.id), item];\n const duplicate = items.some((candidate) => candidate.id !== item.id && candidate.value && candidate.value === item.value);\n if (duplicate) throw new Error(`Radio group values must be unique: ${item.value}`);\n const selected = scope.props.value || scope.context.selection.value || (item.checked ? item.value : '');\n return {context: {selection: {value: selected}, collection: {items}}};\n};\nconst unregisterItem = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const id = typeof scope.event.id === 'string' ? scope.event.id : '';\n const removed = scope.context.collection.items.find((item) => item.id === id);\n const items = scope.context.collection.items.filter((item) => item.id !== id);\n const value = removed?.value === scope.context.selection.value ? '' : scope.context.selection.value;\n return {context: {selection: {value}, collection: {items}}};\n};\nconst updateItem = (scope: MachineScope<RadioGroupContext, RadioGroupProps>) => {\n const item = eventItem(scope.event);\n if (!item) return;\n const previous = scope.context.collection.items.find((candidate) => candidate.id === item.id);\n const items = scope.context.collection.items.map((candidate) => candidate.id === item.id ? item : candidate);\n const duplicate = items.some((candidate) => candidate.id !== item.id && candidate.value && candidate.value === item.value);\n if (duplicate) throw new Error(`Radio group values must be unique: ${item.value}`);\n let value = scope.context.selection.value;\n if (!scope.props.value && item.checked) value = item.value;\n else if (!scope.props.value && previous?.checked && !item.checked && previous.value === value) value = '';\n else if (previous?.value === value && item.value !== previous.value) value = item.value;\n return {context: {selection: {value}, collection: {items}}};\n};\n\nconst createRadioGroupMachine = ({props, effects}: {props: RadioGroupProps; effects: RadioGroupEffects}): Machine<RadioGroupContext, RadioGroupProps> => createMachine<RadioGroupContext, RadioGroupProps>({\n initial: props.value ? 'selected' : 'empty',\n on: {\n NATIVE_SELECTED: {target: 'selected', guard: isSelectable, reduce: 'select', effects: 'sync'},\n SET_VALUE: [\n {target: 'selected', guard: (scope) => isSelectable(scope) && hasValue(true)(scope), reduce: 'select', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'empty', guard: (scope) => isSelectable(scope) && hasValue(false)(scope), reduce: 'select', effects: 'sync'},\n ],\n NAVIGATE: {target: 'selected', guard: isSelectable, reduce: 'select', effects: ['sync', 'emitInput', 'emitChange', 'focus']},\n ITEM_REGISTERED: {reduce: 'registerItem', effects: 'sync'},\n ITEM_UPDATED: {reduce: 'updateItem', effects: 'sync'},\n ITEM_UNREGISTERED: {reduce: 'unregisterItem', effects: 'sync'},\n PROPS_CHANGED: [\n {target: 'selected', guard: nextGroupHasValue(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'empty', guard: nextGroupHasValue(false), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {empty: {tags: ['empty']}, selected: {tags: ['selected']}},\n}, {\n context: {selection: {value: props.value}, collection: {items: []}},\n props,\n reducers: {select, reconcileProps, registerItem, unregisterItem, updateItem},\n effects,\n});\n\nconst createRadioItemMachine = ({props, effects}: {props: RadioProps; effects: RadioItemEffects}): Machine<RadioItemContext, RadioProps> => createMachine<RadioItemContext, RadioProps>({\n initial: 'ready',\n states: {ready: {on: {\n NATIVE_SELECTED: {reduce: 'select', effects: 'sync'},\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n }}},\n}, {\n context: {checked: props.checked},\n props,\n reducers: {\n select: (scope) => ({context: {...scope.context, checked: true}}),\n reconcileProps: (scope) => {\n const event = propsChangedEvent<RadioProps>(scope.event);\n if (!event) return;\n const checkedChanged = event.changes.some(({key}) => key === 'checked');\n return {\n props: event.props,\n context: checkedChanged ? {...scope.context, checked: event.props.checked} : scope.context,\n };\n },\n },\n effects,\n});\n\nexport {createRadioGroupMachine, createRadioItemMachine, radioGroupHooks, radioItemHooks};\nexport type {RadioGroupContext, RadioGroupEffects, RadioItemContext, RadioItemEffects, RadioItemRecord};\n","import {defineStyles} from '../../runtime';\nimport {BADGE_ROOT_BASE_CLASSES, BADGE_SIZE_CLASSES, BADGE_VARIANT_CLASSES} from '../badge/styles';\nimport {\n CONTROL_TYPOGRAPHY_CLASSES,\n INTERACTIVE_ITEM_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n} from '../common';\n\nconst radioStyles = defineStyles({definition: {\n component: 'ui.radio',\n parts: {\n group: {\n base: 'w-full min-w-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: '',\n },\n variant: {\n default: '',\n cards: '',\n pills: '',\n menu: 'contents',\n },\n },\n compounds: [\n {when: {variant: 'default', orientation: 'vertical'}, class: 'grid gap-2'},\n {when: {variant: 'default', orientation: 'horizontal'}, class: 'flex flex-wrap items-start gap-3'},\n {when: {variant: 'cards', orientation: 'vertical'}, class: 'grid gap-3'},\n {when: {variant: 'cards', orientation: 'horizontal'}, class: 'flex flex-wrap items-stretch gap-3'},\n {when: {variant: 'pills', orientation: 'vertical'}, class: 'inline-grid gap-2'},\n {when: {variant: 'pills', orientation: 'horizontal'}, class: 'flex flex-wrap items-center gap-2'},\n ],\n defaults: {\n orientation: 'vertical',\n variant: 'default',\n },\n },\n radio: {\n base: [\n 'relative flex min-w-0 items-start gap-2 rounded-control-md outline-none',\n 'text-inherit',\n ],\n variants: {\n variant: {\n default: ['w-full py-0.5', INTERACTIVE_ITEM_CLASSES],\n cards: 'w-auto flex-1 items-start gap-3',\n pills: [\n BADGE_ROOT_BASE_CLASSES,\n BADGE_VARIANT_CLASSES.soft,\n BADGE_SIZE_CLASSES.md,\n 'w-auto flex-none rounded-full',\n ],\n menu: [OPTION_ITEM_CLASSES, '!items-center'],\n },\n size: CONTROL_TYPOGRAPHY_CLASSES,\n },\n defaults: {\n variant: 'default',\n size: 'md',\n },\n },\n input: {\n base: 'sr-only',\n },\n indicator: {\n base: [\n 'mt-0.5 flex shrink-0 items-center justify-center rounded-full border-0',\n ],\n variants: {\n variant: {\n default: '',\n cards: '',\n pills: '',\n menu: 'order-10 !mt-0 ml-auto',\n },\n size: {\n xs: 'size-radio-indicator-xs',\n sm: 'size-radio-indicator-sm',\n md: 'size-radio-indicator-md',\n lg: 'size-radio-indicator-lg',\n xlg: 'size-radio-indicator-xlg',\n },\n },\n defaults: {\n variant: 'default',\n size: 'md',\n },\n },\n indicatorDot: {\n base: 'rounded-full bg-current opacity-0 data-checked:opacity-100',\n variants: {\n size: {\n xs: 'size-radio-dot-xs',\n sm: 'size-radio-dot-sm',\n md: 'size-radio-dot-md',\n lg: 'size-radio-dot-lg',\n xlg: 'size-radio-dot-xlg',\n },\n },\n defaults: {\n size: 'md',\n },\n },\n menuIndicator: {\n base: ['order-10 flex', OPTION_INDICATOR_CLASSES],\n },\n menuIndicatorIcon: {\n base: 'size-icon shrink-0 fill-current',\n },\n content: {\n base: 'grid min-w-0 gap-0.5',\n },\n icon: {\n base: 'mt-0.5 size-icon shrink-0 fill-current text-current opacity-75',\n },\n label: {\n base: '',\n },\n description: {\n base: 'text-surface-ink-muted',\n },\n },\n}});\n\nexport {radioStyles};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, defineAlpineData, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {radioGroupSchema, radioSchema, type RadioGroupProps, type RadioProps} from './contract';\nimport {\n createRadioGroupMachine,\n createRadioItemMachine,\n radioGroupHooks,\n radioItemHooks,\n type RadioGroupContext,\n type RadioItemContext,\n type RadioItemRecord,\n} from './machine';\nimport {radioStyles} from './styles';\n\n/** Public Alpine API for `ui.radio.group`. @public */\ninterface UiRadioGroupApi {\n /** Current selected value, or an empty string when the group has no selection. */\n readonly value: string;\n /** Select a registered enabled value, or clear an optional group with an empty string. */\n setValue(value: string): void;\n}\n\ntype RadioGroupData = AlpineMachine<RadioGroupContext, RadioGroupProps, typeof radioGroupHooks> & UiRadioGroupApi & {\n init(): void;\n destroy(): void;\n};\ntype RadioData = AlpineMachine<RadioItemContext, RadioProps, typeof radioItemHooks> & {\n init(): void;\n destroy(): void;\n};\n\ntype ItemDomState = {\n checked: boolean;\n name: string;\n disabled: boolean;\n required: boolean;\n invalid: boolean;\n variant: RadioGroupProps['variant'];\n};\ntype RadioItemOwner = {\n record(): RadioItemRecord;\n input(): HTMLInputElement;\n sync(state: ItemDomState): void;\n emit(type: 'input' | 'change'): void;\n focus(): void;\n};\ntype RadioGroupOwner = {\n register(item: RadioItemOwner): () => void;\n update(item: RadioItemOwner): void;\n nativeSelected(item: RadioItemOwner): void;\n navigate(item: RadioItemOwner, delta: 1 | -1): void;\n};\n\nconst groupOwners = new WeakMap<HTMLElement, RadioGroupOwner>();\nlet radioItemId = 0;\n\nconst closestGroupOwner = (element: HTMLElement): RadioGroupOwner | null => {\n const group = element.parentElement?.closest<HTMLElement>('[data-ui-radio-group]') ?? null;\n return group ? groupOwners.get(group) ?? null : null;\n};\n\nconst UiRadio = (): TrellisAlpineComponent<RadioData> => {\n const id = `ui-radio-${++radioItemId}`;\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let group: RadioGroupOwner | null = null;\n let unregister: (() => void) | null = null;\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Radio has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Radio requires a native radio input.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<RadioItemContext, RadioProps> => bridge.getCommittedSnapshot();\n const record = (): RadioItemRecord => ({\n id,\n value: snapshot().props.value || input().value || '',\n disabled: snapshot().props.disabled,\n checked: snapshot().props.checked,\n });\n const applyState = (state?: ItemDomState): void => {\n const props = snapshot().props;\n const native = input();\n const checked = state?.checked ?? snapshot().context.checked;\n const name = props.name || state?.name || '';\n const disabled = props.disabled || state?.disabled === true;\n const required = props.required || state?.required === true;\n const invalid = props.invalid || state?.invalid === true;\n const menu = props.variant === 'menu' || state?.variant === 'menu';\n\n native.checked = checked;\n if (!name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {name, value: props.value, disabled, required, invalid}});\n setAttribute({el: root(), attr: 'data-state', value: checked ? 'checked' : 'unchecked'});\n setPresence({el: root(), attr: 'data-checked', present: checked});\n syncControlPresence({el: root(), state: {disabled, required, invalid}});\n setPresence({el: native, attr: 'data-checked', present: checked});\n root().className = resolveStyle({\n part: radioStyles.parts.radio,\n props: {...props, variant: menu ? 'menu' : props.variant},\n className: root().dataset.class,\n });\n setPresence({el: root(), attr: 'data-ui-menu-item', present: menu});\n setPresence({el: root(), attr: 'data-ui-option-recipe', present: menu});\n setPresence({el: root(), attr: 'data-keep-open', present: menu, value: 'true'});\n setPresence({el: root(), attr: 'data-selected', present: menu && checked});\n if (menu) {\n root().setAttribute('role', 'menuitemradio');\n root().setAttribute('aria-checked', checked ? 'true' : 'false');\n root().tabIndex = -1;\n native.tabIndex = -1;\n native.setAttribute('aria-hidden', 'true');\n } else {\n root().removeAttribute('role');\n root().removeAttribute('aria-checked');\n root().removeAttribute('tabindex');\n native.removeAttribute('aria-hidden');\n }\n const indicator = root().querySelector<HTMLElement>('[data-ui-radio-indicator]');\n if (indicator) {\n indicator.hidden = menu;\n indicator.className = resolveStyle({\n part: radioStyles.parts.indicator,\n props: {...props, variant: menu ? 'menu' : props.variant},\n className: indicator.dataset.class,\n });\n setPresence({el: indicator, attr: 'data-checked', present: checked});\n setPresence({el: indicator, attr: 'data-disabled', present: disabled});\n setPresence({el: indicator, attr: 'data-invalid', present: invalid});\n }\n const dot = root().querySelector<HTMLElement>('[data-ui-radio-indicator-dot]');\n if (dot) setPresence({el: dot, attr: 'data-checked', present: checked});\n const menuIndicator = root().querySelector<HTMLElement>('[data-ui-radio-menu-indicator]');\n if (menuIndicator) {\n menuIndicator.hidden = !menu;\n setPresence({el: menuIndicator, attr: 'data-selected', present: checked});\n }\n };\n const bridge = createAlpineMachine({\n schema: radioSchema,\n hooks: radioItemHooks,\n createMachine: ({props}) => createRadioItemMachine({props, effects: {sync: () => {\n group?.update(owner);\n if (!group) applyState();\n }}}),\n });\n const owner: RadioItemOwner = {\n record,\n input,\n sync: applyState,\n emit(type): void {\n dispatching = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatching = false; }\n },\n focus: () => input().focus({preventScroll: true}),\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-radio-input]');\n if (!inputEl) throw new Error('Radio requires a native radio input.');\n bridge.connect(rootEl, this.snapshot);\n group = closestGroupOwner(root());\n if (group) unregister = group.register(owner);\n addListener({target: inputEl, event: 'change', handler: () => {\n if (dispatching || !input().checked) return;\n if (group) group.nativeSelected(owner);\n else bridge.send('NATIVE_SELECTED');\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'keydown', handler: (event) => {\n if (!group || !(event instanceof KeyboardEvent)) return;\n const previous = event.key === 'ArrowUp' || event.key === 'ArrowLeft';\n const next = event.key === 'ArrowDown' || event.key === 'ArrowRight';\n if (!previous && !next) return;\n event.preventDefault();\n group.navigate(owner, previous ? -1 : 1);\n }, cleanup: listeners});\n if (!group) applyState();\n },\n destroy(): void {\n unregister?.();\n unregister = null;\n group = null;\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n };\n\n function standaloneState(): ItemDomState {\n const props = snapshot().props;\n return {checked: snapshot().context.checked, name: props.name, disabled: props.disabled, required: props.required, invalid: props.invalid, variant: props.variant};\n }\n};\n\nconst UiRadioGroup = (): TrellisAlpineComponent<RadioGroupData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n const members = new Map<string, RadioItemOwner>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Radio group has not been initialized.');\n return rootEl;\n };\n const snapshot = (): MachineSnapshot<RadioGroupContext, RadioGroupProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const selected = current.context.selection.value;\n setAttribute({el: root(), attr: 'data-orientation', value: props.orientation});\n setAttribute({el: root(), attr: 'data-variant', value: props.variant});\n setAttribute({el: root(), attr: 'data-placement', value: props.placement});\n setAttribute({el: root(), attr: 'aria-orientation', value: props.orientation});\n setPresence({el: root(), attr: 'data-indicator', present: !props.indicator, value: 'false'});\n setAttribute({el: root(), attr: 'role', value: props.variant === 'menu' ? 'group' : 'radiogroup'});\n syncControlPresence({el: root(), state: props});\n\n const enabled = current.context.collection.items.filter((item) => !item.disabled);\n const firstEnabled = enabled[0]?.id ?? '';\n current.context.collection.items.forEach((item) => {\n const owner = members.get(item.id);\n if (!owner) return;\n const checked = item.value === selected;\n owner.sync({\n checked,\n name: props.name,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n variant: props.variant,\n });\n owner.input().tabIndex = props.variant === 'menu'\n ? -1\n : item.disabled ? -1 : checked || (!selected && item.id === firstEnabled) ? 0 : -1;\n });\n };\n const eventOwner = (current: MachineSnapshot<RadioGroupContext, RadioGroupProps>, eventValue?: unknown): RadioItemOwner | null => {\n const value = typeof eventValue === 'string' ? eventValue : current.context.selection.value;\n const item = current.context.collection.items.find((candidate) => candidate.value === value);\n return item ? members.get(item.id) ?? null : null;\n };\n const bridge = createAlpineMachine({\n schema: radioGroupSchema,\n hooks: radioGroupHooks,\n createMachine: ({props}) => createRadioGroupMachine({props, effects: {\n sync: syncDom,\n emitInput: (scope) => eventOwner(scope.snapshot, scope.event.value)?.emit('input'),\n emitChange: (scope) => eventOwner(scope.snapshot, scope.event.value)?.emit('change'),\n focus: (scope) => eventOwner(scope.snapshot, scope.event.value)?.focus(),\n }}),\n });\n const owner: RadioGroupOwner = {\n register(item): () => void {\n const record = item.record();\n members.set(record.id, item);\n bridge.send({type: 'ITEM_REGISTERED', item: record});\n return () => {\n members.delete(record.id);\n bridge.send({type: 'ITEM_UNREGISTERED', id: record.id});\n };\n },\n update(item): void {\n bridge.send({type: 'ITEM_UPDATED', item: item.record()});\n },\n nativeSelected(item): void {\n bridge.send({type: 'NATIVE_SELECTED', value: item.record().value});\n },\n navigate(item, delta): void {\n const current = bridge.getCommittedSnapshot();\n const enabled = current.context.collection.items.filter((candidate) => !candidate.disabled);\n const index = enabled.findIndex((candidate) => candidate.id === item.record().id);\n if (index < 0 || enabled.length === 0) return;\n let next = index + delta;\n if (next < 0 || next >= enabled.length) {\n if (!current.props.loop) return;\n next = next < 0 ? enabled.length - 1 : 0;\n }\n const target = enabled[next];\n if (target) bridge.send({type: 'NAVIGATE', value: target.value});\n },\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n groupOwners.set(root(), owner);\n syncDom();\n },\n destroy(): void {\n groupOwners.delete(root());\n members.clear();\n bridge.disconnect();\n rootEl = null;\n },\n get value(): string {\n return bridge.getCommittedSnapshot().context.selection.value;\n },\n setValue(value: string): void {\n if (value === bridge.getCommittedSnapshot().context.selection.value) return;\n bridge.send({type: 'SET_VALUE', value});\n },\n };\n};\n\nconst registerRadio = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiRadio', UiRadio)(AlpineInstance);\n defineAlpineData('UiRadioGroup', UiRadioGroup)(AlpineInstance);\n};\n\nexport {registerRadio, UiRadio, UiRadioGroup};\nexport type {RadioData, RadioGroupData, UiRadioGroupApi};\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';\n\nimport {registerRadio as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerRadio = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerRadio};\nexport default registerRadio;\nexport * from './index';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{a as i,o as a,s as o,t as s}from"./dom-qAeVl7dc.js";import{t as c}from"./alpine-machine-BS13dbK4.js";import{t as l}from"./alpine-data-CytyCyfk.js";import{n as u,t as d}from"./styles-TfvwVPGw.js";import{t as f}from"./machine-Dqut4h89.js";import{n as p,t as m}from"./props-change-2xfsIAEN.js";import{n as h,r as ee}from"./form-control-BkVb2Qed.js";import{C as g,D as _,E as v,L as y,M as b,N as x,O as S,P as C,S as w,T,k as E,o as te,s as D,v as O,w as k,x as ne,y as re}from"./common-Dfj6NCjU.js";import{n as ie,r as ae,t as A}from"./styles-CpTCQjY5.js";var j=C,oe=[`default`,`cards`,`pills`,`menu`],M=O,N=te,P=[`default`,`cards`,`pills`,`menu`],F=y,I=re,L={value:e.default(`on`),name:e,label:e,description:e,checked:r(n,`prop-checked`),indeterminate:r(n,`prop-indeterminate`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),indicator:n.default(!0),placement:t(M,`leading`),icon:e,variant:t(P,`default`),color:t(F,`neutral`),interaction:t(I,`tonal`),size:t(N,`md`),inputClass:e,indicatorClass:e,indicatorIconClass:e,iconClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};({...L});var se={name:e,orientation:t(j,`vertical`),variant:t(oe,`default`),color:t(F,`neutral`),interaction:t(I,`tonal`),indicator:n.default(!0),placement:t(M,`leading`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),class:e};t(N,`md`);var ce=[],le=[],ue={name:``,disabled:!1,required:!1,invalid:!1,variant:`default`},R=e=>e.indeterminate?`indeterminate`:e.checked?`checked`:`unchecked`,z=e=>e.state===`checked`||e.state===`indeterminate`?e.state:`unchecked`,B=({event:e})=>m(e,`checked`,`indeterminate`),V=e=>t=>{let n=p(t.event)?.props;return B(t)&&!!n&&R(n)===e},H=e=>({event:t})=>z(t)===e,de=e=>({context:{...e.context,selection:{state:z(e.event)}}}),fe=e=>{let t=p(e.event)?.props;if(t)return{props:t,context:B(e)?{...e.context,selection:{state:R(t)}}:e.context}},U=e=>[{target:`unchecked`,guard:H(`unchecked`),reduce:`setSelection`,effects:e},{target:`checked`,guard:H(`checked`),reduce:`setSelection`,effects:e},{target:`indeterminate`,guard:H(`indeterminate`),reduce:`setSelection`,effects:e}],pe=({props:e,inherited:t=ue,effects:n})=>{let r=R(e);return f({initial:r,on:{NATIVE_CHANGED:U([`sync`]),API_SET:U([`sync`,`emitInput`,`emitChange`]),INHERITANCE_CHANGED:{reduce:`setInheritance`,effects:`sync`},PROPS_CHANGED:[{target:`unchecked`,guard:V(`unchecked`),reduce:`reconcileProps`,effects:`sync`},{target:`checked`,guard:V(`checked`),reduce:`reconcileProps`,effects:`sync`},{target:`indeterminate`,guard:V(`indeterminate`),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`]},checked:{tags:[`checked`]},indeterminate:{tags:[`indeterminate`]}}},{context:{selection:{state:r},inherited:{...t}},props:e,reducers:{setSelection:de,reconcileProps:fe,setInheritance:e=>({context:{...e.context,inherited:{name:typeof e.event.name==`string`?e.event.name:``,disabled:e.event.disabled===!0,required:e.event.required===!0,invalid:e.event.invalid===!0,variant:e.event.variant===`menu`?`menu`:`default`}}})},effects:n})},W=e=>({name:e.name,disabled:e.disabled,required:e.required,invalid:e.invalid,variant:e.variant}),me=({props:e,effects:t})=>f({initial:`ready`,states:{ready:{tags:[`ready`],on:{PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}}}},{context:{inherited:W(e)},props:e,reducers:{reconcileProps:e=>{let t=p(e.event)?.props;return t?{props:t,context:{inherited:W(t)}}:void 0}},effects:t}),G=[`relative isolate min-w-0 overflow-hidden rounded-surface-md`],K={sm:`text-xs`,md:`text-sm`},he=[K.md,_[4]];d({definition:{component:`ui.card`,parts:{root:{base:[G,`grid`],variants:{size:K,padding:_,paddingX:S,paddingY:E,gap:ne,gapX:w,gapY:g,margin:k,marginX:T,marginY:v},defaults:{size:`md`,padding:`4`,paddingX:`0`,paddingY:`0`,gap:`4`,gapX:`0`,gapY:`0`,margin:`0`,marginX:`0`,marginY:`0`}},header:{base:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] gap-x-3 gap-y-1`},title:{base:`col-start-1 block min-w-0 pr-2`},description:{base:`col-start-1 min-w-0 pr-2 text-surface-ink-muted`},action:{base:`col-start-2 row-span-2 row-start-1 -mr-1 -mt-1 justify-self-end self-start`},content:{base:`min-w-0 text-inherit`},footer:{base:`min-w-0 gap-2`,variants:{layout:{row:`flex flex-wrap items-center`,stack:`grid`},align:{start:`justify-start`,end:`justify-end`,between:`justify-between`,stretch:``}},compounds:[{when:{layout:`stack`,align:`start`},class:`justify-items-start`},{when:{layout:`stack`,align:`end`},class:`justify-items-end`},{when:{layout:`stack`,align:`stretch`},class:`justify-items-stretch`}],defaults:{layout:`row`,align:`end`}}}}});var q=[...ie,`relative w-auto rounded-full text-surface-ink`,`shadow-[0_0_0_var(--border-width-edge-control)_var(--ui-surface-edge)]`,`[--ui-interaction-rest-edge:var(--ui-surface-edge)]`,`[&_[data-ui-checkbox-indicator]]:hidden`,`hover:bg-interaction-hover`,`active:bg-interaction-pressed`,`has-[:focus-visible]:ui-focus-ring`,`data-invalid:shadow-[0_0_0_var(--border-width-edge-control)_var(--color-intent-danger-edge)]`,`data-invalid:hover:shadow-[0_0_0_var(--border-width-edge-control)_var(--color-intent-danger-edge-hover)]`,`data-invalid:has-[:focus-visible]:ui-focus-ring-danger`],J=ae,Y=d({definition:{component:`ui.checkbox`,parts:{group:{base:`min-w-0`,variants:{orientation:{vertical:``,horizontal:``},variant:{default:``,cards:``,pills:``,menu:`contents`}},compounds:[{when:{orientation:`vertical`,variant:`default`},class:`grid w-full gap-2`},{when:{orientation:`horizontal`,variant:`default`},class:`flex w-full flex-wrap items-start gap-3`},{when:{orientation:`vertical`,variant:`cards`},class:`grid w-full gap-3`},{when:{orientation:`horizontal`,variant:`cards`},class:`flex w-full flex-wrap items-stretch gap-3`},{when:{orientation:`vertical`,variant:`pills`},class:`inline-grid w-auto gap-2`},{when:{orientation:`horizontal`,variant:`pills`},class:`flex flex-wrap items-center gap-2`}],defaults:{orientation:`vertical`,variant:`default`}},checkbox:{base:`relative min-w-0 text-inherit outline-none`,variants:{variant:{default:`flex w-full items-start gap-2 rounded-control-md py-0.5`,cards:[...G,...he,`flex w-auto flex-1 items-start gap-3`],pills:q,menu:x},size:{xs:``,sm:``,md:``,lg:``,xlg:``}},compounds:[{when:{variant:`default`,size:`xs`},class:D.xs},{when:{variant:`default`,size:`sm`},class:D.sm},{when:{variant:`default`,size:`md`},class:D.md},{when:{variant:`default`,size:`lg`},class:D.lg},{when:{variant:`default`,size:`xlg`},class:D.xlg},{when:{variant:`pills`,size:`xs`},class:J.xs},{when:{variant:`pills`,size:`sm`},class:J.sm},{when:{variant:`pills`,size:`md`},class:J.md},{when:{variant:`pills`,size:`lg`},class:J.lg},{when:{variant:`pills`,size:`xlg`},class:J.xlg}],defaults:{variant:`default`,size:`md`}},input:{base:`peer sr-only`},indicator:{base:[`relative mt-0.5 flex shrink-0 items-center justify-center rounded-control-md border-0`],variants:{variant:{default:``,cards:``,pills:``,menu:`order-10 !mt-0 ml-auto`},size:{xs:`size-checkbox-indicator-xs`,sm:`size-checkbox-indicator-sm`,md:`size-checkbox-indicator-md`,lg:`size-checkbox-indicator-lg`,xlg:`size-checkbox-indicator-xlg`}},defaults:{variant:`default`,size:`md`}},indicatorIcon:{base:`pointer-events-none absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 shrink-0 fill-current opacity-0 data-checked:opacity-100 data-indeterminate:opacity-100`,variants:{size:{xs:`size-icon-xs`,sm:`size-icon-sm`,md:`size-icon-sm`,lg:`size-icon-sm`,xlg:`size-icon-lg`}},defaults:{size:`md`}},menuIndicator:{base:[`relative order-10 flex`,b]},menuIndicatorIcon:{base:`pointer-events-none absolute inset-0 size-icon shrink-0 fill-current opacity-0 data-checked:opacity-100 data-indeterminate:opacity-100`},content:{base:`grid min-w-0 gap-0.5`},icon:{base:`shrink-0 fill-current text-current opacity-75`,variants:{variant:{default:`mt-0.5 size-icon`,cards:`mt-0.5 size-icon`,pills:``},size:{xs:``,sm:``,md:``,lg:``,xlg:``}},compounds:[{when:{variant:`pills`,size:`xs`},class:A.xs},{when:{variant:`pills`,size:`sm`},class:A.sm},{when:{variant:`pills`,size:`md`},class:A.md},{when:{variant:`pills`,size:`lg`},class:A.lg},{when:{variant:`pills`,size:`xlg`},class:A.xlg}],defaults:{variant:`default`,size:`md`}},label:{base:``},description:{base:`text-surface-ink-muted`}}}}),X=new WeakMap,ge=e=>{let t=e.parentElement?.closest(`[data-ui-checkbox-group]`)??null;return t?X.get(t)??null:null},Z=()=>{let e=null,t=null,n=[],r=null,l=!1,d=()=>{if(!e)throw Error(`Checkbox has not been initialized.`);return e},f=()=>{if(!t)throw Error(`Checkbox requires a native checkbox input.`);return t},p=()=>_.getCommittedSnapshot(),m=()=>{let e=d(),t=f(),n=p(),r=n.props,s=n.context.inherited,c=n.context.selection.state,l=c===`checked`,m=c===`indeterminate`,g=r.disabled||s.disabled,_=r.required||s.required,v=r.invalid||s.invalid,y=r.name||s.name,b=r.variant===`menu`||s.variant===`menu`;t.checked=l,t.indeterminate=m,y||t.removeAttribute(`name`),ee({input:t,state:{name:y,value:r.value,disabled:g,required:_,invalid:v}}),m?t.setAttribute(`aria-checked`,`mixed`):t.removeAttribute(`aria-checked`),a({el:e,attr:`data-state`,value:c}),o({el:e,attr:`data-checked`,present:l}),o({el:e,attr:`data-indeterminate`,present:m}),h({el:e,state:{disabled:g,required:_,invalid:v}}),o({el:t,attr:`data-checked`,present:l}),o({el:t,attr:`data-indeterminate`,present:m}),e.className=u({part:Y.parts.checkbox,props:{...r,variant:b?`menu`:r.variant},className:e.dataset.class}),o({el:e,attr:`data-ui-menu-item`,present:b}),o({el:e,attr:`data-ui-option-recipe`,present:b}),o({el:e,attr:`data-keep-open`,present:b,value:`true`}),o({el:e,attr:`data-selected`,present:b&&(l||m)}),b?(e.setAttribute(`role`,`menuitemcheckbox`),e.setAttribute(`aria-checked`,m?`mixed`:l?`true`:`false`),e.tabIndex=-1,t.tabIndex=-1,t.setAttribute(`aria-hidden`,`true`)):(e.removeAttribute(`role`),e.removeAttribute(`aria-checked`),e.removeAttribute(`tabindex`),t.removeAttribute(`aria-hidden`));let x=e.querySelector(`[data-ui-checkbox-indicator]`);x&&(x.hidden=b,x.className=u({part:Y.parts.indicator,props:{...r,variant:b?`menu`:r.variant},className:x.dataset.class}),a({el:x,attr:`data-state`,value:c}),o({el:x,attr:`data-checked`,present:l}),o({el:x,attr:`data-indeterminate`,present:m}),o({el:x,attr:`data-disabled`,present:g}),o({el:x,attr:`data-invalid`,present:v}));let S=e.querySelector(`[data-ui-checkbox-indicator-icon="checked"]`);S&&(S.setAttribute(`class`,u({part:Y.parts.indicatorIcon,props:r,className:S.dataset.class})),o({el:S,attr:`data-checked`,present:l}),i({el:S,attr:`data-indeterminate`}));let C=e.querySelector(`[data-ui-checkbox-indicator-icon="indeterminate"]`);C&&(C.setAttribute(`class`,u({part:Y.parts.indicatorIcon,props:r,className:C.dataset.class})),o({el:C,attr:`data-indeterminate`,present:m}),i({el:C,attr:`data-checked`}));let w=e.querySelector(`[data-ui-checkbox-menu-indicator]`);w&&(w.hidden=!b,o({el:w,attr:`data-selected`,present:l||m}));let T=e.querySelector(`[data-ui-checkbox-menu-indicator-icon="checked"]`);T&&(o({el:T,attr:`data-checked`,present:l}),i({el:T,attr:`data-indeterminate`}));let E=e.querySelector(`[data-ui-checkbox-menu-indicator-icon="indeterminate"]`);E&&(o({el:E,attr:`data-indeterminate`,present:m}),i({el:E,attr:`data-checked`}))},g=e=>{l=!0;try{f().dispatchEvent(new Event(e,{bubbles:!0}))}finally{l=!1}},_=c({schema:L,hooks:ce,createMachine:({props:e})=>pe({props:e,effects:{sync:m,emitInput:()=>g(`input`),emitChange:()=>g(`change`)}})}),v={setInheritance(e){_.send({type:`INHERITANCE_CHANGED`,...e})}};return{..._,init(){if(e=this.$el,t=d().querySelector(`[data-ui-checkbox-input]`),!t)throw Error(`Checkbox requires a native checkbox input.`);_.connect(e,this.snapshot),s({target:t,event:`input`,handler:()=>{l||_.send({type:`NATIVE_CHANGED`,state:f().checked?`checked`:`unchecked`})},cleanup:n}),s({target:t,event:`change`,handler:()=>{l||_.send({type:`NATIVE_CHANGED`,state:f().checked?`checked`:`unchecked`})},cleanup:n});let i=ge(d());i&&(r=i.register(v)),m()},destroy(){r?.(),r=null,n.splice(0).reverse().forEach(e=>e()),_.disconnect(),e=null,t=null},get state(){return _.getCommittedSnapshot().context.selection.state},setState(e){if(![`unchecked`,`checked`,`indeterminate`].includes(e))throw Error(`Unknown checkbox state: ${String(e)}`);e!==_.getCommittedSnapshot().context.selection.state&&_.send({type:`API_SET`,state:e})}}},Q=()=>{let e=null,t=new Set,n=()=>{if(!e)throw Error(`Checkbox group has not been initialized.`);return e},r=()=>o.getCommittedSnapshot(),i=()=>{let e=r();a({el:n(),attr:`data-orientation`,value:e.props.orientation}),a({el:n(),attr:`data-variant`,value:e.props.variant}),h({el:n(),state:e.context.inherited}),t.forEach(t=>t.setInheritance(e.context.inherited))},o=c({schema:se,hooks:le,createMachine:({props:e})=>me({props:e,effects:{sync:i}})}),s={register(e){return t.add(e),e.setInheritance(r().context.inherited),()=>t.delete(e)},inherited:()=>r().context.inherited};return{...o,init(){e=this.$el,o.connect(e,this.snapshot),X.set(n(),s),i()},destroy(){X.delete(n()),t.clear(),o.disconnect(),e=null}}},_e=e=>{l(`UiCheckbox`,Z)(e),l(`UiCheckboxGroup`,Q)(e)},$=new WeakSet,ve=e=>{$.has(e)||($.add(e),_e(e))};export{Z as n,Q as r,ve as t};
2
+ //# sourceMappingURL=entry.generated-D6qaa8bk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-D6qaa8bk.js","names":[],"sources":["../../../../../../../../client/src/components/checkbox/contract.ts","../../../../../../../../client/src/components/checkbox/machine.ts","../../../../../../../../client/src/components/card/styles.ts","../../../../../../../../client/src/components/checkbox/styles.ts","../../../../../../../../client/src/components/checkbox/index.ts","../../../../../../../../client/src/components/checkbox/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n INDICATOR_PLACEMENTS,\n INTERACTION_TREATMENTS,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type IndicatorPlacement,\n type Orientation,\n} from '../common';\n\nconst CHECKBOX_GROUP_ORIENTATIONS = ORIENTATIONS;\nconst CHECKBOX_GROUP_VARIANTS = ['default', 'cards', 'pills', 'menu'] as const;\nconst CHECKBOX_PLACEMENTS = INDICATOR_PLACEMENTS;\nconst CHECKBOX_SIZES = CONTROL_SIZES;\nconst CHECKBOX_VARIANTS = ['default', 'cards', 'pills', 'menu'] as const;\nconst CHECKBOX_COLORS = SELECTION_COLORS;\nconst CHECKBOX_INTERACTIONS = INTERACTION_TREATMENTS;\n\ntype CheckboxGroupOrientation = Orientation;\ntype CheckboxGroupVariant = (typeof CHECKBOX_GROUP_VARIANTS)[number];\ntype CheckboxPlacement = IndicatorPlacement;\ntype CheckboxSize = ControlSize;\ntype CheckboxVariant = (typeof CHECKBOX_VARIANTS)[number];\ntype CheckboxColor = (typeof CHECKBOX_COLORS)[number];\ntype CheckboxInteraction = (typeof CHECKBOX_INTERACTIONS)[number];\n\nconst checkboxControlSchema = {\n value: string.default('on'),\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n indeterminate: attribute(bool, 'prop-indeterminate'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n indicator: bool.default(true),\n placement: oneOf(CHECKBOX_PLACEMENTS, 'leading' as CheckboxPlacement),\n icon: string,\n variant: oneOf(CHECKBOX_VARIANTS, 'default' as CheckboxVariant),\n color: oneOf(CHECKBOX_COLORS, 'neutral' as CheckboxColor),\n interaction: oneOf(CHECKBOX_INTERACTIONS, 'tonal' as CheckboxInteraction),\n size: oneOf(CHECKBOX_SIZES, 'md' as CheckboxSize),\n inputClass: string,\n indicatorClass: string,\n indicatorIconClass: string,\n iconClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst checkboxSchema = {\n ...checkboxControlSchema,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n};\n\nconst checkboxGroupSchema = {\n name: string,\n orientation: oneOf(CHECKBOX_GROUP_ORIENTATIONS, 'vertical' as CheckboxGroupOrientation),\n variant: oneOf(CHECKBOX_GROUP_VARIANTS, 'default' as CheckboxGroupVariant),\n color: oneOf(CHECKBOX_COLORS, 'neutral' as CheckboxColor),\n interaction: oneOf(CHECKBOX_INTERACTIONS, 'tonal' as CheckboxInteraction),\n indicator: bool.default(true),\n placement: oneOf(CHECKBOX_PLACEMENTS, 'leading' as CheckboxPlacement),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n class: string,\n};\n\nconst checkboxIndicatorSchema = {\n size: oneOf(CHECKBOX_SIZES, 'md' as CheckboxSize),\n class: string,\n};\n\ntype CheckboxControlProps = SchemaToProps<typeof checkboxControlSchema>;\ntype CheckboxGroupProps = SchemaToProps<typeof checkboxGroupSchema>;\ntype CheckboxProps = SchemaToProps<typeof checkboxSchema>;\n\nexport {\n CHECKBOX_GROUP_ORIENTATIONS,\n CHECKBOX_GROUP_VARIANTS,\n CHECKBOX_COLORS,\n CHECKBOX_INTERACTIONS,\n CHECKBOX_PLACEMENTS,\n CHECKBOX_SIZES,\n CHECKBOX_VARIANTS,\n checkboxControlSchema,\n checkboxGroupSchema,\n checkboxIndicatorSchema,\n checkboxSchema,\n};\nexport type {\n CheckboxControlProps,\n CheckboxColor,\n CheckboxGroupOrientation,\n CheckboxGroupProps,\n CheckboxGroupVariant,\n CheckboxInteraction,\n CheckboxPlacement,\n CheckboxProps,\n CheckboxSize,\n CheckboxVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport type {CheckboxControlProps, CheckboxGroupProps} from './contract';\n\ntype CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\ntype CheckboxInheritance = {\n name: string;\n disabled: boolean;\n required: boolean;\n invalid: boolean;\n variant: CheckboxGroupProps['variant'];\n};\ntype CheckboxContext = {\n selection: {state: CheckboxState};\n inherited: CheckboxInheritance;\n};\ntype CheckboxGroupContext = {inherited: CheckboxInheritance};\n\ntype CheckboxMachineEffects = {\n sync(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n emitInput(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n emitChange(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n};\ntype CheckboxGroupMachineEffects = {\n sync(scope: MachineScope<CheckboxGroupContext, CheckboxGroupProps>): void;\n};\n\nconst checkboxHooks = [] as const;\nconst checkboxGroupHooks = [] as const;\nconst EMPTY_INHERITANCE: CheckboxInheritance = {\n name: '', disabled: false, required: false, invalid: false, variant: 'default',\n};\n\nconst checkboxStateFromProps = (props: CheckboxControlProps): CheckboxState => {\n if (props.indeterminate) return 'indeterminate';\n return props.checked ? 'checked' : 'unchecked';\n};\n\nconst stateFromEvent = (event: MachineEventObject): CheckboxState => {\n if (event.state === 'checked' || event.state === 'indeterminate') return event.state;\n return 'unchecked';\n};\n\nconst selectionPropsChanged = ({event}: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => (\n propsChanged<CheckboxControlProps>(event, 'checked', 'indeterminate')\n);\nconst nextSelectionIs = (state: CheckboxState) => (scope: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => {\n const next = propsChangedEvent<CheckboxControlProps>(scope.event)?.props;\n return selectionPropsChanged(scope) && Boolean(next) && checkboxStateFromProps(next as CheckboxControlProps) === state;\n};\nconst eventStateIs = (state: CheckboxState) => ({event}: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => (\n stateFromEvent(event) === state\n);\n\nconst setSelection = (scope: MachineScope<CheckboxContext, CheckboxControlProps>) => ({\n context: {...scope.context, selection: {state: stateFromEvent(scope.event)}},\n});\nconst reconcileProps = (scope: MachineScope<CheckboxContext, CheckboxControlProps>) => {\n const next = propsChangedEvent<CheckboxControlProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: selectionPropsChanged(scope)\n ? {...scope.context, selection: {state: checkboxStateFromProps(next)}}\n : scope.context,\n };\n};\n\nconst selectionTransitions = (effects: string[]) => [\n {target: 'unchecked', guard: eventStateIs('unchecked'), reduce: 'setSelection', effects},\n {target: 'checked', guard: eventStateIs('checked'), reduce: 'setSelection', effects},\n {target: 'indeterminate', guard: eventStateIs('indeterminate'), reduce: 'setSelection', effects},\n];\n\nconst createCheckboxMachine = ({\n props,\n inherited = EMPTY_INHERITANCE,\n effects,\n}: {\n props: CheckboxControlProps;\n inherited?: CheckboxInheritance;\n effects: CheckboxMachineEffects;\n}): Machine<CheckboxContext, CheckboxControlProps> => {\n const initial = checkboxStateFromProps(props);\n return createMachine<CheckboxContext, CheckboxControlProps>({\n initial,\n on: {\n NATIVE_CHANGED: selectionTransitions(['sync']),\n API_SET: selectionTransitions(['sync', 'emitInput', 'emitChange']),\n INHERITANCE_CHANGED: {reduce: 'setInheritance', effects: 'sync'},\n PROPS_CHANGED: [\n {target: 'unchecked', guard: nextSelectionIs('unchecked'), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'checked', guard: nextSelectionIs('checked'), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'indeterminate', guard: nextSelectionIs('indeterminate'), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n unchecked: {tags: ['unchecked']},\n checked: {tags: ['checked']},\n indeterminate: {tags: ['indeterminate']},\n },\n }, {\n context: {selection: {state: initial}, inherited: {...inherited}},\n props,\n reducers: {\n setSelection,\n reconcileProps,\n setInheritance: (scope) => ({\n context: {\n ...scope.context,\n inherited: {\n name: typeof scope.event.name === 'string' ? scope.event.name : '',\n disabled: scope.event.disabled === true,\n required: scope.event.required === true,\n invalid: scope.event.invalid === true,\n variant: scope.event.variant === 'menu' ? 'menu' : 'default',\n },\n },\n }),\n },\n effects,\n });\n};\n\nconst inheritanceFromGroupProps = (props: CheckboxGroupProps): CheckboxInheritance => ({\n name: props.name,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n variant: props.variant,\n});\n\nconst createCheckboxGroupMachine = ({\n props,\n effects,\n}: {\n props: CheckboxGroupProps;\n effects: CheckboxGroupMachineEffects;\n}): Machine<CheckboxGroupContext, CheckboxGroupProps> => createMachine<CheckboxGroupContext, CheckboxGroupProps>({\n initial: 'ready',\n states: {\n ready: {\n tags: ['ready'],\n on: {\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n },\n}, {\n context: {inherited: inheritanceFromGroupProps(props)},\n props,\n reducers: {\n reconcileProps: (scope) => {\n const next = propsChangedEvent<CheckboxGroupProps>(scope.event)?.props;\n return next ? {props: next, context: {inherited: inheritanceFromGroupProps(next)}} : undefined;\n },\n },\n effects,\n});\n\nexport {\n checkboxGroupHooks,\n checkboxHooks,\n checkboxStateFromProps,\n createCheckboxGroupMachine,\n createCheckboxMachine,\n EMPTY_INHERITANCE,\n};\nexport type {\n CheckboxContext,\n CheckboxGroupContext,\n CheckboxGroupMachineEffects,\n CheckboxInheritance,\n CheckboxMachineEffects,\n CheckboxState,\n};\n","import {defineStyles} from '../../runtime';\nimport {\n LAYOUT_GAP_CLASSES,\n LAYOUT_GAP_X_CLASSES,\n LAYOUT_GAP_Y_CLASSES,\n LAYOUT_MARGIN_CLASSES,\n LAYOUT_MARGIN_X_CLASSES,\n LAYOUT_MARGIN_Y_CLASSES,\n LAYOUT_PADDING_CLASSES,\n LAYOUT_PADDING_X_CLASSES,\n LAYOUT_PADDING_Y_CLASSES,\n} from '../common';\n\nconst CARD_ROOT_BASE_CLASSES = [\n 'relative isolate min-w-0 overflow-hidden rounded-surface-md',\n];\n\nconst CARD_SIZE_CLASSES = {\n sm: 'text-xs',\n md: 'text-sm',\n} as const;\n\nconst CARD_ROOT_DEFAULT_CLASSES = [\n CARD_SIZE_CLASSES.md,\n LAYOUT_PADDING_CLASSES['4'],\n];\n\nconst cardStyles = defineStyles({definition: {\n component: 'ui.card',\n parts: {\n root: {\n base: [\n CARD_ROOT_BASE_CLASSES,\n 'grid',\n ],\n variants: {\n size: CARD_SIZE_CLASSES,\n padding: LAYOUT_PADDING_CLASSES,\n paddingX: LAYOUT_PADDING_X_CLASSES,\n paddingY: LAYOUT_PADDING_Y_CLASSES,\n gap: LAYOUT_GAP_CLASSES,\n gapX: LAYOUT_GAP_X_CLASSES,\n gapY: LAYOUT_GAP_Y_CLASSES,\n margin: LAYOUT_MARGIN_CLASSES,\n marginX: LAYOUT_MARGIN_X_CLASSES,\n marginY: LAYOUT_MARGIN_Y_CLASSES,\n },\n defaults: {\n size: 'md',\n padding: '4',\n paddingX: '0',\n paddingY: '0',\n gap: '4',\n gapX: '0',\n gapY: '0',\n margin: '0',\n marginX: '0',\n marginY: '0',\n },\n },\n header: {\n base: 'grid min-w-0 grid-cols-[minmax(0,1fr)_auto] gap-x-3 gap-y-1',\n },\n title: {\n base: 'col-start-1 block min-w-0 pr-2',\n },\n description: {\n base: 'col-start-1 min-w-0 pr-2 text-surface-ink-muted',\n },\n action: {\n base: 'col-start-2 row-span-2 row-start-1 -mr-1 -mt-1 justify-self-end self-start',\n },\n content: {\n base: 'min-w-0 text-inherit',\n },\n footer: {\n base: 'min-w-0 gap-2',\n variants: {\n layout: {\n row: 'flex flex-wrap items-center',\n stack: 'grid',\n },\n align: {\n start: 'justify-start',\n end: 'justify-end',\n between: 'justify-between',\n stretch: '',\n },\n },\n compounds: [\n {when: {layout: 'stack', align: 'start'}, class: 'justify-items-start'},\n {when: {layout: 'stack', align: 'end'}, class: 'justify-items-end'},\n {when: {layout: 'stack', align: 'stretch'}, class: 'justify-items-stretch'},\n ],\n defaults: {\n layout: 'row',\n align: 'end',\n },\n },\n },\n}});\n\nexport {CARD_ROOT_BASE_CLASSES, CARD_ROOT_DEFAULT_CLASSES, CARD_SIZE_CLASSES, cardStyles};\n","import {defineStyles} from '../../runtime';\nimport {CONTROL_TYPOGRAPHY_CLASSES, OPTION_INDICATOR_CLASSES, OPTION_ITEM_CLASSES} from '../common';\nimport {\n BADGE_ICON_SIZE_CLASSES,\n BADGE_ROOT_BASE_CLASSES,\n BADGE_SIZE_CLASSES,\n} from '../badge/styles';\nimport {CARD_ROOT_BASE_CLASSES, CARD_ROOT_DEFAULT_CLASSES} from '../card/styles';\n\nconst CHECKBOX_PILL_CLASSES = [\n ...BADGE_ROOT_BASE_CLASSES,\n 'relative w-auto rounded-full text-surface-ink',\n 'shadow-[0_0_0_var(--border-width-edge-control)_var(--ui-surface-edge)]',\n '[--ui-interaction-rest-edge:var(--ui-surface-edge)]',\n '[&_[data-ui-checkbox-indicator]]:hidden',\n 'hover:bg-interaction-hover',\n 'active:bg-interaction-pressed',\n 'has-[:focus-visible]:ui-focus-ring',\n 'data-invalid:shadow-[0_0_0_var(--border-width-edge-control)_var(--color-intent-danger-edge)]',\n 'data-invalid:hover:shadow-[0_0_0_var(--border-width-edge-control)_var(--color-intent-danger-edge-hover)]',\n 'data-invalid:has-[:focus-visible]:ui-focus-ring-danger',\n];\n\nconst CHECKBOX_PILL_SIZE_CLASSES = BADGE_SIZE_CLASSES;\nconst CHECKBOX_CARD_CLASSES = [\n ...CARD_ROOT_BASE_CLASSES,\n ...CARD_ROOT_DEFAULT_CLASSES,\n 'flex w-auto flex-1 items-start gap-3',\n];\n\nconst checkboxStyles = defineStyles({definition: {\n component: 'ui.checkbox',\n parts: {\n group: {\n base: 'min-w-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: '',\n },\n variant: {\n default: '',\n cards: '',\n pills: '',\n menu: 'contents',\n },\n },\n compounds: [\n {when: {orientation: 'vertical', variant: 'default'}, class: 'grid w-full gap-2'},\n {when: {orientation: 'horizontal', variant: 'default'}, class: 'flex w-full flex-wrap items-start gap-3'},\n {when: {orientation: 'vertical', variant: 'cards'}, class: 'grid w-full gap-3'},\n {when: {orientation: 'horizontal', variant: 'cards'}, class: 'flex w-full flex-wrap items-stretch gap-3'},\n {when: {orientation: 'vertical', variant: 'pills'}, class: 'inline-grid w-auto gap-2'},\n {when: {orientation: 'horizontal', variant: 'pills'}, class: 'flex flex-wrap items-center gap-2'},\n ],\n defaults: {\n orientation: 'vertical',\n variant: 'default',\n },\n },\n checkbox: {\n base: 'relative min-w-0 text-inherit outline-none',\n variants: {\n variant: {\n default: 'flex w-full items-start gap-2 rounded-control-md py-0.5',\n cards: CHECKBOX_CARD_CLASSES,\n pills: CHECKBOX_PILL_CLASSES,\n menu: OPTION_ITEM_CLASSES,\n },\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xlg: '',\n },\n },\n compounds: [\n {when: {variant: 'default', size: 'xs'}, class: CONTROL_TYPOGRAPHY_CLASSES.xs},\n {when: {variant: 'default', size: 'sm'}, class: CONTROL_TYPOGRAPHY_CLASSES.sm},\n {when: {variant: 'default', size: 'md'}, class: CONTROL_TYPOGRAPHY_CLASSES.md},\n {when: {variant: 'default', size: 'lg'}, class: CONTROL_TYPOGRAPHY_CLASSES.lg},\n {when: {variant: 'default', size: 'xlg'}, class: CONTROL_TYPOGRAPHY_CLASSES.xlg},\n {when: {variant: 'pills', size: 'xs'}, class: CHECKBOX_PILL_SIZE_CLASSES.xs},\n {when: {variant: 'pills', size: 'sm'}, class: CHECKBOX_PILL_SIZE_CLASSES.sm},\n {when: {variant: 'pills', size: 'md'}, class: CHECKBOX_PILL_SIZE_CLASSES.md},\n {when: {variant: 'pills', size: 'lg'}, class: CHECKBOX_PILL_SIZE_CLASSES.lg},\n {when: {variant: 'pills', size: 'xlg'}, class: CHECKBOX_PILL_SIZE_CLASSES.xlg},\n ],\n defaults: {\n variant: 'default',\n size: 'md',\n },\n },\n input: {\n base: 'peer sr-only',\n },\n indicator: {\n base: [\n 'relative mt-0.5 flex shrink-0 items-center justify-center rounded-control-md border-0',\n ],\n variants: {\n variant: {\n default: '',\n cards: '',\n pills: '',\n menu: 'order-10 !mt-0 ml-auto',\n },\n size: {\n xs: 'size-checkbox-indicator-xs',\n sm: 'size-checkbox-indicator-sm',\n md: 'size-checkbox-indicator-md',\n lg: 'size-checkbox-indicator-lg',\n xlg: 'size-checkbox-indicator-xlg',\n },\n },\n defaults: {\n variant: 'default',\n size: 'md',\n },\n },\n indicatorIcon: {\n base: 'pointer-events-none absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 shrink-0 fill-current opacity-0 data-checked:opacity-100 data-indeterminate:opacity-100',\n variants: {\n size: {\n xs: 'size-icon-xs',\n sm: 'size-icon-sm',\n md: 'size-icon-sm',\n lg: 'size-icon-sm',\n xlg: 'size-icon-lg',\n },\n },\n defaults: {\n size: 'md',\n },\n },\n menuIndicator: {\n base: ['relative order-10 flex', OPTION_INDICATOR_CLASSES],\n },\n menuIndicatorIcon: {\n base: 'pointer-events-none absolute inset-0 size-icon shrink-0 fill-current opacity-0 data-checked:opacity-100 data-indeterminate:opacity-100',\n },\n content: {\n base: 'grid min-w-0 gap-0.5',\n },\n icon: {\n base: 'shrink-0 fill-current text-current opacity-75',\n variants: {\n variant: {\n default: 'mt-0.5 size-icon',\n cards: 'mt-0.5 size-icon',\n pills: '',\n },\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xlg: '',\n },\n },\n compounds: [\n {when: {variant: 'pills', size: 'xs'}, class: BADGE_ICON_SIZE_CLASSES.xs},\n {when: {variant: 'pills', size: 'sm'}, class: BADGE_ICON_SIZE_CLASSES.sm},\n {when: {variant: 'pills', size: 'md'}, class: BADGE_ICON_SIZE_CLASSES.md},\n {when: {variant: 'pills', size: 'lg'}, class: BADGE_ICON_SIZE_CLASSES.lg},\n {when: {variant: 'pills', size: 'xlg'}, class: BADGE_ICON_SIZE_CLASSES.xlg},\n ],\n defaults: {\n variant: 'default',\n size: 'md',\n },\n },\n label: {\n base: '',\n },\n description: {\n base: 'text-surface-ink-muted',\n },\n },\n}});\n\nexport {CHECKBOX_CARD_CLASSES, CHECKBOX_PILL_CLASSES, CHECKBOX_PILL_SIZE_CLASSES, checkboxStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, removeAttribute, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {checkboxControlSchema, checkboxGroupSchema, type CheckboxControlProps, type CheckboxGroupProps} from './contract';\nimport {\n checkboxGroupHooks,\n checkboxHooks,\n createCheckboxGroupMachine,\n createCheckboxMachine,\n type CheckboxContext,\n type CheckboxGroupContext,\n type CheckboxInheritance,\n type CheckboxState,\n} from './machine';\nimport {checkboxStyles} from './styles';\n\n/**\n * Public Alpine API for `ui.checkbox` and `ui.checkbox.control`.\n *\n * @public\n */\ninterface UiCheckboxApi {\n /** Current semantic checkbox state. */\n readonly state: CheckboxState;\n /** Set and commit the semantic checkbox state. */\n setState(state: CheckboxState): void;\n}\n\ntype CheckboxData = AlpineMachine<CheckboxContext, CheckboxControlProps, typeof checkboxHooks> & UiCheckboxApi & {\n init(): void;\n destroy(): void;\n};\ntype CheckboxGroupData = AlpineMachine<CheckboxGroupContext, CheckboxGroupProps, typeof checkboxGroupHooks> & {\n init(): void;\n destroy(): void;\n};\n\ntype CheckboxOwner = {setInheritance(inherited: CheckboxInheritance): void};\ntype CheckboxGroupOwner = {\n register(owner: CheckboxOwner): () => void;\n inherited(): CheckboxInheritance;\n};\n\nconst groupOwners = new WeakMap<HTMLElement, CheckboxGroupOwner>();\n\nconst closestGroupOwner = (element: HTMLElement): CheckboxGroupOwner | null => {\n const group = element.parentElement?.closest<HTMLElement>('[data-ui-checkbox-group]') ?? null;\n return group ? groupOwners.get(group) ?? null : null;\n};\n\nconst UiCheckbox = (): TrellisAlpineComponent<CheckboxData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let unregisterGroup: (() => void) | null = null;\n let dispatchingNative = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Checkbox has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Checkbox requires a native checkbox input.');\n return inputEl;\n };\n const currentSnapshot = (): MachineSnapshot<CheckboxContext, CheckboxControlProps> => bridge.getCommittedSnapshot();\n\n const syncDom = (): void => {\n const checkbox = root();\n const native = input();\n const snapshot = currentSnapshot();\n const props = snapshot.props;\n const inherited = snapshot.context.inherited;\n const state = snapshot.context.selection.state;\n const checked = state === 'checked';\n const indeterminate = state === 'indeterminate';\n const disabled = props.disabled || inherited.disabled;\n const required = props.required || inherited.required;\n const invalid = props.invalid || inherited.invalid;\n const name = props.name || inherited.name;\n const menu = props.variant === 'menu' || inherited.variant === 'menu';\n\n native.checked = checked;\n native.indeterminate = indeterminate;\n if (!name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {name, value: props.value, disabled, required, invalid}});\n if (indeterminate) native.setAttribute('aria-checked', 'mixed');\n else native.removeAttribute('aria-checked');\n\n setAttribute({el: checkbox, attr: 'data-state', value: state});\n setPresence({el: checkbox, attr: 'data-checked', present: checked});\n setPresence({el: checkbox, attr: 'data-indeterminate', present: indeterminate});\n syncControlPresence({el: checkbox, state: {disabled, required, invalid}});\n setPresence({el: native, attr: 'data-checked', present: checked});\n setPresence({el: native, attr: 'data-indeterminate', present: indeterminate});\n checkbox.className = resolveStyle({\n part: checkboxStyles.parts.checkbox,\n props: {...props, variant: menu ? 'menu' : props.variant},\n className: checkbox.dataset.class,\n });\n setPresence({el: checkbox, attr: 'data-ui-menu-item', present: menu});\n setPresence({el: checkbox, attr: 'data-ui-option-recipe', present: menu});\n setPresence({el: checkbox, attr: 'data-keep-open', present: menu, value: 'true'});\n setPresence({el: checkbox, attr: 'data-selected', present: menu && (checked || indeterminate)});\n if (menu) {\n checkbox.setAttribute('role', 'menuitemcheckbox');\n checkbox.setAttribute('aria-checked', indeterminate ? 'mixed' : checked ? 'true' : 'false');\n checkbox.tabIndex = -1;\n native.tabIndex = -1;\n native.setAttribute('aria-hidden', 'true');\n } else {\n checkbox.removeAttribute('role');\n checkbox.removeAttribute('aria-checked');\n checkbox.removeAttribute('tabindex');\n native.removeAttribute('aria-hidden');\n }\n\n const indicator = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator]');\n if (indicator) {\n indicator.hidden = menu;\n indicator.className = resolveStyle({\n part: checkboxStyles.parts.indicator,\n props: {...props, variant: menu ? 'menu' : props.variant},\n className: indicator.dataset.class,\n });\n setAttribute({el: indicator, attr: 'data-state', value: state});\n setPresence({el: indicator, attr: 'data-checked', present: checked});\n setPresence({el: indicator, attr: 'data-indeterminate', present: indeterminate});\n setPresence({el: indicator, attr: 'data-disabled', present: disabled});\n setPresence({el: indicator, attr: 'data-invalid', present: invalid});\n }\n const checkedIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator-icon=\"checked\"]');\n if (checkedIcon) {\n checkedIcon.setAttribute('class', resolveStyle({\n part: checkboxStyles.parts.indicatorIcon,\n props,\n className: checkedIcon.dataset.class,\n }));\n setPresence({el: checkedIcon, attr: 'data-checked', present: checked});\n removeAttribute({el: checkedIcon, attr: 'data-indeterminate'});\n }\n const indeterminateIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator-icon=\"indeterminate\"]');\n if (indeterminateIcon) {\n indeterminateIcon.setAttribute('class', resolveStyle({\n part: checkboxStyles.parts.indicatorIcon,\n props,\n className: indeterminateIcon.dataset.class,\n }));\n setPresence({el: indeterminateIcon, attr: 'data-indeterminate', present: indeterminate});\n removeAttribute({el: indeterminateIcon, attr: 'data-checked'});\n }\n const menuIndicator = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-menu-indicator]');\n if (menuIndicator) {\n menuIndicator.hidden = !menu;\n setPresence({el: menuIndicator, attr: 'data-selected', present: checked || indeterminate});\n }\n const menuCheckedIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-menu-indicator-icon=\"checked\"]');\n if (menuCheckedIcon) {\n setPresence({el: menuCheckedIcon, attr: 'data-checked', present: checked});\n removeAttribute({el: menuCheckedIcon, attr: 'data-indeterminate'});\n }\n const menuIndeterminateIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-menu-indicator-icon=\"indeterminate\"]');\n if (menuIndeterminateIcon) {\n setPresence({el: menuIndeterminateIcon, attr: 'data-indeterminate', present: indeterminate});\n removeAttribute({el: menuIndeterminateIcon, attr: 'data-checked'});\n }\n };\n\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatchingNative = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatchingNative = false; }\n };\n\n const bridge = createAlpineMachine({\n schema: checkboxControlSchema,\n hooks: checkboxHooks,\n createMachine: ({props}) => createCheckboxMachine({\n props,\n effects: {\n sync: syncDom,\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n },\n }),\n });\n\n const owner: CheckboxOwner = {\n setInheritance(inherited): void {\n bridge.send({type: 'INHERITANCE_CHANGED', ...inherited});\n },\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-checkbox-input]');\n if (!inputEl) throw new Error('Checkbox requires a native checkbox input.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'input', handler: () => {\n if (dispatchingNative) return;\n bridge.send({type: 'NATIVE_CHANGED', state: input().checked ? 'checked' : 'unchecked'});\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'change', handler: () => {\n if (dispatchingNative) return;\n bridge.send({type: 'NATIVE_CHANGED', state: input().checked ? 'checked' : 'unchecked'});\n }, cleanup: listeners});\n const group = closestGroupOwner(root());\n if (group) unregisterGroup = group.register(owner);\n syncDom();\n },\n destroy(): void {\n unregisterGroup?.();\n unregisterGroup = null;\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get state(): CheckboxState {\n return bridge.getCommittedSnapshot().context.selection.state;\n },\n setState(state: CheckboxState): void {\n if (!['unchecked', 'checked', 'indeterminate'].includes(state)) {\n throw new Error(`Unknown checkbox state: ${String(state)}`);\n }\n if (state === bridge.getCommittedSnapshot().context.selection.state) return;\n bridge.send({type: 'API_SET', state});\n },\n };\n};\n\nconst UiCheckboxGroup = (): TrellisAlpineComponent<CheckboxGroupData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n const members = new Set<CheckboxOwner>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Checkbox group has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<CheckboxGroupContext, CheckboxGroupProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const snapshot = currentSnapshot();\n setAttribute({el: root(), attr: 'data-orientation', value: snapshot.props.orientation});\n setAttribute({el: root(), attr: 'data-variant', value: snapshot.props.variant});\n syncControlPresence({el: root(), state: snapshot.context.inherited});\n members.forEach((member) => member.setInheritance(snapshot.context.inherited));\n };\n const bridge = createAlpineMachine({\n schema: checkboxGroupSchema,\n hooks: checkboxGroupHooks,\n createMachine: ({props}) => createCheckboxGroupMachine({\n props,\n effects: {sync: syncDom},\n }),\n });\n const owner: CheckboxGroupOwner = {\n register(member): () => void {\n members.add(member);\n member.setInheritance(currentSnapshot().context.inherited);\n return () => members.delete(member);\n },\n inherited: () => currentSnapshot().context.inherited,\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n groupOwners.set(root(), owner);\n syncDom();\n },\n destroy(): void {\n groupOwners.delete(root());\n members.clear();\n bridge.disconnect();\n rootEl = null;\n },\n };\n};\n\nconst registerCheckbox = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiCheckbox', UiCheckbox)(AlpineInstance);\n defineAlpineData('UiCheckboxGroup', UiCheckboxGroup)(AlpineInstance);\n};\n\nexport {registerCheckbox, UiCheckbox, UiCheckboxGroup};\nexport type {CheckboxData, CheckboxGroupData, CheckboxState, UiCheckboxApi};\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';\n\nimport {registerCheckbox as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerCheckbox = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerCheckbox};\nexport default registerCheckbox;\nexport * from './index';\n"],"mappings":"0mBAYA,IAAM,EAA8B,EAC9B,GAA0B,CAAC,UAAW,QAAS,QAAS,MAAM,EAC9D,EAAsB,EACtB,EAAiB,GACjB,EAAoB,CAAC,UAAW,QAAS,QAAS,MAAM,EACxD,EAAkB,EAClB,EAAwB,GAUxB,EAAwB,CAC1B,MAAO,EAAO,QAAQ,IAAI,EAC1B,KAAM,EACN,MAAO,EACP,YAAa,EACb,QAAS,EAAU,EAAM,cAAc,EACvC,cAAe,EAAU,EAAM,oBAAoB,EACnD,SAAU,EAAU,EAAM,eAAe,EACzC,SAAU,EAAU,EAAM,eAAe,EACzC,QAAS,EAAU,EAAM,cAAc,EACvC,UAAW,EAAK,QAAQ,EAAI,EAC5B,UAAW,EAAM,EAAqB,SAA8B,EACpE,KAAM,EACN,QAAS,EAAM,EAAmB,SAA4B,EAC9D,MAAO,EAAM,EAAiB,SAA0B,EACxD,YAAa,EAAM,EAAuB,OAA8B,EACxE,KAAM,EAAM,EAAgB,IAAoB,EAChD,WAAY,EACZ,eAAgB,EAChB,mBAAoB,EACpB,UAAW,EACX,aAAc,EACd,WAAY,EACZ,iBAAkB,EAClB,MAAO,CACX,GAII,CADA,GAAG,CACI,GASX,IAAM,GAAsB,CACxB,KAAM,EACN,YAAa,EAAM,EAA6B,UAAsC,EACtF,QAAS,EAAM,GAAyB,SAAiC,EACzE,MAAO,EAAM,EAAiB,SAA0B,EACxD,YAAa,EAAM,EAAuB,OAA8B,EACxE,UAAW,EAAK,QAAQ,EAAI,EAC5B,UAAW,EAAM,EAAqB,SAA8B,EACpE,SAAU,EAAU,EAAM,eAAe,EACzC,SAAU,EAAU,EAAM,eAAe,EACzC,QAAS,EAAU,EAAM,cAAc,EACvC,MAAO,CACX,EAGU,EAAM,EAAgB,IAAoB,EChDpD,IAAM,GAAgB,CAAC,EACjB,GAAqB,CAAC,EACtB,GAAyC,CAC3C,KAAM,GAAI,SAAU,GAAO,SAAU,GAAO,QAAS,GAAO,QAAS,SACzE,EAEM,EAA0B,GACxB,EAAM,cAAsB,gBACzB,EAAM,QAAU,UAAY,YAGjC,EAAkB,GAChB,EAAM,QAAU,WAAa,EAAM,QAAU,gBAAwB,EAAM,MACxE,YAGL,GAAyB,CAAC,WAC5B,EAAmC,EAAO,UAAW,eAAe,EAElE,EAAmB,GAA0B,GAAwE,CACvH,IAAM,EAAO,EAAwC,EAAM,KAAK,GAAG,MACnE,OAAO,EAAsB,CAAK,GAAK,EAAQ,GAAS,EAAuB,CAA4B,IAAM,CACrH,EACM,EAAgB,IAA0B,CAAC,WAC7C,EAAe,CAAK,IAAM,EAGxB,GAAgB,IAAgE,CAClF,QAAS,CAAC,GAAG,EAAM,QAAS,UAAW,CAAC,MAAO,EAAe,EAAM,KAAK,CAAC,CAAC,CAC/E,GACM,GAAkB,GAA+D,CACnF,IAAM,EAAO,EAAwC,EAAM,KAAK,GAAG,MAC9D,KACL,MAAO,CACH,MAAO,EACP,QAAS,EAAsB,CAAK,EAC9B,CAAC,GAAG,EAAM,QAAS,UAAW,CAAC,MAAO,EAAuB,CAAI,CAAC,CAAC,EACnE,EAAM,OAChB,CACJ,EAEM,EAAwB,GAAsB,CAChD,CAAC,OAAQ,YAAa,MAAO,EAAa,WAAW,EAAG,OAAQ,eAAgB,SAAO,EACvF,CAAC,OAAQ,UAAW,MAAO,EAAa,SAAS,EAAG,OAAQ,eAAgB,SAAO,EACnF,CAAC,OAAQ,gBAAiB,MAAO,EAAa,eAAe,EAAG,OAAQ,eAAgB,SAAO,CACnG,EAEM,IAAyB,CAC3B,QACA,YAAY,GACZ,aAKkD,CAClD,IAAM,EAAU,EAAuB,CAAK,EAC5C,OAAO,EAAqD,CACxD,UACA,GAAI,CACA,eAAgB,EAAqB,CAAC,MAAM,CAAC,EAC7C,QAAS,EAAqB,CAAC,OAAQ,YAAa,YAAY,CAAC,EACjE,oBAAqB,CAAC,OAAQ,iBAAkB,QAAS,MAAM,EAC/D,cAAe,CACX,CAAC,OAAQ,YAAa,MAAO,EAAgB,WAAW,EAAG,OAAQ,iBAAkB,QAAS,MAAM,EACpG,CAAC,OAAQ,UAAW,MAAO,EAAgB,SAAS,EAAG,OAAQ,iBAAkB,QAAS,MAAM,EAChG,CAAC,OAAQ,gBAAiB,MAAO,EAAgB,eAAe,EAAG,OAAQ,iBAAkB,QAAS,MAAM,EAC5G,CAAC,OAAQ,iBAAkB,QAAS,MAAM,CAC9C,CACJ,EACA,OAAQ,CACJ,UAAW,CAAC,KAAM,CAAC,WAAW,CAAC,EAC/B,QAAS,CAAC,KAAM,CAAC,SAAS,CAAC,EAC3B,cAAe,CAAC,KAAM,CAAC,eAAe,CAAC,CAC3C,CACJ,EAAG,CACC,QAAS,CAAC,UAAW,CAAC,MAAO,CAAO,EAAG,UAAW,CAAC,GAAG,CAAS,CAAC,EAChE,QACA,SAAU,CACN,gBACA,kBACA,eAAiB,IAAW,CACxB,QAAS,CACL,GAAG,EAAM,QACT,UAAW,CACP,KAAM,OAAO,EAAM,MAAM,MAAS,SAAW,EAAM,MAAM,KAAO,GAChE,SAAU,EAAM,MAAM,WAAa,GACnC,SAAU,EAAM,MAAM,WAAa,GACnC,QAAS,EAAM,MAAM,UAAY,GACjC,QAAS,EAAM,MAAM,UAAY,OAAS,OAAS,SACvD,CACJ,CACJ,EACJ,EACA,SACJ,CAAC,CACL,EAEM,EAA6B,IAAoD,CACnF,KAAM,EAAM,KACZ,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,OACnB,GAEM,IAA8B,CAChC,QACA,aAIqD,EAAwD,CAC7G,QAAS,QACT,OAAQ,CACJ,MAAO,CACH,KAAM,CAAC,OAAO,EACd,GAAI,CACA,cAAe,CAAC,OAAQ,iBAAkB,QAAS,MAAM,CAC7D,CACJ,CACJ,CACJ,EAAG,CACC,QAAS,CAAC,UAAW,EAA0B,CAAK,CAAC,EACrD,QACA,SAAU,CACN,eAAiB,GAAU,CACvB,IAAM,EAAO,EAAsC,EAAM,KAAK,GAAG,MACjE,OAAO,EAAO,CAAC,MAAO,EAAM,QAAS,CAAC,UAAW,EAA0B,CAAI,CAAC,CAAC,EAAI,IAAA,EACzF,CACJ,EACA,SACJ,CAAC,ECxJK,EAAyB,CAC3B,6DACJ,EAEM,EAAoB,CACtB,GAAI,UACJ,GAAI,SACR,EAEM,GAA4B,CAC9B,EAAkB,GAClB,EAAuB,EAC3B,EAEmB,EAAa,CAAC,WAAY,CACzC,UAAW,UACX,MAAO,CACH,KAAM,CACF,KAAM,CACF,EACA,MACJ,EACA,SAAU,CACN,KAAM,EACN,QAAS,EACT,SAAU,EACV,SAAU,EACV,IAAK,GACL,KAAM,EACN,KAAM,EACN,OAAQ,EACR,QAAS,EACT,QAAS,CACb,EACA,SAAU,CACN,KAAM,KACN,QAAS,IACT,SAAU,IACV,SAAU,IACV,IAAK,IACL,KAAM,IACN,KAAM,IACN,OAAQ,IACR,QAAS,IACT,QAAS,GACb,CACJ,EACA,OAAQ,CACJ,KAAM,6DACV,EACA,MAAO,CACH,KAAM,gCACV,EACA,YAAa,CACT,KAAM,iDACV,EACA,OAAQ,CACJ,KAAM,4EACV,EACA,QAAS,CACL,KAAM,sBACV,EACA,OAAQ,CACJ,KAAM,gBACN,SAAU,CACN,OAAQ,CACJ,IAAK,8BACL,MAAO,MACX,EACA,MAAO,CACH,MAAO,gBACP,IAAK,cACL,QAAS,kBACT,QAAS,EACb,CACJ,EACA,UAAW,CACP,CAAC,KAAM,CAAC,OAAQ,QAAS,MAAO,OAAO,EAAG,MAAO,qBAAqB,EACtE,CAAC,KAAM,CAAC,OAAQ,QAAS,MAAO,KAAK,EAAG,MAAO,mBAAmB,EAClE,CAAC,KAAM,CAAC,OAAQ,QAAS,MAAO,SAAS,EAAG,MAAO,uBAAuB,CAC9E,EACA,SAAU,CACN,OAAQ,MACR,MAAO,KACX,CACJ,CACJ,CACJ,CAAC,CAAC,EC3FF,IAAM,EAAwB,CAC1B,GAAG,GACH,gDACA,yEACA,sDACA,0CACA,6BACA,gCACA,qCACA,+FACA,2GACA,wDACJ,EAEM,EAA6B,GAO7B,EAAiB,EAAa,CAAC,WAAY,CAC7C,UAAW,cACX,MAAO,CACH,MAAO,CACH,KAAM,UACN,SAAU,CACN,YAAa,CACT,SAAU,GACV,WAAY,EAChB,EACA,QAAS,CACL,QAAS,GACT,MAAO,GACP,MAAO,GACP,KAAM,UACV,CACJ,EACA,UAAW,CACP,CAAC,KAAM,CAAC,YAAa,WAAY,QAAS,SAAS,EAAG,MAAO,mBAAmB,EAChF,CAAC,KAAM,CAAC,YAAa,aAAc,QAAS,SAAS,EAAG,MAAO,yCAAyC,EACxG,CAAC,KAAM,CAAC,YAAa,WAAY,QAAS,OAAO,EAAG,MAAO,mBAAmB,EAC9E,CAAC,KAAM,CAAC,YAAa,aAAc,QAAS,OAAO,EAAG,MAAO,2CAA2C,EACxG,CAAC,KAAM,CAAC,YAAa,WAAY,QAAS,OAAO,EAAG,MAAO,0BAA0B,EACrF,CAAC,KAAM,CAAC,YAAa,aAAc,QAAS,OAAO,EAAG,MAAO,mCAAmC,CACpG,EACA,SAAU,CACN,YAAa,WACb,QAAS,SACb,CACJ,EACA,SAAU,CACN,KAAM,6CACN,SAAU,CACN,QAAS,CACL,QAAS,0DACT,MAAO,CAxCvB,GAAG,EACH,GAAG,GACH,sCAsCuB,EACP,MAAO,EACP,KAAM,CACV,EACA,KAAM,CACF,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,IAAK,EACT,CACJ,EACA,UAAW,CACP,CAAC,KAAM,CAAC,QAAS,UAAW,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC7E,CAAC,KAAM,CAAC,QAAS,UAAW,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC7E,CAAC,KAAM,CAAC,QAAS,UAAW,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC7E,CAAC,KAAM,CAAC,QAAS,UAAW,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC7E,CAAC,KAAM,CAAC,QAAS,UAAW,KAAM,KAAK,EAAG,MAAO,EAA2B,GAAG,EAC/E,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC3E,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC3E,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC3E,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAA2B,EAAE,EAC3E,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,KAAK,EAAG,MAAO,EAA2B,GAAG,CACjF,EACA,SAAU,CACN,QAAS,UACT,KAAM,IACV,CACJ,EACA,MAAO,CACH,KAAM,cACV,EACA,UAAW,CACP,KAAM,CACF,uFACJ,EACA,SAAU,CACN,QAAS,CACL,QAAS,GACT,MAAO,GACP,MAAO,GACP,KAAM,wBACV,EACA,KAAM,CACF,GAAI,6BACJ,GAAI,6BACJ,GAAI,6BACJ,GAAI,6BACJ,IAAK,6BACT,CACJ,EACA,SAAU,CACN,QAAS,UACT,KAAM,IACV,CACJ,EACA,cAAe,CACX,KAAM,0KACN,SAAU,CACN,KAAM,CACF,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,IAAK,cACT,CACJ,EACA,SAAU,CACN,KAAM,IACV,CACJ,EACA,cAAe,CACX,KAAM,CAAC,yBAA0B,CAAwB,CAC7D,EACA,kBAAmB,CACf,KAAM,wIACV,EACA,QAAS,CACL,KAAM,sBACV,EACA,KAAM,CACF,KAAM,gDACN,SAAU,CACN,QAAS,CACL,QAAS,mBACT,MAAO,mBACP,MAAO,EACX,EACA,KAAM,CACF,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,IAAK,EACT,CACJ,EACA,UAAW,CACP,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAAwB,EAAE,EACxE,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAAwB,EAAE,EACxE,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAAwB,EAAE,EACxE,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,IAAI,EAAG,MAAO,EAAwB,EAAE,EACxE,CAAC,KAAM,CAAC,QAAS,QAAS,KAAM,KAAK,EAAG,MAAO,EAAwB,GAAG,CAC9E,EACA,SAAU,CACN,QAAS,UACT,KAAM,IACV,CACJ,EACA,MAAO,CACH,KAAM,EACV,EACA,YAAa,CACT,KAAM,wBACV,CACJ,CACJ,CAAC,CAAC,EChII,EAAc,IAAI,QAElB,GAAqB,GAAoD,CAC3E,IAAM,EAAQ,EAAQ,eAAe,QAAqB,0BAA0B,GAAK,KACzF,OAAO,EAAQ,EAAY,IAAI,CAAK,GAAK,KAAO,IACpD,EAEM,MAAyD,CAC3D,IAAI,EAA+D,KAC/D,EAAmC,KACnC,EAA0B,CAAC,EAC3B,EAAuC,KACvC,EAAoB,GAElB,MAA0B,CAC5B,GAAI,CAAC,EAAQ,MAAU,MAAM,oCAAoC,EACjE,OAAO,CACX,EACM,MAAgC,CAClC,GAAI,CAAC,EAAS,MAAU,MAAM,4CAA4C,EAC1E,OAAO,CACX,EACM,MAAgF,EAAO,qBAAqB,EAE5G,MAAsB,CACxB,IAAM,EAAW,EAAK,EAChB,EAAS,EAAM,EACf,EAAW,EAAgB,EAC3B,EAAQ,EAAS,MACjB,EAAY,EAAS,QAAQ,UAC7B,EAAQ,EAAS,QAAQ,UAAU,MACnC,EAAU,IAAU,UACpB,EAAgB,IAAU,gBAC1B,EAAW,EAAM,UAAY,EAAU,SACvC,EAAW,EAAM,UAAY,EAAU,SACvC,EAAU,EAAM,SAAW,EAAU,QACrC,EAAO,EAAM,MAAQ,EAAU,KAC/B,EAAO,EAAM,UAAY,QAAU,EAAU,UAAY,OAE/D,EAAO,QAAU,EACjB,EAAO,cAAgB,EAClB,GAAM,EAAO,gBAAgB,MAAM,EACxC,GAAkB,CAAC,MAAO,EAAQ,MAAO,CAAC,OAAM,MAAO,EAAM,MAAO,WAAU,WAAU,SAAO,CAAC,CAAC,EAC7F,EAAe,EAAO,aAAa,eAAgB,OAAO,EACzD,EAAO,gBAAgB,cAAc,EAE1C,EAAa,CAAC,GAAI,EAAU,KAAM,aAAc,MAAO,CAAK,CAAC,EAC7D,EAAY,CAAC,GAAI,EAAU,KAAM,eAAgB,QAAS,CAAO,CAAC,EAClE,EAAY,CAAC,GAAI,EAAU,KAAM,qBAAsB,QAAS,CAAa,CAAC,EAC9E,EAAoB,CAAC,GAAI,EAAU,MAAO,CAAC,WAAU,WAAU,SAAO,CAAC,CAAC,EACxE,EAAY,CAAC,GAAI,EAAQ,KAAM,eAAgB,QAAS,CAAO,CAAC,EAChE,EAAY,CAAC,GAAI,EAAQ,KAAM,qBAAsB,QAAS,CAAa,CAAC,EAC5E,EAAS,UAAY,EAAa,CAC9B,KAAM,EAAe,MAAM,SAC3B,MAAO,CAAC,GAAG,EAAO,QAAS,EAAO,OAAS,EAAM,OAAO,EACxD,UAAW,EAAS,QAAQ,KAChC,CAAC,EACD,EAAY,CAAC,GAAI,EAAU,KAAM,oBAAqB,QAAS,CAAI,CAAC,EACpE,EAAY,CAAC,GAAI,EAAU,KAAM,wBAAyB,QAAS,CAAI,CAAC,EACxE,EAAY,CAAC,GAAI,EAAU,KAAM,iBAAkB,QAAS,EAAM,MAAO,MAAM,CAAC,EAChF,EAAY,CAAC,GAAI,EAAU,KAAM,gBAAiB,QAAS,IAAS,GAAW,EAAc,CAAC,EAC1F,GACA,EAAS,aAAa,OAAQ,kBAAkB,EAChD,EAAS,aAAa,eAAgB,EAAgB,QAAU,EAAU,OAAS,OAAO,EAC1F,EAAS,SAAW,GACpB,EAAO,SAAW,GAClB,EAAO,aAAa,cAAe,MAAM,IAEzC,EAAS,gBAAgB,MAAM,EAC/B,EAAS,gBAAgB,cAAc,EACvC,EAAS,gBAAgB,UAAU,EACnC,EAAO,gBAAgB,aAAa,GAGxC,IAAM,EAAY,EAAS,cAA2B,8BAA8B,EAChF,IACA,EAAU,OAAS,EACnB,EAAU,UAAY,EAAa,CAC/B,KAAM,EAAe,MAAM,UAC3B,MAAO,CAAC,GAAG,EAAO,QAAS,EAAO,OAAS,EAAM,OAAO,EACxD,UAAW,EAAU,QAAQ,KACjC,CAAC,EACD,EAAa,CAAC,GAAI,EAAW,KAAM,aAAc,MAAO,CAAK,CAAC,EAC9D,EAAY,CAAC,GAAI,EAAW,KAAM,eAAgB,QAAS,CAAO,CAAC,EACnE,EAAY,CAAC,GAAI,EAAW,KAAM,qBAAsB,QAAS,CAAa,CAAC,EAC/E,EAAY,CAAC,GAAI,EAAW,KAAM,gBAAiB,QAAS,CAAQ,CAAC,EACrE,EAAY,CAAC,GAAI,EAAW,KAAM,eAAgB,QAAS,CAAO,CAAC,GAEvE,IAAM,EAAc,EAAS,cAA2B,6CAA6C,EACjG,IACA,EAAY,aAAa,QAAS,EAAa,CAC3C,KAAM,EAAe,MAAM,cAC3B,QACA,UAAW,EAAY,QAAQ,KACnC,CAAC,CAAC,EACF,EAAY,CAAC,GAAI,EAAa,KAAM,eAAgB,QAAS,CAAO,CAAC,EACrE,EAAgB,CAAC,GAAI,EAAa,KAAM,oBAAoB,CAAC,GAEjE,IAAM,EAAoB,EAAS,cAA2B,mDAAmD,EAC7G,IACA,EAAkB,aAAa,QAAS,EAAa,CACjD,KAAM,EAAe,MAAM,cAC3B,QACA,UAAW,EAAkB,QAAQ,KACzC,CAAC,CAAC,EACF,EAAY,CAAC,GAAI,EAAmB,KAAM,qBAAsB,QAAS,CAAa,CAAC,EACvF,EAAgB,CAAC,GAAI,EAAmB,KAAM,cAAc,CAAC,GAEjE,IAAM,EAAgB,EAAS,cAA2B,mCAAmC,EACzF,IACA,EAAc,OAAS,CAAC,EACxB,EAAY,CAAC,GAAI,EAAe,KAAM,gBAAiB,QAAS,GAAW,CAAa,CAAC,GAE7F,IAAM,EAAkB,EAAS,cAA2B,kDAAkD,EAC1G,IACA,EAAY,CAAC,GAAI,EAAiB,KAAM,eAAgB,QAAS,CAAO,CAAC,EACzE,EAAgB,CAAC,GAAI,EAAiB,KAAM,oBAAoB,CAAC,GAErE,IAAM,EAAwB,EAAS,cAA2B,wDAAwD,EACtH,IACA,EAAY,CAAC,GAAI,EAAuB,KAAM,qBAAsB,QAAS,CAAa,CAAC,EAC3F,EAAgB,CAAC,GAAI,EAAuB,KAAM,cAAc,CAAC,EAEzE,EAEM,EAAkB,GAAmC,CACvD,EAAoB,GACpB,GAAI,CAAE,EAAM,EAAE,cAAc,IAAI,MAAM,EAAM,CAAC,QAAS,EAAI,CAAC,CAAC,CAAG,QAAU,CAAE,EAAoB,EAAO,CAC1G,EAEM,EAAS,EAAoB,CAC/B,OAAQ,EACR,MAAO,GACP,eAAgB,CAAC,WAAW,GAAsB,CAC9C,QACA,QAAS,CACL,KAAM,EACN,cAAiB,EAAe,OAAO,EACvC,eAAkB,EAAe,QAAQ,CAC7C,CACJ,CAAC,CACL,CAAC,EAEK,EAAuB,CACzB,eAAe,EAAiB,CAC5B,EAAO,KAAK,CAAC,KAAM,sBAAuB,GAAG,CAAS,CAAC,CAC3D,CACJ,EAEA,MAAO,CACH,GAAG,EACH,MAAa,CAGT,GAFA,EAAS,KAAK,IACd,EAAU,EAAK,EAAE,cAAgC,0BAA0B,EACvE,CAAC,EAAS,MAAU,MAAM,4CAA4C,EAC1E,EAAO,QAAQ,EAAQ,KAAK,QAAQ,EACpC,EAAY,CAAC,OAAQ,EAAS,MAAO,QAAS,YAAe,CACrD,GACJ,EAAO,KAAK,CAAC,KAAM,iBAAkB,MAAO,EAAM,EAAE,QAAU,UAAY,WAAW,CAAC,CAC1F,EAAG,QAAS,CAAS,CAAC,EACtB,EAAY,CAAC,OAAQ,EAAS,MAAO,SAAU,YAAe,CACtD,GACJ,EAAO,KAAK,CAAC,KAAM,iBAAkB,MAAO,EAAM,EAAE,QAAU,UAAY,WAAW,CAAC,CAC1F,EAAG,QAAS,CAAS,CAAC,EACtB,IAAM,EAAQ,GAAkB,EAAK,CAAC,EAClC,IAAO,EAAkB,EAAM,SAAS,CAAK,GACjD,EAAQ,CACZ,EACA,SAAgB,CACZ,IAAkB,EAClB,EAAkB,KAClB,EAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAS,GAAY,EAAQ,CAAC,EAC5D,EAAO,WAAW,EAClB,EAAS,KACT,EAAU,IACd,EACA,IAAI,OAAuB,CACvB,OAAO,EAAO,qBAAqB,EAAE,QAAQ,UAAU,KAC3D,EACA,SAAS,EAA4B,CACjC,GAAI,CAAC,CAAC,YAAa,UAAW,eAAe,EAAE,SAAS,CAAK,EACzD,MAAU,MAAM,2BAA2B,OAAO,CAAK,GAAG,EAE1D,IAAU,EAAO,qBAAqB,EAAE,QAAQ,UAAU,OAC9D,EAAO,KAAK,CAAC,KAAM,UAAW,OAAK,CAAC,CACxC,CACJ,CACJ,EAEM,MAAmE,CACrE,IAAI,EAA+D,KAC7D,EAAU,IAAI,IAEd,MAA0B,CAC5B,GAAI,CAAC,EAAQ,MAAU,MAAM,0CAA0C,EACvE,OAAO,CACX,EACM,MAAmF,EAAO,qBAAqB,EAC/G,MAAsB,CACxB,IAAM,EAAW,EAAgB,EACjC,EAAa,CAAC,GAAI,EAAK,EAAG,KAAM,mBAAoB,MAAO,EAAS,MAAM,WAAW,CAAC,EACtF,EAAa,CAAC,GAAI,EAAK,EAAG,KAAM,eAAgB,MAAO,EAAS,MAAM,OAAO,CAAC,EAC9E,EAAoB,CAAC,GAAI,EAAK,EAAG,MAAO,EAAS,QAAQ,SAAS,CAAC,EACnE,EAAQ,QAAS,GAAW,EAAO,eAAe,EAAS,QAAQ,SAAS,CAAC,CACjF,EACM,EAAS,EAAoB,CAC/B,OAAQ,GACR,MAAO,GACP,eAAgB,CAAC,WAAW,GAA2B,CACnD,QACA,QAAS,CAAC,KAAM,CAAO,CAC3B,CAAC,CACL,CAAC,EACK,EAA4B,CAC9B,SAAS,EAAoB,CAGzB,OAFA,EAAQ,IAAI,CAAM,EAClB,EAAO,eAAe,EAAgB,EAAE,QAAQ,SAAS,MAC5C,EAAQ,OAAO,CAAM,CACtC,EACA,cAAiB,EAAgB,EAAE,QAAQ,SAC/C,EAEA,MAAO,CACH,GAAG,EACH,MAAa,CACT,EAAS,KAAK,IACd,EAAO,QAAQ,EAAQ,KAAK,QAAQ,EACpC,EAAY,IAAI,EAAK,EAAG,CAAK,EAC7B,EAAQ,CACZ,EACA,SAAgB,CACZ,EAAY,OAAO,EAAK,CAAC,EACzB,EAAQ,MAAM,EACd,EAAO,WAAW,EAClB,EAAS,IACb,CACJ,CACJ,EAEM,GAAoB,GAAwC,CAC9D,EAAiB,aAAc,CAAU,EAAE,CAAc,EACzD,EAAiB,kBAAmB,CAAe,EAAE,CAAc,CACvE,EChSM,EAAa,IAAI,QAEjB,GAAoB,GAAqC,CACvD,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAE7B,GAAkB,CAAc,EACpC"}
@@ -1,2 +1,2 @@
1
- import{d as e,n as t}from"./motion-DT-Hq9qe.js";import{t as n}from"./capability-motion-DCacA4wj.js";import{f as r,l as i,n as a}from"./codecs-Cb1ns_47.js";import{i as o,n as s,r as c,s as l}from"./dom-qAeVl7dc.js";import{i as u,t as d}from"./alpine-machine-BS13dbK4.js";import{t as f}from"./alpine-data-CytyCyfk.js";import{t as ee}from"./collection-navigation-CfTZUJrL.js";import{t as p}from"./machine-Dqut4h89.js";import{n as m,t as h}from"./props-change-2xfsIAEN.js";import{t as g}from"./semantic-observer-BUswpsNx.js";import{A as _,P as v}from"./common-Dfj6NCjU.js";var y=[`manual`,`automatic`],b=v;[...b];var x=[`auto`,..._],S={id:r.default(`ui-tabs`),animate:a,defaultValue:r,value:r,activation:i(y,`manual`),orientation:i(b,`horizontal`),gap:i(x,`auto`),loop:a.default(!0),panels:r,class:r},C=[u({name:`switching`,state:`switching`,project:e=>e.context.change,onDone:`SWITCH_DONE`,onError:`SWITCH_ERROR`,sends:{select:e=>({type:`SELECT`,value:e})}})],w=e=>typeof e==`string`?e:``,T=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],E=e=>!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`)),D=e=>m(e.event)?.props??e.props,O=e=>e.event.type===`ITEMS_CHANGED`?{values:T(e.event.values),disabledValues:T(e.event.disabledValues),panelIds:E(e.event.panelIds)}:e.context.collection,k=(e,t)=>e&&t.values.includes(e)&&!t.disabledValues.includes(e)?e:t.values.find(e=>!t.disabledValues.includes(e))??``,A=e=>{let t=O(e);if(e.event.type===`SELECT`){let n=w(e.event.value);return n&&t.values.includes(n)&&!t.disabledValues.includes(n)?n:e.context.selection.value}return e.event.type===`PROPS_CHANGED`&&h(e.event,`value`)?k(D(e).value,t):k(e.context.selection.value,t)},j=e=>e.context.selection.value!==A(e),M=(e,t)=>({target:e,guard:j,reduce:`applySwitch`,effects:t}),te=({props:e,context:t,effects:n})=>p({initial:`stable`,on:{DOM_INVALIDATED:{effects:`syncDom`}},states:{stable:{tags:[`stable`],on:{SELECT:M(`switching`,`prepareSwitch`),PROPS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncItems`}]}},switching:{tags:[`switching`,`transitioning`],on:{SWITCH_DONE:{target:`stable`,effects:`finishSwitch`},SWITCH_ERROR:{target:`stable`,effects:`finishSwitch`},SELECT:M(`switching`,`prepareSwitch`),PROPS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncItems`}]}}}},{context:t,props:e,reducers:{applySwitch:e=>{let t=O(e),n=A(e);return{props:D(e),context:{...e.context,selection:{value:n},change:{previousValue:e.context.selection.value,value:n,panelId:t.panelIds[n]??``},collection:t}}},reconcile:e=>({props:D(e),context:{...e.context,collection:O(e),selection:{value:A(e)}}})},effects:{prepareSwitch:n.prepareSwitch,finishSwitch:n.finishSwitch,syncDom:n.syncDom,syncProps:n.syncProps,syncItems:n.syncItems}}),ne=`ui-tabs`,N=e=>e?`active`:`inactive`,P=e=>e.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``)||`tab`,F=(e,t)=>`${e}-tab-${P(t)}`,I=(e,t)=>`${e}-panel-${P(t)}`,L=e=>e instanceof HTMLButtonElement||e instanceof HTMLAnchorElement,R=e=>Array.from(new Set(e)),z=()=>{let n=null,r=null,i=null,a=null,u=null,f,p=null,m=()=>{if(!n)throw Error(`Tabs has not been initialized.`);return n},h=()=>m().id||m().dataset.id||m().dataset.owner||ne,_=e=>e.closest(`[data-ui-tabs]`)===m(),v=e=>s({value:e}),y=()=>Array.from(m().querySelectorAll(`[data-ui-tabs-list]`)).find(_)??null,b=e=>{let t=(e??y())?.dataset.variant;return t===`subtle`||t===`segmented`||t===`pills`?t:`line`},x=e=>(e??y())?.dataset.size===`sm`?`sm`:`md`,w=e=>{let t=(e??y())?.dataset.orientation;return t===`vertical`||t===`horizontal`?t:M().orientation},T=()=>{let e=h(),t=t=>t.dataset.uiTabsOwner===e||t.dataset.owner===e,n=Array.from(m().querySelectorAll(`[data-ui-tabs-panel]`)).filter(_),r=M().panels;if(r){let e=document.querySelector(r);e&&n.push(...Array.from(e.querySelectorAll(`[data-ui-tabs-panel]`)).filter(t))}return n.push(...Array.from(document.querySelectorAll(`[data-ui-tabs-panel][data-ui-tabs-owner="${CSS.escape(e)}"]`)).filter(t)),R(n)},E=e=>T().find(t=>t.dataset.value===e)??null,D=()=>Array.from(m().querySelectorAll(`[data-ui-tabs-tab]`)).filter(_).map((e,t)=>L(e)?(e.dataset.value||=`tab-${t+1}`,{tab:e,value:e.dataset.value,disabled:v(e.dataset.disabled)||e.hasAttribute(`disabled`),panel:E(e.dataset.value)}):null).filter(e=>e!==null),O=e=>D().find(t=>t.value===e)??null,k=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-tabs-tab]`);return t&&_(t)?D().find(e=>e.tab===t)??null:null},A=()=>{let e=D();return{values:e.map(e=>e.value),disabledValues:e.filter(e=>e.disabled).map(e=>e.value),panelIds:Object.fromEntries(e.map(e=>[e.value,e.panel?.id||I(e.tab.dataset.uiTabsOwner||e.tab.dataset.owner||h(),e.value)]))}},j=e=>{let t=A(),n=D().find(e=>v(e.tab.dataset.selected)||e.tab.getAttribute(`aria-selected`)===`true`),r=T().find(e=>v(e.dataset.selected)),i=e.value||e.defaultValue||n?.value||r?.dataset.value||``,a=i&&t.values.includes(i)&&!t.disabledValues.includes(i)?i:t.values.find(e=>!t.disabledValues.includes(e))??``;return{selection:{value:a},change:{previousValue:``,value:a,panelId:t.panelIds[a]??``},collection:t}},M=()=>p??J.getCommittedSnapshot().props,P=()=>J.getCommittedSnapshot().context,z=()=>P().selection.value,B=()=>{let e=D();return e.find(e=>document.activeElement===e.tab||e.tab.dataset.active===`true`)?.tab??e.find(e=>e.value===z())?.tab??null},V=e=>e.querySelector(`:scope > [data-ui-tabs-indicator]`),H=e=>{if(!(e instanceof HTMLElement))return null;let t=e.closest(`[data-ui-tabs-list]`),n=t?V(t):null;if(!t||!n)return null;n.hidden=!1;let r=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=t.dataset.orientation===`vertical`,o=t.dataset.variant===`line`,s=o&&a?2:i.width,c=o&&!a?2:i.height,l=o?Number.parseFloat(getComputedStyle(t).getPropertyValue(`--border-width-edge-separator`))||1:0,u=o&&a?r.left-(s-l)/2:i.left,d=o&&!a?r.bottom-(c+l)/2:i.top;return{indicator:n,styles:{height:c,left:u-r.left,top:d-r.top,width:s}}},U=e=>{e.indicator.style.height=`${e.styles.height}px`,e.indicator.style.left=`${e.styles.left}px`,e.indicator.style.top=`${e.styles.top}px`,e.indicator.style.width=`${e.styles.width}px`},W=e=>{let t=V(e);if(!t)return;let n=D().find(t=>t.value===z()&&t.tab.closest(`[data-ui-tabs-list]`)===e);if(!n){t.hidden=!0,e.dataset.uiTabsReady=``;return}let r=H(n.tab);r&&U(r),e.dataset.uiTabsReady=``},G=()=>{let e=M();!m().id&&e.id&&(m().id=e.id),m().dataset.orientation=e.orientation,m().dataset.activation=e.activation,m().dataset.value=z(),l({el:m(),attr:`data-animate`,present:e.animate})},re=e=>{let t=w(e);e.setAttribute(`role`,`tablist`),e.dataset.orientation=t,t===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`)},ie=e=>{let t=e.value===z(),n=e.tab.closest(`[data-ui-tabs-list]`),r=w(n),i=b(n),a=x(n),o=e.tab.dataset.uiTabsOwner||e.tab.dataset.owner||h(),s=e.tab.querySelector(`[data-ui-tabs-tab-selected-icon]`),c=N(t),u=B();e.tab.id||=F(o,e.value),e.tab.dataset.state=c,e.tab.dataset.orientation=r,e.tab.dataset.variant=i,e.tab.dataset.size=a,e.tab.setAttribute(`role`,`tab`),e.tab.setAttribute(`aria-selected`,t?`true`:`false`),e.tab.setAttribute(`aria-controls`,e.panel?.id||I(o,e.value)),e.tab.tabIndex=e.tab===u?0:-1,l({el:e.tab,attr:`data-selected`,present:t}),s&&(s.style.visibility=t?`visible`:`hidden`),l({el:e.tab,attr:`data-disabled`,present:e.disabled}),e.disabled?(e.tab.setAttribute(`aria-disabled`,`true`),e.tab.tabIndex=-1):e.tab.removeAttribute(`aria-disabled`),e.tab instanceof HTMLButtonElement&&(e.tab.disabled=e.disabled)},ae=e=>{let t=e.dataset.value||``,n=t===z(),r=e.dataset.uiTabsOwner||e.dataset.owner||h(),i=I(r,t);t&&!e.id&&(e.id=i),t&&!e.hasAttribute(`data-ui-key`)&&e.setAttribute(`data-ui-key`,e.id||i),e.dataset.state=N(n),e.dataset.orientation=M().orientation,e.setAttribute(`role`,`tabpanel`),e.setAttribute(`aria-labelledby`,F(r,t)),e.hasAttribute(`tabindex`)||(e.tabIndex=0),e.hidden=!n,l({el:e,attr:`data-selected`,present:n})},K=({indicator:e=!1}={})=>{G();let t=y();t&&re(t),D().forEach(ie),T().forEach(ae),e&&t&&W(t)},oe=()=>{c({el:m(),name:`ui:change`,detail:{value:z()}})},se=(e,t)=>{c({el:e,name:`ui:tabs:activate`,detail:{value:t,panelId:E(t)?.id??``}})},q=()=>{K({indicator:!0}),Z(),Q()},J=d({schema:S,hooks:C,resolveTransitionElement:({data:e})=>O(e.value)?.tab??null,createMachine:({props:e})=>{p=e;let t=j(e);return p=null,te({props:e,context:t,effects:{prepareSwitch:({event:e})=>{K(),e.type===`SELECT`&&oe()},finishSwitch:()=>K(),syncDom:q,syncProps:q,syncItems:()=>{K({indicator:!0}),Q()}}})}}),Y=()=>{if(!r)throw Error(`Tabs navigation has not been initialized.`);return r},X=(e,{tab:t,motion:n=!0}={})=>{let r=z();J.send({type:`SELECT`,value:e,motion:n}),z()!==r&&t&&se(t,z())},ce=e=>{let t=k(e.target);if(!t)return;if(t.disabled){e.preventDefault();return}let n=!(e instanceof MouseEvent)||e.detail>0;X(t.value,{tab:t.tab,motion:n})},le=e=>{u=k(e.target)?.tab??null,window.clearTimeout(f),f=window.setTimeout(()=>{u=null,f=void 0})},ue=e=>{let t=k(e.target);!t||e.target!==t.tab||t.disabled||(Y().activateItem({el:t.tab}),M().activation===`automatic`&&u!==t.tab?X(t.value,{tab:t.tab,motion:!1}):K())},de=e=>{let t=k(e.target);if(!t||e.target!==t.tab)return;if(e.key===` `&&t.tab instanceof HTMLAnchorElement){e.preventDefault(),X(t.value,{tab:t.tab,motion:!1});return}let n=w(t.tab.closest(`[data-ui-tabs-list]`));if(e.key===`Home`){e.preventDefault(),Y().focusFirst();return}if(e.key===`End`){e.preventDefault(),Y().focusLast();return}if(n===`vertical`){e.key===`ArrowDown`?(e.preventDefault(),Y().focusNext()):e.key===`ArrowUp`&&(e.preventDefault(),Y().focusPrevious());return}e.key===`ArrowRight`?(e.preventDefault(),o({el:m()})?Y().focusPrevious():Y().focusNext()):e.key===`ArrowLeft`&&(e.preventDefault(),o({el:m()})?Y().focusNext():Y().focusPrevious())},fe=()=>{let e=A();J.send({type:`ITEMS_CHANGED`,...e})},Z=()=>{i?.();let e=[m()],t=M().panels;if(t){let n=document.querySelector(t);n&&e.push(n)}i=g({targets:R(e),read:A,onChange:fe,observer:{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-disabled`,`disabled`,`data-ui-tabs-owner`,`data-owner`,`data-variant`,`data-size`,`data-orientation`,`data-gap`,`id`]}})},Q=()=>{if(a?.disconnect(),typeof ResizeObserver>`u`)return;a=new ResizeObserver(()=>{if(!n)return;let e=y();e&&W(e)});let e=y();e&&a.observe(e),D().forEach(e=>a?.observe(e.tab))},$;return $={...J,get value(){return this.snapshot.current?.context.selection.value??``},init(){n=this.$el,J.connect(this.$el,this.snapshot),r=ee({root:m,itemSelector:`[data-ui-tabs-tab]`,isDisabled:e=>!_(e)||v(e.dataset.disabled)||e.hasAttribute(`disabled`),loop:()=>M().loop}),K({indicator:!0}),Z(),Q()},destroy(){i?.(),i=null,a?.disconnect(),a=null,window.clearTimeout(f),u=null,f=void 0,J.disconnect(),r=null,n=null},transitionIndicator(n){if(!(n.el instanceof Element))return Promise.resolve();let r=H(n.el);return r?!n.props.animate||n.event.motion===!1?(U(r),e()):t(n,{target:r.indicator,update:()=>U(r),role:`layoutSpring`,transition:{bounce:0}}):Promise.resolve()},get root(){return{"data-ui-tabs":``,":data-orientation":()=>M().orientation,":data-activation":()=>M().activation,":data-animate":()=>M().animate?``:void 0,"@pointerdown":le,"@click":ce,"@focusin":ue,"@keydown":e=>{e instanceof KeyboardEvent&&de(e)}}},select(e){X(e)},isActive(e){return this.snapshot.current?.context.selection.value===e}},$},B=f(`UiTabs`,z),V=new WeakSet,H=e=>{V.has(e)||(V.add(e),n(e),B(e))};export{z as n,H as t};
2
- //# sourceMappingURL=entry.generated-F2czAXCg.js.map
1
+ import{d as e,n as t}from"./motion-BlyJpJAE.js";import{t as n}from"./capability-motion-C8JwDQHB.js";import{f as r,l as i,n as a}from"./codecs-Cb1ns_47.js";import{i as o,n as s,r as c,s as l}from"./dom-qAeVl7dc.js";import{i as u,t as d}from"./alpine-machine-BS13dbK4.js";import{t as f}from"./alpine-data-CytyCyfk.js";import{t as ee}from"./collection-navigation-CfTZUJrL.js";import{t as p}from"./machine-Dqut4h89.js";import{n as m,t as h}from"./props-change-2xfsIAEN.js";import{t as g}from"./semantic-observer-BUswpsNx.js";import{A as _,P as v}from"./common-Dfj6NCjU.js";var y=[`manual`,`automatic`],b=v;[...b];var x=[`auto`,..._],S={id:r.default(`ui-tabs`),animate:a,defaultValue:r,value:r,activation:i(y,`manual`),orientation:i(b,`horizontal`),gap:i(x,`auto`),loop:a.default(!0),panels:r,class:r},C=[u({name:`switching`,state:`switching`,project:e=>e.context.change,onDone:`SWITCH_DONE`,onError:`SWITCH_ERROR`,sends:{select:e=>({type:`SELECT`,value:e})}})],w=e=>typeof e==`string`?e:``,T=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],E=e=>!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`)),D=e=>m(e.event)?.props??e.props,O=e=>e.event.type===`ITEMS_CHANGED`?{values:T(e.event.values),disabledValues:T(e.event.disabledValues),panelIds:E(e.event.panelIds)}:e.context.collection,k=(e,t)=>e&&t.values.includes(e)&&!t.disabledValues.includes(e)?e:t.values.find(e=>!t.disabledValues.includes(e))??``,A=e=>{let t=O(e);if(e.event.type===`SELECT`){let n=w(e.event.value);return n&&t.values.includes(n)&&!t.disabledValues.includes(n)?n:e.context.selection.value}return e.event.type===`PROPS_CHANGED`&&h(e.event,`value`)?k(D(e).value,t):k(e.context.selection.value,t)},j=e=>e.context.selection.value!==A(e),M=(e,t)=>({target:e,guard:j,reduce:`applySwitch`,effects:t}),te=({props:e,context:t,effects:n})=>p({initial:`stable`,on:{DOM_INVALIDATED:{effects:`syncDom`}},states:{stable:{tags:[`stable`],on:{SELECT:M(`switching`,`prepareSwitch`),PROPS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncItems`}]}},switching:{tags:[`switching`,`transitioning`],on:{SWITCH_DONE:{target:`stable`,effects:`finishSwitch`},SWITCH_ERROR:{target:`stable`,effects:`finishSwitch`},SELECT:M(`switching`,`prepareSwitch`),PROPS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncItems`}]}}}},{context:t,props:e,reducers:{applySwitch:e=>{let t=O(e),n=A(e);return{props:D(e),context:{...e.context,selection:{value:n},change:{previousValue:e.context.selection.value,value:n,panelId:t.panelIds[n]??``},collection:t}}},reconcile:e=>({props:D(e),context:{...e.context,collection:O(e),selection:{value:A(e)}}})},effects:{prepareSwitch:n.prepareSwitch,finishSwitch:n.finishSwitch,syncDom:n.syncDom,syncProps:n.syncProps,syncItems:n.syncItems}}),ne=`ui-tabs`,N=e=>e?`active`:`inactive`,P=e=>e.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``)||`tab`,F=(e,t)=>`${e}-tab-${P(t)}`,I=(e,t)=>`${e}-panel-${P(t)}`,L=e=>e instanceof HTMLButtonElement||e instanceof HTMLAnchorElement,R=e=>Array.from(new Set(e)),z=()=>{let n=null,r=null,i=null,a=null,u=null,f,p=null,m=()=>{if(!n)throw Error(`Tabs has not been initialized.`);return n},h=()=>m().id||m().dataset.id||m().dataset.owner||ne,_=e=>e.closest(`[data-ui-tabs]`)===m(),v=e=>s({value:e}),y=()=>Array.from(m().querySelectorAll(`[data-ui-tabs-list]`)).find(_)??null,b=e=>{let t=(e??y())?.dataset.variant;return t===`subtle`||t===`segmented`||t===`pills`?t:`line`},x=e=>(e??y())?.dataset.size===`sm`?`sm`:`md`,w=e=>{let t=(e??y())?.dataset.orientation;return t===`vertical`||t===`horizontal`?t:M().orientation},T=()=>{let e=h(),t=t=>t.dataset.uiTabsOwner===e||t.dataset.owner===e,n=Array.from(m().querySelectorAll(`[data-ui-tabs-panel]`)).filter(_),r=M().panels;if(r){let e=document.querySelector(r);e&&n.push(...Array.from(e.querySelectorAll(`[data-ui-tabs-panel]`)).filter(t))}return n.push(...Array.from(document.querySelectorAll(`[data-ui-tabs-panel][data-ui-tabs-owner="${CSS.escape(e)}"]`)).filter(t)),R(n)},E=e=>T().find(t=>t.dataset.value===e)??null,D=()=>Array.from(m().querySelectorAll(`[data-ui-tabs-tab]`)).filter(_).map((e,t)=>L(e)?(e.dataset.value||=`tab-${t+1}`,{tab:e,value:e.dataset.value,disabled:v(e.dataset.disabled)||e.hasAttribute(`disabled`),panel:E(e.dataset.value)}):null).filter(e=>e!==null),O=e=>D().find(t=>t.value===e)??null,k=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-tabs-tab]`);return t&&_(t)?D().find(e=>e.tab===t)??null:null},A=()=>{let e=D();return{values:e.map(e=>e.value),disabledValues:e.filter(e=>e.disabled).map(e=>e.value),panelIds:Object.fromEntries(e.map(e=>[e.value,e.panel?.id||I(e.tab.dataset.uiTabsOwner||e.tab.dataset.owner||h(),e.value)]))}},j=e=>{let t=A(),n=D().find(e=>v(e.tab.dataset.selected)||e.tab.getAttribute(`aria-selected`)===`true`),r=T().find(e=>v(e.dataset.selected)),i=e.value||e.defaultValue||n?.value||r?.dataset.value||``,a=i&&t.values.includes(i)&&!t.disabledValues.includes(i)?i:t.values.find(e=>!t.disabledValues.includes(e))??``;return{selection:{value:a},change:{previousValue:``,value:a,panelId:t.panelIds[a]??``},collection:t}},M=()=>p??J.getCommittedSnapshot().props,P=()=>J.getCommittedSnapshot().context,z=()=>P().selection.value,B=()=>{let e=D();return e.find(e=>document.activeElement===e.tab||e.tab.dataset.active===`true`)?.tab??e.find(e=>e.value===z())?.tab??null},V=e=>e.querySelector(`:scope > [data-ui-tabs-indicator]`),H=e=>{if(!(e instanceof HTMLElement))return null;let t=e.closest(`[data-ui-tabs-list]`),n=t?V(t):null;if(!t||!n)return null;n.hidden=!1;let r=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=t.dataset.orientation===`vertical`,o=t.dataset.variant===`line`,s=o&&a?2:i.width,c=o&&!a?2:i.height,l=o?Number.parseFloat(getComputedStyle(t).getPropertyValue(`--border-width-edge-separator`))||1:0,u=o&&a?r.left-(s-l)/2:i.left,d=o&&!a?r.bottom-(c+l)/2:i.top;return{indicator:n,styles:{height:c,left:u-r.left,top:d-r.top,width:s}}},U=e=>{e.indicator.style.height=`${e.styles.height}px`,e.indicator.style.left=`${e.styles.left}px`,e.indicator.style.top=`${e.styles.top}px`,e.indicator.style.width=`${e.styles.width}px`},W=e=>{let t=V(e);if(!t)return;let n=D().find(t=>t.value===z()&&t.tab.closest(`[data-ui-tabs-list]`)===e);if(!n){t.hidden=!0,e.dataset.uiTabsReady=``;return}let r=H(n.tab);r&&U(r),e.dataset.uiTabsReady=``},G=()=>{let e=M();!m().id&&e.id&&(m().id=e.id),m().dataset.orientation=e.orientation,m().dataset.activation=e.activation,m().dataset.value=z(),l({el:m(),attr:`data-animate`,present:e.animate})},re=e=>{let t=w(e);e.setAttribute(`role`,`tablist`),e.dataset.orientation=t,t===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`)},ie=e=>{let t=e.value===z(),n=e.tab.closest(`[data-ui-tabs-list]`),r=w(n),i=b(n),a=x(n),o=e.tab.dataset.uiTabsOwner||e.tab.dataset.owner||h(),s=e.tab.querySelector(`[data-ui-tabs-tab-selected-icon]`),c=N(t),u=B();e.tab.id||=F(o,e.value),e.tab.dataset.state=c,e.tab.dataset.orientation=r,e.tab.dataset.variant=i,e.tab.dataset.size=a,e.tab.setAttribute(`role`,`tab`),e.tab.setAttribute(`aria-selected`,t?`true`:`false`),e.tab.setAttribute(`aria-controls`,e.panel?.id||I(o,e.value)),e.tab.tabIndex=e.tab===u?0:-1,l({el:e.tab,attr:`data-selected`,present:t}),s&&(s.style.visibility=t?`visible`:`hidden`),l({el:e.tab,attr:`data-disabled`,present:e.disabled}),e.disabled?(e.tab.setAttribute(`aria-disabled`,`true`),e.tab.tabIndex=-1):e.tab.removeAttribute(`aria-disabled`),e.tab instanceof HTMLButtonElement&&(e.tab.disabled=e.disabled)},ae=e=>{let t=e.dataset.value||``,n=t===z(),r=e.dataset.uiTabsOwner||e.dataset.owner||h(),i=I(r,t);t&&!e.id&&(e.id=i),t&&!e.hasAttribute(`data-ui-key`)&&e.setAttribute(`data-ui-key`,e.id||i),e.dataset.state=N(n),e.dataset.orientation=M().orientation,e.setAttribute(`role`,`tabpanel`),e.setAttribute(`aria-labelledby`,F(r,t)),e.hasAttribute(`tabindex`)||(e.tabIndex=0),e.hidden=!n,l({el:e,attr:`data-selected`,present:n})},K=({indicator:e=!1}={})=>{G();let t=y();t&&re(t),D().forEach(ie),T().forEach(ae),e&&t&&W(t)},oe=()=>{c({el:m(),name:`ui:change`,detail:{value:z()}})},se=(e,t)=>{c({el:e,name:`ui:tabs:activate`,detail:{value:t,panelId:E(t)?.id??``}})},q=()=>{K({indicator:!0}),Z(),Q()},J=d({schema:S,hooks:C,resolveTransitionElement:({data:e})=>O(e.value)?.tab??null,createMachine:({props:e})=>{p=e;let t=j(e);return p=null,te({props:e,context:t,effects:{prepareSwitch:({event:e})=>{K(),e.type===`SELECT`&&oe()},finishSwitch:()=>K(),syncDom:q,syncProps:q,syncItems:()=>{K({indicator:!0}),Q()}}})}}),Y=()=>{if(!r)throw Error(`Tabs navigation has not been initialized.`);return r},X=(e,{tab:t,motion:n=!0}={})=>{let r=z();J.send({type:`SELECT`,value:e,motion:n}),z()!==r&&t&&se(t,z())},ce=e=>{let t=k(e.target);if(!t)return;if(t.disabled){e.preventDefault();return}let n=!(e instanceof MouseEvent)||e.detail>0;X(t.value,{tab:t.tab,motion:n})},le=e=>{u=k(e.target)?.tab??null,window.clearTimeout(f),f=window.setTimeout(()=>{u=null,f=void 0})},ue=e=>{let t=k(e.target);!t||e.target!==t.tab||t.disabled||(Y().activateItem({el:t.tab}),M().activation===`automatic`&&u!==t.tab?X(t.value,{tab:t.tab,motion:!1}):K())},de=e=>{let t=k(e.target);if(!t||e.target!==t.tab)return;if(e.key===` `&&t.tab instanceof HTMLAnchorElement){e.preventDefault(),X(t.value,{tab:t.tab,motion:!1});return}let n=w(t.tab.closest(`[data-ui-tabs-list]`));if(e.key===`Home`){e.preventDefault(),Y().focusFirst();return}if(e.key===`End`){e.preventDefault(),Y().focusLast();return}if(n===`vertical`){e.key===`ArrowDown`?(e.preventDefault(),Y().focusNext()):e.key===`ArrowUp`&&(e.preventDefault(),Y().focusPrevious());return}e.key===`ArrowRight`?(e.preventDefault(),o({el:m()})?Y().focusPrevious():Y().focusNext()):e.key===`ArrowLeft`&&(e.preventDefault(),o({el:m()})?Y().focusNext():Y().focusPrevious())},fe=()=>{let e=A();J.send({type:`ITEMS_CHANGED`,...e})},Z=()=>{i?.();let e=[m()],t=M().panels;if(t){let n=document.querySelector(t);n&&e.push(n)}i=g({targets:R(e),read:A,onChange:fe,observer:{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-disabled`,`disabled`,`data-ui-tabs-owner`,`data-owner`,`data-variant`,`data-size`,`data-orientation`,`data-gap`,`id`]}})},Q=()=>{if(a?.disconnect(),typeof ResizeObserver>`u`)return;a=new ResizeObserver(()=>{if(!n)return;let e=y();e&&W(e)});let e=y();e&&a.observe(e),D().forEach(e=>a?.observe(e.tab))},$;return $={...J,get value(){return this.snapshot.current?.context.selection.value??``},init(){n=this.$el,J.connect(this.$el,this.snapshot),r=ee({root:m,itemSelector:`[data-ui-tabs-tab]`,isDisabled:e=>!_(e)||v(e.dataset.disabled)||e.hasAttribute(`disabled`),loop:()=>M().loop}),K({indicator:!0}),Z(),Q()},destroy(){i?.(),i=null,a?.disconnect(),a=null,window.clearTimeout(f),u=null,f=void 0,J.disconnect(),r=null,n=null},transitionIndicator(n){if(!(n.el instanceof Element))return Promise.resolve();let r=H(n.el);return r?!n.props.animate||n.event.motion===!1?(U(r),e()):t(n,{target:r.indicator,update:()=>U(r),role:`layoutSpring`,transition:{bounce:0}}):Promise.resolve()},get root(){return{"data-ui-tabs":``,":data-orientation":()=>M().orientation,":data-activation":()=>M().activation,":data-animate":()=>M().animate?``:void 0,"@pointerdown":le,"@click":ce,"@focusin":ue,"@keydown":e=>{e instanceof KeyboardEvent&&de(e)}}},select(e){X(e)},isActive(e){return this.snapshot.current?.context.selection.value===e}},$},B=f(`UiTabs`,z),V=new WeakSet,H=e=>{V.has(e)||(V.add(e),n(e),B(e))};export{z as n,H as t};
2
+ //# sourceMappingURL=entry.generated-DRZyI4u3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry.generated-F2czAXCg.js","names":[],"sources":["../../../../../../../../client/src/components/tabs/contract.ts","../../../../../../../../client/src/components/tabs/machine.ts","../../../../../../../../client/src/components/tabs/index.ts","../../../../../../../../client/src/components/tabs/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n INTERACTION_TREATMENTS,\n LAYOUT_SPACES,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type LayoutSpace,\n type Orientation,\n} from '../common';\n\nconst TABS_ACTIVATIONS = ['manual', 'automatic'] as const;\nconst TABS_ORIENTATIONS = ORIENTATIONS;\nconst TABS_LIST_ORIENTATIONS = ['inherit', ...TABS_ORIENTATIONS] as const;\nconst TABS_LIST_GAPS = ['auto', ...LAYOUT_SPACES] as const;\nconst TABS_VARIANTS = ['subtle', 'line', 'segmented', 'pills'] as const;\nconst TABS_SIZES = ['sm', 'md'] as const satisfies readonly ControlSize[];\nconst TABS_COLORS = SELECTION_COLORS;\nconst TABS_INTERACTIONS = INTERACTION_TREATMENTS;\n\nconst tabsSchema = {\n id: string.default('ui-tabs'),\n animate: bool,\n defaultValue: string,\n value: string,\n activation: oneOf(TABS_ACTIVATIONS, 'manual'),\n orientation: oneOf(TABS_ORIENTATIONS, 'horizontal'),\n gap: oneOf(TABS_LIST_GAPS, 'auto'),\n loop: bool.default(true),\n panels: string,\n class: string,\n};\n\ntype TabsActivation = typeof TABS_ACTIVATIONS[number];\ntype TabsOrientation = Orientation;\ntype TabsGap = 'auto' | LayoutSpace;\ntype TabsListOrientation = typeof TABS_LIST_ORIENTATIONS[number];\ntype TabsListGap = TabsGap;\ntype TabsVariant = typeof TABS_VARIANTS[number];\ntype TabsSize = typeof TABS_SIZES[number];\ntype TabsColor = typeof TABS_COLORS[number];\ntype TabsInteraction = typeof TABS_INTERACTIONS[number];\ntype TabsProps = SchemaToProps<typeof tabsSchema>;\n\nexport {\n TABS_ACTIVATIONS,\n TABS_COLORS,\n TABS_INTERACTIONS,\n TABS_LIST_ORIENTATIONS,\n TABS_LIST_GAPS,\n TABS_ORIENTATIONS,\n TABS_SIZES,\n TABS_VARIANTS,\n tabsSchema,\n};\nexport type {\n TabsActivation,\n TabsColor,\n TabsGap,\n TabsListOrientation,\n TabsInteraction,\n TabsListGap,\n TabsOrientation,\n TabsProps,\n TabsSize,\n TabsVariant,\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 {TabsProps} from './contract';\n\ntype TabsContext = {\n selection: {value: string};\n change: {previousValue: string; value: string; panelId: string};\n collection: {values: string[]; disabledValues: string[]; panelIds: Record<string, string>};\n};\n\ntype TabsTransitionData = TabsContext['change'];\n\ntype TabsMachineEffects = {\n prepareSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n finishSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n syncDom(scope: MachineScope<TabsContext, TabsProps>): void;\n syncProps(scope: MachineScope<TabsContext, TabsProps>): void;\n syncItems(scope: MachineScope<TabsContext, TabsProps>): void;\n};\n\ntype CreateTabsMachineOptions = {\n props: TabsProps;\n context: TabsContext;\n effects: TabsMachineEffects;\n};\n\nconst switchingHook = defineHook({\n name: 'switching',\n state: 'switching',\n project: (snapshot) => snapshot.context.change,\n onDone: 'SWITCH_DONE',\n onError: 'SWITCH_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value}),\n },\n} satisfies TransitionHookDefinition<TabsContext, TabsProps, TabsTransitionData, 'switching'>);\n\nconst tabsHooks = [switchingHook] as const;\n\nconst stringValue = (value: unknown): string => typeof value === 'string' ? value : '';\nconst stringValues = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst panelIds = (value: unknown): Record<string, string> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => (\n typeof entry[1] === 'string'\n )));\n};\n\nconst nextProps = (scope: MachineScope<TabsContext, TabsProps>): TabsProps => (\n propsChangedEvent<TabsProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (scope: MachineScope<TabsContext, TabsProps>): TabsContext['collection'] => {\n if (scope.event.type !== 'ITEMS_CHANGED') return scope.context.collection;\n return {\n values: stringValues(scope.event.values),\n disabledValues: stringValues(scope.event.disabledValues),\n panelIds: panelIds(scope.event.panelIds),\n };\n};\n\nconst normalizeValue = (value: string, collection: TabsContext['collection']): string => {\n if (value && collection.values.includes(value) && !collection.disabledValues.includes(value)) return value;\n return collection.values.find((item) => !collection.disabledValues.includes(item)) ?? '';\n};\n\nconst nextValue = (scope: MachineScope<TabsContext, TabsProps>): string => {\n const collection = nextCollection(scope);\n if (scope.event.type === 'SELECT') {\n const requested = stringValue(scope.event.value);\n return requested && collection.values.includes(requested) && !collection.disabledValues.includes(requested)\n ? requested\n : scope.context.selection.value;\n }\n if (scope.event.type === 'PROPS_CHANGED' && propsChanged<TabsProps>(scope.event, 'value')) {\n return normalizeValue(nextProps(scope).value, collection);\n }\n return normalizeValue(scope.context.selection.value, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<TabsContext, TabsProps>): boolean => (\n scope.context.selection.value !== nextValue(scope)\n);\n\nconst transition = (target: 'switching', effects: 'prepareSwitch') => ({\n target,\n guard: selectionChanges,\n reduce: 'applySwitch',\n effects,\n} as const);\n\nconst createTabsMachine = ({\n props,\n context,\n effects,\n}: CreateTabsMachineOptions): Machine<TabsContext, TabsProps> => createMachine<TabsContext, TabsProps>({\n initial: 'stable',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n stable: {\n tags: ['stable'],\n on: {\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n switching: {\n tags: ['switching', 'transitioning'],\n on: {\n SWITCH_DONE: {target: 'stable', effects: 'finishSwitch'},\n SWITCH_ERROR: {target: 'stable', effects: 'finishSwitch'},\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applySwitch: (scope) => {\n const collection = nextCollection(scope);\n const value = nextValue(scope);\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {value},\n change: {\n previousValue: scope.context.selection.value,\n value,\n panelId: collection.panelIds[value] ?? '',\n },\n collection,\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {value: nextValue(scope)},\n },\n }),\n },\n effects: {\n prepareSwitch: effects.prepareSwitch,\n finishSwitch: effects.finishSwitch,\n syncDom: effects.syncDom,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {createTabsMachine, tabsHooks};\nexport type {\n CreateTabsMachineOptions,\n TabsContext,\n TabsMachineEffects,\n TabsTransitionData,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n type BindingObject,\n createAlpineMachine,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n type MachineSnapshot,\n observeSemanticChanges,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {asBool, dispatch, isRtl, setPresence} from '@client/utils';\nimport {\n tabsSchema,\n type TabsOrientation,\n type TabsProps,\n type TabsSize,\n type TabsVariant,\n} from './contract';\nimport {\n createTabsMachine,\n type TabsContext,\n tabsHooks,\n type TabsTransitionData,\n} from './machine';\n\ntype TabsTransitionName = (typeof tabsHooks)[number]['name'];\ntype TabsTransition<TName extends TabsTransitionName = TabsTransitionName> = TransitionForHook<\n Extract<(typeof tabsHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype IndicatorFrame = {indicator: HTMLElement; styles: {\n height: number;\n left: number;\n top: number;\n width: number;\n}};\n\ntype TabsTabElement = HTMLButtonElement | HTMLAnchorElement;\n\ntype TabsItem = {\n tab: TabsTabElement;\n value: string;\n disabled: boolean;\n panel: HTMLElement | null;\n};\n\ntype TabsChangeDetail = {value: string};\ntype TabsActivateDetail = {value: string; panelId: string};\n\n/**\n * Public Alpine API for `ui.tabs`.\n *\n * @public\n */\ninterface UiTabsApi {\n /** Currently selected tab value. */\n readonly value: string;\n\n /** Select an enabled tab that belongs to this Tabs owner. */\n select(value: string): void;\n\n /** Whether `value` is currently selected. */\n isActive(value: string): boolean;\n}\n\ntype TabsData = AlpineMachine<TabsContext, TabsProps, typeof tabsHooks> & UiTabsApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void>;\n};\n\ntype TabsMotionTransition = MotionTransitionSubject & Readonly<{\n el: unknown;\n event: {motion?: boolean};\n props: {animate: boolean};\n}>;\n\nconst DEFAULT_OWNER = 'ui-tabs';\nconst stateFor = (active: boolean): 'active' | 'inactive' => active ? 'active' : 'inactive';\nconst safeIdPart = (value: string): string => {\n const sanitized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');\n return sanitized || 'tab';\n};\nconst tabIdFor = (owner: string, value: string): string => `${owner}-tab-${safeIdPart(value)}`;\nconst panelIdFor = (owner: string, value: string): string => `${owner}-panel-${safeIdPart(value)}`;\nconst isTabElement = (element: Element | null): element is TabsTabElement => (\n element instanceof HTMLButtonElement || element instanceof HTMLAnchorElement\n);\nconst uniqueElements = <T extends HTMLElement>(elements: T[]): T[] => Array.from(new Set(elements));\n\nconst UiTabs = (): TrellisAlpineComponent<TabsData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let pointerFocusedTab: TabsTabElement | null = null;\n let pointerFocusReset: number | undefined;\n let connectingProps: TabsProps | null = null;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Tabs has not been initialized.');\n return rootEl;\n };\n const owner = (): string => root().id || root().dataset.id || root().dataset.owner || DEFAULT_OWNER;\n const owns = (element: Element): boolean => element.closest('[data-ui-tabs]') === root();\n const boolDataset = (value: string | undefined): boolean => asBool({value});\n\n const primaryList = (): HTMLElement | null => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-list]'),\n ).find(owns) ?? null;\n\n const listVariant = (list?: HTMLElement | null): TabsVariant => {\n const value = (list ?? primaryList())?.dataset.variant;\n if (value === 'subtle' || value === 'segmented' || value === 'pills') return value;\n return 'line';\n };\n const listSize = (list?: HTMLElement | null): TabsSize => (\n (list ?? primaryList())?.dataset.size === 'sm' ? 'sm' : 'md'\n );\n const listOrientation = (list?: HTMLElement | null): TabsOrientation => {\n const value = (list ?? primaryList())?.dataset.orientation;\n return value === 'vertical' || value === 'horizontal' ? value : currentProps().orientation;\n };\n\n const panels = (): HTMLElement[] => {\n const ownerId = owner();\n const detached = (panel: HTMLElement): boolean => (\n panel.dataset.uiTabsOwner === ownerId || panel.dataset.owner === ownerId\n );\n const found = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-tabs-panel]')).filter(owns);\n const selector = currentProps().panels;\n if (selector) {\n const target = document.querySelector<HTMLElement>(selector);\n if (target) found.push(...Array.from(\n target.querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(detached));\n }\n found.push(...Array.from(document.querySelectorAll<HTMLElement>(\n `[data-ui-tabs-panel][data-ui-tabs-owner=\"${CSS.escape(ownerId)}\"]`,\n )).filter(detached));\n return uniqueElements(found);\n };\n\n const panelForValue = (value: string): HTMLElement | null => (\n panels().find((panel) => panel.dataset.value === value) ?? null\n );\n\n const items = (): TabsItem[] => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-tab]'),\n ).filter(owns).map((element, index) => {\n if (!isTabElement(element)) return null;\n element.dataset.value ||= `tab-${index + 1}`;\n return {\n tab: element,\n value: element.dataset.value,\n disabled: boolDataset(element.dataset.disabled) || element.hasAttribute('disabled'),\n panel: panelForValue(element.dataset.value),\n } satisfies TabsItem;\n }).filter((item): item is TabsItem => item !== null);\n\n const itemForValue = (value: string): TabsItem | null => items().find((item) => item.value === value) ?? null;\n const itemFrom = (target: EventTarget | null): TabsItem | null => {\n if (!(target instanceof Element)) return null;\n const tab = target.closest<HTMLElement>('[data-ui-tabs-tab]');\n return tab && owns(tab) ? items().find((item) => item.tab === tab) ?? null : null;\n };\n\n const collectionContext = (): TabsContext['collection'] => {\n const records = items();\n return {\n values: records.map((item) => item.value),\n disabledValues: records.filter((item) => item.disabled).map((item) => item.value),\n panelIds: Object.fromEntries(records.map((item) => [\n item.value,\n item.panel?.id || panelIdFor(item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner(), item.value),\n ])),\n };\n };\n\n const initialContext = (props: TabsProps): TabsContext => {\n const collectionState = collectionContext();\n const authoredTab = items().find((item) => (\n boolDataset(item.tab.dataset.selected) || item.tab.getAttribute('aria-selected') === 'true'\n ));\n const authoredPanel = panels().find((panel) => boolDataset(panel.dataset.selected));\n const requested = props.value || props.defaultValue || authoredTab?.value || authoredPanel?.dataset.value || '';\n const value = requested\n && collectionState.values.includes(requested)\n && !collectionState.disabledValues.includes(requested)\n ? requested\n : collectionState.values.find((item) => !collectionState.disabledValues.includes(item)) ?? '';\n return {\n selection: {value},\n change: {previousValue: '', value, panelId: collectionState.panelIds[value] ?? ''},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<TabsProps> => (\n connectingProps ?? bridge.getCommittedSnapshot().props\n );\n const currentContext = (): Readonly<TabsContext> => bridge.getCommittedSnapshot().context;\n\n const activeValue = (): string => currentContext().selection.value;\n const activeTabStop = (): TabsTabElement | null => {\n const records = items();\n const focused = records.find((item) => document.activeElement === item.tab || item.tab.dataset.active === 'true');\n return focused?.tab ?? records.find((item) => item.value === activeValue())?.tab ?? null;\n };\n\n const indicatorFor = (list: HTMLElement): HTMLElement | null => (\n list.querySelector<HTMLElement>(':scope > [data-ui-tabs-indicator]')\n );\n const indicatorFrame = (tab: Element): IndicatorFrame | null => {\n if (!(tab instanceof HTMLElement)) return null;\n const list = tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const indicator = list ? indicatorFor(list) : null;\n if (!list || !indicator) return null;\n indicator.hidden = false;\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n const vertical = list.dataset.orientation === 'vertical';\n const line = list.dataset.variant === 'line';\n const width = line && vertical ? 2 : tabRect.width;\n const height = line && !vertical ? 2 : tabRect.height;\n const separatorWidth = line\n ? Number.parseFloat(getComputedStyle(list).getPropertyValue('--border-width-edge-separator')) || 1\n : 0;\n const targetLeft = line && vertical\n ? listRect.left - ((width - separatorWidth) / 2)\n : tabRect.left;\n const targetTop = line && !vertical\n ? listRect.bottom - ((height + separatorWidth) / 2)\n : tabRect.top;\n return {\n indicator,\n styles: {\n height,\n left: targetLeft - listRect.left,\n top: targetTop - listRect.top,\n width,\n },\n };\n };\n const applyIndicatorFrame = (frame: IndicatorFrame): void => {\n frame.indicator.style.height = `${frame.styles.height}px`;\n frame.indicator.style.left = `${frame.styles.left}px`;\n frame.indicator.style.top = `${frame.styles.top}px`;\n frame.indicator.style.width = `${frame.styles.width}px`;\n };\n const positionIndicator = (list: HTMLElement): void => {\n const indicator = indicatorFor(list);\n if (!indicator) return;\n const active = items().find((item) => (\n item.value === activeValue() && item.tab.closest('[data-ui-tabs-list]') === list\n ));\n if (!active) {\n indicator.hidden = true;\n list.dataset.uiTabsReady = '';\n return;\n }\n const frame = indicatorFrame(active.tab);\n if (frame) applyIndicatorFrame(frame);\n list.dataset.uiTabsReady = '';\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (!root().id && props.id) root().id = props.id;\n root().dataset.orientation = props.orientation;\n root().dataset.activation = props.activation;\n root().dataset.value = activeValue();\n setPresence({el: root(), attr: 'data-animate', present: props.animate});\n };\n\n const syncList = (list: HTMLElement): void => {\n const orientation = listOrientation(list);\n list.setAttribute('role', 'tablist');\n list.dataset.orientation = orientation;\n if (orientation === 'vertical') list.setAttribute('aria-orientation', 'vertical');\n else list.removeAttribute('aria-orientation');\n };\n\n const syncTab = (item: TabsItem): void => {\n const active = item.value === activeValue();\n const list = item.tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const orientation = listOrientation(list);\n const variant = listVariant(list);\n const size = listSize(list);\n const ownerId = item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner();\n const selectedIcon = item.tab.querySelector<HTMLElement>('[data-ui-tabs-tab-selected-icon]');\n const state = stateFor(active);\n const tabStop = activeTabStop();\n\n item.tab.id ||= tabIdFor(ownerId, item.value);\n item.tab.dataset.state = state;\n item.tab.dataset.orientation = orientation;\n item.tab.dataset.variant = variant;\n item.tab.dataset.size = size;\n item.tab.setAttribute('role', 'tab');\n item.tab.setAttribute('aria-selected', active ? 'true' : 'false');\n item.tab.setAttribute('aria-controls', item.panel?.id || panelIdFor(ownerId, item.value));\n item.tab.tabIndex = item.tab === tabStop ? 0 : -1;\n setPresence({el: item.tab, attr: 'data-selected', present: active});\n if (selectedIcon) selectedIcon.style.visibility = active ? 'visible' : 'hidden';\n\n setPresence({el: item.tab, attr: 'data-disabled', present: item.disabled});\n if (item.disabled) {\n item.tab.setAttribute('aria-disabled', 'true');\n item.tab.tabIndex = -1;\n } else item.tab.removeAttribute('aria-disabled');\n if (item.tab instanceof HTMLButtonElement) item.tab.disabled = item.disabled;\n };\n\n const syncPanel = (panel: HTMLElement): void => {\n const value = panel.dataset.value || '';\n const active = value === activeValue();\n const ownerId = panel.dataset.uiTabsOwner || panel.dataset.owner || owner();\n const id = panelIdFor(ownerId, value);\n if (value && !panel.id) panel.id = id;\n if (value && !panel.hasAttribute('data-ui-key')) panel.setAttribute('data-ui-key', panel.id || id);\n panel.dataset.state = stateFor(active);\n panel.dataset.orientation = currentProps().orientation;\n panel.setAttribute('role', 'tabpanel');\n panel.setAttribute('aria-labelledby', tabIdFor(ownerId, value));\n if (!panel.hasAttribute('tabindex')) panel.tabIndex = 0;\n panel.hidden = !active;\n setPresence({el: panel, attr: 'data-selected', present: active});\n };\n\n const syncAll = ({indicator = false}: {indicator?: boolean} = {}): void => {\n syncRoot();\n const tabList = primaryList();\n if (tabList) syncList(tabList);\n items().forEach(syncTab);\n panels().forEach(syncPanel);\n if (indicator && tabList) positionIndicator(tabList);\n };\n\n const emitChange = (): void => {\n dispatch<TabsChangeDetail>({el: root(), name: 'ui:change', detail: {value: activeValue()}});\n };\n const emitActivate = (tab: TabsTabElement, value: string): void => {\n dispatch<TabsActivateDetail>({\n el: tab,\n name: 'ui:tabs:activate',\n detail: {value, panelId: panelForValue(value)?.id ?? ''},\n });\n };\n const syncDom = (): void => {\n syncAll({indicator: true});\n setupObservers();\n setupResizeObserver();\n };\n\n const bridge = createAlpineMachine({\n schema: tabsSchema,\n hooks: tabsHooks,\n resolveTransitionElement: ({data}) => itemForValue((data as TabsTransitionData).value)?.tab ?? null,\n createMachine: ({props}) => {\n connectingProps = props;\n const context = initialContext(props);\n connectingProps = null;\n return createTabsMachine({\n props,\n context,\n effects: {\n prepareSwitch: ({event}) => {\n syncAll();\n if (event.type === 'SELECT') emitChange();\n },\n finishSwitch: () => syncAll(),\n syncDom,\n syncProps: syncDom,\n syncItems: () => {\n syncAll({indicator: true});\n setupResizeObserver();\n },\n },\n });\n },\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Tabs navigation has not been initialized.');\n return collection;\n };\n\n const selectValue = (value: string, {tab, motion = true}: {\n tab?: TabsTabElement;\n motion?: boolean;\n } = {}): void => {\n const previous = activeValue();\n bridge.send({type: 'SELECT', value, motion});\n if (activeValue() !== previous && tab) emitActivate(tab, activeValue());\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item) return;\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n const motion = !(event instanceof MouseEvent) || event.detail > 0;\n selectValue(item.value, {tab: item.tab, motion});\n };\n\n const handlePointerDown = (event: Event): void => {\n pointerFocusedTab = itemFrom(event.target)?.tab ?? null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusReset = window.setTimeout(() => {\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n });\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.tab || item.disabled) return;\n collectionNav().activateItem({el: item.tab});\n if (currentProps().activation === 'automatic' && pointerFocusedTab !== item.tab) {\n selectValue(item.value, {tab: item.tab, motion: false});\n } else syncAll();\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.tab) return;\n if (event.key === ' ' && item.tab instanceof HTMLAnchorElement) {\n event.preventDefault();\n selectValue(item.value, {tab: item.tab, motion: false});\n return;\n }\n const orientation = listOrientation(item.tab.closest<HTMLElement>('[data-ui-tabs-list]'));\n if (event.key === 'Home') {\n event.preventDefault();\n collectionNav().focusFirst();\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n collectionNav().focusLast();\n return;\n }\n if (orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n collectionNav().focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n collectionNav().focusPrevious();\n }\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusPrevious();\n else collectionNav().focusNext();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusNext();\n else collectionNav().focusPrevious();\n }\n };\n\n const sendItemsChanged = (): void => {\n const next = collectionContext();\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const setupObservers = (): void => {\n disconnectObserver?.();\n const targets = [root()];\n const selector = currentProps().panels;\n if (selector) {\n const detached = document.querySelector<HTMLElement>(selector);\n if (detached) targets.push(detached);\n }\n disconnectObserver = observeSemanticChanges({\n targets: uniqueElements(targets),\n read: collectionContext,\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\n 'data-value',\n 'data-disabled',\n 'disabled',\n 'data-ui-tabs-owner',\n 'data-owner',\n 'data-variant',\n 'data-size',\n 'data-orientation',\n 'data-gap',\n 'id',\n ],\n },\n });\n };\n\n const setupResizeObserver = (): void => {\n resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n resizeObserver = new ResizeObserver(() => {\n if (!rootEl) return;\n const list = primaryList();\n if (list) positionIndicator(list);\n });\n const list = primaryList();\n if (list) resizeObserver.observe(list);\n items().forEach((item) => resizeObserver?.observe(item.tab));\n };\n\n let component!: TrellisAlpineComponent<TabsData>;\n component = {\n ...bridge,\n get value(): string {\n return this.snapshot.current?.context.selection.value ?? '';\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-tabs-tab]',\n isDisabled: (element) => !owns(element)\n || boolDataset(element.dataset.disabled)\n || element.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n syncAll({indicator: true});\n setupObservers();\n setupResizeObserver();\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n resizeObserver?.disconnect();\n resizeObserver = null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void> {\n if (!(transition.el instanceof Element)) return Promise.resolve();\n const frame = indicatorFrame(transition.el);\n if (!frame) return Promise.resolve();\n if (!transition.props.animate || transition.event.motion === false) {\n applyIndicatorFrame(frame);\n return noopHandle();\n }\n\n return flip(transition, {\n target: frame.indicator,\n update: () => applyIndicatorFrame(frame),\n role: 'layoutSpring',\n transition: {bounce: 0},\n });\n },\n get root(): BindingObject {\n return {\n 'data-ui-tabs': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-activation': () => currentProps().activation,\n ':data-animate': () => currentProps().animate ? '' : undefined,\n '@pointerdown': handlePointerDown,\n '@click': handleClick,\n '@focusin': handleFocus,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n };\n },\n select(value: string): void {\n selectValue(value);\n },\n isActive(value: string): boolean {\n return this.snapshot.current?.context.selection.value === value;\n },\n };\n\n return component;\n};\n\nconst registerTabs = defineAlpineData('UiTabs', UiTabs);\n\nexport {registerTabs, UiTabs};\nexport type {TabsActivateDetail, TabsChangeDetail, TabsTransition, UiTabsApi};\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 {registerTabs as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerTabs = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerTabs};\nexport default registerTabs;\nexport * from './index';\n"],"mappings":"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"}
1
+ {"version":3,"file":"entry.generated-DRZyI4u3.js","names":[],"sources":["../../../../../../../../client/src/components/tabs/contract.ts","../../../../../../../../client/src/components/tabs/machine.ts","../../../../../../../../client/src/components/tabs/index.ts","../../../../../../../../client/src/components/tabs/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n INTERACTION_TREATMENTS,\n LAYOUT_SPACES,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type LayoutSpace,\n type Orientation,\n} from '../common';\n\nconst TABS_ACTIVATIONS = ['manual', 'automatic'] as const;\nconst TABS_ORIENTATIONS = ORIENTATIONS;\nconst TABS_LIST_ORIENTATIONS = ['inherit', ...TABS_ORIENTATIONS] as const;\nconst TABS_LIST_GAPS = ['auto', ...LAYOUT_SPACES] as const;\nconst TABS_VARIANTS = ['subtle', 'line', 'segmented', 'pills'] as const;\nconst TABS_SIZES = ['sm', 'md'] as const satisfies readonly ControlSize[];\nconst TABS_COLORS = SELECTION_COLORS;\nconst TABS_INTERACTIONS = INTERACTION_TREATMENTS;\n\nconst tabsSchema = {\n id: string.default('ui-tabs'),\n animate: bool,\n defaultValue: string,\n value: string,\n activation: oneOf(TABS_ACTIVATIONS, 'manual'),\n orientation: oneOf(TABS_ORIENTATIONS, 'horizontal'),\n gap: oneOf(TABS_LIST_GAPS, 'auto'),\n loop: bool.default(true),\n panels: string,\n class: string,\n};\n\ntype TabsActivation = typeof TABS_ACTIVATIONS[number];\ntype TabsOrientation = Orientation;\ntype TabsGap = 'auto' | LayoutSpace;\ntype TabsListOrientation = typeof TABS_LIST_ORIENTATIONS[number];\ntype TabsListGap = TabsGap;\ntype TabsVariant = typeof TABS_VARIANTS[number];\ntype TabsSize = typeof TABS_SIZES[number];\ntype TabsColor = typeof TABS_COLORS[number];\ntype TabsInteraction = typeof TABS_INTERACTIONS[number];\ntype TabsProps = SchemaToProps<typeof tabsSchema>;\n\nexport {\n TABS_ACTIVATIONS,\n TABS_COLORS,\n TABS_INTERACTIONS,\n TABS_LIST_ORIENTATIONS,\n TABS_LIST_GAPS,\n TABS_ORIENTATIONS,\n TABS_SIZES,\n TABS_VARIANTS,\n tabsSchema,\n};\nexport type {\n TabsActivation,\n TabsColor,\n TabsGap,\n TabsListOrientation,\n TabsInteraction,\n TabsListGap,\n TabsOrientation,\n TabsProps,\n TabsSize,\n TabsVariant,\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 {TabsProps} from './contract';\n\ntype TabsContext = {\n selection: {value: string};\n change: {previousValue: string; value: string; panelId: string};\n collection: {values: string[]; disabledValues: string[]; panelIds: Record<string, string>};\n};\n\ntype TabsTransitionData = TabsContext['change'];\n\ntype TabsMachineEffects = {\n prepareSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n finishSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n syncDom(scope: MachineScope<TabsContext, TabsProps>): void;\n syncProps(scope: MachineScope<TabsContext, TabsProps>): void;\n syncItems(scope: MachineScope<TabsContext, TabsProps>): void;\n};\n\ntype CreateTabsMachineOptions = {\n props: TabsProps;\n context: TabsContext;\n effects: TabsMachineEffects;\n};\n\nconst switchingHook = defineHook({\n name: 'switching',\n state: 'switching',\n project: (snapshot) => snapshot.context.change,\n onDone: 'SWITCH_DONE',\n onError: 'SWITCH_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value}),\n },\n} satisfies TransitionHookDefinition<TabsContext, TabsProps, TabsTransitionData, 'switching'>);\n\nconst tabsHooks = [switchingHook] as const;\n\nconst stringValue = (value: unknown): string => typeof value === 'string' ? value : '';\nconst stringValues = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst panelIds = (value: unknown): Record<string, string> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => (\n typeof entry[1] === 'string'\n )));\n};\n\nconst nextProps = (scope: MachineScope<TabsContext, TabsProps>): TabsProps => (\n propsChangedEvent<TabsProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (scope: MachineScope<TabsContext, TabsProps>): TabsContext['collection'] => {\n if (scope.event.type !== 'ITEMS_CHANGED') return scope.context.collection;\n return {\n values: stringValues(scope.event.values),\n disabledValues: stringValues(scope.event.disabledValues),\n panelIds: panelIds(scope.event.panelIds),\n };\n};\n\nconst normalizeValue = (value: string, collection: TabsContext['collection']): string => {\n if (value && collection.values.includes(value) && !collection.disabledValues.includes(value)) return value;\n return collection.values.find((item) => !collection.disabledValues.includes(item)) ?? '';\n};\n\nconst nextValue = (scope: MachineScope<TabsContext, TabsProps>): string => {\n const collection = nextCollection(scope);\n if (scope.event.type === 'SELECT') {\n const requested = stringValue(scope.event.value);\n return requested && collection.values.includes(requested) && !collection.disabledValues.includes(requested)\n ? requested\n : scope.context.selection.value;\n }\n if (scope.event.type === 'PROPS_CHANGED' && propsChanged<TabsProps>(scope.event, 'value')) {\n return normalizeValue(nextProps(scope).value, collection);\n }\n return normalizeValue(scope.context.selection.value, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<TabsContext, TabsProps>): boolean => (\n scope.context.selection.value !== nextValue(scope)\n);\n\nconst transition = (target: 'switching', effects: 'prepareSwitch') => ({\n target,\n guard: selectionChanges,\n reduce: 'applySwitch',\n effects,\n} as const);\n\nconst createTabsMachine = ({\n props,\n context,\n effects,\n}: CreateTabsMachineOptions): Machine<TabsContext, TabsProps> => createMachine<TabsContext, TabsProps>({\n initial: 'stable',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n stable: {\n tags: ['stable'],\n on: {\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n switching: {\n tags: ['switching', 'transitioning'],\n on: {\n SWITCH_DONE: {target: 'stable', effects: 'finishSwitch'},\n SWITCH_ERROR: {target: 'stable', effects: 'finishSwitch'},\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applySwitch: (scope) => {\n const collection = nextCollection(scope);\n const value = nextValue(scope);\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {value},\n change: {\n previousValue: scope.context.selection.value,\n value,\n panelId: collection.panelIds[value] ?? '',\n },\n collection,\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {value: nextValue(scope)},\n },\n }),\n },\n effects: {\n prepareSwitch: effects.prepareSwitch,\n finishSwitch: effects.finishSwitch,\n syncDom: effects.syncDom,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {createTabsMachine, tabsHooks};\nexport type {\n CreateTabsMachineOptions,\n TabsContext,\n TabsMachineEffects,\n TabsTransitionData,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n type BindingObject,\n createAlpineMachine,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n type MachineSnapshot,\n observeSemanticChanges,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {asBool, dispatch, isRtl, setPresence} from '@client/utils';\nimport {\n tabsSchema,\n type TabsOrientation,\n type TabsProps,\n type TabsSize,\n type TabsVariant,\n} from './contract';\nimport {\n createTabsMachine,\n type TabsContext,\n tabsHooks,\n type TabsTransitionData,\n} from './machine';\n\ntype TabsTransitionName = (typeof tabsHooks)[number]['name'];\ntype TabsTransition<TName extends TabsTransitionName = TabsTransitionName> = TransitionForHook<\n Extract<(typeof tabsHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype IndicatorFrame = {indicator: HTMLElement; styles: {\n height: number;\n left: number;\n top: number;\n width: number;\n}};\n\ntype TabsTabElement = HTMLButtonElement | HTMLAnchorElement;\n\ntype TabsItem = {\n tab: TabsTabElement;\n value: string;\n disabled: boolean;\n panel: HTMLElement | null;\n};\n\ntype TabsChangeDetail = {value: string};\ntype TabsActivateDetail = {value: string; panelId: string};\n\n/**\n * Public Alpine API for `ui.tabs`.\n *\n * @public\n */\ninterface UiTabsApi {\n /** Currently selected tab value. */\n readonly value: string;\n\n /** Select an enabled tab that belongs to this Tabs owner. */\n select(value: string): void;\n\n /** Whether `value` is currently selected. */\n isActive(value: string): boolean;\n}\n\ntype TabsData = AlpineMachine<TabsContext, TabsProps, typeof tabsHooks> & UiTabsApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void>;\n};\n\ntype TabsMotionTransition = MotionTransitionSubject & Readonly<{\n el: unknown;\n event: {motion?: boolean};\n props: {animate: boolean};\n}>;\n\nconst DEFAULT_OWNER = 'ui-tabs';\nconst stateFor = (active: boolean): 'active' | 'inactive' => active ? 'active' : 'inactive';\nconst safeIdPart = (value: string): string => {\n const sanitized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');\n return sanitized || 'tab';\n};\nconst tabIdFor = (owner: string, value: string): string => `${owner}-tab-${safeIdPart(value)}`;\nconst panelIdFor = (owner: string, value: string): string => `${owner}-panel-${safeIdPart(value)}`;\nconst isTabElement = (element: Element | null): element is TabsTabElement => (\n element instanceof HTMLButtonElement || element instanceof HTMLAnchorElement\n);\nconst uniqueElements = <T extends HTMLElement>(elements: T[]): T[] => Array.from(new Set(elements));\n\nconst UiTabs = (): TrellisAlpineComponent<TabsData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let pointerFocusedTab: TabsTabElement | null = null;\n let pointerFocusReset: number | undefined;\n let connectingProps: TabsProps | null = null;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Tabs has not been initialized.');\n return rootEl;\n };\n const owner = (): string => root().id || root().dataset.id || root().dataset.owner || DEFAULT_OWNER;\n const owns = (element: Element): boolean => element.closest('[data-ui-tabs]') === root();\n const boolDataset = (value: string | undefined): boolean => asBool({value});\n\n const primaryList = (): HTMLElement | null => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-list]'),\n ).find(owns) ?? null;\n\n const listVariant = (list?: HTMLElement | null): TabsVariant => {\n const value = (list ?? primaryList())?.dataset.variant;\n if (value === 'subtle' || value === 'segmented' || value === 'pills') return value;\n return 'line';\n };\n const listSize = (list?: HTMLElement | null): TabsSize => (\n (list ?? primaryList())?.dataset.size === 'sm' ? 'sm' : 'md'\n );\n const listOrientation = (list?: HTMLElement | null): TabsOrientation => {\n const value = (list ?? primaryList())?.dataset.orientation;\n return value === 'vertical' || value === 'horizontal' ? value : currentProps().orientation;\n };\n\n const panels = (): HTMLElement[] => {\n const ownerId = owner();\n const detached = (panel: HTMLElement): boolean => (\n panel.dataset.uiTabsOwner === ownerId || panel.dataset.owner === ownerId\n );\n const found = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-tabs-panel]')).filter(owns);\n const selector = currentProps().panels;\n if (selector) {\n const target = document.querySelector<HTMLElement>(selector);\n if (target) found.push(...Array.from(\n target.querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(detached));\n }\n found.push(...Array.from(document.querySelectorAll<HTMLElement>(\n `[data-ui-tabs-panel][data-ui-tabs-owner=\"${CSS.escape(ownerId)}\"]`,\n )).filter(detached));\n return uniqueElements(found);\n };\n\n const panelForValue = (value: string): HTMLElement | null => (\n panels().find((panel) => panel.dataset.value === value) ?? null\n );\n\n const items = (): TabsItem[] => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-tab]'),\n ).filter(owns).map((element, index) => {\n if (!isTabElement(element)) return null;\n element.dataset.value ||= `tab-${index + 1}`;\n return {\n tab: element,\n value: element.dataset.value,\n disabled: boolDataset(element.dataset.disabled) || element.hasAttribute('disabled'),\n panel: panelForValue(element.dataset.value),\n } satisfies TabsItem;\n }).filter((item): item is TabsItem => item !== null);\n\n const itemForValue = (value: string): TabsItem | null => items().find((item) => item.value === value) ?? null;\n const itemFrom = (target: EventTarget | null): TabsItem | null => {\n if (!(target instanceof Element)) return null;\n const tab = target.closest<HTMLElement>('[data-ui-tabs-tab]');\n return tab && owns(tab) ? items().find((item) => item.tab === tab) ?? null : null;\n };\n\n const collectionContext = (): TabsContext['collection'] => {\n const records = items();\n return {\n values: records.map((item) => item.value),\n disabledValues: records.filter((item) => item.disabled).map((item) => item.value),\n panelIds: Object.fromEntries(records.map((item) => [\n item.value,\n item.panel?.id || panelIdFor(item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner(), item.value),\n ])),\n };\n };\n\n const initialContext = (props: TabsProps): TabsContext => {\n const collectionState = collectionContext();\n const authoredTab = items().find((item) => (\n boolDataset(item.tab.dataset.selected) || item.tab.getAttribute('aria-selected') === 'true'\n ));\n const authoredPanel = panels().find((panel) => boolDataset(panel.dataset.selected));\n const requested = props.value || props.defaultValue || authoredTab?.value || authoredPanel?.dataset.value || '';\n const value = requested\n && collectionState.values.includes(requested)\n && !collectionState.disabledValues.includes(requested)\n ? requested\n : collectionState.values.find((item) => !collectionState.disabledValues.includes(item)) ?? '';\n return {\n selection: {value},\n change: {previousValue: '', value, panelId: collectionState.panelIds[value] ?? ''},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<TabsProps> => (\n connectingProps ?? bridge.getCommittedSnapshot().props\n );\n const currentContext = (): Readonly<TabsContext> => bridge.getCommittedSnapshot().context;\n\n const activeValue = (): string => currentContext().selection.value;\n const activeTabStop = (): TabsTabElement | null => {\n const records = items();\n const focused = records.find((item) => document.activeElement === item.tab || item.tab.dataset.active === 'true');\n return focused?.tab ?? records.find((item) => item.value === activeValue())?.tab ?? null;\n };\n\n const indicatorFor = (list: HTMLElement): HTMLElement | null => (\n list.querySelector<HTMLElement>(':scope > [data-ui-tabs-indicator]')\n );\n const indicatorFrame = (tab: Element): IndicatorFrame | null => {\n if (!(tab instanceof HTMLElement)) return null;\n const list = tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const indicator = list ? indicatorFor(list) : null;\n if (!list || !indicator) return null;\n indicator.hidden = false;\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n const vertical = list.dataset.orientation === 'vertical';\n const line = list.dataset.variant === 'line';\n const width = line && vertical ? 2 : tabRect.width;\n const height = line && !vertical ? 2 : tabRect.height;\n const separatorWidth = line\n ? Number.parseFloat(getComputedStyle(list).getPropertyValue('--border-width-edge-separator')) || 1\n : 0;\n const targetLeft = line && vertical\n ? listRect.left - ((width - separatorWidth) / 2)\n : tabRect.left;\n const targetTop = line && !vertical\n ? listRect.bottom - ((height + separatorWidth) / 2)\n : tabRect.top;\n return {\n indicator,\n styles: {\n height,\n left: targetLeft - listRect.left,\n top: targetTop - listRect.top,\n width,\n },\n };\n };\n const applyIndicatorFrame = (frame: IndicatorFrame): void => {\n frame.indicator.style.height = `${frame.styles.height}px`;\n frame.indicator.style.left = `${frame.styles.left}px`;\n frame.indicator.style.top = `${frame.styles.top}px`;\n frame.indicator.style.width = `${frame.styles.width}px`;\n };\n const positionIndicator = (list: HTMLElement): void => {\n const indicator = indicatorFor(list);\n if (!indicator) return;\n const active = items().find((item) => (\n item.value === activeValue() && item.tab.closest('[data-ui-tabs-list]') === list\n ));\n if (!active) {\n indicator.hidden = true;\n list.dataset.uiTabsReady = '';\n return;\n }\n const frame = indicatorFrame(active.tab);\n if (frame) applyIndicatorFrame(frame);\n list.dataset.uiTabsReady = '';\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (!root().id && props.id) root().id = props.id;\n root().dataset.orientation = props.orientation;\n root().dataset.activation = props.activation;\n root().dataset.value = activeValue();\n setPresence({el: root(), attr: 'data-animate', present: props.animate});\n };\n\n const syncList = (list: HTMLElement): void => {\n const orientation = listOrientation(list);\n list.setAttribute('role', 'tablist');\n list.dataset.orientation = orientation;\n if (orientation === 'vertical') list.setAttribute('aria-orientation', 'vertical');\n else list.removeAttribute('aria-orientation');\n };\n\n const syncTab = (item: TabsItem): void => {\n const active = item.value === activeValue();\n const list = item.tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const orientation = listOrientation(list);\n const variant = listVariant(list);\n const size = listSize(list);\n const ownerId = item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner();\n const selectedIcon = item.tab.querySelector<HTMLElement>('[data-ui-tabs-tab-selected-icon]');\n const state = stateFor(active);\n const tabStop = activeTabStop();\n\n item.tab.id ||= tabIdFor(ownerId, item.value);\n item.tab.dataset.state = state;\n item.tab.dataset.orientation = orientation;\n item.tab.dataset.variant = variant;\n item.tab.dataset.size = size;\n item.tab.setAttribute('role', 'tab');\n item.tab.setAttribute('aria-selected', active ? 'true' : 'false');\n item.tab.setAttribute('aria-controls', item.panel?.id || panelIdFor(ownerId, item.value));\n item.tab.tabIndex = item.tab === tabStop ? 0 : -1;\n setPresence({el: item.tab, attr: 'data-selected', present: active});\n if (selectedIcon) selectedIcon.style.visibility = active ? 'visible' : 'hidden';\n\n setPresence({el: item.tab, attr: 'data-disabled', present: item.disabled});\n if (item.disabled) {\n item.tab.setAttribute('aria-disabled', 'true');\n item.tab.tabIndex = -1;\n } else item.tab.removeAttribute('aria-disabled');\n if (item.tab instanceof HTMLButtonElement) item.tab.disabled = item.disabled;\n };\n\n const syncPanel = (panel: HTMLElement): void => {\n const value = panel.dataset.value || '';\n const active = value === activeValue();\n const ownerId = panel.dataset.uiTabsOwner || panel.dataset.owner || owner();\n const id = panelIdFor(ownerId, value);\n if (value && !panel.id) panel.id = id;\n if (value && !panel.hasAttribute('data-ui-key')) panel.setAttribute('data-ui-key', panel.id || id);\n panel.dataset.state = stateFor(active);\n panel.dataset.orientation = currentProps().orientation;\n panel.setAttribute('role', 'tabpanel');\n panel.setAttribute('aria-labelledby', tabIdFor(ownerId, value));\n if (!panel.hasAttribute('tabindex')) panel.tabIndex = 0;\n panel.hidden = !active;\n setPresence({el: panel, attr: 'data-selected', present: active});\n };\n\n const syncAll = ({indicator = false}: {indicator?: boolean} = {}): void => {\n syncRoot();\n const tabList = primaryList();\n if (tabList) syncList(tabList);\n items().forEach(syncTab);\n panels().forEach(syncPanel);\n if (indicator && tabList) positionIndicator(tabList);\n };\n\n const emitChange = (): void => {\n dispatch<TabsChangeDetail>({el: root(), name: 'ui:change', detail: {value: activeValue()}});\n };\n const emitActivate = (tab: TabsTabElement, value: string): void => {\n dispatch<TabsActivateDetail>({\n el: tab,\n name: 'ui:tabs:activate',\n detail: {value, panelId: panelForValue(value)?.id ?? ''},\n });\n };\n const syncDom = (): void => {\n syncAll({indicator: true});\n setupObservers();\n setupResizeObserver();\n };\n\n const bridge = createAlpineMachine({\n schema: tabsSchema,\n hooks: tabsHooks,\n resolveTransitionElement: ({data}) => itemForValue((data as TabsTransitionData).value)?.tab ?? null,\n createMachine: ({props}) => {\n connectingProps = props;\n const context = initialContext(props);\n connectingProps = null;\n return createTabsMachine({\n props,\n context,\n effects: {\n prepareSwitch: ({event}) => {\n syncAll();\n if (event.type === 'SELECT') emitChange();\n },\n finishSwitch: () => syncAll(),\n syncDom,\n syncProps: syncDom,\n syncItems: () => {\n syncAll({indicator: true});\n setupResizeObserver();\n },\n },\n });\n },\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Tabs navigation has not been initialized.');\n return collection;\n };\n\n const selectValue = (value: string, {tab, motion = true}: {\n tab?: TabsTabElement;\n motion?: boolean;\n } = {}): void => {\n const previous = activeValue();\n bridge.send({type: 'SELECT', value, motion});\n if (activeValue() !== previous && tab) emitActivate(tab, activeValue());\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item) return;\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n const motion = !(event instanceof MouseEvent) || event.detail > 0;\n selectValue(item.value, {tab: item.tab, motion});\n };\n\n const handlePointerDown = (event: Event): void => {\n pointerFocusedTab = itemFrom(event.target)?.tab ?? null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusReset = window.setTimeout(() => {\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n });\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.tab || item.disabled) return;\n collectionNav().activateItem({el: item.tab});\n if (currentProps().activation === 'automatic' && pointerFocusedTab !== item.tab) {\n selectValue(item.value, {tab: item.tab, motion: false});\n } else syncAll();\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.tab) return;\n if (event.key === ' ' && item.tab instanceof HTMLAnchorElement) {\n event.preventDefault();\n selectValue(item.value, {tab: item.tab, motion: false});\n return;\n }\n const orientation = listOrientation(item.tab.closest<HTMLElement>('[data-ui-tabs-list]'));\n if (event.key === 'Home') {\n event.preventDefault();\n collectionNav().focusFirst();\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n collectionNav().focusLast();\n return;\n }\n if (orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n collectionNav().focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n collectionNav().focusPrevious();\n }\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusPrevious();\n else collectionNav().focusNext();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusNext();\n else collectionNav().focusPrevious();\n }\n };\n\n const sendItemsChanged = (): void => {\n const next = collectionContext();\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const setupObservers = (): void => {\n disconnectObserver?.();\n const targets = [root()];\n const selector = currentProps().panels;\n if (selector) {\n const detached = document.querySelector<HTMLElement>(selector);\n if (detached) targets.push(detached);\n }\n disconnectObserver = observeSemanticChanges({\n targets: uniqueElements(targets),\n read: collectionContext,\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\n 'data-value',\n 'data-disabled',\n 'disabled',\n 'data-ui-tabs-owner',\n 'data-owner',\n 'data-variant',\n 'data-size',\n 'data-orientation',\n 'data-gap',\n 'id',\n ],\n },\n });\n };\n\n const setupResizeObserver = (): void => {\n resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n resizeObserver = new ResizeObserver(() => {\n if (!rootEl) return;\n const list = primaryList();\n if (list) positionIndicator(list);\n });\n const list = primaryList();\n if (list) resizeObserver.observe(list);\n items().forEach((item) => resizeObserver?.observe(item.tab));\n };\n\n let component!: TrellisAlpineComponent<TabsData>;\n component = {\n ...bridge,\n get value(): string {\n return this.snapshot.current?.context.selection.value ?? '';\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-tabs-tab]',\n isDisabled: (element) => !owns(element)\n || boolDataset(element.dataset.disabled)\n || element.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n syncAll({indicator: true});\n setupObservers();\n setupResizeObserver();\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n resizeObserver?.disconnect();\n resizeObserver = null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void> {\n if (!(transition.el instanceof Element)) return Promise.resolve();\n const frame = indicatorFrame(transition.el);\n if (!frame) return Promise.resolve();\n if (!transition.props.animate || transition.event.motion === false) {\n applyIndicatorFrame(frame);\n return noopHandle();\n }\n\n return flip(transition, {\n target: frame.indicator,\n update: () => applyIndicatorFrame(frame),\n role: 'layoutSpring',\n transition: {bounce: 0},\n });\n },\n get root(): BindingObject {\n return {\n 'data-ui-tabs': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-activation': () => currentProps().activation,\n ':data-animate': () => currentProps().animate ? '' : undefined,\n '@pointerdown': handlePointerDown,\n '@click': handleClick,\n '@focusin': handleFocus,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n };\n },\n select(value: string): void {\n selectValue(value);\n },\n isActive(value: string): boolean {\n return this.snapshot.current?.context.selection.value === value;\n },\n };\n\n return component;\n};\n\nconst registerTabs = defineAlpineData('UiTabs', UiTabs);\n\nexport {registerTabs, UiTabs};\nexport type {TabsActivateDetail, TabsChangeDetail, TabsTransition, UiTabsApi};\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 {registerTabs as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerTabs = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerTabs};\nexport default registerTabs;\nexport * from './index';\n"],"mappings":"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"}