@vizejs/composable 0.426.3 → 0.428.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/dist/abort-signal.d.mts +1 -1
- package/dist/active-element.d.mts +37 -0
- package/dist/active-element.mjs +56 -0
- package/dist/animate.d.mts +114 -0
- package/dist/animate.mjs +157 -0
- package/dist/battery.d.mts +61 -0
- package/dist/battery.mjs +90 -0
- package/dist/breakpoints.d.mts +82 -0
- package/dist/breakpoints.mjs +91 -0
- package/dist/catalog-BeTXFKxF.d.mts +4188 -0
- package/dist/catalog-r4Z5nptX.mjs +5144 -0
- package/dist/catalog.d.mts +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/color-mode.d.mts +131 -0
- package/dist/color-mode.mjs +133 -0
- package/dist/computed-async.d.mts +63 -0
- package/dist/computed-async.mjs +43 -0
- package/dist/computed-with-control.d.mts +44 -0
- package/dist/computed-with-control.mjs +54 -0
- package/dist/create-event-hook.d.mts +77 -0
- package/dist/create-event-hook.mjs +66 -0
- package/dist/create-global-state.d.mts +24 -0
- package/dist/create-global-state.mjs +34 -0
- package/dist/create-injection-state.d.mts +51 -0
- package/dist/create-injection-state.mjs +19 -0
- package/dist/create-shared-composable.d.mts +38 -0
- package/dist/create-shared-composable.mjs +54 -0
- package/dist/device-motion.d.mts +71 -0
- package/dist/device-motion.mjs +75 -0
- package/dist/device-orientation.d.mts +82 -0
- package/dist/device-orientation.mjs +86 -0
- package/dist/device-pixel-ratio.d.mts +45 -0
- package/dist/device-pixel-ratio.mjs +50 -0
- package/dist/document-visibility.mjs +6 -2
- package/dist/draggable.d.mts +121 -0
- package/dist/draggable.mjs +153 -0
- package/dist/element-bounding.d.mts +87 -0
- package/dist/element-bounding.mjs +95 -0
- package/dist/element-by-point.d.mts +70 -0
- package/dist/element-by-point.mjs +69 -0
- package/dist/element-hover.d.mts +42 -0
- package/dist/element-hover.mjs +70 -0
- package/dist/element-ref.d.mts +34 -0
- package/dist/element-ref.mjs +23 -0
- package/dist/element-target-Crpxl4D9.d.mts +60 -0
- package/dist/element-target.d.mts +2 -0
- package/dist/element-target.mjs +58 -0
- package/dist/event-listener.mjs +7 -3
- package/dist/focus.d.mts +69 -0
- package/dist/focus.mjs +124 -0
- package/dist/fps.d.mts +59 -0
- package/dist/fps.mjs +64 -0
- package/dist/geolocation.d.mts +98 -0
- package/dist/geolocation.mjs +86 -0
- package/dist/i18n.d.mts +237 -0
- package/dist/i18n.mjs +215 -0
- package/dist/icu-message.d.mts +235 -0
- package/dist/icu-message.mjs +343 -0
- package/dist/idle.d.mts +79 -0
- package/dist/idle.mjs +90 -0
- package/dist/index.d.mts +172 -6
- package/dist/index.mjs +173 -7
- package/dist/infinite-scroll.d.mts +56 -0
- package/dist/infinite-scroll.mjs +72 -0
- package/dist/intersection-observer.d.mts +122 -0
- package/dist/intersection-observer.mjs +117 -0
- package/dist/magic-keys.d.mts +121 -0
- package/dist/magic-keys.mjs +163 -0
- package/dist/math.d.mts +96 -0
- package/dist/math.mjs +84 -0
- package/dist/media-query.d.mts +3 -1
- package/dist/media-query.mjs +5 -3
- package/dist/mouse-in-element.d.mts +49 -0
- package/dist/mouse-in-element.mjs +66 -0
- package/dist/mouse.d.mts +77 -0
- package/dist/mouse.mjs +100 -0
- package/dist/mutation-observer.d.mts +98 -0
- package/dist/mutation-observer.mjs +69 -0
- package/dist/network.d.mts +96 -0
- package/dist/network.mjs +117 -0
- package/dist/on-click-outside.d.mts +69 -0
- package/dist/on-click-outside.mjs +115 -0
- package/dist/on-key-stroke.d.mts +71 -0
- package/dist/on-key-stroke.mjs +79 -0
- package/dist/on-long-press.d.mts +82 -0
- package/dist/on-long-press.mjs +105 -0
- package/dist/on-start-typing.d.mts +44 -0
- package/dist/on-start-typing.mjs +61 -0
- package/dist/page-leave.d.mts +26 -0
- package/dist/page-leave.mjs +40 -0
- package/dist/parent-element.d.mts +16 -0
- package/dist/parent-element.mjs +27 -0
- package/dist/pinch.d.mts +73 -0
- package/dist/pinch.mjs +138 -0
- package/dist/pointer-lock.d.mts +79 -0
- package/dist/pointer-lock.mjs +126 -0
- package/dist/pointer.d.mts +78 -0
- package/dist/pointer.mjs +95 -0
- package/dist/preferences.d.mts +55 -0
- package/dist/preferences.mjs +63 -0
- package/dist/preferred-languages.d.mts +43 -0
- package/dist/preferred-languages.mjs +44 -0
- package/dist/reactify.d.mts +28 -0
- package/dist/reactify.mjs +7 -0
- package/dist/ref-auto-reset.d.mts +47 -0
- package/dist/ref-auto-reset.mjs +70 -0
- package/dist/ref-debounced.d.mts +29 -0
- package/dist/ref-debounced.mjs +29 -0
- package/dist/ref-default.d.mts +27 -0
- package/dist/ref-default.mjs +33 -0
- package/dist/resize-observer.d.mts +96 -0
- package/dist/resize-observer.mjs +111 -0
- package/dist/resolver.d.mts +124 -0
- package/dist/resolver.mjs +138 -0
- package/dist/retry-async.d.mts +2 -2
- package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
- package/dist/retry-delay.d.mts +1 -72
- package/dist/screen-orientation.d.mts +77 -0
- package/dist/screen-orientation.mjs +74 -0
- package/dist/scroll-lock.d.mts +37 -0
- package/dist/scroll-lock.mjs +50 -0
- package/dist/scroll.d.mts +158 -0
- package/dist/scroll.mjs +172 -0
- package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
- package/dist/standard-schema.d.mts +2 -0
- package/dist/standard-schema.mjs +60 -0
- package/dist/swipe.d.mts +125 -0
- package/dist/swipe.mjs +225 -0
- package/dist/sync-ref.d.mts +80 -0
- package/dist/sync-ref.mjs +43 -0
- package/dist/text-selection.d.mts +46 -0
- package/dist/text-selection.mjs +62 -0
- package/dist/textarea-autosize.d.mts +58 -0
- package/dist/textarea-autosize.mjs +54 -0
- package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
- package/dist/timeout-scheduler.d.mts +1 -17
- package/dist/to-reactive.d.mts +26 -0
- package/dist/to-reactive.mjs +46 -0
- package/dist/transition.d.mts +125 -0
- package/dist/transition.mjs +266 -0
- package/dist/until.d.mts +177 -0
- package/dist/until.mjs +111 -0
- package/dist/use-array.d.mts +112 -0
- package/dist/use-array.mjs +90 -0
- package/dist/use-async-queue.d.mts +109 -0
- package/dist/use-async-queue.mjs +96 -0
- package/dist/use-async-state.d.mts +86 -0
- package/dist/use-async-state.mjs +41 -0
- package/dist/use-barcode-detector.d.mts +159 -0
- package/dist/use-barcode-detector.mjs +143 -0
- package/dist/use-bluetooth.d.mts +164 -0
- package/dist/use-bluetooth.mjs +183 -0
- package/dist/use-broadcast-channel.d.mts +115 -0
- package/dist/use-broadcast-channel.mjs +121 -0
- package/dist/use-builtin-ai.d.mts +342 -0
- package/dist/use-builtin-ai.mjs +261 -0
- package/dist/use-clipboard.d.mts +169 -0
- package/dist/use-clipboard.mjs +226 -0
- package/dist/use-compression-stream.d.mts +173 -0
- package/dist/use-compression-stream.mjs +166 -0
- package/dist/use-confirm-dialog.d.mts +70 -0
- package/dist/use-confirm-dialog.mjs +57 -0
- package/dist/use-contact-picker.d.mts +117 -0
- package/dist/use-contact-picker.mjs +103 -0
- package/dist/use-cookie.d.mts +196 -0
- package/dist/use-cookie.mjs +259 -0
- package/dist/use-countdown.d.mts +85 -0
- package/dist/use-countdown.mjs +74 -0
- package/dist/use-css-var.d.mts +96 -0
- package/dist/use-css-var.mjs +104 -0
- package/dist/use-cycle-list.d.mts +76 -0
- package/dist/use-cycle-list.mjs +39 -0
- package/dist/use-date-format.d.mts +103 -0
- package/dist/use-date-format.mjs +147 -0
- package/dist/use-date-time-format.d.mts +75 -0
- package/dist/use-date-time-format.mjs +53 -0
- package/dist/use-debounced.d.mts +1 -1
- package/dist/use-display-media.d.mts +62 -0
- package/dist/use-display-media.mjs +46 -0
- package/dist/use-display-names.d.mts +75 -0
- package/dist/use-display-names.mjs +52 -0
- package/dist/use-document-title.d.mts +88 -0
- package/dist/use-document-title.mjs +100 -0
- package/dist/use-drop-zone.d.mts +128 -0
- package/dist/use-drop-zone.mjs +154 -0
- package/dist/use-event-source.d.mts +184 -0
- package/dist/use-event-source.mjs +226 -0
- package/dist/use-eye-dropper.d.mts +79 -0
- package/dist/use-eye-dropper.mjs +68 -0
- package/dist/use-favicon.d.mts +78 -0
- package/dist/use-favicon.mjs +68 -0
- package/dist/use-fetch.d.mts +230 -0
- package/dist/use-fetch.mjs +263 -0
- package/dist/use-field.d.mts +107 -0
- package/dist/use-field.mjs +117 -0
- package/dist/use-file-dialog.d.mts +139 -0
- package/dist/use-file-dialog.mjs +101 -0
- package/dist/use-file-system-access.d.mts +184 -0
- package/dist/use-file-system-access.mjs +151 -0
- package/dist/use-form-field-props.d.mts +235 -0
- package/dist/use-form-field-props.mjs +164 -0
- package/dist/use-form.d.mts +324 -0
- package/dist/use-form.mjs +482 -0
- package/dist/use-fullscreen.d.mts +104 -0
- package/dist/use-fullscreen.mjs +95 -0
- package/dist/use-gamepad.d.mts +242 -0
- package/dist/use-gamepad.mjs +218 -0
- package/dist/use-hid.d.mts +160 -0
- package/dist/use-hid.mjs +156 -0
- package/dist/use-id-generator.d.mts +44 -0
- package/dist/use-id-generator.mjs +38 -0
- package/dist/use-image.d.mts +125 -0
- package/dist/use-image.mjs +109 -0
- package/dist/use-indexed-db.d.mts +207 -0
- package/dist/use-indexed-db.mjs +251 -0
- package/dist/use-interval-BA55gTHT.d.mts +140 -0
- package/dist/use-interval.d.mts +2 -0
- package/dist/use-interval.mjs +100 -0
- package/dist/use-list-format.d.mts +60 -0
- package/dist/use-list-format.mjs +40 -0
- package/dist/use-machine.d.mts +90 -0
- package/dist/use-machine.mjs +78 -0
- package/dist/use-map.d.mts +90 -0
- package/dist/use-map.mjs +70 -0
- package/dist/use-media-controls.d.mts +198 -0
- package/dist/use-media-controls.mjs +264 -0
- package/dist/use-memoize.d.mts +73 -0
- package/dist/use-memoize.mjs +28 -0
- package/dist/use-mounted.d.mts +24 -0
- package/dist/use-mounted.mjs +29 -0
- package/dist/use-navigation-api.d.mts +360 -0
- package/dist/use-navigation-api.mjs +231 -0
- package/dist/use-notification.d.mts +139 -0
- package/dist/use-notification.mjs +131 -0
- package/dist/use-now.d.mts +137 -0
- package/dist/use-now.mjs +44 -0
- package/dist/use-number-format.d.mts +73 -0
- package/dist/use-number-format.mjs +58 -0
- package/dist/use-object-url.d.mts +47 -0
- package/dist/use-object-url.mjs +54 -0
- package/dist/use-offset-pagination.d.mts +91 -0
- package/dist/use-offset-pagination.mjs +80 -0
- package/dist/use-payment-request.d.mts +239 -0
- package/dist/use-payment-request.mjs +206 -0
- package/dist/use-performance-observer.d.mts +285 -0
- package/dist/use-performance-observer.mjs +132 -0
- package/dist/use-permission.d.mts +99 -0
- package/dist/use-permission.mjs +92 -0
- package/dist/use-plural-rules.d.mts +79 -0
- package/dist/use-plural-rules.mjs +59 -0
- package/dist/use-push-subscription.d.mts +154 -0
- package/dist/use-push-subscription.mjs +146 -0
- package/dist/use-queue.d.mts +89 -0
- package/dist/use-queue.mjs +116 -0
- package/dist/use-raf-fn.d.mts +87 -0
- package/dist/use-raf-fn.mjs +99 -0
- package/dist/use-relative-time-format.d.mts +111 -0
- package/dist/use-relative-time-format.mjs +119 -0
- package/dist/use-request-idle-callback.d.mts +122 -0
- package/dist/use-request-idle-callback.mjs +147 -0
- package/dist/use-route-query.d.mts +149 -0
- package/dist/use-route-query.mjs +86 -0
- package/dist/use-scheduler-post-task.d.mts +156 -0
- package/dist/use-scheduler-post-task.mjs +182 -0
- package/dist/use-screen-details.d.mts +205 -0
- package/dist/use-screen-details.mjs +188 -0
- package/dist/use-script-tag.d.mts +162 -0
- package/dist/use-script-tag.mjs +171 -0
- package/dist/use-segmenter.d.mts +78 -0
- package/dist/use-segmenter.mjs +66 -0
- package/dist/use-selection.d.mts +125 -0
- package/dist/use-selection.mjs +77 -0
- package/dist/use-serial.d.mts +165 -0
- package/dist/use-serial.mjs +205 -0
- package/dist/use-service-worker.d.mts +177 -0
- package/dist/use-service-worker.mjs +178 -0
- package/dist/use-set.d.mts +96 -0
- package/dist/use-set.mjs +74 -0
- package/dist/use-share.d.mts +92 -0
- package/dist/use-share.mjs +99 -0
- package/dist/use-sorted-locale.d.mts +62 -0
- package/dist/use-sorted-locale.mjs +52 -0
- package/dist/use-sorted.d.mts +29 -0
- package/dist/use-sorted.mjs +14 -0
- package/dist/use-speech-recognition.d.mts +150 -0
- package/dist/use-speech-recognition.mjs +168 -0
- package/dist/use-speech-synthesis.d.mts +148 -0
- package/dist/use-speech-synthesis.mjs +152 -0
- package/dist/use-stack.d.mts +83 -0
- package/dist/use-stack.mjs +93 -0
- package/dist/use-stepper.d.mts +79 -0
- package/dist/use-stepper.mjs +52 -0
- package/dist/use-storage-estimate.d.mts +151 -0
- package/dist/use-storage-estimate.mjs +170 -0
- package/dist/use-storage.d.mts +214 -0
- package/dist/use-storage.mjs +415 -0
- package/dist/use-style-tag.d.mts +102 -0
- package/dist/use-style-tag.mjs +91 -0
- package/dist/use-supported.d.mts +23 -0
- package/dist/use-supported.mjs +26 -0
- package/dist/use-throttled.d.mts +1 -1
- package/dist/use-time-ago.d.mts +163 -0
- package/dist/use-time-ago.mjs +95 -0
- package/dist/use-timeout.d.mts +122 -0
- package/dist/use-timeout.mjs +65 -0
- package/dist/use-url-hash.d.mts +88 -0
- package/dist/use-url-hash.mjs +145 -0
- package/dist/use-url-search-params.d.mts +223 -0
- package/dist/use-url-search-params.mjs +295 -0
- package/dist/use-usb.d.mts +212 -0
- package/dist/use-usb.mjs +137 -0
- package/dist/use-user-activation.d.mts +83 -0
- package/dist/use-user-activation.mjs +113 -0
- package/dist/use-user-media.d.mts +194 -0
- package/dist/use-user-media.mjs +214 -0
- package/dist/use-v-model.d.mts +113 -0
- package/dist/use-v-model.mjs +40 -0
- package/dist/use-vibrate.d.mts +81 -0
- package/dist/use-vibrate.mjs +90 -0
- package/dist/use-view-transition.d.mts +106 -0
- package/dist/use-view-transition.mjs +101 -0
- package/dist/use-visual-viewport.d.mts +105 -0
- package/dist/use-visual-viewport.mjs +104 -0
- package/dist/use-wake-lock.d.mts +96 -0
- package/dist/use-wake-lock.mjs +106 -0
- package/dist/use-web-authn.d.mts +404 -0
- package/dist/use-web-authn.mjs +323 -0
- package/dist/use-web-locks.d.mts +180 -0
- package/dist/use-web-locks.mjs +136 -0
- package/dist/use-web-midi.d.mts +148 -0
- package/dist/use-web-midi.mjs +140 -0
- package/dist/use-web-vitals.d.mts +142 -0
- package/dist/use-web-vitals.mjs +248 -0
- package/dist/use-websocket.d.mts +218 -0
- package/dist/use-websocket.mjs +257 -0
- package/dist/use-worker-fn.d.mts +119 -0
- package/dist/use-worker-fn.mjs +162 -0
- package/dist/virtual-list.d.mts +105 -0
- package/dist/virtual-list.mjs +128 -0
- package/dist/watch-debounced.d.mts +84 -0
- package/dist/watch-debounced.mjs +84 -0
- package/dist/watch-ignorable.d.mts +47 -0
- package/dist/watch-ignorable.mjs +61 -0
- package/dist/watch-once.d.mts +29 -0
- package/dist/watch-once.mjs +10 -0
- package/dist/watch-pausable.d.mts +51 -0
- package/dist/watch-pausable.mjs +23 -0
- package/dist/watch-source.d.mts +29 -0
- package/dist/watch-source.mjs +1 -0
- package/dist/watch-throttled.d.mts +70 -0
- package/dist/watch-throttled.mjs +94 -0
- package/dist/whenever.d.mts +39 -0
- package/dist/whenever.mjs +41 -0
- package/dist/window-size.d.mts +87 -0
- package/dist/window-size.mjs +65 -0
- package/package.json +846 -5
- package/registry/files/abort-signal.ts +292 -0
- package/registry/files/active-element.ts +93 -0
- package/registry/files/animate.ts +322 -0
- package/registry/files/async-resource.ts +190 -0
- package/registry/files/battery.ts +166 -0
- package/registry/files/breakpoints.ts +166 -0
- package/registry/files/capability.ts +171 -0
- package/registry/files/color-mode.ts +274 -0
- package/registry/files/computed-async.ts +123 -0
- package/registry/files/computed-with-control.ts +80 -0
- package/registry/files/create-event-hook.ts +139 -0
- package/registry/files/create-global-state.ts +34 -0
- package/registry/files/create-injection-state.ts +75 -0
- package/registry/files/create-shared-composable.ts +74 -0
- package/registry/files/device-motion.ts +152 -0
- package/registry/files/device-orientation.ts +168 -0
- package/registry/files/device-pixel-ratio.ts +100 -0
- package/registry/files/disposal-scope.ts +201 -0
- package/registry/files/document-visibility.ts +152 -0
- package/registry/files/draggable.ts +273 -0
- package/registry/files/element-bounding.ts +175 -0
- package/registry/files/element-by-point.ts +149 -0
- package/registry/files/element-hover.ts +104 -0
- package/registry/files/element-ref.ts +58 -0
- package/registry/files/element-target.ts +99 -0
- package/registry/files/event-listener.ts +188 -0
- package/registry/files/focus.ts +181 -0
- package/registry/files/fps.ts +133 -0
- package/registry/files/geolocation.ts +214 -0
- package/registry/files/i18n.ts +524 -0
- package/registry/files/icu-message.ts +701 -0
- package/registry/files/idle.ts +176 -0
- package/registry/files/infinite-scroll.ts +135 -0
- package/registry/files/intersection-observer.ts +261 -0
- package/registry/files/locale.ts +148 -0
- package/registry/files/magic-keys.ts +298 -0
- package/registry/files/math.ts +175 -0
- package/registry/files/media-query.ts +102 -0
- package/registry/files/mouse-in-element.ts +107 -0
- package/registry/files/mouse.ts +167 -0
- package/registry/files/mutation-observer.ts +183 -0
- package/registry/files/network.ts +229 -0
- package/registry/files/on-click-outside.ts +178 -0
- package/registry/files/on-key-stroke.ts +135 -0
- package/registry/files/on-long-press.ts +188 -0
- package/registry/files/on-start-typing.ts +88 -0
- package/registry/files/page-leave.ts +57 -0
- package/registry/files/parent-element.ts +29 -0
- package/registry/files/pinch.ts +187 -0
- package/registry/files/pointer-lock.ts +232 -0
- package/registry/files/pointer.ts +153 -0
- package/registry/files/preferences.ts +98 -0
- package/registry/files/preferred-languages.ts +88 -0
- package/registry/files/reactify.ts +39 -0
- package/registry/files/ref-auto-reset.ts +102 -0
- package/registry/files/ref-debounced.ts +34 -0
- package/registry/files/ref-default.ts +35 -0
- package/registry/files/resize-observer.ts +220 -0
- package/registry/files/retry-async.ts +261 -0
- package/registry/files/retry-delay.ts +132 -0
- package/registry/files/scope.ts +21 -0
- package/registry/files/screen-orientation.ts +165 -0
- package/registry/files/scroll-lock.ts +80 -0
- package/registry/files/scroll.ts +338 -0
- package/registry/files/standard-schema.ts +163 -0
- package/registry/files/swipe.ts +321 -0
- package/registry/files/sync-ref.ts +166 -0
- package/registry/files/temporal.ts +182 -0
- package/registry/files/text-selection.ts +110 -0
- package/registry/files/textarea-autosize.ts +114 -0
- package/registry/files/timeout-scheduler.ts +16 -0
- package/registry/files/to-reactive.ts +44 -0
- package/registry/files/transition.ts +271 -0
- package/registry/files/until.ts +352 -0
- package/registry/files/use-array.ts +201 -0
- package/registry/files/use-async-queue.ts +278 -0
- package/registry/files/use-async-state.ts +139 -0
- package/registry/files/use-barcode-detector.ts +321 -0
- package/registry/files/use-bluetooth.ts +409 -0
- package/registry/files/use-broadcast-channel.ts +250 -0
- package/registry/files/use-builtin-ai.ts +674 -0
- package/registry/files/use-clipboard.ts +425 -0
- package/registry/files/use-compression-stream.ts +364 -0
- package/registry/files/use-confirm-dialog.ts +137 -0
- package/registry/files/use-contact-picker.ts +246 -0
- package/registry/files/use-cookie.ts +500 -0
- package/registry/files/use-countdown.ts +161 -0
- package/registry/files/use-counter.ts +147 -0
- package/registry/files/use-css-var.ts +191 -0
- package/registry/files/use-cycle-list.ts +136 -0
- package/registry/files/use-date-format.ts +281 -0
- package/registry/files/use-date-time-format.ts +113 -0
- package/registry/files/use-debounced.ts +163 -0
- package/registry/files/use-display-media.ts +89 -0
- package/registry/files/use-display-names.ts +122 -0
- package/registry/files/use-document-title.ts +196 -0
- package/registry/files/use-drop-zone.ts +287 -0
- package/registry/files/use-event-source.ts +470 -0
- package/registry/files/use-eye-dropper.ts +134 -0
- package/registry/files/use-favicon.ts +140 -0
- package/registry/files/use-fetch.ts +578 -0
- package/registry/files/use-field.ts +247 -0
- package/registry/files/use-file-dialog.ts +257 -0
- package/registry/files/use-file-system-access.ts +383 -0
- package/registry/files/use-form-field-props.ts +381 -0
- package/registry/files/use-form.ts +980 -0
- package/registry/files/use-fullscreen.ts +214 -0
- package/registry/files/use-gamepad.ts +463 -0
- package/registry/files/use-hid.ts +359 -0
- package/registry/files/use-history.ts +231 -0
- package/registry/files/use-id-generator.ts +61 -0
- package/registry/files/use-image.ts +253 -0
- package/registry/files/use-indexed-db.ts +508 -0
- package/registry/files/use-interval.ts +253 -0
- package/registry/files/use-list-format.ts +85 -0
- package/registry/files/use-machine.ts +171 -0
- package/registry/files/use-map.ts +145 -0
- package/registry/files/use-media-controls.ts +545 -0
- package/registry/files/use-memoize.ts +118 -0
- package/registry/files/use-mounted.ts +30 -0
- package/registry/files/use-navigation-api.ts +641 -0
- package/registry/files/use-notification.ts +285 -0
- package/registry/files/use-now.ts +194 -0
- package/registry/files/use-number-format.ts +120 -0
- package/registry/files/use-object-url.ts +87 -0
- package/registry/files/use-offset-pagination.ts +168 -0
- package/registry/files/use-payment-request.ts +465 -0
- package/registry/files/use-performance-observer.ts +469 -0
- package/registry/files/use-permission.ts +220 -0
- package/registry/files/use-plural-rules.ts +134 -0
- package/registry/files/use-previous.ts +62 -0
- package/registry/files/use-push-subscription.ts +352 -0
- package/registry/files/use-queue.ts +197 -0
- package/registry/files/use-raf-fn.ts +176 -0
- package/registry/files/use-relative-time-format.ts +201 -0
- package/registry/files/use-request-idle-callback.ts +278 -0
- package/registry/files/use-route-query.ts +300 -0
- package/registry/files/use-scheduler-post-task.ts +397 -0
- package/registry/files/use-screen-details.ts +393 -0
- package/registry/files/use-script-tag.ts +341 -0
- package/registry/files/use-segmenter.ts +147 -0
- package/registry/files/use-selection.ts +233 -0
- package/registry/files/use-serial.ts +404 -0
- package/registry/files/use-service-worker.ts +413 -0
- package/registry/files/use-set.ts +154 -0
- package/registry/files/use-share.ts +168 -0
- package/registry/files/use-sorted-locale.ts +130 -0
- package/registry/files/use-sorted.ts +49 -0
- package/registry/files/use-speech-recognition.ts +357 -0
- package/registry/files/use-speech-synthesis.ts +333 -0
- package/registry/files/use-stack.ts +164 -0
- package/registry/files/use-stepper.ts +166 -0
- package/registry/files/use-storage-estimate.ts +352 -0
- package/registry/files/use-storage.ts +635 -0
- package/registry/files/use-style-tag.ts +200 -0
- package/registry/files/use-supported.ts +26 -0
- package/registry/files/use-throttled.ts +215 -0
- package/registry/files/use-time-ago.ts +276 -0
- package/registry/files/use-timeout.ts +218 -0
- package/registry/files/use-toggle.ts +54 -0
- package/registry/files/use-url-hash.ts +280 -0
- package/registry/files/use-url-search-params.ts +497 -0
- package/registry/files/use-usb.ts +395 -0
- package/registry/files/use-user-activation.ts +215 -0
- package/registry/files/use-user-media.ts +422 -0
- package/registry/files/use-v-model.ts +210 -0
- package/registry/files/use-vibrate.ts +174 -0
- package/registry/files/use-view-transition.ts +229 -0
- package/registry/files/use-visual-viewport.ts +228 -0
- package/registry/files/use-wake-lock.ts +206 -0
- package/registry/files/use-web-authn.ts +793 -0
- package/registry/files/use-web-locks.ts +363 -0
- package/registry/files/use-web-midi.ts +306 -0
- package/registry/files/use-web-vitals.ts +409 -0
- package/registry/files/use-websocket.ts +553 -0
- package/registry/files/use-worker-fn.ts +306 -0
- package/registry/files/virtual-list.ts +230 -0
- package/registry/files/watch-debounced.ts +206 -0
- package/registry/files/watch-ignorable.ts +128 -0
- package/registry/files/watch-once.ts +46 -0
- package/registry/files/watch-pausable.ts +93 -0
- package/registry/files/watch-source.ts +51 -0
- package/registry/files/watch-throttled.ts +201 -0
- package/registry/files/whenever.ts +70 -0
- package/registry/files/window-size.ts +151 -0
- package/registry/registry.json +5792 -0
- package/dist/catalog-D2AL3xYl.d.mts +0 -523
- package/dist/catalog-D5SYCsgW.mjs +0 -549
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { computed, hasInjectionContext, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/text-selection.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track the document text selection.
|
|
6
|
+
*
|
|
7
|
+
* Re-reads the selection on every `selectionchange`. Because the platform
|
|
8
|
+
* mutates the same `Selection` object in place, a revision counter is used to
|
|
9
|
+
* invalidate the derived `text`, `ranges`, and `rects`. Server renders expose
|
|
10
|
+
* an empty selection; the listener is removed with the owning scope.
|
|
11
|
+
*
|
|
12
|
+
* Inside a component the host is read after mounting, so hydration renders
|
|
13
|
+
* the server fallback first and never mismatches.
|
|
14
|
+
*
|
|
15
|
+
* @param options Document capability.
|
|
16
|
+
* @default options {}
|
|
17
|
+
* @returns Reactive selection, text, ranges, and rectangles.
|
|
18
|
+
*/
|
|
19
|
+
function useTextSelection(options = {}) {
|
|
20
|
+
const selection = shallowRef(null);
|
|
21
|
+
const revision = shallowRef(0);
|
|
22
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
23
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
24
|
+
hydrated.value = true;
|
|
25
|
+
});
|
|
26
|
+
const stop = watch(() => hydrated.value ? options.host === void 0 ? browserSelectionHost() : toValue(options.host) : void 0, (host, _previous, onCleanup) => {
|
|
27
|
+
if (!host) {
|
|
28
|
+
selection.value = null;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const update = () => {
|
|
32
|
+
selection.value = host.getSelection();
|
|
33
|
+
revision.value += 1;
|
|
34
|
+
};
|
|
35
|
+
update();
|
|
36
|
+
host.addEventListener("selectionchange", update, { passive: true });
|
|
37
|
+
onCleanup(() => host.removeEventListener("selectionchange", update));
|
|
38
|
+
}, { immediate: true });
|
|
39
|
+
tryOnScopeDispose(() => stop.stop());
|
|
40
|
+
const ranges = computed(() => {
|
|
41
|
+
revision.value;
|
|
42
|
+
const current = selection.value;
|
|
43
|
+
if (!current) return [];
|
|
44
|
+
const list = [];
|
|
45
|
+
for (let index = 0; index < current.rangeCount; index += 1) list.push(current.getRangeAt(index));
|
|
46
|
+
return list;
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
selection,
|
|
50
|
+
text: computed(() => {
|
|
51
|
+
revision.value;
|
|
52
|
+
return selection.value?.toString() ?? "";
|
|
53
|
+
}),
|
|
54
|
+
ranges,
|
|
55
|
+
rects: computed(() => ranges.value.map((range) => range.getBoundingClientRect()))
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function browserSelectionHost() {
|
|
59
|
+
return typeof document !== "undefined" ? document : void 0;
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { useTextSelection };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
2
|
+
import { ResizeObserverHost } from "./resize-observer.mjs";
|
|
3
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/textarea-autosize.d.ts
|
|
6
|
+
/** Style property that receives the measured height. */
|
|
7
|
+
type TextareaAutosizeStyleProperty = "height" | "min-height";
|
|
8
|
+
/** Options for {@link useTextareaAutosize}. */
|
|
9
|
+
interface UseTextareaAutosizeOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Text bound to the textarea. Changes trigger a resize. A fresh ref is
|
|
12
|
+
* created when omitted.
|
|
13
|
+
*
|
|
14
|
+
* @default ref("")
|
|
15
|
+
*/
|
|
16
|
+
readonly input?: Ref<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Style property written with the measured height.
|
|
19
|
+
*
|
|
20
|
+
* @default "height"
|
|
21
|
+
*/
|
|
22
|
+
readonly styleProp?: TextareaAutosizeStyleProperty;
|
|
23
|
+
/**
|
|
24
|
+
* Called after each resize with the new height.
|
|
25
|
+
*
|
|
26
|
+
* @default undefined
|
|
27
|
+
*/
|
|
28
|
+
readonly onResize?: (height: number) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Resize-observer capability used to re-measure when the width changes.
|
|
31
|
+
*
|
|
32
|
+
* @default globalThis when it provides `ResizeObserver`
|
|
33
|
+
*/
|
|
34
|
+
readonly host?: MaybeRefOrGetter<ResizeObserverHost | null | undefined>;
|
|
35
|
+
}
|
|
36
|
+
/** State returned by {@link useTextareaAutosize}. */
|
|
37
|
+
interface TextareaAutosizeControls {
|
|
38
|
+
/** Text bound to the textarea (use with `v-model`). */
|
|
39
|
+
readonly input: Ref<string>;
|
|
40
|
+
/** Re-measure immediately. */
|
|
41
|
+
readonly triggerResize: () => void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Grow a textarea to fit its content.
|
|
45
|
+
*
|
|
46
|
+
* On each input change (and when the element width changes), the style
|
|
47
|
+
* property is reset to `auto`, `scrollHeight` is read, and the height is
|
|
48
|
+
* written back in pixels. Nothing is measured during server rendering, so the
|
|
49
|
+
* markup keeps its declared `rows`.
|
|
50
|
+
*
|
|
51
|
+
* @param target Reactive textarea target.
|
|
52
|
+
* @param options Bound input, style property, callback, and observer capability.
|
|
53
|
+
* @default options {}
|
|
54
|
+
* @returns Bound input and a manual resize trigger.
|
|
55
|
+
*/
|
|
56
|
+
declare function useTextareaAutosize(target: MaybeElementTarget, options?: UseTextareaAutosizeOptions): TextareaAutosizeControls;
|
|
57
|
+
//#endregion
|
|
58
|
+
export { TextareaAutosizeControls, TextareaAutosizeStyleProperty, UseTextareaAutosizeOptions, useTextareaAutosize };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { useResizeObserver } from "./resize-observer.mjs";
|
|
4
|
+
import { ref, watch } from "vue";
|
|
5
|
+
//#region src/textarea-autosize.ts
|
|
6
|
+
/**
|
|
7
|
+
* Grow a textarea to fit its content.
|
|
8
|
+
*
|
|
9
|
+
* On each input change (and when the element width changes), the style
|
|
10
|
+
* property is reset to `auto`, `scrollHeight` is read, and the height is
|
|
11
|
+
* written back in pixels. Nothing is measured during server rendering, so the
|
|
12
|
+
* markup keeps its declared `rows`.
|
|
13
|
+
*
|
|
14
|
+
* @param target Reactive textarea target.
|
|
15
|
+
* @param options Bound input, style property, callback, and observer capability.
|
|
16
|
+
* @default options {}
|
|
17
|
+
* @returns Bound input and a manual resize trigger.
|
|
18
|
+
*/
|
|
19
|
+
function useTextareaAutosize(target, options = {}) {
|
|
20
|
+
const input = options.input ?? ref("");
|
|
21
|
+
const styleProp = options.styleProp ?? "height";
|
|
22
|
+
let lastWidth = -1;
|
|
23
|
+
const triggerResize = () => {
|
|
24
|
+
const element = resolveElement(target);
|
|
25
|
+
if (!element || !isAutosizeElement(element)) return;
|
|
26
|
+
element.style.setProperty(styleProp, "auto");
|
|
27
|
+
const height = element.scrollHeight;
|
|
28
|
+
element.style.setProperty(styleProp, `${height}px`);
|
|
29
|
+
options.onResize?.(height);
|
|
30
|
+
};
|
|
31
|
+
const stop = watch([input, () => resolveElement(target)], triggerResize, {
|
|
32
|
+
immediate: true,
|
|
33
|
+
flush: "post"
|
|
34
|
+
});
|
|
35
|
+
const observer = useResizeObserver(target, (entries) => {
|
|
36
|
+
const width = entries.at(-1)?.contentRect.width ?? -1;
|
|
37
|
+
if (width === lastWidth) return;
|
|
38
|
+
lastWidth = width;
|
|
39
|
+
triggerResize();
|
|
40
|
+
}, options.host === void 0 ? {} : { host: options.host });
|
|
41
|
+
tryOnScopeDispose(() => {
|
|
42
|
+
stop.stop();
|
|
43
|
+
observer.stop();
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
input,
|
|
47
|
+
triggerResize
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function isAutosizeElement(element) {
|
|
51
|
+
return "style" in element && typeof element.scrollHeight === "number";
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { useTextareaAutosize };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/timeout-scheduler.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Single-shot timer host used by the debounced and throttled state
|
|
4
|
+
* utilities.
|
|
5
|
+
*
|
|
6
|
+
* Implement this interface to integrate a deterministic test clock, a native
|
|
7
|
+
* runtime timer, or an application-owned scheduler. Handles are opaque: the
|
|
8
|
+
* utilities only hand them back to {@link TimeoutScheduler.clearTimeout}.
|
|
9
|
+
* This module declares types only and contributes no runtime code.
|
|
10
|
+
*/
|
|
11
|
+
interface TimeoutScheduler {
|
|
12
|
+
/** Starts a single-shot callback and returns its opaque cancellation handle. */
|
|
13
|
+
readonly setTimeout: (callback: () => void, delayMs: number) => unknown;
|
|
14
|
+
/** Cancels a handle previously returned by {@link TimeoutScheduler.setTimeout}. */
|
|
15
|
+
readonly clearTimeout: (handle: unknown) => void;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { TimeoutScheduler as t };
|
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* Single-shot timer host used by the debounced and throttled state
|
|
4
|
-
* utilities.
|
|
5
|
-
*
|
|
6
|
-
* Implement this interface to integrate a deterministic test clock, a native
|
|
7
|
-
* runtime timer, or an application-owned scheduler. Handles are opaque: the
|
|
8
|
-
* utilities only hand them back to {@link TimeoutScheduler.clearTimeout}.
|
|
9
|
-
* This module declares types only and contributes no runtime code.
|
|
10
|
-
*/
|
|
11
|
-
interface TimeoutScheduler {
|
|
12
|
-
/** Starts a single-shot callback and returns its opaque cancellation handle. */
|
|
13
|
-
readonly setTimeout: (callback: () => void, delayMs: number) => unknown;
|
|
14
|
-
/** Cancels a handle previously returned by {@link TimeoutScheduler.setTimeout}. */
|
|
15
|
-
readonly clearTimeout: (handle: unknown) => void;
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
18
2
|
export { TimeoutScheduler };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { MaybeRef, Reactive } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/to-reactive.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Reactive object view over a ref that holds an object.
|
|
6
|
+
*
|
|
7
|
+
* Property reads and writes go to the ref's current object, so replacing the
|
|
8
|
+
* ref's value swaps the whole object behind a stable reactive proxy (handy
|
|
9
|
+
* for `v-bind="state"` or destructuring-free templates). Nested refs are
|
|
10
|
+
* unwrapped on read and written through on assignment. A non-ref object is
|
|
11
|
+
* simply passed to `reactive`. SSR-safe and nothing to dispose.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const state = ref({ name: "a" });
|
|
16
|
+
* const view = toReactive(state);
|
|
17
|
+
* state.value = { name: "b" };
|
|
18
|
+
* view.name; // "b"
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param objectRef Ref (or plain object) holding the object.
|
|
22
|
+
* @returns A reactive proxy following the ref.
|
|
23
|
+
*/
|
|
24
|
+
declare function toReactive<Value extends object>(objectRef: MaybeRef<Value>): Reactive<Value>;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { toReactive };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { isRef, reactive, unref } from "vue";
|
|
2
|
+
//#region src/to-reactive.ts
|
|
3
|
+
/**
|
|
4
|
+
* Reactive object view over a ref that holds an object.
|
|
5
|
+
*
|
|
6
|
+
* Property reads and writes go to the ref's current object, so replacing the
|
|
7
|
+
* ref's value swaps the whole object behind a stable reactive proxy (handy
|
|
8
|
+
* for `v-bind="state"` or destructuring-free templates). Nested refs are
|
|
9
|
+
* unwrapped on read and written through on assignment. A non-ref object is
|
|
10
|
+
* simply passed to `reactive`. SSR-safe and nothing to dispose.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const state = ref({ name: "a" });
|
|
15
|
+
* const view = toReactive(state);
|
|
16
|
+
* state.value = { name: "b" };
|
|
17
|
+
* view.name; // "b"
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param objectRef Ref (or plain object) holding the object.
|
|
21
|
+
* @returns A reactive proxy following the ref.
|
|
22
|
+
*/
|
|
23
|
+
function toReactive(objectRef) {
|
|
24
|
+
if (!isRef(objectRef)) return reactive(objectRef);
|
|
25
|
+
return reactive(new Proxy(objectRef.value, {
|
|
26
|
+
get: (_target, property, receiver) => unref(Reflect.get(objectRef.value, property, receiver)),
|
|
27
|
+
set: (_target, property, value) => {
|
|
28
|
+
const current = Reflect.get(objectRef.value, property);
|
|
29
|
+
if (isRef(current) && !isRef(value)) current.value = value;
|
|
30
|
+
else Reflect.set(objectRef.value, property, value);
|
|
31
|
+
return true;
|
|
32
|
+
},
|
|
33
|
+
deleteProperty: (_target, property) => Reflect.deleteProperty(objectRef.value, property),
|
|
34
|
+
has: (_target, property) => Reflect.has(objectRef.value, property),
|
|
35
|
+
ownKeys: () => Reflect.ownKeys(objectRef.value),
|
|
36
|
+
getOwnPropertyDescriptor: (_target, property) => {
|
|
37
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(objectRef.value, property);
|
|
38
|
+
return descriptor === void 0 ? void 0 : {
|
|
39
|
+
...descriptor,
|
|
40
|
+
configurable: true
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { toReactive };
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/transition.d.ts
|
|
4
|
+
/** Cubic Bézier control points `[x1, y1, x2, y2]`. */
|
|
5
|
+
type CubicBezierPoints = readonly [number, number, number, number];
|
|
6
|
+
/** Easing: a preset name, cubic Bézier control points, or a function on `[0, 1]`. */
|
|
7
|
+
type TransitionEasing = TransitionPresetName | CubicBezierPoints | ((progress: number) => number);
|
|
8
|
+
/** Named cubic Bézier easing presets (the classic easings.net set). */
|
|
9
|
+
declare const TransitionPresets: {
|
|
10
|
+
readonly linear: readonly [0, 0, 1, 1];
|
|
11
|
+
readonly easeInSine: readonly [0.12, 0, 0.39, 0];
|
|
12
|
+
readonly easeOutSine: readonly [0.61, 1, 0.88, 1];
|
|
13
|
+
readonly easeInOutSine: readonly [0.37, 0, 0.63, 1];
|
|
14
|
+
readonly easeInQuad: readonly [0.11, 0, 0.5, 0];
|
|
15
|
+
readonly easeOutQuad: readonly [0.5, 1, 0.89, 1];
|
|
16
|
+
readonly easeInOutQuad: readonly [0.45, 0, 0.55, 1];
|
|
17
|
+
readonly easeInCubic: readonly [0.32, 0, 0.67, 0];
|
|
18
|
+
readonly easeOutCubic: readonly [0.33, 1, 0.68, 1];
|
|
19
|
+
readonly easeInOutCubic: readonly [0.65, 0, 0.35, 1];
|
|
20
|
+
readonly easeInQuart: readonly [0.5, 0, 0.75, 0];
|
|
21
|
+
readonly easeOutQuart: readonly [0.25, 1, 0.5, 1];
|
|
22
|
+
readonly easeInOutQuart: readonly [0.76, 0, 0.24, 1];
|
|
23
|
+
readonly easeInQuint: readonly [0.64, 0, 0.78, 0];
|
|
24
|
+
readonly easeOutQuint: readonly [0.22, 1, 0.36, 1];
|
|
25
|
+
readonly easeInOutQuint: readonly [0.83, 0, 0.17, 1];
|
|
26
|
+
readonly easeInExpo: readonly [0.7, 0, 0.84, 0];
|
|
27
|
+
readonly easeOutExpo: readonly [0.16, 1, 0.3, 1];
|
|
28
|
+
readonly easeInOutExpo: readonly [0.87, 0, 0.13, 1];
|
|
29
|
+
readonly easeInCirc: readonly [0.55, 0, 1, 0.45];
|
|
30
|
+
readonly easeOutCirc: readonly [0, 0.55, 0.45, 1];
|
|
31
|
+
readonly easeInOutCirc: readonly [0.85, 0, 0.15, 1];
|
|
32
|
+
readonly easeInBack: readonly [0.36, 0, 0.66, -0.56];
|
|
33
|
+
readonly easeOutBack: readonly [0.34, 1.56, 0.64, 1];
|
|
34
|
+
readonly easeInOutBack: readonly [0.68, -0.6, 0.32, 1.6];
|
|
35
|
+
};
|
|
36
|
+
/** Names of {@link TransitionPresets}. */
|
|
37
|
+
type TransitionPresetName = keyof typeof TransitionPresets;
|
|
38
|
+
/** Numeric value tweened by {@link useTransition}: a number or a fixed-length tuple. */
|
|
39
|
+
type TransitionValue = number | readonly number[];
|
|
40
|
+
/** Mutable tuple output matching a tuple source. */
|
|
41
|
+
type TransitionTupleOutput<Source extends readonly number[]> = { -readonly [Index in keyof Source]: number };
|
|
42
|
+
/** Frame scheduler used by {@link useTransition}. */
|
|
43
|
+
interface TransitionFrameHost {
|
|
44
|
+
/** Schedule a callback before the next repaint. */
|
|
45
|
+
readonly requestAnimationFrame: (callback: FrameRequestCallback) => number;
|
|
46
|
+
/** Cancel a scheduled frame. */
|
|
47
|
+
readonly cancelAnimationFrame: (handle: number) => void;
|
|
48
|
+
}
|
|
49
|
+
/** Options for {@link useTransition}. */
|
|
50
|
+
interface UseTransitionOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Duration in milliseconds.
|
|
53
|
+
*
|
|
54
|
+
* @default 1000
|
|
55
|
+
*/
|
|
56
|
+
readonly duration?: MaybeRefOrGetter<number>;
|
|
57
|
+
/**
|
|
58
|
+
* Delay before each transition starts, in milliseconds.
|
|
59
|
+
*
|
|
60
|
+
* @default 0
|
|
61
|
+
*/
|
|
62
|
+
readonly delay?: MaybeRefOrGetter<number>;
|
|
63
|
+
/**
|
|
64
|
+
* Easing function, preset name, or cubic Bézier points.
|
|
65
|
+
*
|
|
66
|
+
* @default "linear"
|
|
67
|
+
*/
|
|
68
|
+
readonly easing?: MaybeRefOrGetter<TransitionEasing>;
|
|
69
|
+
/**
|
|
70
|
+
* Jump to the source value without animating.
|
|
71
|
+
*
|
|
72
|
+
* @default false
|
|
73
|
+
*/
|
|
74
|
+
readonly disabled?: MaybeRefOrGetter<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Called when a transition starts.
|
|
77
|
+
*
|
|
78
|
+
* @default undefined
|
|
79
|
+
*/
|
|
80
|
+
readonly onStarted?: () => void;
|
|
81
|
+
/**
|
|
82
|
+
* Called when a transition reaches its target.
|
|
83
|
+
*
|
|
84
|
+
* @default undefined
|
|
85
|
+
*/
|
|
86
|
+
readonly onFinished?: () => void;
|
|
87
|
+
/**
|
|
88
|
+
* Frame scheduler. Without one (server rendering) the output mirrors the
|
|
89
|
+
* source immediately.
|
|
90
|
+
*
|
|
91
|
+
* @default globalThis.window when available
|
|
92
|
+
*/
|
|
93
|
+
readonly host?: MaybeRefOrGetter<TransitionFrameHost | null | undefined>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Tween a number toward its reactive source.
|
|
97
|
+
*
|
|
98
|
+
* Each source change starts a new transition from the current output, so
|
|
99
|
+
* interrupted transitions stay continuous. Easing presets and Bézier points
|
|
100
|
+
* are solved with Newton–Raphson plus bisection. Without a frame scheduler
|
|
101
|
+
* (server rendering, tests) the output equals the source, which keeps SSR
|
|
102
|
+
* deterministic. Pending frames are cancelled with the owning scope.
|
|
103
|
+
*
|
|
104
|
+
* @param source Reactive number.
|
|
105
|
+
* @param options Duration, delay, easing, callbacks, and frame capability.
|
|
106
|
+
* @returns Readonly tweened number.
|
|
107
|
+
*/
|
|
108
|
+
declare function useTransition(source: MaybeRefOrGetter<number>, options?: UseTransitionOptions): Readonly<Ref<number>>;
|
|
109
|
+
/**
|
|
110
|
+
* Tween each element of a fixed-length numeric tuple.
|
|
111
|
+
*
|
|
112
|
+
* @param source Reactive tuple; its length must stay constant.
|
|
113
|
+
* @param options Duration, delay, easing, callbacks, and frame capability.
|
|
114
|
+
* @returns Readonly tweened tuple with the same length.
|
|
115
|
+
*/
|
|
116
|
+
declare function useTransition<const Source extends readonly number[]>(source: MaybeRefOrGetter<Source>, options?: UseTransitionOptions): Readonly<Ref<TransitionTupleOutput<Source>>>;
|
|
117
|
+
/**
|
|
118
|
+
* Build an easing function from cubic Bézier control points.
|
|
119
|
+
*
|
|
120
|
+
* @param points `[x1, y1, x2, y2]` with `x1`/`x2` in `[0, 1]`.
|
|
121
|
+
* @returns Easing function mapping progress to eased progress.
|
|
122
|
+
*/
|
|
123
|
+
declare function cubicBezier(points: CubicBezierPoints): (progress: number) => number;
|
|
124
|
+
//#endregion
|
|
125
|
+
export { CubicBezierPoints, TransitionEasing, TransitionFrameHost, TransitionPresetName, TransitionPresets, TransitionTupleOutput, TransitionValue, UseTransitionOptions, cubicBezier, useTransition };
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { shallowRef, toValue, watch } from "vue";
|
|
3
|
+
//#region src/transition.ts
|
|
4
|
+
/** Named cubic Bézier easing presets (the classic easings.net set). */
|
|
5
|
+
const TransitionPresets = {
|
|
6
|
+
linear: [
|
|
7
|
+
0,
|
|
8
|
+
0,
|
|
9
|
+
1,
|
|
10
|
+
1
|
|
11
|
+
],
|
|
12
|
+
easeInSine: [
|
|
13
|
+
.12,
|
|
14
|
+
0,
|
|
15
|
+
.39,
|
|
16
|
+
0
|
|
17
|
+
],
|
|
18
|
+
easeOutSine: [
|
|
19
|
+
.61,
|
|
20
|
+
1,
|
|
21
|
+
.88,
|
|
22
|
+
1
|
|
23
|
+
],
|
|
24
|
+
easeInOutSine: [
|
|
25
|
+
.37,
|
|
26
|
+
0,
|
|
27
|
+
.63,
|
|
28
|
+
1
|
|
29
|
+
],
|
|
30
|
+
easeInQuad: [
|
|
31
|
+
.11,
|
|
32
|
+
0,
|
|
33
|
+
.5,
|
|
34
|
+
0
|
|
35
|
+
],
|
|
36
|
+
easeOutQuad: [
|
|
37
|
+
.5,
|
|
38
|
+
1,
|
|
39
|
+
.89,
|
|
40
|
+
1
|
|
41
|
+
],
|
|
42
|
+
easeInOutQuad: [
|
|
43
|
+
.45,
|
|
44
|
+
0,
|
|
45
|
+
.55,
|
|
46
|
+
1
|
|
47
|
+
],
|
|
48
|
+
easeInCubic: [
|
|
49
|
+
.32,
|
|
50
|
+
0,
|
|
51
|
+
.67,
|
|
52
|
+
0
|
|
53
|
+
],
|
|
54
|
+
easeOutCubic: [
|
|
55
|
+
.33,
|
|
56
|
+
1,
|
|
57
|
+
.68,
|
|
58
|
+
1
|
|
59
|
+
],
|
|
60
|
+
easeInOutCubic: [
|
|
61
|
+
.65,
|
|
62
|
+
0,
|
|
63
|
+
.35,
|
|
64
|
+
1
|
|
65
|
+
],
|
|
66
|
+
easeInQuart: [
|
|
67
|
+
.5,
|
|
68
|
+
0,
|
|
69
|
+
.75,
|
|
70
|
+
0
|
|
71
|
+
],
|
|
72
|
+
easeOutQuart: [
|
|
73
|
+
.25,
|
|
74
|
+
1,
|
|
75
|
+
.5,
|
|
76
|
+
1
|
|
77
|
+
],
|
|
78
|
+
easeInOutQuart: [
|
|
79
|
+
.76,
|
|
80
|
+
0,
|
|
81
|
+
.24,
|
|
82
|
+
1
|
|
83
|
+
],
|
|
84
|
+
easeInQuint: [
|
|
85
|
+
.64,
|
|
86
|
+
0,
|
|
87
|
+
.78,
|
|
88
|
+
0
|
|
89
|
+
],
|
|
90
|
+
easeOutQuint: [
|
|
91
|
+
.22,
|
|
92
|
+
1,
|
|
93
|
+
.36,
|
|
94
|
+
1
|
|
95
|
+
],
|
|
96
|
+
easeInOutQuint: [
|
|
97
|
+
.83,
|
|
98
|
+
0,
|
|
99
|
+
.17,
|
|
100
|
+
1
|
|
101
|
+
],
|
|
102
|
+
easeInExpo: [
|
|
103
|
+
.7,
|
|
104
|
+
0,
|
|
105
|
+
.84,
|
|
106
|
+
0
|
|
107
|
+
],
|
|
108
|
+
easeOutExpo: [
|
|
109
|
+
.16,
|
|
110
|
+
1,
|
|
111
|
+
.3,
|
|
112
|
+
1
|
|
113
|
+
],
|
|
114
|
+
easeInOutExpo: [
|
|
115
|
+
.87,
|
|
116
|
+
0,
|
|
117
|
+
.13,
|
|
118
|
+
1
|
|
119
|
+
],
|
|
120
|
+
easeInCirc: [
|
|
121
|
+
.55,
|
|
122
|
+
0,
|
|
123
|
+
1,
|
|
124
|
+
.45
|
|
125
|
+
],
|
|
126
|
+
easeOutCirc: [
|
|
127
|
+
0,
|
|
128
|
+
.55,
|
|
129
|
+
.45,
|
|
130
|
+
1
|
|
131
|
+
],
|
|
132
|
+
easeInOutCirc: [
|
|
133
|
+
.85,
|
|
134
|
+
0,
|
|
135
|
+
.15,
|
|
136
|
+
1
|
|
137
|
+
],
|
|
138
|
+
easeInBack: [
|
|
139
|
+
.36,
|
|
140
|
+
0,
|
|
141
|
+
.66,
|
|
142
|
+
-.56
|
|
143
|
+
],
|
|
144
|
+
easeOutBack: [
|
|
145
|
+
.34,
|
|
146
|
+
1.56,
|
|
147
|
+
.64,
|
|
148
|
+
1
|
|
149
|
+
],
|
|
150
|
+
easeInOutBack: [
|
|
151
|
+
.68,
|
|
152
|
+
-.6,
|
|
153
|
+
.32,
|
|
154
|
+
1.6
|
|
155
|
+
]
|
|
156
|
+
};
|
|
157
|
+
function useTransition(source, options = {}) {
|
|
158
|
+
const output = shallowRef(copy(toValue(source)));
|
|
159
|
+
let cancel = () => void 0;
|
|
160
|
+
const stop = watch(() => copy(toValue(source)), (target) => {
|
|
161
|
+
cancel();
|
|
162
|
+
const host = options.host === void 0 ? browserFrameHost() : toValue(options.host);
|
|
163
|
+
const duration = Math.max(0, toValue(options.duration) ?? 1e3);
|
|
164
|
+
if (!host || toValue(options.disabled) || duration === 0) {
|
|
165
|
+
output.value = target;
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const from = output.value;
|
|
169
|
+
const ease = toEasingFunction(toValue(options.easing) ?? "linear");
|
|
170
|
+
const delay = Math.max(0, toValue(options.delay) ?? 0);
|
|
171
|
+
let startedAt;
|
|
172
|
+
let started = false;
|
|
173
|
+
let handle = 0;
|
|
174
|
+
const frame = (time) => {
|
|
175
|
+
startedAt ??= time + delay;
|
|
176
|
+
const elapsed = time - startedAt;
|
|
177
|
+
if (elapsed < 0) {
|
|
178
|
+
handle = host.requestAnimationFrame(frame);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (!started) {
|
|
182
|
+
started = true;
|
|
183
|
+
options.onStarted?.();
|
|
184
|
+
}
|
|
185
|
+
const progress = Math.min(1, elapsed / duration);
|
|
186
|
+
output.value = interpolate(from, target, ease(progress));
|
|
187
|
+
if (progress < 1) {
|
|
188
|
+
handle = host.requestAnimationFrame(frame);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
cancel = () => void 0;
|
|
192
|
+
options.onFinished?.();
|
|
193
|
+
};
|
|
194
|
+
handle = host.requestAnimationFrame(frame);
|
|
195
|
+
cancel = () => {
|
|
196
|
+
host.cancelAnimationFrame(handle);
|
|
197
|
+
cancel = () => void 0;
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
tryOnScopeDispose(() => {
|
|
201
|
+
stop.stop();
|
|
202
|
+
cancel();
|
|
203
|
+
});
|
|
204
|
+
return output;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Build an easing function from cubic Bézier control points.
|
|
208
|
+
*
|
|
209
|
+
* @param points `[x1, y1, x2, y2]` with `x1`/`x2` in `[0, 1]`.
|
|
210
|
+
* @returns Easing function mapping progress to eased progress.
|
|
211
|
+
*/
|
|
212
|
+
function cubicBezier(points) {
|
|
213
|
+
const [x1, y1, x2, y2] = points;
|
|
214
|
+
const a = (p1, p2) => 1 - 3 * p2 + 3 * p1;
|
|
215
|
+
const b = (p1, p2) => 3 * p2 - 6 * p1;
|
|
216
|
+
const c = (p1) => 3 * p1;
|
|
217
|
+
const at = (t, p1, p2) => ((a(p1, p2) * t + b(p1, p2)) * t + c(p1)) * t;
|
|
218
|
+
const slope = (t, p1, p2) => 3 * a(p1, p2) * t * t + 2 * b(p1, p2) * t + c(p1);
|
|
219
|
+
const solve = (x) => {
|
|
220
|
+
let t = x;
|
|
221
|
+
for (let iteration = 0; iteration < 8; iteration += 1) {
|
|
222
|
+
const error = at(t, x1, x2) - x;
|
|
223
|
+
if (Math.abs(error) < 1e-7) return t;
|
|
224
|
+
const derivative = slope(t, x1, x2);
|
|
225
|
+
if (Math.abs(derivative) < 1e-6) break;
|
|
226
|
+
t -= error / derivative;
|
|
227
|
+
}
|
|
228
|
+
let low = 0;
|
|
229
|
+
let high = 1;
|
|
230
|
+
t = x;
|
|
231
|
+
while (high - low > 1e-7) {
|
|
232
|
+
if (at(t, x1, x2) < x) low = t;
|
|
233
|
+
else high = t;
|
|
234
|
+
t = (low + high) / 2;
|
|
235
|
+
}
|
|
236
|
+
return t;
|
|
237
|
+
};
|
|
238
|
+
return (progress) => {
|
|
239
|
+
if (progress <= 0) return 0;
|
|
240
|
+
if (progress >= 1) return 1;
|
|
241
|
+
if (x1 === y1 && x2 === y2) return progress;
|
|
242
|
+
return at(solve(progress), y1, y2);
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function toEasingFunction(easing) {
|
|
246
|
+
if (typeof easing === "function") return easing;
|
|
247
|
+
return cubicBezier(typeof easing === "string" ? TransitionPresets[easing] : easing);
|
|
248
|
+
}
|
|
249
|
+
function copy(value) {
|
|
250
|
+
return typeof value === "number" ? value : [...value];
|
|
251
|
+
}
|
|
252
|
+
function interpolate(from, to, progress) {
|
|
253
|
+
if (typeof to === "number") {
|
|
254
|
+
const start = typeof from === "number" ? from : to;
|
|
255
|
+
return start + (to - start) * progress;
|
|
256
|
+
}
|
|
257
|
+
return to.map((target, index) => {
|
|
258
|
+
const start = typeof from === "number" ? target : from[index] ?? target;
|
|
259
|
+
return start + (target - start) * progress;
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
function browserFrameHost() {
|
|
263
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
264
|
+
}
|
|
265
|
+
//#endregion
|
|
266
|
+
export { TransitionPresets, cubicBezier, useTransition };
|