@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.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/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +109 -0
- package/_adapters/selection.js +685 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +374 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +217 -0
- package/collections/components.jsx +537 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +9 -0
- package/collections/nodes.js +81 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +5 -0
- package/collections/server-dev.js +16 -0
- package/collections/server-off.d.ts +5 -0
- package/collections/server-off.js +7 -0
- package/collections/server-on.d.ts +28 -0
- package/collections/server-on.jsx +76 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +194 -0
- package/drag-drop/directives/drag.js +522 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +126 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +133 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +242 -0
- package/grid-list/behaviour.js +598 -0
- package/grid-list/index.d.ts +202 -0
- package/grid-list/index.jsx +685 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +538 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +53 -0
- package/interactions/utils.js +252 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +492 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +596 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +671 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +47 -0
- package/portal/index.jsx +76 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +139 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +76 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +535 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +624 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +159 -0
- package/state/menu.js +184 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +982 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +815 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +71 -0
- package/utils/data-attrs.jsx +193 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +57 -0
- package/utils/index.js +257 -0
- package/utils/links.d.ts +87 -0
- package/utils/links.jsx +152 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +98 -0
- package/virtualizer/behaviour.js +315 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +2 -0
- package/virtualizer/index.jsx +4 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +508 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +79 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +62 -0
- package/virtualizer/virtualizer.jsx +88 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// Rivet (no upstream: shadcn's Sheet has no swipe): swipe-to-dismiss of the mobile Sidebar sheet on the house motion,
|
|
2
|
+
// `@rivetjs/cdk/motion` (embla-carousel 8.6.0 physics, MIT, © David Jerleke; user decision 2026-10-08: no hand-rolled
|
|
3
|
+
// easing). The drag follows the pointer (Motion1D `hold` + `drag`, embla's drag friction); on release the flick force
|
|
4
|
+
// (VelocityTracker, DragRelease snap boost) projects the throw: past half the sheet width → it animates off-screen
|
|
5
|
+
// and `close()` runs at once (the overlay exit slides it on from the dragged offset), otherwise it settles back open. Open / close
|
|
6
|
+
// from the trigger, Escape or the underlay stay the overlay's CSS transition (`data-entering` / `data-exiting`).
|
|
7
|
+
// - Axis lock: a move must go 6 px, more sideways than vertical, before the drag starts (vertical moves scroll the
|
|
8
|
+
// content); the sheet sets `touch-action: pan-y` inline (behaviour-critical) so touch drags reach it.
|
|
9
|
+
// - Native drag-and-drop (links, images) is prevented while a pointer is down on the sheet (it would cancel the pointer).
|
|
10
|
+
// - A started drag cancels presses under the pointer (synthetic `pointercancel`, as a browser does for a pan) and
|
|
11
|
+
// swallows the click that follows.
|
|
12
|
+
// - Units: distance towards the closed edge, 0 = open … sheet width = off-screen; rendered as an inline
|
|
13
|
+
// `transform: translateX(…)` (the overlay CSS animates `translate`, the two compose); the underlay fades with it.
|
|
14
|
+
// - `prefers-reduced-motion: reduce` or the provider's `reduceMotion` → the release jumps (duration 0), as the motion
|
|
15
|
+
// docs prescribe.
|
|
16
|
+
import { DragRelease, Motion1D, VelocityTracker } from "../motion/index.js";
|
|
17
|
+
/** Pixels a pointer moves before a drag is decided (sideways → drag, vertical → scroll). */
|
|
18
|
+
export const SHEET_DRAG_THRESHOLD = 6;
|
|
19
|
+
const BASE_FRICTION = 0.68;
|
|
20
|
+
/**
|
|
21
|
+
* Attaches swipe-to-dismiss motion to the open mobile sheet element; returns a cleanup. Called by `Sidebar` from a
|
|
22
|
+
* client effect while the sheet is open.
|
|
23
|
+
*/
|
|
24
|
+
export function sidebarSheetMotion(sheet, options) {
|
|
25
|
+
const { side, close, reduceMotion } = options;
|
|
26
|
+
const view = sheet.ownerDocument.defaultView;
|
|
27
|
+
// Closing direction in screen x: left sheet closes to the left.
|
|
28
|
+
const sign = side === "left" ? -1 : 1;
|
|
29
|
+
const backdrop = sheet.parentElement && sheet.parentElement !== sheet.ownerDocument.body ? sheet.parentElement : null;
|
|
30
|
+
const tracker = VelocityTracker();
|
|
31
|
+
const release = DragRelease(false, BASE_FRICTION);
|
|
32
|
+
let width = 0;
|
|
33
|
+
let dismissing = false;
|
|
34
|
+
const render = (value) => {
|
|
35
|
+
sheet.style.transform = value ? `translateX(${sign * value}px)` : "";
|
|
36
|
+
if (backdrop && width)
|
|
37
|
+
backdrop.style.opacity = value ? String(Math.max(0, 1 - value / width)) : "";
|
|
38
|
+
};
|
|
39
|
+
const motion = Motion1D({ value: 0, friction: BASE_FRICTION, render, onSettle: () => reset() });
|
|
40
|
+
const reset = () => {
|
|
41
|
+
sheet.style.transform = "";
|
|
42
|
+
sheet.style.transition = "";
|
|
43
|
+
if (backdrop)
|
|
44
|
+
((backdrop.style.opacity = ""), (backdrop.style.transition = ""));
|
|
45
|
+
};
|
|
46
|
+
let pointer = null;
|
|
47
|
+
let dragging = false;
|
|
48
|
+
let cancelling = false;
|
|
49
|
+
const point = (event) => sign * event.clientX;
|
|
50
|
+
const clamp = () => {
|
|
51
|
+
const target = motion.target.get();
|
|
52
|
+
if (target < 0)
|
|
53
|
+
motion.target.set(0);
|
|
54
|
+
else if (target > width)
|
|
55
|
+
motion.target.set(width);
|
|
56
|
+
};
|
|
57
|
+
const down = (event) => {
|
|
58
|
+
if (pointer || dismissing || (event.pointerType === "mouse" && event.button !== 0))
|
|
59
|
+
return;
|
|
60
|
+
pointer = { id: event.pointerId, x: event.clientX, y: event.clientY, target: event.target, mouse: event.pointerType === "mouse" };
|
|
61
|
+
dragging = false;
|
|
62
|
+
};
|
|
63
|
+
const move = (event) => {
|
|
64
|
+
if (!pointer || event.pointerId !== pointer.id)
|
|
65
|
+
return;
|
|
66
|
+
if (!dragging) {
|
|
67
|
+
const dx = event.clientX - pointer.x, dy = event.clientY - pointer.y;
|
|
68
|
+
if (Math.abs(dx) < SHEET_DRAG_THRESHOLD && Math.abs(dy) < SHEET_DRAG_THRESHOLD)
|
|
69
|
+
return;
|
|
70
|
+
if (Math.abs(dy) >= Math.abs(dx))
|
|
71
|
+
return void (pointer = null);
|
|
72
|
+
dragging = true;
|
|
73
|
+
width = sheet.getBoundingClientRect().width;
|
|
74
|
+
sheet.style.transition = "none";
|
|
75
|
+
if (backdrop)
|
|
76
|
+
backdrop.style.transition = "none";
|
|
77
|
+
try {
|
|
78
|
+
sheet.setPointerCapture(event.pointerId);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Synthetic pointers have no capture.
|
|
82
|
+
}
|
|
83
|
+
// Cancel presses under the pointer (a browser does the same when it starts a pan); our own window
|
|
84
|
+
// `pointercancel` listener ignores this synthetic one (`cancelling`).
|
|
85
|
+
cancelling = true;
|
|
86
|
+
try {
|
|
87
|
+
pointer.target?.dispatchEvent(new PointerEvent("pointercancel", { bubbles: true, pointerId: event.pointerId, pointerType: event.pointerType }));
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
cancelling = false;
|
|
91
|
+
}
|
|
92
|
+
view.addEventListener("click", swallow, { capture: true, once: true });
|
|
93
|
+
tracker.pointerDown(sign * pointer.x, event.timeStamp);
|
|
94
|
+
motion.hold(true);
|
|
95
|
+
}
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
motion.drag(tracker.pointerMove(point(event), event.timeStamp));
|
|
98
|
+
clamp();
|
|
99
|
+
};
|
|
100
|
+
const up = (event) => {
|
|
101
|
+
if (cancelling || !pointer || event.pointerId !== pointer.id)
|
|
102
|
+
return;
|
|
103
|
+
const mouse = pointer.mouse;
|
|
104
|
+
pointer = null;
|
|
105
|
+
if (!dragging)
|
|
106
|
+
return;
|
|
107
|
+
dragging = false;
|
|
108
|
+
// Drop the click swallower if no click follows (pointerup outside the start element).
|
|
109
|
+
view.setTimeout(() => view.removeEventListener("click", swallow, { capture: true }), 0);
|
|
110
|
+
const rawForce = event.type === "pointercancel" ? 0 : tracker.pointerUp(event.timeStamp) * release.forceBoost(mouse);
|
|
111
|
+
const current = motion.target.get();
|
|
112
|
+
dismissing = current + rawForce > width / 2;
|
|
113
|
+
motion.hold(false);
|
|
114
|
+
if (dismissing)
|
|
115
|
+
return dismiss(current);
|
|
116
|
+
if (reduceMotion?.() || view.matchMedia?.("(prefers-reduced-motion: reduce)").matches)
|
|
117
|
+
return motion.to(0, true);
|
|
118
|
+
const { duration, friction } = release.settle(rawForce, -current);
|
|
119
|
+
motion.scrollBody.useDuration(duration).useFriction(friction);
|
|
120
|
+
motion.target.set(0);
|
|
121
|
+
motion.animation.start();
|
|
122
|
+
};
|
|
123
|
+
// Dismiss = close right away (ui Drawer's rule): the sheet keeps its inline offset and the overlay's exit
|
|
124
|
+
// (`data-exiting` animation / transition on `translate`) slides it on from there; the underlay fades from its
|
|
125
|
+
// dragged opacity (a script animation, above the theme's CSS fade). Settling the spring first left the underlay
|
|
126
|
+
// blocking the page for ~1.5 s of an invisible tail.
|
|
127
|
+
const dismiss = (current) => {
|
|
128
|
+
motion.stop();
|
|
129
|
+
render(current);
|
|
130
|
+
sheet.style.transition = "";
|
|
131
|
+
if (backdrop) {
|
|
132
|
+
backdrop.style.transition = "";
|
|
133
|
+
const from = backdrop.style.opacity || "1";
|
|
134
|
+
backdrop.style.opacity = "0";
|
|
135
|
+
if (!(reduceMotion?.() || view.matchMedia?.("(prefers-reduced-motion: reduce)").matches))
|
|
136
|
+
backdrop.animate?.([{ opacity: from }, { opacity: 0 }], { duration: 200, easing: "ease-in" });
|
|
137
|
+
}
|
|
138
|
+
close();
|
|
139
|
+
};
|
|
140
|
+
// A mouse drag that starts on a link (menu buttons with `href`) or an image would become a native drag-and-drop: the
|
|
141
|
+
// browser fires `pointercancel` and stops sending moves. No native drag inside the sheet while a pointer is down.
|
|
142
|
+
const noNativeDrag = (event) => {
|
|
143
|
+
if (pointer)
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
};
|
|
146
|
+
const swallow = (event) => {
|
|
147
|
+
event.stopPropagation();
|
|
148
|
+
event.preventDefault();
|
|
149
|
+
};
|
|
150
|
+
const touchAction = sheet.style.touchAction;
|
|
151
|
+
sheet.style.touchAction = "pan-y";
|
|
152
|
+
sheet.addEventListener("pointerdown", down);
|
|
153
|
+
sheet.addEventListener("dragstart", noNativeDrag);
|
|
154
|
+
view.addEventListener("pointermove", move, { passive: false });
|
|
155
|
+
view.addEventListener("pointerup", up);
|
|
156
|
+
view.addEventListener("pointercancel", up);
|
|
157
|
+
return () => {
|
|
158
|
+
motion.stop();
|
|
159
|
+
sheet.removeEventListener("pointerdown", down);
|
|
160
|
+
sheet.removeEventListener("dragstart", noNativeDrag);
|
|
161
|
+
view.removeEventListener("pointermove", move);
|
|
162
|
+
view.removeEventListener("pointerup", up);
|
|
163
|
+
view.removeEventListener("pointercancel", up);
|
|
164
|
+
view.removeEventListener("click", swallow, { capture: true });
|
|
165
|
+
sheet.style.touchAction = touchAction;
|
|
166
|
+
// A swiped-away sheet keeps its offset while the overlay exit unmounts it (no jump back on screen).
|
|
167
|
+
if (!dismissing)
|
|
168
|
+
reset();
|
|
169
|
+
};
|
|
170
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { type Signal } from "@rivetjs/reactivity";
|
|
2
|
+
import { type ControlledState } from "../interactions/controllable.js";
|
|
3
|
+
export declare const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
4
|
+
export declare const SIDEBAR_COOKIE_MAX_AGE: number;
|
|
5
|
+
export declare const SIDEBAR_WIDTH = "16rem";
|
|
6
|
+
export declare const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
7
|
+
export declare const SIDEBAR_WIDTH_ICON = "3rem";
|
|
8
|
+
export declare const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
9
|
+
/** Default `toggleShortcut`: Cmd+B / Ctrl+B (upstream's shortcut; `mod` = Cmd or Ctrl). */
|
|
10
|
+
export declare const SIDEBAR_TOGGLE_SHORTCUT = "mod+b";
|
|
11
|
+
/** `use-mobile.ts`: viewports narrower than this are mobile (the sidebar becomes a sheet). */
|
|
12
|
+
export declare const MOBILE_BREAKPOINT = 768;
|
|
13
|
+
/** The media query behind `isMobile` (`(max-width: 767px)`). */
|
|
14
|
+
export declare const MOBILE_QUERY = "(max-width: 767px)";
|
|
15
|
+
export interface SidebarStateProps {
|
|
16
|
+
/** Default open state of the sidebar (uncontrolled). @default true */
|
|
17
|
+
defaultOpen?: boolean;
|
|
18
|
+
/** Open state of the sidebar (controlled): a plain value, a two-way Signal, or an accessor. */
|
|
19
|
+
open?: boolean | Signal<boolean> | (() => boolean);
|
|
20
|
+
/** Called when the open state changes (resumed pages: an inline arrow or a local function). */
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Rivet: the toggle shortcut — modifiers `mod` (Cmd or Ctrl), `cmd` / `meta`, `ctrl`, `shift`, `alt` and one key,
|
|
24
|
+
* joined with `+` (`"mod+b"`, `"mod+shift+s"`, `"alt+\\"`); `false` / `null` disables it. @default "mod+b"
|
|
25
|
+
*/
|
|
26
|
+
toggleShortcut?: string | false | null;
|
|
27
|
+
/** Rivet: turns off the sidebar's animations (sheet swipe, sub menus, pages), on top of `prefers-reduced-motion`. @default false */
|
|
28
|
+
reduceMotion?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Rivet: close the mobile sheet when a menu button / sub button is pressed (groups, menus and items override it).
|
|
31
|
+
* Off by default: upstream keeps the sheet open on a link press (`@rivetjs/ui` turns it on). @default false
|
|
32
|
+
*/
|
|
33
|
+
closeMobileOnAction?: boolean;
|
|
34
|
+
/** Rivet: default `side` of the `Sidebar`s inside (their own prop wins). @default "left" */
|
|
35
|
+
side?: "left" | "right";
|
|
36
|
+
/** Rivet: default `variant` of the `Sidebar`s inside (their own prop wins). @default "sidebar" */
|
|
37
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
38
|
+
/** Rivet: default `collapsible` of the `Sidebar`s inside (their own prop wins; shadcn default kept). @default "offcanvas" */
|
|
39
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
40
|
+
}
|
|
41
|
+
/** Sidebar state (serializable). Read the signals in bindings; change them through the functions below. */
|
|
42
|
+
export interface SidebarState {
|
|
43
|
+
/** The shown open state (desktop). */
|
|
44
|
+
readonly open: Signal<boolean>;
|
|
45
|
+
/** @internal controlled-state record behind `open`. */
|
|
46
|
+
readonly control: ControlledState<boolean>;
|
|
47
|
+
/** Whether the mobile sheet is open. */
|
|
48
|
+
readonly openMobile: Signal<boolean>;
|
|
49
|
+
/** Whether the viewport is mobile (`< MOBILE_BREAKPOINT`); `false` on the server and before the first client check. */
|
|
50
|
+
readonly isMobile: Signal<boolean>;
|
|
51
|
+
/** The toggle shortcut (`toggleShortcut`), `null` when disabled. */
|
|
52
|
+
readonly shortcut: string | null;
|
|
53
|
+
/** `reduceMotion`. */
|
|
54
|
+
readonly reduceMotion: boolean;
|
|
55
|
+
/** `closeMobileOnAction` of the provider. */
|
|
56
|
+
readonly closeMobileOnAction: boolean;
|
|
57
|
+
/** Provider defaults for `Sidebar` (`undefined`: the Sidebar default). */
|
|
58
|
+
readonly side: "left" | "right" | undefined;
|
|
59
|
+
readonly variant: "sidebar" | "floating" | "inset" | undefined;
|
|
60
|
+
readonly collapsible: "offcanvas" | "icon" | "none" | undefined;
|
|
61
|
+
}
|
|
62
|
+
/** Creates the sidebar state (region state: a re-created region of a resumed page keeps it). */
|
|
63
|
+
export declare function createSidebarState(props?: SidebarStateProps): SidebarState;
|
|
64
|
+
/** `"expanded"` / `"collapsed"` (upstream `state`; `data-state`). */
|
|
65
|
+
export declare const sidebarStateName: (state: SidebarState) => "expanded" | "collapsed";
|
|
66
|
+
/** Writes the persisted state cookie (upstream: in `setOpen`). */
|
|
67
|
+
export declare function writeSidebarCookie(open: boolean): void;
|
|
68
|
+
/** Upstream `setOpen`: a value or an updater; calls `onOpenChange` (controlled) or sets the state, then writes the cookie. */
|
|
69
|
+
export declare function setSidebarOpen(state: SidebarState, value: boolean | ((open: boolean) => boolean)): void;
|
|
70
|
+
/** Upstream `setOpenMobile`. */
|
|
71
|
+
export declare function setSidebarOpenMobile(state: SidebarState, value: boolean | ((open: boolean) => boolean)): void;
|
|
72
|
+
/** Upstream `toggleSidebar`: the mobile sheet on mobile, else the desktop sidebar (re-reads the viewport first). */
|
|
73
|
+
export declare function toggleSidebar(state: SidebarState): void;
|
|
74
|
+
/** A parsed toggle shortcut (`parseSidebarShortcut`). */
|
|
75
|
+
export interface SidebarShortcut {
|
|
76
|
+
/** The key, lower case (`"b"`, `"\\"`, `"enter"`). */
|
|
77
|
+
key: string;
|
|
78
|
+
/** `mod`: Cmd or Ctrl (either one, as upstream's Cmd+B / Ctrl+B). */
|
|
79
|
+
mod: boolean;
|
|
80
|
+
meta: boolean;
|
|
81
|
+
ctrl: boolean;
|
|
82
|
+
shift: boolean;
|
|
83
|
+
alt: boolean;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Rivet: parses a shortcut string (`"mod+b"`, `"mod+shift+s"`, `"ctrl+alt+k"`; case-insensitive, `+` separated, the
|
|
87
|
+
* last part is the key; a lone `+` key is written `"mod++"`). `null` for an empty / modifier-only string.
|
|
88
|
+
*/
|
|
89
|
+
export declare function parseSidebarShortcut(shortcut: string): SidebarShortcut | null;
|
|
90
|
+
/**
|
|
91
|
+
* Rivet: whether `event` is the shortcut. Shift / Alt must match exactly; `mod` takes Cmd or Ctrl, explicit `cmd` /
|
|
92
|
+
* `ctrl` require that key (and no other Cmd / Ctrl than the ones listed). The key compares case-insensitively with
|
|
93
|
+
* `event.key`, or with the physical `event.code` for letters / digits (Alt and Shift change `key` on some layouts).
|
|
94
|
+
*/
|
|
95
|
+
export declare function matchesSidebarShortcut(event: KeyboardEvent, spec: SidebarShortcut): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Upstream window `keydown` listener: the toggle shortcut (default Cmd+B / Ctrl+B) toggles the sidebar. Called by the
|
|
98
|
+
* provider's delegated `keydown` (works on a cold resumed page) and by its window listener (attached once the runtime
|
|
99
|
+
* runs); an event is handled once. `toggleShortcut={false}` turns it off.
|
|
100
|
+
*/
|
|
101
|
+
export declare function sidebarShortcutKeyDown(event: KeyboardEvent, state: SidebarState): void;
|
|
102
|
+
/** Rivet: whether sidebar animations should be skipped (`reduceMotion`, or the user's `prefers-reduced-motion`). */
|
|
103
|
+
export declare function sidebarReducedMotion(reduceMotion: boolean | undefined): boolean;
|
|
104
|
+
/** Rivet `closeMobileOnAction`: closes the mobile sheet after a menu action when it is open. */
|
|
105
|
+
export declare function closeSidebarMobileOnAction(state: SidebarState, close: boolean | undefined): void;
|
|
106
|
+
/** Whether the viewport is mobile right now (`< MOBILE_BREAKPOINT`); `false` on the server. */
|
|
107
|
+
export declare function sidebarViewportIsMobile(): boolean;
|
|
108
|
+
/** `use-mobile.ts` `onChange`: re-reads the viewport width (no write when unchanged). */
|
|
109
|
+
export declare function updateSidebarIsMobile(state: SidebarState): void;
|
|
110
|
+
/**
|
|
111
|
+
* Rivet: the persisted open state for SSR. Pass a cookie header (`request.headers.get("cookie")`), a cookie map
|
|
112
|
+
* (`RequestEvent.cookies` of `@rivetjs/router`) or the cookie value; `undefined` when absent / unparsable.
|
|
113
|
+
* Use: `defaultOpen={sidebarCookieOpen(cookies) ?? true}`.
|
|
114
|
+
*/
|
|
115
|
+
export declare function sidebarCookieOpen(source: string | {
|
|
116
|
+
get(name: string): string | undefined;
|
|
117
|
+
} | null | undefined): boolean | undefined;
|
|
118
|
+
/** The sidebar state of the nearest SidebarProvider (serializable). */
|
|
119
|
+
export declare const SidebarContext: import("@rivetjs/reactivity").Context<SidebarState | null>;
|
|
120
|
+
/** Rivet: options a SidebarGroup / SidebarMenu passes down (`closeMobileOnAction`, `reduceMotion`; plain data). */
|
|
121
|
+
export interface SidebarMenuOptions {
|
|
122
|
+
closeMobileOnAction?: boolean;
|
|
123
|
+
reduceMotion?: boolean;
|
|
124
|
+
}
|
|
125
|
+
/** Rivet: the nearest group / menu options (`rv-sidebar-options`). */
|
|
126
|
+
export declare const SidebarMenuOptionsContext: import("@rivetjs/reactivity").Context<SidebarMenuOptions | null>;
|
package/sidebar/state.js
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// Ported from shadcn/ui Sidebar (apps/v4/registry/new-york-v4/ui/sidebar.tsx `SidebarProvider` state +
|
|
2
|
+
// apps/v4/registry/new-york-v4/hooks/use-mobile.ts; React Aria base apps/v4/registry/bases/aria/ui/sidebar.tsx),
|
|
3
|
+
// shadcn/ui 4.21.4, MIT, © 2023 shadcn.
|
|
4
|
+
// Rivet:
|
|
5
|
+
// - React state → serializable state (signals + plain data, `controllable` for `open`): the free functions
|
|
6
|
+
// (`setSidebarOpen`, `toggleSidebar`, …) take the state first, so handlers / shortcuts resume.
|
|
7
|
+
// - `open` accepts a plain value, a two-way Signal, or an accessor (cdk `controllable`); `onOpenChange` fires on
|
|
8
|
+
// every change, the cookie is written on every `setSidebarOpen` (upstream `setOpen`).
|
|
9
|
+
// - `useIsMobile` → `isMobile` signal, `false` on the server; nothing runs at load (resumed pages stay cold):
|
|
10
|
+
// it is re-read on every toggle and by the media listener once the runtime runs (`MOBILE_BREAKPOINT` 768, as
|
|
11
|
+
// upstream). The mobile / desktop split before that is CSS (desktop root hidden below 768 px).
|
|
12
|
+
// - `sidebarCookieOpen` (Rivet): reads the persisted `sidebar_state` cookie for SSR (`defaultOpen`), the hook
|
|
13
|
+
// point upstream documents for server components (`cookies().get("sidebar_state")`).
|
|
14
|
+
// - Rivet extensions (feature set inspired by HeroUI Pro's public Sidebar docs; independent implementation):
|
|
15
|
+
// `toggleShortcut` (a `mod+b`-style string, `false` / `null` off; parsed at event time), `reduceMotion`,
|
|
16
|
+
// `closeMobileOnAction` — plain data in the region state.
|
|
17
|
+
import { createContext, signal, untrack, _regionState } from "@rivetjs/reactivity";
|
|
18
|
+
import { resumableContext } from "@rivetjs/runtime/resume-format";
|
|
19
|
+
import { controllable, controlledValue, setControlledValue } from "../interactions/controllable.js";
|
|
20
|
+
export const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
21
|
+
export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
22
|
+
export const SIDEBAR_WIDTH = "16rem";
|
|
23
|
+
export const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
24
|
+
export const SIDEBAR_WIDTH_ICON = "3rem";
|
|
25
|
+
export const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
26
|
+
/** Default `toggleShortcut`: Cmd+B / Ctrl+B (upstream's shortcut; `mod` = Cmd or Ctrl). */
|
|
27
|
+
export const SIDEBAR_TOGGLE_SHORTCUT = "mod+b";
|
|
28
|
+
/** `use-mobile.ts`: viewports narrower than this are mobile (the sidebar becomes a sheet). */
|
|
29
|
+
export const MOBILE_BREAKPOINT = 768;
|
|
30
|
+
/** The media query behind `isMobile` (`(max-width: 767px)`). */
|
|
31
|
+
export const MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT - 1}px)`;
|
|
32
|
+
/** Creates the sidebar state (region state: a re-created region of a resumed page keeps it). */
|
|
33
|
+
export function createSidebarState(props = {}) {
|
|
34
|
+
return _regionState(() => {
|
|
35
|
+
const control = controllable(props.open, props.defaultOpen ?? true, props.onOpenChange);
|
|
36
|
+
const shortcut = props.toggleShortcut === undefined ? SIDEBAR_TOGGLE_SHORTCUT : props.toggleShortcut || null;
|
|
37
|
+
return {
|
|
38
|
+
open: control.value,
|
|
39
|
+
control,
|
|
40
|
+
openMobile: signal(false),
|
|
41
|
+
isMobile: signal(false),
|
|
42
|
+
shortcut,
|
|
43
|
+
reduceMotion: !!props.reduceMotion,
|
|
44
|
+
closeMobileOnAction: props.closeMobileOnAction ?? false,
|
|
45
|
+
side: props.side,
|
|
46
|
+
variant: props.variant,
|
|
47
|
+
collapsible: props.collapsible,
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** `"expanded"` / `"collapsed"` (upstream `state`; `data-state`). */
|
|
52
|
+
export const sidebarStateName = (state) => (state.open() ? "expanded" : "collapsed");
|
|
53
|
+
/** Writes the persisted state cookie (upstream: in `setOpen`). */
|
|
54
|
+
export function writeSidebarCookie(open) {
|
|
55
|
+
if (typeof document === "undefined")
|
|
56
|
+
return;
|
|
57
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
58
|
+
}
|
|
59
|
+
/** Upstream `setOpen`: a value or an updater; calls `onOpenChange` (controlled) or sets the state, then writes the cookie. */
|
|
60
|
+
export function setSidebarOpen(state, value) {
|
|
61
|
+
untrack(() => {
|
|
62
|
+
const openState = typeof value === "function" ? value(controlledValue(state.control)) : value;
|
|
63
|
+
setControlledValue(state.control, openState);
|
|
64
|
+
writeSidebarCookie(openState);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Upstream `setOpenMobile`. */
|
|
68
|
+
export function setSidebarOpenMobile(state, value) {
|
|
69
|
+
untrack(() => state.openMobile.set(typeof value === "function" ? value(state.openMobile()) : value));
|
|
70
|
+
}
|
|
71
|
+
/** Upstream `toggleSidebar`: the mobile sheet on mobile, else the desktop sidebar (re-reads the viewport first). */
|
|
72
|
+
export function toggleSidebar(state) {
|
|
73
|
+
updateSidebarIsMobile(state);
|
|
74
|
+
if (untrack(state.isMobile))
|
|
75
|
+
setSidebarOpenMobile(state, (open) => !open);
|
|
76
|
+
else
|
|
77
|
+
setSidebarOpen(state, (open) => !open);
|
|
78
|
+
}
|
|
79
|
+
// Shortcut events already handled (the provider's delegated `keydown` + the window listener see the same event).
|
|
80
|
+
const handledShortcuts = new WeakSet();
|
|
81
|
+
const SHORTCUT_MODIFIERS = new Set(["mod", "cmd", "command", "meta", "ctrl", "control", "shift", "alt", "option"]);
|
|
82
|
+
/**
|
|
83
|
+
* Rivet: parses a shortcut string (`"mod+b"`, `"mod+shift+s"`, `"ctrl+alt+k"`; case-insensitive, `+` separated, the
|
|
84
|
+
* last part is the key; a lone `+` key is written `"mod++"`). `null` for an empty / modifier-only string.
|
|
85
|
+
*/
|
|
86
|
+
export function parseSidebarShortcut(shortcut) {
|
|
87
|
+
const parts = shortcut.toLowerCase().trim().split("+");
|
|
88
|
+
// "mod++" → ["mod", "", ""]: the key is "+".
|
|
89
|
+
if (parts.length > 1 && parts[parts.length - 1] === "" && parts[parts.length - 2] === "")
|
|
90
|
+
parts.splice(-2, 2, "+");
|
|
91
|
+
const key = parts.pop()?.trim() ?? "";
|
|
92
|
+
if (!key || SHORTCUT_MODIFIERS.has(key))
|
|
93
|
+
return null;
|
|
94
|
+
const spec = { key, mod: false, meta: false, ctrl: false, shift: false, alt: false };
|
|
95
|
+
for (const raw of parts) {
|
|
96
|
+
const part = raw.trim();
|
|
97
|
+
if (part === "mod")
|
|
98
|
+
spec.mod = true;
|
|
99
|
+
else if (part === "cmd" || part === "command" || part === "meta")
|
|
100
|
+
spec.meta = true;
|
|
101
|
+
else if (part === "ctrl" || part === "control")
|
|
102
|
+
spec.ctrl = true;
|
|
103
|
+
else if (part === "shift")
|
|
104
|
+
spec.shift = true;
|
|
105
|
+
else if (part === "alt" || part === "option")
|
|
106
|
+
spec.alt = true;
|
|
107
|
+
else
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return spec;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Rivet: whether `event` is the shortcut. Shift / Alt must match exactly; `mod` takes Cmd or Ctrl, explicit `cmd` /
|
|
114
|
+
* `ctrl` require that key (and no other Cmd / Ctrl than the ones listed). The key compares case-insensitively with
|
|
115
|
+
* `event.key`, or with the physical `event.code` for letters / digits (Alt and Shift change `key` on some layouts).
|
|
116
|
+
*/
|
|
117
|
+
export function matchesSidebarShortcut(event, spec) {
|
|
118
|
+
if (event.shiftKey !== spec.shift || event.altKey !== spec.alt)
|
|
119
|
+
return false;
|
|
120
|
+
if (spec.mod) {
|
|
121
|
+
if (!event.metaKey && !event.ctrlKey)
|
|
122
|
+
return false;
|
|
123
|
+
if (spec.meta && !event.metaKey)
|
|
124
|
+
return false;
|
|
125
|
+
if (spec.ctrl && !event.ctrlKey)
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
else if (event.metaKey !== spec.meta || event.ctrlKey !== spec.ctrl)
|
|
129
|
+
return false;
|
|
130
|
+
const key = (event.key ?? "").toLowerCase();
|
|
131
|
+
if (key === spec.key)
|
|
132
|
+
return true;
|
|
133
|
+
const code = event.code ?? "";
|
|
134
|
+
return spec.key.length === 1 && (code === "Key" + spec.key.toUpperCase() || code === "Digit" + spec.key);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Upstream window `keydown` listener: the toggle shortcut (default Cmd+B / Ctrl+B) toggles the sidebar. Called by the
|
|
138
|
+
* provider's delegated `keydown` (works on a cold resumed page) and by its window listener (attached once the runtime
|
|
139
|
+
* runs); an event is handled once. `toggleShortcut={false}` turns it off.
|
|
140
|
+
*/
|
|
141
|
+
export function sidebarShortcutKeyDown(event, state) {
|
|
142
|
+
if (handledShortcuts.has(event) || !state.shortcut)
|
|
143
|
+
return;
|
|
144
|
+
const spec = parseSidebarShortcut(state.shortcut);
|
|
145
|
+
if (spec && matchesSidebarShortcut(event, spec)) {
|
|
146
|
+
handledShortcuts.add(event);
|
|
147
|
+
event.preventDefault();
|
|
148
|
+
toggleSidebar(state);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** Rivet: whether sidebar animations should be skipped (`reduceMotion`, or the user's `prefers-reduced-motion`). */
|
|
152
|
+
export function sidebarReducedMotion(reduceMotion) {
|
|
153
|
+
if (reduceMotion)
|
|
154
|
+
return true;
|
|
155
|
+
return typeof window !== "undefined" && !!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
|
|
156
|
+
}
|
|
157
|
+
/** Rivet `closeMobileOnAction`: closes the mobile sheet after a menu action when it is open. */
|
|
158
|
+
export function closeSidebarMobileOnAction(state, close) {
|
|
159
|
+
if ((close ?? state.closeMobileOnAction) && untrack(state.openMobile))
|
|
160
|
+
setSidebarOpenMobile(state, false);
|
|
161
|
+
}
|
|
162
|
+
/** Whether the viewport is mobile right now (`< MOBILE_BREAKPOINT`); `false` on the server. */
|
|
163
|
+
export function sidebarViewportIsMobile() {
|
|
164
|
+
return typeof window !== "undefined" && window.innerWidth < MOBILE_BREAKPOINT;
|
|
165
|
+
}
|
|
166
|
+
/** `use-mobile.ts` `onChange`: re-reads the viewport width (no write when unchanged). */
|
|
167
|
+
export function updateSidebarIsMobile(state) {
|
|
168
|
+
if (typeof window === "undefined")
|
|
169
|
+
return;
|
|
170
|
+
const mobile = sidebarViewportIsMobile();
|
|
171
|
+
if (untrack(state.isMobile) !== mobile)
|
|
172
|
+
state.isMobile.set(mobile);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Rivet: the persisted open state for SSR. Pass a cookie header (`request.headers.get("cookie")`), a cookie map
|
|
176
|
+
* (`RequestEvent.cookies` of `@rivetjs/router`) or the cookie value; `undefined` when absent / unparsable.
|
|
177
|
+
* Use: `defaultOpen={sidebarCookieOpen(cookies) ?? true}`.
|
|
178
|
+
*/
|
|
179
|
+
export function sidebarCookieOpen(source) {
|
|
180
|
+
if (source == null)
|
|
181
|
+
return undefined;
|
|
182
|
+
let value;
|
|
183
|
+
if (typeof source === "string") {
|
|
184
|
+
if (source === "true" || source === "false")
|
|
185
|
+
value = source;
|
|
186
|
+
else
|
|
187
|
+
for (const part of source.split(";")) {
|
|
188
|
+
const at = part.indexOf("=");
|
|
189
|
+
if (at > 0 && part.slice(0, at).trim() === SIDEBAR_COOKIE_NAME) {
|
|
190
|
+
value = part.slice(at + 1).trim();
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else
|
|
196
|
+
value = source.get(SIDEBAR_COOKIE_NAME);
|
|
197
|
+
return value === "true" ? true : value === "false" ? false : undefined;
|
|
198
|
+
}
|
|
199
|
+
// Contexts (here, not in index.tsx: ./pages.tsx reads them without index.tsx importing the pages code — a page without
|
|
200
|
+
// SidebarPages fetches no pages chunk, and no extra chunk either).
|
|
201
|
+
/** The sidebar state of the nearest SidebarProvider (serializable). */
|
|
202
|
+
export const SidebarContext = resumableContext(createContext(null, { id: "rv-sidebar" }));
|
|
203
|
+
/** Rivet: the nearest group / menu options (`rv-sidebar-options`). */
|
|
204
|
+
export const SidebarMenuOptionsContext = resumableContext(createContext(null, { id: "rv-sidebar-options" }));
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { MoveEndEvent, MoveMoveEvent, MoveStartEvent } from "../interactions/move.jsx";
|
|
2
|
+
import { type MaybeAccessor } from "../interactions/utils.js";
|
|
3
|
+
import { type Orientation, type SliderProps, type SliderState } from "./state.js";
|
|
4
|
+
type Bag = Record<string, unknown>;
|
|
5
|
+
export interface AriaSliderProps<T = number | number[]> extends SliderProps<T> {
|
|
6
|
+
id?: string;
|
|
7
|
+
/** The content of the visible label (RA `label`; truthy = a label renders). */
|
|
8
|
+
label?: unknown;
|
|
9
|
+
"aria-label"?: string;
|
|
10
|
+
"aria-labelledby"?: string;
|
|
11
|
+
"aria-describedby"?: string;
|
|
12
|
+
"aria-details"?: string;
|
|
13
|
+
/** Rivet: text direction (RA `useLocale().direction`). */
|
|
14
|
+
direction?: MaybeAccessor<"ltr" | "rtl" | undefined>;
|
|
15
|
+
}
|
|
16
|
+
export interface SliderAria {
|
|
17
|
+
/** Props for the label element. */
|
|
18
|
+
labelProps: Bag;
|
|
19
|
+
/** Props for the root element of the slider component; groups slider inputs. */
|
|
20
|
+
groupProps: Bag;
|
|
21
|
+
/** Props for the track element. */
|
|
22
|
+
trackProps: Bag;
|
|
23
|
+
/** Props for the output element, displaying the value of the slider thumbs. */
|
|
24
|
+
outputProps: Bag;
|
|
25
|
+
}
|
|
26
|
+
/** RA `sliderData` entry: the label id (thumb ids derive from it) and the slider's describedby / details. */
|
|
27
|
+
export interface SliderData {
|
|
28
|
+
id: string;
|
|
29
|
+
"aria-describedby"?: string;
|
|
30
|
+
"aria-details"?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function getSliderThumbId(state: SliderState, index: number): string;
|
|
33
|
+
/**
|
|
34
|
+
* Provides the behavior and accessibility implementation for a slider component representing one or
|
|
35
|
+
* more values (RA `useSlider`). The track element (handler `currentTarget`) provides the "length" of the
|
|
36
|
+
* track and accepts click and drag motions: the closest thumb follows them.
|
|
37
|
+
*/
|
|
38
|
+
export declare function sliderProps<T extends number | number[]>(props: AriaSliderProps<T>, state: SliderState): SliderAria;
|
|
39
|
+
/** RA label `onClick`: Safari does not focus `<input type="range">` on a label click; focus the first thumb (focus ring shown). */
|
|
40
|
+
export declare function sliderLabelClick(event: MouseEvent, state: SliderState): void;
|
|
41
|
+
/** RA track `onMouseDown`. */
|
|
42
|
+
export declare function sliderTrackMouseDown(e: MouseEvent, props: AriaSliderProps<any>, state: SliderState, track: Element): void;
|
|
43
|
+
/** RA track `onPointerDown`. */
|
|
44
|
+
export declare function sliderTrackPointerDown(e: PointerEvent, props: AriaSliderProps<any>, state: SliderState, track: Element): void;
|
|
45
|
+
/** RA track `onTouchStart`. */
|
|
46
|
+
export declare function sliderTrackTouchStart(e: TouchEvent, props: AriaSliderProps<any>, state: SliderState, track: Element): void;
|
|
47
|
+
/** RA track useMove `onMoveStart`. */
|
|
48
|
+
export declare function sliderTrackMoveStart(_e: MoveStartEvent, state: SliderState): void;
|
|
49
|
+
/** RA track useMove `onMove`. */
|
|
50
|
+
export declare function sliderTrackMove({ deltaX, deltaY }: MoveMoveEvent, props: AriaSliderProps<any>, state: SliderState, track: Element | null): void;
|
|
51
|
+
/** RA track useMove `onMoveEnd`. */
|
|
52
|
+
export declare function sliderTrackMoveEnd(_e: MoveEndEvent, state: SliderState): void;
|
|
53
|
+
export interface AriaSliderThumbProps {
|
|
54
|
+
/**
|
|
55
|
+
* The orientation of the Slider.
|
|
56
|
+
*
|
|
57
|
+
* @deprecated - pass to the slider instead.
|
|
58
|
+
* @default 'horizontal'
|
|
59
|
+
*/
|
|
60
|
+
orientation?: Orientation;
|
|
61
|
+
/** Whether the Thumb is disabled (a value, or an accessor that stays live). */
|
|
62
|
+
isDisabled?: MaybeAccessor<boolean | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Index of the thumb within the slider.
|
|
65
|
+
*
|
|
66
|
+
* @default 0
|
|
67
|
+
*/
|
|
68
|
+
index?: number;
|
|
69
|
+
/** @deprecated */
|
|
70
|
+
isRequired?: boolean;
|
|
71
|
+
/** @deprecated */
|
|
72
|
+
isInvalid?: boolean;
|
|
73
|
+
/** @deprecated */
|
|
74
|
+
validationState?: "valid" | "invalid";
|
|
75
|
+
/** The content of the thumb's visible label (truthy = a label renders). */
|
|
76
|
+
label?: unknown;
|
|
77
|
+
/** Whether the element should receive focus on render. */
|
|
78
|
+
autoFocus?: boolean;
|
|
79
|
+
name?: string;
|
|
80
|
+
form?: string;
|
|
81
|
+
"aria-label"?: string;
|
|
82
|
+
"aria-labelledby"?: string;
|
|
83
|
+
"aria-describedby"?: string;
|
|
84
|
+
"aria-details"?: string;
|
|
85
|
+
"aria-errormessage"?: string;
|
|
86
|
+
onFocus?: (e: FocusEvent) => void;
|
|
87
|
+
onBlur?: (e: FocusEvent) => void;
|
|
88
|
+
onFocusChange?: (isFocused: boolean) => void;
|
|
89
|
+
onKeyDown?: (e: KeyboardEvent) => void;
|
|
90
|
+
onKeyUp?: (e: KeyboardEvent) => void;
|
|
91
|
+
/** Rivet: text direction (RA `useLocale().direction`). */
|
|
92
|
+
direction?: MaybeAccessor<"ltr" | "rtl" | undefined>;
|
|
93
|
+
}
|
|
94
|
+
export interface AriaSliderThumbOptions extends AriaSliderThumbProps {
|
|
95
|
+
/** The track element (RA `trackRef`). */
|
|
96
|
+
trackRef: () => Element | null | undefined;
|
|
97
|
+
/** The thumb's input element (RA `inputRef`); default: found by id. */
|
|
98
|
+
inputRef?: () => HTMLInputElement | null | undefined;
|
|
99
|
+
}
|
|
100
|
+
export interface SliderThumbAria {
|
|
101
|
+
/** Props for the root thumb element; handles the dragging motion. */
|
|
102
|
+
thumbProps: Bag;
|
|
103
|
+
/** Props for the visually hidden range input element. */
|
|
104
|
+
inputProps: Bag;
|
|
105
|
+
/** Props for the label element for this thumb (optional). */
|
|
106
|
+
labelProps: Bag;
|
|
107
|
+
/** Whether this thumb is currently being dragged. */
|
|
108
|
+
isDragging: () => boolean;
|
|
109
|
+
/** Whether the thumb is currently focused. */
|
|
110
|
+
isFocused: () => boolean;
|
|
111
|
+
/** Whether the thumb is disabled (at creation; `isSliderThumbDisabled(opts, state)` reads the current value). */
|
|
112
|
+
isDisabled: boolean;
|
|
113
|
+
}
|
|
114
|
+
/** Whether the thumb is disabled now (its own or the slider's `isDisabled`, live accessors read). */
|
|
115
|
+
export declare const isSliderThumbDisabled: (opts: AriaSliderThumbOptions, state: SliderState) => boolean;
|
|
116
|
+
/** Provides behavior and accessibility for a thumb of a slider component (RA `useSliderThumb`). */
|
|
117
|
+
export declare function sliderThumbProps(opts: AriaSliderThumbOptions, state: SliderState): SliderThumbAria;
|
|
118
|
+
/** keydown of the thumb (RA useKeyboard shortcuts PageUp / PageDown / Home / End; arrows go through useMove). */
|
|
119
|
+
export declare function sliderThumbKeyDown(e: KeyboardEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
120
|
+
/** RA thumb useMove `onMoveStart`. */
|
|
121
|
+
export declare function sliderThumbMoveStart(_e: MoveStartEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
122
|
+
/** RA thumb useMove `onMove` (pointer drag, or arrow keys with `pointerType: 'keyboard'`). */
|
|
123
|
+
export declare function sliderThumbMove({ deltaX, deltaY, pointerType, shiftKey }: MoveMoveEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
124
|
+
/** RA thumb useMove `onMoveEnd`. */
|
|
125
|
+
export declare function sliderThumbMoveEnd(_e: MoveEndEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
126
|
+
/** RA thumb `onMouseDown`. */
|
|
127
|
+
export declare function sliderThumbMouseDown(e: MouseEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
128
|
+
/** RA thumb `onPointerDown`. */
|
|
129
|
+
export declare function sliderThumbPointerDown(e: PointerEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
130
|
+
/** RA thumb `onTouchStart`. */
|
|
131
|
+
export declare function sliderThumbTouchStart(e: TouchEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
132
|
+
/** `change` / `input` of the range input: the browser moved the value (keyboard, assistive technology). */
|
|
133
|
+
export declare function sliderThumbInputChange(e: Event, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
134
|
+
/** focus of the range input (RA useFocusable: `setFocusedThumb(index)` + user focus events). */
|
|
135
|
+
export declare function sliderThumbFocus(e: FocusEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
136
|
+
/** blur of the range input. */
|
|
137
|
+
export declare function sliderThumbBlur(e: FocusEvent, opts: AriaSliderThumbOptions, state: SliderState): void;
|
|
138
|
+
/** keydown / keyup of the range input (RA useFocusable → useKeyboard with the user's handlers). */
|
|
139
|
+
export declare function sliderThumbInputKeyDown(e: KeyboardEvent, opts: AriaSliderThumbOptions, _state: SliderState): void;
|
|
140
|
+
export declare function sliderThumbInputKeyUp(e: KeyboardEvent, opts: AriaSliderThumbOptions, _state: SliderState): void;
|
|
141
|
+
export {};
|