@vireo-ai/trellis-ui 0.1.50 → 0.1.52
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/data-grid/styles.css +13 -10
- package/packages/client/src/components/import-flow/styles.css +20 -0
- package/packages/client/src/components/import-mapper/styles.css +8 -0
- package/packages/client/src/components/select/styles.css +19 -0
- package/packages/client/src/styles/components.css +2 -0
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/theme-support.css +267 -0
- package/packages/client/src/styles/theme.css +1 -268
- package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
- package/packages/client/types/components/date-picker/contract.d.ts +15 -6
- package/packages/client/types/components/date-picker/machine.d.ts +4 -2
- package/packages/client/types/components/entry.generated.d.ts +2 -0
- package/packages/client/types/components/formset/contract.d.ts +10 -0
- package/packages/client/types/components/formset/entry.generated.d.ts +5 -0
- package/packages/client/types/components/formset/index.d.ts +41 -0
- package/packages/client/types/components/formset/machine.d.ts +22 -0
- package/packages/client/types/components/formset/runtime-docs.d.ts +2 -0
- package/packages/client/types/components/heading/contract.d.ts +4 -2
- package/packages/client/types/components/import-flow/contract.d.ts +13 -0
- package/packages/client/types/components/import-flow/index.d.ts +2 -0
- package/packages/client/types/components/import-mapper/entry.generated.d.ts +5 -0
- package/packages/client/types/components/import-mapper/index.d.ts +25 -0
- package/packages/client/types/components/runtime.d.ts +2 -0
- package/packages/client/types/components/select/contract.d.ts +1 -0
- package/packages/client/types/components/select/machine.d.ts +3 -0
- package/packages/client/types/components/text/contract.d.ts +4 -2
- package/packages/client/types/components/virtualizer/index.d.ts +4 -1
- package/packages/client/types/runtime/cursor-data-source.d.ts +19 -1
- package/packages/client/types/runtime/engine/stream.d.ts +1 -0
- package/packages/client/types/runtime/virtualizer-schema.d.ts +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +56 -12
- 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 +393 -323
- 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-DQitxnHn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-BeZZfCbD.js.map → capability-motion-DQitxnHn.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Dzv1zWaL.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-D5jfePOE.js.map → capability-sortable-Dzv1zWaL.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DMbnlSdM.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-CGPV218r.js.map → core-DMbnlSdM.js.map} +1 -1
- 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-BGqM-PEq.js → entry.generated-2QEJDMe-.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BGqM-PEq.js.map → entry.generated-2QEJDMe-.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BsJJMR1g.js → entry.generated-BB7wWQfT.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BsJJMR1g.js.map → entry.generated-BB7wWQfT.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C07Tn0r-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C07Tn0r-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-qYKh9MwP.js → entry.generated-C2gP0OfV.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-qYKh9MwP.js.map → entry.generated-C2gP0OfV.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CRj4-Ef1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CRj4-Ef1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ByvN55ox.js → entry.generated-CirM6w9Q.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ByvN55ox.js.map → entry.generated-CirM6w9Q.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVk-PDBl.js → entry.generated-CvcufWkj.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVk-PDBl.js.map → entry.generated-CvcufWkj.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D3w3QaSO.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D3w3QaSO.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DCLIvEtJ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DCLIvEtJ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-B3F9jaO_.js → entry.generated-DVQaci6w.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-B3F9jaO_.js.map → entry.generated-DVQaci6w.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_FlEfdN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_FlEfdN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ZTRbQ10A.js → entry.generated-DvvVMsQo.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ZTRbQ10A.js.map → entry.generated-DvvVMsQo.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-QspMEPHx.js → entry.generated-QspMEPHx.js} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-QspMEPHx.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Rx9NofFi.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Rx9NofFi.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-gxr2-89M.js → entry.generated-gxr2-89M.js} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-gxr2-89M.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oz1RCU1b.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oz1RCU1b.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-yg-lGtcT.js → entry.generated-payXlXhL.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-yg-lGtcT.js.map → entry.generated-payXlXhL.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cwv0HSDM.js → entry.generated-wEt8LYAv.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cwv0HSDM.js.map → entry.generated-wEt8LYAv.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CpoK52gE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CpoK52gE.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-D1X0sDop.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-D1X0sDop.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-DXDHgDsN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-DXDHgDsN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-_UPpJlWp.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-_UPpJlWp.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{form-control-BkVb2Qed.js → form-control-DjbUb602.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-DjbUb602.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/morph-Cq3V_23_.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/morph-Cq3V_23_.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-C3XtSJ4O.js → motion-BDQdr83d.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-C3XtSJ4O.js.map → motion-BDQdr83d.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-SdoiMWig.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-SdoiMWig.js.map +1 -0
- 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/checkbox.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/file-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +1 -0
- 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/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.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/radio.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.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/slider.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.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/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +168 -126
- 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-BeZZfCbD.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-D5jfePOE.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CGPV218r.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-6_ClPYhC.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-6_ClPYhC.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B6Gjj1Mu.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B6Gjj1Mu.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-By-7ucpB.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-By-7ucpB.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CvHs5hfG.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CvHs5hfG.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DFkEr0wI.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DFkEr0wI.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-N4M4QtmC.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-N4M4QtmC.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Wl7imdNP.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Wl7imdNP.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-qNEmG1Ht.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-qNEmG1Ht.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dzq4GSqn.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dzq4GSqn.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-QspMEPHx.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-gxr2-89M.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BHBokFNi.js +0 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BHBokFNi.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-CSk2RJEN.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-CSk2RJEN.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-qNEmG1Ht.js","names":[],"sources":["../../../../../../../../client/src/runtime/composition-breakpoint.ts","../../../../../../../../client/src/components/panels/contract.ts","../../../../../../../../client/src/components/panels/machine.ts","../../../../../../../../client/src/components/panels/styles.ts","../../../../../../../../client/src/components/panels/index.ts","../../../../../../../../client/src/components/panels/entry.generated.ts"],"sourcesContent":["type CompositionBreakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nconst compositionBreakpointPixels = (\n reference: HTMLElement,\n breakpoint: CompositionBreakpoint,\n): number => {\n const value = getComputedStyle(reference).getPropertyValue(`--breakpoint-${breakpoint}`);\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {compositionBreakpointPixels};\nexport type {CompositionBreakpoint};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\n\nconst PANELS_ORIENTATIONS = ['horizontal', 'vertical'] as const;\nconst PANEL_AS_VALUES = ['div', 'section', 'aside', 'main', 'nav'] as const;\nconst PANEL_SIZES = ['1', '2', '3', '4', '5', '6', 'fill'] as const;\nconst PANEL_RESIZE_EDGES = ['none', 'start', 'end'] as const;\nconst PANEL_TOGGLE_ACTIONS = ['toggle', 'expand', 'collapse'] as const;\n\nconst panelsSchema = {\n id: string.default('ui-panels'),\n orientation: oneOf(PANELS_ORIENTATIONS, 'horizontal'),\n persist: bool,\n divider: bool.default(true),\n class: string,\n};\n\nconst panelSchema = {\n id: string,\n as: oneOf(PANEL_AS_VALUES, 'section'),\n size: oneOf(PANEL_SIZES, 'fill'),\n resize: oneOf(PANEL_RESIZE_EDGES, 'none'),\n collapsible: bool,\n defaultCollapsed: bool,\n class: string,\n};\n\nconst panelToggleSchema = {\n target: string,\n action: oneOf(PANEL_TOGGLE_ACTIONS, 'toggle'),\n icon: string.default('menu'),\n label: string.default('Expand'),\n class: string,\n};\n\ntype PanelsOrientation = typeof PANELS_ORIENTATIONS[number];\ntype PanelAs = typeof PANEL_AS_VALUES[number];\ntype PanelSize = typeof PANEL_SIZES[number];\ntype PanelResizeEdge = typeof PANEL_RESIZE_EDGES[number];\ntype PanelToggleAction = typeof PANEL_TOGGLE_ACTIONS[number];\ntype PanelsProps = SchemaToProps<typeof panelsSchema>;\ntype PanelProps = SchemaToProps<typeof panelSchema>;\ntype PanelToggleProps = SchemaToProps<typeof panelToggleSchema>;\n\nexport {\n PANEL_AS_VALUES,\n PANEL_RESIZE_EDGES,\n PANEL_SIZES,\n PANEL_TOGGLE_ACTIONS,\n PANELS_ORIENTATIONS,\n panelSchema,\n panelToggleSchema,\n panelsSchema,\n};\nexport type {\n PanelAs,\n PanelProps,\n PanelResizeEdge,\n PanelSize,\n PanelToggleAction,\n PanelToggleProps,\n PanelsOrientation,\n PanelsProps,\n};\n","import {createMachine, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {PanelsProps} from './contract';\n\ntype PanelsContext = {\n collection: {\n ids: string[];\n collapsibleIds: string[];\n sizableIds: string[];\n resizableIds: string[];\n };\n layout: {\n collapsedIds: string[];\n committedSizes: Record<string, number>;\n };\n authored: {collapsedIds: string[]};\n change: {\n openingIds: string[];\n closingIds: string[];\n };\n resize: {\n activeId: string;\n initialSize: number | null;\n previewSize: number | null;\n };\n sizing: {\n changes: PanelSizingTransitionData[];\n };\n};\n\ntype PanelTransitionData = {panelId: string};\ntype PanelSizingTransitionData = {panelId: string; from: number; to: number; reset?: boolean};\ntype PanelsPersistTransitionData = {\n groupId: string;\n collapsed: string[];\n sizes: Record<string, number>;\n};\n\ntype PanelsMachineEffects = {\n prepareChange(scope: MachineScope<PanelsContext, PanelsProps>): void;\n finishChange(scope: MachineScope<PanelsContext, PanelsProps>): void;\n sync(scope: MachineScope<PanelsContext, PanelsProps>): void;\n beginResize(scope: MachineScope<PanelsContext, PanelsProps>): void;\n previewResize(scope: MachineScope<PanelsContext, PanelsProps>): void;\n commitResize(scope: MachineScope<PanelsContext, PanelsProps>): void;\n cancelResize(scope: MachineScope<PanelsContext, PanelsProps>): void;\n prepareSizing(scope: MachineScope<PanelsContext, PanelsProps>): void;\n finishSizing(scope: MachineScope<PanelsContext, PanelsProps>): void;\n persist(scope: MachineScope<PanelsContext, PanelsProps>): void;\n};\n\ntype CreatePanelsMachineOptions = {\n props: PanelsProps;\n context: PanelsContext;\n effects: PanelsMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.openingIds.map((panelId) => ({panelId})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n expand: (panelId: string) => ({type: 'EXPAND', panelId}),\n collapse: (panelId: string) => ({type: 'COLLAPSE', panelId}),\n toggle: (panelId: string) => ({type: 'TOGGLE', panelId}),\n },\n} satisfies TransitionHookDefinition<PanelsContext, PanelsProps, PanelTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.closingIds.map((panelId) => ({panelId})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n expand: (panelId: string) => ({type: 'EXPAND', panelId}),\n collapse: (panelId: string) => ({type: 'COLLAPSE', panelId}),\n toggle: (panelId: string) => ({type: 'TOGGLE', panelId}),\n },\n} satisfies TransitionHookDefinition<PanelsContext, PanelsProps, PanelTransitionData, 'closing'>);\n\nconst sizingHook = defineHook({\n name: 'sizing',\n state: 'sizing',\n projectEach: (snapshot) => snapshot.context.sizing.changes,\n onDone: 'SIZE_DONE',\n onError: 'SIZE_ERROR',\n} satisfies TransitionHookDefinition<PanelsContext, PanelsProps, PanelSizingTransitionData, 'sizing'>);\n\nconst persistingHook = defineHook({\n name: 'persisting',\n state: 'persisting',\n project: (snapshot) => ({\n groupId: snapshot.props.id,\n collapsed: [...snapshot.context.layout.collapsedIds],\n sizes: {...snapshot.context.layout.committedSizes},\n }),\n onDone: 'PERSIST_DONE',\n onError: 'PERSIST_ERROR',\n} satisfies TransitionHookDefinition<PanelsContext, PanelsProps, PanelsPersistTransitionData, 'persisting'>);\n\nconst panelsHooks = [openingHook, closingHook, sizingHook, persistingHook] as const;\n\nconst strings = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst panelId = (event: MachineEventObject): string => typeof event.panelId === 'string' ? event.panelId : '';\nconst finiteSize = (value: unknown): number | null => typeof value === 'number' && Number.isFinite(value) ? value : null;\nconst sizingChanges = (event: MachineEventObject): PanelSizingTransitionData[] => {\n const candidates = Array.isArray(event.changes) ? event.changes : [event];\n return candidates.flatMap((candidate) => {\n if (typeof candidate !== 'object' || candidate === null) return [];\n const change = candidate as Record<string, unknown>;\n const id = typeof change.panelId === 'string' ? change.panelId : '';\n const from = finiteSize(change.from);\n const to = finiteSize(change.to);\n const reset = change.reset === true;\n return id && from !== null && to !== null && (from !== to || reset)\n ? [{panelId: id, from, to, ...(reset ? {reset: true} : {})}]\n : [];\n });\n};\nconst propsFrom = (event: MachineEventObject, fallback: PanelsProps): PanelsProps => (\n typeof event.props === 'object' && event.props !== null ? event.props as PanelsProps : fallback\n);\nconst sameStrings = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst requestedCollapsed = (scope: MachineScope<PanelsContext, PanelsProps>): string[] => {\n const id = panelId(scope.event);\n const current = scope.context.layout.collapsedIds;\n switch (scope.event.type) {\n case 'COLLAPSE':\n return scope.context.collection.collapsibleIds.includes(id) && !current.includes(id)\n ? scope.context.collection.ids.filter((item) => current.includes(item) || item === id)\n : current;\n case 'EXPAND':\n return current.filter((item) => item !== id);\n case 'TOGGLE':\n if (!scope.context.collection.collapsibleIds.includes(id)) return current;\n return current.includes(id)\n ? current.filter((item) => item !== id)\n : scope.context.collection.ids.filter((item) => current.includes(item) || item === id);\n default:\n return current;\n }\n};\n\nconst changeAllowed = (scope: MachineScope<PanelsContext, PanelsProps>): boolean => {\n const id = panelId(scope.event);\n return scope.context.collection.ids.includes(id)\n && !sameStrings(scope.context.layout.collapsedIds, requestedCollapsed(scope));\n};\n\nconst resizeAllowed = (scope: MachineScope<PanelsContext, PanelsProps>): boolean => {\n const id = panelId(scope.event);\n return scope.context.collection.resizableIds.includes(id)\n && !scope.context.layout.collapsedIds.includes(id)\n && finiteSize(scope.event.size) !== null;\n};\n\nconst sizingAllowed = (scope: MachineScope<PanelsContext, PanelsProps>): boolean => {\n const changes = sizingChanges(scope.event);\n return changes.length > 0 && changes.every(({panelId: id}) => (\n scope.context.collection.sizableIds.includes(id)\n && !scope.context.layout.collapsedIds.includes(id)\n ));\n};\n\nconst hiddenSizingAllowed = (scope: MachineScope<PanelsContext, PanelsProps>): boolean => {\n const changes = sizingChanges(scope.event);\n return changes.length > 0 && changes.every(({panelId: id}) => (\n scope.context.collection.sizableIds.includes(id)\n && scope.context.layout.collapsedIds.includes(id)\n ));\n};\n\nconst hiddenResetAllowed = (scope: MachineScope<PanelsContext, PanelsProps>): boolean => {\n const ids = strings(scope.event.ids);\n return ids.length > 0 && ids.every((id) => (\n scope.context.collection.sizableIds.includes(id)\n && scope.context.layout.collapsedIds.includes(id)\n && Object.hasOwn(scope.context.layout.committedSizes, id)\n ));\n};\n\nconst applySizing = (scope: MachineScope<PanelsContext, PanelsProps>) => {\n const changes = sizingChanges(scope.event);\n const committedSizes = {...scope.context.layout.committedSizes};\n changes.forEach(({panelId: id, to, reset}) => {\n if (reset) delete committedSizes[id];\n else committedSizes[id] = to;\n });\n return {context: {\n ...scope.context,\n layout: {\n ...scope.context.layout,\n committedSizes,\n },\n sizing: {changes},\n }};\n};\n\nconst commitHiddenSizes = (scope: MachineScope<PanelsContext, PanelsProps>) => {\n const changes = sizingChanges(scope.event);\n return {context: {\n ...scope.context,\n layout: {\n ...scope.context.layout,\n committedSizes: {\n ...scope.context.layout.committedSizes,\n ...Object.fromEntries(changes.map(({panelId: id, to}) => [id, to])),\n },\n },\n }};\n};\n\nconst resetHiddenSizes = (scope: MachineScope<PanelsContext, PanelsProps>) => {\n const committedSizes = {...scope.context.layout.committedSizes};\n strings(scope.event.ids).forEach((id) => delete committedSizes[id]);\n return {context: {\n ...scope.context,\n layout: {...scope.context.layout, committedSizes},\n }};\n};\n\nconst applyChange = (scope: MachineScope<PanelsContext, PanelsProps>) => {\n const collapsedIds = requestedCollapsed(scope);\n const previous = scope.context.layout.collapsedIds;\n return {context: {\n ...scope.context,\n layout: {...scope.context.layout, collapsedIds},\n change: {\n openingIds: previous.filter((id) => !collapsedIds.includes(id)),\n closingIds: collapsedIds.filter((id) => !previous.includes(id)),\n },\n }};\n};\n\nconst reconcile = (scope: MachineScope<PanelsContext, PanelsProps>) => {\n const ids = strings(scope.event.ids);\n const collapsibleIds = strings(scope.event.collapsibleIds).filter((id) => ids.includes(id));\n const sizableIds = strings(scope.event.sizableIds).filter((id) => ids.includes(id));\n const resizableIds = strings(scope.event.resizableIds).filter((id) => ids.includes(id));\n const authoredCollapsedIds = strings(scope.event.authoredCollapsedIds).filter((id) => collapsibleIds.includes(id));\n const known = new Set(scope.context.collection.ids);\n const collapsedIds = ids.filter((id) => (\n scope.context.layout.collapsedIds.includes(id) || (!known.has(id) && authoredCollapsedIds.includes(id))\n ) && collapsibleIds.includes(id));\n const committedSizes = Object.fromEntries(Object.entries(scope.context.layout.committedSizes).filter(([id]) => (\n ids.includes(id) && sizableIds.includes(id)\n )));\n const activeExists = ids.includes(scope.context.resize.activeId) && resizableIds.includes(scope.context.resize.activeId);\n return {context: {\n ...scope.context,\n collection: {ids, collapsibleIds, sizableIds, resizableIds},\n layout: {collapsedIds, committedSizes},\n authored: {collapsedIds: authoredCollapsedIds},\n resize: activeExists\n ? scope.context.resize\n : {activeId: '', initialSize: null, previewSize: null},\n }};\n};\n\nconst activeRemoved = (scope: MachineScope<PanelsContext, PanelsProps>): boolean => {\n const ids = strings(scope.event.ids);\n const resizableIds = strings(scope.event.resizableIds);\n return !ids.includes(scope.context.resize.activeId) || !resizableIds.includes(scope.context.resize.activeId);\n};\n\nconst createPanelsMachine = ({\n props,\n context,\n effects,\n}: CreatePanelsMachineOptions): Machine<PanelsContext, PanelsProps> => createMachine<PanelsContext, PanelsProps>({\n initial: 'stable',\n on: {\n DOM_INVALIDATED: {effects: 'sync'},\n },\n states: {\n stable: {\n tags: ['stable'],\n on: {\n COLLAPSE: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n EXPAND: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n SIZE: {target: 'sizing', guard: sizingAllowed, reduce: applySizing, effects: 'prepareSizing'},\n RESTORE_HIDDEN_SIZES: {guard: hiddenSizingAllowed, reduce: commitHiddenSizes},\n RESET_HIDDEN_SIZES: {\n target: 'persisting',\n guard: hiddenResetAllowed,\n reduce: resetHiddenSizes,\n effects: ['sync', 'persist'],\n },\n RESIZE_START: {target: 'resizing', guard: resizeAllowed, reduce: 'startResize', effects: 'beginResize'},\n PANELS_CHANGED: {reduce: reconcile, effects: 'sync'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n },\n },\n changing: {\n tags: ['changing', 'transitioning'],\n on: {\n CHANGE_DONE: {target: 'persisting', effects: ['finishChange', 'persist']},\n CHANGE_ERROR: {target: 'persisting', effects: ['finishChange', 'persist']},\n COLLAPSE: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n EXPAND: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n PANELS_CHANGED: {reduce: reconcile, effects: 'sync'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n },\n },\n sizing: {\n tags: ['sizing', 'transitioning'],\n on: {\n SIZE_DONE: {target: 'persisting', effects: ['finishSizing', 'persist']},\n SIZE_ERROR: {target: 'persisting', effects: ['finishSizing', 'persist']},\n SIZE: {target: 'sizing', guard: sizingAllowed, reduce: applySizing, effects: 'prepareSizing'},\n RESIZE_START: {target: 'resizing', guard: resizeAllowed, reduce: 'startResize', effects: 'beginResize'},\n PANELS_CHANGED: {reduce: reconcile, effects: 'sync'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n },\n },\n resizing: {\n tags: ['resizing'],\n on: {\n RESIZE: {guard: 'activeResize', reduce: 'previewResize', effects: 'previewResize'},\n RESIZE_END: {target: 'persisting', guard: 'activeResize', reduce: 'commitResize', effects: ['commitResize', 'persist']},\n RESIZE_CANCEL: {target: 'stable', reduce: 'clearResize', effects: 'cancelResize'},\n PANELS_CHANGED: [\n {target: 'stable', guard: activeRemoved, reduce: reconcile, effects: ['cancelResize', 'sync']},\n {reduce: reconcile, effects: 'sync'},\n ],\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n },\n },\n persisting: {\n tags: ['persisting'],\n on: {\n PERSIST_DONE: 'stable',\n PERSIST_ERROR: 'stable',\n COLLAPSE: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n EXPAND: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: changeAllowed, reduce: applyChange, effects: 'prepareChange'},\n SIZE: {target: 'sizing', guard: sizingAllowed, reduce: applySizing, effects: 'prepareSizing'},\n PANELS_CHANGED: {reduce: reconcile, effects: 'sync'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n },\n },\n },\n}, {\n props,\n context,\n reducers: {\n replaceProps: (scope) => ({props: propsFrom(scope.event, scope.props)}),\n startResize: (scope) => {\n const size = finiteSize(scope.event.size);\n return {context: {\n ...scope.context,\n resize: {activeId: panelId(scope.event), initialSize: size, previewSize: size},\n }};\n },\n previewResize: (scope) => ({context: {\n ...scope.context,\n resize: {...scope.context.resize, previewSize: finiteSize(scope.event.size)},\n }}),\n commitResize: (scope) => {\n const id = panelId(scope.event);\n const size = finiteSize(scope.event.size);\n if (size === null) return;\n return {context: {\n ...scope.context,\n layout: {\n ...scope.context.layout,\n committedSizes: {...scope.context.layout.committedSizes, [id]: size},\n },\n resize: {activeId: '', initialSize: null, previewSize: null},\n }};\n },\n clearResize: (scope) => ({context: {\n ...scope.context,\n resize: {activeId: '', initialSize: null, previewSize: null},\n }}),\n },\n guards: {\n activeResize: (scope) => panelId(scope.event) === scope.context.resize.activeId\n && finiteSize(scope.event.size) !== null,\n },\n effects: {\n prepareChange: effects.prepareChange,\n finishChange: effects.finishChange,\n sync: effects.sync,\n beginResize: effects.beginResize,\n previewResize: effects.previewResize,\n commitResize: effects.commitResize,\n cancelResize: effects.cancelResize,\n prepareSizing: effects.prepareSizing,\n finishSizing: effects.finishSizing,\n persist: effects.persist,\n },\n});\n\nexport {createPanelsMachine, panelsHooks};\nexport type {\n CreatePanelsMachineOptions,\n PanelsContext,\n PanelsMachineEffects,\n PanelsPersistTransitionData,\n PanelSizingTransitionData,\n PanelTransitionData,\n};\n","import {defineStyles} from '../../runtime';\n\nconst panelsStyles = defineStyles({definition: {\n component: 'ui.panels',\n parts: {\n root: {\n base: 'relative flex h-full min-h-0 w-full min-w-0',\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n },\n },\n defaults: {orientation: 'horizontal'},\n },\n panel: {\n base: 'relative min-w-0 overflow-hidden',\n variants: {\n orientation: {\n horizontal: 'h-full',\n vertical: 'w-full',\n },\n divider: {\n true: '',\n false: '',\n },\n resize: {\n none: '',\n start: '',\n end: '',\n },\n },\n defaults: {orientation: 'horizontal', divider: true, resize: 'none'},\n },\n expanded: {base: 'h-full min-h-0 w-full min-w-0'},\n collapsed: {base: 'flex h-full min-h-0 w-full min-w-0 items-center justify-center overflow-hidden'},\n resizeHandle: {\n base: [\n 'absolute z-20 touch-none border-transparent outline-none',\n 'hover:border-intent-neutral-edge-hover focus-visible:ui-focus-ring-inset',\n 'data-resizing:border-intent-neutral-edge-strong',\n ],\n variants: {\n orientation: {\n horizontal: 'inset-y-0 w-panel-resize-handle cursor-col-resize',\n vertical: 'inset-x-0 h-panel-resize-handle cursor-row-resize',\n },\n edge: {\n start: '',\n end: '',\n },\n },\n defaults: {orientation: 'horizontal', edge: 'end'},\n },\n toggle: {base: 'inline-flex size-control-md items-center justify-center outline-none focus-visible:ui-focus-ring-inset'},\n toggleIcon: {base: 'size-icon-md shrink-0'},\n },\n}});\n\nexport {panelsStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n createResizable,\n decodeProps,\n defineAlpineData,\n focusableElements,\n isRtl,\n mergeBindings,\n observeSemanticChanges,\n resolveStyle,\n type BindingObject,\n type CleanupStack,\n type ResizeDirection,\n type ResizeEvent,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {animateSize, type MotionHandle, type MotionTransitionSubject} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {compositionBreakpointPixels} from '@client/runtime/composition-breakpoint';\nimport {addListener, asBool, dispatch, setPresence} from '@client/utils';\nimport {\n panelSchema,\n panelToggleSchema,\n panelsSchema,\n type PanelProps,\n type PanelResizeEdge,\n type PanelToggleAction,\n type PanelToggleProps,\n type PanelsOrientation,\n type PanelsProps,\n} from './contract';\nimport {\n createPanelsMachine,\n panelsHooks,\n type PanelsContext,\n type PanelsPersistTransitionData,\n type PanelSizingTransitionData,\n type PanelTransitionData,\n} from './machine';\nimport {panelsStyles} from './styles';\n\ntype PanelsTransitionName = (typeof panelsHooks)[number]['name'];\ntype PanelsTransition<TName extends PanelsTransitionName = PanelsTransitionName> = TransitionForHook<\n Extract<(typeof panelsHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PanelRecord = {\n panel: HTMLElement;\n expanded: HTMLElement;\n collapsed: HTMLElement | null;\n handle: HTMLElement | null;\n props: PanelProps;\n};\n\ntype PanelCollectionState = {\n ids: string[];\n collapsibleIds: string[];\n sizableIds: string[];\n resizableIds: string[];\n authoredCollapsedIds: string[];\n};\n\ntype PanelEventDetail = {\n panelId?: string;\n groupId?: string;\n size?: number;\n action?: PanelToggleAction;\n trigger?: HTMLElement | null;\n __panelsNotification?: boolean;\n};\n\ntype PanelTransitionGeometry = {from: number; to: number};\ntype PanelsResponsiveMode = 'stacked' | 'wide';\ntype PanelMotionTransition = MotionTransitionSubject & Readonly<{\n data: PanelTransitionData;\n}>;\ntype PanelSizingMotionTransition = MotionTransitionSubject & Readonly<{\n data: PanelSizingTransitionData;\n}>;\n\ntype PanelsController = {\n readonly id: string;\n hasPanel(panelId: string): boolean;\n perform(action: PanelToggleAction, panelId: string, trigger?: HTMLElement | null): void;\n resize(panelId: string, size: number): void;\n reset(panelId?: string): void;\n syncToggles(): void;\n};\n\n/** Public Alpine API for `ui.panels`. @public */\ninterface UiPanelsApi {\n /** Stable group id used by explicit controls, named events, and persistence. */\n readonly id: string;\n /** Current main axis along which direct panels negotiate space. */\n readonly orientation: 'horizontal' | 'vertical';\n /** Stable ids of panels whose collapsed representation is active. */\n readonly collapsed: readonly string[];\n /** User-committed pixel measures keyed by stable panel id. */\n readonly sizes: Readonly<Record<string, number>>;\n /** Returns whether a named panel is currently collapsed. */\n isCollapsed(id: string): boolean;\n /** Collapses a named collapsible panel. */\n collapse(id: string): void;\n /** Expands a named collapsed panel. */\n expand(id: string): void;\n /** Reverses the collapsed state of a named collapsible panel. */\n toggle(id: string): void;\n /** Moves an expanded bounded panel to a clamped pixel size through the sizing transition. */\n resize(id: string, size: number): void;\n /** Restores one panel or the whole group to its authored layout. */\n reset(id?: string): void;\n}\n\ntype PanelsData = AlpineMachine<PanelsContext, PanelsProps, typeof panelsHooks> & UiPanelsApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: PanelToggleAction, panelId: string, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n hasPanel(panelId: string): boolean;\n transitionPanel(transition: PanelMotionTransition): MotionHandle;\n transitionPanelSize(transition: PanelSizingMotionTransition): MotionHandle;\n};\n\nconst controllers = new Set<PanelsController>();\n\nconst eventDetail = (event: Event): PanelEventDetail => (\n event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as PanelEventDetail\n : {}\n);\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: PanelToggleAction) => (event: Event): void => {\n const detail = eventDetail(event);\n if (detail.__panelsNotification || !detail.panelId) return;\n controllers.forEach((controller) => {\n if (detail.groupId && detail.groupId !== controller.id) return;\n if (!controller.hasPanel(detail.panelId!)) return;\n controller.perform(detail.action ?? action, detail.panelId!, detail.trigger);\n });\n };\n document.addEventListener('ui:panel-collapse', route('collapse'));\n document.addEventListener('ui:panel-expand', route('expand'));\n document.addEventListener('ui:panel-toggle', route('toggle'));\n document.addEventListener('ui:panel-size', (event) => {\n const detail = eventDetail(event);\n if (detail.__panelsNotification || !detail.panelId || !Number.isFinite(detail.size)) return;\n controllers.forEach((controller) => {\n if (detail.groupId && detail.groupId !== controller.id) return;\n if (!controller.hasPanel(detail.panelId!)) return;\n controller.resize(detail.panelId!, detail.size!);\n });\n });\n document.addEventListener('ui:panels-reset', (event) => {\n const detail = eventDetail(event);\n if (detail.__panelsNotification) return;\n controllers.forEach((controller) => {\n if (detail.groupId && detail.groupId !== controller.id) return;\n if (detail.panelId && !controller.hasPanel(detail.panelId)) return;\n controller.reset(detail.panelId);\n });\n });\n registered = true;\n };\n})();\n\nconst storageKey = (id: string): string => `trellis-ui:panels:${id}:v1`;\nconst numericRecord = (value: unknown): Record<string, number> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return {};\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, number] => (\n typeof entry[1] === 'number' && Number.isFinite(entry[1])\n )));\n};\n\nconst UiPanels = (): TrellisAlpineComponent<PanelsData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let disconnectObserver: (() => void) | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: PanelsResponsiveMode = 'wide';\n let cleanup: CleanupStack = [];\n const deferredTimers = new Set<number>();\n const restoreFrames = new Set<number>();\n const resizeCleanups = new Map<HTMLElement, () => void>();\n const transitionGeometry = new Map<string, PanelTransitionGeometry>();\n const rememberedFocus = new Map<string, HTMLElement>();\n const activeTriggers = new Map<string, HTMLElement>();\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Panels has not been initialized.');\n return rootEl;\n };\n const owns = (element: Element): boolean => element.closest('[data-ui-panels]') === root();\n const records = (): PanelRecord[] => Array.from(root().children).flatMap((child) => {\n if (!(child instanceof HTMLElement) || !child.hasAttribute('data-ui-panel')) return [];\n const expanded = child.querySelector<HTMLElement>(':scope > [data-ui-panel-expanded]');\n if (!expanded || !owns(expanded)) return [];\n return [{\n panel: child,\n expanded,\n collapsed: child.querySelector<HTMLElement>(':scope > [data-ui-panel-collapsed]'),\n handle: child.querySelector<HTMLElement>(':scope > [data-ui-panel-resize-handle]'),\n props: decodeProps({el: child, schema: panelSchema}),\n }];\n });\n const recordFor = (id: string): PanelRecord | null => records().find((record) => record.props.id === id) ?? null;\n const context = (): Readonly<PanelsContext> => bridge.getCommittedSnapshot().context;\n const currentProps = (): Readonly<PanelsProps> => bridge.getCommittedSnapshot().props;\n const isCollapsed = (id: string): boolean => context().layout.collapsedIds.includes(id);\n const isResponsiveStacked = (): boolean => (\n currentProps().orientation === 'horizontal' && responsiveMode === 'stacked'\n );\n const effectiveOrientation = (): PanelsOrientation => (\n isResponsiveStacked() ? 'vertical' : currentProps().orientation\n );\n const renderedOrientation = (): PanelsOrientation => root().dataset.orientation === 'vertical' ? 'vertical' : 'horizontal';\n const mainSize = (element: Element): number => {\n const rect = element.getBoundingClientRect();\n return renderedOrientation() === 'horizontal' ? rect.width : rect.height;\n };\n\n const collectionState = (): PanelCollectionState => {\n const items = records();\n const ids = items.map(({props}) => props.id);\n if (ids.some((id) => !id)) throw new Error('Every Panel requires a stable id.');\n if (new Set(ids).size !== ids.length) throw new Error('Panel ids must be unique within a Panels group.');\n if (items.length > 0 && !items.some(({props}) => props.size === 'fill')) {\n throw new Error('A Panels group requires at least one size=\"fill\" Panel.');\n }\n if (items.some(({props}) => props.size === 'fill' && props.resize !== 'none')) {\n throw new Error('A size=\"fill\" Panel cannot own a resize handle.');\n }\n return {\n ids: items.map(({props}) => props.id).filter(Boolean),\n collapsibleIds: items.filter(({props}) => props.id && props.collapsible).map(({props}) => props.id),\n sizableIds: items.filter(({props}) => props.id && props.size !== 'fill').map(({props}) => props.id),\n resizableIds: items.filter(({props}) => (\n props.id && props.size !== 'fill' && props.resize !== 'none'\n )).map(({props}) => props.id),\n authoredCollapsedIds: items.filter(({props}) => (\n props.id && props.collapsible && props.defaultCollapsed\n )).map(({props}) => props.id),\n };\n };\n\n const cssLength = (token: string): number => {\n const probe = document.createElement('div');\n probe.style.cssText = 'position:absolute;visibility:hidden;pointer-events:none;inset:0 auto auto 0;';\n if (renderedOrientation() === 'horizontal') probe.style.width = `var(${token})`;\n else probe.style.height = `var(${token})`;\n root().append(probe);\n const value = mainSize(probe);\n probe.remove();\n return value;\n };\n\n const boundsFor = (record: PanelRecord): {minimum: number; maximum: number} => {\n if (record.props.size === 'fill') return {minimum: 0, maximum: Number.POSITIVE_INFINITY};\n return {\n minimum: cssLength(`--spacing-panel-${record.props.size}-min`),\n maximum: cssLength(`--spacing-panel-${record.props.size}-max`),\n };\n };\n\n const clampPanelSize = (record: PanelRecord, value: number): number => {\n const {minimum, maximum} = boundsFor(record);\n return Math.min(maximum, Math.max(minimum, value));\n };\n\n const initialContext = (): PanelsContext => {\n const collection = collectionState();\n return {\n collection: {\n ids: collection.ids,\n collapsibleIds: collection.collapsibleIds,\n sizableIds: collection.sizableIds,\n resizableIds: collection.resizableIds,\n },\n layout: {collapsedIds: [...collection.authoredCollapsedIds], committedSizes: {}},\n authored: {collapsedIds: collection.authoredCollapsedIds},\n change: {openingIds: [], closingIds: []},\n resize: {activeId: '', initialSize: null, previewSize: null},\n sizing: {changes: []},\n };\n };\n\n const setMainConstraints = (element: HTMLElement, minimum: string, maximum: string): void => {\n if (renderedOrientation() === 'horizontal') {\n element.style.minWidth = minimum;\n element.style.maxWidth = maximum;\n element.style.minHeight = '';\n element.style.maxHeight = '';\n } else {\n element.style.minHeight = minimum;\n element.style.maxHeight = maximum;\n element.style.minWidth = '';\n element.style.maxWidth = '';\n }\n };\n\n const clearGeometry = (element: HTMLElement): void => {\n element.style.flex = '';\n element.style.minWidth = '';\n element.style.maxWidth = '';\n element.style.minHeight = '';\n element.style.maxHeight = '';\n };\n\n const applyGeometry = (record: PanelRecord, transitionSize?: number): void => {\n if (isResponsiveStacked()) {\n clearGeometry(record.panel);\n return;\n }\n if (transitionSize !== undefined) {\n record.panel.style.flex = `0 0 ${transitionSize}px`;\n setMainConstraints(record.panel, '0px', 'none');\n return;\n }\n if (isCollapsed(record.props.id)) {\n if (context().authored.collapsedIds.includes(record.props.id)) {\n clearGeometry(record.panel);\n return;\n }\n const collapsedSize = record.collapsed ? 'var(--spacing-panel-collapsed)' : '0px';\n record.panel.style.flex = `0 0 ${collapsedSize}`;\n setMainConstraints(record.panel, collapsedSize, collapsedSize);\n return;\n }\n if (record.props.size === 'fill') {\n clearGeometry(record.panel);\n return;\n }\n const committed = context().resize.activeId === record.props.id\n ? context().resize.previewSize\n : context().layout.committedSizes[record.props.id];\n if (committed === undefined || committed === null) {\n clearGeometry(record.panel);\n return;\n }\n const basis = `${clampPanelSize(record, committed)}px`;\n record.panel.style.flex = `0 1 ${basis}`;\n setMainConstraints(\n record.panel,\n `var(--spacing-panel-${record.props.size}-min)`,\n `var(--spacing-panel-${record.props.size}-max)`,\n );\n };\n\n const setInert = (element: HTMLElement, inert: boolean): void => {\n element.toggleAttribute('inert', inert);\n element.setAttribute('aria-hidden', inert ? 'true' : 'false');\n };\n\n const syncPanel = (record: PanelRecord): void => {\n const props = currentProps();\n const orientation = effectiveOrientation();\n const collapsed = isCollapsed(record.props.id);\n const opening = bridge.hasTag('changing') && context().change.openingIds.includes(record.props.id);\n const closing = bridge.hasTag('changing') && context().change.closingIds.includes(record.props.id);\n const finalCollapsed = collapsed && !closing;\n const showExpanded = !finalCollapsed;\n const showCollapsed = collapsed && !closing && !opening && record.collapsed !== null;\n\n record.panel.dataset.state = collapsed ? 'collapsed' : 'expanded';\n record.panel.dataset.orientation = orientation;\n record.panel.dataset.size = record.props.size;\n record.panel.dataset.resize = record.props.resize;\n record.panel.className = resolveStyle({\n part: panelsStyles.parts.panel,\n props: {orientation, divider: props.divider, resize: record.props.resize},\n className: record.props.class,\n });\n setPresence({el: record.panel, attr: 'data-collapsible', present: record.props.collapsible});\n setPresence({el: record.panel, attr: 'data-resizing', present: context().resize.activeId === record.props.id});\n applyGeometry(record);\n\n record.expanded.hidden = !showExpanded;\n setInert(record.expanded, !showExpanded);\n if (record.collapsed) {\n record.collapsed.hidden = !showCollapsed;\n setInert(record.collapsed, !showCollapsed);\n }\n if (record.handle) {\n const disabled = isResponsiveStacked()\n || collapsed\n || record.props.size === 'fill'\n || record.props.resize === 'none';\n record.handle.dataset.orientation = orientation;\n record.handle.dataset.resizeEdge = record.props.resize;\n record.handle.setAttribute('aria-label', `Resize ${record.props.id} panel`);\n record.handle.toggleAttribute('data-resize-disabled', disabled);\n record.handle.hidden = isResponsiveStacked();\n record.handle.className = resolveStyle({\n part: panelsStyles.parts.resizeHandle,\n props: {orientation, edge: record.props.resize},\n className: record.handle.dataset.class ?? '',\n });\n }\n };\n\n const syncDividers = (items: PanelRecord[]): void => {\n items.forEach((record, index) => {\n const next = items[index + 1];\n const interactive = record.props.resize === 'end' || next?.props.resize === 'start';\n setPresence({\n el: record.panel,\n attr: 'data-divider',\n present: currentProps().divider && next !== undefined && !interactive,\n });\n });\n };\n\n const targetForToggle = (toggle: HTMLElement): {record: PanelRecord; controller: PanelsController} | null => {\n const explicit = toggle.dataset.target || '';\n if (!explicit) {\n const panel = toggle.closest<HTMLElement>('[data-ui-panel]');\n const group = panel?.closest<HTMLElement>('[data-ui-panels]');\n const controller = [...controllers].find((item) => item.id === group?.id);\n const record = panel && controller === component ? recordFor(panel.id) : null;\n return record && controller ? {record, controller} : null;\n }\n const groupId = toggle.dataset.groupId || toggle.closest<HTMLElement>('[data-ui-panels]')?.id;\n const candidates = [...controllers].filter((item) => !groupId || item.id === groupId);\n const controller = candidates.find((item) => item.hasPanel(explicit));\n const record = controller === component ? recordFor(explicit) : null;\n return record && controller ? {record, controller} : null;\n };\n\n const syncToggles = (): void => {\n document.querySelectorAll<HTMLElement>('[data-ui-panel-toggle]').forEach((toggle) => {\n const target = targetForToggle(toggle);\n if (!target || target.controller !== component) return;\n const collapsed = isCollapsed(target.record.props.id);\n toggle.dataset.target = target.record.props.id;\n toggle.dataset.groupId = currentProps().id;\n toggle.dataset.state = collapsed ? 'collapsed' : 'expanded';\n toggle.setAttribute('aria-controls', target.record.panel.id);\n toggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true');\n toggle.toggleAttribute('disabled', !target.record.props.collapsible);\n });\n };\n\n const syncAll = (): void => {\n const props = currentProps();\n const orientation = effectiveOrientation();\n root().dataset.responsiveMode = responsiveMode;\n root().dataset.layoutOrientation = orientation;\n root().style.flexDirection = orientation === 'horizontal' ? 'row' : 'column';\n root().className = resolveStyle({\n part: panelsStyles.parts.root,\n props: {...props, orientation},\n className: props.class,\n });\n setPresence({el: root(), attr: 'data-resizing', present: bridge.hasTag('resizing')});\n setPresence({el: root(), attr: 'data-transitioning', present: bridge.hasTag('transitioning')});\n const items = records();\n items.forEach(syncPanel);\n syncDividers(items);\n syncToggles();\n };\n\n const focusExpanded = (record: PanelRecord, force = false): void => {\n const active = document.activeElement;\n if (!force && (!(active instanceof HTMLElement) || !record.collapsed?.contains(active))) return;\n const remembered = rememberedFocus.get(record.props.id);\n if (remembered?.isConnected && record.expanded.contains(remembered)) remembered.focus({preventScroll: true});\n else {\n record.expanded.tabIndex = -1;\n record.expanded.focus({preventScroll: true});\n }\n };\n\n const focusCollapsed = (record: PanelRecord, force = false): void => {\n const active = document.activeElement;\n if (!force && (!(active instanceof HTMLElement) || !record.expanded.contains(active))) return;\n const collapsedTarget = record.collapsed ? focusableElements(record.collapsed)[0] : undefined;\n const external = activeTriggers.get(record.props.id);\n const fallback = external?.isConnected && !record.panel.contains(external) ? external : undefined;\n if (collapsedTarget) collapsedTarget.focus({preventScroll: true});\n else if (fallback) fallback.focus({preventScroll: true});\n else {\n root().tabIndex = -1;\n root().focus({preventScroll: true});\n }\n };\n\n const prepareChange = (): void => {\n const changed = [...context().change.openingIds, ...context().change.closingIds];\n const openingNeedsFocus = new Set(context().change.openingIds.filter((id) => {\n const record = recordFor(id);\n const active = document.activeElement;\n return record !== null\n && record.collapsed !== null\n && active instanceof HTMLElement\n && record.collapsed.contains(active);\n }));\n const from = new Map(changed.flatMap((id) => {\n const record = recordFor(id);\n if (!record) return [];\n if (context().change.closingIds.includes(id)) {\n const active = document.activeElement;\n if (active instanceof HTMLElement && record.expanded.contains(active)) rememberedFocus.set(id, active);\n }\n return [[id, mainSize(record.panel)] as const];\n }));\n syncAll();\n context().change.openingIds.forEach((id) => {\n const record = recordFor(id);\n if (record) focusExpanded(record, openingNeedsFocus.has(id));\n });\n changed.forEach((id) => {\n const record = recordFor(id);\n const start = from.get(id);\n if (!record || start === undefined) return;\n const target = mainSize(record.panel);\n transitionGeometry.set(id, {from: start, to: target});\n applyGeometry(record, start);\n });\n };\n\n const finishChange = (): void => {\n const opening = [...context().change.openingIds];\n const closing = [...context().change.closingIds];\n const closingNeedsFocus = new Set(closing.filter((id) => {\n const record = recordFor(id);\n const active = document.activeElement;\n return record !== null && active instanceof HTMLElement && record.expanded.contains(active);\n }));\n records().forEach((record) => applyGeometry(record));\n syncAll();\n closing.forEach((id) => {\n const record = recordFor(id);\n if (record) focusCollapsed(record, closingNeedsFocus.has(id));\n });\n opening.forEach((panelId) => emitPanelEvent('ui:panel-expand', panelId));\n closing.forEach((panelId) => emitPanelEvent('ui:panel-collapse', panelId));\n [...opening, ...closing].forEach((id) => transitionGeometry.delete(id));\n };\n\n const emitPanelEvent = (name: string, panelId: string, detail: Record<string, unknown> = {}): void => {\n dispatch({el: root(), name, detail: {\n groupId: currentProps().id,\n panelId,\n __panelsNotification: true,\n ...detail,\n }});\n };\n\n const persist = (): void => {\n const layout = context().layout;\n if (currentProps().persist) {\n try {\n localStorage.setItem(storageKey(currentProps().id), JSON.stringify({\n collapsed: layout.collapsedIds,\n sizes: layout.committedSizes,\n }));\n } catch {\n // Persistence is optional; layout state remains committed in memory.\n }\n }\n dispatch({el: root(), name: 'ui:panels-layout-change', detail: {\n groupId: currentProps().id,\n collapsed: [...layout.collapsedIds],\n sizes: {...layout.committedSizes},\n __panelsNotification: true,\n }});\n };\n\n const runWhenStable = (callback: () => void): void => {\n if (!rootEl) return;\n if (bridge.hasTag('stable')) {\n callback();\n return;\n }\n const timer = window.setTimeout(() => {\n deferredTimers.delete(timer);\n runWhenStable(callback);\n }, 16);\n deferredTimers.add(timer);\n };\n\n const reconcileCollapsedState = (\n ids: readonly string[],\n wantsCollapsed: (id: string) => boolean,\n ): void => {\n const next = ids.find((id) => wantsCollapsed(id) !== isCollapsed(id));\n if (!next) return;\n bridge.send({type: wantsCollapsed(next) ? 'COLLAPSE' : 'EXPAND', panelId: next});\n runWhenStable(() => reconcileCollapsedState(ids, wantsCollapsed));\n };\n\n const restorePersistedLayout = (): void => {\n if (!currentProps().persist) return;\n let stored: {collapsed?: unknown; sizes?: unknown};\n try {\n stored = JSON.parse(localStorage.getItem(storageKey(currentProps().id)) ?? 'null') as {\n collapsed?: unknown;\n sizes?: unknown;\n };\n } catch {\n return;\n }\n if (typeof stored !== 'object' || stored === null) return;\n\n const collection = collectionState();\n const desiredCollapsed = new Set(\n (Array.isArray(stored.collapsed) ? stored.collapsed : [])\n .filter((id): id is string => typeof id === 'string' && collection.collapsibleIds.includes(id)),\n );\n const desiredSizes = numericRecord(stored.sizes);\n\n const restoreCollapsedState = (): void => {\n reconcileCollapsedState(collection.collapsibleIds, (id) => desiredCollapsed.has(id));\n };\n\n const restoreSizes = (): void => {\n const changes = collection.sizableIds.flatMap((id): PanelSizingTransitionData[] => {\n const record = recordFor(id);\n const storedSize = desiredSizes[id];\n if (!record || storedSize === undefined) return [];\n const from = mainSize(record.panel);\n const to = clampPanelSize(record, storedSize);\n return Math.abs(from - to) < 0.5 ? [] : [{panelId: id, from, to}];\n });\n if (isResponsiveStacked()) {\n if (changes.length > 0) bridge.send({type: 'RESTORE_HIDDEN_SIZES', changes});\n restoreCollapsedState();\n return;\n }\n const hidden = changes.filter(({panelId: id}) => isCollapsed(id));\n const visible = changes.filter(({panelId: id}) => !isCollapsed(id));\n if (hidden.length > 0) bridge.send({type: 'RESTORE_HIDDEN_SIZES', changes: hidden});\n if (visible.length > 0) {\n bridge.send({type: 'SIZE', changes: visible});\n runWhenStable(restoreCollapsedState);\n return;\n }\n restoreCollapsedState();\n };\n\n const opening = collection.collapsibleIds.filter((id) => isCollapsed(id) && !desiredCollapsed.has(id));\n if (opening.length > 0) {\n reconcileCollapsedState(opening, () => false);\n runWhenStable(restoreSizes);\n } else restoreSizes();\n };\n\n const schedulePersistedRestore = (): void => {\n const first = requestAnimationFrame(() => {\n restoreFrames.delete(first);\n const second = requestAnimationFrame(() => {\n restoreFrames.delete(second);\n restorePersistedLayout();\n });\n restoreFrames.add(second);\n });\n restoreFrames.add(first);\n };\n\n const resetLayout = (panelId?: string): void => {\n const collection = collectionState();\n const targetIds = panelId ? collection.ids.filter((id) => id === panelId) : collection.ids;\n if (targetIds.length === 0) return;\n\n const restoreCollapsedState = (): void => {\n reconcileCollapsedState(\n targetIds.filter((id) => collection.collapsibleIds.includes(id)),\n (id) => context().authored.collapsedIds.includes(id),\n );\n };\n\n const sizedIds = targetIds.filter((id) => (\n collection.sizableIds.includes(id) && Object.hasOwn(context().layout.committedSizes, id)\n ));\n if (isResponsiveStacked()) {\n if (sizedIds.length > 0) {\n bridge.send({type: 'RESET_HIDDEN_SIZES', ids: sizedIds});\n runWhenStable(restoreCollapsedState);\n } else restoreCollapsedState();\n return;\n }\n const hiddenIds = sizedIds.filter(isCollapsed);\n if (hiddenIds.length > 0) bridge.send({type: 'RESET_HIDDEN_SIZES', ids: hiddenIds});\n\n const visible = sizedIds.filter((id) => !isCollapsed(id)).flatMap((id): PanelSizingTransitionData[] => {\n const record = recordFor(id);\n if (!record || record.props.size === 'fill') return [];\n return [{\n panelId: id,\n from: mainSize(record.panel),\n to: cssLength(`--spacing-panel-${record.props.size}`),\n reset: true,\n }];\n });\n if (visible.length > 0) {\n bridge.send({type: 'SIZE', changes: visible});\n runWhenStable(restoreCollapsedState);\n return;\n }\n restoreCollapsedState();\n };\n\n const prepareSizing = (): void => {\n context().sizing.changes.forEach(({panelId: id, from}) => {\n const record = recordFor(id);\n if (record) applyGeometry(record, from);\n });\n };\n\n const finishSizing = (): void => {\n context().sizing.changes.forEach(({panelId: id, to}) => {\n const record = recordFor(id);\n if (!record) return;\n applyGeometry(record);\n emitPanelEvent('ui:panel-resize-end', id, {size: to});\n });\n syncAll();\n };\n\n const resizeDirection = (edge: PanelResizeEdge): ResizeDirection => {\n if (effectiveOrientation() === 'vertical') return edge === 'start' ? 'negative' : 'positive';\n const rtl = isRtl({el: root()});\n return edge === 'start' ? rtl ? 'positive' : 'negative' : rtl ? 'negative' : 'positive';\n };\n\n const initializeResizeHandles = (): void => {\n const currentPanels = new Set(records().map(({panel}) => panel));\n resizeCleanups.forEach((dispose, panel) => {\n if (currentPanels.has(panel)) return;\n dispose();\n resizeCleanups.delete(panel);\n });\n records().forEach((record) => {\n if (resizeCleanups.has(record.panel) || !record.handle || record.props.size === 'fill' || record.props.resize === 'none') return;\n const bounds = boundsFor(record);\n const handleSize = cssLength('--spacing-panel-resize-handle');\n const coarseHandleSize = cssLength('--spacing-panel-resize-handle-coarse');\n resizeCleanups.set(record.panel, createResizable({\n element: record.panel,\n handle: record.handle,\n axis: effectiveOrientation() === 'horizontal' ? 'x' : 'y',\n direction: resizeDirection(record.props.resize),\n min: bounds.minimum,\n max: bounds.maximum,\n mode: 'onChange',\n hitArea: handleSize,\n coarseHitArea: coarseHandleSize,\n disabled: () => isResponsiveStacked() || isCollapsed(record.props.id),\n onStart: (event) => bridge.send({type: 'RESIZE_START', panelId: record.props.id, size: resizeValue(event)}),\n onResize: (event) => bridge.send({type: 'RESIZE', panelId: record.props.id, size: resizeValue(event)}),\n onEnd: (event) => bridge.send({type: 'RESIZE_END', panelId: record.props.id, size: resizeValue(event)}),\n }));\n });\n };\n\n const reinitializeResizeHandles = (): void => {\n resizeCleanups.forEach((dispose) => dispose());\n resizeCleanups.clear();\n initializeResizeHandles();\n };\n\n const resizeValue = (event: ResizeEvent): number => effectiveOrientation() === 'horizontal'\n ? event.previewWidth\n : event.previewHeight;\n\n const reconcileResponsiveMode = (width: number): void => {\n const next: PanelsResponsiveMode = currentProps().orientation === 'horizontal'\n && width < compositionBreakpointPixels(root(), 'sm')\n ? 'stacked'\n : 'wide';\n if (next === responsiveMode) return;\n responsiveMode = next;\n syncAll();\n reinitializeResizeHandles();\n };\n\n const bridge = createAlpineMachine({\n schema: panelsSchema,\n hooks: panelsHooks,\n resolveTransitionElement: ({data}) => {\n const panelId = (data as PanelTransitionData | undefined)?.panelId;\n return panelId ? recordFor(panelId)?.panel ?? null : root();\n },\n createMachine: ({props}) => createPanelsMachine({\n props,\n context: initialContext(),\n effects: {\n prepareChange,\n finishChange,\n sync: () => {\n syncAll();\n reinitializeResizeHandles();\n },\n beginResize: () => {\n syncAll();\n },\n previewResize: () => {\n const id = context().resize.activeId;\n const record = recordFor(id);\n if (record) applyGeometry(record);\n const size = context().resize.previewSize;\n if (size !== null) emitPanelEvent('ui:panel-resize', id, {size});\n },\n commitResize: (scope) => {\n syncAll();\n const id = typeof scope.event.panelId === 'string' ? scope.event.panelId : '';\n const size = context().layout.committedSizes[id];\n if (id && size !== undefined) emitPanelEvent('ui:panel-resize-end', id, {size});\n },\n cancelResize: syncAll,\n prepareSizing,\n finishSizing,\n persist,\n },\n }),\n });\n\n const sendPanelsChanged = (): void => {\n const collection = collectionState();\n bridge.send({type: 'PANELS_CHANGED', ...collection});\n initializeResizeHandles();\n };\n\n const setupObserver = (): void => {\n disconnectObserver = observeSemanticChanges({\n targets: root(),\n read: collectionState,\n onChange: sendPanelsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\n 'id', 'data-size', 'data-resize', 'data-collapsible', 'data-default-collapsed',\n ],\n },\n });\n };\n\n let component!: TrellisAlpineComponent<PanelsData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get orientation() { return effectiveOrientation(); },\n get collapsed() { return [...context().layout.collapsedIds]; },\n get sizes() { return {...context().layout.committedSizes}; },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: panelsStyles.parts.root, props, className: props.class}),\n {'data-ui-panels': ''},\n ]});\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n responsiveMode = currentProps().orientation === 'horizontal'\n && root().getBoundingClientRect().width < compositionBreakpointPixels(root(), 'sm')\n ? 'stacked'\n : 'wide';\n controllers.add(component);\n registerDocumentListeners();\n syncAll();\n initializeResizeHandles();\n resizeObserver = new ResizeObserver((entries) => {\n reconcileResponsiveMode(entries[0]?.contentRect.width ?? root().clientWidth);\n });\n resizeObserver.observe(root());\n setupObserver();\n if (currentProps().persist) schedulePersistedRestore();\n cleanup.push(addListener({target: root(), event: 'keydown', handler: () => syncToggles()}));\n },\n destroy(): void {\n controllers.delete(component);\n disconnectObserver?.();\n disconnectObserver = null;\n resizeObserver?.disconnect();\n resizeObserver = null;\n resizeCleanups.forEach((dispose) => dispose());\n resizeCleanups.clear();\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n deferredTimers.forEach((timer) => window.clearTimeout(timer));\n deferredTimers.clear();\n restoreFrames.forEach((frame) => cancelAnimationFrame(frame));\n restoreFrames.clear();\n bridge.disconnect();\n rootEl = null;\n },\n transitionPanel(transition: PanelMotionTransition): MotionHandle {\n const id = transition.data.panelId;\n const record = recordFor(id);\n const geometry = transitionGeometry.get(id);\n if (!record || !geometry || geometry.from === geometry.to) {\n if (record) applyGeometry(record, geometry?.to);\n return noopHandle();\n }\n return animateSize(transition, {\n target: record.panel,\n keyframes: {flexBasis: [`${geometry.from}px`, `${geometry.to}px`]},\n role: 'layout',\n cleanup: () => applyGeometry(record),\n });\n },\n transitionPanelSize(transition: PanelSizingMotionTransition): MotionHandle {\n const {panelId: id, from, to} = transition.data;\n const record = recordFor(id);\n if (!record || from === to) {\n if (record) applyGeometry(record);\n return noopHandle();\n }\n return animateSize(transition, {\n target: record.panel,\n keyframes: {flexBasis: [`${from}px`, `${to}px`]},\n role: 'layoutQuick',\n cleanup: () => applyGeometry(record),\n });\n },\n hasPanel(id: string): boolean { return recordFor(id) !== null; },\n isCollapsed,\n collapse(id: string): void { bridge.send({type: 'COLLAPSE', panelId: id}); },\n expand(id: string): void { bridge.send({type: 'EXPAND', panelId: id}); },\n toggle(id: string): void { bridge.send({type: 'TOGGLE', panelId: id}); },\n resize(id: string, size: number): void {\n const record = recordFor(id);\n if (\n isResponsiveStacked()\n || !record\n || record.props.size === 'fill'\n || isCollapsed(id)\n || !Number.isFinite(size)\n ) return;\n const from = mainSize(record.panel);\n const to = clampPanelSize(record, size);\n if (Math.abs(from - to) < 0.5) return;\n bridge.send({type: 'SIZE', panelId: id, from, to});\n },\n reset(id?: string): void { resetLayout(id); },\n perform(action: PanelToggleAction, id: string, trigger?: HTMLElement | null): void {\n if (trigger) activeTriggers.set(id, trigger);\n ({collapse: this.collapse, expand: this.expand, toggle: this.toggle})[action](id);\n },\n syncToggles,\n };\n\n return component;\n};\n\nconst UiPanelToggle = (): TrellisAlpineComponent<{\n props: PanelToggleProps;\n readonly root: BindingObject;\n trigger(event?: Event): void;\n}> => {\n let props = {} as PanelToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: panelToggleSchema}); },\n destroy() {},\n get root() {\n return mergeBindings({inputs: [\n resolveStyle({part: panelsStyles.parts.toggle, props: {}, className: props.class}),\n {\n 'data-ui-panel-toggle': '',\n ':data-target': () => props.target || undefined,\n ':data-action': () => props.action,\n '@click': (event: Event) => this.trigger(event),\n },\n ]});\n },\n trigger(event?: Event) {\n event?.preventDefault();\n const button = this.$el as HTMLElement;\n const closestPanel = button.closest<HTMLElement>('[data-ui-panel]');\n const closestGroup = closestPanel?.closest<HTMLElement>('[data-ui-panels]');\n const target = props.target || closestPanel?.id || '';\n if (!target) return;\n document.dispatchEvent(new CustomEvent('ui:panel-toggle', {detail: {\n panelId: target,\n groupId: closestGroup?.id,\n action: props.action,\n trigger: button,\n }}));\n },\n };\n};\n\nconst registerPanels = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiPanels', UiPanels)(AlpineInstance);\n defineAlpineData('UiPanelToggle', UiPanelToggle)(AlpineInstance);\n};\n\nexport {registerPanels, UiPanels, UiPanelToggle};\nexport type {\n PanelEventDetail,\n PanelsData,\n PanelsPersistTransitionData,\n PanelSizingTransitionData,\n PanelsTransition,\n UiPanelsApi,\n};\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 {registerResizableCapability} from '../../capabilities/resizable';\nimport {registerPanels as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerPanels = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerPanels};\nexport default registerPanels;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry2.generated-Dzq4GSqn.js","names":[],"sources":["../../../../../../../../client/src/components/virtualizer/index.ts","../../../../../../../../client/src/components/virtualizer/entry.generated.ts"],"sourcesContent":["import type Alpine from 'alpinejs';\n\nimport {defineAlpineData} from '@client/runtime';\nimport {UiVirtualizer} from '../../runtime/virtualizer';\n\nconst registerVirtualizer = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiVirtualizer', () => UiVirtualizer(AlpineInstance))(AlpineInstance);\n};\n\nexport {registerVirtualizer, UiVirtualizer};\nexport type {\n CursorDataSource,\n CursorFirstArgs,\n CursorMoveArgs,\n CursorPage,\n CursorResponseAdapter,\n CursorRenderPayload,\n CursorSeekArgs,\n SoughtCursorPage,\n CursorVirtualizerOptions,\n ResetOptions,\n SetUrlOptions,\n UiVirtualizerApi,\n VirtualizerOptions,\n VirtualizerData,\n VirtualScrollAlign,\n} from '../../runtime/virtualizer';\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerVirtualizer as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerVirtualizer = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerVirtualizer};\nexport default registerVirtualizer;\nexport * from './index';\n"],"mappings":"uFAKA,IAAM,EAAuB,GAAwC,CACjE,EAAiB,oBAAuB,EAAc,CAAc,CAAC,EAAE,CAAc,CACzF,ECDM,EAAa,IAAI,QAEjB,EAAuB,GAAqC,CAC1D,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAE7B,EAAkB,CAAc,EACpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry2.generated-QspMEPHx.js","names":[],"sources":["../../../../../../../../client/src/components/table/contract.ts","../../../../../../../../client/src/components/table/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\n\nconst TABLE_LAYOUTS = ['auto', 'fixed'] as const;\nconst TABLE_DENSITIES = ['compact', 'default', 'comfortable'] as const;\nconst TABLE_VARIANTS = ['ghost', 'surface'] as const;\nconst TABLE_BORDERS = ['none', 'row', 'grid'] as const;\nconst TABLE_WIDTHS = ['auto', 'full'] as const;\nconst TABLE_ALIGNS = ['start', 'center', 'end'] as const;\nconst TABLE_VALIGNS = ['top', 'middle', 'bottom', 'baseline'] as const;\nconst TABLE_SORTS = ['none', 'ascending', 'descending', 'other'] as const;\nconst TABLE_COLUMN_SCOPES = ['col', 'colgroup'] as const;\nconst TABLE_ROW_HEADER_SCOPES = ['row', 'rowgroup'] as const;\nconst TABLE_FILTER_AS_VALUES = ['div', 'form'] as const;\n\nconst tableSchema = {\n layout: oneOf(TABLE_LAYOUTS, 'auto'),\n density: oneOf(TABLE_DENSITIES, 'default'),\n variant: oneOf(TABLE_VARIANTS, 'ghost'),\n border: oneOf(TABLE_BORDERS, 'none'),\n flush: bool,\n zebra: bool,\n hover: bool.default(true),\n stickyHeader: bool,\n nowrap: bool.default(true),\n width: oneOf(TABLE_WIDTHS, 'full'),\n class: string,\n tableClass: string,\n};\n\nconst tableCaptionSchema = {\n side: oneOf(['top', 'bottom'] as const, 'bottom'),\n class: string,\n};\n\nconst tableSectionSchema = {\n class: string,\n};\n\nconst tableRowSchema = {\n selected: bool,\n current: bool,\n disabled: bool,\n interactive: bool,\n class: string,\n};\n\nconst tableColumnSchema = {\n align: oneOf(TABLE_ALIGNS, 'start'),\n valign: oneOf(TABLE_VALIGNS, 'middle'),\n key: string,\n target: string,\n width: string,\n resizable: bool,\n minWidth: string.default('4rem'),\n maxWidth: string,\n sortable: bool,\n sort: oneOf(TABLE_SORTS, 'none'),\n abbr: string,\n scope: oneOf(TABLE_COLUMN_SCOPES, 'col'),\n class: string,\n contentClass: string,\n resizeHandleClass: string,\n};\n\nconst tableColumnFilterSchema = {\n as: oneOf(TABLE_FILTER_AS_VALUES, 'div'),\n id: string,\n class: string,\n};\n\nconst tableRowHeaderSchema = {\n align: oneOf(TABLE_ALIGNS, 'start'),\n valign: oneOf(TABLE_VALIGNS, 'middle'),\n scope: oneOf(TABLE_ROW_HEADER_SCOPES, 'row'),\n class: string,\n};\n\nconst tableCellSchema = {\n align: oneOf(TABLE_ALIGNS, 'start'),\n valign: oneOf(TABLE_VALIGNS, 'middle'),\n class: string,\n};\n\nconst tableEmptySchema = {\n colspan: string.default('1'),\n class: string,\n cellClass: string,\n};\n\ntype TableLayout = typeof TABLE_LAYOUTS[number];\ntype TableDensity = typeof TABLE_DENSITIES[number];\ntype TableVariant = typeof TABLE_VARIANTS[number];\ntype TableBorder = typeof TABLE_BORDERS[number];\ntype TableWidth = typeof TABLE_WIDTHS[number];\ntype TableAlign = typeof TABLE_ALIGNS[number];\ntype TableValign = typeof TABLE_VALIGNS[number];\ntype TableSort = typeof TABLE_SORTS[number];\ntype TableColumnScope = typeof TABLE_COLUMN_SCOPES[number];\ntype TableRowHeaderScope = typeof TABLE_ROW_HEADER_SCOPES[number];\ntype TableFilterAs = typeof TABLE_FILTER_AS_VALUES[number];\ntype TableProps = SchemaToProps<typeof tableSchema>;\ntype TableCaptionProps = SchemaToProps<typeof tableCaptionSchema>;\ntype TableSectionProps = SchemaToProps<typeof tableSectionSchema>;\ntype TableRowProps = SchemaToProps<typeof tableRowSchema>;\ntype TableColumnProps = SchemaToProps<typeof tableColumnSchema>;\ntype TableColumnFilterProps = SchemaToProps<typeof tableColumnFilterSchema>;\ntype TableRowHeaderProps = SchemaToProps<typeof tableRowHeaderSchema>;\ntype TableCellProps = SchemaToProps<typeof tableCellSchema>;\ntype TableEmptyProps = SchemaToProps<typeof tableEmptySchema>;\n\nexport {\n TABLE_ALIGNS,\n TABLE_BORDERS,\n TABLE_COLUMN_SCOPES,\n TABLE_DENSITIES,\n TABLE_FILTER_AS_VALUES,\n TABLE_LAYOUTS,\n TABLE_ROW_HEADER_SCOPES,\n TABLE_SORTS,\n TABLE_VALIGNS,\n TABLE_VARIANTS,\n TABLE_WIDTHS,\n tableCaptionSchema,\n tableCellSchema,\n tableColumnFilterSchema,\n tableColumnSchema,\n tableEmptySchema,\n tableRowHeaderSchema,\n tableRowSchema,\n tableSchema,\n tableSectionSchema,\n};\nexport type {\n TableAlign,\n TableBorder,\n TableCaptionProps,\n TableCellProps,\n TableColumnFilterProps,\n TableColumnProps,\n TableColumnScope,\n TableDensity,\n TableEmptyProps,\n TableFilterAs,\n TableLayout,\n TableProps,\n TableRowHeaderProps,\n TableRowHeaderScope,\n TableRowProps,\n TableSectionProps,\n TableSort,\n TableValign,\n TableVariant,\n TableWidth,\n};\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 {registerResizableCapability} from '../../capabilities/resizable';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerTable = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n\n};\n\nexport {registerTable};\nexport default registerTable;\nexport * from './index';\n"],"mappings":"yGAEA,IAAM,EAAgB,CAAC,OAAQ,OAAO,EAChC,EAAkB,CAAC,UAAW,UAAW,aAAa,EACtD,EAAiB,CAAC,QAAS,SAAS,EACpC,EAAgB,CAAC,OAAQ,MAAO,MAAM,EACtC,EAAe,CAAC,OAAQ,MAAM,EAC9B,EAAe,CAAC,QAAS,SAAU,KAAK,EACxC,EAAgB,CAAC,MAAO,SAAU,SAAU,UAAU,EACtD,EAAc,CAAC,OAAQ,YAAa,aAAc,OAAO,EACzD,EAAsB,CAAC,MAAO,UAAU,EACxC,EAA0B,CAAC,MAAO,UAAU,EAC5C,EAAyB,CAAC,MAAO,MAAM,EAEvC,EAAc,CAChB,OAAQ,EAAM,EAAe,MAAM,EACnC,QAAS,EAAM,EAAiB,SAAS,EACzC,QAAS,EAAM,EAAgB,OAAO,EACtC,OAAQ,EAAM,EAAe,MAAM,EACnC,MAAO,EACP,MAAO,EACP,MAAO,EAAK,QAAQ,EAAI,EACxB,aAAc,EACd,OAAQ,EAAK,QAAQ,EAAI,EACzB,MAAO,EAAM,EAAc,MAAM,EACjC,MAAO,EACP,WAAY,CAChB,EAEM,EAAqB,CACvB,KAAM,EAAM,CAAC,MAAO,QAAQ,EAAY,QAAQ,EAChD,MAAO,CACX,EAEM,EAAqB,CACvB,MAAO,CACX,EAEM,EAAiB,CACnB,SAAU,EACV,QAAS,EACT,SAAU,EACV,YAAa,EACb,MAAO,CACX,EAEM,EAAoB,CACtB,MAAO,EAAM,EAAc,OAAO,EAClC,OAAQ,EAAM,EAAe,QAAQ,EACrC,IAAK,EACL,OAAQ,EACR,MAAO,EACP,UAAW,EACX,SAAU,EAAO,QAAQ,MAAM,EAC/B,SAAU,EACV,SAAU,EACV,KAAM,EAAM,EAAa,MAAM,EAC/B,KAAM,EACN,MAAO,EAAM,EAAqB,KAAK,EACvC,MAAO,EACP,aAAc,EACd,kBAAmB,CACvB,EAEM,EAA0B,CAC5B,GAAI,EAAM,EAAwB,KAAK,EACvC,GAAI,EACJ,MAAO,CACX,EAEM,EAAuB,CACzB,MAAO,EAAM,EAAc,OAAO,EAClC,OAAQ,EAAM,EAAe,QAAQ,EACrC,MAAO,EAAM,EAAyB,KAAK,EAC3C,MAAO,CACX,EAEM,EAAkB,CACpB,MAAO,EAAM,EAAc,OAAO,EAClC,OAAQ,EAAM,EAAe,QAAQ,EACrC,MAAO,CACX,EAEM,EAAmB,CACrB,QAAS,EAAO,QAAQ,GAAG,EAC3B,MAAO,EACP,UAAW,CACf,EClFM,EAAa,IAAI,QAEjB,EAAiB,GAAqC,CACpD,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAC7B,EAA4B,CAAc,EAE9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry2.generated-gxr2-89M.js","names":[],"sources":["../../../../../../../../client/src/components/scroll-area/contract.ts","../../../../../../../../client/src/components/scroll-area/machine.ts","../../../../../../../../client/src/components/scroll-area/styles.ts","../../../../../../../../client/src/components/scroll-area/index.ts","../../../../../../../../client/src/components/scroll-area/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\n\nconst SCROLL_AREA_ORIENTATIONS = ['vertical', 'horizontal', 'both'] as const;\nconst SCROLL_AREA_TYPES = ['hover', 'always', 'scroll'] as const;\nconst scrollAreaSchema = {\n orientation: oneOf(SCROLL_AREA_ORIENTATIONS, 'vertical'),\n type: oneOf(SCROLL_AREA_TYPES, 'hover'),\n fill: bool,\n hideNative: bool.default(true),\n disabled: bool,\n class: string,\n viewportClass: string,\n scrollbarClass: string,\n thumbClass: string,\n cornerClass: string,\n};\n\ntype ScrollAreaOrientation = typeof SCROLL_AREA_ORIENTATIONS[number];\ntype ScrollAreaType = typeof SCROLL_AREA_TYPES[number];\ntype ScrollAreaProps = SchemaToProps<typeof scrollAreaSchema>;\n\nexport {\n SCROLL_AREA_ORIENTATIONS,\n SCROLL_AREA_TYPES,\n scrollAreaSchema,\n};\nexport type {\n ScrollAreaOrientation,\n ScrollAreaProps,\n ScrollAreaType,\n};\n","import {\n createMachine,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport type {ScrollAreaProps} from './contract';\n\ntype ScrollAxis = 'x' | 'y';\n\ntype ScrollAreaContext = {\n overflow: {x: boolean; y: boolean};\n};\n\ntype ScrollAreaMachineEffects = {\n sync(scope: MachineScope<ScrollAreaContext, ScrollAreaProps>): void;\n};\n\ntype CreateScrollAreaMachineOptions = {\n props: ScrollAreaProps;\n context: ScrollAreaContext;\n effects: ScrollAreaMachineEffects;\n};\n\n\nconst axisIs = (axis: ScrollAxis) => ({event}: MachineScope<ScrollAreaContext, ScrollAreaProps>): boolean => (\n event.axis === axis\n);\n\nconst scrollAreaHooks = [] as const;\n\nconst createScrollAreaMachine = ({\n props,\n context,\n effects,\n}: CreateScrollAreaMachineOptions): Machine<ScrollAreaContext, ScrollAreaProps> => createMachine<ScrollAreaContext, ScrollAreaProps>({\n type: 'parallel',\n on: {\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n MEASURED: {reduce: 'setOverflow', effects: 'sync'},\n },\n states: {\n pointer: {\n initial: 'outside',\n states: {\n outside: {on: {POINTER_ENTERED: {target: 'inside', effects: 'sync'}}},\n inside: {tags: ['hovered'], on: {POINTER_LEFT: {target: 'outside', effects: 'sync'}}},\n },\n },\n focus: {\n initial: 'outside',\n states: {\n outside: {on: {FOCUS_ENTERED: {target: 'inside', effects: 'sync'}}},\n inside: {tags: ['focused'], on: {FOCUS_LEFT: {target: 'outside', effects: 'sync'}}},\n },\n },\n scrolling: {\n initial: 'idle',\n states: {\n idle: {on: {SCROLLED: {target: 'active', effects: 'sync'}}},\n active: {tags: ['scrolling'], on: {SCROLL_SETTLED: {target: 'idle', effects: 'sync'}}},\n },\n },\n dragging: {\n initial: 'idle',\n states: {\n idle: {\n on: {\n DRAG_STARTED: [\n {target: 'vertical', guard: axisIs('y'), effects: 'sync'},\n {target: 'horizontal', guard: axisIs('x'), effects: 'sync'},\n ],\n },\n },\n vertical: {tags: ['dragging', 'dragging-y'], on: {DRAG_ENDED: {target: 'idle', effects: 'sync'}}},\n horizontal: {tags: ['dragging', 'dragging-x'], on: {DRAG_ENDED: {target: 'idle', effects: 'sync'}}},\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = propsChangedEvent<ScrollAreaProps>(event);\n return next ? {props: next.props} : {};\n },\n setOverflow: ({context, event}) => ({\n context: {\n ...context,\n overflow: {\n x: event.overflowX === true,\n y: event.overflowY === true,\n },\n },\n }),\n },\n effects: {sync: effects.sync},\n});\n\nexport {createScrollAreaMachine, scrollAreaHooks};\nexport type {\n CreateScrollAreaMachineOptions,\n ScrollAreaContext,\n ScrollAreaMachineEffects,\n ScrollAxis,\n};\n","import {defineStyles} from '../../runtime';\n\nconst scrollAreaStyles = defineStyles({definition: {\n component: 'ui.scroll-area',\n parts: {\n root: {\n base: [\n 'relative min-w-0 overflow-hidden text-surface-ink',\n 'data-disabled:opacity-60',\n ],\n variants: {\n fill: {\n true: 'flex min-h-0 flex-1 flex-col',\n false: '',\n },\n },\n defaults: {\n fill: false,\n },\n },\n viewport: {\n base: [\n 'min-h-0 min-w-0 outline-none',\n 'focus-visible:ui-focus-ring',\n ],\n variants: {\n orientation: {\n vertical: 'h-full w-full overflow-x-hidden overflow-y-auto',\n horizontal: 'h-full w-full overflow-x-auto overflow-y-hidden',\n both: 'size-full overflow-auto',\n },\n fill: {\n true: 'flex-1',\n false: '',\n },\n },\n defaults: {\n orientation: 'vertical',\n fill: false,\n },\n },\n content: {\n base: 'min-w-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: 'w-max min-w-full',\n both: 'min-w-full',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n scrollbar: {\n base: [\n 'pointer-events-none absolute z-10 rounded-scrollbar-thumb opacity-0',\n 'data-visible:pointer-events-auto data-visible:opacity-100 data-disabled:pointer-events-none',\n ],\n variants: {\n orientation: {\n vertical: 'bottom-scrollbar-inset right-scrollbar-inset top-scrollbar-inset w-scrollbar',\n horizontal: 'bottom-scrollbar-inset left-scrollbar-inset right-scrollbar-inset h-scrollbar',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n thumb: {\n base: [\n 'absolute rounded-scrollbar-thumb bg-scrollbar-thumb',\n 'hover:bg-scrollbar-thumb-hover data-dragging:bg-scrollbar-thumb-hover',\n ],\n variants: {\n orientation: {\n vertical: 'left-0 top-0 w-full',\n horizontal: 'left-0 top-0 h-full',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n corner: {\n base: [\n 'pointer-events-none absolute bottom-scrollbar-inset right-scrollbar-inset z-10 size-scrollbar rounded-scrollbar-thumb',\n 'bg-transparent opacity-0',\n 'data-visible:opacity-100',\n ],\n },\n },\n}});\n\nexport {scrollAreaStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n mergeBindings,\n type BindingObject,\n type MachineSnapshot,\n resolveStyle,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {addListener, clamp, isRtl, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {scrollAreaSchema, type ScrollAreaOrientation, type ScrollAreaProps} from './contract';\nimport {\n createScrollAreaMachine,\n type ScrollAreaContext,\n scrollAreaHooks,\n type ScrollAxis,\n} from './machine';\nimport {scrollAreaStyles} from './styles';\n\ntype DragState = {\n axis: ScrollAxis;\n pointerId: number;\n startPointer: number;\n startScroll: number;\n trackLength: number;\n thumbLength: number;\n maxScroll: number;\n};\n\ntype ScrollAreaElements = {\n root: HTMLElement;\n viewport: HTMLElement;\n content: HTMLElement | null;\n verticalScrollbar: HTMLElement | null;\n horizontalScrollbar: HTMLElement | null;\n verticalThumb: HTMLElement | null;\n horizontalThumb: HTMLElement | null;\n corner: HTMLElement | null;\n};\n\ntype AxisGeometry = {\n trackLength: number;\n thumbLength: number;\n maxOffset: number;\n maxScroll: number;\n};\n\n/**\n * Public Alpine API for `ui.scroll-area`.\n *\n * @public\n */\ninterface UiScrollAreaApi {\n /** Whether content currently overflows the horizontal axis. */\n readonly overflowX: boolean;\n /** Whether content currently overflows the vertical axis. */\n readonly overflowY: boolean;\n /** Whether the native viewport is in an active scroll session. */\n readonly isScrolling: boolean;\n /** Whether a custom scrollbar thumb is being dragged. */\n readonly isDragging: boolean;\n}\n\ntype ScrollAreaData = AlpineMachine<ScrollAreaContext, ScrollAreaProps, typeof scrollAreaHooks> & UiScrollAreaApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n viewport(el: HTMLElement): BindingObject;\n scrollbar(el: HTMLElement): BindingObject;\n thumb(el: HTMLElement): BindingObject;\n corner(el: HTMLElement): BindingObject;\n};\n\nconst MIN_THUMB_SIZE = 18;\nconst SCROLL_CHROME_FADE_DELAY = 1000;\n\nlet rtlScrollType: 'negative' | 'reverse' | 'default' | null = null;\n\nconst includesAxis = (orientation: ScrollAreaOrientation, axis: ScrollAxis): boolean => (\n orientation === 'both' || (orientation === 'horizontal' && axis === 'x') || (orientation === 'vertical' && axis === 'y')\n);\n\nconst detectRtlScrollType = (): 'negative' | 'reverse' | 'default' => {\n if (rtlScrollType) return rtlScrollType;\n\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n outer.dir = 'rtl';\n outer.style.cssText = 'position:absolute;left:-9999px;width:4px;height:1px;overflow:scroll;';\n inner.style.cssText = 'width:8px;height:1px;';\n outer.append(inner);\n document.body.append(outer);\n\n outer.scrollLeft = 1;\n if (outer.scrollLeft === 0) rtlScrollType = 'negative';\n else {\n outer.scrollLeft = 0;\n rtlScrollType = outer.scrollLeft === 0 ? 'reverse' : 'default';\n }\n\n outer.remove();\n return rtlScrollType;\n};\n\nconst horizontalScrollPosition = (viewport: HTMLElement): number => {\n const max = Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n if (!isRtl({el: viewport})) return viewport.scrollLeft;\n\n const type = detectRtlScrollType();\n if (type === 'negative') return -viewport.scrollLeft;\n if (type === 'reverse') return max - viewport.scrollLeft;\n return viewport.scrollLeft;\n};\n\nconst setHorizontalScrollPosition = (viewport: HTMLElement, value: number): void => {\n const max = Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n const next = clamp(value, 0, max);\n if (!isRtl({el: viewport})) {\n viewport.scrollLeft = next;\n return;\n }\n\n const type = detectRtlScrollType();\n if (type === 'negative') viewport.scrollLeft = -next;\n else if (type === 'reverse') viewport.scrollLeft = max - next;\n else viewport.scrollLeft = next;\n};\n\nconst axisFromOrientation = (el: HTMLElement): ScrollAxis => (\n el.dataset.orientation === 'horizontal' ? 'x' : 'y'\n);\n\nconst isHTMLElement = (value: Element | null): value is HTMLElement => value instanceof HTMLElement;\n\nconst queryDirectPart = (root: HTMLElement, selector: string): HTMLElement | null => {\n const el = root.querySelector(`:scope > ${selector}`);\n return isHTMLElement(el) ? el : null;\n};\n\nconst UiScrollArea = (): TrellisAlpineComponent<ScrollAreaData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let listeners: CleanupStack = [];\n let resizeObserver: ResizeObserver | null = null;\n let mutationObserver: MutationObserver | null = null;\n let measureFrame = 0;\n let positionFrame = 0;\n let fadeTimer = 0;\n let dragging: DragState | null = null;\n let verticalGeometry: AxisGeometry | null = null;\n let horizontalGeometry: AxisGeometry | null = null;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Scroll Area has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<ScrollAreaContext, ScrollAreaProps> => (\n bridge.getCommittedSnapshot()\n );\n const currentProps = (): Readonly<ScrollAreaProps> => currentSnapshot().props;\n const hasTag = (tag: string): boolean => currentSnapshot().tags.includes(tag);\n const elements = (): ScrollAreaElements => {\n const rootElement = root();\n const viewport = queryDirectPart(rootElement, '[data-ui-scroll-area-viewport]') ?? rootElement;\n return {\n root: rootElement,\n viewport,\n content: queryDirectPart(viewport, '[data-ui-scroll-area-content]'),\n verticalScrollbar: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"vertical\"]'),\n horizontalScrollbar: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"horizontal\"]'),\n verticalThumb: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"vertical\"] > [data-ui-scroll-area-thumb][data-orientation=\"vertical\"]'),\n horizontalThumb: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"horizontal\"] > [data-ui-scroll-area-thumb][data-orientation=\"horizontal\"]'),\n corner: queryDirectPart(rootElement, '[data-ui-scroll-area-corner]'),\n };\n };\n\n const clearFadeTimer = (): void => {\n if (!fadeTimer) return;\n window.clearTimeout(fadeTimer);\n fadeTimer = 0;\n };\n const startFadeTimer = (): void => {\n clearFadeTimer();\n fadeTimer = window.setTimeout(() => {\n fadeTimer = 0;\n bridge.send('SCROLL_SETTLED');\n }, SCROLL_CHROME_FADE_DELAY);\n };\n\n const updateThumbPositions = (parts = elements()): void => {\n const {viewport} = parts;\n if (parts.verticalThumb && verticalGeometry) {\n const offset = verticalGeometry.maxOffset * clamp(viewport.scrollTop / verticalGeometry.maxScroll, 0, 1);\n parts.verticalThumb.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n if (parts.horizontalThumb && horizontalGeometry) {\n const offset = horizontalGeometry.maxOffset * clamp(\n horizontalScrollPosition(viewport) / horizontalGeometry.maxScroll,\n 0,\n 1,\n );\n parts.horizontalThumb.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n };\n\n const updateGeometry = (parts: ScrollAreaElements): void => {\n const {viewport} = parts;\n const updateAxis = (\n axis: ScrollAxis,\n scrollbar: HTMLElement | null,\n thumb: HTMLElement | null,\n overflow: boolean,\n ): AxisGeometry | null => {\n if (!scrollbar || !thumb || !overflow) {\n if (thumb) {\n thumb.style.width = '';\n thumb.style.height = '';\n thumb.style.transform = '';\n }\n return null;\n }\n\n const trackLength = axis === 'y' ? scrollbar.clientHeight : scrollbar.clientWidth;\n const viewportLength = axis === 'y' ? viewport.clientHeight : viewport.clientWidth;\n const scrollLength = axis === 'y' ? viewport.scrollHeight : viewport.scrollWidth;\n const maxScroll = Math.max(1, scrollLength - viewportLength);\n const thumbLength = Math.min(\n trackLength,\n Math.max(MIN_THUMB_SIZE, (viewportLength / scrollLength) * trackLength),\n );\n const maxOffset = Math.max(0, trackLength - thumbLength);\n\n if (axis === 'y') {\n thumb.style.height = `${thumbLength}px`;\n thumb.style.width = '';\n } else {\n thumb.style.width = `${thumbLength}px`;\n thumb.style.height = '';\n }\n return {trackLength, thumbLength, maxOffset, maxScroll};\n };\n\n const {overflow} = currentSnapshot().context;\n verticalGeometry = updateAxis('y', parts.verticalScrollbar, parts.verticalThumb, overflow.y);\n horizontalGeometry = updateAxis('x', parts.horizontalScrollbar, parts.horizontalThumb, overflow.x);\n updateThumbPositions(parts);\n };\n\n const updateVisibility = (parts: ScrollAreaElements): void => {\n const props = currentProps();\n const {overflow} = currentSnapshot().context;\n const interacting = hasTag('hovered') || hasTag('focused') || hasTag('scrolling') || hasTag('dragging');\n const visibleFor = (axisOverflows: boolean): boolean => {\n if (!axisOverflows) return false;\n if (props.type === 'always') return true;\n if (props.type === 'scroll') return hasTag('scrolling') || hasTag('dragging');\n return interacting;\n };\n const verticalVisible = visibleFor(overflow.y);\n const horizontalVisible = visibleFor(overflow.x);\n\n [parts.verticalScrollbar, parts.verticalThumb].forEach((el) => {\n if (el) setPresence({el, attr: 'data-visible', present: verticalVisible});\n });\n [parts.horizontalScrollbar, parts.horizontalThumb].forEach((el) => {\n if (el) setPresence({el, attr: 'data-visible', present: horizontalVisible});\n });\n [parts.verticalScrollbar, parts.horizontalScrollbar].forEach((el) => {\n if (el) setPresence({el, attr: 'data-disabled', present: props.disabled});\n });\n if (parts.verticalThumb) setPresence({el: parts.verticalThumb, attr: 'data-dragging', present: hasTag('dragging-y')});\n if (parts.horizontalThumb) setPresence({el: parts.horizontalThumb, attr: 'data-dragging', present: hasTag('dragging-x')});\n if (parts.corner) setPresence({el: parts.corner, attr: 'data-visible', present: verticalVisible && horizontalVisible});\n };\n\n const releaseDrag = (): void => {\n if (!dragging) return;\n const active = dragging;\n dragging = null;\n const parts = elements();\n const thumb = active.axis === 'y' ? parts.verticalThumb : parts.horizontalThumb;\n try {\n thumb?.releasePointerCapture?.(active.pointerId);\n } catch {\n // Pointer capture cleanup is best-effort after interrupted gestures.\n }\n bridge.send({type: 'DRAG_ENDED', axis: active.axis});\n };\n\n const syncDom = (): void => {\n const parts = elements();\n const props = currentProps();\n const {overflow} = currentSnapshot().context;\n if (props.disabled && dragging) releaseDrag();\n\n setPresence({el: parts.root, attr: 'data-overflow-x', present: overflow.x});\n setPresence({el: parts.root, attr: 'data-overflow-y', present: overflow.y});\n setPresence({el: parts.root, attr: 'data-scrolling', present: hasTag('scrolling')});\n setPresence({el: parts.root, attr: 'data-dragging', present: hasTag('dragging')});\n setPresence({el: parts.root, attr: 'data-disabled', present: props.disabled});\n setAttribute({el: parts.viewport, attr: 'data-orientation', value: props.orientation});\n setPresence({el: parts.viewport, attr: 'data-hide-native', present: props.hideNative});\n updateGeometry(parts);\n updateVisibility(parts);\n };\n\n const scheduleMeasure = (): void => {\n if (measureFrame) return;\n measureFrame = requestAnimationFrame(() => {\n measureFrame = 0;\n const parts = elements();\n const props = currentProps();\n const overflowX = includesAxis(props.orientation, 'x') && parts.viewport.scrollWidth > parts.viewport.clientWidth + 1;\n const overflowY = includesAxis(props.orientation, 'y') && parts.viewport.scrollHeight > parts.viewport.clientHeight + 1;\n const current = currentSnapshot().context.overflow;\n if (overflowX !== current.x || overflowY !== current.y) {\n bridge.send({type: 'MEASURED', overflowX, overflowY});\n } else {\n updateGeometry(parts);\n updateVisibility(parts);\n }\n });\n };\n const schedulePosition = (): void => {\n if (positionFrame) return;\n positionFrame = requestAnimationFrame(() => {\n positionFrame = 0;\n updateThumbPositions();\n });\n };\n\n const onScroll = (): void => {\n schedulePosition();\n if (!hasTag('scrolling')) bridge.send('SCROLLED');\n if ((currentSnapshot().context.overflow.y && !verticalGeometry)\n || (currentSnapshot().context.overflow.x && !horizontalGeometry)) scheduleMeasure();\n startFadeTimer();\n };\n\n const startDrag = (event: PointerEvent, axis: ScrollAxis): void => {\n if (currentProps().disabled) return;\n const parts = elements();\n const viewport = parts.viewport;\n const scrollbar = axis === 'y' ? parts.verticalScrollbar : parts.horizontalScrollbar;\n const thumb = axis === 'y' ? parts.verticalThumb : parts.horizontalThumb;\n const overflow = axis === 'y' ? currentSnapshot().context.overflow.y : currentSnapshot().context.overflow.x;\n if (!scrollbar || !thumb || !overflow) return;\n\n const trackLength = axis === 'y' ? scrollbar.clientHeight : scrollbar.clientWidth;\n const thumbLength = axis === 'y' ? thumb.offsetHeight : thumb.offsetWidth;\n const maxScroll = axis === 'y'\n ? Math.max(0, viewport.scrollHeight - viewport.clientHeight)\n : Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n dragging = {\n axis,\n pointerId: event.pointerId,\n startPointer: axis === 'y' ? event.clientY : event.clientX,\n startScroll: axis === 'y' ? viewport.scrollTop : horizontalScrollPosition(viewport),\n trackLength,\n thumbLength,\n maxScroll,\n };\n try {\n thumb.setPointerCapture?.(event.pointerId);\n } catch {\n dragging = null;\n return;\n }\n clearFadeTimer();\n bridge.send({type: 'DRAG_STARTED', axis});\n };\n\n const moveDrag = (event: PointerEvent): void => {\n if (!dragging || dragging.pointerId !== event.pointerId) return;\n event.preventDefault();\n const {viewport} = elements();\n const pointer = dragging.axis === 'y' ? event.clientY : event.clientX;\n const delta = pointer - dragging.startPointer;\n const maxOffset = Math.max(1, dragging.trackLength - dragging.thumbLength);\n const nextScroll = dragging.startScroll + (delta / maxOffset) * dragging.maxScroll;\n if (dragging.axis === 'y') viewport.scrollTop = clamp(nextScroll, 0, dragging.maxScroll);\n else setHorizontalScrollPosition(viewport, nextScroll);\n schedulePosition();\n };\n\n const endDrag = (event: PointerEvent): void => {\n if (!dragging || dragging.pointerId !== event.pointerId) return;\n releaseDrag();\n startFadeTimer();\n };\n\n const bridge = createAlpineMachine({\n schema: scrollAreaSchema,\n hooks: scrollAreaHooks,\n createMachine: ({props}) => createScrollAreaMachine({\n props,\n context: {overflow: {x: false, y: false}},\n effects: {\n sync: syncDom,\n },\n }),\n });\n\n let component!: TrellisAlpineComponent<ScrollAreaData>;\n component = {\n ...bridge,\n get overflowX(): boolean {\n return this.snapshot.current?.context.overflow.x ?? false;\n },\n get overflowY(): boolean {\n return this.snapshot.current?.context.overflow.y ?? false;\n },\n get isScrolling(): boolean {\n return this.snapshot.current?.tags.includes('scrolling') ?? false;\n },\n get isDragging(): boolean {\n return this.snapshot.current?.tags.includes('dragging') ?? false;\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const parts = elements();\n resizeObserver = new ResizeObserver(scheduleMeasure);\n resizeObserver.observe(parts.viewport);\n if (parts.content) resizeObserver.observe(parts.content);\n mutationObserver = new MutationObserver(scheduleMeasure);\n if (parts.content) mutationObserver.observe(parts.content, {childList: true, subtree: true, characterData: true});\n\n addListener({target: parts.viewport, event: 'scroll', handler: onScroll, cleanup: listeners, options: {passive: true}});\n addListener({target: document, event: 'pointermove', handler: (event) => moveDrag(event as PointerEvent), cleanup: listeners});\n addListener({target: document, event: 'pointerup', handler: (event) => endDrag(event as PointerEvent), cleanup: listeners});\n addListener({target: document, event: 'pointercancel', handler: (event) => endDrag(event as PointerEvent), cleanup: listeners});\n scheduleMeasure();\n },\n destroy(): void {\n releaseDrag();\n clearFadeTimer();\n if (measureFrame) cancelAnimationFrame(measureFrame);\n if (positionFrame) cancelAnimationFrame(positionFrame);\n measureFrame = 0;\n positionFrame = 0;\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n resizeObserver = null;\n mutationObserver = null;\n listeners.splice(0).forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-scroll-area': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-type': () => currentProps().type,\n ':data-fill': () => currentProps().fill ? '' : undefined,\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n '@pointerenter': () => bridge.send('POINTER_ENTERED'),\n '@pointerleave': () => bridge.send('POINTER_LEFT'),\n '@focusin': () => bridge.send('FOCUS_ENTERED'),\n '@focusout': (event: FocusEvent) => {\n if (!(event.relatedTarget instanceof Node) || !root().contains(event.relatedTarget)) {\n bridge.send('FOCUS_LEFT');\n }\n },\n },\n ]});\n },\n viewport(el: HTMLElement): BindingObject {\n return mergeBindings({inputs: [\n resolveStyle({\n part: scrollAreaStyles.parts.viewport,\n props: {orientation: currentProps().orientation, fill: currentProps().fill},\n className: el.dataset.class,\n }),\n {\n tabindex: '0',\n 'data-ui-scroll-area-viewport': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-hide-native': () => currentProps().hideNative ? '' : undefined,\n },\n ]});\n },\n scrollbar(el: HTMLElement): BindingObject {\n const orientation = axisFromOrientation(el) === 'x' ? 'horizontal' : 'vertical';\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.scrollbar, props: {orientation}, className: el.dataset.class}),\n {\n 'data-ui-scroll-area-scrollbar': '',\n 'aria-hidden': 'true',\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n },\n ]});\n },\n thumb(el: HTMLElement): BindingObject {\n const axis = axisFromOrientation(el);\n const orientation = axis === 'x' ? 'horizontal' : 'vertical';\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.thumb, props: {orientation}, className: el.dataset.class}),\n {\n 'data-ui-scroll-area-thumb': '',\n 'aria-hidden': 'true',\n '@pointerdown.prevent': (event: PointerEvent) => startDrag(event, axis),\n ':data-dragging': () => hasTag(axis === 'x' ? 'dragging-x' : 'dragging-y') ? '' : undefined,\n },\n ]});\n },\n corner(el: HTMLElement): BindingObject {\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.corner, className: el.dataset.class}),\n {'data-ui-scroll-area-corner': '', 'aria-hidden': 'true'},\n ]});\n },\n };\n\n return component;\n};\n\nconst registerScrollArea = defineAlpineData('UiScrollArea', UiScrollArea);\n\nexport {registerScrollArea, UiScrollArea};\nexport type {ScrollAreaData, ScrollAreaElements, UiScrollAreaApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerScrollArea as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerScrollArea = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerScrollArea};\nexport default registerScrollArea;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-control-BkVb2Qed.js","names":[],"sources":["../../../../../../../../client/src/runtime/form-control.ts"],"sourcesContent":["import {setPresence} from '../utils';\n\ntype ControlState = {\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n};\n\ntype NativeControlState = ControlState & {\n name?: string;\n value?: string;\n readonly?: boolean;\n ariaRequired?: boolean;\n nativeRequired?: boolean;\n};\n\ntype HiddenInputState = {\n name: string;\n values: string[];\n required?: boolean;\n form?: string;\n marker?: string;\n};\n\ntype SyncControlPresenceOptions = {\n el: HTMLElement;\n state: ControlState;\n value?: string;\n};\n\ntype SyncNativeControlOptions = {\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n state: NativeControlState;\n};\n\ntype SyncRepeatedHiddenInputsOptions = {\n container: HTMLElement;\n state: HiddenInputState;\n currentKey?: string;\n};\n\ntype DispatchNativeControlChangeOptions = {\n container: HTMLElement | null;\n fallback: HTMLElement;\n marker: string;\n};\n\nconst syncControlPresence = ({\n el,\n state,\n value = '',\n}: SyncControlPresenceOptions): void => {\n setPresence({el, attr: 'data-disabled', present: state.disabled ?? false, value});\n setPresence({el, attr: 'data-required', present: state.required ?? false, value});\n setPresence({el, attr: 'data-invalid', present: state.invalid ?? false, value});\n};\n\nconst syncNativeControl = ({\n input,\n state,\n}: SyncNativeControlOptions): void => {\n if (state.name !== undefined && state.name !== '') input.name = state.name;\n if (state.value !== undefined) input.value = state.value;\n\n input.disabled = state.disabled ?? false;\n input.required = state.nativeRequired ?? state.required ?? false;\n\n if ('readOnly' in input) {\n input.readOnly = state.readonly ?? false;\n }\n\n if (state.ariaRequired !== undefined) {\n input.setAttribute('aria-required', state.ariaRequired ? 'true' : 'false');\n }\n\n if (state.invalid) {\n input.setAttribute('aria-invalid', 'true');\n } else {\n input.removeAttribute('aria-invalid');\n }\n};\n\nconst hiddenInputsKey = (state: HiddenInputState): string => JSON.stringify({\n name: state.name,\n values: state.values,\n required: state.required ?? false,\n form: state.form ?? '',\n marker: state.marker ?? 'data-ui-hidden-input',\n});\n\nconst syncRepeatedHiddenInputs = ({\n container,\n state,\n currentKey = '',\n}: SyncRepeatedHiddenInputsOptions): string => {\n const marker = state.marker ?? 'data-ui-hidden-input';\n const nextKey = hiddenInputsKey({...state, marker});\n if (nextKey === currentKey) return currentKey;\n\n container.replaceChildren();\n if (!state.name) return nextKey;\n\n state.values.forEach((value) => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = state.name;\n input.value = value;\n input.setAttribute(marker, '');\n if (state.required) input.required = true;\n if (state.form) input.setAttribute('form', state.form);\n container.append(input);\n });\n\n return nextKey;\n};\n\nconst dispatchNativeControlChange = ({\n container,\n fallback,\n marker,\n}: DispatchNativeControlChangeOptions): void => {\n const control = container?.querySelector<HTMLInputElement>(`input[${marker}]`) ?? fallback;\n control.dispatchEvent(new Event('input', {bubbles: true}));\n control.dispatchEvent(new Event('change', {bubbles: true}));\n};\n\nexport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n};\nexport type {\n ControlState,\n DispatchNativeControlChangeOptions,\n HiddenInputState,\n NativeControlState,\n SyncControlPresenceOptions,\n SyncNativeControlOptions,\n SyncRepeatedHiddenInputsOptions,\n};\n"],"mappings":"sCA+CA,IAAM,GAAuB,CACzB,KACA,QACA,QAAQ,MAC4B,CACpC,EAAY,CAAC,KAAI,KAAM,gBAAiB,QAAS,EAAM,UAAY,GAAO,OAAK,CAAC,EAChF,EAAY,CAAC,KAAI,KAAM,gBAAiB,QAAS,EAAM,UAAY,GAAO,OAAK,CAAC,EAChF,EAAY,CAAC,KAAI,KAAM,eAAgB,QAAS,EAAM,SAAW,GAAO,OAAK,CAAC,CAClF,EAEM,GAAqB,CACvB,QACA,WACkC,CAC9B,EAAM,OAAS,IAAA,IAAa,EAAM,OAAS,KAAI,EAAM,KAAO,EAAM,MAClE,EAAM,QAAU,IAAA,KAAW,EAAM,MAAQ,EAAM,OAEnD,EAAM,SAAW,EAAM,UAAY,GACnC,EAAM,SAAW,EAAM,gBAAkB,EAAM,UAAY,GAEvD,aAAc,IACd,EAAM,SAAW,EAAM,UAAY,IAGnC,EAAM,eAAiB,IAAA,IACvB,EAAM,aAAa,gBAAiB,EAAM,aAAe,OAAS,OAAO,EAGzE,EAAM,QACN,EAAM,aAAa,eAAgB,MAAM,EAEzC,EAAM,gBAAgB,cAAc,CAE5C,EAEM,EAAmB,GAAoC,KAAK,UAAU,CACxE,KAAM,EAAM,KACZ,OAAQ,EAAM,OACd,SAAU,EAAM,UAAY,GAC5B,KAAM,EAAM,MAAQ,GACpB,OAAQ,EAAM,QAAU,sBAC5B,CAAC,EAEK,GAA4B,CAC9B,YACA,QACA,aAAa,MAC8B,CAC3C,IAAM,EAAS,EAAM,QAAU,uBACzB,EAAU,EAAgB,CAAC,GAAG,EAAO,QAAM,CAAC,EAiBlD,OAhBI,IAAY,EAAmB,GAEnC,EAAU,gBAAgB,EACrB,EAAM,MAEX,EAAM,OAAO,QAAS,GAAU,CAC5B,IAAM,EAAQ,SAAS,cAAc,OAAO,EAC5C,EAAM,KAAO,SACb,EAAM,KAAO,EAAM,KACnB,EAAM,MAAQ,EACd,EAAM,aAAa,EAAQ,EAAE,EACzB,EAAM,WAAU,EAAM,SAAW,IACjC,EAAM,MAAM,EAAM,aAAa,OAAQ,EAAM,IAAI,EACrD,EAAU,OAAO,CAAK,CAC1B,CAAC,EAXuB,EAc5B,EAEM,GAA+B,CACjC,YACA,WACA,YAC4C,CAC5C,IAAM,EAAU,GAAW,cAAgC,SAAS,EAAO,EAAE,GAAK,EAClF,EAAQ,cAAc,IAAI,MAAM,QAAS,CAAC,QAAS,EAAI,CAAC,CAAC,EACzD,EAAQ,cAAc,IAAI,MAAM,SAAU,CAAC,QAAS,EAAI,CAAC,CAAC,CAC9D"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./bridge-B4S_D6hV.js";import{n as t,o as n}from"./alpine-machine-BTDXpEr6.js";import{t as r}from"./dom-invalidation-Dw6clnS4.js";import{n as i}from"./fragment-Bl3Rq38L.js";var a=`data-ui-preserve-attr`,o=(e,...t)=>{let n=new Set((e.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/).filter(Boolean));t.filter(Boolean).forEach(e=>n.add(e)),n.size>0&&e.setAttribute(a,Array.from(n).join(` `))},s=(e,t)=>{if(!(e instanceof Element)||!(t instanceof Element))return;let n=new Set([...(e.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/),...(t.getAttribute(`data-ui-preserve-attr`)??``).split(/\s+/)].filter(Boolean));if(n.size!==0){t.setAttribute(a,Array.from(n).join(` `));for(let r of n)e.hasAttribute(r)?t.setAttribute(r,e.getAttribute(r)??``):t.removeAttribute(r)}},c=`single-child`,l=(e,t)=>{if(typeof t==`string`&&t)return t;let n=e.getAttribute(`data-ui-key`)||e.id;if(n)return n;let r=e.parentElement;if(r?.getAttribute(`data-ui-key-scope`)!==c)return null;let i=r.getAttribute(`data-ui-key`)||r.id;return i?`${i}:single-child`:null},u=`data-ui-motion-key`,d=`data-ui-motion-layout`,f=e=>typeof e==`object`&&!!e&&Symbol.iterator in e,p=(e=document)=>typeof e==`string`?Array.from(document.querySelectorAll(e)):e instanceof Document||e instanceof Element?[e]:f(e)?Array.from(e):[document],m=(e=document,t={})=>{let n=p(e).filter(e=>e instanceof Element),r=[],i=(e,t,n)=>{r.push({element:e,attr:t,previous:e.getAttribute(t)}),e.setAttribute(t,n)};return n.forEach(e=>{(t.layout??!0)&&i(e,d,``);let n=l(e,t.key);n&&!e.hasAttribute(`data-ui-motion-key`)&&i(e,u,n)}),()=>{r.reverse().forEach(({element:e,attr:t,previous:n})=>{if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)})}},h=(e,...t)=>{typeof console<`u`&&console.warn(e,...t)},g=new Set,_=!1,v=null,y=null,b=null,x=Promise.resolve(),S=0,ee=e=>{for(let t of e)g.add(t);_||g.size===0||(_=!0,queueMicrotask(()=>{_=!1;let e=Array.from(g);g.clear(),e.forEach(e=>e.invalidateDom())}))},C=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t},w=e=>Array.from(C(e).content.children).filter(e=>e instanceof HTMLElement),T=(e,t)=>{t.forEach(t=>e.initTree(t))},E=(e,t)=>t||e.getAttribute(`x-merge`)||`replace`,te=e=>{if(e.selector)return document.querySelector(e.selector);if(!e.target)return null;let t=e.target.startsWith(`#`)?e.target.slice(1):e.target;return document.getElementById(t)},D=(e,n,a)=>{let o=E(n,a.mode);if(o===`remove`){n.remove();return}if(!a.html){h(`x-ui-stream: received patch with no html`);return}if(o===`morph`||o===`outer`){if(typeof e.morph==`function`){let i=new Set;e.morph(n,a.html,{key(e){return l(e)},updating(e,t,n,r){if(e instanceof Element&&y?.(a.requestId??null,e)){r?.();return}s(e,t)},updated(n){if(!(n instanceof Element))return;let a=t(e,n);a&&i.add(a),r(n).forEach(e=>{i.add(e)})}}),ee(i);return}h(`x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace`)}if(o===`replace`||o===`morph`||o===`outer`){let[t]=w(a.html);if(!t){h(`x-ui-stream: replace mode produced no element`);return}n.replaceWith(t),e.initTree(t);return}if(o===`update`){i(e,n,a.html);return}let c=C(a.html),u=Array.from(c.content.children).filter(e=>e instanceof HTMLElement);if(o===`append`){n.append(c.content),T(e,u);return}if(o===`prepend`){n.prepend(c.content),T(e,u);return}if(o===`before`){n.before(c.content),T(e,u);return}o===`after`&&(n.after(c.content),T(e,u))},ne=(e,t)=>{let n=te(t);if(n){D(e,n,t);return}if(t.selector||t.target){h(`x-ui-stream: target not found`,t.selector??t.target);return}if(!t.html){h(`x-ui-stream: received patch with no html`);return}w(t.html).forEach(n=>{if(!n.id){h(`x-ui-stream: top-level element has no id, skipping`,n);return}let r=document.getElementById(n.id);r&&D(e,r,{...t,html:n.outerHTML})})},re=(t,n)=>{let r=Array.isArray(n)?n:[n],i=()=>{r.forEach(e=>ne(t,e))},a=()=>{let e=r.filter(e=>e.viewTransition===!0);if(e.length===0){i();return}b?b(t,e,i):i()},o=r.flatMap(e=>e.assets??[]);if(o.length===0&&S===0){a();return}S+=1;let s=async()=>{o.length>0&&await e(o,t),a()};x=x.then(s,s).catch(()=>void 0).finally(()=>{--S})},ie=e=>{b=e},ae=e=>{document.dispatchEvent(new CustomEvent(e.event,{detail:e.detail??{},bubbles:!0,composed:!0}))},O=e=>{let t=new Map;for(let n of e.data.split(`
|
|
2
|
-
`)){let e=n.indexOf(` `),r=e>0,i=r?n.slice(0,e):n;if(!r&&i!==`html`)return h(`x-ui-stream: invalid SSE command line`,i),null;let a=r?n.slice(e+1):``,o=t.get(i);o?o.push(a):t.set(i,[a])}return t},k=(e,t)=>{let n=e.get(t);if(n?.length)return n.length>1&&h(`x-ui-stream: duplicate SSE command, using last value`,t),n.at(-1)},oe=(e,t)=>{let n=O(t);if(!n||n.size===0)return;let r=k(n,`request-id`);if(v&&!v(r??null))return;let i,a=k(n,`assets`);if(a)try{let e=JSON.parse(a);if(!Array.isArray(e))throw TypeError(`assets must be an array`);i=e}catch{h(`x-ui-stream: invalid patch assets JSON`,a);return}re(e,{mode:k(n,`mode`)??`replace`,target:k(n,`target`)??null,selector:k(n,`selector`)??null,html:n.get(`html`)?.join(`
|
|
3
|
-
`)??null,requestId:r??null,viewTransition:k(n,`view-transition`)===`true`,...i?{assets:i}:{}})},se=e=>{let t=O(e);if(!t)return;let r=k(t,`request-id`);if(v&&!v(r??null))return;let i=k(t,`event`);if(!i){h(`x-ui-stream: dispatch SSE frame missing event`);return}let a=k(t,`detail`),o={};if(a)try{let e=JSON.parse(a);n(e)&&(o=e)}catch{h(`x-ui-stream: invalid dispatch detail JSON`,a);return}ae({event:i,detail:o})},ce={"trellis-ui-patch":oe,"trellis-ui-dispatch":(e,t)=>se(t)},le=`trellis-ui-`,ue=(e,t)=>{let n=ce[t.event];if(!n){t.event.startsWith(le)&&h(`x-ui-stream: unsupported SSE event`,t.event);return}n(e,t)},de=(e,t=``,n=``,r=``)=>{let i=new URL(e,document.baseURI),a=[...new Set(t.split(/\s+/).filter(Boolean))];return n&&i.searchParams.set(`client`,n),r&&i.searchParams.set(`lastEventId`,r),a.length>0&&(i.searchParams.delete(`channel`),a.forEach(e=>i.searchParams.append(`channel`,e))),/^[a-z][a-z\d+.-]*:/i.test(e)||e.startsWith(`//`)?i.href:`${i.pathname}${i.search}${i.hash}`},fe=(e,t,n=``,r=``,i={})=>{let a=new EventSource(de(t,n,r,i.lastEventId)),o=!0,s=e=>{e.lastEventId&&i.eventId?.(e.lastEventId)};return Object.keys(ce).forEach(t=>{a.addEventListener(t,t=>{!o||!(t instanceof MessageEvent)||(s(t),ue(e,{event:t.type,data:String(t.data)}))})}),a.addEventListener(`stream-open`,()=>{o&&i.open?.()}),a.addEventListener(`stream-reset`,e=>{o&&(e instanceof MessageEvent&&s(e),i.reset?.(e instanceof MessageEvent?String(e.data):``))}),a.addEventListener(`stream-error`,e=>{o&&(o=!1,a.close(),i.error?.(e instanceof MessageEvent?String(e.data):``))}),a.addEventListener(`error`,()=>{o&&(o=!1,a.close(),i.disconnected?.())}),{abort(){o=!1,a.close()}}},A=new Map,pe=new Set,me=e=>e instanceof HTMLElement&&e.id?e.id:e,he=6e4,ge=1e3,_e=2e3,ve=1e3,ye=3e4,j=(e,t,n={})=>{t!==`reset`&&(e.dataset.uiStreamState=t),e.dispatchEvent(new CustomEvent(`ui:stream:${t}`,{bubbles:!0,composed:!0,detail:{source:e,...n}}))},be=(e,t)=>de(t,e.dataset.uiStreamScopes,e.dataset.uiStreamClient),xe=e=>e.dataset.uiStreamOpenWhenHidden===`true`,M=(e,t)=>JSON.stringify({openWhenHidden:xe(e),url:be(e,t)}),Se=e=>{if(!(e instanceof CustomEvent))return null;let t=e.detail;return!t||typeof t.requestId!=`string`||typeof t.method!=`string`||!(t.controller instanceof AbortController)?null:t},Ce=(e,t,n)=>{let r=M(t,n),i=null,a,s=null,c,l,u=!1,d=``,f=0,p=0,m=!1,g=!1,_=new Map,v=new Set,y=xe(t),b=()=>!m&&(y||document.visibilityState===`visible`),x=()=>{window.clearTimeout(c),c=void 0},S=()=>{t.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},ee=a=>{i?.abort(),x();let o=++f;r=M(t,n),j(t,`connecting`),i=fe(e,n,t.dataset.uiStreamScopes,a,{lastEventId:d,open:()=>{if(o!==f)return;let e=u;u=!0,p=0,j(t,`open`),e&&S()},disconnected:()=>{if(o!==f||g||(i=null,O.controller=null,j(t,`disconnected`),!b()))return;let e=Math.min(ve*2**p,ye);p+=1;let n=Math.floor(Math.random()*e);c=window.setTimeout(()=>{c=void 0,E()},n)},reset:e=>j(t,`reset`,{data:e}),eventId:e=>{o===f&&(d=e)},error:e=>{o!==f||g||(m=!0,i=null,O.controller=null,x(),j(t,`error`,{data:e}))}}),O.controller=i,O.configuration=r,C()},C=()=>{if(window.clearTimeout(a),a=void 0,!b())return;let e=Number(t.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let n=e-Date.now()-he;if(n<=0){T();return}a=window.setTimeout(()=>void T(),n)},w=()=>{if(g)return Promise.resolve(null);if(s)return s;let e=t.dataset.uiStreamClientRefresh;return e?(s=fetch(e,{headers:{Accept:`application/json`,"X-Trellis-Client":t.dataset.uiStreamClient??``}}).then(async e=>{if(!e.ok)throw Error(`ClientSession refresh failed (${e.status})`);let n=await e.json();if(typeof n.token!=`string`||typeof n.expiresAt!=`number`)throw Error(`ClientSession refresh returned an invalid payload`);return g?null:(t.dataset.uiStreamClient=n.token,t.dataset.uiStreamClientExpires=String(n.expiresAt),n.token)}).catch(e=>{h(`x-ui-stream: could not refresh ClientSession`,e);let n=Number(t.dataset.uiStreamClientExpires);return!Number.isFinite(n)||n<=Date.now()?(j(t,`error`,{error:e}),null):(b()&&(a=window.setTimeout(()=>void T(),5e3)),t.dataset.uiStreamClient??null)}).finally(()=>{s=null}),s):(j(t,`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},T=async()=>{if(!b())return;let e=await w();e&&b()&&!g&&ee(e)},E=async()=>{if(g||!b()||i)return;let e=Number(t.dataset.uiStreamClientExpires),n=t.dataset.uiStreamClient??``,r=Number.isFinite(e)&&e>0&&e-Date.now()<=he?await w():n;r&&b()&&!g&&!i&&ee(r)},te=()=>{l=void 0,!(g||y||document.visibilityState!==`hidden`)&&(v.size>0||(_.forEach(e=>e.abort(`Document suspended`)),_.clear(),window.clearTimeout(a),a=void 0,x(),i?.abort(),i=null,j(t,`suspended`),O.controller=null))},D=e=>{window.clearTimeout(l),l=void 0,!(y||document.visibilityState!==`hidden`)&&(l=window.setTimeout(te,e))},ne=()=>{m||T()},re=e=>{let t=Se(e);if(t){if(t.method===`GET`){_.set(t.requestId,t.controller);return}v.add(t.requestId),document.visibilityState===`hidden`&&!y&&(window.clearTimeout(l),l=void 0)}},ie=e=>{let t=Se(e);if(t){if(t.method===`GET`){_.delete(t.requestId);return}v.delete(t.requestId),document.visibilityState===`hidden`&&!y&&v.size===0&&D(_e)}},ae=()=>{if(!(y||m)){if(document.visibilityState===`hidden`){if(v.size>0)return;D(ge);return}window.clearTimeout(l),l=void 0,i||E()}},O={configuration:r,controller:null,element:t,dispose(){g||(g=!0,window.clearTimeout(a),window.clearTimeout(l),x(),t.removeEventListener(`ui:stream:refresh`,ne),document.removeEventListener(`visibilitychange`,ae),document.removeEventListener(`ui:request:start`,re),document.removeEventListener(`ui:request:finish`,ie),i?.abort())},rescheduleRefresh:C};return o(t,`data-ui-stream-state`),t.addEventListener(`ui:stream:refresh`,ne),document.addEventListener(`visibilitychange`,ae),document.addEventListener(`ui:request:start`,re),document.addEventListener(`ui:request:finish`,ie),b()?E():j(t,`suspended`),O},we=e=>{typeof e.directive==`function`&&e.directive(`ui-stream`,(t,{expression:n},{cleanup:r})=>{if(!n)return;let i=t instanceof HTMLElement?t.dataset.uiStreamClient:``;if(!(t instanceof HTMLElement)||!i){h(`x-ui-stream: missing signed ClientSession capability`);return}let a=me(t),s=A.get(a),c=M(t,n);if(s?.configuration===c){t.dataset.uiStreamState=s.element.dataset.uiStreamState??`connecting`,o(t,`data-ui-stream-state`),queueMicrotask(()=>s.rescheduleRefresh());return}if(!t.isConnected&&typeof a==`string`){pe.has(a)||(pe.add(a),queueMicrotask(()=>{pe.delete(a);let t=document.getElementById(a);if(!t)return;let r=A.get(a),i=M(t,n);if(r?.configuration===i){r.rescheduleRefresh();return}r?.dispose(),A.set(a,Ce(e,t,n))}));return}s?.dispose(),A.set(a,Ce(e,t,n)),r(()=>{let e=A.get(a);e?.element===t&&(e.dispose(),A.delete(a))})})},Te=e=>{v=e},Ee=e=>{y=e},De=`X-Trellis-UI-Request`,Oe=`X-Trellis-Client`,ke=`X-Trellis-Request-ID`,Ae=`X-Trellis-Navigate`,je=`X-Trellis-Navigate-History`,Me=`[data-ui-stream][data-ui-stream-client]`,Ne=`ui:stream:open`,Pe=`ui:stream:error`,Fe=`ui:stream:disconnected`,Ie=`ui:stream:refresh`,Le=`meta[name="csrf-token"]`,Re=`text/event-stream`,ze=`data-ui-request-pending`,N=`application/x-www-form-urlencoded`,Be=`multipart/form-data`,Ve=new Set([`GET`]),P=null,He=null,Ue=e=>{let t=(e||`GET`).toUpperCase();return t===`POST`||t===`PUT`||t===`PATCH`||t===`DELETE`?t:`GET`},We=(e,t,n)=>{if(e instanceof FormData){e.append(t,n);return}e.append(t,n instanceof File?n.name:String(n))},Ge=(e,t,n)=>{if(Array.isArray(n)){n.forEach(n=>Ge(e,t,n));return}n!=null&&We(e,t,n instanceof Blob?n:String(n))},Ke=(e,t)=>{Object.entries(t).forEach(([t,n])=>Ge(e,t,n))},qe=(e,t)=>{if(t){if(t instanceof FormData||t instanceof URLSearchParams){for(let[n,r]of t.entries())We(e,n,r);return}Ke(e,t)}},Je=(e,t)=>{let n=new Headers(e);n.set(De,`true`);let r=document.querySelector(Le)?.content;return r&&n.set(`X-CSRFToken`,r),t instanceof URLSearchParams&&!n.has(`Content-Type`)&&n.set(`Content-Type`,N),n},Ye=(e,t,n)=>{if(e)return new URL(e,document.baseURI);if(t instanceof HTMLFormElement){let e=n?.getAttribute(`formaction`)||t.getAttribute(`action`)||window.location.href;return new URL(e,document.baseURI)}return t instanceof HTMLAnchorElement?new URL(t.href,document.baseURI):new URL(window.location.href)},Xe=(e,t)=>t?.getAttribute(`formenctype`)||e.enctype||N,Ze=e=>{if(!(e instanceof HTMLButtonElement||e instanceof HTMLInputElement))return null;let t=e.getAttribute(`name`);return t?[t,e.value]:null},Qe=(e,t)=>{let n=new FormData(e),r=Ze(t);return r&&n.append(...r),n},$e=e=>{let t=new URLSearchParams;for(let[n,r]of e.entries())r instanceof File?t.append(n,r.name):t.append(n,r);return t},et=(e,t)=>{if(e===void 0)return{payload:t,explicit:!1};if(e instanceof HTMLFormElement)return{payload:new FormData(e),explicit:!0};if(e instanceof FormData||e instanceof URLSearchParams||typeof e==`string`||e instanceof Blob||e instanceof ArrayBuffer)return{payload:e,explicit:!0};let n=new URLSearchParams;return Ke(n,e),{payload:n,explicit:!0}},tt=(e,t)=>{if(!t)return e;if(e instanceof FormData||e instanceof URLSearchParams)return qe(e,t),e;let n=new URLSearchParams;return typeof e==`string`&&n.append(`data`,e),qe(n,t),n},nt=(e,t)=>e instanceof HTMLFormElement?{payload:Qe(e,t),enctype:Xe(e,t)}:{payload:new URLSearchParams,enctype:N},rt=(e,t,n)=>t?Ue(t):e instanceof HTMLFormElement?Ue(n?.getAttribute(`formmethod`)||e.getAttribute(`method`)):`GET`,it=(e,t={})=>{let n=t.source,r=t.submitter??null,i=rt(n,t.method,r),a=Ye(e,n,r),o=nt(n,r),s=et(t.data,o.payload),c=tt(s.payload,t.extra),l={method:i,...t.cache?{cache:t.cache}:{}},u=null;return Ve.has(i)?c instanceof FormData||c instanceof URLSearchParams?$e(c).forEach((e,t)=>a.searchParams.append(t,e)):typeof c==`string`&&a.searchParams.append(`data`,c):u=c instanceof FormData&&(s.explicit||o.enctype===Be)?c:c instanceof FormData?$e(c):c,l.headers=Je(t.headers,u),u!=null&&(l.body=u),{url:a,method:i,init:l}},at=e=>e?.isConnected?e:document,ot=(e,t,n={})=>new CustomEvent(e,{bubbles:!0,composed:!0,cancelable:n.cancelable??!1,detail:t}),F=(e,t,n,r)=>at(t).dispatchEvent(ot(e,n,r)),I=new WeakMap,st=e=>{if(!e)return;let t=I.get(e)??0;I.set(e,t+1),e.setAttribute(`aria-busy`,`true`),e.setAttribute(ze,`true`)},ct=e=>{if(!e)return;let t=(I.get(e)??1)-1;if(t>0){I.set(e,t);return}I.delete(e),e.removeAttribute(`aria-busy`),e.removeAttribute(ze)},lt=e=>e.headers.get(`Content-Type`)?.toLowerCase().includes(Re)??!1,ut=async e=>{let t=e.headers.get(Ae);if(t){let n=e.headers.get(je)??`auto`;return n!==`auto`&&n!==`push`&&n!==`replace`?(h(`x-ui-request: invalid navigation history`,n),{response:e,type:`other`,url:e.url}):{response:e,type:`navigate`,url:e.url,navigation:{history:n,url:t}}}return e.status===204||e.body===null||e.headers.get(`X-Trellis-UI-Response`)===`empty`?{response:e,type:`empty`,url:e.url}:e.redirected&&!lt(e)?(window.location.assign(e.url),{response:e,type:`redirect`,url:e.url}):(h(`x-ui-request: expected an empty response`,e),{response:e,type:`other`,url:e.url})},L=new WeakMap,R=e=>{let t=e.dataset.uiStreamClient,n=Number(e.dataset.uiStreamClientExpires);return!t||Number.isFinite(n)&&n>0&&n<=Date.now()?null:t},dt=()=>{let e=document.querySelector(Me),t=e?R(e):null;return!e||!t||e.dataset.uiStreamState!==`open`?null:{token:t}},ft=e=>{let t=Number(e.dataset.uiStreamTimeout);return Number.isFinite(t)&&t>=0?t:5e3},pt=e=>{let t=document.querySelector(Me),n=t?R(t):null;if(!t)return Promise.resolve(null);if(n&&t.dataset.uiStreamState===`open`)return Promise.resolve({token:n});if(t.dataset.uiStreamState===`error`||t.dataset.uiStreamState===`disconnected`||e.aborted)return Promise.resolve(null);let r=L.get(t),i=r??new Promise(e=>{let n=n=>{window.clearTimeout(a),t.removeEventListener(Ne,r),t.removeEventListener(Pe,i),t.removeEventListener(Fe,i),e(n)},r=()=>{let e=R(t);n(e?{token:e}:null)},i=()=>n(null),a=window.setTimeout(i,ft(t));t.addEventListener(Ne,r,{once:!0}),t.addEventListener(Pe,i,{once:!0}),t.addEventListener(Fe,i,{once:!0})}).finally(()=>{L.delete(t)});return r||L.set(t,i),new Promise(t=>{let n=()=>t(null);e.addEventListener(`abort`,n,{once:!0}),i.then(r=>{e.removeEventListener(`abort`,n),t(r)})})},mt=async e=>{let t=dt();if(t)return t;let n=document.querySelector(Me);if(!n)return null;if(!R(n)){n.dispatchEvent(new CustomEvent(Ie));let e=dt();if(e)return e}return pt(e)},ht=(e,t)=>{if(!t)return{signal:e.signal,cleanup:()=>void 0};let n=()=>e.abort(t.reason);return t.aborted?n():t.addEventListener(`abort`,n,{once:!0}),{signal:e.signal,cleanup:()=>t.removeEventListener(`abort`,n)}},gt=(e,t)=>t.aborted||e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`,_t=async(e,t,n={})=>{let r=n.source,i=new AbortController,a=n.requestId??crypto.randomUUID(),o=it(t,n),s=ht(i,n.signal),c=s.signal;o.init.signal=c,o.init.headers.set(ke,a);let l=dt()??await mt(c);if(c.aborted)return s.cleanup(),{requestId:a,response:null,type:`aborted`,url:o.url.toString()};if(!l)return s.cleanup(),{requestId:a,response:null,type:c.aborted?`aborted`:`unavailable`,url:o.url.toString()};o.init.headers.set(Oe,l.token);let u={source:r??document,url:o.url.toString(),method:o.method,requestInit:o.init,requestId:a,controller:i,signal:c};if(!F(`ui:request:before`,r,u,{cancelable:!0}))return s.cleanup(),{requestId:a,response:null,type:`cancelled`,url:o.url.toString()};st(r),F(`ui:request:start`,r,u);try{let e=await fetch(o.url.toString(),o.init),t=await ut(e);u.response=e,u.responseType=t.type,e.ok&&t.type!==`other`||t.type===`redirect`?F(`ui:request:success`,r,u):F(`ui:request:error`,r,u);let n={...t,requestId:a};return n.navigation&&He?.(n),n}catch(e){if(gt(e,c))return u.responseType=`aborted`,{requestId:a,response:null,type:`aborted`,url:o.url.toString()};throw u.error=e,F(`ui:request:error`,r,u),e}finally{s.cleanup(),ct(r),F(`ui:request:finish`,r,u)}},vt=()=>{if(!P)throw Error(`Trellis request runtime has not been registered with Alpine.`);return P},z=(e,t={})=>_t(vt(),e,t),yt=(e,t={})=>z(e,{...t,method:`GET`}),bt=(e,t={})=>z(e,{...t,method:`POST`}),xt=(e,t={})=>z(e,{...t,method:`PUT`}),St=(e,t={})=>z(e,{...t,method:`DELETE`}),Ct=e=>{P=e},wt=e=>{He=e},Tt=`__trellis`,Et=`[data-ui-scroll-restoration]`,Dt=20,Ot=100,kt=!1,B=null,V=0,At=!1,H=null,U=new Map,W=new Set,G=new Map,K=()=>crypto.randomUUID(),jt=()=>({containers:{},window:{x:0,y:0}}),Mt=e=>e.getAttribute(`data-ui-scroll-restoration`)?.trim()||e.id||null,q=()=>{let e={};return document.querySelectorAll(Et).forEach(t=>{let n=Mt(t);n&&(e[n]={x:t.scrollLeft,y:t.scrollTop})}),{containers:e,window:{x:window.scrollX,y:window.scrollY}}},J=e=>{if(!n(e))return null;let t=e[Tt];if(!n(t))return null;let r=t.navigate;return!n(r)||typeof r.id!=`string`||typeof r.index!=`number`||typeof r.url!=`string`||!n(r.scroll)?null:r},Nt=e=>{let t=n(window.history.state)?window.history.state:{},r=n(t.__trellis)?t[Tt]:{};return{...t,[Tt]:{...r,navigate:e}}},Y=(e,t=e.url)=>{window.history.replaceState(Nt(e),``,t)},Pt=()=>{let e=J(window.history.state);if(!e)return;let t=q();U.set(e.id,t),Y({...e,scroll:t})},Ft=()=>{H!==null&&(cancelAnimationFrame(H),H=null),Pt()},It=()=>{let e=J(window.history.state);e&&(U.set(e.id,q()),H===null&&(H=requestAnimationFrame(()=>{H=null;let e=J(window.history.state);if(!e)return;let t=U.get(e.id);t&&Y({...e,scroll:t})})))},Lt=e=>{requestAnimationFrame(()=>{window.scrollTo({left:e.window.x,top:e.window.y,behavior:`instant`}),document.querySelectorAll(Et).forEach(t=>{let n=Mt(t),r=n?e.containers[n]:void 0;t.scrollTo({left:r?.x??0,top:r?.y??0,behavior:`instant`})})})},X=(e,t,n=!1)=>{let r=t.source?.isConnected?t.source:document;return r.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:n,composed:!0,detail:{history:t.history,source:r,url:t.destination}}))},Rt=e=>{for(G.set(e.requestId,e);G.size>Dt;){let e=G.keys().next().value;if(!e)break;G.delete(e)}},zt=e=>{for(W.add(e);W.size>Ot;){let e=W.values().next().value;if(!e)break;W.delete(e)}},Bt=()=>{B&&=(zt(B.requestId),B.controller.abort(`Superseded by a newer Trellis navigation`),null)},Vt=()=>{Bt(),G.forEach(e=>zt(e.requestId)),G.clear()},Z=e=>{window.location.assign(e.href)},Ht=e=>{let t=new URL(e,document.baseURI);return t.origin===window.location.origin?t:null},Ut=e=>{Ft();let t={id:K(),index:V+1,scroll:jt(),url:e.destination.href};return V=t.index,window.history.pushState(Nt(t),``,e.destination),e.entryId=t.id,t},Wt=e=>{let t={id:K(),index:V,scroll:jt(),url:e.destination.href};return Y(t,e.destination),e.entryId=t.id,t},Gt=e=>{if(e.disposition===`replace`)return!0;if(e.disposition===`push`)return!1;let t=new URL(window.location.href);return t.origin===e.destination.origin&&t.pathname===e.destination.pathname},Kt=(e,t)=>{t?.type===`aborted`||t?.type===`cancelled`||t?.type===`redirect`||Z(e.destination)},qt=(e,t,n)=>{if(W.has(e.requestId))return;if(t.type!==`empty`){Kt(e,t);return}let r=n??(Gt(e)?Wt(e):Ut(e));if(n&&e.destination.href!==n.url){let t={...n,url:e.destination.href};Y(t,e.destination),e.entryId=t.id}Lt(r.scroll),X(`ui:navigated`,e)},Jt=(e,t,n)=>{let r={controller:new AbortController,destination:t,entryId:n.restoredState?.id??null,history:n.history,disposition:n.disposition??`auto`,requestId:K(),...n.requestOptions?{requestOptions:n.requestOptions}:{},...n.source?{source:n.source}:{}};if(n.preflight!==!1&&!X(`ui:navigate`,r,!0))return Promise.resolve();Vt(),B=r,X(`ui:navigating`,r);let i=new Headers(r.requestOptions?.headers);i.set(`X-Trellis-Navigation`,r.history?`restore`:`navigate`);let a=!0,o=async()=>{let t=a?r.requestOptions:void 0,n=a?r.source:void 0;a=!1;let s=await _t(e,r.destination,{...t,headers:i,method:`GET`,requestId:r.requestId,signal:r.controller.signal,...n?{source:n}:{}});if(r.destination=new URL(s.url,document.baseURI),!s.navigation)return s;let c=Ht(s.navigation.url);return c?(r.destination=c,s.navigation.history!==`auto`&&(r.disposition=s.navigation.history),o()):(Z(new URL(s.navigation.url,document.baseURI)),{...s,type:`redirect`})};return o().then(e=>{B?.requestId!==r.requestId&&!G.has(r.requestId)||qt(r,e,n.restoredState)}).catch(e=>{r.controller.signal.aborted||(h(`x-ui-request.navigate: restoration failed`,e),Kt(r))}).finally(()=>{B?.requestId===r.requestId&&(B=null),W.has(r.requestId)||Rt(r)})},Yt=()=>{let e=J(window.history.state);e?V=e.index:Y({id:K(),index:0,scroll:q(),url:window.location.href}),`scrollRestoration`in window.history&&(window.history.scrollRestoration=`manual`)},Xt=()=>{if(J(window.history.state))return;let e={id:K(),index:V+1,scroll:q(),url:window.location.href};V=e.index,Y(e)},Zt=e=>{kt||(kt=!0,Yt(),Te(e=>!e||!W.has(e)),Ee((e,t)=>t.matches(`[data-ui-stream]`)&&!!(e&&(B?.requestId===e||G.has(e)))),wt(t=>{if(!t.navigation)return!1;if(W.has(t.requestId)||B?.requestId===t.requestId)return!0;let n=Ht(t.navigation.url);return n?(Jt(e,n,{history:!1,disposition:t.navigation.history}),!0):(Z(new URL(t.navigation.url,document.baseURI)),!0)}),window.addEventListener(`scroll`,It,{passive:!0}),document.addEventListener(`scroll`,It,{capture:!0,passive:!0}),window.addEventListener(`pagehide`,Ft),window.addEventListener(`hashchange`,Xt),window.addEventListener(`popstate`,t=>{if(At){At=!1;return}let n=J(t.state);if(!n){Xt();return}let r=U.get(n.id),i=r?{...n,scroll:r}:n,a=Ht(n.url);if(!a||a.href!==window.location.href){Z(new URL(window.location.href));return}let o=V;if(V=n.index,!X(`ui:navigate`,{controller:new AbortController,destination:a,entryId:n.id,history:!0,disposition:`replace`,requestId:K()},!0)){At=!0,window.history.go(o-n.index),V=o;return}Jt(e,a,{history:!0,preflight:!1,restoredState:i})}))},Qt=(e,t,n,r)=>{let{history:i=`auto`,...a}=r??{};return Jt(e,new URL(t,document.baseURI),{history:!1,disposition:i,requestOptions:a,...n?{source:n}:{}})},Q={activeRequests:0},$t=!1,en=!1,$={},tn=null,nn=(e,t={})=>{let{history:n,navigate:r=!1,...i}=t;if(!r)return yt(e,i);if(!tn)throw Error(`Trellis UI runtime has not been registered with Alpine.`);let{source:a,...o}=i;return Qt(tn,e,a,{...o,...n?{history:n}:{}})},rn=(e,t)=>(n,r={})=>{let{navigate:i=!1,...a}=r;return i&&h(`$ui.${e}: navigate is only supported for GET requests`),t(n,a)},an={get:nn,post:rn(`post`,bt),put:rn(`put`,xt),delete:rn(`delete`,St),get motion(){if(!$.motion)throw Error(`Trellis Motion capability is not registered.`);return $.motion},get sortable(){if(!$.sortable)throw Error(`Trellis Sortable capability is not registered.`);return $.sortable},get isFetching(){return Q.activeRequests>0}},on=()=>{en||(en=!0,document.addEventListener(`ui:request:start`,()=>{Q.activeRequests+=1}),document.addEventListener(`ui:request:finish`,()=>{Q.activeRequests=Math.max(0,Q.activeRequests-1)}))},sn=e=>{tn=e,$t||=(Q=e.reactive(Q),!0),on(),e.magic(`ui`,()=>an)},cn=e=>{$.motion=e},ln=e=>{$.sortable=e};export{Qt as a,_t as c,h as d,u as f,o as g,l as h,an as i,we as l,m,cn as n,Zt as o,d as p,ln as r,Ct as s,sn as t,ie as u};
|
|
4
|
-
//# sourceMappingURL=ui-BHBokFNi.js.map
|