bits-ui 2.6.2 → 2.8.0
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 +4 -4
- package/dist/bits/accordion/accordion.svelte.d.ts +66 -58
- package/dist/bits/accordion/accordion.svelte.js +56 -51
- package/dist/bits/accordion/components/accordion-content.svelte +4 -4
- package/dist/bits/accordion/components/accordion-header.svelte +2 -2
- package/dist/bits/accordion/components/accordion-item.svelte +2 -2
- package/dist/bits/accordion/components/accordion-trigger.svelte +2 -2
- package/dist/bits/accordion/components/accordion.svelte +2 -2
- package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +2 -2
- package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
- package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +3 -3
- package/dist/bits/alert-dialog/components/alert-dialog.svelte +9 -3
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.d.ts +10 -16
- package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +4 -11
- package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +2 -2
- package/dist/bits/avatar/avatar.svelte.d.ts +25 -33
- package/dist/bits/avatar/avatar.svelte.js +20 -21
- package/dist/bits/avatar/components/avatar-fallback.svelte +2 -2
- package/dist/bits/avatar/components/avatar-image.svelte +2 -2
- package/dist/bits/avatar/components/avatar.svelte +2 -2
- package/dist/bits/calendar/calendar.svelte.d.ts +117 -106
- package/dist/bits/calendar/calendar.svelte.js +51 -52
- package/dist/bits/calendar/components/calendar-cell.svelte +2 -2
- package/dist/bits/calendar/components/calendar-day.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid-body.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid-head.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid-row.svelte +2 -2
- package/dist/bits/calendar/components/calendar-grid.svelte +2 -2
- package/dist/bits/calendar/components/calendar-head-cell.svelte +2 -2
- package/dist/bits/calendar/components/calendar-header.svelte +2 -2
- package/dist/bits/calendar/components/calendar-heading.svelte +5 -5
- package/dist/bits/calendar/components/calendar-month-select.svelte +2 -2
- package/dist/bits/calendar/components/calendar-next-button.svelte +2 -2
- package/dist/bits/calendar/components/calendar-prev-button.svelte +2 -2
- package/dist/bits/calendar/components/calendar-year-select.svelte +2 -2
- package/dist/bits/calendar/components/calendar.svelte +2 -2
- package/dist/bits/checkbox/checkbox.svelte.d.ts +37 -34
- package/dist/bits/checkbox/checkbox.svelte.js +19 -22
- package/dist/bits/checkbox/components/checkbox-group-label.svelte +2 -2
- package/dist/bits/checkbox/components/checkbox-group.svelte +2 -2
- package/dist/bits/checkbox/components/checkbox-input.svelte +2 -2
- package/dist/bits/checkbox/components/checkbox.svelte +2 -2
- package/dist/bits/collapsible/collapsible.svelte.d.ts +30 -27
- package/dist/bits/collapsible/collapsible.svelte.js +23 -15
- package/dist/bits/collapsible/components/collapsible-content.svelte +5 -5
- package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +1 -4
- package/dist/bits/collapsible/components/collapsible-trigger.svelte +2 -2
- package/dist/bits/collapsible/components/collapsible.svelte +4 -2
- package/dist/bits/collapsible/types.d.ts +4 -0
- package/dist/bits/combobox/components/combobox-input.svelte +2 -2
- package/dist/bits/combobox/components/combobox-trigger.svelte +2 -2
- package/dist/bits/combobox/components/combobox.svelte +4 -2
- package/dist/bits/command/command.svelte.d.ts +103 -92
- package/dist/bits/command/command.svelte.js +55 -57
- package/dist/bits/command/components/_command-label.svelte +2 -2
- package/dist/bits/command/components/command-empty.svelte +2 -2
- package/dist/bits/command/components/command-group-heading.svelte +2 -2
- package/dist/bits/command/components/command-group-items.svelte +2 -2
- package/dist/bits/command/components/command-group.svelte +2 -2
- package/dist/bits/command/components/command-input.svelte +2 -2
- package/dist/bits/command/components/command-item.svelte +2 -2
- package/dist/bits/command/components/command-link-item.svelte +2 -2
- package/dist/bits/command/components/command-list.svelte +2 -2
- package/dist/bits/command/components/command-loading.svelte +2 -2
- package/dist/bits/command/components/command-separator.svelte +2 -2
- package/dist/bits/command/components/command-viewport.svelte +2 -2
- package/dist/bits/command/components/command.svelte +2 -2
- package/dist/bits/context-menu/components/context-menu-content-static.svelte +3 -3
- package/dist/bits/context-menu/components/context-menu-content.svelte +3 -3
- package/dist/bits/context-menu/components/context-menu-trigger.svelte +2 -2
- package/dist/bits/context-menu/components/context-menu.svelte +16 -11
- package/dist/bits/date-field/components/date-field-hidden-input.svelte +2 -2
- package/dist/bits/date-field/components/date-field-input.svelte +2 -2
- package/dist/bits/date-field/components/date-field-label.svelte +2 -2
- package/dist/bits/date-field/components/date-field-segment.svelte +2 -2
- package/dist/bits/date-field/components/date-field.svelte +2 -2
- package/dist/bits/date-field/date-field.svelte.d.ts +85 -74
- package/dist/bits/date-field/date-field.svelte.js +55 -53
- package/dist/bits/date-picker/components/date-picker-calendar.svelte +2 -2
- package/dist/bits/date-picker/components/date-picker.svelte +8 -6
- package/dist/bits/date-picker/date-picker.svelte.d.ts +10 -10
- package/dist/bits/date-picker/date-picker.svelte.js +6 -5
- package/dist/bits/date-picker/types.d.ts +4 -0
- package/dist/bits/date-range-field/components/date-range-field-input.svelte +2 -2
- package/dist/bits/date-range-field/components/date-range-field-label.svelte +2 -2
- package/dist/bits/date-range-field/components/date-range-field.svelte +2 -2
- package/dist/bits/date-range-field/date-range-field.svelte.d.ts +32 -29
- package/dist/bits/date-range-field/date-range-field.svelte.js +33 -32
- package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +2 -2
- package/dist/bits/date-range-picker/components/date-range-picker.svelte +8 -6
- package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +10 -10
- package/dist/bits/date-range-picker/date-range-picker.svelte.js +6 -5
- package/dist/bits/date-range-picker/types.d.ts +4 -0
- package/dist/bits/dialog/components/dialog-close.svelte +2 -2
- package/dist/bits/dialog/components/dialog-content.svelte +3 -3
- package/dist/bits/dialog/components/dialog-description.svelte +2 -2
- package/dist/bits/dialog/components/dialog-overlay.svelte +3 -6
- package/dist/bits/dialog/components/dialog-title.svelte +2 -2
- package/dist/bits/dialog/components/dialog-trigger.svelte +2 -2
- package/dist/bits/dialog/components/dialog.svelte +9 -3
- package/dist/bits/dialog/dialog.svelte.d.ts +75 -65
- package/dist/bits/dialog/dialog.svelte.js +47 -38
- package/dist/bits/dialog/types.d.ts +4 -0
- package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +3 -3
- package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +3 -3
- package/dist/bits/label/components/label.svelte +2 -2
- package/dist/bits/label/label.svelte.d.ts +8 -7
- package/dist/bits/label/label.svelte.js +4 -4
- package/dist/bits/link-preview/components/link-preview-content-static.svelte +3 -3
- package/dist/bits/link-preview/components/link-preview-content.svelte +3 -3
- package/dist/bits/link-preview/components/link-preview-trigger.svelte +2 -2
- package/dist/bits/link-preview/components/link-preview.svelte +4 -2
- package/dist/bits/link-preview/link-preview.svelte.d.ts +28 -25
- package/dist/bits/link-preview/link-preview.svelte.js +24 -16
- package/dist/bits/link-preview/types.d.ts +4 -0
- package/dist/bits/menu/components/menu-arrow.svelte +2 -2
- package/dist/bits/menu/components/menu-checkbox-group.svelte +2 -2
- package/dist/bits/menu/components/menu-checkbox-item.svelte +2 -2
- package/dist/bits/menu/components/menu-content-static.svelte +3 -3
- package/dist/bits/menu/components/menu-content.svelte +3 -3
- package/dist/bits/menu/components/menu-group-heading.svelte +2 -2
- package/dist/bits/menu/components/menu-group.svelte +2 -2
- package/dist/bits/menu/components/menu-item.svelte +2 -2
- package/dist/bits/menu/components/menu-radio-group.svelte +2 -2
- package/dist/bits/menu/components/menu-radio-item.svelte +2 -2
- package/dist/bits/menu/components/menu-separator.svelte +2 -2
- package/dist/bits/menu/components/menu-sub-content-static.svelte +3 -3
- package/dist/bits/menu/components/menu-sub-content.svelte +3 -3
- package/dist/bits/menu/components/menu-sub-trigger.svelte +2 -2
- package/dist/bits/menu/components/menu-sub.svelte +9 -3
- package/dist/bits/menu/components/menu-trigger.svelte +2 -2
- package/dist/bits/menu/components/menu.svelte +16 -11
- package/dist/bits/menu/menu.svelte.d.ts +136 -119
- package/dist/bits/menu/menu.svelte.js +106 -96
- package/dist/bits/menu/types.d.ts +8 -0
- package/dist/bits/menubar/components/menubar-content-static.svelte +2 -2
- package/dist/bits/menubar/components/menubar-content.svelte +2 -2
- package/dist/bits/menubar/components/menubar-menu.svelte +2 -2
- package/dist/bits/menubar/components/menubar-trigger.svelte +4 -4
- package/dist/bits/menubar/components/menubar.svelte +2 -2
- package/dist/bits/menubar/menubar.svelte.d.ts +37 -34
- package/dist/bits/menubar/menubar.svelte.js +21 -21
- package/dist/bits/meter/components/meter.svelte +2 -2
- package/dist/bits/meter/meter.svelte.d.ts +10 -9
- package/dist/bits/meter/meter.svelte.js +4 -4
- package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +3 -3
- package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +3 -3
- package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +2 -2
- package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +3 -3
- package/dist/bits/navigation-menu/components/navigation-menu.svelte +2 -2
- package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +116 -109
- package/dist/bits/navigation-menu/navigation-menu.svelte.js +78 -81
- package/dist/bits/pagination/components/pagination-next-button.svelte +2 -2
- package/dist/bits/pagination/components/pagination-page.svelte +2 -2
- package/dist/bits/pagination/components/pagination-prev-button.svelte +2 -2
- package/dist/bits/pagination/components/pagination.svelte +2 -2
- package/dist/bits/pagination/pagination.svelte.d.ts +34 -32
- package/dist/bits/pagination/pagination.svelte.js +15 -15
- package/dist/bits/pin-input/components/pin-input-cell.svelte +2 -2
- package/dist/bits/pin-input/components/pin-input.svelte +2 -2
- package/dist/bits/pin-input/pin-input.svelte.d.ts +22 -21
- package/dist/bits/pin-input/pin-input.svelte.js +9 -9
- package/dist/bits/popover/components/popover-close.svelte +2 -2
- package/dist/bits/popover/components/popover-content-static.svelte +3 -3
- package/dist/bits/popover/components/popover-content.svelte +3 -3
- package/dist/bits/popover/components/popover-trigger.svelte +2 -2
- package/dist/bits/popover/components/popover.svelte +9 -3
- package/dist/bits/popover/popover.svelte.d.ts +36 -31
- package/dist/bits/popover/popover.svelte.js +26 -21
- package/dist/bits/popover/types.d.ts +4 -0
- package/dist/bits/progress/components/progress.svelte +2 -2
- package/dist/bits/progress/progress.svelte.d.ts +10 -9
- package/dist/bits/progress/progress.svelte.js +4 -4
- package/dist/bits/radio-group/components/radio-group-input.svelte +2 -2
- package/dist/bits/radio-group/components/radio-group-item.svelte +2 -2
- package/dist/bits/radio-group/components/radio-group.svelte +4 -2
- package/dist/bits/radio-group/radio-group.svelte.d.ts +26 -19
- package/dist/bits/radio-group/radio-group.svelte.js +26 -19
- package/dist/bits/radio-group/types.d.ts +13 -6
- package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
- package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
- package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
- package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
- package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
- package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
- package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
- package/dist/bits/rating-group/components/rating-group.svelte +2 -2
- package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
- package/dist/bits/rating-group/rating-group.svelte.js +16 -17
- package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
- package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
- package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
- package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
- package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
- package/dist/bits/select/components/select-content-static.svelte +3 -3
- package/dist/bits/select/components/select-content.svelte +3 -3
- package/dist/bits/select/components/select-group-heading.svelte +2 -2
- package/dist/bits/select/components/select-group.svelte +2 -2
- package/dist/bits/select/components/select-hidden-input.svelte +2 -2
- package/dist/bits/select/components/select-item.svelte +2 -2
- package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
- package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
- package/dist/bits/select/components/select-trigger.svelte +2 -2
- package/dist/bits/select/components/select-viewport.svelte +2 -2
- package/dist/bits/select/components/select.svelte +4 -2
- package/dist/bits/select/select.svelte.d.ts +127 -113
- package/dist/bits/select/select.svelte.js +74 -62
- package/dist/bits/select/types.d.ts +4 -0
- package/dist/bits/separator/components/separator.svelte +2 -2
- package/dist/bits/separator/separator.svelte.d.ts +9 -8
- package/dist/bits/separator/separator.svelte.js +4 -4
- package/dist/bits/slider/components/slider-range.svelte +2 -2
- package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
- package/dist/bits/slider/components/slider-thumb.svelte +2 -2
- package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
- package/dist/bits/slider/components/slider-tick.svelte +2 -2
- package/dist/bits/slider/components/slider.svelte +2 -2
- package/dist/bits/slider/slider.svelte.d.ts +82 -73
- package/dist/bits/slider/slider.svelte.js +30 -28
- package/dist/bits/switch/components/switch-input.svelte +2 -2
- package/dist/bits/switch/components/switch-thumb.svelte +2 -2
- package/dist/bits/switch/components/switch.svelte +2 -2
- package/dist/bits/switch/switch.svelte.d.ts +19 -17
- package/dist/bits/switch/switch.svelte.js +13 -13
- package/dist/bits/tabs/components/tabs-content.svelte +2 -2
- package/dist/bits/tabs/components/tabs-list.svelte +2 -2
- package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
- package/dist/bits/tabs/components/tabs.svelte +2 -2
- package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
- package/dist/bits/tabs/tabs.svelte.js +19 -19
- package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
- package/dist/bits/time-field/components/time-field-input.svelte +2 -2
- package/dist/bits/time-field/components/time-field-label.svelte +2 -2
- package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
- package/dist/bits/time-field/components/time-field.svelte +2 -2
- package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
- package/dist/bits/time-field/time-field.svelte.js +37 -42
- package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
- package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
- package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
- package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
- package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
- package/dist/bits/toggle/components/toggle.svelte +2 -2
- package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
- package/dist/bits/toggle/toggle.svelte.js +4 -4
- package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
- package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
- package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
- package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
- package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
- package/dist/bits/toolbar/components/toolbar.svelte +2 -2
- package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
- package/dist/bits/toolbar/toolbar.svelte.js +32 -30
- package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
- package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
- package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
- package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
- package/dist/bits/tooltip/components/tooltip.svelte +4 -2
- package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
- package/dist/bits/tooltip/tooltip.svelte.js +33 -28
- package/dist/bits/tooltip/types.d.ts +4 -0
- package/dist/bits/utilities/config/bits-config.d.ts +1 -1
- package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
- package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
- package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
- package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
- package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
- package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
- package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
- package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
- package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
- package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +1 -1
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
- package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
- package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
- package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
- package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
- package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
- package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
- package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
- package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
- package/dist/internal/animations-complete.d.ts +12 -0
- package/dist/internal/animations-complete.js +55 -0
- package/dist/internal/arrays.js +20 -36
- package/dist/internal/attrs.d.ts +9 -2
- package/dist/internal/attrs.js +21 -11
- package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
- package/dist/internal/body-scroll-lock.svelte.js +106 -0
- package/dist/internal/data-typeahead.svelte.d.ts +15 -0
- package/dist/internal/data-typeahead.svelte.js +33 -0
- package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
- package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
- package/dist/internal/dom-typeahead.svelte.js +44 -0
- package/dist/internal/dom.d.ts +0 -2
- package/dist/internal/dom.js +0 -15
- package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
- package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
- package/dist/internal/open-change-complete.d.ts +13 -0
- package/dist/internal/open-change-complete.js +24 -0
- package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
- package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
- package/dist/internal/shared-state.svelte.d.ts +6 -0
- package/dist/internal/shared-state.svelte.js +31 -0
- package/dist/internal/should-trap-focus.js +1 -2
- package/dist/internal/state-machine.d.ts +16 -0
- package/dist/internal/state-machine.js +18 -0
- package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
- package/dist/internal/svelte-resize-observer.svelte.js +25 -0
- package/dist/internal/tabbable.d.ts +0 -1
- package/dist/internal/tabbable.js +0 -11
- package/dist/internal/timeout-fn.d.ts +16 -0
- package/dist/internal/timeout-fn.js +38 -0
- package/dist/internal/types.d.ts +2 -2
- package/package.json +1 -1
- package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
- package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
- package/dist/internal/box.svelte.d.ts +0 -21
- package/dist/internal/box.svelte.js +0 -26
- package/dist/internal/create-event-hook.svelte.d.ts +0 -18
- package/dist/internal/create-event-hook.svelte.js +0 -29
- package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
- package/dist/internal/create-shared-hook.svelte.js +0 -27
- package/dist/internal/sleep.d.ts +0 -1
- package/dist/internal/sleep.js +0 -3
- package/dist/internal/use-after-animations.svelte.d.ts +0 -5
- package/dist/internal/use-after-animations.svelte.js +0 -27
- package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
- package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
- package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
- package/dist/internal/use-data-typeahead.svelte.js +0 -34
- package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
- package/dist/internal/use-dom-typeahead.svelte.js +0 -32
- package/dist/internal/use-form-control.svelte.d.ts +0 -4
- package/dist/internal/use-form-control.svelte.js +0 -16
- package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
- package/dist/internal/use-resize-observer.svelte.js +0 -17
- package/dist/internal/use-state-machine.svelte.d.ts +0 -24
- package/dist/internal/use-state-machine.svelte.js +0 -28
- package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
- package/dist/internal/use-timeout-fn.svelte.js +0 -39
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { executeCallbacks } from "svelte-toolbelt";
|
|
2
|
-
import { Previous, watch } from "runed";
|
|
3
|
-
import { on } from "svelte/events";
|
|
4
|
-
import { useStateMachine } from "../../../internal/use-state-machine.svelte.js";
|
|
5
|
-
export function usePresence(present, ref) {
|
|
6
|
-
let styles = $state({});
|
|
7
|
-
let prevAnimationNameState = $state("none");
|
|
8
|
-
const initialState = present.current ? "mounted" : "unmounted";
|
|
9
|
-
const prevPresent = new Previous(() => present.current);
|
|
10
|
-
const { state, dispatch } = useStateMachine(initialState, {
|
|
11
|
-
mounted: {
|
|
12
|
-
UNMOUNT: "unmounted",
|
|
13
|
-
ANIMATION_OUT: "unmountSuspended",
|
|
14
|
-
},
|
|
15
|
-
unmountSuspended: {
|
|
16
|
-
MOUNT: "mounted",
|
|
17
|
-
ANIMATION_END: "unmounted",
|
|
18
|
-
},
|
|
19
|
-
unmounted: {
|
|
20
|
-
MOUNT: "mounted",
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
watch(() => present.current, () => {
|
|
24
|
-
if (!ref.current)
|
|
25
|
-
return;
|
|
26
|
-
const hasPresentChanged = present.current !== prevPresent.current;
|
|
27
|
-
if (!hasPresentChanged)
|
|
28
|
-
return;
|
|
29
|
-
const prevAnimationName = prevAnimationNameState;
|
|
30
|
-
const currAnimationName = getAnimationName(ref.current);
|
|
31
|
-
if (present.current) {
|
|
32
|
-
dispatch("MOUNT");
|
|
33
|
-
}
|
|
34
|
-
else if (currAnimationName === "none" || styles.display === "none") {
|
|
35
|
-
// If there is no exit animation or the element is hidden, animations won't run
|
|
36
|
-
// so we unmount instantly
|
|
37
|
-
dispatch("UNMOUNT");
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
/**
|
|
41
|
-
* When `present` changes to `false`, we check changes to animation-name to
|
|
42
|
-
* determine whether an animation has started. We chose this approach (reading
|
|
43
|
-
* computed styles) because there is no `animationrun` event and `animationstart`
|
|
44
|
-
* fires after `animation-delay` has expired which would be too late.
|
|
45
|
-
*/
|
|
46
|
-
const isAnimating = prevAnimationName !== currAnimationName;
|
|
47
|
-
if (prevPresent && isAnimating) {
|
|
48
|
-
dispatch("ANIMATION_OUT");
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
dispatch("UNMOUNT");
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
/**
|
|
56
|
-
* Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`
|
|
57
|
-
* event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we
|
|
58
|
-
* make sure we only trigger ANIMATION_END for the currently active animation.
|
|
59
|
-
*/
|
|
60
|
-
function handleAnimationEnd(event) {
|
|
61
|
-
if (!ref.current)
|
|
62
|
-
return;
|
|
63
|
-
const currAnimationName = getAnimationName(ref.current);
|
|
64
|
-
const isCurrentAnimation = currAnimationName.includes(event.animationName) || currAnimationName === "none";
|
|
65
|
-
if (event.target === ref.current && isCurrentAnimation) {
|
|
66
|
-
dispatch("ANIMATION_END");
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function handleAnimationStart(event) {
|
|
70
|
-
if (!ref.current)
|
|
71
|
-
return;
|
|
72
|
-
if (event.target === ref.current) {
|
|
73
|
-
prevAnimationNameState = getAnimationName(ref.current);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
watch(() => state.current, () => {
|
|
77
|
-
if (!ref.current)
|
|
78
|
-
return;
|
|
79
|
-
const currAnimationName = getAnimationName(ref.current);
|
|
80
|
-
prevAnimationNameState = state.current === "mounted" ? currAnimationName : "none";
|
|
81
|
-
});
|
|
82
|
-
watch(() => ref.current, () => {
|
|
83
|
-
if (!ref.current)
|
|
84
|
-
return;
|
|
85
|
-
styles = getComputedStyle(ref.current);
|
|
86
|
-
return executeCallbacks(on(ref.current, "animationstart", handleAnimationStart), on(ref.current, "animationcancel", handleAnimationEnd), on(ref.current, "animationend", handleAnimationEnd));
|
|
87
|
-
});
|
|
88
|
-
const isPresentDerived = $derived(["mounted", "unmountSuspended"].includes(state.current));
|
|
89
|
-
return {
|
|
90
|
-
get current() {
|
|
91
|
-
return isPresentDerived;
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
function getAnimationName(node) {
|
|
96
|
-
return node ? getComputedStyle(node).animationName || "none" : "none";
|
|
97
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { ReadableBox, WritableBox } from "svelte-toolbelt";
|
|
2
|
-
export type Box<T> = ReadableBox<T> | WritableBox<T>;
|
|
3
|
-
export type WritableBoxedValues<T> = {
|
|
4
|
-
[K in keyof T]: WritableBox<T[K]>;
|
|
5
|
-
};
|
|
6
|
-
export type ReadableBoxedValues<T> = {
|
|
7
|
-
[K in keyof T]: ReadableBox<T[K]>;
|
|
8
|
-
};
|
|
9
|
-
type WatcherCallback<T> = (curr: T, prev: T) => void | Promise<void> | (() => void) | (() => Promise<void>);
|
|
10
|
-
type WatchOptions = {
|
|
11
|
-
/**
|
|
12
|
-
* Whether to eagerly run the watcher before the state is updated.
|
|
13
|
-
*/
|
|
14
|
-
immediate?: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* Whether to run the watcher only once.
|
|
17
|
-
*/
|
|
18
|
-
once?: boolean;
|
|
19
|
-
};
|
|
20
|
-
export declare function watch<T>(box: Box<T>, callback: WatcherCallback<T>, options?: WatchOptions): () => void;
|
|
21
|
-
export {};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { untrack } from "svelte";
|
|
2
|
-
export function watch(box, callback, options = {}) {
|
|
3
|
-
let prev = $state(box.current);
|
|
4
|
-
let ranOnce = false;
|
|
5
|
-
const watchEffect = $effect.root(() => {
|
|
6
|
-
$effect.pre(() => {
|
|
7
|
-
if (prev === box.current || !options.immediate)
|
|
8
|
-
return;
|
|
9
|
-
if (options.once && ranOnce)
|
|
10
|
-
return;
|
|
11
|
-
callback(box.current, untrack(() => prev));
|
|
12
|
-
untrack(() => (prev = box.current));
|
|
13
|
-
ranOnce = true;
|
|
14
|
-
});
|
|
15
|
-
$effect(() => {
|
|
16
|
-
if (prev === box.current || options.immediate)
|
|
17
|
-
return;
|
|
18
|
-
if (options.once && ranOnce)
|
|
19
|
-
return;
|
|
20
|
-
callback(box.current, untrack(() => prev));
|
|
21
|
-
untrack(() => (prev = box.current));
|
|
22
|
-
ranOnce = true;
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
return watchEffect;
|
|
26
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N;
|
|
2
|
-
/**
|
|
3
|
-
* will return `true` if `T` is `any`, or `false` otherwise
|
|
4
|
-
*/
|
|
5
|
-
export type IsAny<T> = IfAny<T, true, false>;
|
|
6
|
-
type Callback<T> = IsAny<T> extends true ? (param: any) => void : [T] extends [void] ? () => void : (param: T) => void;
|
|
7
|
-
export type EventHookOn<T = unknown> = (fn: Callback<T>) => {
|
|
8
|
-
off: () => void;
|
|
9
|
-
};
|
|
10
|
-
export type EventHookOff<T = unknown> = (fn: Callback<T>) => void;
|
|
11
|
-
export type EventHookTrigger<T = unknown> = (param?: T) => Promise<unknown[]>;
|
|
12
|
-
export interface EventHook<T = unknown> {
|
|
13
|
-
on: EventHookOn<T>;
|
|
14
|
-
off: EventHookOff<T>;
|
|
15
|
-
trigger: EventHookTrigger<T>;
|
|
16
|
-
}
|
|
17
|
-
export declare function createEventHook<T = unknown>(): EventHook<T>;
|
|
18
|
-
export {};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { executeCallbacks } from "svelte-toolbelt";
|
|
2
|
-
export function createEventHook() {
|
|
3
|
-
const callbacks = new Set();
|
|
4
|
-
const callbacksToDispose = [];
|
|
5
|
-
function off(cb) {
|
|
6
|
-
callbacks.delete(cb);
|
|
7
|
-
}
|
|
8
|
-
function on(cb) {
|
|
9
|
-
callbacks.add(cb);
|
|
10
|
-
const offFn = () => off(cb);
|
|
11
|
-
callbacksToDispose.push(offFn);
|
|
12
|
-
return { off: offFn };
|
|
13
|
-
}
|
|
14
|
-
const trigger = (...args) => {
|
|
15
|
-
return Promise.all(Array.from(callbacks).map((cb) => {
|
|
16
|
-
return Promise.resolve(cb(...args));
|
|
17
|
-
}));
|
|
18
|
-
};
|
|
19
|
-
$effect(() => {
|
|
20
|
-
return () => {
|
|
21
|
-
executeCallbacks(callbacksToDispose);
|
|
22
|
-
};
|
|
23
|
-
});
|
|
24
|
-
return {
|
|
25
|
-
on,
|
|
26
|
-
off,
|
|
27
|
-
trigger,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export function createSharedHook(factory) {
|
|
2
|
-
let subscribers = 0;
|
|
3
|
-
let state = $state();
|
|
4
|
-
let scope;
|
|
5
|
-
function dispose() {
|
|
6
|
-
subscribers -= 1;
|
|
7
|
-
if (scope && subscribers <= 0) {
|
|
8
|
-
scope();
|
|
9
|
-
state = undefined;
|
|
10
|
-
scope = undefined;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return ((...args) => {
|
|
14
|
-
subscribers += 1;
|
|
15
|
-
if (state === undefined) {
|
|
16
|
-
scope = $effect.root(() => {
|
|
17
|
-
state = factory(...args);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
$effect(() => {
|
|
21
|
-
return () => {
|
|
22
|
-
dispose();
|
|
23
|
-
};
|
|
24
|
-
});
|
|
25
|
-
return state;
|
|
26
|
-
});
|
|
27
|
-
}
|
package/dist/internal/sleep.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function sleep(ms: number): Promise<unknown>;
|
package/dist/internal/sleep.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { flushSync } from "svelte";
|
|
2
|
-
/**
|
|
3
|
-
* Calls a function the next frame after all animations have finished.
|
|
4
|
-
*/
|
|
5
|
-
export function useAfterAnimations(getNode) {
|
|
6
|
-
let frame = -1;
|
|
7
|
-
function cancelFrame() {
|
|
8
|
-
cancelAnimationFrame(frame);
|
|
9
|
-
}
|
|
10
|
-
$effect(() => cancelFrame);
|
|
11
|
-
return (fn) => {
|
|
12
|
-
cancelFrame();
|
|
13
|
-
const node = getNode();
|
|
14
|
-
if (!node)
|
|
15
|
-
return;
|
|
16
|
-
if (typeof node.getAnimations !== "function" || globalThis.bitsAnimationsDisabled) {
|
|
17
|
-
fn();
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
frame = requestAnimationFrame(() => {
|
|
21
|
-
Promise.allSettled(node.getAnimations().map((anim) => anim.finished)).then(() => {
|
|
22
|
-
flushSync(fn);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type Getter } from "svelte-toolbelt";
|
|
2
|
-
export type ScrollBodyOption = {
|
|
3
|
-
padding?: boolean | number;
|
|
4
|
-
margin?: boolean | number;
|
|
5
|
-
};
|
|
6
|
-
export declare function useBodyScrollLock(initialState?: boolean | undefined, restoreScrollDelay?: Getter<number | null>): import("svelte-toolbelt").WritableBox<boolean> | undefined;
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { SvelteMap } from "svelte/reactivity";
|
|
2
|
-
import { afterSleep, afterTick, box } from "svelte-toolbelt";
|
|
3
|
-
import { untrack } from "svelte";
|
|
4
|
-
import { isBrowser, isIOS } from "./is.js";
|
|
5
|
-
import { addEventListener } from "./events.js";
|
|
6
|
-
import { useId } from "./use-id.js";
|
|
7
|
-
import { createSharedHook } from "./create-shared-hook.svelte.js";
|
|
8
|
-
const useBodyLockStackCount = createSharedHook(() => {
|
|
9
|
-
const map = new SvelteMap();
|
|
10
|
-
const locked = $derived.by(() => {
|
|
11
|
-
for (const value of map.values()) {
|
|
12
|
-
if (value) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return false;
|
|
17
|
-
});
|
|
18
|
-
let initialBodyStyle = $state(null);
|
|
19
|
-
let stopTouchMoveListener = null;
|
|
20
|
-
function resetBodyStyle() {
|
|
21
|
-
if (!isBrowser)
|
|
22
|
-
return;
|
|
23
|
-
document.body.setAttribute("style", initialBodyStyle ?? "");
|
|
24
|
-
document.body.style.removeProperty("--scrollbar-width");
|
|
25
|
-
isIOS && stopTouchMoveListener?.();
|
|
26
|
-
}
|
|
27
|
-
$effect(() => {
|
|
28
|
-
const curr = locked;
|
|
29
|
-
return untrack(() => {
|
|
30
|
-
if (!curr) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
initialBodyStyle = document.body.getAttribute("style");
|
|
34
|
-
const bodyStyle = getComputedStyle(document.body);
|
|
35
|
-
// TODO: account for RTL direction, etc.
|
|
36
|
-
const verticalScrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
|
|
37
|
-
const paddingRight = Number.parseInt(bodyStyle.paddingRight ?? "0", 10);
|
|
38
|
-
const config = {
|
|
39
|
-
padding: paddingRight + verticalScrollbarWidth,
|
|
40
|
-
margin: Number.parseInt(bodyStyle.marginRight ?? "0", 10),
|
|
41
|
-
};
|
|
42
|
-
if (verticalScrollbarWidth > 0) {
|
|
43
|
-
document.body.style.paddingRight = `${config.padding}px`;
|
|
44
|
-
document.body.style.marginRight = `${config.margin}px`;
|
|
45
|
-
document.body.style.setProperty("--scrollbar-width", `${verticalScrollbarWidth}px`);
|
|
46
|
-
document.body.style.overflow = "hidden";
|
|
47
|
-
}
|
|
48
|
-
if (isIOS) {
|
|
49
|
-
stopTouchMoveListener = addEventListener(document, "touchmove", (e) => {
|
|
50
|
-
if (e.target !== document.documentElement)
|
|
51
|
-
return;
|
|
52
|
-
if (e.touches.length > 1)
|
|
53
|
-
return;
|
|
54
|
-
e.preventDefault();
|
|
55
|
-
}, { passive: false });
|
|
56
|
-
}
|
|
57
|
-
afterTick(() => {
|
|
58
|
-
document.body.style.pointerEvents = "none";
|
|
59
|
-
document.body.style.overflow = "hidden";
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
$effect(() => {
|
|
64
|
-
return () => {
|
|
65
|
-
stopTouchMoveListener?.();
|
|
66
|
-
};
|
|
67
|
-
});
|
|
68
|
-
return {
|
|
69
|
-
get map() {
|
|
70
|
-
return map;
|
|
71
|
-
},
|
|
72
|
-
resetBodyStyle,
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
export function useBodyScrollLock(initialState, restoreScrollDelay = () => null) {
|
|
76
|
-
const id = useId();
|
|
77
|
-
const countState = useBodyLockStackCount();
|
|
78
|
-
if (!countState)
|
|
79
|
-
return;
|
|
80
|
-
const _restoreScrollDelay = $derived(restoreScrollDelay());
|
|
81
|
-
countState.map.set(id, initialState ?? false);
|
|
82
|
-
const locked = box.with(() => countState.map.get(id) ?? false, (v) => countState.map.set(id, v));
|
|
83
|
-
$effect(() => {
|
|
84
|
-
return () => {
|
|
85
|
-
countState.map.delete(id);
|
|
86
|
-
// if any locks are still active, we don't reset the body style
|
|
87
|
-
if (isAnyLocked(countState.map))
|
|
88
|
-
return;
|
|
89
|
-
// if no locks are active (meaning this was the last lock), we reset the body style
|
|
90
|
-
if (_restoreScrollDelay === null) {
|
|
91
|
-
requestAnimationFrame(() => countState.resetBodyStyle());
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
afterSleep(_restoreScrollDelay, () => countState.resetBodyStyle());
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
});
|
|
98
|
-
return locked;
|
|
99
|
-
}
|
|
100
|
-
function isAnyLocked(map) {
|
|
101
|
-
for (const [_, value] of map) {
|
|
102
|
-
if (value)
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Getter } from "svelte-toolbelt";
|
|
2
|
-
export type DataTypeahead = ReturnType<typeof useDataTypeahead>;
|
|
3
|
-
type UseDataTypeaheadOpts = {
|
|
4
|
-
onMatch: (value: string) => void;
|
|
5
|
-
getCurrentItem: () => string;
|
|
6
|
-
candidateValues: Getter<string[]>;
|
|
7
|
-
enabled: Getter<boolean>;
|
|
8
|
-
getWindow: () => Window & typeof globalThis;
|
|
9
|
-
};
|
|
10
|
-
export declare function useDataTypeahead(opts: UseDataTypeaheadOpts): {
|
|
11
|
-
search: import("svelte-toolbelt").WritableBox<string>;
|
|
12
|
-
handleTypeaheadSearch: (key: string) => string | undefined;
|
|
13
|
-
resetTypeahead: () => void;
|
|
14
|
-
};
|
|
15
|
-
export {};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { getNextMatch } from "./arrays.js";
|
|
2
|
-
import { boxAutoReset } from "./box-auto-reset.svelte.js";
|
|
3
|
-
export function useDataTypeahead(opts) {
|
|
4
|
-
// Reset `search` 1 second after it was last updated
|
|
5
|
-
const search = boxAutoReset("", {
|
|
6
|
-
afterMs: 1000,
|
|
7
|
-
getWindow: opts.getWindow,
|
|
8
|
-
});
|
|
9
|
-
const candidateValues = $derived(opts.candidateValues());
|
|
10
|
-
function handleTypeaheadSearch(key) {
|
|
11
|
-
if (!opts.enabled())
|
|
12
|
-
return;
|
|
13
|
-
if (!candidateValues.length)
|
|
14
|
-
return;
|
|
15
|
-
search.current = search.current + key;
|
|
16
|
-
const currentItem = opts.getCurrentItem();
|
|
17
|
-
const currentMatch = candidateValues.find((item) => item === currentItem) ?? "";
|
|
18
|
-
const values = candidateValues.map((item) => item ?? "");
|
|
19
|
-
const nextMatch = getNextMatch(values, search.current, currentMatch);
|
|
20
|
-
const newItem = candidateValues.find((item) => item === nextMatch);
|
|
21
|
-
if (newItem) {
|
|
22
|
-
opts.onMatch(newItem);
|
|
23
|
-
}
|
|
24
|
-
return newItem;
|
|
25
|
-
}
|
|
26
|
-
function resetTypeahead() {
|
|
27
|
-
search.current = "";
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
search,
|
|
31
|
-
handleTypeaheadSearch,
|
|
32
|
-
resetTypeahead,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type DOMTypeahead = ReturnType<typeof useDOMTypeahead>;
|
|
2
|
-
type UseDOMTypeaheadOpts = {
|
|
3
|
-
onMatch?: (item: HTMLElement) => void;
|
|
4
|
-
getCurrentItem?: () => HTMLElement | null;
|
|
5
|
-
getActiveElement: () => HTMLElement | null;
|
|
6
|
-
getWindow: () => Window & typeof globalThis;
|
|
7
|
-
};
|
|
8
|
-
export declare function useDOMTypeahead(opts: UseDOMTypeaheadOpts): {
|
|
9
|
-
search: import("svelte-toolbelt").WritableBox<string>;
|
|
10
|
-
handleTypeaheadSearch: (key: string, candidates: HTMLElement[]) => HTMLElement | undefined;
|
|
11
|
-
resetTypeahead: () => void;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { getNextMatch } from "./arrays.js";
|
|
2
|
-
import { boxAutoReset } from "./box-auto-reset.svelte.js";
|
|
3
|
-
export function useDOMTypeahead(opts) {
|
|
4
|
-
// Reset `search` 1 second after it was last updated
|
|
5
|
-
const search = boxAutoReset("", {
|
|
6
|
-
afterMs: 1000,
|
|
7
|
-
getWindow: opts.getWindow,
|
|
8
|
-
});
|
|
9
|
-
const onMatch = opts?.onMatch ?? ((node) => node.focus());
|
|
10
|
-
const getCurrentItem = opts?.getCurrentItem ?? (() => opts?.getActiveElement());
|
|
11
|
-
function handleTypeaheadSearch(key, candidates) {
|
|
12
|
-
if (!candidates.length)
|
|
13
|
-
return;
|
|
14
|
-
search.current = search.current + key;
|
|
15
|
-
const currentItem = getCurrentItem();
|
|
16
|
-
const currentMatch = candidates.find((item) => item === currentItem)?.textContent?.trim() ?? "";
|
|
17
|
-
const values = candidates.map((item) => item.textContent?.trim() ?? "");
|
|
18
|
-
const nextMatch = getNextMatch(values, search.current, currentMatch);
|
|
19
|
-
const newItem = candidates.find((item) => item.textContent?.trim() === nextMatch);
|
|
20
|
-
if (newItem)
|
|
21
|
-
onMatch(newItem);
|
|
22
|
-
return newItem;
|
|
23
|
-
}
|
|
24
|
-
function resetTypeahead() {
|
|
25
|
-
search.current = "";
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
search,
|
|
29
|
-
handleTypeaheadSearch,
|
|
30
|
-
resetTypeahead,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isBrowser } from "./is.js";
|
|
2
|
-
export function useFormControl(getNode) {
|
|
3
|
-
const isInForm = $derived.by(() => {
|
|
4
|
-
if (!isBrowser)
|
|
5
|
-
return false;
|
|
6
|
-
const node = getNode();
|
|
7
|
-
if (!node)
|
|
8
|
-
return false;
|
|
9
|
-
return Boolean(node.closest("form"));
|
|
10
|
-
});
|
|
11
|
-
return {
|
|
12
|
-
get current() {
|
|
13
|
-
return isInForm;
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export function useResizeObserver(node, onResize) {
|
|
2
|
-
$effect(() => {
|
|
3
|
-
let rAF = 0;
|
|
4
|
-
const _node = node();
|
|
5
|
-
if (!_node)
|
|
6
|
-
return;
|
|
7
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
8
|
-
cancelAnimationFrame(rAF);
|
|
9
|
-
rAF = window.requestAnimationFrame(onResize);
|
|
10
|
-
});
|
|
11
|
-
resizeObserver.observe(_node);
|
|
12
|
-
return () => {
|
|
13
|
-
window.cancelAnimationFrame(rAF);
|
|
14
|
-
resizeObserver.unobserve(_node);
|
|
15
|
-
};
|
|
16
|
-
});
|
|
17
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
interface Machine<S> {
|
|
2
|
-
[k: string]: {
|
|
3
|
-
[k: string]: S;
|
|
4
|
-
};
|
|
5
|
-
}
|
|
6
|
-
type MachineState<T> = keyof T;
|
|
7
|
-
type MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;
|
|
8
|
-
type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;
|
|
9
|
-
/**
|
|
10
|
-
* The `useStateMachine` function is a TypeScript function that creates a state machine and returns the
|
|
11
|
-
* current state and a dispatch function to update the state based on events.
|
|
12
|
-
* @param initialState - The `initialState` parameter is the initial state of the state machine. It
|
|
13
|
-
* represents the starting point of the state machine's state.
|
|
14
|
-
* @param machine - The `machine` parameter is an object that represents a state machine. It should
|
|
15
|
-
* have keys that correspond to the possible states of the machine, and the values should be objects
|
|
16
|
-
* that represent the possible events and their corresponding next states.
|
|
17
|
-
* @returns The `useStateMachine` function returns an object with two properties: `state` and
|
|
18
|
-
* `dispatch`.
|
|
19
|
-
*/
|
|
20
|
-
export declare function useStateMachine<M>(initialState: MachineState<M>, machine: M & Machine<MachineState<M>>): {
|
|
21
|
-
state: import("svelte-toolbelt").WritableBox<keyof M>;
|
|
22
|
-
dispatch: (event: MachineEvent<M>) => void;
|
|
23
|
-
};
|
|
24
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { box } from "svelte-toolbelt";
|
|
3
|
-
/**
|
|
4
|
-
* The `useStateMachine` function is a TypeScript function that creates a state machine and returns the
|
|
5
|
-
* current state and a dispatch function to update the state based on events.
|
|
6
|
-
* @param initialState - The `initialState` parameter is the initial state of the state machine. It
|
|
7
|
-
* represents the starting point of the state machine's state.
|
|
8
|
-
* @param machine - The `machine` parameter is an object that represents a state machine. It should
|
|
9
|
-
* have keys that correspond to the possible states of the machine, and the values should be objects
|
|
10
|
-
* that represent the possible events and their corresponding next states.
|
|
11
|
-
* @returns The `useStateMachine` function returns an object with two properties: `state` and
|
|
12
|
-
* `dispatch`.
|
|
13
|
-
*/
|
|
14
|
-
export function useStateMachine(initialState, machine) {
|
|
15
|
-
const state = box(initialState);
|
|
16
|
-
function reducer(event) {
|
|
17
|
-
// @ts-expect-error state.value is keyof M
|
|
18
|
-
const nextState = machine[state.current][event];
|
|
19
|
-
return nextState ?? state.current;
|
|
20
|
-
}
|
|
21
|
-
const dispatch = (event) => {
|
|
22
|
-
state.current = reducer(event);
|
|
23
|
-
};
|
|
24
|
-
return {
|
|
25
|
-
state,
|
|
26
|
-
dispatch,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Box } from "./box.svelte.js";
|
|
2
|
-
import type { AnyFn, Fn } from "./types.js";
|
|
3
|
-
export type UseTimeoutFnOptions = {
|
|
4
|
-
/**
|
|
5
|
-
* Start the timer immediate after calling this function
|
|
6
|
-
*
|
|
7
|
-
* @default true
|
|
8
|
-
*/
|
|
9
|
-
immediate?: boolean;
|
|
10
|
-
};
|
|
11
|
-
export type Stoppable<StartFnArgs extends unknown[] = unknown[]> = {
|
|
12
|
-
/**
|
|
13
|
-
* A ref indicate whether a stoppable instance is executing
|
|
14
|
-
*/
|
|
15
|
-
isPending: Readonly<Box<boolean>>;
|
|
16
|
-
/**
|
|
17
|
-
* Stop the effect from executing
|
|
18
|
-
*/
|
|
19
|
-
stop: Fn;
|
|
20
|
-
/**
|
|
21
|
-
* Start the effects
|
|
22
|
-
*/
|
|
23
|
-
start: (...args: StartFnArgs) => void;
|
|
24
|
-
};
|
|
25
|
-
export declare function useTimeoutFn<T extends AnyFn>(cb: T, interval: number, options?: UseTimeoutFnOptions): Stoppable<Parameters<T> | []>;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { box, onDestroyEffect } from "svelte-toolbelt";
|
|
2
|
-
import { isBrowser } from "./is.js";
|
|
3
|
-
export function useTimeoutFn(cb, interval, options = {}) {
|
|
4
|
-
const { immediate = true } = options;
|
|
5
|
-
const isPending = box(false);
|
|
6
|
-
let timer;
|
|
7
|
-
function clear() {
|
|
8
|
-
if (timer) {
|
|
9
|
-
clearTimeout(timer);
|
|
10
|
-
timer = null;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
function stop() {
|
|
14
|
-
isPending.current = false;
|
|
15
|
-
clear();
|
|
16
|
-
}
|
|
17
|
-
function start(...args) {
|
|
18
|
-
clear();
|
|
19
|
-
isPending.current = true;
|
|
20
|
-
timer = setTimeout(() => {
|
|
21
|
-
isPending.current = false;
|
|
22
|
-
timer = null;
|
|
23
|
-
cb(...args);
|
|
24
|
-
}, interval);
|
|
25
|
-
}
|
|
26
|
-
if (immediate) {
|
|
27
|
-
isPending.current = true;
|
|
28
|
-
if (isBrowser)
|
|
29
|
-
start();
|
|
30
|
-
}
|
|
31
|
-
onDestroyEffect(() => {
|
|
32
|
-
stop();
|
|
33
|
-
});
|
|
34
|
-
return {
|
|
35
|
-
isPending: box.readonly(isPending),
|
|
36
|
-
start,
|
|
37
|
-
stop,
|
|
38
|
-
};
|
|
39
|
-
}
|