@vireo-ai/trellis-ui 0.1.51 → 0.1.53
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.
- package/package.json +6 -1
- package/packages/client/src/components/select/styles.css +19 -0
- package/packages/client/src/styles/theme-support.css +267 -0
- package/packages/client/src/styles/theme.css +1 -268
- package/packages/client/types/runtime/engine/navigation.d.ts +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +11 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +234 -234
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-CrezWE-8.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-DRILCSFH.js.map → capability-motion-CrezWE-8.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-CpSdQwYp.js → capability-sortable-C65CbsZn.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-CpSdQwYp.js.map → capability-sortable-C65CbsZn.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-D14VdwFn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-D14VdwFn.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DvHNTjt1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DvHNTjt1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D3am_GtI.js → entry.generated-BSbzZ3xh.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D3am_GtI.js.map → entry.generated-BSbzZ3xh.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSDZ4U92.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSDZ4U92.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D7qa64eM.js → entry.generated-D07X7NjA.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D07X7NjA.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CeD3bUBI.js → entry.generated-DVIdOrvh.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CeD3bUBI.js.map → entry.generated-DVIdOrvh.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DrmfusOi.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DrmfusOi.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BiyFgA-e.js → entry.generated-bEl9RRQt.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BiyFgA-e.js.map → entry.generated-bEl9RRQt.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DbC4gkeV.js → entry.generated-prmw8aRc.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DbC4gkeV.js.map → entry.generated-prmw8aRc.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-TbFjT_mY.js → entry.generated-xAXkL86X.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-TbFjT_mY.js.map → entry.generated-xAXkL86X.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-JcxejQr4.js → entry2.generated-CXnPh3K6.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-JcxejQr4.js.map → entry2.generated-CXnPh3K6.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-BSal0xp9.js → entry2.generated-CwzLpL1f.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-BSal0xp9.js.map → entry2.generated-CwzLpL1f.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-DCbmWkHV.js → entry2.generated-DXDHgDsN.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-DCbmWkHV.js.map → entry2.generated-DXDHgDsN.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-D26Cigu5.js → entry2.generated-Dolv_r3b.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-D26Cigu5.js.map → entry2.generated-Dolv_r3b.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-B4uuk1JX.js → motion-ke2fZiWo.js} +3 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-B4uuk1JX.js.map → motion-ke2fZiWo.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-FNYDCNh6.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-FOJhyz8V.js.map → ui-FNYDCNh6.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +91 -91
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +8 -8
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +8 -8
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DRILCSFH.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DnQs1xY6.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DnQs1xY6.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-5pQvlhmK.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-5pQvlhmK.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPzThz_M.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPzThz_M.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D7qa64eM.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-cnWgB3wz.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-cnWgB3wz.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-FOJhyz8V.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-D3am_GtI.js","names":[],"sources":["../../../../../../../../client/src/components/accordion/contract.ts","../../../../../../../../client/src/components/accordion/machine.ts","../../../../../../../../client/src/components/accordion/styles.ts","../../../../../../../../client/src/components/accordion/index.ts","../../../../../../../../client/src/components/accordion/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {HEADING_LEVELS, ORIENTATIONS, type HeadingLevel, type Orientation} from '../common';\n\nconst ACCORDION_MODES = ['single', 'multiple'] as const;\nconst ACCORDION_ORIENTATIONS = ORIENTATIONS;\nconst ACCORDION_ICON_POSITIONS = ['trailing', 'leading'] as const;\nconst ACCORDION_ITEM_ICON_POSITIONS = ['inherit', ...ACCORDION_ICON_POSITIONS] as const;\nconst ACCORDION_HEADING_AS = HEADING_LEVELS;\nconst ACCORDION_ITEM_HEADING_AS = ['inherit', ...ACCORDION_HEADING_AS] as const;\n\nconst accordionSchema = {\n mode: oneOf(ACCORDION_MODES, 'single'),\n animate: bool,\n collapsible: bool,\n disabled: bool,\n orientation: oneOf(ACCORDION_ORIENTATIONS, 'vertical'),\n defaultValue: string,\n defaultValues: string,\n value: string,\n values: string,\n loop: bool.default(true),\n iconPosition: oneOf(ACCORDION_ICON_POSITIONS, 'trailing'),\n headingAs: oneOf(ACCORDION_HEADING_AS, 'h3'),\n class: string,\n};\n\ntype AccordionMode = typeof ACCORDION_MODES[number];\ntype AccordionOrientation = Orientation;\ntype AccordionIconPosition = typeof ACCORDION_ICON_POSITIONS[number];\ntype AccordionItemIconPosition = typeof ACCORDION_ITEM_ICON_POSITIONS[number];\ntype AccordionHeadingAs = HeadingLevel;\ntype AccordionItemHeadingAs = typeof ACCORDION_ITEM_HEADING_AS[number];\ntype AccordionProps = SchemaToProps<typeof accordionSchema>;\n\nexport {\n ACCORDION_HEADING_AS,\n ACCORDION_ICON_POSITIONS,\n ACCORDION_ITEM_HEADING_AS,\n ACCORDION_ITEM_ICON_POSITIONS,\n ACCORDION_ORIENTATIONS,\n ACCORDION_MODES,\n accordionSchema,\n};\nexport type {\n AccordionHeadingAs,\n AccordionIconPosition,\n AccordionItemHeadingAs,\n AccordionItemIconPosition,\n AccordionOrientation,\n AccordionProps,\n AccordionMode,\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 {AccordionProps} from './contract';\n\ntype AccordionContext = {\n selection: {values: string[]};\n change: {openingValues: string[]; closingValues: string[]};\n collection: {values: string[]; disabledValues: string[]};\n};\n\ntype AccordionTransitionData = {value: string};\n\ntype AccordionMachineEffects = {\n prepareChange(scope: MachineScope<AccordionContext, AccordionProps>): void;\n finishChange(scope: MachineScope<AccordionContext, AccordionProps>): void;\n syncProps(scope: MachineScope<AccordionContext, AccordionProps>): void;\n syncItems(scope: MachineScope<AccordionContext, AccordionProps>): void;\n};\n\ntype CreateAccordionMachineOptions = {\n props: AccordionProps;\n context: AccordionContext;\n effects: AccordionMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.openingValues.map((value) => ({value})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n open: (value: string) => ({type: 'OPEN', value}),\n close: (value: string) => ({type: 'CLOSE', value}),\n toggle: (value: string) => ({type: 'TOGGLE', value}),\n setValues: (values: string[]) => ({type: 'SET_VALUES', values}),\n },\n} satisfies TransitionHookDefinition<AccordionContext, AccordionProps, AccordionTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.closingValues.map((value) => ({value})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n open: (value: string) => ({type: 'OPEN', value}),\n close: (value: string) => ({type: 'CLOSE', value}),\n toggle: (value: string) => ({type: 'TOGGLE', value}),\n setValues: (values: string[]) => ({type: 'SET_VALUES', values}),\n },\n} satisfies TransitionHookDefinition<AccordionContext, AccordionProps, AccordionTransitionData, 'closing'>);\n\nconst accordionHooks = [openingHook, closingHook] 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 splitValues = (value: string): string[] => value.split(',').map((item) => item.trim()).filter(Boolean);\nconst sameValues = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst normalizeValues = (\n values: readonly string[],\n props: AccordionProps,\n collection: AccordionContext['collection'],\n): string[] => {\n const requested = new Set(values.filter((value) => collection.values.includes(value)));\n const ordered = collection.values.filter((value) => requested.has(value));\n return props.mode === 'single' ? ordered.slice(0, 1) : ordered;\n};\n\nconst controlledValues = (props: AccordionProps): string[] => (\n props.mode === 'multiple' ? splitValues(props.values || props.value) : props.value ? [props.value] : []\n);\n\nconst nextProps = (scope: MachineScope<AccordionContext, AccordionProps>): AccordionProps => (\n propsChangedEvent<AccordionProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (\n scope: MachineScope<AccordionContext, AccordionProps>,\n): AccordionContext['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 };\n};\n\nconst requestedValues = (\n scope: MachineScope<AccordionContext, AccordionProps>,\n props: AccordionProps,\n collection: AccordionContext['collection'],\n): string[] => {\n const current = scope.context.selection.values;\n const value = stringValue(scope.event.value);\n switch (scope.event.type) {\n case 'OPEN':\n if (!value || collection.disabledValues.includes(value)) return current;\n return props.mode === 'single' ? [value] : [...current, value];\n case 'CLOSE':\n if (\n !value\n || collection.disabledValues.includes(value)\n || (props.mode === 'single' && !props.collapsible && current.includes(value))\n ) return current;\n return current.filter((item) => item !== value);\n case 'TOGGLE':\n if (!value || collection.disabledValues.includes(value)) return current;\n if (!current.includes(value)) return props.mode === 'single' ? [value] : [...current, value];\n if (props.mode === 'single' && !props.collapsible) return current;\n return current.filter((item) => item !== value);\n case 'SET_VALUES':\n return stringValues(scope.event.values);\n case 'PROPS_CHANGED':\n if (propsChanged<AccordionProps>(scope.event, 'value', 'values')) return controlledValues(props);\n return current;\n case 'ITEMS_CHANGED':\n return current;\n default:\n return current;\n }\n};\n\nconst nextValues = (scope: MachineScope<AccordionContext, AccordionProps>): string[] => {\n const props = nextProps(scope);\n const collection = nextCollection(scope);\n return normalizeValues(requestedValues(scope, props, collection), props, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<AccordionContext, AccordionProps>): boolean => (\n !(\n ['OPEN', 'CLOSE', 'TOGGLE', 'SET_VALUES'].includes(scope.event.type)\n && scope.props.disabled\n ) && !sameValues(scope.context.selection.values, nextValues(scope))\n);\n\nconst createAccordionMachine = ({\n props,\n context,\n effects,\n}: CreateAccordionMachineOptions): Machine<AccordionContext, AccordionProps> => createMachine<AccordionContext, AccordionProps>({\n initial: 'stable',\n states: {\n stable: {\n tags: ['stable'],\n on: {\n OPEN: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n CLOSE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n SET_VALUES: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n PROPS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n changing: {\n tags: ['changing', 'transitioning'],\n on: {\n CHANGE_DONE: {target: 'stable', effects: 'finishChange'},\n CHANGE_ERROR: {target: 'stable', effects: 'finishChange'},\n OPEN: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n CLOSE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n SET_VALUES: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n PROPS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applyChange: (scope) => {\n const values = nextValues(scope);\n const previous = scope.context.selection.values;\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {values},\n change: {\n openingValues: values.filter((value) => !previous.includes(value)),\n closingValues: previous.filter((value) => !values.includes(value)),\n },\n collection: nextCollection(scope),\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {values: nextValues(scope)},\n },\n }),\n },\n effects: {\n prepareChange: effects.prepareChange,\n finishChange: effects.finishChange,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {accordionHooks, createAccordionMachine};\nexport type {\n AccordionContext,\n AccordionMachineEffects,\n AccordionTransitionData,\n CreateAccordionMachineOptions,\n};\n","import {defineStyles} from '../../runtime';\n\nconst accordionStyles = defineStyles({definition: {\n component: 'ui.accordion',\n parts: {\n root: {\n base: 'grid w-full min-w-0 gap-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: 'gap-2 md:grid-flow-col md:auto-cols-fr',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n item: {\n base: 'min-w-0 border-b-edge-separator border-separator last:border-b-0 data-disabled:opacity-50',\n },\n heading: {\n base: 'block text-surface-ink',\n },\n trigger: {\n base: [\n 'flex min-h-control-xlg w-full min-w-0 items-center gap-2 rounded-control-sm border border-transparent px-3 py-2',\n 'text-left text-sm font-medium text-surface-ink outline-none',\n 'focus-visible:ui-focus-ring',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n ],\n },\n triggerLabel: {\n base: 'min-w-0 flex-1',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-icon',\n },\n content: {\n base: 'overflow-hidden text-sm text-surface-ink-muted',\n },\n contentInner: {\n base: 'min-w-0 px-3 pb-3 pt-1',\n },\n },\n}});\n\nexport {accordionStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n type BindingObject,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n mergeBindings,\n type MachineSnapshot,\n observeSemanticChanges,\n reflectSchemaProp,\n resolveStyle,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {asBool, dispatch, isRtl} from '@client/utils';\nimport {accordionSchema, type AccordionMode, type AccordionProps} from './contract';\nimport {\n accordionHooks,\n createAccordionMachine,\n type AccordionContext,\n type AccordionTransitionData,\n} from './machine';\nimport {accordionStyles} from './styles';\n\ntype AccordionTransitionName = (typeof accordionHooks)[number]['name'];\ntype AccordionTransition<TName extends AccordionTransitionName = AccordionTransitionName> = TransitionForHook<\n Extract<(typeof accordionHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype AccordionItemRecord = {\n item: HTMLElement;\n heading: HTMLElement | null;\n trigger: HTMLButtonElement;\n content: HTMLElement;\n value: string;\n disabled: boolean;\n};\n\n/**\n * Public Alpine API for `ui.accordion`.\n *\n * @public\n */\ninterface UiAccordionApi {\n /** Open value in single mode, otherwise an empty string. */\n readonly value: string;\n\n /** Open values in document order. */\n readonly values: readonly string[];\n\n /** Opens an enabled item. In single mode it replaces the current value. */\n open(value: string): void;\n\n /** Closes an item when the current mode permits it. */\n close(value: string): void;\n\n /** Reverses an item's current disclosure state. */\n toggle(value: string, event?: Event): void;\n\n /** Whether an item belongs to the current open-value set. */\n isOpen(value: string): boolean;\n}\n\ntype AccordionData = AlpineMachine<AccordionContext, AccordionProps, typeof accordionHooks> & UiAccordionApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst splitValues = (value: string): string[] => value.split(',').map((item) => item.trim()).filter(Boolean);\nconst stateFor = (open: boolean): 'open' | 'closed' => open ? 'open' : 'closed';\nconst safeIdPart = (value: string): string => value.trim().replace(/[^a-zA-Z0-9_-]+/g, '-') || 'item';\n\nconst UiAccordion = (): TrellisAlpineComponent<AccordionData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let idFor = (key: string): string => key;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Accordion has not been initialized.');\n return rootEl;\n };\n\n const owns = (element: Element): boolean => element.closest('[data-ui-accordion]') === root();\n\n const items = (): AccordionItemRecord[] => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-accordion-item]'),\n ).filter(owns).map((item, index) => {\n const trigger = item.querySelector<HTMLElement>('[data-ui-accordion-trigger]');\n const content = item.querySelector<HTMLElement>('[data-ui-accordion-content]');\n if (!(trigger instanceof HTMLButtonElement) || !content || !owns(trigger) || !owns(content)) return null;\n item.dataset.value ||= `item-${index + 1}`;\n return {\n item,\n heading: item.querySelector<HTMLElement>('[data-ui-accordion-heading]'),\n trigger,\n content,\n value: item.dataset.value,\n disabled: asBool({value: item.dataset.itemDisabled}),\n } satisfies AccordionItemRecord;\n }).filter((item): item is AccordionItemRecord => item !== null);\n\n const itemForValue = (value: string): AccordionItemRecord | null => (\n items().find((item) => item.value === value) ?? null\n );\n\n const itemFrom = (target: EventTarget | null): AccordionItemRecord | null => {\n if (!(target instanceof Element)) return null;\n const itemEl = target.closest<HTMLElement>('[data-ui-accordion-item]');\n return itemEl && owns(itemEl) ? items().find((item) => item.item === itemEl) ?? null : null;\n };\n\n const collectionContext = (): AccordionContext['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 };\n };\n\n const normalize = (\n values: readonly string[],\n props: AccordionProps,\n itemValues: readonly string[],\n ): string[] => {\n const requested = new Set(values);\n const ordered = itemValues.filter((value) => requested.has(value));\n return props.mode === 'single' ? ordered.slice(0, 1) : ordered;\n };\n\n const initialContext = (props: AccordionProps): AccordionContext => {\n const collectionState = collectionContext();\n const controlled = props.mode === 'multiple'\n ? splitValues(props.values || props.value)\n : props.value ? [props.value] : [];\n const defaults = props.mode === 'multiple'\n ? splitValues(props.defaultValues)\n : props.defaultValue ? [props.defaultValue] : [];\n const authored = items().filter((item) => asBool({value: item.item.dataset.open})).map((item) => item.value);\n const requested = controlled.length > 0 ? controlled : defaults.length > 0 ? defaults : authored;\n return {\n selection: {values: normalize(requested, props, collectionState.values)},\n change: {openingValues: [], closingValues: []},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<AccordionProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<AccordionContext> => bridge.getCommittedSnapshot().context;\n\n const itemIsOpen = (item: AccordionItemRecord): boolean => currentContext().selection.values.includes(item.value);\n const itemIsDisabled = (item: AccordionItemRecord): boolean => currentProps().disabled || item.disabled;\n const canCollapse = (item: AccordionItemRecord): boolean => (\n currentProps().mode === 'multiple' || currentProps().collapsible || !itemIsOpen(item)\n );\n\n const syncRoot = (): void => {\n const props = currentProps();\n const values = currentContext().selection.values;\n reflectSchemaProp({\n el: root(),\n schema: accordionSchema,\n key: 'value',\n value: props.mode === 'single' ? values[0] ?? '' : '',\n });\n reflectSchemaProp({\n el: root(),\n schema: accordionSchema,\n key: 'values',\n value: props.mode === 'multiple' ? values.join(',') : '',\n });\n root().dataset.orientation = props.orientation;\n root().dataset.iconPosition = props.iconPosition;\n root().dataset.mode = props.mode;\n if (props.disabled) root().setAttribute('data-disabled', '');\n else root().removeAttribute('data-disabled');\n };\n\n let component!: TrellisAlpineComponent<AccordionData>;\n\n const syncItem = (item: AccordionItemRecord): void => {\n const props = currentProps();\n const open = itemIsOpen(item);\n const state = stateFor(open);\n const disabled = itemIsDisabled(item);\n const closing = bridge.hasTag('changing') && currentContext().change.closingValues.includes(item.value);\n\n item.item.dataset.state = state;\n item.item.dataset.orientation = props.orientation;\n item.item.className = resolveStyle({\n part: accordionStyles.parts.item,\n props,\n className: item.item.dataset.class ?? '',\n });\n item.heading?.setAttribute('data-state', state);\n item.heading?.setAttribute('data-orientation', props.orientation);\n\n const idPart = safeIdPart(item.value);\n item.trigger.id ||= idFor(`accordion-trigger-${idPart}`);\n item.content.id ||= idFor(`accordion-content-${idPart}`);\n item.trigger.type = 'button';\n item.trigger.dataset.state = state;\n item.trigger.dataset.orientation = props.orientation;\n item.trigger.className = resolveStyle({\n part: accordionStyles.parts.trigger,\n props,\n className: item.trigger.dataset.class ?? '',\n });\n item.trigger.setAttribute('aria-expanded', open ? 'true' : 'false');\n item.trigger.setAttribute('aria-controls', item.content.id);\n item.content.dataset.state = state;\n item.content.dataset.orientation = props.orientation;\n item.content.setAttribute('aria-labelledby', item.trigger.id);\n item.content.hidden = !open && !closing;\n\n [item.item, item.heading, item.trigger, item.content].forEach((element) => {\n if (!element) return;\n if (disabled) element.setAttribute('data-disabled', '');\n else element.removeAttribute('data-disabled');\n });\n item.trigger.disabled = disabled;\n if (disabled || (open && !canCollapse(item))) item.trigger.setAttribute('aria-disabled', 'true');\n else item.trigger.removeAttribute('aria-disabled');\n };\n\n const syncAll = (): void => {\n syncRoot();\n items().forEach(syncItem);\n };\n\n const emitChange = (): void => {\n const values = [...currentContext().selection.values];\n dispatch({el: root(), name: 'ui:change', detail: {\n value: currentProps().mode === 'single' ? values[0] ?? '' : '',\n values,\n }});\n };\n\n const bridge = createAlpineMachine({\n schema: accordionSchema,\n hooks: accordionHooks,\n resolveTransitionElement: ({data}) => {\n const value = (data as AccordionTransitionData).value;\n return itemForValue(value)?.content ?? null;\n },\n createMachine: ({props}) => createAccordionMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareChange: () => {\n syncAll();\n emitChange();\n },\n finishChange: () => {\n syncAll();\n },\n syncProps: syncAll,\n syncItems: syncAll,\n },\n }),\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Accordion navigation has not been initialized.');\n return collection;\n };\n\n const sendItemsChanged = (): void => {\n const next = collectionContext();\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const handleToggle = (item: AccordionItemRecord, event?: Event): void => {\n event?.preventDefault();\n if (itemIsDisabled(item)) return;\n bridge.send({type: 'TOGGLE', value: item.value, motion: !(event instanceof KeyboardEvent)});\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item || !(event.target instanceof Node) || !item.trigger.contains(event.target)) return;\n handleToggle(item, event);\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.trigger) return;\n if (event.key === 'Enter' || event.key === ' ') {\n handleToggle(item, event);\n return;\n }\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 (currentProps().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 handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item && event.target === item.trigger && !itemIsDisabled(item)) {\n collectionNav().activateItem({el: item.trigger});\n }\n };\n\n const setupObserver = (): void => {\n disconnectObserver = observeSemanticChanges({\n targets: root(),\n read: collectionContext,\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-value', 'data-item-disabled'],\n },\n });\n };\n\n component = {\n ...bridge,\n get value(): string {\n return currentProps().mode === 'single' ? this.snapshot.current?.context.selection.values[0] ?? '' : '';\n },\n get values(): readonly string[] {\n return [...this.snapshot.current?.context.selection.values ?? []];\n },\n init(): void {\n rootEl = this.$el;\n idFor = this.$id.bind(this);\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-accordion-trigger]',\n isDisabled: (el) => el.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n syncAll();\n setupObserver();\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: accordionStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-accordion': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n '@click': handleClick,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n '@focusin': handleFocus,\n },\n ]});\n },\n open(value: string): void {\n bridge.send({type: 'OPEN', value});\n },\n close(value: string): void {\n bridge.send({type: 'CLOSE', value});\n },\n toggle(value: string, event?: Event): void {\n const item = itemForValue(value);\n if (item) handleToggle(item, event);\n },\n isOpen(value: string): boolean {\n return this.snapshot.current?.context.selection.values.includes(value) ?? false;\n },\n };\n\n return component;\n};\n\nconst registerAccordion = defineAlpineData('UiAccordion', UiAccordion);\n\nexport {registerAccordion, UiAccordion};\nexport type {AccordionData, AccordionMode, AccordionTransition, UiAccordionApi};\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 {registerAccordion as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerAccordion = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerAccordion};\nexport default registerAccordion;\nexport * from './index';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entry.generated-BSbzZ3xh.js","names":[],"sources":["../../../../../../../../client/src/components/accordion/contract.ts","../../../../../../../../client/src/components/accordion/machine.ts","../../../../../../../../client/src/components/accordion/styles.ts","../../../../../../../../client/src/components/accordion/index.ts","../../../../../../../../client/src/components/accordion/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {HEADING_LEVELS, ORIENTATIONS, type HeadingLevel, type Orientation} from '../common';\n\nconst ACCORDION_MODES = ['single', 'multiple'] as const;\nconst ACCORDION_ORIENTATIONS = ORIENTATIONS;\nconst ACCORDION_ICON_POSITIONS = ['trailing', 'leading'] as const;\nconst ACCORDION_ITEM_ICON_POSITIONS = ['inherit', ...ACCORDION_ICON_POSITIONS] as const;\nconst ACCORDION_HEADING_AS = HEADING_LEVELS;\nconst ACCORDION_ITEM_HEADING_AS = ['inherit', ...ACCORDION_HEADING_AS] as const;\n\nconst accordionSchema = {\n mode: oneOf(ACCORDION_MODES, 'single'),\n animate: bool,\n collapsible: bool,\n disabled: bool,\n orientation: oneOf(ACCORDION_ORIENTATIONS, 'vertical'),\n defaultValue: string,\n defaultValues: string,\n value: string,\n values: string,\n loop: bool.default(true),\n iconPosition: oneOf(ACCORDION_ICON_POSITIONS, 'trailing'),\n headingAs: oneOf(ACCORDION_HEADING_AS, 'h3'),\n class: string,\n};\n\ntype AccordionMode = typeof ACCORDION_MODES[number];\ntype AccordionOrientation = Orientation;\ntype AccordionIconPosition = typeof ACCORDION_ICON_POSITIONS[number];\ntype AccordionItemIconPosition = typeof ACCORDION_ITEM_ICON_POSITIONS[number];\ntype AccordionHeadingAs = HeadingLevel;\ntype AccordionItemHeadingAs = typeof ACCORDION_ITEM_HEADING_AS[number];\ntype AccordionProps = SchemaToProps<typeof accordionSchema>;\n\nexport {\n ACCORDION_HEADING_AS,\n ACCORDION_ICON_POSITIONS,\n ACCORDION_ITEM_HEADING_AS,\n ACCORDION_ITEM_ICON_POSITIONS,\n ACCORDION_ORIENTATIONS,\n ACCORDION_MODES,\n accordionSchema,\n};\nexport type {\n AccordionHeadingAs,\n AccordionIconPosition,\n AccordionItemHeadingAs,\n AccordionItemIconPosition,\n AccordionOrientation,\n AccordionProps,\n AccordionMode,\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 {AccordionProps} from './contract';\n\ntype AccordionContext = {\n selection: {values: string[]};\n change: {openingValues: string[]; closingValues: string[]};\n collection: {values: string[]; disabledValues: string[]};\n};\n\ntype AccordionTransitionData = {value: string};\n\ntype AccordionMachineEffects = {\n prepareChange(scope: MachineScope<AccordionContext, AccordionProps>): void;\n finishChange(scope: MachineScope<AccordionContext, AccordionProps>): void;\n syncProps(scope: MachineScope<AccordionContext, AccordionProps>): void;\n syncItems(scope: MachineScope<AccordionContext, AccordionProps>): void;\n};\n\ntype CreateAccordionMachineOptions = {\n props: AccordionProps;\n context: AccordionContext;\n effects: AccordionMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.openingValues.map((value) => ({value})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n open: (value: string) => ({type: 'OPEN', value}),\n close: (value: string) => ({type: 'CLOSE', value}),\n toggle: (value: string) => ({type: 'TOGGLE', value}),\n setValues: (values: string[]) => ({type: 'SET_VALUES', values}),\n },\n} satisfies TransitionHookDefinition<AccordionContext, AccordionProps, AccordionTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.closingValues.map((value) => ({value})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n open: (value: string) => ({type: 'OPEN', value}),\n close: (value: string) => ({type: 'CLOSE', value}),\n toggle: (value: string) => ({type: 'TOGGLE', value}),\n setValues: (values: string[]) => ({type: 'SET_VALUES', values}),\n },\n} satisfies TransitionHookDefinition<AccordionContext, AccordionProps, AccordionTransitionData, 'closing'>);\n\nconst accordionHooks = [openingHook, closingHook] 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 splitValues = (value: string): string[] => value.split(',').map((item) => item.trim()).filter(Boolean);\nconst sameValues = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst normalizeValues = (\n values: readonly string[],\n props: AccordionProps,\n collection: AccordionContext['collection'],\n): string[] => {\n const requested = new Set(values.filter((value) => collection.values.includes(value)));\n const ordered = collection.values.filter((value) => requested.has(value));\n return props.mode === 'single' ? ordered.slice(0, 1) : ordered;\n};\n\nconst controlledValues = (props: AccordionProps): string[] => (\n props.mode === 'multiple' ? splitValues(props.values || props.value) : props.value ? [props.value] : []\n);\n\nconst nextProps = (scope: MachineScope<AccordionContext, AccordionProps>): AccordionProps => (\n propsChangedEvent<AccordionProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (\n scope: MachineScope<AccordionContext, AccordionProps>,\n): AccordionContext['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 };\n};\n\nconst requestedValues = (\n scope: MachineScope<AccordionContext, AccordionProps>,\n props: AccordionProps,\n collection: AccordionContext['collection'],\n): string[] => {\n const current = scope.context.selection.values;\n const value = stringValue(scope.event.value);\n switch (scope.event.type) {\n case 'OPEN':\n if (!value || collection.disabledValues.includes(value)) return current;\n return props.mode === 'single' ? [value] : [...current, value];\n case 'CLOSE':\n if (\n !value\n || collection.disabledValues.includes(value)\n || (props.mode === 'single' && !props.collapsible && current.includes(value))\n ) return current;\n return current.filter((item) => item !== value);\n case 'TOGGLE':\n if (!value || collection.disabledValues.includes(value)) return current;\n if (!current.includes(value)) return props.mode === 'single' ? [value] : [...current, value];\n if (props.mode === 'single' && !props.collapsible) return current;\n return current.filter((item) => item !== value);\n case 'SET_VALUES':\n return stringValues(scope.event.values);\n case 'PROPS_CHANGED':\n if (propsChanged<AccordionProps>(scope.event, 'value', 'values')) return controlledValues(props);\n return current;\n case 'ITEMS_CHANGED':\n return current;\n default:\n return current;\n }\n};\n\nconst nextValues = (scope: MachineScope<AccordionContext, AccordionProps>): string[] => {\n const props = nextProps(scope);\n const collection = nextCollection(scope);\n return normalizeValues(requestedValues(scope, props, collection), props, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<AccordionContext, AccordionProps>): boolean => (\n !(\n ['OPEN', 'CLOSE', 'TOGGLE', 'SET_VALUES'].includes(scope.event.type)\n && scope.props.disabled\n ) && !sameValues(scope.context.selection.values, nextValues(scope))\n);\n\nconst createAccordionMachine = ({\n props,\n context,\n effects,\n}: CreateAccordionMachineOptions): Machine<AccordionContext, AccordionProps> => createMachine<AccordionContext, AccordionProps>({\n initial: 'stable',\n states: {\n stable: {\n tags: ['stable'],\n on: {\n OPEN: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n CLOSE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n SET_VALUES: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n PROPS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n changing: {\n tags: ['changing', 'transitioning'],\n on: {\n CHANGE_DONE: {target: 'stable', effects: 'finishChange'},\n CHANGE_ERROR: {target: 'stable', effects: 'finishChange'},\n OPEN: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n CLOSE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n SET_VALUES: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n PROPS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applyChange: (scope) => {\n const values = nextValues(scope);\n const previous = scope.context.selection.values;\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {values},\n change: {\n openingValues: values.filter((value) => !previous.includes(value)),\n closingValues: previous.filter((value) => !values.includes(value)),\n },\n collection: nextCollection(scope),\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {values: nextValues(scope)},\n },\n }),\n },\n effects: {\n prepareChange: effects.prepareChange,\n finishChange: effects.finishChange,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {accordionHooks, createAccordionMachine};\nexport type {\n AccordionContext,\n AccordionMachineEffects,\n AccordionTransitionData,\n CreateAccordionMachineOptions,\n};\n","import {defineStyles} from '../../runtime';\n\nconst accordionStyles = defineStyles({definition: {\n component: 'ui.accordion',\n parts: {\n root: {\n base: 'grid w-full min-w-0 gap-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: 'gap-2 md:grid-flow-col md:auto-cols-fr',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n item: {\n base: 'min-w-0 border-b-edge-separator border-separator last:border-b-0 data-disabled:opacity-50',\n },\n heading: {\n base: 'block text-surface-ink',\n },\n trigger: {\n base: [\n 'flex min-h-control-xlg w-full min-w-0 items-center gap-2 rounded-control-sm border border-transparent px-3 py-2',\n 'text-left text-sm font-medium text-surface-ink outline-none',\n 'focus-visible:ui-focus-ring',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n ],\n },\n triggerLabel: {\n base: 'min-w-0 flex-1',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-icon',\n },\n content: {\n base: 'overflow-hidden text-sm text-surface-ink-muted',\n },\n contentInner: {\n base: 'min-w-0 px-3 pb-3 pt-1',\n },\n },\n}});\n\nexport {accordionStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n type BindingObject,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n mergeBindings,\n type MachineSnapshot,\n observeSemanticChanges,\n reflectSchemaProp,\n resolveStyle,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {asBool, dispatch, isRtl} from '@client/utils';\nimport {accordionSchema, type AccordionMode, type AccordionProps} from './contract';\nimport {\n accordionHooks,\n createAccordionMachine,\n type AccordionContext,\n type AccordionTransitionData,\n} from './machine';\nimport {accordionStyles} from './styles';\n\ntype AccordionTransitionName = (typeof accordionHooks)[number]['name'];\ntype AccordionTransition<TName extends AccordionTransitionName = AccordionTransitionName> = TransitionForHook<\n Extract<(typeof accordionHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype AccordionItemRecord = {\n item: HTMLElement;\n heading: HTMLElement | null;\n trigger: HTMLButtonElement;\n content: HTMLElement;\n value: string;\n disabled: boolean;\n};\n\n/**\n * Public Alpine API for `ui.accordion`.\n *\n * @public\n */\ninterface UiAccordionApi {\n /** Open value in single mode, otherwise an empty string. */\n readonly value: string;\n\n /** Open values in document order. */\n readonly values: readonly string[];\n\n /** Opens an enabled item. In single mode it replaces the current value. */\n open(value: string): void;\n\n /** Closes an item when the current mode permits it. */\n close(value: string): void;\n\n /** Reverses an item's current disclosure state. */\n toggle(value: string, event?: Event): void;\n\n /** Whether an item belongs to the current open-value set. */\n isOpen(value: string): boolean;\n}\n\ntype AccordionData = AlpineMachine<AccordionContext, AccordionProps, typeof accordionHooks> & UiAccordionApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst splitValues = (value: string): string[] => value.split(',').map((item) => item.trim()).filter(Boolean);\nconst stateFor = (open: boolean): 'open' | 'closed' => open ? 'open' : 'closed';\nconst safeIdPart = (value: string): string => value.trim().replace(/[^a-zA-Z0-9_-]+/g, '-') || 'item';\n\nconst UiAccordion = (): TrellisAlpineComponent<AccordionData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let idFor = (key: string): string => key;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Accordion has not been initialized.');\n return rootEl;\n };\n\n const owns = (element: Element): boolean => element.closest('[data-ui-accordion]') === root();\n\n const items = (): AccordionItemRecord[] => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-accordion-item]'),\n ).filter(owns).map((item, index) => {\n const trigger = item.querySelector<HTMLElement>('[data-ui-accordion-trigger]');\n const content = item.querySelector<HTMLElement>('[data-ui-accordion-content]');\n if (!(trigger instanceof HTMLButtonElement) || !content || !owns(trigger) || !owns(content)) return null;\n item.dataset.value ||= `item-${index + 1}`;\n return {\n item,\n heading: item.querySelector<HTMLElement>('[data-ui-accordion-heading]'),\n trigger,\n content,\n value: item.dataset.value,\n disabled: asBool({value: item.dataset.itemDisabled}),\n } satisfies AccordionItemRecord;\n }).filter((item): item is AccordionItemRecord => item !== null);\n\n const itemForValue = (value: string): AccordionItemRecord | null => (\n items().find((item) => item.value === value) ?? null\n );\n\n const itemFrom = (target: EventTarget | null): AccordionItemRecord | null => {\n if (!(target instanceof Element)) return null;\n const itemEl = target.closest<HTMLElement>('[data-ui-accordion-item]');\n return itemEl && owns(itemEl) ? items().find((item) => item.item === itemEl) ?? null : null;\n };\n\n const collectionContext = (): AccordionContext['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 };\n };\n\n const normalize = (\n values: readonly string[],\n props: AccordionProps,\n itemValues: readonly string[],\n ): string[] => {\n const requested = new Set(values);\n const ordered = itemValues.filter((value) => requested.has(value));\n return props.mode === 'single' ? ordered.slice(0, 1) : ordered;\n };\n\n const initialContext = (props: AccordionProps): AccordionContext => {\n const collectionState = collectionContext();\n const controlled = props.mode === 'multiple'\n ? splitValues(props.values || props.value)\n : props.value ? [props.value] : [];\n const defaults = props.mode === 'multiple'\n ? splitValues(props.defaultValues)\n : props.defaultValue ? [props.defaultValue] : [];\n const authored = items().filter((item) => asBool({value: item.item.dataset.open})).map((item) => item.value);\n const requested = controlled.length > 0 ? controlled : defaults.length > 0 ? defaults : authored;\n return {\n selection: {values: normalize(requested, props, collectionState.values)},\n change: {openingValues: [], closingValues: []},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<AccordionProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<AccordionContext> => bridge.getCommittedSnapshot().context;\n\n const itemIsOpen = (item: AccordionItemRecord): boolean => currentContext().selection.values.includes(item.value);\n const itemIsDisabled = (item: AccordionItemRecord): boolean => currentProps().disabled || item.disabled;\n const canCollapse = (item: AccordionItemRecord): boolean => (\n currentProps().mode === 'multiple' || currentProps().collapsible || !itemIsOpen(item)\n );\n\n const syncRoot = (): void => {\n const props = currentProps();\n const values = currentContext().selection.values;\n reflectSchemaProp({\n el: root(),\n schema: accordionSchema,\n key: 'value',\n value: props.mode === 'single' ? values[0] ?? '' : '',\n });\n reflectSchemaProp({\n el: root(),\n schema: accordionSchema,\n key: 'values',\n value: props.mode === 'multiple' ? values.join(',') : '',\n });\n root().dataset.orientation = props.orientation;\n root().dataset.iconPosition = props.iconPosition;\n root().dataset.mode = props.mode;\n if (props.disabled) root().setAttribute('data-disabled', '');\n else root().removeAttribute('data-disabled');\n };\n\n let component!: TrellisAlpineComponent<AccordionData>;\n\n const syncItem = (item: AccordionItemRecord): void => {\n const props = currentProps();\n const open = itemIsOpen(item);\n const state = stateFor(open);\n const disabled = itemIsDisabled(item);\n const closing = bridge.hasTag('changing') && currentContext().change.closingValues.includes(item.value);\n\n item.item.dataset.state = state;\n item.item.dataset.orientation = props.orientation;\n item.item.className = resolveStyle({\n part: accordionStyles.parts.item,\n props,\n className: item.item.dataset.class ?? '',\n });\n item.heading?.setAttribute('data-state', state);\n item.heading?.setAttribute('data-orientation', props.orientation);\n\n const idPart = safeIdPart(item.value);\n item.trigger.id ||= idFor(`accordion-trigger-${idPart}`);\n item.content.id ||= idFor(`accordion-content-${idPart}`);\n item.trigger.type = 'button';\n item.trigger.dataset.state = state;\n item.trigger.dataset.orientation = props.orientation;\n item.trigger.className = resolveStyle({\n part: accordionStyles.parts.trigger,\n props,\n className: item.trigger.dataset.class ?? '',\n });\n item.trigger.setAttribute('aria-expanded', open ? 'true' : 'false');\n item.trigger.setAttribute('aria-controls', item.content.id);\n item.content.dataset.state = state;\n item.content.dataset.orientation = props.orientation;\n item.content.setAttribute('aria-labelledby', item.trigger.id);\n item.content.hidden = !open && !closing;\n\n [item.item, item.heading, item.trigger, item.content].forEach((element) => {\n if (!element) return;\n if (disabled) element.setAttribute('data-disabled', '');\n else element.removeAttribute('data-disabled');\n });\n item.trigger.disabled = disabled;\n if (disabled || (open && !canCollapse(item))) item.trigger.setAttribute('aria-disabled', 'true');\n else item.trigger.removeAttribute('aria-disabled');\n };\n\n const syncAll = (): void => {\n syncRoot();\n items().forEach(syncItem);\n };\n\n const emitChange = (): void => {\n const values = [...currentContext().selection.values];\n dispatch({el: root(), name: 'ui:change', detail: {\n value: currentProps().mode === 'single' ? values[0] ?? '' : '',\n values,\n }});\n };\n\n const bridge = createAlpineMachine({\n schema: accordionSchema,\n hooks: accordionHooks,\n resolveTransitionElement: ({data}) => {\n const value = (data as AccordionTransitionData).value;\n return itemForValue(value)?.content ?? null;\n },\n createMachine: ({props}) => createAccordionMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareChange: () => {\n syncAll();\n emitChange();\n },\n finishChange: () => {\n syncAll();\n },\n syncProps: syncAll,\n syncItems: syncAll,\n },\n }),\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Accordion navigation has not been initialized.');\n return collection;\n };\n\n const sendItemsChanged = (): void => {\n const next = collectionContext();\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const handleToggle = (item: AccordionItemRecord, event?: Event): void => {\n event?.preventDefault();\n if (itemIsDisabled(item)) return;\n bridge.send({type: 'TOGGLE', value: item.value, motion: !(event instanceof KeyboardEvent)});\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item || !(event.target instanceof Node) || !item.trigger.contains(event.target)) return;\n handleToggle(item, event);\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.trigger) return;\n if (event.key === 'Enter' || event.key === ' ') {\n handleToggle(item, event);\n return;\n }\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 (currentProps().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 handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item && event.target === item.trigger && !itemIsDisabled(item)) {\n collectionNav().activateItem({el: item.trigger});\n }\n };\n\n const setupObserver = (): void => {\n disconnectObserver = observeSemanticChanges({\n targets: root(),\n read: collectionContext,\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-value', 'data-item-disabled'],\n },\n });\n };\n\n component = {\n ...bridge,\n get value(): string {\n return currentProps().mode === 'single' ? this.snapshot.current?.context.selection.values[0] ?? '' : '';\n },\n get values(): readonly string[] {\n return [...this.snapshot.current?.context.selection.values ?? []];\n },\n init(): void {\n rootEl = this.$el;\n idFor = this.$id.bind(this);\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-accordion-trigger]',\n isDisabled: (el) => el.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n syncAll();\n setupObserver();\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: accordionStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-accordion': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n '@click': handleClick,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n '@focusin': handleFocus,\n },\n ]});\n },\n open(value: string): void {\n bridge.send({type: 'OPEN', value});\n },\n close(value: string): void {\n bridge.send({type: 'CLOSE', value});\n },\n toggle(value: string, event?: Event): void {\n const item = itemForValue(value);\n if (item) handleToggle(item, event);\n },\n isOpen(value: string): boolean {\n return this.snapshot.current?.context.selection.values.includes(value) ?? false;\n },\n };\n\n return component;\n};\n\nconst registerAccordion = defineAlpineData('UiAccordion', UiAccordion);\n\nexport {registerAccordion, UiAccordion};\nexport type {AccordionData, AccordionMode, AccordionTransition, UiAccordionApi};\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 {registerAccordion as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerAccordion = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerAccordion};\nexport default registerAccordion;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./capability-motion-CrezWE-8.js";import{c as t,f as n,l as r,n as i,u as a}from"./codecs-Cb1ns_47.js";import{n as o,r as s,t as c}from"./dom-qAeVl7dc.js";import{i as l,t as ee}from"./alpine-machine-BTDXpEr6.js";import{t as u}from"./alpine-data-CytyCyfk.js";import{n as d}from"./anchored-popover-BXEMsLrA.js";import{t as f}from"./collection-navigation-CfTZUJrL.js";import{n as p,t as m}from"./styles-TfvwVPGw.js";import{t as h}from"./merge-bindings-C8ewA_FD.js";import{t as g}from"./machine-Dqut4h89.js";import{t as _}from"./dismissable-layer-BROE-Ln2.js";import{F as v,I as y,N as b,j as x,t as S}from"./common-Dfj6NCjU.js";import{t as C}from"./controlled-open-Hy4-OT-6.js";var w=m({definition:{component:`ui.menu`,parts:{menu:{base:[v,`auto-rows-min content-start min-w-48 gap-1 overflow-hidden rounded-overlay-sm p-popover-padding`]},item:{base:[b],variants:{variant:{default:``,subtle:``,filled:``,ghost:``},color:{neutral:``,accent:``,success:``,warning:``,danger:``}},defaults:{variant:`default`,color:`neutral`}},itemLabel:{base:`min-w-0 flex-1`},itemMeta:{base:`ml-auto font-metadata text-metadata [font-weight:var(--font-weight-metadata)] text-current opacity-70`},itemIcon:{base:x,variants:{position:{leading:``,trailing:`ml-auto`}},defaults:{position:`leading`}},submenu:{base:`contents`},submenuPanel:{base:``},group:{base:`grid auto-rows-min content-start gap-1`},label:{base:`px-menu-item-padding-inline py-1 font-label text-label [font-weight:var(--font-weight-label)]`},separatorRoot:{variants:{orientation:{vertical:`self-stretch self-center`,horizontal:`-mx-popover my-popover h-[var(--border-width-edge-separator)]`}},defaults:{orientation:`horizontal`}},separatorRule:{variants:{orientation:{vertical:`h-full w-[var(--border-width-edge-separator)] border-0`,horizontal:`h-[var(--border-width-edge-separator)] w-full border-0`}},defaults:{orientation:`horizontal`}}}}}),T=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),te=({origin:e,panel:t})=>{let n=t.left>=e.x?t.left:t.right,r={x:n,y:t.top},i={x:n,y:t.bottom},a=Math.min(e.x,n),o=Math.max(e.x,n);return{contains(t){if(t.x<=a||t.x>=o)return!1;let n=T(t,e,r),s=T(t,r,i),c=T(t,i,e);return!((n<0||s<0||c<0)&&(n>0||s>0||c>0))}}},E=y,D=S,O={side:r(E,`bottom`),align:r(D,`start`),offset:t.clamp(-100,100).default(0),gap:t.clamp(0,50).default(4),open:i,disabled:i,class:n},ne=[l({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),l({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],k=C(),A=e=>e.focus===`first`?`first`:`menu`,j=e=>e.restoreFocus===!0,M=e=>Array.isArray(e.path)?e.path.filter(e=>typeof e==`string`):[],re=({props:e,effects:t})=>g({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:k.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},TOGGLE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},SUBMENU_PATH_CHANGED:{reduce:`replaceSubmenuPath`,effects:`syncSubmenus`},PROPS_CHANGED:[{target:`closing`,guard:k.shouldClose,reduce:`replacePropsAndClearSubmenus`,effects:[`syncSubmenus`,`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},TOGGLE:{target:`closing`,reduce:`clearSubmenus`,effects:[`syncSubmenus`,`prepareClose`]},SUBMENU_PATH_CHANGED:{reduce:`replaceSubmenuPath`,effects:`syncSubmenus`},PROPS_CHANGED:[{target:`closing`,guard:k.shouldClose,reduce:`replacePropsAndClearSubmenus`,effects:[`syncSubmenus`,`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:k.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{openSubmenuIds:[]},props:e,reducers:{replaceProps:k.replace,replaceSubmenuPath:e=>({context:{...e.context,openSubmenuIds:M(e.event)}}),clearSubmenus:e=>({context:{...e.context,openSubmenuIds:[]}}),replacePropsAndClearSubmenus:e=>{let t=k.replace(e);return t?{...t,context:{...e.context,openSubmenuIds:[]}}:void 0}},guards:{canOpen:({props:e})=>!e.disabled},effects:{prepareOpen:({event:e})=>t.prepareOpen(A(e)),finishOpen:t.finishOpen,prepareClose:({event:e})=>t.prepareClose(j(e),e.type!==`PROPS_CHANGED`),finishClose:t.finishClose,syncProps:t.syncProps,syncSubmenus:({context:e})=>t.syncSubmenus(e.openSubmenuIds)}}),ie=m({definition:{component:`ui.dropdown`,parts:{root:{base:`contents`}}}}),ae=0,N=()=>{let e=null,t=!1,n=!0,r=``,i=``,l=null,u=null,m=null,g=new Map,v=null,y=!1,b=null,x=[],S=()=>{if(!e)throw Error(`Dropdown has not been initialized.`);return e},C=()=>{let e=Array.from(S().children).find(e=>e instanceof HTMLElement&&!e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a trigger element before the menu.`);return e},T=()=>{let e=Array.from(S().children).find(e=>e instanceof HTMLElement&&e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a menu element.`);return e},E=()=>Y.getSnapshot().props,D=()=>Y.hasTag(`expanded`),k=()=>Y.hasTag(`visible`),A=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-menu-item]`);return t&&S().contains(t)?t:null},j=e=>o({value:e.dataset.disabled})||e.getAttribute(`aria-disabled`)===`true`||e.hasAttribute(`disabled`),M=()=>{if(!u)throw Error(`Dropdown navigation has not been initialized.`);return u},N=()=>{[M(),...Array.from(g.values(),({collection:e})=>e)].forEach(e=>e.allItems().forEach(e=>{e.hasAttribute(`role`)||e.setAttribute(`role`,`menuitem`),e.tabIndex=-1,j(e)&&e.setAttribute(`aria-disabled`,`true`)}))},P=e=>e?Array.from(g.values()).find(({trigger:t})=>t===e)??null:null,F=e=>Array.from(g.values()).find(t=>t.id===e)??null,I=e=>e?Array.from(g.values()).find(({panel:t})=>t===e)??null:null,oe=e=>I(e.root.parentElement?.closest(`[data-ui-menu-submenu-panel]`)??null),L=e=>{let t=[],n=e;for(;n;)t.unshift(n.id),n=oe(n);return t},R=()=>Y.getSnapshot().context.openSubmenuIds,z=e=>{b=null,g.forEach(t=>{let n=e.includes(t.id);t.root.dataset.state=n?`open`:`closed`,t.trigger.dataset.state=n?`open`:`closed`,t.trigger.setAttribute(`aria-expanded`,n?`true`:`false`),t.panel.dataset.state=n?`open`:`closed`,t.panel.hidden=!n,n?t.popover.open():(t.collection.clearActiveItem(),t.popover.close())})},se=e=>{if(g.has(e))return;let t=e.querySelector(`:scope > [data-ui-submenu-trigger]`),n=e.querySelector(`:scope > [data-ui-menu-submenu-panel]`);if(!t||!n)throw Error(`Menu submenu requires a trigger and nested menu panel.`);let r=e.dataset.submenuId||`ui-submenu-${++ae}`,i=t.id||`${r}-trigger`,a=n.id||`${r}-menu`;e.dataset.submenuId=r,e.dataset.state=`closed`,t.id=i,t.dataset.state=`closed`,t.setAttribute(`aria-controls`,a),t.setAttribute(`aria-expanded`,`false`),n.id=a,n.dataset.state=`closed`,n.setAttribute(`aria-labelledby`,i),n.setAttribute(`popover`,`manual`),n.setAttribute(`role`,`menu`),n.tabIndex=-1,n.hidden=!0;let s=f({root:()=>n,itemSelector:`[data-ui-menu-item]`,ownsItem:e=>e.closest(`[data-ui-menu]`)===n,isDisabled:j,loop:()=>o({value:n.dataset.loop})}),c=d({reference:()=>t,floating:()=>n,position:()=>`right`,align:()=>`start`,gap:()=>4,offset:()=>0});g.set(e,{id:r,root:e,trigger:t,panel:n,popover:c,collection:s})},B=e=>{let t=g.get(e);t&&(t.collection.clearActiveItem(),t.popover.destroy(),g.delete(e),b=null)},V=()=>{let e=R(),t=[];for(let n=e.length-1;n>=0;--n){let r=F(e[n]);if(r){t=L(r);break}}t.length===e.length&&t.every((t,n)=>t===e[n])||Y.send({type:`SUBMENU_PATH_CHANGED`,path:t})},H=()=>{let e=Array.from(S().querySelectorAll(`[data-ui-menu-submenu]`)),t=new Set(e),n=!1;Array.from(g.keys()).forEach(e=>{t.has(e)||(B(e),n=!0)}),n&&V(),e.forEach(se),V(),N()},ce=()=>{y||(y=!0,queueMicrotask(()=>{y=!1,e&&H()}))},U=e=>{let t=e.items().find(e=>e.hasAttribute(`data-selected`)||[`true`,`mixed`].includes(e.getAttribute(`aria-checked`)??``));return t?(e.activateItem({el:t}),!0):!1},W=(e,t=!1)=>{j(e.trigger)||(Y.send({type:`SUBMENU_PATH_CHANGED`,path:L(e)}),queueMicrotask(()=>{t?e.collection.focusFirst():U(e.collection)}))},G=(e,t=!1)=>{let n=L(e);Y.send({type:`SUBMENU_PATH_CHANGED`,path:n.slice(0,-1)}),t&&e.trigger.focus({preventScroll:!0})},le=()=>{let e=C(),t=e.getAttribute(`tabindex`);l={ariaDisabled:e.getAttribute(`aria-disabled`),dataDisabled:e.getAttribute(`data-disabled`),disabled:e instanceof HTMLButtonElement?e.disabled:null,tabIndex:t??(e.tabIndex<0?`0`:null)}},K=(e,t,n)=>{n===null?e.removeAttribute(t):e.setAttribute(t,n)},q=()=>{t&&(D()||n)&&a({el:S(),schema:O,key:`open`,value:D()});let e=C(),o=l;if(o){if(e.id||=r,e.setAttribute(`data-ui-dropdown-trigger`,``),e.setAttribute(`aria-expanded`,D()?`true`:`false`),e.setAttribute(`aria-controls`,i),e.setAttribute(`data-state`,D()?`open`:`closed`),E().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e.tabIndex=-1,e instanceof HTMLButtonElement&&(e.disabled=!0);return}K(e,`aria-disabled`,o.ariaDisabled),K(e,`data-disabled`,o.dataDisabled),K(e,`tabindex`,o.tabIndex),e instanceof HTMLButtonElement&&o.disabled!==null&&(e.disabled=o.disabled)}},J=()=>{let e=T();e.id=i,e.setAttribute(`popover`,`manual`),e.setAttribute(`role`,`menu`),e.tabIndex=-1,e.hidden=!k(),e.setAttribute(`data-state`,D()?`open`:`closed`),N()},ue=e=>{n=!0,q(),J(),m?.open(),queueMicrotask(()=>{Y.hasTag(`interactive`)&&(e===`first`?M().focusFirst():(U(M()),T().focus({preventScroll:!0})))})},de=()=>{q(),J(),s({el:S(),name:`ui:open`})},fe=(e,t)=>{n=t,M().clearActiveItem(),q(),J(),e&&C().focus({preventScroll:!0})},pe=()=>{m?.close(),q(),J(),n=!0,s({el:S(),name:`ui:close`})},me=()=>{q(),J(),m?.sync()},Y=ee({schema:O,hooks:ne,createMachine:({props:e})=>re({props:e,effects:{prepareOpen:ue,finishOpen:de,prepareClose:fe,finishClose:pe,syncProps:me,syncSubmenus:z}})}),X=(e=`menu`,t)=>{if(t?.preventDefault(),!E().disabled){if(Y.hasTag(`expanded`)){e===`first`&&M().focusFirst();return}Y.send({type:`OPEN`,focus:e})}},Z=(e,t)=>{t?.preventDefault(),Y.send({type:`CLOSE`,restoreFocus:e})},Q=(e,t)=>{if(j(e)){t.preventDefault();return}let n=o({value:T().dataset.keepOpen});(e.dataset.keepOpen===void 0||e.dataset.keepOpen===``?n:o({value:e.dataset.keepOpen}))||Z(!1)},he=e=>{let t=A(e.target);if(t){let n=P(t);if(n){e.preventDefault(),W(n);return}Q(t,e);return}let n=e.target;n instanceof Node&&C().contains(n)&&(e.preventDefault(),E().disabled||Y.send(`TOGGLE`))},ge=e=>{if(!(e instanceof KeyboardEvent))return;if(e.key===`Escape`&&k()){e.preventDefault(),e.stopPropagation();let t=F(R().at(-1)??``);if(t){G(t,!0);return}Z(!0);return}let t=e.target;if(t instanceof Node&&C().contains(t)){if(e.key===`ArrowDown`){X(`first`,e);return}let t=C();!(t instanceof HTMLButtonElement)&&!(t instanceof HTMLAnchorElement)&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),E().disabled||Y.send(`TOGGLE`));return}let n=A(e.target),r=P(n);if(r&&(e.key===`ArrowRight`||e.key===`Enter`||e.key===` `)){e.preventDefault(),W(r,!0);return}let i=I(e.target instanceof Element?e.target.closest(`[data-ui-menu-submenu-panel]`):null);if(i&&e.key===`ArrowLeft`){e.preventDefault(),G(i,!0);return}if(n&&(e.key===`Enter`||e.key===` `)&&n.matches(`[role="menuitemcheckbox"], [role="menuitemradio"]`)){e.preventDefault(),n.querySelector(`input[type="checkbox"], input[type="radio"]`)?.click();return}i?i.collection.handleKeydown({event:e}):T().contains(e.target)&&M().handleKeydown({event:e})},_e=e=>{let t=A(e.target);t&&!j(t)&&M().activateItem({el:t})},ve=e=>{if(!(e instanceof PointerEvent)||b?.contains({x:e.clientX,y:e.clientY}))return;let t=A(e.target);if(!t||j(t))return;b=null;let n=P(t),r=I(t.closest(`[data-ui-menu-submenu-panel]`));if((r?.collection??M()).activateItem({el:t}),n){W(n);return}Y.send({type:`SUBMENU_PATH_CHANGED`,path:r?L(r):[]})},ye=e=>{if(!(e instanceof PointerEvent)||!window.matchMedia(`(hover: hover) and (pointer: fine)`).matches)return;let t=P(A(e.target));if(!t||!R().includes(t.id)||e.relatedTarget instanceof Node&&t.panel.contains(e.relatedTarget))return;let n=t.panel.getBoundingClientRect();b=te({origin:{x:e.clientX,y:e.clientY},panel:{left:n.left,right:n.right,top:n.top,bottom:n.bottom}})},be=e=>{if(`newState`in e){if(e.newState===`open`){k()||Y.send(`OPEN`);return}k()&&Y.send(`CLOSE`)}},$;return $={...Y,get isOpen(){return this.snapshot.current?.tags.includes(`expanded`)??!1},init(){e=this.$el,Y.connect(this.$el,this.snapshot),r=C().id||this.$id(`dropdown-trigger`),i=T().id||this.$id(`dropdown-menu`),le(),u=f({root:()=>T(),itemSelector:`[data-ui-menu-item]`,ownsItem:e=>e.closest(`[data-ui-menu]`)===T(),isDisabled:j,loop:()=>o({value:T().dataset.loop})}),m=d({reference:C,floating:T,position:()=>E().side,align:()=>E().align,gap:()=>E().gap,offset:()=>E().offset}),H(),v=new MutationObserver(ce),v.observe(S(),{childList:!0,subtree:!0}),x.push(_({isEnabled:()=>Y.hasTag(`interactive`),roots:()=>[S(),T()],onDismiss:()=>Z(!1)}));let n=()=>{b=null};c({target:window,event:`blur`,handler:n,cleanup:x}),c({target:window,event:`resize`,handler:n,cleanup:x}),c({target:window,event:`scroll`,handler:n,cleanup:x,options:{capture:!0}}),q(),J(),z([]),t=!0,E().open&&queueMicrotask(()=>Y.send(`OPEN`))},destroy(){v?.disconnect(),v=null,y=!1,x.forEach(e=>e()),x=[],Y.disconnect(),m?.destroy(),Array.from(g.keys()).forEach(B),b=null,m=null,u=null,l=null,e=null},get root(){let e=this.snapshot.current?.props??E();return h({inputs:[p({part:ie.parts.root,props:e,className:e.class}),{"data-ui-dropdown":``,":data-state":()=>Y.hasTag(`expanded`)?`open`:`closed`,"@click":he,"@keydown":ge,"@focusin":_e,"@pointermove":ve,"@pointerout":ye}]})},get menu(){let e=T();return h({inputs:[p({part:w.parts.menu,props:{},className:e.dataset.class}),{id:i,popover:`manual`,role:`menu`,tabindex:`-1`,"data-ui-menu":``,":hidden":()=>!Y.hasTag(`visible`),":data-state":()=>Y.hasTag(`expanded`)?`open`:`closed`,"@toggle":be}]})},open(e){X(`menu`,e)},close(e){Z(e instanceof KeyboardEvent,e)},toggle(e){e?.preventDefault(),!E().disabled&&Y.send({type:`TOGGLE`,restoreFocus:e instanceof KeyboardEvent})}},$},P=u(`UiDropdown`,N),F=new WeakSet,I=t=>{F.has(t)||(F.add(t),e(t),P(t))};export{N as n,I as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-CSDZ4U92.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-CSDZ4U92.js","names":[],"sources":["../../../../../../../../client/src/components/menu/styles.ts","../../../../../../../../client/src/components/dropdown/safe-area.ts","../../../../../../../../client/src/components/dropdown/contract.ts","../../../../../../../../client/src/components/dropdown/machine.ts","../../../../../../../../client/src/components/dropdown/styles.ts","../../../../../../../../client/src/components/dropdown/index.ts","../../../../../../../../client/src/components/dropdown/entry.generated.ts"],"sourcesContent":["import {defineStyles} from '../../runtime';\nimport {OPTION_ICON_CLASSES, OPTION_ITEM_CLASSES, POPOVER_GEOMETRY_CLASSES} from '../common';\n\nconst menuStyles = defineStyles({definition: {\n component: 'ui.menu',\n parts: {\n menu: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'auto-rows-min content-start min-w-48 gap-1 overflow-hidden rounded-overlay-sm p-popover-padding',\n ],\n },\n item: {\n base: [\n OPTION_ITEM_CLASSES,\n ],\n variants: {\n variant: {\n default: '',\n subtle: '',\n filled: '',\n ghost: '',\n },\n color: {\n neutral: '',\n accent: '',\n success: '',\n warning: '',\n danger: '',\n },\n },\n defaults: {\n variant: 'default',\n color: 'neutral',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemMeta: {\n base: 'ml-auto font-metadata text-metadata [font-weight:var(--font-weight-metadata)] text-current opacity-70',\n },\n itemIcon: {\n base: OPTION_ICON_CLASSES,\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n submenu: {\n base: 'contents',\n },\n submenuPanel: {\n base: '',\n },\n group: {\n base: 'grid auto-rows-min content-start gap-1',\n },\n label: {\n base: 'px-menu-item-padding-inline py-1 font-label text-label [font-weight:var(--font-weight-label)]',\n },\n separatorRoot: {\n variants: {\n orientation: {\n vertical: 'self-stretch self-center',\n horizontal: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n },\n defaults: {\n orientation: 'horizontal',\n },\n },\n separatorRule: {\n variants: {\n orientation: {\n vertical: 'h-full w-[var(--border-width-edge-separator)] border-0',\n horizontal: 'h-[var(--border-width-edge-separator)] w-full border-0',\n },\n },\n defaults: {\n orientation: 'horizontal',\n },\n },\n },\n}});\n\nexport {menuStyles};\n","type Point = {x: number; y: number};\ntype PanelRect = {left: number; right: number; top: number; bottom: number};\ntype SubmenuSafeArea = {contains(point: Point): boolean};\n\nconst edge = (point: Point, start: Point, end: Point): number => (\n (point.x - end.x) * (start.y - end.y) - (start.x - end.x) * (point.y - end.y)\n);\n\nconst createSubmenuSafeArea = ({origin, panel}: {origin: Point; panel: PanelRect}): SubmenuSafeArea => {\n const nearX = panel.left >= origin.x ? panel.left : panel.right;\n const top = {x: nearX, y: panel.top};\n const bottom = {x: nearX, y: panel.bottom};\n const minX = Math.min(origin.x, nearX);\n const maxX = Math.max(origin.x, nearX);\n\n return {\n contains(point): boolean {\n if (point.x <= minX || point.x >= maxX) return false;\n const first = edge(point, origin, top);\n const second = edge(point, top, bottom);\n const third = edge(point, bottom, origin);\n const hasNegative = first < 0 || second < 0 || third < 0;\n const hasPositive = first > 0 || second > 0 || third > 0;\n return !(hasNegative && hasPositive);\n },\n };\n};\n\nexport {createSubmenuSafeArea};\nexport type {PanelRect, Point, SubmenuSafeArea};\n","import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {ALIGNMENTS, POSITIONS, type Alignment, type Position} from '../common';\n\nconst DROPDOWN_SIDES = POSITIONS;\n\nconst DROPDOWN_ALIGNS = ALIGNMENTS;\n\ntype DropdownSide = Position;\ntype DropdownAlign = Alignment;\n\nconst dropdownSchema = {\n side: oneOf(DROPDOWN_SIDES, 'bottom' as DropdownSide),\n align: oneOf(DROPDOWN_ALIGNS, 'start' as DropdownAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n open: bool,\n disabled: bool,\n class: string,\n};\n\ntype DropdownProps = SchemaToProps<typeof dropdownSchema>;\n\nexport {\n DROPDOWN_ALIGNS,\n DROPDOWN_SIDES,\n dropdownSchema,\n};\nexport type {DropdownAlign, DropdownSide, DropdownProps};\n","import {\n createMachine,\n type Machine,\n type MachineEventObject,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport {defineControlledOpenProps} from '../shared/controlled-open';\nimport type {DropdownProps} from './contract';\n\ntype DropdownContext = {openSubmenuIds: string[]};\ntype DropdownFocus = 'menu' | 'first';\n\ntype DropdownMachineEffects = {\n prepareOpen(focus: DropdownFocus): void;\n finishOpen(): void;\n prepareClose(restoreFocus: boolean, reflectOpen: boolean): void;\n finishClose(): void;\n syncProps(): void;\n syncSubmenus(openSubmenuIds: string[]): void;\n};\n\ntype CreateDropdownMachineOptions = {\n props: DropdownProps;\n effects: DropdownMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<DropdownContext, DropdownProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<DropdownContext, DropdownProps, Record<string, never>, 'closing'>);\n\nconst dropdownHooks = [openingHook, closingHook] as const;\nconst controlledOpenProps = defineControlledOpenProps<DropdownContext, DropdownProps>();\n\nconst focusFrom = (event: MachineEventObject): DropdownFocus => event.focus === 'first' ? 'first' : 'menu';\nconst shouldRestoreFocus = (event: MachineEventObject): boolean => event.restoreFocus === true;\nconst submenuPathFrom = (event: MachineEventObject): string[] => (\n Array.isArray(event.path) ? event.path.filter((value): value is string => typeof value === 'string') : []\n);\n\nconst createDropdownMachine = ({\n props,\n effects,\n}: CreateDropdownMachineOptions): Machine<DropdownContext, DropdownProps> => createMachine<DropdownContext, DropdownProps>({\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: [\n {\n target: 'opening',\n guard: controlledOpenProps.shouldOpen,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareOpen'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n TOGGLE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n SUBMENU_PATH_CHANGED: {reduce: 'replaceSubmenuPath', effects: 'syncSubmenus'},\n PROPS_CHANGED: [\n {\n target: 'closing',\n guard: controlledOpenProps.shouldClose,\n reduce: 'replacePropsAndClearSubmenus',\n effects: ['syncSubmenus', 'prepareClose', 'syncProps'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n TOGGLE: {target: 'closing', reduce: 'clearSubmenus', effects: ['syncSubmenus', 'prepareClose']},\n SUBMENU_PATH_CHANGED: {reduce: 'replaceSubmenuPath', effects: 'syncSubmenus'},\n PROPS_CHANGED: [\n {\n target: 'closing',\n guard: controlledOpenProps.shouldClose,\n reduce: 'replacePropsAndClearSubmenus',\n effects: ['syncSubmenus', 'prepareClose', 'syncProps'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: [\n {\n target: 'opening',\n guard: controlledOpenProps.shouldOpen,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareOpen'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n}, {\n context: {openSubmenuIds: []},\n props,\n reducers: {\n replaceProps: controlledOpenProps.replace,\n replaceSubmenuPath: (scope) => ({context: {...scope.context, openSubmenuIds: submenuPathFrom(scope.event)}}),\n clearSubmenus: (scope) => ({context: {...scope.context, openSubmenuIds: []}}),\n replacePropsAndClearSubmenus: (scope) => {\n const next = controlledOpenProps.replace(scope);\n return next ? {...next, context: {...scope.context, openSubmenuIds: []}} : undefined;\n },\n },\n guards: {\n canOpen: ({props: currentProps}) => !currentProps.disabled,\n },\n effects: {\n prepareOpen: ({event}) => effects.prepareOpen(focusFrom(event)),\n finishOpen: effects.finishOpen,\n prepareClose: ({event}) => effects.prepareClose(\n shouldRestoreFocus(event),\n event.type !== 'PROPS_CHANGED',\n ),\n finishClose: effects.finishClose,\n syncProps: effects.syncProps,\n syncSubmenus: ({context}) => effects.syncSubmenus(context.openSubmenuIds),\n },\n});\n\nexport {createDropdownMachine, dropdownHooks};\nexport type {\n CreateDropdownMachineOptions,\n DropdownContext,\n DropdownFocus,\n DropdownMachineEffects,\n};\n","import {defineStyles} from '../../runtime';\n\nconst dropdownStyles = defineStyles({definition: {\n component: 'ui.dropdown',\n parts: {\n root: {\n base: 'contents',\n },\n },\n}});\n\nexport {dropdownStyles};\n","import type Alpine from 'alpinejs';\n\nimport {menuStyles} from '@client/components/menu/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {createAnchoredPopoverSurface, type AnchoredPopoverSurface} from '@client/runtime/anchored-popover';\nimport {createCollectionNavigation, type CollectionNavigation} from '@client/runtime/collection-navigation';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, type CleanupStack} from '@client/utils';\nimport {createSubmenuSafeArea, type SubmenuSafeArea} from './safe-area';\nimport {dropdownSchema, type DropdownProps} from './contract';\nimport {\n createDropdownMachine,\n dropdownHooks,\n type DropdownContext,\n type DropdownFocus,\n} from './machine';\nimport {dropdownStyles} from './styles';\n\ntype DropdownTransitionName = (typeof dropdownHooks)[number]['name'];\ntype DropdownTransition<TName extends DropdownTransitionName = DropdownTransitionName> = TransitionForHook<\n Extract<(typeof dropdownHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype TriggerBaseline = {\n ariaDisabled: string | null;\n dataDisabled: string | null;\n disabled: boolean | null;\n tabIndex: string | null;\n};\n\ntype SubmenuResource = {\n id: string;\n root: HTMLElement;\n trigger: HTMLElement;\n panel: PopoverElement;\n popover: AnchoredPopoverSurface;\n collection: CollectionNavigation;\n};\n\nlet submenuId = 0;\n\n/**\n * Public Alpine API for `ui.dropdown`.\n *\n * @public\n */\ninterface UiDropdownApi {\n /** Whether the dropdown is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Opens the dropdown unless it is disabled. */\n open(event?: Event): void;\n\n /** Closes the dropdown. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current dropdown lifecycle, including an in-flight transition. */\n toggle(event?: Event): void;\n}\n\ntype DropdownData = AlpineMachine<DropdownContext, DropdownProps, typeof dropdownHooks> & UiDropdownApi & {\n readonly root: BindingObject;\n readonly menu: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst UiDropdown = (): TrellisAlpineComponent<DropdownData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let canReflectOpen = false;\n let reflectTransitionOpen = true;\n let triggerId = '';\n let menuId = '';\n let triggerBaseline: TriggerBaseline | null = null;\n let collection: CollectionNavigation | null = null;\n let popover: AnchoredPopoverSurface | null = null;\n const submenus = new Map<HTMLElement, SubmenuResource>();\n let submenuObserver: MutationObserver | null = null;\n let submenuReconciliationScheduled = false;\n let safeArea: SubmenuSafeArea | null = null;\n let cleanup: CleanupStack = [];\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Dropdown has not been initialized.');\n return rootEl;\n };\n\n const triggerEl = (): HTMLElement => {\n const trigger = Array.from(root().children)\n .find((el) => el instanceof HTMLElement && !el.matches('[data-ui-menu]'));\n if (!(trigger instanceof HTMLElement)) throw new Error('Dropdown requires a trigger element before the menu.');\n return trigger;\n };\n\n const menuEl = (): PopoverElement => {\n const menu = Array.from(root().children).find((element) => element instanceof HTMLElement && element.matches('[data-ui-menu]'));\n if (!(menu instanceof HTMLElement)) throw new Error('Dropdown requires a menu element.');\n return menu as PopoverElement;\n };\n\n const currentProps = (): Readonly<DropdownProps> => bridge.getSnapshot().props;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const itemFrom = (target: EventTarget | null): HTMLElement | null => {\n if (!(target instanceof Element)) return null;\n const item = target.closest<HTMLElement>('[data-ui-menu-item]');\n return item && root().contains(item) ? item : null;\n };\n\n const itemDisabled = (item: HTMLElement): boolean => (\n asBool({value: item.dataset.disabled})\n || item.getAttribute('aria-disabled') === 'true'\n || item.hasAttribute('disabled')\n );\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Dropdown navigation has not been initialized.');\n return collection;\n };\n\n const syncMenuItems = (): void => {\n const items = [collectionNav(), ...Array.from(submenus.values(), ({collection: nested}) => nested)];\n items.forEach((navigation) => navigation.allItems().forEach((item) => {\n if (!item.hasAttribute('role')) item.setAttribute('role', 'menuitem');\n item.tabIndex = -1;\n if (itemDisabled(item)) item.setAttribute('aria-disabled', 'true');\n }));\n };\n\n const submenuForTrigger = (item: HTMLElement | null): SubmenuResource | null => {\n if (!item) return null;\n return Array.from(submenus.values()).find(({trigger}) => trigger === item) ?? null;\n };\n\n const submenuForId = (id: string): SubmenuResource | null => (\n Array.from(submenus.values()).find((resource) => resource.id === id) ?? null\n );\n\n const submenuForPanel = (panel: Element | null): SubmenuResource | null => {\n if (!panel) return null;\n return Array.from(submenus.values()).find(({panel: candidate}) => candidate === panel) ?? null;\n };\n\n const parentSubmenu = (resource: SubmenuResource): SubmenuResource | null => {\n const parentPanel = resource.root.parentElement?.closest<HTMLElement>('[data-ui-menu-submenu-panel]') ?? null;\n return submenuForPanel(parentPanel);\n };\n\n const pathTo = (resource: SubmenuResource): string[] => {\n const path: string[] = [];\n let current: SubmenuResource | null = resource;\n while (current) {\n path.unshift(current.id);\n current = parentSubmenu(current);\n }\n return path;\n };\n\n const currentSubmenuPath = (): string[] => bridge.getSnapshot().context.openSubmenuIds;\n\n const syncSubmenus = (openIds: string[]): void => {\n safeArea = null;\n submenus.forEach((resource) => {\n const open = openIds.includes(resource.id);\n resource.root.dataset.state = open ? 'open' : 'closed';\n resource.trigger.dataset.state = open ? 'open' : 'closed';\n resource.trigger.setAttribute('aria-expanded', open ? 'true' : 'false');\n resource.panel.dataset.state = open ? 'open' : 'closed';\n resource.panel.hidden = !open;\n if (open) resource.popover.open();\n else {\n resource.collection.clearActiveItem();\n resource.popover.close();\n }\n });\n };\n\n const registerSubmenu = (submenuRoot: HTMLElement): void => {\n if (submenus.has(submenuRoot)) return;\n\n const trigger = submenuRoot.querySelector<HTMLElement>(':scope > [data-ui-submenu-trigger]');\n const panel = submenuRoot.querySelector<HTMLElement>(':scope > [data-ui-menu-submenu-panel]');\n if (!trigger || !panel) throw new Error('Menu submenu requires a trigger and nested menu panel.');\n\n const id = submenuRoot.dataset.submenuId || `ui-submenu-${++submenuId}`;\n const triggerIdForSubmenu = trigger.id || `${id}-trigger`;\n const panelId = panel.id || `${id}-menu`;\n submenuRoot.dataset.submenuId = id;\n submenuRoot.dataset.state = 'closed';\n trigger.id = triggerIdForSubmenu;\n trigger.dataset.state = 'closed';\n trigger.setAttribute('aria-controls', panelId);\n trigger.setAttribute('aria-expanded', 'false');\n panel.id = panelId;\n panel.dataset.state = 'closed';\n panel.setAttribute('aria-labelledby', triggerIdForSubmenu);\n panel.setAttribute('popover', 'manual');\n panel.setAttribute('role', 'menu');\n panel.tabIndex = -1;\n panel.hidden = true;\n\n const navigation = createCollectionNavigation({\n root: () => panel,\n itemSelector: '[data-ui-menu-item]',\n ownsItem: (item) => item.closest('[data-ui-menu]') === panel,\n isDisabled: itemDisabled,\n loop: () => asBool({value: panel.dataset.loop}),\n });\n const nestedPopover = createAnchoredPopoverSurface({\n reference: () => trigger,\n floating: () => panel,\n position: () => 'right',\n align: () => 'start',\n gap: () => 4,\n offset: () => 0,\n });\n submenus.set(submenuRoot, {\n id,\n root: submenuRoot,\n trigger,\n panel: panel as PopoverElement,\n popover: nestedPopover,\n collection: navigation,\n });\n };\n\n const unregisterSubmenu = (submenuRoot: HTMLElement): void => {\n const resource = submenus.get(submenuRoot);\n if (!resource) return;\n resource.collection.clearActiveItem();\n resource.popover.destroy();\n submenus.delete(submenuRoot);\n safeArea = null;\n };\n\n const reconcileOpenSubmenuPath = (): void => {\n const currentPath = currentSubmenuPath();\n let nextPath: string[] = [];\n for (let index = currentPath.length - 1; index >= 0; index -= 1) {\n const resource = submenuForId(currentPath[index] as string);\n if (!resource) continue;\n nextPath = pathTo(resource);\n break;\n }\n if (nextPath.length === currentPath.length\n && nextPath.every((id, index) => id === currentPath[index])) return;\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: nextPath});\n };\n\n const reconcileSubmenus = (): void => {\n const submenuRoots = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-menu-submenu]'));\n const connectedRoots = new Set(submenuRoots);\n let removed = false;\n\n Array.from(submenus.keys()).forEach((submenuRoot) => {\n if (connectedRoots.has(submenuRoot)) return;\n unregisterSubmenu(submenuRoot);\n removed = true;\n });\n if (removed) reconcileOpenSubmenuPath();\n\n // querySelectorAll returns ancestors before their descendants.\n submenuRoots.forEach(registerSubmenu);\n reconcileOpenSubmenuPath();\n syncMenuItems();\n };\n\n const scheduleSubmenuReconciliation = (): void => {\n if (submenuReconciliationScheduled) return;\n submenuReconciliationScheduled = true;\n queueMicrotask(() => {\n submenuReconciliationScheduled = false;\n if (!rootEl) return;\n reconcileSubmenus();\n });\n };\n\n const activateCommittedItem = (navigation: CollectionNavigation): boolean => {\n const selected = navigation.items().find((item) => (\n item.hasAttribute('data-selected')\n || ['true', 'mixed'].includes(item.getAttribute('aria-checked') ?? '')\n ));\n if (!selected) return false;\n navigation.activateItem({el: selected});\n return true;\n };\n\n const openSubmenu = (resource: SubmenuResource, focusFirst = false): void => {\n if (itemDisabled(resource.trigger)) return;\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: pathTo(resource)});\n queueMicrotask(() => {\n if (focusFirst) resource.collection.focusFirst();\n else activateCommittedItem(resource.collection);\n });\n };\n\n const closeSubmenu = (resource: SubmenuResource, restoreFocus = false): void => {\n const path = pathTo(resource);\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: path.slice(0, -1)});\n if (restoreFocus) resource.trigger.focus({preventScroll: true});\n };\n\n const captureTriggerBaseline = (): void => {\n const trigger = triggerEl();\n const explicitTabIndex = trigger.getAttribute('tabindex');\n triggerBaseline = {\n ariaDisabled: trigger.getAttribute('aria-disabled'),\n dataDisabled: trigger.getAttribute('data-disabled'),\n disabled: trigger instanceof HTMLButtonElement ? trigger.disabled : null,\n tabIndex: explicitTabIndex ?? (trigger.tabIndex < 0 ? '0' : null),\n };\n };\n\n const restoreAttribute = (el: HTMLElement, name: string, value: string | null): void => {\n if (value === null) el.removeAttribute(name);\n else el.setAttribute(name, value);\n };\n\n const syncTrigger = (): void => {\n if (canReflectOpen && (isExpanded() || reflectTransitionOpen)) {\n reflectSchemaProp({el: root(), schema: dropdownSchema, key: 'open', value: isExpanded()});\n }\n const trigger = triggerEl();\n const baseline = triggerBaseline;\n if (!baseline) return;\n\n trigger.id ||= triggerId;\n trigger.setAttribute('data-ui-dropdown-trigger', '');\n trigger.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n trigger.setAttribute('aria-controls', menuId);\n trigger.setAttribute('data-state', isExpanded() ? 'open' : 'closed');\n\n if (currentProps().disabled) {\n trigger.setAttribute('aria-disabled', 'true');\n trigger.setAttribute('data-disabled', '');\n trigger.tabIndex = -1;\n if (trigger instanceof HTMLButtonElement) trigger.disabled = true;\n return;\n }\n\n restoreAttribute(trigger, 'aria-disabled', baseline.ariaDisabled);\n restoreAttribute(trigger, 'data-disabled', baseline.dataDisabled);\n restoreAttribute(trigger, 'tabindex', baseline.tabIndex);\n if (trigger instanceof HTMLButtonElement && baseline.disabled !== null) trigger.disabled = baseline.disabled;\n };\n\n const syncMenu = (): void => {\n const menu = menuEl();\n menu.id = menuId;\n menu.setAttribute('popover', 'manual');\n menu.setAttribute('role', 'menu');\n menu.tabIndex = -1;\n menu.hidden = !isVisible();\n menu.setAttribute('data-state', isExpanded() ? 'open' : 'closed');\n syncMenuItems();\n };\n\n const prepareOpen = (focus: DropdownFocus): void => {\n reflectTransitionOpen = true;\n syncTrigger();\n syncMenu();\n popover?.open();\n queueMicrotask(() => {\n if (!bridge.hasTag('interactive')) return;\n if (focus === 'first') collectionNav().focusFirst();\n else {\n activateCommittedItem(collectionNav());\n menuEl().focus({preventScroll: true});\n }\n });\n };\n\n const finishOpen = (): void => {\n syncTrigger();\n syncMenu();\n dispatch({el: root(), name: 'ui:open'});\n };\n\n const prepareClose = (restoreFocus: boolean, reflectOpen: boolean): void => {\n reflectTransitionOpen = reflectOpen;\n collectionNav().clearActiveItem();\n syncTrigger();\n syncMenu();\n if (restoreFocus) triggerEl().focus({preventScroll: true});\n };\n\n const finishClose = (): void => {\n popover?.close();\n syncTrigger();\n syncMenu();\n reflectTransitionOpen = true;\n dispatch({el: root(), name: 'ui:close'});\n };\n\n const syncProps = (): void => {\n syncTrigger();\n syncMenu();\n popover?.sync();\n };\n\n const bridge = createAlpineMachine({\n schema: dropdownSchema,\n hooks: dropdownHooks,\n createMachine: ({props}) => createDropdownMachine({\n props,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, syncProps, syncSubmenus},\n }),\n });\n\n const open = (focus: DropdownFocus = 'menu', event?: Event): void => {\n event?.preventDefault();\n if (currentProps().disabled) return;\n if (bridge.hasTag('expanded')) {\n if (focus === 'first') collectionNav().focusFirst();\n return;\n }\n bridge.send({type: 'OPEN', focus});\n };\n\n const close = (restoreFocus: boolean, event?: Event): void => {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus});\n };\n\n const selectItem = (item: HTMLElement, event: Event): void => {\n if (itemDisabled(item)) {\n event.preventDefault();\n return;\n }\n\n const menuKeepOpen = asBool({value: menuEl().dataset.keepOpen});\n const itemKeepOpen = item.dataset.keepOpen === undefined || item.dataset.keepOpen === ''\n ? menuKeepOpen\n : asBool({value: item.dataset.keepOpen});\n if (!itemKeepOpen) close(false);\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item) {\n const submenu = submenuForTrigger(item);\n if (submenu) {\n event.preventDefault();\n openSubmenu(submenu);\n return;\n }\n selectItem(item, event);\n return;\n }\n\n const target = event.target;\n if (target instanceof Node && triggerEl().contains(target)) {\n event.preventDefault();\n if (!currentProps().disabled) bridge.send('TOGGLE');\n }\n };\n\n const handleKeydown = (event: Event): void => {\n if (!(event instanceof KeyboardEvent)) return;\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n const deepest = submenuForId(currentSubmenuPath().at(-1) ?? '');\n if (deepest) {\n closeSubmenu(deepest, true);\n return;\n }\n close(true);\n return;\n }\n\n const target = event.target;\n if (target instanceof Node && triggerEl().contains(target)) {\n if (event.key === 'ArrowDown') {\n open('first', event);\n return;\n }\n const trigger = triggerEl();\n if (!(trigger instanceof HTMLButtonElement) && !(trigger instanceof HTMLAnchorElement)\n && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n if (!currentProps().disabled) bridge.send('TOGGLE');\n }\n return;\n }\n\n const item = itemFrom(event.target);\n const submenu = submenuForTrigger(item);\n if (submenu && (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n openSubmenu(submenu, true);\n return;\n }\n\n const containingPanel = event.target instanceof Element\n ? event.target.closest<HTMLElement>('[data-ui-menu-submenu-panel]')\n : null;\n const containingSubmenu = submenuForPanel(containingPanel);\n if (containingSubmenu && event.key === 'ArrowLeft') {\n event.preventDefault();\n closeSubmenu(containingSubmenu, true);\n return;\n }\n\n if (item && (event.key === 'Enter' || event.key === ' ')\n && item.matches('[role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]')) {\n event.preventDefault();\n item.querySelector<HTMLInputElement>('input[type=\"checkbox\"], input[type=\"radio\"]')?.click();\n return;\n }\n\n if (containingSubmenu) containingSubmenu.collection.handleKeydown({event});\n else if (menuEl().contains(event.target as Node)) collectionNav().handleKeydown({event});\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item && !itemDisabled(item)) collectionNav().activateItem({el: item});\n };\n\n const handlePointer = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (safeArea?.contains({x: event.clientX, y: event.clientY})) return;\n const item = itemFrom(event.target);\n if (!item || itemDisabled(item)) return;\n safeArea = null;\n const submenu = submenuForTrigger(item);\n const containingPanel = item.closest<HTMLElement>('[data-ui-menu-submenu-panel]');\n const containingSubmenu = submenuForPanel(containingPanel);\n const navigation = containingSubmenu?.collection ?? collectionNav();\n navigation.activateItem({el: item});\n if (submenu) {\n openSubmenu(submenu);\n return;\n }\n bridge.send({type: 'SUBMENU_PATH_CHANGED', path: containingSubmenu ? pathTo(containingSubmenu) : []});\n };\n\n const handlePointerOut = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (!window.matchMedia('(hover: hover) and (pointer: fine)').matches) return;\n const item = itemFrom(event.target);\n const submenu = submenuForTrigger(item);\n if (!submenu || !currentSubmenuPath().includes(submenu.id)) return;\n if (event.relatedTarget instanceof Node && submenu.panel.contains(event.relatedTarget)) return;\n const panel = submenu.panel.getBoundingClientRect();\n safeArea = createSubmenuSafeArea({\n origin: {x: event.clientX, y: event.clientY},\n panel: {left: panel.left, right: panel.right, top: panel.top, bottom: panel.bottom},\n });\n };\n\n const handleNativeToggle = (event: Event): void => {\n if (!('newState' in event)) return;\n if (event.newState === 'open') {\n if (!isVisible()) bridge.send('OPEN');\n return;\n }\n if (isVisible()) bridge.send('CLOSE');\n };\n\n let component!: TrellisAlpineComponent<DropdownData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n triggerId = triggerEl().id || this.$id('dropdown-trigger');\n menuId = menuEl().id || this.$id('dropdown-menu');\n captureTriggerBaseline();\n collection = createCollectionNavigation({\n root: () => menuEl(),\n itemSelector: '[data-ui-menu-item]',\n ownsItem: (item) => item.closest('[data-ui-menu]') === menuEl(),\n isDisabled: itemDisabled,\n loop: () => asBool({value: menuEl().dataset.loop}),\n });\n popover = createAnchoredPopoverSurface({\n reference: triggerEl,\n floating: menuEl,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n });\n reconcileSubmenus();\n submenuObserver = new MutationObserver(scheduleSubmenuReconciliation);\n submenuObserver.observe(root(), {childList: true, subtree: true});\n cleanup.push(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), menuEl()],\n onDismiss: () => close(false),\n }));\n const clearSafeArea = (): void => { safeArea = null; };\n addListener({target: window, event: 'blur', handler: clearSafeArea, cleanup});\n addListener({target: window, event: 'resize', handler: clearSafeArea, cleanup});\n addListener({target: window, event: 'scroll', handler: clearSafeArea, cleanup, options: {capture: true}});\n syncTrigger();\n syncMenu();\n syncSubmenus([]);\n canReflectOpen = true;\n if (currentProps().open) queueMicrotask(() => bridge.send('OPEN'));\n },\n destroy(): void {\n submenuObserver?.disconnect();\n submenuObserver = null;\n submenuReconciliationScheduled = false;\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n bridge.disconnect();\n popover?.destroy();\n Array.from(submenus.keys()).forEach(unregisterSubmenu);\n safeArea = null;\n popover = null;\n collection = null;\n triggerBaseline = null;\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: dropdownStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-dropdown': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n '@click': handleClick,\n '@keydown': handleKeydown,\n '@focusin': handleFocus,\n '@pointermove': handlePointer,\n '@pointerout': handlePointerOut,\n },\n ]});\n },\n get menu(): BindingObject {\n const menu = menuEl();\n return mergeBindings({inputs: [\n resolveStyle({part: menuStyles.parts.menu, props: {}, className: menu.dataset.class}),\n {\n id: menuId,\n popover: 'manual',\n role: 'menu',\n tabindex: '-1',\n 'data-ui-menu': '',\n ':hidden': () => !bridge.hasTag('visible'),\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n '@toggle': handleNativeToggle,\n },\n ]});\n },\n open(event?: Event): void {\n open('menu', event);\n },\n close(event?: Event): void {\n close(event instanceof KeyboardEvent, event);\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled) return;\n bridge.send({type: 'TOGGLE', restoreFocus: event instanceof KeyboardEvent});\n },\n };\n\n return component;\n};\n\nconst registerDropdown = defineAlpineData('UiDropdown', UiDropdown);\n\nexport {registerDropdown, UiDropdown};\nexport type {DropdownData, DropdownTransition, UiDropdownApi};\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 {registerDropdown as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDropdown = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerDropdown};\nexport default registerDropdown;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e}from"./motion-B4uuk1JX.js";import{n as t}from"./morph-Cq3V_23_.js";import{t as n}from"./capability-motion-DRILCSFH.js";import{f as r,l as i,n as a,o,u as s}from"./codecs-Cb1ns_47.js";import{r as c,t as l}from"./dom-qAeVl7dc.js";import{i as u,t as ee}from"./alpine-machine-BTDXpEr6.js";import{t as d}from"./alpine-data-CytyCyfk.js";import{n as f,t as p}from"./styles-TfvwVPGw.js";import{t as m}from"./merge-bindings-C8ewA_FD.js";import{t as h}from"./machine-Dqut4h89.js";import{t as te}from"./dismissable-layer-BROE-Ln2.js";import{a as ne,i as re,n as g,o as ie,t as _}from"./focus-scope-DtaPVNl5.js";import{n as v,t as ae}from"./scroll-lock-DOw7dmi1.js";import{R as y,d as b,g as x,u as S}from"./common-Dfj6NCjU.js";import{t as C}from"./controlled-open-Hy4-OT-6.js";import{i as w,r as T}from"./focus-handoff-BE3g0swK.js";var E=[`modal`,`sheet`],D=S,O=[`sm`,`md`,`lg`,`xl`,`full`],k=y,A=b,j=x,M={name:r,open:a,mode:i(E,`modal`),side:i(D,`right`),size:i(O,`md`),surface:i(k,`1`),elevation:i(A,`5`),dismissible:a.default(!0),closable:a.default(!0),disabled:a,autofocusTitle:a,label:r,descriptionId:r,panelClass:r,overlayClass:r,class:r},N={name:r,disabled:a,class:r};r.default(`ui-modal-root`),i(j,`h2`),r.default(`Close`);var oe=[u({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),u({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],P=C(),se=({props:e,effects:t})=>h({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:P.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},CANCEL:{target:`closing`,guard:`canDismiss`,effects:[`emitCancel`,`prepareClose`]},PROPS_CHANGED:[{target:`closing`,guard:P.shouldClose,reduce:`replaceProps`,effects:[`syncProps`,`prepareClose`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},CANCEL:{target:`closing`,guard:`canDismiss`,effects:[`emitCancel`,`prepareClose`]},PROPS_CHANGED:[{target:`closing`,guard:P.shouldClose,reduce:`replaceProps`,effects:[`syncProps`,`prepareClose`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:P.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{},props:e,reducers:{replaceProps:P.replace},guards:{canOpen:({props:e})=>!e.disabled,canDismiss:({props:e})=>e.dismissible},effects:{prepareOpen:t.prepareOpen,finishOpen:t.finishOpen,prepareClose:t.prepareClose,finishClose:t.finishClose,syncProps:t.syncProps,emitCancel:({event:e})=>{(e.reason===`escape`||e.reason===`outside`)&&t.emitCancel(e.reason)}}}),F=[`grid-rows-[auto_auto_minmax(0,1fr)_auto]`,`[&>[data-ui-modal-body]]:-mx-1 [&>[data-ui-modal-body]]:min-h-0 [&>[data-ui-modal-body]]:content-start`,`[&>[data-ui-modal-body]]:overflow-x-hidden [&>[data-ui-modal-body]]:overflow-y-auto [&>[data-ui-modal-body]]:px-1`,`[&>[data-ui-modal-footer]]:self-end`],I=p({definition:{component:`ui.modal`,parts:{instance:{base:`contents`},root:{base:[`fixed inset-0 z-dialog m-0 h-auto max-h-none w-auto max-w-none overflow-visible border-0 bg-transparent p-0 text-surface-ink`,`backdrop:bg-transparent`]},viewport:{base:`fixed inset-0 z-dialog flex min-h-dvh`,variants:{mode:{modal:`items-center justify-center overflow-y-auto p-4`,sheet:``},side:{top:``,right:``,bottom:``,left:``}},compounds:[{when:{mode:`sheet`,side:`top`},class:`items-start justify-center`},{when:{mode:`sheet`,side:`right`},class:`items-center justify-end overflow-hidden`},{when:{mode:`sheet`,side:`bottom`},class:`items-end justify-center`},{when:{mode:`sheet`,side:`left`},class:`items-center justify-start overflow-hidden`}],defaults:{mode:`modal`,side:`right`}},overlay:{base:`fixed inset-0 bg-scrim`},panel:{base:[`relative z-dialog grid w-full min-w-0 gap-4 overflow-auto p-5 outline-none`,`max-h-full`],variants:{mode:{modal:`rounded-overlay-md`,sheet:``},side:{top:``,right:``,bottom:``,left:``},size:{sm:`max-w-modal-sm`,md:`max-w-modal-md`,lg:`max-w-modal-lg`,xl:`max-w-modal-xl`,full:`max-w-full`}},compounds:[{when:{mode:`sheet`,side:`right`},class:[`min-h-dvh rounded-l-overlay-md`,F]},{when:{mode:`sheet`,side:`left`},class:[`min-h-dvh rounded-r-overlay-md`,F]},{when:{mode:`sheet`,side:`top`},class:`max-w-full rounded-b-overlay-md`},{when:{mode:`sheet`,side:`bottom`},class:`max-w-full rounded-t-overlay-md`}],defaults:{mode:`modal`,side:`right`,size:`md`}},trigger:{base:`contents`},outlet:{base:``},title:{base:`pr-8`},description:{base:`-mt-3 pr-8 text-surface-ink-muted`},body:{base:`grid min-w-0 gap-3 text-sm`},footer:{base:`flex min-w-0 items-center justify-end gap-2 pt-1`},close:{base:[`absolute right-3 top-3 inline-flex size-control-md items-center justify-center rounded-full border border-transparent text-surface-ink-muted outline-none`,`hover:bg-interaction-hover focus-visible:ui-focus-ring`]},closeIcon:{base:`size-icon fill-current`}}}}),L=new Set,R=new Set,z=e=>e?`open`:`closed`,B=e=>e===`opening`||e===`open`,V=e=>Array.from(L).find(t=>t.name===e)??null,H=(e,t)=>{e.setAttribute(`data-state`,z(t)),e.setAttribute(`aria-expanded`,t?`true`:`false`)},U=()=>{let n=null,r=``,i=null,a=!1,o=!1,u=!1,d=!1,p=[],h=[],y=null,b=null,x=()=>{if(!n)throw Error(`Modal has not been initialized.`);return n},S=()=>{let e=x().querySelector(`[data-ui-modal]`);if(!(e instanceof HTMLDialogElement))throw Error(`Modal requires a dialog element.`);return e},C=()=>{let e=x().querySelector(`[data-ui-modal-viewport]`);if(!e)throw Error(`Modal requires a viewport element.`);return e},E=()=>{let e=x().querySelector(`[data-ui-modal-overlay]`);if(!e)throw Error(`Modal requires an overlay element.`);return e},D=()=>{let e=x().querySelector(`[data-ui-modal-panel]`);if(!e)throw Error(`Modal requires a panel element.`);return e},O=()=>x().querySelector(`[data-ui-modal-title]`),k=()=>x().querySelector(`[data-ui-modal-description]`),A=()=>{let e=F();S().className=f({part:I.parts.root,props:e,className:e.class}),C().className=f({part:I.parts.viewport,props:e}),E().className=f({part:I.parts.overlay,props:e,className:e.overlayClass}),D().className=f({part:I.parts.panel,props:e,className:e.panelClass})},j=()=>{let e=F(),t=y===e.mode&&e.open&&S().open&&J.matches(`open`);b?.update(A,{animate:t,key:`${e.mode}:${e.size}`}),y=e.mode},N=()=>Array.from(x().children).find(e=>e instanceof HTMLElement&&e.matches(`[data-ui-modal-trigger]`))??null,P=()=>re(D()),F=()=>J.getCommittedSnapshot().props,V=()=>J.matches(`opening`)||J.matches(`open`),U=(e,t)=>{if(H(e,V()),e.setAttribute(`aria-controls`,r),e.setAttribute(`data-ui-modal-trigger-target`,r),t||F().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e instanceof HTMLButtonElement&&(e.disabled=!0),e.matches(_)||(e.tabIndex=-1);return}e.removeAttribute(`aria-disabled`),e.removeAttribute(`data-disabled`),e instanceof HTMLButtonElement&&(e.disabled=!1),e.matches(_)||(e.tabIndex=0)},W=()=>{let e=N();e&&U(g(e),F().disabled),R.forEach(e=>e.sync())},G=()=>{let e=F(),t=S(),n=D(),i=O(),a=k();t.id=r,t.setAttribute(`role`,`dialog`),t.setAttribute(`aria-modal`,`true`),n.id||=`${r}-panel`,n.tabIndex=-1,i?(i.id||=`${r}-title`,t.setAttribute(`aria-labelledby`,i.id),t.removeAttribute(`aria-label`),e.autofocusTitle?i.tabIndex=-1:i.removeAttribute(`tabindex`)):(t.removeAttribute(`aria-labelledby`),e.label?t.setAttribute(`aria-label`,e.label):t.removeAttribute(`aria-label`)),a&&(a.id||=`${r}-description`),e.descriptionId===`none`?t.removeAttribute(`aria-describedby`):e.descriptionId?t.setAttribute(`aria-describedby`,e.descriptionId):a?t.setAttribute(`aria-describedby`,a.id):t.removeAttribute(`aria-describedby`)},K=({syncOpen:e=!0}={})=>{let t=V(),n=z(t);e&&s({el:x(),schema:M,key:`open`,value:t}),[S(),C(),E(),D()].forEach(e=>{e.setAttribute(`data-state`,n)}),W()},q=()=>{if(a){T(D());return}let e=D().querySelector(`[autofocus]`);if(e&&ne(e)){e.focus({preventScroll:!0});return}let t=O();if(F().autofocusTitle&&t){t.focus({preventScroll:!0});return}let n=P()[0];if(n){n.focus({preventScroll:!0});return}D().focus({preventScroll:!0})},ce=()=>{!i||!document.contains(i)||(a?T(i):i.focus({preventScroll:!0}))},le=e=>{J.hasTag(`interactive`)&&ie(e,D())},ue=()=>{b?.refresh({animate:!1});let e=S();typeof e.showModal==`function`&&!o?(e.open&&e.removeAttribute(`open`),e.showModal(),o=!0):e.open||e.setAttribute(`open`,``),u||=(ae(),!0),G(),K(),queueMicrotask(q)},de=()=>{b?.refresh({animate:!1});let e=D();e.style.removeProperty(`transform`),e.style.removeProperty(`translate`),e.style.removeProperty(`scale`),e.style.removeProperty(`rotate`),y=F().mode,K(),c({el:S(),name:`ui:open`})},fe=()=>{b?.refresh({animate:!1}),K()},pe=()=>{b?.refresh({animate:!1});let e=S();e.open&&e.close(),o=!1,u&&=(v(),!1),K(),y=null,ce(),a=!1,c({el:e,name:`ui:close`})},me=()=>{j(),G(),W()},J=ee({schema:M,hooks:oe,createMachine:({props:e})=>se({props:e,effects:{prepareOpen:ue,finishOpen:de,prepareClose:fe,finishClose:pe,syncProps:me,emitCancel:e=>{c({el:S(),name:`ui:cancel`,detail:{reason:e}})}}})}),Y=e=>{F().disabled||(i=e,a=w(e.ownerDocument),J.send(`OPEN`))},X=(e,t)=>{t?.preventDefault(),J.send({type:`CANCEL`,reason:e})},Z=()=>{h.forEach(e=>e()),h=[]},he=e=>{let t=g(e);Z(),U(t,F().disabled),l({target:t,event:`click`,handler:()=>Y(t),cleanup:h}),l({target:t,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(t instanceof HTMLButtonElement||t instanceof HTMLAnchorElement||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),Y(t)))},cleanup:h})},ge=()=>{let e=S(),t=e.querySelector(`[data-ui-modal-trigger]`);!t||t.dataset.name||(x().insertBefore(t,e),he(t))},_e=()=>{let e=S();l({target:e,event:`cancel`,handler:t=>{t.target===e&&X(`escape`,t)},cleanup:p}),l({target:e,event:`close`,handler:()=>{J.hasTag(`visible`)&&J.send(`CLOSE`)},cleanup:p}),l({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&le(e)},cleanup:p}),l({target:e,event:`click`,handler:e=>{let t=e.target;!(t instanceof Element)||!t.closest(`[data-ui-modal-close]`)||(e.preventDefault(),J.send(`CLOSE`))},cleanup:p}),l({target:document,event:`ui:modal-close`,handler:e=>{let t=e.detail;!t?.name||t.name!==F().name||J.send(`CLOSE`)},cleanup:p}),p.push(te({isEnabled:()=>J.hasTag(`interactive`),roots:()=>[D(),i,N()],onDismiss:e=>X(`outside`,e)}))},Q,$={get name(){return F().name},get isOpen(){return J.matches(`open`)},get dialogId(){return r},openFrom:Y,close(e){e?.preventDefault(),J.send(`CLOSE`)},syncExternalTrigger:U};return Q={...J,get name(){return this.snapshot.current?.props.name??``},get isOpen(){return this.snapshot.current?.value===`open`},get isVisible(){return this.snapshot.current?.tags.includes(`visible`)??!1},get dialogId(){return r},init(){n=this.$el,J.connect(this.$el,this.snapshot);let i=F();A(),b=e(D(),{properties:[`height`,`maxWidth`]}),r=S().id||this.$id(`modal${i.name?`-${i.name}`:``}`),t(S(),`open`),G(),L.add($),d=!0,ge(),_e(),K({syncOpen:!1}),i.open&&queueMicrotask(()=>J.send(`OPEN`))},destroy(){b?.destroy(),b=null,p.forEach(e=>e()),p=[],Z(),d&&=(L.delete($),!1),J.disconnect();let e=n?.querySelector(`[data-ui-modal]`);e?.open&&e.close(),u&&=(v(),!1),R.forEach(e=>e.sync()),n=null},get root(){return m({inputs:[f({part:I.parts.instance,props:{},className:``}),{"data-ui-modal-instance":``}]})},get dialog(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.root,props:t,className:t.class}),{id:r,role:`dialog`,"aria-modal":`true`,":data-state":()=>z(B(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side,":data-size":()=>e.current?.props.size}]})},get viewport(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.viewport,props:t}),{":data-state":()=>z(B(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side}]})},get overlay(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.overlay,props:t,className:t.overlayClass}),{":data-state":()=>z(B(e.current?.value))}]})},get panel(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.panel,props:t,className:t.panelClass}),{tabindex:-1,":data-state":()=>z(B(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side,":data-size":()=>e.current?.props.size,":data-ui-surface":()=>e.current?.props.surface,":data-ui-elevation":()=>e.current?.props.elevation}]})},open(e){if(e?.preventDefault(),F().disabled)return;let t=N();t&&(i=g(t)),a=w(x().ownerDocument),J.send(`OPEN`)},close(e){e?.preventDefault(),J.send(`CLOSE`)}},Q},W=()=>{let e=null,t=null,n=[],r=!1,i=()=>{if(!e)throw Error(`Modal trigger has not been initialized.`);return e},a=()=>{if(!t)throw Error(`Modal trigger has not been initialized.`);return t},s=()=>{let e=i().name;return e?V(e):null},c=()=>{let e=i(),t=a(),n=s();if(n){n.syncExternalTrigger(t,e.disabled);return}H(t,!1),e.disabled?(t.setAttribute(`aria-disabled`,`true`),t.setAttribute(`data-disabled`,``)):(t.removeAttribute(`aria-disabled`),t.removeAttribute(`data-disabled`))},u={get name(){return i().name},get target(){return a()},sync:c};return{init(){e=o({el:this.$el,schema:N,onChange:()=>{e?.name&&c()}}),t=g(this.$el),e.name&&(R.add(u),r=!0,c(),l({target:t,event:`click`,handler:e=>this.open(e),cleanup:n}),l({target:t,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(t instanceof HTMLButtonElement||t instanceof HTMLAnchorElement||e.key!==`Enter`&&e.key!==` `||this.open(e))},cleanup:n}))},destroy(){e?.disconnect(),r&&R.delete(u),n.forEach(e=>e()),n=[],r=!1,e=null,t=null},get root(){let t=i();return m({inputs:[f({part:I.parts.trigger,props:{},className:t.class}),{"data-ui-modal-trigger":``,":data-name":()=>e?.name||void 0,":data-disabled":()=>e?.disabled?``:void 0}]})},open(e){e?.preventDefault(),!i().disabled&&s()?.openFrom(a())}}},G=e=>{d(`UiModal`,U)(e),d(`UiModalTrigger`,W)(e)},K=new WeakSet,q=e=>{K.has(e)||(K.add(e),n(e),G(e))};export{U as n,W as r,q as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-
|
|
1
|
+
import{c as e}from"./motion-ke2fZiWo.js";import{n as t}from"./morph-Cq3V_23_.js";import{t as n}from"./capability-motion-CrezWE-8.js";import{f as r,l as i,n as a,o,u as s}from"./codecs-Cb1ns_47.js";import{r as c,t as l}from"./dom-qAeVl7dc.js";import{i as u,t as ee}from"./alpine-machine-BTDXpEr6.js";import{t as d}from"./alpine-data-CytyCyfk.js";import{n as f,t as p}from"./styles-TfvwVPGw.js";import{t as m}from"./merge-bindings-C8ewA_FD.js";import{t as h}from"./machine-Dqut4h89.js";import{t as te}from"./dismissable-layer-BROE-Ln2.js";import{a as ne,i as re,n as g,o as ie,t as _}from"./focus-scope-DtaPVNl5.js";import{n as v,t as ae}from"./scroll-lock-DOw7dmi1.js";import{R as y,d as b,g as x,u as S}from"./common-Dfj6NCjU.js";import{t as C}from"./controlled-open-Hy4-OT-6.js";import{i as w,r as T}from"./focus-handoff-BE3g0swK.js";var E=[`modal`,`sheet`],D=S,O=[`sm`,`md`,`lg`,`xl`,`full`],k=y,A=b,j=x,M={name:r,open:a,mode:i(E,`modal`),side:i(D,`right`),size:i(O,`md`),surface:i(k,`1`),elevation:i(A,`5`),dismissible:a.default(!0),closable:a.default(!0),disabled:a,autofocusTitle:a,label:r,descriptionId:r,panelClass:r,overlayClass:r,class:r},N={name:r,disabled:a,class:r};r.default(`ui-modal-root`),i(j,`h2`),r.default(`Close`);var oe=[u({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),u({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],P=C(),se=({props:e,effects:t})=>h({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:P.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},CANCEL:{target:`closing`,guard:`canDismiss`,effects:[`emitCancel`,`prepareClose`]},PROPS_CHANGED:[{target:`closing`,guard:P.shouldClose,reduce:`replaceProps`,effects:[`syncProps`,`prepareClose`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},CANCEL:{target:`closing`,guard:`canDismiss`,effects:[`emitCancel`,`prepareClose`]},PROPS_CHANGED:[{target:`closing`,guard:P.shouldClose,reduce:`replaceProps`,effects:[`syncProps`,`prepareClose`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:P.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{},props:e,reducers:{replaceProps:P.replace},guards:{canOpen:({props:e})=>!e.disabled,canDismiss:({props:e})=>e.dismissible},effects:{prepareOpen:t.prepareOpen,finishOpen:t.finishOpen,prepareClose:t.prepareClose,finishClose:t.finishClose,syncProps:t.syncProps,emitCancel:({event:e})=>{(e.reason===`escape`||e.reason===`outside`)&&t.emitCancel(e.reason)}}}),F=[`grid-rows-[auto_auto_minmax(0,1fr)_auto]`,`[&>[data-ui-modal-body]]:-mx-1 [&>[data-ui-modal-body]]:min-h-0 [&>[data-ui-modal-body]]:content-start`,`[&>[data-ui-modal-body]]:overflow-x-hidden [&>[data-ui-modal-body]]:overflow-y-auto [&>[data-ui-modal-body]]:px-1`,`[&>[data-ui-modal-footer]]:self-end`],I=p({definition:{component:`ui.modal`,parts:{instance:{base:`contents`},root:{base:[`fixed inset-0 z-dialog m-0 h-auto max-h-none w-auto max-w-none overflow-visible border-0 bg-transparent p-0 text-surface-ink`,`backdrop:bg-transparent`]},viewport:{base:`fixed inset-0 z-dialog flex min-h-dvh`,variants:{mode:{modal:`items-center justify-center overflow-y-auto p-4`,sheet:``},side:{top:``,right:``,bottom:``,left:``}},compounds:[{when:{mode:`sheet`,side:`top`},class:`items-start justify-center`},{when:{mode:`sheet`,side:`right`},class:`items-center justify-end overflow-hidden`},{when:{mode:`sheet`,side:`bottom`},class:`items-end justify-center`},{when:{mode:`sheet`,side:`left`},class:`items-center justify-start overflow-hidden`}],defaults:{mode:`modal`,side:`right`}},overlay:{base:`fixed inset-0 bg-scrim`},panel:{base:[`relative z-dialog grid w-full min-w-0 gap-4 overflow-auto p-5 outline-none`,`max-h-full`],variants:{mode:{modal:`rounded-overlay-md`,sheet:``},side:{top:``,right:``,bottom:``,left:``},size:{sm:`max-w-modal-sm`,md:`max-w-modal-md`,lg:`max-w-modal-lg`,xl:`max-w-modal-xl`,full:`max-w-full`}},compounds:[{when:{mode:`sheet`,side:`right`},class:[`min-h-dvh rounded-l-overlay-md`,F]},{when:{mode:`sheet`,side:`left`},class:[`min-h-dvh rounded-r-overlay-md`,F]},{when:{mode:`sheet`,side:`top`},class:`max-w-full rounded-b-overlay-md`},{when:{mode:`sheet`,side:`bottom`},class:`max-w-full rounded-t-overlay-md`}],defaults:{mode:`modal`,side:`right`,size:`md`}},trigger:{base:`contents`},outlet:{base:``},title:{base:`pr-8`},description:{base:`-mt-3 pr-8 text-surface-ink-muted`},body:{base:`grid min-w-0 gap-3 text-sm`},footer:{base:`flex min-w-0 items-center justify-end gap-2 pt-1`},close:{base:[`absolute right-3 top-3 inline-flex size-control-md items-center justify-center rounded-full border border-transparent text-surface-ink-muted outline-none`,`hover:bg-interaction-hover focus-visible:ui-focus-ring`]},closeIcon:{base:`size-icon fill-current`}}}}),L=new Set,R=new Set,z=e=>e?`open`:`closed`,B=e=>e===`opening`||e===`open`,V=e=>Array.from(L).find(t=>t.name===e)??null,H=(e,t)=>{e.setAttribute(`data-state`,z(t)),e.setAttribute(`aria-expanded`,t?`true`:`false`)},U=()=>{let n=null,r=``,i=null,a=!1,o=!1,u=!1,d=!1,p=[],h=[],y=null,b=null,x=()=>{if(!n)throw Error(`Modal has not been initialized.`);return n},S=()=>{let e=x().querySelector(`[data-ui-modal]`);if(!(e instanceof HTMLDialogElement))throw Error(`Modal requires a dialog element.`);return e},C=()=>{let e=x().querySelector(`[data-ui-modal-viewport]`);if(!e)throw Error(`Modal requires a viewport element.`);return e},E=()=>{let e=x().querySelector(`[data-ui-modal-overlay]`);if(!e)throw Error(`Modal requires an overlay element.`);return e},D=()=>{let e=x().querySelector(`[data-ui-modal-panel]`);if(!e)throw Error(`Modal requires a panel element.`);return e},O=()=>x().querySelector(`[data-ui-modal-title]`),k=()=>x().querySelector(`[data-ui-modal-description]`),A=()=>{let e=F();S().className=f({part:I.parts.root,props:e,className:e.class}),C().className=f({part:I.parts.viewport,props:e}),E().className=f({part:I.parts.overlay,props:e,className:e.overlayClass}),D().className=f({part:I.parts.panel,props:e,className:e.panelClass})},j=()=>{let e=F(),t=y===e.mode&&e.open&&S().open&&J.matches(`open`);b?.update(A,{animate:t,key:`${e.mode}:${e.size}`}),y=e.mode},N=()=>Array.from(x().children).find(e=>e instanceof HTMLElement&&e.matches(`[data-ui-modal-trigger]`))??null,P=()=>re(D()),F=()=>J.getCommittedSnapshot().props,V=()=>J.matches(`opening`)||J.matches(`open`),U=(e,t)=>{if(H(e,V()),e.setAttribute(`aria-controls`,r),e.setAttribute(`data-ui-modal-trigger-target`,r),t||F().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e instanceof HTMLButtonElement&&(e.disabled=!0),e.matches(_)||(e.tabIndex=-1);return}e.removeAttribute(`aria-disabled`),e.removeAttribute(`data-disabled`),e instanceof HTMLButtonElement&&(e.disabled=!1),e.matches(_)||(e.tabIndex=0)},W=()=>{let e=N();e&&U(g(e),F().disabled),R.forEach(e=>e.sync())},G=()=>{let e=F(),t=S(),n=D(),i=O(),a=k();t.id=r,t.setAttribute(`role`,`dialog`),t.setAttribute(`aria-modal`,`true`),n.id||=`${r}-panel`,n.tabIndex=-1,i?(i.id||=`${r}-title`,t.setAttribute(`aria-labelledby`,i.id),t.removeAttribute(`aria-label`),e.autofocusTitle?i.tabIndex=-1:i.removeAttribute(`tabindex`)):(t.removeAttribute(`aria-labelledby`),e.label?t.setAttribute(`aria-label`,e.label):t.removeAttribute(`aria-label`)),a&&(a.id||=`${r}-description`),e.descriptionId===`none`?t.removeAttribute(`aria-describedby`):e.descriptionId?t.setAttribute(`aria-describedby`,e.descriptionId):a?t.setAttribute(`aria-describedby`,a.id):t.removeAttribute(`aria-describedby`)},K=({syncOpen:e=!0}={})=>{let t=V(),n=z(t);e&&s({el:x(),schema:M,key:`open`,value:t}),[S(),C(),E(),D()].forEach(e=>{e.setAttribute(`data-state`,n)}),W()},q=()=>{if(a){T(D());return}let e=D().querySelector(`[autofocus]`);if(e&&ne(e)){e.focus({preventScroll:!0});return}let t=O();if(F().autofocusTitle&&t){t.focus({preventScroll:!0});return}let n=P()[0];if(n){n.focus({preventScroll:!0});return}D().focus({preventScroll:!0})},ce=()=>{!i||!document.contains(i)||i!==i.ownerDocument.activeElement&&(a?T(i):i.focus({preventScroll:!0}))},le=e=>{J.hasTag(`interactive`)&&ie(e,D())},ue=()=>{b?.refresh({animate:!1});let e=S();typeof e.showModal==`function`&&!o?(e.open&&e.removeAttribute(`open`),e.showModal(),o=!0):e.open||e.setAttribute(`open`,``),u||=(ae(),!0),G(),K(),queueMicrotask(q)},de=()=>{b?.refresh({animate:!1});let e=D();e.style.removeProperty(`transform`),e.style.removeProperty(`translate`),e.style.removeProperty(`scale`),e.style.removeProperty(`rotate`),y=F().mode,K(),c({el:S(),name:`ui:open`})},fe=()=>{b?.refresh({animate:!1}),K()},pe=()=>{b?.refresh({animate:!1});let e=S();e.open&&e.close(),o=!1,u&&=(v(),!1),K(),y=null,ce(),a=!1,c({el:e,name:`ui:close`})},me=()=>{j(),G(),W()},J=ee({schema:M,hooks:oe,createMachine:({props:e})=>se({props:e,effects:{prepareOpen:ue,finishOpen:de,prepareClose:fe,finishClose:pe,syncProps:me,emitCancel:e=>{c({el:S(),name:`ui:cancel`,detail:{reason:e}})}}})}),Y=e=>{F().disabled||(i=e,a=w(e.ownerDocument),J.send(`OPEN`))},X=(e,t)=>{t?.preventDefault(),J.send({type:`CANCEL`,reason:e})},Z=()=>{h.forEach(e=>e()),h=[]},he=e=>{let t=g(e);Z(),U(t,F().disabled),l({target:t,event:`click`,handler:()=>Y(t),cleanup:h}),l({target:t,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(t instanceof HTMLButtonElement||t instanceof HTMLAnchorElement||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),Y(t)))},cleanup:h})},ge=()=>{let e=S(),t=e.querySelector(`[data-ui-modal-trigger]`);!t||t.dataset.name||(x().insertBefore(t,e),he(t))},_e=()=>{let e=S();l({target:e,event:`cancel`,handler:t=>{t.target===e&&X(`escape`,t)},cleanup:p}),l({target:e,event:`close`,handler:()=>{J.hasTag(`visible`)&&J.send(`CLOSE`)},cleanup:p}),l({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&le(e)},cleanup:p}),l({target:e,event:`click`,handler:e=>{let t=e.target;!(t instanceof Element)||!t.closest(`[data-ui-modal-close]`)||(e.preventDefault(),J.send(`CLOSE`))},cleanup:p}),l({target:document,event:`ui:modal-close`,handler:e=>{let t=e.detail;!t?.name||t.name!==F().name||J.send(`CLOSE`)},cleanup:p}),p.push(te({isEnabled:()=>J.hasTag(`interactive`),roots:()=>[D(),i,N()],onDismiss:e=>X(`outside`,e)}))},Q,$={get name(){return F().name},get isOpen(){return J.matches(`open`)},get dialogId(){return r},openFrom:Y,close(e){e?.preventDefault(),J.send(`CLOSE`)},syncExternalTrigger:U};return Q={...J,get name(){return this.snapshot.current?.props.name??``},get isOpen(){return this.snapshot.current?.value===`open`},get isVisible(){return this.snapshot.current?.tags.includes(`visible`)??!1},get dialogId(){return r},init(){n=this.$el,J.connect(this.$el,this.snapshot);let i=F();A(),b=e(D(),{properties:[`height`,`maxWidth`]}),r=S().id||this.$id(`modal${i.name?`-${i.name}`:``}`),t(S(),`open`),G(),L.add($),d=!0,ge(),_e(),K({syncOpen:!1}),i.open&&queueMicrotask(()=>J.send(`OPEN`))},destroy(){b?.destroy(),b=null,p.forEach(e=>e()),p=[],Z(),d&&=(L.delete($),!1),J.disconnect();let e=n?.querySelector(`[data-ui-modal]`);e?.open&&e.close(),u&&=(v(),!1),R.forEach(e=>e.sync()),n=null},get root(){return m({inputs:[f({part:I.parts.instance,props:{},className:``}),{"data-ui-modal-instance":``}]})},get dialog(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.root,props:t,className:t.class}),{id:r,role:`dialog`,"aria-modal":`true`,":data-state":()=>z(B(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side,":data-size":()=>e.current?.props.size}]})},get viewport(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.viewport,props:t}),{":data-state":()=>z(B(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side}]})},get overlay(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.overlay,props:t,className:t.overlayClass}),{":data-state":()=>z(B(e.current?.value))}]})},get panel(){let e=this.snapshot,t=e.current?.props??F();return m({inputs:[f({part:I.parts.panel,props:t,className:t.panelClass}),{tabindex:-1,":data-state":()=>z(B(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side,":data-size":()=>e.current?.props.size,":data-ui-surface":()=>e.current?.props.surface,":data-ui-elevation":()=>e.current?.props.elevation}]})},open(e){if(e?.preventDefault(),F().disabled)return;let t=N();t&&(i=g(t)),a=w(x().ownerDocument),J.send(`OPEN`)},close(e){e?.preventDefault(),J.send(`CLOSE`)}},Q},W=()=>{let e=null,t=null,n=[],r=!1,i=()=>{if(!e)throw Error(`Modal trigger has not been initialized.`);return e},a=()=>{if(!t)throw Error(`Modal trigger has not been initialized.`);return t},s=()=>{let e=i().name;return e?V(e):null},c=()=>{let e=i(),t=a(),n=s();if(n){n.syncExternalTrigger(t,e.disabled);return}H(t,!1),e.disabled?(t.setAttribute(`aria-disabled`,`true`),t.setAttribute(`data-disabled`,``)):(t.removeAttribute(`aria-disabled`),t.removeAttribute(`data-disabled`))},u={get name(){return i().name},get target(){return a()},sync:c};return{init(){e=o({el:this.$el,schema:N,onChange:()=>{e?.name&&c()}}),t=g(this.$el),e.name&&(R.add(u),r=!0,c(),l({target:t,event:`click`,handler:e=>this.open(e),cleanup:n}),l({target:t,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(t instanceof HTMLButtonElement||t instanceof HTMLAnchorElement||e.key!==`Enter`&&e.key!==` `||this.open(e))},cleanup:n}))},destroy(){e?.disconnect(),r&&R.delete(u),n.forEach(e=>e()),n=[],r=!1,e=null,t=null},get root(){let t=i();return m({inputs:[f({part:I.parts.trigger,props:{},className:t.class}),{"data-ui-modal-trigger":``,":data-name":()=>e?.name||void 0,":data-disabled":()=>e?.disabled?``:void 0}]})},open(e){e?.preventDefault(),!i().disabled&&s()?.openFrom(a())}}},G=e=>{d(`UiModal`,U)(e),d(`UiModalTrigger`,W)(e)},K=new WeakSet,q=e=>{K.has(e)||(K.add(e),n(e),G(e))};export{U as n,W as r,q as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-D07X7NjA.js.map
|