@vireo-ai/trellis-ui 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -1
- package/packages/client/src/components/checkbox/styles.css +7 -0
- package/packages/client/src/components/radio/styles.css +2 -8
- package/packages/client/src/styles/components.css +1 -0
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/theme.css +54 -10
- package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
- package/packages/client/types/capabilities/motion.entry.generated.d.ts +3 -0
- package/packages/client/types/capabilities/resizable.entry.generated.d.ts +3 -0
- package/packages/client/types/capabilities/sortable.entry.generated.d.ts +3 -0
- package/packages/client/types/component-api.d.ts +10 -10
- package/packages/client/types/components/accordion/index.d.ts +7 -4
- package/packages/client/types/components/accordion/machine.d.ts +51 -57
- package/packages/client/types/components/card/contract.d.ts +5 -2
- package/packages/client/types/components/checkbox/contract.d.ts +17 -7
- package/packages/client/types/components/common.d.ts +6 -1
- package/packages/client/types/components/date-picker/index.d.ts +7 -4
- package/packages/client/types/components/date-picker/machine.d.ts +46 -362
- package/packages/client/types/components/dropdown/index.d.ts +7 -4
- package/packages/client/types/components/dropdown/machine.d.ts +5 -67
- package/packages/client/types/components/field/index.d.ts +1 -2
- package/packages/client/types/components/file-upload/index.d.ts +7 -4
- package/packages/client/types/components/file-upload/machine.d.ts +17 -39
- package/packages/client/types/components/input/index.d.ts +1 -2
- package/packages/client/types/components/modal/index.d.ts +6 -2
- package/packages/client/types/components/modal/machine.d.ts +5 -103
- package/packages/client/types/components/panels/index.d.ts +6 -2
- package/packages/client/types/components/panels/machine.d.ts +59 -81
- package/packages/client/types/components/radio/contract.d.ts +12 -4
- package/packages/client/types/components/runtime.d.ts +10 -10
- package/packages/client/types/components/scroll-area/index.d.ts +1 -2
- package/packages/client/types/components/select/index.d.ts +7 -4
- package/packages/client/types/components/select/machine.d.ts +37 -331
- package/packages/client/types/components/sidebar/index.d.ts +6 -2
- package/packages/client/types/components/sidebar/machine.d.ts +11 -47
- package/packages/client/types/components/slider/index.d.ts +1 -2
- package/packages/client/types/components/switch/index.d.ts +1 -2
- package/packages/client/types/components/tabs/contract.d.ts +6 -2
- package/packages/client/types/components/tabs/index.d.ts +7 -4
- package/packages/client/types/components/tabs/machine.d.ts +11 -29
- package/packages/client/types/components/toast/index.d.ts +6 -2
- package/packages/client/types/components/toast/machine.d.ts +7 -66
- package/packages/client/types/core.d.ts +2 -2
- package/packages/client/types/runtime/alpine-data.d.ts +6 -0
- package/packages/client/types/runtime/alpine-machine.d.ts +3 -8
- package/packages/client/types/runtime/engine/request.d.ts +1 -0
- package/packages/client/types/runtime/index.d.ts +7 -3
- package/packages/client/types/runtime/transition-coordinator.d.ts +41 -7
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +54 -107
- 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 +491 -375
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-D0Kqjm-1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-D0Kqjm-1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-Cog7tKk0.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-Cog7tKk0.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-k107A8WE.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-k107A8WE.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js → common-BOd_thC-.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js.map → common-BOd_thC-.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-vW9Cglw8.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DjoX4J-6.js.map → core-vW9Cglw8.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bbm6qhVl.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bbm6qhVl.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgnZZd0A.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgnZZd0A.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhPEF6oz.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-xcXw-cEl.js.map → entry.generated-BhPEF6oz.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bhvs_TUM.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bhvs_TUM.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGgRCeB5.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGgRCeB5.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CgO0b8V6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CgO0b8V6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cvgc61x9.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cvgc61x9.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DFITIl56.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DFITIl56.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMK37KS0.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMK37KS0.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMre0DbH.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMre0DbH.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DT70Lo44.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DT70Lo44.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVPnOfPb.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVPnOfPb.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DiG5fS1F.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DiG5fS1F.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DnSxEcns.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DnSxEcns.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-JnbQA47P.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-JnbQA47P.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-byAFfb_v.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-byAFfb_v.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dTc38DPe.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dTc38DPe.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js +3 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-DS2ew4dT.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-9VxzbQBi.js.map → semantic-observer-DS2ew4dT.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-uyKKe0QF.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-uyKKe0QF.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.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/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/file-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +232 -127
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DzG9Lai4.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DzG9Lai4.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wHjTggCn.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wHjTggCn.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +0 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-DiG5fS1F.js","names":[],"sources":["../../../../../../../../client/src/components/scroll-area/contract.ts","../../../../../../../../client/src/components/scroll-area/machine.ts","../../../../../../../../client/src/components/scroll-area/styles.ts","../../../../../../../../client/src/components/scroll-area/index.ts","../../../../../../../../client/src/components/scroll-area/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\n\nconst SCROLL_AREA_ORIENTATIONS = ['vertical', 'horizontal', 'both'] as const;\nconst SCROLL_AREA_TYPES = ['hover', 'always', 'scroll'] as const;\nconst scrollAreaSchema = {\n orientation: oneOf(SCROLL_AREA_ORIENTATIONS, 'vertical'),\n type: oneOf(SCROLL_AREA_TYPES, 'hover'),\n fill: bool,\n hideNative: bool.default(true),\n disabled: bool,\n class: string,\n viewportClass: string,\n scrollbarClass: string,\n thumbClass: string,\n cornerClass: string,\n};\n\ntype ScrollAreaOrientation = typeof SCROLL_AREA_ORIENTATIONS[number];\ntype ScrollAreaType = typeof SCROLL_AREA_TYPES[number];\ntype ScrollAreaProps = SchemaToProps<typeof scrollAreaSchema>;\n\nexport {\n SCROLL_AREA_ORIENTATIONS,\n SCROLL_AREA_TYPES,\n scrollAreaSchema,\n};\nexport type {\n ScrollAreaOrientation,\n ScrollAreaProps,\n ScrollAreaType,\n};\n","import {\n createMachine,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport type {ScrollAreaProps} from './contract';\n\ntype ScrollAxis = 'x' | 'y';\n\ntype ScrollAreaContext = {\n overflow: {x: boolean; y: boolean};\n};\n\ntype ScrollAreaMachineEffects = {\n sync(scope: MachineScope<ScrollAreaContext, ScrollAreaProps>): void;\n};\n\ntype CreateScrollAreaMachineOptions = {\n props: ScrollAreaProps;\n context: ScrollAreaContext;\n effects: ScrollAreaMachineEffects;\n};\n\n\nconst axisIs = (axis: ScrollAxis) => ({event}: MachineScope<ScrollAreaContext, ScrollAreaProps>): boolean => (\n event.axis === axis\n);\n\nconst scrollAreaHooks = [] as const;\n\nconst createScrollAreaMachine = ({\n props,\n context,\n effects,\n}: CreateScrollAreaMachineOptions): Machine<ScrollAreaContext, ScrollAreaProps> => createMachine<ScrollAreaContext, ScrollAreaProps>({\n type: 'parallel',\n on: {\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'sync'},\n MEASURED: {reduce: 'setOverflow', effects: 'sync'},\n },\n states: {\n pointer: {\n initial: 'outside',\n states: {\n outside: {on: {POINTER_ENTERED: {target: 'inside', effects: 'sync'}}},\n inside: {tags: ['hovered'], on: {POINTER_LEFT: {target: 'outside', effects: 'sync'}}},\n },\n },\n focus: {\n initial: 'outside',\n states: {\n outside: {on: {FOCUS_ENTERED: {target: 'inside', effects: 'sync'}}},\n inside: {tags: ['focused'], on: {FOCUS_LEFT: {target: 'outside', effects: 'sync'}}},\n },\n },\n scrolling: {\n initial: 'idle',\n states: {\n idle: {on: {SCROLLED: {target: 'active', effects: 'sync'}}},\n active: {tags: ['scrolling'], on: {SCROLL_SETTLED: {target: 'idle', effects: 'sync'}}},\n },\n },\n dragging: {\n initial: 'idle',\n states: {\n idle: {\n on: {\n DRAG_STARTED: [\n {target: 'vertical', guard: axisIs('y'), effects: 'sync'},\n {target: 'horizontal', guard: axisIs('x'), effects: 'sync'},\n ],\n },\n },\n vertical: {tags: ['dragging', 'dragging-y'], on: {DRAG_ENDED: {target: 'idle', effects: 'sync'}}},\n horizontal: {tags: ['dragging', 'dragging-x'], on: {DRAG_ENDED: {target: 'idle', effects: 'sync'}}},\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = propsChangedEvent<ScrollAreaProps>(event);\n return next ? {props: next.props} : {};\n },\n setOverflow: ({context, event}) => ({\n context: {\n ...context,\n overflow: {\n x: event.overflowX === true,\n y: event.overflowY === true,\n },\n },\n }),\n },\n effects: {sync: effects.sync},\n});\n\nexport {createScrollAreaMachine, scrollAreaHooks};\nexport type {\n CreateScrollAreaMachineOptions,\n ScrollAreaContext,\n ScrollAreaMachineEffects,\n ScrollAxis,\n};\n","import {defineStyles} from '../../runtime';\n\nconst scrollAreaStyles = defineStyles({definition: {\n component: 'ui.scroll-area',\n parts: {\n root: {\n base: [\n 'relative min-w-0 overflow-hidden text-surface-ink',\n 'data-disabled:opacity-60',\n ],\n variants: {\n fill: {\n true: 'flex min-h-0 flex-1 flex-col',\n false: '',\n },\n },\n defaults: {\n fill: false,\n },\n },\n viewport: {\n base: [\n 'min-h-0 min-w-0 outline-none',\n 'focus-visible:ui-focus-ring',\n ],\n variants: {\n orientation: {\n vertical: 'h-full w-full overflow-x-hidden overflow-y-auto',\n horizontal: 'h-full w-full overflow-x-auto overflow-y-hidden',\n both: 'size-full overflow-auto',\n },\n fill: {\n true: 'flex-1',\n false: '',\n },\n },\n defaults: {\n orientation: 'vertical',\n fill: false,\n },\n },\n content: {\n base: 'min-w-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: 'w-max min-w-full',\n both: 'min-w-full',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n scrollbar: {\n base: [\n 'pointer-events-none absolute z-10 rounded-scrollbar-thumb opacity-0',\n 'data-visible:pointer-events-auto data-visible:opacity-100 data-disabled:pointer-events-none',\n ],\n variants: {\n orientation: {\n vertical: 'bottom-scrollbar-inset right-scrollbar-inset top-scrollbar-inset w-scrollbar',\n horizontal: 'bottom-scrollbar-inset left-scrollbar-inset right-scrollbar-inset h-scrollbar',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n thumb: {\n base: [\n 'absolute rounded-scrollbar-thumb bg-scrollbar-thumb',\n 'hover:bg-scrollbar-thumb-hover data-dragging:bg-scrollbar-thumb-hover',\n ],\n variants: {\n orientation: {\n vertical: 'left-0 top-0 w-full',\n horizontal: 'left-0 top-0 h-full',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n corner: {\n base: [\n 'pointer-events-none absolute bottom-scrollbar-inset right-scrollbar-inset z-10 size-scrollbar rounded-scrollbar-thumb',\n 'bg-transparent opacity-0',\n 'data-visible:opacity-100',\n ],\n },\n },\n}});\n\nexport {scrollAreaStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n mergeBindings,\n type BindingObject,\n type MachineSnapshot,\n resolveStyle,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {addListener, clamp, isRtl, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {scrollAreaSchema, type ScrollAreaOrientation, type ScrollAreaProps} from './contract';\nimport {\n createScrollAreaMachine,\n type ScrollAreaContext,\n scrollAreaHooks,\n type ScrollAxis,\n} from './machine';\nimport {scrollAreaStyles} from './styles';\n\ntype DragState = {\n axis: ScrollAxis;\n pointerId: number;\n startPointer: number;\n startScroll: number;\n trackLength: number;\n thumbLength: number;\n maxScroll: number;\n};\n\ntype ScrollAreaElements = {\n root: HTMLElement;\n viewport: HTMLElement;\n content: HTMLElement | null;\n verticalScrollbar: HTMLElement | null;\n horizontalScrollbar: HTMLElement | null;\n verticalThumb: HTMLElement | null;\n horizontalThumb: HTMLElement | null;\n corner: HTMLElement | null;\n};\n\ntype AxisGeometry = {\n trackLength: number;\n thumbLength: number;\n maxOffset: number;\n maxScroll: number;\n};\n\n/**\n * Public Alpine API for `ui.scroll-area`.\n *\n * @public\n */\ninterface UiScrollAreaApi {\n /** Whether content currently overflows the horizontal axis. */\n readonly overflowX: boolean;\n /** Whether content currently overflows the vertical axis. */\n readonly overflowY: boolean;\n /** Whether the native viewport is in an active scroll session. */\n readonly isScrolling: boolean;\n /** Whether a custom scrollbar thumb is being dragged. */\n readonly isDragging: boolean;\n}\n\ntype ScrollAreaData = AlpineMachine<ScrollAreaContext, ScrollAreaProps, typeof scrollAreaHooks> & UiScrollAreaApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n viewport(el: HTMLElement): BindingObject;\n scrollbar(el: HTMLElement): BindingObject;\n thumb(el: HTMLElement): BindingObject;\n corner(el: HTMLElement): BindingObject;\n};\n\nconst MIN_THUMB_SIZE = 18;\nconst SCROLL_CHROME_FADE_DELAY = 1000;\n\nlet rtlScrollType: 'negative' | 'reverse' | 'default' | null = null;\n\nconst includesAxis = (orientation: ScrollAreaOrientation, axis: ScrollAxis): boolean => (\n orientation === 'both' || (orientation === 'horizontal' && axis === 'x') || (orientation === 'vertical' && axis === 'y')\n);\n\nconst detectRtlScrollType = (): 'negative' | 'reverse' | 'default' => {\n if (rtlScrollType) return rtlScrollType;\n\n const outer = document.createElement('div');\n const inner = document.createElement('div');\n outer.dir = 'rtl';\n outer.style.cssText = 'position:absolute;left:-9999px;width:4px;height:1px;overflow:scroll;';\n inner.style.cssText = 'width:8px;height:1px;';\n outer.append(inner);\n document.body.append(outer);\n\n outer.scrollLeft = 1;\n if (outer.scrollLeft === 0) rtlScrollType = 'negative';\n else {\n outer.scrollLeft = 0;\n rtlScrollType = outer.scrollLeft === 0 ? 'reverse' : 'default';\n }\n\n outer.remove();\n return rtlScrollType;\n};\n\nconst horizontalScrollPosition = (viewport: HTMLElement): number => {\n const max = Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n if (!isRtl({el: viewport})) return viewport.scrollLeft;\n\n const type = detectRtlScrollType();\n if (type === 'negative') return -viewport.scrollLeft;\n if (type === 'reverse') return max - viewport.scrollLeft;\n return viewport.scrollLeft;\n};\n\nconst setHorizontalScrollPosition = (viewport: HTMLElement, value: number): void => {\n const max = Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n const next = clamp(value, 0, max);\n if (!isRtl({el: viewport})) {\n viewport.scrollLeft = next;\n return;\n }\n\n const type = detectRtlScrollType();\n if (type === 'negative') viewport.scrollLeft = -next;\n else if (type === 'reverse') viewport.scrollLeft = max - next;\n else viewport.scrollLeft = next;\n};\n\nconst axisFromOrientation = (el: HTMLElement): ScrollAxis => (\n el.dataset.orientation === 'horizontal' ? 'x' : 'y'\n);\n\nconst isHTMLElement = (value: Element | null): value is HTMLElement => value instanceof HTMLElement;\n\nconst queryDirectPart = (root: HTMLElement, selector: string): HTMLElement | null => {\n const el = root.querySelector(`:scope > ${selector}`);\n return isHTMLElement(el) ? el : null;\n};\n\nconst UiScrollArea = (): TrellisAlpineComponent<ScrollAreaData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let listeners: CleanupStack = [];\n let resizeObserver: ResizeObserver | null = null;\n let mutationObserver: MutationObserver | null = null;\n let measureFrame = 0;\n let positionFrame = 0;\n let fadeTimer = 0;\n let dragging: DragState | null = null;\n let verticalGeometry: AxisGeometry | null = null;\n let horizontalGeometry: AxisGeometry | null = null;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Scroll Area has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<ScrollAreaContext, ScrollAreaProps> => (\n bridge.getCommittedSnapshot()\n );\n const currentProps = (): Readonly<ScrollAreaProps> => currentSnapshot().props;\n const hasTag = (tag: string): boolean => currentSnapshot().tags.includes(tag);\n const elements = (): ScrollAreaElements => {\n const rootElement = root();\n const viewport = queryDirectPart(rootElement, '[data-ui-scroll-area-viewport]') ?? rootElement;\n return {\n root: rootElement,\n viewport,\n content: queryDirectPart(viewport, '[data-ui-scroll-area-content]'),\n verticalScrollbar: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"vertical\"]'),\n horizontalScrollbar: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"horizontal\"]'),\n verticalThumb: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"vertical\"] > [data-ui-scroll-area-thumb][data-orientation=\"vertical\"]'),\n horizontalThumb: queryDirectPart(rootElement, '[data-ui-scroll-area-scrollbar][data-orientation=\"horizontal\"] > [data-ui-scroll-area-thumb][data-orientation=\"horizontal\"]'),\n corner: queryDirectPart(rootElement, '[data-ui-scroll-area-corner]'),\n };\n };\n\n const clearFadeTimer = (): void => {\n if (!fadeTimer) return;\n window.clearTimeout(fadeTimer);\n fadeTimer = 0;\n };\n const startFadeTimer = (): void => {\n clearFadeTimer();\n fadeTimer = window.setTimeout(() => {\n fadeTimer = 0;\n bridge.send('SCROLL_SETTLED');\n }, SCROLL_CHROME_FADE_DELAY);\n };\n\n const updateThumbPositions = (parts = elements()): void => {\n const {viewport} = parts;\n if (parts.verticalThumb && verticalGeometry) {\n const offset = verticalGeometry.maxOffset * clamp(viewport.scrollTop / verticalGeometry.maxScroll, 0, 1);\n parts.verticalThumb.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n if (parts.horizontalThumb && horizontalGeometry) {\n const offset = horizontalGeometry.maxOffset * clamp(\n horizontalScrollPosition(viewport) / horizontalGeometry.maxScroll,\n 0,\n 1,\n );\n parts.horizontalThumb.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n };\n\n const updateGeometry = (parts: ScrollAreaElements): void => {\n const {viewport} = parts;\n const updateAxis = (\n axis: ScrollAxis,\n scrollbar: HTMLElement | null,\n thumb: HTMLElement | null,\n overflow: boolean,\n ): AxisGeometry | null => {\n if (!scrollbar || !thumb || !overflow) {\n if (thumb) {\n thumb.style.width = '';\n thumb.style.height = '';\n thumb.style.transform = '';\n }\n return null;\n }\n\n const trackLength = axis === 'y' ? scrollbar.clientHeight : scrollbar.clientWidth;\n const viewportLength = axis === 'y' ? viewport.clientHeight : viewport.clientWidth;\n const scrollLength = axis === 'y' ? viewport.scrollHeight : viewport.scrollWidth;\n const maxScroll = Math.max(1, scrollLength - viewportLength);\n const thumbLength = Math.min(\n trackLength,\n Math.max(MIN_THUMB_SIZE, (viewportLength / scrollLength) * trackLength),\n );\n const maxOffset = Math.max(0, trackLength - thumbLength);\n\n if (axis === 'y') {\n thumb.style.height = `${thumbLength}px`;\n thumb.style.width = '';\n } else {\n thumb.style.width = `${thumbLength}px`;\n thumb.style.height = '';\n }\n return {trackLength, thumbLength, maxOffset, maxScroll};\n };\n\n const {overflow} = currentSnapshot().context;\n verticalGeometry = updateAxis('y', parts.verticalScrollbar, parts.verticalThumb, overflow.y);\n horizontalGeometry = updateAxis('x', parts.horizontalScrollbar, parts.horizontalThumb, overflow.x);\n updateThumbPositions(parts);\n };\n\n const updateVisibility = (parts: ScrollAreaElements): void => {\n const props = currentProps();\n const {overflow} = currentSnapshot().context;\n const interacting = hasTag('hovered') || hasTag('focused') || hasTag('scrolling') || hasTag('dragging');\n const visibleFor = (axisOverflows: boolean): boolean => {\n if (!axisOverflows) return false;\n if (props.type === 'always') return true;\n if (props.type === 'scroll') return hasTag('scrolling') || hasTag('dragging');\n return interacting;\n };\n const verticalVisible = visibleFor(overflow.y);\n const horizontalVisible = visibleFor(overflow.x);\n\n [parts.verticalScrollbar, parts.verticalThumb].forEach((el) => {\n if (el) setPresence({el, attr: 'data-visible', present: verticalVisible});\n });\n [parts.horizontalScrollbar, parts.horizontalThumb].forEach((el) => {\n if (el) setPresence({el, attr: 'data-visible', present: horizontalVisible});\n });\n [parts.verticalScrollbar, parts.horizontalScrollbar].forEach((el) => {\n if (el) setPresence({el, attr: 'data-disabled', present: props.disabled});\n });\n if (parts.verticalThumb) setPresence({el: parts.verticalThumb, attr: 'data-dragging', present: hasTag('dragging-y')});\n if (parts.horizontalThumb) setPresence({el: parts.horizontalThumb, attr: 'data-dragging', present: hasTag('dragging-x')});\n if (parts.corner) setPresence({el: parts.corner, attr: 'data-visible', present: verticalVisible && horizontalVisible});\n };\n\n const releaseDrag = (): void => {\n if (!dragging) return;\n const active = dragging;\n dragging = null;\n const parts = elements();\n const thumb = active.axis === 'y' ? parts.verticalThumb : parts.horizontalThumb;\n try {\n thumb?.releasePointerCapture?.(active.pointerId);\n } catch {\n // Pointer capture cleanup is best-effort after interrupted gestures.\n }\n bridge.send({type: 'DRAG_ENDED', axis: active.axis});\n };\n\n const syncDom = (): void => {\n const parts = elements();\n const props = currentProps();\n const {overflow} = currentSnapshot().context;\n if (props.disabled && dragging) releaseDrag();\n\n setPresence({el: parts.root, attr: 'data-overflow-x', present: overflow.x});\n setPresence({el: parts.root, attr: 'data-overflow-y', present: overflow.y});\n setPresence({el: parts.root, attr: 'data-scrolling', present: hasTag('scrolling')});\n setPresence({el: parts.root, attr: 'data-dragging', present: hasTag('dragging')});\n setPresence({el: parts.root, attr: 'data-disabled', present: props.disabled});\n setAttribute({el: parts.viewport, attr: 'data-orientation', value: props.orientation});\n setPresence({el: parts.viewport, attr: 'data-hide-native', present: props.hideNative});\n updateGeometry(parts);\n updateVisibility(parts);\n };\n\n const scheduleMeasure = (): void => {\n if (measureFrame) return;\n measureFrame = requestAnimationFrame(() => {\n measureFrame = 0;\n const parts = elements();\n const props = currentProps();\n const overflowX = includesAxis(props.orientation, 'x') && parts.viewport.scrollWidth > parts.viewport.clientWidth + 1;\n const overflowY = includesAxis(props.orientation, 'y') && parts.viewport.scrollHeight > parts.viewport.clientHeight + 1;\n const current = currentSnapshot().context.overflow;\n if (overflowX !== current.x || overflowY !== current.y) {\n bridge.send({type: 'MEASURED', overflowX, overflowY});\n } else {\n updateGeometry(parts);\n updateVisibility(parts);\n }\n });\n };\n const schedulePosition = (): void => {\n if (positionFrame) return;\n positionFrame = requestAnimationFrame(() => {\n positionFrame = 0;\n updateThumbPositions();\n });\n };\n\n const onScroll = (): void => {\n schedulePosition();\n if (!hasTag('scrolling')) bridge.send('SCROLLED');\n if ((currentSnapshot().context.overflow.y && !verticalGeometry)\n || (currentSnapshot().context.overflow.x && !horizontalGeometry)) scheduleMeasure();\n startFadeTimer();\n };\n\n const startDrag = (event: PointerEvent, axis: ScrollAxis): void => {\n if (currentProps().disabled) return;\n const parts = elements();\n const viewport = parts.viewport;\n const scrollbar = axis === 'y' ? parts.verticalScrollbar : parts.horizontalScrollbar;\n const thumb = axis === 'y' ? parts.verticalThumb : parts.horizontalThumb;\n const overflow = axis === 'y' ? currentSnapshot().context.overflow.y : currentSnapshot().context.overflow.x;\n if (!scrollbar || !thumb || !overflow) return;\n\n const trackLength = axis === 'y' ? scrollbar.clientHeight : scrollbar.clientWidth;\n const thumbLength = axis === 'y' ? thumb.offsetHeight : thumb.offsetWidth;\n const maxScroll = axis === 'y'\n ? Math.max(0, viewport.scrollHeight - viewport.clientHeight)\n : Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n dragging = {\n axis,\n pointerId: event.pointerId,\n startPointer: axis === 'y' ? event.clientY : event.clientX,\n startScroll: axis === 'y' ? viewport.scrollTop : horizontalScrollPosition(viewport),\n trackLength,\n thumbLength,\n maxScroll,\n };\n try {\n thumb.setPointerCapture?.(event.pointerId);\n } catch {\n dragging = null;\n return;\n }\n clearFadeTimer();\n bridge.send({type: 'DRAG_STARTED', axis});\n };\n\n const moveDrag = (event: PointerEvent): void => {\n if (!dragging || dragging.pointerId !== event.pointerId) return;\n event.preventDefault();\n const {viewport} = elements();\n const pointer = dragging.axis === 'y' ? event.clientY : event.clientX;\n const delta = pointer - dragging.startPointer;\n const maxOffset = Math.max(1, dragging.trackLength - dragging.thumbLength);\n const nextScroll = dragging.startScroll + (delta / maxOffset) * dragging.maxScroll;\n if (dragging.axis === 'y') viewport.scrollTop = clamp(nextScroll, 0, dragging.maxScroll);\n else setHorizontalScrollPosition(viewport, nextScroll);\n schedulePosition();\n };\n\n const endDrag = (event: PointerEvent): void => {\n if (!dragging || dragging.pointerId !== event.pointerId) return;\n releaseDrag();\n startFadeTimer();\n };\n\n const bridge = createAlpineMachine({\n schema: scrollAreaSchema,\n hooks: scrollAreaHooks,\n createMachine: ({props}) => createScrollAreaMachine({\n props,\n context: {overflow: {x: false, y: false}},\n effects: {\n sync: syncDom,\n },\n }),\n });\n\n let component!: TrellisAlpineComponent<ScrollAreaData>;\n component = {\n ...bridge,\n get overflowX(): boolean {\n return this.snapshot.current?.context.overflow.x ?? false;\n },\n get overflowY(): boolean {\n return this.snapshot.current?.context.overflow.y ?? false;\n },\n get isScrolling(): boolean {\n return this.snapshot.current?.tags.includes('scrolling') ?? false;\n },\n get isDragging(): boolean {\n return this.snapshot.current?.tags.includes('dragging') ?? false;\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const parts = elements();\n resizeObserver = new ResizeObserver(scheduleMeasure);\n resizeObserver.observe(parts.viewport);\n if (parts.content) resizeObserver.observe(parts.content);\n mutationObserver = new MutationObserver(scheduleMeasure);\n if (parts.content) mutationObserver.observe(parts.content, {childList: true, subtree: true, characterData: true});\n\n addListener({target: parts.viewport, event: 'scroll', handler: onScroll, cleanup: listeners, options: {passive: true}});\n addListener({target: document, event: 'pointermove', handler: (event) => moveDrag(event as PointerEvent), cleanup: listeners});\n addListener({target: document, event: 'pointerup', handler: (event) => endDrag(event as PointerEvent), cleanup: listeners});\n addListener({target: document, event: 'pointercancel', handler: (event) => endDrag(event as PointerEvent), cleanup: listeners});\n scheduleMeasure();\n },\n destroy(): void {\n releaseDrag();\n clearFadeTimer();\n if (measureFrame) cancelAnimationFrame(measureFrame);\n if (positionFrame) cancelAnimationFrame(positionFrame);\n measureFrame = 0;\n positionFrame = 0;\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n resizeObserver = null;\n mutationObserver = null;\n listeners.splice(0).forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-scroll-area': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-type': () => currentProps().type,\n ':data-fill': () => currentProps().fill ? '' : undefined,\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n '@pointerenter': () => bridge.send('POINTER_ENTERED'),\n '@pointerleave': () => bridge.send('POINTER_LEFT'),\n '@focusin': () => bridge.send('FOCUS_ENTERED'),\n '@focusout': (event: FocusEvent) => {\n if (!(event.relatedTarget instanceof Node) || !root().contains(event.relatedTarget)) {\n bridge.send('FOCUS_LEFT');\n }\n },\n },\n ]});\n },\n viewport(el: HTMLElement): BindingObject {\n return mergeBindings({inputs: [\n resolveStyle({\n part: scrollAreaStyles.parts.viewport,\n props: {orientation: currentProps().orientation, fill: currentProps().fill},\n className: el.dataset.class,\n }),\n {\n tabindex: '0',\n 'data-ui-scroll-area-viewport': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-hide-native': () => currentProps().hideNative ? '' : undefined,\n },\n ]});\n },\n scrollbar(el: HTMLElement): BindingObject {\n const orientation = axisFromOrientation(el) === 'x' ? 'horizontal' : 'vertical';\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.scrollbar, props: {orientation}, className: el.dataset.class}),\n {\n 'data-ui-scroll-area-scrollbar': '',\n 'aria-hidden': 'true',\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n },\n ]});\n },\n thumb(el: HTMLElement): BindingObject {\n const axis = axisFromOrientation(el);\n const orientation = axis === 'x' ? 'horizontal' : 'vertical';\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.thumb, props: {orientation}, className: el.dataset.class}),\n {\n 'data-ui-scroll-area-thumb': '',\n 'aria-hidden': 'true',\n '@pointerdown.prevent': (event: PointerEvent) => startDrag(event, axis),\n ':data-dragging': () => hasTag(axis === 'x' ? 'dragging-x' : 'dragging-y') ? '' : undefined,\n },\n ]});\n },\n corner(el: HTMLElement): BindingObject {\n return mergeBindings({inputs: [\n resolveStyle({part: scrollAreaStyles.parts.corner, className: el.dataset.class}),\n {'data-ui-scroll-area-corner': '', 'aria-hidden': 'true'},\n ]});\n },\n };\n\n return component;\n};\n\nconst registerScrollArea = defineAlpineData('UiScrollArea', UiScrollArea);\n\nexport {registerScrollArea, UiScrollArea};\nexport type {ScrollAreaData, ScrollAreaElements, UiScrollAreaApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerScrollArea as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerScrollArea = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerScrollArea};\nexport default registerScrollArea;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{a as i,o as a,s as o,t as s}from"./dom-qAeVl7dc.js";import{t as c}from"./alpine-machine-D0Kqjm-1.js";import{t as l}from"./alpine-data-DZ17j0jc.js";import{t as u}from"./machine-Dqut4h89.js";import{n as d,t as f}from"./props-change-2xfsIAEN.js";import{n as p,r as m}from"./form-control-BkVb2Qed.js";import{C as h,E as g,_,o as v,v as y}from"./common-BOd_thC-.js";var b=h,x=[`default`,`cards`,`pills`],S=_,C=v,w=[`default`,`cards`,`pills`],T=g,E=y,D={value:e.default(`on`),name:e,label:e,description:e,checked:r(n,`prop-checked`),indeterminate:r(n,`prop-indeterminate`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),indicator:n.default(!0),placement:t(S,`leading`),icon:e,variant:t(w,`default`),color:t(T,`neutral`),interaction:t(E,`tonal`),size:t(C,`md`),inputClass:e,indicatorClass:e,indicatorIconClass:e,iconClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};({...D});var O={name:e,orientation:t(b,`vertical`),variant:t(x,`default`),color:t(T,`neutral`),interaction:t(E,`tonal`),indicator:n.default(!0),placement:t(S,`leading`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),class:e};t(C,`md`);var k=[],A=[],j={name:``,disabled:!1,required:!1,invalid:!1},M=e=>e.indeterminate?`indeterminate`:e.checked?`checked`:`unchecked`,N=e=>e.state===`checked`||e.state===`indeterminate`?e.state:`unchecked`,P=({event:e})=>f(e,`checked`,`indeterminate`),F=e=>t=>{let n=d(t.event)?.props;return P(t)&&!!n&&M(n)===e},I=e=>({event:t})=>N(t)===e,L=e=>({context:{...e.context,selection:{state:N(e.event)}}}),R=e=>{let t=d(e.event)?.props;if(t)return{props:t,context:P(e)?{...e.context,selection:{state:M(t)}}:e.context}},z=e=>[{target:`unchecked`,guard:I(`unchecked`),reduce:`setSelection`,effects:e},{target:`checked`,guard:I(`checked`),reduce:`setSelection`,effects:e},{target:`indeterminate`,guard:I(`indeterminate`),reduce:`setSelection`,effects:e}],B=({props:e,inherited:t=j,effects:n})=>{let r=M(e);return u({initial:r,on:{NATIVE_CHANGED:z([`sync`]),API_SET:z([`sync`,`emitInput`,`emitChange`]),INHERITANCE_CHANGED:{reduce:`setInheritance`,effects:`sync`},PROPS_CHANGED:[{target:`unchecked`,guard:F(`unchecked`),reduce:`reconcileProps`,effects:`sync`},{target:`checked`,guard:F(`checked`),reduce:`reconcileProps`,effects:`sync`},{target:`indeterminate`,guard:F(`indeterminate`),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`]},checked:{tags:[`checked`]},indeterminate:{tags:[`indeterminate`]}}},{context:{selection:{state:r},inherited:{...t}},props:e,reducers:{setSelection:L,reconcileProps:R,setInheritance:e=>({context:{...e.context,inherited:{name:typeof e.event.name==`string`?e.event.name:``,disabled:e.event.disabled===!0,required:e.event.required===!0,invalid:e.event.invalid===!0}}})},effects:n})},V=e=>({name:e.name,disabled:e.disabled,required:e.required,invalid:e.invalid}),H=({props:e,effects:t})=>u({initial:`ready`,states:{ready:{tags:[`ready`],on:{PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}}}},{context:{inherited:V(e)},props:e,reducers:{reconcileProps:e=>{let t=d(e.event)?.props;return t?{props:t,context:{inherited:V(t)}}:void 0}},effects:t}),U=new WeakMap,W=e=>{let t=e.parentElement?.closest(`[data-ui-checkbox-group]`)??null;return t?U.get(t)??null:null},G=()=>{let e=null,t=null,n=[],r=null,l=!1,u=()=>{if(!e)throw Error(`Checkbox has not been initialized.`);return e},d=()=>{if(!t)throw Error(`Checkbox requires a native checkbox input.`);return t},f=()=>_.getCommittedSnapshot(),h=()=>{let e=u(),t=d(),n=f(),r=n.props,s=n.context.inherited,c=n.context.selection.state,l=c===`checked`,h=c===`indeterminate`,g=r.disabled||s.disabled,_=r.required||s.required,v=r.invalid||s.invalid,y=r.name||s.name;t.checked=l,t.indeterminate=h,y||t.removeAttribute(`name`),m({input:t,state:{name:y,value:r.value,disabled:g,required:_,invalid:v}}),h?t.setAttribute(`aria-checked`,`mixed`):t.removeAttribute(`aria-checked`),a({el:e,attr:`data-state`,value:c}),o({el:e,attr:`data-checked`,present:l}),o({el:e,attr:`data-indeterminate`,present:h}),p({el:e,state:{disabled:g,required:_,invalid:v}}),o({el:t,attr:`data-checked`,present:l}),o({el:t,attr:`data-indeterminate`,present:h});let b=e.querySelector(`[data-ui-checkbox-indicator]`);b&&(a({el:b,attr:`data-state`,value:c}),o({el:b,attr:`data-checked`,present:l}),o({el:b,attr:`data-indeterminate`,present:h}),o({el:b,attr:`data-disabled`,present:g}),o({el:b,attr:`data-invalid`,present:v}));let x=e.querySelector(`[data-ui-checkbox-indicator-icon="checked"]`);x&&(o({el:x,attr:`data-checked`,present:l}),i({el:x,attr:`data-indeterminate`}));let S=e.querySelector(`[data-ui-checkbox-indicator-icon="indeterminate"]`);S&&(o({el:S,attr:`data-indeterminate`,present:h}),i({el:S,attr:`data-checked`}))},g=e=>{l=!0;try{d().dispatchEvent(new Event(e,{bubbles:!0}))}finally{l=!1}},_=c({schema:D,hooks:k,createMachine:({props:e})=>B({props:e,effects:{sync:h,emitInput:()=>g(`input`),emitChange:()=>g(`change`)}})}),v={setInheritance(e){_.send({type:`INHERITANCE_CHANGED`,...e})}};return{..._,init(){if(e=this.$el,t=u().querySelector(`[data-ui-checkbox-input]`),!t)throw Error(`Checkbox requires a native checkbox input.`);_.connect(e,this.snapshot),s({target:t,event:`input`,handler:()=>{l||_.send({type:`NATIVE_CHANGED`,state:d().checked?`checked`:`unchecked`})},cleanup:n}),s({target:t,event:`change`,handler:()=>{l||_.send({type:`NATIVE_CHANGED`,state:d().checked?`checked`:`unchecked`})},cleanup:n});let i=W(u());i&&(r=i.register(v)),h()},destroy(){r?.(),r=null,n.splice(0).reverse().forEach(e=>e()),_.disconnect(),e=null,t=null},get state(){return _.getCommittedSnapshot().context.selection.state},setState(e){if(![`unchecked`,`checked`,`indeterminate`].includes(e))throw Error(`Unknown checkbox state: ${String(e)}`);e!==_.getCommittedSnapshot().context.selection.state&&_.send({type:`API_SET`,state:e})}}},K=()=>{let e=null,t=new Set,n=()=>{if(!e)throw Error(`Checkbox group has not been initialized.`);return e},r=()=>o.getCommittedSnapshot(),i=()=>{let e=r();a({el:n(),attr:`data-orientation`,value:e.props.orientation}),a({el:n(),attr:`data-variant`,value:e.props.variant}),p({el:n(),state:e.context.inherited}),t.forEach(t=>t.setInheritance(e.context.inherited))},o=c({schema:O,hooks:A,createMachine:({props:e})=>H({props:e,effects:{sync:i}})}),s={register(e){return t.add(e),e.setInheritance(r().context.inherited),()=>t.delete(e)},inherited:()=>r().context.inherited};return{...o,init(){e=this.$el,o.connect(e,this.snapshot),U.set(n(),s),i()},destroy(){U.delete(n()),t.clear(),o.disconnect(),e=null}}},q=e=>{l(`UiCheckbox`,G)(e),l(`UiCheckboxGroup`,K)(e)},J=new WeakSet,Y=e=>{J.has(e)||(J.add(e),q(e))};export{G as n,K as r,Y as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-DnSxEcns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-DnSxEcns.js","names":[],"sources":["../../../../../../../../client/src/components/checkbox/contract.ts","../../../../../../../../client/src/components/checkbox/machine.ts","../../../../../../../../client/src/components/checkbox/index.ts","../../../../../../../../client/src/components/checkbox/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n INDICATOR_PLACEMENTS,\n INTERACTION_TREATMENTS,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type IndicatorPlacement,\n type Orientation,\n} from '../common';\n\nconst CHECKBOX_GROUP_ORIENTATIONS = ORIENTATIONS;\nconst CHECKBOX_GROUP_VARIANTS = ['default', 'cards', 'pills'] as const;\nconst CHECKBOX_PLACEMENTS = INDICATOR_PLACEMENTS;\nconst CHECKBOX_SIZES = CONTROL_SIZES;\nconst CHECKBOX_VARIANTS = ['default', 'cards', 'pills'] as const;\nconst CHECKBOX_COLORS = SELECTION_COLORS;\nconst CHECKBOX_INTERACTIONS = INTERACTION_TREATMENTS;\n\ntype CheckboxGroupOrientation = Orientation;\ntype CheckboxGroupVariant = (typeof CHECKBOX_GROUP_VARIANTS)[number];\ntype CheckboxPlacement = IndicatorPlacement;\ntype CheckboxSize = ControlSize;\ntype CheckboxVariant = (typeof CHECKBOX_VARIANTS)[number];\ntype CheckboxColor = (typeof CHECKBOX_COLORS)[number];\ntype CheckboxInteraction = (typeof CHECKBOX_INTERACTIONS)[number];\n\nconst checkboxControlSchema = {\n value: string.default('on'),\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n indeterminate: attribute(bool, 'prop-indeterminate'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n indicator: bool.default(true),\n placement: oneOf(CHECKBOX_PLACEMENTS, 'leading' as CheckboxPlacement),\n icon: string,\n variant: oneOf(CHECKBOX_VARIANTS, 'default' as CheckboxVariant),\n color: oneOf(CHECKBOX_COLORS, 'neutral' as CheckboxColor),\n interaction: oneOf(CHECKBOX_INTERACTIONS, 'tonal' as CheckboxInteraction),\n size: oneOf(CHECKBOX_SIZES, 'md' as CheckboxSize),\n inputClass: string,\n indicatorClass: string,\n indicatorIconClass: string,\n iconClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst checkboxSchema = {\n ...checkboxControlSchema,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n};\n\nconst checkboxGroupSchema = {\n name: string,\n orientation: oneOf(CHECKBOX_GROUP_ORIENTATIONS, 'vertical' as CheckboxGroupOrientation),\n variant: oneOf(CHECKBOX_GROUP_VARIANTS, 'default' as CheckboxGroupVariant),\n color: oneOf(CHECKBOX_COLORS, 'neutral' as CheckboxColor),\n interaction: oneOf(CHECKBOX_INTERACTIONS, 'tonal' as CheckboxInteraction),\n indicator: bool.default(true),\n placement: oneOf(CHECKBOX_PLACEMENTS, 'leading' as CheckboxPlacement),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n class: string,\n};\n\nconst checkboxIndicatorSchema = {\n size: oneOf(CHECKBOX_SIZES, 'md' as CheckboxSize),\n class: string,\n};\n\ntype CheckboxControlProps = SchemaToProps<typeof checkboxControlSchema>;\ntype CheckboxGroupProps = SchemaToProps<typeof checkboxGroupSchema>;\ntype CheckboxProps = SchemaToProps<typeof checkboxSchema>;\n\nexport {\n CHECKBOX_GROUP_ORIENTATIONS,\n CHECKBOX_GROUP_VARIANTS,\n CHECKBOX_COLORS,\n CHECKBOX_INTERACTIONS,\n CHECKBOX_PLACEMENTS,\n CHECKBOX_SIZES,\n CHECKBOX_VARIANTS,\n checkboxControlSchema,\n checkboxGroupSchema,\n checkboxIndicatorSchema,\n checkboxSchema,\n};\nexport type {\n CheckboxControlProps,\n CheckboxColor,\n CheckboxGroupOrientation,\n CheckboxGroupProps,\n CheckboxGroupVariant,\n CheckboxInteraction,\n CheckboxPlacement,\n CheckboxProps,\n CheckboxSize,\n CheckboxVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport type {CheckboxControlProps, CheckboxGroupProps} from './contract';\n\ntype CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\ntype CheckboxInheritance = {name: string; disabled: boolean; required: boolean; invalid: boolean};\ntype CheckboxContext = {\n selection: {state: CheckboxState};\n inherited: CheckboxInheritance;\n};\ntype CheckboxGroupContext = {inherited: CheckboxInheritance};\n\ntype CheckboxMachineEffects = {\n sync(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n emitInput(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n emitChange(scope: MachineScope<CheckboxContext, CheckboxControlProps>): void;\n};\ntype CheckboxGroupMachineEffects = {\n sync(scope: MachineScope<CheckboxGroupContext, CheckboxGroupProps>): void;\n};\n\nconst checkboxHooks = [] as const;\nconst checkboxGroupHooks = [] as const;\nconst EMPTY_INHERITANCE: CheckboxInheritance = {name: '', disabled: false, required: false, invalid: false};\n\nconst checkboxStateFromProps = (props: CheckboxControlProps): CheckboxState => {\n if (props.indeterminate) return 'indeterminate';\n return props.checked ? 'checked' : 'unchecked';\n};\n\nconst stateFromEvent = (event: MachineEventObject): CheckboxState => {\n if (event.state === 'checked' || event.state === 'indeterminate') return event.state;\n return 'unchecked';\n};\n\nconst selectionPropsChanged = ({event}: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => (\n propsChanged<CheckboxControlProps>(event, 'checked', 'indeterminate')\n);\nconst nextSelectionIs = (state: CheckboxState) => (scope: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => {\n const next = propsChangedEvent<CheckboxControlProps>(scope.event)?.props;\n return selectionPropsChanged(scope) && Boolean(next) && checkboxStateFromProps(next as CheckboxControlProps) === state;\n};\nconst eventStateIs = (state: CheckboxState) => ({event}: MachineScope<CheckboxContext, CheckboxControlProps>): boolean => (\n stateFromEvent(event) === state\n);\n\nconst setSelection = (scope: MachineScope<CheckboxContext, CheckboxControlProps>) => ({\n context: {...scope.context, selection: {state: stateFromEvent(scope.event)}},\n});\nconst reconcileProps = (scope: MachineScope<CheckboxContext, CheckboxControlProps>) => {\n const next = propsChangedEvent<CheckboxControlProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: selectionPropsChanged(scope)\n ? {...scope.context, selection: {state: checkboxStateFromProps(next)}}\n : scope.context,\n };\n};\n\nconst selectionTransitions = (effects: string[]) => [\n {target: 'unchecked', guard: eventStateIs('unchecked'), reduce: 'setSelection', effects},\n {target: 'checked', guard: eventStateIs('checked'), reduce: 'setSelection', effects},\n {target: 'indeterminate', guard: eventStateIs('indeterminate'), reduce: 'setSelection', effects},\n];\n\nconst createCheckboxMachine = ({\n props,\n inherited = EMPTY_INHERITANCE,\n effects,\n}: {\n props: CheckboxControlProps;\n inherited?: CheckboxInheritance;\n effects: CheckboxMachineEffects;\n}): Machine<CheckboxContext, CheckboxControlProps> => {\n const initial = checkboxStateFromProps(props);\n return createMachine<CheckboxContext, CheckboxControlProps>({\n initial,\n on: {\n NATIVE_CHANGED: selectionTransitions(['sync']),\n API_SET: selectionTransitions(['sync', 'emitInput', 'emitChange']),\n INHERITANCE_CHANGED: {reduce: 'setInheritance', effects: 'sync'},\n PROPS_CHANGED: [\n {target: 'unchecked', guard: nextSelectionIs('unchecked'), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'checked', guard: nextSelectionIs('checked'), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'indeterminate', guard: nextSelectionIs('indeterminate'), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n unchecked: {tags: ['unchecked']},\n checked: {tags: ['checked']},\n indeterminate: {tags: ['indeterminate']},\n },\n }, {\n context: {selection: {state: initial}, inherited: {...inherited}},\n props,\n reducers: {\n setSelection,\n reconcileProps,\n setInheritance: (scope) => ({\n context: {\n ...scope.context,\n inherited: {\n name: typeof scope.event.name === 'string' ? scope.event.name : '',\n disabled: scope.event.disabled === true,\n required: scope.event.required === true,\n invalid: scope.event.invalid === true,\n },\n },\n }),\n },\n effects,\n });\n};\n\nconst inheritanceFromGroupProps = (props: CheckboxGroupProps): CheckboxInheritance => ({\n name: props.name,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n});\n\nconst createCheckboxGroupMachine = ({\n props,\n effects,\n}: {\n props: CheckboxGroupProps;\n effects: CheckboxGroupMachineEffects;\n}): Machine<CheckboxGroupContext, CheckboxGroupProps> => createMachine<CheckboxGroupContext, CheckboxGroupProps>({\n initial: 'ready',\n states: {\n ready: {\n tags: ['ready'],\n on: {\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n },\n}, {\n context: {inherited: inheritanceFromGroupProps(props)},\n props,\n reducers: {\n reconcileProps: (scope) => {\n const next = propsChangedEvent<CheckboxGroupProps>(scope.event)?.props;\n return next ? {props: next, context: {inherited: inheritanceFromGroupProps(next)}} : undefined;\n },\n },\n effects,\n});\n\nexport {\n checkboxGroupHooks,\n checkboxHooks,\n checkboxStateFromProps,\n createCheckboxGroupMachine,\n createCheckboxMachine,\n EMPTY_INHERITANCE,\n};\nexport type {\n CheckboxContext,\n CheckboxGroupContext,\n CheckboxGroupMachineEffects,\n CheckboxInheritance,\n CheckboxMachineEffects,\n CheckboxState,\n};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, removeAttribute, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {checkboxControlSchema, checkboxGroupSchema, type CheckboxControlProps, type CheckboxGroupProps} from './contract';\nimport {\n checkboxGroupHooks,\n checkboxHooks,\n createCheckboxGroupMachine,\n createCheckboxMachine,\n type CheckboxContext,\n type CheckboxGroupContext,\n type CheckboxInheritance,\n type CheckboxState,\n} from './machine';\n\n/**\n * Public Alpine API for `ui.checkbox` and `ui.checkbox.control`.\n *\n * @public\n */\ninterface UiCheckboxApi {\n /** Current semantic checkbox state. */\n readonly state: CheckboxState;\n /** Set and commit the semantic checkbox state. */\n setState(state: CheckboxState): void;\n}\n\ntype CheckboxData = AlpineMachine<CheckboxContext, CheckboxControlProps, typeof checkboxHooks> & UiCheckboxApi & {\n init(): void;\n destroy(): void;\n};\ntype CheckboxGroupData = AlpineMachine<CheckboxGroupContext, CheckboxGroupProps, typeof checkboxGroupHooks> & {\n init(): void;\n destroy(): void;\n};\n\ntype CheckboxOwner = {setInheritance(inherited: CheckboxInheritance): void};\ntype CheckboxGroupOwner = {\n register(owner: CheckboxOwner): () => void;\n inherited(): CheckboxInheritance;\n};\n\nconst groupOwners = new WeakMap<HTMLElement, CheckboxGroupOwner>();\n\nconst closestGroupOwner = (element: HTMLElement): CheckboxGroupOwner | null => {\n const group = element.parentElement?.closest<HTMLElement>('[data-ui-checkbox-group]') ?? null;\n return group ? groupOwners.get(group) ?? null : null;\n};\n\nconst UiCheckbox = (): TrellisAlpineComponent<CheckboxData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let unregisterGroup: (() => void) | null = null;\n let dispatchingNative = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Checkbox has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Checkbox requires a native checkbox input.');\n return inputEl;\n };\n const currentSnapshot = (): MachineSnapshot<CheckboxContext, CheckboxControlProps> => bridge.getCommittedSnapshot();\n\n const syncDom = (): void => {\n const checkbox = root();\n const native = input();\n const snapshot = currentSnapshot();\n const props = snapshot.props;\n const inherited = snapshot.context.inherited;\n const state = snapshot.context.selection.state;\n const checked = state === 'checked';\n const indeterminate = state === 'indeterminate';\n const disabled = props.disabled || inherited.disabled;\n const required = props.required || inherited.required;\n const invalid = props.invalid || inherited.invalid;\n const name = props.name || inherited.name;\n\n native.checked = checked;\n native.indeterminate = indeterminate;\n if (!name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {name, value: props.value, disabled, required, invalid}});\n if (indeterminate) native.setAttribute('aria-checked', 'mixed');\n else native.removeAttribute('aria-checked');\n\n setAttribute({el: checkbox, attr: 'data-state', value: state});\n setPresence({el: checkbox, attr: 'data-checked', present: checked});\n setPresence({el: checkbox, attr: 'data-indeterminate', present: indeterminate});\n syncControlPresence({el: checkbox, state: {disabled, required, invalid}});\n setPresence({el: native, attr: 'data-checked', present: checked});\n setPresence({el: native, attr: 'data-indeterminate', present: indeterminate});\n\n const indicator = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator]');\n if (indicator) {\n setAttribute({el: indicator, attr: 'data-state', value: state});\n setPresence({el: indicator, attr: 'data-checked', present: checked});\n setPresence({el: indicator, attr: 'data-indeterminate', present: indeterminate});\n setPresence({el: indicator, attr: 'data-disabled', present: disabled});\n setPresence({el: indicator, attr: 'data-invalid', present: invalid});\n }\n const checkedIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator-icon=\"checked\"]');\n if (checkedIcon) {\n setPresence({el: checkedIcon, attr: 'data-checked', present: checked});\n removeAttribute({el: checkedIcon, attr: 'data-indeterminate'});\n }\n const indeterminateIcon = checkbox.querySelector<HTMLElement>('[data-ui-checkbox-indicator-icon=\"indeterminate\"]');\n if (indeterminateIcon) {\n setPresence({el: indeterminateIcon, attr: 'data-indeterminate', present: indeterminate});\n removeAttribute({el: indeterminateIcon, attr: 'data-checked'});\n }\n };\n\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatchingNative = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatchingNative = false; }\n };\n\n const bridge = createAlpineMachine({\n schema: checkboxControlSchema,\n hooks: checkboxHooks,\n createMachine: ({props}) => createCheckboxMachine({\n props,\n effects: {\n sync: syncDom,\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n },\n }),\n });\n\n const owner: CheckboxOwner = {\n setInheritance(inherited): void {\n bridge.send({type: 'INHERITANCE_CHANGED', ...inherited});\n },\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-checkbox-input]');\n if (!inputEl) throw new Error('Checkbox requires a native checkbox input.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'input', handler: () => {\n if (dispatchingNative) return;\n bridge.send({type: 'NATIVE_CHANGED', state: input().checked ? 'checked' : 'unchecked'});\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'change', handler: () => {\n if (dispatchingNative) return;\n bridge.send({type: 'NATIVE_CHANGED', state: input().checked ? 'checked' : 'unchecked'});\n }, cleanup: listeners});\n const group = closestGroupOwner(root());\n if (group) unregisterGroup = group.register(owner);\n syncDom();\n },\n destroy(): void {\n unregisterGroup?.();\n unregisterGroup = null;\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get state(): CheckboxState {\n return bridge.getCommittedSnapshot().context.selection.state;\n },\n setState(state: CheckboxState): void {\n if (!['unchecked', 'checked', 'indeterminate'].includes(state)) {\n throw new Error(`Unknown checkbox state: ${String(state)}`);\n }\n if (state === bridge.getCommittedSnapshot().context.selection.state) return;\n bridge.send({type: 'API_SET', state});\n },\n };\n};\n\nconst UiCheckboxGroup = (): TrellisAlpineComponent<CheckboxGroupData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n const members = new Set<CheckboxOwner>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Checkbox group has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<CheckboxGroupContext, CheckboxGroupProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const snapshot = currentSnapshot();\n setAttribute({el: root(), attr: 'data-orientation', value: snapshot.props.orientation});\n setAttribute({el: root(), attr: 'data-variant', value: snapshot.props.variant});\n syncControlPresence({el: root(), state: snapshot.context.inherited});\n members.forEach((member) => member.setInheritance(snapshot.context.inherited));\n };\n const bridge = createAlpineMachine({\n schema: checkboxGroupSchema,\n hooks: checkboxGroupHooks,\n createMachine: ({props}) => createCheckboxGroupMachine({\n props,\n effects: {sync: syncDom},\n }),\n });\n const owner: CheckboxGroupOwner = {\n register(member): () => void {\n members.add(member);\n member.setInheritance(currentSnapshot().context.inherited);\n return () => members.delete(member);\n },\n inherited: () => currentSnapshot().context.inherited,\n };\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n groupOwners.set(root(), owner);\n syncDom();\n },\n destroy(): void {\n groupOwners.delete(root());\n members.clear();\n bridge.disconnect();\n rootEl = null;\n },\n };\n};\n\nconst registerCheckbox = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiCheckbox', UiCheckbox)(AlpineInstance);\n defineAlpineData('UiCheckboxGroup', UiCheckboxGroup)(AlpineInstance);\n};\n\nexport {registerCheckbox, UiCheckbox, UiCheckboxGroup};\nexport type {CheckboxData, CheckboxGroupData, CheckboxState, UiCheckboxApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerCheckbox as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerCheckbox = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerCheckbox};\nexport default registerCheckbox;\nexport * from './index';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,d as t,f as n,l as r,m as i,p as a,u as o,y as s}from"./element-adapter-native-data-key-CW8suC9A.js";import{c,f as l,l as u,n as d}from"./codecs-Cb1ns_47.js";import{r as f,s as p,t as m}from"./dom-qAeVl7dc.js";import{i as h,t as g}from"./alpine-machine-D0Kqjm-1.js";import{t as _}from"./alpine-data-DZ17j0jc.js";import{n as v,t as y}from"./styles-TfvwVPGw.js";import{t as b}from"./machine-Dqut4h89.js";import{n as x,r as ee}from"./form-control-BkVb2Qed.js";function S(e){return e.source.types.includes(`Files`)}function te(e){return e.source.items.filter(function(e){return e.kind===`file`}).map(function(e){return e.getAsFile()}).filter(function(e){return e!=null})}var C=s();function w(e){var r=e.dragEnter,i=r.type,s=r.relatedTarget;return i===`dragenter`?n()?t({dragEnter:r}):s==null?!0:a()?o(s):s instanceof HTMLIFrameElement:!1}function T(e){var t=e.type,n=e.value;return!(t===`application/vnd.pdnd`||t===`text/plain`&&n===`pdnd:android-fallback`)}function E(e){return Array.from(e.types).filter(function(t){return T({type:t,value:e.getData(t)})})}function D(e){return Array.from(e.items).filter(function(t){return t.kind===`file`||T({type:t.type,value:e.getData(t.type)})})}var O=!1,k=e({typeKey:`external`,defaultDropEffect:`copy`,mount:function(e){return(0,C.bind)(window,{type:`dragenter`,listener:function(t){if(!O&&t.dataTransfer&&e.canStart(t)&&w({dragEnter:t})){var n=E(t.dataTransfer);if(n.length){var r={types:n,items:[],getStringData:function(){return null}};e.start({event:t,dragType:{type:`external`,startedFrom:`external`,payload:r,getDropPayload:function(e){if(!e.dataTransfer)return r;var t=D(e.dataTransfer),i=e.dataTransfer.getData.bind(e.dataTransfer);return{types:n,items:t,getStringData:function(e){if(!n.includes(e))return null;var t=i(e);return T({type:e,value:t})?t:null}}}}})}}}})}});function A(e){return k.dropTarget(e)}function j(e){return k.monitor(e)}(function(){if(typeof window>`u`)return;k.registerUsage();var e={type:`idle`},t=e;function n(){t.type===`dragging`&&(O=!1,t.cleanup(),t=e)}function a(){return(0,C.bindAll)(window,[{type:`dragend`,listener:n}].concat(i(r({onDragEnd:n}))),{capture:!0})}(0,C.bind)(window,{type:`dragstart`,listener:function(){t.type===`idle`&&(O=!0,t={type:`dragging`,cleanup:a()})},options:{capture:!0}})})();var M=[`stack`,`inline`],ne=[`auto`,`image`,`none`],N=[`sm`,`md`,`lg`],P={name:l,accept:l,capture:l,multiple:d,required:d,disabled:d,invalid:d,preview:u(ne,`auto`),layout:u(M,`stack`),size:u(N,`md`),heading:l.default(`Drop files here or browse`),text:l,browseLabel:l,empty:l,maxItems:c.min(0).default(0),clearable:d.default(!0),transport:u([`native`,`direct`],`native`),rootClass:l,dropzoneClass:l,listClass:l,itemClass:l,class:l};l.default(`Drop files here or browse`),l.default(`cloud__upload`),u(M,`stack`),u(N,`md`),l.default(`document__blank`),l.default(`Remove file`);var re=[h({name:`uploading`,state:`transfer.direct.uploading`,project:e=>({files:e.context.selection.files.filter(({id:t})=>e.context.transfer.activeIds.includes(t))}),onDone:`UPLOADING_DONE`,onError:`UPLOADING_ERROR`,required:!0,sends:{progress:(e,t,n)=>({type:`UPLOAD_PROGRESS`,id:e,loaded:t,total:n}),cancel:()=>({type:`CANCEL_UPLOAD`})}})],F=e=>e,I=e=>{let t=e.source;return t===`picker`||t===`drop`||t===`remove`||t===`props`?t:`clear`},L=(e,t)=>{let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(n.length===0)return!0;let r=e.name.toLowerCase(),i=e.type.toLowerCase();return n.some(e=>e.startsWith(`.`)?r.endsWith(e):e.endsWith(`/*`)?i.startsWith(e.slice(0,-1)):e.includes(`/`)&&i===e)},R=(e,t,n)=>{let r=F(n).records??[],i=r.filter(e=>L(e,t.accept)),a=F(n).append&&t.multiple?[...e.selection.files]:[],o=t.multiple?[...a,...i]:i.slice(0,1),s=t.maxItems>0?o.slice(0,t.maxItems):o;return{files:s,limitReached:t.maxItems>0&&s.length>=t.maxItems,rejectedCount:r.length-i.length+o.length-s.length,limitRejectedCount:o.length-s.length,source:I(n)}},z=({context:e,props:t,event:n})=>R(e,t,n).files,ie=e=>z(e).length===0,ae=({context:e,props:t,event:n})=>R(e,t,n).limitReached,B=({context:e,props:t})=>!t.disabled&&e.transfer.status!==`uploading`,V=({props:e})=>e.transport===`direct`,H=({props:e})=>e.transport===`native`,U=e=>V(e)&&(I(e.event)===`picker`||I(e.event)===`drop`)&&z(e).length>0,W=({context:e,props:t,event:n})=>({context:{selection:R(e,t,n)}}),G=({context:e})=>({context:{selection:{...e.selection,files:[],limitReached:!1,rejectedCount:0,limitRejectedCount:0,source:`clear`}}}),K=({context:e,props:t,event:n})=>{let r=R(e,t,n).files,i=new Set(e.selection.files.map(({id:e})=>e)),a=F(n).append?r.filter(({id:e})=>!i.has(e)).map(({id:e})=>e):r.map(({id:e})=>e);return{context:{transfer:{...e.transfer,status:`uploading`,activeIds:a,progress:{...e.transfer.progress,...Object.fromEntries(a.map(e=>[e,0]))},error:``}}}},q=(e,t,n=``)=>({...e.transfer,status:t,error:n}),oe=({context:e})=>({context:{transfer:{...q(e,`complete`),progress:{...e.transfer.progress,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,1]))},results:{...e.transfer.results,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,`complete`]))}}}}),se=({context:e,event:t})=>({context:{transfer:{...q(e,`failed`,t.error instanceof Error?t.error.message:String(t.error??`Upload failed.`)),results:{...e.transfer.results,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,`failed`]))}}}}),ce=({context:e})=>({context:{transfer:{...q(e,`canceled`),results:{...e.transfer.results,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,`canceled`]))}}}}),le=({context:e,event:t})=>{let n=typeof t.id==`string`?t.id:``;if(!e.transfer.activeIds.includes(n))return;let r=Number(t.loaded),i=Number(t.total),a=Number.isFinite(r)&&Number.isFinite(i)&&i>0?Math.min(1,Math.max(0,r/i)):0;return{context:{transfer:{...e.transfer,progress:{...e.transfer.progress,[n]:a}}}}},J=[{target:`#inventory-empty`,guard:e=>B(e)&&ie(e),reduce:`planSelection`,effects:`commitSelection`},{target:`#inventory-capped`,guard:e=>B(e)&&ae(e),reduce:`planSelection`,effects:`commitSelection`},{target:`#inventory-populated`,guard:B,reduce:`planSelection`,effects:`commitSelection`}],ue=({props:e,context:t,effects:n})=>b({type:`parallel`,on:{PROPS_CHANGED:{reduce:`replaceProps`,effects:`syncProps`}},states:{interaction:{initial:`idle`,states:{idle:{on:{DRAG_ENTER:{target:`dragging`,guard:B,effects:`syncDragging`}}},dragging:{tags:[`dragging`],on:{DRAG_LEAVE:{target:`idle`,effects:`syncDragging`},DROP:{target:`idle`,effects:`syncDragging`},RECONCILE:{target:`idle`,guard:({props:e})=>e.disabled,effects:`syncDragging`}}}}},inventory:{initial:`empty`,on:{FILES_CHANGED:J,RECONCILE:J,FILES_RESET:{target:`#inventory-empty`,guard:B,reduce:`clearSelection`,effects:`resetSelection`},CLEAR_EXISTING:{guard:B,reduce:`clearExisting`,effects:`clearExisting`}},states:{empty:{id:`inventory-empty`,tags:[`empty`]},populated:{id:`inventory-populated`,tags:[`has-files`]},capped:{id:`inventory-capped`,tags:[`has-files`,`limit-reached`]}}},transfer:{initial:`inactive`,states:{inactive:{on:{RECONCILE:[{target:`#transfer-direct-idle`,guard:V,reduce:`setDirectIdle`,effects:`syncTransfer`},{target:`#transfer-native`,reduce:`setNative`,effects:`syncTransfer`}]}},native:{id:`transfer-native`,on:{RECONCILE:{target:`#transfer-direct-idle`,guard:V,reduce:`setDirectIdle`,effects:`syncTransfer`}}},direct:{initial:`idle`,on:{RECONCILE:{target:`#transfer-native`,guard:H,reduce:`setNative`,effects:`syncTransfer`}},states:{idle:{id:`transfer-direct-idle`,on:{FILES_CHANGED:{target:`uploading`,guard:U,reduce:`beginUpload`,effects:`syncTransfer`}}},uploading:{id:`transfer-uploading`,tags:[`uploading`],on:{UPLOAD_PROGRESS:{reduce:`updateProgress`,effects:`syncTransfer`},UPLOADING_DONE:{target:`complete`,reduce:`finishUpload`,effects:[`syncTransfer`,`emitComplete`]},UPLOADING_ERROR:{target:`failed`,reduce:`failUpload`,effects:[`syncTransfer`,`emitError`]},CANCEL_UPLOAD:{target:`canceled`,reduce:`cancelUpload`,effects:[`syncTransfer`,`emitCancel`]},RECONCILE:{target:`canceled`,guard:({props:e})=>e.disabled||e.transport!==`direct`,reduce:`cancelUpload`,effects:[`syncTransfer`,`emitCancel`]}}},complete:{on:{FILES_CHANGED:{target:`uploading`,guard:U,reduce:`beginUpload`,effects:`syncTransfer`}}},failed:{tags:[`upload-failed`],on:{RETRY_UPLOAD:{target:`uploading`,reduce:`retryUpload`,effects:`syncTransfer`},FILES_CHANGED:{target:`uploading`,guard:U,reduce:`beginUpload`,effects:`syncTransfer`}}},canceled:{on:{RETRY_UPLOAD:{target:`uploading`,reduce:`retryUpload`,effects:`syncTransfer`},FILES_CHANGED:{target:`uploading`,guard:U,reduce:`beginUpload`,effects:`syncTransfer`}}}}}}}}},{context:t,props:e,reducers:{replaceProps:({event:e,props:t})=>({props:e.props??t}),planSelection:W,clearSelection:G,clearExisting:({context:e})=>({context:{existing:{...e.existing,cleared:!0}}}),beginUpload:K,retryUpload:({context:e})=>({context:{transfer:{...e.transfer,status:`uploading`,error:``,activeIds:e.selection.files.filter(({id:t})=>e.transfer.results[t]!==`complete`).map(({id:e})=>e)}}}),finishUpload:oe,failUpload:se,cancelUpload:ce,updateProgress:le,setNative:({context:e})=>({context:{transfer:q(e,`native`)}}),setDirectIdle:({context:e})=>({context:{transfer:q(e,`idle`)}})},effects:{commitSelection:n.commitSelection,resetSelection:n.resetSelection,syncProps:n.syncProps,syncDragging:n.syncDragging,clearExisting:n.clearExisting,syncTransfer:n.syncTransfer,emitComplete:n.emitComplete,emitError:n.emitError,emitCancel:n.emitCancel}}),Y=e=>e.selection.files.map(t=>({...t,status:e.transfer.activeIds.includes(t.id)&&e.transfer.status===`uploading`?`uploading`:e.transfer.results[t.id]??`selected`,progress:e.transfer.progress[t.id]??0})),X=y({definition:{component:`ui.file-upload`,parts:{root:{base:[`grid w-full min-w-0 gap-3`]},control:{base:`relative grid min-w-0 gap-3`},input:{base:`sr-only`},dropzone:{base:[`relative grid min-w-0 overflow-hidden rounded-surface-md text-inherit outline-none`],variants:{layout:{stack:`justify-items-center text-center`,inline:`grid-cols-[auto_minmax(0,1fr)_auto] items-center text-left`},size:{sm:`gap-2 p-3`,md:`gap-3 p-4`,lg:`gap-3 p-5`}},defaults:{layout:`stack`,size:`md`}},icon:{base:`size-icon-lg shrink-0 fill-current text-surface-ink-muted`},body:{base:`grid min-w-0 gap-1`},heading:{base:`text-sm font-medium text-inherit`},text:{base:`text-xs font-normal text-surface-ink-muted`},browse:{base:[`inline-flex min-w-0 items-center justify-center rounded-control-md px-2 py-1 text-xs font-medium`]},list:{base:`grid min-w-0 gap-2`},empty:{base:`text-xs text-surface-ink-muted`},item:{base:[`grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 rounded-surface-sm px-3 py-2`]},preview:{base:`flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-surface-xs bg-interaction-hover text-surface-ink-muted`},previewImage:{base:`size-full`},itemIcon:{base:`size-icon fill-current`},itemBody:{base:`grid min-w-0 gap-0.5`},itemName:{base:`truncate text-sm font-medium text-inherit`},itemMeta:{base:`truncate text-xs font-normal text-surface-ink-muted`},itemError:{base:`truncate text-xs font-normal text-intent-danger-text`},remove:{base:[`relative z-20 inline-flex size-control-sm shrink-0 items-center justify-center rounded-control-md border-0 bg-transparent`,`text-surface-ink-muted outline-none`]},removeIcon:{base:`size-icon-xs fill-current leading-none`},clear:{base:`sr-only`}}}}),de=e=>{if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.min(Math.floor(Math.log(e)/Math.log(1024)),t.length-1),r=e/1024**n;return`${r>=10||n===0?Math.round(r):Number(r.toFixed(1))} ${t[n]}`},fe=e=>e?Array.from(e):[],Z=e=>e.type.startsWith(`image/`),pe=(e,t)=>t!==`none`&&(t===`image`||Z(e)),me=e=>{if(typeof DataTransfer>`u`)return null;let t=new DataTransfer;return e.forEach(e=>t.items.add(e)),t.files},he=(e,t)=>{let n=me(t);if(!n)return!1;try{return e.files=n,!0}catch{return!1}},ge=(e,t)=>{let n=`http://www.w3.org/2000/svg`,r=document.createElementNS(n,`svg`),i=document.createElementNS(n,`path`);return r.setAttribute(`viewBox`,`0 0 32 32`),r.setAttribute(`aria-hidden`,`true`),r.setAttribute(`class`,t),i.setAttribute(`d`,e),r.append(i),r},_e=e=>{let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`),r=document.createElementNS(t,`polygon`);return n.setAttribute(`viewBox`,`0 0 32 32`),n.setAttribute(`aria-hidden`,`true`),n.setAttribute(`class`,e),r.setAttribute(`points`,`17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16`),n.append(r),n},Q=()=>{let e=null,t=[],n=!1,r=0,i=new Map,a=new Map,o=()=>{if(!e)throw Error(`File upload has not been initialized.`);return e},s=()=>{let e=o().querySelector(`[data-ui-file-upload-input]`);if(!e)throw Error(`File upload requires a native file input.`);return e},c=()=>o().querySelector(`[data-ui-file-upload-dropzone]`),l=()=>o().querySelector(`[data-ui-file-upload-list]`),u=()=>D.getSnapshot().props,d=()=>D.getSnapshot().context,h=e=>({id:`file-${++r}`,name:e.name,bytes:e.size,size:de(e.size),type:e.type||`File`}),_=e=>e.map(e=>{let t=h(e);return i.set(t.id,e),t}),y=e=>{let t=a.get(e);t&&URL.revokeObjectURL(t),a.delete(e)},b=()=>{n=!0,s().dispatchEvent(new Event(`input`,{bubbles:!0})),s().dispatchEvent(new Event(`change`,{bubbles:!0}))},C=(e,t,n=!1)=>{u().disabled||D.hasTag(`uploading`)||D.send({type:`FILES_CHANGED`,records:e,source:t,append:n})},w=(e,t)=>{let n=l();if(!n)return;n.querySelectorAll(`[data-ui-file-upload-pending]`).forEach(e=>e.remove());let r=Y(e),o=new Set(r.map(({id:e})=>e));[...a.keys()].filter(e=>!o.has(e)).forEach(y),[...i.keys()].filter(e=>!o.has(e)).forEach(e=>i.delete(e));let s=n.querySelector(`[data-existing-file]:not([hidden])`),c=n.querySelector(`[data-ui-file-upload-empty]`);c&&(c.hidden=r.length>0||!!s);let u=v({part:X.parts.item,className:t.itemClass}),d=v({part:X.parts.preview}),f=v({part:X.parts.previewImage}),p=v({part:X.parts.itemBody}),m=v({part:X.parts.itemName}),h=v({part:X.parts.itemMeta}),g=v({part:X.parts.remove}),_=v({part:X.parts.removeIcon}),b=v({part:X.parts.itemIcon});r.forEach(e=>{let r=document.createElement(`li`);r.dataset.uiFileUploadItem=``,r.dataset.uiFileUploadPending=``,r.dataset.fileId=e.id,r.dataset.status=e.status,r.dataset.progress=String(e.progress),r.className=u;let o=document.createElement(`span`);o.dataset.uiFileUploadPreview=``,o.className=d,o.setAttribute(`aria-hidden`,`true`);let s=i.get(e.id);if(s&&pe(s,t.preview)){let t=a.get(e.id);t||(t=URL.createObjectURL(s),a.set(e.id,t));let n=document.createElement(`img`);n.src=t,n.alt=``,n.loading=`lazy`,n.decoding=`async`,n.className=`outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10 block size-full object-cover ${f}`,o.append(n)}else o.append(ge(`M25.7,9.3l-7-7A.9078.9078,0,0,0,18,2H8A2.0059,2.0059,0,0,0,6,4V28a2.0059,2.0059,0,0,0,2,2H24a2.0059,2.0059,0,0,0,2-2V10A.9078.9078,0,0,0,25.7,9.3ZM18,4.4,23.6,10H18ZM24,28H8V4h8v6a2.0059,2.0059,0,0,0,2,2h6Z`,b));let c=document.createElement(`span`);c.className=p;let l=document.createElement(`span`);l.dataset.uiFileUploadItemName=``,l.className=m,l.textContent=e.name;let v=document.createElement(`span`);v.dataset.uiFileUploadItemMeta=``,v.className=h,v.textContent=[e.size,e.type].filter(Boolean).join(` · `),c.append(l,v);let y=document.createElement(`button`);y.type=`button`,y.dataset.uiFileUploadRemove=``,y.dataset.fileId=e.id,y.className=g,y.disabled=D.hasTag(`uploading`),y.setAttribute(`aria-label`,`Remove ${e.name}`),y.append(_e(_)),r.append(o,c,y),n.append(r)})},T=(e=d(),t=u())=>{let n=Y(e),r=e.existing.present&&!e.existing.cleared,i=n.length>0||r,a=t.disabled||e.selection.limitReached||e.transfer.status===`uploading`,l=s();ee({input:l,state:{disabled:t.disabled,required:t.required,invalid:t.invalid}}),t.transport===`native`&&t.name?l.name=t.name:l.removeAttribute(`name`),l.multiple=t.multiple,t.accept?l.setAttribute(`accept`,t.accept):l.removeAttribute(`accept`),t.capture?l.setAttribute(`capture`,t.capture):l.removeAttribute(`capture`),a&&!t.disabled?(l.setAttribute(`aria-disabled`,`true`),l.tabIndex=-1):t.disabled||(l.removeAttribute(`aria-disabled`),l.removeAttribute(`tabindex`)),l.form&&(l.form.enctype=`multipart/form-data`),x({el:o(),state:t,value:`true`}),p({el:o(),attr:`data-empty`,present:!i,value:`true`}),p({el:o(),attr:`data-has-files`,present:i,value:`true`}),p({el:o(),attr:`data-multiple`,present:t.multiple,value:`true`}),p({el:o(),attr:`data-max-items-reached`,present:e.selection.limitReached,value:`true`}),p({el:o(),attr:`data-has-existing-file`,present:r,value:`true`}),o().dataset.transport=t.transport,o().dataset.transferState=e.transfer.status;let f=c();f&&(x({el:f,state:{disabled:a,invalid:t.invalid},value:`true`}),p({el:f,attr:`data-multiple`,present:t.multiple,value:`true`}),p({el:f,attr:`data-has-files`,present:i,value:`true`}),p({el:f,attr:`data-max-items-reached`,present:e.selection.limitReached,value:`true`})),w(e,t)},E=e=>({selection:{files:[],limitReached:!1,rejectedCount:0,limitRejectedCount:0,source:`clear`},existing:{present:!!o().querySelector(`[data-ui-file-upload-item][data-existing-file]`),cleared:!1},transfer:{status:e.transport===`native`?`native`:`idle`,activeIds:[],progress:{},results:{},error:``}}),D=g({schema:P,hooks:re,createMachine:({props:e})=>ue({props:e,context:E(e),effects:{commitSelection:e=>{let t=e.context.selection.files.flatMap(({id:e})=>i.get(e)??[]);if(!he(s(),t)){s().value=``,D.send(`FILES_RESET`);return}T(e.context,e.props),e.context.selection.limitRejectedCount>0&&f({el:o(),name:`ui:file-upload-limit`,detail:{rejectedCount:e.context.selection.limitRejectedCount}}),e.context.selection.source!==`picker`&&b(),f({el:o(),name:`ui:file-upload-change`,detail:{files:Y(e.context)}})},resetSelection:e=>{s().value=``,T(e.context,e.props)},syncProps:e=>{T(e.context,e.props),D.send({type:`RECONCILE`,records:e.context.selection.files,source:`props`})},syncDragging:e=>{let t=e.snapshot.tags.includes(`dragging`);p({el:o(),attr:`data-dragging`,present:t,value:`true`});let n=c();n&&p({el:n,attr:`data-dragging`,present:t,value:`true`})},clearExisting:e=>{let t=o().querySelector(`[data-ui-file-upload-clear]`);t&&(t.checked=!0,t.dispatchEvent(new Event(`change`,{bubbles:!0})));let n=o().querySelector(`[data-ui-file-upload-item][data-existing-file]`);n&&(n.hidden=!0),T(e.context,e.props),f({el:o(),name:`ui:file-upload-change`,detail:{files:Y(e.context)}})},syncTransfer:e=>T(e.context,e.props),emitComplete:e=>f({el:o(),name:`ui:file-upload-complete`,detail:{files:Y(e.context)}}),emitError:e=>f({el:o(),name:`ui:file-upload-error`,detail:{files:Y(e.context),error:e.context.transfer.error}}),emitCancel:e=>f({el:o(),name:`ui:file-upload-cancel`,detail:{files:Y(e.context)}})}})}),O={...D,get files(){return this.snapshot.current?Y(this.snapshot.current.context):[]},get hasFiles(){return(this.snapshot.current?.context.selection.files.length??0)>0||!!(this.snapshot.current?.context.existing.present&&!this.snapshot.current.context.existing.cleared)},get isDragging(){return this.snapshot.current?.tags.includes(`dragging`)??!1},get isUploading(){return this.snapshot.current?.tags.includes(`uploading`)??!1},get isLimitReached(){return this.snapshot.current?.context.selection.limitReached??!1},init(){e=this.$el,D.connect(this.$el,this.snapshot);let r=s();m({target:r,event:`change`,handler:()=>{if(n){n=!1;return}C(_(fe(r.files)),`picker`)},cleanup:t}),m({target:o(),event:`click`,handler:e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-ui-file-upload-remove][data-file-id]`);if(n?.dataset.fileId){e.preventDefault(),O.remove(n.dataset.fileId);return}t.closest(`[data-ui-file-upload-remove][data-existing-file]`)&&(e.preventDefault(),D.send(`CLEAR_EXISTING`))},cleanup:t});let i=c();i&&(t.push(A({element:i,canDrop:({source:e})=>!u().disabled&&!D.hasTag(`uploading`)&&S({source:e}),getDropEffect:()=>`copy`,onDragEnter:()=>D.send(`DRAG_ENTER`),onDragLeave:()=>D.send(`DRAG_LEAVE`),onDrop:({source:e})=>{D.send(`DROP`),S({source:e})&&C(_(te({source:e})),`drop`,u().multiple)}})),t.push(j({canMonitor:({source:e})=>S({source:e}),onDrop:()=>D.send(`DRAG_LEAVE`)}))),T(),D.send({type:`RECONCILE`,records:[],source:`props`})},destroy(){t.forEach(e=>e()),t=[],a.forEach(e=>URL.revokeObjectURL(e)),a.clear(),i.clear(),D.disconnect(),e=null},browse(){!u().disabled&&!D.hasTag(`uploading`)&&s().click()},remove(e){u().disabled||D.hasTag(`uploading`)||!i.has(e)||C(d().selection.files.filter(t=>t.id!==e),`remove`)},retry(){D.send(`RETRY_UPLOAD`)},cancel(){D.send(`CANCEL_UPLOAD`)},file(e){return i.get(e)??null}};return O},ve=_(`UiFileUpload`,Q),$=new WeakSet,ye=e=>{$.has(e)||($.add(e),ve(e))};export{Q as n,ye as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-JnbQA47P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.generated-JnbQA47P.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/external/file.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-entering-window.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/external-adapter.js","../../../../../../../../client/src/components/file-upload/contract.ts","../../../../../../../../client/src/components/file-upload/machine.ts","../../../../../../../../client/src/components/file-upload/styles.ts","../../../../../../../../client/src/components/file-upload/index.ts","../../../../../../../../client/src/components/file-upload/entry.generated.ts"],"sourcesContent":["export function containsFiles(_ref) {\n var source = _ref.source;\n return source.types.includes('Files');\n}\n\n/** Obtain an array of the dragged `File`s */\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function getFiles(_ref2) {\n var source = _ref2.source;\n return source.items\n // unlike other media types, for files:\n // item.kind is 'file'\n // item.type is the type of file eg 'image/jpg'\n // for other media types, item.type is the mime format\n .filter(function (item) {\n return item.kind === 'file';\n }).map(function (item) {\n return item.getAsFile();\n }).filter(function (file) {\n return file != null;\n });\n}","import { isFirefox } from '../is-firefox';\nimport { isSafari } from '../is-safari';\nimport { isEnteringWindowInSafari } from './count-events-for-safari';\nimport { isFromAnotherWindow } from './is-from-another-window';\nexport function isEnteringWindow(_ref) {\n var dragEnter = _ref.dragEnter;\n var type = dragEnter.type,\n relatedTarget = dragEnter.relatedTarget;\n if (type !== 'dragenter') {\n return false;\n }\n if (isSafari()) {\n return isEnteringWindowInSafari({\n dragEnter: dragEnter\n });\n }\n\n // standard check\n if (relatedTarget == null) {\n return true;\n }\n\n /**\n * 🦊 Exception: `iframe` in Firefox (`125.0`)\n *\n * Case 1: parent `window` → child `iframe`\n * `relatedTarget` is the `iframe` element in the parent `window`\n * (foreign element)\n *\n * Case 2: child `iframe` → parent `window`\n * `relatedTarget` is an element inside the child `iframe`\n * (foreign element)\n */\n\n if (isFirefox()) {\n return isFromAnotherWindow(relatedTarget);\n }\n\n /**\n * 🌏 Exception: `iframe` in Chrome (`124.0`)\n *\n * Case 1: parent `window` → child `iframe`\n * `relatedTarget` is `null` *(standard check)*\n *\n * Case 2: child `iframe` → parent `window`\n * `relatedTarget` is the `iframe` element in the parent `window`\n */\n\n // Case 2\n // Using `instanceof` check as the element will be in the same `window`\n return relatedTarget instanceof HTMLIFrameElement;\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { bind, bindAll } from 'bind-event-listener';\nimport { makeAdapter } from '../make-adapter/make-adapter';\nimport { androidFallbackText } from '../util/android';\nimport { isEnteringWindow } from '../util/changing-window/is-entering-window';\nimport { getBindingsForBrokenDrags } from '../util/detect-broken-drag';\nimport { textMediaType } from '../util/media-types/text-media-type';\nimport { elementAdapterNativeDataKey } from './element-adapter-native-data-key';\nexport function isAnAvailableType(_ref) {\n var type = _ref.type,\n value = _ref.value;\n // We don't want to expose our private elementAdapter key / value\n if (type === elementAdapterNativeDataKey) {\n return false;\n }\n // Not exposing \"text/plain\" if it contains the android fallback text\n // We _could_ add an `isAndroid()` check, but it's probably safest\n // to trim this data out, regardless of what OS we see it on.\n if (type === textMediaType && value === androidFallbackText) {\n return false;\n }\n return true;\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function getAvailableTypes(transfer) {\n return Array.from(transfer.types).filter(function (type) {\n return isAnAvailableType({\n type: type,\n value: transfer.getData(type)\n });\n });\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function getAvailableItems(dataTransfer) {\n // item.kind is 'string' | 'file'\n // For 'string' item.type is the mimeType (eg 'text/plain')\n // For 'file' item.type is the file type (eg 'image/jpg')\n\n return Array.from(dataTransfer.items).filter(function (item) {\n return item.kind === 'file' || isAnAvailableType({\n type: item.type,\n value: dataTransfer.getData(item.type)\n });\n });\n}\nvar didDragStartLocally = false;\nvar adapter = makeAdapter({\n typeKey: 'external',\n // for external drags, we are generally making a copy of something that is being dragged\n defaultDropEffect: 'copy',\n mount: function mount(api) {\n // Binding to the `window` so that the element adapter\n // has a chance to get in first on the`document`.\n // We are giving preference to the element adapter.\n return bind(window, {\n type: 'dragenter',\n listener: function listener(event) {\n // drag operation was started within the document, it won't be an \"external\" drag\n if (didDragStartLocally) {\n return;\n }\n\n // Note: not checking if event was cancelled (`event.defaultPrevented`) as\n // cancelling a \"dragenter\" accepts the drag operation (not prevent it)\n\n // Something has gone wrong with our drag event\n if (!event.dataTransfer) {\n // Including this code on \"test\" and \"development\" environments:\n // - Browser tests commonly run against \"development\" builds\n // - Unit tests commonly run in \"test\"\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"\\n It appears as though you have are not testing DragEvents correctly.\\n\\n - If you are unit testing, ensure you have polyfilled DragEvent.\\n - If you are browser testing, ensure you are dispatching drag events correctly.\\n\\n Please see our testing guides for more information:\\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\\n \".replace(/ {2}/g, ''));\n }\n return;\n }\n if (!api.canStart(event)) {\n return;\n }\n if (!isEnteringWindow({\n dragEnter: event\n })) {\n return;\n }\n\n // Note: not checking types for `elementAdapterNativeDataKey` as we expect to see that\n // key when pdnd started the drag in another document\n var types = getAvailableTypes(event.dataTransfer);\n if (!types.length) {\n return;\n }\n var locked = {\n types: types,\n items: [],\n getStringData: function getStringData() {\n return null;\n }\n };\n api.start({\n event: event,\n dragType: {\n type: 'external',\n startedFrom: 'external',\n payload: locked,\n getDropPayload: function getDropPayload(event) {\n // this would be a platform error\n // trying to handle it gracefully rather than throwing (for now)\n if (!event.dataTransfer) {\n return locked;\n }\n var items = getAvailableItems(event.dataTransfer);\n // need to use `.bind` as `getData` is required\n // to be run with `event.dataTransfer` as the \"this\" context\n var nativeGetData = event.dataTransfer.getData.bind(event.dataTransfer);\n return {\n types: types,\n items: items,\n // return `null` if there is no result, otherwise string\n getStringData: function getStringData(mediaType) {\n // not dragging the requested type\n // return `null` (no result)\n if (!types.includes(mediaType)) {\n return null;\n }\n\n // nativeGetData will return `\"\"` when there is no value,\n // but at this point we know we will only get explicitly set\n // values back as we have checked the `types`.\n // `\"\"` can be an explicitly set value.\n var value = nativeGetData(mediaType);\n\n // not exposing data for unavailable types\n if (!isAnAvailableType({\n type: mediaType,\n value: value\n })) {\n return null;\n }\n return value;\n }\n };\n }\n }\n });\n }\n });\n }\n});\n\n/**\n * Some events don't make sense for the external adapter\n *\n * `onGenerateDragPreview`\n * The browser creates the drag preview for external drags, so we don't\n * need an event to generate the preview for _monitors_ or the _dropTarget_\n *\n * `onDragStart`\n * An external drag can never start from in the `window`, so _dropTarget_'s\n * don't need `onDragStart`\n */\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function dropTargetForExternal(args) {\n // not removing unused events, just leaning on the type system\n return adapter.dropTarget(args);\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function monitorForExternal(args) {\n // not removing unused events, just leaning on the type system\n return adapter.monitor(args);\n}\n(function startup() {\n // server side rendering check\n if (typeof window === 'undefined') {\n return;\n }\n\n // A shared single usage registration as we want to capture\n // all external drag operations, even if there are no drop targets\n // on the page yet\n adapter.registerUsage();\n // independent of pdnd, we need to keep track of\n // all drag operations so that we can know if a drag operation\n // has started locally\n\n var idle = {\n type: 'idle'\n };\n var state = idle;\n function clear() {\n if (state.type !== 'dragging') {\n return;\n }\n didDragStartLocally = false;\n state.cleanup();\n state = idle;\n }\n function bindEndEvents() {\n return bindAll(window, [{\n type: 'dragend',\n listener: clear\n }].concat(_toConsumableArray(getBindingsForBrokenDrags({\n onDragEnd: clear\n }))),\n // we want to make sure we get all the events,\n // and this helps avoid not seeing events when folks stop\n // them later on the event path\n {\n capture: true\n });\n }\n\n // we always keep this event listener active\n bind(window, {\n type: 'dragstart',\n listener: function listener() {\n // something bad has happened if this is true!\n if (state.type !== 'idle') {\n return;\n }\n // set our global flag\n didDragStartLocally = true;\n state = {\n type: 'dragging',\n cleanup: bindEndEvents()\n };\n },\n // binding in the capture phase so these listeners are called\n // before our listeners in the adapters `mount` function\n options: {\n capture: true\n }\n });\n})();\n\n/** Common event payload for all events */\n\n/** A map containing payloads for all events */\n\n/** Common event payload for all drop target events */\n\n/** A map containing payloads for all events on drop targets */\n\n/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForExternal` */\n\n/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForExternal` */","import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\n\nconst FILE_UPLOAD_LAYOUTS = ['stack', 'inline'] as const;\nconst FILE_UPLOAD_PREVIEWS = ['auto', 'image', 'none'] as const;\nconst FILE_UPLOAD_SIZES = ['sm', 'md', 'lg'] as const;\nconst FILE_UPLOAD_TRANSPORTS = ['native', 'direct'] as const;\n\ntype FileUploadLayout = (typeof FILE_UPLOAD_LAYOUTS)[number];\ntype FileUploadPreview = (typeof FILE_UPLOAD_PREVIEWS)[number];\ntype FileUploadSize = (typeof FILE_UPLOAD_SIZES)[number];\ntype FileUploadTransport = (typeof FILE_UPLOAD_TRANSPORTS)[number];\n\nconst fileUploadSchema = {\n name: string,\n accept: string,\n capture: string,\n multiple: bool,\n required: bool,\n disabled: bool,\n invalid: bool,\n preview: oneOf(FILE_UPLOAD_PREVIEWS, 'auto' as FileUploadPreview),\n layout: oneOf(FILE_UPLOAD_LAYOUTS, 'stack' as FileUploadLayout),\n size: oneOf(FILE_UPLOAD_SIZES, 'md' as FileUploadSize),\n heading: string.default('Drop files here or browse'),\n text: string,\n browseLabel: string,\n empty: string,\n maxItems: number.min(0).default(0),\n clearable: bool.default(true),\n transport: oneOf(FILE_UPLOAD_TRANSPORTS, 'native' as FileUploadTransport),\n rootClass: string,\n dropzoneClass: string,\n listClass: string,\n itemClass: string,\n class: string,\n};\n\nconst fileUploadDropzoneSchema = {\n heading: string.default('Drop files here or browse'),\n text: string,\n icon: string.default('cloud__upload'),\n layout: oneOf(FILE_UPLOAD_LAYOUTS, 'stack' as FileUploadLayout),\n size: oneOf(FILE_UPLOAD_SIZES, 'md' as FileUploadSize),\n disabled: bool,\n invalid: bool,\n class: string,\n};\n\nconst fileUploadListSchema = {\n class: string,\n};\n\nconst fileUploadItemSchema = {\n filename: string,\n filesize: string,\n mime: string,\n preview: string,\n icon: string.default('document__blank'),\n invalid: bool,\n error: string,\n class: string,\n};\n\nconst fileUploadRemoveSchema = {\n label: string.default('Remove file'),\n class: string,\n};\n\ntype FileUploadProps = SchemaToProps<typeof fileUploadSchema>;\n\nexport {\n FILE_UPLOAD_LAYOUTS,\n FILE_UPLOAD_PREVIEWS,\n FILE_UPLOAD_SIZES,\n FILE_UPLOAD_TRANSPORTS,\n fileUploadDropzoneSchema,\n fileUploadItemSchema,\n fileUploadListSchema,\n fileUploadRemoveSchema,\n fileUploadSchema,\n};\nexport type {\n FileUploadLayout,\n FileUploadPreview,\n FileUploadProps,\n FileUploadSize,\n FileUploadTransport,\n};\n","import {\n createMachine,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {FileUploadProps} from './contract';\n\ntype FileSelectionSource = 'picker' | 'drop' | 'remove' | 'props' | 'clear';\ntype FileTransferStatus = 'selected' | 'uploading' | 'complete' | 'failed' | 'canceled';\n\ntype FileUploadMetadata = {\n id: string;\n name: string;\n bytes: number;\n size: string;\n type: string;\n};\n\ntype FileUploadRecord = FileUploadMetadata & {\n status: FileTransferStatus;\n progress: number;\n};\n\ntype FileUploadContext = {\n selection: {\n files: FileUploadMetadata[];\n limitReached: boolean;\n rejectedCount: number;\n limitRejectedCount: number;\n source: FileSelectionSource;\n };\n existing: {present: boolean; cleared: boolean};\n transfer: {\n status: 'native' | 'idle' | 'uploading' | 'complete' | 'failed' | 'canceled';\n activeIds: string[];\n progress: Record<string, number>;\n results: Record<string, Exclude<FileTransferStatus, 'selected' | 'uploading'>>;\n error: string;\n };\n};\n\ntype FileUploadMachineEffects = {\n commitSelection(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n resetSelection(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n syncProps(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n syncDragging(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n clearExisting(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n syncTransfer(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n emitComplete(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n emitError(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n emitCancel(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n};\n\ntype CreateFileUploadMachineOptions = {\n props: FileUploadProps;\n context: FileUploadContext;\n effects: FileUploadMachineEffects;\n};\n\ntype FileRecordsEvent = MachineEventObject & {\n records: FileUploadMetadata[];\n append?: boolean;\n source?: FileSelectionSource;\n};\n\nconst uploadingHook = defineHook({\n name: 'uploading',\n state: 'transfer.direct.uploading',\n project: (snapshot) => ({\n files: snapshot.context.selection.files.filter(({id}) => snapshot.context.transfer.activeIds.includes(id)),\n }),\n onDone: 'UPLOADING_DONE',\n onError: 'UPLOADING_ERROR',\n required: true,\n sends: {\n progress: (id: string, loaded: number, total: number) => ({type: 'UPLOAD_PROGRESS', id, loaded, total}),\n cancel: () => ({type: 'CANCEL_UPLOAD'}),\n },\n} satisfies TransitionHookDefinition<\n FileUploadContext,\n FileUploadProps,\n {files: FileUploadMetadata[]},\n 'uploading'\n>);\n\nconst fileUploadHooks = [uploadingHook] as const;\n\nconst recordsEvent = (event: MachineEventObject): FileRecordsEvent => event as FileRecordsEvent;\nconst eventSource = (event: MachineEventObject): FileSelectionSource => {\n const source = event.source;\n return source === 'picker' || source === 'drop' || source === 'remove' || source === 'props' ? source : 'clear';\n};\n\nconst acceptedByAccept = (file: FileUploadMetadata, accept: string): boolean => {\n const tokens = accept.split(',').map((token) => token.trim().toLowerCase()).filter(Boolean);\n if (tokens.length === 0) return true;\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return tokens.some((token) => {\n if (token.startsWith('.')) return name.endsWith(token);\n if (token.endsWith('/*')) return type.startsWith(token.slice(0, -1));\n return token.includes('/') && type === token;\n });\n};\n\nconst selectionPlan = (\n context: Readonly<FileUploadContext>,\n props: Readonly<FileUploadProps>,\n event: MachineEventObject,\n): FileUploadContext['selection'] => {\n const candidate = recordsEvent(event).records ?? [];\n const accepted = candidate.filter((file) => acceptedByAccept(file, props.accept));\n const base = recordsEvent(event).append && props.multiple ? [...context.selection.files] : [];\n const combined = props.multiple ? [...base, ...accepted] : accepted.slice(0, 1);\n const files = props.maxItems > 0 ? combined.slice(0, props.maxItems) : combined;\n return {\n files,\n limitReached: props.maxItems > 0 && files.length >= props.maxItems,\n rejectedCount: candidate.length - accepted.length + combined.length - files.length,\n limitRejectedCount: combined.length - files.length,\n source: eventSource(event),\n };\n};\n\nconst plannedFiles = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>): FileUploadMetadata[] => (\n selectionPlan(context, props, event).files\n);\nconst planIsEmpty = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => plannedFiles(scope).length === 0;\nconst planIsCapped = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>): boolean => (\n selectionPlan(context, props, event).limitReached\n);\nconst canMutate = ({context, props}: MachineScope<FileUploadContext, FileUploadProps>): boolean => (\n !props.disabled && context.transfer.status !== 'uploading'\n);\nconst isDirect = ({props}: MachineScope<FileUploadContext, FileUploadProps>): boolean => props.transport === 'direct';\nconst isNative = ({props}: MachineScope<FileUploadContext, FileUploadProps>): boolean => props.transport === 'native';\nconst shouldUpload = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => (\n isDirect(scope)\n && (eventSource(scope.event) === 'picker' || eventSource(scope.event) === 'drop')\n && plannedFiles(scope).length > 0\n);\n\nconst planSelection = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>) => ({\n context: {selection: selectionPlan(context, props, event)},\n});\nconst clearSelection = ({context}: MachineScope<FileUploadContext, FileUploadProps>) => ({\n context: {selection: {...context.selection, files: [], limitReached: false, rejectedCount: 0, limitRejectedCount: 0, source: 'clear' as const}},\n});\nconst beginUpload = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>) => {\n const files = selectionPlan(context, props, event).files;\n const previousIds = new Set(context.selection.files.map(({id}) => id));\n const activeIds = recordsEvent(event).append ? files.filter(({id}) => !previousIds.has(id)).map(({id}) => id) : files.map(({id}) => id);\n return {context: {transfer: {\n ...context.transfer,\n status: 'uploading' as const,\n activeIds,\n progress: {...context.transfer.progress, ...Object.fromEntries(activeIds.map((id) => [id, 0]))},\n error: '',\n }}};\n};\nconst setTransferStatus = (\n context: Readonly<FileUploadContext>,\n status: 'native' | 'idle' | 'complete' | 'failed' | 'canceled',\n error = '',\n): FileUploadContext['transfer'] => ({...context.transfer, status, error});\nconst finishUpload = ({context}: MachineScope<FileUploadContext, FileUploadProps>) => ({context: {transfer: {\n ...setTransferStatus(context, 'complete'),\n progress: {...context.transfer.progress, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 1]))},\n results: {...context.transfer.results, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 'complete' as const]))},\n}}});\nconst failUpload = ({context, event}: MachineScope<FileUploadContext, FileUploadProps>) => ({context: {transfer: {\n ...setTransferStatus(context, 'failed', event.error instanceof Error ? event.error.message : String(event.error ?? 'Upload failed.')),\n results: {...context.transfer.results, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 'failed' as const]))},\n}}});\nconst cancelUpload = ({context}: MachineScope<FileUploadContext, FileUploadProps>) => ({context: {transfer: {\n ...setTransferStatus(context, 'canceled'),\n results: {...context.transfer.results, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 'canceled' as const]))},\n}}});\nconst updateProgress = ({context, event}: MachineScope<FileUploadContext, FileUploadProps>) => {\n const id = typeof event.id === 'string' ? event.id : '';\n if (!context.transfer.activeIds.includes(id)) return;\n const loaded = Number(event.loaded);\n const total = Number(event.total);\n const progress = Number.isFinite(loaded) && Number.isFinite(total) && total > 0 ? Math.min(1, Math.max(0, loaded / total)) : 0;\n return {context: {transfer: {...context.transfer, progress: {...context.transfer.progress, [id]: progress}}}};\n};\n\nconst canMutateToEmpty = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => canMutate(scope) && planIsEmpty(scope);\nconst canMutateToCapped = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => canMutate(scope) && planIsCapped(scope);\n\nconst inventoryTransitions = [\n {target: '#inventory-empty', guard: canMutateToEmpty, reduce: 'planSelection', effects: 'commitSelection'},\n {target: '#inventory-capped', guard: canMutateToCapped, reduce: 'planSelection', effects: 'commitSelection'},\n {target: '#inventory-populated', guard: canMutate, reduce: 'planSelection', effects: 'commitSelection'},\n];\n\nconst createFileUploadMachine = ({props, context, effects}: CreateFileUploadMachineOptions): Machine<FileUploadContext, FileUploadProps> => createMachine<FileUploadContext, FileUploadProps>({\n type: 'parallel',\n on: {PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'}},\n states: {\n interaction: {\n initial: 'idle',\n states: {\n idle: {on: {DRAG_ENTER: {target: 'dragging', guard: canMutate, effects: 'syncDragging'}}},\n dragging: {tags: ['dragging'], on: {\n DRAG_LEAVE: {target: 'idle', effects: 'syncDragging'},\n DROP: {target: 'idle', effects: 'syncDragging'},\n RECONCILE: {target: 'idle', guard: ({props: currentProps}) => currentProps.disabled, effects: 'syncDragging'},\n }},\n },\n },\n inventory: {\n initial: 'empty',\n on: {\n FILES_CHANGED: inventoryTransitions,\n RECONCILE: inventoryTransitions,\n FILES_RESET: {target: '#inventory-empty', guard: canMutate, reduce: 'clearSelection', effects: 'resetSelection'},\n CLEAR_EXISTING: {guard: canMutate, reduce: 'clearExisting', effects: 'clearExisting'},\n },\n states: {\n empty: {id: 'inventory-empty', tags: ['empty']},\n populated: {id: 'inventory-populated', tags: ['has-files']},\n capped: {id: 'inventory-capped', tags: ['has-files', 'limit-reached']},\n },\n },\n transfer: {\n initial: 'inactive',\n states: {\n inactive: {on: {\n RECONCILE: [{target: '#transfer-direct-idle', guard: isDirect, reduce: 'setDirectIdle', effects: 'syncTransfer'}, {target: '#transfer-native', reduce: 'setNative', effects: 'syncTransfer'}],\n }},\n native: {id: 'transfer-native', on: {\n RECONCILE: {target: '#transfer-direct-idle', guard: isDirect, reduce: 'setDirectIdle', effects: 'syncTransfer'},\n }},\n direct: {\n initial: 'idle',\n on: {RECONCILE: {target: '#transfer-native', guard: isNative, reduce: 'setNative', effects: 'syncTransfer'}},\n states: {\n idle: {id: 'transfer-direct-idle', on: {FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'}}},\n uploading: {id: 'transfer-uploading', tags: ['uploading'], on: {\n UPLOAD_PROGRESS: {reduce: 'updateProgress', effects: 'syncTransfer'},\n UPLOADING_DONE: {target: 'complete', reduce: 'finishUpload', effects: ['syncTransfer', 'emitComplete']},\n UPLOADING_ERROR: {target: 'failed', reduce: 'failUpload', effects: ['syncTransfer', 'emitError']},\n CANCEL_UPLOAD: {target: 'canceled', reduce: 'cancelUpload', effects: ['syncTransfer', 'emitCancel']},\n RECONCILE: {target: 'canceled', guard: ({props: currentProps}) => currentProps.disabled || currentProps.transport !== 'direct', reduce: 'cancelUpload', effects: ['syncTransfer', 'emitCancel']},\n }},\n complete: {on: {FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'}}},\n failed: {tags: ['upload-failed'], on: {\n RETRY_UPLOAD: {target: 'uploading', reduce: 'retryUpload', effects: 'syncTransfer'},\n FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'},\n }},\n canceled: {on: {\n RETRY_UPLOAD: {target: 'uploading', reduce: 'retryUpload', effects: 'syncTransfer'},\n FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'},\n }},\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event, props: currentProps}) => ({props: event.props as FileUploadProps ?? currentProps}),\n planSelection,\n clearSelection,\n clearExisting: ({context: current}) => ({context: {existing: {...current.existing, cleared: true}}}),\n beginUpload,\n retryUpload: ({context: current}) => ({context: {transfer: {...current.transfer, status: 'uploading', error: '', activeIds: current.selection.files.filter(({id}) => current.transfer.results[id] !== 'complete').map(({id}) => id)}}}),\n finishUpload,\n failUpload,\n cancelUpload,\n updateProgress,\n setNative: ({context: current}) => ({context: {transfer: setTransferStatus(current, 'native')}}),\n setDirectIdle: ({context: current}) => ({context: {transfer: setTransferStatus(current, 'idle')}}),\n },\n effects: {\n commitSelection: effects.commitSelection,\n resetSelection: effects.resetSelection,\n syncProps: effects.syncProps,\n syncDragging: effects.syncDragging,\n clearExisting: effects.clearExisting,\n syncTransfer: effects.syncTransfer,\n emitComplete: effects.emitComplete,\n emitError: effects.emitError,\n emitCancel: effects.emitCancel,\n },\n});\n\nconst recordsFromSnapshot = (context: Readonly<FileUploadContext>): FileUploadRecord[] => context.selection.files.map((file) => ({\n ...file,\n status: context.transfer.activeIds.includes(file.id) && context.transfer.status === 'uploading'\n ? 'uploading'\n : context.transfer.results[file.id] ?? 'selected',\n progress: context.transfer.progress[file.id] ?? 0,\n}));\n\nexport {createFileUploadMachine, fileUploadHooks, recordsFromSnapshot};\nexport type {\n CreateFileUploadMachineOptions,\n FileSelectionSource,\n FileTransferStatus,\n FileUploadContext,\n FileUploadMachineEffects,\n FileUploadMetadata,\n FileUploadRecord,\n};\n","import {defineStyles} from '../../runtime';\n\nconst fileUploadStyles = defineStyles({definition: {\n component: 'ui.file-upload',\n parts: {\n root: {\n base: [\n 'grid w-full min-w-0 gap-3',\n ],\n },\n control: {\n base: 'relative grid min-w-0 gap-3',\n },\n input: {\n base: 'sr-only',\n },\n dropzone: {\n base: [\n 'relative grid min-w-0 overflow-hidden rounded-surface-md text-inherit outline-none',\n ],\n variants: {\n layout: {\n stack: 'justify-items-center text-center',\n inline: 'grid-cols-[auto_minmax(0,1fr)_auto] items-center text-left',\n },\n size: {\n sm: 'gap-2 p-3',\n md: 'gap-3 p-4',\n lg: 'gap-3 p-5',\n },\n },\n defaults: {\n layout: 'stack',\n size: 'md',\n },\n },\n icon: {\n base: 'size-icon-lg shrink-0 fill-current text-surface-ink-muted',\n },\n body: {\n base: 'grid min-w-0 gap-1',\n },\n heading: {\n base: 'text-sm font-medium text-inherit',\n },\n text: {\n base: 'text-xs font-normal text-surface-ink-muted',\n },\n browse: {\n base: [\n 'inline-flex min-w-0 items-center justify-center rounded-control-md px-2 py-1 text-xs font-medium',\n ],\n },\n list: {\n base: 'grid min-w-0 gap-2',\n },\n empty: {\n base: 'text-xs text-surface-ink-muted',\n },\n item: {\n base: [\n 'grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 rounded-surface-sm px-3 py-2',\n ],\n },\n preview: {\n base: 'flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-surface-xs bg-interaction-hover text-surface-ink-muted',\n },\n previewImage: {\n base: 'size-full',\n },\n itemIcon: {\n base: 'size-icon fill-current',\n },\n itemBody: {\n base: 'grid min-w-0 gap-0.5',\n },\n itemName: {\n base: 'truncate text-sm font-medium text-inherit',\n },\n itemMeta: {\n base: 'truncate text-xs font-normal text-surface-ink-muted',\n },\n itemError: {\n base: 'truncate text-xs font-normal text-intent-danger-text',\n },\n remove: {\n base: [\n 'relative z-20 inline-flex size-control-sm shrink-0 items-center justify-center rounded-control-md border-0 bg-transparent',\n 'text-surface-ink-muted outline-none',\n ],\n },\n removeIcon: {\n base: 'size-icon-xs fill-current leading-none',\n },\n clear: {\n base: 'sr-only',\n },\n },\n}});\n\nexport {fileUploadStyles};\n","import {containsFiles, getFiles} from '@atlaskit/pragmatic-drag-and-drop/external/file';\nimport {dropTargetForExternal, monitorForExternal, type ExternalDropTargetEventPayloadMap} from '@atlaskit/pragmatic-drag-and-drop/external/adapter';\nimport type Alpine from 'alpinejs';\n\nimport {\n createAlpineMachine,\n defineAlpineData,\n type AlpineMachine,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, dispatch, setPresence, type CleanupStack} from '@client/utils';\nimport {fileUploadSchema, type FileUploadProps} from './contract';\nimport {\n createFileUploadMachine,\n fileUploadHooks,\n recordsFromSnapshot,\n type FileSelectionSource,\n type FileTransferStatus,\n type FileUploadContext,\n type FileUploadMetadata,\n type FileUploadRecord,\n} from './machine';\nimport {fileUploadStyles} from './styles';\n\ntype FileUploadTransitionName = (typeof fileUploadHooks)[number]['name'];\ntype FileUploadTransition<TName extends FileUploadTransitionName = FileUploadTransitionName> = TransitionForHook<\n Extract<(typeof fileUploadHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\n/**\n * Public Alpine API for `ui.file-upload`.\n *\n * @public\n */\ninterface UiFileUploadApi {\n /** Serializable metadata for the current pending or transferred files. */\n readonly files: readonly FileUploadRecord[];\n /** Whether pending or existing file content is present. */\n readonly hasFiles: boolean;\n /** Whether an external file is over the drop target. */\n readonly isDragging: boolean;\n /** Whether the direct transport hook is pending. */\n readonly isUploading: boolean;\n /** Whether the configured client-side item limit is full. */\n readonly isLimitReached: boolean;\n /** Opens the native file picker when interaction is available. */\n browse(): void;\n /** Removes a pending file by its stable record id. */\n remove(id: string): void;\n /** Retries failed or canceled direct-upload records. */\n retry(): void;\n /** Cancels the active direct-upload batch. */\n cancel(): void;\n /** Returns the original browser File for transport code without cloning it. */\n file(id: string): File | null;\n}\n\ntype FileUploadData = AlpineMachine<FileUploadContext, FileUploadProps, typeof fileUploadHooks> & UiFileUploadApi & {\n init(): void;\n destroy(): void;\n};\n\nconst formatBytes = (bytes: number): string => {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const unitIndex = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);\n const value = bytes / (1024 ** unitIndex);\n const display = value >= 10 || unitIndex === 0 ? Math.round(value) : Number(value.toFixed(1));\n return `${display} ${units[unitIndex]}`;\n};\n\nconst filesFromList = (list: FileList | null): File[] => list ? Array.from(list) : [];\nconst isImageFile = (file: File): boolean => file.type.startsWith('image/');\nconst canPreviewFile = (file: File, preview: FileUploadProps['preview']): boolean => preview !== 'none' && (preview === 'image' || isImageFile(file));\n\nconst toFileList = (files: File[]): FileList | null => {\n if (typeof DataTransfer === 'undefined') return null;\n const transfer = new DataTransfer();\n files.forEach((file) => transfer.items.add(file));\n return transfer.files;\n};\n\nconst setInputFiles = (input: HTMLInputElement, files: File[]): boolean => {\n const list = toFileList(files);\n if (!list) return false;\n try {\n input.files = list;\n return true;\n } catch {\n return false;\n }\n};\n\nconst iconSvg = (pathData: string, className: string): SVGSVGElement => {\n const namespace = 'http://www.w3.org/2000/svg';\n const icon = document.createElementNS(namespace, 'svg');\n const path = document.createElementNS(namespace, 'path');\n icon.setAttribute('viewBox', '0 0 32 32');\n icon.setAttribute('aria-hidden', 'true');\n icon.setAttribute('class', className);\n path.setAttribute('d', pathData);\n icon.append(path);\n return icon;\n};\n\nconst closeIcon = (className: string): SVGSVGElement => {\n const namespace = 'http://www.w3.org/2000/svg';\n const icon = document.createElementNS(namespace, 'svg');\n const polygon = document.createElementNS(namespace, 'polygon');\n icon.setAttribute('viewBox', '0 0 32 32');\n icon.setAttribute('aria-hidden', 'true');\n icon.setAttribute('class', className);\n polygon.setAttribute('points', '17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16');\n icon.append(polygon);\n return icon;\n};\n\nconst UiFileUpload = (): TrellisAlpineComponent<FileUploadData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let ignoreNativeChange = false;\n let fileSequence = 0;\n const rawFiles = new Map<string, File>();\n const previewUrls = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('File upload has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n const control = root().querySelector<HTMLInputElement>('[data-ui-file-upload-input]');\n if (!control) throw new Error('File upload requires a native file input.');\n return control;\n };\n const dropzone = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-file-upload-dropzone]');\n const list = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-file-upload-list]');\n const currentProps = (): Readonly<FileUploadProps> => bridge.getSnapshot().props;\n const currentContext = (): Readonly<FileUploadContext> => bridge.getSnapshot().context;\n\n const metadataFor = (file: File): FileUploadMetadata => ({\n id: `file-${++fileSequence}`,\n name: file.name,\n bytes: file.size,\n size: formatBytes(file.size),\n type: file.type || 'File',\n });\n const registerFiles = (files: File[]): FileUploadMetadata[] => files.map((file) => {\n const metadata = metadataFor(file);\n rawFiles.set(metadata.id, file);\n return metadata;\n });\n const revokePreview = (id: string): void => {\n const url = previewUrls.get(id);\n if (url) URL.revokeObjectURL(url);\n previewUrls.delete(id);\n };\n const dispatchNativeChange = (): void => {\n ignoreNativeChange = true;\n input().dispatchEvent(new Event('input', {bubbles: true}));\n input().dispatchEvent(new Event('change', {bubbles: true}));\n };\n const sendFiles = (records: FileUploadMetadata[], source: FileSelectionSource, append = false): void => {\n if (currentProps().disabled || bridge.hasTag('uploading')) return;\n bridge.send({type: 'FILES_CHANGED', records, source, append});\n };\n\n const renderFiles = (context: Readonly<FileUploadContext>, props: Readonly<FileUploadProps>): void => {\n const container = list();\n if (!container) return;\n container.querySelectorAll('[data-ui-file-upload-pending]').forEach((item) => item.remove());\n const records = recordsFromSnapshot(context);\n const selectedIds = new Set(records.map(({id}) => id));\n [...previewUrls.keys()].filter((id) => !selectedIds.has(id)).forEach(revokePreview);\n [...rawFiles.keys()].filter((id) => !selectedIds.has(id)).forEach((id) => rawFiles.delete(id));\n const existing = container.querySelector<HTMLElement>('[data-existing-file]:not([hidden])');\n const empty = container.querySelector<HTMLElement>('[data-ui-file-upload-empty]');\n if (empty) empty.hidden = records.length > 0 || Boolean(existing);\n\n const itemClass = resolveStyle({part: fileUploadStyles.parts.item, className: props.itemClass});\n const previewClass = resolveStyle({part: fileUploadStyles.parts.preview});\n const imageClass = resolveStyle({part: fileUploadStyles.parts.previewImage});\n const bodyClass = resolveStyle({part: fileUploadStyles.parts.itemBody});\n const nameClass = resolveStyle({part: fileUploadStyles.parts.itemName});\n const metaClass = resolveStyle({part: fileUploadStyles.parts.itemMeta});\n const removeClass = resolveStyle({part: fileUploadStyles.parts.remove});\n const removeIconClass = resolveStyle({part: fileUploadStyles.parts.removeIcon});\n const itemIconClass = resolveStyle({part: fileUploadStyles.parts.itemIcon});\n\n records.forEach((record) => {\n const item = document.createElement('li');\n item.dataset.uiFileUploadItem = '';\n item.dataset.uiFileUploadPending = '';\n item.dataset.fileId = record.id;\n item.dataset.status = record.status;\n item.dataset.progress = String(record.progress);\n item.className = itemClass;\n\n const preview = document.createElement('span');\n preview.dataset.uiFileUploadPreview = '';\n preview.className = previewClass;\n preview.setAttribute('aria-hidden', 'true');\n const file = rawFiles.get(record.id);\n if (file && canPreviewFile(file, props.preview)) {\n let url = previewUrls.get(record.id);\n if (!url) {\n url = URL.createObjectURL(file);\n previewUrls.set(record.id, url);\n }\n const image = document.createElement('img');\n image.src = url;\n image.alt = '';\n image.loading = 'lazy';\n image.decoding = 'async';\n image.className = `outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10 block size-full object-cover ${imageClass}`;\n preview.append(image);\n } else {\n preview.append(iconSvg('M25.7,9.3l-7-7A.9078.9078,0,0,0,18,2H8A2.0059,2.0059,0,0,0,6,4V28a2.0059,2.0059,0,0,0,2,2H24a2.0059,2.0059,0,0,0,2-2V10A.9078.9078,0,0,0,25.7,9.3ZM18,4.4,23.6,10H18ZM24,28H8V4h8v6a2.0059,2.0059,0,0,0,2,2h6Z', itemIconClass));\n }\n\n const body = document.createElement('span');\n body.className = bodyClass;\n const name = document.createElement('span');\n name.dataset.uiFileUploadItemName = '';\n name.className = nameClass;\n name.textContent = record.name;\n const meta = document.createElement('span');\n meta.dataset.uiFileUploadItemMeta = '';\n meta.className = metaClass;\n meta.textContent = [record.size, record.type].filter(Boolean).join(' · ');\n body.append(name, meta);\n\n const remove = document.createElement('button');\n remove.type = 'button';\n remove.dataset.uiFileUploadRemove = '';\n remove.dataset.fileId = record.id;\n remove.className = removeClass;\n remove.disabled = bridge.hasTag('uploading');\n remove.setAttribute('aria-label', `Remove ${record.name}`);\n remove.append(closeIcon(removeIconClass));\n item.append(preview, body, remove);\n container.append(item);\n });\n };\n\n const syncDom = (\n context: Readonly<FileUploadContext> = currentContext(),\n props: Readonly<FileUploadProps> = currentProps(),\n ): void => {\n const records = recordsFromSnapshot(context);\n const existing = context.existing.present && !context.existing.cleared;\n const hasFiles = records.length > 0 || existing;\n const unavailable = props.disabled || context.selection.limitReached || context.transfer.status === 'uploading';\n const control = input();\n syncNativeControl({input: control, state: {disabled: props.disabled, required: props.required, invalid: props.invalid}});\n if (props.transport === 'native' && props.name) control.name = props.name;\n else control.removeAttribute('name');\n control.multiple = props.multiple;\n props.accept ? control.setAttribute('accept', props.accept) : control.removeAttribute('accept');\n props.capture ? control.setAttribute('capture', props.capture) : control.removeAttribute('capture');\n if (unavailable && !props.disabled) {\n control.setAttribute('aria-disabled', 'true');\n control.tabIndex = -1;\n } else if (!props.disabled) {\n control.removeAttribute('aria-disabled');\n control.removeAttribute('tabindex');\n }\n if (control.form) control.form.enctype = 'multipart/form-data';\n\n syncControlPresence({el: root(), state: props, value: 'true'});\n setPresence({el: root(), attr: 'data-empty', present: !hasFiles, value: 'true'});\n setPresence({el: root(), attr: 'data-has-files', present: hasFiles, value: 'true'});\n setPresence({el: root(), attr: 'data-multiple', present: props.multiple, value: 'true'});\n setPresence({el: root(), attr: 'data-max-items-reached', present: context.selection.limitReached, value: 'true'});\n setPresence({el: root(), attr: 'data-has-existing-file', present: existing, value: 'true'});\n root().dataset.transport = props.transport;\n root().dataset.transferState = context.transfer.status;\n const zone = dropzone();\n if (zone) {\n syncControlPresence({el: zone, state: {disabled: unavailable, invalid: props.invalid}, value: 'true'});\n setPresence({el: zone, attr: 'data-multiple', present: props.multiple, value: 'true'});\n setPresence({el: zone, attr: 'data-has-files', present: hasFiles, value: 'true'});\n setPresence({el: zone, attr: 'data-max-items-reached', present: context.selection.limitReached, value: 'true'});\n }\n renderFiles(context, props);\n };\n\n const initialContext = (props: FileUploadProps): FileUploadContext => ({\n selection: {files: [], limitReached: false, rejectedCount: 0, limitRejectedCount: 0, source: 'clear'},\n existing: {present: Boolean(root().querySelector('[data-ui-file-upload-item][data-existing-file]')), cleared: false},\n transfer: {status: props.transport === 'native' ? 'native' : 'idle', activeIds: [], progress: {}, results: {}, error: ''},\n });\n\n const bridge = createAlpineMachine({\n schema: fileUploadSchema,\n hooks: fileUploadHooks,\n createMachine: ({props}) => createFileUploadMachine({\n props,\n context: initialContext(props),\n effects: {\n commitSelection: (scope) => {\n const selected = scope.context.selection.files;\n const selectedFiles = selected.flatMap(({id}) => rawFiles.get(id) ?? []);\n if (!setInputFiles(input(), selectedFiles)) {\n input().value = '';\n bridge.send('FILES_RESET');\n return;\n }\n syncDom(scope.context, scope.props);\n if (scope.context.selection.limitRejectedCount > 0) {\n dispatch({el: root(), name: 'ui:file-upload-limit', detail: {rejectedCount: scope.context.selection.limitRejectedCount}});\n }\n if (scope.context.selection.source !== 'picker') dispatchNativeChange();\n dispatch({el: root(), name: 'ui:file-upload-change', detail: {files: recordsFromSnapshot(scope.context)}});\n },\n resetSelection: (scope) => { input().value = ''; syncDom(scope.context, scope.props); },\n syncProps: (scope) => {\n syncDom(scope.context, scope.props);\n bridge.send({type: 'RECONCILE', records: scope.context.selection.files, source: 'props'});\n },\n syncDragging: (scope) => {\n const dragging = scope.snapshot.tags.includes('dragging');\n setPresence({el: root(), attr: 'data-dragging', present: dragging, value: 'true'});\n const zone = dropzone();\n if (zone) setPresence({el: zone, attr: 'data-dragging', present: dragging, value: 'true'});\n },\n clearExisting: (scope) => {\n const clear = root().querySelector<HTMLInputElement>('[data-ui-file-upload-clear]');\n if (clear) {\n clear.checked = true;\n clear.dispatchEvent(new Event('change', {bubbles: true}));\n }\n const existing = root().querySelector<HTMLElement>('[data-ui-file-upload-item][data-existing-file]');\n if (existing) existing.hidden = true;\n syncDom(scope.context, scope.props);\n dispatch({el: root(), name: 'ui:file-upload-change', detail: {files: recordsFromSnapshot(scope.context)}});\n },\n syncTransfer: (scope) => syncDom(scope.context, scope.props),\n emitComplete: (scope) => dispatch({el: root(), name: 'ui:file-upload-complete', detail: {files: recordsFromSnapshot(scope.context)}}),\n emitError: (scope) => dispatch({el: root(), name: 'ui:file-upload-error', detail: {files: recordsFromSnapshot(scope.context), error: scope.context.transfer.error}}),\n emitCancel: (scope) => dispatch({el: root(), name: 'ui:file-upload-cancel', detail: {files: recordsFromSnapshot(scope.context)}}),\n },\n }),\n });\n\n const component: TrellisAlpineComponent<FileUploadData> = {\n ...bridge,\n get files() { return this.snapshot.current ? recordsFromSnapshot(this.snapshot.current.context) : []; },\n get hasFiles() { return (this.snapshot.current?.context.selection.files.length ?? 0) > 0 || Boolean(this.snapshot.current?.context.existing.present && !this.snapshot.current.context.existing.cleared); },\n get isDragging() { return this.snapshot.current?.tags.includes('dragging') ?? false; },\n get isUploading() { return this.snapshot.current?.tags.includes('uploading') ?? false; },\n get isLimitReached() { return this.snapshot.current?.context.selection.limitReached ?? false; },\n init() {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const control = input();\n addListener({target: control, event: 'change', handler: () => {\n if (ignoreNativeChange) { ignoreNativeChange = false; return; }\n sendFiles(registerFiles(filesFromList(control.files)), 'picker');\n }, cleanup});\n addListener({target: root(), event: 'click', handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const remove = target.closest<HTMLElement>('[data-ui-file-upload-remove][data-file-id]');\n if (remove?.dataset.fileId) { event.preventDefault(); component.remove(remove.dataset.fileId); return; }\n const existing = target.closest('[data-ui-file-upload-remove][data-existing-file]');\n if (existing) { event.preventDefault(); bridge.send('CLEAR_EXISTING'); }\n }, cleanup});\n const zone = dropzone();\n if (zone) {\n cleanup.push(dropTargetForExternal({\n element: zone,\n canDrop: ({source}) => !currentProps().disabled && !bridge.hasTag('uploading') && containsFiles({source}),\n getDropEffect: () => 'copy',\n onDragEnter: () => bridge.send('DRAG_ENTER'),\n onDragLeave: () => bridge.send('DRAG_LEAVE'),\n onDrop: ({source}: ExternalDropTargetEventPayloadMap['onDrop']) => {\n bridge.send('DROP');\n if (!containsFiles({source})) return;\n sendFiles(registerFiles(getFiles({source})), 'drop', currentProps().multiple);\n },\n }));\n cleanup.push(monitorForExternal({canMonitor: ({source}) => containsFiles({source}), onDrop: () => bridge.send('DRAG_LEAVE')}));\n }\n syncDom();\n bridge.send({type: 'RECONCILE', records: [], source: 'props'});\n },\n destroy() {\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n previewUrls.forEach((url) => URL.revokeObjectURL(url));\n previewUrls.clear();\n rawFiles.clear();\n bridge.disconnect();\n rootEl = null;\n },\n browse() { if (!currentProps().disabled && !bridge.hasTag('uploading')) input().click(); },\n remove(id) {\n if (currentProps().disabled || bridge.hasTag('uploading') || !rawFiles.has(id)) return;\n const records = currentContext().selection.files.filter((record) => record.id !== id);\n sendFiles(records, 'remove');\n },\n retry() { bridge.send('RETRY_UPLOAD'); },\n cancel() { bridge.send('CANCEL_UPLOAD'); },\n file(id) { return rawFiles.get(id) ?? null; },\n };\n return component;\n};\n\nconst registerFileUpload = defineAlpineData('UiFileUpload', UiFileUpload);\n\nexport {registerFileUpload, UiFileUpload};\nexport type {\n FileTransferStatus,\n FileUploadData,\n FileUploadMetadata,\n FileUploadRecord,\n FileUploadTransition,\n UiFileUploadApi,\n};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerFileUpload as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerFileUpload = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerFileUpload};\nexport default registerFileUpload;\nexport * from './index';\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as e,f as t,l as n,n as r,u as i}from"./codecs-Cb1ns_47.js";import{s as a,t as o}from"./dom-qAeVl7dc.js";import{t as s}from"./alpine-machine-D0Kqjm-1.js";import{t as c}from"./number-BCZdoG0B.js";import{t as l}from"./alpine-data-DZ17j0jc.js";import{t as u}from"./machine-Dqut4h89.js";import{n as d,t as f}from"./props-change-2xfsIAEN.js";import{i as p,n as m,r as h}from"./form-control-BkVb2Qed.js";import{C as g,c as _,o as v}from"./common-BOd_thC-.js";var y=v,b=_,x=g,S={name:t,value:t,defaultValue:t.default(`0`),min:e.default(0),max:e.default(100),step:e.default(1),bigStep:e.default(10),minStepsBetween:e.default(0),range:r,orientation:n(x,`horizontal`),size:n(y,`md`),variant:n(b,`default`),disabled:r,required:r,invalid:r,label:t,description:t,descriptionTrailing:t,error:t,errors:t,badge:t,valueText:t,lowerLabel:t.default(`Minimum`),upperLabel:t.default(`Maximum`),lowerValueText:t,upperValueText:t,showValue:r,format:n([`number`,`percent`],`number`),fieldClass:t,rootClass:t,trackClass:t,rangeClass:t,thumbClass:t,tickClass:t,class:t};e.default(0);var C=[],w=(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))},T=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}},E=(e,t)=>{let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)?n:t},D=(e,t,n)=>{let{min:r,max:i,step:a}=T(e),o=w(c(E(t.lower,r),r,i),r,a),s=w(c(E(t.upper,i),r,i),r,a);if(!e.range)return{lower:o,upper:o};o>s&&([o,s]=[s,o]);let l=Math.max(0,e.minStepsBetween)*a;return s-o<l&&(n===`lower`?o=c(w(s-l,r,a),r,i):s=c(w(o+l,r,a),r,i)),{lower:o,upper:s}},O=(e,t)=>{let{min:n,max:r}=T(e),i=t.split(`,`).map(e=>e.trim());return D(e,{lower:E(i[0],n),upper:e.range?E(i[1],r):E(i[0],n)})},k=e=>O(e,e.value||e.defaultValue||String(T(e).min)),A=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,j=e=>{if(Array.isArray(e.event.values))return D(e.props,{lower:E(e.event.values[0],e.context.value.lower),upper:E(e.event.values[1],e.context.value.upper)},A(e.event));let t=A(e.event)??e.context.interaction.activeThumb??`single`,n=E(e.event.value,t===`upper`?e.context.value.upper:e.context.value.lower);return D(e.props,{lower:t===`upper`?e.context.value.lower:n,upper:t===`upper`?n:e.context.value.upper},t)},M=e=>{let t=d(e.event)?.props;return t?{...t,range:e.props.range,defaultValue:e.props.defaultValue}:e.props},N=e=>{let t=M(e);return f(e.event,`value`)?O(t,t.value||t.defaultValue||String(T(t).min)):D(t,e.context.value)},P=e=>({event:t})=>t.thumb===e,F=e=>M(e).disabled,I=({props:e,context:t,effects:n})=>u({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:P(`single`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.lower`,guard:P(`lower`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.upper`,guard:P(`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:F,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:j(e)}}),startDrag:e=>({context:{value:j(e),interaction:{activeThumb:A(e.event)}}}),endDrag:e=>({context:{...e.context,interaction:{activeThumb:null}}}),reconcileProps:e=>({props:M(e),context:{...e.context,value:N(e)}})},effects:n}),L=(e,t)=>{let n=Number(e);return Number.isFinite(n)?n:t},R=(e,t,n)=>n<=t?0:c((e-t)/(n-t)*100,0,100),z=(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)},B=(e,t,n)=>{let{min:r,max:i,step:a}=T(n),o=e.getBoundingClientRect(),s=c(r+c(n.orientation===`vertical`?1-(t.clientY-o.top)/Math.max(o.height,1):(t.clientX-o.left)/Math.max(o.width,1),0,1)*(i-r),r,i),l=Math.round((s-r)/a)*a+r,u=Math.max(0,`${a}`.split(`.`)[1]?.length??0);return Number(l.toFixed(u))},V=(e,t)=>Math.abs(e-t.lower)<=Math.abs(e-t.upper)?`lower`:`upper`,H=(e,t,n,r)=>{e&&(a({el:e,attr:`data-focus`,present:t}),a({el:e,attr:`data-disabled`,present:n}),a({el:e,attr:`data-invalid`,present:r}))},U=({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),h({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`))},W=(e,t,n)=>{let{min:r,max:i}=T(e),a=R(n.lower,r,i),o=R(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=R(L(t.dataset.value??``,r),r,i);e.orientation===`vertical`?(t.style.bottom=`${n}%`,t.style.left=``):(t.style.left=`${n}%`,t.style.bottom=``)})},G=()=>{let e=null,t=[],n=``,r=null,a=!1,c=()=>{if(!e)throw Error(`Slider has not been initialized.`);return e},l=()=>w.getCommittedSnapshot(),u=()=>l().props,d=()=>l().context.value,f=()=>{let e=c(),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]`))}},h=(e,t=f())=>e===`upper`?t.upperInput:e===`lower`?t.lowerInput:t.singleInput,g=e=>e.dataset.thumb===`upper`?`upper`:e.dataset.thumb===`lower`?`lower`:`single`,_=()=>{let e=u(),t=d(),r=f(),{min:a,max:o}=T(e);i({el:c(),schema:S,key:`value`,value:e.range?`${t.lower},${t.upper}`:String(t.lower)}),U({input:r.singleInput,props:e,value:t.lower,min:a,max:o,label:e.label,valueText:e.valueText,nativeRequired:e.required}),U({input:r.lowerInput,props:e,value:t.lower,min:a,max:e.range?t.upper:o,label:e.lowerLabel,valueText:e.lowerValueText,nativeRequired:!1}),U({input:r.upperInput,props:e,value:t.upper,min:e.range?t.lower:a,max:o,label:e.upperLabel,valueText:e.upperValueText,nativeRequired:!1}),W(e,r,t),r.value&&(r.value.textContent=z(e,t)),m({el:c(),state:e}),m({el:r.root,state:e}),r.track&&m({el:r.track,state:{disabled:e.disabled,invalid:e.invalid}}),r.range&&m({el:r.range,state:{disabled:e.disabled,invalid:e.invalid}}),H(r.singleThumb,r.singleInput===document.activeElement,e.disabled,e.invalid),H(r.lowerThumb,r.lowerInput===document.activeElement,e.disabled,e.invalid),H(r.upperThumb,r.upperInput===document.activeElement,e.disabled,e.invalid),e.range&&r.hiddenInputs?n=p({container:r.hiddenInputs,currentKey:n,state:{name:e.name,values:[String(t.lower),String(t.upper)],required:e.required,marker:`data-ui-slider-hidden-input`}}):r.hiddenInputs&&(n=p({container:r.hiddenInputs,currentKey:n,state:{name:``,values:[],marker:`data-ui-slider-hidden-input`}}))},v=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,y=(e,t,n)=>{let r=f(),i=n.type===`API_SET`&&u().range?[r.lowerInput,r.upperInput]:[h(v(n)??t.context.interaction.activeThumb,r)];a=!0;try{i.forEach(t=>t?.dispatchEvent(new Event(e,{bubbles:!0})))}finally{a=!1}},b=(e,t)=>{let n=f(),i=e.context.interaction.activeThumb;if(h(i,n)?.focus(),r=typeof t.pointerId==`number`?t.pointerId:null,r!==null)try{n.root.setPointerCapture(r)}catch{w.send({type:`POINTER_ENDED`,thumb:i})}},x=()=>{if(r!==null){try{f().root.releasePointerCapture(r)}catch{}r=null}},w=s({schema:S,hooks:C,createMachine:({props:e})=>I({props:e,context:{value:k(e),interaction:{activeThumb:null}},effects:{sync:_,beginDrag:({snapshot:e,event:t})=>b(e,t),endDrag:x,emitInput:({snapshot:e,event:t})=>y(`input`,e,t),emitChange:({snapshot:e,event:t})=>y(`change`,e,t)}})}),E=(e,t)=>{a||!(e.target instanceof HTMLInputElement)||w.send({type:t?`INPUT_COMMITTED`:`INPUT_CHANGED`,thumb:g(e.target),value:e.target.value})},D=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=g(e.target);w.send({type:`KEY_STEPPED`,thumb:n,value:L(e.target.value,T(u()).min)+t*T(u()).bigStep})},O=e=>{if(u().disabled)return;let t=B(f().root,e,u()),n=u().range?V(t,d()):`single`;w.send({type:`POINTER_STARTED`,value:t,thumb:n,pointerId:e.pointerId}),e.preventDefault()},A=e=>{r!==e.pointerId||!w.hasTag(`dragging`)||w.send({type:`POINTER_MOVED`,value:B(f().root,e,u()),thumb:l().context.interaction.activeThumb})},j=e=>{r!==e.pointerId||!w.hasTag(`dragging`)||w.send({type:`POINTER_ENDED`,thumb:l().context.interaction.activeThumb})},M;return M={...w,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){w.send({type:`API_SET`,values:Array.isArray(e)?e:[e]})},init(){e=this.$el,w.connect(this.$el,this.snapshot);let n=f();[n.singleInput,n.lowerInput,n.upperInput].forEach(e=>{e&&(o({target:e,event:`input`,handler:e=>E(e,!1),cleanup:t}),o({target:e,event:`change`,handler:e=>E(e,!0),cleanup:t}),o({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&D(e)},cleanup:t}),o({target:e,event:`focus`,handler:_,cleanup:t}),o({target:e,event:`blur`,handler:_,cleanup:t}))}),o({target:n.root,event:`pointerdown`,handler:e=>{e instanceof PointerEvent&&O(e)},cleanup:t}),o({target:n.root,event:`pointermove`,handler:e=>{e instanceof PointerEvent&&A(e)},cleanup:t}),o({target:n.root,event:`pointerup`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:t}),o({target:n.root,event:`pointercancel`,handler:e=>{e instanceof PointerEvent&&j(e)},cleanup:t}),_()},destroy(){x(),t.splice(0).forEach(e=>e()),w.disconnect(),e=null}},M},K=l(`UiSlider`,G),q=new WeakSet,J=e=>{q.has(e)||(q.add(e),K(e))};export{G as n,J as t};
|
|
2
|
+
//# sourceMappingURL=entry.generated-byAFfb_v.js.map
|