@vireo-ai/trellis-ui 0.1.55 → 0.1.57
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/README.md +1 -23
- package/package.json +3 -2
- package/packages/client/src/components/data-grid/styles.css +0 -16
- package/packages/client/src/components/panels/styles.css +2 -10
- package/packages/client/src/styles/components.css +1 -1
- package/packages/client/src/styles/generated/theme-fonts.css +1 -1
- package/packages/client/src/styles/generated/theme-palette.css +275 -59
- package/packages/client/src/styles/generated/theme-runtime.css +1007 -24
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/recipes/selection.css +62 -12
- package/packages/client/src/styles/theme-support.css +23 -2
- package/packages/client/types/components/accordion/index.d.ts +3 -3
- package/packages/client/types/components/accordion/machine.d.ts +11 -7
- package/packages/client/types/components/app/contract.d.ts +5 -5
- package/packages/client/types/components/badge/contract.d.ts +1 -1
- package/packages/client/types/components/box/contract.d.ts +5 -5
- package/packages/client/types/components/button/contract.d.ts +1 -1
- package/packages/client/types/components/card/contract.d.ts +2 -2
- package/packages/client/types/components/common.d.ts +3 -3
- package/packages/client/types/components/container/contract.d.ts +4 -4
- package/packages/client/types/components/date-picker/contract.d.ts +4 -4
- package/packages/client/types/components/date-picker/machine.d.ts +4 -4
- package/packages/client/types/components/flex/contract.d.ts +4 -4
- package/packages/client/types/components/frame/contract.d.ts +5 -5
- package/packages/client/types/components/grid/contract.d.ts +4 -4
- package/packages/client/types/components/input/contract.d.ts +2 -2
- package/packages/client/types/components/layout.d.ts +5 -5
- package/packages/client/types/components/menu/contract.d.ts +4 -2
- package/packages/client/types/components/modal/contract.d.ts +5 -4
- package/packages/client/types/components/modal/index.d.ts +1 -1
- package/packages/client/types/components/section/contract.d.ts +4 -4
- package/packages/client/types/components/select/contract.d.ts +3 -3
- package/packages/client/types/components/select/machine.d.ts +4 -4
- package/packages/client/types/components/sidebar/contract.d.ts +3 -3
- package/packages/client/types/components/stack/contract.d.ts +4 -4
- package/packages/client/types/components/table/contract.d.ts +1 -1
- package/packages/client/types/components/textarea/contract.d.ts +1 -1
- package/packages/client/types/components/tooltip/contract.d.ts +2 -2
- package/packages/client/types/runtime/engine/stream.d.ts +1 -0
- package/packages/client/types/runtime/focus-scope.d.ts +5 -6
- package/packages/client/types/runtime/focus.d.ts +9 -0
- package/packages/client/types/runtime/index.d.ts +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +3278 -265
- 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 +395 -379
- 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/shortcut.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-C3q5Xzv2.js → capability-motion-BGVnZE_T.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C3q5Xzv2.js.map → capability-motion-BGVnZE_T.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-ehmPfdn1.js +5 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-Bh6pkITu.js.map → capability-sortable-ehmPfdn1.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-crMEr9_l.js → controller-CalXJ5hB.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-crMEr9_l.js.map → controller-CalXJ5hB.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DOHj5fa1.js → core-Ybm_WmKr.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DOHj5fa1.js.map → core-Ybm_WmKr.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BAghaHV-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BAghaHV-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D8iA1e6i.js → entry.generated-BQNpmLZO.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D8iA1e6i.js.map → entry.generated-BQNpmLZO.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BREj4oHG.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BREj4oHG.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CvL196IN.js → entry.generated-COp9wMCd.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CvL196IN.js.map → entry.generated-COp9wMCd.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BmVGptdJ.js → entry.generated-CVOYoh61.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BmVGptdJ.js.map → entry.generated-CVOYoh61.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_ObpRjR.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_ObpRjR.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BLduYCHm.js → entry.generated-C_SxTqg5.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BLduYCHm.js.map → entry.generated-C_SxTqg5.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ollD3I52.js → entry.generated-Cb-VMAE1.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ollD3I52.js.map → entry.generated-Cb-VMAE1.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dcm3s3ey.js → entry.generated-D2es_Wi2.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dcm3s3ey.js.map → entry.generated-D2es_Wi2.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6ai6meC.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6ai6meC.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DYQxGle9.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DYQxGle9.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_jeOgRf.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_jeOgRf.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVOBR4CK.js → entry.generated-DaXIKPN9.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVOBR4CK.js.map → entry.generated-DaXIKPN9.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C3y5qBcc.js → entry.generated-EqHVGr1d.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C3y5qBcc.js.map → entry.generated-EqHVGr1d.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-z3EbXrD0.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-z3EbXrD0.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-XeJ05afl.js → flip-Bzn312Nc.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-XeJ05afl.js.map → flip-Bzn312Nc.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-CbwLBhMt.js → motion-DI5H1Js0.js} +3 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-CbwLBhMt.js.map → motion-DI5H1Js0.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-C9PrQrca.js → styles-CQDZhwd_.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-C9PrQrca.js.map → styles-CQDZhwd_.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.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/field.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.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/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/tabs.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +184 -170
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +11 -11
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +11 -11
- package/packages/client/src/styles/layout-participation.css +0 -17
- package/packages/client/types/runtime/focus-handoff.d.ts +0 -12
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BwvEqEbL.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BwvEqEbL.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bh6pkITu.js +0 -5
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-BbxUBQFs.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-BbxUBQFs.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B7n4iFyw.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B7n4iFyw.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BeNK2EFl.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BeNK2EFl.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bq2KAnfO.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bq2KAnfO.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-iMJrYzAB.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-iMJrYzAB.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js +0 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-DjKX5KuB.js","names":[],"sources":["../../../../../../../../client/src/runtime/shell-breakpoint.ts","../../../../../../../../client/src/components/sidebar/contract.ts","../../../../../../../../client/src/components/sidebar/machine.ts","../../../../../../../../client/src/components/sidebar/styles.ts","../../../../../../../../client/src/components/sidebar/index.ts","../../../../../../../../client/src/components/sidebar/entry.generated.ts"],"sourcesContent":["const shellBreakpointPixels = (reference: HTMLElement): number => {\n const value = getComputedStyle(reference).getPropertyValue('--ui-shell-sidebar-breakpoint');\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {shellBreakpointPixels};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ELEVATION_REFERENCES,\n SURFACE_REFERENCES,\n type ElevationReference,\n type SurfaceReference,\n} from '../common';\n\nconst SIDEBAR_SIDES = ['left', 'right'] as const;\nconst SIDEBAR_PLACEMENTS = ['side', 'top'] as const;\nconst SIDEBAR_MOBILE_PRESENTATIONS = ['drawer', 'fullscreen'] as const;\nconst SIDEBAR_AS = ['div', 'aside', 'header'] as const;\nconst SIDEBAR_COLLAPSES = ['none', 'mobile', 'desktop', 'both'] as const;\nconst SIDEBAR_TOGGLE_ACTIONS = ['toggle', 'open', 'close', 'stash', 'expand'] as const;\nconst SIDEBAR_ITEM_AS = ['a', 'button'] as const;\nconst SIDEBAR_ITEM_VARIANTS = ['ghost', 'surface'] as const;\nconst SIDEBAR_ITEM_COLORS = ['neutral', 'accent'] as const;\nconst SIDEBAR_SURFACES = SURFACE_REFERENCES;\nconst SIDEBAR_ELEVATIONS = ELEVATION_REFERENCES;\n\nconst sidebarSchema = {\n as: oneOf(SIDEBAR_AS, 'div'),\n id: string.default('ui-sidebar'),\n placement: oneOf(SIDEBAR_PLACEMENTS, 'side'),\n mobilePresentation: oneOf(SIDEBAR_MOBILE_PRESENTATIONS, 'drawer'),\n side: oneOf(SIDEBAR_SIDES, 'left'),\n surface: oneOf(SIDEBAR_SURFACES, 'inherit'),\n elevation: oneOf(SIDEBAR_ELEVATIONS, 'none'),\n drawerElevation: oneOf(SIDEBAR_ELEVATIONS, '2'),\n divider: bool.default(true),\n sticky: bool.default(true),\n collapse: oneOf(SIDEBAR_COLLAPSES, 'mobile'),\n open: bool,\n stashed: bool,\n persist: bool.default(true),\n edgeReveal: bool.default(true),\n resizable: bool,\n class: string,\n};\n\nconst sidebarItemSchema = {\n as: oneOf(SIDEBAR_ITEM_AS, 'a'),\n variant: oneOf(SIDEBAR_ITEM_VARIANTS, 'ghost'),\n color: oneOf(SIDEBAR_ITEM_COLORS, 'neutral'),\n href: string,\n current: bool,\n disabled: bool,\n icon: string,\n iconTrailing: string,\n badge: string,\n class: string,\n};\n\nconst sidebarGroupSchema = {\n heading: string,\n expandable: bool,\n expanded: bool.default(true),\n icon: string,\n class: string,\n};\n\nconst sidebarToggleSchema = {\n target: string,\n icon: string.default('side_panel'),\n label: string.default('Toggle sidebar'),\n action: oneOf(SIDEBAR_TOGGLE_ACTIONS, 'toggle'),\n class: string,\n};\n\nconst sidebarPanelSchema = {\n class: string,\n};\n\nconst sidebarNavSchema = {\n label: string,\n labelled: string,\n class: string,\n};\n\ntype SidebarProps = SchemaToProps<typeof sidebarSchema>;\ntype SidebarAs = typeof SIDEBAR_AS[number];\ntype SidebarToggleAction = typeof SIDEBAR_TOGGLE_ACTIONS[number];\ntype SidebarCollapse = typeof SIDEBAR_COLLAPSES[number];\ntype SidebarItemColor = typeof SIDEBAR_ITEM_COLORS[number];\ntype SidebarItemVariant = typeof SIDEBAR_ITEM_VARIANTS[number];\ntype SidebarSide = typeof SIDEBAR_SIDES[number];\ntype SidebarPlacement = typeof SIDEBAR_PLACEMENTS[number];\ntype SidebarMobilePresentation = typeof SIDEBAR_MOBILE_PRESENTATIONS[number];\ntype SidebarSurface = SurfaceReference;\ntype SidebarElevation = ElevationReference;\n\nexport {\n SIDEBAR_AS,\n SIDEBAR_COLLAPSES,\n SIDEBAR_ITEM_AS,\n SIDEBAR_ITEM_COLORS,\n SIDEBAR_ITEM_VARIANTS,\n SIDEBAR_ELEVATIONS,\n SIDEBAR_SIDES,\n SIDEBAR_PLACEMENTS,\n SIDEBAR_MOBILE_PRESENTATIONS,\n SIDEBAR_TOGGLE_ACTIONS,\n SIDEBAR_SURFACES,\n sidebarGroupSchema,\n sidebarItemSchema,\n sidebarNavSchema,\n sidebarPanelSchema,\n sidebarSchema,\n sidebarToggleSchema,\n};\nexport type {\n SidebarAs,\n SidebarCollapse,\n SidebarElevation,\n SidebarItemColor,\n SidebarItemVariant,\n SidebarMobilePresentation,\n SidebarPlacement,\n SidebarProps,\n SidebarSide,\n SidebarSurface,\n SidebarToggleAction,\n};\n","import {createMachine, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SidebarPlacement, SidebarProps} from './contract';\n\ntype SidebarMode = 'mobile' | 'desktop';\ntype SidebarPresentation = 'drawer' | 'layout';\ntype SidebarTarget = 'mobileClosed' | 'mobileOpen' | 'desktopExpanded' | 'desktopStashed' | 'desktopDrawer' | 'desktopTop';\n\ntype SidebarContext = {\n responsive: {mode: SidebarMode};\n layout: {desktopStashed: boolean; desktopDrawerOpen: boolean; width: string; height: string};\n transition: {target: SidebarTarget; presentation: SidebarPresentation};\n};\n\ntype SidebarMachineEffects = {\n prepareOpen(scope: MachineScope<SidebarContext, SidebarProps>): void;\n finishOpen(): void;\n prepareClose(scope: MachineScope<SidebarContext, SidebarProps>): void;\n finishClose(): void;\n sync(): void;\n syncProps(): void;\n};\n\ntype CreateSidebarMachineOptions = {\n props: SidebarProps;\n mode: SidebarMode;\n desktopStashed: boolean;\n effects: SidebarMachineEffects;\n};\n\nconst projectTransition = ({context}: {context: Readonly<SidebarContext>}) => ({\n mode: context.responsive.mode,\n presentation: context.transition.presentation,\n width: context.layout.width,\n height: context.layout.height,\n});\n\ntype SidebarTransitionData = ReturnType<typeof projectTransition>;\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: projectTransition,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: projectTransition,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'closing'>);\n\nconst sidebarHooks = [openingHook, closingHook] as const;\n\nconst targetFrom = (event: MachineEventObject, fallback: SidebarTarget): SidebarTarget => (\n typeof event.target === 'string' ? event.target as SidebarTarget : fallback\n);\nconst presentationFrom = (event: MachineEventObject): SidebarPresentation => event.presentation === 'layout' ? 'layout' : 'drawer';\n\nconst createSidebarMachine = ({props, mode, desktopStashed, effects}: CreateSidebarMachineOptions): Machine<SidebarContext, SidebarProps> => {\n const initial: SidebarTarget = mode === 'mobile'\n ? props.open ? 'mobileOpen' : 'mobileClosed'\n : props.placement === 'top' ? 'desktopTop' : desktopStashed ? 'desktopStashed' : 'desktopExpanded';\n\n const beginOpen = {target: 'opening', reduce: 'beginOpen', effects: 'prepareOpen'} as const;\n const beginClose = {target: 'closing', reduce: 'beginClose', effects: 'prepareClose'} as const;\n const syncProps = {reduce: 'replaceProps', effects: 'syncProps'} as const;\n\n return createMachine<SidebarContext, SidebarProps>({\n initial,\n on: {\n MODE: [\n {target: 'desktopTop', guard: 'toTop', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopDrawer', guard: 'toDesktopDrawer', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopStashed', guard: 'toDesktopStashed', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopExpanded', guard: 'toDesktop', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileOpen', guard: 'toMobileOpen', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileClosed', reduce: 'setMode', effects: 'sync'},\n ],\n RESIZE: {reduce: 'resize', effects: 'sync'},\n },\n states: {\n mobileClosed: {tags: ['mobile', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n mobileOpen: {tags: ['mobile', 'visible', 'expanded', 'open'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, PROPS_CHANGED: syncProps}},\n desktopExpanded: {tags: ['desktop', 'visible', 'expanded', 'open', 'layout'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, OPEN: {}, EXPAND: {}, PROPS_CHANGED: syncProps}},\n desktopStashed: {tags: ['desktop', 'stashed', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, TOGGLE: beginOpen, PROPS_CHANGED: syncProps}},\n desktopDrawer: {tags: ['desktop', 'stashed', 'visible', 'expanded', 'open', 'drawer'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n desktopTop: {tags: ['desktop', 'top', 'visible', 'expanded', 'open', 'layout'], on: {PROPS_CHANGED: syncProps}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n CLOSE: beginClose,\n STASH: beginClose,\n TOGGLE: beginClose,\n PROPS_CHANGED: syncProps,\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n CLOSING_ERROR: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n OPEN: beginOpen,\n EXPAND: beginOpen,\n TOGGLE: beginOpen,\n PROPS_CHANGED: syncProps,\n },\n },\n },\n }, {\n props,\n context: {\n responsive: {mode},\n layout: {\n desktopStashed,\n desktopDrawerOpen: false,\n width: 'var(--spacing-sidebar-width)',\n height: '',\n },\n transition: {target: initial, presentation: initial === 'desktopExpanded' || initial === 'desktopTop' ? 'layout' : 'drawer'},\n },\n reducers: {\n beginOpen: ({context, event}) => {\n const target = targetFrom(event, 'mobileOpen');\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopDrawer'\n ? true\n : target === 'desktopExpanded' ? false : context.layout.desktopStashed,\n desktopDrawerOpen: target === 'desktopDrawer'\n || (target === 'mobileOpen' && context.layout.desktopStashed),\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n beginClose: ({context, event}) => {\n const target = targetFrom(event, 'mobileClosed');\n const closesDesktopDrawer = target === 'desktopStashed'\n || (target === 'mobileClosed' && context.layout.desktopStashed);\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopStashed' ? true : context.layout.desktopStashed,\n desktopDrawerOpen: closesDesktopDrawer ? false : context.layout.desktopDrawerOpen,\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n setMode: ({context, event}) => ({context: {...context, responsive: {mode: event.mode === 'desktop' ? 'desktop' : 'mobile'}}}),\n replaceProps: ({context, event}) => ({\n props: event.props as SidebarProps,\n context,\n }),\n resize: ({context, event}) => ({context: {\n ...context,\n layout: {\n ...context.layout,\n width: typeof event.width === 'string' ? event.width : context.layout.width,\n height: typeof event.height === 'string' ? event.height : context.layout.height,\n },\n }}),\n },\n guards: {\n toTop: ({event}) => event.mode === 'desktop' && event.placement === 'top',\n toDesktopDrawer: ({event}) => event.mode === 'desktop' && event.stashed === true && event.open === true,\n toDesktopStashed: ({event}) => event.mode === 'desktop' && event.stashed === true,\n toDesktop: ({event}) => event.mode === 'desktop',\n toMobileOpen: ({event}) => event.mode === 'mobile' && event.open === true,\n targetsMobileOpen: ({context}) => context.transition.target === 'mobileOpen',\n targetsMobileClosed: ({context}) => context.transition.target === 'mobileClosed',\n targetsDesktopDrawer: ({context}) => context.transition.target === 'desktopDrawer',\n targetsDesktopTop: ({context}) => context.transition.target === 'desktopTop',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n sync: effects.sync,\n syncProps: effects.syncProps,\n },\n });\n};\n\nexport {createSidebarMachine, sidebarHooks};\nexport type {CreateSidebarMachineOptions, SidebarContext, SidebarMachineEffects, SidebarMode, SidebarPresentation, SidebarTarget};\n","import {defineStyles} from '../../runtime';\nimport {elevationReferenceClasses} from '../common';\n\nconst SIDEBAR_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-resting-elevation');\nconst SIDEBAR_DRAWER_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-drawer-elevation');\n\nconst sidebarStyles = defineStyles({definition: {\n component: 'ui.sidebar',\n parts: {\n root: {\n base: [\n 'fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md',\n 'border-separator outline-none',\n 'data-[drawer-state=open]:bg-surface',\n 'data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:data-[desktop-state=expanded]:inset-y-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:w-full data-[responsive-mode=desktop]:data-[desktop-state=expanded]:rounded-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto',\n '[grid-area:sidebar]',\n 'data-[placement=top]:data-[responsive-mode=desktop]:relative data-[placement=top]:data-[responsive-mode=desktop]:inset-auto data-[placement=top]:data-[responsive-mode=desktop]:z-auto data-[placement=top]:data-[responsive-mode=desktop]:h-[var(--ui-sidebar-height,auto)] data-[placement=top]:data-[responsive-mode=desktop]:w-full data-[placement=top]:data-[responsive-mode=desktop]:max-w-none data-[placement=top]:data-[responsive-mode=desktop]:translate-x-0 data-[placement=top]:data-[responsive-mode=desktop]:flex-row data-[placement=top]:data-[responsive-mode=desktop]:overflow-visible',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:flex-1',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]>[data-ui-scroll-area]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:items-center',\n ],\n variants: {\n elevation: SIDEBAR_ELEVATION_CLASSES,\n drawerElevation: SIDEBAR_DRAWER_ELEVATION_CLASSES,\n mobilePresentation: {\n drawer: '',\n fullscreen: [\n '[&:not([data-responsive-mode=desktop])]:inset-0',\n '[&:not([data-responsive-mode=desktop])]:h-dvh',\n '[&:not([data-responsive-mode=desktop])]:w-full',\n '[&:not([data-responsive-mode=desktop])]:max-w-none',\n '[&:not([data-responsive-mode=desktop])]:rounded-none',\n '[&:not([data-responsive-mode=desktop])]:border-0',\n ].join(' '),\n },\n divider: {\n true: 'data-[placement=side][data-side=left]:border-r-edge-divider data-[placement=side][data-side=right]:border-l-edge-divider data-[placement=top]:border-b-edge-divider',\n false: '',\n },\n side: {\n left: 'left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto',\n right: 'right-2 border-l-edge-divider data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-x-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:right-auto',\n },\n sticky: {\n true: 'data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen',\n false: 'data-[responsive-mode=desktop]:relative data-[responsive-mode=desktop]:h-auto data-[responsive-mode=desktop]:data-[sticky=false]:relative data-[responsive-mode=desktop]:data-[sticky=False]:relative data-[responsive-mode=desktop]:data-[sticky=false]:h-auto data-[responsive-mode=desktop]:data-[sticky=False]:h-auto',\n },\n },\n defaults: {\n elevation: 'none',\n drawerElevation: '2',\n mobilePresentation: 'drawer',\n divider: true,\n side: 'left',\n sticky: true,\n },\n },\n header: {\n base: 'flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block',\n },\n content: {\n base: [\n 'min-h-0 flex-1 overflow-hidden',\n ],\n },\n contentInner: {\n base: [\n 'grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n '[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto',\n ],\n },\n footer: {\n base: 'grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n },\n nav: {\n base: 'grid gap-sidebar-content-gap',\n },\n item: {\n base: [\n 'group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-control-md px-2',\n 'border border-transparent text-left text-sm font-medium outline-none',\n 'cursor-default',\n 'data-disabled:pointer-events-none',\n ],\n variants: {\n variant: {\n ghost: '',\n surface: 'data-current:border-transparent data-current:shadow-none',\n },\n color: {\n neutral: '',\n accent: '',\n },\n withActions: {\n true: 'pr-9',\n false: '',\n },\n },\n defaults: {\n variant: 'ghost',\n color: 'neutral',\n withActions: false,\n },\n },\n itemRow: {\n base: 'group/sidebar-item-row relative min-w-0',\n },\n itemIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon',\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemBadge: {\n base: 'ml-auto shrink-0 rounded-control-sm bg-interaction-hover px-1.5 py-0.5 text-xs text-surface-ink-muted',\n },\n itemActions: {\n base: 'absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1',\n },\n group: {\n base: 'relative grid gap-sidebar-content-gap',\n },\n groupSummary: {\n base: [\n 'block h-control-md cursor-default select-none list-none rounded-control-md text-xs font-medium text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n '[&::-webkit-details-marker]:hidden',\n ],\n variants: {\n hasActions: {\n true: '',\n false: '',\n },\n },\n defaults: {\n hasActions: false,\n },\n },\n groupSummaryInner: {\n base: 'flex h-full min-w-0 items-center gap-2 px-2',\n },\n groupHeading: {\n base: 'flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default',\n },\n groupIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90',\n },\n groupLabel: {\n base: 'min-w-0 flex-1',\n },\n groupHeadingLabel: {\n base: 'min-w-0 flex-1',\n },\n groupActions: {\n base: 'ml-auto flex shrink-0 items-center gap-1',\n },\n groupContent: {\n base: 'grid gap-sidebar-content-gap',\n },\n toggle: {\n base: [\n 'inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n ],\n },\n toggleIcon: {\n base: 'size-icon fill-current text-current',\n },\n edge: {\n base: [\n 'fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block',\n 'focus-visible:ui-focus-ring-inset',\n 'data-[state=hidden]:hidden',\n ],\n variants: {\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n resizeHandle: {\n base: [\n 'absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none border-transparent outline-none group-data-[responsive-mode=desktop]/sidebar:block',\n 'hover:border-intent-neutral-edge-hover',\n 'focus-visible:ui-focus-ring-inset',\n 'data-disabled:hidden',\n 'group-data-[placement=top]/sidebar:inset-x-0 group-data-[placement=top]/sidebar:bottom-0 group-data-[placement=top]/sidebar:top-auto group-data-[placement=top]/sidebar:h-3 group-data-[placement=top]/sidebar:w-auto group-data-[placement=top]/sidebar:cursor-row-resize group-data-[placement=top]/sidebar:border-b-edge-divider group-data-[placement=top]/sidebar:border-r-0 group-data-[placement=top]/sidebar:border-l-0',\n ],\n variants: {\n side: {\n left: 'right-0 border-r-edge-divider',\n right: 'left-0 border-l-edge-divider',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n },\n}});\n\nexport {sidebarStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineScope,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {decodeProps, type SchemaToProps} from '@client/runtime/codecs';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {type ResizeEvent} from '@client/runtime/drag-and-drop';\nimport {focusFirst, trapFocus} from '@client/runtime/focus-scope';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\nimport {shellBreakpointPixels} from '@client/runtime/shell-breakpoint';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {\n createMotionPlan,\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {stopOwnedMotion} from '@client/motion/owned';\nimport {addListener, dispatch} from '@client/utils';\nimport {sidebarSchema, sidebarToggleSchema, type SidebarProps, type SidebarToggleAction} from './contract';\nimport {\n createSidebarMachine,\n sidebarHooks,\n type SidebarContext,\n type SidebarMode,\n type SidebarTarget,\n} from './machine';\nimport {sidebarStyles} from './styles';\n\ntype SidebarTransitionName = (typeof sidebarHooks)[number]['name'];\ntype SidebarTransition<TName extends SidebarTransitionName = SidebarTransitionName> = TransitionForHook<\n Extract<(typeof sidebarHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype SidebarController = {\n readonly id: string;\n isExpanded(): boolean;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n};\n\ntype SidebarEventDetail = {id?: string; action?: SidebarToggleAction; trigger?: HTMLElement | null};\nconst togglePropsSchema = {target: sidebarToggleSchema.target, action: sidebarToggleSchema.action, class: sidebarToggleSchema.class};\ntype SidebarToggleProps = SchemaToProps<typeof togglePropsSchema>;\ntype SidebarEdgeProps = SidebarToggleProps;\n\n/** Public Alpine API for `ui.sidebar`. @public */\ninterface UiSidebarApi {\n /** Sidebar id used by external controls. */\n readonly id: string;\n /** Whether the sidebar is fully open or currently opening. */\n readonly isOpen: boolean;\n /** Whether the observed shell is at or above the theme-generated shell breakpoint. */\n readonly isDesktop: boolean;\n /** Whether side placement is persistently stashed on desktop. */\n readonly isStashed: boolean;\n /** Current side-placement track width. */\n readonly width: string;\n /** Current top-placement track height. */\n readonly height: string;\n /** Opens the responsive drawer or temporarily reveals a stashed desktop sidebar. */\n open(event?: Event): void;\n /** Closes the responsive drawer or stashes an expanded desktop sidebar. */\n close(event?: Event): void;\n /** Reverses the current visibility intent, including an in-flight transition. */\n toggle(event?: Event): void;\n /** Permanently removes side placement from the desktop layout track. */\n stash(event?: Event): void;\n /** Permanently restores side placement to the desktop layout track. */\n expand(event?: Event): void;\n}\n\ntype SidebarData = AlpineMachine<SidebarContext, SidebarProps, typeof sidebarHooks> & UiSidebarApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n isExpanded(): boolean;\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle;\n};\n\ntype SidebarMotionTransition = MotionTransitionSubject & Readonly<{\n data: {mode: SidebarMode; presentation: 'drawer' | 'layout'};\n to: string;\n}>;\n\nconst controllers = new Set<SidebarController>();\n\nconst eventDetail = (event: Event): SidebarEventDetail => event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as SidebarEventDetail\n : {};\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: SidebarToggleAction) => (event: Event): void => {\n if (event.target instanceof Element && event.target.hasAttribute('data-ui-sidebar')) return;\n const detail = eventDetail(event);\n controllers.forEach((controller) => {\n if (!detail.id || detail.id === controller.id) controller.perform(detail.action ?? action, detail.trigger);\n });\n };\n document.addEventListener('ui:sidebar-open', route('open'));\n document.addEventListener('ui:sidebar-close', route('close'));\n document.addEventListener('ui:sidebar-toggle', route('toggle'));\n registered = true;\n };\n})();\n\nconst UiSidebar = (): TrellisAlpineComponent<SidebarData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupManager;\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let releaseScrollLock: (() => void) | null = null;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Sidebar has not been initialized.');\n return rootEl;\n };\n const appEl = (): HTMLElement | null => root().closest<HTMLElement>('[data-ui-app]');\n const backdropEl = (): HTMLElement | null => appEl()?.querySelector<HTMLElement>('[data-ui-app-backdrop]') ?? null;\n const currentProps = (): Readonly<SidebarProps> => bridge.getSnapshot().props;\n const context = (): Readonly<SidebarContext> => bridge.getSnapshot().context;\n const target = (): SidebarTarget => context().transition.target;\n const isDrawer = (): boolean => bridge.hasTag('visible') && (\n bridge.hasTag('drawer')\n || responsiveMode === 'mobile'\n || (bridge.hasTag('transitioning') && context().transition.presentation === 'drawer')\n );\n const isModalDrawer = (): boolean => isDrawer() && responsiveMode === 'mobile';\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isMobileDrawerClosing = (): boolean => responsiveMode === 'mobile' && bridge.matches('closing');\n\n const storageKey = (): string => `trellis-ui-sidebar:${root().id || currentProps().id}:stashed`;\n const storedStashed = (props: SidebarProps): boolean | null => {\n if (!props.persist) return null;\n try {\n const value = localStorage.getItem(`trellis-ui-sidebar:${root().id || props.id}:stashed`);\n return value === null ? null : value === 'true';\n } catch { return null; }\n };\n const persist = (): void => {\n const props = currentProps();\n if (!props.persist || props.placement === 'top') return;\n try { localStorage.setItem(storageKey(), context().layout.desktopStashed ? 'true' : 'false'); } catch { /* storage is optional */ }\n };\n const setCanvasTransitioning = (active: boolean): void => {\n const app = appEl();\n if (active) app?.setAttribute('data-sidebar-transitioning', 'true');\n else app?.removeAttribute('data-sidebar-transitioning');\n };\n\n const restoreFocus = (): void => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !root().contains(active)) return;\n const fallback = activeTrigger ?? Array.from(document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle]'))\n .find((el) => !root().contains(el) && (!el.dataset.target || el.dataset.target === root().id));\n if (fallback && document.contains(fallback)) fallback.focus({preventScroll: true});\n else active.blur();\n };\n\n const syncToggles = (): void => {\n const expanded = isExpanded();\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]').forEach((el) => {\n if (el.dataset.target && el.dataset.target !== root().id) return;\n if (!el.matches('[data-ui-sidebar-edge]')) el.dataset.state = expanded ? 'open' : 'closed';\n if (el.matches('[data-ui-sidebar-toggle], [data-ui-sidebar-edge]')) {\n el.setAttribute('aria-controls', root().id);\n el.setAttribute('aria-expanded', String(expanded));\n }\n });\n };\n\n const sync = ({reflectControlled = true}: {reflectControlled?: boolean} = {}): void => {\n const props = currentProps();\n const visible = bridge.hasTag('visible');\n const expanded = isExpanded();\n const stashed = context().layout.desktopStashed;\n const drawer = isDrawer();\n const el = root();\n if (reflectControlled) {\n if (responsiveMode === 'mobile') {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'open', value: expanded});\n } else {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'stashed', value: stashed});\n }\n }\n el.dataset.state = expanded ? 'open' : 'closed';\n el.dataset.mobileState = responsiveMode === 'mobile' && (expanded || isMobileDrawerClosing()) ? 'open' : 'closed';\n el.dataset.desktopState = stashed ? 'stashed' : 'expanded';\n el.dataset.drawerState = drawer ? 'open' : 'closed';\n el.dataset.responsiveMode = responsiveMode;\n el.dataset.placement = props.placement;\n el.dataset.mobilePresentation = props.mobilePresentation;\n el.dataset.side = props.side;\n el.hidden = !visible && !(responsiveMode === 'desktop' && props.placement === 'top');\n el.toggleAttribute('inert', !expanded);\n if (expanded) el.removeAttribute('aria-hidden'); else el.setAttribute('aria-hidden', 'true');\n const resizeDisabled = !props.resizable || responsiveMode !== 'desktop' || drawer;\n el.toggleAttribute('data-resize-disabled', resizeDisabled);\n const resizeHandle = el.querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n resizeHandle?.toggleAttribute('data-disabled', resizeDisabled);\n resizeHandle?.setAttribute('aria-disabled', String(resizeDisabled));\n el.style.setProperty('--ui-sidebar-width', context().layout.width);\n if (context().layout.height) el.style.setProperty('--ui-sidebar-height', context().layout.height);\n\n const app = appEl();\n if (app) {\n app.style.setProperty('--ui-app-sidebar-width', context().layout.width);\n if (context().layout.height) app.style.setProperty('--ui-app-sidebar-height', context().layout.height);\n app.dataset.sidebarState = stashed ? 'stashed' : 'expanded';\n app.dataset.sidebarSide = props.side;\n if (!bridge.hasTag('transitioning')) app.style.gridTemplateColumns = '';\n }\n const backdrop = backdropEl();\n if (backdrop) {\n const modalDrawer = isModalDrawer();\n backdrop.hidden = !modalDrawer;\n backdrop.dataset.state = modalDrawer ? 'open' : 'closed';\n }\n if (!drawer && !bridge.hasTag('transitioning')) {\n stopOwnedMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n stopOwnedMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer) releaseScrollLock ??= acquireDocumentScrollLock(el.ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-edge]').forEach((edge) => {\n if (edge.dataset.target && edge.dataset.target !== root().id) return;\n const ownsEdgeReveal = drawer && activeTrigger === edge;\n const show = props.edgeReveal && responsiveMode === 'desktop' && props.placement === 'side' && stashed && (!drawer || ownsEdgeReveal);\n edge.dataset.state = show ? 'visible' : 'hidden';\n edge.hidden = !show;\n });\n syncToggles();\n persist();\n };\n\n const prepareOpen = ({context: next}: MachineScope<SidebarContext, SidebarProps>): void => {\n const {presentation} = next.transition;\n setCanvasTransitioning(presentation === 'layout');\n root().hidden = false;\n if (presentation !== 'layout') sync();\n if (isModalDrawer()) queueMicrotask(() => { if (isModalDrawer()) focusFirst(root()); });\n };\n const finishOpen = (): void => {\n setCanvasTransitioning(false);\n root().dataset.sidebarExiting = 'false';\n sync();\n dispatch({el: root(), name: 'ui:sidebar-open', detail: {id: root().id}});\n };\n const prepareClose = ({context: next}: MachineScope<SidebarContext, SidebarProps>): void => {\n const {presentation} = next.transition;\n setCanvasTransitioning(presentation === 'layout');\n restoreFocus();\n if (presentation === 'layout') root().dataset.sidebarExiting = 'true';\n if (presentation !== 'layout') sync();\n };\n const finishClose = (): void => {\n setCanvasTransitioning(false);\n root().dataset.sidebarExiting = 'false';\n sync();\n dispatch({el: root(), name: 'ui:sidebar-close', detail: {id: root().id}});\n activeTrigger = null;\n };\n\n const syncProps = (): void => {\n sync({reflectControlled: false});\n queueMicrotask(() => {\n const next = currentProps();\n if (responsiveMode === 'desktop') {\n if (next.placement === 'top') {\n if (!bridge.hasTag('top')) bridge.send({type: 'MODE', mode: 'desktop', placement: 'top', stashed: false, open: true});\n } else if (next.stashed !== context().layout.desktopStashed) {\n if (next.stashed) stash(); else expand();\n }\n } else if (next.open !== isExpanded()) {\n if (next.open) open(); else close();\n }\n });\n };\n\n const initialProps = (): SidebarProps => decodeProps({el: root(), schema: sidebarSchema});\n const bridge = createAlpineMachine({\n schema: sidebarSchema,\n hooks: sidebarHooks,\n createMachine: ({props}) => createSidebarMachine({\n props,\n mode: responsiveMode,\n desktopStashed: storedStashed(props) ?? props.stashed,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, sync, syncProps},\n }),\n });\n\n const desiredOpenTarget = (): {target: SidebarTarget; presentation: 'drawer' | 'layout'} | null => {\n const props = currentProps();\n if (responsiveMode === 'mobile') return {target: 'mobileOpen', presentation: 'drawer'};\n if (props.placement === 'top') return null;\n return context().layout.desktopStashed\n ? {target: 'desktopDrawer', presentation: 'drawer'}\n : {target: 'desktopExpanded', presentation: 'layout'};\n };\n const open = (event?: Event): void => {\n event?.preventDefault();\n if (event?.currentTarget instanceof HTMLElement) activeTrigger = event.currentTarget;\n const desired = desiredOpenTarget();\n if (desired) bridge.send({type: 'OPEN', ...desired});\n };\n const close = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n bridge.send({type: 'CLOSE', target: responsiveMode === 'mobile' ? 'mobileClosed' : 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const expand = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { open(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'EXPAND', target: 'desktopExpanded', presentation: 'layout'});\n };\n const stash = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { close(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'STASH', target: 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const toggle = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n if (responsiveMode === 'desktop' && currentProps().placement === 'side' && context().layout.desktopStashed && !isDrawer()) { expand(event); return; }\n if (isExpanded()) close(event); else open(event);\n };\n\n const reconcileMode = (width: number): void => {\n const props = currentProps();\n const observed = appEl() ?? root();\n const next: SidebarMode = width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n if (next === responsiveMode) return;\n responsiveMode = next;\n const desktopStashed = context().layout.desktopStashed;\n bridge.send({\n type: 'MODE',\n mode: next,\n placement: props.placement,\n stashed: desktopStashed,\n open: next === 'desktop' && desktopStashed && context().layout.desktopDrawerOpen,\n });\n };\n\n const handleResize = (event: Event): void => {\n const detail = event instanceof CustomEvent ? event.detail as ResizeEvent : null;\n if (!detail || responsiveMode !== 'desktop' || isDrawer()) return;\n const props = currentProps();\n if (props.placement === 'top' && Number.isFinite(detail.height)) {\n bridge.send({type: 'RESIZE', height: `${Math.round(detail.height)}px`});\n root().style.setProperty('--ui-sidebar-height', `${Math.round(detail.height)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-height', `${Math.round(detail.height)}px`);\n } else if (Number.isFinite(detail.width)) {\n bridge.send({type: 'RESIZE', width: `${Math.round(detail.width)}px`});\n root().style.setProperty('--ui-sidebar-width', `${Math.round(detail.width)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-width', `${Math.round(detail.width)}px`);\n }\n };\n\n const closeEdgeReveal = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (responsiveMode !== 'desktop' || !isDrawer()) return;\n if (!activeTrigger?.matches('[data-ui-sidebar-edge]')) return;\n const next = event.relatedTarget;\n if (next instanceof Node && (root().contains(next) || activeTrigger.contains(next))) return;\n close(event);\n };\n\n const closeAfterMobileNavigation = (event: Event): void => {\n if (!(event instanceof MouseEvent) || responsiveMode !== 'mobile' || !isExpanded()) return;\n if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const item = event.target instanceof Element ? event.target.closest<HTMLAnchorElement>('a[data-ui-sidebar-item]') : null;\n if (!item || !root().contains(item) || item.getAttribute('aria-disabled') === 'true') return;\n if (item.hasAttribute('download') || item.hasAttribute('target')) return;\n close();\n };\n\n let component!: TrellisAlpineComponent<SidebarData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get isOpen() { return isExpanded(); },\n get isDesktop() { return responsiveMode === 'desktop'; },\n get isStashed() { return context().layout.desktopStashed; },\n get width() { return context().layout.width; },\n get height() { return context().layout.height; },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n const observed = appEl() ?? root();\n responsiveMode = observed.getBoundingClientRect().width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n controllers.add(component);\n registerDocumentListeners();\n resizeObserver = new ResizeObserver((entries) => reconcileMode(entries[0]?.contentRect.width ?? observed.clientWidth));\n resizeObserver.observe(observed);\n cleanup.add(addDismissableLayer({isEnabled: isDrawer, roots: () => [root()], onDismiss: close}));\n addListener({target: document, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || !isDrawer()) return;\n if (event.key === 'Escape') close(event);\n else if (isModalDrawer()) trapFocus(event, root());\n }, cleanup});\n addListener({target: root(), event: 'ui:resize', handler: handleResize, cleanup});\n addListener({target: root(), event: 'ui:resize-end', handler: handleResize, cleanup});\n addListener({target: root(), event: 'pointerleave', handler: closeEdgeReveal, cleanup});\n addListener({target: root(), event: 'click', handler: closeAfterMobileNavigation, cleanup});\n root().querySelectorAll<HTMLDetailsElement>('details[data-ui-sidebar-group]').forEach((group) => addListener({target: group, event: 'toggle', handler: () => {\n group.dataset.state = group.open ? 'open' : 'closed';\n dispatch({el: group, name: 'ui:sidebar-group-change', detail: {open: group.open}});\n }, cleanup}));\n sync();\n },\n destroy(): void {\n setCanvasTransitioning(false);\n controllers.delete(component);\n resizeObserver?.disconnect();\n resizeObserver = null;\n releaseScrollLock?.();\n releaseScrollLock = null;\n bridge.disconnect();\n rootEl = null;\n },\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle {\n if (transition.data.presentation === 'layout') {\n const canvas = Array.from(appEl()?.querySelectorAll<HTMLElement>(\n ':scope > [data-ui-app-header], :scope > [data-ui-app-main], :scope > [data-ui-app-footer]',\n ) ?? []);\n return flip(transition, {\n target: canvas,\n update: sync,\n role: 'layoutSpring',\n });\n }\n const side = root().dataset.side === 'right' ? 1 : -1;\n const opening = transition.to === 'opening';\n const outside = side === 1\n ? 'translateX(calc(100% + 0.5rem))'\n : 'translateX(calc(-100% - 0.5rem))';\n let plan = createMotionPlan(transition).animate({\n opacity: opening ? [0, 1] : 1,\n transform: opening ? [outside, 'none'] : outside,\n }).role('presence');\n const backdrop = backdropEl();\n if (backdrop && transition.data.mode === 'mobile') plan = plan.with(backdrop, {\n opacity: opening ? [0, 1] : 0,\n }).role('feedback');\n return plan.play();\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? initialProps();\n return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.root, props, className: props.class}), {'data-ui-sidebar': ''}]});\n },\n open, close, toggle, stash, expand,\n isExpanded,\n perform(action, trigger) {\n if (action === 'open' || (action === 'toggle' && !isExpanded())) activeTrigger = trigger ?? null;\n ({open, close, toggle, stash, expand})[action]?.();\n },\n syncToggles,\n };\n return component;\n};\n\nconst UiSidebarToggle = (): TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}> => {\n let props = {} as SidebarToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.toggle, props: {}, className: props.class}), {'data-ui-sidebar-toggle': '', ':data-target': () => props.target, ':data-action': () => props.action, '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-toggle', {detail: {id: props.target || 'ui-sidebar', action: props.action, trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}>;\n};\n\nconst UiSidebarEdge = (): TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}> => {\n let props = {} as SidebarEdgeProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.edge, props: {side: this.$el.dataset.side || 'left'}, className: props.class}), {'data-ui-sidebar-edge': '', ':data-target': () => props.target, '@pointerenter': (event: Event) => this.trigger(event), '@pointerleave': (event: Event) => this.leave(event), '@focus': (event: Event) => this.trigger(event), '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-open', {detail: {id: props.target || 'ui-sidebar', action: 'open', trigger: this.$el}}));\n },\n leave(event?: Event) {\n const next = event instanceof PointerEvent ? event.relatedTarget : null;\n const sidebar = document.getElementById(props.target || 'ui-sidebar');\n if (next instanceof Node && sidebar?.contains(next)) return;\n document.dispatchEvent(new CustomEvent('ui:sidebar-close', {detail: {id: props.target || 'ui-sidebar', action: 'close', trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}>;\n};\n\nconst registerSidebar = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiSidebar', UiSidebar)(AlpineInstance);\n defineAlpineData('UiSidebarEdge', UiSidebarEdge)(AlpineInstance);\n defineAlpineData('UiSidebarToggle', UiSidebarToggle)(AlpineInstance);\n};\n\nexport {registerSidebar, UiSidebar, UiSidebarEdge, UiSidebarToggle};\nexport type {SidebarController, SidebarData, SidebarTransition, UiSidebarApi};\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 {registerSidebar as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSidebar = (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 {registerSidebar};\nexport default registerSidebar;\nexport * from './index';\n"],"mappings":"mvBAAA,IAAM,EAAyB,GAAmC,CAC9D,IAAM,EAAQ,iBAAiB,CAAS,CAAC,CAAC,iBAAiB,+BAA+B,EACpF,EAAS,OAAO,WAAW,CAAK,EACtC,OAAO,OAAO,SAAS,CAAM,EAAI,EAAS,GAC9C,ECIM,EAAgB,CAAC,OAAQ,OAAO,EAChC,EAAqB,CAAC,OAAQ,KAAK,EACnC,EAA+B,CAAC,SAAU,YAAY,EACtD,EAAa,CAAC,MAAO,QAAS,QAAQ,EACtC,EAAoB,CAAC,OAAQ,SAAU,UAAW,MAAM,EACxD,EAAyB,CAAC,SAAU,OAAQ,QAAS,QAAS,QAAQ,EACtE,EAAkB,CAAC,IAAK,QAAQ,EAChC,EAAwB,CAAC,QAAS,SAAS,EAC3C,EAAsB,CAAC,UAAW,QAAQ,EAC1C,EAAmB,EACnB,EAAqB,EAErB,EAAgB,CAClB,GAAI,EAAM,EAAY,KAAK,EAC3B,GAAI,EAAO,QAAQ,YAAY,EAC/B,UAAW,EAAM,EAAoB,MAAM,EAC3C,mBAAoB,EAAM,EAA8B,QAAQ,EAChE,KAAM,EAAM,EAAe,MAAM,EACjC,QAAS,EAAM,EAAkB,SAAS,EAC1C,UAAW,EAAM,EAAoB,MAAM,EAC3C,gBAAiB,EAAM,EAAoB,GAAG,EAC9C,QAAS,EAAK,QAAQ,EAAI,EAC1B,OAAQ,EAAK,QAAQ,EAAI,EACzB,SAAU,EAAM,EAAmB,QAAQ,EAC3C,KAAM,EACN,QAAS,EACT,QAAS,EAAK,QAAQ,EAAI,EAC1B,WAAY,EAAK,QAAQ,EAAI,EAC7B,UAAW,EACX,MAAO,CACX,EAGQ,EAAM,EAAiB,GAAG,EACrB,EAAM,EAAuB,OAAO,EACtC,EAAM,EAAqB,SAAS,EAajC,EAAK,QAAQ,EAAI,EAK/B,IAAM,EAAsB,CACxB,OAAQ,EACR,KAAM,EAAO,QAAQ,YAAY,EACjC,MAAO,EAAO,QAAQ,gBAAgB,EACtC,OAAQ,EAAM,EAAwB,QAAQ,EAC9C,MAAO,CACX,ECrCM,GAAqB,CAAC,cAAmD,CAC3E,KAAM,EAAQ,WAAW,KACzB,aAAc,EAAQ,WAAW,aACjC,MAAO,EAAQ,OAAO,MACtB,OAAQ,EAAQ,OAAO,MAC3B,GAoBM,GAAe,CAhBD,EAAW,CAC3B,KAAM,UACN,MAAO,UACP,QAAS,EACT,OAAQ,eACR,QAAS,eACb,CAUsB,EARF,EAAW,CAC3B,KAAM,UACN,MAAO,UACP,QAAS,EACT,OAAQ,eACR,QAAS,eACb,CAEmC,CAAW,EAExC,GAAc,EAA2B,IAC3C,OAAO,EAAM,QAAW,SAAW,EAAM,OAA0B,EAEjE,EAAoB,GAAmD,EAAM,eAAiB,SAAW,SAAW,SAEpH,IAAwB,CAAC,QAAO,OAAM,iBAAgB,aAAiF,CACzI,IAAM,EAAyB,IAAS,SAClC,EAAM,KAAO,aAAe,eAC5B,EAAM,YAAc,MAAQ,aAAe,EAAiB,iBAAmB,kBAE/E,EAAY,CAAC,OAAQ,UAAW,OAAQ,YAAa,QAAS,aAAa,EAC3E,EAAa,CAAC,OAAQ,UAAW,OAAQ,aAAc,QAAS,cAAc,EAC9E,EAAY,CAAC,OAAQ,eAAgB,QAAS,WAAW,EAE/D,OAAO,EAA4C,CAC/C,UACA,GAAI,CACA,KAAM,CACF,CAAC,OAAQ,aAAc,MAAO,QAAS,OAAQ,UAAW,QAAS,MAAM,EACzE,CAAC,OAAQ,gBAAiB,MAAO,kBAAmB,OAAQ,UAAW,QAAS,MAAM,EACtF,CAAC,OAAQ,iBAAkB,MAAO,mBAAoB,OAAQ,UAAW,QAAS,MAAM,EACxF,CAAC,OAAQ,kBAAmB,MAAO,YAAa,OAAQ,UAAW,QAAS,MAAM,EAClF,CAAC,OAAQ,aAAc,MAAO,eAAgB,OAAQ,UAAW,QAAS,MAAM,EAChF,CAAC,OAAQ,eAAgB,OAAQ,UAAW,QAAS,MAAM,CAC/D,EACA,OAAQ,CAAC,OAAQ,SAAU,QAAS,MAAM,CAC9C,EACA,OAAQ,CACJ,aAAc,CAAC,KAAM,CAAC,SAAU,QAAQ,EAAG,GAAI,CAAC,KAAM,EAAW,OAAQ,EAAW,cAAe,CAAS,CAAC,EAC7G,WAAY,CAAC,KAAM,CAAC,SAAU,UAAW,WAAY,MAAM,EAAG,GAAI,CAAC,MAAO,EAAY,MAAO,EAAY,OAAQ,EAAY,cAAe,CAAS,CAAC,EACtJ,gBAAiB,CAAC,KAAM,CAAC,UAAW,UAAW,WAAY,OAAQ,QAAQ,EAAG,GAAI,CAAC,MAAO,EAAY,MAAO,EAAY,OAAQ,EAAY,KAAM,CAAC,EAAG,OAAQ,CAAC,EAAG,cAAe,CAAS,CAAC,EAC5L,eAAgB,CAAC,KAAM,CAAC,UAAW,UAAW,QAAQ,EAAG,GAAI,CAAC,KAAM,EAAW,OAAQ,EAAW,OAAQ,EAAW,cAAe,CAAS,CAAC,EAC9I,cAAe,CAAC,KAAM,CAAC,UAAW,UAAW,UAAW,WAAY,OAAQ,QAAQ,EAAG,GAAI,CAAC,MAAO,EAAY,MAAO,EAAY,OAAQ,EAAY,OAAQ,EAAW,cAAe,CAAS,CAAC,EAClM,WAAY,CAAC,KAAM,CAAC,UAAW,MAAO,UAAW,WAAY,OAAQ,QAAQ,EAAG,GAAI,CAAC,cAAe,CAAS,CAAC,EAC9G,QAAS,CACL,KAAM,CAAC,UAAW,WAAY,eAAe,EAC7C,GAAI,CACA,aAAc,CACV,CAAC,OAAQ,aAAc,MAAO,oBAAqB,QAAS,YAAY,EACxE,CAAC,OAAQ,gBAAiB,MAAO,uBAAwB,QAAS,YAAY,EAC9E,CAAC,OAAQ,aAAc,MAAO,oBAAqB,QAAS,YAAY,EACxE,CAAC,OAAQ,kBAAmB,QAAS,YAAY,CACrD,EACA,cAAe,CACX,CAAC,OAAQ,aAAc,MAAO,oBAAqB,QAAS,YAAY,EACxE,CAAC,OAAQ,gBAAiB,MAAO,uBAAwB,QAAS,YAAY,EAC9E,CAAC,OAAQ,aAAc,MAAO,oBAAqB,QAAS,YAAY,EACxE,CAAC,OAAQ,kBAAmB,QAAS,YAAY,CACrD,EACA,MAAO,EACP,MAAO,EACP,OAAQ,EACR,cAAe,CACnB,CACJ,EACA,QAAS,CACL,KAAM,CAAC,UAAW,eAAe,EACjC,GAAI,CACA,aAAc,CACV,CAAC,OAAQ,eAAgB,MAAO,sBAAuB,QAAS,aAAa,EAC7E,CAAC,OAAQ,iBAAkB,QAAS,aAAa,CACrD,EACA,cAAe,CACX,CAAC,OAAQ,eAAgB,MAAO,sBAAuB,QAAS,aAAa,EAC7E,CAAC,OAAQ,iBAAkB,QAAS,aAAa,CACrD,EACA,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,cAAe,CACnB,CACJ,CACJ,CACJ,EAAG,CACC,QACA,QAAS,CACL,WAAY,CAAC,MAAI,EACjB,OAAQ,CACJ,iBACA,kBAAmB,GACnB,MAAO,+BACP,OAAQ,EACZ,EACA,WAAY,CAAC,OAAQ,EAAS,aAAc,IAAY,mBAAqB,IAAY,aAAe,SAAW,QAAQ,CAC/H,EACA,SAAU,CACN,WAAY,CAAC,UAAS,WAAW,CAC7B,IAAM,EAAS,EAAW,EAAO,YAAY,EAC7C,MAAO,CAAC,QAAS,CACb,GAAG,EACH,OAAQ,CACJ,GAAG,EAAQ,OACX,eAAgB,IAAW,iBAErB,IAAW,mBAA4B,EAAQ,OAAO,eAC5D,kBAAmB,IAAW,iBACtB,IAAW,cAAgB,EAAQ,OAAO,cACtD,EACA,WAAY,CAAC,SAAQ,aAAc,EAAiB,CAAK,CAAC,CAC9D,CAAC,CACL,EACA,YAAa,CAAC,UAAS,WAAW,CAC9B,IAAM,EAAS,EAAW,EAAO,cAAc,EACzC,EAAsB,IAAW,kBAC/B,IAAW,gBAAkB,EAAQ,OAAO,eACpD,MAAO,CAAC,QAAS,CACb,GAAG,EACH,OAAQ,CACJ,GAAG,EAAQ,OACX,eAAgB,IAAW,kBAA0B,EAAQ,OAAO,eACpE,kBAAmB,IAA8B,EAAQ,OAAO,iBACpE,EACA,WAAY,CAAC,SAAQ,aAAc,EAAiB,CAAK,CAAC,CAC9D,CAAC,CACL,EACA,SAAU,CAAC,UAAS,YAAY,CAAC,QAAS,CAAC,GAAG,EAAS,WAAY,CAAC,KAAM,EAAM,OAAS,UAAY,UAAY,QAAQ,CAAC,CAAC,GAC3H,cAAe,CAAC,UAAS,YAAY,CACjC,MAAO,EAAM,MACb,SACJ,GACA,QAAS,CAAC,UAAS,YAAY,CAAC,QAAS,CACrC,GAAG,EACH,OAAQ,CACJ,GAAG,EAAQ,OACX,MAAO,OAAO,EAAM,OAAU,SAAW,EAAM,MAAQ,EAAQ,OAAO,MACtE,OAAQ,OAAO,EAAM,QAAW,SAAW,EAAM,OAAS,EAAQ,OAAO,MAC7E,CACJ,CAAC,EACL,EACA,OAAQ,CACJ,OAAQ,CAAC,WAAW,EAAM,OAAS,WAAa,EAAM,YAAc,MACpE,iBAAkB,CAAC,WAAW,EAAM,OAAS,WAAa,EAAM,UAAY,IAAQ,EAAM,OAAS,GACnG,kBAAmB,CAAC,WAAW,EAAM,OAAS,WAAa,EAAM,UAAY,GAC7E,WAAY,CAAC,WAAW,EAAM,OAAS,UACvC,cAAe,CAAC,WAAW,EAAM,OAAS,UAAY,EAAM,OAAS,GACrE,mBAAoB,CAAC,aAAa,EAAQ,WAAW,SAAW,aAChE,qBAAsB,CAAC,aAAa,EAAQ,WAAW,SAAW,eAClE,sBAAuB,CAAC,aAAa,EAAQ,WAAW,SAAW,gBACnE,mBAAoB,CAAC,aAAa,EAAQ,WAAW,SAAW,YACpE,EACA,QAAS,CACL,YAAa,EAAQ,YACrB,WAAY,EAAQ,WACpB,aAAc,EAAQ,aACtB,YAAa,EAAQ,YACrB,KAAM,EAAQ,KACd,UAAW,EAAQ,SACvB,CACJ,CAAC,CACL,EC3MM,EAA4B,EAA0B,gCAAgC,EACtF,EAAmC,EAA0B,+BAA+B,EAE5F,EAAgB,EAAa,CAAC,WAAY,CAC5C,UAAW,aACX,MAAO,CACH,KAAM,CACF,KAAM,CACF,4HACA,gCACA,sCACA,sFACA,2TACA,uNACA,6HACA,6FACA,4LACA,sBACA,6kBACA,8LACA,6TACA,gLACA,wFACA,qLACJ,EACA,SAAU,CACN,UAAW,EACX,gBAAiB,EACjB,mBAAoB,CAChB,OAAQ,GACR,WAAY,CACR,kDACA,gDACA,iDACA,qDACA,uDACA,kDACJ,CAAC,CAAC,KAAK,GAAG,CACd,EACA,QAAS,CACL,KAAM,sKACN,MAAO,EACX,EACA,KAAM,CACF,KAAM,sGACN,MAAO,0LACX,EACA,OAAQ,CACJ,KAAM,gFACN,MAAO,2TACX,CACJ,EACA,SAAU,CACN,UAAW,OACX,gBAAiB,IACjB,mBAAoB,SACpB,QAAS,GACT,KAAM,OACN,OAAQ,EACZ,CACJ,EACA,OAAQ,CACJ,KAAM,sIACV,EACA,QAAS,CACL,KAAM,CACF,gCACJ,CACJ,EACA,aAAc,CACV,KAAM,CACF,wHACA,2FACJ,CACJ,EACA,OAAQ,CACJ,KAAM,0GACV,EACA,IAAK,CACD,KAAM,8BACV,EACA,KAAM,CACF,KAAM,CACF,6GACA,uEACA,iBACA,mCACJ,EACA,SAAU,CACN,QAAS,CACL,MAAO,GACP,QAAS,0DACb,EACA,MAAO,CACH,QAAS,GACT,OAAQ,EACZ,EACA,YAAa,CACT,KAAM,OACN,MAAO,EACX,CACJ,EACA,SAAU,CACN,QAAS,QACT,MAAO,UACP,YAAa,EACjB,CACJ,EACA,QAAS,CACL,KAAM,yCACV,EACA,SAAU,CACN,KAAM,+CACN,SAAU,CACN,SAAU,CACN,QAAS,GACT,SAAU,SACd,CACJ,EACA,SAAU,CACN,SAAU,SACd,CACJ,EACA,UAAW,CACP,KAAM,gBACV,EACA,UAAW,CACP,KAAM,uGACV,EACA,YAAa,CACT,KAAM,wEACV,EACA,MAAO,CACH,KAAM,uCACV,EACA,aAAc,CACV,KAAM,CACF,qIACA,gFACA,oCACJ,EACA,SAAU,CACN,WAAY,CACR,KAAM,GACN,MAAO,EACX,CACJ,EACA,SAAU,CACN,WAAY,EAChB,CACJ,EACA,kBAAmB,CACf,KAAM,6CACV,EACA,aAAc,CACV,KAAM,uFACV,EACA,UAAW,CACP,KAAM,iFACV,EACA,WAAY,CACR,KAAM,gBACV,EACA,kBAAmB,CACf,KAAM,gBACV,EACA,aAAc,CACV,KAAM,0CACV,EACA,aAAc,CACV,KAAM,8BACV,EACA,OAAQ,CACJ,KAAM,CACF,oIACA,+EACJ,CACJ,EACA,WAAY,CACR,KAAM,qCACV,EACA,KAAM,CACF,KAAM,CACF,yFACA,oCACA,4BACJ,EACA,SAAU,CACN,KAAM,CACF,KAAM,SACN,MAAO,SACX,CACJ,EACA,SAAU,CACN,KAAM,MACV,CACJ,EACA,aAAc,CACV,KAAM,CACF,qJACA,yCACA,oCACA,uBACA,iaACJ,EACA,SAAU,CACN,KAAM,CACF,KAAM,gCACN,MAAO,8BACX,CACJ,EACA,SAAU,CACN,KAAM,MACV,CACJ,CACJ,CACJ,CAAC,CAAC,ECtKI,EAAoB,CAAC,OAAQ,EAAoB,OAAQ,OAAQ,EAAoB,OAAQ,MAAO,EAAoB,KAAK,EA6C7H,EAAc,IAAI,IAElB,EAAe,GAAqC,aAAiB,aAAe,EAAM,QAAU,OAAO,EAAM,QAAW,SAC5H,EAAM,OACN,CAAC,EAED,QAAmC,CACrC,IAAI,EAAa,GACjB,UAAmB,CACf,GAAI,GAAc,OAAO,SAAa,IAAa,OACnD,IAAM,EAAS,GAAiC,GAAuB,CACnE,GAAI,EAAM,kBAAkB,SAAW,EAAM,OAAO,aAAa,iBAAiB,EAAG,OACrF,IAAM,EAAS,EAAY,CAAK,EAChC,EAAY,QAAS,GAAe,EAC5B,CAAC,EAAO,IAAM,EAAO,KAAO,EAAW,KAAI,EAAW,QAAQ,EAAO,QAAU,EAAQ,EAAO,OAAO,CAC7G,CAAC,CACL,EACA,SAAS,iBAAiB,kBAAmB,EAAM,MAAM,CAAC,EAC1D,SAAS,iBAAiB,mBAAoB,EAAM,OAAO,CAAC,EAC5D,SAAS,iBAAiB,oBAAqB,EAAM,QAAQ,CAAC,EAC9D,EAAa,EACjB,CACJ,EAAA,CAAG,EAEG,MAAuD,CACzD,IAAI,EAA+D,KAC/D,EACA,EAAwC,KACxC,EAA8B,SAC9B,EAAoC,KACpC,EAAyC,KAEvC,MAA0B,CAC5B,GAAI,CAAC,EAAQ,MAAU,MAAM,mCAAmC,EAChE,OAAO,CACX,EACM,MAAkC,EAAK,CAAC,CAAC,QAAqB,eAAe,EAC7E,MAAuC,EAAM,CAAC,EAAE,cAA2B,wBAAwB,GAAK,KACxG,MAA6C,EAAO,YAAY,CAAC,CAAC,MAClE,MAA0C,EAAO,YAAY,CAAC,CAAC,QAE/D,MAA0B,EAAO,OAAO,SAAS,IACnD,EAAO,OAAO,QAAQ,GACnB,IAAmB,UAClB,EAAO,OAAO,eAAe,GAAK,EAAQ,CAAC,CAAC,WAAW,eAAiB,UAE1E,MAA+B,EAAS,GAAK,IAAmB,SAChE,MAA4B,EAAO,OAAO,UAAU,EACpD,MAAuC,IAAmB,UAAY,EAAO,QAAQ,SAAS,EAE9F,MAA2B,sBAAsB,EAAK,CAAC,CAAC,IAAM,EAAa,CAAC,CAAC,GAAG,UAChF,EAAiB,GAAwC,CAC3D,GAAI,CAAC,EAAM,QAAS,OAAO,KAC3B,GAAI,CACA,IAAM,EAAQ,aAAa,QAAQ,sBAAsB,EAAK,CAAC,CAAC,IAAM,EAAM,GAAG,SAAS,EACxF,OAAO,IAAU,KAAO,KAAO,IAAU,MAC7C,MAAQ,CAAE,OAAO,IAAM,CAC3B,EACM,MAAsB,CACxB,IAAM,EAAQ,EAAa,EACvB,GAAC,EAAM,SAAW,EAAM,YAAc,MAC1C,GAAI,CAAE,aAAa,QAAQ,EAAW,EAAG,EAAQ,CAAC,CAAC,OAAO,eAAiB,OAAS,OAAO,CAAG,MAAQ,CAA4B,CACtI,EACM,EAA0B,GAA0B,CACtD,IAAM,EAAM,EAAM,EACd,EAAQ,GAAK,aAAa,6BAA8B,MAAM,EAC7D,GAAK,gBAAgB,4BAA4B,CAC1D,EAEM,MAA2B,CAC7B,IAAM,EAAS,SAAS,cACxB,GAAI,EAAE,aAAkB,cAAgB,CAAC,EAAK,CAAC,CAAC,SAAS,CAAM,EAAG,OAClE,IAAM,EAAW,GAAiB,MAAM,KAAK,SAAS,iBAA8B,0BAA0B,CAAC,CAAC,CAC3G,KAAM,GAAO,CAAC,EAAK,CAAC,CAAC,SAAS,CAAE,IAAM,CAAC,EAAG,QAAQ,QAAU,EAAG,QAAQ,SAAW,EAAK,CAAC,CAAC,GAAG,EAC7F,GAAY,SAAS,SAAS,CAAQ,EAAG,EAAS,MAAM,CAAC,cAAe,EAAI,CAAC,EAC5E,EAAO,KAAK,CACrB,EAEM,MAA0B,CAC5B,IAAM,EAAW,EAAW,EAC5B,SAAS,iBAA8B,gFAAgF,CAAC,CAAC,QAAS,GAAO,CACjI,EAAG,QAAQ,QAAU,EAAG,QAAQ,SAAW,EAAK,CAAC,CAAC,KACjD,EAAG,QAAQ,wBAAwB,IAAG,EAAG,QAAQ,MAAQ,EAAW,OAAS,UAC9E,EAAG,QAAQ,kDAAkD,IAC7D,EAAG,aAAa,gBAAiB,EAAK,CAAC,CAAC,EAAE,EAC1C,EAAG,aAAa,gBAAiB,OAAO,CAAQ,CAAC,GAEzD,CAAC,CACL,EAEM,GAAQ,CAAC,oBAAoB,IAAuC,CAAC,IAAY,CACnF,IAAM,EAAQ,EAAa,EACrB,EAAU,EAAO,OAAO,SAAS,EACjC,EAAW,EAAW,EACtB,EAAU,EAAQ,CAAC,CAAC,OAAO,eAC3B,EAAS,EAAS,EAClB,EAAK,EAAK,EACZ,GAEI,EADA,IAAmB,SACD,CAAC,KAAI,OAAQ,EAAe,IAAK,OAAQ,MAAO,CAAQ,EAExD,CAAC,KAAI,OAAQ,EAAe,IAAK,UAAW,MAAO,CAAO,CAAC,EAGrF,EAAG,QAAQ,MAAQ,EAAW,OAAS,SACvC,EAAG,QAAQ,YAAc,IAAmB,WAAa,GAAY,EAAsB,GAAK,OAAS,SACzG,EAAG,QAAQ,aAAe,EAAU,UAAY,WAChD,EAAG,QAAQ,YAAc,EAAS,OAAS,SAC3C,EAAG,QAAQ,eAAiB,EAC5B,EAAG,QAAQ,UAAY,EAAM,UAC7B,EAAG,QAAQ,mBAAqB,EAAM,mBACtC,EAAG,QAAQ,KAAO,EAAM,KACxB,EAAG,OAAS,CAAC,IAAa,IAAmB,WAAa,EAAM,YAAc,OAC9E,EAAG,gBAAgB,QAAS,CAAC,CAAQ,EACjC,EAAU,EAAG,gBAAgB,aAAa,EAAQ,EAAG,aAAa,cAAe,MAAM,EAC3F,IAAM,EAAiB,CAAC,EAAM,WAAa,IAAmB,WAAa,EAC3E,EAAG,gBAAgB,uBAAwB,CAAc,EACzD,IAAM,EAAe,EAAG,cAA2B,iCAAiC,EACpF,GAAc,gBAAgB,gBAAiB,CAAc,EAC7D,GAAc,aAAa,gBAAiB,OAAO,CAAc,CAAC,EAClE,EAAG,MAAM,YAAY,qBAAsB,EAAQ,CAAC,CAAC,OAAO,KAAK,EAC7D,EAAQ,CAAC,CAAC,OAAO,QAAQ,EAAG,MAAM,YAAY,sBAAuB,EAAQ,CAAC,CAAC,OAAO,MAAM,EAEhG,IAAM,EAAM,EAAM,EACd,IACA,EAAI,MAAM,YAAY,yBAA0B,EAAQ,CAAC,CAAC,OAAO,KAAK,EAClE,EAAQ,CAAC,CAAC,OAAO,QAAQ,EAAI,MAAM,YAAY,0BAA2B,EAAQ,CAAC,CAAC,OAAO,MAAM,EACrG,EAAI,QAAQ,aAAe,EAAU,UAAY,WACjD,EAAI,QAAQ,YAAc,EAAM,KAC3B,EAAO,OAAO,eAAe,IAAG,EAAI,MAAM,oBAAsB,KAEzE,IAAM,EAAW,EAAW,EAC5B,GAAI,EAAU,CACV,IAAM,EAAc,EAAc,EAClC,EAAS,OAAS,CAAC,EACnB,EAAS,QAAQ,MAAQ,EAAc,OAAS,QACpD,CACI,CAAC,GAAU,CAAC,EAAO,OAAO,eAAe,IACzC,EAAgB,CAAE,EAClB,EAAG,MAAM,QAAU,GACnB,EAAG,MAAM,UAAY,GACjB,IACA,EAAgB,CAAQ,EACxB,EAAS,MAAM,QAAU,KAGb,EAChB,EAAa,IAAsB,GAA0B,EAAG,aAAa,GAE7E,IAAoB,EACpB,EAAoB,MAExB,SAAS,iBAA8B,wBAAwB,CAAC,CAAC,QAAS,GAAS,CAC/E,GAAI,EAAK,QAAQ,QAAU,EAAK,QAAQ,SAAW,EAAK,CAAC,CAAC,GAAI,OAC9D,IAAM,EAAiB,GAAU,IAAkB,EAC7C,EAAO,EAAM,YAAc,IAAmB,WAAa,EAAM,YAAc,QAAU,IAAY,CAAC,GAAU,GACtH,EAAK,QAAQ,MAAQ,EAAO,UAAY,SACxC,EAAK,OAAS,CAAC,CACnB,CAAC,EACD,EAAY,EACZ,EAAQ,CACZ,EAEM,GAAe,CAAC,QAAS,KAA4D,CACvF,GAAM,CAAC,gBAAgB,EAAK,WAC5B,EAAuB,IAAiB,QAAQ,EAChD,EAAK,CAAC,CAAC,OAAS,GACZ,IAAiB,UAAU,EAAK,EAChC,EAAc,GAAG,mBAAqB,CAAM,EAAc,GAAG,EAAW,EAAK,CAAC,CAAG,CAAC,CAC1F,EACM,MAAyB,CAC3B,EAAuB,EAAK,EAC5B,EAAK,CAAC,CAAC,QAAQ,eAAiB,QAChC,EAAK,EACL,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,kBAAmB,OAAQ,CAAC,GAAI,EAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3E,EACM,GAAgB,CAAC,QAAS,KAA4D,CACxF,GAAM,CAAC,gBAAgB,EAAK,WAC5B,EAAuB,IAAiB,QAAQ,EAChD,EAAa,EACT,IAAiB,WAAU,EAAK,CAAC,CAAC,QAAQ,eAAiB,QAC3D,IAAiB,UAAU,EAAK,CACxC,EACM,MAA0B,CAC5B,EAAuB,EAAK,EAC5B,EAAK,CAAC,CAAC,QAAQ,eAAiB,QAChC,EAAK,EACL,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,mBAAoB,OAAQ,CAAC,GAAI,EAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACxE,EAAgB,IACpB,EAEM,MAAwB,CAC1B,EAAK,CAAC,kBAAmB,EAAK,CAAC,EAC/B,mBAAqB,CACjB,IAAM,EAAO,EAAa,EACtB,IAAmB,UACf,EAAK,YAAc,MACd,EAAO,OAAO,KAAK,GAAG,EAAO,KAAK,CAAC,KAAM,OAAQ,KAAM,UAAW,UAAW,MAAO,QAAS,GAAO,KAAM,EAAI,CAAC,EAC7G,EAAK,UAAY,EAAQ,CAAC,CAAC,OAAO,iBACrC,EAAK,QAAS,EAAM,EAAQ,EAAO,GAEpC,EAAK,OAAS,EAAW,IAC5B,EAAK,KAAM,EAAK,EAAQ,EAAM,EAE1C,CAAC,CACL,EAEM,MAAmC,EAAY,CAAC,GAAI,EAAK,EAAG,OAAQ,CAAa,CAAC,EAClF,EAAS,EAAoB,CAC/B,OAAQ,EACR,MAAO,GACP,eAAgB,CAAC,WAAW,GAAqB,CAC7C,QACA,KAAM,EACN,eAAgB,EAAc,CAAK,GAAK,EAAM,QAC9C,QAAS,CAAC,cAAa,aAAY,eAAc,cAAa,OAAM,WAAS,CACjF,CAAC,CACL,CAAC,EAEK,MAA6F,CAC/F,IAAM,EAAQ,EAAa,EAG3B,OAFI,IAAmB,SAAiB,CAAC,OAAQ,aAAc,aAAc,QAAQ,EACjF,EAAM,YAAc,MAAc,KAC/B,EAAQ,CAAC,CAAC,OAAO,eAClB,CAAC,OAAQ,gBAAiB,aAAc,QAAQ,EAChD,CAAC,OAAQ,kBAAmB,aAAc,QAAQ,CAC5D,EACM,EAAQ,GAAwB,CAClC,GAAO,eAAe,EAClB,GAAO,yBAAyB,cAAa,EAAgB,EAAM,eACvE,IAAM,EAAU,EAAkB,EAC9B,GAAS,EAAO,KAAK,CAAC,KAAM,OAAQ,GAAG,CAAO,CAAC,CACvD,EACM,EAAS,GAAwB,CACnC,GAAO,eAAe,GAClB,EAAa,CAAC,CAAC,YAAc,OAAS,IAAmB,YAC7D,EAAO,KAAK,CAAC,KAAM,QAAS,OAAQ,IAAmB,SAAW,eAAiB,iBAAkB,aAAc,EAAS,EAAI,SAAW,QAAQ,CAAC,CACxJ,EACM,EAAU,GAAwB,CAEpC,GADA,GAAO,eAAe,EAClB,IAAmB,SAAU,CAAE,EAAK,CAAK,EAAG,MAAQ,CACpD,EAAa,CAAC,CAAC,YAAc,QAAQ,EAAO,KAAK,CAAC,KAAM,SAAU,OAAQ,kBAAmB,aAAc,QAAQ,CAAC,CAC5H,EACM,EAAS,GAAwB,CAEnC,GADA,GAAO,eAAe,EAClB,IAAmB,SAAU,CAAE,EAAM,CAAK,EAAG,MAAQ,CACrD,EAAa,CAAC,CAAC,YAAc,QAAQ,EAAO,KAAK,CAAC,KAAM,QAAS,OAAQ,iBAAkB,aAAc,EAAS,EAAI,SAAW,QAAQ,CAAC,CAClJ,EACM,EAAU,GAAwB,CACpC,MAAO,eAAe,EAClB,EAAa,CAAC,CAAC,YAAc,OAAS,IAAmB,UAC7D,IAAI,IAAmB,WAAa,EAAa,CAAC,CAAC,YAAc,QAAU,EAAQ,CAAC,CAAC,OAAO,gBAAkB,CAAC,EAAS,EAAG,CAAE,EAAO,CAAK,EAAG,MAAQ,CAChJ,EAAW,EAAG,EAAM,CAAK,EAAQ,EAAK,CAAK,CADqG,CAExJ,EAEM,EAAiB,GAAwB,CAC3C,IAAM,EAAQ,EAAa,EAErB,EAAoB,GAAS,EADlB,EAAM,GAAK,EAAK,CACgC,EAAI,UAAY,SACjF,GAAI,IAAS,EAAgB,OAC7B,EAAiB,EACjB,IAAM,EAAiB,EAAQ,CAAC,CAAC,OAAO,eACxC,EAAO,KAAK,CACR,KAAM,OACN,KAAM,EACN,UAAW,EAAM,UACjB,QAAS,EACT,KAAM,IAAS,WAAa,GAAkB,EAAQ,CAAC,CAAC,OAAO,iBACnE,CAAC,CACL,EAEM,EAAgB,GAAuB,CACzC,IAAM,EAAS,aAAiB,YAAc,EAAM,OAAwB,KACvE,GAAU,IAAmB,WAAa,GAAS,IAC1C,EACV,CAAA,CAAM,YAAc,OAAS,OAAO,SAAS,EAAO,MAAM,GAC1D,EAAO,KAAK,CAAC,KAAM,SAAU,OAAQ,GAAG,KAAK,MAAM,EAAO,MAAM,EAAE,GAAG,CAAC,EACtE,EAAK,CAAC,CAAC,MAAM,YAAY,sBAAuB,GAAG,KAAK,MAAM,EAAO,MAAM,EAAE,GAAG,EAChF,EAAM,CAAC,EAAE,MAAM,YAAY,0BAA2B,GAAG,KAAK,MAAM,EAAO,MAAM,EAAE,GAAG,GAC/E,OAAO,SAAS,EAAO,KAAK,IACnC,EAAO,KAAK,CAAC,KAAM,SAAU,MAAO,GAAG,KAAK,MAAM,EAAO,KAAK,EAAE,GAAG,CAAC,EACpE,EAAK,CAAC,CAAC,MAAM,YAAY,qBAAsB,GAAG,KAAK,MAAM,EAAO,KAAK,EAAE,GAAG,EAC9E,EAAM,CAAC,EAAE,MAAM,YAAY,yBAA0B,GAAG,KAAK,MAAM,EAAO,KAAK,EAAE,GAAG,GAE5F,EAEM,GAAmB,GAAuB,CAG5C,GAFI,EAAE,aAAiB,eACnB,IAAmB,WAAa,CAAC,EAAS,GAC1C,CAAC,GAAe,QAAQ,wBAAwB,EAAG,OACvD,IAAM,EAAO,EAAM,cACf,aAAgB,OAAS,EAAK,CAAC,CAAC,SAAS,CAAI,GAAK,EAAc,SAAS,CAAI,IACjF,EAAM,CAAK,CACf,EAEM,GAA8B,GAAuB,CAEvD,GADI,EAAE,aAAiB,aAAe,IAAmB,UAAY,CAAC,EAAW,GAC7E,EAAM,kBAAoB,EAAM,SAAW,GAAK,EAAM,QAAU,EAAM,SAAW,EAAM,SAAW,EAAM,SAAU,OACtH,IAAM,EAAO,EAAM,kBAAkB,QAAU,EAAM,OAAO,QAA2B,yBAAyB,EAAI,KAC/G,GAAS,EAAK,CAAC,CAAC,SAAS,CAAI,GAAK,EAAK,aAAa,eAAe,IAAM,SAC1E,EAAK,aAAa,UAAU,GAAK,EAAK,aAAa,QAAQ,GAC/D,EAAM,EACV,EAEI,EAoFJ,MAnFA,GAAY,CACR,GAAG,EACH,IAAI,IAAK,CAAE,OAAO,EAAK,CAAC,CAAC,IAAM,EAAa,CAAC,CAAC,EAAI,EAClD,IAAI,QAAS,CAAE,OAAO,EAAW,CAAG,EACpC,IAAI,WAAY,CAAE,OAAO,IAAmB,SAAW,EACvD,IAAI,WAAY,CAAE,OAAO,EAAQ,CAAC,CAAC,OAAO,cAAgB,EAC1D,IAAI,OAAQ,CAAE,OAAO,EAAQ,CAAC,CAAC,OAAO,KAAO,EAC7C,IAAI,QAAS,CAAE,OAAO,EAAQ,CAAC,CAAC,OAAO,MAAQ,EAC/C,MAAa,CACT,EAAU,EAAkB,IAAI,EAChC,EAAS,KAAK,IACd,IAAM,EAAW,EAAM,GAAK,EAAK,EACjC,EAAiB,EAAS,sBAAsB,CAAC,CAAC,OAAS,EAAsB,CAAQ,EAAI,UAAY,SACzG,EAAO,QAAQ,KAAK,IAAK,KAAK,QAAQ,EACtC,EAAK,CAAC,CAAC,KAAO,EAAa,CAAC,CAAC,GAC7B,EAAY,IAAI,CAAS,EACzB,GAA0B,EAC1B,EAAiB,IAAI,eAAgB,GAAY,EAAc,EAAQ,EAAE,EAAE,YAAY,OAAS,EAAS,WAAW,CAAC,EACrH,EAAe,QAAQ,CAAQ,EAC/B,EAAQ,IAAI,GAAoB,CAAC,UAAW,EAAU,UAAa,CAAC,EAAK,CAAC,EAAG,UAAW,CAAK,CAAC,CAAC,EAC/F,EAAY,CAAC,OAAQ,SAAU,MAAO,UAAW,QAAU,GAAU,CAC3D,aAAiB,eAAmB,EAAS,IAC/C,EAAM,MAAQ,SAAU,EAAM,CAAK,EAC9B,EAAc,GAAG,GAAU,EAAO,EAAK,CAAC,EACrD,EAAG,SAAO,CAAC,EACX,EAAY,CAAC,OAAQ,EAAK,EAAG,MAAO,YAAa,QAAS,EAAc,SAAO,CAAC,EAChF,EAAY,CAAC,OAAQ,EAAK,EAAG,MAAO,gBAAiB,QAAS,EAAc,SAAO,CAAC,EACpF,EAAY,CAAC,OAAQ,EAAK,EAAG,MAAO,eAAgB,QAAS,GAAiB,SAAO,CAAC,EACtF,EAAY,CAAC,OAAQ,EAAK,EAAG,MAAO,QAAS,QAAS,GAA4B,SAAO,CAAC,EAC1F,EAAK,CAAC,CAAC,iBAAqC,gCAAgC,CAAC,CAAC,QAAS,GAAU,EAAY,CAAC,OAAQ,EAAO,MAAO,SAAU,YAAe,CACzJ,EAAM,QAAQ,MAAQ,EAAM,KAAO,OAAS,SAC5C,EAAS,CAAC,GAAI,EAAO,KAAM,0BAA2B,OAAQ,CAAC,KAAM,EAAM,IAAI,CAAC,CAAC,CACrF,EAAG,SAAO,CAAC,CAAC,EACZ,EAAK,CACT,EACA,SAAgB,CACZ,EAAuB,EAAK,EAC5B,EAAY,OAAO,CAAS,EAC5B,GAAgB,WAAW,EAC3B,EAAiB,KACjB,IAAoB,EACpB,EAAoB,KACpB,EAAO,WAAW,EAClB,EAAS,IACb,EACA,kBAAkB,EAAmD,CACjE,GAAI,EAAW,KAAK,eAAiB,SAAU,CAC3C,IAAM,EAAS,MAAM,KAAK,EAAM,CAAC,EAAE,iBAC/B,2FACJ,GAAK,CAAC,CAAC,EACP,OAAO,EAAK,EAAY,CACpB,OAAQ,EACR,OAAQ,EACR,KAAM,cACV,CAAC,CACL,CACA,IAAM,EAAO,EAAK,CAAC,CAAC,QAAQ,OAAS,QAAU,EAAI,GAC7C,EAAU,EAAW,KAAO,UAC5B,EAAU,IAAS,EACnB,kCACA,mCACF,EAAO,EAAiB,CAAU,CAAC,CAAC,QAAQ,CAC5C,QAAS,EAAU,CAAC,EAAG,CAAC,EAAI,EAC5B,UAAW,EAAU,CAAC,EAAS,MAAM,EAAI,CAC7C,CAAC,CAAC,CAAC,KAAK,UAAU,EACZ,EAAW,EAAW,EAI5B,OAHI,GAAY,EAAW,KAAK,OAAS,WAAU,EAAO,EAAK,KAAK,EAAU,CAC1E,QAAS,EAAU,CAAC,EAAG,CAAC,EAAI,CAChC,CAAC,CAAC,CAAC,KAAK,UAAU,GACX,EAAK,KAAK,CACrB,EACA,IAAI,MAAsB,CACtB,IAAM,EAAQ,KAAK,SAAS,SAAS,OAAS,EAAa,EAC3D,OAAO,EAAc,CAAC,OAAQ,CAAC,EAAa,CAAC,KAAM,EAAc,MAAM,KAAM,QAAO,UAAW,EAAM,KAAK,CAAC,EAAG,CAAC,kBAAmB,EAAE,CAAC,CAAC,CAAC,CAC3I,EACA,OAAM,QAAO,SAAQ,QAAO,SAC5B,aACA,QAAQ,EAAQ,EAAS,EACjB,IAAW,QAAW,IAAW,UAAY,CAAC,EAAW,KAAI,EAAgB,GAAW,MAC3F,CAAC,OAAM,QAAO,SAAQ,QAAO,QAAM,EAAG,EAAO,GAAG,CACrD,EACA,aACJ,EACO,CACX,EAEM,MAAyI,CAC3I,IAAI,EAAQ,CAAC,EACb,MAAO,CACH,IAAI,OAAQ,CAAE,OAAO,CAAO,EAC5B,MAAO,CAAE,EAAQ,EAAY,CAAC,GAAI,KAAK,IAAK,OAAQ,CAAiB,CAAC,CAAG,EACzE,SAAU,CAAC,EACX,IAAI,MAAO,CAAE,OAAO,EAAc,CAAC,OAAQ,CAAC,EAAa,CAAC,KAAM,EAAc,MAAM,OAAQ,MAAO,CAAC,EAAG,UAAW,EAAM,KAAK,CAAC,EAAG,CAAC,yBAA0B,GAAI,mBAAsB,EAAM,OAAQ,mBAAsB,EAAM,OAAQ,SAAW,GAAiB,KAAK,QAAQ,CAAK,CAAC,CAAC,CAAC,CAAC,CAAG,EAC7R,QAAQ,EAAe,CACnB,GAAO,eAAe,EACtB,SAAS,cAAc,IAAI,YAAY,oBAAqB,CAAC,OAAQ,CAAC,GAAI,EAAM,QAAU,aAAc,OAAQ,EAAM,OAAQ,QAAS,KAAK,GAAG,CAAC,CAAC,CAAC,CACtJ,CACJ,CACJ,EAEM,MAAiK,CACnK,IAAI,EAAQ,CAAC,EACb,MAAO,CACH,IAAI,OAAQ,CAAE,OAAO,CAAO,EAC5B,MAAO,CAAE,EAAQ,EAAY,CAAC,GAAI,KAAK,IAAK,OAAQ,CAAiB,CAAC,CAAG,EACzE,SAAU,CAAC,EACX,IAAI,MAAO,CAAE,OAAO,EAAc,CAAC,OAAQ,CAAC,EAAa,CAAC,KAAM,EAAc,MAAM,KAAM,MAAO,CAAC,KAAM,KAAK,IAAI,QAAQ,MAAQ,MAAM,EAAG,UAAW,EAAM,KAAK,CAAC,EAAG,CAAC,uBAAwB,GAAI,mBAAsB,EAAM,OAAQ,gBAAkB,GAAiB,KAAK,QAAQ,CAAK,EAAG,gBAAkB,GAAiB,KAAK,MAAM,CAAK,EAAG,SAAW,GAAiB,KAAK,QAAQ,CAAK,EAAG,SAAW,GAAiB,KAAK,QAAQ,CAAK,CAAC,CAAC,CAAC,CAAC,CAAG,EACzb,QAAQ,EAAe,CACnB,GAAO,eAAe,EACtB,SAAS,cAAc,IAAI,YAAY,kBAAmB,CAAC,OAAQ,CAAC,GAAI,EAAM,QAAU,aAAc,OAAQ,OAAQ,QAAS,KAAK,GAAG,CAAC,CAAC,CAAC,CAC9I,EACA,MAAM,EAAe,CACjB,IAAM,EAAO,aAAiB,aAAe,EAAM,cAAgB,KAC7D,EAAU,SAAS,eAAe,EAAM,QAAU,YAAY,EAChE,aAAgB,MAAQ,GAAS,SAAS,CAAI,GAClD,SAAS,cAAc,IAAI,YAAY,mBAAoB,CAAC,OAAQ,CAAC,GAAI,EAAM,QAAU,aAAc,OAAQ,QAAS,QAAS,KAAK,GAAG,CAAC,CAAC,CAAC,CAChJ,CACJ,CACJ,EAEM,EAAmB,GAAwC,CAC7D,EAAiB,YAAa,CAAS,CAAC,CAAC,CAAc,EACvD,EAAiB,gBAAiB,CAAa,CAAC,CAAC,CAAc,EAC/D,EAAiB,kBAAmB,CAAe,CAAC,CAAC,CAAc,CACvE,ECxgBM,EAAa,IAAI,QAEjB,EAAmB,GAAqC,CACtD,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAC7B,EAAyB,CAAc,EACvC,EAA4B,CAAc,EAC1C,EAAkB,CAAc,EACpC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{s as e,t}from"./dom-DiTFTWeR.js";import{t as n}from"./number-BCZdoG0B.js";import{c as r,f as i,l as a,n as o,u as s}from"./codecs-CQ7olTJL.js";import{t as c}from"./alpine-machine-CE2UN4Qu.js";import{n as l,t as u}from"./alpine-data-Dvc_bXq6.js";import{t as d}from"./machine-CNnHDbyo.js";import{n as f,t as p}from"./props-change-2xfsIAEN.js";import{i as m,n as h,r as g}from"./form-control-DL1Hkox3.js";import{F as _,l as v,o as y}from"./common-De1R7Xh6.js";var b=y,x=v,S=_,C={name:i,value:i,defaultValue:i.default(`0`),min:r.default(0),max:r.default(100),step:r.default(1),bigStep:r.default(10),minStepsBetween:r.default(0),range:o,orientation:a(S,`horizontal`),size:a(b,`md`),variant:a(x,`default`),disabled:o,required:o,invalid:o,label:i,description:i,descriptionTrailing:i,error:i,errors:i,badge:i,valueText:i,lowerLabel:i.default(`Minimum`),upperLabel:i.default(`Maximum`),lowerValueText:i,upperValueText:i,showValue:o,format:a([`number`,`percent`],`number`),fieldClass:i,rootClass:i,trackClass:i,rangeClass:i,thumbClass:i,tickClass:i,class:i};r.default(0);var w=[],T=(e,t,n)=>{if(!Number.isFinite(n)||n<=0)return e;let r=Math.round((e-t)/n)*n+t,i=Math.max(0,`${n}`.split(`.`)[1]?.length??0);return Number(r.toFixed(i))},E=e=>{let t=Math.min(e.min,e.max),n=Math.max(e.min,e.max),r=e.step>0?e.step:1;return{min:t,max:n,step:r,bigStep:e.bigStep>0?e.bigStep:r*10}},D=(e,t)=>{let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)?n:t},O=(e,t,r)=>{let{min:i,max:a,step:o}=E(e),s=T(n(D(t.lower,i),i,a),i,o),c=T(n(D(t.upper,a),i,a),i,o);if(!e.range)return{lower:s,upper:s};s>c&&([s,c]=[c,s]);let l=Math.max(0,e.minStepsBetween)*o;return c-s<l&&(r===`lower`?s=n(T(c-l,i,o),i,a):c=n(T(s+l,i,o),i,a)),{lower:s,upper:c}},k=(e,t)=>{let{min:n,max:r}=E(e),i=t.split(`,`).map(e=>e.trim());return O(e,{lower:D(i[0],n),upper:e.range?D(i[1],r):D(i[0],n)})},A=e=>k(e,e.value||e.defaultValue||String(E(e).min)),j=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,M=e=>{if(Array.isArray(e.event.values))return O(e.props,{lower:D(e.event.values[0],e.context.value.lower),upper:D(e.event.values[1],e.context.value.upper)},j(e.event));let t=j(e.event)??e.context.interaction.activeThumb??`single`,n=D(e.event.value,t===`upper`?e.context.value.upper:e.context.value.lower);return O(e.props,{lower:t===`upper`?e.context.value.lower:n,upper:t===`upper`?n:e.context.value.upper},t)},N=e=>{let t=f(e.event)?.props;return t?{...t,range:e.props.range,defaultValue:e.props.defaultValue}:e.props},P=e=>{let t=N(e);return p(e.event,`value`)?k(t,t.value||t.defaultValue||String(E(t).min)):O(t,e.context.value)},F=e=>({event:t})=>t.thumb===e,I=e=>N(e).disabled,L=({props:e,context:t,effects:n})=>d({initial:`idle`,on:{INPUT_CHANGED:{reduce:`setEventValue`,effects:`sync`},INPUT_COMMITTED:{reduce:`setEventValue`,effects:`sync`},KEY_STEPPED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]},API_SET:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]}},states:{idle:{tags:[`idle`],on:{POINTER_STARTED:[{target:`dragging.single`,guard:F(`single`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.lower`,guard:F(`lower`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.upper`,guard:F(`upper`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]}],PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}},dragging:{initial:`single`,tags:[`dragging`],on:{POINTER_MOVED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`]},POINTER_ENDED:{target:`idle`,reduce:`endDrag`,effects:[`endDrag`,`sync`,`emitChange`]},PROPS_CHANGED:[{target:`idle`,guard:I,reduce:`reconcileProps`,effects:[`endDrag`,`sync`]},{reduce:`reconcileProps`,effects:`sync`}]},states:{single:{tags:[`dragging-single`]},lower:{tags:[`dragging-lower`]},upper:{tags:[`dragging-upper`]}}}}},{context:t,props:e,reducers:{setEventValue:e=>({context:{...e.context,value:M(e)}}),startDrag:e=>({context:{value:M(e),interaction:{activeThumb:j(e.event)}}}),endDrag:e=>({context:{...e.context,interaction:{activeThumb:null}}}),reconcileProps:e=>({props:N(e),context:{...e.context,value:P(e)}})},effects:n}),R=(e,t)=>{let n=Number(e);return Number.isFinite(n)?n:t},z=(e,t,r)=>r<=t?0:n((e-t)/(r-t)*100,0,100),B=(e,t)=>{let n=t=>e.format===`percent`?`${Math.round(t)}%`:String(t);return e.range?`${n(t.lower)} - ${n(t.upper)}`:n(t.lower)},V=(e,t,r)=>{let{min:i,max:a,step:o}=E(r),s=e.getBoundingClientRect(),c=r.orientation===`vertical`?1-(t.clientY-s.top)/Math.max(s.height,1):(t.clientX-s.left)/Math.max(s.width,1),l=n(i+n(c,0,1)*(a-i),i,a),u=Math.round((l-i)/o)*o+i,d=Math.max(0,`${o}`.split(`.`)[1]?.length??0);return Number(u.toFixed(d))},H=(e,t)=>Math.abs(e-t.lower)<=Math.abs(e-t.upper)?`lower`:`upper`,U=(t,n,r,i)=>{t&&(e({el:t,attr:`data-focus`,present:n}),e({el:t,attr:`data-disabled`,present:r}),e({el:t,attr:`data-invalid`,present:i}))},W=({input:e,props:t,value:n,min:r,max:i,label:a,valueText:o,nativeRequired:s})=>{e&&(e.min=String(r),e.max=String(i),e.step=String(t.step>0?t.step:1),g({input:e,state:{name:t.range?``:t.name,value:String(n),disabled:t.disabled,required:t.required,nativeRequired:s,invalid:t.invalid}}),e.setAttribute(`aria-valuemin`,String(r)),e.setAttribute(`aria-valuemax`,String(i)),e.setAttribute(`aria-valuenow`,String(n)),o?e.setAttribute(`aria-valuetext`,o):e.removeAttribute(`aria-valuetext`),a&&e.setAttribute(`aria-label`,a),t.orientation===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`))},G=(e,t,n)=>{let{min:r,max:i}=E(e),a=z(n.lower,r,i),o=z(n.upper,r,i),s=e.range?a:0,c=e.range?o:a;t.root.style.setProperty(`--ui-slider-lower-percent`,`${a}%`),t.root.style.setProperty(`--ui-slider-upper-percent`,`${o}%`),e.orientation===`vertical`?(t.range&&(t.range.style.bottom=`${s}%`,t.range.style.height=`${Math.max(0,c-s)}%`,t.range.style.left=``,t.range.style.width=``),t.singleThumb&&(t.singleThumb.style.bottom=`${a}%`),t.lowerThumb&&(t.lowerThumb.style.bottom=`${a}%`),t.upperThumb&&(t.upperThumb.style.bottom=`${o}%`)):(t.range&&(t.range.style.left=`${s}%`,t.range.style.width=`${Math.max(0,c-s)}%`,t.range.style.bottom=``,t.range.style.height=``),t.singleThumb&&(t.singleThumb.style.left=`${a}%`),t.lowerThumb&&(t.lowerThumb.style.left=`${a}%`),t.upperThumb&&(t.upperThumb.style.left=`${o}%`)),t.ticks.forEach(t=>{let n=z(R(t.dataset.value??``,r),r,i);e.orientation===`vertical`?(t.style.bottom=`${n}%`,t.style.left=``):(t.style.left=`${n}%`,t.style.bottom=``)})},K=()=>{let e=null,n,r=``,i=null,a=!1,o=()=>{if(!e)throw Error(`Slider has not been initialized.`);return e},l=()=>T.getCommittedSnapshot(),d=()=>l().props,f=()=>l().context.value,p=()=>{let e=o(),t=e.querySelector(`[data-ui-slider-root]`);if(!t)throw Error(`Slider requires a root element.`);return{root:t,track:t.querySelector(`[data-ui-slider-track]`),range:t.querySelector(`[data-ui-slider-range]`),lowerInput:t.querySelector(`[data-ui-slider-input][data-thumb="lower"]`),upperInput:t.querySelector(`[data-ui-slider-input][data-thumb="upper"]`),singleInput:t.querySelector(`[data-ui-slider-input][data-thumb="single"]`),lowerThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="lower"]`),upperThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="upper"]`),singleThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="single"]`),value:e.querySelector(`[data-ui-slider-value]`),hiddenInputs:e.querySelector(`[data-ui-slider-hidden-inputs]`),ticks:Array.from(e.querySelectorAll(`[data-ui-slider-tick]`))}},g=(e,t=p())=>e===`upper`?t.upperInput:e===`lower`?t.lowerInput:t.singleInput,_=e=>e.dataset.thumb===`upper`?`upper`:e.dataset.thumb===`lower`?`lower`:`single`,v=()=>{let e=d(),t=f(),n=p(),{min:i,max:a}=E(e);s({el:o(),schema:C,key:`value`,value:e.range?`${t.lower},${t.upper}`:String(t.lower)}),W({input:n.singleInput,props:e,value:t.lower,min:i,max:a,label:e.label,valueText:e.valueText,nativeRequired:e.required}),W({input:n.lowerInput,props:e,value:t.lower,min:i,max:e.range?t.upper:a,label:e.lowerLabel,valueText:e.lowerValueText,nativeRequired:!1}),W({input:n.upperInput,props:e,value:t.upper,min:e.range?t.lower:i,max:a,label:e.upperLabel,valueText:e.upperValueText,nativeRequired:!1}),G(e,n,t),n.value&&(n.value.textContent=B(e,t)),h({el:o(),state:e}),h({el:n.root,state:e}),n.track&&h({el:n.track,state:{disabled:e.disabled,invalid:e.invalid}}),n.range&&h({el:n.range,state:{disabled:e.disabled,invalid:e.invalid}}),U(n.singleThumb,n.singleInput===document.activeElement,e.disabled,e.invalid),U(n.lowerThumb,n.lowerInput===document.activeElement,e.disabled,e.invalid),U(n.upperThumb,n.upperInput===document.activeElement,e.disabled,e.invalid),e.range&&n.hiddenInputs?r=m({container:n.hiddenInputs,currentKey:r,state:{name:e.name,values:[String(t.lower),String(t.upper)],required:e.required,marker:`data-ui-slider-hidden-input`}}):n.hiddenInputs&&(r=m({container:n.hiddenInputs,currentKey:r,state:{name:``,values:[],marker:`data-ui-slider-hidden-input`}}))},y=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,b=(e,t,n)=>{let r=p(),i=n.type===`API_SET`&&d().range?[r.lowerInput,r.upperInput]:[g(y(n)??t.context.interaction.activeThumb,r)];a=!0;try{i.forEach(t=>t?.dispatchEvent(new Event(e,{bubbles:!0})))}finally{a=!1}},x=(e,t)=>{let n=p(),r=e.context.interaction.activeThumb;if(g(r,n)?.focus(),i=typeof t.pointerId==`number`?t.pointerId:null,i!==null)try{n.root.setPointerCapture(i)}catch{T.send({type:`POINTER_ENDED`,thumb:r})}},S=()=>{if(i!==null){try{p().root.releasePointerCapture(i)}catch{}i=null}},T=c({schema:C,hooks:w,createMachine:({props:e})=>L({props:e,context:{value:A(e),interaction:{activeThumb:null}},effects:{sync:v,beginDrag:({snapshot:e,event:t})=>x(e,t),endDrag:S,emitInput:({snapshot:e,event:t})=>b(`input`,e,t),emitChange:({snapshot:e,event:t})=>b(`change`,e,t)}})}),D=(e,t)=>{!a&&e.target instanceof HTMLInputElement&&T.send({type:t?`INPUT_COMMITTED`:`INPUT_CHANGED`,thumb:_(e.target),value:e.target.value})},O=e=>{if(!(e.target instanceof HTMLInputElement)||![`PageUp`,`PageDown`].includes(e.key)&&!(e.shiftKey&&e.key.startsWith(`Arrow`)))return;e.preventDefault();let t=[`PageDown`,`ArrowDown`,`ArrowLeft`].includes(e.key)?-1:1,n=_(e.target);T.send({type:`KEY_STEPPED`,thumb:n,value:R(e.target.value,E(d()).min)+t*E(d()).bigStep})},k=e=>{if(d().disabled)return;let t=V(p().root,e,d()),n=d().range?H(t,f()):`single`;T.send({type:`POINTER_STARTED`,value:t,thumb:n,pointerId:e.pointerId}),e.preventDefault()},j=e=>{i===e.pointerId&&T.hasTag(`dragging`)&&T.send({type:`POINTER_MOVED`,value:V(p().root,e,d()),thumb:l().context.interaction.activeThumb})},M=e=>{i===e.pointerId&&T.hasTag(`dragging`)&&T.send({type:`POINTER_ENDED`,thumb:l().context.interaction.activeThumb})},N;return N={...T,get values(){let e=this.snapshot.current;return e?e.props.range?[e.context.value.lower,e.context.value.upper]:[e.context.value.lower]:[]},setValue(e){T.send({type:`API_SET`,values:Array.isArray(e)?e:[e]})},init(){n=u(this),e=this.$el,T.connect(this.$el,this.snapshot);let r=p();[r.singleInput,r.lowerInput,r.upperInput].forEach(e=>{e&&(t({target:e,event:`input`,handler:e=>D(e,!1),cleanup:n}),t({target:e,event:`change`,handler:e=>D(e,!0),cleanup:n}),t({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&O(e)},cleanup:n}),t({target:e,event:`focus`,handler:v,cleanup:n}),t({target:e,event:`blur`,handler:v,cleanup:n}))}),t({target:r.root,event:`pointerdown`,handler:e=>{e instanceof PointerEvent&&k(e)},cleanup:n}),t({target:r.root,event:`pointermove`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:n}),t({target:r.root,event:`pointerup`,handler:e=>{e instanceof PointerEvent&&M(e)},cleanup:n}),t({target:r.root,event:`pointercancel`,handler:e=>{e instanceof PointerEvent&&M(e)},cleanup:n}),v()},destroy(){S(),T.disconnect(),e=null}},N},q=l(`UiSlider`,K),J=new WeakSet,Y=e=>{J.has(e)||(J.add(e),q(e))};export{K as n,Y as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-R1BlPlZW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-R1BlPlZW.js","names":[],"sources":["../../../../../../../../client/src/components/slider/contract.ts","../../../../../../../../client/src/components/slider/machine.ts","../../../../../../../../client/src/components/slider/index.ts","../../../../../../../../client/src/components/slider/entry.generated.ts"],"sourcesContent":["import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, ORIENTATIONS, type ControlSize, type DefaultVariant, type Orientation} from '../common';\n\nconst SLIDER_SIZES = CONTROL_SIZES;\nconst SLIDER_VARIANTS = DEFAULT_VARIANTS;\nconst SLIDER_ORIENTATIONS = ORIENTATIONS;\nconst SLIDER_FORMATS = ['number', 'percent'] as const;\n\ntype SliderSize = ControlSize;\ntype SliderVariant = DefaultVariant;\ntype SliderOrientation = Orientation;\ntype SliderFormat = typeof SLIDER_FORMATS[number];\n\nconst sliderSchema = {\n name: string,\n value: string,\n defaultValue: string.default('0'),\n min: number.default(0),\n max: number.default(100),\n step: number.default(1),\n bigStep: number.default(10),\n minStepsBetween: number.default(0),\n range: bool,\n orientation: oneOf(SLIDER_ORIENTATIONS, 'horizontal' as SliderOrientation),\n size: oneOf(SLIDER_SIZES, 'md' as SliderSize),\n variant: oneOf(SLIDER_VARIANTS, 'default' as SliderVariant),\n disabled: bool,\n required: bool,\n invalid: bool,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n valueText: string,\n lowerLabel: string.default('Minimum'),\n upperLabel: string.default('Maximum'),\n lowerValueText: string,\n upperValueText: string,\n showValue: bool,\n format: oneOf(SLIDER_FORMATS, 'number' as SliderFormat),\n fieldClass: string,\n rootClass: string,\n trackClass: string,\n rangeClass: string,\n thumbClass: string,\n tickClass: string,\n class: string,\n};\n\nconst sliderTickSchema = {\n value: number.default(0),\n label: string,\n class: string,\n};\n\ntype SliderProps = SchemaToProps<typeof sliderSchema>;\ntype SliderTickProps = SchemaToProps<typeof sliderTickSchema>;\n\nexport {\n SLIDER_FORMATS,\n SLIDER_ORIENTATIONS,\n SLIDER_SIZES,\n SLIDER_VARIANTS,\n sliderSchema,\n sliderTickSchema,\n};\nexport type {\n SliderFormat,\n SliderOrientation,\n SliderProps,\n SliderSize,\n SliderTickProps,\n SliderVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {clamp} from '../../utils';\nimport type {SliderProps} from './contract';\n\ntype SliderThumbName = 'single' | 'lower' | 'upper';\ntype SliderValues = {lower: number; upper: number};\ntype SliderContext = {\n value: SliderValues;\n interaction: {activeThumb: SliderThumbName | null};\n};\n\ntype SliderMachineEffects = {\n sync(scope: MachineScope<SliderContext, SliderProps>): void;\n beginDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n endDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n emitInput(scope: MachineScope<SliderContext, SliderProps>): void;\n emitChange(scope: MachineScope<SliderContext, SliderProps>): void;\n};\n\ntype CreateSliderMachineOptions = {\n props: SliderProps;\n context: SliderContext;\n effects: SliderMachineEffects;\n};\n\nconst sliderHooks = [] as const;\n\nconst roundToStep = (value: number, min: number, step: number): number => {\n if (!Number.isFinite(step) || step <= 0) return value;\n const stepped = Math.round((value - min) / step) * step + min;\n const decimals = Math.max(0, `${step}`.split('.')[1]?.length ?? 0);\n return Number(stepped.toFixed(decimals));\n};\n\nconst sliderBounds = (props: SliderProps): {min: number; max: number; step: number; bigStep: number} => {\n const min = Math.min(props.min, props.max);\n const max = Math.max(props.min, props.max);\n const step = props.step > 0 ? props.step : 1;\n const bigStep = props.bigStep > 0 ? props.bigStep : step * 10;\n return {min, max, step, bigStep};\n};\n\nconst parseNumber = (value: unknown, fallback: number): number => {\n const parsed = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst normalizeSliderValues = (\n props: SliderProps,\n values: SliderValues,\n changedThumb?: SliderThumbName | null,\n): SliderValues => {\n const {min, max, step} = sliderBounds(props);\n let lower = roundToStep(clamp(parseNumber(values.lower, min), min, max), min, step);\n let upper = roundToStep(clamp(parseNumber(values.upper, max), min, max), min, step);\n if (!props.range) return {lower, upper: lower};\n if (lower > upper) [lower, upper] = [upper, lower];\n\n const minDistance = Math.max(0, props.minStepsBetween) * step;\n if (upper - lower < minDistance) {\n if (changedThumb === 'lower') lower = clamp(roundToStep(upper - minDistance, min, step), min, max);\n else upper = clamp(roundToStep(lower + minDistance, min, step), min, max);\n }\n return {lower, upper};\n};\n\nconst sliderValuesFromString = (props: SliderProps, value: string): SliderValues => {\n const {min, max} = sliderBounds(props);\n const parts = value.split(',').map((part) => part.trim());\n return normalizeSliderValues(props, {\n lower: parseNumber(parts[0], min),\n upper: props.range ? parseNumber(parts[1], max) : parseNumber(parts[0], min),\n });\n};\n\nconst initialSliderValues = (props: SliderProps): SliderValues => (\n sliderValuesFromString(props, props.value || props.defaultValue || String(sliderBounds(props).min))\n);\n\nconst eventThumb = (event: MachineEventObject): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n);\nconst eventValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n if (Array.isArray(scope.event.values)) {\n return normalizeSliderValues(scope.props, {\n lower: parseNumber(scope.event.values[0], scope.context.value.lower),\n upper: parseNumber(scope.event.values[1], scope.context.value.upper),\n }, eventThumb(scope.event));\n }\n const thumb = eventThumb(scope.event) ?? scope.context.interaction.activeThumb ?? 'single';\n const value = parseNumber(scope.event.value, thumb === 'upper' ? scope.context.value.upper : scope.context.value.lower);\n return normalizeSliderValues(scope.props, {\n lower: thumb === 'upper' ? scope.context.value.lower : value,\n upper: thumb === 'upper' ? value : scope.context.value.upper,\n }, thumb);\n};\nconst nextProps = (scope: MachineScope<SliderContext, SliderProps>): SliderProps => {\n const next = propsChangedEvent<SliderProps>(scope.event)?.props;\n return next ? {...next, range: scope.props.range, defaultValue: scope.props.defaultValue} : scope.props;\n};\nconst propsValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n const props = nextProps(scope);\n return propsChanged<SliderProps>(scope.event, 'value')\n ? sliderValuesFromString(props, props.value || props.defaultValue || String(sliderBounds(props).min))\n : normalizeSliderValues(props, scope.context.value);\n};\nconst thumbIs = (thumb: SliderThumbName) => ({event}: MachineScope<SliderContext, SliderProps>): boolean => event.thumb === thumb;\nconst becomesDisabled = (scope: MachineScope<SliderContext, SliderProps>): boolean => nextProps(scope).disabled;\n\nconst createSliderMachine = ({props, context, effects}: CreateSliderMachineOptions): Machine<SliderContext, SliderProps> => createMachine<SliderContext, SliderProps>({\n initial: 'idle',\n on: {\n INPUT_CHANGED: {reduce: 'setEventValue', effects: 'sync'},\n INPUT_COMMITTED: {reduce: 'setEventValue', effects: 'sync'},\n KEY_STEPPED: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n API_SET: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n },\n states: {\n idle: {\n tags: ['idle'],\n on: {\n POINTER_STARTED: [\n {target: 'dragging.single', guard: thumbIs('single'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.lower', guard: thumbIs('lower'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.upper', guard: thumbIs('upper'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n ],\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n dragging: {\n initial: 'single',\n tags: ['dragging'],\n on: {\n POINTER_MOVED: {reduce: 'setEventValue', effects: ['sync', 'emitInput']},\n POINTER_ENDED: {target: 'idle', reduce: 'endDrag', effects: ['endDrag', 'sync', 'emitChange']},\n PROPS_CHANGED: [\n {target: 'idle', guard: becomesDisabled, reduce: 'reconcileProps', effects: ['endDrag', 'sync']},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n single: {tags: ['dragging-single']},\n lower: {tags: ['dragging-lower']},\n upper: {tags: ['dragging-upper']},\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n setEventValue: (scope) => ({context: {...scope.context, value: eventValues(scope)}}),\n startDrag: (scope) => ({\n context: {\n value: eventValues(scope),\n interaction: {activeThumb: eventThumb(scope.event)},\n },\n }),\n endDrag: (scope) => ({context: {...scope.context, interaction: {activeThumb: null}}}),\n reconcileProps: (scope) => ({\n props: nextProps(scope),\n context: {...scope.context, value: propsValues(scope)},\n }),\n },\n effects,\n});\n\nexport {\n createSliderMachine,\n initialSliderValues,\n normalizeSliderValues,\n sliderBounds,\n sliderHooks,\n};\nexport type {\n CreateSliderMachineOptions,\n SliderContext,\n SliderMachineEffects,\n SliderThumbName,\n SliderValues,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {syncControlPresence, syncNativeControl, syncRepeatedHiddenInputs} from '@client/runtime/form-control';\nimport {addListener, clamp, setPresence} from '@client/utils';\nimport {sliderSchema, type SliderProps} from './contract';\nimport {\n createSliderMachine,\n initialSliderValues,\n sliderBounds,\n type SliderContext,\n sliderHooks,\n type SliderThumbName,\n type SliderValues,\n} from './machine';\n\ntype SliderElements = {\n root: HTMLElement;\n track: HTMLElement | null;\n range: HTMLElement | null;\n lowerInput: HTMLInputElement | null;\n upperInput: HTMLInputElement | null;\n singleInput: HTMLInputElement | null;\n lowerThumb: HTMLElement | null;\n upperThumb: HTMLElement | null;\n singleThumb: HTMLElement | null;\n value: HTMLElement | null;\n hiddenInputs: HTMLElement | null;\n ticks: HTMLElement[];\n};\n\n/**\n * Public Alpine API for `ui.slider`.\n *\n * @public\n */\ninterface UiSliderApi {\n /** Current normalized values: one item for single mode, lower and upper for range mode. */\n readonly values: readonly number[];\n /** Set and commit a normalized single value or lower/upper range. */\n setValue(value: number | readonly [number, number]): void;\n}\n\ntype SliderData = AlpineMachine<SliderContext, SliderProps, typeof sliderHooks> & UiSliderApi & {\n init(): void;\n destroy(): void;\n};\n\nconst parseValue = (value: string, fallback: number): number => {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst percentFor = (value: number, min: number, max: number): number => {\n if (max <= min) return 0;\n return clamp(((value - min) / (max - min)) * 100, 0, 100);\n};\n\nconst formatValue = (props: SliderProps, values: SliderValues): string => {\n const formatOne = (value: number): string => props.format === 'percent' ? `${Math.round(value)}%` : String(value);\n return props.range ? `${formatOne(values.lower)} - ${formatOne(values.upper)}` : formatOne(values.lower);\n};\n\nconst valueFromPointer = (root: HTMLElement, event: PointerEvent, props: SliderProps): number => {\n const {min, max, step} = sliderBounds(props);\n const rect = root.getBoundingClientRect();\n const ratio = props.orientation === 'vertical'\n ? 1 - ((event.clientY - rect.top) / Math.max(rect.height, 1))\n : (event.clientX - rect.left) / Math.max(rect.width, 1);\n const value = clamp(min + clamp(ratio, 0, 1) * (max - min), min, max);\n const stepped = Math.round((value - min) / step) * step + min;\n const decimals = Math.max(0, `${step}`.split('.')[1]?.length ?? 0);\n return Number(stepped.toFixed(decimals));\n};\n\nconst nearestThumb = (value: number, values: SliderValues): SliderThumbName => (\n Math.abs(value - values.lower) <= Math.abs(value - values.upper) ? 'lower' : 'upper'\n);\n\nconst setThumbPresence = (thumb: HTMLElement | null, present: boolean, disabled: boolean, invalid: boolean): void => {\n if (!thumb) return;\n setPresence({el: thumb, attr: 'data-focus', present});\n setPresence({el: thumb, attr: 'data-disabled', present: disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: invalid});\n};\n\nconst syncInput = ({\n input,\n props,\n value,\n min,\n max,\n label,\n valueText,\n nativeRequired,\n}: {\n input: HTMLInputElement | null;\n props: SliderProps;\n value: number;\n min: number;\n max: number;\n label: string;\n valueText: string;\n nativeRequired: boolean;\n}): void => {\n if (!input) return;\n input.min = String(min);\n input.max = String(max);\n input.step = String(props.step > 0 ? props.step : 1);\n syncNativeControl({input, state: {\n name: props.range ? '' : props.name,\n value: String(value),\n disabled: props.disabled,\n required: props.required,\n nativeRequired,\n invalid: props.invalid,\n }});\n input.setAttribute('aria-valuemin', String(min));\n input.setAttribute('aria-valuemax', String(max));\n input.setAttribute('aria-valuenow', String(value));\n if (valueText) input.setAttribute('aria-valuetext', valueText);\n else input.removeAttribute('aria-valuetext');\n if (label) input.setAttribute('aria-label', label);\n if (props.orientation === 'vertical') input.setAttribute('aria-orientation', 'vertical');\n else input.removeAttribute('aria-orientation');\n};\n\nconst writeGeometry = (props: SliderProps, elements: SliderElements, values: SliderValues): void => {\n const {min, max} = sliderBounds(props);\n const lowerPercent = percentFor(values.lower, min, max);\n const upperPercent = percentFor(values.upper, min, max);\n const start = props.range ? lowerPercent : 0;\n const end = props.range ? upperPercent : lowerPercent;\n\n elements.root.style.setProperty('--ui-slider-lower-percent', `${lowerPercent}%`);\n elements.root.style.setProperty('--ui-slider-upper-percent', `${upperPercent}%`);\n if (props.orientation === 'vertical') {\n if (elements.range) {\n elements.range.style.bottom = `${start}%`;\n elements.range.style.height = `${Math.max(0, end - start)}%`;\n elements.range.style.left = '';\n elements.range.style.width = '';\n }\n if (elements.singleThumb) elements.singleThumb.style.bottom = `${lowerPercent}%`;\n if (elements.lowerThumb) elements.lowerThumb.style.bottom = `${lowerPercent}%`;\n if (elements.upperThumb) elements.upperThumb.style.bottom = `${upperPercent}%`;\n } else {\n if (elements.range) {\n elements.range.style.left = `${start}%`;\n elements.range.style.width = `${Math.max(0, end - start)}%`;\n elements.range.style.bottom = '';\n elements.range.style.height = '';\n }\n if (elements.singleThumb) elements.singleThumb.style.left = `${lowerPercent}%`;\n if (elements.lowerThumb) elements.lowerThumb.style.left = `${lowerPercent}%`;\n if (elements.upperThumb) elements.upperThumb.style.left = `${upperPercent}%`;\n }\n\n elements.ticks.forEach((tick) => {\n const tickPercent = percentFor(parseValue(tick.dataset.value ?? '', min), min, max);\n if (props.orientation === 'vertical') {\n tick.style.bottom = `${tickPercent}%`;\n tick.style.left = '';\n } else {\n tick.style.left = `${tickPercent}%`;\n tick.style.bottom = '';\n }\n });\n};\n\nconst UiSlider = (): TrellisAlpineComponent<SliderData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupManager;\n let hiddenInputsKey = '';\n let pointerId: number | null = null;\n let dispatchingNative = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Slider has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<SliderContext, SliderProps> => bridge.getCommittedSnapshot();\n const currentProps = (): Readonly<SliderProps> => currentSnapshot().props;\n const currentValues = (): Readonly<SliderValues> => currentSnapshot().context.value;\n const elements = (): SliderElements => {\n const slider = root();\n const interactiveRoot = slider.querySelector<HTMLElement>('[data-ui-slider-root]');\n if (!interactiveRoot) throw new Error('Slider requires a root element.');\n return {\n root: interactiveRoot,\n track: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-track]'),\n range: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-range]'),\n lowerInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"lower\"]'),\n upperInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"upper\"]'),\n singleInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"single\"]'),\n lowerThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"lower\"]'),\n upperThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"upper\"]'),\n singleThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"single\"]'),\n value: slider.querySelector<HTMLElement>('[data-ui-slider-value]'),\n hiddenInputs: slider.querySelector<HTMLElement>('[data-ui-slider-hidden-inputs]'),\n ticks: Array.from(slider.querySelectorAll<HTMLElement>('[data-ui-slider-tick]')),\n };\n };\n const inputFor = (thumb: SliderThumbName | null, parts = elements()): HTMLInputElement | null => {\n if (thumb === 'upper') return parts.upperInput;\n if (thumb === 'lower') return parts.lowerInput;\n return parts.singleInput;\n };\n const thumbFromInput = (input: HTMLInputElement): SliderThumbName => {\n if (input.dataset.thumb === 'upper') return 'upper';\n if (input.dataset.thumb === 'lower') return 'lower';\n return 'single';\n };\n\n const syncDom = (): void => {\n const props = currentProps();\n const values = currentValues();\n const parts = elements();\n const {min, max} = sliderBounds(props);\n reflectSchemaProp({\n el: root(),\n schema: sliderSchema,\n key: 'value',\n value: props.range ? `${values.lower},${values.upper}` : String(values.lower),\n });\n syncInput({\n input: parts.singleInput,\n props,\n value: values.lower,\n min,\n max,\n label: props.label,\n valueText: props.valueText,\n nativeRequired: props.required,\n });\n syncInput({\n input: parts.lowerInput,\n props,\n value: values.lower,\n min,\n max: props.range ? values.upper : max,\n label: props.lowerLabel,\n valueText: props.lowerValueText,\n nativeRequired: false,\n });\n syncInput({\n input: parts.upperInput,\n props,\n value: values.upper,\n min: props.range ? values.lower : min,\n max,\n label: props.upperLabel,\n valueText: props.upperValueText,\n nativeRequired: false,\n });\n writeGeometry(props, parts, values as SliderValues);\n if (parts.value) parts.value.textContent = formatValue(props, values as SliderValues);\n syncControlPresence({el: root(), state: props});\n syncControlPresence({el: parts.root, state: props});\n if (parts.track) syncControlPresence({el: parts.track, state: {disabled: props.disabled, invalid: props.invalid}});\n if (parts.range) syncControlPresence({el: parts.range, state: {disabled: props.disabled, invalid: props.invalid}});\n setThumbPresence(parts.singleThumb, parts.singleInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.lowerThumb, parts.lowerInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.upperThumb, parts.upperInput === document.activeElement, props.disabled, props.invalid);\n if (props.range && parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: [String(values.lower), String(values.upper)],\n required: props.required,\n marker: 'data-ui-slider-hidden-input',\n }});\n } else if (parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: '',\n values: [],\n marker: 'data-ui-slider-hidden-input',\n }});\n }\n };\n\n const eventThumb = (event: {thumb?: unknown}): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n );\n const emitNative = (name: 'input' | 'change', snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {thumb?: unknown; type: string}): void => {\n const parts = elements();\n const inputs = event.type === 'API_SET' && currentProps().range\n ? [parts.lowerInput, parts.upperInput]\n : [inputFor(eventThumb(event) ?? snapshot.context.interaction.activeThumb, parts)];\n dispatchingNative = true;\n try {\n inputs.forEach((input) => input?.dispatchEvent(new Event(name, {bubbles: true})));\n } finally {\n dispatchingNative = false;\n }\n };\n const beginDrag = (snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {type: string; [key: string]: unknown}): void => {\n const parts = elements();\n const thumb = snapshot.context.interaction.activeThumb;\n inputFor(thumb, parts)?.focus();\n pointerId = typeof event.pointerId === 'number' ? event.pointerId : null;\n if (pointerId === null) return;\n try {\n parts.root.setPointerCapture(pointerId);\n } catch {\n bridge.send({type: 'POINTER_ENDED', thumb});\n }\n };\n const endDrag = (): void => {\n if (pointerId === null) return;\n try {\n elements().root.releasePointerCapture(pointerId);\n } catch {\n // Capture cleanup is best-effort after interruption.\n }\n pointerId = null;\n };\n\n const bridge = createAlpineMachine({\n schema: sliderSchema,\n hooks: sliderHooks,\n createMachine: ({props}) => createSliderMachine({\n props,\n context: {value: initialSliderValues(props), interaction: {activeThumb: null}},\n effects: {\n sync: syncDom,\n beginDrag: ({snapshot, event}) => beginDrag(snapshot, event),\n endDrag,\n emitInput: ({snapshot, event}) => emitNative('input', snapshot, event),\n emitChange: ({snapshot, event}) => emitNative('change', snapshot, event),\n },\n }),\n });\n\n const handleInput = (event: Event, committed: boolean): void => {\n if (dispatchingNative || !(event.target instanceof HTMLInputElement)) return;\n bridge.send({\n type: committed ? 'INPUT_COMMITTED' : 'INPUT_CHANGED',\n thumb: thumbFromInput(event.target),\n value: event.target.value,\n });\n };\n const handleKeydown = (event: KeyboardEvent): void => {\n if (!(event.target instanceof HTMLInputElement)) return;\n if (!['PageUp', 'PageDown'].includes(event.key) && !(event.shiftKey && event.key.startsWith('Arrow'))) return;\n event.preventDefault();\n const direction = ['PageDown', 'ArrowDown', 'ArrowLeft'].includes(event.key) ? -1 : 1;\n const thumb = thumbFromInput(event.target);\n bridge.send({\n type: 'KEY_STEPPED',\n thumb,\n value: parseValue(event.target.value, sliderBounds(currentProps()).min) + direction * sliderBounds(currentProps()).bigStep,\n });\n };\n const handlePointerDown = (event: PointerEvent): void => {\n if (currentProps().disabled) return;\n const value = valueFromPointer(elements().root, event, currentProps());\n const thumb = currentProps().range ? nearestThumb(value, currentValues() as SliderValues) : 'single';\n bridge.send({type: 'POINTER_STARTED', value, thumb, pointerId: event.pointerId});\n event.preventDefault();\n };\n const handlePointerMove = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({\n type: 'POINTER_MOVED',\n value: valueFromPointer(elements().root, event, currentProps()),\n thumb: currentSnapshot().context.interaction.activeThumb,\n });\n };\n const handlePointerUp = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({type: 'POINTER_ENDED', thumb: currentSnapshot().context.interaction.activeThumb});\n };\n\n let component!: TrellisAlpineComponent<SliderData>;\n component = {\n ...bridge,\n get values(): readonly number[] {\n const snapshot = this.snapshot.current;\n if (!snapshot) return [];\n return snapshot.props.range\n ? [snapshot.context.value.lower, snapshot.context.value.upper]\n : [snapshot.context.value.lower];\n },\n setValue(value: number | readonly [number, number]): void {\n bridge.send({type: 'API_SET', values: Array.isArray(value) ? value : [value]});\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const parts = elements();\n [parts.singleInput, parts.lowerInput, parts.upperInput].forEach((input) => {\n if (!input) return;\n addListener({target: input, event: 'input', handler: (event) => handleInput(event, false), cleanup});\n addListener({target: input, event: 'change', handler: (event) => handleInput(event, true), cleanup});\n addListener({target: input, event: 'keydown', handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }, cleanup});\n addListener({target: input, event: 'focus', handler: syncDom, cleanup});\n addListener({target: input, event: 'blur', handler: syncDom, cleanup});\n });\n addListener({target: parts.root, event: 'pointerdown', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerDown(event);\n }, cleanup});\n addListener({target: parts.root, event: 'pointermove', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerMove(event);\n }, cleanup});\n addListener({target: parts.root, event: 'pointerup', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup});\n addListener({target: parts.root, event: 'pointercancel', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup});\n syncDom();\n },\n destroy(): void {\n endDrag();\n bridge.disconnect();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerSlider = defineAlpineData('UiSlider', UiSlider);\n\nexport {registerSlider, UiSlider};\nexport type {SliderData, SliderElements, SliderThumbName, SliderValues, UiSliderApi};\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 {registerSlider as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSlider = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSlider};\nexport default registerSlider;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{s as e,t}from"./dom-DiTFTWeR.js";import{f as n,l as r,n as i}from"./codecs-CQ7olTJL.js";import{t as a}from"./alpine-machine-CE2UN4Qu.js";import{n as o,t as s}from"./alpine-data-Dvc_bXq6.js";import{t as c}from"./machine-CNnHDbyo.js";import{n as l}from"./props-change-2xfsIAEN.js";import{n as u,r as d}from"./form-control-DL1Hkox3.js";import{_ as f,c as p,o as m,r as h}from"./common-De1R7Xh6.js";var g=m,_=p,v=h,y=f,b={type:n.default(`text`),name:n,value:n,placeholder:n,size:r(g,`lg`),variant:r(_,`outline`),radius:r(v,`md`),disabled:i,readonly:i,required:i,invalid:i,icon:n,iconTrailing:n,iconVariant:r(y,`outline`),clearable:i,copyable:i,keys:n,prefix:n,suffix:n,rootClass:n,controlClass:n,class:n};r(g,`lg`),r(_,`outline`),r(v,`md`);var x=[],S=e=>typeof e.value==`string`?e.value:``,C=e=>({context:{value:S(e.event)}}),w=()=>({context:{value:``}}),T=e=>{let t=l(e.event);if(!t)return;let n=t.changes.some(({key:e})=>e===`value`);return{props:t.props,context:n?{value:t.props.value}:e.context}},E=({props:e,effects:t})=>c({initial:`idle`,on:{VALUE_CHANGED:{reduce:`setValue`,effects:`sync`},CLEAR:{target:`idle`,reduce:`clearValue`,effects:[`sync`,`emitInput`,`emitChange`,`focus`]},COPY:{target:`copying`,effects:`copy`},PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}},states:{idle:{},copying:{on:{COPY_DONE:{target:`copied`,effects:[`sync`,`startCopiedTimer`]},COPY_ERROR:{target:`idle`,effects:`sync`}}},copied:{tags:[`copied`],on:{COPY:{target:`copying`,effects:`copy`},COPIED_TIMEOUT:{target:`idle`,effects:`sync`}}}}},{context:{value:e.value},props:e,reducers:{setValue:C,clearValue:w,reconcileProps:T},effects:t}),D=()=>{let n=null,r=null,i,o=null,c=!1,l=()=>{if(!n)throw Error(`Input has not been initialized.`);return n},f=()=>{if(!r)throw Error(`Input requires a native input element.`);return r},p=()=>g.getCommittedSnapshot(),m=()=>{let t=p(),n=t.props,r=f();r.value!==t.context.value&&(r.value=t.context.value),r.type=n.type,n.placeholder?r.placeholder=n.placeholder:r.removeAttribute(`placeholder`),d({input:r,state:{name:n.name,disabled:n.disabled,readonly:n.readonly,required:n.required,invalid:n.invalid}}),u({el:l(),state:n,value:`true`});let i=l().querySelector(`[data-ui-input-control]`);i&&u({el:i,state:{disabled:n.disabled,invalid:n.invalid},value:`true`}),l().querySelectorAll(`[data-ui-input-clear]`).forEach(e=>{e.hidden=t.context.value.length===0,e instanceof HTMLButtonElement&&(e.disabled=n.disabled||n.readonly)}),l().querySelectorAll(`[data-ui-input-copy]`).forEach(r=>{r instanceof HTMLButtonElement&&(r.disabled=n.disabled),e({el:r,attr:`data-copied`,present:t.tags.includes(`copied`),value:`true`})}),e({el:l(),attr:`data-copied`,present:t.tags.includes(`copied`),value:`true`})},h=e=>{c=!0;try{f().dispatchEvent(new Event(e,{bubbles:!0}))}finally{c=!1}},g=a({schema:b,hooks:x,createMachine:({props:e})=>E({props:e,effects:{sync:m,copy:e=>{(navigator.clipboard?.writeText(e.context.value)??Promise.resolve()).then(()=>g.send(`COPY_DONE`)).catch(()=>g.send(`COPY_ERROR`))},emitInput:()=>h(`input`),emitChange:()=>h(`change`),focus:()=>f().focus({preventScroll:!0}),startCopiedTimer:()=>{o!==null&&window.clearTimeout(o),o=window.setTimeout(()=>g.send(`COPIED_TIMEOUT`),1200)}}})});return{...g,init(){if(i=s(this),n=this.$el,r=l().querySelector(`[data-ui-input]`),!r)throw Error(`Input requires a native input element.`);g.connect(n,this.snapshot),t({target:r,event:`input`,handler:()=>{c||g.send({type:`VALUE_CHANGED`,value:f().value})},cleanup:i}),t({target:n,event:`click`,handler:e=>{let t=e.target;t instanceof Element&&(t.closest(`[data-ui-input-clear]`)?(e.preventDefault(),g.send(`CLEAR`)):t.closest(`[data-ui-input-copy]`)&&(e.preventDefault(),g.send(`COPY`)))},cleanup:i}),m()},destroy(){o!==null&&window.clearTimeout(o),o=null,g.disconnect(),n=null,r=null},get value(){return g.getCommittedSnapshot().context.value},clear(){!f().disabled&&!f().readOnly&&g.send(`CLEAR`)},copy(){f().disabled||g.send(`COPY`)}}},O=o(`UiInput`,D),k=new WeakSet,A=e=>{k.has(e)||(k.add(e),O(e))};export{D as n,A as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-iMJrYzAB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-iMJrYzAB.js","names":[],"sources":["../../../../../../../../client/src/components/input/contract.ts","../../../../../../../../client/src/components/input/machine.ts","../../../../../../../../client/src/components/input/index.ts","../../../../../../../../client/src/components/input/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n COMPONENT_RADII,\n ICON_VARIANTS,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type IconVariant,\n} from '../common';\n\nconst INPUT_SIZES = CONTROL_SIZES;\nconst INPUT_VARIANTS = CONTROL_VARIANTS;\nconst INPUT_RADII = COMPONENT_RADII;\nconst INPUT_ICON_VARIANTS = ICON_VARIANTS;\n\ntype InputSize = ControlSize;\ntype InputVariant = ControlVariant;\ntype InputRadius = ComponentRadius;\ntype InputIconVariant = IconVariant;\n\nconst inputSchema = {\n type: string.default('text'),\n name: string,\n value: string,\n placeholder: string,\n size: oneOf(INPUT_SIZES, 'lg' as InputSize),\n variant: oneOf(INPUT_VARIANTS, 'outline' as InputVariant),\n radius: oneOf(INPUT_RADII, 'md' as InputRadius),\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(INPUT_ICON_VARIANTS, 'outline' as InputIconVariant),\n clearable: bool,\n copyable: bool,\n keys: string,\n prefix: string,\n suffix: string,\n rootClass: string,\n controlClass: string,\n class: string,\n};\n\nconst inputGroupSchema = {\n size: oneOf(INPUT_SIZES, 'lg' as InputSize),\n variant: oneOf(INPUT_VARIANTS, 'outline' as InputVariant),\n radius: oneOf(INPUT_RADII, 'md' as InputRadius),\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n class: string,\n};\n\nconst inputAffixSchema = {\n class: string,\n};\n\ntype InputProps = SchemaToProps<typeof inputSchema>;\n\nexport {INPUT_ICON_VARIANTS, INPUT_RADII, INPUT_SIZES, INPUT_VARIANTS, inputAffixSchema, inputGroupSchema, inputSchema};\nexport type {InputIconVariant, InputProps, InputRadius, InputSize, InputVariant};\n","import {createMachine, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {InputProps} from './contract';\n\ntype InputContext = {value: string};\ntype InputEffects = {\n sync(scope: MachineScope<InputContext, InputProps>): void;\n copy(scope: MachineScope<InputContext, InputProps>): void;\n emitInput(scope: MachineScope<InputContext, InputProps>): void;\n emitChange(scope: MachineScope<InputContext, InputProps>): void;\n focus(scope: MachineScope<InputContext, InputProps>): void;\n startCopiedTimer(scope: MachineScope<InputContext, InputProps>): void;\n};\nconst inputHooks = [] as const;\nconst eventValue = (event: MachineEventObject): string => typeof event.value === 'string' ? event.value : '';\nconst setValue = (scope: MachineScope<InputContext, InputProps>) => ({context: {value: eventValue(scope.event)}});\nconst clearValue = () => ({context: {value: ''}});\nconst reconcileProps = (scope: MachineScope<InputContext, InputProps>) => {\n const event = propsChangedEvent<InputProps>(scope.event);\n if (!event) return;\n const valueChanged = event.changes.some(({key}) => key === 'value');\n return {props: event.props, context: valueChanged ? {value: event.props.value} : scope.context};\n};\n\nconst createInputMachine = ({props, effects}: {props: InputProps; effects: InputEffects}): Machine<InputContext, InputProps> => createMachine<InputContext, InputProps>({\n initial: 'idle',\n on: {\n VALUE_CHANGED: {reduce: 'setValue', effects: 'sync'},\n CLEAR: {target: 'idle', reduce: 'clearValue', effects: ['sync', 'emitInput', 'emitChange', 'focus']},\n COPY: {target: 'copying', effects: 'copy'},\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n states: {\n idle: {},\n copying: {on: {\n COPY_DONE: {target: 'copied', effects: ['sync', 'startCopiedTimer']},\n COPY_ERROR: {target: 'idle', effects: 'sync'},\n }},\n copied: {tags: ['copied'], on: {\n COPY: {target: 'copying', effects: 'copy'},\n COPIED_TIMEOUT: {target: 'idle', effects: 'sync'},\n }},\n },\n}, {\n context: {value: props.value},\n props,\n reducers: {setValue, clearValue, reconcileProps},\n effects,\n});\n\nexport {createInputMachine, inputHooks};\nexport type {InputContext, InputEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, defineAlpineData, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, setPresence} from '@client/utils';\nimport {inputSchema, type InputProps} from './contract';\nimport {createInputMachine, inputHooks, type InputContext} from './machine';\n\n/** Public Alpine API for `ui.input` and `ui.input.control`. @public */\ninterface UiInputApi {\n /** Current native input value. */\n readonly value: string;\n /** Clear the input, emit native input/change events, and restore focus. */\n clear(): void;\n /** Copy the current value to the clipboard. */\n copy(): void;\n}\n\ntype InputData = AlpineMachine<InputContext, InputProps, typeof inputHooks> & UiInputApi & {\n init(): void;\n destroy(): void;\n};\n\nconst UiInput = (): TrellisAlpineComponent<InputData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let cleanup: CleanupManager;\n let copiedTimer: number | null = null;\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Input has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Input requires a native input element.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<InputContext, InputProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const native = input();\n if (native.value !== current.context.value) native.value = current.context.value;\n native.type = props.type;\n if (props.placeholder) native.placeholder = props.placeholder;\n else native.removeAttribute('placeholder');\n syncNativeControl({input: native, state: {\n name: props.name,\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n invalid: props.invalid,\n }});\n syncControlPresence({el: root(), state: props, value: 'true'});\n const control = root().querySelector<HTMLElement>('[data-ui-input-control]');\n if (control) syncControlPresence({el: control, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n root().querySelectorAll<HTMLElement>('[data-ui-input-clear]').forEach((button) => {\n button.hidden = current.context.value.length === 0;\n if (button instanceof HTMLButtonElement) button.disabled = props.disabled || props.readonly;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-input-copy]').forEach((button) => {\n if (button instanceof HTMLButtonElement) button.disabled = props.disabled;\n setPresence({el: button, attr: 'data-copied', present: current.tags.includes('copied'), value: 'true'});\n });\n setPresence({el: root(), attr: 'data-copied', present: current.tags.includes('copied'), value: 'true'});\n };\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatching = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatching = false; }\n };\n const bridge = createAlpineMachine({\n schema: inputSchema,\n hooks: inputHooks,\n createMachine: ({props}) => createInputMachine({props, effects: {\n sync: syncDom,\n copy: (scope) => {\n const write = navigator.clipboard?.writeText(scope.context.value) ?? Promise.resolve();\n void write.then(() => bridge.send('COPY_DONE')).catch(() => bridge.send('COPY_ERROR'));\n },\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n focus: () => input().focus({preventScroll: true}),\n startCopiedTimer: () => {\n if (copiedTimer !== null) window.clearTimeout(copiedTimer);\n copiedTimer = window.setTimeout(() => bridge.send('COPIED_TIMEOUT'), 1200);\n },\n }}),\n });\n\n return {\n ...bridge,\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-input]');\n if (!inputEl) throw new Error('Input requires a native input element.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'input', handler: () => {\n if (!dispatching) bridge.send({type: 'VALUE_CHANGED', value: input().value});\n }, cleanup});\n addListener({target: rootEl, event: 'click', handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-input-clear]')) {\n event.preventDefault();\n bridge.send('CLEAR');\n } else if (target.closest('[data-ui-input-copy]')) {\n event.preventDefault();\n bridge.send('COPY');\n }\n }, cleanup});\n syncDom();\n },\n destroy(): void {\n if (copiedTimer !== null) window.clearTimeout(copiedTimer);\n copiedTimer = null;\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get value(): string {\n return bridge.getCommittedSnapshot().context.value;\n },\n clear(): void {\n if (!input().disabled && !input().readOnly) bridge.send('CLEAR');\n },\n copy(): void {\n if (!input().disabled) bridge.send('COPY');\n },\n };\n};\n\nconst registerInput = defineAlpineData('UiInput', UiInput);\n\nexport {registerInput, UiInput};\nexport type {InputData, UiInputApi};\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 {registerInput as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerInput = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerInput};\nexport default registerInput;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./dom-DiTFTWeR.js";import{r as n,t as r}from"./capability-motion-C3q5Xzv2.js";import{n as i}from"./morph-Cq3V_23_.js";import{f as a,l as o,n as s,o as c,u as l}from"./codecs-CQ7olTJL.js";import{i as u,t as ee}from"./alpine-machine-CE2UN4Qu.js";import{t as te}from"./cleanup-manager-D9QiZF_Q.js";import{n as d,t as f}from"./alpine-data-Dvc_bXq6.js";import{n as p,t as m}from"./styles-CX2j92ex.js";import{t as h}from"./merge-bindings-BtqW3UgP.js";import{t as g}from"./machine-CNnHDbyo.js";import{t as _}from"./dismissable-layer-BROE-Ln2.js";import{a as ne,i as re,n as v,o as ie,t as y}from"./focus-scope-DtaPVNl5.js";import{t as ae}from"./scroll-lock-C5dQtr4Y.js";import{d as b,g as x,u as S,z as C}from"./common-De1R7Xh6.js";import{t as w}from"./controlled-open-Hy4-OT-6.js";import{i as T,r as E}from"./focus-handoff-BE3g0swK.js";var D=[`modal`,`sheet`],O=S,k=[`sm`,`md`,`lg`,`xl`,`full`],A=C,j=b,M=x,N={name:a,open:s,mode:o(D,`modal`),side:o(O,`right`),size:o(k,`md`),surface:o(A,`1`),elevation:o(j,`5`),dismissible:s.default(!0),closable:s.default(!0),disabled:s,autofocusTitle:s,label:a,descriptionId:a,panelClass:a,overlayClass:a,class:a},P={name:a,disabled:s,class:a};a.default(`ui-modal-root`),o(M,`h2`),a.default(`Close`);var oe=[u({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),u({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],F=w(),se=({props:e,effects:t})=>g({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:F.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},CANCEL:{target:`closing`,guard:`canDismiss`,effects:[`emitCancel`,`prepareClose`]},PROPS_CHANGED:[{target:`closing`,guard:F.shouldClose,reduce:`replaceProps`,effects:[`syncProps`,`prepareClose`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},CANCEL:{target:`closing`,guard:`canDismiss`,effects:[`emitCancel`,`prepareClose`]},PROPS_CHANGED:[{target:`closing`,guard:F.shouldClose,reduce:`replaceProps`,effects:[`syncProps`,`prepareClose`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:F.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{},props:e,reducers:{replaceProps:F.replace},guards:{canOpen:({props:e})=>!e.disabled,canDismiss:({props:e})=>e.dismissible},effects:{prepareOpen:t.prepareOpen,finishOpen:t.finishOpen,prepareClose:t.prepareClose,finishClose:t.finishClose,syncProps:t.syncProps,emitCancel:({event:e})=>{(e.reason===`escape`||e.reason===`outside`)&&t.emitCancel(e.reason)}}}),I=[`grid-rows-[auto_auto_minmax(0,1fr)_auto]`,`[&>[data-ui-modal-body]]:-mx-1 [&>[data-ui-modal-body]]:min-h-0 [&>[data-ui-modal-body]]:content-start`,`[&>[data-ui-modal-body]]:overflow-x-hidden [&>[data-ui-modal-body]]:overflow-y-auto [&>[data-ui-modal-body]]:px-1`,`[&>[data-ui-modal-footer]]:self-end`],L=m({definition:{component:`ui.modal`,parts:{instance:{base:`contents`},root:{base:[`fixed inset-0 z-dialog m-0 h-auto max-h-none w-auto max-w-none overflow-visible border-0 bg-transparent p-0 text-surface-ink`,`backdrop:bg-transparent`]},viewport:{base:`fixed inset-0 z-dialog flex min-h-dvh`,variants:{mode:{modal:`items-center justify-center overflow-y-auto p-4`,sheet:``},side:{top:``,right:``,bottom:``,left:``}},compounds:[{when:{mode:`sheet`,side:`top`},class:`items-start justify-center`},{when:{mode:`sheet`,side:`right`},class:`items-center justify-end overflow-hidden`},{when:{mode:`sheet`,side:`bottom`},class:`items-end justify-center`},{when:{mode:`sheet`,side:`left`},class:`items-center justify-start overflow-hidden`}],defaults:{mode:`modal`,side:`right`}},overlay:{base:`fixed inset-0 bg-scrim`},panel:{base:[`relative z-dialog grid w-full min-w-0 gap-4 overflow-auto p-5 outline-none`,`max-h-full`],variants:{mode:{modal:`rounded-overlay-md`,sheet:``},side:{top:``,right:``,bottom:``,left:``},size:{sm:`max-w-modal-sm`,md:`max-w-modal-md`,lg:`max-w-modal-lg`,xl:`max-w-modal-xl`,full:`max-w-full`}},compounds:[{when:{mode:`sheet`,side:`right`},class:[`min-h-dvh rounded-l-overlay-md`,I]},{when:{mode:`sheet`,side:`left`},class:[`min-h-dvh rounded-r-overlay-md`,I]},{when:{mode:`sheet`,side:`top`},class:`max-w-full rounded-b-overlay-md`},{when:{mode:`sheet`,side:`bottom`},class:`max-w-full rounded-t-overlay-md`}],defaults:{mode:`modal`,side:`right`,size:`md`}},trigger:{base:`contents`},outlet:{base:``},title:{base:`pr-8`},description:{base:`-mt-3 pr-8 text-surface-ink-muted`},body:{base:`grid min-w-0 gap-3 text-sm`},footer:{base:`flex min-w-0 items-center justify-end gap-2 pt-1`},close:{base:[`absolute right-3 top-3 inline-flex size-control-md items-center justify-center rounded-full border border-transparent text-surface-ink-muted outline-none`,`hover:bg-interaction-hover focus-visible:ui-focus-ring`]},closeIcon:{base:`size-icon fill-current`}}}}),R=new Set,z=new Set,B=e=>e?`open`:`closed`,V=e=>e===`opening`||e===`open`,H=e=>Array.from(R).find(t=>t.name===e)??null,U=(e,t)=>{e.setAttribute(`data-state`,B(t)),e.setAttribute(`aria-expanded`,t?`true`:`false`)},W=()=>{let r=null,a=``,o=null,s=!1,c=!1,u=null,d=!1,m,g=null,b=null,x=null,S=()=>{if(!r)throw Error(`Modal has not been initialized.`);return r},C=()=>{let e=S().querySelector(`[data-ui-modal]`);if(!(e instanceof HTMLDialogElement))throw Error(`Modal requires a dialog element.`);return e},w=()=>{let e=S().querySelector(`[data-ui-modal-viewport]`);if(!e)throw Error(`Modal requires a viewport element.`);return e},D=()=>{let e=S().querySelector(`[data-ui-modal-overlay]`);if(!e)throw Error(`Modal requires an overlay element.`);return e},O=()=>{let e=S().querySelector(`[data-ui-modal-panel]`);if(!e)throw Error(`Modal requires a panel element.`);return e},k=()=>S().querySelector(`[data-ui-modal-title]`),A=()=>S().querySelector(`[data-ui-modal-description]`),j=()=>{let e=I();C().className=p({part:L.parts.root,props:e,className:e.class}),w().className=p({part:L.parts.viewport,props:e}),D().className=p({part:L.parts.overlay,props:e,className:e.overlayClass}),O().className=p({part:L.parts.panel,props:e,className:e.panelClass})},M=()=>{let e=I(),t=b===e.mode&&e.open&&C().open&&Y.matches(`open`);x?.update(j,{animate:t,key:`${e.mode}:${e.size}`}),b=e.mode},P=()=>Array.from(S().children).find(e=>e instanceof HTMLElement&&e.matches(`[data-ui-modal-trigger]`))??null,F=()=>re(O()),I=()=>Y.getCommittedSnapshot().props,H=()=>Y.matches(`opening`)||Y.matches(`open`),W=(e,t)=>{if(U(e,H()),e.setAttribute(`aria-controls`,a),e.setAttribute(`data-ui-modal-trigger-target`,a),t||I().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e instanceof HTMLButtonElement&&(e.disabled=!0),e.matches(y)||(e.tabIndex=-1);return}e.removeAttribute(`aria-disabled`),e.removeAttribute(`data-disabled`),e instanceof HTMLButtonElement&&(e.disabled=!1),e.matches(y)||(e.tabIndex=0)},G=()=>{let e=P();e&&W(v(e),I().disabled),z.forEach(e=>e.sync())},K=()=>{let e=I(),t=C(),n=O(),r=k(),i=A();t.id=a,t.setAttribute(`role`,`dialog`),t.setAttribute(`aria-modal`,`true`),n.id||=`${a}-panel`,n.tabIndex=-1,r?(r.id||=`${a}-title`,t.setAttribute(`aria-labelledby`,r.id),t.removeAttribute(`aria-label`),e.autofocusTitle?r.tabIndex=-1:r.removeAttribute(`tabindex`)):(t.removeAttribute(`aria-labelledby`),e.label?t.setAttribute(`aria-label`,e.label):t.removeAttribute(`aria-label`)),i&&(i.id||=`${a}-description`),e.descriptionId===`none`?t.removeAttribute(`aria-describedby`):e.descriptionId?t.setAttribute(`aria-describedby`,e.descriptionId):i?t.setAttribute(`aria-describedby`,i.id):t.removeAttribute(`aria-describedby`)},q=({syncOpen:e=!0}={})=>{let t=H(),n=B(t);e&&l({el:S(),schema:N,key:`open`,value:t}),[C(),w(),D(),O()].forEach(e=>{e.setAttribute(`data-state`,n)}),G()},J=()=>{if(s){E(O());return}let e=O().querySelector(`[autofocus]`);if(e&&ne(e)){e.focus({preventScroll:!0});return}let t=k();if(I().autofocusTitle&&t){t.focus({preventScroll:!0});return}let n=F()[0];if(n){n.focus({preventScroll:!0});return}O().focus({preventScroll:!0})},ce=()=>{o&&document.contains(o)&&o!==o.ownerDocument.activeElement&&(s?E(o):o.focus({preventScroll:!0}))},le=e=>{Y.hasTag(`interactive`)&&ie(e,O())},ue=()=>{x?.refresh({animate:!1});let e=C();typeof e.showModal==`function`&&!c?(e.open&&e.removeAttribute(`open`),e.showModal(),c=!0):e.open||e.setAttribute(`open`,``),u??=ae(e.ownerDocument),K(),q(),queueMicrotask(J)},de=()=>{x?.refresh({animate:!1});let t=O();t.style.removeProperty(`transform`),t.style.removeProperty(`translate`),t.style.removeProperty(`scale`),t.style.removeProperty(`rotate`),b=I().mode,q(),e({el:C(),name:`ui:open`})},fe=()=>{x?.refresh({animate:!1}),q()},pe=()=>{x?.refresh({animate:!1});let t=C();t.open&&t.close(),c=!1,u?.(),u=null,q(),b=null,ce(),s=!1,e({el:t,name:`ui:close`})},me=()=>{M(),K(),G()},Y=ee({schema:N,hooks:oe,createMachine:({props:t})=>se({props:t,effects:{prepareOpen:ue,finishOpen:de,prepareClose:fe,finishClose:pe,syncProps:me,emitCancel:t=>{e({el:C(),name:`ui:cancel`,detail:{reason:t}})}}})}),X=e=>{I().disabled||(o=e,s=T(e.ownerDocument),Y.send(`OPEN`))},Z=(e,t)=>{t?.preventDefault(),Y.send({type:`CANCEL`,reason:e})},he=()=>{g?.run(),g=null},ge=e=>{let n=v(e);he(),g=new te,m.addChild(g),W(n,I().disabled),t({target:n,event:`click`,handler:()=>X(n),cleanup:g}),t({target:n,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(n instanceof HTMLButtonElement||n instanceof HTMLAnchorElement||(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),X(n)))},cleanup:g})},_e=()=>{let e=C(),t=e.querySelector(`[data-ui-modal-trigger]`);t&&!t.dataset.name&&(S().insertBefore(t,e),ge(t))},ve=()=>{let e=C();t({target:e,event:`cancel`,handler:t=>{t.target===e&&Z(`escape`,t)},cleanup:m}),t({target:e,event:`close`,handler:()=>{Y.hasTag(`visible`)&&Y.send(`CLOSE`)},cleanup:m}),t({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&le(e)},cleanup:m}),t({target:e,event:`click`,handler:e=>{let t=e.target;t instanceof Element&&t.closest(`[data-ui-modal-close]`)&&(e.preventDefault(),Y.send(`CLOSE`))},cleanup:m}),t({target:document,event:`ui:modal-close`,handler:e=>{let t=e.detail;t?.name&&t.name===I().name&&Y.send(`CLOSE`)},cleanup:m}),m.add(_({isEnabled:()=>Y.hasTag(`interactive`),roots:()=>[O(),o,P()],onDismiss:e=>Z(`outside`,e)}))},Q,$={get name(){return I().name},get isOpen(){return Y.matches(`open`)},get dialogId(){return a},openFrom:X,close(e){e?.preventDefault(),Y.send(`CLOSE`)},syncExternalTrigger:W};return Q={...Y,get name(){return this.snapshot.current?.props.name??``},get isOpen(){return this.snapshot.current?.value===`open`},get isVisible(){return this.snapshot.current?.tags.includes(`visible`)??!1},get dialogId(){return a},init(){m=f(this),r=this.$el,Y.connect(this.$el,this.snapshot);let e=I();j(),x=n(O(),{properties:[`height`,`maxWidth`]}),a=C().id||this.$id(`modal${e.name?`-${e.name}`:``}`),i(C(),`open`),K(),R.add($),d=!0,_e(),ve(),q({syncOpen:!1}),e.open&&queueMicrotask(()=>Y.send(`OPEN`))},destroy(){x?.destroy(),x=null,g=null,d&&=(R.delete($),!1),Y.disconnect();let e=r?.querySelector(`[data-ui-modal]`);e?.open&&e.close(),u?.(),u=null,z.forEach(e=>e.sync()),r=null},get root(){return h({inputs:[p({part:L.parts.instance,props:{},className:``}),{"data-ui-modal-instance":``}]})},get dialog(){let e=this.snapshot,t=e.current?.props??I();return h({inputs:[p({part:L.parts.root,props:t,className:t.class}),{id:a,role:`dialog`,"aria-modal":`true`,":data-state":()=>B(V(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side,":data-size":()=>e.current?.props.size}]})},get viewport(){let e=this.snapshot,t=e.current?.props??I();return h({inputs:[p({part:L.parts.viewport,props:t}),{":data-state":()=>B(V(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side}]})},get overlay(){let e=this.snapshot,t=e.current?.props??I();return h({inputs:[p({part:L.parts.overlay,props:t,className:t.overlayClass}),{":data-state":()=>B(V(e.current?.value))}]})},get panel(){let e=this.snapshot,t=e.current?.props??I();return h({inputs:[p({part:L.parts.panel,props:t,className:t.panelClass}),{tabindex:-1,":data-state":()=>B(V(e.current?.value)),":data-mode":()=>e.current?.props.mode,":data-side":()=>e.current?.props.side,":data-size":()=>e.current?.props.size,":data-ui-surface":()=>e.current?.props.surface,":data-ui-elevation":()=>e.current?.props.elevation}]})},open(e){if(e?.preventDefault(),I().disabled)return;let t=P();t&&(o=v(t)),s=T(S().ownerDocument),Y.send(`OPEN`)},close(e){e?.preventDefault(),Y.send(`CLOSE`)}},Q},G=()=>{let e=null,n=null,r,i=!1,a=()=>{if(!e)throw Error(`Modal trigger has not been initialized.`);return e},o=()=>{if(!n)throw Error(`Modal trigger has not been initialized.`);return n},s=()=>{let e=a().name;return e?H(e):null},l=()=>{let e=a(),t=o(),n=s();if(n){n.syncExternalTrigger(t,e.disabled);return}U(t,!1),e.disabled?(t.setAttribute(`aria-disabled`,`true`),t.setAttribute(`data-disabled`,``)):(t.removeAttribute(`aria-disabled`),t.removeAttribute(`data-disabled`))},u={get name(){return a().name},get target(){return o()},sync:l};return{init(){r=f(this),e=c({el:this.$el,schema:P,onChange:()=>{e?.name&&l()}}),n=v(this.$el),e.name&&(z.add(u),i=!0,l(),t({target:n,event:`click`,handler:e=>this.open(e),cleanup:r}),t({target:n,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(n instanceof HTMLButtonElement||n instanceof HTMLAnchorElement||(e.key===`Enter`||e.key===` `)&&this.open(e))},cleanup:r}))},destroy(){e?.disconnect(),i&&z.delete(u),i=!1,e=null,n=null},get root(){let t=a();return h({inputs:[p({part:L.parts.trigger,props:{},className:t.class}),{"data-ui-modal-trigger":``,":data-name":()=>e?.name||void 0,":data-disabled":()=>e?.disabled?``:void 0}]})},open(e){e?.preventDefault(),!a().disabled&&s()?.openFrom(o())}}},K=e=>{d(`UiModal`,W)(e),d(`UiModalTrigger`,G)(e)},q=new WeakSet,J=e=>{q.has(e)||(q.add(e),r(e),K(e))};export{W as n,G as r,J as t};
|
|
2
|
-
//# sourceMappingURL=entry.generated-n_t4T8XC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry.generated-n_t4T8XC.js","names":[],"sources":["../../../../../../../../client/src/components/modal/contract.ts","../../../../../../../../client/src/components/modal/machine.ts","../../../../../../../../client/src/components/modal/styles.ts","../../../../../../../../client/src/components/modal/index.ts","../../../../../../../../client/src/components/modal/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type PropState, type SchemaToProps} from '../../runtime';\nimport {\n EDGE_POSITIONS,\n ELEVATION_REFERENCES,\n HEADING_LEVELS,\n SURFACE_REFERENCES,\n type EdgePosition,\n type ElevationReference,\n type HeadingLevel,\n type SurfaceReference,\n} from '../common';\n\nconst MODAL_MODES = ['modal', 'sheet'] as const;\nconst MODAL_SIDES = EDGE_POSITIONS;\nconst MODAL_SIZES = ['sm', 'md', 'lg', 'xl', 'full'] as const;\nconst MODAL_SURFACES = SURFACE_REFERENCES;\nconst MODAL_ELEVATIONS = ELEVATION_REFERENCES;\nconst MODAL_TITLE_AS_VALUES = HEADING_LEVELS;\n\ntype ModalMode = typeof MODAL_MODES[number];\ntype ModalSide = EdgePosition;\ntype ModalSize = typeof MODAL_SIZES[number];\ntype ModalSurface = SurfaceReference;\ntype ModalElevation = ElevationReference;\ntype ModalTitleAs = HeadingLevel;\n\nconst modalSchema = {\n name: string,\n open: bool,\n mode: oneOf(MODAL_MODES, 'modal'),\n side: oneOf(MODAL_SIDES, 'right'),\n size: oneOf(MODAL_SIZES, 'md'),\n surface: oneOf(MODAL_SURFACES, '1' as ModalSurface),\n elevation: oneOf(MODAL_ELEVATIONS, '5' as ModalElevation),\n dismissible: bool.default(true),\n closable: bool.default(true),\n disabled: bool,\n autofocusTitle: bool,\n label: string,\n descriptionId: string,\n panelClass: string,\n overlayClass: string,\n class: string,\n};\n\nconst modalTriggerSchema = {\n name: string,\n disabled: bool,\n class: string,\n};\n\nconst modalOutletSchema = {\n id: string.default('ui-modal-root'),\n class: string,\n};\n\nconst modalTitleSchema = {\n as: oneOf(MODAL_TITLE_AS_VALUES, 'h2'),\n class: string,\n};\n\nconst modalDescriptionSchema = {\n class: string,\n};\n\nconst modalBodySchema = {\n class: string,\n};\n\nconst modalFooterSchema = {\n class: string,\n};\n\nconst modalCloseSchema = {\n label: string.default('Close'),\n class: string,\n};\n\ntype ModalProps = SchemaToProps<typeof modalSchema>;\ntype ModalTriggerProps = PropState<typeof modalTriggerSchema>;\n\nexport {\n MODAL_SIDES,\n MODAL_SIZES,\n MODAL_ELEVATIONS,\n MODAL_SURFACES,\n MODAL_TITLE_AS_VALUES,\n MODAL_MODES,\n modalBodySchema,\n modalCloseSchema,\n modalDescriptionSchema,\n modalFooterSchema,\n modalOutletSchema,\n modalSchema,\n modalTitleSchema,\n modalTriggerSchema,\n};\nexport type {\n ModalSide,\n ModalProps,\n ModalSize,\n ModalSurface,\n ModalElevation,\n ModalTitleAs,\n ModalTriggerProps,\n ModalMode,\n};\n","import {\n createMachine,\n type Machine,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport {defineControlledOpenProps} from '../shared/controlled-open';\nimport type {ModalProps} from './contract';\n\ntype ModalContext = Record<string, never>;\n\ntype ModalMachineEffects = {\n prepareOpen(): void;\n finishOpen(): void;\n prepareClose(): void;\n finishClose(): void;\n syncProps(): void;\n emitCancel(reason: 'escape' | 'outside'): void;\n};\n\ntype CreateModalMachineOptions = {\n props: ModalProps;\n effects: ModalMachineEffects;\n};\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: () => ({}),\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<ModalContext, ModalProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: () => ({}),\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<ModalContext, ModalProps, Record<string, never>, 'closing'>);\n\nconst modalHooks = [openingHook, closingHook] as const;\nconst controlledOpenProps = defineControlledOpenProps<ModalContext, ModalProps>();\n\nconst createModalMachine = ({\n props,\n effects,\n}: CreateModalMachineOptions): Machine<ModalContext, ModalProps> => createMachine<ModalContext, ModalProps>({\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: [\n {\n target: 'opening',\n guard: controlledOpenProps.shouldOpen,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareOpen'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n opening: {\n tags: ['visible', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n CANCEL: {target: 'closing', guard: 'canDismiss', effects: ['emitCancel', 'prepareClose']},\n PROPS_CHANGED: [\n {\n target: 'closing',\n guard: controlledOpenProps.shouldClose,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareClose'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n open: {\n tags: ['visible', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n CANCEL: {target: 'closing', guard: 'canDismiss', effects: ['emitCancel', 'prepareClose']},\n PROPS_CHANGED: [\n {\n target: 'closing',\n guard: controlledOpenProps.shouldClose,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareClose'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: [\n {\n target: 'opening',\n guard: controlledOpenProps.shouldOpen,\n reduce: 'replaceProps',\n effects: ['syncProps', 'prepareOpen'],\n },\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n}, {\n context: {},\n props,\n reducers: {\n replaceProps: controlledOpenProps.replace,\n },\n guards: {\n canOpen: ({props: currentProps}) => !currentProps.disabled,\n canDismiss: ({props: currentProps}) => currentProps.dismissible,\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n syncProps: effects.syncProps,\n emitCancel: ({event}) => {\n if (event.reason === 'escape' || event.reason === 'outside') effects.emitCancel(event.reason);\n },\n },\n});\n\nexport {createModalMachine, modalHooks};\nexport type {CreateModalMachineOptions, ModalContext, ModalMachineEffects};\n","import {defineStyles} from '../../runtime';\n\nconst EDGE_PANEL_LAYOUT_CLASSES = [\n 'grid-rows-[auto_auto_minmax(0,1fr)_auto]',\n '[&>[data-ui-modal-body]]:-mx-1 [&>[data-ui-modal-body]]:min-h-0 [&>[data-ui-modal-body]]:content-start',\n '[&>[data-ui-modal-body]]:overflow-x-hidden [&>[data-ui-modal-body]]:overflow-y-auto [&>[data-ui-modal-body]]:px-1',\n '[&>[data-ui-modal-footer]]:self-end',\n] as const;\n\nconst modalStyles = defineStyles({definition: {\n component: 'ui.modal',\n parts: {\n instance: {\n base: 'contents',\n },\n root: {\n base: [\n 'fixed inset-0 z-dialog m-0 h-auto max-h-none w-auto max-w-none overflow-visible border-0 bg-transparent p-0 text-surface-ink',\n 'backdrop:bg-transparent',\n ],\n },\n viewport: {\n base: 'fixed inset-0 z-dialog flex min-h-dvh',\n variants: {\n mode: {\n modal: 'items-center justify-center overflow-y-auto p-4',\n sheet: '',\n },\n side: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n },\n compounds: [\n {when: {mode: 'sheet', side: 'top'}, class: 'items-start justify-center'},\n {when: {mode: 'sheet', side: 'right'}, class: 'items-center justify-end overflow-hidden'},\n {when: {mode: 'sheet', side: 'bottom'}, class: 'items-end justify-center'},\n {when: {mode: 'sheet', side: 'left'}, class: 'items-center justify-start overflow-hidden'},\n ],\n defaults: {\n mode: 'modal',\n side: 'right',\n },\n },\n overlay: {\n base: 'fixed inset-0 bg-scrim',\n },\n panel: {\n base: [\n 'relative z-dialog grid w-full min-w-0 gap-4 overflow-auto p-5 outline-none',\n 'max-h-full',\n ],\n variants: {\n mode: {\n modal: 'rounded-overlay-md',\n sheet: '',\n },\n side: {\n top: '',\n right: '',\n bottom: '',\n left: '',\n },\n size: {\n sm: 'max-w-modal-sm',\n md: 'max-w-modal-md',\n lg: 'max-w-modal-lg',\n xl: 'max-w-modal-xl',\n full: 'max-w-full',\n },\n },\n compounds: [\n {when: {mode: 'sheet', side: 'right'}, class: ['min-h-dvh rounded-l-overlay-md', EDGE_PANEL_LAYOUT_CLASSES]},\n {when: {mode: 'sheet', side: 'left'}, class: ['min-h-dvh rounded-r-overlay-md', EDGE_PANEL_LAYOUT_CLASSES]},\n {when: {mode: 'sheet', side: 'top'}, class: 'max-w-full rounded-b-overlay-md'},\n {when: {mode: 'sheet', side: 'bottom'}, class: 'max-w-full rounded-t-overlay-md'},\n ],\n defaults: {\n mode: 'modal',\n side: 'right',\n size: 'md',\n },\n },\n trigger: {\n base: 'contents',\n },\n outlet: {\n base: '',\n },\n title: {\n base: 'pr-8',\n },\n description: {\n base: '-mt-3 pr-8 text-surface-ink-muted',\n },\n body: {\n base: 'grid min-w-0 gap-3 text-sm',\n },\n footer: {\n base: 'flex min-w-0 items-center justify-end gap-2 pt-1',\n },\n close: {\n base: [\n 'absolute right-3 top-3 inline-flex size-control-md items-center justify-center rounded-full border border-transparent text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover focus-visible:ui-focus-ring',\n ],\n },\n closeIcon: {\n base: 'size-icon fill-current',\n },\n },\n}});\n\nexport {modalStyles};\n","import type Alpine from 'alpinejs';\n\nimport {createBoundsMotion, type BoundsMotion} from '@client/motion';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport {defineProps} from '@client/runtime/codecs';\nimport {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {FOCUSABLE_SELECTOR, closestFocusable, focusableElements, isFocusable, trapFocus as trapFocusWithin} from '@client/runtime/focus-scope';\nimport {focusWithoutIndicator, isShortcutFocusHandoff} from '@client/runtime/focus-handoff';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {declareMorphAttributes} from '@client/runtime/morph';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, dispatch} from '@client/utils';\nimport {\n modalSchema,\n modalTriggerSchema,\n type ModalProps,\n type ModalTriggerProps,\n} from './contract';\nimport {createModalMachine, modalHooks, type ModalContext} from './machine';\nimport {modalStyles} from './styles';\n\ntype ModalTransitionName = (typeof modalHooks)[number]['name'];\ntype ModalTransition<TName extends ModalTransitionName = ModalTransitionName> = TransitionForHook<\n Extract<(typeof modalHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype CancelReason = 'escape' | 'outside';\n\ntype ModalCancelDetail = {\n reason: CancelReason;\n};\n\ntype ModalCloseEventDetail = {\n name?: string;\n};\n\ntype ModalController = {\n readonly name: string;\n readonly isOpen: boolean;\n readonly dialogId: string;\n openFrom(trigger: HTMLElement): void;\n close(event?: Event): void;\n syncExternalTrigger(trigger: HTMLElement, disabled: boolean): void;\n};\n\ntype ModalTriggerController = {\n readonly name: string;\n readonly target: HTMLElement;\n sync(): void;\n};\n\n/**\n * Public Alpine API for `ui.modal`.\n *\n * @public\n */\ninterface UiModalApi {\n /** Whether the modal has completed its opening transition. */\n readonly isOpen: boolean;\n\n /** Whether the modal is opening, open, or closing. */\n readonly isVisible: boolean;\n\n /** Opens the modal unless it is disabled. */\n open(event?: Event): void;\n\n /** Closes the modal. */\n close(event?: Event): void;\n}\n\n/**\n * Public Alpine API for `ui.modal.trigger`.\n *\n * @public\n */\ninterface UiModalTriggerApi {\n /** Opens the named modal unless the trigger or modal is disabled. */\n open(event?: Event): void;\n}\n\ntype ModalData = AlpineMachine<ModalContext, ModalProps, typeof modalHooks> & UiModalApi & {\n readonly name: string;\n readonly dialogId: string;\n readonly root: BindingObject;\n readonly dialog: BindingObject;\n readonly viewport: BindingObject;\n readonly overlay: BindingObject;\n readonly panel: BindingObject;\n init(): void;\n destroy(): void;\n};\n\ntype ModalTriggerData = UiModalTriggerApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst modalControllers = new Set<ModalController>();\nconst modalTriggerControllers = new Set<ModalTriggerController>();\n\nconst stateFor = (open: boolean): 'open' | 'closed' => (open ? 'open' : 'closed');\nconst isExpandedState = (state: unknown): boolean => state === 'opening' || state === 'open';\n\nconst findNamedModal = (name: string): ModalController | null => (\n Array.from(modalControllers).find((controller) => controller.name === name) ?? null\n);\n\nconst setOpenAttributes = (el: HTMLElement, open: boolean): void => {\n el.setAttribute('data-state', stateFor(open));\n el.setAttribute('aria-expanded', open ? 'true' : 'false');\n};\n\nconst UiModal = (): TrellisAlpineComponent<ModalData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let dialogId = '';\n let activeTrigger: HTMLElement | null = null;\n let openedFromShortcut = false;\n let didShowModal = false;\n let releaseScrollLock: (() => void) | null = null;\n let isRegistered = false;\n let cleanup: CleanupManager;\n let localTriggerCleanup: CleanupManager | null = null;\n let settledMode: ModalProps['mode'] | null = null;\n let boundsMotion: BoundsMotion | null = null;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Modal has not been initialized.');\n return rootEl;\n };\n\n const dialogEl = (): HTMLDialogElement => {\n const dialog = root().querySelector<HTMLDialogElement>('[data-ui-modal]');\n if (!(dialog instanceof HTMLDialogElement)) throw new Error('Modal requires a dialog element.');\n return dialog;\n };\n\n const viewportEl = (): HTMLElement => {\n const viewport = root().querySelector<HTMLElement>('[data-ui-modal-viewport]');\n if (!viewport) throw new Error('Modal requires a viewport element.');\n return viewport;\n };\n\n const overlayEl = (): HTMLElement => {\n const overlay = root().querySelector<HTMLElement>('[data-ui-modal-overlay]');\n if (!overlay) throw new Error('Modal requires an overlay element.');\n return overlay;\n };\n\n const panelEl = (): HTMLElement => {\n const panel = root().querySelector<HTMLElement>('[data-ui-modal-panel]');\n if (!panel) throw new Error('Modal requires a panel element.');\n return panel;\n };\n\n const titleEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-modal-title]');\n const descriptionEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-modal-description]');\n\n const syncPresentation = (): void => {\n const props = currentProps();\n dialogEl().className = resolveStyle({part: modalStyles.parts.root, props, className: props.class});\n viewportEl().className = resolveStyle({part: modalStyles.parts.viewport, props});\n overlayEl().className = resolveStyle({\n part: modalStyles.parts.overlay,\n props,\n className: props.overlayClass,\n });\n panelEl().className = resolveStyle({\n part: modalStyles.parts.panel,\n props,\n className: props.panelClass,\n });\n };\n\n const syncPresentationWithBoundsMotion = (): void => {\n const props = currentProps();\n const shouldAnimate = (\n settledMode === props.mode\n && props.open\n && dialogEl().open\n && bridge.matches('open')\n );\n boundsMotion?.update(syncPresentation, {\n animate: shouldAnimate,\n key: `${props.mode}:${props.size}`,\n });\n settledMode = props.mode;\n };\n\n const localTriggerEl = (): HTMLElement | null => (\n Array.from(root().children)\n .find((child) => child instanceof HTMLElement && child.matches('[data-ui-modal-trigger]')) as HTMLElement | undefined\n ?? null\n );\n\n const focusableEls = (): HTMLElement[] => focusableElements(panelEl());\n\n const currentProps = (): Readonly<ModalProps> => bridge.getCommittedSnapshot().props;\n const isExpanded = (): boolean => bridge.matches('opening') || bridge.matches('open');\n\n const syncExternalTrigger = (trigger: HTMLElement, disabled: boolean): void => {\n const expanded = isExpanded();\n setOpenAttributes(trigger, expanded);\n trigger.setAttribute('aria-controls', dialogId);\n trigger.setAttribute('data-ui-modal-trigger-target', dialogId);\n\n if (disabled || currentProps().disabled) {\n trigger.setAttribute('aria-disabled', 'true');\n trigger.setAttribute('data-disabled', '');\n if (trigger instanceof HTMLButtonElement) trigger.disabled = true;\n if (!trigger.matches(FOCUSABLE_SELECTOR)) trigger.tabIndex = -1;\n return;\n }\n\n trigger.removeAttribute('aria-disabled');\n trigger.removeAttribute('data-disabled');\n if (trigger instanceof HTMLButtonElement) trigger.disabled = false;\n if (!trigger.matches(FOCUSABLE_SELECTOR)) trigger.tabIndex = 0;\n };\n\n const syncTriggers = (): void => {\n const local = localTriggerEl();\n if (local) syncExternalTrigger(closestFocusable(local), currentProps().disabled);\n modalTriggerControllers.forEach((trigger) => trigger.sync());\n };\n\n const syncAccessibility = (): void => {\n const props = currentProps();\n const dialog = dialogEl();\n const panel = panelEl();\n const title = titleEl();\n const description = descriptionEl();\n\n dialog.id = dialogId;\n dialog.setAttribute('role', 'dialog');\n dialog.setAttribute('aria-modal', 'true');\n panel.id ||= `${dialogId}-panel`;\n panel.tabIndex = -1;\n\n if (title) {\n title.id ||= `${dialogId}-title`;\n dialog.setAttribute('aria-labelledby', title.id);\n dialog.removeAttribute('aria-label');\n if (props.autofocusTitle) title.tabIndex = -1;\n else title.removeAttribute('tabindex');\n } else {\n dialog.removeAttribute('aria-labelledby');\n if (props.label) dialog.setAttribute('aria-label', props.label);\n else dialog.removeAttribute('aria-label');\n }\n\n if (description) description.id ||= `${dialogId}-description`;\n if (props.descriptionId === 'none') dialog.removeAttribute('aria-describedby');\n else if (props.descriptionId) dialog.setAttribute('aria-describedby', props.descriptionId);\n else if (description) dialog.setAttribute('aria-describedby', description.id);\n else dialog.removeAttribute('aria-describedby');\n };\n\n const syncStateAttributes = ({syncOpen = true}: {syncOpen?: boolean} = {}): void => {\n const expanded = isExpanded();\n const state = stateFor(expanded);\n if (syncOpen) {\n reflectSchemaProp({el: root(), schema: modalSchema, key: 'open', value: expanded});\n }\n [dialogEl(), viewportEl(), overlayEl(), panelEl()].forEach((element) => {\n element.setAttribute('data-state', state);\n });\n syncTriggers();\n };\n\n const focusInitial = (): void => {\n if (openedFromShortcut) {\n focusWithoutIndicator(panelEl());\n return;\n }\n\n const autofocus = panelEl().querySelector<HTMLElement>('[autofocus]');\n if (autofocus && isFocusable(autofocus)) {\n autofocus.focus({preventScroll: true});\n return;\n }\n\n const title = titleEl();\n if (currentProps().autofocusTitle && title) {\n title.focus({preventScroll: true});\n return;\n }\n\n const firstFocusable = focusableEls()[0];\n if (firstFocusable) {\n firstFocusable.focus({preventScroll: true});\n return;\n }\n\n panelEl().focus({preventScroll: true});\n };\n\n const restoreFocus = (): void => {\n if (!activeTrigger || !document.contains(activeTrigger)) return;\n if (activeTrigger === activeTrigger.ownerDocument.activeElement) return;\n if (openedFromShortcut) focusWithoutIndicator(activeTrigger);\n else activeTrigger.focus({preventScroll: true});\n };\n\n const trapFocus = (event: KeyboardEvent): void => {\n if (!bridge.hasTag('interactive')) return;\n trapFocusWithin(event, panelEl());\n };\n\n const prepareOpen = (): void => {\n boundsMotion?.refresh({animate: false});\n const dialog = dialogEl();\n if (typeof dialog.showModal === 'function' && !didShowModal) {\n if (dialog.open) dialog.removeAttribute('open');\n dialog.showModal();\n didShowModal = true;\n } else if (!dialog.open) {\n dialog.setAttribute('open', '');\n }\n\n releaseScrollLock ??= acquireDocumentScrollLock(dialog.ownerDocument);\n syncAccessibility();\n syncStateAttributes();\n queueMicrotask(focusInitial);\n };\n\n const finishOpen = (): void => {\n boundsMotion?.refresh({animate: false});\n const panel = panelEl();\n panel.style.removeProperty('transform');\n panel.style.removeProperty('translate');\n panel.style.removeProperty('scale');\n panel.style.removeProperty('rotate');\n settledMode = currentProps().mode;\n syncStateAttributes();\n dispatch({el: dialogEl(), name: 'ui:open'});\n };\n\n const prepareClose = (): void => {\n boundsMotion?.refresh({animate: false});\n syncStateAttributes();\n };\n\n const finishClose = (): void => {\n boundsMotion?.refresh({animate: false});\n const dialog = dialogEl();\n if (dialog.open) dialog.close();\n didShowModal = false;\n releaseScrollLock?.();\n releaseScrollLock = null;\n syncStateAttributes();\n settledMode = null;\n restoreFocus();\n openedFromShortcut = false;\n dispatch({el: dialog, name: 'ui:close'});\n };\n\n const syncProps = (): void => {\n syncPresentationWithBoundsMotion();\n syncAccessibility();\n syncTriggers();\n };\n\n const bridge = createAlpineMachine({\n schema: modalSchema,\n hooks: modalHooks,\n createMachine: ({props}) => createModalMachine({\n props,\n effects: {\n prepareOpen,\n finishOpen,\n prepareClose,\n finishClose,\n syncProps,\n emitCancel: (reason) => {\n dispatch<ModalCancelDetail>({el: dialogEl(), name: 'ui:cancel', detail: {reason}});\n },\n },\n }),\n });\n\n const openFrom = (trigger: HTMLElement): void => {\n if (currentProps().disabled) return;\n activeTrigger = trigger;\n openedFromShortcut = isShortcutFocusHandoff(trigger.ownerDocument);\n bridge.send('OPEN');\n };\n\n const cancel = (reason: CancelReason, event?: Event): void => {\n event?.preventDefault();\n bridge.send({type: 'CANCEL', reason});\n };\n\n const teardownLocalTrigger = (): void => {\n localTriggerCleanup?.run();\n localTriggerCleanup = null;\n };\n\n const setupLocalTrigger = (trigger: HTMLElement): void => {\n const target = closestFocusable(trigger);\n teardownLocalTrigger();\n localTriggerCleanup = new CleanupManager();\n cleanup.addChild(localTriggerCleanup);\n syncExternalTrigger(target, currentProps().disabled);\n addListener({target, event: 'click', handler: () => openFrom(target), cleanup: localTriggerCleanup});\n addListener({target, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent)) return;\n if (target instanceof HTMLButtonElement || target instanceof HTMLAnchorElement) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n openFrom(target);\n }, cleanup: localTriggerCleanup});\n };\n\n const mountLocalTrigger = (): void => {\n const dialog = dialogEl();\n const inlineTrigger = dialog.querySelector<HTMLElement>('[data-ui-modal-trigger]');\n if (!inlineTrigger || inlineTrigger.dataset.name) return;\n root().insertBefore(inlineTrigger, dialog);\n setupLocalTrigger(inlineTrigger);\n };\n\n const setupEvents = (): void => {\n const dialog = dialogEl();\n addListener({target: dialog, event: 'cancel', handler: (event) => {\n if (event.target !== dialog) return;\n cancel('escape', event);\n }, cleanup});\n addListener({target: dialog, event: 'close', handler: () => {\n if (bridge.hasTag('visible')) bridge.send('CLOSE');\n }, cleanup});\n addListener({target: dialog, event: 'keydown', handler: (event) => {\n if (event instanceof KeyboardEvent) trapFocus(event);\n }, cleanup});\n addListener({target: dialog, event: 'click', handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element) || !target.closest('[data-ui-modal-close]')) return;\n event.preventDefault();\n bridge.send('CLOSE');\n }, cleanup});\n addListener({target: document, event: 'ui:modal-close', handler: (event) => {\n const detail = (event as CustomEvent<ModalCloseEventDetail>).detail;\n if (!detail?.name || detail.name !== currentProps().name) return;\n bridge.send('CLOSE');\n }, cleanup});\n cleanup.add(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [panelEl(), activeTrigger, localTriggerEl()],\n onDismiss: (event) => cancel('outside', event),\n }));\n };\n\n let component!: TrellisAlpineComponent<ModalData>;\n const controller: ModalController = {\n get name() {\n return currentProps().name;\n },\n get isOpen() {\n return bridge.matches('open');\n },\n get dialogId() {\n return dialogId;\n },\n openFrom,\n close(event?: Event) {\n event?.preventDefault();\n bridge.send('CLOSE');\n },\n syncExternalTrigger,\n };\n\n component = {\n ...bridge,\n get name(): string {\n return this.snapshot.current?.props.name ?? '';\n },\n get isOpen(): boolean {\n return this.snapshot.current?.value === 'open';\n },\n get isVisible(): boolean {\n return this.snapshot.current?.tags.includes('visible') ?? false;\n },\n get dialogId(): string {\n return dialogId;\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const props = currentProps();\n syncPresentation();\n boundsMotion = createBoundsMotion(panelEl(), {properties: ['height', 'maxWidth']});\n dialogId = dialogEl().id || this.$id(`modal${props.name ? `-${props.name}` : ''}`);\n declareMorphAttributes(dialogEl(), 'open');\n syncAccessibility();\n modalControllers.add(controller);\n isRegistered = true;\n mountLocalTrigger();\n setupEvents();\n syncStateAttributes({syncOpen: false});\n if (props.open) queueMicrotask(() => bridge.send('OPEN'));\n },\n destroy(): void {\n boundsMotion?.destroy();\n boundsMotion = null;\n localTriggerCleanup = null;\n if (isRegistered) {\n modalControllers.delete(controller);\n isRegistered = false;\n }\n bridge.disconnect();\n const dialog = rootEl?.querySelector<HTMLDialogElement>('[data-ui-modal]');\n if (dialog?.open) dialog.close();\n releaseScrollLock?.();\n releaseScrollLock = null;\n modalTriggerControllers.forEach((trigger) => trigger.sync());\n rootEl = null;\n },\n get root(): BindingObject {\n return mergeBindings({inputs: [\n resolveStyle({part: modalStyles.parts.instance, props: {}, className: ''}),\n {'data-ui-modal-instance': ''},\n ]});\n },\n get dialog(): BindingObject {\n const snapshot = this.snapshot;\n const props = snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: modalStyles.parts.root, props, className: props.class}),\n {\n id: dialogId,\n role: 'dialog',\n 'aria-modal': 'true',\n ':data-state': () => stateFor(isExpandedState(snapshot.current?.value)),\n ':data-mode': () => snapshot.current?.props.mode,\n ':data-side': () => snapshot.current?.props.side,\n ':data-size': () => snapshot.current?.props.size,\n },\n ]});\n },\n get viewport(): BindingObject {\n const snapshot = this.snapshot;\n const props = snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: modalStyles.parts.viewport, props}),\n {\n ':data-state': () => stateFor(isExpandedState(snapshot.current?.value)),\n ':data-mode': () => snapshot.current?.props.mode,\n ':data-side': () => snapshot.current?.props.side,\n },\n ]});\n },\n get overlay(): BindingObject {\n const snapshot = this.snapshot;\n const props = snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: modalStyles.parts.overlay, props, className: props.overlayClass}),\n {':data-state': () => stateFor(isExpandedState(snapshot.current?.value))},\n ]});\n },\n get panel(): BindingObject {\n const snapshot = this.snapshot;\n const props = snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: modalStyles.parts.panel, props, className: props.panelClass}),\n {\n tabindex: -1,\n ':data-state': () => stateFor(isExpandedState(snapshot.current?.value)),\n ':data-mode': () => snapshot.current?.props.mode,\n ':data-side': () => snapshot.current?.props.side,\n ':data-size': () => snapshot.current?.props.size,\n ':data-ui-surface': () => snapshot.current?.props.surface,\n ':data-ui-elevation': () => snapshot.current?.props.elevation,\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled) return;\n const local = localTriggerEl();\n if (local) activeTrigger = closestFocusable(local);\n openedFromShortcut = isShortcutFocusHandoff(root().ownerDocument);\n bridge.send('OPEN');\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send('CLOSE');\n },\n };\n\n return component;\n};\n\nconst UiModalTrigger = (): TrellisAlpineComponent<ModalTriggerData> => {\n let props: ModalTriggerProps | null = null;\n let target: HTMLElement | null = null;\n let cleanup: CleanupManager;\n let isRegistered = false;\n\n const currentProps = (): ModalTriggerProps => {\n if (!props) throw new Error('Modal trigger has not been initialized.');\n return props;\n };\n\n const targetEl = (): HTMLElement => {\n if (!target) throw new Error('Modal trigger has not been initialized.');\n return target;\n };\n\n const modal = (): ModalController | null => {\n const name = currentProps().name;\n return name ? findNamedModal(name) : null;\n };\n\n const sync = (): void => {\n const triggerProps = currentProps();\n const trigger = targetEl();\n const modalController = modal();\n if (modalController) {\n modalController.syncExternalTrigger(trigger, triggerProps.disabled);\n return;\n }\n\n setOpenAttributes(trigger, false);\n if (triggerProps.disabled) {\n trigger.setAttribute('aria-disabled', 'true');\n trigger.setAttribute('data-disabled', '');\n } else {\n trigger.removeAttribute('aria-disabled');\n trigger.removeAttribute('data-disabled');\n }\n };\n\n const controller: ModalTriggerController = {\n get name() {\n return currentProps().name;\n },\n get target() {\n return targetEl();\n },\n sync,\n };\n\n return {\n init(): void {\n cleanup = cleanupManagerFor(this);\n props = defineProps({\n el: this.$el,\n schema: modalTriggerSchema,\n onChange: () => {\n if (props?.name) sync();\n },\n });\n target = closestFocusable(this.$el);\n if (!props.name) return;\n modalTriggerControllers.add(controller);\n isRegistered = true;\n sync();\n\n addListener({target, event: 'click', handler: (event) => this.open(event), cleanup});\n addListener({target, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent)) return;\n if (target instanceof HTMLButtonElement || target instanceof HTMLAnchorElement) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n this.open(event);\n }, cleanup});\n },\n destroy(): void {\n props?.disconnect();\n if (isRegistered) modalTriggerControllers.delete(controller);\n isRegistered = false;\n props = null;\n target = null;\n },\n get root(): BindingObject {\n const triggerProps = currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: modalStyles.parts.trigger, props: {}, className: triggerProps.class}),\n {\n 'data-ui-modal-trigger': '',\n ':data-name': () => props?.name || undefined,\n ':data-disabled': () => (props?.disabled ? '' : undefined),\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled) return;\n modal()?.openFrom(targetEl());\n },\n };\n};\n\nconst registerModal = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiModal', UiModal)(AlpineInstance);\n defineAlpineData('UiModalTrigger', UiModalTrigger)(AlpineInstance);\n};\n\nexport {registerModal, UiModal, UiModalTrigger};\nexport type {ModalCancelDetail, ModalTransition, UiModalApi, UiModalTriggerApi};\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 {registerModal as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerModal = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerModal};\nexport default registerModal;\nexport * from './index';\n"],"mappings":"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"}
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e=new Set([`Tab`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`Home`,`End`,`PageDown`,`PageUp`]),t=new WeakMap,n=n=>{let r=t.get(n);if(r)return r;let i={pointerDown:!1,pointerFocused:null,indicatorSuppressed:null,shortcut:!1,shortcutReset:void 0};t.set(n,i);let a=()=>{i.indicatorSuppressed?.removeAttribute(`data-ui-focus-indicator`),i.indicatorSuppressed=null};return n.addEventListener(`pointerdown`,()=>{i.pointerDown=!0},!0),n.addEventListener(`focusin`,e=>{i.pointerFocused=i.pointerDown&&e.target instanceof HTMLElement?e.target:null},!0),n.addEventListener(`pointerup`,e=>{let t=n.activeElement;i.pointerFocused=t instanceof HTMLElement&&t!==n.body&&e.composedPath().some(e=>e===t)?t:null,i.pointerDown=!1},!0),n.addEventListener(`pointercancel`,()=>{i.pointerDown=!1},!0),n.addEventListener(`keydown`,t=>{a(),e.has(t.key)&&(i.pointerFocused=null)},!0),n.addEventListener(`focusout`,e=>{e.target===i.indicatorSuppressed&&a()},!0),n.defaultView?.addEventListener(`blur`,()=>{i.pointerDown=!1,i.pointerFocused=null,a()}),i},r=e=>{let t=n(e),r=e.activeElement;r instanceof HTMLElement&&r===t.pointerFocused&&r.blur(),t.pointerFocused=null,t.shortcut=!0,t.shortcutReset!==void 0&&e.defaultView?.clearTimeout(t.shortcutReset),t.shortcutReset=e.defaultView?.setTimeout(()=>{t.shortcut=!1,t.shortcutReset=void 0})},i=e=>n(e).shortcut,a=e=>{let t=n(e.ownerDocument);t.indicatorSuppressed?.removeAttribute(`data-ui-focus-indicator`),e.focus({preventScroll:!0,focusVisible:!1}),e.setAttribute(`data-ui-focus-indicator`,`suppressed`),t.indicatorSuppressed=e};export{i,n,a as r,r as t};
|
|
2
|
-
//# sourceMappingURL=focus-handoff-BE3g0swK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"focus-handoff-BE3g0swK.js","names":[],"sources":["../../../../../../../../client/src/runtime/focus-handoff.ts"],"sourcesContent":["type FocusHandoffState = {\n pointerDown: boolean;\n pointerFocused: HTMLElement | null;\n indicatorSuppressed: HTMLElement | null;\n shortcut: boolean;\n shortcutReset: number | undefined;\n};\n\nconst NAVIGATION_KEYS = new Set([\n 'Tab',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'Home',\n 'End',\n 'PageDown',\n 'PageUp',\n]);\n\nconst states = new WeakMap<Document, FocusHandoffState>();\n\nconst ensureFocusHandoff = (document: Document): FocusHandoffState => {\n const existing = states.get(document);\n if (existing) return existing;\n\n const state: FocusHandoffState = {\n pointerDown: false,\n pointerFocused: null,\n indicatorSuppressed: null,\n shortcut: false,\n shortcutReset: undefined,\n };\n states.set(document, state);\n\n const clearSuppressedIndicator = (): void => {\n state.indicatorSuppressed?.removeAttribute('data-ui-focus-indicator');\n state.indicatorSuppressed = null;\n };\n\n document.addEventListener('pointerdown', () => {\n state.pointerDown = true;\n }, true);\n document.addEventListener('focusin', (event) => {\n state.pointerFocused = state.pointerDown && event.target instanceof HTMLElement\n ? event.target\n : null;\n }, true);\n document.addEventListener('pointerup', (event) => {\n const active = document.activeElement;\n state.pointerFocused = active instanceof HTMLElement\n && active !== document.body\n && event.composedPath().some((entry) => entry === active)\n ? active\n : null;\n state.pointerDown = false;\n }, true);\n document.addEventListener('pointercancel', () => {\n state.pointerDown = false;\n }, true);\n document.addEventListener('keydown', (event) => {\n clearSuppressedIndicator();\n if (NAVIGATION_KEYS.has(event.key)) {\n state.pointerFocused = null;\n }\n }, true);\n document.addEventListener('focusout', (event) => {\n if (event.target === state.indicatorSuppressed) clearSuppressedIndicator();\n }, true);\n document.defaultView?.addEventListener('blur', () => {\n state.pointerDown = false;\n state.pointerFocused = null;\n clearSuppressedIndicator();\n });\n return state;\n};\n\nconst beginShortcutFocusHandoff = (document: Document): void => {\n const state = ensureFocusHandoff(document);\n const active = document.activeElement;\n if (active instanceof HTMLElement && active === state.pointerFocused) active.blur();\n state.pointerFocused = null;\n state.shortcut = true;\n if (state.shortcutReset !== undefined) document.defaultView?.clearTimeout(state.shortcutReset);\n state.shortcutReset = document.defaultView?.setTimeout(() => {\n state.shortcut = false;\n state.shortcutReset = undefined;\n });\n};\n\nconst isShortcutFocusHandoff = (document: Document): boolean => ensureFocusHandoff(document).shortcut;\n\nconst focusWithoutIndicator = (element: HTMLElement): void => {\n const state = ensureFocusHandoff(element.ownerDocument);\n state.indicatorSuppressed?.removeAttribute('data-ui-focus-indicator');\n element.focus({preventScroll: true, focusVisible: false});\n element.setAttribute('data-ui-focus-indicator', 'suppressed');\n state.indicatorSuppressed = element;\n};\n\nexport {\n beginShortcutFocusHandoff,\n ensureFocusHandoff,\n focusWithoutIndicator,\n isShortcutFocusHandoff,\n};\n"],"mappings":"AAQA,IAAM,EAAkB,IAAI,IAAI,CAC5B,MACA,YACA,YACA,aACA,UACA,OACA,MACA,WACA,QACJ,CAAC,EAEK,EAAS,IAAI,QAEb,EAAsB,GAA0C,CAClE,IAAM,EAAW,EAAO,IAAI,CAAQ,EACpC,GAAI,EAAU,OAAO,EAErB,IAAM,EAA2B,CAC7B,YAAa,GACb,eAAgB,KAChB,oBAAqB,KACrB,SAAU,GACV,cAAe,IAAA,EACnB,EACA,EAAO,IAAI,EAAU,CAAK,EAE1B,IAAM,MAAuC,CACzC,EAAM,qBAAqB,gBAAgB,yBAAyB,EACpE,EAAM,oBAAsB,IAChC,EAoCA,OAlCA,EAAS,iBAAiB,kBAAqB,CAC3C,EAAM,YAAc,EACxB,EAAG,EAAI,EACP,EAAS,iBAAiB,UAAY,GAAU,CAC5C,EAAM,eAAiB,EAAM,aAAe,EAAM,kBAAkB,YAC9D,EAAM,OACN,IACV,EAAG,EAAI,EACP,EAAS,iBAAiB,YAAc,GAAU,CAC9C,IAAM,EAAS,EAAS,cACxB,EAAM,eAAiB,aAAkB,aAClC,IAAW,EAAS,MACpB,EAAM,aAAa,CAAC,CAAC,KAAM,GAAU,IAAU,CAAM,EACtD,EACA,KACN,EAAM,YAAc,EACxB,EAAG,EAAI,EACP,EAAS,iBAAiB,oBAAuB,CAC7C,EAAM,YAAc,EACxB,EAAG,EAAI,EACP,EAAS,iBAAiB,UAAY,GAAU,CAC5C,EAAyB,EACrB,EAAgB,IAAI,EAAM,GAAG,IAC7B,EAAM,eAAiB,KAE/B,EAAG,EAAI,EACP,EAAS,iBAAiB,WAAa,GAAU,CACzC,EAAM,SAAW,EAAM,qBAAqB,EAAyB,CAC7E,EAAG,EAAI,EACP,EAAS,aAAa,iBAAiB,WAAc,CACjD,EAAM,YAAc,GACpB,EAAM,eAAiB,KACvB,EAAyB,CAC7B,CAAC,EACM,CACX,EAEM,EAA6B,GAA6B,CAC5D,IAAM,EAAQ,EAAmB,CAAQ,EACnC,EAAS,EAAS,cACpB,aAAkB,aAAe,IAAW,EAAM,gBAAgB,EAAO,KAAK,EAClF,EAAM,eAAiB,KACvB,EAAM,SAAW,GACb,EAAM,gBAAkB,IAAA,IAAW,EAAS,aAAa,aAAa,EAAM,aAAa,EAC7F,EAAM,cAAgB,EAAS,aAAa,eAAiB,CACzD,EAAM,SAAW,GACjB,EAAM,cAAgB,IAAA,EAC1B,CAAC,CACL,EAEM,EAA0B,GAAgC,EAAmB,CAAQ,CAAC,CAAC,SAEvF,EAAyB,GAA+B,CAC1D,IAAM,EAAQ,EAAmB,EAAQ,aAAa,EACtD,EAAM,qBAAqB,gBAAgB,yBAAyB,EACpE,EAAQ,MAAM,CAAC,cAAe,GAAM,aAAc,EAAK,CAAC,EACxD,EAAQ,aAAa,0BAA2B,YAAY,EAC5D,EAAM,oBAAsB,CAChC"}
|