@vizejs/composable 0.426.3 → 0.427.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,126 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { hasInjectionContext, readonly, ref, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
4
|
+
//#region src/pointer-lock.ts
|
|
5
|
+
/** Error thrown when pointer lock cannot be acquired or released. */
|
|
6
|
+
var PointerLockError = class extends Error {
|
|
7
|
+
/** Machine-readable failure code. */
|
|
8
|
+
code;
|
|
9
|
+
/**
|
|
10
|
+
* @param code Machine-readable failure code.
|
|
11
|
+
* @param message Human-readable explanation.
|
|
12
|
+
*/
|
|
13
|
+
constructor(code, message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = "PointerLockError";
|
|
16
|
+
this.code = code;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Reactive wrapper around the Pointer Lock API.
|
|
21
|
+
*
|
|
22
|
+
* Tracks `pointerlockchange` on the document and exposes promise-based lock
|
|
23
|
+
* and unlock actions that settle on the platform confirmation events.
|
|
24
|
+
* Rejections are {@link PointerLockError}s with stable codes. Nothing runs
|
|
25
|
+
* during server rendering; listeners are removed with the owning scope.
|
|
26
|
+
*
|
|
27
|
+
* Inside a component the host is read after mounting, so hydration renders
|
|
28
|
+
* the server fallback first and never mismatches.
|
|
29
|
+
*
|
|
30
|
+
* @param target Default reactive element to lock.
|
|
31
|
+
* @param options Movement mode and document capability.
|
|
32
|
+
* @default target undefined
|
|
33
|
+
* @default options {}
|
|
34
|
+
* @returns Support flag, lock state, and actions.
|
|
35
|
+
*/
|
|
36
|
+
function usePointerLock(target, options = {}) {
|
|
37
|
+
const isSupported = ref(false);
|
|
38
|
+
const element = shallowRef(null);
|
|
39
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
40
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
41
|
+
hydrated.value = true;
|
|
42
|
+
});
|
|
43
|
+
const host = () => !hydrated.value ? void 0 : options.host === void 0 ? browserPointerLockHost() : toValue(options.host);
|
|
44
|
+
const stop = watch(host, (current, _previous, onCleanup) => {
|
|
45
|
+
isSupported.value = Boolean(current && "pointerLockElement" in current);
|
|
46
|
+
element.value = current?.pointerLockElement ?? null;
|
|
47
|
+
if (!current) return;
|
|
48
|
+
const onChange = () => {
|
|
49
|
+
element.value = current.pointerLockElement;
|
|
50
|
+
};
|
|
51
|
+
current.addEventListener("pointerlockchange", onChange);
|
|
52
|
+
onCleanup(() => current.removeEventListener("pointerlockchange", onChange));
|
|
53
|
+
}, { immediate: true });
|
|
54
|
+
tryOnScopeDispose(() => stop.stop());
|
|
55
|
+
const isLocked = ref(false);
|
|
56
|
+
watch([element, () => target === void 0 ? null : resolveElement(target)], ([locked, own]) => {
|
|
57
|
+
isLocked.value = locked !== null && locked === own;
|
|
58
|
+
}, {
|
|
59
|
+
immediate: true,
|
|
60
|
+
flush: "sync"
|
|
61
|
+
});
|
|
62
|
+
const lock = async (override) => {
|
|
63
|
+
const current = host();
|
|
64
|
+
if (!current || !isSupported.value) throw new PointerLockError("VIZE_COMPOSE_POINTER_LOCK_UNSUPPORTED", "Pointer lock is not supported.");
|
|
65
|
+
const candidate = resolveElement(override ?? target);
|
|
66
|
+
if (!candidate || !isPointerLockable(candidate)) throw new PointerLockError("VIZE_COMPOSE_POINTER_LOCK_NO_TARGET", "No lockable element resolved.");
|
|
67
|
+
const confirmed = waitFor(current, () => current.pointerLockElement === candidate);
|
|
68
|
+
try {
|
|
69
|
+
await candidate.requestPointerLock(options.unadjustedMovement ? { unadjustedMovement: true } : void 0);
|
|
70
|
+
} catch (cause) {
|
|
71
|
+
confirmed.cancel();
|
|
72
|
+
throw new PointerLockError("VIZE_COMPOSE_POINTER_LOCK_FAILED", describe(cause));
|
|
73
|
+
}
|
|
74
|
+
await confirmed.promise;
|
|
75
|
+
return candidate;
|
|
76
|
+
};
|
|
77
|
+
const unlock = async () => {
|
|
78
|
+
const current = host();
|
|
79
|
+
if (!current?.pointerLockElement) return false;
|
|
80
|
+
const confirmed = waitFor(current, () => current.pointerLockElement === null);
|
|
81
|
+
current.exitPointerLock();
|
|
82
|
+
await confirmed.promise;
|
|
83
|
+
return true;
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
isSupported: readonly(isSupported),
|
|
87
|
+
element,
|
|
88
|
+
isLocked: readonly(isLocked),
|
|
89
|
+
lock,
|
|
90
|
+
unlock
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function waitFor(host, done) {
|
|
94
|
+
let cleanup = () => void 0;
|
|
95
|
+
return {
|
|
96
|
+
promise: new Promise((resolve, reject) => {
|
|
97
|
+
const onChange = () => {
|
|
98
|
+
if (!done()) return;
|
|
99
|
+
cleanup();
|
|
100
|
+
resolve();
|
|
101
|
+
};
|
|
102
|
+
const onError = () => {
|
|
103
|
+
cleanup();
|
|
104
|
+
reject(new PointerLockError("VIZE_COMPOSE_POINTER_LOCK_FAILED", "The pointer lock was refused."));
|
|
105
|
+
};
|
|
106
|
+
host.addEventListener("pointerlockchange", onChange);
|
|
107
|
+
host.addEventListener("pointerlockerror", onError);
|
|
108
|
+
cleanup = () => {
|
|
109
|
+
host.removeEventListener("pointerlockchange", onChange);
|
|
110
|
+
host.removeEventListener("pointerlockerror", onError);
|
|
111
|
+
};
|
|
112
|
+
}),
|
|
113
|
+
cancel: () => cleanup()
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function isPointerLockable(element) {
|
|
117
|
+
return typeof element.requestPointerLock === "function";
|
|
118
|
+
}
|
|
119
|
+
function describe(cause) {
|
|
120
|
+
return cause instanceof Error ? cause.message : "The pointer lock request failed.";
|
|
121
|
+
}
|
|
122
|
+
function browserPointerLockHost() {
|
|
123
|
+
return typeof document !== "undefined" ? document : void 0;
|
|
124
|
+
}
|
|
125
|
+
//#endregion
|
|
126
|
+
export { PointerLockError, usePointerLock };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/pointer.d.ts
|
|
4
|
+
/** Pointer device kind reported by Pointer Events. */
|
|
5
|
+
type PointerKind = "mouse" | "touch" | "pen";
|
|
6
|
+
/** Snapshot of the latest pointer event. */
|
|
7
|
+
interface PointerState {
|
|
8
|
+
/** Horizontal client coordinate. */
|
|
9
|
+
readonly x: number;
|
|
10
|
+
/** Vertical client coordinate. */
|
|
11
|
+
readonly y: number;
|
|
12
|
+
/** Normalized pressure in `[0, 1]`. */
|
|
13
|
+
readonly pressure: number;
|
|
14
|
+
/** Identifier of the pointer that produced the latest event. */
|
|
15
|
+
readonly pointerId: number;
|
|
16
|
+
/** Pen tilt around the Y axis in degrees. */
|
|
17
|
+
readonly tiltX: number;
|
|
18
|
+
/** Pen tilt around the X axis in degrees. */
|
|
19
|
+
readonly tiltY: number;
|
|
20
|
+
/** Contact geometry width in CSS pixels. */
|
|
21
|
+
readonly width: number;
|
|
22
|
+
/** Contact geometry height in CSS pixels. */
|
|
23
|
+
readonly height: number;
|
|
24
|
+
/** Pen rotation in degrees. */
|
|
25
|
+
readonly twist: number;
|
|
26
|
+
/** Device kind; `null` before the first event. */
|
|
27
|
+
readonly pointerType: PointerKind | null;
|
|
28
|
+
}
|
|
29
|
+
/** Options for {@link usePointer}. */
|
|
30
|
+
interface UsePointerOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Device kinds to track.
|
|
33
|
+
*
|
|
34
|
+
* @default ["mouse", "touch", "pen"]
|
|
35
|
+
*/
|
|
36
|
+
readonly pointerTypes?: readonly PointerKind[];
|
|
37
|
+
/**
|
|
38
|
+
* Event target to listen on.
|
|
39
|
+
*
|
|
40
|
+
* @default globalThis.window when available
|
|
41
|
+
*/
|
|
42
|
+
readonly target?: MaybeRefOrGetter<EventTarget | null | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* State exposed before any input and during server rendering.
|
|
45
|
+
*
|
|
46
|
+
* @default all numbers `0`, `pointerType: null`
|
|
47
|
+
*/
|
|
48
|
+
readonly initialValue?: Partial<PointerState>;
|
|
49
|
+
}
|
|
50
|
+
/** Reactive pointer state returned by {@link usePointer}. */
|
|
51
|
+
interface PointerControls {
|
|
52
|
+
/** Latest pointer snapshot. */
|
|
53
|
+
readonly state: Readonly<PointerState>;
|
|
54
|
+
/** Whether the pointer is inside the target (between enter/move and leave). */
|
|
55
|
+
readonly isInside: Readonly<Ref<boolean>>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Track the latest pointer (mouse, touch, or pen) state.
|
|
59
|
+
*
|
|
60
|
+
* Listens passively for `pointerdown`, `pointermove`, `pointerup`, and
|
|
61
|
+
* `pointerleave` on the reactive target and filters by device kind.
|
|
62
|
+
* Listeners are removed with the owning reactive scope; server renders expose
|
|
63
|
+
* the initial snapshot.
|
|
64
|
+
*
|
|
65
|
+
* @param options Device filter, target, and initial snapshot.
|
|
66
|
+
* @default options {}
|
|
67
|
+
* @returns Reactive snapshot and inside flag.
|
|
68
|
+
*/
|
|
69
|
+
declare function usePointer(options?: UsePointerOptions): PointerControls;
|
|
70
|
+
/**
|
|
71
|
+
* Narrow a platform `pointerType` string to the closed {@link PointerKind} union.
|
|
72
|
+
*
|
|
73
|
+
* @param value Raw `PointerEvent.pointerType`.
|
|
74
|
+
* @returns The matching kind, or `null` for unknown/future device kinds.
|
|
75
|
+
*/
|
|
76
|
+
declare function toPointerKind(value: string): PointerKind | null;
|
|
77
|
+
//#endregion
|
|
78
|
+
export { PointerControls, PointerKind, PointerState, UsePointerOptions, toPointerKind, usePointer };
|
package/dist/pointer.mjs
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { readonly, ref, shallowReactive, shallowReadonly, toValue, watch } from "vue";
|
|
3
|
+
//#region src/pointer.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track the latest pointer (mouse, touch, or pen) state.
|
|
6
|
+
*
|
|
7
|
+
* Listens passively for `pointerdown`, `pointermove`, `pointerup`, and
|
|
8
|
+
* `pointerleave` on the reactive target and filters by device kind.
|
|
9
|
+
* Listeners are removed with the owning reactive scope; server renders expose
|
|
10
|
+
* the initial snapshot.
|
|
11
|
+
*
|
|
12
|
+
* @param options Device filter, target, and initial snapshot.
|
|
13
|
+
* @default options {}
|
|
14
|
+
* @returns Reactive snapshot and inside flag.
|
|
15
|
+
*/
|
|
16
|
+
function usePointer(options = {}) {
|
|
17
|
+
const pointerTypes = options.pointerTypes ?? [
|
|
18
|
+
"mouse",
|
|
19
|
+
"touch",
|
|
20
|
+
"pen"
|
|
21
|
+
];
|
|
22
|
+
const state = shallowReactive({
|
|
23
|
+
x: 0,
|
|
24
|
+
y: 0,
|
|
25
|
+
pressure: 0,
|
|
26
|
+
pointerId: 0,
|
|
27
|
+
tiltX: 0,
|
|
28
|
+
tiltY: 0,
|
|
29
|
+
width: 0,
|
|
30
|
+
height: 0,
|
|
31
|
+
twist: 0,
|
|
32
|
+
pointerType: null,
|
|
33
|
+
...options.initialValue
|
|
34
|
+
});
|
|
35
|
+
const isInside = ref(false);
|
|
36
|
+
const onPointer = (event) => {
|
|
37
|
+
if (!isPointerEvent(event)) return;
|
|
38
|
+
const kind = toPointerKind(event.pointerType);
|
|
39
|
+
if (!kind || !pointerTypes.includes(kind)) return;
|
|
40
|
+
isInside.value = true;
|
|
41
|
+
state.x = event.clientX;
|
|
42
|
+
state.y = event.clientY;
|
|
43
|
+
state.pressure = event.pressure;
|
|
44
|
+
state.pointerId = event.pointerId;
|
|
45
|
+
state.tiltX = event.tiltX;
|
|
46
|
+
state.tiltY = event.tiltY;
|
|
47
|
+
state.width = event.width;
|
|
48
|
+
state.height = event.height;
|
|
49
|
+
state.twist = event.twist;
|
|
50
|
+
state.pointerType = kind;
|
|
51
|
+
};
|
|
52
|
+
const onLeave = () => {
|
|
53
|
+
isInside.value = false;
|
|
54
|
+
};
|
|
55
|
+
const stop = watch(() => options.target === void 0 ? browserWindow() : toValue(options.target), (target, _previous, onCleanup) => {
|
|
56
|
+
if (!target) return;
|
|
57
|
+
const listenerOptions = { passive: true };
|
|
58
|
+
for (const type of [
|
|
59
|
+
"pointerdown",
|
|
60
|
+
"pointermove",
|
|
61
|
+
"pointerup"
|
|
62
|
+
]) target.addEventListener(type, onPointer, listenerOptions);
|
|
63
|
+
target.addEventListener("pointerleave", onLeave, listenerOptions);
|
|
64
|
+
onCleanup(() => {
|
|
65
|
+
for (const type of [
|
|
66
|
+
"pointerdown",
|
|
67
|
+
"pointermove",
|
|
68
|
+
"pointerup"
|
|
69
|
+
]) target.removeEventListener(type, onPointer);
|
|
70
|
+
target.removeEventListener("pointerleave", onLeave);
|
|
71
|
+
});
|
|
72
|
+
}, { immediate: true });
|
|
73
|
+
tryOnScopeDispose(() => stop.stop());
|
|
74
|
+
return {
|
|
75
|
+
state: shallowReadonly(state),
|
|
76
|
+
isInside: readonly(isInside)
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Narrow a platform `pointerType` string to the closed {@link PointerKind} union.
|
|
81
|
+
*
|
|
82
|
+
* @param value Raw `PointerEvent.pointerType`.
|
|
83
|
+
* @returns The matching kind, or `null` for unknown/future device kinds.
|
|
84
|
+
*/
|
|
85
|
+
function toPointerKind(value) {
|
|
86
|
+
return value === "mouse" || value === "touch" || value === "pen" ? value : null;
|
|
87
|
+
}
|
|
88
|
+
function isPointerEvent(event) {
|
|
89
|
+
return "pointerId" in event && "pointerType" in event;
|
|
90
|
+
}
|
|
91
|
+
function browserWindow() {
|
|
92
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { toPointerKind, usePointer };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { UseMediaQueryOptions } from "./media-query.mjs";
|
|
2
|
+
import { ComputedRef, Ref } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/preferences.d.ts
|
|
5
|
+
/** Color scheme preference exposed by {@link usePreferredColorScheme}. */
|
|
6
|
+
type ColorSchemePreference = "dark" | "light" | "no-preference";
|
|
7
|
+
/** Contrast preference exposed by {@link usePreferredContrast}. */
|
|
8
|
+
type ContrastPreference = "more" | "less" | "custom" | "no-preference";
|
|
9
|
+
/** Options for the multi-valued preference composables. */
|
|
10
|
+
interface UsePreferenceOptions<Preference extends string> extends Omit<UseMediaQueryOptions, "ssrValue"> {
|
|
11
|
+
/**
|
|
12
|
+
* Preference exposed during server rendering and whenever no media-query
|
|
13
|
+
* capability exists.
|
|
14
|
+
*
|
|
15
|
+
* @default "no-preference"
|
|
16
|
+
*/
|
|
17
|
+
readonly ssrPreference?: Preference;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Whether the user prefers a dark color scheme.
|
|
21
|
+
*
|
|
22
|
+
* Shares {@link useMediaQuery} semantics: `ssrValue` (default `false`) during
|
|
23
|
+
* server rendering and subscription cleanup with the owning scope.
|
|
24
|
+
*
|
|
25
|
+
* @param options Runtime capability and server fallback.
|
|
26
|
+
* @default options {}
|
|
27
|
+
* @returns Readonly ref for `(prefers-color-scheme: dark)`.
|
|
28
|
+
*/
|
|
29
|
+
declare function usePreferredDark(options?: UseMediaQueryOptions): Readonly<Ref<boolean>>;
|
|
30
|
+
/**
|
|
31
|
+
* Reactive color scheme preference.
|
|
32
|
+
*
|
|
33
|
+
* @param options Runtime capability and server fallback.
|
|
34
|
+
* @default options {}
|
|
35
|
+
* @returns Computed closed preference.
|
|
36
|
+
*/
|
|
37
|
+
declare function usePreferredColorScheme(options?: UsePreferenceOptions<ColorSchemePreference>): ComputedRef<ColorSchemePreference>;
|
|
38
|
+
/**
|
|
39
|
+
* Reactive contrast preference.
|
|
40
|
+
*
|
|
41
|
+
* @param options Runtime capability and server fallback.
|
|
42
|
+
* @default options {}
|
|
43
|
+
* @returns Computed closed preference.
|
|
44
|
+
*/
|
|
45
|
+
declare function usePreferredContrast(options?: UsePreferenceOptions<ContrastPreference>): ComputedRef<ContrastPreference>;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the user prefers reduced transparency.
|
|
48
|
+
*
|
|
49
|
+
* @param options Runtime capability and server fallback.
|
|
50
|
+
* @default options {}
|
|
51
|
+
* @returns Readonly ref for `(prefers-reduced-transparency: reduce)`.
|
|
52
|
+
*/
|
|
53
|
+
declare function usePreferredReducedTransparency(options?: UseMediaQueryOptions): Readonly<Ref<boolean>>;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { ColorSchemePreference, ContrastPreference, UsePreferenceOptions, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredReducedTransparency };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { useMediaQuery } from "./media-query.mjs";
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
//#region src/preferences.ts
|
|
4
|
+
/**
|
|
5
|
+
* Whether the user prefers a dark color scheme.
|
|
6
|
+
*
|
|
7
|
+
* Shares {@link useMediaQuery} semantics: `ssrValue` (default `false`) during
|
|
8
|
+
* server rendering and subscription cleanup with the owning scope.
|
|
9
|
+
*
|
|
10
|
+
* @param options Runtime capability and server fallback.
|
|
11
|
+
* @default options {}
|
|
12
|
+
* @returns Readonly ref for `(prefers-color-scheme: dark)`.
|
|
13
|
+
*/
|
|
14
|
+
function usePreferredDark(options = {}) {
|
|
15
|
+
return useMediaQuery("(prefers-color-scheme: dark)", options);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Reactive color scheme preference.
|
|
19
|
+
*
|
|
20
|
+
* @param options Runtime capability and server fallback.
|
|
21
|
+
* @default options {}
|
|
22
|
+
* @returns Computed closed preference.
|
|
23
|
+
*/
|
|
24
|
+
function usePreferredColorScheme(options = {}) {
|
|
25
|
+
const fallback = options.ssrPreference ?? "no-preference";
|
|
26
|
+
const query = (value) => useMediaQuery(`(prefers-color-scheme: ${value})`, withSsr(options, fallback === value));
|
|
27
|
+
const dark = query("dark");
|
|
28
|
+
const light = query("light");
|
|
29
|
+
return computed(() => dark.value ? "dark" : light.value ? "light" : "no-preference");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Reactive contrast preference.
|
|
33
|
+
*
|
|
34
|
+
* @param options Runtime capability and server fallback.
|
|
35
|
+
* @default options {}
|
|
36
|
+
* @returns Computed closed preference.
|
|
37
|
+
*/
|
|
38
|
+
function usePreferredContrast(options = {}) {
|
|
39
|
+
const fallback = options.ssrPreference ?? "no-preference";
|
|
40
|
+
const query = (value) => useMediaQuery(`(prefers-contrast: ${value})`, withSsr(options, fallback === value));
|
|
41
|
+
const more = query("more");
|
|
42
|
+
const less = query("less");
|
|
43
|
+
const custom = query("custom");
|
|
44
|
+
return computed(() => more.value ? "more" : less.value ? "less" : custom.value ? "custom" : "no-preference");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether the user prefers reduced transparency.
|
|
48
|
+
*
|
|
49
|
+
* @param options Runtime capability and server fallback.
|
|
50
|
+
* @default options {}
|
|
51
|
+
* @returns Readonly ref for `(prefers-reduced-transparency: reduce)`.
|
|
52
|
+
*/
|
|
53
|
+
function usePreferredReducedTransparency(options = {}) {
|
|
54
|
+
return useMediaQuery("(prefers-reduced-transparency: reduce)", options);
|
|
55
|
+
}
|
|
56
|
+
function withSsr(options, ssrValue) {
|
|
57
|
+
return options.host === void 0 ? { ssrValue } : {
|
|
58
|
+
ssrValue,
|
|
59
|
+
host: options.host
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
export { usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredReducedTransparency };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/preferred-languages.d.ts
|
|
4
|
+
/** Window-like capability observed by {@link usePreferredLanguages}. */
|
|
5
|
+
interface PreferredLanguagesHost extends EventTarget {
|
|
6
|
+
/** Navigator exposing the user's languages. */
|
|
7
|
+
readonly navigator: {
|
|
8
|
+
readonly languages: readonly string[];
|
|
9
|
+
readonly language?: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/** Options for {@link usePreferredLanguages}. */
|
|
13
|
+
interface UsePreferredLanguagesOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Languages exposed during server rendering. Pass the request's
|
|
16
|
+
* `Accept-Language` list to keep hydration stable.
|
|
17
|
+
*
|
|
18
|
+
* @default ["en"]
|
|
19
|
+
*/
|
|
20
|
+
readonly ssrLanguages?: readonly string[];
|
|
21
|
+
/**
|
|
22
|
+
* Reactive window capability for alternate runtimes and tests.
|
|
23
|
+
*
|
|
24
|
+
* @default globalThis.window when available
|
|
25
|
+
*/
|
|
26
|
+
readonly host?: MaybeRefOrGetter<PreferredLanguagesHost | null | undefined>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Track the user's preferred languages (`navigator.languages`).
|
|
30
|
+
*
|
|
31
|
+
* Updates on `languagechange`. The default host is gated on `window`, so
|
|
32
|
+
* Node's own `navigator` never leaks the server locale into the render;
|
|
33
|
+
* server renders expose `ssrLanguages`. Inside a component the languages are
|
|
34
|
+
* read after mounting, so hydration renders `ssrLanguages` first. The
|
|
35
|
+
* listener is removed with the owning reactive scope.
|
|
36
|
+
*
|
|
37
|
+
* @param options Server fallback and window capability.
|
|
38
|
+
* @default options {}
|
|
39
|
+
* @returns Readonly ref of BCP 47 language tags, most preferred first.
|
|
40
|
+
*/
|
|
41
|
+
declare function usePreferredLanguages(options?: UsePreferredLanguagesOptions): Readonly<Ref<readonly string[]>>;
|
|
42
|
+
//#endregion
|
|
43
|
+
export { PreferredLanguagesHost, UsePreferredLanguagesOptions, usePreferredLanguages };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext, readonly, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/preferred-languages.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track the user's preferred languages (`navigator.languages`).
|
|
6
|
+
*
|
|
7
|
+
* Updates on `languagechange`. The default host is gated on `window`, so
|
|
8
|
+
* Node's own `navigator` never leaks the server locale into the render;
|
|
9
|
+
* server renders expose `ssrLanguages`. Inside a component the languages are
|
|
10
|
+
* read after mounting, so hydration renders `ssrLanguages` first. The
|
|
11
|
+
* listener is removed with the owning reactive scope.
|
|
12
|
+
*
|
|
13
|
+
* @param options Server fallback and window capability.
|
|
14
|
+
* @default options {}
|
|
15
|
+
* @returns Readonly ref of BCP 47 language tags, most preferred first.
|
|
16
|
+
*/
|
|
17
|
+
function usePreferredLanguages(options = {}) {
|
|
18
|
+
const fallback = options.ssrLanguages ?? ["en"];
|
|
19
|
+
const languages = shallowRef(fallback);
|
|
20
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
21
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
22
|
+
hydrated.value = true;
|
|
23
|
+
});
|
|
24
|
+
const stop = watch(() => hydrated.value ? options.host === void 0 ? browserLanguagesHost() : toValue(options.host) : void 0, (host, _previous, onCleanup) => {
|
|
25
|
+
if (!host) {
|
|
26
|
+
languages.value = fallback;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const update = () => {
|
|
30
|
+
const { languages: list, language } = host.navigator;
|
|
31
|
+
languages.value = list.length > 0 ? [...list] : language !== void 0 ? [language] : fallback;
|
|
32
|
+
};
|
|
33
|
+
update();
|
|
34
|
+
host.addEventListener("languagechange", update, { passive: true });
|
|
35
|
+
onCleanup(() => host.removeEventListener("languagechange", update));
|
|
36
|
+
}, { immediate: true });
|
|
37
|
+
tryOnScopeDispose(() => stop.stop());
|
|
38
|
+
return readonly(languages);
|
|
39
|
+
}
|
|
40
|
+
function browserLanguagesHost() {
|
|
41
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { usePreferredLanguages };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRefOrGetter } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/reactify.d.ts
|
|
4
|
+
/** Parameter list of a reactified function: every argument may be a ref or getter. */
|
|
5
|
+
type ReactifiedArguments<Arguments extends readonly unknown[]> = { readonly [Index in keyof Arguments]: MaybeRefOrGetter<Arguments[Index]> };
|
|
6
|
+
/** Function returned by {@link reactify}. */
|
|
7
|
+
type Reactified<Arguments extends readonly unknown[], Result> = (...args: ReactifiedArguments<Arguments>) => ComputedRef<Result>;
|
|
8
|
+
/**
|
|
9
|
+
* Turn a plain function into one that accepts refs/getters and returns a
|
|
10
|
+
* computed result.
|
|
11
|
+
*
|
|
12
|
+
* Arity and parameter names are preserved; each parameter additionally
|
|
13
|
+
* accepts `Ref<T>` or `() => T`. The computed re-runs the original function
|
|
14
|
+
* whenever a reactive argument changes. Pure derived state: SSR-safe and
|
|
15
|
+
* nothing to dispose.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const add = reactify((left: number, right: number) => left + right);
|
|
20
|
+
* const sum = add(count, 1); // ComputedRef<number>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @param fn Plain function to lift.
|
|
24
|
+
* @returns The reactified function.
|
|
25
|
+
*/
|
|
26
|
+
declare function reactify<Arguments extends readonly unknown[], Result>(fn: (...args: Arguments) => Result): Reactified<Arguments, Result>;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Reactified, ReactifiedArguments, reactify };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/ref-auto-reset.d.ts
|
|
5
|
+
/** Options for {@link refAutoReset}. */
|
|
6
|
+
interface RefAutoResetOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Applies the reset timer when no browser `window` is available. When
|
|
9
|
+
* disabled, written values persist on the server (a render is a snapshot).
|
|
10
|
+
*
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
readonly runOnServer?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Owns the reset timer.
|
|
16
|
+
*
|
|
17
|
+
* @default globalThis timer functions
|
|
18
|
+
*/
|
|
19
|
+
readonly scheduler?: TimeoutScheduler;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Writable ref that falls back to a default value `afterMs` milliseconds
|
|
23
|
+
* after each write.
|
|
24
|
+
*
|
|
25
|
+
* Typical for transient UI state such as "Copied!" labels. Every write
|
|
26
|
+
* restarts the timer; the default (itself possibly reactive) is read when the
|
|
27
|
+
* reset happens, and the ref reads the current default until the first write.
|
|
28
|
+
* The pending reset is cancelled when the owning reactive scope stops.
|
|
29
|
+
* Without a browser `window` (and without `runOnServer`) no timer starts.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const message = refAutoReset("", 2_000);
|
|
34
|
+
* message.value = "Copied!"; // back to "" after two seconds
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @param defaultValue Reactive value restored after the delay.
|
|
38
|
+
* @param afterMs Reactive delay in milliseconds, finite and at least zero.
|
|
39
|
+
* @param options Server and scheduler policy.
|
|
40
|
+
* @default options {}
|
|
41
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_REF_AUTO_RESET_INVALID_DELAY` for
|
|
42
|
+
* invalid delays, synchronously at creation and on every write.
|
|
43
|
+
* @returns A writable ref.
|
|
44
|
+
*/
|
|
45
|
+
declare function refAutoReset<Value>(defaultValue: MaybeRefOrGetter<Value>, afterMs: MaybeRefOrGetter<number>, options?: RefAutoResetOptions): Ref<Value>;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { RefAutoResetOptions, refAutoReset };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { customRef, toValue } from "vue";
|
|
3
|
+
//#region src/ref-auto-reset.ts
|
|
4
|
+
const defaultScheduler = {
|
|
5
|
+
setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
|
|
6
|
+
clearTimeout: (handle) => {
|
|
7
|
+
globalThis.clearTimeout(handle);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function resolveResetMs(value) {
|
|
11
|
+
if (!Number.isFinite(value) || value < 0) throw new RangeError(`[VIZE_COMPOSE_REF_AUTO_RESET_INVALID_DELAY] afterMs must be finite and at least zero; received ${String(value)}`);
|
|
12
|
+
return Math.trunc(value);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Writable ref that falls back to a default value `afterMs` milliseconds
|
|
16
|
+
* after each write.
|
|
17
|
+
*
|
|
18
|
+
* Typical for transient UI state such as "Copied!" labels. Every write
|
|
19
|
+
* restarts the timer; the default (itself possibly reactive) is read when the
|
|
20
|
+
* reset happens, and the ref reads the current default until the first write.
|
|
21
|
+
* The pending reset is cancelled when the owning reactive scope stops.
|
|
22
|
+
* Without a browser `window` (and without `runOnServer`) no timer starts.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const message = refAutoReset("", 2_000);
|
|
27
|
+
* message.value = "Copied!"; // back to "" after two seconds
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param defaultValue Reactive value restored after the delay.
|
|
31
|
+
* @param afterMs Reactive delay in milliseconds, finite and at least zero.
|
|
32
|
+
* @param options Server and scheduler policy.
|
|
33
|
+
* @default options {}
|
|
34
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_REF_AUTO_RESET_INVALID_DELAY` for
|
|
35
|
+
* invalid delays, synchronously at creation and on every write.
|
|
36
|
+
* @returns A writable ref.
|
|
37
|
+
*/
|
|
38
|
+
function refAutoReset(defaultValue, afterMs, options = {}) {
|
|
39
|
+
const scheduler = options.scheduler ?? defaultScheduler;
|
|
40
|
+
resolveResetMs(toValue(afterMs));
|
|
41
|
+
let handle;
|
|
42
|
+
let written = false;
|
|
43
|
+
let current = toValue(defaultValue);
|
|
44
|
+
const cancel = () => {
|
|
45
|
+
if (handle !== void 0) scheduler.clearTimeout(handle);
|
|
46
|
+
handle = void 0;
|
|
47
|
+
};
|
|
48
|
+
tryOnScopeDispose(cancel);
|
|
49
|
+
return customRef((track, trigger) => ({
|
|
50
|
+
get: () => {
|
|
51
|
+
track();
|
|
52
|
+
return written ? current : toValue(defaultValue);
|
|
53
|
+
},
|
|
54
|
+
set: (next) => {
|
|
55
|
+
const delay = resolveResetMs(toValue(afterMs));
|
|
56
|
+
current = next;
|
|
57
|
+
written = true;
|
|
58
|
+
trigger();
|
|
59
|
+
cancel();
|
|
60
|
+
if (typeof window === "undefined" && !(options.runOnServer ?? false)) return;
|
|
61
|
+
handle = scheduler.setTimeout(() => {
|
|
62
|
+
handle = void 0;
|
|
63
|
+
written = false;
|
|
64
|
+
trigger();
|
|
65
|
+
}, delay);
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { refAutoReset };
|