bits-ui 2.7.0 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +9 -12
- 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 +5 -3
- package/dist/bits/calendar/components/calendar-prev-button.svelte +5 -3
- 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 +4 -4
- 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 +8 -10
- 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 +6 -5
- 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 +105 -105
- 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 -36
- package/dist/bits/menubar/menubar.svelte.js +21 -24
- 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 +4 -3
- 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 +4 -3
- 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 +2 -2
- package/dist/bits/radio-group/radio-group.svelte.d.ts +21 -19
- package/dist/bits/radio-group/radio-group.svelte.js +15 -15
- 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 +72 -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/focus-scope-manager.d.ts +12 -0
- package/dist/bits/utilities/focus-scope/focus-scope-manager.js +40 -0
- package/dist/bits/utilities/focus-scope/focus-scope.svelte +6 -8
- package/dist/bits/utilities/focus-scope/focus-scope.svelte.d.ts +1 -0
- package/dist/bits/utilities/focus-scope/focus-scope.svelte.js +204 -0
- package/dist/bits/utilities/focus-scope/types.d.ts +2 -6
- 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 +3 -3
- 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/focus.js +1 -1
- 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-enable-focus-trap.d.ts +5 -0
- package/dist/internal/should-enable-focus-trap.js +5 -0
- 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 +2 -2
- package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.d.ts +0 -14
- package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.js +0 -50
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +0 -49
- package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +0 -218
- 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/should-trap-focus.d.ts +0 -6
- package/dist/internal/should-trap-focus.js +0 -6
- 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,14 +0,0 @@
|
|
|
1
|
-
export interface FocusScopeAPI {
|
|
2
|
-
id: string;
|
|
3
|
-
paused: boolean;
|
|
4
|
-
pause: () => void;
|
|
5
|
-
resume: () => void;
|
|
6
|
-
isHandlingFocus: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare function createFocusScopeStack(): {
|
|
9
|
-
add(focusScope: FocusScopeAPI): void;
|
|
10
|
-
remove(focusScope: FocusScopeAPI): void;
|
|
11
|
-
readonly current: FocusScopeAPI[];
|
|
12
|
-
};
|
|
13
|
-
export declare function createFocusScopeAPI(): FocusScopeAPI;
|
|
14
|
-
export declare function removeLinks(items: HTMLElement[]): HTMLElement[];
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { box } from "svelte-toolbelt";
|
|
2
|
-
import { useId } from "../../../internal/use-id.js";
|
|
3
|
-
const focusStack = box([]);
|
|
4
|
-
export function createFocusScopeStack() {
|
|
5
|
-
return {
|
|
6
|
-
add(focusScope) {
|
|
7
|
-
const activeFocusScope = focusStack.current[0];
|
|
8
|
-
if (activeFocusScope && focusScope.id !== activeFocusScope.id) {
|
|
9
|
-
activeFocusScope.pause();
|
|
10
|
-
}
|
|
11
|
-
focusStack.current = removeFromFocusScopeArray(focusStack.current, focusScope);
|
|
12
|
-
focusStack.current.unshift(focusScope);
|
|
13
|
-
},
|
|
14
|
-
remove(focusScope) {
|
|
15
|
-
focusStack.current = removeFromFocusScopeArray(focusStack.current, focusScope);
|
|
16
|
-
focusStack.current[0]?.resume();
|
|
17
|
-
},
|
|
18
|
-
get current() {
|
|
19
|
-
return focusStack.current;
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export function createFocusScopeAPI() {
|
|
24
|
-
let paused = $state(false);
|
|
25
|
-
let isHandlingFocus = $state(false);
|
|
26
|
-
return {
|
|
27
|
-
id: useId(),
|
|
28
|
-
get paused() {
|
|
29
|
-
return paused;
|
|
30
|
-
},
|
|
31
|
-
get isHandlingFocus() {
|
|
32
|
-
return isHandlingFocus;
|
|
33
|
-
},
|
|
34
|
-
set isHandlingFocus(value) {
|
|
35
|
-
isHandlingFocus = value;
|
|
36
|
-
},
|
|
37
|
-
pause() {
|
|
38
|
-
paused = true;
|
|
39
|
-
},
|
|
40
|
-
resume() {
|
|
41
|
-
paused = false;
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function removeFromFocusScopeArray(arr, item) {
|
|
46
|
-
return [...arr].filter((i) => i.id !== item.id);
|
|
47
|
-
}
|
|
48
|
-
export function removeLinks(items) {
|
|
49
|
-
return items.filter((item) => item.tagName !== "A");
|
|
50
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Context } from "runed";
|
|
2
|
-
import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
|
|
3
|
-
import { type EventCallback } from "../../../internal/events.js";
|
|
4
|
-
export type FocusScopeContextValue = {
|
|
5
|
-
ignoreCloseAutoFocus: boolean;
|
|
6
|
-
};
|
|
7
|
-
export declare const FocusScopeContext: Context<FocusScopeContextValue>;
|
|
8
|
-
type UseFocusScopeProps = ReadableBoxedValues<{
|
|
9
|
-
/**
|
|
10
|
-
* ID of the focus scope container node.
|
|
11
|
-
*/
|
|
12
|
-
id: string;
|
|
13
|
-
/**
|
|
14
|
-
* When `true` will loop through the tabbable elements in the focus scope.
|
|
15
|
-
*
|
|
16
|
-
* @defaultValue false
|
|
17
|
-
*/
|
|
18
|
-
loop: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Whether focus is trapped within the focus scope.
|
|
21
|
-
*
|
|
22
|
-
* @defaultValue false
|
|
23
|
-
*/
|
|
24
|
-
enabled: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Event handler called when auto-focusing onMount.
|
|
27
|
-
* Can be prevented.
|
|
28
|
-
*/
|
|
29
|
-
onOpenAutoFocus: EventCallback;
|
|
30
|
-
/**
|
|
31
|
-
* Event handler called when auto-focusing onDestroy.
|
|
32
|
-
* Can be prevented.
|
|
33
|
-
*/
|
|
34
|
-
onCloseAutoFocus: EventCallback;
|
|
35
|
-
/**
|
|
36
|
-
* Whether force mount is enabled or not
|
|
37
|
-
*/
|
|
38
|
-
forceMount: boolean;
|
|
39
|
-
ref: HTMLElement | null;
|
|
40
|
-
}>;
|
|
41
|
-
export type FocusScopeContainerProps = {
|
|
42
|
-
id: string;
|
|
43
|
-
tabindex: number;
|
|
44
|
-
onkeydown: EventCallback<KeyboardEvent>;
|
|
45
|
-
};
|
|
46
|
-
export declare function useFocusScope({ id, loop, enabled, onOpenAutoFocus, onCloseAutoFocus, forceMount, ref, }: UseFocusScopeProps): {
|
|
47
|
-
readonly props: FocusScopeContainerProps;
|
|
48
|
-
};
|
|
49
|
-
export {};
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { afterSleep, afterTick, DOMContext, executeCallbacks } from "svelte-toolbelt";
|
|
2
|
-
import { Context, watch } from "runed";
|
|
3
|
-
import { on } from "svelte/events";
|
|
4
|
-
import { createFocusScopeAPI, createFocusScopeStack, removeLinks, } from "./focus-scope-stack.svelte.js";
|
|
5
|
-
import { focus, focusFirst, getTabbableCandidates, getTabbableEdges } from "../../../internal/focus.js";
|
|
6
|
-
import { CustomEventDispatcher } from "../../../internal/events.js";
|
|
7
|
-
import { isHTMLElement } from "../../../internal/is.js";
|
|
8
|
-
import { kbd } from "../../../internal/kbd.js";
|
|
9
|
-
import { isTabbable } from "tabbable";
|
|
10
|
-
const AutoFocusOnMountEvent = new CustomEventDispatcher("focusScope.autoFocusOnMount", {
|
|
11
|
-
bubbles: false,
|
|
12
|
-
cancelable: true,
|
|
13
|
-
});
|
|
14
|
-
const AutoFocusOnDestroyEvent = new CustomEventDispatcher("focusScope.autoFocusOnDestroy", {
|
|
15
|
-
bubbles: false,
|
|
16
|
-
cancelable: true,
|
|
17
|
-
});
|
|
18
|
-
export const FocusScopeContext = new Context("FocusScope");
|
|
19
|
-
export function useFocusScope({ id, loop, enabled, onOpenAutoFocus, onCloseAutoFocus, forceMount, ref, }) {
|
|
20
|
-
const focusScopeStack = createFocusScopeStack();
|
|
21
|
-
const focusScope = createFocusScopeAPI();
|
|
22
|
-
const ctx = FocusScopeContext.getOr({ ignoreCloseAutoFocus: false });
|
|
23
|
-
let lastFocusedElement = null;
|
|
24
|
-
const domContext = new DOMContext(ref);
|
|
25
|
-
function manageFocus(event) {
|
|
26
|
-
if (focusScope.paused || !ref.current || focusScope.isHandlingFocus)
|
|
27
|
-
return;
|
|
28
|
-
focusScope.isHandlingFocus = true;
|
|
29
|
-
try {
|
|
30
|
-
const target = event.target;
|
|
31
|
-
if (!isHTMLElement(target))
|
|
32
|
-
return;
|
|
33
|
-
const isWithinActiveScope = ref.current.contains(target);
|
|
34
|
-
if (event.type === "focusin") {
|
|
35
|
-
if (isWithinActiveScope) {
|
|
36
|
-
lastFocusedElement = target;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
if (ctx.ignoreCloseAutoFocus)
|
|
40
|
-
return;
|
|
41
|
-
focus(lastFocusedElement, { select: true });
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
else if (event.type === "focusout") {
|
|
45
|
-
if (!isWithinActiveScope && !ctx.ignoreCloseAutoFocus) {
|
|
46
|
-
focus(lastFocusedElement, { select: true });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
focusScope.isHandlingFocus = false;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Handles DOM mutations within the container. Specifically checks if the
|
|
56
|
-
* last known focused element inside the container has been removed. If so,
|
|
57
|
-
* and focus has escaped the container (likely moved to document.body),
|
|
58
|
-
* it refocuses the container itself to maintain the trap.
|
|
59
|
-
*/
|
|
60
|
-
function handleMutations(mutations) {
|
|
61
|
-
// if there's no record of a last focused el, or container isn't mounted, bail
|
|
62
|
-
if (!lastFocusedElement || !ref.current)
|
|
63
|
-
return;
|
|
64
|
-
// track if the last focused element was removed
|
|
65
|
-
let elementWasRemoved = false;
|
|
66
|
-
for (const mutation of mutations) {
|
|
67
|
-
// we only care about mutations where nodes were removed
|
|
68
|
-
if (mutation.type === "childList" && mutation.removedNodes.length > 0) {
|
|
69
|
-
// check if any removed nodes are the last focused element or contain it
|
|
70
|
-
for (const removedNode of mutation.removedNodes) {
|
|
71
|
-
if (removedNode === lastFocusedElement) {
|
|
72
|
-
elementWasRemoved = true;
|
|
73
|
-
// found it directly
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
// contains() only works on elements, so we need to check nodeType
|
|
77
|
-
if (removedNode.nodeType === Node.ELEMENT_NODE &&
|
|
78
|
-
removedNode.contains(lastFocusedElement)) {
|
|
79
|
-
elementWasRemoved = true;
|
|
80
|
-
// descendant found,
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// if we've confirmed removal in any mutation, bail
|
|
86
|
-
if (elementWasRemoved)
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* If the element was removed and focus is now outside the container,
|
|
91
|
-
* (e.g., browser moved it to body), refocus the container.
|
|
92
|
-
*/
|
|
93
|
-
if (elementWasRemoved &&
|
|
94
|
-
ref.current &&
|
|
95
|
-
!ref.current.contains(domContext.getActiveElement())) {
|
|
96
|
-
focus(ref.current);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
watch([() => ref.current, () => enabled.current], ([container, enabled]) => {
|
|
100
|
-
if (!container || !enabled)
|
|
101
|
-
return;
|
|
102
|
-
const removeEvents = executeCallbacks(on(domContext.getDocument(), "focusin", manageFocus), on(domContext.getDocument(), "focusout", manageFocus));
|
|
103
|
-
const mutationObserver = new MutationObserver(handleMutations);
|
|
104
|
-
mutationObserver.observe(container, {
|
|
105
|
-
childList: true,
|
|
106
|
-
subtree: true,
|
|
107
|
-
attributes: false,
|
|
108
|
-
});
|
|
109
|
-
return () => {
|
|
110
|
-
removeEvents();
|
|
111
|
-
mutationObserver.disconnect();
|
|
112
|
-
};
|
|
113
|
-
});
|
|
114
|
-
watch([() => forceMount.current, () => ref.current], ([forceMount, container]) => {
|
|
115
|
-
if (forceMount)
|
|
116
|
-
return;
|
|
117
|
-
const prevFocusedElement = domContext.getActiveElement();
|
|
118
|
-
handleOpen(container, prevFocusedElement);
|
|
119
|
-
return () => {
|
|
120
|
-
if (!container)
|
|
121
|
-
return;
|
|
122
|
-
handleClose(prevFocusedElement);
|
|
123
|
-
};
|
|
124
|
-
});
|
|
125
|
-
watch([() => forceMount.current, () => ref.current, () => enabled.current], ([forceMount, container]) => {
|
|
126
|
-
if (!forceMount)
|
|
127
|
-
return;
|
|
128
|
-
const prevFocusedElement = domContext.getActiveElement();
|
|
129
|
-
handleOpen(container, prevFocusedElement);
|
|
130
|
-
return () => {
|
|
131
|
-
if (!container)
|
|
132
|
-
return;
|
|
133
|
-
handleClose(prevFocusedElement);
|
|
134
|
-
};
|
|
135
|
-
});
|
|
136
|
-
function handleOpen(container, prevFocusedElement) {
|
|
137
|
-
if (!container)
|
|
138
|
-
container = domContext.getElementById(id.current);
|
|
139
|
-
if (!container || !enabled.current)
|
|
140
|
-
return;
|
|
141
|
-
focusScopeStack.add(focusScope);
|
|
142
|
-
const hasFocusedCandidate = container.contains(prevFocusedElement);
|
|
143
|
-
if (!hasFocusedCandidate) {
|
|
144
|
-
const mountEvent = AutoFocusOnMountEvent.createEvent();
|
|
145
|
-
onOpenAutoFocus.current(mountEvent);
|
|
146
|
-
if (!mountEvent.defaultPrevented) {
|
|
147
|
-
afterTick(() => {
|
|
148
|
-
if (!container)
|
|
149
|
-
return;
|
|
150
|
-
const result = focusFirst(removeLinks(getTabbableCandidates(container)), {
|
|
151
|
-
select: true,
|
|
152
|
-
}, () => domContext.getActiveElement());
|
|
153
|
-
if (!result)
|
|
154
|
-
focus(container);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
function handleClose(prevFocusedElement) {
|
|
160
|
-
const destroyEvent = AutoFocusOnDestroyEvent.createEvent();
|
|
161
|
-
onCloseAutoFocus.current?.(destroyEvent);
|
|
162
|
-
const shouldIgnore = ctx.ignoreCloseAutoFocus;
|
|
163
|
-
afterSleep(0, () => {
|
|
164
|
-
if (!destroyEvent.defaultPrevented && prevFocusedElement && !shouldIgnore) {
|
|
165
|
-
focus(isTabbable(prevFocusedElement)
|
|
166
|
-
? prevFocusedElement
|
|
167
|
-
: domContext.getDocument().body, {
|
|
168
|
-
select: true,
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
focusScopeStack.remove(focusScope);
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
function handleKeydown(e) {
|
|
175
|
-
if (!enabled.current)
|
|
176
|
-
return;
|
|
177
|
-
if (!loop.current && !enabled.current)
|
|
178
|
-
return;
|
|
179
|
-
if (focusScope.paused)
|
|
180
|
-
return;
|
|
181
|
-
const isTabKey = e.key === kbd.TAB && !e.ctrlKey && !e.altKey && !e.metaKey;
|
|
182
|
-
const focusedElement = domContext.getActiveElement();
|
|
183
|
-
if (!(isTabKey && focusedElement))
|
|
184
|
-
return;
|
|
185
|
-
const container = ref.current;
|
|
186
|
-
if (!container)
|
|
187
|
-
return;
|
|
188
|
-
const [first, last] = getTabbableEdges(container);
|
|
189
|
-
const hasTabbableElementsInside = first && last;
|
|
190
|
-
if (!hasTabbableElementsInside) {
|
|
191
|
-
if (focusedElement === container) {
|
|
192
|
-
e.preventDefault();
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
if (!e.shiftKey && focusedElement === last) {
|
|
197
|
-
e.preventDefault();
|
|
198
|
-
if (loop.current)
|
|
199
|
-
focus(first, { select: true });
|
|
200
|
-
}
|
|
201
|
-
else if (e.shiftKey && focusedElement === first) {
|
|
202
|
-
e.preventDefault();
|
|
203
|
-
if (loop.current)
|
|
204
|
-
focus(last, { select: true });
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
const props = $derived.by(() => ({
|
|
209
|
-
id: id.current,
|
|
210
|
-
tabindex: -1,
|
|
211
|
-
onkeydown: handleKeydown,
|
|
212
|
-
}));
|
|
213
|
-
return {
|
|
214
|
-
get props() {
|
|
215
|
-
return props;
|
|
216
|
-
},
|
|
217
|
-
};
|
|
218
|
-
}
|
|
@@ -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;
|