@vielzeug/craftit 2.0.1 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -108
- package/dist/controls/a11y-control.cjs +2 -0
- package/dist/controls/a11y-control.cjs.map +1 -0
- package/dist/controls/a11y-control.d.ts +16 -0
- package/dist/controls/a11y-control.d.ts.map +1 -0
- package/dist/controls/a11y-control.js +2 -0
- package/dist/controls/a11y-control.js.map +1 -0
- package/dist/controls/checkable-control.cjs +2 -0
- package/dist/controls/checkable-control.cjs.map +1 -0
- package/dist/controls/checkable-control.d.ts +15 -0
- package/dist/controls/checkable-control.d.ts.map +1 -0
- package/dist/controls/checkable-control.js +2 -0
- package/dist/controls/checkable-control.js.map +1 -0
- package/dist/controls/choice-field-control.cjs +2 -0
- package/dist/controls/choice-field-control.cjs.map +1 -0
- package/dist/controls/choice-field-control.d.ts +3 -0
- package/dist/controls/choice-field-control.d.ts.map +1 -0
- package/dist/controls/choice-field-control.js +2 -0
- package/dist/controls/choice-field-control.js.map +1 -0
- package/dist/controls/field-control.cjs +2 -0
- package/dist/controls/field-control.cjs.map +1 -0
- package/dist/controls/field-control.d.ts +111 -0
- package/dist/controls/field-control.d.ts.map +1 -0
- package/dist/controls/field-control.js +2 -0
- package/dist/controls/field-control.js.map +1 -0
- package/dist/controls/index.d.ts +12 -0
- package/dist/controls/index.d.ts.map +1 -0
- package/dist/controls/internal/control-state.cjs +2 -0
- package/dist/controls/internal/control-state.cjs.map +1 -0
- package/dist/controls/internal/control-state.d.ts +21 -0
- package/dist/controls/internal/control-state.d.ts.map +1 -0
- package/dist/controls/internal/control-state.js +2 -0
- package/dist/controls/internal/control-state.js.map +1 -0
- package/dist/controls/internal/keyboard-utils.cjs +2 -0
- package/dist/controls/internal/keyboard-utils.cjs.map +1 -0
- package/dist/controls/internal/keyboard-utils.d.ts +7 -0
- package/dist/controls/internal/keyboard-utils.d.ts.map +1 -0
- package/dist/controls/internal/keyboard-utils.js +2 -0
- package/dist/controls/internal/keyboard-utils.js.map +1 -0
- package/dist/controls/internal/number-utils.cjs +2 -0
- package/dist/controls/internal/number-utils.cjs.map +1 -0
- package/dist/controls/internal/number-utils.d.ts +6 -0
- package/dist/controls/internal/number-utils.d.ts.map +1 -0
- package/dist/controls/internal/number-utils.js +2 -0
- package/dist/controls/internal/number-utils.js.map +1 -0
- package/dist/controls/internal/validation-utils.cjs +2 -0
- package/dist/controls/internal/validation-utils.cjs.map +1 -0
- package/dist/controls/internal/validation-utils.d.ts +13 -0
- package/dist/controls/internal/validation-utils.d.ts.map +1 -0
- package/dist/controls/internal/validation-utils.js +2 -0
- package/dist/controls/internal/validation-utils.js.map +1 -0
- package/dist/controls/list-control.cjs +2 -0
- package/dist/controls/list-control.cjs.map +1 -0
- package/dist/controls/list-control.d.ts +23 -0
- package/dist/controls/list-control.d.ts.map +1 -0
- package/dist/controls/list-control.js +2 -0
- package/dist/controls/list-control.js.map +1 -0
- package/dist/controls/overlay-control.cjs +2 -0
- package/dist/controls/overlay-control.cjs.map +1 -0
- package/dist/{labs/overlay.d.ts → controls/overlay-control.d.ts} +19 -14
- package/dist/controls/overlay-control.d.ts.map +1 -0
- package/dist/controls/overlay-control.js +2 -0
- package/dist/controls/overlay-control.js.map +1 -0
- package/dist/controls/popup-list-control.cjs +2 -0
- package/dist/controls/popup-list-control.cjs.map +1 -0
- package/dist/controls/popup-list-control.d.ts +160 -0
- package/dist/controls/popup-list-control.d.ts.map +1 -0
- package/dist/controls/popup-list-control.js +2 -0
- package/dist/controls/popup-list-control.js.map +1 -0
- package/dist/controls/press-control.cjs +2 -0
- package/dist/controls/press-control.cjs.map +1 -0
- package/dist/controls/press-control.d.ts +12 -0
- package/dist/controls/press-control.d.ts.map +1 -0
- package/dist/controls/press-control.js +2 -0
- package/dist/controls/press-control.js.map +1 -0
- package/dist/controls/slider-control.cjs +2 -0
- package/dist/controls/slider-control.cjs.map +1 -0
- package/dist/controls/slider-control.d.ts +19 -0
- package/dist/controls/slider-control.d.ts.map +1 -0
- package/dist/controls/slider-control.js +2 -0
- package/dist/controls/slider-control.js.map +1 -0
- package/dist/controls/spinner-control.cjs +2 -0
- package/dist/controls/spinner-control.cjs.map +1 -0
- package/dist/controls/spinner-control.d.ts +18 -0
- package/dist/controls/spinner-control.d.ts.map +1 -0
- package/dist/controls/spinner-control.js +2 -0
- package/dist/controls/spinner-control.js.map +1 -0
- package/dist/controls/swipe-control.cjs +2 -0
- package/dist/controls/swipe-control.cjs.map +1 -0
- package/dist/controls/swipe-control.d.ts +32 -0
- package/dist/controls/swipe-control.d.ts.map +1 -0
- package/dist/controls/swipe-control.js +2 -0
- package/dist/controls/swipe-control.js.map +1 -0
- package/dist/controls/text-field-control.cjs +2 -0
- package/dist/controls/text-field-control.cjs.map +1 -0
- package/dist/controls/text-field-control.d.ts +3 -0
- package/dist/controls/text-field-control.d.ts.map +1 -0
- package/dist/controls/text-field-control.js +2 -0
- package/dist/controls/text-field-control.js.map +1 -0
- package/dist/controls.cjs +1 -0
- package/dist/controls.js +1 -0
- package/dist/craftit.cjs +1 -1
- package/dist/craftit.cjs.map +1 -1
- package/dist/craftit.js +1 -1
- package/dist/craftit.js.map +1 -1
- package/dist/directives/classMap.cjs +2 -0
- package/dist/directives/classMap.cjs.map +1 -0
- package/dist/directives/classMap.d.ts +19 -0
- package/dist/directives/classMap.d.ts.map +1 -0
- package/dist/directives/classMap.js +2 -0
- package/dist/directives/classMap.js.map +1 -0
- package/dist/directives/each.cjs +1 -1
- package/dist/directives/each.cjs.map +1 -1
- package/dist/directives/each.d.ts +12 -49
- package/dist/directives/each.d.ts.map +1 -1
- package/dist/directives/each.js +1 -1
- package/dist/directives/each.js.map +1 -1
- package/dist/directives/guard.cjs +2 -0
- package/dist/directives/guard.cjs.map +1 -0
- package/dist/directives/guard.d.ts +10 -0
- package/dist/directives/guard.d.ts.map +1 -0
- package/dist/directives/guard.js +2 -0
- package/dist/directives/guard.js.map +1 -0
- package/dist/directives/live.cjs +2 -0
- package/dist/directives/live.cjs.map +1 -0
- package/dist/directives/live.d.ts +23 -0
- package/dist/directives/live.d.ts.map +1 -0
- package/dist/directives/live.js +2 -0
- package/dist/directives/live.js.map +1 -0
- package/dist/directives/raw.cjs +1 -1
- package/dist/directives/raw.cjs.map +1 -1
- package/dist/directives/raw.d.ts +4 -6
- package/dist/directives/raw.d.ts.map +1 -1
- package/dist/directives/raw.js +1 -1
- package/dist/directives/raw.js.map +1 -1
- package/dist/directives/resource.cjs +2 -0
- package/dist/directives/resource.cjs.map +1 -0
- package/dist/directives/resource.d.ts +32 -0
- package/dist/directives/resource.d.ts.map +1 -0
- package/dist/directives/resource.js +2 -0
- package/dist/directives/resource.js.map +1 -0
- package/dist/directives/styleMap.cjs +2 -0
- package/dist/directives/styleMap.cjs.map +1 -0
- package/dist/directives/styleMap.d.ts +11 -0
- package/dist/directives/styleMap.d.ts.map +1 -0
- package/dist/directives/styleMap.js +2 -0
- package/dist/directives/styleMap.js.map +1 -0
- package/dist/directives/when.cjs +1 -1
- package/dist/directives/when.cjs.map +1 -1
- package/dist/directives/when.d.ts +7 -14
- package/dist/directives/when.d.ts.map +1 -1
- package/dist/directives/when.js +1 -1
- package/dist/directives/when.js.map +1 -1
- package/dist/errors.cjs +2 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -0
- package/dist/form.cjs +2 -0
- package/dist/form.cjs.map +1 -0
- package/dist/form.d.ts +15 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +2 -0
- package/dist/form.js.map +1 -0
- package/dist/host.cjs +2 -0
- package/dist/host.cjs.map +1 -0
- package/dist/host.d.ts +78 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +2 -0
- package/dist/host.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +16 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.cjs +2 -0
- package/dist/internal.cjs.map +1 -0
- package/dist/internal.d.ts +111 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -0
- package/dist/observers/index.d.ts +5 -0
- package/dist/observers/index.d.ts.map +1 -0
- package/dist/observers/intersection-observe.cjs +2 -0
- package/dist/observers/intersection-observe.cjs.map +1 -0
- package/dist/observers/intersection-observe.d.ts +9 -0
- package/dist/observers/intersection-observe.d.ts.map +1 -0
- package/dist/observers/intersection-observe.js +2 -0
- package/dist/observers/intersection-observe.js.map +1 -0
- package/dist/observers/media-observe.cjs +2 -0
- package/dist/observers/media-observe.cjs.map +1 -0
- package/dist/observers/media-observe.d.ts +8 -0
- package/dist/observers/media-observe.d.ts.map +1 -0
- package/dist/observers/media-observe.js +2 -0
- package/dist/observers/media-observe.js.map +1 -0
- package/dist/observers/mutation-observe.cjs +2 -0
- package/dist/observers/mutation-observe.cjs.map +1 -0
- package/dist/observers/mutation-observe.d.ts +10 -0
- package/dist/observers/mutation-observe.d.ts.map +1 -0
- package/dist/observers/mutation-observe.js +2 -0
- package/dist/observers/mutation-observe.js.map +1 -0
- package/dist/observers/resize-observe.cjs +2 -0
- package/dist/observers/resize-observe.cjs.map +1 -0
- package/dist/observers/resize-observe.d.ts +11 -0
- package/dist/observers/resize-observe.d.ts.map +1 -0
- package/dist/observers/resize-observe.js +2 -0
- package/dist/observers/resize-observe.js.map +1 -0
- package/dist/observers.cjs +1 -0
- package/dist/observers.js +1 -0
- package/dist/props.cjs +2 -0
- package/dist/props.cjs.map +1 -0
- package/dist/props.d.ts +39 -0
- package/dist/props.d.ts.map +1 -0
- package/dist/props.js +2 -0
- package/dist/props.js.map +1 -0
- package/dist/registration.cjs +2 -0
- package/dist/registration.cjs.map +1 -0
- package/dist/registration.d.ts +38 -0
- package/dist/registration.d.ts.map +1 -0
- package/dist/registration.js +2 -0
- package/dist/registration.js.map +1 -0
- package/dist/runtime.cjs +2 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.d.ts +33 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -0
- package/dist/template-bindings.cjs +2 -0
- package/dist/template-bindings.cjs.map +1 -0
- package/dist/template-bindings.d.ts +25 -0
- package/dist/template-bindings.d.ts.map +1 -0
- package/dist/template-bindings.js +2 -0
- package/dist/template-bindings.js.map +1 -0
- package/dist/template-compiler.cjs +2 -0
- package/dist/template-compiler.cjs.map +1 -0
- package/dist/template-compiler.d.ts +4 -0
- package/dist/template-compiler.d.ts.map +1 -0
- package/dist/template-compiler.js +2 -0
- package/dist/template-compiler.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/testing.cjs +2 -0
- package/dist/testing/testing.cjs.map +1 -0
- package/dist/{test/test.d.ts → testing/testing.d.ts} +18 -11
- package/dist/testing/testing.d.ts.map +1 -0
- package/dist/testing/testing.js +2 -0
- package/dist/testing/testing.js.map +1 -0
- package/dist/testing.cjs +1 -0
- package/dist/testing.js +1 -0
- package/package.json +21 -22
- package/dist/core/component.cjs +0 -2
- package/dist/core/component.cjs.map +0 -1
- package/dist/core/component.d.ts +0 -172
- package/dist/core/component.d.ts.map +0 -1
- package/dist/core/component.js +0 -2
- package/dist/core/component.js.map +0 -1
- package/dist/core/host.cjs +0 -2
- package/dist/core/host.cjs.map +0 -1
- package/dist/core/host.d.ts +0 -77
- package/dist/core/host.d.ts.map +0 -1
- package/dist/core/host.js +0 -2
- package/dist/core/host.js.map +0 -1
- package/dist/core/internal.cjs +0 -2
- package/dist/core/internal.cjs.map +0 -1
- package/dist/core/internal.d.ts +0 -107
- package/dist/core/internal.d.ts.map +0 -1
- package/dist/core/internal.js +0 -2
- package/dist/core/internal.js.map +0 -1
- package/dist/core/runtime-bindings.cjs +0 -2
- package/dist/core/runtime-bindings.cjs.map +0 -1
- package/dist/core/runtime-bindings.d.ts +0 -6
- package/dist/core/runtime-bindings.d.ts.map +0 -1
- package/dist/core/runtime-bindings.js +0 -2
- package/dist/core/runtime-bindings.js.map +0 -1
- package/dist/core/runtime-lifecycle.cjs +0 -2
- package/dist/core/runtime-lifecycle.cjs.map +0 -1
- package/dist/core/runtime-lifecycle.d.ts +0 -116
- package/dist/core/runtime-lifecycle.d.ts.map +0 -1
- package/dist/core/runtime-lifecycle.js +0 -2
- package/dist/core/runtime-lifecycle.js.map +0 -1
- package/dist/core/runtime.cjs +0 -1
- package/dist/core/runtime.d.ts +0 -3
- package/dist/core/runtime.d.ts.map +0 -1
- package/dist/core/runtime.js +0 -1
- package/dist/core/template-bindings.cjs +0 -2
- package/dist/core/template-bindings.cjs.map +0 -1
- package/dist/core/template-bindings.d.ts +0 -59
- package/dist/core/template-bindings.d.ts.map +0 -1
- package/dist/core/template-bindings.js +0 -2
- package/dist/core/template-bindings.js.map +0 -1
- package/dist/core/template-compiler.cjs +0 -2
- package/dist/core/template-compiler.cjs.map +0 -1
- package/dist/core/template-compiler.d.ts +0 -25
- package/dist/core/template-compiler.d.ts.map +0 -1
- package/dist/core/template-compiler.js +0 -2
- package/dist/core/template-compiler.js.map +0 -1
- package/dist/core/template-dom.cjs +0 -2
- package/dist/core/template-dom.cjs.map +0 -1
- package/dist/core/template-dom.d.ts +0 -13
- package/dist/core/template-dom.d.ts.map +0 -1
- package/dist/core/template-dom.js +0 -2
- package/dist/core/template-dom.js.map +0 -1
- package/dist/core/template-html.cjs +0 -2
- package/dist/core/template-html.cjs.map +0 -1
- package/dist/core/template-html.d.ts +0 -26
- package/dist/core/template-html.d.ts.map +0 -1
- package/dist/core/template-html.js +0 -2
- package/dist/core/template-html.js.map +0 -1
- package/dist/core/template.cjs +0 -2
- package/dist/core/template.cjs.map +0 -1
- package/dist/core/template.d.ts +0 -11
- package/dist/core/template.d.ts.map +0 -1
- package/dist/core/template.js +0 -2
- package/dist/core/template.js.map +0 -1
- package/dist/core/utilities.cjs +0 -2
- package/dist/core/utilities.cjs.map +0 -1
- package/dist/core/utilities.d.ts +0 -68
- package/dist/core/utilities.d.ts.map +0 -1
- package/dist/core/utilities.js +0 -2
- package/dist/core/utilities.js.map +0 -1
- package/dist/directives/attr.cjs +0 -2
- package/dist/directives/attr.cjs.map +0 -1
- package/dist/directives/attr.d.ts +0 -14
- package/dist/directives/attr.d.ts.map +0 -1
- package/dist/directives/attr.js +0 -2
- package/dist/directives/attr.js.map +0 -1
- package/dist/directives/bind.cjs +0 -2
- package/dist/directives/bind.cjs.map +0 -1
- package/dist/directives/bind.d.ts +0 -30
- package/dist/directives/bind.d.ts.map +0 -1
- package/dist/directives/bind.js +0 -2
- package/dist/directives/bind.js.map +0 -1
- package/dist/directives/choose.cjs +0 -2
- package/dist/directives/choose.cjs.map +0 -1
- package/dist/directives/choose.d.ts +0 -34
- package/dist/directives/choose.d.ts.map +0 -1
- package/dist/directives/choose.js +0 -2
- package/dist/directives/choose.js.map +0 -1
- package/dist/directives/classes.cjs +0 -2
- package/dist/directives/classes.cjs.map +0 -1
- package/dist/directives/classes.d.ts +0 -20
- package/dist/directives/classes.d.ts.map +0 -1
- package/dist/directives/classes.js +0 -2
- package/dist/directives/classes.js.map +0 -1
- package/dist/directives/index.cjs +0 -1
- package/dist/directives/index.d.ts +0 -14
- package/dist/directives/index.d.ts.map +0 -1
- package/dist/directives/index.js +0 -1
- package/dist/directives/match.cjs +0 -2
- package/dist/directives/match.cjs.map +0 -1
- package/dist/directives/match.d.ts +0 -31
- package/dist/directives/match.d.ts.map +0 -1
- package/dist/directives/match.js +0 -2
- package/dist/directives/match.js.map +0 -1
- package/dist/directives/memo.cjs +0 -2
- package/dist/directives/memo.cjs.map +0 -1
- package/dist/directives/memo.d.ts +0 -23
- package/dist/directives/memo.d.ts.map +0 -1
- package/dist/directives/memo.js +0 -2
- package/dist/directives/memo.js.map +0 -1
- package/dist/directives/on.cjs +0 -2
- package/dist/directives/on.cjs.map +0 -1
- package/dist/directives/on.d.ts +0 -25
- package/dist/directives/on.d.ts.map +0 -1
- package/dist/directives/on.js +0 -2
- package/dist/directives/on.js.map +0 -1
- package/dist/directives/spread.cjs +0 -2
- package/dist/directives/spread.cjs.map +0 -1
- package/dist/directives/spread.d.ts +0 -14
- package/dist/directives/spread.d.ts.map +0 -1
- package/dist/directives/spread.js +0 -2
- package/dist/directives/spread.js.map +0 -1
- package/dist/directives/style.cjs +0 -2
- package/dist/directives/style.cjs.map +0 -1
- package/dist/directives/style.d.ts +0 -22
- package/dist/directives/style.d.ts.map +0 -1
- package/dist/directives/style.js +0 -2
- package/dist/directives/style.js.map +0 -1
- package/dist/directives/until.cjs +0 -2
- package/dist/directives/until.cjs.map +0 -1
- package/dist/directives/until.d.ts +0 -26
- package/dist/directives/until.d.ts.map +0 -1
- package/dist/directives/until.js +0 -2
- package/dist/directives/until.js.map +0 -1
- package/dist/labs/a11y.cjs +0 -2
- package/dist/labs/a11y.cjs.map +0 -1
- package/dist/labs/a11y.d.ts +0 -61
- package/dist/labs/a11y.d.ts.map +0 -1
- package/dist/labs/a11y.js +0 -2
- package/dist/labs/a11y.js.map +0 -1
- package/dist/labs/index.d.ts +0 -8
- package/dist/labs/index.d.ts.map +0 -1
- package/dist/labs/list.cjs +0 -2
- package/dist/labs/list.cjs.map +0 -1
- package/dist/labs/list.d.ts +0 -26
- package/dist/labs/list.d.ts.map +0 -1
- package/dist/labs/list.js +0 -2
- package/dist/labs/list.js.map +0 -1
- package/dist/labs/observers.cjs +0 -2
- package/dist/labs/observers.cjs.map +0 -1
- package/dist/labs/observers.d.ts +0 -42
- package/dist/labs/observers.d.ts.map +0 -1
- package/dist/labs/observers.js +0 -2
- package/dist/labs/observers.js.map +0 -1
- package/dist/labs/overlay.cjs +0 -2
- package/dist/labs/overlay.cjs.map +0 -1
- package/dist/labs/overlay.d.ts.map +0 -1
- package/dist/labs/overlay.js +0 -2
- package/dist/labs/overlay.js.map +0 -1
- package/dist/labs/selectable.cjs +0 -2
- package/dist/labs/selectable.cjs.map +0 -1
- package/dist/labs/selectable.d.ts +0 -70
- package/dist/labs/selectable.d.ts.map +0 -1
- package/dist/labs/selectable.js +0 -2
- package/dist/labs/selectable.js.map +0 -1
- package/dist/labs/selection.cjs +0 -2
- package/dist/labs/selection.cjs.map +0 -1
- package/dist/labs/selection.d.ts +0 -68
- package/dist/labs/selection.d.ts.map +0 -1
- package/dist/labs/selection.js +0 -2
- package/dist/labs/selection.js.map +0 -1
- package/dist/labs.cjs +0 -1
- package/dist/labs.js +0 -1
- package/dist/test/index.d.ts +0 -2
- package/dist/test/index.d.ts.map +0 -1
- package/dist/test/test.cjs +0 -2
- package/dist/test/test.cjs.map +0 -1
- package/dist/test/test.d.ts.map +0 -1
- package/dist/test/test.js +0 -2
- package/dist/test/test.js.map +0 -1
- package/dist/test.cjs +0 -1
- package/dist/test.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popup-list-control.js","names":[],"sources":["../../src/controls/popup-list-control.ts"],"sourcesContent":["import { watch } from '@vielzeug/stateit';\n\nimport type { OverlayCloseReason, OverlayOpenReason } from './overlay-control';\n\nimport { syncAria } from '../host';\nimport { createListControl } from './list-control';\nimport { createOverlayControl } from './overlay-control';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * ARIA role for the popup list. Affects which attributes are synced to the trigger.\n * - 'listbox': For select/combobox (role=\"combobox\" on trigger, role=\"listbox\" on panel)\n * - 'menu': For menus (role=\"menu\" on trigger, role=\"menu\" on panel)\n */\nexport type PopupListRole = 'listbox' | 'menu';\n\n/**\n * Configuration for syncing ARIA attributes to the trigger element.\n * Automatically handles role-specific attributes like aria-haspopup.\n */\nexport type PopupListAriaSyncConfig = {\n /**\n * Additional ARIA attributes to sync to the trigger beyond the standard ones.\n * These will be merged with role-specific defaults.\n */\n additional?: Record<\n string,\n boolean | null | number | string | undefined | (() => boolean | null | number | string | undefined)\n >;\n /**\n * The role of the popup list component. Controls which ARIA attributes are synced.\n * @default 'listbox'\n */\n role?: PopupListRole;\n};\n\n/**\n * Configuration for positioning the popup list using floatit.\n */\nexport type PopupListPositioner = {\n /** Gets the floating element (popup panel) */\n floating: () => HTMLElement | null;\n /** Get the reference element (trigger) */\n reference: () => HTMLElement | null;\n /** Update the position (called on open and during auto-update) */\n update: () => void;\n};\n\n/**\n * Main options for createPopupListControl.\n */\nexport type PopupListControlOptions<T> = {\n // ARIA\n /** Configuration for ARIA attributes */\n ariaSync?: PopupListAriaSyncConfig;\n // Overlay\n /** Get the boundary element (for click-outside detection) */\n getBoundaryElement: () => HTMLElement | null;\n\n // List state\n /** Get the current focused index (-1 if none focused) */\n getIndex: () => number;\n /** Get all items in the list */\n getItems: () => T[];\n /** Get the panel element */\n getPanelElement: () => HTMLElement | null;\n\n /** Get the trigger element */\n getTriggerElement: () => HTMLElement | null;\n // Overlay state\n /** Check if disabled */\n isDisabled?: () => boolean;\n\n // List navigation\n /** Check if an item is disabled */\n isItemDisabled?: (item: T, index: number) => boolean;\n\n /** Whether the popup is open */\n isOpen: () => boolean;\n /** Custom keyboard mappings for list navigation. Defaults to arrow keys. */\n keyboardMapping?:\n | (() => Partial<Record<'first' | 'last' | 'next' | 'prev', string[]>>)\n | Partial<Record<'first' | 'last' | 'next' | 'prev', string[]>>;\n\n /** The ID of the list element (for aria-controls/aria-owns) */\n listId?: string;\n\n /** Whether list navigation should loop (wrap around). @default true */\n loop?: boolean;\n\n /** Called when popup closes */\n onClose?: (reason: OverlayCloseReason) => void;\n\n /** Called when keyboard navigation is invoked */\n onNavigate?: (action: 'first' | 'last' | 'next' | 'prev', index: number, event: KeyboardEvent) => void;\n\n /** Called when popup opens */\n onOpen?: (reason: OverlayOpenReason) => void;\n\n /** Positioner for floating/positioning library integration */\n positioner?: PopupListPositioner;\n\n /** Whether to restore focus to trigger when closing. @default true */\n restoreFocus?: boolean | (() => boolean);\n\n /** Set the focused index */\n setIndex: (index: number) => void;\n\n /** Set open state */\n setOpen: (next: boolean, context: { reason: OverlayCloseReason | OverlayOpenReason }) => void;\n\n /** Ref-like trigger element used for internal ARIA syncing. */\n triggerRef?: { value: HTMLElement | null };\n};\n\n/**\n * Handle returned by createPopupListControl.\n * Provides methods to control the popup and list, and exposes underlying controls for advanced use.\n */\nexport type PopupListControl<T> = {\n /** Close the popup */\n close(reason?: OverlayCloseReason): void;\n\n // List navigation methods\n /** Move to first enabled item */\n first(): void;\n\n /** Get currently focused item */\n getActiveItem(): T | undefined;\n\n /** Handle keydown events for list navigation. Returns true if event was handled. */\n handleListKeydown(event: KeyboardEvent): boolean;\n\n /** Move to last enabled item */\n last(): void;\n\n /** Move to next enabled item */\n next(): void;\n\n /** Open the popup */\n open(reason?: OverlayOpenReason): void;\n\n /** Move to previous enabled item */\n prev(): void;\n\n /** Reset to no selection */\n reset(): void;\n\n /** Move to specific index */\n set(index: number): void;\n\n /** Toggle popup open/closed state */\n toggle(): void;\n};\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Implementation\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Creates a unified popup list control that manages overlay positioning, list navigation,\n * keyboard handling, and ARIA attributes for select, combobox, and menu components.\n *\n * This composable eliminates duplication across components by providing a single,\n * flexible API for:\n * - Opening/closing popups with proper positioning\n * - Navigating lists with keyboard (arrow keys, Home, End)\n * - Syncing ARIA attributes for accessibility\n * - Managing focus restoration\n * - Handling outside-click dismissal\n *\n * @example\n * ```ts\n * // In a select component setup\n * const popupList = createPopupListControl({\n * // List state\n * getIndex: () => focusedIndex.value,\n * getItems: () => options.value,\n * setIndex: (idx) => { focusedIndex.value = idx; },\n *\n * // Elements\n * getBoundaryElement: () => host.el,\n * getTriggerElement: () => triggerEl,\n * getPanelElement: () => panelEl,\n * isOpen: () => isOpen.value,\n * setOpen: (next, ctx) => { isOpen.value = next; },\n *\n * // Positioning\n * positioner: {\n * reference: () => triggerEl,\n * floating: () => panelEl,\n * update: () => positioner.updatePosition(),\n * },\n *\n * // ARIA\n * ariaSync: { role: 'listbox' },\n * listId: `${selectId}-listbox`,\n * });\n *\n * // Keyboard events\n * function handleKeydown(e: KeyboardEvent) {\n * if (popupList.handleListKeydown(e)) return; // Consumed by navigation\n * // Custom keydown logic\n * }\n * ```\n */\nexport const createPopupListControl = <T>(options: PopupListControlOptions<T>): PopupListControl<T> => {\n // Create underlying list control\n const list = createListControl<T>({\n disabled: () => !options.isOpen(),\n getIndex: options.getIndex,\n getItems: options.getItems,\n isItemDisabled: options.isItemDisabled,\n keys: options.keyboardMapping,\n loop: options.loop ?? true,\n onNavigate: (action, index, event) => {\n if (index >= 0) {\n options.onNavigate?.(action, index, event);\n }\n },\n setIndex: options.setIndex,\n });\n\n // Create underlying overlay control\n const overlay = createOverlayControl({\n getBoundaryElement: options.getBoundaryElement,\n getPanelElement: options.getPanelElement,\n getTriggerElement: options.getTriggerElement,\n isDisabled: options.isDisabled,\n isOpen: options.isOpen,\n onClose: options.onClose,\n onOpen: options.onOpen,\n positioner: options.positioner,\n restoreFocus: options.restoreFocus,\n setOpen: options.setOpen,\n });\n\n // ─────────────────────────────────────────────────────────────────────────\n // ARIA Syncing\n // ─────────────────────────────────────────────────────────────────────────\n\n const getRoleConfig = (role: PopupListRole = 'listbox') => {\n if (role === 'menu') {\n return {\n defaultTriggerAttributes: {\n controls: () => options.listId,\n haspopup: 'menu' as const,\n },\n defaultTriggerRole: 'button' as const,\n };\n }\n\n return {\n defaultTriggerAttributes: {\n controls: () => options.listId,\n haspopup: 'listbox' as const,\n },\n defaultTriggerRole: 'combobox' as const,\n };\n };\n\n const syncTriggerAria = (trigger: Element, config?: PopupListAriaSyncConfig): (() => void) => {\n const role = config?.role ?? options.ariaSync?.role ?? 'listbox';\n const roleConfig = getRoleConfig(role);\n\n return syncAria(trigger, {\n ...roleConfig.defaultTriggerAttributes,\n ...config?.additional,\n ...options.ariaSync?.additional,\n disabled: () => options.isDisabled?.() ?? false,\n expanded: () => (options.isOpen() ? 'true' : 'false'),\n role: roleConfig.defaultTriggerRole,\n });\n };\n\n if (options.triggerRef) {\n watch(\n () => options.triggerRef?.value,\n (trigger) => {\n if (!trigger) return;\n\n return syncTriggerAria(trigger, options.ariaSync);\n },\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Public API\n // ─────────────────────────────────────────────────────────────────────────\n\n return {\n close: (reason) => overlay.close({ reason: reason ?? 'programmatic' }),\n first: list.first,\n getActiveItem: list.getActiveItem,\n handleListKeydown: list.handleKeydown,\n last: list.last,\n next: list.next,\n open: (reason) => overlay.open({ reason: reason ?? 'programmatic' }),\n prev: list.prev,\n reset: list.reset,\n set: list.set,\n toggle: overlay.toggle,\n };\n};\n"],"mappings":"kMAiNA,IAAa,EAA6B,GAA6D,CAErG,IAAM,EAAO,EAAqB,CAChC,aAAgB,CAAC,EAAQ,OAAO,EAChC,SAAU,EAAQ,SAClB,SAAU,EAAQ,SAClB,eAAgB,EAAQ,eACxB,KAAM,EAAQ,gBACd,KAAM,EAAQ,MAAQ,GACtB,YAAa,EAAQ,EAAO,IAAU,CAChC,GAAS,GACX,EAAQ,aAAa,EAAQ,EAAO,CAAK,CAE7C,EACA,SAAU,EAAQ,QACpB,CAAC,EAGK,EAAU,EAAqB,CACnC,mBAAoB,EAAQ,mBAC5B,gBAAiB,EAAQ,gBACzB,kBAAmB,EAAQ,kBAC3B,WAAY,EAAQ,WACpB,OAAQ,EAAQ,OAChB,QAAS,EAAQ,QACjB,OAAQ,EAAQ,OAChB,WAAY,EAAQ,WACpB,aAAc,EAAQ,aACtB,QAAS,EAAQ,OACnB,CAAC,EAMK,GAAiB,EAAsB,YACvC,IAAS,OACJ,CACL,yBAA0B,CACxB,aAAgB,EAAQ,OACxB,SAAU,MACZ,EACA,mBAAoB,QACtB,EAGK,CACL,yBAA0B,CACxB,aAAgB,EAAQ,OACxB,SAAU,SACZ,EACA,mBAAoB,UACtB,EAGI,GAAmB,EAAkB,IAAmD,CAE5F,IAAM,EAAa,EADN,GAAQ,MAAQ,EAAQ,UAAU,MAAQ,SAClB,EAErC,OAAO,EAAS,EAAS,CACvB,GAAG,EAAW,yBACd,GAAG,GAAQ,WACX,GAAG,EAAQ,UAAU,WACrB,aAAgB,EAAQ,aAAa,GAAK,GAC1C,aAAiB,EAAQ,OAAO,EAAI,OAAS,QAC7C,KAAM,EAAW,kBACnB,CAAC,CACH,EAiBA,OAfI,EAAQ,YACV,MACQ,EAAQ,YAAY,MACzB,GAAY,CACN,KAEL,OAAO,EAAgB,EAAS,EAAQ,QAAQ,CAClD,CACF,EAOK,CACL,MAAQ,GAAW,EAAQ,MAAM,CAAE,OAAQ,GAAU,cAAe,CAAC,EACrE,MAAO,EAAK,MACZ,cAAe,EAAK,cACpB,kBAAmB,EAAK,cACxB,KAAM,EAAK,KACX,KAAM,EAAK,KACX,KAAO,GAAW,EAAQ,KAAK,CAAE,OAAQ,GAAU,cAAe,CAAC,EACnE,KAAM,EAAK,KACX,MAAO,EAAK,MACZ,IAAK,EAAK,IACV,OAAQ,EAAQ,MAClB,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./internal/keyboard-utils.cjs`);var t=t=>{let n=()=>!!t.disabled?.(),r=t.keys??[`Enter`,` `],i=Object.fromEntries(r.map(e=>[e,e=>t.onPress(e,`keyboard`)]));return{handleClick:e=>n()?!1:(t.onPress(e,`pointer`),!0),handleKeydown:t=>e.dispatchKeyboardAction(t,{disabled:n,keymap:i})}};exports.createPressControl=t;
|
|
2
|
+
//# sourceMappingURL=press-control.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"press-control.cjs","names":[],"sources":["../../src/controls/press-control.ts"],"sourcesContent":["import { dispatchKeyboardAction } from './internal/keyboard-utils';\n\nexport type PressTrigger = 'keyboard' | 'pointer';\n\nexport type PressControlOptions = {\n disabled?: () => boolean;\n keys?: string[];\n onPress: (originalEvent: KeyboardEvent | MouseEvent, trigger: PressTrigger) => void;\n};\n\nexport type PressControl = {\n handleClick: (event: MouseEvent) => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n};\n\nexport const createPressControl = (options: PressControlOptions): PressControl => {\n const isDisabled = (): boolean => Boolean(options.disabled?.());\n const keyboardKeys = options.keys ?? ['Enter', ' '];\n const keymap = Object.fromEntries(\n keyboardKeys.map((key) => [key, (keyboardEvent: KeyboardEvent) => options.onPress(keyboardEvent, 'keyboard')]),\n );\n\n const handleClick = (event: MouseEvent): boolean => {\n if (isDisabled()) return false;\n\n options.onPress(event, 'pointer');\n\n return true;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n return dispatchKeyboardAction(event, {\n disabled: isDisabled,\n keymap,\n });\n };\n\n return {\n handleClick,\n handleKeydown,\n };\n};\n"],"mappings":"iDAeA,IAAa,EAAsB,GAA+C,CAChF,IAAM,MAA4B,EAAQ,EAAQ,WAAW,EACvD,EAAe,EAAQ,MAAQ,CAAC,QAAS,GAAG,EAC5C,EAAS,OAAO,YACpB,EAAa,IAAK,GAAQ,CAAC,EAAM,GAAiC,EAAQ,QAAQ,EAAe,UAAU,CAAC,CAAC,CAC/G,EAiBA,MAAO,CACL,YAhBmB,GACf,EAAW,EAAU,IAEzB,EAAQ,QAAQ,EAAO,SAAS,EAEzB,IAYP,cATqB,GACd,EAAA,uBAAuB,EAAO,CACnC,SAAU,EACV,QACF,CAAC,CAMH,CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type PressTrigger = 'keyboard' | 'pointer';
|
|
2
|
+
export type PressControlOptions = {
|
|
3
|
+
disabled?: () => boolean;
|
|
4
|
+
keys?: string[];
|
|
5
|
+
onPress: (originalEvent: KeyboardEvent | MouseEvent, trigger: PressTrigger) => void;
|
|
6
|
+
};
|
|
7
|
+
export type PressControl = {
|
|
8
|
+
handleClick: (event: MouseEvent) => boolean;
|
|
9
|
+
handleKeydown: (event: KeyboardEvent) => boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const createPressControl: (options: PressControlOptions) => PressControl;
|
|
12
|
+
//# sourceMappingURL=press-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"press-control.d.ts","sourceRoot":"","sources":["../../src/controls/press-control.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CACrF,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,mBAAmB,KAAG,YA0BjE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{dispatchKeyboardAction as e}from"./internal/keyboard-utils.js";var t=t=>{let n=()=>!!t.disabled?.(),r=t.keys??[`Enter`,` `],i=Object.fromEntries(r.map(e=>[e,e=>t.onPress(e,`keyboard`)]));return{handleClick:e=>n()?!1:(t.onPress(e,`pointer`),!0),handleKeydown:t=>e(t,{disabled:n,keymap:i})}};export{t as createPressControl};
|
|
2
|
+
//# sourceMappingURL=press-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"press-control.js","names":[],"sources":["../../src/controls/press-control.ts"],"sourcesContent":["import { dispatchKeyboardAction } from './internal/keyboard-utils';\n\nexport type PressTrigger = 'keyboard' | 'pointer';\n\nexport type PressControlOptions = {\n disabled?: () => boolean;\n keys?: string[];\n onPress: (originalEvent: KeyboardEvent | MouseEvent, trigger: PressTrigger) => void;\n};\n\nexport type PressControl = {\n handleClick: (event: MouseEvent) => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n};\n\nexport const createPressControl = (options: PressControlOptions): PressControl => {\n const isDisabled = (): boolean => Boolean(options.disabled?.());\n const keyboardKeys = options.keys ?? ['Enter', ' '];\n const keymap = Object.fromEntries(\n keyboardKeys.map((key) => [key, (keyboardEvent: KeyboardEvent) => options.onPress(keyboardEvent, 'keyboard')]),\n );\n\n const handleClick = (event: MouseEvent): boolean => {\n if (isDisabled()) return false;\n\n options.onPress(event, 'pointer');\n\n return true;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n return dispatchKeyboardAction(event, {\n disabled: isDisabled,\n keymap,\n });\n };\n\n return {\n handleClick,\n handleKeydown,\n };\n};\n"],"mappings":"sEAeA,IAAa,EAAsB,GAA+C,CAChF,IAAM,MAA4B,EAAQ,EAAQ,WAAW,EACvD,EAAe,EAAQ,MAAQ,CAAC,QAAS,GAAG,EAC5C,EAAS,OAAO,YACpB,EAAa,IAAK,GAAQ,CAAC,EAAM,GAAiC,EAAQ,QAAQ,EAAe,UAAU,CAAC,CAAC,CAC/G,EAiBA,MAAO,CACL,YAhBmB,GACf,EAAW,EAAU,IAEzB,EAAQ,QAAQ,EAAO,SAAS,EAEzB,IAYP,cATqB,GACd,EAAuB,EAAO,CACnC,SAAU,EACV,QACF,CAAC,CAMH,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./internal/number-utils.cjs`);var t=t=>{let n=()=>e.toFiniteNumberOr(t.min?.(),0),r=()=>e.toFiniteNumberOr(t.max?.(),100),i=()=>e.toPositiveStep(t.step?.(),1),a=t=>{let i=n(),a=r();return e.clampNumber(e.normalizeFinite(t,i),i,a)},o=t=>{let r=e.normalizeFinite(t,n());return a(Math.round(r/i())*i())};return{clamp:a,fromClientX:(e,t)=>{if(t.width<=0)return o(n());let i=Math.max(0,Math.min(1,(e-t.left)/t.width)),a=n();return o(a+i*(r()-a))},max:r,min:n,nextFromKey:(t,o)=>{let s=e.normalizeFinite(o,n());return t===`ArrowRight`||t===`ArrowUp`?a(s+i()):t===`ArrowLeft`||t===`ArrowDown`?a(s-i()):t===`Home`?n():t===`End`?r():null},snap:o,toPercent:t=>{let i=n(),a=r(),o=e.normalizeFinite(t,i);return a<=i?0:(o-i)/(a-i)*100}}};exports.createSliderControl=t;
|
|
2
|
+
//# sourceMappingURL=slider-control.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-control.cjs","names":[],"sources":["../../src/controls/slider-control.ts"],"sourcesContent":["import { clampNumber, normalizeFinite, toFiniteNumberOr, toPositiveStep } from './internal/number-utils';\n\nexport type SliderControlOptions = {\n max?: () => number | string | undefined;\n min?: () => number | string | undefined;\n step?: () => number | string | undefined;\n};\n\nexport type SliderControl = {\n clamp: (value: number) => number;\n fromClientX: (clientX: number, rect: { left: number; width: number }) => number;\n max: () => number;\n min: () => number;\n nextFromKey: (key: string, current: number) => number | null;\n snap: (value: number) => number;\n toPercent: (value: number) => number;\n};\n\nexport const createSliderControl = (options: SliderControlOptions): SliderControl => {\n const min = (): number => toFiniteNumberOr(options.min?.(), 0);\n const max = (): number => toFiniteNumberOr(options.max?.(), 100);\n const step = (): number => toPositiveStep(options.step?.(), 1);\n\n const clamp = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = normalizeFinite(value, minValue);\n\n return clampNumber(normalized, minValue, maxValue);\n };\n\n const snap = (value: number): number => {\n const minValue = min();\n const normalized = normalizeFinite(value, minValue);\n\n return clamp(Math.round(normalized / step()) * step());\n };\n\n const toPercent = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = normalizeFinite(value, minValue);\n\n if (maxValue <= minValue) return 0;\n\n return ((normalized - minValue) / (maxValue - minValue)) * 100;\n };\n\n const fromClientX = (clientX: number, rect: { left: number; width: number }): number => {\n if (rect.width <= 0) return snap(min());\n\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const minValue = min();\n const maxValue = max();\n\n return snap(minValue + pct * (maxValue - minValue));\n };\n\n const nextFromKey = (key: string, current: number): number | null => {\n const normalized = normalizeFinite(current, min());\n\n if (key === 'ArrowRight' || key === 'ArrowUp') return clamp(normalized + step());\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return clamp(normalized - step());\n\n if (key === 'Home') return min();\n\n if (key === 'End') return max();\n\n return null;\n };\n\n return {\n clamp,\n fromClientX,\n max,\n min,\n nextFromKey,\n snap,\n toPercent,\n };\n};\n"],"mappings":"+CAkBA,IAAa,EAAuB,GAAiD,CACnF,IAAM,MAAoB,EAAA,iBAAiB,EAAQ,MAAM,EAAG,CAAC,EACvD,MAAoB,EAAA,iBAAiB,EAAQ,MAAM,EAAG,GAAG,EACzD,MAAqB,EAAA,eAAe,EAAQ,OAAO,EAAG,CAAC,EAEvD,EAAS,GAA0B,CACvC,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EAGrB,OAAO,EAAA,YAFY,EAAA,gBAAgB,EAAO,CAEvB,EAAY,EAAU,CAAQ,CACnD,EAEM,EAAQ,GAA0B,CAEtC,IAAM,EAAa,EAAA,gBAAgB,EADlB,EACyB,CAAQ,EAElD,OAAO,EAAM,KAAK,MAAM,EAAa,EAAK,CAAC,EAAI,EAAK,CAAC,CACvD,EAoCA,MAAO,CACL,QACA,aA1BmB,EAAiB,IAAkD,CACtF,GAAI,EAAK,OAAS,EAAG,OAAO,EAAK,EAAI,CAAC,EAEtC,IAAM,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,EAAU,EAAK,MAAQ,EAAK,KAAK,CAAC,EACjE,EAAW,EAAI,EAGrB,OAAO,EAAK,EAAW,GAFN,EAEa,EAAW,EAAS,CACpD,EAmBE,MACA,MACA,aAnBmB,EAAa,IAAmC,CACnE,IAAM,EAAa,EAAA,gBAAgB,EAAS,EAAI,CAAC,EAUjD,OARI,IAAQ,cAAgB,IAAQ,UAAkB,EAAM,EAAa,EAAK,CAAC,EAE3E,IAAQ,aAAe,IAAQ,YAAoB,EAAM,EAAa,EAAK,CAAC,EAE5E,IAAQ,OAAe,EAAI,EAE3B,IAAQ,MAAc,EAAI,EAEvB,IACT,EAQE,OACA,UAzCiB,GAA0B,CAC3C,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EACf,EAAa,EAAA,gBAAgB,EAAO,CAAQ,EAIlD,OAFI,GAAY,EAAiB,GAExB,EAAa,IAAa,EAAW,GAAa,GAC7D,CAkCA,CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type SliderControlOptions = {
|
|
2
|
+
max?: () => number | string | undefined;
|
|
3
|
+
min?: () => number | string | undefined;
|
|
4
|
+
step?: () => number | string | undefined;
|
|
5
|
+
};
|
|
6
|
+
export type SliderControl = {
|
|
7
|
+
clamp: (value: number) => number;
|
|
8
|
+
fromClientX: (clientX: number, rect: {
|
|
9
|
+
left: number;
|
|
10
|
+
width: number;
|
|
11
|
+
}) => number;
|
|
12
|
+
max: () => number;
|
|
13
|
+
min: () => number;
|
|
14
|
+
nextFromKey: (key: string, current: number) => number | null;
|
|
15
|
+
snap: (value: number) => number;
|
|
16
|
+
toPercent: (value: number) => number;
|
|
17
|
+
};
|
|
18
|
+
export declare const createSliderControl: (options: SliderControlOptions) => SliderControl;
|
|
19
|
+
//# sourceMappingURL=slider-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-control.d.ts","sourceRoot":"","sources":["../../src/controls/slider-control.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAChF,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,SAAS,oBAAoB,KAAG,aA+DnE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{clampNumber as e,normalizeFinite as t,toFiniteNumberOr as n,toPositiveStep as r}from"./internal/number-utils.js";var i=i=>{let a=()=>n(i.min?.(),0),o=()=>n(i.max?.(),100),s=()=>r(i.step?.(),1),c=n=>{let r=a(),i=o();return e(t(n,r),r,i)},l=e=>{let n=t(e,a());return c(Math.round(n/s())*s())};return{clamp:c,fromClientX:(e,t)=>{if(t.width<=0)return l(a());let n=Math.max(0,Math.min(1,(e-t.left)/t.width)),r=a();return l(r+n*(o()-r))},max:o,min:a,nextFromKey:(e,n)=>{let r=t(n,a());return e===`ArrowRight`||e===`ArrowUp`?c(r+s()):e===`ArrowLeft`||e===`ArrowDown`?c(r-s()):e===`Home`?a():e===`End`?o():null},snap:l,toPercent:e=>{let n=a(),r=o(),i=t(e,n);return r<=n?0:(i-n)/(r-n)*100}}};export{i as createSliderControl};
|
|
2
|
+
//# sourceMappingURL=slider-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-control.js","names":[],"sources":["../../src/controls/slider-control.ts"],"sourcesContent":["import { clampNumber, normalizeFinite, toFiniteNumberOr, toPositiveStep } from './internal/number-utils';\n\nexport type SliderControlOptions = {\n max?: () => number | string | undefined;\n min?: () => number | string | undefined;\n step?: () => number | string | undefined;\n};\n\nexport type SliderControl = {\n clamp: (value: number) => number;\n fromClientX: (clientX: number, rect: { left: number; width: number }) => number;\n max: () => number;\n min: () => number;\n nextFromKey: (key: string, current: number) => number | null;\n snap: (value: number) => number;\n toPercent: (value: number) => number;\n};\n\nexport const createSliderControl = (options: SliderControlOptions): SliderControl => {\n const min = (): number => toFiniteNumberOr(options.min?.(), 0);\n const max = (): number => toFiniteNumberOr(options.max?.(), 100);\n const step = (): number => toPositiveStep(options.step?.(), 1);\n\n const clamp = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = normalizeFinite(value, minValue);\n\n return clampNumber(normalized, minValue, maxValue);\n };\n\n const snap = (value: number): number => {\n const minValue = min();\n const normalized = normalizeFinite(value, minValue);\n\n return clamp(Math.round(normalized / step()) * step());\n };\n\n const toPercent = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = normalizeFinite(value, minValue);\n\n if (maxValue <= minValue) return 0;\n\n return ((normalized - minValue) / (maxValue - minValue)) * 100;\n };\n\n const fromClientX = (clientX: number, rect: { left: number; width: number }): number => {\n if (rect.width <= 0) return snap(min());\n\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const minValue = min();\n const maxValue = max();\n\n return snap(minValue + pct * (maxValue - minValue));\n };\n\n const nextFromKey = (key: string, current: number): number | null => {\n const normalized = normalizeFinite(current, min());\n\n if (key === 'ArrowRight' || key === 'ArrowUp') return clamp(normalized + step());\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return clamp(normalized - step());\n\n if (key === 'Home') return min();\n\n if (key === 'End') return max();\n\n return null;\n };\n\n return {\n clamp,\n fromClientX,\n max,\n min,\n nextFromKey,\n snap,\n toPercent,\n };\n};\n"],"mappings":"wHAkBA,IAAa,EAAuB,GAAiD,CACnF,IAAM,MAAoB,EAAiB,EAAQ,MAAM,EAAG,CAAC,EACvD,MAAoB,EAAiB,EAAQ,MAAM,EAAG,GAAG,EACzD,MAAqB,EAAe,EAAQ,OAAO,EAAG,CAAC,EAEvD,EAAS,GAA0B,CACvC,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EAGrB,OAAO,EAFY,EAAgB,EAAO,CAEvB,EAAY,EAAU,CAAQ,CACnD,EAEM,EAAQ,GAA0B,CAEtC,IAAM,EAAa,EAAgB,EADlB,EACyB,CAAQ,EAElD,OAAO,EAAM,KAAK,MAAM,EAAa,EAAK,CAAC,EAAI,EAAK,CAAC,CACvD,EAoCA,MAAO,CACL,QACA,aA1BmB,EAAiB,IAAkD,CACtF,GAAI,EAAK,OAAS,EAAG,OAAO,EAAK,EAAI,CAAC,EAEtC,IAAM,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,EAAU,EAAK,MAAQ,EAAK,KAAK,CAAC,EACjE,EAAW,EAAI,EAGrB,OAAO,EAAK,EAAW,GAFN,EAEa,EAAW,EAAS,CACpD,EAmBE,MACA,MACA,aAnBmB,EAAa,IAAmC,CACnE,IAAM,EAAa,EAAgB,EAAS,EAAI,CAAC,EAUjD,OARI,IAAQ,cAAgB,IAAQ,UAAkB,EAAM,EAAa,EAAK,CAAC,EAE3E,IAAQ,aAAe,IAAQ,YAAoB,EAAM,EAAa,EAAK,CAAC,EAE5E,IAAQ,OAAe,EAAI,EAE3B,IAAQ,MAAc,EAAI,EAEvB,IACT,EAQE,OACA,UAzCiB,GAA0B,CAC3C,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EACf,EAAa,EAAgB,EAAO,CAAQ,EAIlD,OAFI,GAAY,EAAiB,GAExB,EAAa,IAAa,EAAW,GAAa,GAC7D,CAkCA,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./internal/keyboard-utils.cjs`),t=require(`./internal/number-utils.cjs`);var n=n=>{let r=()=>!!n.disabled?.()||!!n.readonly?.(),i=()=>t.toFiniteNumber(n.min?.()),a=()=>t.toFiniteNumber(n.max?.()),o=e=>t.clampNumber(e,i(),a()),s=()=>t.toPositiveStep(n.step?.(),1),c=()=>{let e=s();return t.toPositiveStep(n.largeStep?.(),e*10)},l=()=>n.parse()??i()??0,u=(e,t)=>{if(e==null){n.commit(null,t);return}n.commit(o(e),t)},d=(e,t)=>{r()||u(l()+e,t)};return{atMax:()=>{let e=n.parse(),t=a();return e!=null&&t!=null&&e>=t},atMin:()=>{let e=n.parse(),t=i();return e!=null&&t!=null&&e<=t},handleKeydown:t=>e.dispatchKeyboardAction(t,{disabled:r,keymap:{ArrowDown:()=>d(-s(),t),ArrowUp:()=>d(s(),t),End:()=>{let e=a();if(e==null)return!1;u(e,t)},Home:()=>{let e=i();if(e==null)return!1;u(e,t)},PageDown:()=>d(-c(),t),PageUp:()=>d(c(),t)},preventDefault:`after`}),incrementBy:d}};exports.createSpinnerControl=n;
|
|
2
|
+
//# sourceMappingURL=spinner-control.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-control.cjs","names":[],"sources":["../../src/controls/spinner-control.ts"],"sourcesContent":["import { dispatchKeyboardAction } from './internal/keyboard-utils';\nimport { clampNumber, toFiniteNumber, toPositiveStep } from './internal/number-utils';\n\nexport type SpinnerControlOptions = {\n commit: (value: number | null, originalEvent?: Event) => void;\n disabled?: () => boolean;\n largeStep?: () => number | string | undefined;\n max?: () => number | string | undefined;\n min?: () => number | string | undefined;\n parse: () => number | null;\n readonly?: () => boolean;\n step?: () => number | string | undefined;\n};\n\nexport type SpinnerControl = {\n atMax: () => boolean;\n atMin: () => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n incrementBy: (delta: number, originalEvent?: Event) => void;\n};\n\nexport const createSpinnerControl = (options: SpinnerControlOptions): SpinnerControl => {\n const isBlocked = (): boolean => Boolean(options.disabled?.()) || Boolean(options.readonly?.());\n\n const min = (): number | undefined => {\n return toFiniteNumber(options.min?.());\n };\n\n const max = (): number | undefined => {\n return toFiniteNumber(options.max?.());\n };\n\n const clamp = (value: number): number => {\n return clampNumber(value, min(), max());\n };\n\n const step = (): number => toPositiveStep(options.step?.(), 1);\n\n const largeStep = (): number => {\n const s = step();\n\n return toPositiveStep(options.largeStep?.(), s * 10);\n };\n\n const currentOrFallback = (): number => {\n const parsed = options.parse();\n\n if (parsed != null) return parsed;\n\n const minValue = min();\n\n if (minValue != null) return minValue;\n\n return 0;\n };\n\n const commit = (value: number | null, originalEvent?: Event): void => {\n if (value == null) {\n options.commit(null, originalEvent);\n\n return;\n }\n\n options.commit(clamp(value), originalEvent);\n };\n\n const incrementBy = (delta: number, originalEvent?: Event): void => {\n if (isBlocked()) return;\n\n commit(currentOrFallback() + delta, originalEvent);\n };\n\n const atMin = (): boolean => {\n const parsed = options.parse();\n const minValue = min();\n\n return parsed != null && minValue != null && parsed <= minValue;\n };\n\n const atMax = (): boolean => {\n const parsed = options.parse();\n const maxValue = max();\n\n return parsed != null && maxValue != null && parsed >= maxValue;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n return dispatchKeyboardAction(event, {\n disabled: isBlocked,\n keymap: {\n ArrowDown: () => incrementBy(-step(), event),\n ArrowUp: () => incrementBy(step(), event),\n End: () => {\n const maxValue = max();\n\n if (maxValue == null) return false;\n\n commit(maxValue, event);\n },\n Home: () => {\n const minValue = min();\n\n if (minValue == null) return false;\n\n commit(minValue, event);\n },\n PageDown: () => incrementBy(-largeStep(), event),\n PageUp: () => incrementBy(largeStep(), event),\n },\n preventDefault: 'after',\n });\n };\n\n return {\n atMax,\n atMin,\n handleKeydown,\n incrementBy,\n };\n};\n"],"mappings":"0FAqBA,IAAa,EAAwB,GAAmD,CACtF,IAAM,MAA2B,EAAQ,EAAQ,WAAW,GAAM,EAAQ,EAAQ,WAAW,EAEvF,MACG,EAAA,eAAe,EAAQ,MAAM,CAAC,EAGjC,MACG,EAAA,eAAe,EAAQ,MAAM,CAAC,EAGjC,EAAS,GACN,EAAA,YAAY,EAAO,EAAI,EAAG,EAAI,CAAC,EAGlC,MAAqB,EAAA,eAAe,EAAQ,OAAO,EAAG,CAAC,EAEvD,MAA0B,CAC9B,IAAM,EAAI,EAAK,EAEf,OAAO,EAAA,eAAe,EAAQ,YAAY,EAAG,EAAI,EAAE,CACrD,EAEM,MACW,EAAQ,MAEnB,GAEa,EAEb,GAEG,EAGH,GAAU,EAAsB,IAAgC,CACpE,GAAI,GAAS,KAAM,CACjB,EAAQ,OAAO,KAAM,CAAa,EAElC,MACF,CAEA,EAAQ,OAAO,EAAM,CAAK,EAAG,CAAa,CAC5C,EAEM,GAAe,EAAe,IAAgC,CAC9D,EAAU,GAEd,EAAO,EAAkB,EAAI,EAAO,CAAa,CACnD,EA2CA,MAAO,CACL,UAnC2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EA+BE,UA3C2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EAuCE,cA9BqB,GACd,EAAA,uBAAuB,EAAO,CACnC,SAAU,EACV,OAAQ,CACN,cAAiB,EAAY,CAAC,EAAK,EAAG,CAAK,EAC3C,YAAe,EAAY,EAAK,EAAG,CAAK,EACxC,QAAW,CACT,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,SAAY,CACV,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,aAAgB,EAAY,CAAC,EAAU,EAAG,CAAK,EAC/C,WAAc,EAAY,EAAU,EAAG,CAAK,CAC9C,EACA,eAAgB,OAClB,CAAC,EAOD,aACF,CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type SpinnerControlOptions = {
|
|
2
|
+
commit: (value: number | null, originalEvent?: Event) => void;
|
|
3
|
+
disabled?: () => boolean;
|
|
4
|
+
largeStep?: () => number | string | undefined;
|
|
5
|
+
max?: () => number | string | undefined;
|
|
6
|
+
min?: () => number | string | undefined;
|
|
7
|
+
parse: () => number | null;
|
|
8
|
+
readonly?: () => boolean;
|
|
9
|
+
step?: () => number | string | undefined;
|
|
10
|
+
};
|
|
11
|
+
export type SpinnerControl = {
|
|
12
|
+
atMax: () => boolean;
|
|
13
|
+
atMin: () => boolean;
|
|
14
|
+
handleKeydown: (event: KeyboardEvent) => boolean;
|
|
15
|
+
incrementBy: (delta: number, originalEvent?: Event) => void;
|
|
16
|
+
};
|
|
17
|
+
export declare const createSpinnerControl: (options: SpinnerControlOptions) => SpinnerControl;
|
|
18
|
+
//# sourceMappingURL=spinner-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-control.d.ts","sourceRoot":"","sources":["../../src/controls/spinner-control.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;IACjD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,SAAS,qBAAqB,KAAG,cAkGrE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{dispatchKeyboardAction as e}from"./internal/keyboard-utils.js";import{clampNumber as t,toFiniteNumber as n,toPositiveStep as r}from"./internal/number-utils.js";var i=i=>{let a=()=>!!i.disabled?.()||!!i.readonly?.(),o=()=>n(i.min?.()),s=()=>n(i.max?.()),c=e=>t(e,o(),s()),l=()=>r(i.step?.(),1),u=()=>{let e=l();return r(i.largeStep?.(),e*10)},d=()=>i.parse()??o()??0,f=(e,t)=>{if(e==null){i.commit(null,t);return}i.commit(c(e),t)},p=(e,t)=>{a()||f(d()+e,t)};return{atMax:()=>{let e=i.parse(),t=s();return e!=null&&t!=null&&e>=t},atMin:()=>{let e=i.parse(),t=o();return e!=null&&t!=null&&e<=t},handleKeydown:t=>e(t,{disabled:a,keymap:{ArrowDown:()=>p(-l(),t),ArrowUp:()=>p(l(),t),End:()=>{let e=s();if(e==null)return!1;f(e,t)},Home:()=>{let e=o();if(e==null)return!1;f(e,t)},PageDown:()=>p(-u(),t),PageUp:()=>p(u(),t)},preventDefault:`after`}),incrementBy:p}};export{i as createSpinnerControl};
|
|
2
|
+
//# sourceMappingURL=spinner-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-control.js","names":[],"sources":["../../src/controls/spinner-control.ts"],"sourcesContent":["import { dispatchKeyboardAction } from './internal/keyboard-utils';\nimport { clampNumber, toFiniteNumber, toPositiveStep } from './internal/number-utils';\n\nexport type SpinnerControlOptions = {\n commit: (value: number | null, originalEvent?: Event) => void;\n disabled?: () => boolean;\n largeStep?: () => number | string | undefined;\n max?: () => number | string | undefined;\n min?: () => number | string | undefined;\n parse: () => number | null;\n readonly?: () => boolean;\n step?: () => number | string | undefined;\n};\n\nexport type SpinnerControl = {\n atMax: () => boolean;\n atMin: () => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n incrementBy: (delta: number, originalEvent?: Event) => void;\n};\n\nexport const createSpinnerControl = (options: SpinnerControlOptions): SpinnerControl => {\n const isBlocked = (): boolean => Boolean(options.disabled?.()) || Boolean(options.readonly?.());\n\n const min = (): number | undefined => {\n return toFiniteNumber(options.min?.());\n };\n\n const max = (): number | undefined => {\n return toFiniteNumber(options.max?.());\n };\n\n const clamp = (value: number): number => {\n return clampNumber(value, min(), max());\n };\n\n const step = (): number => toPositiveStep(options.step?.(), 1);\n\n const largeStep = (): number => {\n const s = step();\n\n return toPositiveStep(options.largeStep?.(), s * 10);\n };\n\n const currentOrFallback = (): number => {\n const parsed = options.parse();\n\n if (parsed != null) return parsed;\n\n const minValue = min();\n\n if (minValue != null) return minValue;\n\n return 0;\n };\n\n const commit = (value: number | null, originalEvent?: Event): void => {\n if (value == null) {\n options.commit(null, originalEvent);\n\n return;\n }\n\n options.commit(clamp(value), originalEvent);\n };\n\n const incrementBy = (delta: number, originalEvent?: Event): void => {\n if (isBlocked()) return;\n\n commit(currentOrFallback() + delta, originalEvent);\n };\n\n const atMin = (): boolean => {\n const parsed = options.parse();\n const minValue = min();\n\n return parsed != null && minValue != null && parsed <= minValue;\n };\n\n const atMax = (): boolean => {\n const parsed = options.parse();\n const maxValue = max();\n\n return parsed != null && maxValue != null && parsed >= maxValue;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n return dispatchKeyboardAction(event, {\n disabled: isBlocked,\n keymap: {\n ArrowDown: () => incrementBy(-step(), event),\n ArrowUp: () => incrementBy(step(), event),\n End: () => {\n const maxValue = max();\n\n if (maxValue == null) return false;\n\n commit(maxValue, event);\n },\n Home: () => {\n const minValue = min();\n\n if (minValue == null) return false;\n\n commit(minValue, event);\n },\n PageDown: () => incrementBy(-largeStep(), event),\n PageUp: () => incrementBy(largeStep(), event),\n },\n preventDefault: 'after',\n });\n };\n\n return {\n atMax,\n atMin,\n handleKeydown,\n incrementBy,\n };\n};\n"],"mappings":"uKAqBA,IAAa,EAAwB,GAAmD,CACtF,IAAM,MAA2B,EAAQ,EAAQ,WAAW,GAAM,EAAQ,EAAQ,WAAW,EAEvF,MACG,EAAe,EAAQ,MAAM,CAAC,EAGjC,MACG,EAAe,EAAQ,MAAM,CAAC,EAGjC,EAAS,GACN,EAAY,EAAO,EAAI,EAAG,EAAI,CAAC,EAGlC,MAAqB,EAAe,EAAQ,OAAO,EAAG,CAAC,EAEvD,MAA0B,CAC9B,IAAM,EAAI,EAAK,EAEf,OAAO,EAAe,EAAQ,YAAY,EAAG,EAAI,EAAE,CACrD,EAEM,MACW,EAAQ,MAEnB,GAEa,EAEb,GAEG,EAGH,GAAU,EAAsB,IAAgC,CACpE,GAAI,GAAS,KAAM,CACjB,EAAQ,OAAO,KAAM,CAAa,EAElC,MACF,CAEA,EAAQ,OAAO,EAAM,CAAK,EAAG,CAAa,CAC5C,EAEM,GAAe,EAAe,IAAgC,CAC9D,EAAU,GAEd,EAAO,EAAkB,EAAI,EAAO,CAAa,CACnD,EA2CA,MAAO,CACL,UAnC2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EA+BE,UA3C2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EAuCE,cA9BqB,GACd,EAAuB,EAAO,CACnC,SAAU,EACV,OAAQ,CACN,cAAiB,EAAY,CAAC,EAAK,EAAG,CAAK,EAC3C,YAAe,EAAY,EAAK,EAAG,CAAK,EACxC,QAAW,CACT,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,SAAY,CACV,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,aAAgB,EAAY,CAAC,EAAU,EAAG,CAAK,EAC/C,WAAc,EAAY,EAAU,EAAG,CAAK,CAC9C,EACA,eAAgB,OAClB,CAAC,EAOD,aACF,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=e=>e.axis?.()??`x`,t=e=>{let t=e.threshold?.()??48;return Number.isFinite(t)&&t>0?t:1},n=(e,t)=>t===`x`?e.clientX:e.clientY,r=e=>e.currentTarget instanceof HTMLElement?e.currentTarget:e.target instanceof HTMLElement?e.target:null,i=i=>{let a=null,o=()=>!!i.disabled?.(),s=()=>{a=null},c=e=>a?.pointerId===e.pointerId,l=e=>{if(!a)return null;let t=n(e,a.axis),r=t-a.start;return{axis:a.axis,current:t,distance:r,event:e,pointerId:a.pointerId,progress:Math.min(Math.abs(r)/a.threshold,1),start:a.start,threshold:a.threshold}};return{handlePointerCancel:e=>{if(!a||!c(e))return!1;let t=l(e);return s(),t&&i.onCancel?.(t),!0},handlePointerDown:s=>{if(a||o())return!1;let c=e(i);a={axis:c,pointerId:s.pointerId,start:n(s,c),threshold:t(i)},(typeof i.captureTarget==`function`?i.captureTarget(s):r(s))?.setPointerCapture?.(s.pointerId);let u=l(s);return u&&i.onStart?.(u),!0},handlePointerMove:e=>{if(!a||!c(e))return!1;let t=l(e);return t?(i.onMove?.(t),i.shouldCommit?.(t)??Math.abs(t.distance)>=t.threshold?(s(),i.onCommit?.(t),!0):!0):!1},handlePointerUp:e=>{if(!a||!c(e))return!1;let t=l(e);return s(),t&&i.onCancel?.(t),!0},isActive:()=>a!=null,reset:s}};exports.createSwipeControl=i;
|
|
2
|
+
//# sourceMappingURL=swipe-control.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swipe-control.cjs","names":[],"sources":["../../src/controls/swipe-control.ts"],"sourcesContent":["export type SwipeAxis = 'x' | 'y';\n\nexport type SwipeControlDetail = {\n axis: SwipeAxis;\n current: number;\n distance: number;\n event: PointerEvent;\n pointerId: number;\n progress: number;\n start: number;\n threshold: number;\n};\n\nexport type SwipeControlOptions = {\n axis?: () => SwipeAxis;\n captureTarget?: (event: PointerEvent) => HTMLElement | null;\n disabled?: () => boolean;\n onCancel?: (detail: SwipeControlDetail) => void;\n onCommit?: (detail: SwipeControlDetail) => void;\n onMove?: (detail: SwipeControlDetail) => void;\n onStart?: (detail: SwipeControlDetail) => void;\n shouldCommit?: (detail: SwipeControlDetail) => boolean;\n threshold?: () => number;\n};\n\nexport type SwipeControl = {\n handlePointerCancel: (event: PointerEvent) => boolean;\n handlePointerDown: (event: PointerEvent) => boolean;\n handlePointerMove: (event: PointerEvent) => boolean;\n handlePointerUp: (event: PointerEvent) => boolean;\n isActive: () => boolean;\n reset: () => void;\n};\n\ntype ActiveSwipe = {\n axis: SwipeAxis;\n pointerId: number;\n start: number;\n threshold: number;\n};\n\nconst resolveAxis = (options: SwipeControlOptions): SwipeAxis => options.axis?.() ?? 'x';\n\nconst resolveThreshold = (options: SwipeControlOptions): number => {\n const threshold = options.threshold?.() ?? 48;\n\n return Number.isFinite(threshold) && threshold > 0 ? threshold : 1;\n};\n\nconst getCoordinate = (event: PointerEvent, axis: SwipeAxis): number => {\n return axis === 'x' ? event.clientX : event.clientY;\n};\n\nconst defaultCaptureTarget = (event: PointerEvent): HTMLElement | null => {\n if (event.currentTarget instanceof HTMLElement) return event.currentTarget;\n\n if (event.target instanceof HTMLElement) return event.target;\n\n return null;\n};\n\nexport const createSwipeControl = (options: SwipeControlOptions): SwipeControl => {\n let active: ActiveSwipe | null = null;\n\n const isDisabled = (): boolean => Boolean(options.disabled?.());\n\n const reset = (): void => {\n active = null;\n };\n\n const matchesPointer = (event: PointerEvent): boolean => {\n return active?.pointerId === event.pointerId;\n };\n\n const createDetail = (event: PointerEvent): SwipeControlDetail | null => {\n if (!active) return null;\n\n const current = getCoordinate(event, active.axis);\n const distance = current - active.start;\n\n return {\n axis: active.axis,\n current,\n distance,\n event,\n pointerId: active.pointerId,\n progress: Math.min(Math.abs(distance) / active.threshold, 1),\n start: active.start,\n threshold: active.threshold,\n };\n };\n\n const handlePointerDown = (event: PointerEvent): boolean => {\n if (active || isDisabled()) return false;\n\n const axis = resolveAxis(options);\n\n active = {\n axis,\n pointerId: event.pointerId,\n start: getCoordinate(event, axis),\n threshold: resolveThreshold(options),\n };\n\n const captureTarget =\n typeof options.captureTarget === 'function' ? options.captureTarget(event) : defaultCaptureTarget(event);\n\n captureTarget?.setPointerCapture?.(event.pointerId);\n\n const detail = createDetail(event);\n\n if (detail) options.onStart?.(detail);\n\n return true;\n };\n\n const handlePointerMove = (event: PointerEvent): boolean => {\n if (!active || !matchesPointer(event)) return false;\n\n const detail = createDetail(event);\n\n if (!detail) return false;\n\n options.onMove?.(detail);\n\n const shouldCommit = options.shouldCommit?.(detail) ?? Math.abs(detail.distance) >= detail.threshold;\n\n if (!shouldCommit) return true;\n\n reset();\n options.onCommit?.(detail);\n\n return true;\n };\n\n const handlePointerUp = (event: PointerEvent): boolean => {\n if (!active || !matchesPointer(event)) return false;\n\n const detail = createDetail(event);\n\n reset();\n\n if (detail) options.onCancel?.(detail);\n\n return true;\n };\n\n const handlePointerCancel = (event: PointerEvent): boolean => {\n if (!active || !matchesPointer(event)) return false;\n\n const detail = createDetail(event);\n\n reset();\n\n if (detail) options.onCancel?.(detail);\n\n return true;\n };\n\n return {\n handlePointerCancel,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n isActive: () => active != null,\n reset,\n };\n};\n"],"mappings":"AAyCA,IAAM,EAAe,GAA4C,EAAQ,OAAO,GAAK,IAE/E,EAAoB,GAAyC,CACjE,IAAM,EAAY,EAAQ,YAAY,GAAK,GAE3C,OAAO,OAAO,SAAS,CAAS,GAAK,EAAY,EAAI,EAAY,CACnE,EAEM,GAAiB,EAAqB,IACnC,IAAS,IAAM,EAAM,QAAU,EAAM,QAGxC,EAAwB,GACxB,EAAM,yBAAyB,YAAoB,EAAM,cAEzD,EAAM,kBAAkB,YAAoB,EAAM,OAE/C,KAGI,EAAsB,GAA+C,CAChF,IAAI,EAA6B,KAE3B,MAA4B,EAAQ,EAAQ,WAAW,EAEvD,MAAoB,CACxB,EAAS,IACX,EAEM,EAAkB,GACf,GAAQ,YAAc,EAAM,UAG/B,EAAgB,GAAmD,CACvE,GAAI,CAAC,EAAQ,OAAO,KAEpB,IAAM,EAAU,EAAc,EAAO,EAAO,IAAI,EAC1C,EAAW,EAAU,EAAO,MAElC,MAAO,CACL,KAAM,EAAO,KACb,UACA,WACA,QACA,UAAW,EAAO,UAClB,SAAU,KAAK,IAAI,KAAK,IAAI,CAAQ,EAAI,EAAO,UAAW,CAAC,EAC3D,MAAO,EAAO,MACd,UAAW,EAAO,SACpB,CACF,EAqEA,MAAO,CACL,oBAb2B,GAAiC,CAC5D,GAAI,CAAC,GAAU,CAAC,EAAe,CAAK,EAAG,MAAO,GAE9C,IAAM,EAAS,EAAa,CAAK,EAMjC,OAJA,EAAM,EAEF,GAAQ,EAAQ,WAAW,CAAM,EAE9B,EACT,EAIE,kBArEyB,GAAiC,CAC1D,GAAI,GAAU,EAAW,EAAG,MAAO,GAEnC,IAAM,EAAO,EAAY,CAAO,EAEhC,EAAS,CACP,OACA,UAAW,EAAM,UACjB,MAAO,EAAc,EAAO,CAAI,EAChC,UAAW,EAAiB,CAAO,CACrC,GAGE,OAAO,EAAQ,eAAkB,WAAa,EAAQ,cAAc,CAAK,EAAI,EAAqB,CAAK,IAE1F,oBAAoB,EAAM,SAAS,EAElD,IAAM,EAAS,EAAa,CAAK,EAIjC,OAFI,GAAQ,EAAQ,UAAU,CAAM,EAE7B,EACT,EAgDE,kBA9CyB,GAAiC,CAC1D,GAAI,CAAC,GAAU,CAAC,EAAe,CAAK,EAAG,MAAO,GAE9C,IAAM,EAAS,EAAa,CAAK,EAajC,OAXK,GAEL,EAAQ,SAAS,CAAM,EAEF,EAAQ,eAAe,CAAM,GAAK,KAAK,IAAI,EAAO,QAAQ,GAAK,EAAO,WAI3F,EAAM,EACN,EAAQ,WAAW,CAAM,EAElB,IALmB,IANN,EAYtB,EA8BE,gBA5BuB,GAAiC,CACxD,GAAI,CAAC,GAAU,CAAC,EAAe,CAAK,EAAG,MAAO,GAE9C,IAAM,EAAS,EAAa,CAAK,EAMjC,OAJA,EAAM,EAEF,GAAQ,EAAQ,WAAW,CAAM,EAE9B,EACT,EAmBE,aAAgB,GAAU,KAC1B,OACF,CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type SwipeAxis = 'x' | 'y';
|
|
2
|
+
export type SwipeControlDetail = {
|
|
3
|
+
axis: SwipeAxis;
|
|
4
|
+
current: number;
|
|
5
|
+
distance: number;
|
|
6
|
+
event: PointerEvent;
|
|
7
|
+
pointerId: number;
|
|
8
|
+
progress: number;
|
|
9
|
+
start: number;
|
|
10
|
+
threshold: number;
|
|
11
|
+
};
|
|
12
|
+
export type SwipeControlOptions = {
|
|
13
|
+
axis?: () => SwipeAxis;
|
|
14
|
+
captureTarget?: (event: PointerEvent) => HTMLElement | null;
|
|
15
|
+
disabled?: () => boolean;
|
|
16
|
+
onCancel?: (detail: SwipeControlDetail) => void;
|
|
17
|
+
onCommit?: (detail: SwipeControlDetail) => void;
|
|
18
|
+
onMove?: (detail: SwipeControlDetail) => void;
|
|
19
|
+
onStart?: (detail: SwipeControlDetail) => void;
|
|
20
|
+
shouldCommit?: (detail: SwipeControlDetail) => boolean;
|
|
21
|
+
threshold?: () => number;
|
|
22
|
+
};
|
|
23
|
+
export type SwipeControl = {
|
|
24
|
+
handlePointerCancel: (event: PointerEvent) => boolean;
|
|
25
|
+
handlePointerDown: (event: PointerEvent) => boolean;
|
|
26
|
+
handlePointerMove: (event: PointerEvent) => boolean;
|
|
27
|
+
handlePointerUp: (event: PointerEvent) => boolean;
|
|
28
|
+
isActive: () => boolean;
|
|
29
|
+
reset: () => void;
|
|
30
|
+
};
|
|
31
|
+
export declare const createSwipeControl: (options: SwipeControlOptions) => SwipeControl;
|
|
32
|
+
//# sourceMappingURL=swipe-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swipe-control.d.ts","sourceRoot":"","sources":["../../src/controls/swipe-control.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AAElC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,WAAW,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IACtD,iBAAiB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IACpD,iBAAiB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IACpD,eAAe,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAClD,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AA6BF,eAAO,MAAM,kBAAkB,GAAI,SAAS,mBAAmB,KAAG,YA0GjE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=e=>e.axis?.()??`x`,t=e=>{let t=e.threshold?.()??48;return Number.isFinite(t)&&t>0?t:1},n=(e,t)=>t===`x`?e.clientX:e.clientY,r=e=>e.currentTarget instanceof HTMLElement?e.currentTarget:e.target instanceof HTMLElement?e.target:null,i=i=>{let a=null,o=()=>!!i.disabled?.(),s=()=>{a=null},c=e=>a?.pointerId===e.pointerId,l=e=>{if(!a)return null;let t=n(e,a.axis),r=t-a.start;return{axis:a.axis,current:t,distance:r,event:e,pointerId:a.pointerId,progress:Math.min(Math.abs(r)/a.threshold,1),start:a.start,threshold:a.threshold}};return{handlePointerCancel:e=>{if(!a||!c(e))return!1;let t=l(e);return s(),t&&i.onCancel?.(t),!0},handlePointerDown:s=>{if(a||o())return!1;let c=e(i);a={axis:c,pointerId:s.pointerId,start:n(s,c),threshold:t(i)},(typeof i.captureTarget==`function`?i.captureTarget(s):r(s))?.setPointerCapture?.(s.pointerId);let u=l(s);return u&&i.onStart?.(u),!0},handlePointerMove:e=>{if(!a||!c(e))return!1;let t=l(e);return t?(i.onMove?.(t),i.shouldCommit?.(t)??Math.abs(t.distance)>=t.threshold?(s(),i.onCommit?.(t),!0):!0):!1},handlePointerUp:e=>{if(!a||!c(e))return!1;let t=l(e);return s(),t&&i.onCancel?.(t),!0},isActive:()=>a!=null,reset:s}};export{i as createSwipeControl};
|
|
2
|
+
//# sourceMappingURL=swipe-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swipe-control.js","names":[],"sources":["../../src/controls/swipe-control.ts"],"sourcesContent":["export type SwipeAxis = 'x' | 'y';\n\nexport type SwipeControlDetail = {\n axis: SwipeAxis;\n current: number;\n distance: number;\n event: PointerEvent;\n pointerId: number;\n progress: number;\n start: number;\n threshold: number;\n};\n\nexport type SwipeControlOptions = {\n axis?: () => SwipeAxis;\n captureTarget?: (event: PointerEvent) => HTMLElement | null;\n disabled?: () => boolean;\n onCancel?: (detail: SwipeControlDetail) => void;\n onCommit?: (detail: SwipeControlDetail) => void;\n onMove?: (detail: SwipeControlDetail) => void;\n onStart?: (detail: SwipeControlDetail) => void;\n shouldCommit?: (detail: SwipeControlDetail) => boolean;\n threshold?: () => number;\n};\n\nexport type SwipeControl = {\n handlePointerCancel: (event: PointerEvent) => boolean;\n handlePointerDown: (event: PointerEvent) => boolean;\n handlePointerMove: (event: PointerEvent) => boolean;\n handlePointerUp: (event: PointerEvent) => boolean;\n isActive: () => boolean;\n reset: () => void;\n};\n\ntype ActiveSwipe = {\n axis: SwipeAxis;\n pointerId: number;\n start: number;\n threshold: number;\n};\n\nconst resolveAxis = (options: SwipeControlOptions): SwipeAxis => options.axis?.() ?? 'x';\n\nconst resolveThreshold = (options: SwipeControlOptions): number => {\n const threshold = options.threshold?.() ?? 48;\n\n return Number.isFinite(threshold) && threshold > 0 ? threshold : 1;\n};\n\nconst getCoordinate = (event: PointerEvent, axis: SwipeAxis): number => {\n return axis === 'x' ? event.clientX : event.clientY;\n};\n\nconst defaultCaptureTarget = (event: PointerEvent): HTMLElement | null => {\n if (event.currentTarget instanceof HTMLElement) return event.currentTarget;\n\n if (event.target instanceof HTMLElement) return event.target;\n\n return null;\n};\n\nexport const createSwipeControl = (options: SwipeControlOptions): SwipeControl => {\n let active: ActiveSwipe | null = null;\n\n const isDisabled = (): boolean => Boolean(options.disabled?.());\n\n const reset = (): void => {\n active = null;\n };\n\n const matchesPointer = (event: PointerEvent): boolean => {\n return active?.pointerId === event.pointerId;\n };\n\n const createDetail = (event: PointerEvent): SwipeControlDetail | null => {\n if (!active) return null;\n\n const current = getCoordinate(event, active.axis);\n const distance = current - active.start;\n\n return {\n axis: active.axis,\n current,\n distance,\n event,\n pointerId: active.pointerId,\n progress: Math.min(Math.abs(distance) / active.threshold, 1),\n start: active.start,\n threshold: active.threshold,\n };\n };\n\n const handlePointerDown = (event: PointerEvent): boolean => {\n if (active || isDisabled()) return false;\n\n const axis = resolveAxis(options);\n\n active = {\n axis,\n pointerId: event.pointerId,\n start: getCoordinate(event, axis),\n threshold: resolveThreshold(options),\n };\n\n const captureTarget =\n typeof options.captureTarget === 'function' ? options.captureTarget(event) : defaultCaptureTarget(event);\n\n captureTarget?.setPointerCapture?.(event.pointerId);\n\n const detail = createDetail(event);\n\n if (detail) options.onStart?.(detail);\n\n return true;\n };\n\n const handlePointerMove = (event: PointerEvent): boolean => {\n if (!active || !matchesPointer(event)) return false;\n\n const detail = createDetail(event);\n\n if (!detail) return false;\n\n options.onMove?.(detail);\n\n const shouldCommit = options.shouldCommit?.(detail) ?? Math.abs(detail.distance) >= detail.threshold;\n\n if (!shouldCommit) return true;\n\n reset();\n options.onCommit?.(detail);\n\n return true;\n };\n\n const handlePointerUp = (event: PointerEvent): boolean => {\n if (!active || !matchesPointer(event)) return false;\n\n const detail = createDetail(event);\n\n reset();\n\n if (detail) options.onCancel?.(detail);\n\n return true;\n };\n\n const handlePointerCancel = (event: PointerEvent): boolean => {\n if (!active || !matchesPointer(event)) return false;\n\n const detail = createDetail(event);\n\n reset();\n\n if (detail) options.onCancel?.(detail);\n\n return true;\n };\n\n return {\n handlePointerCancel,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n isActive: () => active != null,\n reset,\n };\n};\n"],"mappings":"AAyCA,IAAM,EAAe,GAA4C,EAAQ,OAAO,GAAK,IAE/E,EAAoB,GAAyC,CACjE,IAAM,EAAY,EAAQ,YAAY,GAAK,GAE3C,OAAO,OAAO,SAAS,CAAS,GAAK,EAAY,EAAI,EAAY,CACnE,EAEM,GAAiB,EAAqB,IACnC,IAAS,IAAM,EAAM,QAAU,EAAM,QAGxC,EAAwB,GACxB,EAAM,yBAAyB,YAAoB,EAAM,cAEzD,EAAM,kBAAkB,YAAoB,EAAM,OAE/C,KAGI,EAAsB,GAA+C,CAChF,IAAI,EAA6B,KAE3B,MAA4B,EAAQ,EAAQ,WAAW,EAEvD,MAAoB,CACxB,EAAS,IACX,EAEM,EAAkB,GACf,GAAQ,YAAc,EAAM,UAG/B,EAAgB,GAAmD,CACvE,GAAI,CAAC,EAAQ,OAAO,KAEpB,IAAM,EAAU,EAAc,EAAO,EAAO,IAAI,EAC1C,EAAW,EAAU,EAAO,MAElC,MAAO,CACL,KAAM,EAAO,KACb,UACA,WACA,QACA,UAAW,EAAO,UAClB,SAAU,KAAK,IAAI,KAAK,IAAI,CAAQ,EAAI,EAAO,UAAW,CAAC,EAC3D,MAAO,EAAO,MACd,UAAW,EAAO,SACpB,CACF,EAqEA,MAAO,CACL,oBAb2B,GAAiC,CAC5D,GAAI,CAAC,GAAU,CAAC,EAAe,CAAK,EAAG,MAAO,GAE9C,IAAM,EAAS,EAAa,CAAK,EAMjC,OAJA,EAAM,EAEF,GAAQ,EAAQ,WAAW,CAAM,EAE9B,EACT,EAIE,kBArEyB,GAAiC,CAC1D,GAAI,GAAU,EAAW,EAAG,MAAO,GAEnC,IAAM,EAAO,EAAY,CAAO,EAEhC,EAAS,CACP,OACA,UAAW,EAAM,UACjB,MAAO,EAAc,EAAO,CAAI,EAChC,UAAW,EAAiB,CAAO,CACrC,GAGE,OAAO,EAAQ,eAAkB,WAAa,EAAQ,cAAc,CAAK,EAAI,EAAqB,CAAK,IAE1F,oBAAoB,EAAM,SAAS,EAElD,IAAM,EAAS,EAAa,CAAK,EAIjC,OAFI,GAAQ,EAAQ,UAAU,CAAM,EAE7B,EACT,EAgDE,kBA9CyB,GAAiC,CAC1D,GAAI,CAAC,GAAU,CAAC,EAAe,CAAK,EAAG,MAAO,GAE9C,IAAM,EAAS,EAAa,CAAK,EAajC,OAXK,GAEL,EAAQ,SAAS,CAAM,EAEF,EAAQ,eAAe,CAAM,GAAK,KAAK,IAAI,EAAO,QAAQ,GAAK,EAAO,WAI3F,EAAM,EACN,EAAQ,WAAW,CAAM,EAElB,IALmB,IANN,EAYtB,EA8BE,gBA5BuB,GAAiC,CACxD,GAAI,CAAC,GAAU,CAAC,EAAe,CAAK,EAAG,MAAO,GAE9C,IAAM,EAAS,EAAa,CAAK,EAMjC,OAJA,EAAM,EAEF,GAAQ,EAAQ,WAAW,CAAM,EAE9B,EACT,EAmBE,aAAgB,GAAU,KAC1B,OACF,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./field-control.cjs`);let t=require(`@vielzeug/stateit`);var n=n=>{let r=(0,t.signal)(``);(0,t.watch)(n.value,e=>{r.value=String(e??``)},{immediate:!0});let{base:i,triggerValidation:a}=e.createFieldControlBase(n,{value:r}),o=e.createAssistiveState({error:n.error,helper:n.helper,maxLength:n.maxLength,value:r}),s=e=>{e?.preventDefault?.(),r.value=``,n.onInput?.(e??new Event(`input`),``),n.onChange?.(e??new Event(`change`),``),a(`change`),n.elementRef?.value?.focus()};return n.elementRef&&(0,t.watch)(()=>n.elementRef?.value,t=>{if(t)return e.mountTextFieldLifecycle({element:t,onBlur:n.onBlur,onChange:(e,t)=>{r.value=t,n.onChange?.(e,t)},onInput:(e,t)=>{r.value=t,n.onInputExtra?.(e),n.onInput?.(e,t)},triggerValidation:a})}),{assistive:o,...i,clear:s,triggerValidation:a,value:r}};exports.createTextField=n;
|
|
2
|
+
//# sourceMappingURL=text-field-control.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field-control.cjs","names":[],"sources":["../../src/controls/text-field-control.ts"],"sourcesContent":["import { signal, watch } from '@vielzeug/stateit';\n\nimport {\n createAssistiveState,\n createFieldControlBase,\n mountTextFieldLifecycle,\n type TextFieldHandle,\n type TextFieldOptions,\n} from './field-control';\n\nexport const createTextField = (options: TextFieldOptions): TextFieldHandle => {\n const value = signal('');\n\n watch(\n options.value,\n (next) => {\n value.value = String(next ?? '');\n },\n { immediate: true },\n );\n\n const { base, triggerValidation } = createFieldControlBase(options, { value });\n\n const assistive = createAssistiveState({\n error: options.error,\n helper: options.helper,\n maxLength: options.maxLength,\n value,\n });\n\n const clear = (event?: Event): void => {\n event?.preventDefault?.();\n\n value.value = '';\n options.onInput?.(event ?? new Event('input'), '');\n options.onChange?.(event ?? new Event('change'), '');\n triggerValidation('change');\n options.elementRef?.value?.focus();\n };\n\n if (options.elementRef) {\n watch(\n () => options.elementRef?.value,\n (element) => {\n if (!element) return;\n\n return mountTextFieldLifecycle({\n element,\n onBlur: options.onBlur,\n onChange: (event, nextValue) => {\n value.value = nextValue;\n options.onChange?.(event, nextValue);\n },\n onInput: (event, nextValue) => {\n value.value = nextValue;\n options.onInputExtra?.(event);\n options.onInput?.(event, nextValue);\n },\n triggerValidation,\n });\n },\n );\n }\n\n return {\n assistive,\n ...base,\n clear,\n triggerValidation,\n value,\n };\n};\n"],"mappings":"0EAUA,IAAa,EAAmB,GAA+C,CAC7E,IAAM,GAAA,EAAA,EAAA,QAAe,EAAE,GAEvB,EAAA,EAAA,OACE,EAAQ,MACP,GAAS,CACR,EAAM,MAAQ,OAAO,GAAQ,EAAE,CACjC,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,GAAM,CAAE,OAAM,qBAAsB,EAAA,uBAAuB,EAAS,CAAE,OAAM,CAAC,EAEvE,EAAY,EAAA,qBAAqB,CACrC,MAAO,EAAQ,MACf,OAAQ,EAAQ,OAChB,UAAW,EAAQ,UACnB,OACF,CAAC,EAEK,EAAS,GAAwB,CACrC,GAAO,iBAAiB,EAExB,EAAM,MAAQ,GACd,EAAQ,UAAU,GAAS,IAAI,MAAM,OAAO,EAAG,EAAE,EACjD,EAAQ,WAAW,GAAS,IAAI,MAAM,QAAQ,EAAG,EAAE,EACnD,EAAkB,QAAQ,EAC1B,EAAQ,YAAY,OAAO,MAAM,CACnC,EA0BA,OAxBI,EAAQ,aACV,EAAA,EAAA,WACQ,EAAQ,YAAY,MACzB,GAAY,CACN,KAEL,OAAO,EAAA,wBAAwB,CAC7B,UACA,OAAQ,EAAQ,OAChB,UAAW,EAAO,IAAc,CAC9B,EAAM,MAAQ,EACd,EAAQ,WAAW,EAAO,CAAS,CACrC,EACA,SAAU,EAAO,IAAc,CAC7B,EAAM,MAAQ,EACd,EAAQ,eAAe,CAAK,EAC5B,EAAQ,UAAU,EAAO,CAAS,CACpC,EACA,mBACF,CAAC,CACH,CACF,EAGK,CACL,YACA,GAAG,EACH,QACA,oBACA,OACF,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field-control.d.ts","sourceRoot":"","sources":["../../src/controls/text-field-control.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,eA6D3D,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createAssistiveState as e,createFieldControlBase as t,mountTextFieldLifecycle as n}from"./field-control.js";import{signal as r,watch as i}from"@vielzeug/stateit";var a=a=>{let o=r(``);i(a.value,e=>{o.value=String(e??``)},{immediate:!0});let{base:s,triggerValidation:c}=t(a,{value:o}),l=e({error:a.error,helper:a.helper,maxLength:a.maxLength,value:o}),u=e=>{e?.preventDefault?.(),o.value=``,a.onInput?.(e??new Event(`input`),``),a.onChange?.(e??new Event(`change`),``),c(`change`),a.elementRef?.value?.focus()};return a.elementRef&&i(()=>a.elementRef?.value,e=>{if(e)return n({element:e,onBlur:a.onBlur,onChange:(e,t)=>{o.value=t,a.onChange?.(e,t)},onInput:(e,t)=>{o.value=t,a.onInputExtra?.(e),a.onInput?.(e,t)},triggerValidation:c})}),{assistive:l,...s,clear:u,triggerValidation:c,value:o}};export{a as createTextField};
|
|
2
|
+
//# sourceMappingURL=text-field-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field-control.js","names":[],"sources":["../../src/controls/text-field-control.ts"],"sourcesContent":["import { signal, watch } from '@vielzeug/stateit';\n\nimport {\n createAssistiveState,\n createFieldControlBase,\n mountTextFieldLifecycle,\n type TextFieldHandle,\n type TextFieldOptions,\n} from './field-control';\n\nexport const createTextField = (options: TextFieldOptions): TextFieldHandle => {\n const value = signal('');\n\n watch(\n options.value,\n (next) => {\n value.value = String(next ?? '');\n },\n { immediate: true },\n );\n\n const { base, triggerValidation } = createFieldControlBase(options, { value });\n\n const assistive = createAssistiveState({\n error: options.error,\n helper: options.helper,\n maxLength: options.maxLength,\n value,\n });\n\n const clear = (event?: Event): void => {\n event?.preventDefault?.();\n\n value.value = '';\n options.onInput?.(event ?? new Event('input'), '');\n options.onChange?.(event ?? new Event('change'), '');\n triggerValidation('change');\n options.elementRef?.value?.focus();\n };\n\n if (options.elementRef) {\n watch(\n () => options.elementRef?.value,\n (element) => {\n if (!element) return;\n\n return mountTextFieldLifecycle({\n element,\n onBlur: options.onBlur,\n onChange: (event, nextValue) => {\n value.value = nextValue;\n options.onChange?.(event, nextValue);\n },\n onInput: (event, nextValue) => {\n value.value = nextValue;\n options.onInputExtra?.(event);\n options.onInput?.(event, nextValue);\n },\n triggerValidation,\n });\n },\n );\n }\n\n return {\n assistive,\n ...base,\n clear,\n triggerValidation,\n value,\n };\n};\n"],"mappings":"yKAUA,IAAa,EAAmB,GAA+C,CAC7E,IAAM,EAAQ,EAAO,EAAE,EAEvB,EACE,EAAQ,MACP,GAAS,CACR,EAAM,MAAQ,OAAO,GAAQ,EAAE,CACjC,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,GAAM,CAAE,OAAM,qBAAsB,EAAuB,EAAS,CAAE,OAAM,CAAC,EAEvE,EAAY,EAAqB,CACrC,MAAO,EAAQ,MACf,OAAQ,EAAQ,OAChB,UAAW,EAAQ,UACnB,OACF,CAAC,EAEK,EAAS,GAAwB,CACrC,GAAO,iBAAiB,EAExB,EAAM,MAAQ,GACd,EAAQ,UAAU,GAAS,IAAI,MAAM,OAAO,EAAG,EAAE,EACjD,EAAQ,WAAW,GAAS,IAAI,MAAM,QAAQ,EAAG,EAAE,EACnD,EAAkB,QAAQ,EAC1B,EAAQ,YAAY,OAAO,MAAM,CACnC,EA0BA,OAxBI,EAAQ,YACV,MACQ,EAAQ,YAAY,MACzB,GAAY,CACN,KAEL,OAAO,EAAwB,CAC7B,UACA,OAAQ,EAAQ,OAChB,UAAW,EAAO,IAAc,CAC9B,EAAM,MAAQ,EACd,EAAQ,WAAW,EAAO,CAAS,CACrC,EACA,SAAU,EAAO,IAAc,CAC7B,EAAM,MAAQ,EACd,EAAQ,eAAe,CAAK,EAC5B,EAAQ,UAAU,EAAO,CAAS,CACpC,EACA,mBACF,CAAC,CACH,CACF,EAGK,CACL,YACA,GAAG,EACH,QACA,oBACA,OACF,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./controls/press-control.cjs`),t=require(`./controls/checkable-control.cjs`),n=require(`./controls/text-field-control.cjs`),r=require(`./controls/choice-field-control.cjs`),i=require(`./controls/list-control.cjs`),a=require(`./controls/overlay-control.cjs`),o=require(`./controls/spinner-control.cjs`),s=require(`./controls/slider-control.cjs`),c=require(`./controls/swipe-control.cjs`),l=require(`./controls/popup-list-control.cjs`);exports.createCheckableFieldControl=t.createCheckableFieldControl,exports.createChoiceField=r.createChoiceField,exports.createListControl=i.createListControl,exports.createOverlayControl=a.createOverlayControl,exports.createPopupListControl=l.createPopupListControl,exports.createPressControl=e.createPressControl,exports.createSliderControl=s.createSliderControl,exports.createSpinnerControl=o.createSpinnerControl,exports.createSwipeControl=c.createSwipeControl,exports.createTextField=n.createTextField;
|
package/dist/controls.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createPressControl as e}from"./controls/press-control.js";import{createCheckableFieldControl as t}from"./controls/checkable-control.js";import{createTextField as n}from"./controls/text-field-control.js";import{createChoiceField as r}from"./controls/choice-field-control.js";import{createListControl as i}from"./controls/list-control.js";import{createOverlayControl as a}from"./controls/overlay-control.js";import{createSpinnerControl as o}from"./controls/spinner-control.js";import{createSliderControl as s}from"./controls/slider-control.js";import{createSwipeControl as c}from"./controls/swipe-control.js";import{createPopupListControl as l}from"./controls/popup-list-control.js";export{t as createCheckableFieldControl,r as createChoiceField,i as createListControl,a as createOverlayControl,l as createPopupListControl,e as createPressControl,s as createSliderControl,o as createSpinnerControl,c as createSwipeControl,n as createTextField};
|
package/dist/craftit.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@vielzeug/stateit`);var t=0,n=e=>{for(let t of e)t()},r=(e,t,n)=>{/^on/i.test(t)||n==null||!1===n?e.removeAttribute(t):!0===n?e.setAttribute(t,``):e.setAttribute(t,String(n))},i=(e,t,n,r)=>{let i=n;return e.addEventListener(t,i,r),()=>e.removeEventListener(t,i,r)},a=e=>`${e?`${e}-`:`cft-`}${++t}`,o=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),s={"'":`'`,'"':`"`,"&":`&`,"<":`<`,">":`>`},c=e=>String(e).replace(/[&<>"']/g,e=>s[e]),l=function(){return this.content},u=new Map,d=e=>{if(e instanceof CSSStyleSheet)return e;let t=typeof e==`string`?e:e.content,n=u.get(t);if(n)return n;let r=new CSSStyleSheet;try{r.replaceSync(t),u.set(t,r)}catch(e){console.error(`[craftit:E2] style replace failed`,e)}return r},f=[],p=()=>{let e=f[f.length-1];if(!e)throw Error(`[craftit:E1] lifecycle outside setup`);return e},m=e=>{p().onMount.push(e)},h=t=>{f.length>0?p().cleanups.push(t):(0,e.onCleanup)(t)},g=e=>{f.length>0&&h(e)},_=(t,n)=>{let r=(0,e.effect)(t,n);return g(r),r};function v(e,t,n,r){e&&(e.addEventListener(t,n,r),h(()=>e.removeEventListener(t,n,r)))}var y={bubbles:!0,cancelable:!0,composed:!0},b={basic:(e,t,n={})=>e.dispatchEvent(new Event(t,{...y,...n})),custom:(e,t,n={})=>e.dispatchEvent(new CustomEvent(t,{...y,...n})),event:(e,t)=>e.dispatchEvent(t),focus:(e,t,n={})=>e.dispatchEvent(new FocusEvent(t,{...y,...n})),keyboard:(e,t,n={})=>e.dispatchEvent(new KeyboardEvent(t,{...y,...n})),mouse:(e,t,n={})=>e.dispatchEvent(new MouseEvent(t,{...y,...n})),touch:(e,t,n={})=>typeof TouchEvent<`u`?e.dispatchEvent(new TouchEvent(t,{...y,...n})):e.dispatchEvent(new CustomEvent(t,{...y,...n}))},x=new WeakMap,S=new Set,C=(e,t,n)=>{let r=`${n}:${e.localName}:${t||`default`}`;S.has(r)||(S.add(r),console.warn(`[craftit:E10] ${n} could not find a matching <slot${t?` name="${t}"`:``}> in <${e.localName}>. Render the slot before using ${n}.`))};function w(e,t){for(let[n,r]of Object.entries(t))if(n===`classMap`)te(e,r);else if(n.startsWith(`on`)&&n.length>2&&typeof r==`function`){let t=n.slice(2);v(e,t[0].toLowerCase()+t.slice(1),r)}else ee(e,n,r)}function ee(e,t,n){typeof n==`function`?_(()=>r(e,t,n())):r(e,t,n)}function te(e,t){let n=new Set;_(()=>{let r=new Set(Object.entries(t()).filter(([,e])=>e).map(([e])=>e));for(let t of n)r.has(t)||e.classList.remove(t);for(let t of r)n.has(t)||e.classList.add(t);n=r})}var T=Symbol(`craftit.htmlResultBrand`);function E(e,t=[]){let n={__bindings:t,__html:e,toString:()=>e};return Object.defineProperty(n,T,{configurable:!1,enumerable:!1,value:!0,writable:!1}),n}var D=e=>typeof e==`object`&&!!e&&!0===e[T],O=Symbol(`craftit.eachSignal`),k=t=>(0,e.isSignal)(t)?t:typeof t==`function`?(0,e.computed)(t):void 0,A=t=>{if(!(0,e.isSignal)(t))return!1;let n=Object.getPrototypeOf(t);for(;n;){let e=Object.getOwnPropertyDescriptor(n,`value`);if(e)return typeof e.set==`function`;n=Object.getPrototypeOf(n)}return!1},j=(e,t)=>{if(!Object.is(e.value,t))try{e.value=t}catch{}},M=new Map,N=e=>(e=>{let t=M.get(e);if(!t){if(t=document.createElement(`template`),t.innerHTML=e,M.size>=1e3){let e=M.keys().next().value;e!==void 0&&M.delete(e)}M.set(e,t)}return t})(e).content.cloneNode(!0),P=(e,t)=>{if(e.nodeType===Node.COMMENT_NODE){let n=e.nodeValue;n&&t.comments.set(n,e);return}if(e.nodeType!==Node.ELEMENT_NODE)return;let n=e.getAttribute(`u`);n&&t.elements.set(n,e)},F=e=>{let t={comments:new Map,elements:new Map};for(let n of e){let e=document.createTreeWalker(n,NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_ELEMENT);for(P(n,t);e.nextNode();)P(e.currentNode,t)}return t},I=e=>Array.from(N(e).childNodes),L=(e,t,n)=>{if(e.parentNode)for(let r of t)e.parentNode.insertBefore(r,n)},R=e=>Array.isArray(e)||typeof e==`object`&&!!e,z=(e,t,n)=>{n(_(()=>t(e.value)))},ne=(e,t,n)=>{let i=n=>{let i=Q.get(e)?.get(t.name);if(!i&&R(n))return void(e[t.name]=n);if(i&&!i.reflect||(t.mode===`bool`?e.toggleAttribute(t.name,!!n):r(e,t.name,n)),!i)return;let a=R(n)?n:i.parse(t.mode===`bool`?n?``:null:n==null||!1===n?null:String(n));Object.is(i.signal.peek(),a)||(i.signal.value=a)};t.signal?z(t.signal,i,n):i(t.value)},re=(e,t,n)=>{let r=n=>{e[t.name]=n};t.signal?z(t.signal,r,n):r(t.value),((e,t,n,r)=>{n&&(t===`value`?(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement)&&r(i(e,e instanceof HTMLSelectElement?`change`:`input`,()=>{j(n,e.value)})):t===`checked`&&e instanceof HTMLInputElement&&r(i(e,`change`,()=>{j(n,e.checked)})))})(e,t.name,t.model,n)},ie=(e,t,n)=>{let{modifiers:r}=t,a=r?{capture:!!r.capture,once:!!r.once,passive:!!r.passive}:void 0;n(i(e,t.name,e=>{r?.self&&e.target!==e.currentTarget||(r?.stop&&e.stopPropagation(),r?.prevent&&!r?.passive&&e.preventDefault(),t.handler(e))},a))},ae=(e,t,n)=>{let{ref:r}=t;typeof r==`function`?(r(e),n(()=>r(null))):Array.isArray(r)?(r.push(e),n(()=>{let t=r.indexOf(e);t!==-1&&r.splice(t,1)})):(r.value=e,n(()=>{r.value=null}))},B=(e,t,n,r)=>{let i=new Map;for(let a of e){let e=a.uid;if(a.type===`text`){let r=n.comments.get(e);if(r){let i=document.createTextNode(``);r.replaceWith(i),n.comments.delete(e),z(a.signal,e=>{i.textContent=String(e)},t)}}else a.type===`html`?r?.onHtml?.(a):(i.has(e)||i.set(e,[]),i.get(e).push(a))}for(let[e,r]of i){let i=n.elements.get(e);if(i){i.removeAttribute(`u`),n.elements.delete(e);for(let e of r)switch(e.type){case`attr`:ne(i,e,t);break;case`callback`:e.apply(i,t);break;case`event`:ie(i,e,t);break;case`prop`:re(i,e,t);break;case`ref`:ae(i,e,t)}}}},V=(e,t,n,r)=>{let i=k(r);return i?{mode:e,name:t,signal:i,type:`attr`,uid:n}:{mode:e,name:t,type:`attr`,uid:n,value:r}},oe=(e,t,n)=>{let r=k(n);return r?{model:A(n)?n:void 0,name:e,signal:r,type:`prop`,uid:t}:{name:e,type:`prop`,uid:t,value:n}},se=RegExp(`u="([^"]+)"`,`g`),ce=[{kind:`event`,regex:/\s+@([a-zA-Z_][-a-zA-Z0-9_.]*)\s*=\s*["']?$/},{kind:`ref`,regex:/\s+ref\s*=\s*["']?$/},{kind:`specialAttr`,regex:/\s+([:?])([a-zA-Z_][-a-zA-Z0-9_]*)\s*=\s*["']?$/},{kind:`prop`,regex:/\.([a-zA-Z_][-a-zA-Z0-9_]*)\s*=\s*["']?$/},{kind:`plainAttr`,regex:/\s+([a-zA-Z_][-a-zA-Z0-9_]*)\s*=\s*["']?$/}],H=new WeakMap,le=e=>{let[t,...n]=e.split(`.`),r={};for(let e of n)e===`capture`?r.capture=!0:e===`once`?r.once=!0:e===`passive`?r.passive=!0:e===`prevent`?r.prevent=!0:e===`self`?r.self=!0:e===`stop`&&(r.stop=!0);return{modifiers:Object.keys(r).length?r:void 0,name:t}},U=()=>{let e=0;return()=>String(e++)},W=(e,t)=>{let n=new Map,r=e=>{let r=n.get(e);if(r)return r;let i=t();return n.set(e,i),i};return{bindings:e.__bindings.map(e=>({...e,uid:r(e.uid)})),html:e.__html.replace(se,(e,t)=>`u="${r(t)}"`).replace(/<!--(\d+)-->/g,(e,t)=>`\x3c!--${r(t)}--\x3e`)}},G=e=>typeof e==`string`?c(e):e==null?``:D(e)?e.__html:c(String(e)),ue=(t,n)=>{let r=(e=>typeof e==`object`&&e&&O in e?e[O]:null)(t);if(r)return{keyed:!0,signal:r};if(typeof t==`function`&&!(0,e.isSignal)(t)){let{signal:r}=((t,n)=>{let r={bindings:[],html:``},i=(0,e.signal)(r);return n(()=>{let e=t(),n=Array.isArray(e)?e:[e],a=U(),o=``,s=[];for(let e of n)if(D(e)){let t=W(e,a);o+=t.html,s.push(...t.bindings)}else o+=G(e);let c=s.length!==r.bindings.length||s.some((e,t)=>e!==r.bindings[t]);(o!==r.html||c)&&(r={bindings:s,html:o},i.value=r)}),{bindings:[],signal:i}})(t,n);return{keyed:!1,signal:r}}return(0,e.isSignal)(t)&&D(t.value)?{keyed:!1,signal:(0,e.computed)(()=>{let e=t.value;if(!D(e))return{bindings:[],html:G(e)};let n=W(e,U());return{bindings:n.bindings,html:n.html}})}:null},K=e=>{n(e.cleanups);for(let t of e.nodes)t.remove()},q=(e,t,n=F(e))=>{let r=[];return B(t,e=>r.push(e),n),r},J=(t,r,i,a,o)=>{let s=((e,t)=>{let n=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT);for(;n.nextNode();){let e=n.currentNode;if(e.nodeValue===t)return e}return null})(t,r.uid);if(!s)return;let c=document.createComment(`html-binding`);s.replaceWith(c);let l=[],u=e=>l.push(e),d=()=>{n(l),l=[]},f=null,p=[];i((0,e.effect)(()=>{(0,e.batch)(()=>{let i=r.signal.value;if(!r.keyed&&i.html===f)return;f=i.html,d();let{bindings:s,html:l,keys:m}=i;r.keyed&&!a.has(r.uid)&&a.set(r.uid,new Map);let h=r.keyed?a.get(r.uid):null,g=c.parentElement||t,_=!1;(0,e.untrack)(()=>{(0,e.batch)(()=>{if(h&&m?.length&&i.items?.length===m.length){if(_=!0,h.size===0&&p.length>0){for(let e of p)e.remove();p=[]}let e=new Map;for(let t=0;t<m.length;t++){let r=m[t],a=i.items[t],o=h.get(r),s=t>0?e.get(m[t-1])?.nodes:null,l=s?.length?s[s.length-1].nextSibling:c.nextSibling;if(o?.html===a.html){o.nodes[0]&&L(c,o.nodes,l),n(o.cleanups);let t=F(o.nodes),i=q(o.nodes,a.bindings,t);e.set(r,{...o,bindings:a.bindings,cleanups:i,targets:t})}else if(o){n(o.cleanups);let t=I(a.html),i=F(t);L(c,t,l);let s=q(t,a.bindings,i);e.set(r,{bindings:a.bindings,cleanups:s,html:a.html,nodes:t,targets:i});for(let e of o.nodes)e.remove()}else{let t=I(a.html),n=F(t);L(c,t,l);let i=q(t,a.bindings,n);e.set(r,{bindings:a.bindings,cleanups:i,html:a.html,nodes:t,targets:n})}}for(let[t,n]of h)e.has(t)||K(n);a.set(r.uid,e)}else{if(r.keyed&&h&&h.size>0)for(let[,e]of h)K(e);else for(let e of p)e.remove();let e=N(l);p=Array.from(e.childNodes),c.after(e),r.keyed&&a.set(r.uid,new Map)}}),_||o(g,s,u,{onHtml:e=>J(g,e,u,a,o)})})})})),i(d),r.keyed&&i(()=>a.delete(r.uid))},Y=(e,t,n,r)=>{B(t,n,(e=>{let t={comments:new Map,elements:new Map},n=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_ELEMENT);for(P(e,t);n.nextNode();)P(n.currentNode,t);return t})(e),r)},X=new WeakMap,Z=new WeakMap,de=new Set([`default`,`omit`,`parse`,`reflect`,`type`]),fe=e=>typeof e==`object`&&!!e&&`default`in e&&Object.keys(e).every(e=>de.has(e)),Q=new WeakMap,$=(t,n,i)=>{let a=p(),o=a.el;Q.has(o)||Q.set(o,new Map);let s=i?.parse??(e=>i?.type===Boolean?e===``||e===`true`:typeof n==`boolean`?e!==null&&e!==`false`:e==null?n:i?.type===Number||typeof n==`number`?Number(e):e),c=(0,e.signal)(n),l=Object.prototype.hasOwnProperty.call(o,t),u=l?o[t]:void 0,d={parse:s,reflect:i?.reflect??!0,signal:c};if(l?(delete o[t],c.value=u):o.hasAttribute(t)&&(c.value=s(o.getAttribute(t))),Q.get(o).set(t,d),Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:()=>c.value,set:e=>{c.value=e}}),i?.reflect??1){let n=i?.omit??!1;a.onMount.push(()=>{a.cleanups.push((0,e.effect)(()=>{let e=c.value;e==null||!1===e||n&&e===``?o.removeAttribute(t):r(o,t,e)}))})}return c},pe=class extends HTMLElement{static _setup;static _options;static formAssociated=!1;static observedAttributes=[];shadow;_keyedStates=new Map;_mountFns=[];_template=null;_appliedHtmlBindings=new Set;_setupDone=!1;_runtime;constructor(){super();let e=this.constructor._options;this.shadow=this.attachShadow({mode:`open`,...e?.shadow}),this._runtime={cleanups:[],el:this,errorHandlers:[],onMount:[],styles:e?.styles}}connectedCallback(){this._setupDone||this._runSetup(),this._init()}attributeChangedCallback(e,t,n){if(t===n)return;let r=Q.get(this)?.get(e);if(!r)return;let i=r.parse(n);Object.is(r.signal.peek(),i)||(r.signal.value=i)}disconnectedCallback(){n(this._runtime.cleanups),this._runtime.cleanups=[],this._runtime.onMount=this._mountFns.slice(),this._appliedHtmlBindings.clear(),this._keyedStates.clear()}formAssociatedCallback(e){X.get(this)?.onAssociated?.(e)}formDisabledCallback(e){X.get(this)?.onDisabled?.(e)}formResetCallback(){X.get(this)?.onReset?.()}formStateRestoreCallback(e,t){X.get(this)?.onStateRestore?.(e,t)}_handleError(e){if(this._runtime.errorHandlers.length>0)for(let t of this._runtime.errorHandlers)t(e);else console.error(`[craftit:E3] <${this.localName}>`,e)}_runSetup(){this._setupDone=!0,f.push(this._runtime);try{let{host:e}=this.constructor._options??{};if(e)for(let[t,n]of Object.entries(e))typeof n==`boolean`?n?this.setAttribute(t,``):this.removeAttribute(t):this.setAttribute(t,String(n));let t=this.constructor._setup({host:this,shadow:this.shadow});(typeof t==`string`||typeof t==`object`&&t&&`__html`in t)&&(this._template=t)}catch(e){this._handleError(e)}finally{f.pop()}}_init(){let{styles:e}=this._runtime;if(e?.length&&(this.shadow.adoptedStyleSheets=e.map(d)),this._template){let e=typeof this._template==`string`?E(this._template):this._template;if(this.shadow.replaceChildren(N(e.__html)),e.__bindings.length){let t=e=>this._runtime.cleanups.push(e);Y(this.shadow,e.__bindings,t,{onHtml:e=>{this._appliedHtmlBindings.has(e.uid)||(this._appliedHtmlBindings.add(e.uid),((e,t,n,r)=>{J(e,t,n,r,Y)})(this.shadow,e,t,this._keyedStates))}})}}queueMicrotask(()=>{f.push(this._runtime);try{let e=this._runtime.onMount;this._mountFns=e.slice();for(let t of e){let e=t();typeof e==`function`&&this._runtime.cleanups.push(e)}}catch(e){this._handleError(e)}finally{f.pop(),this._runtime.onMount=[]}})}};exports.aria=function(e,t){let n=t===void 0?p().el:e,r=Object.entries(t===void 0?e:t).map(([e,t])=>_(()=>((e,t)=>{let r=`aria-${e}`,i=typeof t==`function`?t():t;i==null||!1===i?n.removeAttribute(r):n.setAttribute(r,String(i))})(e,t)));if(t!==void 0)return()=>{for(let e of r)e()}},exports.createContext=function(e){return Symbol(e)},exports.createFormIds=(e,t)=>{let n=`${e}-${t&&t.trim()?t:a(e)}`;return{errorId:`error-${n}`,fieldId:n,helperId:`helper-${n}`,labelId:`label-${n}`}},exports.createId=a,exports.css=(e,...t)=>{let n=``;for(let r=0;r<e.length;r++)if(n+=e[r],r<t.length){let e=t[r];n+=e&&typeof e==`object`&&`content`in e?e.content:e??``}return{content:n.trim(),toString:l}},exports.defineComponent=function(t){let{formAssociated:n,host:r,props:i,setup:a,shadow:s,styles:c,tag:l}=t;return function(e,t,n={}){if(!e)throw Error(`[craftit:E4] registerComponent(tag, ...) requires a tag name`);if(customElements.get(e))throw Error(`[craftit:E9] custom element already defined: ${e}`);class r extends pe{static _setup=t;static _options=n;static formAssociated=n.formAssociated??!1;static observedAttributes=n.observedAttrs??[]}return customElements.define(e,r),e}(l,t=>{let n=i?function(e){let t={};for(let[n,r]of Object.entries(e)){let e=fe(r)?r:{default:r},i={reflect:!(typeof e.default==`object`&&e.default!==null||Array.isArray(e.default)),...e};t[n]=$(o(n),e.default,i)}return t}(i):{},r=(()=>{let e=p().el;return(t,...n)=>{b.custom(e,String(t),n.length>0?{detail:n[0]}:void 0)}})(),s=(()=>{let t=p().el,n=new Map;return{has:r=>(r=>{if(n.has(r))return n.get(r);let i=(0,e.signal)(!1);return n.set(r,i),m(()=>{let e=r?`slot[name="${r}"]`:`slot:not([name])`,n=t.shadowRoot?.querySelector(e);if(!n)return void C(t,r,`slots.has()`);let a=()=>{i.value=n.assignedNodes().length>0};return a(),n.addEventListener(`slotchange`,a),()=>n.removeEventListener(`slotchange`,a)}),i})(r===`default`?``:String(r))}})();return a({emit:r,host:t.host,props:n,reflect:e=>w(t.host,e),shadow:t.shadow,slots:s})},{formAssociated:n,host:r,observedAttrs:i?Object.keys(i).map(o):[],shadow:s,styles:c})},exports.defineField=(t,n)=>{let r=p().el;if(!r.constructor.formAssociated)throw Error(`[craftit:E8] defineField() requires defineComponent({ formAssociated: true })`);let i=Z.get(r)??r.attachInternals();Z.set(r,i);let a=t.toFormValue??(e=>e==null?``:String(e));return(0,e.effect)(()=>{i.setFormValue(a(t.value.value))}),t.disabled&&(0,e.effect)(()=>{t.disabled.value?i.states.add(`disabled`):i.states.delete(`disabled`)}),n&&X.set(r,{...X.get(r),...n}),{checkValidity:()=>i.checkValidity(),internals:i,reportValidity:()=>i.reportValidity(),setCustomValidity:e=>e?i.setValidity({customError:!0},e):i.setValidity({}),setValidity:i.setValidity.bind(i)}},exports.effect=_,exports.escapeHtml=c,exports.fire=b,exports.guard=(e,t)=>n=>{e()&&t(n)},exports.handle=v,exports.html=(t,...n)=>((t,n,r)=>{let i=(e=>{let t=H.get(e);return t||(t=(e=>{let t=[];for(let n=0;n<e.length-1;n++){let r=e[n],i=!1;for(let e of ce){let n=e.regex.exec(r);if(!n)continue;let a=r.slice(0,-n[0].length);if(i=!0,e.kind===`event`){let e=le(n[1]);t.push({kind:`event`,modifiers:e.modifiers,name:e.name,prefix:a,raw:r})}else e.kind===`ref`?t.push({kind:`ref`,prefix:a,raw:r}):e.kind===`specialAttr`?t.push({kind:`specialAttr`,mode:n[1]===`?`?`bool`:`attr`,name:n[2],prefix:a,raw:r}):e.kind===`prop`?t.push({kind:`prop`,name:n[1],prefix:a,raw:r}):e.kind===`plainAttr`&&t.push({kind:`plainAttr`,name:n[1],prefix:a,raw:r});break}i||t.push({kind:`node`,prefix:r,raw:r})}return{slots:t,tail:e[e.length-1]??``}})(e),H.set(e,t)),t})(t),a=``,o=[],s=null,c=U(),l=e=>(s&&!(e=>e.lastIndexOf(`<`)>e.lastIndexOf(`>`))(e)||(s=c()),s),u=()=>{s=null};for(let t=0;t<i.slots.length;t++){let s=i.slots[t],d=n[t];if(s.kind===`event`){if(typeof d==`function`){let e=l(s.prefix);a+=`${s.prefix} u="${e}"`,o.push({handler:d,modifiers:s.modifiers,name:s.name,type:`event`,uid:e})}else a+=s.raw;continue}if(s.kind===`ref`){if(d){let e=l(s.prefix);a+=`${s.prefix} u="${e}"`,o.push({ref:d,type:`ref`,uid:e})}else a+=s.raw;continue}if(s.kind===`specialAttr`){let e=l(s.prefix);a+=`${s.prefix} u="${e}"`,o.push(V(s.mode,s.name,e,d));continue}if(s.kind===`prop`){let e=l(s.prefix);a+=`${s.prefix} u="${e}"`,o.push(oe(s.name,e,d));continue}if(s.kind===`plainAttr`){let e=l(s.prefix);a+=`${s.prefix} u="${e}"`,o.push(V(`attr`,s.name,e,d));continue}if(typeof d==`object`&&d&&(`mount`in d||`render`in d)){let t=`render`in d,n=t?c():l(s.raw);a+=t?`${s.raw}\x3c!--${n}--\x3e`:`${s.raw} u="${n}"`;let i=d.mount?.bind(d);if(i&&o.push({apply:(e,t)=>{i(e,{registerCleanup:t})},type:`callback`,uid:n}),t){let t=d.render.bind(d),i={bindings:[],html:``},a=(0,e.signal)(i);r(()=>{let e=t(),n=Array.isArray(e)?e:[e],r=U(),o=``,s=[];for(let e of n)if(D(e)){let t=W(e,r);o+=t.html,s.push(...t.bindings)}else o+=G(e);let c=s.length!==i.bindings.length||s.some((e,t)=>e!==i.bindings[t]);(o!==i.html||c)&&(i={bindings:s,html:o},a.value=i)}),o.push({keyed:!1,signal:a,type:`html`,uid:n})}continue}u();let f=ue(d,r);if(f){let e=c();a+=`${s.raw}\x3c!--${e}--\x3e`,o.push({keyed:f.keyed,signal:f.signal,type:`html`,uid:e});continue}if(Array.isArray(d)){let e=``;for(let t of d)if(D(t)){let n=W(t,c);e+=n.html,o.push(...n.bindings)}else e+=G(t);a+=s.raw+e;continue}if((0,e.isSignal)(d)){let e=c();a+=`${s.raw}\x3c!--${e}--\x3e`,o.push({signal:d,type:`text`,uid:e})}else if(D(d)){let e=W(d,c);a+=s.raw+e.html,o.push(...e.bindings)}else a+=s.raw+G(d)}return a+=i.tail,E(a.replace(/>\s+</g,`><`).trim(),o)})(t,n,_),exports.inject=function(e,...t){let n=p().el;for(;n;){if(n instanceof HTMLElement){let t=x.get(n)?.get(e);if(t!==void 0)return t}let t=n.getRootNode();n=n.parentElement??(t instanceof ShadowRoot?t.host:null)}return t.length>0?t[0]:void 0},exports.observeResize=t=>{let n=(0,e.signal)({height:0,width:0}),r=new ResizeObserver(([e])=>{if(!e)return;let t=e.contentBoxSize[0];t&&(n.value={height:t.blockSize,width:t.inlineSize})});return r.observe(t),h(()=>r.disconnect()),n},exports.onCleanup=h,exports.onError=e=>{p().errorHandlers.push(e)},exports.onMount=m,exports.onSlotChange=(e,t)=>{let n=p().el,r=e===`default`?``:e,i=r?`slot[name="${r}"]`:`slot:not([name])`,a=n.shadowRoot?.querySelector(i);if(!a)return void C(n,r,`onSlotChange()`);let o=()=>t(a.assignedElements({flatten:!0}));o(),a.addEventListener(`slotchange`,o),h(()=>a.removeEventListener(`slotchange`,o))},exports.prop=$,exports.provide=(e,t)=>{let n=p().el;x.has(n)||x.set(n,new Map),x.get(n).set(e,t)},exports.ref=function(){return{value:null}},exports.reflect=w,exports.refs=function(){return[]},exports.syncContextProps=(e,t,n)=>{e&&m(()=>{_(()=>{for(let r of n){let n=e[r]?.value;n!==void 0&&(t[r].value=n)}})})},exports.toKebab=o,exports.typed=(e,t)=>({...t,default:e}),exports.watch=function(t,n,r){if(Array.isArray(t)){let i=r,a=!1,o=!1,s=(0,e.effect)(()=>{for(let e of t)e.value;if(a)(0,e.untrack)(n),i?.once&&s();else if(a=!0,i?.immediate&&((0,e.untrack)(n),i.once))return void(o=!0)});return g(s),o&&s(),s}let i=(0,e.watch)(t,n,r);return g(i),i},Object.keys(e).forEach(function(t){t===`default`||Object.prototype.hasOwnProperty.call(exports,t)||Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@vielzeug/stateit`);var t={cleanupFailed:`One or more cleanup callbacks failed during dispose`,defineDuplicate:e=>`define('${e}') was called more than once`,defineFieldRequiresFormAssociated:e=>`defineField() requires define('${e}', { formAssociated: true })`,defineRequiresTag:`define() requires a non-empty tag name`,eachDuplicateKey:(e,t)=>`each() received duplicate key "${e}" at index ${t}`,injectStrictFailed:(e,t)=>`injectStrict() could not resolve key "${e}" in <${t}>`,lifecycleOutsideSetup:`Lifecycle hooks must be called synchronously during component setup`,styleReplaceFailed:`Style sheet replace failed`,unhandledComponentError:e=>`<${e}> threw an unhandled error during setup`};function n(){return(0,e.signal)(null)}function r(){return[]}var i=e=>typeof e==`object`&&!!e&&e.__craftitDirective===!0&&typeof e.mount==`function`;function a(e,t=[]){return{__bindings:t,__craftitHtmlResult:!0,__html:e,toString(){return e}}}var o=e=>typeof e==`object`&&!!e&&e.__craftitHtmlResult===!0;function s(e){return typeof e==`string`?{bindings:[],html:e}:{bindings:e.__bindings,html:e.__html}}var c=e=>typeof e==`object`&&!!e&&e.__craftitCssResult===!0,l=e=>{let n=[];for(let t=e.length-1;t>=0;t--)try{e[t]()}catch(e){n.push(e)}if(n.length>0)throw AggregateError(n,t.cleanupFailed)},u=e=>{for(let t of e)t.remove()},d=(e,t,n)=>{if(/^on/i.test(t)){e.removeAttribute(t);return}n==null||n===!1?e.removeAttribute(t):e.setAttribute(t,n===!0?`true`:String(n))},f=(e,t,n,r)=>{if(!e)return()=>{};let i=n;return e.addEventListener(t,i,r),()=>e.removeEventListener(t,i,r)},p=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),m={"'":`'`,'"':`"`,"&":`&`,"<":`<`,">":`>`},h=e=>String(e).replace(/[&<>"']/g,e=>m[e]),g=()=>{let e=D();return((t,...n)=>{v.custom(e,String(t),n.length>0?{detail:n[0]}:void 0)})},_={bubbles:!0,cancelable:!0,composed:!0},v={custom(e,t,n={}){return e.dispatchEvent(new CustomEvent(t,{..._,...n}))},event(e,t){return e.dispatchEvent(t)},focus(e,t,n={}){return e.dispatchEvent(new FocusEvent(t,{..._,...n}))},keyboard(e,t,n={}){return e.dispatchEvent(new KeyboardEvent(t,{..._,...n}))},mouse(e,t,n={}){return e.dispatchEvent(new MouseEvent(t,{..._,...n}))},touch(e,t,n={}){return typeof TouchEvent<`u`?e.dispatchEvent(new TouchEvent(t,{..._,...n})):e.dispatchEvent(new CustomEvent(t,{..._,...n}))}},y=0,b=e=>`${e?`${e}-`:`cft-`}${++y}`,ee=RegExp(`u="([^"]+)"`,`g`),x=()=>{let e=0;return()=>String(e++)},S=(e,t)=>{let n=new Map,r=e=>{let r=n.get(e);if(r)return r;let i=t();return n.set(e,i),i};return{bindings:e.__bindings.map(e=>({...e,uid:r(e.uid)})),html:e.__html.replace(ee,(e,t)=>`u="${r(t)}"`).replace(/<!--(\d+)-->/g,(e,t)=>`<!--${r(t)}-->`)}},te=function(){return this.content},ne=(e,...t)=>{let n=``;for(let r=0;r<e.length;r++)if(n+=e[r],r<t.length){let e=t[r];n+=c(e)?e.content:e??``}return{__craftitCssResult:!0,content:n.trim(),toString:te}},C=new Map,re=e=>{if(e instanceof CSSStyleSheet)return e;let n=typeof e==`string`?e:e.content,r=C.get(n);if(r)return r;let i=new CSSStyleSheet;try{i.replaceSync(n)}catch(e){console.error(t.styleReplaceFailed,e)}return C.set(n,i),i},w=null,T=null,E=(e,t)=>{let n=w;w=e;try{return t()}finally{w=n}},D=()=>{if(w)return w;throw Error(t.lifecycleOutsideSetup)},O=(e,t)=>{let n=T;T=e;try{return t()}finally{T=n}},k=t=>T?((0,e.onCleanup)(t),!0):!1,A=e.onCleanup,j=e=>{if(!T)throw Error(t.lifecycleOutsideSetup);T.mountCallbacks.push(e)},M=t=>{let n=(0,e.effect)(()=>t());return k(n),n};function ie(e,n,r,i){if(!T)throw Error(t.lifecycleOutsideSetup);e&&k(f(e,n,r,i))}function ae(e,t,n,r){return f(e,t,n,r)}var oe=(e,t)=>M(()=>{let n=e.value;if(n)return t(n)}),N=new WeakMap,se=(e,t)=>{let n=D();N.has(n)||N.set(n,new Map),N.get(n).set(e,t)};function P(e,...t){let n=D();for(;n;){if(n instanceof HTMLElement){let t=N.get(n)?.get(e);if(t!==void 0)return t}let t=n.getRootNode();n=n.parentElement??(t instanceof ShadowRoot?t.host:null)}return t.length>0?t[0]:void 0}var ce=e=>{let n=P(e);if(n!==void 0)return n;let r=D();throw Error(t.injectStrictFailed(String(e),r.localName))};function le(e){return Symbol(e)}var ue=e=>e===`role`||e.startsWith(`aria-`)?e:e.startsWith(`aria`)?`aria-${e.slice(4).toLowerCase()}`:`aria-${e}`,de=e=>e===`role`||e.startsWith(`aria-`)?e:e.startsWith(`aria`)?`aria-${e.slice(4).toLowerCase()}`:e,F=(e,t,n)=>{if(n==null||n===!1){e.removeAttribute(t);return}e.setAttribute(t,n===!0?`true`:String(n))},fe=(t,n,r={})=>{let{autoCleanup:i=!0}=r,a=[];for(let[r,i]of Object.entries(n)){let n=ue(r);if(typeof i==`function`){let r=i;a.push((0,e.effect)(()=>{F(t,n,r())}));continue}F(t,n,i)}let o=()=>{for(;a.length>0;)a.pop()?.()};return i&&k(o),o},pe=`default`,I=e=>e||pe,me=()=>{let t=D(),n=new Map,r=new Map,i=new Map,a=t=>{let r=n.get(t);return r||(r={elements:(0,e.signal)([]),presence:(0,e.signal)(!1)},n.set(t,r)),r},o=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},s=e=>{let t=I(e),n=r.get(t),i=[];if(n)for(let e of n)i.push(...e.assignedElements({flatten:!0}));let s=a(t);o(s.elements.value,i)||(s.elements.value=i);let c=i.length>0;s.presence.value!==c&&(s.presence.value=c)},c=e=>{if(i.has(e))return;let t=I(e.getAttribute(`name`)),n=r.get(t)??new Set;n.add(e),r.set(t,n);let a=()=>s(t);e.addEventListener(`slotchange`,a),i.set(e,()=>{e.removeEventListener(`slotchange`,a)}),s(t)},l=()=>{t.shadowRoot?.querySelectorAll(`slot`).forEach(e=>c(e))},u=()=>{for(let e of r.keys())s(e)};return l(),j(()=>{l(),u()}),A(()=>{for(let e of i.values())e();i.clear(),r.clear()}),{elements:e=>a(I(e)).elements,has:e=>a(I(e)).presence}},he=()=>{let e=D();return{bind:(t,n)=>{let r=[];if(t.attr)for(let[n,i]of Object.entries(t.attr)){let t=ge(e,de(n),i);t&&r.push(t)}if(t.class&&r.push(ve(e,t.class)),t.prop)for(let[n,i]of Object.entries(t.prop)){let{get:t,set:a}=i;Object.defineProperty(e,n,{configurable:!0,enumerable:!0,get:t,...a?{set:a}:{}}),r.push(()=>{let r=Object.getOwnPropertyDescriptor(e,n);!r||r.get!==t||r.set!==a||delete e[n]})}if(t.on)for(let i of Object.keys(t.on)){let a=t.on[i];a&&r.push(f(e,i,a,n))}if(t.style)for(let[n,i]of Object.entries(t.style)){let t=_e(e,n,i);t&&r.push(t)}let i=()=>{for(;r.length>0;)r.pop()?.()};return A(i),i},el:e}},L=(t,n)=>{if(typeof t==`function`)return M(()=>n(t()));if((0,e.isSignal)(t))return M(()=>n(t.value));n(t)};function ge(e,t,n){return L(n,n=>d(e,t,n))}function _e(e,t,n){let r=t.startsWith(`--`)?t:p(t),i=!1;return L(n,t=>{t!=null&&t!==``?(i=!0,e.style.setProperty(r,String(t))):i&&e.style.removeProperty(r)})}function ve(t,n){let r=typeof n==`function`?n:()=>{let t={};for(let[r,i]of Object.entries(n))t[r]=typeof i==`function`?i():(0,e.isSignal)(i)?i.value:!!i;return t},i=new Set;return M(()=>{let e=new Set;for(let[n,a]of Object.entries(r()))a&&(e.add(n),i.has(n)||t.classList.add(n));for(let n of i)e.has(n)||t.classList.remove(n);i=e})}var ye={bool(e=!1){return{default:e,parse:e=>e===``||e===`true`,reflect:!0}},json(e){return{default:e,parse:t=>{if(t==null||t===``)return e;try{return JSON.parse(t)}catch{return e}},reflect:!1}},number(e=0){return{default:e,parse:t=>t==null?e:Number(t),reflect:!0}},oneOf(e,t){return{default:t,parse:n=>n!=null&&e.includes(n)?n:t,reflect:!0}},string(e){return{default:e,parse:t=>t??e,reflect:!0}}},be=e=>typeof e==`object`&&!!e&&`default`in e,R=e=>Array.isArray(e)||typeof e==`object`&&!!e;function z(e){if(be(e)){let t=e,n=t.reflect??!0;if(n&&R(t.default))throw Error(`Structured prop defaults cannot use reflect:true. Set reflect:false and sync explicitly.`);return{...t,reflect:n}}return R(e)?{default:e,reflect:!1}:{default:e,reflect:!0}}var B=new WeakMap,V=new WeakMap,xe=(e,t)=>{let n=V.get(e);n||(n=new Set,V.set(e,n)),n.add(t)},Se=(e,t)=>{let n=V.get(e);n&&(n.delete(t),n.size===0&&V.delete(e))},Ce=(e,t)=>V.get(e)?.has(t)??!1,we={boolean:e=>e===``||e===`true`,number:e=>Number(e),string:e=>e},Te=e=>t=>{if(t==null)return e;let n=we[typeof e];return n?n(t):t},Ee=(t,n,r,i)=>{let a=D();B.has(a)||B.set(a,new Map);let o=i?.parse??Te(r),s=(0,e.signal)(r),c=Object.prototype.hasOwnProperty.call(a,t),l=c?a[t]:void 0,u={parse:o,reflect:i?.reflect??!0,signal:s};return c?(delete a[t],s.value=l):a.hasAttribute(n)&&(s.value=o(a.getAttribute(n))),B.get(a).set(n,u),Object.defineProperty(a,t,{configurable:!0,enumerable:!0,get:()=>s.value,set:e=>{s.value=e}}),(i?.reflect??!0)&&M(()=>{let e=s.value;xe(a,n);try{e==null?a.removeAttribute(n):typeof e==`boolean`?a.toggleAttribute(n,e):d(a,n,e)}finally{Se(a,n)}}),s};function De(e){let t={};for(let[n,r]of Object.entries(e)){let e=typeof r==`object`&&r&&`default`in r?r:z(r);t[n]=Ee(n,p(n),e.default,e)}return t}var Oe=e=>({__live:!0,get value(){return e.value}}),ke=e=>typeof e==`object`&&!!e&&e.__live===!0,H=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t.content.cloneNode(!0)},Ae=(e,t)=>{if(e.nodeType===Node.COMMENT_NODE){let n=e.nodeValue;n&&t.comments.set(n,e);return}if(e.nodeType!==Node.ELEMENT_NODE)return;let n=e.getAttribute(`u`);n&&t.elements.set(n,e)},je=(e,t)=>{let n=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_ELEMENT);for(t(e);n.nextNode();)t(n.currentNode)},U=e=>{let t={comments:new Map,elements:new Map};for(let n of e)je(n,e=>Ae(e,t));return t},Me=(e,t)=>{let n=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT);for(;n.nextNode();){let e=n.currentNode;if(e.nodeValue===t)return e}return null},W=e=>Array.isArray(e)||typeof e==`object`&&!!e,Ne=e=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,Pe=(e,t,n,r)=>{let i=t==null?``:String(t);n&&r.last!==void 0&&!Object.is(e.value,r.last)&&!Object.is(e.value,i)||(e.value=i,n&&(r.last=i))},Fe=(e,t,n,r)=>{let i=!!t;n&&r.last!==void 0&&e.checked!==!!r.last&&e.checked!==i||(e.checked=i,n&&(r.last=i))},Ie=(t,n,r,i)=>{let a=W(i)?i:n.parse(r.mode===`bool`?i?``:null:i==null||i===!1?null:String(i));if(Object.is((0,e.untrack)(()=>n.signal.value),a)||(n.signal.value=a),!n.reflect){if(W(i))return;r.mode===`bool`?t.toggleAttribute(r.name,!!i):d(t,r.name,i)}},G=(t,n,r)=>{r((0,e.effect)(()=>n(t.value)))},Le=(e,t,n)=>{let r=B.get(e)?.get(t.name),i={last:void 0},a=n=>{if(!r&&W(n)){e[t.name]=n;return}if(!r&&t.name===`value`&&Ne(e)){Pe(e,n,t.live,i);return}if(!r&&t.name===`checked`&&e instanceof HTMLInputElement){Fe(e,n,t.live,i);return}if(!r){t.mode===`bool`?e.toggleAttribute(t.name,!!n):d(e,t.name,n);return}Ie(e,r,t,n)};t.signal?G(t.signal,a,n):a(t.value)},Re=(e,t,n)=>{n(f(e,t.name,t.handler,t.options))},ze=(e,t,n)=>{let{ref:r}=t;if(typeof r==`function`){r(e),n(()=>r(null));return}if(Array.isArray(r)){r.push(e),n(()=>{let t=r.indexOf(e);t!==-1&&r.splice(t,1)});return}r.value=e,n(()=>{r.value=null})},K=(e,t,n,r)=>{let i=new Map;for(let a of e){let e=a.uid;if(a.type===`text`){let r=n.comments.get(e);if(r){let i=document.createTextNode(``);r.replaceWith(i),n.comments.delete(e),G(a.signal,e=>{i.textContent=String(e)},t)}}else if(a.type===`directive`){let r=n.comments.get(e);r&&(a.directive.mount(r,t),n.comments.delete(e))}else if(a.type===`html`)r?.onHtml?.(a);else{let t=i.get(e);t?t.push(a):i.set(e,[a])}}for(let[e,r]of i){let i=n.elements.get(e);if(i){i.removeAttribute(`u`),n.elements.delete(e);for(let e of r)e.type===`attr`?Le(i,e,t):e.type===`event`?Re(i,e,t):e.type===`ref`&&ze(i,e,t)}}},q=(e,t,n,r)=>{K(t,n,U([e]),r)},Be=(t,n,r,i)=>ke(i)?{live:!0,mode:t,name:n,signal:i,type:`attr`,uid:r}:typeof i==`function`?{mode:t,name:n,signal:(0,e.computed)(i),type:`attr`,uid:r}:(0,e.isSignal)(i)?{mode:t,name:n,signal:i,type:`attr`,uid:r}:{mode:t,name:n,type:`attr`,uid:r,value:i},J=(t,n,r)=>{let i=Me(t,n.uid);if(!i)return;let a=document.createComment(`html-binding`);i.replaceWith(a);let o=[],s=e=>o.push(e),c=()=>{l(o),o=[]},d=null,f=[];r((0,e.effect)(()=>{(0,e.batch)(()=>{let r;try{r=n.signal.value}catch(e){if(e instanceof Error&&e.message.includes(`[stateit] Cannot read disposed computed signal`))return;throw e}if(r.html===d)return;d=r.html,c();let{bindings:i,html:o}=r,l=a.parentElement||t;(0,e.untrack)(()=>{(0,e.batch)(()=>{u(f);let e=H(o);f=Array.from(e.childNodes),a.after(e)}),q(l,i,s,{onHtml:e=>J(l,e,s)})})})})),r(c)},Ve=class extends HTMLElement{static _options;static _setup;static formAssociated=!1;static observedAttributes=[];shadow;_component;constructor(){super();let t=this.constructor._options;this.shadow=this.attachShadow({mode:`open`,...t?.shadow}),this._component={mountCallbacks:[],mountedCallbacksRan:!1,mountToken:0,scope:(0,e.scope)(),setupDone:!1,styles:t?.styles,templateMounted:!1,templateResult:null}}connectedCallback(){(0,e.untrack)(()=>{this._component.setupDone||this._runSetup(),this._init()})}attributeChangedCallback(t,n,r){if(n===r||Ce(this,t))return;let i=B.get(this)?.get(t);if(!i)return;let a=i.parse(r);Object.is((0,e.untrack)(()=>i.signal.value),a)||(i.signal.value=a)}disconnectedCallback(){this._component.mountToken++,this._component.scope.dispose(),this._component.scope=(0,e.scope)(),this._component.mountCallbacks=[],this._component.mountedCallbacksRan=!1,this._component.templateMounted=!1,this._component.templateResult=null,this._component.setupDone=!1}_handleError(e){throw console.error(t.unhandledComponentError(this.localName),e),e instanceof Error?e:Error(String(e))}_runSetup(){let e={element:this,mountCallbacks:[]};try{this._component.scope.run(()=>{let t=O(e,()=>E(this,()=>this.constructor._setup()));this._component.templateResult=O(e,()=>E(this,()=>t()))}),this._component.mountCallbacks.push(...e.mountCallbacks),this._component.setupDone=!0}catch(e){this._handleError(e)}}_init(){let{styles:t}=this._component;if(t?.length&&(this.shadow.adoptedStyleSheets=t.map(re)),!this._component.templateMounted&&this._component.templateResult!=null){let{bindings:t,html:n}=s(this._component.templateResult);this.shadow.replaceChildren(H(n)),this._component.templateMounted=!0,t.length&&this._component.scope.run(()=>{q(this.shadow,t,e.onCleanup,{onHtml:t=>J(this.shadow,t,e.onCleanup)})})}if(!this._component.mountedCallbacksRan&&this._component.mountCallbacks.length>0){this._component.mountedCallbacksRan=!0;let t=++this._component.mountToken;queueMicrotask(()=>{if(!(!this.isConnected||t!==this._component.mountToken))try{for(let t of this._component.mountCallbacks)this._component.scope.run(()=>{O({element:this,mountCallbacks:[]},()=>E(this,()=>{let n=t();typeof n==`function`&&(0,e.onCleanup)(n)}))})}catch(e){this._handleError(e)}})}}},He=(e,n,r={})=>{if(!e)throw Error(t.defineRequiresTag);if(customElements.get(e))throw Error(t.defineDuplicate(e));class i extends Ve{static _options=r;static _setup=n;static formAssociated=r.formAssociated??!1;static observedAttributes=r.observedAttrs??[]}return customElements.define(e,i),e},Ue=e=>e?De(e):{};function We(e,t){let{formAssociated:n,props:r,setup:i,shadow:a,styles:o}=t,s=(()=>{if(!r)return;let e={};for(let[t,n]of Object.entries(r))e[t]=z(n);return e})();return He(e,()=>{let e=Ue(s),t=he();return i(e,{emit:g(),host:t,slots:me()})},{formAssociated:n,observedAttrs:s?Object.keys(s).map(p):[],shadow:a,styles:o})}var Y=new WeakMap,Ge=e=>{let n=D();if(!n.constructor.formAssociated)throw Error(t.defineFieldRequiresFormAssociated(n.localName));let r=Y.get(n)??n.attachInternals();Y.set(n,r);let i=e.toFormValue??(e=>e==null?null:e instanceof File||e instanceof FormData?e:String(e));M(()=>{r.setFormValue(i(e.value.value))});let a=e.disabled;if(a){let e=r.states;M(()=>{a.value?e.add(`disabled`):e.delete(`disabled`)})}return{checkValidity:()=>r.checkValidity(),internals:r,reportValidity:()=>r.reportValidity(),setCustomValidity:e=>e?r.setValidity({customError:!0},e):r.setValidity({}),setValidity:r.setValidity.bind(r)}},Ke=[{kind:`event`,regex:/\s+@([a-zA-Z_][-a-zA-Z0-9_.-]*)\s*=\s*["']?$/},{kind:`ref`,regex:/\s+ref\s*=\s*["']?$/},{kind:`boolAttr`,regex:/\s+\?([a-zA-Z_][-a-zA-Z0-9_]*)\s*=\s*["']?$/},{kind:`attr`,regex:/\s+:?([a-zA-Z_][-a-zA-Z0-9_]*)\s*=\s*["']?$/}],X=new WeakMap,Z=new WeakMap,Q=new WeakMap,qe={prevent:e=>t=>{t.preventDefault(),e(t)},self:e=>t=>{t.target===t.currentTarget&&e(t)},stop:e=>t=>{t.stopPropagation(),e(t)}},Je=(e,t)=>{let n=t.reduce((e,t)=>qe[t]?.(e)??e,e),r={};return t.includes(`capture`)&&(r.capture=!0),t.includes(`once`)&&(r.once=!0),t.includes(`passive`)&&(r.passive=!0),{handler:n,...Object.keys(r).length?{options:r}:{}}},$=e=>typeof e==`string`?h(e):e==null?``:o(e)?e.__html:h(String(e)),Ye=t=>{let n={bindings:[],html:``};return{bindings:[],signal:(0,e.computed)(()=>{let e=t(),r=Array.isArray(e)?e:[e],i=x(),a=``,s=[];for(let e of r)if(o(e)){let t=S(e,i);a+=t.html,s.push(...t.bindings)}else a+=$(e);let c=s.length!==n.bindings.length||s.some((e,t)=>e!==n.bindings[t]);return(a!==n.html||c)&&(n={bindings:s,html:a}),n})}},Xe=t=>{if(typeof t==`function`){let e=t,n=Z.get(e);if(n)return{signal:n};let{signal:r}=Ye(e);return Z.set(e,r),{signal:r}}if((0,e.isSignal)(t)&&o(t.value)){let n=t,r=Q.get(n);if(r)return{signal:r};let i=(0,e.computed)(()=>{let e=n.value;if(!o(e))return{bindings:[],html:$(e)};let t=S(e,x());return{bindings:t.bindings,html:t.html}});return Q.set(n,i),{signal:i}}return null},Ze=e=>{let t=[];for(let n=0;n<e.length-1;n++){let r=e[n],i=!1;for(let e of Ke){let n=e.regex.exec(r);if(!n)continue;let a=r.slice(0,-n[0].length);if(i=!0,e.kind===`event`){let e=n[1].split(`.`),i=e[0],o=e.slice(1);t.push({kind:`event`,modifiers:o,name:i,prefix:a,raw:r})}else e.kind===`ref`?t.push({kind:`ref`,prefix:a,raw:r}):e.kind===`boolAttr`?t.push({kind:`boolAttr`,mode:`bool`,name:n[1],prefix:a,raw:r}):e.kind===`attr`&&t.push({kind:`attr`,mode:`attr`,name:n[1],prefix:a,raw:r});break}i||t.push({kind:`node`,prefix:r,raw:r})}return{slots:t,tail:e[e.length-1]??``}},Qe=e=>{let t=X.get(e);return t||(t=Ze(e),X.set(e,t)),t},$e=(t,n)=>{let r=Qe(t),s=``,c=[],l=null,u=x(),d=e=>e.lastIndexOf(`<`)>e.lastIndexOf(`>`),f=e=>((!l||d(e))&&(l=u()),l),p=()=>{l=null};for(let t=0;t<r.slots.length;t++){let a=r.slots[t],l=n[t];if(a.kind===`event`){if(typeof l==`function`){let e=f(a.prefix),{handler:t,options:n}=Je(l,a.modifiers??[]);s+=`${a.prefix} u="${e}"`,c.push({handler:t,name:a.name,options:n,type:`event`,uid:e})}else if((0,e.isSignal)(l)){let e=f(a.prefix),{handler:t,options:n}=Je(e=>{let t=l.value;typeof t==`function`&&t(e)},a.modifiers??[]);s+=`${a.prefix} u="${e}"`,c.push({handler:t,name:a.name,options:n,type:`event`,uid:e})}else s+=a.raw;continue}if(a.kind===`ref`){if(l){let e=f(a.prefix);s+=`${a.prefix} u="${e}"`,c.push({ref:l,type:`ref`,uid:e})}else s+=a.raw;continue}if(a.kind===`boolAttr`||a.kind===`attr`){let e=f(a.prefix);s+=`${a.prefix} u="${e}"`,c.push(Be(a.mode,a.name,e,l));continue}if(a.kind===`node`){if(p(),i(l)){let e=u();s+=`${a.raw}<!--${e}-->`,c.push({directive:l,type:`directive`,uid:e});continue}let t=Xe(l);if(t){let e=u();s+=`${a.raw}<!--${e}-->`,c.push({signal:t.signal,type:`html`,uid:e});continue}if(Array.isArray(l)){let e=``;for(let t of l)if(o(t)){let n=S(t,u);e+=n.html,c.push(...n.bindings)}else e+=$(t);s+=a.raw+e;continue}if((0,e.isSignal)(l)){let e=u();s+=`${a.raw}<!--${e}-->`,c.push({signal:l,type:`text`,uid:e})}else if(o(l)){let e=S(l,u);s+=a.raw+e.html,c.push(...e.bindings)}else s+=a.raw+$(l);continue}}return s+=r.tail,a(s,c)},et=(e,...t)=>$e(e,t),tt=(e,t)=>o(e)?S(e,t):{bindings:[],html:h(e)},nt=e=>o(e)?e:a(h(e));function rt(e,n,r){let i=``,a=[],o=[],s=new Set,c=[],l=x();for(let u=0;u<e.length;u++){let d=r(e[u],u);if(s.has(d))throw Error(t.eachDuplicateKey(String(d),u));s.add(d),o.push(d);let f=tt(n(e[u],u),l);i+=f.html,a.push(...f.bindings),c.push(f)}return{bindings:a,html:i,keys:o,rendered:c}}function it(t,n){let{fallback:r,key:i,render:a}=n;return{__craftitDirective:!0,mount:(n,o)=>{let c=new Map,d=[],f=[],p=()=>{u(d),d=[],l(f),f=[]},m=()=>{for(let[,e]of c)u(e.nodes),l(e.cleanups);c.clear()};o((0,e.effect)(()=>{let o=n.parentNode;o&&(0,e.batch)(()=>{let h=t.value;if(!h.length){if(m(),p(),!r)return;let e=s(nt(r())),t=H(e.html);d=Array.from(t.childNodes),n.after(t);let i=e=>f.push(e);K(e.bindings,i,U(d),{onHtml:e=>J(o,e,i)});return}p();let{keys:g,rendered:_}=rt(h,a,i),v=new Map,y=[];for(let e=0;e<g.length;e++){let t=g[e],n=_[e],r=c.get(t),i,a=[];if(r&&r.html===n.html)i=r.nodes,l(r.cleanups);else{r&&(u(r.nodes),l(r.cleanups));let e=H(n.html);i=Array.from(e.childNodes)}y.push({item:n,key:t,nodes:i}),v.set(t,{cleanups:a,html:n.html,nodes:i})}for(let[e,t]of c)v.has(e)||(u(t.nodes),l(t.cleanups));let b=n;for(let t of y){for(let e of t.nodes)o.insertBefore(e,b.nextSibling),b=e;let n=v.get(t.key);if(!n)continue;let r=e=>n.cleanups.push(e);(0,e.untrack)(()=>{K(t.item.bindings,r,U(t.nodes),{onHtml:e=>J(o,e,r)})})}c=v})})),o(()=>{p(),m()})}}}var at=t=>(0,e.computed)(()=>Object.entries(t).filter(([,t])=>typeof t==`function`?t():(0,e.isSignal)(t)?t.value:t).map(([e])=>e).join(` `)),ot=t=>{let n=typeof t==`function`?t():(0,e.isSignal)(t)?t.value:t;return n==null||n===!1?``:String(n)},st=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),ct=t=>(0,e.computed)(()=>{let e=[];for(let[n,r]of Object.entries(t)){let t=ot(r);t&&e.push(`${st(n)}:${t}`)}return e.join(`;`)}),lt=t=>typeof t==`function`?t():(0,e.isSignal)(t)?t.value:t;function ut(t,n,r){return(0,e.computed)(()=>lt(t)?n():r?r():``)}var dt=t=>typeof t==`function`?t():(0,e.isSignal)(t)?t.value:t,ft=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n]))return!1;return!0};function pt(t,n){let r=!1,i=[],a=``;return(0,e.computed)(()=>{let o=(Array.isArray(t)?t:[t]).map(e=>dt(e));return(!r||!ft(i,o))&&(a=(0,e.untrack)(n),i=o,r=!0),a})}function mt(n,r){let i=(0,e.signal)({data:void 0,error:void 0,pending:!0}),a;if(!k((0,e.effect)(()=>{let e=n(),t=new AbortController;return i.value={data:a,error:void 0,pending:!0},r(e,t.signal).then(e=>{t.signal.aborted||(a=e,i.value={data:e,error:void 0,pending:!1})}).catch(e=>{t.signal.aborted||(i.value={data:a,error:e,pending:!1})}),()=>t.abort()})))throw Error(t.lifecycleOutsideSetup);return i}function ht(t){return(0,e.isSignal)(t)?(0,e.computed)(()=>a(t.value)):a(t)}Object.defineProperty(exports,`batch`,{enumerable:!0,get:function(){return e.batch}}),exports.classMap=at,Object.defineProperty(exports,`computed`,{enumerable:!0,get:function(){return e.computed}}),exports.createContext=le,exports.createId=b,exports.css=ne,exports.define=We,exports.defineField=Ge,exports.each=it,exports.effect=M,exports.guard=pt,exports.html=et,exports.inject=P,exports.injectStrict=ce,Object.defineProperty(exports,`isSignal`,{enumerable:!0,get:function(){return e.isSignal}}),exports.listen=ae,exports.live=Oe,exports.on=ie,exports.onCleanup=A,exports.onElement=oe,exports.onMounted=j,exports.prop=ye,exports.provide=se,exports.raw=ht,exports.ref=n,exports.refs=r,exports.resource=mt,Object.defineProperty(exports,`scope`,{enumerable:!0,get:function(){return e.scope}}),Object.defineProperty(exports,`signal`,{enumerable:!0,get:function(){return e.signal}}),exports.styleMap=ct,exports.syncAria=fe,Object.defineProperty(exports,`untrack`,{enumerable:!0,get:function(){return e.untrack}}),Object.defineProperty(exports,`watch`,{enumerable:!0,get:function(){return e.watch}}),exports.when=ut;
|
|
2
2
|
//# sourceMappingURL=craftit.cjs.map
|