@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,121 @@
|
|
|
1
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
2
|
+
import { Point } from "./mouse.mjs";
|
|
3
|
+
import { PointerKind } from "./pointer.mjs";
|
|
4
|
+
import { ComputedRef, MaybeRefOrGetter, Ref } from "vue";
|
|
5
|
+
|
|
6
|
+
//#region src/draggable.d.ts
|
|
7
|
+
/** Axis constraint for {@link useDraggable}. */
|
|
8
|
+
type DragAxis = "x" | "y" | "both";
|
|
9
|
+
/** Rectangle (in the same coordinate space as the position) that bounds dragging. */
|
|
10
|
+
interface DragBounds {
|
|
11
|
+
/** Minimum x. */
|
|
12
|
+
readonly left: number;
|
|
13
|
+
/** Minimum y. */
|
|
14
|
+
readonly top: number;
|
|
15
|
+
/** Maximum x of the dragged element's right edge. */
|
|
16
|
+
readonly right: number;
|
|
17
|
+
/** Maximum y of the dragged element's bottom edge. */
|
|
18
|
+
readonly bottom: number;
|
|
19
|
+
}
|
|
20
|
+
/** Options for {@link useDraggable}. */
|
|
21
|
+
interface UseDraggableOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Element that starts the drag. Defaults to the dragged element itself.
|
|
24
|
+
*
|
|
25
|
+
* @default undefined (the target)
|
|
26
|
+
*/
|
|
27
|
+
readonly handle?: MaybeElementTarget;
|
|
28
|
+
/**
|
|
29
|
+
* Restrict movement to one axis.
|
|
30
|
+
*
|
|
31
|
+
* @default "both"
|
|
32
|
+
*/
|
|
33
|
+
readonly axis?: MaybeRefOrGetter<DragAxis>;
|
|
34
|
+
/**
|
|
35
|
+
* Keep the element inside these bounds, or inside a container element's
|
|
36
|
+
* client rectangle.
|
|
37
|
+
*
|
|
38
|
+
* @default undefined (unbounded)
|
|
39
|
+
*/
|
|
40
|
+
readonly bounds?: MaybeRefOrGetter<DragBounds | null | undefined> | MaybeElementTarget;
|
|
41
|
+
/**
|
|
42
|
+
* Position before the first drag and during server rendering.
|
|
43
|
+
*
|
|
44
|
+
* @default { x: 0, y: 0 }
|
|
45
|
+
*/
|
|
46
|
+
readonly initialValue?: Point;
|
|
47
|
+
/**
|
|
48
|
+
* Device kinds that may start a drag.
|
|
49
|
+
*
|
|
50
|
+
* @default ["mouse", "touch", "pen"]
|
|
51
|
+
*/
|
|
52
|
+
readonly pointerTypes?: readonly PointerKind[];
|
|
53
|
+
/**
|
|
54
|
+
* Only start when the pointer goes down on the handle itself, not a descendant.
|
|
55
|
+
*
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
58
|
+
readonly exact?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Call `preventDefault()` on pointer events while dragging.
|
|
61
|
+
*
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
64
|
+
readonly preventDefault?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Temporarily disable dragging.
|
|
67
|
+
*
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
readonly disabled?: MaybeRefOrGetter<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Called before a drag starts. Return `false` to cancel it.
|
|
73
|
+
*
|
|
74
|
+
* @default undefined
|
|
75
|
+
*/
|
|
76
|
+
readonly onStart?: (position: Point, event: PointerEvent) => boolean | void;
|
|
77
|
+
/**
|
|
78
|
+
* Called after every position update.
|
|
79
|
+
*
|
|
80
|
+
* @default undefined
|
|
81
|
+
*/
|
|
82
|
+
readonly onMove?: (position: Point, event: PointerEvent) => void;
|
|
83
|
+
/**
|
|
84
|
+
* Called when the drag ends.
|
|
85
|
+
*
|
|
86
|
+
* @default undefined
|
|
87
|
+
*/
|
|
88
|
+
readonly onEnd?: (position: Point, event: PointerEvent) => void;
|
|
89
|
+
}
|
|
90
|
+
/** Reactive drag state returned by {@link useDraggable}. */
|
|
91
|
+
interface DraggableControls {
|
|
92
|
+
/** Horizontal position (the element's left edge in client coordinates). */
|
|
93
|
+
readonly x: Ref<number>;
|
|
94
|
+
/** Vertical position (the element's top edge in client coordinates). */
|
|
95
|
+
readonly y: Ref<number>;
|
|
96
|
+
/** Current position snapshot. */
|
|
97
|
+
readonly position: ComputedRef<Point>;
|
|
98
|
+
/** Whether a drag is in progress. */
|
|
99
|
+
readonly isDragging: Readonly<Ref<boolean>>;
|
|
100
|
+
/** `left`/`top` declaration for `position: fixed` or `absolute` placement. */
|
|
101
|
+
readonly style: ComputedRef<string>;
|
|
102
|
+
/** Remove listeners. Idempotent. */
|
|
103
|
+
readonly stop: () => void;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Make an element draggable with Pointer Events.
|
|
107
|
+
*
|
|
108
|
+
* `pointerdown` on the handle records the offset between the pointer and the
|
|
109
|
+
* element; moves are tracked on the owner document (so fast drags that leave
|
|
110
|
+
* the element keep working) and constrained by `axis` and `bounds`. `x`/`y`
|
|
111
|
+
* are writable for programmatic placement. Server renders expose
|
|
112
|
+
* `initialValue`; listeners are removed with the owning reactive scope.
|
|
113
|
+
*
|
|
114
|
+
* @param target Reactive element being dragged.
|
|
115
|
+
* @param options Handle, axis, bounds, device filter, and lifecycle callbacks.
|
|
116
|
+
* @default options {}
|
|
117
|
+
* @returns Writable position, drag flag, inline style, and stop control.
|
|
118
|
+
*/
|
|
119
|
+
declare function useDraggable(target: MaybeElementTarget, options?: UseDraggableOptions): DraggableControls;
|
|
120
|
+
//#endregion
|
|
121
|
+
export { DragAxis, DragBounds, DraggableControls, UseDraggableOptions, useDraggable };
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { isElementNode, resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { toPointerKind } from "./pointer.mjs";
|
|
4
|
+
import { computed, readonly, ref, toValue, watch } from "vue";
|
|
5
|
+
//#region src/draggable.ts
|
|
6
|
+
/**
|
|
7
|
+
* Make an element draggable with Pointer Events.
|
|
8
|
+
*
|
|
9
|
+
* `pointerdown` on the handle records the offset between the pointer and the
|
|
10
|
+
* element; moves are tracked on the owner document (so fast drags that leave
|
|
11
|
+
* the element keep working) and constrained by `axis` and `bounds`. `x`/`y`
|
|
12
|
+
* are writable for programmatic placement. Server renders expose
|
|
13
|
+
* `initialValue`; listeners are removed with the owning reactive scope.
|
|
14
|
+
*
|
|
15
|
+
* @param target Reactive element being dragged.
|
|
16
|
+
* @param options Handle, axis, bounds, device filter, and lifecycle callbacks.
|
|
17
|
+
* @default options {}
|
|
18
|
+
* @returns Writable position, drag flag, inline style, and stop control.
|
|
19
|
+
*/
|
|
20
|
+
function useDraggable(target, options = {}) {
|
|
21
|
+
const initial = options.initialValue ?? {
|
|
22
|
+
x: 0,
|
|
23
|
+
y: 0
|
|
24
|
+
};
|
|
25
|
+
const x = ref(initial.x);
|
|
26
|
+
const y = ref(initial.y);
|
|
27
|
+
const isDragging = ref(false);
|
|
28
|
+
const pointerTypes = options.pointerTypes ?? [
|
|
29
|
+
"mouse",
|
|
30
|
+
"touch",
|
|
31
|
+
"pen"
|
|
32
|
+
];
|
|
33
|
+
const position = computed(() => ({
|
|
34
|
+
x: x.value,
|
|
35
|
+
y: y.value
|
|
36
|
+
}));
|
|
37
|
+
let offset = null;
|
|
38
|
+
let activePointer = null;
|
|
39
|
+
const constrain = (element, next) => {
|
|
40
|
+
const bounds = readBounds(options.bounds);
|
|
41
|
+
if (!bounds) return next;
|
|
42
|
+
const rect = element.getBoundingClientRect();
|
|
43
|
+
return {
|
|
44
|
+
x: clamp(next.x, bounds.left, Math.max(bounds.left, bounds.right - rect.width)),
|
|
45
|
+
y: clamp(next.y, bounds.top, Math.max(bounds.top, bounds.bottom - rect.height))
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
const accepts = (event) => {
|
|
49
|
+
if (!isPointerEvent(event)) return false;
|
|
50
|
+
const kind = toPointerKind(event.pointerType);
|
|
51
|
+
return kind !== null && pointerTypes.includes(kind);
|
|
52
|
+
};
|
|
53
|
+
const handleEvent = (event) => {
|
|
54
|
+
if (options.preventDefault && event.cancelable) event.preventDefault();
|
|
55
|
+
};
|
|
56
|
+
const stopWatch = watch(() => [resolveElement(target), options.handle === void 0 ? void 0 : resolveElement(options.handle)], ([element, handleOverride], _previous, onCleanup) => {
|
|
57
|
+
const handle = handleOverride === void 0 ? element : handleOverride;
|
|
58
|
+
if (!element || !handle) return;
|
|
59
|
+
const document = element.ownerDocument;
|
|
60
|
+
const onMove = (event) => {
|
|
61
|
+
if (!accepts(event) || event.pointerId !== activePointer || !offset) return;
|
|
62
|
+
const axis = toValue(options.axis) ?? "both";
|
|
63
|
+
const next = constrain(element, {
|
|
64
|
+
x: axis === "y" ? x.value : event.clientX - offset.x,
|
|
65
|
+
y: axis === "x" ? y.value : event.clientY - offset.y
|
|
66
|
+
});
|
|
67
|
+
x.value = next.x;
|
|
68
|
+
y.value = next.y;
|
|
69
|
+
handleEvent(event);
|
|
70
|
+
options.onMove?.(next, event);
|
|
71
|
+
};
|
|
72
|
+
const onUp = (event) => {
|
|
73
|
+
if (!accepts(event) || event.pointerId !== activePointer) return;
|
|
74
|
+
activePointer = null;
|
|
75
|
+
offset = null;
|
|
76
|
+
isDragging.value = false;
|
|
77
|
+
document.removeEventListener("pointermove", onMove);
|
|
78
|
+
document.removeEventListener("pointerup", onUp);
|
|
79
|
+
document.removeEventListener("pointercancel", onUp);
|
|
80
|
+
handleEvent(event);
|
|
81
|
+
options.onEnd?.(position.value, event);
|
|
82
|
+
};
|
|
83
|
+
const onDown = (event) => {
|
|
84
|
+
if (!accepts(event) || toValue(options.disabled) || activePointer !== null) return;
|
|
85
|
+
if (event.pointerType === "mouse" && event.button !== 0) return;
|
|
86
|
+
if (options.exact && event.target !== handle) return;
|
|
87
|
+
const rect = element.getBoundingClientRect();
|
|
88
|
+
const start = {
|
|
89
|
+
x: rect.left,
|
|
90
|
+
y: rect.top
|
|
91
|
+
};
|
|
92
|
+
if (options.onStart?.(start, event) === false) return;
|
|
93
|
+
activePointer = event.pointerId;
|
|
94
|
+
offset = {
|
|
95
|
+
x: event.clientX - rect.left,
|
|
96
|
+
y: event.clientY - rect.top
|
|
97
|
+
};
|
|
98
|
+
isDragging.value = true;
|
|
99
|
+
document.addEventListener("pointermove", onMove);
|
|
100
|
+
document.addEventListener("pointerup", onUp);
|
|
101
|
+
document.addEventListener("pointercancel", onUp);
|
|
102
|
+
handleEvent(event);
|
|
103
|
+
};
|
|
104
|
+
handle.addEventListener("pointerdown", onDown);
|
|
105
|
+
onCleanup(() => {
|
|
106
|
+
handle.removeEventListener("pointerdown", onDown);
|
|
107
|
+
document.removeEventListener("pointermove", onMove);
|
|
108
|
+
document.removeEventListener("pointerup", onUp);
|
|
109
|
+
document.removeEventListener("pointercancel", onUp);
|
|
110
|
+
activePointer = null;
|
|
111
|
+
offset = null;
|
|
112
|
+
isDragging.value = false;
|
|
113
|
+
});
|
|
114
|
+
}, {
|
|
115
|
+
immediate: true,
|
|
116
|
+
flush: "post"
|
|
117
|
+
});
|
|
118
|
+
const stop = () => stopWatch.stop();
|
|
119
|
+
tryOnScopeDispose(stop);
|
|
120
|
+
return {
|
|
121
|
+
x,
|
|
122
|
+
y,
|
|
123
|
+
position,
|
|
124
|
+
isDragging: readonly(isDragging),
|
|
125
|
+
style: computed(() => `left:${x.value}px;top:${y.value}px;`),
|
|
126
|
+
stop
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function readBounds(source) {
|
|
130
|
+
if (source === void 0) return null;
|
|
131
|
+
const value = toValue(source);
|
|
132
|
+
if (isDragBounds(value)) return value;
|
|
133
|
+
const root = typeof value === "object" && value !== null && "$el" in value ? value.$el : value;
|
|
134
|
+
if (!isElementNode(root)) return null;
|
|
135
|
+
const rect = root.getBoundingClientRect();
|
|
136
|
+
return {
|
|
137
|
+
left: rect.left,
|
|
138
|
+
top: rect.top,
|
|
139
|
+
right: rect.right,
|
|
140
|
+
bottom: rect.bottom
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function isDragBounds(value) {
|
|
144
|
+
return typeof value === "object" && value !== null && !("nodeType" in value) && !("$el" in value) && "left" in value && "right" in value;
|
|
145
|
+
}
|
|
146
|
+
function clamp(value, minimum, maximum) {
|
|
147
|
+
return Math.min(Math.max(value, minimum), maximum);
|
|
148
|
+
}
|
|
149
|
+
function isPointerEvent(event) {
|
|
150
|
+
return "pointerId" in event && "pointerType" in event;
|
|
151
|
+
}
|
|
152
|
+
//#endregion
|
|
153
|
+
export { useDraggable };
|
|
@@ -0,0 +1,87 @@
|
|
|
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/element-bounding.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Window-like capability observed by {@link useElementBounding}: scroll and
|
|
8
|
+
* resize events plus the optional `ResizeObserver` constructor.
|
|
9
|
+
*/
|
|
10
|
+
interface ElementBoundingHost extends EventTarget, ResizeObserverHost {}
|
|
11
|
+
/** Viewport-relative element geometry in CSS pixels. */
|
|
12
|
+
interface ElementBoundingRect {
|
|
13
|
+
/** Horizontal position of the border box origin. */
|
|
14
|
+
readonly x: number;
|
|
15
|
+
/** Vertical position of the border box origin. */
|
|
16
|
+
readonly y: number;
|
|
17
|
+
/** Distance from the viewport top edge to the border box top edge. */
|
|
18
|
+
readonly top: number;
|
|
19
|
+
/** Distance from the viewport left edge to the border box right edge. */
|
|
20
|
+
readonly right: number;
|
|
21
|
+
/** Distance from the viewport top edge to the border box bottom edge. */
|
|
22
|
+
readonly bottom: number;
|
|
23
|
+
/** Distance from the viewport left edge to the border box left edge. */
|
|
24
|
+
readonly left: number;
|
|
25
|
+
/** Border box width. */
|
|
26
|
+
readonly width: number;
|
|
27
|
+
/** Border box height. */
|
|
28
|
+
readonly height: number;
|
|
29
|
+
}
|
|
30
|
+
/** Options for {@link useElementBounding}. */
|
|
31
|
+
interface UseElementBoundingOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Reset every value to zero when the target unmounts.
|
|
34
|
+
*
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
readonly reset?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Re-measure when the window resizes.
|
|
40
|
+
*
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
43
|
+
readonly windowResize?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Re-measure when any ancestor (or the window) scrolls. Uses a capturing,
|
|
46
|
+
* passive listener so nested scroll containers are covered.
|
|
47
|
+
*
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
readonly windowScroll?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Reactive window capability for alternate runtimes and tests.
|
|
53
|
+
*
|
|
54
|
+
* @default globalThis.window when available
|
|
55
|
+
*/
|
|
56
|
+
readonly host?: MaybeRefOrGetter<ElementBoundingHost | null | undefined>;
|
|
57
|
+
/**
|
|
58
|
+
* Target resolution timing. `"post"` measures template refs after mount.
|
|
59
|
+
*
|
|
60
|
+
* @default "post"
|
|
61
|
+
*/
|
|
62
|
+
readonly flush?: "pre" | "post" | "sync";
|
|
63
|
+
}
|
|
64
|
+
/** Reactive geometry returned by {@link useElementBounding}. */
|
|
65
|
+
type ElementBoundingControls = {
|
|
66
|
+
/** Reactive geometry field; zero during server rendering. */
|
|
67
|
+
readonly [Key in keyof ElementBoundingRect]: Readonly<Ref<number>> } & {
|
|
68
|
+
/** Measure the target immediately. Does nothing while it is unresolved. */readonly update: () => void; /** Stop observing resize, scroll, and target changes. Idempotent. */
|
|
69
|
+
readonly stop: () => void;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Track an element's `getBoundingClientRect()` reactively.
|
|
73
|
+
*
|
|
74
|
+
* Measures when the target resolves, when it resizes (via `ResizeObserver`),
|
|
75
|
+
* and — unless disabled — when the window resizes or anything scrolls. Every
|
|
76
|
+
* value is `0` during server rendering and before the first measurement, so
|
|
77
|
+
* the initial render is hydration-stable. Listeners and the observer are
|
|
78
|
+
* released with the owning reactive scope.
|
|
79
|
+
*
|
|
80
|
+
* @param target Reactive element target.
|
|
81
|
+
* @param options Reset, listener, capability, and timing options.
|
|
82
|
+
* @default options {}
|
|
83
|
+
* @returns One readonly ref per geometry field plus `update`/`stop`.
|
|
84
|
+
*/
|
|
85
|
+
declare function useElementBounding(target: MaybeElementTarget, options?: UseElementBoundingOptions): ElementBoundingControls;
|
|
86
|
+
//#endregion
|
|
87
|
+
export { ElementBoundingControls, ElementBoundingHost, ElementBoundingRect, UseElementBoundingOptions, useElementBounding };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { useEventListener } from "./event-listener.mjs";
|
|
4
|
+
import { useResizeObserver } from "./resize-observer.mjs";
|
|
5
|
+
import { readonly, ref, toValue, watch } from "vue";
|
|
6
|
+
//#region src/element-bounding.ts
|
|
7
|
+
const boundingKeys = [
|
|
8
|
+
"x",
|
|
9
|
+
"y",
|
|
10
|
+
"top",
|
|
11
|
+
"right",
|
|
12
|
+
"bottom",
|
|
13
|
+
"left",
|
|
14
|
+
"width",
|
|
15
|
+
"height"
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Track an element's `getBoundingClientRect()` reactively.
|
|
19
|
+
*
|
|
20
|
+
* Measures when the target resolves, when it resizes (via `ResizeObserver`),
|
|
21
|
+
* and — unless disabled — when the window resizes or anything scrolls. Every
|
|
22
|
+
* value is `0` during server rendering and before the first measurement, so
|
|
23
|
+
* the initial render is hydration-stable. Listeners and the observer are
|
|
24
|
+
* released with the owning reactive scope.
|
|
25
|
+
*
|
|
26
|
+
* @param target Reactive element target.
|
|
27
|
+
* @param options Reset, listener, capability, and timing options.
|
|
28
|
+
* @default options {}
|
|
29
|
+
* @returns One readonly ref per geometry field plus `update`/`stop`.
|
|
30
|
+
*/
|
|
31
|
+
function useElementBounding(target, options = {}) {
|
|
32
|
+
const { reset = true, windowResize = true, windowScroll = true } = options;
|
|
33
|
+
const flush = options.flush ?? "post";
|
|
34
|
+
const state = {
|
|
35
|
+
x: ref(0),
|
|
36
|
+
y: ref(0),
|
|
37
|
+
top: ref(0),
|
|
38
|
+
right: ref(0),
|
|
39
|
+
bottom: ref(0),
|
|
40
|
+
left: ref(0),
|
|
41
|
+
width: ref(0),
|
|
42
|
+
height: ref(0)
|
|
43
|
+
};
|
|
44
|
+
const host = () => options.host === void 0 ? browserBoundingHost() : toValue(options.host);
|
|
45
|
+
const update = () => {
|
|
46
|
+
const element = resolveElement(target);
|
|
47
|
+
if (!element) {
|
|
48
|
+
if (reset) for (const key of boundingKeys) state[key].value = 0;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const rect = element.getBoundingClientRect();
|
|
52
|
+
for (const key of boundingKeys) state[key].value = rect[key];
|
|
53
|
+
};
|
|
54
|
+
const observer = useResizeObserver(target, update, {
|
|
55
|
+
host,
|
|
56
|
+
flush
|
|
57
|
+
});
|
|
58
|
+
const stopTarget = watch(() => resolveElement(target), update, {
|
|
59
|
+
immediate: true,
|
|
60
|
+
flush
|
|
61
|
+
});
|
|
62
|
+
const resize = windowResize ? useEventListener(host, "resize", update, {
|
|
63
|
+
passive: true,
|
|
64
|
+
flush
|
|
65
|
+
}) : void 0;
|
|
66
|
+
const scroll = windowScroll ? useEventListener(host, "scroll", update, {
|
|
67
|
+
capture: true,
|
|
68
|
+
passive: true,
|
|
69
|
+
flush
|
|
70
|
+
}) : void 0;
|
|
71
|
+
const stop = () => {
|
|
72
|
+
observer.stop();
|
|
73
|
+
stopTarget.stop();
|
|
74
|
+
resize?.stop();
|
|
75
|
+
scroll?.stop();
|
|
76
|
+
};
|
|
77
|
+
tryOnScopeDispose(stop);
|
|
78
|
+
return {
|
|
79
|
+
x: readonly(state.x),
|
|
80
|
+
y: readonly(state.y),
|
|
81
|
+
top: readonly(state.top),
|
|
82
|
+
right: readonly(state.right),
|
|
83
|
+
bottom: readonly(state.bottom),
|
|
84
|
+
left: readonly(state.left),
|
|
85
|
+
width: readonly(state.width),
|
|
86
|
+
height: readonly(state.height),
|
|
87
|
+
update,
|
|
88
|
+
stop
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function browserBoundingHost() {
|
|
92
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { useElementBounding };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref, ShallowRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/element-by-point.d.ts
|
|
4
|
+
/** Document-like capability used by {@link useElementByPoint}. */
|
|
5
|
+
interface ElementByPointHost {
|
|
6
|
+
/** Topmost element at a point. */
|
|
7
|
+
elementFromPoint(x: number, y: number): Element | null;
|
|
8
|
+
/**
|
|
9
|
+
* Every element at a point, topmost first. Optional: when missing, only
|
|
10
|
+
* the topmost element is reported.
|
|
11
|
+
*/
|
|
12
|
+
elementsFromPoint?(x: number, y: number): Element[];
|
|
13
|
+
}
|
|
14
|
+
/** Frame scheduler used for continuous polling. */
|
|
15
|
+
interface ElementByPointFrameHost {
|
|
16
|
+
/** Schedule a callback before the next repaint. */
|
|
17
|
+
readonly requestAnimationFrame: (callback: FrameRequestCallback) => number;
|
|
18
|
+
/** Cancel a scheduled frame. */
|
|
19
|
+
readonly cancelAnimationFrame: (handle: number) => void;
|
|
20
|
+
}
|
|
21
|
+
/** Options for {@link useElementByPoint}. */
|
|
22
|
+
interface UseElementByPointOptions {
|
|
23
|
+
/** Horizontal client coordinate. */
|
|
24
|
+
readonly x: MaybeRefOrGetter<number>;
|
|
25
|
+
/** Vertical client coordinate. */
|
|
26
|
+
readonly y: MaybeRefOrGetter<number>;
|
|
27
|
+
/**
|
|
28
|
+
* Also re-query every animation frame (the element under a fixed point can
|
|
29
|
+
* change when the page scrolls or animates).
|
|
30
|
+
*
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
readonly poll?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Reactive document capability for alternate runtimes and tests.
|
|
36
|
+
*
|
|
37
|
+
* @default globalThis.document when available
|
|
38
|
+
*/
|
|
39
|
+
readonly host?: MaybeRefOrGetter<ElementByPointHost | null | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* Frame scheduler used when `poll` is enabled.
|
|
42
|
+
*
|
|
43
|
+
* @default globalThis.window when available
|
|
44
|
+
*/
|
|
45
|
+
readonly frameHost?: MaybeRefOrGetter<ElementByPointFrameHost | null | undefined>;
|
|
46
|
+
}
|
|
47
|
+
/** Reactive state returned by {@link useElementByPoint}. */
|
|
48
|
+
interface ElementByPointControls {
|
|
49
|
+
/** Whether a document capability is attached. `false` during server rendering. */
|
|
50
|
+
readonly isSupported: Readonly<Ref<boolean>>;
|
|
51
|
+
/** Topmost element at the point. */
|
|
52
|
+
readonly element: Readonly<ShallowRef<Element | null>>;
|
|
53
|
+
/** Every element at the point, topmost first. */
|
|
54
|
+
readonly elements: Readonly<ShallowRef<readonly Element[]>>;
|
|
55
|
+
/** Re-query immediately. */
|
|
56
|
+
readonly update: () => void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Track the element(s) under a client coordinate.
|
|
60
|
+
*
|
|
61
|
+
* Re-queries whenever `x`/`y` change and, with `poll`, on every animation
|
|
62
|
+
* frame until the owning scope stops. Server renders expose `null` and an
|
|
63
|
+
* empty list.
|
|
64
|
+
*
|
|
65
|
+
* @param options Coordinates, polling, and capabilities.
|
|
66
|
+
* @returns Reactive topmost element, element stack, and a manual update.
|
|
67
|
+
*/
|
|
68
|
+
declare function useElementByPoint(options: UseElementByPointOptions): ElementByPointControls;
|
|
69
|
+
//#endregion
|
|
70
|
+
export { ElementByPointControls, ElementByPointFrameHost, ElementByPointHost, UseElementByPointOptions, useElementByPoint };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext, onMounted, readonly, ref, shallowRef, toValue, watch } from "vue";
|
|
3
|
+
//#region src/element-by-point.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track the element(s) under a client coordinate.
|
|
6
|
+
*
|
|
7
|
+
* Re-queries whenever `x`/`y` change and, with `poll`, on every animation
|
|
8
|
+
* frame until the owning scope stops. Server renders expose `null` and an
|
|
9
|
+
* empty list.
|
|
10
|
+
*
|
|
11
|
+
* @param options Coordinates, polling, and capabilities.
|
|
12
|
+
* @returns Reactive topmost element, element stack, and a manual update.
|
|
13
|
+
*/
|
|
14
|
+
function useElementByPoint(options) {
|
|
15
|
+
const isSupported = ref(false);
|
|
16
|
+
const element = shallowRef(null);
|
|
17
|
+
const elements = shallowRef([]);
|
|
18
|
+
const mounted = shallowRef(!hasInjectionContext());
|
|
19
|
+
if (!mounted.value) onMounted(() => {
|
|
20
|
+
mounted.value = true;
|
|
21
|
+
});
|
|
22
|
+
const host = () => !mounted.value ? void 0 : options.host === void 0 ? browserPointHost() : toValue(options.host);
|
|
23
|
+
const update = () => {
|
|
24
|
+
const current = host();
|
|
25
|
+
isSupported.value = Boolean(current);
|
|
26
|
+
if (!current) {
|
|
27
|
+
element.value = null;
|
|
28
|
+
elements.value = [];
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const x = toValue(options.x);
|
|
32
|
+
const y = toValue(options.y);
|
|
33
|
+
element.value = current.elementFromPoint(x, y);
|
|
34
|
+
elements.value = current.elementsFromPoint ? current.elementsFromPoint(x, y) : element.value ? [element.value] : [];
|
|
35
|
+
};
|
|
36
|
+
const stopWatch = watch(() => [
|
|
37
|
+
host(),
|
|
38
|
+
toValue(options.x),
|
|
39
|
+
toValue(options.y)
|
|
40
|
+
], update, { immediate: true });
|
|
41
|
+
const stopPolling = options.poll ? watch(() => options.frameHost === void 0 ? browserFrameHost() : toValue(options.frameHost), (frames, _previous, onCleanup) => {
|
|
42
|
+
if (!frames) return;
|
|
43
|
+
let handle = 0;
|
|
44
|
+
const tick = () => {
|
|
45
|
+
update();
|
|
46
|
+
handle = frames.requestAnimationFrame(tick);
|
|
47
|
+
};
|
|
48
|
+
handle = frames.requestAnimationFrame(tick);
|
|
49
|
+
onCleanup(() => frames.cancelAnimationFrame(handle));
|
|
50
|
+
}, { immediate: true }) : void 0;
|
|
51
|
+
tryOnScopeDispose(() => {
|
|
52
|
+
stopWatch.stop();
|
|
53
|
+
stopPolling?.stop();
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
isSupported: readonly(isSupported),
|
|
57
|
+
element,
|
|
58
|
+
elements,
|
|
59
|
+
update
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function browserPointHost() {
|
|
63
|
+
return typeof document !== "undefined" ? document : void 0;
|
|
64
|
+
}
|
|
65
|
+
function browserFrameHost() {
|
|
66
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { useElementByPoint };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
3
|
+
import { Ref } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/element-hover.d.ts
|
|
6
|
+
/** Options for {@link useElementHover}. */
|
|
7
|
+
interface UseElementHoverOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Milliseconds to wait before reporting hover.
|
|
10
|
+
*
|
|
11
|
+
* @default 0
|
|
12
|
+
*/
|
|
13
|
+
readonly delayEnter?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Milliseconds to wait before reporting the end of hover.
|
|
16
|
+
*
|
|
17
|
+
* @default 0
|
|
18
|
+
*/
|
|
19
|
+
readonly delayLeave?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Owns the delay timer.
|
|
22
|
+
*
|
|
23
|
+
* @default globalThis timer functions
|
|
24
|
+
*/
|
|
25
|
+
readonly scheduler?: TimeoutScheduler;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Track whether the pointer hovers an element.
|
|
29
|
+
*
|
|
30
|
+
* Uses `pointerenter`/`pointerleave` (which ignore descendants) with optional
|
|
31
|
+
* enter/leave delays; a pending delay is cancelled by the opposite event.
|
|
32
|
+
* Server renders report `false`; listeners and timers are released with the
|
|
33
|
+
* owning reactive scope.
|
|
34
|
+
*
|
|
35
|
+
* @param target Reactive element target.
|
|
36
|
+
* @param options Enter/leave delays and timer scheduler.
|
|
37
|
+
* @default options {}
|
|
38
|
+
* @returns Readonly hover flag.
|
|
39
|
+
*/
|
|
40
|
+
declare function useElementHover(target: MaybeElementTarget, options?: UseElementHoverOptions): Readonly<Ref<boolean>>;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { UseElementHoverOptions, useElementHover };
|