@wardic/solid 0.0.0-stage → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +26 -2
- package/THIRD_PARTY_NOTICES.md +145 -0
- package/dist/browser/animation-controls.js +150 -0
- package/dist/browser/animation-controls.js.map +1 -0
- package/dist/browser/animation-frame.js +29 -0
- package/dist/browser/animation-frame.js.map +1 -0
- package/dist/browser/appear.js +727 -0
- package/dist/browser/appear.js.map +1 -0
- package/dist/browser/arc.js +21 -0
- package/dist/browser/arc.js.map +1 -0
- package/dist/browser/bridge.js +69 -0
- package/dist/browser/bridge.js.map +1 -0
- package/dist/browser/complete.js +30 -0
- package/dist/browser/complete.js.map +1 -0
- package/dist/browser/config.js +2 -0
- package/dist/browser/config.js.map +1 -0
- package/dist/browser/create-animate.js +41 -0
- package/dist/browser/create-animate.js.map +1 -0
- package/dist/browser/create-ward.js +1001 -0
- package/dist/browser/create-ward.js.map +1 -0
- package/dist/browser/cycle-index.js +17 -0
- package/dist/browser/cycle-index.js.map +1 -0
- package/dist/browser/cycle.js +31 -0
- package/dist/browser/cycle.js.map +1 -0
- package/dist/browser/directive.js +80 -0
- package/dist/browser/directive.js.map +1 -0
- package/dist/browser/drag-constraints.js +76 -0
- package/dist/browser/drag-constraints.js.map +1 -0
- package/dist/browser/drag-controls.js +51 -0
- package/dist/browser/drag-controls.js.map +1 -0
- package/dist/browser/drag-samples.js +40 -0
- package/dist/browser/drag-samples.js.map +1 -0
- package/dist/browser/drag-sensor.js +35 -0
- package/dist/browser/drag-sensor.js.map +1 -0
- package/dist/browser/drag-track.js +817 -0
- package/dist/browser/drag-track.js.map +1 -0
- package/dist/browser/drag-transition.js +56 -0
- package/dist/browser/drag-transition.js.map +1 -0
- package/dist/browser/drag.js +44 -0
- package/dist/browser/drag.js.map +1 -0
- package/dist/browser/element-style.js +67 -0
- package/dist/browser/element-style.js.map +1 -0
- package/dist/browser/element.js +353 -0
- package/dist/browser/element.js.map +1 -0
- package/dist/browser/feature-section.js +17 -0
- package/dist/browser/feature-section.js.map +1 -0
- package/dist/browser/feature.js +261 -0
- package/dist/browser/feature.js.map +1 -0
- package/dist/browser/features/all.js +10 -0
- package/dist/browser/features/all.js.map +1 -0
- package/dist/browser/features/colors.js +33 -0
- package/dist/browser/features/colors.js.map +1 -0
- package/dist/browser/features/dom-animation.js +7 -0
- package/dist/browser/features/dom-animation.js.map +1 -0
- package/dist/browser/features/dom-max.js +4 -0
- package/dist/browser/features/dom-max.js.map +1 -0
- package/dist/browser/features/drag.js +28 -0
- package/dist/browser/features/drag.js.map +1 -0
- package/dist/browser/features/focus.js +18 -0
- package/dist/browser/features/focus.js.map +1 -0
- package/dist/browser/features/hover.js +18 -0
- package/dist/browser/features/hover.js.map +1 -0
- package/dist/browser/features/in-view.js +18 -0
- package/dist/browser/features/in-view.js.map +1 -0
- package/dist/browser/features/input.js +30 -0
- package/dist/browser/features/input.js.map +1 -0
- package/dist/browser/features/keys.js +19 -0
- package/dist/browser/features/keys.js.map +1 -0
- package/dist/browser/features/layout.js +33 -0
- package/dist/browser/features/layout.js.map +1 -0
- package/dist/browser/features/pan.js +18 -0
- package/dist/browser/features/pan.js.map +1 -0
- package/dist/browser/features/press.js +12 -0
- package/dist/browser/features/press.js.map +1 -0
- package/dist/browser/focus-sensor.js +23 -0
- package/dist/browser/focus-sensor.js.map +1 -0
- package/dist/browser/frame-time.js +40 -0
- package/dist/browser/frame-time.js.map +1 -0
- package/dist/browser/gesture-callbacks.js +172 -0
- package/dist/browser/gesture-callbacks.js.map +1 -0
- package/dist/browser/gesture-features.js +29 -0
- package/dist/browser/gesture-features.js.map +1 -0
- package/dist/browser/gesture-info.js +43 -0
- package/dist/browser/gesture-info.js.map +1 -0
- package/dist/browser/hover-sensor.js +29 -0
- package/dist/browser/hover-sensor.js.map +1 -0
- package/dist/browser/imperative.js +614 -0
- package/dist/browser/imperative.js.map +1 -0
- package/dist/browser/index.js +165 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/instant.js +51 -0
- package/dist/browser/instant.js.map +1 -0
- package/dist/browser/layout-group.js +27 -0
- package/dist/browser/layout-group.js.map +1 -0
- package/dist/browser/layout-member.js +362 -0
- package/dist/browser/layout-member.js.map +1 -0
- package/dist/browser/layout-projection.js +19 -0
- package/dist/browser/layout-projection.js.map +1 -0
- package/dist/browser/layout.js +91 -0
- package/dist/browser/layout.js.map +1 -0
- package/dist/browser/live-style.js +313 -0
- package/dist/browser/live-style.js.map +1 -0
- package/dist/browser/live-value.js +252 -0
- package/dist/browser/live-value.js.map +1 -0
- package/dist/browser/motion-props.js +172 -0
- package/dist/browser/motion-props.js.map +1 -0
- package/dist/browser/owner-scope.js +29 -0
- package/dist/browser/owner-scope.js.map +1 -0
- package/dist/browser/page-point.js +92 -0
- package/dist/browser/page-point.js.map +1 -0
- package/dist/browser/presence-controller.js +1324 -0
- package/dist/browser/presence-controller.js.map +1 -0
- package/dist/browser/presence-record.js +27 -0
- package/dist/browser/presence-record.js.map +1 -0
- package/dist/browser/presence.js +207 -0
- package/dist/browser/presence.js.map +1 -0
- package/dist/browser/press-sensor.js +30 -0
- package/dist/browser/press-sensor.js.map +1 -0
- package/dist/browser/press.js +24 -0
- package/dist/browser/press.js.map +1 -0
- package/dist/browser/provider.js +445 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/reactivity.js +9 -0
- package/dist/browser/reactivity.js.map +1 -0
- package/dist/browser/reorder-input.js +46 -0
- package/dist/browser/reorder-input.js.map +1 -0
- package/dist/browser/reorder.js +543 -0
- package/dist/browser/reorder.js.map +1 -0
- package/dist/browser/retarget-legs.js +1019 -0
- package/dist/browser/retarget-legs.js.map +1 -0
- package/dist/browser/runtime.js +249 -0
- package/dist/browser/runtime.js.map +1 -0
- package/dist/browser/sensors.js +172 -0
- package/dist/browser/sensors.js.map +1 -0
- package/dist/browser/server-interpolators.js +20 -0
- package/dist/browser/server-interpolators.js.map +1 -0
- package/dist/browser/server.js +20 -0
- package/dist/browser/server.js.map +1 -0
- package/dist/browser/solid-reactivity.js +26 -0
- package/dist/browser/solid-reactivity.js.map +1 -0
- package/dist/browser/spine.js +2939 -0
- package/dist/browser/spine.js.map +1 -0
- package/dist/browser/stagger.js +13 -0
- package/dist/browser/stagger.js.map +1 -0
- package/dist/browser/unstable/v2/bridge.js +76 -0
- package/dist/browser/unstable/v2/bridge.js.map +1 -0
- package/dist/browser/unstable/v2/complete.js +29 -0
- package/dist/browser/unstable/v2/complete.js.map +1 -0
- package/dist/browser/unstable/v2/config-view.js +111 -0
- package/dist/browser/unstable/v2/config-view.js.map +1 -0
- package/dist/browser/unstable/v2/create-animate.js +102 -0
- package/dist/browser/unstable/v2/create-animate.js.map +1 -0
- package/dist/browser/unstable/v2/cycle.js +30 -0
- package/dist/browser/unstable/v2/cycle.js.map +1 -0
- package/dist/browser/unstable/v2/drag-sensor.js +34 -0
- package/dist/browser/unstable/v2/drag-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/element.js +393 -0
- package/dist/browser/unstable/v2/element.js.map +1 -0
- package/dist/browser/unstable/v2/feature-section.js +27 -0
- package/dist/browser/unstable/v2/feature-section.js.map +1 -0
- package/dist/browser/unstable/v2/focus-sensor.js +23 -0
- package/dist/browser/unstable/v2/focus-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/hover-sensor.js +28 -0
- package/dist/browser/unstable/v2/hover-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/index.js +114 -0
- package/dist/browser/unstable/v2/index.js.map +1 -0
- package/dist/browser/unstable/v2/layout-projection.js +18 -0
- package/dist/browser/unstable/v2/layout-projection.js.map +1 -0
- package/dist/browser/unstable/v2/layout.js +71 -0
- package/dist/browser/unstable/v2/layout.js.map +1 -0
- package/dist/browser/unstable/v2/lifecycle.js +455 -0
- package/dist/browser/unstable/v2/lifecycle.js.map +1 -0
- package/dist/browser/unstable/v2/live-value.js +264 -0
- package/dist/browser/unstable/v2/live-value.js.map +1 -0
- package/dist/browser/unstable/v2/presence-handle.js +146 -0
- package/dist/browser/unstable/v2/presence-handle.js.map +1 -0
- package/dist/browser/unstable/v2/presence-hooks.js +142 -0
- package/dist/browser/unstable/v2/presence-hooks.js.map +1 -0
- package/dist/browser/unstable/v2/presence.js +124 -0
- package/dist/browser/unstable/v2/presence.js.map +1 -0
- package/dist/browser/unstable/v2/press-sensor.js +29 -0
- package/dist/browser/unstable/v2/press-sensor.js.map +1 -0
- package/dist/browser/unstable/v2/provider.js +457 -0
- package/dist/browser/unstable/v2/provider.js.map +1 -0
- package/dist/browser/unstable/v2/reorder.js +663 -0
- package/dist/browser/unstable/v2/reorder.js.map +1 -0
- package/dist/browser/unstable/v2/sensors.js +138 -0
- package/dist/browser/unstable/v2/sensors.js.map +1 -0
- package/dist/browser/unstable/v2/solid-reactivity.js +82 -0
- package/dist/browser/unstable/v2/solid-reactivity.js.map +1 -0
- package/dist/browser/unstable/v2/variant-node.js +395 -0
- package/dist/browser/unstable/v2/variant-node.js.map +1 -0
- package/dist/browser/unstable/v2/w.js +23 -0
- package/dist/browser/unstable/v2/w.js.map +1 -0
- package/dist/browser/unstable/v2/waiters.js +185 -0
- package/dist/browser/unstable/v2/waiters.js.map +1 -0
- package/dist/browser/unstable/v2/ward.js +1620 -0
- package/dist/browser/unstable/v2/ward.js.map +1 -0
- package/dist/browser/unstable/v2/wardic-config.js +40 -0
- package/dist/browser/unstable/v2/wardic-config.js.map +1 -0
- package/dist/browser/unstable/v2/wardic.js +16 -0
- package/dist/browser/unstable/v2/wardic.js.map +1 -0
- package/dist/browser/variant-node.js +308 -0
- package/dist/browser/variant-node.js.map +1 -0
- package/dist/browser/variant-target.js +224 -0
- package/dist/browser/variant-target.js.map +1 -0
- package/dist/browser/variant-tree.js +394 -0
- package/dist/browser/variant-tree.js.map +1 -0
- package/dist/browser/variants.js +43 -0
- package/dist/browser/variants.js.map +1 -0
- package/dist/browser/w.js +25 -0
- package/dist/browser/w.js.map +1 -0
- package/dist/browser/ward-keys.js +2 -0
- package/dist/browser/ward-keys.js.map +1 -0
- package/dist/browser/wardic-component.js +74 -0
- package/dist/browser/wardic-component.js.map +1 -0
- package/dist/browser/wardic-config-value.js +91 -0
- package/dist/browser/wardic-config-value.js.map +1 -0
- package/dist/browser/wardic-config.js +42 -0
- package/dist/browser/wardic-config.js.map +1 -0
- package/dist/browser/wardic.js +31 -0
- package/dist/browser/wardic.js.map +1 -0
- package/dist/server/animation-controls.js +150 -0
- package/dist/server/animation-controls.js.map +1 -0
- package/dist/server/animation-frame.js +29 -0
- package/dist/server/animation-frame.js.map +1 -0
- package/dist/server/appear.js +727 -0
- package/dist/server/appear.js.map +1 -0
- package/dist/server/arc.js +21 -0
- package/dist/server/arc.js.map +1 -0
- package/dist/server/bridge.js +69 -0
- package/dist/server/bridge.js.map +1 -0
- package/dist/server/complete.js +30 -0
- package/dist/server/complete.js.map +1 -0
- package/dist/server/config.js +2 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/create-animate.js +41 -0
- package/dist/server/create-animate.js.map +1 -0
- package/dist/server/create-ward.js +1001 -0
- package/dist/server/create-ward.js.map +1 -0
- package/dist/server/cycle-index.js +17 -0
- package/dist/server/cycle-index.js.map +1 -0
- package/dist/server/cycle.js +31 -0
- package/dist/server/cycle.js.map +1 -0
- package/dist/server/directive.js +80 -0
- package/dist/server/directive.js.map +1 -0
- package/dist/server/drag-constraints.js +76 -0
- package/dist/server/drag-constraints.js.map +1 -0
- package/dist/server/drag-controls.js +51 -0
- package/dist/server/drag-controls.js.map +1 -0
- package/dist/server/drag-samples.js +40 -0
- package/dist/server/drag-samples.js.map +1 -0
- package/dist/server/drag-sensor.js +35 -0
- package/dist/server/drag-sensor.js.map +1 -0
- package/dist/server/drag-track.js +817 -0
- package/dist/server/drag-track.js.map +1 -0
- package/dist/server/drag-transition.js +56 -0
- package/dist/server/drag-transition.js.map +1 -0
- package/dist/server/drag.js +44 -0
- package/dist/server/drag.js.map +1 -0
- package/dist/server/element-style.js +67 -0
- package/dist/server/element-style.js.map +1 -0
- package/dist/server/element.js +353 -0
- package/dist/server/element.js.map +1 -0
- package/dist/server/feature-section.js +17 -0
- package/dist/server/feature-section.js.map +1 -0
- package/dist/server/feature.js +261 -0
- package/dist/server/feature.js.map +1 -0
- package/dist/server/features/all.js +10 -0
- package/dist/server/features/all.js.map +1 -0
- package/dist/server/features/colors.js +33 -0
- package/dist/server/features/colors.js.map +1 -0
- package/dist/server/features/dom-animation.js +7 -0
- package/dist/server/features/dom-animation.js.map +1 -0
- package/dist/server/features/dom-max.js +4 -0
- package/dist/server/features/dom-max.js.map +1 -0
- package/dist/server/features/drag.js +28 -0
- package/dist/server/features/drag.js.map +1 -0
- package/dist/server/features/focus.js +18 -0
- package/dist/server/features/focus.js.map +1 -0
- package/dist/server/features/hover.js +18 -0
- package/dist/server/features/hover.js.map +1 -0
- package/dist/server/features/in-view.js +18 -0
- package/dist/server/features/in-view.js.map +1 -0
- package/dist/server/features/input.js +30 -0
- package/dist/server/features/input.js.map +1 -0
- package/dist/server/features/keys.js +19 -0
- package/dist/server/features/keys.js.map +1 -0
- package/dist/server/features/layout.js +33 -0
- package/dist/server/features/layout.js.map +1 -0
- package/dist/server/features/pan.js +18 -0
- package/dist/server/features/pan.js.map +1 -0
- package/dist/server/features/press.js +12 -0
- package/dist/server/features/press.js.map +1 -0
- package/dist/server/focus-sensor.js +23 -0
- package/dist/server/focus-sensor.js.map +1 -0
- package/dist/server/frame-time.js +40 -0
- package/dist/server/frame-time.js.map +1 -0
- package/dist/server/gesture-callbacks.js +172 -0
- package/dist/server/gesture-callbacks.js.map +1 -0
- package/dist/server/gesture-features.js +29 -0
- package/dist/server/gesture-features.js.map +1 -0
- package/dist/server/gesture-info.js +43 -0
- package/dist/server/gesture-info.js.map +1 -0
- package/dist/server/hover-sensor.js +29 -0
- package/dist/server/hover-sensor.js.map +1 -0
- package/dist/server/imperative.js +614 -0
- package/dist/server/imperative.js.map +1 -0
- package/dist/server/index.js +165 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/instant.js +51 -0
- package/dist/server/instant.js.map +1 -0
- package/dist/server/layout-group.js +27 -0
- package/dist/server/layout-group.js.map +1 -0
- package/dist/server/layout-member.js +362 -0
- package/dist/server/layout-member.js.map +1 -0
- package/dist/server/layout-projection.js +19 -0
- package/dist/server/layout-projection.js.map +1 -0
- package/dist/server/layout.js +90 -0
- package/dist/server/layout.js.map +1 -0
- package/dist/server/live-style.js +313 -0
- package/dist/server/live-style.js.map +1 -0
- package/dist/server/live-value.js +252 -0
- package/dist/server/live-value.js.map +1 -0
- package/dist/server/motion-props.js +172 -0
- package/dist/server/motion-props.js.map +1 -0
- package/dist/server/owner-scope.js +29 -0
- package/dist/server/owner-scope.js.map +1 -0
- package/dist/server/page-point.js +92 -0
- package/dist/server/page-point.js.map +1 -0
- package/dist/server/presence-controller.js +1324 -0
- package/dist/server/presence-controller.js.map +1 -0
- package/dist/server/presence-record.js +27 -0
- package/dist/server/presence-record.js.map +1 -0
- package/dist/server/presence.js +207 -0
- package/dist/server/presence.js.map +1 -0
- package/dist/server/press-sensor.js +30 -0
- package/dist/server/press-sensor.js.map +1 -0
- package/dist/server/press.js +24 -0
- package/dist/server/press.js.map +1 -0
- package/dist/server/provider.js +439 -0
- package/dist/server/provider.js.map +1 -0
- package/dist/server/reactivity.js +9 -0
- package/dist/server/reactivity.js.map +1 -0
- package/dist/server/reorder-input.js +46 -0
- package/dist/server/reorder-input.js.map +1 -0
- package/dist/server/reorder.js +543 -0
- package/dist/server/reorder.js.map +1 -0
- package/dist/server/retarget-legs.js +1019 -0
- package/dist/server/retarget-legs.js.map +1 -0
- package/dist/server/runtime.js +249 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/sensors.js +172 -0
- package/dist/server/sensors.js.map +1 -0
- package/dist/server/server-interpolators.js +20 -0
- package/dist/server/server-interpolators.js.map +1 -0
- package/dist/server/server.js +20 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/solid-reactivity.js +26 -0
- package/dist/server/solid-reactivity.js.map +1 -0
- package/dist/server/spine.js +2939 -0
- package/dist/server/spine.js.map +1 -0
- package/dist/server/stagger.js +13 -0
- package/dist/server/stagger.js.map +1 -0
- package/dist/server/unstable/v2/bridge.js +76 -0
- package/dist/server/unstable/v2/bridge.js.map +1 -0
- package/dist/server/unstable/v2/complete.js +29 -0
- package/dist/server/unstable/v2/complete.js.map +1 -0
- package/dist/server/unstable/v2/config-view.js +111 -0
- package/dist/server/unstable/v2/config-view.js.map +1 -0
- package/dist/server/unstable/v2/create-animate.js +102 -0
- package/dist/server/unstable/v2/create-animate.js.map +1 -0
- package/dist/server/unstable/v2/cycle.js +30 -0
- package/dist/server/unstable/v2/cycle.js.map +1 -0
- package/dist/server/unstable/v2/drag-sensor.js +34 -0
- package/dist/server/unstable/v2/drag-sensor.js.map +1 -0
- package/dist/server/unstable/v2/element.js +402 -0
- package/dist/server/unstable/v2/element.js.map +1 -0
- package/dist/server/unstable/v2/feature-section.js +27 -0
- package/dist/server/unstable/v2/feature-section.js.map +1 -0
- package/dist/server/unstable/v2/focus-sensor.js +23 -0
- package/dist/server/unstable/v2/focus-sensor.js.map +1 -0
- package/dist/server/unstable/v2/hover-sensor.js +28 -0
- package/dist/server/unstable/v2/hover-sensor.js.map +1 -0
- package/dist/server/unstable/v2/index.js +114 -0
- package/dist/server/unstable/v2/index.js.map +1 -0
- package/dist/server/unstable/v2/layout-projection.js +18 -0
- package/dist/server/unstable/v2/layout-projection.js.map +1 -0
- package/dist/server/unstable/v2/layout.js +88 -0
- package/dist/server/unstable/v2/layout.js.map +1 -0
- package/dist/server/unstable/v2/lifecycle.js +455 -0
- package/dist/server/unstable/v2/lifecycle.js.map +1 -0
- package/dist/server/unstable/v2/live-value.js +264 -0
- package/dist/server/unstable/v2/live-value.js.map +1 -0
- package/dist/server/unstable/v2/presence-handle.js +146 -0
- package/dist/server/unstable/v2/presence-handle.js.map +1 -0
- package/dist/server/unstable/v2/presence-hooks.js +142 -0
- package/dist/server/unstable/v2/presence-hooks.js.map +1 -0
- package/dist/server/unstable/v2/presence.js +142 -0
- package/dist/server/unstable/v2/presence.js.map +1 -0
- package/dist/server/unstable/v2/press-sensor.js +29 -0
- package/dist/server/unstable/v2/press-sensor.js.map +1 -0
- package/dist/server/unstable/v2/provider.js +475 -0
- package/dist/server/unstable/v2/provider.js.map +1 -0
- package/dist/server/unstable/v2/reorder.js +733 -0
- package/dist/server/unstable/v2/reorder.js.map +1 -0
- package/dist/server/unstable/v2/sensors.js +138 -0
- package/dist/server/unstable/v2/sensors.js.map +1 -0
- package/dist/server/unstable/v2/solid-reactivity.js +82 -0
- package/dist/server/unstable/v2/solid-reactivity.js.map +1 -0
- package/dist/server/unstable/v2/variant-node.js +395 -0
- package/dist/server/unstable/v2/variant-node.js.map +1 -0
- package/dist/server/unstable/v2/w.js +23 -0
- package/dist/server/unstable/v2/w.js.map +1 -0
- package/dist/server/unstable/v2/waiters.js +185 -0
- package/dist/server/unstable/v2/waiters.js.map +1 -0
- package/dist/server/unstable/v2/ward.js +1653 -0
- package/dist/server/unstable/v2/ward.js.map +1 -0
- package/dist/server/unstable/v2/wardic-config.js +49 -0
- package/dist/server/unstable/v2/wardic-config.js.map +1 -0
- package/dist/server/unstable/v2/wardic.js +16 -0
- package/dist/server/unstable/v2/wardic.js.map +1 -0
- package/dist/server/variant-node.js +308 -0
- package/dist/server/variant-node.js.map +1 -0
- package/dist/server/variant-target.js +224 -0
- package/dist/server/variant-target.js.map +1 -0
- package/dist/server/variant-tree.js +394 -0
- package/dist/server/variant-tree.js.map +1 -0
- package/dist/server/variants.js +43 -0
- package/dist/server/variants.js.map +1 -0
- package/dist/server/w.js +25 -0
- package/dist/server/w.js.map +1 -0
- package/dist/server/ward-keys.js +2 -0
- package/dist/server/ward-keys.js.map +1 -0
- package/dist/server/wardic-component.js +74 -0
- package/dist/server/wardic-component.js.map +1 -0
- package/dist/server/wardic-config-value.js +91 -0
- package/dist/server/wardic-config-value.js.map +1 -0
- package/dist/server/wardic-config.js +42 -0
- package/dist/server/wardic-config.js.map +1 -0
- package/dist/server/wardic.js +31 -0
- package/dist/server/wardic.js.map +1 -0
- package/dist/solid/animation-controls.d.ts +104 -0
- package/dist/solid/animation-controls.d.ts.map +1 -0
- package/dist/solid/animation-controls.js +129 -0
- package/dist/solid/animation-controls.js.map +1 -0
- package/dist/solid/animation-frame.d.ts +11 -0
- package/dist/solid/animation-frame.d.ts.map +1 -0
- package/dist/solid/animation-frame.js +31 -0
- package/dist/solid/animation-frame.js.map +1 -0
- package/dist/solid/appear.d.ts +205 -0
- package/dist/solid/appear.d.ts.map +1 -0
- package/dist/solid/appear.js +519 -0
- package/dist/solid/appear.js.map +1 -0
- package/dist/solid/arc.d.ts +25 -0
- package/dist/solid/arc.d.ts.map +1 -0
- package/dist/solid/arc.js +21 -0
- package/dist/solid/arc.js.map +1 -0
- package/dist/solid/bridge.d.ts +53 -0
- package/dist/solid/bridge.d.ts.map +1 -0
- package/dist/solid/bridge.js +66 -0
- package/dist/solid/bridge.js.map +1 -0
- package/dist/solid/complete.d.ts +31 -0
- package/dist/solid/complete.d.ts.map +1 -0
- package/dist/solid/complete.js +27 -0
- package/dist/solid/complete.js.map +1 -0
- package/dist/solid/config.d.ts +693 -0
- package/dist/solid/config.d.ts.map +1 -0
- package/dist/solid/config.js +2 -0
- package/dist/solid/config.js.map +1 -0
- package/dist/solid/create-animate.d.ts +17 -0
- package/dist/solid/create-animate.d.ts.map +1 -0
- package/dist/solid/create-animate.js +42 -0
- package/dist/solid/create-animate.js.map +1 -0
- package/dist/solid/create-ward.d.ts +278 -0
- package/dist/solid/create-ward.d.ts.map +1 -0
- package/dist/solid/create-ward.jsx +874 -0
- package/dist/solid/create-ward.jsx.map +1 -0
- package/dist/solid/cycle-index.d.ts +7 -0
- package/dist/solid/cycle-index.d.ts.map +1 -0
- package/dist/solid/cycle-index.js +17 -0
- package/dist/solid/cycle-index.js.map +1 -0
- package/dist/solid/cycle.d.ts +21 -0
- package/dist/solid/cycle.d.ts.map +1 -0
- package/dist/solid/cycle.js +31 -0
- package/dist/solid/cycle.js.map +1 -0
- package/dist/solid/directive.d.ts +21 -0
- package/dist/solid/directive.d.ts.map +1 -0
- package/dist/solid/directive.js +76 -0
- package/dist/solid/directive.js.map +1 -0
- package/dist/solid/drag-constraints.d.ts +46 -0
- package/dist/solid/drag-constraints.d.ts.map +1 -0
- package/dist/solid/drag-constraints.js +49 -0
- package/dist/solid/drag-constraints.js.map +1 -0
- package/dist/solid/drag-controls.d.ts +50 -0
- package/dist/solid/drag-controls.d.ts.map +1 -0
- package/dist/solid/drag-controls.js +51 -0
- package/dist/solid/drag-controls.js.map +1 -0
- package/dist/solid/drag-samples.d.ts +34 -0
- package/dist/solid/drag-samples.d.ts.map +1 -0
- package/dist/solid/drag-samples.js +28 -0
- package/dist/solid/drag-samples.js.map +1 -0
- package/dist/solid/drag-sensor.d.ts +23 -0
- package/dist/solid/drag-sensor.d.ts.map +1 -0
- package/dist/solid/drag-sensor.js +33 -0
- package/dist/solid/drag-sensor.js.map +1 -0
- package/dist/solid/drag-track.d.ts +227 -0
- package/dist/solid/drag-track.d.ts.map +1 -0
- package/dist/solid/drag-track.js +631 -0
- package/dist/solid/drag-track.js.map +1 -0
- package/dist/solid/drag-transition.d.ts +20 -0
- package/dist/solid/drag-transition.d.ts.map +1 -0
- package/dist/solid/drag-transition.js +31 -0
- package/dist/solid/drag-transition.js.map +1 -0
- package/dist/solid/drag.d.ts +23 -0
- package/dist/solid/drag.d.ts.map +1 -0
- package/dist/solid/drag.js +44 -0
- package/dist/solid/drag.js.map +1 -0
- package/dist/solid/element-style.d.ts +60 -0
- package/dist/solid/element-style.d.ts.map +1 -0
- package/dist/solid/element-style.js +50 -0
- package/dist/solid/element-style.js.map +1 -0
- package/dist/solid/element.d.ts +73 -0
- package/dist/solid/element.d.ts.map +1 -0
- package/dist/solid/element.jsx +326 -0
- package/dist/solid/element.jsx.map +1 -0
- package/dist/solid/feature-section.d.ts +18 -0
- package/dist/solid/feature-section.d.ts.map +1 -0
- package/dist/solid/feature-section.js +13 -0
- package/dist/solid/feature-section.js.map +1 -0
- package/dist/solid/feature.d.ts +114 -0
- package/dist/solid/feature.d.ts.map +1 -0
- package/dist/solid/feature.js +248 -0
- package/dist/solid/feature.js.map +1 -0
- package/dist/solid/features/all.d.ts +10 -0
- package/dist/solid/features/all.d.ts.map +1 -0
- package/dist/solid/features/all.js +10 -0
- package/dist/solid/features/all.js.map +1 -0
- package/dist/solid/features/colors.d.ts +12 -0
- package/dist/solid/features/colors.d.ts.map +1 -0
- package/dist/solid/features/colors.js +34 -0
- package/dist/solid/features/colors.js.map +1 -0
- package/dist/solid/features/dom-animation.d.ts +11 -0
- package/dist/solid/features/dom-animation.d.ts.map +1 -0
- package/dist/solid/features/dom-animation.js +7 -0
- package/dist/solid/features/dom-animation.js.map +1 -0
- package/dist/solid/features/dom-max.d.ts +10 -0
- package/dist/solid/features/dom-max.d.ts.map +1 -0
- package/dist/solid/features/dom-max.js +4 -0
- package/dist/solid/features/dom-max.js.map +1 -0
- package/dist/solid/features/drag.d.ts +5 -0
- package/dist/solid/features/drag.d.ts.map +1 -0
- package/dist/solid/features/drag.js +28 -0
- package/dist/solid/features/drag.js.map +1 -0
- package/dist/solid/features/focus.d.ts +5 -0
- package/dist/solid/features/focus.d.ts.map +1 -0
- package/dist/solid/features/focus.js +16 -0
- package/dist/solid/features/focus.js.map +1 -0
- package/dist/solid/features/hover.d.ts +5 -0
- package/dist/solid/features/hover.d.ts.map +1 -0
- package/dist/solid/features/hover.js +16 -0
- package/dist/solid/features/hover.js.map +1 -0
- package/dist/solid/features/in-view.d.ts +5 -0
- package/dist/solid/features/in-view.d.ts.map +1 -0
- package/dist/solid/features/in-view.js +16 -0
- package/dist/solid/features/in-view.js.map +1 -0
- package/dist/solid/features/input.d.ts +26 -0
- package/dist/solid/features/input.d.ts.map +1 -0
- package/dist/solid/features/input.js +31 -0
- package/dist/solid/features/input.js.map +1 -0
- package/dist/solid/features/keys.d.ts +70 -0
- package/dist/solid/features/keys.d.ts.map +1 -0
- package/dist/solid/features/keys.js +26 -0
- package/dist/solid/features/keys.js.map +1 -0
- package/dist/solid/features/layout.d.ts +32 -0
- package/dist/solid/features/layout.d.ts.map +1 -0
- package/dist/solid/features/layout.js +34 -0
- package/dist/solid/features/layout.js.map +1 -0
- package/dist/solid/features/pan.d.ts +5 -0
- package/dist/solid/features/pan.d.ts.map +1 -0
- package/dist/solid/features/pan.js +16 -0
- package/dist/solid/features/pan.js.map +1 -0
- package/dist/solid/features/press.d.ts +11 -0
- package/dist/solid/features/press.d.ts.map +1 -0
- package/dist/solid/features/press.js +10 -0
- package/dist/solid/features/press.js.map +1 -0
- package/dist/solid/focus-sensor.d.ts +19 -0
- package/dist/solid/focus-sensor.d.ts.map +1 -0
- package/dist/solid/focus-sensor.js +23 -0
- package/dist/solid/focus-sensor.js.map +1 -0
- package/dist/solid/frame-time.d.ts +21 -0
- package/dist/solid/frame-time.d.ts.map +1 -0
- package/dist/solid/frame-time.js +41 -0
- package/dist/solid/frame-time.js.map +1 -0
- package/dist/solid/gesture-callbacks.d.ts +53 -0
- package/dist/solid/gesture-callbacks.d.ts.map +1 -0
- package/dist/solid/gesture-callbacks.js +184 -0
- package/dist/solid/gesture-callbacks.js.map +1 -0
- package/dist/solid/gesture-features.d.ts +28 -0
- package/dist/solid/gesture-features.d.ts.map +1 -0
- package/dist/solid/gesture-features.js +29 -0
- package/dist/solid/gesture-features.js.map +1 -0
- package/dist/solid/gesture-info.d.ts +59 -0
- package/dist/solid/gesture-info.d.ts.map +1 -0
- package/dist/solid/gesture-info.js +23 -0
- package/dist/solid/gesture-info.js.map +1 -0
- package/dist/solid/hover-sensor.d.ts +19 -0
- package/dist/solid/hover-sensor.d.ts.map +1 -0
- package/dist/solid/hover-sensor.js +23 -0
- package/dist/solid/hover-sensor.js.map +1 -0
- package/dist/solid/imperative.d.ts +195 -0
- package/dist/solid/imperative.d.ts.map +1 -0
- package/dist/solid/imperative.js +536 -0
- package/dist/solid/imperative.js.map +1 -0
- package/dist/solid/index.d.ts +180 -0
- package/dist/solid/index.d.ts.map +1 -0
- package/dist/solid/index.js +165 -0
- package/dist/solid/index.js.map +1 -0
- package/dist/solid/instant.d.ts +44 -0
- package/dist/solid/instant.d.ts.map +1 -0
- package/dist/solid/instant.js +49 -0
- package/dist/solid/instant.js.map +1 -0
- package/dist/solid/layout-group.d.ts +14 -0
- package/dist/solid/layout-group.d.ts.map +1 -0
- package/dist/solid/layout-group.js +27 -0
- package/dist/solid/layout-group.js.map +1 -0
- package/dist/solid/layout-member.d.ts +117 -0
- package/dist/solid/layout-member.d.ts.map +1 -0
- package/dist/solid/layout-member.js +164 -0
- package/dist/solid/layout-member.js.map +1 -0
- package/dist/solid/layout-projection.d.ts +22 -0
- package/dist/solid/layout-projection.d.ts.map +1 -0
- package/dist/solid/layout-projection.js +19 -0
- package/dist/solid/layout-projection.js.map +1 -0
- package/dist/solid/layout.d.ts +76 -0
- package/dist/solid/layout.d.ts.map +1 -0
- package/dist/solid/layout.jsx +80 -0
- package/dist/solid/layout.jsx.map +1 -0
- package/dist/solid/live-style.d.ts +147 -0
- package/dist/solid/live-style.d.ts.map +1 -0
- package/dist/solid/live-style.js +304 -0
- package/dist/solid/live-style.js.map +1 -0
- package/dist/solid/live-value.d.ts +144 -0
- package/dist/solid/live-value.d.ts.map +1 -0
- package/dist/solid/live-value.js +223 -0
- package/dist/solid/live-value.js.map +1 -0
- package/dist/solid/motion-props.d.ts +75 -0
- package/dist/solid/motion-props.d.ts.map +1 -0
- package/dist/solid/motion-props.js +314 -0
- package/dist/solid/motion-props.js.map +1 -0
- package/dist/solid/owner-scope.d.ts +16 -0
- package/dist/solid/owner-scope.d.ts.map +1 -0
- package/dist/solid/owner-scope.js +31 -0
- package/dist/solid/owner-scope.js.map +1 -0
- package/dist/solid/page-point.d.ts +35 -0
- package/dist/solid/page-point.d.ts.map +1 -0
- package/dist/solid/page-point.js +87 -0
- package/dist/solid/page-point.js.map +1 -0
- package/dist/solid/presence-controller.d.ts +122 -0
- package/dist/solid/presence-controller.d.ts.map +1 -0
- package/dist/solid/presence-controller.js +1207 -0
- package/dist/solid/presence-controller.js.map +1 -0
- package/dist/solid/presence-record.d.ts +167 -0
- package/dist/solid/presence-record.d.ts.map +1 -0
- package/dist/solid/presence-record.js +26 -0
- package/dist/solid/presence-record.js.map +1 -0
- package/dist/solid/presence.d.ts +95 -0
- package/dist/solid/presence.d.ts.map +1 -0
- package/dist/solid/presence.jsx +195 -0
- package/dist/solid/presence.jsx.map +1 -0
- package/dist/solid/press-sensor.d.ts +20 -0
- package/dist/solid/press-sensor.d.ts.map +1 -0
- package/dist/solid/press-sensor.js +24 -0
- package/dist/solid/press-sensor.js.map +1 -0
- package/dist/solid/press.d.ts +24 -0
- package/dist/solid/press.d.ts.map +1 -0
- package/dist/solid/press.js +19 -0
- package/dist/solid/press.js.map +1 -0
- package/dist/solid/provider.d.ts +263 -0
- package/dist/solid/provider.d.ts.map +1 -0
- package/dist/solid/provider.jsx +411 -0
- package/dist/solid/provider.jsx.map +1 -0
- package/dist/solid/reactivity.d.ts +27 -0
- package/dist/solid/reactivity.d.ts.map +1 -0
- package/dist/solid/reactivity.js +9 -0
- package/dist/solid/reactivity.js.map +1 -0
- package/dist/solid/reorder-input.d.ts +22 -0
- package/dist/solid/reorder-input.d.ts.map +1 -0
- package/dist/solid/reorder-input.js +45 -0
- package/dist/solid/reorder-input.js.map +1 -0
- package/dist/solid/reorder.d.ts +241 -0
- package/dist/solid/reorder.d.ts.map +1 -0
- package/dist/solid/reorder.jsx +427 -0
- package/dist/solid/reorder.jsx.map +1 -0
- package/dist/solid/retarget-legs.d.ts +189 -0
- package/dist/solid/retarget-legs.d.ts.map +1 -0
- package/dist/solid/retarget-legs.js +825 -0
- package/dist/solid/retarget-legs.js.map +1 -0
- package/dist/solid/runtime.d.ts +179 -0
- package/dist/solid/runtime.d.ts.map +1 -0
- package/dist/solid/runtime.js +237 -0
- package/dist/solid/runtime.js.map +1 -0
- package/dist/solid/sensors.d.ts +95 -0
- package/dist/solid/sensors.d.ts.map +1 -0
- package/dist/solid/sensors.js +154 -0
- package/dist/solid/sensors.js.map +1 -0
- package/dist/solid/server-interpolators.d.ts +13 -0
- package/dist/solid/server-interpolators.d.ts.map +1 -0
- package/dist/solid/server-interpolators.js +20 -0
- package/dist/solid/server-interpolators.js.map +1 -0
- package/dist/solid/server.d.ts +9 -0
- package/dist/solid/server.d.ts.map +1 -0
- package/dist/solid/server.js +20 -0
- package/dist/solid/server.js.map +1 -0
- package/dist/solid/solid-reactivity.d.ts +3 -0
- package/dist/solid/solid-reactivity.d.ts.map +1 -0
- package/dist/solid/solid-reactivity.js +19 -0
- package/dist/solid/solid-reactivity.js.map +1 -0
- package/dist/solid/spine.d.ts +597 -0
- package/dist/solid/spine.d.ts.map +1 -0
- package/dist/solid/spine.js +2761 -0
- package/dist/solid/spine.js.map +1 -0
- package/dist/solid/stagger.d.ts +29 -0
- package/dist/solid/stagger.d.ts.map +1 -0
- package/dist/solid/stagger.js +13 -0
- package/dist/solid/stagger.js.map +1 -0
- package/dist/solid/unstable/v2/bridge.d.ts +33 -0
- package/dist/solid/unstable/v2/bridge.d.ts.map +1 -0
- package/dist/solid/unstable/v2/bridge.js +76 -0
- package/dist/solid/unstable/v2/bridge.js.map +1 -0
- package/dist/solid/unstable/v2/complete.d.ts +21 -0
- package/dist/solid/unstable/v2/complete.d.ts.map +1 -0
- package/dist/solid/unstable/v2/complete.js +27 -0
- package/dist/solid/unstable/v2/complete.js.map +1 -0
- package/dist/solid/unstable/v2/config-view.d.ts +49 -0
- package/dist/solid/unstable/v2/config-view.d.ts.map +1 -0
- package/dist/solid/unstable/v2/config-view.js +114 -0
- package/dist/solid/unstable/v2/config-view.js.map +1 -0
- package/dist/solid/unstable/v2/create-animate.d.ts +31 -0
- package/dist/solid/unstable/v2/create-animate.d.ts.map +1 -0
- package/dist/solid/unstable/v2/create-animate.js +102 -0
- package/dist/solid/unstable/v2/create-animate.js.map +1 -0
- package/dist/solid/unstable/v2/cycle.d.ts +20 -0
- package/dist/solid/unstable/v2/cycle.d.ts.map +1 -0
- package/dist/solid/unstable/v2/cycle.js +30 -0
- package/dist/solid/unstable/v2/cycle.js.map +1 -0
- package/dist/solid/unstable/v2/drag-sensor.d.ts +23 -0
- package/dist/solid/unstable/v2/drag-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/drag-sensor.js +32 -0
- package/dist/solid/unstable/v2/drag-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/element.d.ts +178 -0
- package/dist/solid/unstable/v2/element.d.ts.map +1 -0
- package/dist/solid/unstable/v2/element.jsx +325 -0
- package/dist/solid/unstable/v2/element.jsx.map +1 -0
- package/dist/solid/unstable/v2/feature-section.d.ts +12 -0
- package/dist/solid/unstable/v2/feature-section.d.ts.map +1 -0
- package/dist/solid/unstable/v2/feature-section.js +23 -0
- package/dist/solid/unstable/v2/feature-section.js.map +1 -0
- package/dist/solid/unstable/v2/focus-sensor.d.ts +13 -0
- package/dist/solid/unstable/v2/focus-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/focus-sensor.js +23 -0
- package/dist/solid/unstable/v2/focus-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/hover-sensor.d.ts +12 -0
- package/dist/solid/unstable/v2/hover-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/hover-sensor.js +22 -0
- package/dist/solid/unstable/v2/hover-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/index.d.ts +131 -0
- package/dist/solid/unstable/v2/index.d.ts.map +1 -0
- package/dist/solid/unstable/v2/index.js +114 -0
- package/dist/solid/unstable/v2/index.js.map +1 -0
- package/dist/solid/unstable/v2/layout-projection.d.ts +21 -0
- package/dist/solid/unstable/v2/layout-projection.d.ts.map +1 -0
- package/dist/solid/unstable/v2/layout-projection.js +18 -0
- package/dist/solid/unstable/v2/layout-projection.js.map +1 -0
- package/dist/solid/unstable/v2/layout.d.ts +47 -0
- package/dist/solid/unstable/v2/layout.d.ts.map +1 -0
- package/dist/solid/unstable/v2/layout.jsx +62 -0
- package/dist/solid/unstable/v2/layout.jsx.map +1 -0
- package/dist/solid/unstable/v2/lifecycle.d.ts +267 -0
- package/dist/solid/unstable/v2/lifecycle.d.ts.map +1 -0
- package/dist/solid/unstable/v2/lifecycle.js +457 -0
- package/dist/solid/unstable/v2/lifecycle.js.map +1 -0
- package/dist/solid/unstable/v2/live-value.d.ts +146 -0
- package/dist/solid/unstable/v2/live-value.d.ts.map +1 -0
- package/dist/solid/unstable/v2/live-value.js +235 -0
- package/dist/solid/unstable/v2/live-value.js.map +1 -0
- package/dist/solid/unstable/v2/presence-handle.d.ts +55 -0
- package/dist/solid/unstable/v2/presence-handle.d.ts.map +1 -0
- package/dist/solid/unstable/v2/presence-handle.js +119 -0
- package/dist/solid/unstable/v2/presence-handle.js.map +1 -0
- package/dist/solid/unstable/v2/presence-hooks.d.ts +51 -0
- package/dist/solid/unstable/v2/presence-hooks.d.ts.map +1 -0
- package/dist/solid/unstable/v2/presence-hooks.js +115 -0
- package/dist/solid/unstable/v2/presence-hooks.js.map +1 -0
- package/dist/solid/unstable/v2/presence.d.ts +89 -0
- package/dist/solid/unstable/v2/presence.d.ts.map +1 -0
- package/dist/solid/unstable/v2/presence.jsx +107 -0
- package/dist/solid/unstable/v2/presence.jsx.map +1 -0
- package/dist/solid/unstable/v2/press-sensor.d.ts +13 -0
- package/dist/solid/unstable/v2/press-sensor.d.ts.map +1 -0
- package/dist/solid/unstable/v2/press-sensor.js +23 -0
- package/dist/solid/unstable/v2/press-sensor.js.map +1 -0
- package/dist/solid/unstable/v2/provider.d.ts +239 -0
- package/dist/solid/unstable/v2/provider.d.ts.map +1 -0
- package/dist/solid/unstable/v2/provider.jsx +423 -0
- package/dist/solid/unstable/v2/provider.jsx.map +1 -0
- package/dist/solid/unstable/v2/reorder.d.ts +292 -0
- package/dist/solid/unstable/v2/reorder.d.ts.map +1 -0
- package/dist/solid/unstable/v2/reorder.jsx +525 -0
- package/dist/solid/unstable/v2/reorder.jsx.map +1 -0
- package/dist/solid/unstable/v2/sensors.d.ts +91 -0
- package/dist/solid/unstable/v2/sensors.d.ts.map +1 -0
- package/dist/solid/unstable/v2/sensors.js +124 -0
- package/dist/solid/unstable/v2/sensors.js.map +1 -0
- package/dist/solid/unstable/v2/solid-reactivity.d.ts +61 -0
- package/dist/solid/unstable/v2/solid-reactivity.d.ts.map +1 -0
- package/dist/solid/unstable/v2/solid-reactivity.js +62 -0
- package/dist/solid/unstable/v2/solid-reactivity.js.map +1 -0
- package/dist/solid/unstable/v2/variant-node.d.ts +51 -0
- package/dist/solid/unstable/v2/variant-node.d.ts.map +1 -0
- package/dist/solid/unstable/v2/variant-node.js +336 -0
- package/dist/solid/unstable/v2/variant-node.js.map +1 -0
- package/dist/solid/unstable/v2/w.d.ts +42 -0
- package/dist/solid/unstable/v2/w.d.ts.map +1 -0
- package/dist/solid/unstable/v2/w.jsx +22 -0
- package/dist/solid/unstable/v2/w.jsx.map +1 -0
- package/dist/solid/unstable/v2/waiters.d.ts +72 -0
- package/dist/solid/unstable/v2/waiters.d.ts.map +1 -0
- package/dist/solid/unstable/v2/waiters.js +175 -0
- package/dist/solid/unstable/v2/waiters.js.map +1 -0
- package/dist/solid/unstable/v2/ward.d.ts +393 -0
- package/dist/solid/unstable/v2/ward.d.ts.map +1 -0
- package/dist/solid/unstable/v2/ward.jsx +1475 -0
- package/dist/solid/unstable/v2/ward.jsx.map +1 -0
- package/dist/solid/unstable/v2/wardic-config.d.ts +68 -0
- package/dist/solid/unstable/v2/wardic-config.d.ts.map +1 -0
- package/dist/solid/unstable/v2/wardic-config.jsx +28 -0
- package/dist/solid/unstable/v2/wardic-config.jsx.map +1 -0
- package/dist/solid/unstable/v2/wardic.d.ts +28 -0
- package/dist/solid/unstable/v2/wardic.d.ts.map +1 -0
- package/dist/solid/unstable/v2/wardic.jsx +16 -0
- package/dist/solid/unstable/v2/wardic.jsx.map +1 -0
- package/dist/solid/variant-node.d.ts +32 -0
- package/dist/solid/variant-node.d.ts.map +1 -0
- package/dist/solid/variant-node.js +257 -0
- package/dist/solid/variant-node.js.map +1 -0
- package/dist/solid/variant-target.d.ts +102 -0
- package/dist/solid/variant-target.d.ts.map +1 -0
- package/dist/solid/variant-target.js +180 -0
- package/dist/solid/variant-target.js.map +1 -0
- package/dist/solid/variant-tree.d.ts +349 -0
- package/dist/solid/variant-tree.d.ts.map +1 -0
- package/dist/solid/variant-tree.js +358 -0
- package/dist/solid/variant-tree.js.map +1 -0
- package/dist/solid/variants.d.ts +21 -0
- package/dist/solid/variants.d.ts.map +1 -0
- package/dist/solid/variants.js +43 -0
- package/dist/solid/variants.js.map +1 -0
- package/dist/solid/w.d.ts +42 -0
- package/dist/solid/w.d.ts.map +1 -0
- package/dist/solid/w.jsx +23 -0
- package/dist/solid/w.jsx.map +1 -0
- package/dist/solid/ward-keys.d.ts +236 -0
- package/dist/solid/ward-keys.d.ts.map +1 -0
- package/dist/solid/ward-keys.js +2 -0
- package/dist/solid/ward-keys.js.map +1 -0
- package/dist/solid/wardic-component.d.ts +50 -0
- package/dist/solid/wardic-component.d.ts.map +1 -0
- package/dist/solid/wardic-component.js +74 -0
- package/dist/solid/wardic-component.js.map +1 -0
- package/dist/solid/wardic-config-value.d.ts +87 -0
- package/dist/solid/wardic-config-value.d.ts.map +1 -0
- package/dist/solid/wardic-config-value.js +106 -0
- package/dist/solid/wardic-config-value.js.map +1 -0
- package/dist/solid/wardic-config.d.ts +69 -0
- package/dist/solid/wardic-config.d.ts.map +1 -0
- package/dist/solid/wardic-config.jsx +30 -0
- package/dist/solid/wardic-config.jsx.map +1 -0
- package/dist/solid/wardic.d.ts +45 -0
- package/dist/solid/wardic.d.ts.map +1 -0
- package/dist/solid/wardic.jsx +31 -0
- package/dist/solid/wardic.jsx.map +1 -0
- package/package.json +98 -4
- package/src/animation-controls.ts +204 -0
- package/src/animation-frame.ts +32 -0
- package/src/appear.ts +804 -0
- package/src/arc.ts +34 -0
- package/src/bridge.ts +98 -0
- package/src/complete.ts +45 -0
- package/src/config.ts +805 -0
- package/src/create-animate.ts +41 -0
- package/src/create-ward.tsx +1271 -0
- package/src/cycle-index.ts +18 -0
- package/src/cycle.ts +34 -0
- package/src/directive.ts +87 -0
- package/src/drag-constraints.ts +103 -0
- package/src/drag-controls.ts +94 -0
- package/src/drag-samples.ts +54 -0
- package/src/drag-sensor.ts +46 -0
- package/src/drag-track.ts +937 -0
- package/src/drag-transition.ts +43 -0
- package/src/drag.ts +58 -0
- package/src/element-style.ts +112 -0
- package/src/element.tsx +400 -0
- package/src/feature-section.ts +33 -0
- package/src/feature.ts +342 -0
- package/src/features/all.ts +18 -0
- package/src/features/colors.ts +36 -0
- package/src/features/dom-animation.ts +15 -0
- package/src/features/dom-max.ts +11 -0
- package/src/features/drag.ts +30 -0
- package/src/features/focus.ts +17 -0
- package/src/features/hover.ts +17 -0
- package/src/features/in-view.ts +17 -0
- package/src/features/input.ts +42 -0
- package/src/features/keys.ts +89 -0
- package/src/features/layout.ts +54 -0
- package/src/features/pan.ts +17 -0
- package/src/features/press.ts +17 -0
- package/src/focus-sensor.ts +32 -0
- package/src/frame-time.ts +45 -0
- package/src/gesture-callbacks.ts +212 -0
- package/src/gesture-features.ts +35 -0
- package/src/gesture-info.ts +81 -0
- package/src/hover-sensor.ts +32 -0
- package/src/imperative.ts +782 -0
- package/src/index.ts +334 -0
- package/src/instant.ts +90 -0
- package/src/layout-group.ts +32 -0
- package/src/layout-member.ts +300 -0
- package/src/layout-projection.ts +28 -0
- package/src/layout.tsx +127 -0
- package/src/live-style.ts +449 -0
- package/src/live-value.ts +378 -0
- package/src/motion-props.ts +325 -0
- package/src/owner-scope.ts +31 -0
- package/src/page-point.ts +98 -0
- package/src/presence-controller.ts +1483 -0
- package/src/presence-record.ts +189 -0
- package/src/presence.tsx +269 -0
- package/src/press-sensor.ts +33 -0
- package/src/press.ts +40 -0
- package/src/provider.tsx +526 -0
- package/src/reactivity.ts +29 -0
- package/src/reorder-input.ts +53 -0
- package/src/reorder.tsx +703 -0
- package/src/retarget-legs.ts +1048 -0
- package/src/runtime.ts +388 -0
- package/src/sensors.ts +189 -0
- package/src/server-interpolators.ts +33 -0
- package/src/server.ts +21 -0
- package/src/solid-reactivity.ts +21 -0
- package/src/spine.ts +3385 -0
- package/src/stagger.ts +31 -0
- package/src/unstable/v2/bridge.ts +79 -0
- package/src/unstable/v2/complete.ts +47 -0
- package/src/unstable/v2/config-view.ts +156 -0
- package/src/unstable/v2/create-animate.ts +123 -0
- package/src/unstable/v2/cycle.ts +33 -0
- package/src/unstable/v2/drag-sensor.ts +44 -0
- package/src/unstable/v2/element.tsx +478 -0
- package/src/unstable/v2/feature-section.ts +32 -0
- package/src/unstable/v2/focus-sensor.ts +31 -0
- package/src/unstable/v2/hover-sensor.ts +30 -0
- package/src/unstable/v2/index.ts +270 -0
- package/src/unstable/v2/layout-projection.ts +27 -0
- package/src/unstable/v2/layout.tsx +89 -0
- package/src/unstable/v2/lifecycle.ts +612 -0
- package/src/unstable/v2/live-value.ts +414 -0
- package/src/unstable/v2/presence-handle.ts +159 -0
- package/src/unstable/v2/presence-hooks.ts +157 -0
- package/src/unstable/v2/presence.tsx +174 -0
- package/src/unstable/v2/press-sensor.ts +31 -0
- package/src/unstable/v2/provider.tsx +524 -0
- package/src/unstable/v2/reorder.tsx +880 -0
- package/src/unstable/v2/sensors.ts +169 -0
- package/src/unstable/v2/solid-reactivity.ts +69 -0
- package/src/unstable/v2/variant-node.ts +446 -0
- package/src/unstable/v2/w.tsx +49 -0
- package/src/unstable/v2/waiters.ts +212 -0
- package/src/unstable/v2/ward.tsx +2068 -0
- package/src/unstable/v2/wardic-config.tsx +84 -0
- package/src/unstable/v2/wardic.tsx +41 -0
- package/src/variant-node.ts +368 -0
- package/src/variant-target.ts +234 -0
- package/src/variant-tree.ts +638 -0
- package/src/variants.ts +47 -0
- package/src/w.tsx +59 -0
- package/src/ward-keys.ts +343 -0
- package/src/wardic-component.ts +96 -0
- package/src/wardic-config-value.ts +150 -0
- package/src/wardic-config.tsx +78 -0
- package/src/wardic.tsx +59 -0
package/src/reorder.tsx
ADDED
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<Reorder>` for Solid (ADR-0020): drag items to reorder a list, built headless first
|
|
3
|
+
* (D8). `createReorderGroup` and `createReorderItem` are spreads for any elements and
|
|
4
|
+
* `use:reorderItem` a directive, so a list outside JSX components (a web component, a
|
|
5
|
+
* plain element) reorders the same way; `Reorder.Group` / `Reorder.Item` are built on
|
|
6
|
+
* them.
|
|
7
|
+
*
|
|
8
|
+
* The **Reorder group** is `@wardic/dom`'s `makeReorderController` (core's
|
|
9
|
+
* `Reorder.Group` underneath): it reads each item's slot, drag offset and layout
|
|
10
|
+
* version from its projection node's handle, runs the **Crossover** on each drag
|
|
11
|
+
* sample, calls the app's `onReorder`, runs **Auto-scroll**, and detects the axis after
|
|
12
|
+
* every Measure pass. This file adds Solid's half: the reactive config, the lifecycle,
|
|
13
|
+
* the elements and the components. The app owns `values` and keys its items with
|
|
14
|
+
* `<For>`. Each item is a `layout` node with a drag the group's axis decides per
|
|
15
|
+
* gesture, raised while dragged, whose `touch-action` follows the group's axis. A
|
|
16
|
+
* `values` change re-measures, so a reorder the app makes itself animates.
|
|
17
|
+
*
|
|
18
|
+
* Each item is also a tab stop for the group's **Keyboard reorder** (ADR-0037): `tabindex="0"`
|
|
19
|
+
* unless the app gives its own, and `aria-describedby` pointing at the group's instructions (on
|
|
20
|
+
* the client, with the app's ids kept). Its keys, blurs and presses reach the controller, which
|
|
21
|
+
* speaks through the Environment's `Announcer`; a lift turns its `whileDrag` on. `keyboard: false`
|
|
22
|
+
* on the group turns all of that off; `move` still announces.
|
|
23
|
+
*
|
|
24
|
+
* Observability: the controller logs its own `wardic.reorder:` events through the
|
|
25
|
+
* runtime (cold path: once per reorder, wait, gesture, edge or axis change, never per
|
|
26
|
+
* sample); this file logs nothing.
|
|
27
|
+
*/
|
|
28
|
+
import * as InputSource from "@wardic/core/InputSource"
|
|
29
|
+
import * as CoreReorder from "@wardic/core/Reorder"
|
|
30
|
+
import * as DomAnnouncer from "@wardic/dom/DomAnnouncer"
|
|
31
|
+
import * as ReorderController from "@wardic/dom/ReorderController"
|
|
32
|
+
import * as Style from "@wardic/dom/Style"
|
|
33
|
+
import { mergeRefs } from "@solid-primitives/refs"
|
|
34
|
+
import * as Arr from "effect/Array"
|
|
35
|
+
import * as Bool from "effect/Boolean"
|
|
36
|
+
import * as Effect from "effect/Effect"
|
|
37
|
+
import { constUndefined, identity, pipe } from "effect/Function"
|
|
38
|
+
import * as Match from "effect/Match"
|
|
39
|
+
import * as Option from "effect/Option"
|
|
40
|
+
import * as Predicate from "effect/Predicate"
|
|
41
|
+
import * as Scope from "effect/Scope"
|
|
42
|
+
import * as UndefinedOr from "effect/UndefinedOr"
|
|
43
|
+
import {
|
|
44
|
+
type Accessor,
|
|
45
|
+
type Component,
|
|
46
|
+
createContext,
|
|
47
|
+
createEffect,
|
|
48
|
+
createMemo,
|
|
49
|
+
createSignal,
|
|
50
|
+
createUniqueId,
|
|
51
|
+
type JSX,
|
|
52
|
+
mergeProps,
|
|
53
|
+
on,
|
|
54
|
+
onCleanup,
|
|
55
|
+
splitProps,
|
|
56
|
+
untrack,
|
|
57
|
+
useContext,
|
|
58
|
+
} from "solid-js"
|
|
59
|
+
import { Dynamic } from "solid-js/web"
|
|
60
|
+
import * as OwnerScope from "./owner-scope.ts"
|
|
61
|
+
import { runWatch, useBrought, useWardicGate, useWardicRuntime } from "./provider.tsx"
|
|
62
|
+
import { useLayoutServices } from "./layout-projection.ts"
|
|
63
|
+
import { watchItemInput } from "./reorder-input.ts"
|
|
64
|
+
import type { Feature } from "./feature.ts"
|
|
65
|
+
import { drag } from "./features/drag.ts"
|
|
66
|
+
import { focus } from "./features/focus.ts"
|
|
67
|
+
import { hover } from "./features/hover.ts"
|
|
68
|
+
import { inView } from "./features/in-view.ts"
|
|
69
|
+
import { layout } from "./features/layout.ts"
|
|
70
|
+
import { pan } from "./features/pan.ts"
|
|
71
|
+
import { press } from "./features/press.ts"
|
|
72
|
+
import { inputIn } from "./gesture-features.ts"
|
|
73
|
+
import type { WardicRuntime } from "./runtime.ts"
|
|
74
|
+
import { controlledOf, runSpine, type SpineInternals, createWardWith, type Ward, type WardProps, type WardUserProps } from "./create-ward.tsx"
|
|
75
|
+
import type { WardConfig } from "./config.ts"
|
|
76
|
+
import { isServer } from "./server.ts"
|
|
77
|
+
import { createVariantNode } from "./variant-node.ts"
|
|
78
|
+
import { accessorOf } from "./spine.ts"
|
|
79
|
+
import { changesContext } from "./variant-tree.ts"
|
|
80
|
+
import { useVariantContext } from "./variants.ts"
|
|
81
|
+
import { configOfMotion, type WardicProps } from "./element.tsx"
|
|
82
|
+
import { MOTION_PROPS, type WardicMotionProps } from "./motion-props.ts"
|
|
83
|
+
import { w } from "./w.tsx"
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* A Reorder group's config: its `values` in order, and `onReorder`, given each new order to set them
|
|
87
|
+
* from. Give an accessor of it for values that change.
|
|
88
|
+
*/
|
|
89
|
+
export interface ReorderGroupConfig<V> {
|
|
90
|
+
/** The list's values, in order. Your app owns them. */
|
|
91
|
+
readonly values: ReadonlyArray<V>
|
|
92
|
+
/** Given each new order, as an item crosses another: set `values` from it. */
|
|
93
|
+
readonly onReorder: (values: Array<V>) => void
|
|
94
|
+
/**
|
|
95
|
+
* Called once at the end of a reorder that changed the order: a drag let go, or a keyboard lift
|
|
96
|
+
* dropped, with the order, the item that moved, and its index `from` and `to`. What an app saves.
|
|
97
|
+
* Not called for a keyboard cancel, nor for `move`.
|
|
98
|
+
*/
|
|
99
|
+
// #257 item 3.
|
|
100
|
+
readonly onReorderEnd?: (end: ReorderController.End<V>) => void
|
|
101
|
+
/**
|
|
102
|
+
* Called as an item is taken in hand, by a drag starting (past its threshold, not at the press) or a
|
|
103
|
+
* keyboard lift, with its index then.
|
|
104
|
+
*/
|
|
105
|
+
// A Reorder hold's start (#348, ADR-0020 *Amendment (#348)*).
|
|
106
|
+
readonly onHoldStart?: (start: ReorderController.HoldStart<V>) => void
|
|
107
|
+
/**
|
|
108
|
+
* Called once as an item in hand is let go, however: let go or dropped (`how: "drop"`), put back with
|
|
109
|
+
* Escape (`"cancel"`), or unmounted (`"unmount"`). After `onReorderEnd` when it moved.
|
|
110
|
+
*/
|
|
111
|
+
// A Reorder hold's end (#348).
|
|
112
|
+
readonly onHoldEnd?: (end: ReorderController.HoldEnd<V>) => void
|
|
113
|
+
/** The list's direction: `"y"`, a column, or `"x"`, a row. Left out, it's found from the items' boxes. */
|
|
114
|
+
readonly axis?: CoreReorder.Axis
|
|
115
|
+
/** The keyboard reorder: on unless `false`. Off, the items have no keys, no tab stop and no instructions. */
|
|
116
|
+
// ADR-0037.
|
|
117
|
+
readonly keyboard?: boolean
|
|
118
|
+
/**
|
|
119
|
+
* What a screen reader hears at each step of a keyboard reorder, over the English defaults: `lift`,
|
|
120
|
+
* `step`, `drop`, `cancel`, and `move` for a move in code, each a function of the item's `label`,
|
|
121
|
+
* `position` and the list's `count`.
|
|
122
|
+
*/
|
|
123
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>>
|
|
124
|
+
/** What each item's `aria-describedby` reads, over the English default. */
|
|
125
|
+
readonly instructions?: string
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** What a group's spread takes from the app: its `ref` and its `style`, which may be a live getter. */
|
|
129
|
+
export interface ReorderGroupUserProps {
|
|
130
|
+
readonly ref?: (el: HTMLElement) => void
|
|
131
|
+
readonly style?: JSX.CSSProperties | undefined
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** What a group's spread gives its element: its `ref`, and its `style` over `overflow-anchor: none`. */
|
|
135
|
+
export interface ReorderGroupSpread {
|
|
136
|
+
readonly ref: (el: HTMLElement) => void
|
|
137
|
+
readonly style: JSX.CSSProperties
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* `createReorderGroup`'s group: call it to spread on the list's element, `{...list()}`, or
|
|
142
|
+
* `{...list({ ref, style })}` with a `ref` and a `style` of your own.
|
|
143
|
+
*/
|
|
144
|
+
export type ReorderGroup<V> = ((userProps?: ReorderGroupUserProps) => ReorderGroupSpread) & {
|
|
145
|
+
/** The group's state: `@wardic/core`'s `Reorder.Group`. */
|
|
146
|
+
readonly group: CoreReorder.Group<V>
|
|
147
|
+
/** The list's direction: the config's, else the one found from the items' boxes. */
|
|
148
|
+
readonly axis: Accessor<CoreReorder.Axis>
|
|
149
|
+
/** Moves `value` to `toIndex`, as a button of your own would, and announces it to a screen reader. */
|
|
150
|
+
readonly move: (value: V, toIndex: number) => void
|
|
151
|
+
/** Whether the items reorder from the keyboard. */
|
|
152
|
+
readonly keyboard: Accessor<boolean>
|
|
153
|
+
/** The instructions the items' `aria-describedby` reads. */
|
|
154
|
+
readonly instructions: Accessor<string>
|
|
155
|
+
/** @internal for the items: the group's controller. */
|
|
156
|
+
readonly controller: ReorderController.ReorderController<V>
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* A `<Reorder>` item's `layout`: `true`, its place and size animating (the default), or `"position"`,
|
|
161
|
+
* its place alone, its size changing at once, as Motion's `Reorder.Item` takes.
|
|
162
|
+
*/
|
|
163
|
+
// Its Layout mode (ADR-0009, *Amendment (#42)*).
|
|
164
|
+
export type ReorderItemLayout = true | "position"
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* A `<Reorder>` item's config: its `value`, its `layout` ({@link ReorderItemLayout}), and any motion
|
|
168
|
+
* prop but `layoutId` and `drag`, which the group sets.
|
|
169
|
+
*/
|
|
170
|
+
export type ReorderItemConfig<V> = { readonly value: V; readonly layout?: ReorderItemLayout } & Omit<WardConfig, "layout" | "layoutId" | "drag">
|
|
171
|
+
|
|
172
|
+
/** An item's `layout` as its Layout mode: `"position"`, else `true` (ADR-0009, *Amendment (#42)*). */
|
|
173
|
+
const itemLayoutOf = (layout: unknown): ReorderItemLayout =>
|
|
174
|
+
Bool.match(layout === "position", { onTrue: (): ReorderItemLayout => "position", onFalse: (): ReorderItemLayout => true })
|
|
175
|
+
|
|
176
|
+
/** What a group's Scope reports when one of its finalizers fails as its owner goes. */
|
|
177
|
+
const CLOSE_FAILED = "wardic.reorder: a finalizer failed"
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Makes a list of your own elements reorderable, by dragging or from the keyboard: spread the group on
|
|
181
|
+
* the list's element, and make each item with `createReorderItem`, keyed with `<For>`. Your app owns
|
|
182
|
+
* `values`, and sets them from `onReorder`. It gives the element `overflow-anchor: none`, so the
|
|
183
|
+
* browser doesn't scroll the page as items move. `Reorder.Group` is built on it.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* const list = createReorderGroup(() => ({ values: items(), onReorder: setItems }))
|
|
187
|
+
* <ul {...list()}>
|
|
188
|
+
* <For each={items()}>
|
|
189
|
+
* {(item) => {
|
|
190
|
+
* const row = createReorderItem(list, { value: item })
|
|
191
|
+
* return <li {...row()}>{item}</li>
|
|
192
|
+
* }}
|
|
193
|
+
* </For>
|
|
194
|
+
* </ul>
|
|
195
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder-group
|
|
196
|
+
*/
|
|
197
|
+
// ADR-0020. `overflow-anchor: none` goes under the app's style, as Motion's Group.tsx:187-195 at
|
|
198
|
+
// 16c6122 does. The axis is the config's, else detected from the items' boxes after every Measure pass
|
|
199
|
+
// (for their touch-action); a drag resolves its own at its start. On a server it renders the
|
|
200
|
+
// element's style and nothing else: no controller, no runtime; its `group`, `move` and `controller` do
|
|
201
|
+
// nothing (ADR-0021).
|
|
202
|
+
export function createReorderGroup<V>(config: ReorderGroupConfig<V> | Accessor<ReorderGroupConfig<V>>): ReorderGroup<V> {
|
|
203
|
+
const cfg: Accessor<ReorderGroupConfig<V>> = accessorOf(config)
|
|
204
|
+
if (isServer) {
|
|
205
|
+
useWardicRuntime()
|
|
206
|
+
return serverReorderGroup(cfg)
|
|
207
|
+
}
|
|
208
|
+
const [detected, setDetected] = createSignal<CoreReorder.Axis>("y")
|
|
209
|
+
const runtime = useWardicRuntime()
|
|
210
|
+
// The group's controller, over the provider's projection system and the Environment's channel to
|
|
211
|
+
// assistive technology (ADR-0037), in a Scope of the group's own, closed on unmount (#132's PR 3),
|
|
212
|
+
// set before the controller is built, so one that fails as it's built leaves nothing (#618).
|
|
213
|
+
const scope = OwnerScope.open(runtime)
|
|
214
|
+
onCleanup(() => OwnerScope.close(runtime, scope, CLOSE_FAILED))
|
|
215
|
+
const controller = runtime.runSync(
|
|
216
|
+
ReorderController.make<V>({
|
|
217
|
+
values: () => untrack(cfg).values,
|
|
218
|
+
onReorder: (values) => untrack(cfg).onReorder(values),
|
|
219
|
+
onReorderEnd: (end) => UndefinedOr.map(untrack(cfg).onReorderEnd, (tell) => tell(end)),
|
|
220
|
+
onHoldStart: (start) => UndefinedOr.map(untrack(cfg).onHoldStart, (tell) => tell(start)),
|
|
221
|
+
onHoldEnd: (end) => UndefinedOr.map(untrack(cfg).onHoldEnd, (tell) => tell(end)),
|
|
222
|
+
axis: () => Option.fromUndefinedOr(untrack(cfg).axis),
|
|
223
|
+
onAxis: setDetected,
|
|
224
|
+
keyedWith: "<For>",
|
|
225
|
+
keyboard: () => untrack(cfg).keyboard !== false,
|
|
226
|
+
announcements: () => Option.fromUndefinedOr(untrack(cfg).announcements),
|
|
227
|
+
}).pipe(Effect.provide(useLayoutServices()), Scope.provide(scope)),
|
|
228
|
+
)
|
|
229
|
+
// The app's axis, else the detected one. When the app's is cleared, detected here, from the boxes the
|
|
230
|
+
// engine holds, so the items' touch-action follows in the same update (#257's audit: an effect that
|
|
231
|
+
// detected it wrote a signal the items read a step late). A Measure pass's change comes through `onAxis`.
|
|
232
|
+
const axis: Accessor<CoreReorder.Axis> = createMemo(() =>
|
|
233
|
+
UndefinedOr.match(cfg().axis, {
|
|
234
|
+
onDefined: identity,
|
|
235
|
+
onUndefined: () => {
|
|
236
|
+
detected()
|
|
237
|
+
return controller.detect()
|
|
238
|
+
},
|
|
239
|
+
}),
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
// A `values` change re-measures, so the items animate to their new slots whoever
|
|
243
|
+
// reordered them (as LayoutGroup's layoutDependency does).
|
|
244
|
+
createEffect(on(() => cfg().values, () => controller.valuesChanged(), { defer: true }))
|
|
245
|
+
|
|
246
|
+
const spread = (userProps: ReorderGroupUserProps = NO_GROUP_PROPS): ReorderGroupSpread => ({
|
|
247
|
+
ref: mergeRefs(userProps.ref, (el: HTMLElement) => controller.attach(el)),
|
|
248
|
+
get style() {
|
|
249
|
+
return pipe(userProps.style, Style.over(ReorderController.GROUP_STYLE)) as JSX.CSSProperties
|
|
250
|
+
},
|
|
251
|
+
})
|
|
252
|
+
|
|
253
|
+
const move = (value: V, toIndex: number): void => controller.move(value, toIndex)
|
|
254
|
+
return Object.assign(spread, { group: controller.group, axis, move, controller, ...keyboardOf(cfg) })
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/** A group's keyboard reorder settings, as accessors (ADR-0037). */
|
|
258
|
+
const keyboardOf = <V,>(cfg: Accessor<ReorderGroupConfig<V>>) => ({
|
|
259
|
+
keyboard: (): boolean => cfg().keyboard !== false,
|
|
260
|
+
instructions: (): string => UndefinedOr.match(cfg().instructions, { onUndefined: () => ReorderController.DEFAULT_INSTRUCTIONS, onDefined: (text: string) => text }),
|
|
261
|
+
})
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* The spine additions of an item with `value` in `group` (D8: shared by
|
|
265
|
+
* {@link createReorderItem} and `use:reorderItem`): a `layout` node registered with the
|
|
266
|
+
* group, raised while dragged, whose drag takes the group's axis at each start and
|
|
267
|
+
* feeds the controller its samples, and whose `touch-action` follows the group's axis.
|
|
268
|
+
*/
|
|
269
|
+
/**
|
|
270
|
+
* What an item reads from its group: its controller's driver for the item, and the group's
|
|
271
|
+
* axis. Any {@link ReorderGroup} is one. Its value type appears only in `item`'s
|
|
272
|
+
* parameters, so `ItemGroup<never>` accepts a group of any value type.
|
|
273
|
+
*/
|
|
274
|
+
type ItemGroup<V> = {
|
|
275
|
+
readonly controller: Pick<ReorderController.ReorderController<V>, "item">
|
|
276
|
+
readonly axis: Accessor<CoreReorder.Axis>
|
|
277
|
+
readonly keyboard: Accessor<boolean>
|
|
278
|
+
readonly instructions: Accessor<string>
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* An item's `touch-action`, its group's axis's, under its style: none when its own presses don't drag
|
|
283
|
+
* it (`dragListener={false}`, #431), as with its other drag defaults, so a list dragged by its handles
|
|
284
|
+
* scrolls by touch.
|
|
285
|
+
*/
|
|
286
|
+
const touchActionOf = <V,>(group: ItemGroup<V>, listens: boolean): SpineInternals["baseStyle"] =>
|
|
287
|
+
Bool.match(listens, { onTrue: () => () => ({ "touch-action": Style.reorderTouchAction(group.axis()) }), onFalse: constUndefined })
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* What an item brings (ADR-0067 decision 12), whatever its section has (#511): its layout node, its
|
|
291
|
+
* drag, and every other gesture, so `whileHover` or `whileTap` on an item works as on Motion's, for
|
|
292
|
+
* about 0.5 KB gzipped beside the drag's.
|
|
293
|
+
*/
|
|
294
|
+
const ITEM_BRINGS: ReadonlyArray<Feature> = [layout, drag, hover, press, focus, inView, pan]
|
|
295
|
+
|
|
296
|
+
const itemInternals = <V,>(group: ItemGroup<V>, value: V, element: Accessor<HTMLElement | undefined>, runtime: WardicRuntime, listens: boolean): SpineInternals => {
|
|
297
|
+
// Its keys' input, the `drag` Feature's it brings (#511).
|
|
298
|
+
const services = useBrought(ITEM_BRINGS)
|
|
299
|
+
// A keyboard lift turns the item's `whileDrag` on (ADR-0037).
|
|
300
|
+
const [lifted, setLifted] = createSignal(false)
|
|
301
|
+
const driver = group.controller.item(value, () => Option.fromUndefinedOr(element()), setLifted)
|
|
302
|
+
// An item unmounted mid-gesture gets no end sample: its disposal ends the gesture (and a lift).
|
|
303
|
+
onCleanup(driver.dispose)
|
|
304
|
+
// Its keys, blurs and presses (ADR-0037), watched in a Scope of their own for as long as the element
|
|
305
|
+
// is this one, with no fiber at rest (#379).
|
|
306
|
+
createEffect(
|
|
307
|
+
on(element, (el) => {
|
|
308
|
+
if (Predicate.isNotUndefined(el)) {
|
|
309
|
+
runWatch(runtime, (onDefect) =>
|
|
310
|
+
Effect.provideService(watchItemInput(el, driver, (effect) => void runtime.runFork(effect), onDefect), InputSource.InputSource, inputIn(services())),
|
|
311
|
+
)
|
|
312
|
+
}
|
|
313
|
+
}),
|
|
314
|
+
)
|
|
315
|
+
return {
|
|
316
|
+
brings: ITEM_BRINGS,
|
|
317
|
+
dragAxis: () => dragAxisFor(driver.dragAxis()),
|
|
318
|
+
onDragSample: driver.onSample,
|
|
319
|
+
onLayoutHandle: (handle) => onCleanup(driver.register(handle)),
|
|
320
|
+
raiseWhileDragged: true,
|
|
321
|
+
keysTaken: true,
|
|
322
|
+
lifted,
|
|
323
|
+
baseStyle: touchActionOf(group, listens),
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* What an item adds to its element for the keyboard reorder (ADR-0037): `tabindex="0"` while the
|
|
329
|
+
* group's keyboard is on and the app gave no `tabIndex` of its own, and `aria-describedby` with
|
|
330
|
+
* the group's instructions (`describedBy`, set on the client) after the app's own ids.
|
|
331
|
+
*/
|
|
332
|
+
const keyboardAttributes = (group: ItemGroup<never>, user: ReorderItemUserProps = NO_ITEM_PROPS, describedBy: Accessor<string | undefined>) => ({
|
|
333
|
+
get tabindex() {
|
|
334
|
+
return UndefinedOr.match(user.tabIndex, {
|
|
335
|
+
onDefined: identity,
|
|
336
|
+
onUndefined: () => Bool.match(group.keyboard(), { onTrue: () => 0, onFalse: constUndefined }),
|
|
337
|
+
})
|
|
338
|
+
},
|
|
339
|
+
get "aria-describedby"() {
|
|
340
|
+
const ids = Arr.filter([user["aria-describedby"], Bool.match(group.keyboard(), { onTrue: describedBy, onFalse: constUndefined })], Predicate.isNotUndefined)
|
|
341
|
+
return Bool.match(ids.length === 0, { onTrue: () => undefined, onFalse: () => ids.join(" ") })
|
|
342
|
+
},
|
|
343
|
+
})
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* What an item's spread takes from the app: a ward's `ref` and `style`, plus its own `tabIndex`, which
|
|
347
|
+
* wins over the keyboard reorder's, and its own `aria-describedby` ids, kept before the instructions'.
|
|
348
|
+
*/
|
|
349
|
+
export type ReorderItemUserProps = WardUserProps & {
|
|
350
|
+
readonly tabIndex?: number | undefined
|
|
351
|
+
readonly "aria-describedby"?: string | undefined
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/** A `<Reorder>` item's spread: a {@link WardProps}, plus its keyboard reorder's `tabindex` and `aria-describedby`. */
|
|
355
|
+
export type ReorderItemSpread = WardProps & {
|
|
356
|
+
readonly tabindex?: number | undefined
|
|
357
|
+
readonly "aria-describedby"?: string | undefined
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/** {@link createReorderItem}'s result: call it to spread onto the item's element, as a `Ward`. */
|
|
361
|
+
export type ReorderItemWard = ((userProps?: ReorderItemUserProps) => ReorderItemSpread) & Pick<Ward, "Provider">
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Makes an element an item of a Reorder group: spread it on the element, `{...row()}`, as a ward.
|
|
365
|
+
* `value` is its value in the group's `values`, read once; the rest are its motion props, but
|
|
366
|
+
* `layout` (`true` or `"position"`), `layoutId` and `drag`, which the group sets. It's a tab stop for
|
|
367
|
+
* the keyboard reorder: give your own `tabIndex` and `aria-describedby` in the spread's props.
|
|
368
|
+
*
|
|
369
|
+
* @example
|
|
370
|
+
* const row = createReorderItem(list, { value: item, whileDrag: { scale: 1.05 } })
|
|
371
|
+
* <li {...row()}>{item.name}</li>
|
|
372
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder-item
|
|
373
|
+
*/
|
|
374
|
+
// ADR-0020, ADR-0037. The element takes the drag defaults, with the group's axis's touch-action, which
|
|
375
|
+
// its style can override.
|
|
376
|
+
export function createReorderItem<V>(group: ReorderGroup<V>, config: ReorderItemConfig<V> | Accessor<ReorderItemConfig<V>>): ReorderItemWard {
|
|
377
|
+
const cfg: Accessor<ReorderItemConfig<V>> = accessorOf(config)
|
|
378
|
+
const value = untrack(cfg).value
|
|
379
|
+
const listens = untrack(cfg).dragListener !== false
|
|
380
|
+
const [element, setElement] = createSignal<HTMLElement>()
|
|
381
|
+
// On a server the item renders the drag defaults with its group's touch-action and
|
|
382
|
+
// joins no controller (ADR-0021).
|
|
383
|
+
const internals: SpineInternals = Bool.match(isServer, {
|
|
384
|
+
onTrue: (): SpineInternals => ({ brings: ITEM_BRINGS, dragAxis: () => true, baseStyle: touchActionOf(group, listens) }),
|
|
385
|
+
onFalse: () => itemInternals(group, value, element, useWardicRuntime(), listens),
|
|
386
|
+
})
|
|
387
|
+
const ward = createWardWith(() => ({ ...withoutValue(cfg()), layout: itemLayoutOf(cfg().layout) }), internals)
|
|
388
|
+
// The instructions element exists on the client only, so `aria-describedby` waits for the mount.
|
|
389
|
+
const [describedBy, setDescribedBy] = createSignal<string>()
|
|
390
|
+
if (!isServer) {
|
|
391
|
+
createEffect(on([element, group.instructions] as const, ([el, text]) => {
|
|
392
|
+
if (Predicate.isNotUndefined(el)) setDescribedBy(DomAnnouncer.instructionsId(DomAnnouncer.documentOf(el), text))
|
|
393
|
+
}))
|
|
394
|
+
}
|
|
395
|
+
// The item's element, for Auto-scroll's held scroll shift.
|
|
396
|
+
// The user's style is passed on as a getter, so a live one stays live (WardUserProps).
|
|
397
|
+
const item = (userProps: ReorderItemUserProps = NO_ITEM_PROPS): ReorderItemSpread =>
|
|
398
|
+
mergeProps(
|
|
399
|
+
ward({
|
|
400
|
+
ref: mergeRefs(userProps.ref, setElement),
|
|
401
|
+
get style() {
|
|
402
|
+
return userProps.style
|
|
403
|
+
},
|
|
404
|
+
}),
|
|
405
|
+
keyboardAttributes(group as unknown as ItemGroup<never>, userProps, describedBy),
|
|
406
|
+
)
|
|
407
|
+
return Object.assign(item, {
|
|
408
|
+
Provider: ward.Provider,
|
|
409
|
+
})
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
const noop = (): void => {}
|
|
413
|
+
|
|
414
|
+
/** A group's spread's user props when it's given none. */
|
|
415
|
+
const NO_GROUP_PROPS: ReorderGroupUserProps = {}
|
|
416
|
+
const NO_ITEM_PROPS: ReorderItemUserProps = {}
|
|
417
|
+
|
|
418
|
+
/** A Reorder item's drag axis for its gesture's axis: a grid's `xy` is a free drag. Built once, at module load. */
|
|
419
|
+
const dragAxisFor: (axis: CoreReorder.Axis) => true | "x" | "y" = Match.type<CoreReorder.Axis>().pipe(
|
|
420
|
+
Match.when("xy", (): true => true),
|
|
421
|
+
Match.orElse((axis) => axis as "x" | "y"),
|
|
422
|
+
)
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* {@link createReorderGroup} during a server render (ADR-0021): the group's element style
|
|
426
|
+
* (`overflow-anchor: none` under the user's) and the app's axis, else `"y"`; its `group`,
|
|
427
|
+
* `move` and `controller` do nothing.
|
|
428
|
+
*/
|
|
429
|
+
const serverReorderGroup = <V,>(cfg: Accessor<ReorderGroupConfig<V>>): ReorderGroup<V> => {
|
|
430
|
+
const spread = (userProps: ReorderGroupUserProps = NO_GROUP_PROPS): ReorderGroupSpread => ({
|
|
431
|
+
ref: UndefinedOr.match(userProps.ref, { onUndefined: () => noop, onDefined: identity }),
|
|
432
|
+
style: pipe(userProps.style, Style.over(ReorderController.GROUP_STYLE)) as JSX.CSSProperties,
|
|
433
|
+
})
|
|
434
|
+
const controller = ReorderController.inert as unknown as ReorderController.ReorderController<V>
|
|
435
|
+
const axis = (): CoreReorder.Axis => UndefinedOr.match(cfg().axis, { onUndefined: () => "y" as const, onDefined: (a: CoreReorder.Axis) => a })
|
|
436
|
+
return Object.assign(spread, { group: controller.group, axis, move: noop, controller, ...keyboardOf(cfg) })
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
const withoutValue = <V,>(config: ReorderItemConfig<V>): WardConfig => {
|
|
440
|
+
const { value: _value, ...rest } = config
|
|
441
|
+
return rest
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/** `use:reorderItem`'s value: the item's `group` and its `value`, and its motion props. */
|
|
445
|
+
// The group of any value type, as an `ItemGroup<never>`.
|
|
446
|
+
export type ReorderItemDirectiveValue = {
|
|
447
|
+
readonly group: ItemGroup<never>
|
|
448
|
+
readonly value: unknown
|
|
449
|
+
readonly layout?: ReorderItemLayout
|
|
450
|
+
} & Omit<WardConfig, "layout" | "layoutId" | "drag">
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* `use:reorderItem`: makes an element an item of a Reorder group, as `use:wardic` makes it a Wardic
|
|
454
|
+
* element: `<li use:reorderItem={{ group: list, value: item }}>`. In the browser only: its drag
|
|
455
|
+
* defaults and `touch-action` are set as it mounts, not in the server's markup, so a server-rendered
|
|
456
|
+
* item takes `createReorderItem` or `Reorder.Item`. Import `reorderItem` in the module that uses it.
|
|
457
|
+
*
|
|
458
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder-item
|
|
459
|
+
*/
|
|
460
|
+
// ADR-0003: a directive is client-only. The import keeps `reorderItem` from being dropped as unused, as
|
|
461
|
+
// for `wardic`.
|
|
462
|
+
export function reorderItem(el: HTMLElement, value: Accessor<ReorderItemDirectiveValue>): void {
|
|
463
|
+
const first = untrack(value)
|
|
464
|
+
// Animation controls for its `animate` (#433): each change they make is its entry.
|
|
465
|
+
const { cfg, controls } = controlledOf((): WardConfig => {
|
|
466
|
+
const { group: _group, value: _value, ...rest } = value()
|
|
467
|
+
return { ...rest, layout: itemLayoutOf(rest.layout) }
|
|
468
|
+
})
|
|
469
|
+
// As `use:wardic`: a Variant child joins the nearest variant context; it provides none (#50).
|
|
470
|
+
const node = createVariantNode(cfg, useVariantContext(), UndefinedOr.map(controls, (c) => c.change))
|
|
471
|
+
const runtime = useWardicRuntime()
|
|
472
|
+
const group = first.group as ItemGroup<unknown>
|
|
473
|
+
// The keyboard reorder's tab stop and instructions (ADR-0037), on the element itself: the app's
|
|
474
|
+
// own `tabindex` wins, and its `aria-describedby` ids are kept.
|
|
475
|
+
createEffect(() => {
|
|
476
|
+
if (Bool.not(group.keyboard())) return
|
|
477
|
+
if (!el.hasAttribute("tabindex")) el.setAttribute("tabindex", "0")
|
|
478
|
+
const id = DomAnnouncer.instructionsId(DomAnnouncer.documentOf(el), group.instructions())
|
|
479
|
+
const ids = Option.getOrElse(Option.fromNullishOr(el.getAttribute("aria-describedby")), () => "").split(" ").filter((t) => t !== "")
|
|
480
|
+
if (!ids.includes(id)) el.setAttribute("aria-describedby", [...ids, id].join(" "))
|
|
481
|
+
})
|
|
482
|
+
runSpine({
|
|
483
|
+
runtime,
|
|
484
|
+
gate: useWardicGate(),
|
|
485
|
+
id: createUniqueId(),
|
|
486
|
+
el: () => el,
|
|
487
|
+
cfg,
|
|
488
|
+
controls,
|
|
489
|
+
parent: node.inherited,
|
|
490
|
+
extraDelay: node.extraDelay,
|
|
491
|
+
byName: node.names,
|
|
492
|
+
canStart: node.canStart,
|
|
493
|
+
bindGestures: node.bindGestures,
|
|
494
|
+
onFrame: node.onFrame,
|
|
495
|
+
makeSink: (element) => ({ target: element }),
|
|
496
|
+
internal: itemInternals(group, first.value, () => el, runtime, first.dragListener !== false),
|
|
497
|
+
})
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
declare module "solid-js" {
|
|
501
|
+
// biome-ignore lint/style/useNamingConvention: augmenting Solid's JSX namespace.
|
|
502
|
+
namespace JSX {
|
|
503
|
+
interface Directives {
|
|
504
|
+
reorderItem: ReorderItemDirectiveValue
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// --- Components (ADR-0020, D8: built on the headless API) --------------------------
|
|
510
|
+
|
|
511
|
+
const GroupContext = createContext<ReorderGroup<unknown>>()
|
|
512
|
+
|
|
513
|
+
/** An element tag a `<Reorder>` group or item can render. */
|
|
514
|
+
export type ReorderElementTag = keyof JSX.IntrinsicElements
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* `Reorder.Group`'s props: its group's config, `as`, and the props of the element it renders, motion
|
|
518
|
+
* props included.
|
|
519
|
+
*/
|
|
520
|
+
export type ReorderGroupProps<V, Tag extends ReorderElementTag = "ul"> = {
|
|
521
|
+
/** The list's values, in order. Your app owns them. */
|
|
522
|
+
readonly values: ReadonlyArray<V>
|
|
523
|
+
/** Given each new order, as an item crosses another: set `values` from it. */
|
|
524
|
+
readonly onReorder: (values: Array<V>) => void
|
|
525
|
+
/** Called once at the end of a reorder that changed the order, with the order and the item that moved: what an app saves. */
|
|
526
|
+
readonly onReorderEnd?: ((end: ReorderController.End<V>) => void) | undefined
|
|
527
|
+
/** Called as an item is taken in hand, by a drag starting or a keyboard lift. */
|
|
528
|
+
readonly onHoldStart?: ((start: ReorderController.HoldStart<V>) => void) | undefined
|
|
529
|
+
/** Called once as an item in hand is let go, however; after `onReorderEnd` when it moved. */
|
|
530
|
+
readonly onHoldEnd?: ((end: ReorderController.HoldEnd<V>) => void) | undefined
|
|
531
|
+
/** The list's direction: `"y"`, a column, or `"x"`, a row. Left out, it's found from the items' boxes. */
|
|
532
|
+
readonly axis?: CoreReorder.Axis | undefined
|
|
533
|
+
/** The keyboard reorder: on unless `false`. */
|
|
534
|
+
readonly keyboard?: boolean | undefined
|
|
535
|
+
/** What a screen reader hears at each step of a keyboard reorder, over the English defaults. */
|
|
536
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
|
|
537
|
+
/** What each item's `aria-describedby` reads, over the English default. */
|
|
538
|
+
readonly instructions?: string | undefined
|
|
539
|
+
/** The element it renders: `"ul"` by default. Read once. */
|
|
540
|
+
readonly as?: Tag
|
|
541
|
+
} & Omit<WardicProps<Tag>, "onReorder">
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* `Reorder.Item`'s props: its `value`, `as`, its `layout`, and the props of the element it renders,
|
|
545
|
+
* motion props included, but `layoutId` and `drag`, which the group sets.
|
|
546
|
+
*/
|
|
547
|
+
export type ReorderItemProps<V, Tag extends ReorderElementTag = "li"> = {
|
|
548
|
+
/** Its value in the group's `values`. Read once. */
|
|
549
|
+
readonly value: V
|
|
550
|
+
/** The element it renders: `"li"` by default. Read once. */
|
|
551
|
+
readonly as?: Tag
|
|
552
|
+
/** `true`, its place and size animating (the default), or `"position"`, its place alone. */
|
|
553
|
+
readonly layout?: ReorderItemLayout
|
|
554
|
+
} & Omit<WardicProps<Tag>, "layout" | "layoutId" | "drag">
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* The props a component body reads, as plain records: instantiating the public prop
|
|
558
|
+
* types over every element tag (`WardicProps<keyof JSX.IntrinsicElements>`) makes a
|
|
559
|
+
* type checker build a union of every element's props, which a consumer's checker
|
|
560
|
+
* can run out of memory on.
|
|
561
|
+
*/
|
|
562
|
+
interface GroupLocal<V> {
|
|
563
|
+
readonly values: ReadonlyArray<V>
|
|
564
|
+
readonly onReorder: (values: Array<V>) => void
|
|
565
|
+
readonly onReorderEnd?: ((end: ReorderController.End<V>) => void) | undefined
|
|
566
|
+
readonly onHoldStart?: ((start: ReorderController.HoldStart<V>) => void) | undefined
|
|
567
|
+
readonly onHoldEnd?: ((end: ReorderController.HoldEnd<V>) => void) | undefined
|
|
568
|
+
readonly axis?: CoreReorder.Axis | undefined
|
|
569
|
+
readonly keyboard?: boolean | undefined
|
|
570
|
+
readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
|
|
571
|
+
readonly instructions?: string | undefined
|
|
572
|
+
readonly as?: string | undefined
|
|
573
|
+
readonly ref?: ((el: HTMLElement) => void) | undefined
|
|
574
|
+
readonly style?: JSX.CSSProperties | undefined
|
|
575
|
+
readonly children?: JSX.Element
|
|
576
|
+
}
|
|
577
|
+
interface ItemLocal<V> {
|
|
578
|
+
readonly value: V
|
|
579
|
+
readonly as?: string | undefined
|
|
580
|
+
readonly ref?: ((el: HTMLElement) => void) | undefined
|
|
581
|
+
readonly style?: JSX.CSSProperties | undefined
|
|
582
|
+
readonly children?: JSX.Element
|
|
583
|
+
readonly tabIndex?: number | undefined
|
|
584
|
+
readonly "aria-describedby"?: string | undefined
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* The Wardic element for `tag`, typed as a plain component: a Slim element's (`w[tag]`, #511), so a
|
|
589
|
+
* Reorder brings no Feature but its own (ADR-0067 decision 12) and renders under a `strict` section.
|
|
590
|
+
*/
|
|
591
|
+
const wardicTag = (tag: string): Component<Record<string, unknown>> =>
|
|
592
|
+
UndefinedOr.getOrThrow((w as unknown as Record<string, Component<Record<string, unknown>> | undefined>)[tag])
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* A list put in order by dragging its items, or from the keyboard, rendered as `as`, `"ul"` by
|
|
596
|
+
* default. Your app owns `values`, and sets them from `onReorder`. Key its `Reorder.Item`s with `<For>`.
|
|
597
|
+
*
|
|
598
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder
|
|
599
|
+
*/
|
|
600
|
+
// ADR-0020: a `createReorderGroup` rendered as `w[as]`, the group in context for its items.
|
|
601
|
+
function Group<V, Tag extends ReorderElementTag = "ul">(props: ReorderGroupProps<V, Tag>): JSX.Element {
|
|
602
|
+
const [local, rest] = splitProps(props as unknown as GroupLocal<V> & Record<string, unknown>, [
|
|
603
|
+
"values",
|
|
604
|
+
"onReorder",
|
|
605
|
+
"onReorderEnd",
|
|
606
|
+
"onHoldStart",
|
|
607
|
+
"onHoldEnd",
|
|
608
|
+
"axis",
|
|
609
|
+
"keyboard",
|
|
610
|
+
"announcements",
|
|
611
|
+
"instructions",
|
|
612
|
+
"as",
|
|
613
|
+
"ref",
|
|
614
|
+
"style",
|
|
615
|
+
"children",
|
|
616
|
+
])
|
|
617
|
+
const group = createReorderGroup<V>(() => ({
|
|
618
|
+
values: local.values,
|
|
619
|
+
onReorder: local.onReorder,
|
|
620
|
+
...UndefinedOr.match(local.onReorderEnd, { onUndefined: () => ({}), onDefined: (onReorderEnd) => ({ onReorderEnd }) }),
|
|
621
|
+
...UndefinedOr.match(local.onHoldStart, { onUndefined: () => ({}), onDefined: (onHoldStart) => ({ onHoldStart }) }),
|
|
622
|
+
...UndefinedOr.match(local.onHoldEnd, { onUndefined: () => ({}), onDefined: (onHoldEnd) => ({ onHoldEnd }) }),
|
|
623
|
+
...UndefinedOr.match(local.axis, { onUndefined: () => ({}), onDefined: (axis) => ({ axis }) }),
|
|
624
|
+
...UndefinedOr.match(local.keyboard, { onUndefined: () => ({}), onDefined: (keyboard) => ({ keyboard }) }),
|
|
625
|
+
...UndefinedOr.match(local.announcements, { onUndefined: () => ({}), onDefined: (announcements) => ({ announcements }) }),
|
|
626
|
+
...UndefinedOr.match(local.instructions, { onUndefined: () => ({}), onDefined: (instructions) => ({ instructions }) }),
|
|
627
|
+
}))
|
|
628
|
+
const Tag = wardicTag(UndefinedOr.match(untrack(() => local.as), { onUndefined: () => "ul", onDefined: identity }))
|
|
629
|
+
const userRef = local.ref
|
|
630
|
+
const spread = group({
|
|
631
|
+
...UndefinedOr.match(userRef, { onUndefined: () => ({}), onDefined: (ref) => ({ ref }) }),
|
|
632
|
+
get style() {
|
|
633
|
+
return local.style
|
|
634
|
+
},
|
|
635
|
+
})
|
|
636
|
+
return (
|
|
637
|
+
<GroupContext.Provider value={group as ReorderGroup<unknown>}>
|
|
638
|
+
<Tag {...rest} {...spread}>
|
|
639
|
+
{local.children}
|
|
640
|
+
</Tag>
|
|
641
|
+
</GroupContext.Provider>
|
|
642
|
+
)
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* An item of the `Reorder.Group` around it, rendered as `as`, `"li"` by default. Outside a group it
|
|
647
|
+
* throws, as Motion's does.
|
|
648
|
+
*
|
|
649
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder
|
|
650
|
+
*/
|
|
651
|
+
// ADR-0020: a `createReorderItem` on the nearest group.
|
|
652
|
+
function Item<V, Tag extends ReorderElementTag = "li">(props: ReorderItemProps<V, Tag>): JSX.Element {
|
|
653
|
+
const group = useContext(GroupContext) as ReorderGroup<V> | undefined
|
|
654
|
+
if (Predicate.isUndefined(group)) throw new Error("Reorder.Item must be a child of Reorder.Group")
|
|
655
|
+
// The item consumes every motion prop name (layoutId / drag included, though its type
|
|
656
|
+
// omits them), so none reaches the DOM.
|
|
657
|
+
const [local, motion, rest] = splitProps(
|
|
658
|
+
props as unknown as ItemLocal<V> & WardicMotionProps & Record<string, unknown>,
|
|
659
|
+
["value", "as", "ref", "style", "children", "tabIndex", "aria-describedby"],
|
|
660
|
+
MOTION_PROPS,
|
|
661
|
+
)
|
|
662
|
+
const config = configOfMotion(motion as WardicMotionProps)
|
|
663
|
+
const item = createReorderItem<V>(group, () => ({ ...config(), layout: itemLayoutOf(config().layout), value: local.value }))
|
|
664
|
+
const tag = UndefinedOr.match(untrack(() => local.as), { onUndefined: () => "li", onDefined: identity })
|
|
665
|
+
const userRef = local.ref
|
|
666
|
+
const spread = item({
|
|
667
|
+
...UndefinedOr.match(userRef, { onUndefined: () => ({}), onDefined: (ref) => ({ ref }) }),
|
|
668
|
+
get style() {
|
|
669
|
+
return local.style
|
|
670
|
+
},
|
|
671
|
+
get tabIndex() {
|
|
672
|
+
return local.tabIndex
|
|
673
|
+
},
|
|
674
|
+
get "aria-describedby"() {
|
|
675
|
+
return local["aria-describedby"]
|
|
676
|
+
},
|
|
677
|
+
})
|
|
678
|
+
const element = (): JSX.Element => (
|
|
679
|
+
<Dynamic component={tag} {...rest} {...spread}>
|
|
680
|
+
{local.children}
|
|
681
|
+
</Dynamic>
|
|
682
|
+
)
|
|
683
|
+
// An item that changes what its children read renders its variant context's Provider around
|
|
684
|
+
// them (#50), as every Wardic element does; any other renders none.
|
|
685
|
+
return Bool.match(changesContext(untrack(config)), {
|
|
686
|
+
onFalse: element,
|
|
687
|
+
onTrue: () => <item.Provider>{element()}</item.Provider>,
|
|
688
|
+
})
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* A list put in order by dragging its items, or from the keyboard: `Reorder.Group` and `Reorder.Item`.
|
|
693
|
+
* Your app owns the order: the group takes it as `values`, and `onReorder` hands each new one back.
|
|
694
|
+
* Motion's `Reorder`.
|
|
695
|
+
*
|
|
696
|
+
* @example
|
|
697
|
+
* <Reorder.Group values={items()} onReorder={setItems}>
|
|
698
|
+
* <For each={items()}>{(item) => <Reorder.Item value={item}>{item}</Reorder.Item>}</For>
|
|
699
|
+
* </Reorder.Group>
|
|
700
|
+
* @see https://wardic.dev/reference/solid/reorder/reorder
|
|
701
|
+
*/
|
|
702
|
+
// ADR-0020.
|
|
703
|
+
export const Reorder = { Group, Item } as const
|