@spinjs/components 0.1.0-preview.2 → 0.2.0-alpha.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 +15 -5
- package/dist/angle-slider/angle-slider.events.d.ts +2 -3
- package/dist/angle-slider/angle-slider.machine.d.ts +4 -5
- package/dist/angle-slider/angle-slider.machine.js +2 -2
- package/dist/angle-slider/angle-slider.presentation.d.ts +10 -11
- package/dist/angle-slider/angle-slider.presentation.js +2 -2
- package/dist/angle-slider/angle-slider.state.d.ts +1 -2
- package/dist/angle-slider/angle-slider.state.js +1 -1
- package/dist/angle-slider/angle-slider.transitions.d.ts +2 -3
- package/dist/angle-slider/examples/basic.html +2 -2
- package/dist/angle-slider/examples/basic.html.js +5 -0
- package/dist/angle-slider/examples/knob.html +1 -1
- package/dist/angle-slider/examples/knob.html.js +5 -0
- package/dist/angle-slider/examples/labeled.html +11 -11
- package/dist/angle-slider/examples/labeled.html.js +5 -0
- package/dist/angle-slider/examples/marks.html +2 -2
- package/dist/angle-slider/examples/marks.html.js +5 -0
- package/dist/async-list/async-list.events.d.ts +2 -3
- package/dist/async-list/async-list.machine.d.ts +2 -3
- package/dist/async-list/async-list.machine.js +1 -1
- package/dist/async-list/async-list.presentation.d.ts +13 -14
- package/dist/async-list/async-list.presentation.js +2 -2
- package/dist/async-list/async-list.state.d.ts +1 -2
- package/dist/async-list/async-list.state.js +1 -1
- package/dist/async-list/async-list.transitions.d.ts +3 -4
- package/dist/async-list/examples/basic.html +7 -7
- package/dist/async-list/examples/basic.html.js +5 -0
- package/dist/avatar/avatar.events.d.ts +2 -3
- package/dist/avatar/avatar.machine.d.ts +12 -4
- package/dist/avatar/avatar.machine.js +1 -1
- package/dist/avatar/avatar.presentation.d.ts +5 -6
- package/dist/avatar/avatar.presentation.js +1 -1
- package/dist/avatar/avatar.state.d.ts +1 -2
- package/dist/avatar/avatar.state.js +1 -1
- package/dist/avatar/avatar.transitions.d.ts +2 -3
- package/dist/avatar/examples/badge.html +2 -2
- package/dist/avatar/examples/badge.html.js +5 -0
- package/dist/avatar/examples/badgeminimal.html +1 -1
- package/dist/avatar/examples/badgeminimal.html.js +5 -0
- package/dist/avatar/examples/basic.html +1 -1
- package/dist/avatar/examples/basic.html.js +5 -0
- package/dist/avatar/examples/count.html +5 -5
- package/dist/avatar/examples/count.html.js +5 -0
- package/dist/avatar/examples/fallback.html +1 -1
- package/dist/avatar/examples/fallback.html.js +5 -0
- package/dist/avatar/examples/group.html +4 -4
- package/dist/avatar/examples/group.html.js +5 -0
- package/dist/avatar/examples/icon.html +2 -2
- package/dist/avatar/examples/icon.html.js +5 -0
- package/dist/avatar/examples/multiples.html +4 -4
- package/dist/avatar/examples/multiples.html.js +5 -0
- package/dist/avatar/examples/pills.html +12 -12
- package/dist/avatar/examples/pills.html.js +5 -0
- package/dist/avatar/examples/pillsolid.html +4 -4
- package/dist/avatar/examples/pillsolid.html.js +5 -0
- package/dist/avatar/examples/rounded.html +1 -1
- package/dist/avatar/examples/rounded.html.js +5 -0
- package/dist/avatar/examples/status.html +2 -2
- package/dist/avatar/examples/status.html.js +5 -0
- package/dist/avatar/examples/statusminimal.html +1 -1
- package/dist/avatar/examples/statusminimal.html.js +5 -0
- package/dist/avatar/examples/trusted.html +6 -6
- package/dist/avatar/examples/trusted.html.js +5 -0
- package/dist/avatar/examples/verification.html +3 -3
- package/dist/avatar/examples/verification.html.js +5 -0
- package/dist/carousel/carousel.events.d.ts +2 -3
- package/dist/carousel/carousel.machine.d.ts +3 -4
- package/dist/carousel/carousel.machine.js +1 -1
- package/dist/carousel/carousel.presentation.d.ts +14 -15
- package/dist/carousel/carousel.presentation.js +2 -2
- package/dist/carousel/carousel.state.d.ts +1 -2
- package/dist/carousel/carousel.state.js +1 -1
- package/dist/carousel/carousel.transitions.d.ts +2 -3
- package/dist/carousel/examples/autoplay.html +8 -8
- package/dist/carousel/examples/autoplay.html.js +5 -0
- package/dist/carousel/examples/basic.html +7 -7
- package/dist/carousel/examples/basic.html.js +5 -0
- package/dist/carousel/examples/cards.html +8 -8
- package/dist/carousel/examples/cards.html.js +5 -0
- package/dist/carousel/examples/hero.html +6 -6
- package/dist/carousel/examples/hero.html.js +5 -0
- package/dist/carousel/examples/infinite.html +7 -7
- package/dist/carousel/examples/infinite.html.js +5 -0
- package/dist/carousel/examples/minimal.html +5 -5
- package/dist/carousel/examples/minimal.html.js +5 -0
- package/dist/carousel/examples/testimonials.html +10 -10
- package/dist/carousel/examples/testimonials.html.js +5 -0
- package/dist/carousel/examples/thumbnails.html +8 -8
- package/dist/carousel/examples/thumbnails.html.js +5 -0
- package/dist/carousel/examples/vertical.html +8 -8
- package/dist/carousel/examples/vertical.html.js +5 -0
- package/dist/cascade-select/cascade.events.d.ts +2 -3
- package/dist/cascade-select/cascade.machine.d.ts +3 -4
- package/dist/cascade-select/cascade.machine.js +1 -1
- package/dist/cascade-select/cascade.presentation.d.ts +8 -9
- package/dist/cascade-select/cascade.presentation.js +12 -12
- package/dist/cascade-select/cascade.state.d.ts +1 -2
- package/dist/cascade-select/cascade.state.js +1 -1
- package/dist/cascade-select/cascade.transitions.d.ts +2 -3
- package/dist/cascade-select/examples/basic.html +13 -11
- package/dist/cascade-select/examples/basic.html.js +5 -0
- package/dist/color-picker/color-picker.events.d.ts +3 -4
- package/dist/color-picker/color-picker.machine.d.ts +3 -3
- package/dist/color-picker/color-picker.machine.js +1 -1
- package/dist/color-picker/color-picker.presentation.d.ts +18 -19
- package/dist/color-picker/color-picker.presentation.js +4 -5
- package/dist/color-picker/color-picker.state.d.ts +2 -3
- package/dist/color-picker/color-picker.state.js +2 -2
- package/dist/color-picker/color-picker.transitions.d.ts +3 -4
- package/dist/color-picker/color.d.ts +39 -0
- package/dist/color-picker/color.js +401 -0
- package/dist/color-picker/examples/basic.html +14 -14
- package/dist/color-picker/examples/basic.html.js +5 -0
- package/dist/color-picker/examples/hue-wheel.html +9 -9
- package/dist/color-picker/examples/hue-wheel.html.js +5 -0
- package/dist/color-picker/examples/inline.html +8 -8
- package/dist/color-picker/examples/inline.html.js +5 -0
- package/dist/color-picker/examples/with-presets.html +10 -10
- package/dist/color-picker/examples/with-presets.html.js +5 -0
- package/dist/combobox/combobox.events.d.ts +2 -3
- package/dist/combobox/combobox.machine.d.ts +3 -4
- package/dist/combobox/combobox.machine.js +1 -1
- package/dist/combobox/combobox.presentation.d.ts +8 -9
- package/dist/combobox/combobox.presentation.js +3 -3
- package/dist/combobox/combobox.state.d.ts +1 -2
- package/dist/combobox/combobox.state.js +1 -1
- package/dist/combobox/combobox.transitions.d.ts +3 -4
- package/dist/combobox/examples/basic.html +7 -7
- package/dist/combobox/examples/basic.html.js +5 -0
- package/dist/combobox/examples/directory.html +7 -7
- package/dist/combobox/examples/directory.html.js +5 -0
- package/dist/combobox/examples/grouping.html +7 -7
- package/dist/combobox/examples/grouping.html.js +5 -0
- package/dist/combobox/examples/multiple.html +8 -8
- package/dist/combobox/examples/multiple.html.js +5 -0
- package/dist/compiler/emit.d.ts +6 -0
- package/dist/compiler/emit.js +217 -0
- package/dist/compiler/transform.d.ts +52 -0
- package/dist/compiler/transform.js +169 -0
- package/dist/controller.d.ts +2 -3
- package/dist/controller.js +1 -1
- package/dist/date-input/date-input.events.d.ts +2 -3
- package/dist/date-input/date-input.machine.d.ts +3 -3
- package/dist/date-input/date-input.machine.js +1 -1
- package/dist/date-input/date-input.presentation.d.ts +6 -7
- package/dist/date-input/date-input.presentation.js +1 -1
- package/dist/date-input/date-input.state.d.ts +1 -2
- package/dist/date-input/date-input.state.js +1 -1
- package/dist/date-input/date-input.transitions.d.ts +3 -4
- package/dist/date-input/examples/basic.html +3 -3
- package/dist/date-input/examples/basic.html.js +5 -0
- package/dist/date-picker/date-picker.events.d.ts +2 -3
- package/dist/date-picker/date-picker.machine.d.ts +2 -3
- package/dist/date-picker/date-picker.machine.js +1 -1
- package/dist/date-picker/date-picker.presentation.d.ts +14 -15
- package/dist/date-picker/date-picker.presentation.js +2 -2
- package/dist/date-picker/date-picker.state.d.ts +1 -2
- package/dist/date-picker/date-picker.state.js +1 -1
- package/dist/date-picker/date-picker.transitions.d.ts +3 -4
- package/dist/date-picker/examples/appointment.html +7 -7
- package/dist/date-picker/examples/appointment.html.js +5 -0
- package/dist/date-picker/examples/basic.html.js +5 -0
- package/dist/date-picker/examples/multiple.html.js +5 -0
- package/dist/date-picker/examples/pricing.html.js +5 -0
- package/dist/date-picker/examples/range.html.js +5 -0
- package/dist/date-picker/examples/unavailable.html.js +5 -0
- package/dist/editable/editable.events.d.ts +2 -3
- package/dist/editable/editable.machine.d.ts +3 -4
- package/dist/editable/editable.machine.js +1 -1
- package/dist/editable/editable.presentation.d.ts +6 -7
- package/dist/editable/editable.presentation.js +1 -1
- package/dist/editable/editable.state.d.ts +1 -2
- package/dist/editable/editable.state.js +1 -1
- package/dist/editable/editable.transitions.d.ts +3 -4
- package/dist/editable/examples/basic.html +7 -7
- package/dist/editable/examples/basic.html.js +5 -0
- package/dist/editable/examples/doubleclick.html +6 -6
- package/dist/editable/examples/doubleclick.html.js +5 -0
- package/dist/editable/examples/inline-edit.html +4 -4
- package/dist/editable/examples/inline-edit.html.js +5 -0
- package/dist/editable/examples/profile-field.html +7 -7
- package/dist/editable/examples/profile-field.html.js +5 -0
- package/dist/editable/examples/resize.html +6 -6
- package/dist/editable/examples/resize.html.js +5 -0
- package/dist/editable/examples/task-item.html +7 -7
- package/dist/editable/examples/task-item.html.js +5 -0
- package/dist/editable/examples/title-editor.html +3 -3
- package/dist/editable/examples/title-editor.html.js +5 -0
- package/dist/editable/examples/with-controls.html +4 -4
- package/dist/editable/examples/with-controls.html.js +5 -0
- package/dist/examples.d.ts +22 -0
- package/dist/examples.js +501 -0
- package/dist/file-upload/examples/avatar.html +8 -8
- package/dist/file-upload/examples/avatar.html.js +5 -0
- package/dist/file-upload/examples/basic.html +8 -8
- package/dist/file-upload/examples/basic.html.js +5 -0
- package/dist/file-upload/examples/directory.html +8 -8
- package/dist/file-upload/examples/directory.html.js +5 -0
- package/dist/file-upload/examples/dragdrop.html +8 -8
- package/dist/file-upload/examples/dragdrop.html.js +5 -0
- package/dist/file-upload/examples/files.html +9 -9
- package/dist/file-upload/examples/files.html.js +5 -0
- package/dist/file-upload/examples/images.html +8 -8
- package/dist/file-upload/examples/images.html.js +5 -0
- package/dist/file-upload/examples/paste.html +8 -8
- package/dist/file-upload/examples/paste.html.js +5 -0
- package/dist/file-upload/examples/table.html +7 -7
- package/dist/file-upload/examples/table.html.js +5 -0
- package/dist/file-upload/file-upload.events.d.ts +2 -3
- package/dist/file-upload/file-upload.machine.d.ts +5 -3
- package/dist/file-upload/file-upload.machine.js +1 -1
- package/dist/file-upload/file-upload.presentation.d.ts +10 -11
- package/dist/file-upload/file-upload.presentation.js +1 -1
- package/dist/file-upload/file-upload.state.d.ts +1 -2
- package/dist/file-upload/file-upload.state.js +1 -1
- package/dist/file-upload/file-upload.transitions.d.ts +3 -4
- package/dist/floating-panel/examples/basic.html +22 -23
- package/dist/floating-panel/examples/basic.html.js +5 -0
- package/dist/floating-panel/examples/calculator.html +41 -41
- package/dist/floating-panel/examples/calculator.html.js +5 -0
- package/dist/floating-panel/examples/chat.html +29 -29
- package/dist/floating-panel/examples/chat.html.js +5 -0
- package/dist/floating-panel/examples/media-player.html +27 -27
- package/dist/floating-panel/examples/media-player.html.js +5 -0
- package/dist/floating-panel/examples/notes.html +36 -36
- package/dist/floating-panel/examples/notes.html.js +5 -0
- package/dist/floating-panel/examples/settings.html +34 -34
- package/dist/floating-panel/examples/settings.html.js +5 -0
- package/dist/floating-panel/examples/task.html +40 -40
- package/dist/floating-panel/examples/task.html.js +5 -0
- package/dist/floating-panel/examples/video-call.html +25 -25
- package/dist/floating-panel/examples/video-call.html.js +5 -0
- package/dist/floating-panel/floating-panel.events.d.ts +2 -3
- package/dist/floating-panel/floating-panel.machine.d.ts +2 -3
- package/dist/floating-panel/floating-panel.machine.js +1 -1
- package/dist/floating-panel/floating-panel.presentation.d.ts +11 -13
- package/dist/floating-panel/floating-panel.presentation.js +3 -6
- package/dist/floating-panel/floating-panel.state.d.ts +1 -2
- package/dist/floating-panel/floating-panel.state.js +1 -1
- package/dist/floating-panel/floating-panel.transitions.d.ts +3 -4
- package/dist/hover-card/examples/basic.html +5 -5
- package/dist/hover-card/examples/basic.html.js +5 -0
- package/dist/hover-card/examples/controlled.html +9 -10
- package/dist/hover-card/examples/controlled.html.js +5 -0
- package/dist/hover-card/examples/custom-positioning.html +8 -8
- package/dist/hover-card/examples/custom-positioning.html.js +5 -0
- package/dist/hover-card/examples/link.html +2 -2
- package/dist/hover-card/examples/link.html.js +5 -0
- package/dist/hover-card/examples/product.html +9 -9
- package/dist/hover-card/examples/product.html.js +5 -0
- package/dist/hover-card/examples/user.html +11 -11
- package/dist/hover-card/examples/user.html.js +5 -0
- package/dist/hover-card/examples/with-arrow.html +9 -9
- package/dist/hover-card/examples/with-arrow.html.js +5 -0
- package/dist/hover-card/hover-card.controller-def.d.ts +2 -4
- package/dist/hover-card/hover-card.controller-def.js +1 -1
- package/dist/image-cropper/crop-geometry.d.ts +1 -2
- package/dist/image-cropper/crop-geometry.js +1 -1
- package/dist/image-cropper/examples/basic.html +3 -3
- package/dist/image-cropper/examples/basic.html.js +5 -0
- package/dist/image-cropper/examples/circle.html +3 -3
- package/dist/image-cropper/examples/circle.html.js +5 -0
- package/dist/image-cropper/image-cropper.events.d.ts +2 -3
- package/dist/image-cropper/image-cropper.machine.d.ts +3 -4
- package/dist/image-cropper/image-cropper.machine.js +2 -2
- package/dist/image-cropper/image-cropper.presentation.d.ts +7 -8
- package/dist/image-cropper/image-cropper.presentation.js +2 -2
- package/dist/image-cropper/image-cropper.state.d.ts +1 -2
- package/dist/image-cropper/image-cropper.state.js +1 -1
- package/dist/image-cropper/image-cropper.transitions.d.ts +3 -4
- package/dist/index.d.ts +28 -13
- package/dist/index.js +21 -14
- package/dist/listbox/examples/basic.html +9 -9
- package/dist/listbox/examples/basic.html.js +5 -0
- package/dist/listbox/examples/controlled.html +9 -9
- package/dist/listbox/examples/controlled.html.js +5 -0
- package/dist/listbox/examples/countries.html +9 -9
- package/dist/listbox/examples/countries.html.js +5 -0
- package/dist/listbox/examples/grouped.html +9 -9
- package/dist/listbox/examples/grouped.html.js +5 -0
- package/dist/listbox/examples/icons.html +10 -10
- package/dist/listbox/examples/icons.html.js +5 -0
- package/dist/listbox/examples/multiple.html +9 -9
- package/dist/listbox/examples/multiple.html.js +5 -0
- package/dist/listbox/examples/priority.html +9 -9
- package/dist/listbox/examples/priority.html.js +5 -0
- package/dist/listbox/examples/settings.html +9 -9
- package/dist/listbox/examples/settings.html.js +5 -0
- package/dist/listbox/listbox.events.d.ts +2 -3
- package/dist/listbox/listbox.machine.d.ts +2 -3
- package/dist/listbox/listbox.machine.js +1 -1
- package/dist/listbox/listbox.presentation.d.ts +6 -5
- package/dist/listbox/listbox.presentation.js +1 -1
- package/dist/listbox/listbox.state.d.ts +1 -2
- package/dist/listbox/listbox.state.js +1 -1
- package/dist/listbox/listbox.transitions.d.ts +3 -4
- package/dist/menu/examples/basic.html +15 -13
- package/dist/menu/examples/basic.html.js +5 -0
- package/dist/menu/examples/context.html +14 -12
- package/dist/menu/examples/context.html.js +5 -0
- package/dist/menu/examples/groups.html +15 -13
- package/dist/menu/examples/groups.html.js +5 -0
- package/dist/menu/examples/icons.html +17 -15
- package/dist/menu/examples/icons.html.js +5 -0
- package/dist/menu/examples/nested.html +15 -13
- package/dist/menu/examples/nested.html.js +5 -0
- package/dist/menu/examples/user.html +21 -19
- package/dist/menu/examples/user.html.js +5 -0
- package/dist/menu/menu.events.d.ts +2 -3
- package/dist/menu/menu.machine.d.ts +2 -3
- package/dist/menu/menu.machine.js +1 -1
- package/dist/menu/menu.presentation.d.ts +6 -8
- package/dist/menu/menu.presentation.js +4 -5
- package/dist/menu/menu.state.d.ts +1 -2
- package/dist/menu/menu.state.js +1 -1
- package/dist/mode-picker/examples/basic.html +1 -1
- package/dist/mode-picker/examples/basic.html.js +5 -0
- package/dist/mode-picker/examples/minimal.html +1 -1
- package/dist/mode-picker/examples/minimal.html.js +5 -0
- package/dist/mode-picker/examples/pill.html +1 -1
- package/dist/mode-picker/examples/pill.html.js +5 -0
- package/dist/mode-picker/mode-picker.events.d.ts +2 -3
- package/dist/mode-picker/mode-picker.machine.d.ts +3 -3
- package/dist/mode-picker/mode-picker.machine.js +1 -1
- package/dist/mode-picker/mode-picker.presentation.d.ts +7 -8
- package/dist/mode-picker/mode-picker.presentation.js +2 -2
- package/dist/mode-picker/mode-picker.state.d.ts +1 -2
- package/dist/mode-picker/mode-picker.transitions.d.ts +3 -4
- package/dist/navigation-menu/examples/basic.html +6 -6
- package/dist/navigation-menu/examples/basic.html.js +5 -0
- package/dist/navigation-menu/examples/grouped.html +14 -12
- package/dist/navigation-menu/examples/grouped.html.js +5 -0
- package/dist/navigation-menu/examples/minimal.html +7 -5
- package/dist/navigation-menu/examples/minimal.html.js +5 -0
- package/dist/navigation-menu/navigation-menu.events.d.ts +2 -3
- package/dist/navigation-menu/navigation-menu.machine.d.ts +3 -3
- package/dist/navigation-menu/navigation-menu.machine.js +1 -1
- package/dist/navigation-menu/navigation-menu.presentation.d.ts +6 -7
- package/dist/navigation-menu/navigation-menu.presentation.js +2 -2
- package/dist/navigation-menu/navigation-menu.state.d.ts +1 -2
- package/dist/navigation-menu/navigation-menu.state.js +1 -1
- package/dist/navigation-menu/navigation-menu.transitions.d.ts +3 -4
- package/dist/number-input/examples/basic.html +10 -10
- package/dist/number-input/examples/basic.html.js +5 -0
- package/dist/number-input/examples/currency.html +6 -6
- package/dist/number-input/examples/currency.html.js +5 -0
- package/dist/number-input/examples/decimal.html +4 -4
- package/dist/number-input/examples/decimal.html.js +5 -0
- package/dist/number-input/examples/limits.html +6 -6
- package/dist/number-input/examples/limits.html.js +5 -0
- package/dist/number-input/examples/percentage.html +6 -6
- package/dist/number-input/examples/percentage.html.js +5 -0
- package/dist/number-input/examples/quantity.html +6 -6
- package/dist/number-input/examples/quantity.html.js +5 -0
- package/dist/number-input/examples/scrubber.html +11 -11
- package/dist/number-input/examples/scrubber.html.js +5 -0
- package/dist/number-input/examples/wheel.html +7 -7
- package/dist/number-input/examples/wheel.html.js +5 -0
- package/dist/number-input/number-input.events.d.ts +2 -3
- package/dist/number-input/number-input.machine.d.ts +4 -4
- package/dist/number-input/number-input.machine.js +1 -1
- package/dist/number-input/number-input.presentation.d.ts +7 -8
- package/dist/number-input/number-input.presentation.js +4 -4
- package/dist/number-input/number-input.state.d.ts +1 -2
- package/dist/number-input/number-input.state.js +1 -1
- package/dist/number-input/number-input.transitions.d.ts +3 -4
- package/dist/pagination/examples/basic.html +2 -2
- package/dist/pagination/examples/basic.html.js +5 -0
- package/dist/pagination/examples/dropdown.html +2 -2
- package/dist/pagination/examples/dropdown.html.js +5 -0
- package/dist/pagination/examples/info.html +3 -3
- package/dist/pagination/examples/info.html.js +5 -0
- package/dist/pagination/examples/jump.html +2 -2
- package/dist/pagination/examples/jump.html.js +5 -0
- package/dist/pagination/examples/numbered.html +2 -2
- package/dist/pagination/examples/numbered.html.js +5 -0
- package/dist/pagination/examples/pagesize.html +4 -4
- package/dist/pagination/examples/pagesize.html.js +5 -0
- package/dist/pagination/pagination.events.d.ts +2 -3
- package/dist/pagination/pagination.machine.d.ts +4 -4
- package/dist/pagination/pagination.machine.js +1 -1
- package/dist/pagination/pagination.presentation.d.ts +4 -5
- package/dist/pagination/pagination.presentation.js +1 -1
- package/dist/pagination/pagination.state.d.ts +1 -2
- package/dist/pagination/pagination.state.js +1 -1
- package/dist/pagination/pagination.transitions.d.ts +2 -3
- package/dist/pin-input/examples/basic.html +2 -2
- package/dist/pin-input/examples/basic.html.js +5 -0
- package/dist/pin-input/examples/field.html +4 -4
- package/dist/pin-input/examples/field.html.js +5 -0
- package/dist/pin-input/examples/masked.html +3 -3
- package/dist/pin-input/examples/masked.html.js +5 -0
- package/dist/pin-input/examples/placeholder.html +3 -3
- package/dist/pin-input/examples/placeholder.html.js +5 -0
- package/dist/pin-input/examples/twofactor.html +4 -4
- package/dist/pin-input/examples/twofactor.html.js +5 -0
- package/dist/pin-input/examples/verification.html +6 -6
- package/dist/pin-input/examples/verification.html.js +5 -0
- package/dist/pin-input/pin-input.events.d.ts +2 -3
- package/dist/pin-input/pin-input.machine.d.ts +3 -3
- package/dist/pin-input/pin-input.machine.js +1 -1
- package/dist/pin-input/pin-input.presentation.d.ts +4 -5
- package/dist/pin-input/pin-input.presentation.js +2 -2
- package/dist/pin-input/pin-input.state.d.ts +1 -2
- package/dist/pin-input/pin-input.state.js +1 -1
- package/dist/pin-input/pin-input.transitions.d.ts +1 -2
- package/dist/popover/examples/basic.html +4 -4
- package/dist/popover/examples/basic.html.js +5 -0
- package/dist/popover/examples/feedback.html +5 -5
- package/dist/popover/examples/feedback.html.js +5 -0
- package/dist/popover/examples/notifications.html +5 -5
- package/dist/popover/examples/notifications.html.js +5 -0
- package/dist/popover/examples/settings.html +8 -8
- package/dist/popover/examples/settings.html.js +5 -0
- package/dist/popover/examples/share.html +5 -5
- package/dist/popover/examples/share.html.js +5 -0
- package/dist/popover/examples/user.html +10 -10
- package/dist/popover/examples/user.html.js +5 -0
- package/dist/popover/popover.controller-def.d.ts +2 -4
- package/dist/popover/popover.controller-def.js +1 -1
- package/dist/rating-group/examples/basic.html +9 -9
- package/dist/rating-group/examples/basic.html.js +5 -0
- package/dist/rating-group/examples/movie.html +11 -11
- package/dist/rating-group/examples/movie.html.js +5 -0
- package/dist/rating-group/examples/product-review.html +13 -13
- package/dist/rating-group/examples/product-review.html.js +5 -0
- package/dist/rating-group/examples/service-evaluation.html +5 -5
- package/dist/rating-group/examples/service-evaluation.html.js +5 -0
- package/dist/rating-group/rating-group.events.d.ts +2 -3
- package/dist/rating-group/rating-group.machine.d.ts +2 -3
- package/dist/rating-group/rating-group.machine.js +1 -1
- package/dist/rating-group/rating-group.presentation.d.ts +6 -7
- package/dist/rating-group/rating-group.presentation.js +2 -2
- package/dist/rating-group/rating-group.state.d.ts +1 -2
- package/dist/rating-group/rating-group.state.js +1 -1
- package/dist/rating-group/rating-group.transitions.d.ts +3 -4
- package/dist/react/react.d.ts +2 -3
- package/dist/runtime/actions/action.d.ts +64 -0
- package/dist/runtime/actions/action.js +45 -0
- package/dist/runtime/actions/anchor.d.ts +43 -0
- package/dist/runtime/actions/anchor.js +127 -0
- package/dist/runtime/actions/date-picker-focus.d.ts +19 -0
- package/dist/runtime/actions/date-picker-focus.js +16 -0
- package/dist/runtime/actions/drag.d.ts +66 -0
- package/dist/runtime/actions/drag.js +118 -0
- package/dist/runtime/actions/form-control.d.ts +18 -0
- package/dist/runtime/actions/form-control.js +41 -0
- package/dist/runtime/actions/hover-delay.d.ts +26 -0
- package/dist/runtime/actions/hover-delay.js +61 -0
- package/dist/runtime/actions/index.d.ts +113 -0
- package/dist/runtime/actions/index.js +240 -0
- package/dist/runtime/actions/infinite-scroll.d.ts +22 -0
- package/dist/runtime/actions/infinite-scroll.js +33 -0
- package/dist/runtime/actions/interact-outside.d.ts +43 -0
- package/dist/runtime/actions/interact-outside.js +72 -0
- package/dist/runtime/actions/observe.d.ts +27 -0
- package/dist/runtime/actions/observe.js +25 -0
- package/dist/runtime/actions/scroll-into-view.d.ts +32 -0
- package/dist/runtime/actions/scroll-into-view.js +36 -0
- package/dist/runtime/actions/select-focus.d.ts +17 -0
- package/dist/runtime/actions/select-focus.js +16 -0
- package/dist/runtime/actions/select-options.d.ts +25 -0
- package/dist/runtime/actions/select-options.js +27 -0
- package/dist/runtime/actions/toast-actions.d.ts +65 -0
- package/dist/runtime/actions/toast-actions.js +143 -0
- package/dist/runtime/aria.d.ts +231 -0
- package/dist/runtime/aria.js +193 -0
- package/dist/runtime/component/define.d.ts +242 -0
- package/dist/runtime/component/define.js +12 -0
- package/dist/runtime/component/ids.d.ts +14 -0
- package/dist/runtime/component/ids.js +35 -0
- package/dist/runtime/component/synthesize.d.ts +32 -0
- package/dist/runtime/component/synthesize.js +385 -0
- package/dist/runtime/core/signal.d.ts +57 -0
- package/dist/runtime/core/signal.js +100 -0
- package/dist/runtime/core/style.d.ts +14 -0
- package/dist/runtime/core/style.js +31 -0
- package/dist/runtime/directives/bind.d.ts +38 -0
- package/dist/runtime/directives/bind.js +244 -0
- package/dist/runtime/directives/for.d.ts +12 -0
- package/dist/runtime/directives/for.js +104 -0
- package/dist/runtime/directives/if.d.ts +10 -0
- package/dist/runtime/directives/if.js +45 -0
- package/dist/runtime/directives/load.d.ts +13 -0
- package/dist/runtime/directives/load.js +119 -0
- package/dist/runtime/directives/spread.d.ts +17 -0
- package/dist/runtime/directives/spread.js +121 -0
- package/dist/runtime/directives/tpl.d.ts +11 -0
- package/dist/runtime/directives/tpl.js +39 -0
- package/dist/runtime/directives/use.d.ts +13 -0
- package/dist/runtime/directives/use.js +34 -0
- package/dist/runtime/index.d.ts +101 -0
- package/dist/runtime/index.js +40 -0
- package/dist/runtime/machine/fsm/machine.d.ts +192 -0
- package/dist/runtime/machine/fsm/machine.js +248 -0
- package/dist/runtime/math/index.d.ts +2 -0
- package/dist/runtime/math/index.js +1 -0
- package/dist/runtime/math/numbers.d.ts +58 -0
- package/dist/runtime/math/numbers.js +115 -0
- package/dist/runtime/props.d.ts +61 -0
- package/dist/runtime/props.js +113 -0
- package/dist/runtime/scope/element.d.ts +86 -0
- package/dist/runtime/scope/element.js +226 -0
- package/dist/runtime/scope/table.d.ts +55 -0
- package/dist/runtime/scope/table.js +174 -0
- package/dist/runtime/syntax/braces.d.ts +2 -0
- package/dist/runtime/syntax/braces.js +35 -0
- package/dist/runtime/syntax/classes.d.ts +22 -0
- package/dist/runtime/syntax/classes.js +119 -0
- package/dist/runtime/syntax/display.d.ts +25 -0
- package/dist/runtime/syntax/display.js +344 -0
- package/dist/runtime/syntax/expand-groups.d.ts +12 -0
- package/dist/runtime/syntax/expand-groups.js +31 -0
- package/dist/runtime/syntax/ir.d.ts +76 -0
- package/dist/runtime/syntax/ir.js +11 -0
- package/dist/runtime/syntax/parse.d.ts +2 -0
- package/dist/runtime/syntax/parse.js +407 -0
- package/dist/runtime/syntax/script-block.d.ts +43 -0
- package/dist/runtime/syntax/script-block.js +190 -0
- package/dist/runtime/testing.d.ts +11 -0
- package/dist/runtime/testing.js +1 -0
- package/dist/select/examples/basic.html +9 -9
- package/dist/select/examples/basic.html.js +5 -0
- package/dist/select/examples/category.html +10 -10
- package/dist/select/examples/category.html.js +5 -0
- package/dist/select/examples/country.html +10 -10
- package/dist/select/examples/country.html.js +5 -0
- package/dist/select/examples/language.html.js +5 -0
- package/dist/select/examples/multiple.html.js +5 -0
- package/dist/select/examples/profile.html +10 -10
- package/dist/select/examples/profile.html.js +5 -0
- package/dist/select/examples/theme.html.js +5 -0
- package/dist/select/examples/with-overlapping-label.html +8 -8
- package/dist/select/examples/with-overlapping-label.html.js +5 -0
- package/dist/select/select.events.d.ts +2 -3
- package/dist/select/select.machine.d.ts +2 -3
- package/dist/select/select.machine.js +1 -1
- package/dist/select/select.presentation.d.ts +16 -20
- package/dist/select/select.presentation.js +6 -6
- package/dist/select/select.shared.d.ts +1 -2
- package/dist/select/select.state.d.ts +1 -2
- package/dist/select/select.state.js +1 -1
- package/dist/select/select.transitions.d.ts +2 -3
- package/dist/shared/keyboard.d.ts +1 -2
- package/dist/signature-pad/examples/basic.html +3 -3
- package/dist/signature-pad/examples/basic.html.js +5 -0
- package/dist/signature-pad/examples/contract.html +7 -7
- package/dist/signature-pad/examples/contract.html.js +5 -0
- package/dist/signature-pad/examples/receipt.html +8 -8
- package/dist/signature-pad/examples/receipt.html.js +5 -0
- package/dist/signature-pad/examples/with-preview.html +6 -6
- package/dist/signature-pad/examples/with-preview.html.js +5 -0
- package/dist/signature-pad/signature-pad.events.d.ts +2 -3
- package/dist/signature-pad/signature-pad.machine.d.ts +4 -4
- package/dist/signature-pad/signature-pad.machine.js +2 -2
- package/dist/signature-pad/signature-pad.presentation.d.ts +10 -11
- package/dist/signature-pad/signature-pad.presentation.js +2 -2
- package/dist/signature-pad/signature-pad.state.d.ts +1 -2
- package/dist/signature-pad/signature-pad.state.js +1 -1
- package/dist/signature-pad/signature-pad.transitions.d.ts +3 -4
- package/dist/slider/examples/basic.html +1 -1
- package/dist/slider/examples/basic.html.js +5 -0
- package/dist/slider/examples/equalizer.html +13 -13
- package/dist/slider/examples/equalizer.html.js +5 -0
- package/dist/slider/examples/fractional.html.js +5 -0
- package/dist/slider/examples/marks.html +2 -2
- package/dist/slider/examples/marks.html.js +5 -0
- package/dist/slider/examples/range.html +1 -1
- package/dist/slider/examples/range.html.js +5 -0
- package/dist/slider/examples/stepped.html.js +5 -0
- package/dist/slider/examples/ticks.html +2 -2
- package/dist/slider/examples/ticks.html.js +5 -0
- package/dist/slider/examples/vertical.html.js +5 -0
- package/dist/slider/slider.events.d.ts +2 -3
- package/dist/slider/slider.machine.d.ts +3 -3
- package/dist/slider/slider.machine.js +2 -2
- package/dist/slider/slider.presentation.d.ts +8 -9
- package/dist/slider/slider.presentation.js +2 -2
- package/dist/slider/slider.state.d.ts +1 -2
- package/dist/slider/slider.state.js +1 -1
- package/dist/slider/slider.transitions.d.ts +3 -4
- package/dist/slider/slider.transitions.js +1 -1
- package/dist/solid/solid.d.ts +2 -3
- package/dist/spin-element.d.ts +1 -2
- package/dist/spin-element.js +1 -1
- package/dist/splitter/examples/basic.html +2 -2
- package/dist/splitter/examples/basic.html.js +5 -0
- package/dist/splitter/examples/nested.html +4 -4
- package/dist/splitter/examples/nested.html.js +5 -0
- package/dist/splitter/examples/threepanels.html +2 -2
- package/dist/splitter/examples/threepanels.html.js +5 -0
- package/dist/splitter/examples/vertical.html +2 -2
- package/dist/splitter/examples/vertical.html.js +5 -0
- package/dist/splitter/splitter.events.d.ts +2 -3
- package/dist/splitter/splitter.machine.d.ts +2 -3
- package/dist/splitter/splitter.machine.js +1 -1
- package/dist/splitter/splitter.presentation.d.ts +5 -6
- package/dist/splitter/splitter.presentation.js +1 -1
- package/dist/splitter/splitter.state.d.ts +1 -2
- package/dist/splitter/splitter.state.js +1 -1
- package/dist/splitter/splitter.transitions.d.ts +2 -3
- package/dist/steps/examples/basic.html +5 -5
- package/dist/steps/examples/basic.html.js +5 -0
- package/dist/steps/examples/checkmarks.html +4 -4
- package/dist/steps/examples/checkmarks.html.js +5 -0
- package/dist/steps/examples/content.html +5 -5
- package/dist/steps/examples/content.html.js +5 -0
- package/dist/steps/examples/descriptions.html +2 -2
- package/dist/steps/examples/descriptions.html.js +5 -0
- package/dist/steps/examples/icons.html +2 -2
- package/dist/steps/examples/icons.html.js +5 -0
- package/dist/steps/examples/lines.html +2 -2
- package/dist/steps/examples/lines.html.js +5 -0
- package/dist/steps/examples/navigation.html +4 -4
- package/dist/steps/examples/navigation.html.js +5 -0
- package/dist/steps/examples/onboarding.html +4 -4
- package/dist/steps/examples/onboarding.html.js +5 -0
- package/dist/steps/examples/progress.html +3 -3
- package/dist/steps/examples/progress.html.js +5 -0
- package/dist/steps/examples/segmented.html +6 -6
- package/dist/steps/examples/segmented.html.js +5 -0
- package/dist/steps/examples/vertical.html +5 -5
- package/dist/steps/examples/vertical.html.js +5 -0
- package/dist/steps/examples/verticallabels.html +2 -2
- package/dist/steps/examples/verticallabels.html.js +5 -0
- package/dist/steps/examples/verticalnavigation.html +2 -2
- package/dist/steps/examples/verticalnavigation.html.js +5 -0
- package/dist/steps/steps.events.d.ts +2 -3
- package/dist/steps/steps.machine.d.ts +3 -3
- package/dist/steps/steps.machine.js +1 -1
- package/dist/steps/steps.presentation.d.ts +4 -5
- package/dist/steps/steps.presentation.js +1 -1
- package/dist/steps/steps.state.d.ts +1 -2
- package/dist/steps/steps.state.js +1 -1
- package/dist/steps/steps.transitions.d.ts +3 -4
- package/dist/tabs/examples/basic.html +2 -2
- package/dist/tabs/examples/basic.html.js +5 -0
- package/dist/tabs/examples/dashboard.html +42 -42
- package/dist/tabs/examples/dashboard.html.js +5 -0
- package/dist/tabs/examples/ghost.html +2 -2
- package/dist/tabs/examples/ghost.html.js +5 -0
- package/dist/tabs/examples/icon-above.html +6 -6
- package/dist/tabs/examples/icon-above.html.js +5 -0
- package/dist/tabs/examples/icon-only.html +3 -3
- package/dist/tabs/examples/icon-only.html.js +5 -0
- package/dist/tabs/examples/outline-with-icons.html +6 -6
- package/dist/tabs/examples/outline-with-icons.html.js +5 -0
- package/dist/tabs/examples/outline.html +3 -3
- package/dist/tabs/examples/outline.html.js +5 -0
- package/dist/tabs/examples/pills.html +2 -2
- package/dist/tabs/examples/pills.html.js +5 -0
- package/dist/tabs/examples/project.html +33 -33
- package/dist/tabs/examples/project.html.js +5 -0
- package/dist/tabs/examples/settings.html +35 -35
- package/dist/tabs/examples/settings.html.js +5 -0
- package/dist/tabs/examples/stack-with-icons.html +7 -7
- package/dist/tabs/examples/stack-with-icons.html.js +5 -0
- package/dist/tabs/examples/stack.html +3 -3
- package/dist/tabs/examples/stack.html.js +5 -0
- package/dist/tabs/examples/underline.html +3 -3
- package/dist/tabs/examples/underline.html.js +5 -0
- package/dist/tabs/examples/vertical-ghost.html +3 -3
- package/dist/tabs/examples/vertical-ghost.html.js +5 -0
- package/dist/tabs/examples/vertical-icons.html +5 -5
- package/dist/tabs/examples/vertical-icons.html.js +5 -0
- package/dist/tabs/examples/vertical-underline.html +4 -4
- package/dist/tabs/examples/vertical-underline.html.js +5 -0
- package/dist/tabs/examples/vertical-with-icons.html +6 -6
- package/dist/tabs/examples/vertical-with-icons.html.js +5 -0
- package/dist/tabs/examples/vertical.html +2 -2
- package/dist/tabs/examples/vertical.html.js +5 -0
- package/dist/tabs/examples/with-badges.html +3 -3
- package/dist/tabs/examples/with-badges.html.js +5 -0
- package/dist/tabs/examples/with-icons.html +4 -4
- package/dist/tabs/examples/with-icons.html.js +5 -0
- package/dist/tabs/tabs.events.d.ts +2 -3
- package/dist/tabs/tabs.machine.d.ts +3 -3
- package/dist/tabs/tabs.machine.js +1 -1
- package/dist/tabs/tabs.presentation.d.ts +6 -7
- package/dist/tabs/tabs.presentation.js +1 -1
- package/dist/tabs/tabs.state.d.ts +1 -2
- package/dist/tabs/tabs.state.js +1 -1
- package/dist/tabs/tabs.transitions.d.ts +3 -4
- package/dist/tags-input/examples/basic.html +9 -9
- package/dist/tags-input/examples/basic.html.js +5 -0
- package/dist/tags-input/examples/with-combobox.html +14 -14
- package/dist/tags-input/examples/with-combobox.html.js +5 -0
- package/dist/tags-input/tags.events.d.ts +2 -3
- package/dist/tags-input/tags.machine.d.ts +6 -4
- package/dist/tags-input/tags.machine.js +2 -2
- package/dist/tags-input/tags.presentation.d.ts +6 -7
- package/dist/tags-input/tags.presentation.js +1 -1
- package/dist/tags-input/tags.state.d.ts +1 -2
- package/dist/tags-input/tags.state.js +2 -2
- package/dist/tags-input/tags.transitions.d.ts +2 -3
- package/dist/theme-picker/examples/basic.html +6 -6
- package/dist/theme-picker/examples/basic.html.js +5 -0
- package/dist/theme-picker/examples/cards.html +4 -4
- package/dist/theme-picker/examples/cards.html.js +5 -0
- package/dist/theme-picker/examples/compact.html +3 -3
- package/dist/theme-picker/examples/compact.html.js +5 -0
- package/dist/theme-picker/examples/swatches.html +2 -2
- package/dist/theme-picker/examples/swatches.html.js +5 -0
- package/dist/theme-picker/theme-picker.events.d.ts +2 -3
- package/dist/theme-picker/theme-picker.machine.d.ts +3 -3
- package/dist/theme-picker/theme-picker.machine.js +1 -1
- package/dist/theme-picker/theme-picker.presentation.d.ts +9 -10
- package/dist/theme-picker/theme-picker.presentation.js +2 -2
- package/dist/theme-picker/theme-picker.state.d.ts +1 -2
- package/dist/theme-picker/theme-picker.transitions.d.ts +3 -4
- package/dist/timer/examples/basic.html +1 -1
- package/dist/timer/examples/basic.html.js +5 -0
- package/dist/timer/examples/card.html +4 -4
- package/dist/timer/examples/card.html.js +5 -0
- package/dist/timer/examples/compact.html +5 -5
- package/dist/timer/examples/compact.html.js +5 -0
- package/dist/timer/examples/countdown.html +3 -3
- package/dist/timer/examples/countdown.html.js +5 -0
- package/dist/timer/examples/labels.html +3 -3
- package/dist/timer/examples/labels.html.js +5 -0
- package/dist/timer/examples/large.html +2 -2
- package/dist/timer/examples/large.html.js +5 -0
- package/dist/timer/examples/minimal.html +1 -1
- package/dist/timer/examples/minimal.html.js +5 -0
- package/dist/timer/examples/pomodoro.html +3 -3
- package/dist/timer/examples/pomodoro.html.js +5 -0
- package/dist/timer/examples/workout.html +4 -4
- package/dist/timer/examples/workout.html.js +5 -0
- package/dist/timer/timer.events.d.ts +2 -3
- package/dist/timer/timer.machine.d.ts +2 -3
- package/dist/timer/timer.machine.js +1 -1
- package/dist/timer/timer.presentation.d.ts +7 -8
- package/dist/timer/timer.presentation.js +1 -1
- package/dist/timer/timer.state.d.ts +1 -2
- package/dist/timer/timer.state.js +1 -1
- package/dist/timer/timer.transitions.d.ts +2 -3
- package/dist/toast/examples/action.html +3 -3
- package/dist/toast/examples/action.html.js +5 -0
- package/dist/toast/examples/basic.html +3 -3
- package/dist/toast/examples/basic.html.js +5 -0
- package/dist/toast/examples/bottomcenter.html +3 -3
- package/dist/toast/examples/bottomcenter.html.js +5 -0
- package/dist/toast/examples/bottomleft.html +3 -3
- package/dist/toast/examples/bottomleft.html.js +5 -0
- package/dist/toast/examples/bottomright.html +3 -3
- package/dist/toast/examples/bottomright.html.js +5 -0
- package/dist/toast/examples/duration.html +3 -3
- package/dist/toast/examples/duration.html.js +5 -0
- package/dist/toast/examples/promise.html +6 -6
- package/dist/toast/examples/promise.html.js +5 -0
- package/dist/toast/examples/topcenter.html +3 -3
- package/dist/toast/examples/topcenter.html.js +5 -0
- package/dist/toast/examples/topleft.html +3 -3
- package/dist/toast/examples/topleft.html.js +5 -0
- package/dist/toast/examples/topright.html +3 -3
- package/dist/toast/examples/topright.html.js +5 -0
- package/dist/toast/examples/types.html +3 -3
- package/dist/toast/examples/types.html.js +5 -0
- package/dist/toast/examples/updatable.html.js +5 -0
- package/dist/toast/toast.events.d.ts +2 -3
- package/dist/toast/toast.machine.d.ts +4 -4
- package/dist/toast/toast.machine.js +1 -1
- package/dist/toast/toast.presentation.d.ts +5 -6
- package/dist/toast/toast.presentation.js +1 -1
- package/dist/toast/toast.state.d.ts +1 -2
- package/dist/toast/toast.state.js +3 -3
- package/dist/toast/toast.transitions.d.ts +3 -4
- package/dist/toc/examples/basic.html +31 -0
- package/dist/toc/examples/basic.html.js +5 -0
- package/dist/toc/toc.events.d.ts +19 -0
- package/dist/toc/toc.events.js +1 -0
- package/dist/toc/toc.machine.d.ts +5 -0
- package/dist/toc/toc.machine.js +59 -0
- package/dist/toc/toc.presentation.d.ts +127 -0
- package/dist/toc/toc.presentation.js +117 -0
- package/dist/toc/toc.state.d.ts +41 -0
- package/dist/toc/toc.state.js +64 -0
- package/dist/toc/toc.transitions.d.ts +8 -0
- package/dist/toc/toc.transitions.js +27 -0
- package/dist/toggle-group/examples/basic.html +2 -2
- package/dist/toggle-group/examples/basic.html.js +5 -0
- package/dist/toggle-group/examples/ghost.html +1 -1
- package/dist/toggle-group/examples/ghost.html.js +5 -0
- package/dist/toggle-group/examples/icons.html +3 -3
- package/dist/toggle-group/examples/icons.html.js +5 -0
- package/dist/toggle-group/examples/multiple.html.js +5 -0
- package/dist/toggle-group/examples/outline.html +2 -2
- package/dist/toggle-group/examples/outline.html.js +5 -0
- package/dist/toggle-group/examples/toolbar.html +3 -3
- package/dist/toggle-group/examples/toolbar.html.js +5 -0
- package/dist/toggle-group/toggle-group.events.d.ts +2 -3
- package/dist/toggle-group/toggle-group.machine.d.ts +3 -3
- package/dist/toggle-group/toggle-group.machine.js +1 -1
- package/dist/toggle-group/toggle-group.presentation.d.ts +6 -7
- package/dist/toggle-group/toggle-group.presentation.js +2 -2
- package/dist/toggle-group/toggle-group.state.d.ts +1 -2
- package/dist/toggle-group/toggle-group.state.js +1 -1
- package/dist/toggle-group/toggle-group.transitions.d.ts +3 -4
- package/dist/tooltip/examples/basic.html.js +5 -0
- package/dist/tooltip/examples/metrics.html +9 -9
- package/dist/tooltip/examples/metrics.html.js +5 -0
- package/dist/tooltip/examples/positioning.html +4 -4
- package/dist/tooltip/examples/positioning.html.js +5 -0
- package/dist/tooltip/examples/status.html +10 -10
- package/dist/tooltip/examples/status.html.js +5 -0
- package/dist/tooltip/examples/video.html +6 -6
- package/dist/tooltip/examples/video.html.js +5 -0
- package/dist/tooltip/examples/with-arrow.html +1 -1
- package/dist/tooltip/examples/with-arrow.html.js +5 -0
- package/dist/tooltip/tooltip.controller-def.d.ts +3 -5
- package/dist/tooltip/tooltip.controller-def.js +1 -1
- package/dist/tour/examples/basic.html +5 -5
- package/dist/tour/examples/basic.html.js +5 -0
- package/dist/tour/tour.events.d.ts +2 -3
- package/dist/tour/tour.machine.d.ts +7 -3
- package/dist/tour/tour.machine.js +1 -1
- package/dist/tour/tour.presentation.d.ts +6 -7
- package/dist/tour/tour.presentation.js +1 -1
- package/dist/tour/tour.state.d.ts +1 -2
- package/dist/tour/tour.state.js +1 -1
- package/dist/tour/tour.transitions.d.ts +3 -4
- package/dist/tree-view/examples/basic.html +10 -10
- package/dist/tree-view/examples/basic.html.js +5 -0
- package/dist/tree-view/examples/loading.html +11 -11
- package/dist/tree-view/examples/loading.html.js +5 -0
- package/dist/tree-view/tree-view.events.d.ts +2 -3
- package/dist/tree-view/tree-view.machine.d.ts +2 -3
- package/dist/tree-view/tree-view.machine.js +1 -1
- package/dist/tree-view/tree-view.presentation.d.ts +7 -8
- package/dist/tree-view/tree-view.presentation.js +2 -2
- package/dist/tree-view/tree-view.state.d.ts +1 -2
- package/dist/tree-view/tree-view.state.js +1 -1
- package/dist/tree-view/tree-view.transitions.d.ts +3 -4
- package/package.json +43 -8
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { batch, signal, untrack } from "../../core/signal.js";
|
|
2
|
+
// src/runtime/machine/fsm/machine.ts
|
|
3
|
+
/**
|
|
4
|
+
* The state machine core: a config-first FSM, forked from @xstate/fsm 2.1.0
|
|
5
|
+
* (MIT, © Stately, https://github.com/statelyai/xstate).
|
|
6
|
+
*
|
|
7
|
+
* The machine is HEADLESS: state, transitions, and its own arguments. It
|
|
8
|
+
* knows nothing about props, markup, or the DOM.
|
|
9
|
+
*
|
|
10
|
+
* Why fork rather than depend: the package is correct, tiny, MIT, and the
|
|
11
|
+
* last stable was published in 2023 — a frozen base is a solid foundation
|
|
12
|
+
* and a poor dependency. This fork adapts it to this runtime's needs and
|
|
13
|
+
* keeps the config shape agents and the studio know:
|
|
14
|
+
*
|
|
15
|
+
* const machine = createMachine({
|
|
16
|
+
* initial: "idle",
|
|
17
|
+
* context: { value: [] },
|
|
18
|
+
* states: {
|
|
19
|
+
* idle: { on: {
|
|
20
|
+
* TOGGLE: [
|
|
21
|
+
* { cond: "isOpen", actions: [{ assign: "collapse" }] },
|
|
22
|
+
* { actions: [{ assign: "expand" }] },
|
|
23
|
+
* ],
|
|
24
|
+
* } },
|
|
25
|
+
* },
|
|
26
|
+
* }, { conds: {...}, assigns: {...}, actions: {...} });
|
|
27
|
+
*
|
|
28
|
+
* Transition resolution is PURE (`machine.transition`), and `interpret`
|
|
29
|
+
* executes the resolved actions. The delta from upstream, all deliberate:
|
|
30
|
+
*
|
|
31
|
+
* 1. **Named conds and assigns.** `cond: "name"` resolves from
|
|
32
|
+
* `implementations.conds`; `{ assign: "name" }` from
|
|
33
|
+
* `implementations.assigns`. Upstream allows only inline functions, which
|
|
34
|
+
* puts code inside the config — the config is meant to be data for the
|
|
35
|
+
* studio's visualizer, test derivation, and agent authoring. Assigns are
|
|
36
|
+
* pure context transforms, so naming them keeps the whole config
|
|
37
|
+
* serializable with a lookup table of reviewed pure functions beside it.
|
|
38
|
+
* 2. **Per-field signals.** `interpret` backs `state.value` and each field of
|
|
39
|
+
* `state.context` with an `alien-signals` signal updated inside `batch()`.
|
|
40
|
+
* 3. **No status enum beyond stopped.** Scope disposal owns teardown;
|
|
41
|
+
* `stop()` is what `dispose()` calls.
|
|
42
|
+
*/
|
|
43
|
+
const INIT = { type: "xstate.init" };
|
|
44
|
+
function toEvent(event) {
|
|
45
|
+
return event;
|
|
46
|
+
}
|
|
47
|
+
function stateOf(value, context) {
|
|
48
|
+
return {
|
|
49
|
+
value,
|
|
50
|
+
context,
|
|
51
|
+
matches: (v) => v === value
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Whether a value is a list of transitions. `Array.isArray` does not
|
|
56
|
+
* narrow a readonly array, so the test is named.
|
|
57
|
+
*/
|
|
58
|
+
function isList(value) {
|
|
59
|
+
return Array.isArray(value);
|
|
60
|
+
}
|
|
61
|
+
const EMPTY = [];
|
|
62
|
+
function normalize(entry) {
|
|
63
|
+
if (entry === void 0) return EMPTY;
|
|
64
|
+
return (isList(entry) ? entry : [entry]).map((candidate) => typeof candidate === "string" ? {
|
|
65
|
+
target: candidate,
|
|
66
|
+
cond: void 0,
|
|
67
|
+
assign: void 0
|
|
68
|
+
} : {
|
|
69
|
+
target: candidate.target,
|
|
70
|
+
cond: candidate.cond,
|
|
71
|
+
assign: candidate.assign
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function isMatch(candidate, ctx, event) {
|
|
75
|
+
return candidate.cond === void 0 || candidate.cond(ctx, event);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Apply a transition's context writes, in order. Each write sees the
|
|
79
|
+
* context the previous one left, so a chain reads what the chain wrote.
|
|
80
|
+
*/
|
|
81
|
+
function fold(assigns, startContext, event) {
|
|
82
|
+
if (assigns === void 0) return startContext;
|
|
83
|
+
let context = startContext;
|
|
84
|
+
for (const entry of assigns) {
|
|
85
|
+
const assign = "assign" in entry ? entry.assign : entry;
|
|
86
|
+
context = {
|
|
87
|
+
...context,
|
|
88
|
+
...assign(context, event)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return context;
|
|
92
|
+
}
|
|
93
|
+
function createMachine(spec) {
|
|
94
|
+
const compile = (on) => {
|
|
95
|
+
const table = /* @__PURE__ */ new Map();
|
|
96
|
+
for (const [name, entry] of Object.entries(on ?? {})) table.set(name, normalize(entry));
|
|
97
|
+
return table;
|
|
98
|
+
};
|
|
99
|
+
const config = {
|
|
100
|
+
...spec.id === void 0 ? {} : { id: spec.id },
|
|
101
|
+
initial: spec.initial,
|
|
102
|
+
context: spec.context,
|
|
103
|
+
...spec.on === void 0 ? {} : { on: spec.on },
|
|
104
|
+
states: spec.states
|
|
105
|
+
};
|
|
106
|
+
const rootTable = compile(spec.on);
|
|
107
|
+
const stateTables = /* @__PURE__ */ new Map();
|
|
108
|
+
for (const [stateName, stateDef] of Object.entries(spec.states)) stateTables.set(stateName, compile(stateDef.on));
|
|
109
|
+
const initial = fold(config.states[config.initial]?.entry, config.context ?? {}, INIT);
|
|
110
|
+
return {
|
|
111
|
+
config,
|
|
112
|
+
fields: spec.fields ?? {},
|
|
113
|
+
initialState: {
|
|
114
|
+
value: config.initial,
|
|
115
|
+
context: initial,
|
|
116
|
+
matches: (v) => v === config.initial
|
|
117
|
+
},
|
|
118
|
+
transition(stateOrValue, eventOrType) {
|
|
119
|
+
const event = toEvent(eventOrType);
|
|
120
|
+
const from = typeof stateOrValue === "string" ? stateOf(stateOrValue, config.context ?? {}) : stateOrValue;
|
|
121
|
+
const current = from.value;
|
|
122
|
+
const ctx = from.context;
|
|
123
|
+
const stateDef = config.states[current];
|
|
124
|
+
const name = event.type;
|
|
125
|
+
const first = stateTables.get(current)?.get(name) ?? EMPTY;
|
|
126
|
+
const second = rootTable.get(name) ?? EMPTY;
|
|
127
|
+
for (let tier = 0; tier < 2; tier++) {
|
|
128
|
+
const list = tier === 0 ? first : second;
|
|
129
|
+
for (let i = 0; i < list.length; i++) {
|
|
130
|
+
const candidate = list[i];
|
|
131
|
+
const { target, assign } = candidate;
|
|
132
|
+
if (!isMatch(candidate, ctx, event)) continue;
|
|
133
|
+
if (target === void 0) return {
|
|
134
|
+
value: current,
|
|
135
|
+
context: fold(assign === void 0 ? void 0 : isList(assign) ? assign : [assign], ctx, event),
|
|
136
|
+
matches: (v) => v === current
|
|
137
|
+
};
|
|
138
|
+
const nextDef = config.states[target];
|
|
139
|
+
const context = fold(stateDef?.exit, ctx, event);
|
|
140
|
+
const written = fold(assign === void 0 ? void 0 : isList(assign) ? assign : [assign], context, event);
|
|
141
|
+
return {
|
|
142
|
+
value: target,
|
|
143
|
+
context: fold(nextDef?.entry, written, event),
|
|
144
|
+
matches: (v) => v === target
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return stateOf(current, ctx);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function interpret(machine) {
|
|
153
|
+
let rawState = machine.initialState.value;
|
|
154
|
+
let rawContext = { ...machine.initialState.context };
|
|
155
|
+
let stopped = false;
|
|
156
|
+
const stateSig = signal(rawState);
|
|
157
|
+
const fieldSignals = /* @__PURE__ */ new Map();
|
|
158
|
+
const reactiveContext = {};
|
|
159
|
+
const ensureField = (key, initialValue) => {
|
|
160
|
+
let sig = fieldSignals.get(key);
|
|
161
|
+
if (sig !== void 0) return sig;
|
|
162
|
+
sig = signal(initialValue);
|
|
163
|
+
fieldSignals.set(key, sig);
|
|
164
|
+
Object.defineProperty(reactiveContext, key, {
|
|
165
|
+
enumerable: true,
|
|
166
|
+
configurable: true,
|
|
167
|
+
get() {
|
|
168
|
+
return sig();
|
|
169
|
+
},
|
|
170
|
+
set(next) {
|
|
171
|
+
const rec = rawContext;
|
|
172
|
+
if (!Object.is(rec[key], next)) {
|
|
173
|
+
rec[key] = next;
|
|
174
|
+
sig(next);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
return sig;
|
|
179
|
+
};
|
|
180
|
+
for (const [key, val] of Object.entries(rawContext)) ensureField(key, val);
|
|
181
|
+
const commitState = (nextValue, nextContext) => {
|
|
182
|
+
batch(() => {
|
|
183
|
+
if (nextValue !== rawState) {
|
|
184
|
+
rawState = nextValue;
|
|
185
|
+
stateSig(nextValue);
|
|
186
|
+
}
|
|
187
|
+
const prevRec = rawContext;
|
|
188
|
+
const nextRec = nextContext;
|
|
189
|
+
rawContext = { ...nextContext };
|
|
190
|
+
for (const key of Object.keys(nextRec)) {
|
|
191
|
+
const val = nextRec[key];
|
|
192
|
+
const sig = fieldSignals.get(key);
|
|
193
|
+
if (sig === void 0) ensureField(key, val);
|
|
194
|
+
else if (!Object.is(prevRec[key], val)) sig(val);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
const stateView = {
|
|
199
|
+
get value() {
|
|
200
|
+
return stateSig();
|
|
201
|
+
},
|
|
202
|
+
get context() {
|
|
203
|
+
return reactiveContext;
|
|
204
|
+
},
|
|
205
|
+
matches: (v) => stateSig() === v
|
|
206
|
+
};
|
|
207
|
+
const service = {
|
|
208
|
+
setContext(patch) {
|
|
209
|
+
commitState(rawState, {
|
|
210
|
+
...rawContext,
|
|
211
|
+
...patch
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
send(event) {
|
|
215
|
+
if (stopped) return;
|
|
216
|
+
const next = untrack(() => machine.transition({
|
|
217
|
+
value: rawState,
|
|
218
|
+
context: rawContext,
|
|
219
|
+
matches: (v) => v === rawState
|
|
220
|
+
}, event));
|
|
221
|
+
commitState(next.value, next.context);
|
|
222
|
+
},
|
|
223
|
+
start(next) {
|
|
224
|
+
stopped = false;
|
|
225
|
+
if (next !== void 0) {
|
|
226
|
+
const value = typeof next === "string" ? next : next.value;
|
|
227
|
+
const context = typeof next === "string" ? machine.initialState.context : next.context;
|
|
228
|
+
const seeded = fold(machine.config.states[value]?.entry, context, INIT);
|
|
229
|
+
commitState(value, seeded);
|
|
230
|
+
} else commitState(machine.initialState.value, machine.initialState.context);
|
|
231
|
+
return service;
|
|
232
|
+
},
|
|
233
|
+
stop() {
|
|
234
|
+
stopped = true;
|
|
235
|
+
return service;
|
|
236
|
+
},
|
|
237
|
+
get state() {
|
|
238
|
+
return stateView;
|
|
239
|
+
},
|
|
240
|
+
get stopped() {
|
|
241
|
+
return stopped;
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
return service;
|
|
245
|
+
}
|
|
246
|
+
export { createMachine, interpret };
|
|
247
|
+
|
|
248
|
+
//# sourceMappingURL=machine.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { clampValue, closestIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, isInteractive, round10, snapValueToStep } from "./numbers.js";
|
|
2
|
+
export { clampValue, closestIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, isInteractive, round10, snapValueToStep };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { clampValue, closestIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, isInteractive, round10, snapValueToStep } from "./numbers.js";
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Value math: pure functions over numbers and arrays, typed to return
|
|
3
|
+
* `number` (never `number | undefined`).
|
|
4
|
+
*
|
|
5
|
+
* Vendored from `@zag-js/utils` (`dist/number.mjs`, MIT) with two changes:
|
|
6
|
+
* the NaN-guard is explicit (`nan` → 0 is preserved — a missing value is
|
|
7
|
+
* the bound, not an error), and every function declares its real return
|
|
8
|
+
* type so call sites need no `as number`. The logic is byte-identical;
|
|
9
|
+
* only the types are tighter. If the upstream changes, re-vendor and
|
|
10
|
+
* re-run this file's tests.
|
|
11
|
+
*
|
|
12
|
+
* Plus the generic shapes components kept re-deriving: `closestIndex`
|
|
13
|
+
* (later wins ties — thumb stacking needs determinism), `round10`, and
|
|
14
|
+
* `isInteractive` (structural: any context with the two flags).
|
|
15
|
+
*
|
|
16
|
+
* Rules for this module: pure functions only (no machine, DOM, or signal
|
|
17
|
+
* imports), total (no `null` returns — a missing value is the bound), and
|
|
18
|
+
* deterministic (same inputs, same outputs — testable without a machine).
|
|
19
|
+
*/
|
|
20
|
+
/** Clamp into range; NaN reads as the lower bound. */
|
|
21
|
+
export declare function clampValue(v: number, vmin: number, vmax: number): number;
|
|
22
|
+
/** The position of a value in its range, as 0..1. */
|
|
23
|
+
export declare function getValuePercent(v: number, vmin: number, vmax: number): number;
|
|
24
|
+
/** The value at a percent of a stepped range, clamped. */
|
|
25
|
+
export declare function getPercentValue(p: number, vmin: number, vmax: number, step: number): number;
|
|
26
|
+
/** Snap to the step grid with float-precision correction, clamped to the
|
|
27
|
+
* largest valid step (not just the max — `max` may not sit on the grid). */
|
|
28
|
+
export declare function snapValueToStep(v: number, vmin: number, vmax: number, step: number): number;
|
|
29
|
+
/** Per-thumb clamp windows from neighbors plus the gap. */
|
|
30
|
+
export declare function getValueRanges(vs: readonly number[], vmin: number, vmax: number, gap: number): readonly {
|
|
31
|
+
readonly min: number;
|
|
32
|
+
readonly max: number;
|
|
33
|
+
readonly value: number;
|
|
34
|
+
}[];
|
|
35
|
+
/** Step the thumb at `index` up, clamped to its neighbors. */
|
|
36
|
+
export declare function getNextStepValue(index: number, ctx: {
|
|
37
|
+
readonly values: readonly number[];
|
|
38
|
+
readonly min: number;
|
|
39
|
+
readonly max: number;
|
|
40
|
+
readonly step: number;
|
|
41
|
+
}): readonly number[];
|
|
42
|
+
/** Step the thumb at `index` down, clamped to its neighbors. */
|
|
43
|
+
export declare function getPreviousStepValue(index: number, ctx: {
|
|
44
|
+
readonly values: readonly number[];
|
|
45
|
+
readonly min: number;
|
|
46
|
+
readonly max: number;
|
|
47
|
+
readonly step: number;
|
|
48
|
+
}): readonly number[];
|
|
49
|
+
/** Later thumbs win ties: deterministic under stacking. */
|
|
50
|
+
export declare function closestIndex(values: readonly number[], pointValue: number): number;
|
|
51
|
+
/** Round to 10 decimal places: float-arithmetic residue cleanup. */
|
|
52
|
+
export declare function round10(value: number): number;
|
|
53
|
+
/** An interactive context: neither read-only nor disabled. Structural —
|
|
54
|
+
* any context with the two flags qualifies, no base type required. */
|
|
55
|
+
export declare function isInteractive<C extends {
|
|
56
|
+
readonly readOnly?: boolean;
|
|
57
|
+
readonly disabled?: boolean;
|
|
58
|
+
}>(context: C): boolean;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// src/runtime/math/numbers.ts
|
|
2
|
+
/**
|
|
3
|
+
* Value math: pure functions over numbers and arrays, typed to return
|
|
4
|
+
* `number` (never `number | undefined`).
|
|
5
|
+
*
|
|
6
|
+
* Vendored from `@zag-js/utils` (`dist/number.mjs`, MIT) with two changes:
|
|
7
|
+
* the NaN-guard is explicit (`nan` → 0 is preserved — a missing value is
|
|
8
|
+
* the bound, not an error), and every function declares its real return
|
|
9
|
+
* type so call sites need no `as number`. The logic is byte-identical;
|
|
10
|
+
* only the types are tighter. If the upstream changes, re-vendor and
|
|
11
|
+
* re-run this file's tests.
|
|
12
|
+
*
|
|
13
|
+
* Plus the generic shapes components kept re-deriving: `closestIndex`
|
|
14
|
+
* (later wins ties — thumb stacking needs determinism), `round10`, and
|
|
15
|
+
* `isInteractive` (structural: any context with the two flags).
|
|
16
|
+
*
|
|
17
|
+
* Rules for this module: pure functions only (no machine, DOM, or signal
|
|
18
|
+
* imports), total (no `null` returns — a missing value is the bound), and
|
|
19
|
+
* deterministic (same inputs, same outputs — testable without a machine).
|
|
20
|
+
*/
|
|
21
|
+
const { abs, floor, max, min, pow, round, sign } = Math;
|
|
22
|
+
const nan = (v) => Number.isNaN(v) ? 0 : v;
|
|
23
|
+
/** Clamp into range; NaN reads as the lower bound. */
|
|
24
|
+
function clampValue(v, vmin, vmax) {
|
|
25
|
+
return min(max(nan(v), vmin), vmax);
|
|
26
|
+
}
|
|
27
|
+
/** The position of a value in its range, as 0..1. */
|
|
28
|
+
function getValuePercent(v, vmin, vmax) {
|
|
29
|
+
return (nan(v) - vmin) / (vmax - vmin);
|
|
30
|
+
}
|
|
31
|
+
function roundValue(v, vmin, step) {
|
|
32
|
+
return round((nan(v) - vmin) / step) * step + vmin;
|
|
33
|
+
}
|
|
34
|
+
/** The value at a percent of a stepped range, clamped. */
|
|
35
|
+
function getPercentValue(p, vmin, vmax, step) {
|
|
36
|
+
return clampValue(roundValue(p * (vmax - vmin) + vmin, vmin, step), vmin, vmax);
|
|
37
|
+
}
|
|
38
|
+
function roundToStepPrecision(v, step) {
|
|
39
|
+
let rv = v;
|
|
40
|
+
const ss = step.toString();
|
|
41
|
+
const pi = ss.indexOf(".");
|
|
42
|
+
const p = pi >= 0 ? ss.length - pi : 0;
|
|
43
|
+
if (p > 0) {
|
|
44
|
+
const pw = pow(10, p);
|
|
45
|
+
rv = round(rv * pw) / pw;
|
|
46
|
+
}
|
|
47
|
+
return rv;
|
|
48
|
+
}
|
|
49
|
+
/** Snap to the step grid with float-precision correction, clamped to the
|
|
50
|
+
* largest valid step (not just the max — `max` may not sit on the grid). */
|
|
51
|
+
function snapValueToStep(v, vmin, vmax, step) {
|
|
52
|
+
const min2 = vmin != null ? Number(vmin) : 0;
|
|
53
|
+
const max2 = Number(vmax);
|
|
54
|
+
const remainder = (v - min2) % step;
|
|
55
|
+
let snapped = abs(remainder) * 2 >= step ? v + sign(remainder) * (step - abs(remainder)) : v - remainder;
|
|
56
|
+
snapped = roundToStepPrecision(snapped, step);
|
|
57
|
+
if (!Number.isNaN(min2) && snapped < min2) snapped = min2;
|
|
58
|
+
else if (!Number.isNaN(max2) && snapped > max2) {
|
|
59
|
+
const stepsInRange = floor((max2 - min2) / step);
|
|
60
|
+
const largestValidStep = min2 + stepsInRange * step;
|
|
61
|
+
snapped = stepsInRange <= 0 || largestValidStep < min2 ? max2 : largestValidStep;
|
|
62
|
+
}
|
|
63
|
+
return roundToStepPrecision(snapped, step);
|
|
64
|
+
}
|
|
65
|
+
/** Per-thumb clamp windows from neighbors plus the gap. */
|
|
66
|
+
function getValueRanges(vs, vmin, vmax, gap) {
|
|
67
|
+
return vs.map((v, i) => ({
|
|
68
|
+
min: i === 0 ? vmin : (vs[i - 1] ?? vmin) + gap,
|
|
69
|
+
max: i === vs.length - 1 ? vmax : (vs[i + 1] ?? vmax) - gap,
|
|
70
|
+
value: v
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
function getMinValueAtIndex(index, values, vmin) {
|
|
74
|
+
return index === 0 ? vmin : values[index - 1] ?? vmin;
|
|
75
|
+
}
|
|
76
|
+
function getMaxValueAtIndex(index, values, vmax) {
|
|
77
|
+
return index === values.length - 1 ? vmax : values[index + 1] ?? vmax;
|
|
78
|
+
}
|
|
79
|
+
/** Step the thumb at `index` up, clamped to its neighbors. */
|
|
80
|
+
function getNextStepValue(index, ctx) {
|
|
81
|
+
const next = [...ctx.values];
|
|
82
|
+
next[index] = snapValueToStep((ctx.values[index] ?? ctx.min) + ctx.step, getMinValueAtIndex(index, ctx.values, ctx.min), getMaxValueAtIndex(index, ctx.values, ctx.max), ctx.step);
|
|
83
|
+
return next;
|
|
84
|
+
}
|
|
85
|
+
/** Step the thumb at `index` down, clamped to its neighbors. */
|
|
86
|
+
function getPreviousStepValue(index, ctx) {
|
|
87
|
+
const next = [...ctx.values];
|
|
88
|
+
next[index] = snapValueToStep((ctx.values[index] ?? ctx.min) - ctx.step, getMinValueAtIndex(index, ctx.values, ctx.min), getMaxValueAtIndex(index, ctx.values, ctx.max), ctx.step);
|
|
89
|
+
return next;
|
|
90
|
+
}
|
|
91
|
+
/** Later thumbs win ties: deterministic under stacking. */
|
|
92
|
+
function closestIndex(values, pointValue) {
|
|
93
|
+
let closest = 0;
|
|
94
|
+
let distance = Math.abs((values[0] ?? 0) - pointValue);
|
|
95
|
+
for (let i = 1; i < values.length; i += 1) {
|
|
96
|
+
const next = Math.abs((values[i] ?? 0) - pointValue);
|
|
97
|
+
if (next <= distance) {
|
|
98
|
+
closest = i;
|
|
99
|
+
distance = next;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return closest;
|
|
103
|
+
}
|
|
104
|
+
/** Round to 10 decimal places: float-arithmetic residue cleanup. */
|
|
105
|
+
function round10(value) {
|
|
106
|
+
return Math.round(value * 1e10) / 1e10;
|
|
107
|
+
}
|
|
108
|
+
/** An interactive context: neither read-only nor disabled. Structural —
|
|
109
|
+
* any context with the two flags qualifies, no base type required. */
|
|
110
|
+
function isInteractive(context) {
|
|
111
|
+
return context.readOnly !== true && context.disabled !== true;
|
|
112
|
+
}
|
|
113
|
+
export { clampValue, closestIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, isInteractive, round10, snapValueToStep };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=numbers.js.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The prop grammar's coercion, owned by the syntax.
|
|
3
|
+
*
|
|
4
|
+
* One implementation serves every boundary: the parser calls in at build
|
|
5
|
+
* time to turn a declared prop's text into a value, and the element bridge
|
|
6
|
+
* builds its attribute parsers here. No other module parses a prop's text
|
|
7
|
+
* form — the scalar and object-array branches below are the only ones.
|
|
8
|
+
*
|
|
9
|
+
* The module is deliberately pure (no signals, no DOM) so the runtime can
|
|
10
|
+
* depend on it without a cycle back.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* bool: presence (`""`, `"true"`, absent) is true, `"false"` is false,
|
|
14
|
+
* anything else is the fallback.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The initial-value twin of a prop: `value` -> `defaultValue`.
|
|
18
|
+
*
|
|
19
|
+
* The convention is the framework's: a host that writes `value` owns the
|
|
20
|
+
* value, and a host that writes only `defaultValue` seeds it. Resolving
|
|
21
|
+
* the twin before the machine's factory is called means the machine's
|
|
22
|
+
* arguments are the live values, and the machine never sees the twin.
|
|
23
|
+
*/
|
|
24
|
+
export declare function defaultTwin(prop: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the twins in a prop bag: for each `defaultX`, the prop `X`
|
|
27
|
+
* falls back to it.
|
|
28
|
+
*
|
|
29
|
+
* The fallback applies only when the host did not write `X`: a host
|
|
30
|
+
* that writes the live prop owns the value, and a host that writes only
|
|
31
|
+
* the twin seeds it. The bag is read live, so the resolution is a copy
|
|
32
|
+
* — the host's own bag is never mutated.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveTwins(props: Record<string, unknown>, authored?: (name: string) => boolean): Record<string, unknown>;
|
|
35
|
+
/**
|
|
36
|
+
* Whether a value is a plain record: an object, not null, not an array.
|
|
37
|
+
* The components' props arrive as records; the framework's grammar
|
|
38
|
+
* speaks in records, so the test belongs here.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
41
|
+
export declare function coerceBool(raw: string | null | undefined, fallback: boolean | undefined): boolean | undefined;
|
|
42
|
+
/** string: absent is empty. */
|
|
43
|
+
export declare function coerceString(raw: string | null | undefined): string;
|
|
44
|
+
/** int: absent or malformed is the fallback, never NaN. */
|
|
45
|
+
export declare function coerceInt(raw: string | null | undefined, fallback: number | undefined): number | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* string[] from scope text: a bare comma list, or a bracketed one (`[a, b]`).
|
|
48
|
+
* The grammar reserves top-level commas for prop separation, so the brackets
|
|
49
|
+
* are optional.
|
|
50
|
+
*/
|
|
51
|
+
export declare function coerceList(raw: string | null | undefined): string[];
|
|
52
|
+
/** A JSON-encoded array; malformed or non-array is the fallback. */
|
|
53
|
+
export declare function coerceJsonArray(raw: string | null | undefined, fallback: unknown[]): unknown[];
|
|
54
|
+
/**
|
|
55
|
+
* Object-array items: plain objects survive, the rest drop; declared `int`
|
|
56
|
+
* fields coerce, malformed becoming `undefined`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function coerceObjectArrayItems(value: unknown, fallback: unknown[], fields?: readonly {
|
|
59
|
+
readonly name: string;
|
|
60
|
+
readonly type: string;
|
|
61
|
+
}[]): Record<string, unknown>[];
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// src/runtime/props.ts
|
|
2
|
+
/**
|
|
3
|
+
* The prop grammar's coercion, owned by the syntax.
|
|
4
|
+
*
|
|
5
|
+
* One implementation serves every boundary: the parser calls in at build
|
|
6
|
+
* time to turn a declared prop's text into a value, and the element bridge
|
|
7
|
+
* builds its attribute parsers here. No other module parses a prop's text
|
|
8
|
+
* form — the scalar and object-array branches below are the only ones.
|
|
9
|
+
*
|
|
10
|
+
* The module is deliberately pure (no signals, no DOM) so the runtime can
|
|
11
|
+
* depend on it without a cycle back.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* bool: presence (`""`, `"true"`, absent) is true, `"false"` is false,
|
|
15
|
+
* anything else is the fallback.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The initial-value twin of a prop: `value` -> `defaultValue`.
|
|
19
|
+
*
|
|
20
|
+
* The convention is the framework's: a host that writes `value` owns the
|
|
21
|
+
* value, and a host that writes only `defaultValue` seeds it. Resolving
|
|
22
|
+
* the twin before the machine's factory is called means the machine's
|
|
23
|
+
* arguments are the live values, and the machine never sees the twin.
|
|
24
|
+
*/
|
|
25
|
+
function defaultTwin(prop) {
|
|
26
|
+
return `default${prop.charAt(0).toUpperCase()}${prop.slice(1)}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the twins in a prop bag: for each `defaultX`, the prop `X`
|
|
30
|
+
* falls back to it.
|
|
31
|
+
*
|
|
32
|
+
* The fallback applies only when the host did not write `X`: a host
|
|
33
|
+
* that writes the live prop owns the value, and a host that writes only
|
|
34
|
+
* the twin seeds it. The bag is read live, so the resolution is a copy
|
|
35
|
+
* — the host's own bag is never mutated.
|
|
36
|
+
*/
|
|
37
|
+
function resolveTwins(props, authored) {
|
|
38
|
+
const out = { ...props };
|
|
39
|
+
for (const key of Object.keys(props)) {
|
|
40
|
+
if (!key.startsWith("default")) continue;
|
|
41
|
+
const twin = key.charAt(7).toLowerCase() + key.slice(8);
|
|
42
|
+
if (authored !== void 0 && authored(twin)) continue;
|
|
43
|
+
out[twin] = props[key];
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether a value is a plain record: an object, not null, not an array.
|
|
49
|
+
* The components' props arrive as records; the framework's grammar
|
|
50
|
+
* speaks in records, so the test belongs here.
|
|
51
|
+
*/
|
|
52
|
+
function isRecord(value) {
|
|
53
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
54
|
+
}
|
|
55
|
+
function coerceBool(raw, fallback) {
|
|
56
|
+
if (raw === null || raw === void 0 || raw === "" || raw === "true") return true;
|
|
57
|
+
if (raw === "false") return false;
|
|
58
|
+
return fallback;
|
|
59
|
+
}
|
|
60
|
+
/** string: absent is empty. */
|
|
61
|
+
function coerceString(raw) {
|
|
62
|
+
return raw ?? "";
|
|
63
|
+
}
|
|
64
|
+
/** int: absent or malformed is the fallback, never NaN. */
|
|
65
|
+
function coerceInt(raw, fallback) {
|
|
66
|
+
if (raw === null || raw === void 0) return fallback;
|
|
67
|
+
const n = parseInt(raw, 10);
|
|
68
|
+
return Number.isNaN(n) ? fallback : n;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* string[] from scope text: a bare comma list, or a bracketed one (`[a, b]`).
|
|
72
|
+
* The grammar reserves top-level commas for prop separation, so the brackets
|
|
73
|
+
* are optional.
|
|
74
|
+
*/
|
|
75
|
+
function coerceList(raw) {
|
|
76
|
+
if (raw === null || raw === void 0 || raw === "") return [];
|
|
77
|
+
const trimmed = raw.trim();
|
|
78
|
+
return (trimmed.startsWith("[") && trimmed.endsWith("]") ? trimmed.slice(1, -1) : trimmed).split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
79
|
+
}
|
|
80
|
+
/** A JSON-encoded array; malformed or non-array is the fallback. */
|
|
81
|
+
function coerceJsonArray(raw, fallback) {
|
|
82
|
+
if (raw === null || raw === void 0 || raw === "") return fallback;
|
|
83
|
+
try {
|
|
84
|
+
const parsed = JSON.parse(raw);
|
|
85
|
+
return Array.isArray(parsed) ? parsed : fallback;
|
|
86
|
+
} catch {
|
|
87
|
+
return fallback;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Object-array items: plain objects survive, the rest drop; declared `int`
|
|
92
|
+
* fields coerce, malformed becoming `undefined`.
|
|
93
|
+
*/
|
|
94
|
+
function coerceObjectArrayItems(value, fallback, fields) {
|
|
95
|
+
if (!Array.isArray(value)) return fallback;
|
|
96
|
+
const out = [];
|
|
97
|
+
for (const item of value) {
|
|
98
|
+
if (item === null || typeof item !== "object" || Array.isArray(item)) continue;
|
|
99
|
+
const obj = { ...item };
|
|
100
|
+
if (fields) {
|
|
101
|
+
for (const field of fields) if (field.type === "int") {
|
|
102
|
+
const v = obj[field.name];
|
|
103
|
+
const n = typeof v === "number" ? v : parseInt(String(v), 10);
|
|
104
|
+
obj[field.name] = Number.isNaN(n) ? void 0 : n;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
out.push(obj);
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
export { coerceBool, coerceInt, coerceJsonArray, coerceList, coerceObjectArrayItems, coerceString, defaultTwin, isRecord, resolveTwins };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=props.js.map
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom elements: a scope per connection, and props that survive both sides.
|
|
3
|
+
*
|
|
4
|
+
* Props are properties, not attributes — an attribute is a string and a machine
|
|
5
|
+
* needs objects. Attributes are supported for the primitives that are strings,
|
|
6
|
+
* and land in the same live prop a property write would.
|
|
7
|
+
*/
|
|
8
|
+
import { OwnerScope } from "../core/signal.js";
|
|
9
|
+
import { Factory, Handle } from "./table.js";
|
|
10
|
+
/** Turns an attribute's string into the value the component reads. */
|
|
11
|
+
export type AttributeParser = (value: string | null) => unknown;
|
|
12
|
+
/**
|
|
13
|
+
* The scope grammar's attribute parsers, one per declared prop type. The
|
|
14
|
+
* plugin emits an `attributes` map from these so an attribute written at
|
|
15
|
+
* any time — a framework's string prop, or a later setAttribute — lands in
|
|
16
|
+
* the same live prop a property write reaches. Kept beside the element
|
|
17
|
+
* definition that consumes them, not beside the grammar that mirrors them.
|
|
18
|
+
*/
|
|
19
|
+
export declare const attrParsers: {
|
|
20
|
+
readonly bool: (value: string | null) => boolean | undefined;
|
|
21
|
+
readonly string: (value: string | null) => string;
|
|
22
|
+
readonly int: (value: string | null) => number | undefined;
|
|
23
|
+
readonly "string[]": (value: string | null) => string[];
|
|
24
|
+
readonly "object[]": (value: string | null) => unknown[];
|
|
25
|
+
};
|
|
26
|
+
export interface ElementSpec {
|
|
27
|
+
/** Property names. Each becomes a live read on `ctx.props`. */
|
|
28
|
+
props?: readonly string[];
|
|
29
|
+
/**
|
|
30
|
+
* Attribute name to parser. Declaring one puts it in `observedAttributes`,
|
|
31
|
+
* so writing the attribute updates the same prop a property write would.
|
|
32
|
+
*/
|
|
33
|
+
attributes?: Readonly<Record<string, AttributeParser>>;
|
|
34
|
+
/**
|
|
35
|
+
* Builds the component. Runs inside the element's scope on every connection,
|
|
36
|
+
* so an `effect` created here dies with the element.
|
|
37
|
+
*/
|
|
38
|
+
build(context: BuildContext): void;
|
|
39
|
+
}
|
|
40
|
+
export interface BuildContext {
|
|
41
|
+
/** The element itself. The bridge's root accessor wants exactly this. */
|
|
42
|
+
readonly el: HTMLElement;
|
|
43
|
+
/** The declared props. Every read is a live read of the current value. */
|
|
44
|
+
readonly props: Readonly<Record<string, unknown>>;
|
|
45
|
+
/** The scope for this connection. Pass it to `createMachine`. */
|
|
46
|
+
readonly scope: OwnerScope;
|
|
47
|
+
/** Resolve a handle to its instance, walking up the scope chain. */
|
|
48
|
+
resolve<T>(handle: Handle): T | undefined;
|
|
49
|
+
/** Instantiate (on first call) and register a handle in this scope. */
|
|
50
|
+
watch<T>(handle: Handle, factory: Factory<T>, commands?: readonly string[], name?: string): T;
|
|
51
|
+
/** Consume a handle from the nearest ancestor that provides it. */
|
|
52
|
+
consume<T>(handle: Handle): T | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Whether a prop was written by the host (property or attribute) as
|
|
55
|
+
* opposed to left at its coerced default. Machines use it to tell a
|
|
56
|
+
* controlled value from a seed.
|
|
57
|
+
*/
|
|
58
|
+
authored(name: string): boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Write a prop through the element's store, marking it authored. Returns
|
|
62
|
+
* false when `el` is not a Spin element (or predates its upgrade), so the
|
|
63
|
+
* caller falls back to a plain property write the constructor picks up.
|
|
64
|
+
*/
|
|
65
|
+
export declare function writeProp(el: Element, name: string, value: unknown): boolean;
|
|
66
|
+
/** The scope of the element that owns `node`: a recipe's markup renders
|
|
67
|
+
* inside its custom element, so a bag spread on an inner node belongs to that
|
|
68
|
+
* element's scope. */
|
|
69
|
+
export declare function scopeOf(node: Element): OwnerScope | undefined;
|
|
70
|
+
/** Runs `fn` inside the owning element's scope, so what it creates is owned
|
|
71
|
+
* and disposed with the element. Outside an element (a detached fragment)
|
|
72
|
+
* there is no scope to enter, and `fn` runs as-is. */
|
|
73
|
+
export declare function runInElement<T>(el: Element, fn: () => T): T;
|
|
74
|
+
/**
|
|
75
|
+
* A unique id for a `tag` instance. Used when the author sets no `id`: the
|
|
76
|
+
* machine scopes part ids (and aria references) by its own id, so two
|
|
77
|
+
* id-less `<spin-accordion>` elements would otherwise share every part id.
|
|
78
|
+
*/
|
|
79
|
+
export declare function uniqueId(tag: string): string;
|
|
80
|
+
/**
|
|
81
|
+
* Registers `tag` as a custom element built by `spec`.
|
|
82
|
+
*
|
|
83
|
+
* `build` runs inside the element's scope on every connection, so every effect
|
|
84
|
+
* it creates dies with the element.
|
|
85
|
+
*/
|
|
86
|
+
export declare function define(tag: string, spec: ElementSpec): void;
|