@spinjs/components 0.0.0-stage → 0.1.0-preview.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/LICENSE +21 -0
- package/README.md +61 -2
- package/dist/angle-slider/angle-slider.events.d.ts +30 -0
- package/dist/angle-slider/angle-slider.events.js +1 -0
- package/dist/angle-slider/angle-slider.machine.d.ts +9 -0
- package/dist/angle-slider/angle-slider.machine.js +56 -0
- package/dist/angle-slider/angle-slider.presentation.d.ts +194 -0
- package/dist/angle-slider/angle-slider.presentation.js +277 -0
- package/dist/angle-slider/angle-slider.state.d.ts +38 -0
- package/dist/angle-slider/angle-slider.state.js +71 -0
- package/dist/angle-slider/angle-slider.transitions.d.ts +11 -0
- package/dist/angle-slider/angle-slider.transitions.js +18 -0
- package/dist/angle-slider/examples/basic.html +42 -0
- package/dist/angle-slider/examples/knob.html +34 -0
- package/dist/angle-slider/examples/labeled.html +63 -0
- package/dist/angle-slider/examples/marks.html +42 -0
- package/dist/async-list/async-list.events.d.ts +23 -0
- package/dist/async-list/async-list.events.js +1 -0
- package/dist/async-list/async-list.machine.d.ts +5 -0
- package/dist/async-list/async-list.machine.js +96 -0
- package/dist/async-list/async-list.presentation.d.ts +294 -0
- package/dist/async-list/async-list.presentation.js +380 -0
- package/dist/async-list/async-list.state.d.ts +27 -0
- package/dist/async-list/async-list.state.js +31 -0
- package/dist/async-list/async-list.transitions.d.ts +16 -0
- package/dist/async-list/async-list.transitions.js +17 -0
- package/dist/async-list/examples/basic.html +88 -0
- package/dist/avatar/avatar.events.d.ts +18 -0
- package/dist/avatar/avatar.events.js +1 -0
- package/dist/avatar/avatar.machine.d.ts +5 -0
- package/dist/avatar/avatar.machine.js +47 -0
- package/dist/avatar/avatar.presentation.d.ts +75 -0
- package/dist/avatar/avatar.presentation.js +68 -0
- package/dist/avatar/avatar.state.d.ts +28 -0
- package/dist/avatar/avatar.state.js +20 -0
- package/dist/avatar/avatar.transitions.d.ts +7 -0
- package/dist/avatar/avatar.transitions.js +5 -0
- package/dist/avatar/examples/badge.html +24 -0
- package/dist/avatar/examples/badgeminimal.html +16 -0
- package/dist/avatar/examples/basic.html +24 -0
- package/dist/avatar/examples/count.html +29 -0
- package/dist/avatar/examples/fallback.html +24 -0
- package/dist/avatar/examples/group.html +28 -0
- package/dist/avatar/examples/icon.html +15 -0
- package/dist/avatar/examples/multiples.html +48 -0
- package/dist/avatar/examples/pills.html +58 -0
- package/dist/avatar/examples/pillsolid.html +21 -0
- package/dist/avatar/examples/rounded.html +13 -0
- package/dist/avatar/examples/status.html +24 -0
- package/dist/avatar/examples/statusminimal.html +16 -0
- package/dist/avatar/examples/trusted.html +33 -0
- package/dist/avatar/examples/verification.html +18 -0
- package/dist/carousel/carousel.events.d.ts +50 -0
- package/dist/carousel/carousel.events.js +1 -0
- package/dist/carousel/carousel.machine.d.ts +6 -0
- package/dist/carousel/carousel.machine.js +70 -0
- package/dist/carousel/carousel.presentation.d.ts +379 -0
- package/dist/carousel/carousel.presentation.js +554 -0
- package/dist/carousel/carousel.state.d.ts +61 -0
- package/dist/carousel/carousel.state.js +93 -0
- package/dist/carousel/carousel.transitions.d.ts +20 -0
- package/dist/carousel/carousel.transitions.js +49 -0
- package/dist/carousel/examples/autoplay.html +69 -0
- package/dist/carousel/examples/basic.html +56 -0
- package/dist/carousel/examples/cards.html +71 -0
- package/dist/carousel/examples/hero.html +54 -0
- package/dist/carousel/examples/infinite.html +68 -0
- package/dist/carousel/examples/minimal.html +47 -0
- package/dist/carousel/examples/testimonials.html +78 -0
- package/dist/carousel/examples/thumbnails.html +67 -0
- package/dist/carousel/examples/vertical.html +67 -0
- package/dist/cascade-select/cascade.events.d.ts +42 -0
- package/dist/cascade-select/cascade.events.js +1 -0
- package/dist/cascade-select/cascade.machine.d.ts +7 -0
- package/dist/cascade-select/cascade.machine.js +118 -0
- package/dist/cascade-select/cascade.presentation.d.ts +415 -0
- package/dist/cascade-select/cascade.presentation.js +771 -0
- package/dist/cascade-select/cascade.state.d.ts +58 -0
- package/dist/cascade-select/cascade.state.js +97 -0
- package/dist/cascade-select/cascade.transitions.d.ts +21 -0
- package/dist/cascade-select/cascade.transitions.js +54 -0
- package/dist/cascade-select/examples/basic.html +77 -0
- package/dist/color-picker/color-picker.events.d.ts +83 -0
- package/dist/color-picker/color-picker.events.js +1 -0
- package/dist/color-picker/color-picker.machine.d.ts +5 -0
- package/dist/color-picker/color-picker.machine.js +130 -0
- package/dist/color-picker/color-picker.presentation.d.ts +402 -0
- package/dist/color-picker/color-picker.presentation.js +761 -0
- package/dist/color-picker/color-picker.state.d.ts +41 -0
- package/dist/color-picker/color-picker.state.js +71 -0
- package/dist/color-picker/color-picker.transitions.d.ts +21 -0
- package/dist/color-picker/color-picker.transitions.js +99 -0
- package/dist/color-picker/examples/basic.html +106 -0
- package/dist/color-picker/examples/hue-wheel.html +57 -0
- package/dist/color-picker/examples/inline.html +61 -0
- package/dist/color-picker/examples/with-presets.html +49 -0
- package/dist/combobox/combobox.events.d.ts +61 -0
- package/dist/combobox/combobox.events.js +1 -0
- package/dist/combobox/combobox.machine.d.ts +7 -0
- package/dist/combobox/combobox.machine.js +234 -0
- package/dist/combobox/combobox.presentation.d.ts +433 -0
- package/dist/combobox/combobox.presentation.js +746 -0
- package/dist/combobox/combobox.state.d.ts +80 -0
- package/dist/combobox/combobox.state.js +71 -0
- package/dist/combobox/combobox.transitions.d.ts +28 -0
- package/dist/combobox/combobox.transitions.js +91 -0
- package/dist/combobox/examples/basic.html +61 -0
- package/dist/combobox/examples/directory.html +71 -0
- package/dist/combobox/examples/grouping.html +36 -0
- package/dist/combobox/examples/multiple.html +37 -0
- package/dist/controller.d.ts +52 -0
- package/dist/controller.js +90 -0
- package/dist/date-input/date-input.events.d.ts +37 -0
- package/dist/date-input/date-input.events.js +1 -0
- package/dist/date-input/date-input.machine.d.ts +6 -0
- package/dist/date-input/date-input.machine.js +61 -0
- package/dist/date-input/date-input.presentation.d.ts +133 -0
- package/dist/date-input/date-input.presentation.js +328 -0
- package/dist/date-input/date-input.state.d.ts +77 -0
- package/dist/date-input/date-input.state.js +260 -0
- package/dist/date-input/date-input.transitions.d.ts +22 -0
- package/dist/date-input/date-input.transitions.js +166 -0
- package/dist/date-input/examples/basic.html +18 -0
- package/dist/date-picker/date-picker.events.d.ts +42 -0
- package/dist/date-picker/date-picker.events.js +1 -0
- package/dist/date-picker/date-picker.machine.d.ts +6 -0
- package/dist/date-picker/date-picker.machine.js +102 -0
- package/dist/date-picker/date-picker.presentation.d.ts +256 -0
- package/dist/date-picker/date-picker.presentation.js +549 -0
- package/dist/date-picker/date-picker.state.d.ts +66 -0
- package/dist/date-picker/date-picker.state.js +177 -0
- package/dist/date-picker/date-picker.transitions.d.ts +23 -0
- package/dist/date-picker/date-picker.transitions.js +94 -0
- package/dist/date-picker/examples/appointment.html +49 -0
- package/dist/date-picker/examples/basic.html +6 -0
- package/dist/date-picker/examples/multiple.html +6 -0
- package/dist/date-picker/examples/pricing.html +6 -0
- package/dist/date-picker/examples/range.html +6 -0
- package/dist/date-picker/examples/unavailable.html +6 -0
- package/dist/editable/editable.events.d.ts +29 -0
- package/dist/editable/editable.events.js +1 -0
- package/dist/editable/editable.machine.d.ts +5 -0
- package/dist/editable/editable.machine.js +82 -0
- package/dist/editable/editable.presentation.d.ts +278 -0
- package/dist/editable/editable.presentation.js +388 -0
- package/dist/editable/editable.state.d.ts +54 -0
- package/dist/editable/editable.state.js +32 -0
- package/dist/editable/editable.transitions.d.ts +11 -0
- package/dist/editable/editable.transitions.js +9 -0
- package/dist/editable/examples/basic.html +43 -0
- package/dist/editable/examples/doubleclick.html +19 -0
- package/dist/editable/examples/inline-edit.html +13 -0
- package/dist/editable/examples/profile-field.html +20 -0
- package/dist/editable/examples/resize.html +19 -0
- package/dist/editable/examples/task-item.html +19 -0
- package/dist/editable/examples/title-editor.html +13 -0
- package/dist/editable/examples/with-controls.html +20 -0
- package/dist/file-upload/examples/avatar.html +34 -0
- package/dist/file-upload/examples/basic.html +34 -0
- package/dist/file-upload/examples/directory.html +34 -0
- package/dist/file-upload/examples/dragdrop.html +31 -0
- package/dist/file-upload/examples/files.html +39 -0
- package/dist/file-upload/examples/images.html +40 -0
- package/dist/file-upload/examples/paste.html +30 -0
- package/dist/file-upload/examples/table.html +39 -0
- package/dist/file-upload/file-upload.events.d.ts +27 -0
- package/dist/file-upload/file-upload.events.js +1 -0
- package/dist/file-upload/file-upload.machine.d.ts +6 -0
- package/dist/file-upload/file-upload.machine.js +59 -0
- package/dist/file-upload/file-upload.presentation.d.ts +182 -0
- package/dist/file-upload/file-upload.presentation.js +256 -0
- package/dist/file-upload/file-upload.state.d.ts +52 -0
- package/dist/file-upload/file-upload.state.js +72 -0
- package/dist/file-upload/file-upload.transitions.d.ts +11 -0
- package/dist/file-upload/file-upload.transitions.js +32 -0
- package/dist/floating-panel/examples/basic.html +42 -0
- package/dist/floating-panel/examples/calculator.html +56 -0
- package/dist/floating-panel/examples/chat.html +45 -0
- package/dist/floating-panel/examples/media-player.html +54 -0
- package/dist/floating-panel/examples/notes.html +60 -0
- package/dist/floating-panel/examples/settings.html +73 -0
- package/dist/floating-panel/examples/task.html +79 -0
- package/dist/floating-panel/examples/video-call.html +47 -0
- package/dist/floating-panel/floating-panel.events.d.ts +45 -0
- package/dist/floating-panel/floating-panel.events.js +1 -0
- package/dist/floating-panel/floating-panel.machine.d.ts +6 -0
- package/dist/floating-panel/floating-panel.machine.js +70 -0
- package/dist/floating-panel/floating-panel.presentation.d.ts +239 -0
- package/dist/floating-panel/floating-panel.presentation.js +271 -0
- package/dist/floating-panel/floating-panel.state.d.ts +67 -0
- package/dist/floating-panel/floating-panel.state.js +76 -0
- package/dist/floating-panel/floating-panel.transitions.d.ts +22 -0
- package/dist/floating-panel/floating-panel.transitions.js +114 -0
- package/dist/hover-card/examples/basic.html +19 -0
- package/dist/hover-card/examples/controlled.html +32 -0
- package/dist/hover-card/examples/custom-positioning.html +29 -0
- package/dist/hover-card/examples/link.html +10 -0
- package/dist/hover-card/examples/product.html +33 -0
- package/dist/hover-card/examples/user.html +38 -0
- package/dist/hover-card/examples/with-arrow.html +29 -0
- package/dist/hover-card/hover-card.controller-def.d.ts +50 -0
- package/dist/hover-card/hover-card.controller-def.js +134 -0
- package/dist/image-cropper/crop-geometry.d.ts +133 -0
- package/dist/image-cropper/crop-geometry.js +453 -0
- package/dist/image-cropper/examples/basic.html +44 -0
- package/dist/image-cropper/examples/circle.html +44 -0
- package/dist/image-cropper/image-cropper.events.d.ts +108 -0
- package/dist/image-cropper/image-cropper.events.js +1 -0
- package/dist/image-cropper/image-cropper.machine.d.ts +5 -0
- package/dist/image-cropper/image-cropper.machine.js +231 -0
- package/dist/image-cropper/image-cropper.presentation.d.ts +295 -0
- package/dist/image-cropper/image-cropper.presentation.js +536 -0
- package/dist/image-cropper/image-cropper.state.d.ts +94 -0
- package/dist/image-cropper/image-cropper.state.js +134 -0
- package/dist/image-cropper/image-cropper.transitions.d.ts +13 -0
- package/dist/image-cropper/image-cropper.transitions.js +11 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +279 -0
- package/dist/listbox/examples/basic.html +50 -0
- package/dist/listbox/examples/controlled.html +54 -0
- package/dist/listbox/examples/countries.html +61 -0
- package/dist/listbox/examples/grouped.html +58 -0
- package/dist/listbox/examples/icons.html +56 -0
- package/dist/listbox/examples/multiple.html +56 -0
- package/dist/listbox/examples/priority.html +50 -0
- package/dist/listbox/examples/settings.html +64 -0
- package/dist/listbox/listbox.events.d.ts +42 -0
- package/dist/listbox/listbox.events.js +1 -0
- package/dist/listbox/listbox.machine.d.ts +6 -0
- package/dist/listbox/listbox.machine.js +51 -0
- package/dist/listbox/listbox.presentation.d.ts +294 -0
- package/dist/listbox/listbox.presentation.js +493 -0
- package/dist/listbox/listbox.state.d.ts +55 -0
- package/dist/listbox/listbox.state.js +59 -0
- package/dist/listbox/listbox.transitions.d.ts +20 -0
- package/dist/listbox/listbox.transitions.js +73 -0
- package/dist/menu/examples/basic.html +75 -0
- package/dist/menu/examples/context.html +74 -0
- package/dist/menu/examples/groups.html +88 -0
- package/dist/menu/examples/icons.html +80 -0
- package/dist/menu/examples/nested.html +83 -0
- package/dist/menu/examples/user.html +87 -0
- package/dist/menu/menu.events.d.ts +42 -0
- package/dist/menu/menu.events.js +1 -0
- package/dist/menu/menu.machine.d.ts +6 -0
- package/dist/menu/menu.machine.js +148 -0
- package/dist/menu/menu.presentation.d.ts +252 -0
- package/dist/menu/menu.presentation.js +709 -0
- package/dist/menu/menu.state.d.ts +54 -0
- package/dist/menu/menu.state.js +55 -0
- package/dist/mode-picker/examples/basic.html +17 -0
- package/dist/mode-picker/examples/minimal.html +17 -0
- package/dist/mode-picker/examples/pill.html +17 -0
- package/dist/mode-picker/mode-picker.events.d.ts +20 -0
- package/dist/mode-picker/mode-picker.events.js +1 -0
- package/dist/mode-picker/mode-picker.machine.d.ts +5 -0
- package/dist/mode-picker/mode-picker.machine.js +29 -0
- package/dist/mode-picker/mode-picker.presentation.d.ts +129 -0
- package/dist/mode-picker/mode-picker.presentation.js +175 -0
- package/dist/mode-picker/mode-picker.state.d.ts +27 -0
- package/dist/mode-picker/mode-picker.state.js +56 -0
- package/dist/mode-picker/mode-picker.transitions.d.ts +11 -0
- package/dist/mode-picker/mode-picker.transitions.js +32 -0
- package/dist/navigation-menu/examples/basic.html +72 -0
- package/dist/navigation-menu/examples/grouped.html +91 -0
- package/dist/navigation-menu/examples/minimal.html +49 -0
- package/dist/navigation-menu/navigation-menu.events.d.ts +20 -0
- package/dist/navigation-menu/navigation-menu.events.js +1 -0
- package/dist/navigation-menu/navigation-menu.machine.d.ts +6 -0
- package/dist/navigation-menu/navigation-menu.machine.js +51 -0
- package/dist/navigation-menu/navigation-menu.presentation.d.ts +132 -0
- package/dist/navigation-menu/navigation-menu.presentation.js +151 -0
- package/dist/navigation-menu/navigation-menu.state.d.ts +33 -0
- package/dist/navigation-menu/navigation-menu.state.js +49 -0
- package/dist/navigation-menu/navigation-menu.transitions.d.ts +11 -0
- package/dist/navigation-menu/navigation-menu.transitions.js +32 -0
- package/dist/number-input/examples/basic.html +49 -0
- package/dist/number-input/examples/currency.html +33 -0
- package/dist/number-input/examples/decimal.html +33 -0
- package/dist/number-input/examples/limits.html +42 -0
- package/dist/number-input/examples/percentage.html +38 -0
- package/dist/number-input/examples/quantity.html +35 -0
- package/dist/number-input/examples/scrubber.html +46 -0
- package/dist/number-input/examples/wheel.html +42 -0
- package/dist/number-input/number-input.events.d.ts +66 -0
- package/dist/number-input/number-input.events.js +1 -0
- package/dist/number-input/number-input.machine.d.ts +5 -0
- package/dist/number-input/number-input.machine.js +132 -0
- package/dist/number-input/number-input.presentation.d.ts +292 -0
- package/dist/number-input/number-input.presentation.js +449 -0
- package/dist/number-input/number-input.state.d.ts +71 -0
- package/dist/number-input/number-input.state.js +86 -0
- package/dist/number-input/number-input.transitions.d.ts +17 -0
- package/dist/number-input/number-input.transitions.js +40 -0
- package/dist/pagination/examples/basic.html +39 -0
- package/dist/pagination/examples/dropdown.html +37 -0
- package/dist/pagination/examples/info.html +41 -0
- package/dist/pagination/examples/jump.html +38 -0
- package/dist/pagination/examples/numbered.html +31 -0
- package/dist/pagination/examples/pagesize.html +46 -0
- package/dist/pagination/pagination.events.d.ts +36 -0
- package/dist/pagination/pagination.events.js +1 -0
- package/dist/pagination/pagination.machine.d.ts +6 -0
- package/dist/pagination/pagination.machine.js +45 -0
- package/dist/pagination/pagination.presentation.d.ts +161 -0
- package/dist/pagination/pagination.presentation.js +162 -0
- package/dist/pagination/pagination.state.d.ts +44 -0
- package/dist/pagination/pagination.state.js +115 -0
- package/dist/pagination/pagination.transitions.d.ts +17 -0
- package/dist/pagination/pagination.transitions.js +30 -0
- package/dist/pin-input/examples/basic.html +23 -0
- package/dist/pin-input/examples/field.html +25 -0
- package/dist/pin-input/examples/masked.html +23 -0
- package/dist/pin-input/examples/placeholder.html +24 -0
- package/dist/pin-input/examples/twofactor.html +25 -0
- package/dist/pin-input/examples/verification.html +32 -0
- package/dist/pin-input/pin-input.events.d.ts +48 -0
- package/dist/pin-input/pin-input.events.js +1 -0
- package/dist/pin-input/pin-input.machine.d.ts +5 -0
- package/dist/pin-input/pin-input.machine.js +99 -0
- package/dist/pin-input/pin-input.presentation.d.ts +204 -0
- package/dist/pin-input/pin-input.presentation.js +392 -0
- package/dist/pin-input/pin-input.state.d.ts +67 -0
- package/dist/pin-input/pin-input.state.js +63 -0
- package/dist/pin-input/pin-input.transitions.d.ts +10 -0
- package/dist/pin-input/pin-input.transitions.js +22 -0
- package/dist/popover/examples/basic.html +15 -0
- package/dist/popover/examples/feedback.html +17 -0
- package/dist/popover/examples/notifications.html +21 -0
- package/dist/popover/examples/settings.html +39 -0
- package/dist/popover/examples/share.html +18 -0
- package/dist/popover/examples/user.html +43 -0
- package/dist/popover/popover.controller-def.d.ts +39 -0
- package/dist/popover/popover.controller-def.js +74 -0
- package/dist/rating-group/examples/basic.html +39 -0
- package/dist/rating-group/examples/movie.html +45 -0
- package/dist/rating-group/examples/product-review.html +52 -0
- package/dist/rating-group/examples/service-evaluation.html +31 -0
- package/dist/rating-group/rating-group.events.d.ts +38 -0
- package/dist/rating-group/rating-group.events.js +1 -0
- package/dist/rating-group/rating-group.machine.d.ts +6 -0
- package/dist/rating-group/rating-group.machine.js +70 -0
- package/dist/rating-group/rating-group.presentation.d.ts +144 -0
- package/dist/rating-group/rating-group.presentation.js +208 -0
- package/dist/rating-group/rating-group.state.d.ts +36 -0
- package/dist/rating-group/rating-group.state.js +41 -0
- package/dist/rating-group/rating-group.transitions.d.ts +16 -0
- package/dist/rating-group/rating-group.transitions.js +15 -0
- package/dist/react/react.d.ts +29 -0
- package/dist/react/react.js +8 -0
- package/dist/select/examples/basic.html +72 -0
- package/dist/select/examples/category.html +67 -0
- package/dist/select/examples/country.html +65 -0
- package/dist/select/examples/language.html +19 -0
- package/dist/select/examples/multiple.html +20 -0
- package/dist/select/examples/profile.html +73 -0
- package/dist/select/examples/theme.html +11 -0
- package/dist/select/examples/with-overlapping-label.html +57 -0
- package/dist/select/select.events.d.ts +59 -0
- package/dist/select/select.events.js +1 -0
- package/dist/select/select.machine.d.ts +6 -0
- package/dist/select/select.machine.js +203 -0
- package/dist/select/select.presentation.d.ts +358 -0
- package/dist/select/select.presentation.js +509 -0
- package/dist/select/select.shared.d.ts +8 -0
- package/dist/select/select.shared.js +13 -0
- package/dist/select/select.state.d.ts +51 -0
- package/dist/select/select.state.js +69 -0
- package/dist/select/select.transitions.d.ts +15 -0
- package/dist/select/select.transitions.js +27 -0
- package/dist/shared/keyboard.d.ts +29 -0
- package/dist/shared/keyboard.js +13 -0
- package/dist/signature-pad/examples/basic.html +29 -0
- package/dist/signature-pad/examples/contract.html +36 -0
- package/dist/signature-pad/examples/receipt.html +40 -0
- package/dist/signature-pad/examples/with-preview.html +40 -0
- package/dist/signature-pad/signature-pad.events.d.ts +26 -0
- package/dist/signature-pad/signature-pad.events.js +1 -0
- package/dist/signature-pad/signature-pad.machine.d.ts +7 -0
- package/dist/signature-pad/signature-pad.machine.js +44 -0
- package/dist/signature-pad/signature-pad.presentation.d.ts +184 -0
- package/dist/signature-pad/signature-pad.presentation.js +236 -0
- package/dist/signature-pad/signature-pad.state.d.ts +40 -0
- package/dist/signature-pad/signature-pad.state.js +94 -0
- package/dist/signature-pad/signature-pad.transitions.d.ts +12 -0
- package/dist/signature-pad/signature-pad.transitions.js +40 -0
- package/dist/slider/examples/basic.html +32 -0
- package/dist/slider/examples/equalizer.html +119 -0
- package/dist/slider/examples/fractional.html +7 -0
- package/dist/slider/examples/marks.html +42 -0
- package/dist/slider/examples/range.html +31 -0
- package/dist/slider/examples/stepped.html +7 -0
- package/dist/slider/examples/ticks.html +72 -0
- package/dist/slider/examples/vertical.html +30 -0
- package/dist/slider/slider.events.d.ts +50 -0
- package/dist/slider/slider.events.js +1 -0
- package/dist/slider/slider.machine.d.ts +5 -0
- package/dist/slider/slider.machine.js +86 -0
- package/dist/slider/slider.presentation.d.ts +252 -0
- package/dist/slider/slider.presentation.js +322 -0
- package/dist/slider/slider.state.d.ts +72 -0
- package/dist/slider/slider.state.js +91 -0
- package/dist/slider/slider.transitions.d.ts +17 -0
- package/dist/slider/slider.transitions.js +62 -0
- package/dist/solid/solid.d.ts +36 -0
- package/dist/solid/solid.js +10 -0
- package/dist/spin-element.d.ts +13 -0
- package/dist/spin-element.js +38 -0
- package/dist/splitter/examples/basic.html +22 -0
- package/dist/splitter/examples/nested.html +41 -0
- package/dist/splitter/examples/threepanels.html +23 -0
- package/dist/splitter/examples/vertical.html +23 -0
- package/dist/splitter/splitter.events.d.ts +52 -0
- package/dist/splitter/splitter.events.js +1 -0
- package/dist/splitter/splitter.machine.d.ts +6 -0
- package/dist/splitter/splitter.machine.js +78 -0
- package/dist/splitter/splitter.presentation.d.ts +204 -0
- package/dist/splitter/splitter.presentation.js +443 -0
- package/dist/splitter/splitter.state.d.ts +48 -0
- package/dist/splitter/splitter.state.js +225 -0
- package/dist/splitter/splitter.transitions.d.ts +20 -0
- package/dist/splitter/splitter.transitions.js +132 -0
- package/dist/steps/examples/basic.html +57 -0
- package/dist/steps/examples/checkmarks.html +32 -0
- package/dist/steps/examples/content.html +45 -0
- package/dist/steps/examples/descriptions.html +26 -0
- package/dist/steps/examples/icons.html +26 -0
- package/dist/steps/examples/lines.html +26 -0
- package/dist/steps/examples/navigation.html +41 -0
- package/dist/steps/examples/onboarding.html +32 -0
- package/dist/steps/examples/progress.html +47 -0
- package/dist/steps/examples/segmented.html +40 -0
- package/dist/steps/examples/vertical.html +58 -0
- package/dist/steps/examples/verticallabels.html +27 -0
- package/dist/steps/examples/verticalnavigation.html +36 -0
- package/dist/steps/steps.events.d.ts +27 -0
- package/dist/steps/steps.events.js +1 -0
- package/dist/steps/steps.machine.d.ts +6 -0
- package/dist/steps/steps.machine.js +36 -0
- package/dist/steps/steps.presentation.d.ts +177 -0
- package/dist/steps/steps.presentation.js +248 -0
- package/dist/steps/steps.state.d.ts +39 -0
- package/dist/steps/steps.state.js +47 -0
- package/dist/steps/steps.transitions.d.ts +15 -0
- package/dist/steps/steps.transitions.js +39 -0
- package/dist/tabs/examples/basic.html +41 -0
- package/dist/tabs/examples/dashboard.html +116 -0
- package/dist/tabs/examples/ghost.html +28 -0
- package/dist/tabs/examples/icon-above.html +50 -0
- package/dist/tabs/examples/icon-only.html +37 -0
- package/dist/tabs/examples/outline-with-icons.html +50 -0
- package/dist/tabs/examples/outline.html +29 -0
- package/dist/tabs/examples/pills.html +40 -0
- package/dist/tabs/examples/project.html +87 -0
- package/dist/tabs/examples/settings.html +100 -0
- package/dist/tabs/examples/stack-with-icons.html +51 -0
- package/dist/tabs/examples/stack.html +28 -0
- package/dist/tabs/examples/underline.html +41 -0
- package/dist/tabs/examples/vertical-ghost.html +44 -0
- package/dist/tabs/examples/vertical-icons.html +44 -0
- package/dist/tabs/examples/vertical-underline.html +45 -0
- package/dist/tabs/examples/vertical-with-icons.html +53 -0
- package/dist/tabs/examples/vertical.html +42 -0
- package/dist/tabs/examples/with-badges.html +43 -0
- package/dist/tabs/examples/with-icons.html +42 -0
- package/dist/tabs/tabs.events.d.ts +19 -0
- package/dist/tabs/tabs.events.js +1 -0
- package/dist/tabs/tabs.machine.d.ts +5 -0
- package/dist/tabs/tabs.machine.js +54 -0
- package/dist/tabs/tabs.presentation.d.ts +83 -0
- package/dist/tabs/tabs.presentation.js +94 -0
- package/dist/tabs/tabs.state.d.ts +61 -0
- package/dist/tabs/tabs.state.js +53 -0
- package/dist/tabs/tabs.transitions.d.ts +8 -0
- package/dist/tabs/tabs.transitions.js +6 -0
- package/dist/tags-input/examples/basic.html +43 -0
- package/dist/tags-input/examples/with-combobox.html +64 -0
- package/dist/tags-input/tags.events.d.ts +77 -0
- package/dist/tags-input/tags.events.js +1 -0
- package/dist/tags-input/tags.machine.d.ts +6 -0
- package/dist/tags-input/tags.machine.js +311 -0
- package/dist/tags-input/tags.presentation.d.ts +376 -0
- package/dist/tags-input/tags.presentation.js +782 -0
- package/dist/tags-input/tags.state.d.ts +109 -0
- package/dist/tags-input/tags.state.js +111 -0
- package/dist/tags-input/tags.transitions.d.ts +23 -0
- package/dist/tags-input/tags.transitions.js +101 -0
- package/dist/theme-picker/examples/basic.html +52 -0
- package/dist/theme-picker/examples/cards.html +32 -0
- package/dist/theme-picker/examples/compact.html +42 -0
- package/dist/theme-picker/examples/swatches.html +31 -0
- package/dist/theme-picker/theme-picker.events.d.ts +32 -0
- package/dist/theme-picker/theme-picker.events.js +1 -0
- package/dist/theme-picker/theme-picker.machine.d.ts +5 -0
- package/dist/theme-picker/theme-picker.machine.js +65 -0
- package/dist/theme-picker/theme-picker.presentation.d.ts +198 -0
- package/dist/theme-picker/theme-picker.presentation.js +306 -0
- package/dist/theme-picker/theme-picker.state.d.ts +40 -0
- package/dist/theme-picker/theme-picker.state.js +108 -0
- package/dist/theme-picker/theme-picker.transitions.d.ts +17 -0
- package/dist/theme-picker/theme-picker.transitions.js +62 -0
- package/dist/timer/examples/basic.html +36 -0
- package/dist/timer/examples/card.html +45 -0
- package/dist/timer/examples/compact.html +32 -0
- package/dist/timer/examples/countdown.html +45 -0
- package/dist/timer/examples/labels.html +43 -0
- package/dist/timer/examples/large.html +38 -0
- package/dist/timer/examples/minimal.html +21 -0
- package/dist/timer/examples/pomodoro.html +45 -0
- package/dist/timer/examples/workout.html +47 -0
- package/dist/timer/timer.events.d.ts +18 -0
- package/dist/timer/timer.events.js +1 -0
- package/dist/timer/timer.machine.d.ts +5 -0
- package/dist/timer/timer.machine.js +50 -0
- package/dist/timer/timer.presentation.d.ts +248 -0
- package/dist/timer/timer.presentation.js +265 -0
- package/dist/timer/timer.state.d.ts +29 -0
- package/dist/timer/timer.state.js +64 -0
- package/dist/timer/timer.transitions.d.ts +11 -0
- package/dist/timer/timer.transitions.js +35 -0
- package/dist/toast/examples/action.html +40 -0
- package/dist/toast/examples/basic.html +37 -0
- package/dist/toast/examples/bottomcenter.html +37 -0
- package/dist/toast/examples/bottomleft.html +37 -0
- package/dist/toast/examples/bottomright.html +37 -0
- package/dist/toast/examples/duration.html +36 -0
- package/dist/toast/examples/promise.html +44 -0
- package/dist/toast/examples/topcenter.html +37 -0
- package/dist/toast/examples/topleft.html +37 -0
- package/dist/toast/examples/topright.html +37 -0
- package/dist/toast/examples/types.html +47 -0
- package/dist/toast/examples/updatable.html +8 -0
- package/dist/toast/toast.events.d.ts +60 -0
- package/dist/toast/toast.events.js +1 -0
- package/dist/toast/toast.machine.d.ts +6 -0
- package/dist/toast/toast.machine.js +97 -0
- package/dist/toast/toast.presentation.d.ts +284 -0
- package/dist/toast/toast.presentation.js +532 -0
- package/dist/toast/toast.state.d.ts +65 -0
- package/dist/toast/toast.state.js +88 -0
- package/dist/toast/toast.transitions.d.ts +24 -0
- package/dist/toast/toast.transitions.js +85 -0
- package/dist/toggle-group/examples/basic.html +25 -0
- package/dist/toggle-group/examples/ghost.html +22 -0
- package/dist/toggle-group/examples/icons.html +25 -0
- package/dist/toggle-group/examples/multiple.html +14 -0
- package/dist/toggle-group/examples/outline.html +25 -0
- package/dist/toggle-group/examples/toolbar.html +25 -0
- package/dist/toggle-group/toggle-group.events.d.ts +45 -0
- package/dist/toggle-group/toggle-group.events.js +1 -0
- package/dist/toggle-group/toggle-group.machine.d.ts +5 -0
- package/dist/toggle-group/toggle-group.machine.js +65 -0
- package/dist/toggle-group/toggle-group.presentation.d.ts +112 -0
- package/dist/toggle-group/toggle-group.presentation.js +217 -0
- package/dist/toggle-group/toggle-group.state.d.ts +45 -0
- package/dist/toggle-group/toggle-group.state.js +67 -0
- package/dist/toggle-group/toggle-group.transitions.d.ts +10 -0
- package/dist/toggle-group/toggle-group.transitions.js +9 -0
- package/dist/tooltip/examples/basic.html +13 -0
- package/dist/tooltip/examples/metrics.html +30 -0
- package/dist/tooltip/examples/positioning.html +26 -0
- package/dist/tooltip/examples/status.html +33 -0
- package/dist/tooltip/examples/video.html +22 -0
- package/dist/tooltip/examples/with-arrow.html +14 -0
- package/dist/tooltip/tooltip.controller-def.d.ts +42 -0
- package/dist/tooltip/tooltip.controller-def.js +110 -0
- package/dist/tour/examples/basic.html +67 -0
- package/dist/tour/tour.events.d.ts +32 -0
- package/dist/tour/tour.events.js +1 -0
- package/dist/tour/tour.machine.d.ts +5 -0
- package/dist/tour/tour.machine.js +77 -0
- package/dist/tour/tour.presentation.d.ts +260 -0
- package/dist/tour/tour.presentation.js +272 -0
- package/dist/tour/tour.state.d.ts +43 -0
- package/dist/tour/tour.state.js +60 -0
- package/dist/tour/tour.transitions.d.ts +16 -0
- package/dist/tour/tour.transitions.js +32 -0
- package/dist/tree-view/examples/basic.html +47 -0
- package/dist/tree-view/examples/loading.html +57 -0
- package/dist/tree-view/tree-view.events.d.ts +67 -0
- package/dist/tree-view/tree-view.events.js +1 -0
- package/dist/tree-view/tree-view.machine.d.ts +6 -0
- package/dist/tree-view/tree-view.machine.js +86 -0
- package/dist/tree-view/tree-view.presentation.d.ts +254 -0
- package/dist/tree-view/tree-view.presentation.js +515 -0
- package/dist/tree-view/tree-view.state.d.ts +54 -0
- package/dist/tree-view/tree-view.state.js +61 -0
- package/dist/tree-view/tree-view.transitions.d.ts +30 -0
- package/dist/tree-view/tree-view.transitions.js +107 -0
- package/package.json +245 -4
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { TagsEvent } from "./tags.events.js";
|
|
2
|
+
export interface TagsValidateArgs {
|
|
3
|
+
readonly inputValue: string;
|
|
4
|
+
readonly value: readonly string[];
|
|
5
|
+
}
|
|
6
|
+
export type SanitizeValue = (value: string) => string;
|
|
7
|
+
export type ValidateTag = (details: TagsValidateArgs) => boolean;
|
|
8
|
+
/** The mutation log: the connect turns each entry into an announcement. */
|
|
9
|
+
export type TagsLog = {
|
|
10
|
+
readonly type: "add";
|
|
11
|
+
readonly value: string;
|
|
12
|
+
} | {
|
|
13
|
+
readonly type: "delete";
|
|
14
|
+
readonly value: string;
|
|
15
|
+
} | {
|
|
16
|
+
readonly type: "update";
|
|
17
|
+
readonly value: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly type: "paste";
|
|
20
|
+
readonly values: readonly string[];
|
|
21
|
+
} | {
|
|
22
|
+
readonly type: "select";
|
|
23
|
+
readonly value: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly type: "clear";
|
|
26
|
+
};
|
|
27
|
+
export type TagsState = "idle" | "focused:input" | "navigating:tag" | "editing:tag";
|
|
28
|
+
export interface TagsContext {
|
|
29
|
+
value: string[];
|
|
30
|
+
/** The seed for form reset: the value the host declared. */
|
|
31
|
+
initialValue: string[];
|
|
32
|
+
inputValue: string;
|
|
33
|
+
highlightedIndex: number | null;
|
|
34
|
+
editedValue: string;
|
|
35
|
+
editedIndex: number | null;
|
|
36
|
+
log: TagsLog | null;
|
|
37
|
+
logPrev: TagsLog | null;
|
|
38
|
+
/** Set when an add was refused; the bridge reports and clears it. */
|
|
39
|
+
refusal: "invalidTag" | null;
|
|
40
|
+
max: number;
|
|
41
|
+
allowOverflow: boolean;
|
|
42
|
+
allowDuplicates: boolean;
|
|
43
|
+
editable: boolean;
|
|
44
|
+
addOnPaste: boolean;
|
|
45
|
+
addOnBlur: boolean;
|
|
46
|
+
clearOnBlur: boolean;
|
|
47
|
+
delimiter: string;
|
|
48
|
+
sanitizeValue: SanitizeValue;
|
|
49
|
+
validate: ValidateTag;
|
|
50
|
+
dir: "ltr" | "rtl";
|
|
51
|
+
disabled: boolean;
|
|
52
|
+
readOnly: boolean;
|
|
53
|
+
invalid: boolean | undefined;
|
|
54
|
+
required: boolean;
|
|
55
|
+
name: string | undefined;
|
|
56
|
+
form: string | undefined;
|
|
57
|
+
maxLength: number | null;
|
|
58
|
+
placeholder: string;
|
|
59
|
+
translations: unknown;
|
|
60
|
+
}
|
|
61
|
+
export interface TagsArgs {
|
|
62
|
+
readonly value?: string;
|
|
63
|
+
readonly defaultValue?: string;
|
|
64
|
+
readonly inputValue?: string;
|
|
65
|
+
readonly defaultInputValue?: string;
|
|
66
|
+
readonly max?: number;
|
|
67
|
+
readonly allowOverflow?: boolean;
|
|
68
|
+
readonly allowDuplicates?: boolean;
|
|
69
|
+
readonly editable?: boolean;
|
|
70
|
+
readonly addOnPaste?: boolean;
|
|
71
|
+
/** The blur behavior: `add` commits, `clear` empties, neither does. */
|
|
72
|
+
readonly blurBehavior?: string;
|
|
73
|
+
readonly delimiter?: string;
|
|
74
|
+
readonly sanitizeValue?: SanitizeValue;
|
|
75
|
+
readonly validate?: ValidateTag;
|
|
76
|
+
readonly dir?: string;
|
|
77
|
+
readonly disabled?: boolean;
|
|
78
|
+
readonly readOnly?: boolean;
|
|
79
|
+
readonly invalid?: boolean;
|
|
80
|
+
readonly required?: boolean;
|
|
81
|
+
readonly name?: string;
|
|
82
|
+
readonly form?: string;
|
|
83
|
+
readonly maxLength?: number;
|
|
84
|
+
readonly placeholder?: string;
|
|
85
|
+
readonly translations?: unknown;
|
|
86
|
+
}
|
|
87
|
+
/** Strings off the transport: JSON text or arrays, well-shaped only.
|
|
88
|
+
* The scope grammar coerces `= []` to `["[]"]` — the lone artifact entry
|
|
89
|
+
* drops here, once, for every reader. */
|
|
90
|
+
export declare function stringsOf(raw: unknown): string[];
|
|
91
|
+
export declare function sameTags(a: readonly string[], b: readonly string[]): boolean;
|
|
92
|
+
export declare const uniq: (values: readonly string[]) => string[];
|
|
93
|
+
export declare const clampIndex: (index: number, length: number) => number | null;
|
|
94
|
+
export declare function initial(args: TagsArgs, authored: (name: string) => boolean): TagsContext;
|
|
95
|
+
/** An exact count rather than a ceiling: a list already past the cap is not
|
|
96
|
+
* "at" it, so the insert still goes through — which is why `api.atMax`
|
|
97
|
+
* reports `>=` while this guard reports equality. */
|
|
98
|
+
export declare const isAtMax: (ctx: TagsContext) => boolean;
|
|
99
|
+
/** The INSERT_TAG overflow guard: at the cap the input text survives. */
|
|
100
|
+
export declare const canAdd: (ctx: TagsContext) => boolean;
|
|
101
|
+
export declare const caretAtStart: (event: TagsEvent) => boolean;
|
|
102
|
+
/** The selection is announced from a watch on the highlight; here it is
|
|
103
|
+
* written wherever the highlight moves. */
|
|
104
|
+
export declare const withSelectLog: (ctx: TagsContext, index: number | null) => Partial<TagsContext>;
|
|
105
|
+
export declare const valueAtIndex: (ctx: TagsContext, index: number) => string | undefined;
|
|
106
|
+
/** Append the sanitized input text, then clear it. Guarded by `canInsert`
|
|
107
|
+
* at every call site. */
|
|
108
|
+
export declare const addFromInput: (ctx: TagsContext) => Partial<TagsContext>;
|
|
109
|
+
//# sourceMappingURL=tags.state.d.ts.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { defaultTwin } from "@spinjs/runtime";
|
|
2
|
+
// src/tags-input/tags.state.ts
|
|
3
|
+
/** Strings off the transport: JSON text or arrays, well-shaped only.
|
|
4
|
+
* The scope grammar coerces `= []` to `["[]"]` — the lone artifact entry
|
|
5
|
+
* drops here, once, for every reader. */
|
|
6
|
+
function stringsOf(raw) {
|
|
7
|
+
if (Array.isArray(raw)) {
|
|
8
|
+
const clean = raw.filter((item) => typeof item === "string");
|
|
9
|
+
return clean.some((item) => item === "[]") && clean.length === 1 ? [] : clean;
|
|
10
|
+
}
|
|
11
|
+
if (typeof raw !== "string") return [];
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(raw);
|
|
14
|
+
return Array.isArray(parsed) && parsed.every((item) => typeof item === "string") ? [...parsed] : [];
|
|
15
|
+
} catch {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function sameTags(a, b) {
|
|
20
|
+
return a.length === b.length && a.every((value, index) => value === b[index]);
|
|
21
|
+
}
|
|
22
|
+
const uniq = (values) => [...new Set(values)];
|
|
23
|
+
const clampIndex = (index, length) => index < 0 || index >= length ? null : index;
|
|
24
|
+
const sanitizeDefault = (value) => value.trim();
|
|
25
|
+
const validateDefault = () => true;
|
|
26
|
+
function initial(args, authored) {
|
|
27
|
+
const count = (value) => typeof value === "number" && Number.isFinite(value) ? value : Infinity;
|
|
28
|
+
const flag = (value) => value === true;
|
|
29
|
+
const text = (value, fallback) => typeof value === "string" ? value : fallback;
|
|
30
|
+
const fn = (value, fallback) => typeof value === "function" ? value : fallback;
|
|
31
|
+
const behavior = args.blurBehavior;
|
|
32
|
+
const written = (field) => authored(field) || authored(defaultTwin(field)) || args[defaultTwin(field)] !== void 0;
|
|
33
|
+
const seeded = written("value") ? stringsOf(args.value) : stringsOf(args.defaultValue);
|
|
34
|
+
return {
|
|
35
|
+
value: seeded,
|
|
36
|
+
initialValue: seeded,
|
|
37
|
+
inputValue: written("inputValue") ? text(args.inputValue, "") : text(args.defaultInputValue, ""),
|
|
38
|
+
max: count(args.max),
|
|
39
|
+
allowOverflow: flag(args.allowOverflow),
|
|
40
|
+
allowDuplicates: flag(args.allowDuplicates),
|
|
41
|
+
editable: args.editable !== false,
|
|
42
|
+
addOnPaste: flag(args.addOnPaste),
|
|
43
|
+
addOnBlur: behavior === "add",
|
|
44
|
+
clearOnBlur: behavior === "clear",
|
|
45
|
+
delimiter: text(args.delimiter, ","),
|
|
46
|
+
sanitizeValue: fn(args.sanitizeValue, sanitizeDefault),
|
|
47
|
+
validate: fn(args.validate, validateDefault),
|
|
48
|
+
dir: args.dir === "rtl" ? "rtl" : "ltr",
|
|
49
|
+
disabled: args.disabled === true,
|
|
50
|
+
readOnly: args.readOnly === true,
|
|
51
|
+
invalid: args.invalid === true ? true : void 0,
|
|
52
|
+
required: args.required === true,
|
|
53
|
+
name: typeof args.name === "string" && args.name.length > 0 ? args.name : void 0,
|
|
54
|
+
form: typeof args.form === "string" && args.form.length > 0 ? args.form : void 0,
|
|
55
|
+
maxLength: typeof args.maxLength === "number" && Number.isFinite(args.maxLength) && args.maxLength > 0 ? Math.trunc(args.maxLength) : null,
|
|
56
|
+
placeholder: typeof args.placeholder === "string" ? args.placeholder : "",
|
|
57
|
+
translations: args.translations
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** An exact count rather than a ceiling: a list already past the cap is not
|
|
61
|
+
* "at" it, so the insert still goes through — which is why `api.atMax`
|
|
62
|
+
* reports `>=` while this guard reports equality. */
|
|
63
|
+
const isAtMax = (ctx) => ctx.value.length === ctx.max;
|
|
64
|
+
/** The INSERT_TAG overflow guard: at the cap the input text survives. */
|
|
65
|
+
const canAdd = (ctx) => ctx.allowOverflow || !isAtMax(ctx);
|
|
66
|
+
const caretAtStart = (event) => {
|
|
67
|
+
switch (event.type) {
|
|
68
|
+
case "ARROW_LEFT":
|
|
69
|
+
case "ARROW_RIGHT":
|
|
70
|
+
case "BACKSPACE":
|
|
71
|
+
case "DELETE": return event.caretAtStart === true;
|
|
72
|
+
default: return false;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
/** The selection is announced from a watch on the highlight; here it is
|
|
76
|
+
* written wherever the highlight moves. */
|
|
77
|
+
const withSelectLog = (ctx, index) => {
|
|
78
|
+
if (index === null || ctx.log === null) return { highlightedIndex: index };
|
|
79
|
+
const value = ctx.value[index];
|
|
80
|
+
if (value === void 0) return { highlightedIndex: index };
|
|
81
|
+
return {
|
|
82
|
+
highlightedIndex: index,
|
|
83
|
+
logPrev: ctx.log,
|
|
84
|
+
log: {
|
|
85
|
+
type: "select",
|
|
86
|
+
value
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
const valueAtIndex = (ctx, index) => ctx.value[index];
|
|
91
|
+
/** Append the sanitized input text, then clear it. Guarded by `canInsert`
|
|
92
|
+
* at every call site. */
|
|
93
|
+
const addFromInput = (ctx) => {
|
|
94
|
+
const inputValue = ctx.sanitizeValue(ctx.inputValue);
|
|
95
|
+
if (!ctx.validate({
|
|
96
|
+
inputValue,
|
|
97
|
+
value: ctx.value
|
|
98
|
+
})) return { refusal: "invalidTag" };
|
|
99
|
+
return {
|
|
100
|
+
value: ctx.allowDuplicates ? [...ctx.value, inputValue] : uniq([...ctx.value, inputValue]),
|
|
101
|
+
inputValue: "",
|
|
102
|
+
log: {
|
|
103
|
+
type: "add",
|
|
104
|
+
value: inputValue
|
|
105
|
+
},
|
|
106
|
+
logPrev: ctx.log
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export { addFromInput, canAdd, caretAtStart, clampIndex, initial, isAtMax, sameTags, stringsOf, uniq, valueAtIndex, withSelectLog };
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=tags.state.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TagsEvent } from "./tags.events.js";
|
|
2
|
+
import { TagsContext, addFromInput, canAdd, caretAtStart, isAtMax } from "./tags.state.js";
|
|
3
|
+
export declare const setInputValue: (_ctx: TagsContext, e: TagsEvent) => Partial<TagsContext>;
|
|
4
|
+
export declare const addTagFromPaste: (ctx: TagsContext, e: TagsEvent) => Partial<TagsContext>;
|
|
5
|
+
export declare const deleteTag: (ctx: TagsContext, e: TagsEvent) => Partial<TagsContext>;
|
|
6
|
+
export declare const deleteHighlighted: (ctx: TagsContext) => Partial<TagsContext>;
|
|
7
|
+
export declare const clearInputValue: () => Partial<TagsContext>;
|
|
8
|
+
export declare const clearHighlight: () => Partial<TagsContext>;
|
|
9
|
+
export declare const highlightPrev: (ctx: TagsContext) => Partial<TagsContext>;
|
|
10
|
+
export declare const highlightLast: (ctx: TagsContext) => Partial<TagsContext>;
|
|
11
|
+
export declare const highlightAtIndex: (ctx: TagsContext) => Partial<TagsContext>;
|
|
12
|
+
export declare const beginEdit: (ctx: TagsContext, e: TagsEvent) => Partial<TagsContext>;
|
|
13
|
+
export declare const finishEdit: (ctx: TagsContext) => Partial<TagsContext>;
|
|
14
|
+
export declare const clearEditAll: () => Partial<TagsContext>;
|
|
15
|
+
export declare const hasHighlighted: (ctx: TagsContext) => boolean;
|
|
16
|
+
export declare const canInsert: (ctx: TagsContext) => boolean;
|
|
17
|
+
export declare const insertOnBlur: (ctx: TagsContext) => boolean;
|
|
18
|
+
export declare const clearOnBlur: (ctx: TagsContext) => boolean;
|
|
19
|
+
export declare const addOnPaste: (ctx: TagsContext) => boolean;
|
|
20
|
+
export declare const canLeaveInput: (ctx: TagsContext, event: TagsEvent) => boolean;
|
|
21
|
+
export declare const caretNotAtStart: (_ctx: TagsContext, event: TagsEvent) => boolean;
|
|
22
|
+
export { addFromInput, canAdd, caretAtStart, isAtMax };
|
|
23
|
+
//# sourceMappingURL=tags.transitions.d.ts.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { addFromInput, canAdd, caretAtStart, clampIndex, isAtMax, uniq, valueAtIndex, withSelectLog } from "./tags.state.js";
|
|
2
|
+
// src/tags-input/tags.transitions.ts
|
|
3
|
+
const setInputValue = (_ctx, e) => {
|
|
4
|
+
if (e.type === "TYPE" || e.type === "SET_INPUT_VALUE" || e.type === "PASTE") return { inputValue: e.value };
|
|
5
|
+
return {};
|
|
6
|
+
};
|
|
7
|
+
const addTagFromPaste = (ctx, e) => {
|
|
8
|
+
if (e.type !== "PASTE") return {};
|
|
9
|
+
const inputValue = ctx.sanitizeValue(ctx.inputValue);
|
|
10
|
+
const values = ctx.delimiter.length > 0 ? inputValue.split(ctx.delimiter).map((part) => ctx.sanitizeValue(part)) : [inputValue];
|
|
11
|
+
if (!ctx.validate({
|
|
12
|
+
inputValue,
|
|
13
|
+
value: ctx.value
|
|
14
|
+
})) return {
|
|
15
|
+
refusal: "invalidTag",
|
|
16
|
+
inputValue: ""
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
value: ctx.allowDuplicates ? [...ctx.value, ...values] : uniq([...ctx.value, ...values]),
|
|
20
|
+
inputValue: "",
|
|
21
|
+
log: {
|
|
22
|
+
type: "paste",
|
|
23
|
+
values
|
|
24
|
+
},
|
|
25
|
+
logPrev: ctx.log
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const deleteTag = (ctx, e) => {
|
|
29
|
+
if (e.type !== "CLEAR_TAG" && e.type !== "CLICK_DELETE_TAG") return {};
|
|
30
|
+
const removed = ctx.value[e.index];
|
|
31
|
+
if (removed === void 0) return {};
|
|
32
|
+
return {
|
|
33
|
+
value: ctx.value.filter((_, i) => i !== e.index),
|
|
34
|
+
log: {
|
|
35
|
+
type: "delete",
|
|
36
|
+
value: removed
|
|
37
|
+
},
|
|
38
|
+
logPrev: ctx.log
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const deleteHighlighted = (ctx) => {
|
|
42
|
+
const index = ctx.highlightedIndex;
|
|
43
|
+
if (index === null) return {};
|
|
44
|
+
const removed = ctx.value[index];
|
|
45
|
+
if (removed === void 0) return {};
|
|
46
|
+
return {
|
|
47
|
+
value: ctx.value.filter((_, i) => i !== index),
|
|
48
|
+
editedIndex: index,
|
|
49
|
+
log: {
|
|
50
|
+
type: "delete",
|
|
51
|
+
value: removed
|
|
52
|
+
},
|
|
53
|
+
logPrev: ctx.log
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const clearInputValue = () => ({ inputValue: "" });
|
|
57
|
+
const clearHighlight = () => ({ highlightedIndex: null });
|
|
58
|
+
const highlightPrev = (ctx) => {
|
|
59
|
+
const at = ctx.highlightedIndex;
|
|
60
|
+
if (at === null) return {};
|
|
61
|
+
return withSelectLog(ctx, at > 0 ? at - 1 : null);
|
|
62
|
+
};
|
|
63
|
+
const highlightLast = (ctx) => withSelectLog(ctx, ctx.value.length > 0 ? ctx.value.length - 1 : null);
|
|
64
|
+
const highlightAtIndex = (ctx) => {
|
|
65
|
+
const index = ctx.editedIndex;
|
|
66
|
+
return withSelectLog(ctx, index === null ? null : clampIndex(index, ctx.value.length));
|
|
67
|
+
};
|
|
68
|
+
const beginEdit = (ctx, e) => {
|
|
69
|
+
const index = e.type === "DOUBLE_CLICK_TAG" ? e.index : ctx.highlightedIndex;
|
|
70
|
+
if (index === null) return {};
|
|
71
|
+
const value = valueAtIndex(ctx, index);
|
|
72
|
+
if (value === void 0) return {};
|
|
73
|
+
return {
|
|
74
|
+
editedIndex: index,
|
|
75
|
+
editedValue: value
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
const finishEdit = (ctx) => {
|
|
79
|
+
const index = ctx.editedIndex;
|
|
80
|
+
const clamped = index === null ? null : clampIndex(index, ctx.value.length);
|
|
81
|
+
return {
|
|
82
|
+
...withSelectLog(ctx, clamped),
|
|
83
|
+
editedIndex: null,
|
|
84
|
+
editedValue: ""
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
const clearEditAll = () => ({
|
|
88
|
+
editedValue: "",
|
|
89
|
+
editedIndex: null,
|
|
90
|
+
highlightedIndex: null
|
|
91
|
+
});
|
|
92
|
+
const hasHighlighted = (ctx) => ctx.highlightedIndex !== null;
|
|
93
|
+
const canInsert = (ctx) => canAdd(ctx) && ctx.sanitizeValue(ctx.inputValue).length > 0;
|
|
94
|
+
const insertOnBlur = (ctx) => ctx.addOnBlur && canAdd(ctx) && ctx.sanitizeValue(ctx.inputValue).length > 0;
|
|
95
|
+
const clearOnBlur = (ctx) => ctx.clearOnBlur;
|
|
96
|
+
const addOnPaste = (ctx) => ctx.addOnPaste;
|
|
97
|
+
const canLeaveInput = (ctx, event) => ctx.value.length > 0 && caretAtStart(event);
|
|
98
|
+
const caretNotAtStart = (_ctx, event) => !caretAtStart(event);
|
|
99
|
+
export { addFromInput, addOnPaste, addTagFromPaste, beginEdit, canAdd, canInsert, canLeaveInput, caretAtStart, caretNotAtStart, clearEditAll, clearHighlight, clearInputValue, clearOnBlur, deleteHighlighted, deleteTag, finishEdit, hasHighlighted, highlightAtIndex, highlightLast, highlightPrev, insertOnBlur, isAtMax, setInputValue };
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=tags.transitions.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { themePicker } from "../theme-picker.presentation.js";
|
|
3
|
+
|
|
4
|
+
const machine = themePicker({
|
|
5
|
+
syncDocument: false,
|
|
6
|
+
defaultValue: "silk",
|
|
7
|
+
themes: [
|
|
8
|
+
{ value: "silk", label: "Silk" },
|
|
9
|
+
{ value: "neobrut", label: "Neobrut", modes: ["light"] },
|
|
10
|
+
{ value: "nord", label: "Nord" },
|
|
11
|
+
{ value: "synthwave", label: "Synthwave", modes: ["dark"] },
|
|
12
|
+
],
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div class="relative inline-block" {...machine.getRootProps()}>
|
|
17
|
+
<button
|
|
18
|
+
class="bare inline-flex items-center gap-2 rounded-lg border border-solid border-border bg-surface px-2 py-1 text-sm text-text transition-colors hover:bg-surface-raised"
|
|
19
|
+
{...machine.getTriggerProps()}
|
|
20
|
+
>
|
|
21
|
+
<span class="inline-flex h-4 items-center gap-1" {...machine.getTriggerSwatchProps()}>
|
|
22
|
+
<span class="h-2 w-2 shrink-0 rounded-full border border-solid border-border bg-surface"></span>
|
|
23
|
+
<span class="h-2 w-2 shrink-0 rounded-full bg-primary"></span>
|
|
24
|
+
<span class="h-2 w-2 shrink-0 rounded-full bg-text"></span>
|
|
25
|
+
</span>
|
|
26
|
+
<span {...machine.getTriggerLabelProps()}>{machine.value}</span>
|
|
27
|
+
<span class="inline-block i-lucide-chevron-down icon-sm text-text-muted" {...machine.getTriggerIndicatorProps()}></span>
|
|
28
|
+
</button>
|
|
29
|
+
<div class="absolute z-dropdown" {...machine.getPositionerProps()}>
|
|
30
|
+
<panel
|
|
31
|
+
{...machine.getContentProps()}
|
|
32
|
+
>
|
|
33
|
+
<panel-list {...machine.getListProps()}>
|
|
34
|
+
<template for={machine.getItems()} as={row} key={row.value}>
|
|
35
|
+
<div
|
|
36
|
+
class="bare flex w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors"
|
|
37
|
+
{...machine.getItemProps(row)}
|
|
38
|
+
>
|
|
39
|
+
<span class="inline-flex h-4 items-center gap-1" {...machine.getItemSwatchProps(row)}>
|
|
40
|
+
<span class="h-3 w-3 shrink-0 rounded-full border border-solid border-border bg-surface"></span>
|
|
41
|
+
<span class="h-3 w-3 shrink-0 rounded-full bg-primary"></span>
|
|
42
|
+
<span class="h-3 w-3 shrink-0 rounded-full bg-text"></span>
|
|
43
|
+
</span>
|
|
44
|
+
<span class="flex-1" {...machine.getItemLabelProps(row)}>{row.label}</span>
|
|
45
|
+
<span class="inline-block i-lucide-sun h-3 w-3 text-text-muted" show={machine.getItemState(row).dualMode}></span>
|
|
46
|
+
<span class="inline-block i-lucide-check h-4 w-4 text-primary" show={machine.getItemState(row).selected} {...machine.getItemIndicatorProps(row)}></span>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
49
|
+
</panel-list>
|
|
50
|
+
</panel>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { themePicker } from "../theme-picker.presentation.js";
|
|
3
|
+
|
|
4
|
+
const machine = themePicker({
|
|
5
|
+
syncDocument: false,
|
|
6
|
+
defaultValue: "silk",
|
|
7
|
+
themes: [
|
|
8
|
+
{ value: "silk", label: "Silk" },
|
|
9
|
+
{ value: "neobrut", label: "Neobrut", modes: ["light"] },
|
|
10
|
+
{ value: "nord", label: "Nord" },
|
|
11
|
+
{ value: "synthwave", label: "Synthwave", modes: ["dark"] },
|
|
12
|
+
],
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div class="grid w-full grid-cols-2 gap-3" {...machine.getRootProps()}>
|
|
17
|
+
<template for={machine.getItems()} as={row} key={row.value}>
|
|
18
|
+
<button
|
|
19
|
+
class={["bare flex flex-col items-stretch justify-between gap-0 p-0 overflow-hidden rounded-lg border border-solid bg-surface text-left text-text transition-all", { "border-border": machine.getItemState(row).selected === false, "border-primary ring-1 ring-primary": machine.getItemState(row).selected }]}
|
|
20
|
+
{...machine.getItemProps(row)}
|
|
21
|
+
>
|
|
22
|
+
<span class="block w-full bg-surface px-3 py-2" {...machine.getItemSwatchProps(row)}>
|
|
23
|
+
<span class="block text-sm font-medium text-text" {...machine.getItemLabelProps(row)}>{row.label}</span>
|
|
24
|
+
<span class="mt-1 inline-block rounded-sm bg-primary px-2 py-1 text-xs text-on-primary">Aa</span>
|
|
25
|
+
</span>
|
|
26
|
+
<span class="flex w-full items-center justify-between bg-surface-raised px-3 py-1 text-xs text-text-muted">
|
|
27
|
+
<span>{row.value}</span>
|
|
28
|
+
<span class="inline-block i-lucide-check h-3 w-3 text-primary" show={machine.getItemState(row).selected} {...machine.getItemIndicatorProps(row)}></span>
|
|
29
|
+
</span>
|
|
30
|
+
</button>
|
|
31
|
+
</template>
|
|
32
|
+
</div>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { themePicker } from "../theme-picker.presentation.js";
|
|
3
|
+
|
|
4
|
+
const machine = themePicker({
|
|
5
|
+
syncDocument: false,
|
|
6
|
+
defaultValue: "silk",
|
|
7
|
+
themes: [
|
|
8
|
+
{ value: "silk", label: "Silk" },
|
|
9
|
+
{ value: "neobrut", label: "Neobrut", modes: ["light"] },
|
|
10
|
+
{ value: "nord", label: "Nord" },
|
|
11
|
+
{ value: "synthwave", label: "Synthwave", modes: ["dark"] },
|
|
12
|
+
],
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div class="relative inline-flex" {...machine.getRootProps()}>
|
|
17
|
+
<button
|
|
18
|
+
class="bare inline-flex items-center gap-1 rounded-md px-2 py-1 text-sm text-text-muted transition-colors hover:bg-surface hover:text-text"
|
|
19
|
+
{...machine.getTriggerProps()}
|
|
20
|
+
>
|
|
21
|
+
<span class="inline-block i-lucide-palette h-4 w-4"></span>
|
|
22
|
+
<span {...machine.getTriggerLabelProps()}>{machine.value}</span>
|
|
23
|
+
</button>
|
|
24
|
+
<div class="absolute z-dropdown" {...machine.getPositionerProps()}>
|
|
25
|
+
<div
|
|
26
|
+
class="rounded-lg border border-solid border-border bg-surface p-1 shadow-lg"
|
|
27
|
+
{...machine.getContentProps()}
|
|
28
|
+
>
|
|
29
|
+
<div {...machine.getListProps()}>
|
|
30
|
+
<template for={machine.getItems()} as={row} key={row.value}>
|
|
31
|
+
<div
|
|
32
|
+
class="bare flex w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors hover:bg-surface-raised"
|
|
33
|
+
{...machine.getItemProps(row)}
|
|
34
|
+
>
|
|
35
|
+
<span class="flex-1" {...machine.getItemLabelProps(row)}>{row.label}</span>
|
|
36
|
+
<span class="inline-block i-lucide-check h-3 w-3 text-primary" show={machine.getItemState(row).selected} {...machine.getItemIndicatorProps(row)}></span>
|
|
37
|
+
</div>
|
|
38
|
+
</template>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { themePicker } from "../theme-picker.presentation.js";
|
|
3
|
+
|
|
4
|
+
const machine = themePicker({
|
|
5
|
+
syncDocument: false,
|
|
6
|
+
defaultValue: "silk",
|
|
7
|
+
themes: [
|
|
8
|
+
{ value: "silk", label: "Silk" },
|
|
9
|
+
{ value: "neobrut", label: "Neobrut", modes: ["light"] },
|
|
10
|
+
{ value: "nord", label: "Nord" },
|
|
11
|
+
{ value: "synthwave", label: "Synthwave", modes: ["dark"] },
|
|
12
|
+
],
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div class="flex flex-wrap items-center gap-2" {...machine.getRootProps()}>
|
|
17
|
+
<template for={machine.getItems()} as={row} key={row.value}>
|
|
18
|
+
<button
|
|
19
|
+
class={["bare inline-flex items-center gap-2 rounded-full border border-solid bg-surface px-3 py-1 text-sm text-text transition-colors", { "border-border": machine.getItemState(row).selected === false, "border-primary ring-1 ring-primary": machine.getItemState(row).selected }]}
|
|
20
|
+
{...machine.getItemProps(row)}
|
|
21
|
+
>
|
|
22
|
+
<span class="inline-flex h-3 items-center gap-1" {...machine.getItemSwatchProps(row)}>
|
|
23
|
+
<span class="h-2 w-2 shrink-0 rounded-full border border-solid border-border bg-surface"></span>
|
|
24
|
+
<span class="h-2 w-2 shrink-0 rounded-full bg-primary"></span>
|
|
25
|
+
<span class="h-2 w-2 shrink-0 rounded-full bg-text"></span>
|
|
26
|
+
</span>
|
|
27
|
+
<span {...machine.getItemLabelProps(row)}>{row.label}</span>
|
|
28
|
+
<span class="inline-block i-lucide-check h-3 w-3 text-primary" show={machine.getItemState(row).selected} {...machine.getItemIndicatorProps(row)}></span>
|
|
29
|
+
</button>
|
|
30
|
+
</template>
|
|
31
|
+
</div>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ThemePickerItem } from "./theme-picker.state.js";
|
|
2
|
+
import { EventUnion } from "@spinjs/runtime/fsm";
|
|
3
|
+
export interface ThemePickerEvents {
|
|
4
|
+
"TRIGGER.CLICK": {};
|
|
5
|
+
"OPEN": {};
|
|
6
|
+
"CLOSE": {};
|
|
7
|
+
"HIGHLIGHT.NEXT": {};
|
|
8
|
+
"HIGHLIGHT.PREV": {};
|
|
9
|
+
"HIGHLIGHT.FIRST": {};
|
|
10
|
+
"HIGHLIGHT.LAST": {};
|
|
11
|
+
"HIGHLIGHT.SET": {
|
|
12
|
+
readonly value: string;
|
|
13
|
+
};
|
|
14
|
+
"ITEM.SELECT": {
|
|
15
|
+
readonly value: string;
|
|
16
|
+
};
|
|
17
|
+
"VALUE.SET": {
|
|
18
|
+
readonly value: string;
|
|
19
|
+
};
|
|
20
|
+
"THEMES.SET": {
|
|
21
|
+
readonly themes: readonly unknown[] | string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export type ThemePickerEvent = EventUnion<ThemePickerEvents>;
|
|
25
|
+
export type ThemePickerValueChange = {
|
|
26
|
+
readonly value: string;
|
|
27
|
+
readonly item: ThemePickerItem;
|
|
28
|
+
};
|
|
29
|
+
export type ThemePickerOpenChange = {
|
|
30
|
+
readonly open: boolean;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=theme-picker.events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ThemePickerArgs, ThemePickerContext, ThemePickerState } from "./theme-picker.state.js";
|
|
2
|
+
import { ThemePickerEvents } from "./theme-picker.events.js";
|
|
3
|
+
import { Machine } from "@spinjs/runtime/fsm";
|
|
4
|
+
export declare function themePicker(args?: ThemePickerArgs, authored?: (name: string) => boolean): Machine<ThemePickerContext, ThemePickerEvents, ThemePickerState>;
|
|
5
|
+
//# sourceMappingURL=theme-picker.machine.d.ts.map
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { initial } from "./theme-picker.state.js";
|
|
2
|
+
import { hasEnabled, moveFirst, moveLast, moveNext, movePrev, selectEnabled, selectItem, setHighlight, setThemes, setValue } from "./theme-picker.transitions.js";
|
|
3
|
+
import { createMachine } from "@spinjs/runtime/fsm";
|
|
4
|
+
// src/theme-picker/theme-picker.machine.ts
|
|
5
|
+
/** Theme-picker machine: closed/open over two states. */
|
|
6
|
+
function themePicker(args = {}, authored = () => false) {
|
|
7
|
+
const openMoves = {
|
|
8
|
+
"HIGHLIGHT.NEXT": {
|
|
9
|
+
cond: hasEnabled,
|
|
10
|
+
assign: moveNext
|
|
11
|
+
},
|
|
12
|
+
"HIGHLIGHT.PREV": {
|
|
13
|
+
cond: hasEnabled,
|
|
14
|
+
assign: movePrev
|
|
15
|
+
},
|
|
16
|
+
"HIGHLIGHT.FIRST": {
|
|
17
|
+
cond: hasEnabled,
|
|
18
|
+
assign: moveFirst
|
|
19
|
+
},
|
|
20
|
+
"HIGHLIGHT.LAST": {
|
|
21
|
+
cond: hasEnabled,
|
|
22
|
+
assign: moveLast
|
|
23
|
+
},
|
|
24
|
+
"HIGHLIGHT.SET": { assign: setHighlight },
|
|
25
|
+
"VALUE.SET": { assign: setValue },
|
|
26
|
+
"THEMES.SET": { assign: setThemes }
|
|
27
|
+
};
|
|
28
|
+
return createMachine({
|
|
29
|
+
id: "theme-picker",
|
|
30
|
+
initial: "closed",
|
|
31
|
+
context: initial(args, authored),
|
|
32
|
+
fields: { value: { event: "VALUE.SET" } },
|
|
33
|
+
on: { ...openMoves },
|
|
34
|
+
states: {
|
|
35
|
+
closed: { on: {
|
|
36
|
+
...openMoves,
|
|
37
|
+
"TRIGGER.CLICK": {
|
|
38
|
+
target: "open",
|
|
39
|
+
cond: hasEnabled
|
|
40
|
+
},
|
|
41
|
+
OPEN: {
|
|
42
|
+
target: "open",
|
|
43
|
+
cond: hasEnabled
|
|
44
|
+
},
|
|
45
|
+
"ITEM.SELECT": {
|
|
46
|
+
cond: selectEnabled,
|
|
47
|
+
assign: selectItem
|
|
48
|
+
}
|
|
49
|
+
} },
|
|
50
|
+
open: { on: {
|
|
51
|
+
...openMoves,
|
|
52
|
+
"TRIGGER.CLICK": { target: "closed" },
|
|
53
|
+
CLOSE: { target: "closed" },
|
|
54
|
+
"ITEM.SELECT": {
|
|
55
|
+
target: "closed",
|
|
56
|
+
cond: selectEnabled,
|
|
57
|
+
assign: selectItem
|
|
58
|
+
}
|
|
59
|
+
} }
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
export { themePicker };
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=theme-picker.machine.js.map
|