@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
package/dist/math.d.mts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRefOrGetter, Ref, WritableComputedRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/math.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Number kept inside `[min, max]`.
|
|
6
|
+
*
|
|
7
|
+
* A writable source (a number or a writable ref) yields a writable ref whose
|
|
8
|
+
* reads and writes are clamped; writes go through to the source ref. A
|
|
9
|
+
* getter or computed source yields a readonly computed. Bounds are reactive.
|
|
10
|
+
* Pure derived state: SSR-safe and nothing to dispose.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const volume = useClamp(50, 0, 100);
|
|
15
|
+
* volume.value = 150; // 100
|
|
16
|
+
* const progress = useClamp(() => loaded.value / total.value, 0, 1);
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @param value Source number, writable ref, or getter.
|
|
20
|
+
* @param min Reactive inclusive lower bound.
|
|
21
|
+
* @param max Reactive inclusive upper bound.
|
|
22
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_MATH_INVALID_RANGE` on read or
|
|
23
|
+
* write when `min > max`.
|
|
24
|
+
* @returns Writable clamped ref, or a readonly computed for getters.
|
|
25
|
+
*/
|
|
26
|
+
declare function useClamp(value: (() => number) | ComputedRef<number>, min: MaybeRefOrGetter<number>, max: MaybeRefOrGetter<number>): ComputedRef<number>;
|
|
27
|
+
declare function useClamp(value: number | Ref<number>, min: MaybeRefOrGetter<number>, max: MaybeRefOrGetter<number>): WritableComputedRef<number>;
|
|
28
|
+
/** Rounding strategy used by {@link useRound}. */
|
|
29
|
+
type RoundingMethod = "round" | "floor" | "ceil" | "trunc";
|
|
30
|
+
/** Options for {@link useRound}. */
|
|
31
|
+
interface UseRoundOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Decimal places to keep; negative values round to tens, hundreds, …
|
|
34
|
+
* Reactive.
|
|
35
|
+
*
|
|
36
|
+
* @default 0
|
|
37
|
+
*/
|
|
38
|
+
readonly precision?: MaybeRefOrGetter<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Rounding strategy.
|
|
41
|
+
*
|
|
42
|
+
* @default "round"
|
|
43
|
+
*/
|
|
44
|
+
readonly method?: RoundingMethod;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Reactive rounding with decimal precision.
|
|
48
|
+
*
|
|
49
|
+
* Uses exponent shifting instead of multiplying by powers of ten, so values
|
|
50
|
+
* such as `1.005` round to `1.01` at two decimals. Pure derived state.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* const price = useRound(rawPrice, { precision: 2 });
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @param value Reactive number.
|
|
58
|
+
* @param options Precision and method.
|
|
59
|
+
* @default options {}
|
|
60
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_MATH_INVALID_PRECISION` on read
|
|
61
|
+
* when the precision is not an integer.
|
|
62
|
+
* @returns Computed rounded number.
|
|
63
|
+
*/
|
|
64
|
+
declare function useRound(value: MaybeRefOrGetter<number>, options?: UseRoundOptions): ComputedRef<number>;
|
|
65
|
+
/** A `[start, end]` numeric interval. */
|
|
66
|
+
type ProjectionDomain = readonly [start: number, end: number];
|
|
67
|
+
/** Options for {@link useProjection}. */
|
|
68
|
+
interface UseProjectionOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Clamp the result into the target domain.
|
|
71
|
+
*
|
|
72
|
+
* @default false
|
|
73
|
+
*/
|
|
74
|
+
readonly clamp?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Linearly map a value from one domain to another.
|
|
78
|
+
*
|
|
79
|
+
* Domains are reactive tuples and may be reversed (`[100, 0]`). A degenerate
|
|
80
|
+
* source domain maps everything to the target start. Pure derived state.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* const percent = useProjection(scrollY, () => [0, maxScroll.value], [0, 100], { clamp: true });
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @param value Reactive number in the source domain.
|
|
88
|
+
* @param from Reactive source domain.
|
|
89
|
+
* @param to Reactive target domain.
|
|
90
|
+
* @param options Clamping.
|
|
91
|
+
* @default options {}
|
|
92
|
+
* @returns Computed projected number.
|
|
93
|
+
*/
|
|
94
|
+
declare function useProjection(value: MaybeRefOrGetter<number>, from: MaybeRefOrGetter<ProjectionDomain>, to: MaybeRefOrGetter<ProjectionDomain>, options?: UseProjectionOptions): ComputedRef<number>;
|
|
95
|
+
//#endregion
|
|
96
|
+
export { ProjectionDomain, RoundingMethod, UseProjectionOptions, UseRoundOptions, useClamp, useProjection, useRound };
|
package/dist/math.mjs
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { computed, isReadonly, isRef, shallowRef, toValue } from "vue";
|
|
2
|
+
//#region src/math.ts
|
|
3
|
+
function clampNumber(value, min, max) {
|
|
4
|
+
if (min > max) throw new RangeError(`[VIZE_COMPOSE_MATH_INVALID_RANGE] min must not exceed max; received [${String(min)}, ${String(max)}]`);
|
|
5
|
+
return Math.min(max, Math.max(min, value));
|
|
6
|
+
}
|
|
7
|
+
function isWritableRef(value) {
|
|
8
|
+
return isRef(value) && !isReadonly(value);
|
|
9
|
+
}
|
|
10
|
+
function useClamp(value, min, max) {
|
|
11
|
+
let source;
|
|
12
|
+
if (isWritableRef(value)) source = value;
|
|
13
|
+
else if (typeof value === "number") source = shallowRef(value);
|
|
14
|
+
else return computed(() => clampNumber(toValue(value), toValue(min), toValue(max)));
|
|
15
|
+
return computed({
|
|
16
|
+
get: () => clampNumber(source.value, toValue(min), toValue(max)),
|
|
17
|
+
set: (next) => {
|
|
18
|
+
source.value = clampNumber(next, toValue(min), toValue(max));
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** Multiply by `10 ** places` exactly, by editing the decimal exponent. */
|
|
23
|
+
function shiftExponent(value, places) {
|
|
24
|
+
const [mantissa, exponent = "0"] = String(value).split("e");
|
|
25
|
+
return Number(`${mantissa}e${Number(exponent) + places}`);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reactive rounding with decimal precision.
|
|
29
|
+
*
|
|
30
|
+
* Uses exponent shifting instead of multiplying by powers of ten, so values
|
|
31
|
+
* such as `1.005` round to `1.01` at two decimals. Pure derived state.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const price = useRound(rawPrice, { precision: 2 });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param value Reactive number.
|
|
39
|
+
* @param options Precision and method.
|
|
40
|
+
* @default options {}
|
|
41
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_MATH_INVALID_PRECISION` on read
|
|
42
|
+
* when the precision is not an integer.
|
|
43
|
+
* @returns Computed rounded number.
|
|
44
|
+
*/
|
|
45
|
+
function useRound(value, options = {}) {
|
|
46
|
+
return computed(() => {
|
|
47
|
+
const precision = toValue(options.precision ?? 0);
|
|
48
|
+
if (!Number.isInteger(precision)) throw new RangeError(`[VIZE_COMPOSE_MATH_INVALID_PRECISION] precision must be an integer; received ${String(precision)}`);
|
|
49
|
+
const number = toValue(value);
|
|
50
|
+
if (!Number.isFinite(number)) return number;
|
|
51
|
+
const round = Math[options.method ?? "round"];
|
|
52
|
+
return shiftExponent(round(shiftExponent(number, precision)), -precision);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Linearly map a value from one domain to another.
|
|
57
|
+
*
|
|
58
|
+
* Domains are reactive tuples and may be reversed (`[100, 0]`). A degenerate
|
|
59
|
+
* source domain maps everything to the target start. Pure derived state.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const percent = useProjection(scrollY, () => [0, maxScroll.value], [0, 100], { clamp: true });
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @param value Reactive number in the source domain.
|
|
67
|
+
* @param from Reactive source domain.
|
|
68
|
+
* @param to Reactive target domain.
|
|
69
|
+
* @param options Clamping.
|
|
70
|
+
* @default options {}
|
|
71
|
+
* @returns Computed projected number.
|
|
72
|
+
*/
|
|
73
|
+
function useProjection(value, from, to, options = {}) {
|
|
74
|
+
return computed(() => {
|
|
75
|
+
const [fromStart, fromEnd] = toValue(from);
|
|
76
|
+
const [toStart, toEnd] = toValue(to);
|
|
77
|
+
const span = fromEnd - fromStart;
|
|
78
|
+
const projected = toStart + (span === 0 ? 0 : (toValue(value) - fromStart) / span) * (toEnd - toStart);
|
|
79
|
+
if (!(options.clamp ?? false)) return projected;
|
|
80
|
+
return Math.min(Math.max(projected, Math.min(toStart, toEnd)), Math.max(toStart, toEnd));
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { useClamp, useProjection, useRound };
|
package/dist/media-query.d.mts
CHANGED
|
@@ -25,7 +25,9 @@ interface UseMediaQueryOptions {
|
|
|
25
25
|
* Evaluate a reactive media query without requiring browser globals.
|
|
26
26
|
*
|
|
27
27
|
* During server rendering (or whenever no capability host resolves) the ref
|
|
28
|
-
* holds the configured server value and no subscription is created.
|
|
28
|
+
* holds the configured server value and no subscription is created. Inside a
|
|
29
|
+
* component the first match is read after mounting, so hydration renders the
|
|
30
|
+
* server value first and never mismatches. The
|
|
29
31
|
* change subscription follows the reactive query and host: each
|
|
30
32
|
* re-evaluation removes the previous listener, and the final listener is
|
|
31
33
|
* removed when the owning reactive scope stops. Call inside an active scope
|
package/dist/media-query.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { computed, readonly, ref, toValue, watchEffect } from "vue";
|
|
1
|
+
import { computed, hasInjectionContext, readonly, ref, toValue, watchEffect } from "vue";
|
|
2
2
|
//#region src/media-query.ts
|
|
3
3
|
/**
|
|
4
4
|
* Evaluate a reactive media query without requiring browser globals.
|
|
5
5
|
*
|
|
6
6
|
* During server rendering (or whenever no capability host resolves) the ref
|
|
7
|
-
* holds the configured server value and no subscription is created.
|
|
7
|
+
* holds the configured server value and no subscription is created. Inside a
|
|
8
|
+
* component the first match is read after mounting, so hydration renders the
|
|
9
|
+
* server value first and never mismatches. The
|
|
8
10
|
* change subscription follows the reactive query and host: each
|
|
9
11
|
* re-evaluation removes the previous listener, and the final listener is
|
|
10
12
|
* removed when the owning reactive scope stops. Call inside an active scope
|
|
@@ -31,7 +33,7 @@ function useMediaQuery(query, options = {}) {
|
|
|
31
33
|
update();
|
|
32
34
|
media.addEventListener("change", update);
|
|
33
35
|
onCleanup(() => media.removeEventListener("change", update));
|
|
34
|
-
});
|
|
36
|
+
}, { flush: hasInjectionContext() ? "post" : "pre" });
|
|
35
37
|
return readonly(matches);
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
2
|
+
import { MouseControls, UseMouseOptions } from "./mouse.mjs";
|
|
3
|
+
import { Ref } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/mouse-in-element.d.ts
|
|
6
|
+
/** Options for {@link useMouseInElement}. */
|
|
7
|
+
interface UseMouseInElementOptions extends Omit<UseMouseOptions, "type"> {
|
|
8
|
+
/**
|
|
9
|
+
* Keep updating element-relative coordinates while the pointer is outside
|
|
10
|
+
* the element. When `false`, they freeze at the last inside position.
|
|
11
|
+
*
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
readonly handleOutside?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Reactive state returned by {@link useMouseInElement}. */
|
|
17
|
+
interface MouseInElementControls extends MouseControls {
|
|
18
|
+
/** Pointer position relative to the element's left edge. */
|
|
19
|
+
readonly elementX: Readonly<Ref<number>>;
|
|
20
|
+
/** Pointer position relative to the element's top edge. */
|
|
21
|
+
readonly elementY: Readonly<Ref<number>>;
|
|
22
|
+
/** Element left edge in viewport coordinates at the latest update. */
|
|
23
|
+
readonly elementPositionX: Readonly<Ref<number>>;
|
|
24
|
+
/** Element top edge in viewport coordinates at the latest update. */
|
|
25
|
+
readonly elementPositionY: Readonly<Ref<number>>;
|
|
26
|
+
/** Element width at the latest update. */
|
|
27
|
+
readonly elementWidth: Readonly<Ref<number>>;
|
|
28
|
+
/** Element height at the latest update. */
|
|
29
|
+
readonly elementHeight: Readonly<Ref<number>>;
|
|
30
|
+
/** Whether the pointer is outside the element. `true` during server rendering. */
|
|
31
|
+
readonly isOutside: Readonly<Ref<boolean>>;
|
|
32
|
+
/** Stop updating element-relative state. Idempotent. */
|
|
33
|
+
readonly stop: () => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Track the pointer position relative to an element.
|
|
37
|
+
*
|
|
38
|
+
* Built on {@link useMouse} in client coordinates: every move re-reads the
|
|
39
|
+
* element rectangle, so transforms and scrolling are reflected. Server
|
|
40
|
+
* renders report zero geometry and `isOutside: true`.
|
|
41
|
+
*
|
|
42
|
+
* @param target Reactive element target.
|
|
43
|
+
* @param options Outside handling plus {@link useMouse} options.
|
|
44
|
+
* @default options {}
|
|
45
|
+
* @returns Pointer, element-relative, and geometry refs.
|
|
46
|
+
*/
|
|
47
|
+
declare function useMouseInElement(target: MaybeElementTarget, options?: UseMouseInElementOptions): MouseInElementControls;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { MouseInElementControls, UseMouseInElementOptions, useMouseInElement };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { useMouse } from "./mouse.mjs";
|
|
4
|
+
import { computed, readonly, ref, watch } from "vue";
|
|
5
|
+
//#region src/mouse-in-element.ts
|
|
6
|
+
/**
|
|
7
|
+
* Track the pointer position relative to an element.
|
|
8
|
+
*
|
|
9
|
+
* Built on {@link useMouse} in client coordinates: every move re-reads the
|
|
10
|
+
* element rectangle, so transforms and scrolling are reflected. Server
|
|
11
|
+
* renders report zero geometry and `isOutside: true`.
|
|
12
|
+
*
|
|
13
|
+
* @param target Reactive element target.
|
|
14
|
+
* @param options Outside handling plus {@link useMouse} options.
|
|
15
|
+
* @default options {}
|
|
16
|
+
* @returns Pointer, element-relative, and geometry refs.
|
|
17
|
+
*/
|
|
18
|
+
function useMouseInElement(target, options = {}) {
|
|
19
|
+
const handleOutside = options.handleOutside ?? true;
|
|
20
|
+
const mouse = useMouse({
|
|
21
|
+
...options,
|
|
22
|
+
type: "client"
|
|
23
|
+
});
|
|
24
|
+
const elementX = ref(0);
|
|
25
|
+
const elementY = ref(0);
|
|
26
|
+
const elementPositionX = ref(0);
|
|
27
|
+
const elementPositionY = ref(0);
|
|
28
|
+
const elementWidth = ref(0);
|
|
29
|
+
const elementHeight = ref(0);
|
|
30
|
+
const isOutside = ref(true);
|
|
31
|
+
const stopWatch = watch([
|
|
32
|
+
computed(() => resolveElement(target)),
|
|
33
|
+
mouse.x,
|
|
34
|
+
mouse.y,
|
|
35
|
+
mouse.sourceType
|
|
36
|
+
], ([currentElement, x, y, source]) => {
|
|
37
|
+
if (!currentElement || source === null) return;
|
|
38
|
+
const rect = currentElement.getBoundingClientRect();
|
|
39
|
+
elementPositionX.value = rect.left;
|
|
40
|
+
elementPositionY.value = rect.top;
|
|
41
|
+
elementWidth.value = rect.width;
|
|
42
|
+
elementHeight.value = rect.height;
|
|
43
|
+
const relativeX = x - rect.left;
|
|
44
|
+
const relativeY = y - rect.top;
|
|
45
|
+
isOutside.value = rect.width === 0 || rect.height === 0 || relativeX < 0 || relativeY < 0 || relativeX > rect.width || relativeY > rect.height;
|
|
46
|
+
if (handleOutside || !isOutside.value) {
|
|
47
|
+
elementX.value = relativeX;
|
|
48
|
+
elementY.value = relativeY;
|
|
49
|
+
}
|
|
50
|
+
}, { flush: "sync" });
|
|
51
|
+
const stop = () => stopWatch.stop();
|
|
52
|
+
tryOnScopeDispose(stop);
|
|
53
|
+
return {
|
|
54
|
+
...mouse,
|
|
55
|
+
elementX: readonly(elementX),
|
|
56
|
+
elementY: readonly(elementY),
|
|
57
|
+
elementPositionX: readonly(elementPositionX),
|
|
58
|
+
elementPositionY: readonly(elementPositionY),
|
|
59
|
+
elementWidth: readonly(elementWidth),
|
|
60
|
+
elementHeight: readonly(elementHeight),
|
|
61
|
+
isOutside: readonly(isOutside),
|
|
62
|
+
stop
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { useMouseInElement };
|
package/dist/mouse.d.mts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/mouse.d.ts
|
|
4
|
+
/** Coordinate space reported by {@link useMouse}. */
|
|
5
|
+
type MouseCoordinateType = "page" | "client" | "screen" | "movement";
|
|
6
|
+
/** Input device that produced the latest coordinates. */
|
|
7
|
+
type MouseSourceType = "mouse" | "touch";
|
|
8
|
+
/** Two-dimensional coordinate in CSS pixels. */
|
|
9
|
+
interface Point {
|
|
10
|
+
/** Horizontal coordinate. */
|
|
11
|
+
readonly x: number;
|
|
12
|
+
/** Vertical coordinate. */
|
|
13
|
+
readonly y: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Custom coordinate extractor. Return `null` to ignore an event.
|
|
17
|
+
*
|
|
18
|
+
* Receives the mouse event, or the first touch point for touch input.
|
|
19
|
+
*/
|
|
20
|
+
type MouseCoordinateExtractor = (input: MouseEvent | Touch) => Point | null;
|
|
21
|
+
/** Options for {@link useMouse}. */
|
|
22
|
+
interface UseMouseOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Coordinate space, or a custom extractor.
|
|
25
|
+
*
|
|
26
|
+
* @default "page"
|
|
27
|
+
*/
|
|
28
|
+
readonly type?: MouseCoordinateType | MouseCoordinateExtractor;
|
|
29
|
+
/**
|
|
30
|
+
* Event target to listen on.
|
|
31
|
+
*
|
|
32
|
+
* @default globalThis.window when available
|
|
33
|
+
*/
|
|
34
|
+
readonly target?: MaybeRefOrGetter<EventTarget | null | undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Track touch input in addition to mouse input.
|
|
37
|
+
*
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
40
|
+
readonly touch?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Restore `initialValue` when a touch ends.
|
|
43
|
+
*
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
readonly resetOnTouchEnds?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Coordinates exposed before any input and during server rendering.
|
|
49
|
+
*
|
|
50
|
+
* @default { x: 0, y: 0 }
|
|
51
|
+
*/
|
|
52
|
+
readonly initialValue?: Point;
|
|
53
|
+
}
|
|
54
|
+
/** Reactive pointer position returned by {@link useMouse}. */
|
|
55
|
+
interface MouseControls {
|
|
56
|
+
/** Latest horizontal coordinate. */
|
|
57
|
+
readonly x: Readonly<Ref<number>>;
|
|
58
|
+
/** Latest vertical coordinate. */
|
|
59
|
+
readonly y: Readonly<Ref<number>>;
|
|
60
|
+
/** Device that produced the latest coordinates; `null` before any input. */
|
|
61
|
+
readonly sourceType: Readonly<Ref<MouseSourceType | null>>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Track the mouse (and optionally touch) position.
|
|
65
|
+
*
|
|
66
|
+
* Listens passively for `mousemove`, `dragover`, and touch events on the
|
|
67
|
+
* target; listeners follow the reactive target and are removed with the
|
|
68
|
+
* owning reactive scope. Server renders expose `initialValue` with a `null`
|
|
69
|
+
* source type.
|
|
70
|
+
*
|
|
71
|
+
* @param options Coordinate space, target, touch handling, and initial value.
|
|
72
|
+
* @default options {}
|
|
73
|
+
* @returns Reactive coordinates and input source.
|
|
74
|
+
*/
|
|
75
|
+
declare function useMouse(options?: UseMouseOptions): MouseControls;
|
|
76
|
+
//#endregion
|
|
77
|
+
export { MouseControls, MouseCoordinateExtractor, MouseCoordinateType, MouseSourceType, Point, UseMouseOptions, useMouse };
|
package/dist/mouse.mjs
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { readonly, ref, toValue, watch } from "vue";
|
|
3
|
+
//#region src/mouse.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track the mouse (and optionally touch) position.
|
|
6
|
+
*
|
|
7
|
+
* Listens passively for `mousemove`, `dragover`, and touch events on the
|
|
8
|
+
* target; listeners follow the reactive target and are removed with the
|
|
9
|
+
* owning reactive scope. Server renders expose `initialValue` with a `null`
|
|
10
|
+
* source type.
|
|
11
|
+
*
|
|
12
|
+
* @param options Coordinate space, target, touch handling, and initial value.
|
|
13
|
+
* @default options {}
|
|
14
|
+
* @returns Reactive coordinates and input source.
|
|
15
|
+
*/
|
|
16
|
+
function useMouse(options = {}) {
|
|
17
|
+
const { touch = true, resetOnTouchEnds = false } = options;
|
|
18
|
+
const initial = options.initialValue ?? {
|
|
19
|
+
x: 0,
|
|
20
|
+
y: 0
|
|
21
|
+
};
|
|
22
|
+
const extract = extractorFor(options.type ?? "page");
|
|
23
|
+
const x = ref(initial.x);
|
|
24
|
+
const y = ref(initial.y);
|
|
25
|
+
const sourceType = ref(null);
|
|
26
|
+
const apply = (point, source) => {
|
|
27
|
+
if (!point) return;
|
|
28
|
+
x.value = point.x;
|
|
29
|
+
y.value = point.y;
|
|
30
|
+
sourceType.value = source;
|
|
31
|
+
};
|
|
32
|
+
const onMouse = (event) => {
|
|
33
|
+
if (isMouseEvent(event)) apply(extract(event), "mouse");
|
|
34
|
+
};
|
|
35
|
+
const onTouch = (event) => {
|
|
36
|
+
if (!isTouchEvent(event)) return;
|
|
37
|
+
const first = event.touches[0];
|
|
38
|
+
if (first) apply(extract(first), "touch");
|
|
39
|
+
};
|
|
40
|
+
const onTouchEnd = () => {
|
|
41
|
+
x.value = initial.x;
|
|
42
|
+
y.value = initial.y;
|
|
43
|
+
};
|
|
44
|
+
const stop = watch(() => options.target === void 0 ? browserWindow() : toValue(options.target), (target, _previous, onCleanup) => {
|
|
45
|
+
if (!target) return;
|
|
46
|
+
const listenerOptions = { passive: true };
|
|
47
|
+
target.addEventListener("mousemove", onMouse, listenerOptions);
|
|
48
|
+
target.addEventListener("dragover", onMouse, listenerOptions);
|
|
49
|
+
if (touch) {
|
|
50
|
+
target.addEventListener("touchstart", onTouch, listenerOptions);
|
|
51
|
+
target.addEventListener("touchmove", onTouch, listenerOptions);
|
|
52
|
+
if (resetOnTouchEnds) target.addEventListener("touchend", onTouchEnd, listenerOptions);
|
|
53
|
+
}
|
|
54
|
+
onCleanup(() => {
|
|
55
|
+
target.removeEventListener("mousemove", onMouse);
|
|
56
|
+
target.removeEventListener("dragover", onMouse);
|
|
57
|
+
target.removeEventListener("touchstart", onTouch);
|
|
58
|
+
target.removeEventListener("touchmove", onTouch);
|
|
59
|
+
target.removeEventListener("touchend", onTouchEnd);
|
|
60
|
+
});
|
|
61
|
+
}, { immediate: true });
|
|
62
|
+
tryOnScopeDispose(() => stop.stop());
|
|
63
|
+
return {
|
|
64
|
+
x: readonly(x),
|
|
65
|
+
y: readonly(y),
|
|
66
|
+
sourceType: readonly(sourceType)
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function extractorFor(type) {
|
|
70
|
+
if (typeof type === "function") return type;
|
|
71
|
+
switch (type) {
|
|
72
|
+
case "page": return (input) => ({
|
|
73
|
+
x: input.pageX,
|
|
74
|
+
y: input.pageY
|
|
75
|
+
});
|
|
76
|
+
case "client": return (input) => ({
|
|
77
|
+
x: input.clientX,
|
|
78
|
+
y: input.clientY
|
|
79
|
+
});
|
|
80
|
+
case "screen": return (input) => ({
|
|
81
|
+
x: input.screenX,
|
|
82
|
+
y: input.screenY
|
|
83
|
+
});
|
|
84
|
+
case "movement": return (input) => "movementX" in input ? {
|
|
85
|
+
x: input.movementX,
|
|
86
|
+
y: input.movementY
|
|
87
|
+
} : null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function isMouseEvent(event) {
|
|
91
|
+
return "clientX" in event && "button" in event;
|
|
92
|
+
}
|
|
93
|
+
function isTouchEvent(event) {
|
|
94
|
+
return "touches" in event;
|
|
95
|
+
}
|
|
96
|
+
function browserWindow() {
|
|
97
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { useMouse };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { r as MaybeElementTargets } from "./element-target-Crpxl4D9.mjs";
|
|
2
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/mutation-observer.d.ts
|
|
5
|
+
/** Runtime capability that supplies the `MutationObserver` constructor. */
|
|
6
|
+
interface MutationObserverHost {
|
|
7
|
+
/** `MutationObserver` constructor, absent in unsupported runtimes. */
|
|
8
|
+
readonly MutationObserver?: new (callback: MutationCallback) => MutationObserver;
|
|
9
|
+
}
|
|
10
|
+
/** Options for {@link useMutationObserver}. */
|
|
11
|
+
interface UseMutationObserverOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Observe attribute changes.
|
|
14
|
+
*
|
|
15
|
+
* @default false (implicitly `true` when `attributeFilter` or `attributeOldValue` is set)
|
|
16
|
+
*/
|
|
17
|
+
readonly attributes?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Observe child-list changes.
|
|
20
|
+
*
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
readonly childList?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Extend observation to the whole subtree.
|
|
26
|
+
*
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
readonly subtree?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Observe text-content changes.
|
|
32
|
+
*
|
|
33
|
+
* @default false (implicitly `true` when `characterDataOldValue` is set)
|
|
34
|
+
*/
|
|
35
|
+
readonly characterData?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Record the previous attribute value.
|
|
38
|
+
*
|
|
39
|
+
* @default false
|
|
40
|
+
*/
|
|
41
|
+
readonly attributeOldValue?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Record the previous text value.
|
|
44
|
+
*
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
readonly characterDataOldValue?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Restrict attribute observation to these local names.
|
|
50
|
+
*
|
|
51
|
+
* @default undefined (all attributes)
|
|
52
|
+
*/
|
|
53
|
+
readonly attributeFilter?: readonly string[];
|
|
54
|
+
/**
|
|
55
|
+
* Reactive constructor capability for alternate runtimes and tests.
|
|
56
|
+
*
|
|
57
|
+
* @default globalThis when it provides `MutationObserver`
|
|
58
|
+
*/
|
|
59
|
+
readonly host?: MaybeRefOrGetter<MutationObserverHost | null | undefined>;
|
|
60
|
+
/**
|
|
61
|
+
* Target resolution timing. `"post"` observes template refs after mount.
|
|
62
|
+
*
|
|
63
|
+
* @default "post"
|
|
64
|
+
*/
|
|
65
|
+
readonly flush?: "pre" | "post" | "sync";
|
|
66
|
+
}
|
|
67
|
+
/** Controls returned by {@link useMutationObserver}. */
|
|
68
|
+
interface MutationObserverControls {
|
|
69
|
+
/** Whether the host provides `MutationObserver`. `false` during server rendering. */
|
|
70
|
+
readonly isSupported: Readonly<Ref<boolean>>;
|
|
71
|
+
/**
|
|
72
|
+
* Drain the records queued by the active observer without invoking the
|
|
73
|
+
* callback.
|
|
74
|
+
*
|
|
75
|
+
* @returns Pending records, or an empty list without an active observer.
|
|
76
|
+
*/
|
|
77
|
+
readonly takeRecords: () => MutationRecord[];
|
|
78
|
+
/** Disconnect permanently. Idempotent. */
|
|
79
|
+
readonly stop: () => void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Observe DOM mutations of reactive elements.
|
|
83
|
+
*
|
|
84
|
+
* The observer is recreated when the resolved targets or host change and is
|
|
85
|
+
* disconnected when the owning reactive scope stops. At least one of
|
|
86
|
+
* `attributes`, `childList`, or `characterData` must be enabled (directly or
|
|
87
|
+
* implicitly), mirroring the platform contract. No work happens during
|
|
88
|
+
* server rendering.
|
|
89
|
+
*
|
|
90
|
+
* @param targets Reactive element target or list of targets.
|
|
91
|
+
* @param callback Native `MutationObserver` callback.
|
|
92
|
+
* @param options Observation filter, capability, and timing.
|
|
93
|
+
* @default options {}
|
|
94
|
+
* @returns Support flag, record draining, and stop control.
|
|
95
|
+
*/
|
|
96
|
+
declare function useMutationObserver(targets: MaybeElementTargets, callback: MutationCallback, options?: UseMutationObserverOptions): MutationObserverControls;
|
|
97
|
+
//#endregion
|
|
98
|
+
export { MutationObserverControls, MutationObserverHost, UseMutationObserverOptions, useMutationObserver };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElements } from "./element-target.mjs";
|
|
3
|
+
import { hasInjectionContext, onMounted, readonly, ref, shallowRef, toValue, watch } from "vue";
|
|
4
|
+
//#region src/mutation-observer.ts
|
|
5
|
+
/**
|
|
6
|
+
* Observe DOM mutations of reactive elements.
|
|
7
|
+
*
|
|
8
|
+
* The observer is recreated when the resolved targets or host change and is
|
|
9
|
+
* disconnected when the owning reactive scope stops. At least one of
|
|
10
|
+
* `attributes`, `childList`, or `characterData` must be enabled (directly or
|
|
11
|
+
* implicitly), mirroring the platform contract. No work happens during
|
|
12
|
+
* server rendering.
|
|
13
|
+
*
|
|
14
|
+
* @param targets Reactive element target or list of targets.
|
|
15
|
+
* @param callback Native `MutationObserver` callback.
|
|
16
|
+
* @param options Observation filter, capability, and timing.
|
|
17
|
+
* @default options {}
|
|
18
|
+
* @returns Support flag, record draining, and stop control.
|
|
19
|
+
*/
|
|
20
|
+
function useMutationObserver(targets, callback, options = {}) {
|
|
21
|
+
const isSupported = ref(false);
|
|
22
|
+
const mounted = shallowRef(!hasInjectionContext());
|
|
23
|
+
if (!mounted.value) onMounted(() => {
|
|
24
|
+
mounted.value = true;
|
|
25
|
+
});
|
|
26
|
+
const init = observerInit(options);
|
|
27
|
+
let active;
|
|
28
|
+
let stopWatch = watch(() => [!mounted.value ? void 0 : options.host === void 0 ? browserMutationObserverHost() : toValue(options.host), resolveElements(targets)], ([host, elements], _previous, onCleanup) => {
|
|
29
|
+
const Observer = host?.MutationObserver;
|
|
30
|
+
isSupported.value = Observer !== void 0;
|
|
31
|
+
if (!Observer || elements.length === 0) return;
|
|
32
|
+
const observer = new Observer(callback);
|
|
33
|
+
for (const element of elements) observer.observe(element, init);
|
|
34
|
+
active = observer;
|
|
35
|
+
onCleanup(() => {
|
|
36
|
+
observer.disconnect();
|
|
37
|
+
if (active === observer) active = void 0;
|
|
38
|
+
});
|
|
39
|
+
}, {
|
|
40
|
+
immediate: true,
|
|
41
|
+
flush: options.flush ?? "post"
|
|
42
|
+
});
|
|
43
|
+
const stop = () => {
|
|
44
|
+
stopWatch?.stop();
|
|
45
|
+
stopWatch = void 0;
|
|
46
|
+
};
|
|
47
|
+
tryOnScopeDispose(stop);
|
|
48
|
+
return {
|
|
49
|
+
isSupported: readonly(isSupported),
|
|
50
|
+
takeRecords: () => active?.takeRecords() ?? [],
|
|
51
|
+
stop
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function observerInit(options) {
|
|
55
|
+
const init = {};
|
|
56
|
+
if (options.attributes !== void 0) init.attributes = options.attributes;
|
|
57
|
+
if (options.childList !== void 0) init.childList = options.childList;
|
|
58
|
+
if (options.subtree !== void 0) init.subtree = options.subtree;
|
|
59
|
+
if (options.characterData !== void 0) init.characterData = options.characterData;
|
|
60
|
+
if (options.attributeOldValue !== void 0) init.attributeOldValue = options.attributeOldValue;
|
|
61
|
+
if (options.characterDataOldValue !== void 0) init.characterDataOldValue = options.characterDataOldValue;
|
|
62
|
+
if (options.attributeFilter !== void 0) init.attributeFilter = [...options.attributeFilter];
|
|
63
|
+
return init;
|
|
64
|
+
}
|
|
65
|
+
function browserMutationObserverHost() {
|
|
66
|
+
return typeof MutationObserver === "function" ? globalThis : void 0;
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { useMutationObserver };
|