@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,96 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/network.d.ts
|
|
4
|
+
/** Effective connection classes reported by the Network Information API. */
|
|
5
|
+
type NetworkEffectiveType = "slow-2g" | "2g" | "3g" | "4g";
|
|
6
|
+
/** Physical connection types reported by the Network Information API. */
|
|
7
|
+
type NetworkConnectionType = "bluetooth" | "cellular" | "ethernet" | "none" | "wifi" | "wimax" | "other" | "unknown";
|
|
8
|
+
/** Subset of the (non-standard) `NetworkInformation` interface. */
|
|
9
|
+
interface NetworkInformationLike extends EventTarget {
|
|
10
|
+
/** Estimated downlink bandwidth in Mbit/s. */
|
|
11
|
+
readonly downlink?: number;
|
|
12
|
+
/** Maximum downlink bandwidth in Mbit/s. */
|
|
13
|
+
readonly downlinkMax?: number;
|
|
14
|
+
/** Effective connection class. */
|
|
15
|
+
readonly effectiveType?: string;
|
|
16
|
+
/** Estimated round-trip time in milliseconds. */
|
|
17
|
+
readonly rtt?: number;
|
|
18
|
+
/** Whether the user requested reduced data usage. */
|
|
19
|
+
readonly saveData?: boolean;
|
|
20
|
+
/** Physical connection type. */
|
|
21
|
+
readonly type?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Window-like capability observed by the network composables. */
|
|
24
|
+
interface NetworkHost extends EventTarget {
|
|
25
|
+
/** Navigator exposing connectivity. */
|
|
26
|
+
readonly navigator: {
|
|
27
|
+
/** Whether the browser believes it is online. */readonly onLine: boolean; /** Network Information API object, where supported. */
|
|
28
|
+
readonly connection?: NetworkInformationLike;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Options shared by {@link useOnline} and {@link useNetwork}. */
|
|
32
|
+
interface UseNetworkOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Connectivity exposed during server rendering.
|
|
35
|
+
*
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
38
|
+
readonly ssrOnline?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Reactive window capability for alternate runtimes and tests.
|
|
41
|
+
*
|
|
42
|
+
* @default globalThis.window when available
|
|
43
|
+
*/
|
|
44
|
+
readonly host?: MaybeRefOrGetter<NetworkHost | null | undefined>;
|
|
45
|
+
}
|
|
46
|
+
/** Reactive network state returned by {@link useNetwork}. */
|
|
47
|
+
interface NetworkControls {
|
|
48
|
+
/** Whether the Network Information API is available. `false` during server rendering. */
|
|
49
|
+
readonly isSupported: Readonly<Ref<boolean>>;
|
|
50
|
+
/** Whether the browser reports being online. */
|
|
51
|
+
readonly isOnline: Readonly<Ref<boolean>>;
|
|
52
|
+
/** Epoch milliseconds of the latest `online` event. */
|
|
53
|
+
readonly onlineAt: Readonly<Ref<number | null>>;
|
|
54
|
+
/** Epoch milliseconds of the latest `offline` event. */
|
|
55
|
+
readonly offlineAt: Readonly<Ref<number | null>>;
|
|
56
|
+
/** Estimated downlink in Mbit/s. */
|
|
57
|
+
readonly downlink: Readonly<Ref<number | null>>;
|
|
58
|
+
/** Maximum downlink in Mbit/s. */
|
|
59
|
+
readonly downlinkMax: Readonly<Ref<number | null>>;
|
|
60
|
+
/** Effective connection class, or `null` when unknown. */
|
|
61
|
+
readonly effectiveType: Readonly<Ref<NetworkEffectiveType | null>>;
|
|
62
|
+
/** Estimated round-trip time in milliseconds. */
|
|
63
|
+
readonly rtt: Readonly<Ref<number | null>>;
|
|
64
|
+
/** Whether the user requested reduced data usage. */
|
|
65
|
+
readonly saveData: Readonly<Ref<boolean>>;
|
|
66
|
+
/** Physical connection type, or `null` when unknown. */
|
|
67
|
+
readonly type: Readonly<Ref<NetworkConnectionType | null>>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Track connectivity and connection quality.
|
|
71
|
+
*
|
|
72
|
+
* Listens for `online`/`offline` on the window and `change` on
|
|
73
|
+
* `navigator.connection` where available. Unknown or future enum values
|
|
74
|
+
* normalize to `null` so the public unions stay closed. Server renders
|
|
75
|
+
* report `ssrOnline` with every quality metric `null`. Inside a component
|
|
76
|
+
* the connection is read after mounting, so hydration renders the server
|
|
77
|
+
* values first. Listeners are removed with the owning reactive scope.
|
|
78
|
+
*
|
|
79
|
+
* @param options Server fallback and window capability.
|
|
80
|
+
* @default options {}
|
|
81
|
+
* @returns Reactive connectivity and connection metrics.
|
|
82
|
+
*/
|
|
83
|
+
declare function useNetwork(options?: UseNetworkOptions): NetworkControls;
|
|
84
|
+
/**
|
|
85
|
+
* Track whether the browser reports being online.
|
|
86
|
+
*
|
|
87
|
+
* Shorthand for `useNetwork(options).isOnline` with the same SSR fallback
|
|
88
|
+
* and cleanup semantics.
|
|
89
|
+
*
|
|
90
|
+
* @param options Server fallback and window capability.
|
|
91
|
+
* @default options {}
|
|
92
|
+
* @returns Readonly online flag.
|
|
93
|
+
*/
|
|
94
|
+
declare function useOnline(options?: UseNetworkOptions): Readonly<Ref<boolean>>;
|
|
95
|
+
//#endregion
|
|
96
|
+
export { NetworkConnectionType, NetworkControls, NetworkEffectiveType, NetworkHost, NetworkInformationLike, UseNetworkOptions, useNetwork, useOnline };
|
package/dist/network.mjs
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext, readonly, ref, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/network.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track connectivity and connection quality.
|
|
6
|
+
*
|
|
7
|
+
* Listens for `online`/`offline` on the window and `change` on
|
|
8
|
+
* `navigator.connection` where available. Unknown or future enum values
|
|
9
|
+
* normalize to `null` so the public unions stay closed. Server renders
|
|
10
|
+
* report `ssrOnline` with every quality metric `null`. Inside a component
|
|
11
|
+
* the connection is read after mounting, so hydration renders the server
|
|
12
|
+
* values first. Listeners are removed with the owning reactive scope.
|
|
13
|
+
*
|
|
14
|
+
* @param options Server fallback and window capability.
|
|
15
|
+
* @default options {}
|
|
16
|
+
* @returns Reactive connectivity and connection metrics.
|
|
17
|
+
*/
|
|
18
|
+
function useNetwork(options = {}) {
|
|
19
|
+
const ssrOnline = options.ssrOnline ?? true;
|
|
20
|
+
const isSupported = ref(false);
|
|
21
|
+
const isOnline = ref(ssrOnline);
|
|
22
|
+
const onlineAt = ref(null);
|
|
23
|
+
const offlineAt = ref(null);
|
|
24
|
+
const downlink = ref(null);
|
|
25
|
+
const downlinkMax = ref(null);
|
|
26
|
+
const effectiveType = ref(null);
|
|
27
|
+
const rtt = ref(null);
|
|
28
|
+
const saveData = ref(false);
|
|
29
|
+
const type = ref(null);
|
|
30
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
31
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
32
|
+
hydrated.value = true;
|
|
33
|
+
});
|
|
34
|
+
const stop = watch(() => hydrated.value ? options.host === void 0 ? browserNetworkHost() : toValue(options.host) : void 0, (host, _previous, onCleanup) => {
|
|
35
|
+
if (!host) {
|
|
36
|
+
isSupported.value = false;
|
|
37
|
+
isOnline.value = ssrOnline;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const connection = host.navigator.connection;
|
|
41
|
+
isSupported.value = connection !== void 0;
|
|
42
|
+
const readConnection = () => {
|
|
43
|
+
isOnline.value = host.navigator.onLine;
|
|
44
|
+
if (!connection) return;
|
|
45
|
+
downlink.value = connection.downlink ?? null;
|
|
46
|
+
downlinkMax.value = connection.downlinkMax ?? null;
|
|
47
|
+
effectiveType.value = toEffectiveType(connection.effectiveType);
|
|
48
|
+
rtt.value = connection.rtt ?? null;
|
|
49
|
+
saveData.value = connection.saveData ?? false;
|
|
50
|
+
type.value = toConnectionType(connection.type);
|
|
51
|
+
};
|
|
52
|
+
const onOnline = () => {
|
|
53
|
+
onlineAt.value = Date.now();
|
|
54
|
+
readConnection();
|
|
55
|
+
};
|
|
56
|
+
const onOffline = () => {
|
|
57
|
+
offlineAt.value = Date.now();
|
|
58
|
+
readConnection();
|
|
59
|
+
};
|
|
60
|
+
readConnection();
|
|
61
|
+
host.addEventListener("online", onOnline, { passive: true });
|
|
62
|
+
host.addEventListener("offline", onOffline, { passive: true });
|
|
63
|
+
connection?.addEventListener("change", readConnection, { passive: true });
|
|
64
|
+
onCleanup(() => {
|
|
65
|
+
host.removeEventListener("online", onOnline);
|
|
66
|
+
host.removeEventListener("offline", onOffline);
|
|
67
|
+
connection?.removeEventListener("change", readConnection);
|
|
68
|
+
});
|
|
69
|
+
}, { immediate: true });
|
|
70
|
+
tryOnScopeDispose(() => stop.stop());
|
|
71
|
+
return {
|
|
72
|
+
isSupported: readonly(isSupported),
|
|
73
|
+
isOnline: readonly(isOnline),
|
|
74
|
+
onlineAt: readonly(onlineAt),
|
|
75
|
+
offlineAt: readonly(offlineAt),
|
|
76
|
+
downlink: readonly(downlink),
|
|
77
|
+
downlinkMax: readonly(downlinkMax),
|
|
78
|
+
effectiveType: readonly(effectiveType),
|
|
79
|
+
rtt: readonly(rtt),
|
|
80
|
+
saveData: readonly(saveData),
|
|
81
|
+
type: readonly(type)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Track whether the browser reports being online.
|
|
86
|
+
*
|
|
87
|
+
* Shorthand for `useNetwork(options).isOnline` with the same SSR fallback
|
|
88
|
+
* and cleanup semantics.
|
|
89
|
+
*
|
|
90
|
+
* @param options Server fallback and window capability.
|
|
91
|
+
* @default options {}
|
|
92
|
+
* @returns Readonly online flag.
|
|
93
|
+
*/
|
|
94
|
+
function useOnline(options = {}) {
|
|
95
|
+
return useNetwork(options).isOnline;
|
|
96
|
+
}
|
|
97
|
+
function toEffectiveType(value) {
|
|
98
|
+
return value === "slow-2g" || value === "2g" || value === "3g" || value === "4g" ? value : null;
|
|
99
|
+
}
|
|
100
|
+
function toConnectionType(value) {
|
|
101
|
+
switch (value) {
|
|
102
|
+
case "bluetooth":
|
|
103
|
+
case "cellular":
|
|
104
|
+
case "ethernet":
|
|
105
|
+
case "none":
|
|
106
|
+
case "wifi":
|
|
107
|
+
case "wimax":
|
|
108
|
+
case "other":
|
|
109
|
+
case "unknown": return value;
|
|
110
|
+
default: return null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function browserNetworkHost() {
|
|
114
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
export { useNetwork, useOnline };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
3
|
+
import { MaybeRefOrGetter } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/on-click-outside.d.ts
|
|
6
|
+
/** Window-like capability observed by {@link onClickOutside}. */
|
|
7
|
+
interface ClickOutsideHost extends EventTarget {
|
|
8
|
+
/** Document used to detect focus moving into an iframe. */
|
|
9
|
+
readonly document: {
|
|
10
|
+
readonly activeElement: Element | null;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** Ignore entry: an element target or a CSS selector matched against the event path. */
|
|
14
|
+
type ClickOutsideIgnore = MaybeElementTarget | string;
|
|
15
|
+
/** Options for {@link onClickOutside}. */
|
|
16
|
+
interface OnClickOutsideOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Elements (or selectors) whose clicks never count as outside, e.g. the
|
|
19
|
+
* button that toggles a popover.
|
|
20
|
+
*
|
|
21
|
+
* @default []
|
|
22
|
+
*/
|
|
23
|
+
readonly ignore?: MaybeRefOrGetter<readonly ClickOutsideIgnore[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Listen in the capture phase so `stopPropagation()` inside the page
|
|
26
|
+
* cannot hide outside clicks.
|
|
27
|
+
*
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
readonly capture?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Treat focus moving into an `<iframe>` outside the target as an outside
|
|
33
|
+
* click (iframes swallow pointer events).
|
|
34
|
+
*
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
readonly detectIframe?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Owns the zero-delay timer used for iframe detection.
|
|
40
|
+
*
|
|
41
|
+
* @default globalThis timer functions
|
|
42
|
+
*/
|
|
43
|
+
readonly scheduler?: TimeoutScheduler;
|
|
44
|
+
/**
|
|
45
|
+
* Reactive window capability for alternate runtimes and tests.
|
|
46
|
+
*
|
|
47
|
+
* @default globalThis.window when available
|
|
48
|
+
*/
|
|
49
|
+
readonly host?: MaybeRefOrGetter<ClickOutsideHost | null | undefined>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Call a handler when the user clicks (or focuses an iframe) outside an element.
|
|
53
|
+
*
|
|
54
|
+
* A click counts as outside only when its `pointerdown` also started outside
|
|
55
|
+
* the target, so drags that begin inside (e.g. text selection) and end
|
|
56
|
+
* outside are ignored. Event paths (`composedPath()`) make shadow-DOM targets
|
|
57
|
+
* work. The host is resolved once, when called. Nothing is registered
|
|
58
|
+
* during server rendering; listeners are removed with the owning scope or by
|
|
59
|
+
* the returned stop function.
|
|
60
|
+
*
|
|
61
|
+
* @param target Reactive element target.
|
|
62
|
+
* @param handler Called with the outside `PointerEvent`/`MouseEvent` or `FocusEvent`.
|
|
63
|
+
* @param options Ignore list, phase, iframe detection, and capabilities.
|
|
64
|
+
* @default options {}
|
|
65
|
+
* @returns Stop function.
|
|
66
|
+
*/
|
|
67
|
+
declare function onClickOutside(target: MaybeElementTarget, handler: (event: Event) => void, options?: OnClickOutsideOptions): () => void;
|
|
68
|
+
//#endregion
|
|
69
|
+
export { ClickOutsideHost, ClickOutsideIgnore, OnClickOutsideOptions, onClickOutside };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { toValue } from "vue";
|
|
4
|
+
//#region src/on-click-outside.ts
|
|
5
|
+
const defaultScheduler = {
|
|
6
|
+
setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
|
|
7
|
+
clearTimeout: (handle) => {
|
|
8
|
+
globalThis.clearTimeout(handle);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Call a handler when the user clicks (or focuses an iframe) outside an element.
|
|
13
|
+
*
|
|
14
|
+
* A click counts as outside only when its `pointerdown` also started outside
|
|
15
|
+
* the target, so drags that begin inside (e.g. text selection) and end
|
|
16
|
+
* outside are ignored. Event paths (`composedPath()`) make shadow-DOM targets
|
|
17
|
+
* work. The host is resolved once, when called. Nothing is registered
|
|
18
|
+
* during server rendering; listeners are removed with the owning scope or by
|
|
19
|
+
* the returned stop function.
|
|
20
|
+
*
|
|
21
|
+
* @param target Reactive element target.
|
|
22
|
+
* @param handler Called with the outside `PointerEvent`/`MouseEvent` or `FocusEvent`.
|
|
23
|
+
* @param options Ignore list, phase, iframe detection, and capabilities.
|
|
24
|
+
* @default options {}
|
|
25
|
+
* @returns Stop function.
|
|
26
|
+
*/
|
|
27
|
+
function onClickOutside(target, handler, options = {}) {
|
|
28
|
+
const host = options.host === void 0 ? browserClickHost() : toValue(options.host);
|
|
29
|
+
if (!host) return () => void 0;
|
|
30
|
+
const capture = options.capture ?? true;
|
|
31
|
+
const scheduler = options.scheduler ?? defaultScheduler;
|
|
32
|
+
let startedInside = false;
|
|
33
|
+
let pendingBlur;
|
|
34
|
+
let hasPendingBlur = false;
|
|
35
|
+
const pathOf = (event) => {
|
|
36
|
+
const path = typeof event.composedPath === "function" ? event.composedPath() : [];
|
|
37
|
+
return path.length > 0 ? path : event.target ? [event.target] : [];
|
|
38
|
+
};
|
|
39
|
+
const isIgnored = (event) => {
|
|
40
|
+
const path = pathOf(event);
|
|
41
|
+
for (const entry of toValue(options.ignore) ?? []) {
|
|
42
|
+
if (typeof entry === "string") {
|
|
43
|
+
if (path.some((node) => matchesSelector(node, entry))) return true;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const element = resolveElement(entry);
|
|
47
|
+
if (element && path.some((node) => node === element || containsNode(element, node))) return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
};
|
|
51
|
+
const isInside = (event) => {
|
|
52
|
+
const element = resolveElement(target);
|
|
53
|
+
if (!element) return true;
|
|
54
|
+
return pathOf(event).some((node) => node === element || containsNode(element, node));
|
|
55
|
+
};
|
|
56
|
+
const onPointerDown = (event) => {
|
|
57
|
+
startedInside = isInside(event) || isIgnored(event);
|
|
58
|
+
};
|
|
59
|
+
const onClick = (event) => {
|
|
60
|
+
const inside = isInside(event) || isIgnored(event);
|
|
61
|
+
const began = startedInside;
|
|
62
|
+
startedInside = false;
|
|
63
|
+
if (inside || began) return;
|
|
64
|
+
handler(event);
|
|
65
|
+
};
|
|
66
|
+
const onBlur = (event) => {
|
|
67
|
+
if (hasPendingBlur) scheduler.clearTimeout(pendingBlur);
|
|
68
|
+
hasPendingBlur = true;
|
|
69
|
+
pendingBlur = scheduler.setTimeout(() => {
|
|
70
|
+
hasPendingBlur = false;
|
|
71
|
+
const active = host.document.activeElement;
|
|
72
|
+
const element = resolveElement(target);
|
|
73
|
+
if (active?.tagName === "IFRAME" && element && !containsNode(element, active)) handler(event);
|
|
74
|
+
}, 0);
|
|
75
|
+
};
|
|
76
|
+
host.addEventListener("pointerdown", onPointerDown, {
|
|
77
|
+
capture,
|
|
78
|
+
passive: true
|
|
79
|
+
});
|
|
80
|
+
host.addEventListener("click", onClick, {
|
|
81
|
+
capture,
|
|
82
|
+
passive: true
|
|
83
|
+
});
|
|
84
|
+
if (options.detectIframe) host.addEventListener("blur", onBlur);
|
|
85
|
+
let stopped = false;
|
|
86
|
+
const stop = () => {
|
|
87
|
+
if (stopped) return;
|
|
88
|
+
stopped = true;
|
|
89
|
+
host.removeEventListener("pointerdown", onPointerDown, { capture });
|
|
90
|
+
host.removeEventListener("click", onClick, { capture });
|
|
91
|
+
host.removeEventListener("blur", onBlur);
|
|
92
|
+
if (hasPendingBlur) scheduler.clearTimeout(pendingBlur);
|
|
93
|
+
};
|
|
94
|
+
tryOnScopeDispose(stop);
|
|
95
|
+
return stop;
|
|
96
|
+
}
|
|
97
|
+
function containsNode(element, node) {
|
|
98
|
+
return typeof element.contains === "function" && isNodeLike(node) && element.contains(node);
|
|
99
|
+
}
|
|
100
|
+
function isNodeLike(value) {
|
|
101
|
+
return "nodeType" in value;
|
|
102
|
+
}
|
|
103
|
+
function matchesSelector(node, selector) {
|
|
104
|
+
if (!("matches" in node) || typeof node.matches !== "function") return false;
|
|
105
|
+
try {
|
|
106
|
+
return node.matches(selector) === true;
|
|
107
|
+
} catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function browserClickHost() {
|
|
112
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
export { onClickOutside };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { KeyFilter } from "./magic-keys.mjs";
|
|
2
|
+
import { MaybeRefOrGetter } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/on-key-stroke.d.ts
|
|
5
|
+
/** Keyboard event names accepted by {@link onKeyStroke}. */
|
|
6
|
+
type KeyStrokeEventName = "keydown" | "keyup" | "keypress";
|
|
7
|
+
/** Options for {@link onKeyStroke}. */
|
|
8
|
+
interface OnKeyStrokeOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Keyboard event to listen for.
|
|
11
|
+
*
|
|
12
|
+
* @default "keydown"
|
|
13
|
+
*/
|
|
14
|
+
readonly eventName?: KeyStrokeEventName;
|
|
15
|
+
/**
|
|
16
|
+
* Event target.
|
|
17
|
+
*
|
|
18
|
+
* @default globalThis.window when available
|
|
19
|
+
*/
|
|
20
|
+
readonly target?: MaybeRefOrGetter<EventTarget | null | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* Register a passive listener (the handler then cannot `preventDefault()`).
|
|
23
|
+
*
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
readonly passive?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Ignore auto-repeated `keydown` events while a key is held.
|
|
29
|
+
*
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
readonly dedupe?: MaybeRefOrGetter<boolean>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Run a handler when matching keys are pressed.
|
|
36
|
+
*
|
|
37
|
+
* `key` accepts a name, a list of names (normalized like combos, so `"esc"`
|
|
38
|
+
* matches `Escape` and `"a"` matches `KeyA`), a predicate, or `true` for every
|
|
39
|
+
* key. The listener follows the reactive target and is removed with the
|
|
40
|
+
* owning scope or the returned stop function; nothing is registered during
|
|
41
|
+
* server rendering.
|
|
42
|
+
*
|
|
43
|
+
* @param key Key filter, or `true` for any key.
|
|
44
|
+
* @param handler Called with the matching `KeyboardEvent`.
|
|
45
|
+
* @param options Event name, target, passivity, and dedupe.
|
|
46
|
+
* @default options {}
|
|
47
|
+
* @returns Stop function.
|
|
48
|
+
*/
|
|
49
|
+
declare function onKeyStroke(key: KeyFilter | true, handler: (event: KeyboardEvent) => void, options?: OnKeyStrokeOptions): () => void;
|
|
50
|
+
/**
|
|
51
|
+
* {@link onKeyStroke} for `keydown`.
|
|
52
|
+
*
|
|
53
|
+
* @param key Key filter, or `true` for any key.
|
|
54
|
+
* @param handler Called with the matching `KeyboardEvent`.
|
|
55
|
+
* @param options Target, passivity, and dedupe.
|
|
56
|
+
* @default options {}
|
|
57
|
+
* @returns Stop function.
|
|
58
|
+
*/
|
|
59
|
+
declare function onKeyDown(key: KeyFilter | true, handler: (event: KeyboardEvent) => void, options?: Omit<OnKeyStrokeOptions, "eventName">): () => void;
|
|
60
|
+
/**
|
|
61
|
+
* {@link onKeyStroke} for `keyup`.
|
|
62
|
+
*
|
|
63
|
+
* @param key Key filter, or `true` for any key.
|
|
64
|
+
* @param handler Called with the matching `KeyboardEvent`.
|
|
65
|
+
* @param options Target, passivity, and dedupe.
|
|
66
|
+
* @default options {}
|
|
67
|
+
* @returns Stop function.
|
|
68
|
+
*/
|
|
69
|
+
declare function onKeyUp(key: KeyFilter | true, handler: (event: KeyboardEvent) => void, options?: Omit<OnKeyStrokeOptions, "eventName">): () => void;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { KeyStrokeEventName, OnKeyStrokeOptions, onKeyDown, onKeyStroke, onKeyUp };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { normalizeKeyName } from "./magic-keys.mjs";
|
|
3
|
+
import { toValue, watch } from "vue";
|
|
4
|
+
//#region src/on-key-stroke.ts
|
|
5
|
+
/**
|
|
6
|
+
* Run a handler when matching keys are pressed.
|
|
7
|
+
*
|
|
8
|
+
* `key` accepts a name, a list of names (normalized like combos, so `"esc"`
|
|
9
|
+
* matches `Escape` and `"a"` matches `KeyA`), a predicate, or `true` for every
|
|
10
|
+
* key. The listener follows the reactive target and is removed with the
|
|
11
|
+
* owning scope or the returned stop function; nothing is registered during
|
|
12
|
+
* server rendering.
|
|
13
|
+
*
|
|
14
|
+
* @param key Key filter, or `true` for any key.
|
|
15
|
+
* @param handler Called with the matching `KeyboardEvent`.
|
|
16
|
+
* @param options Event name, target, passivity, and dedupe.
|
|
17
|
+
* @default options {}
|
|
18
|
+
* @returns Stop function.
|
|
19
|
+
*/
|
|
20
|
+
function onKeyStroke(key, handler, options = {}) {
|
|
21
|
+
const eventName = options.eventName ?? "keydown";
|
|
22
|
+
const names = key === true || typeof key === "function" ? void 0 : new Set((typeof key === "string" ? [key] : key).map((name) => normalizeKeyName(name)));
|
|
23
|
+
const matches = (event) => {
|
|
24
|
+
if (key === true) return true;
|
|
25
|
+
if (typeof key === "function") return key(event);
|
|
26
|
+
return names !== void 0 && (names.has(normalizeKeyName(event.key)) || names.has(normalizeKeyName(event.code)));
|
|
27
|
+
};
|
|
28
|
+
const listener = (event) => {
|
|
29
|
+
if (!isKeyboardEvent(event)) return;
|
|
30
|
+
if (event.repeat && toValue(options.dedupe)) return;
|
|
31
|
+
if (matches(event)) handler(event);
|
|
32
|
+
};
|
|
33
|
+
const stop = watch(() => options.target === void 0 ? browserWindow() : toValue(options.target), (target, _previous, onCleanup) => {
|
|
34
|
+
if (!target) return;
|
|
35
|
+
target.addEventListener(eventName, listener, { passive: options.passive ?? false });
|
|
36
|
+
onCleanup(() => target.removeEventListener(eventName, listener));
|
|
37
|
+
}, { immediate: true });
|
|
38
|
+
const dispose = () => stop.stop();
|
|
39
|
+
tryOnScopeDispose(dispose);
|
|
40
|
+
return dispose;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* {@link onKeyStroke} for `keydown`.
|
|
44
|
+
*
|
|
45
|
+
* @param key Key filter, or `true` for any key.
|
|
46
|
+
* @param handler Called with the matching `KeyboardEvent`.
|
|
47
|
+
* @param options Target, passivity, and dedupe.
|
|
48
|
+
* @default options {}
|
|
49
|
+
* @returns Stop function.
|
|
50
|
+
*/
|
|
51
|
+
function onKeyDown(key, handler, options = {}) {
|
|
52
|
+
return onKeyStroke(key, handler, {
|
|
53
|
+
...options,
|
|
54
|
+
eventName: "keydown"
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* {@link onKeyStroke} for `keyup`.
|
|
59
|
+
*
|
|
60
|
+
* @param key Key filter, or `true` for any key.
|
|
61
|
+
* @param handler Called with the matching `KeyboardEvent`.
|
|
62
|
+
* @param options Target, passivity, and dedupe.
|
|
63
|
+
* @default options {}
|
|
64
|
+
* @returns Stop function.
|
|
65
|
+
*/
|
|
66
|
+
function onKeyUp(key, handler, options = {}) {
|
|
67
|
+
return onKeyStroke(key, handler, {
|
|
68
|
+
...options,
|
|
69
|
+
eventName: "keyup"
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function isKeyboardEvent(event) {
|
|
73
|
+
return "key" in event && "code" in event;
|
|
74
|
+
}
|
|
75
|
+
function browserWindow() {
|
|
76
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
export { onKeyDown, onKeyStroke, onKeyUp };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/on-long-press.d.ts
|
|
5
|
+
/** Event modifiers applied to the pointer events handled by {@link onLongPress}. */
|
|
6
|
+
interface LongPressModifiers {
|
|
7
|
+
/** Call `stopPropagation()`. */
|
|
8
|
+
readonly stop?: boolean;
|
|
9
|
+
/** Fire at most once. */
|
|
10
|
+
readonly once?: boolean;
|
|
11
|
+
/** Call `preventDefault()`. */
|
|
12
|
+
readonly prevent?: boolean;
|
|
13
|
+
/** Listen in the capture phase. */
|
|
14
|
+
readonly capture?: boolean;
|
|
15
|
+
/** Only start when the element itself (not a descendant) is pressed. */
|
|
16
|
+
readonly self?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** Summary passed to {@link OnLongPressOptions.onRelease}. */
|
|
19
|
+
interface LongPressRelease {
|
|
20
|
+
/** Milliseconds between press and release. */
|
|
21
|
+
readonly duration: number;
|
|
22
|
+
/** Pointer travel in CSS pixels. */
|
|
23
|
+
readonly distance: number;
|
|
24
|
+
/** Whether the long-press handler fired. */
|
|
25
|
+
readonly isLongPress: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Options for {@link onLongPress}. */
|
|
28
|
+
interface OnLongPressOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Hold time in milliseconds.
|
|
31
|
+
*
|
|
32
|
+
* @default 500
|
|
33
|
+
*/
|
|
34
|
+
readonly delay?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Maximum pointer travel before the press is cancelled.
|
|
37
|
+
*
|
|
38
|
+
* @default 10
|
|
39
|
+
*/
|
|
40
|
+
readonly distanceThreshold?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Event modifiers.
|
|
43
|
+
*
|
|
44
|
+
* @default {}
|
|
45
|
+
*/
|
|
46
|
+
readonly modifiers?: LongPressModifiers;
|
|
47
|
+
/**
|
|
48
|
+
* Called on every release with timing details.
|
|
49
|
+
*
|
|
50
|
+
* @default undefined
|
|
51
|
+
*/
|
|
52
|
+
readonly onRelease?: (release: LongPressRelease, event: PointerEvent) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Clock for durations.
|
|
55
|
+
*
|
|
56
|
+
* @default Date.now
|
|
57
|
+
*/
|
|
58
|
+
readonly now?: () => number;
|
|
59
|
+
/**
|
|
60
|
+
* Owns the hold timer.
|
|
61
|
+
*
|
|
62
|
+
* @default globalThis timer functions
|
|
63
|
+
*/
|
|
64
|
+
readonly scheduler?: TimeoutScheduler;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Call a handler when an element is pressed and held.
|
|
68
|
+
*
|
|
69
|
+
* Uses Pointer Events, so mouse, touch, and pen behave alike. Moving more than
|
|
70
|
+
* `distanceThreshold` or releasing early cancels the press. Nothing is
|
|
71
|
+
* registered during server rendering; listeners and the timer are released
|
|
72
|
+
* with the owning scope or the returned stop function.
|
|
73
|
+
*
|
|
74
|
+
* @param target Reactive element target.
|
|
75
|
+
* @param handler Called with the initiating `pointerdown` event.
|
|
76
|
+
* @param options Delay, threshold, modifiers, and callbacks.
|
|
77
|
+
* @default options {}
|
|
78
|
+
* @returns Stop function.
|
|
79
|
+
*/
|
|
80
|
+
declare function onLongPress(target: MaybeElementTarget, handler: (event: PointerEvent) => void, options?: OnLongPressOptions): () => void;
|
|
81
|
+
//#endregion
|
|
82
|
+
export { LongPressModifiers, LongPressRelease, OnLongPressOptions, onLongPress };
|