@vizejs/composable 0.426.2 → 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,29 @@
|
|
|
1
|
+
import { WatchHelperCallback, WatchSources } from "./watch-source.mjs";
|
|
2
|
+
import { WatchHandle, WatchOptions } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/watch-once.d.ts
|
|
5
|
+
/** Options for {@link watchOnce}: Vue watch options without `once`. */
|
|
6
|
+
type WatchOnceOptions<Immediate extends boolean = false> = Omit<WatchOptions<Immediate>, "once">;
|
|
7
|
+
/**
|
|
8
|
+
* Watch sources like Vue's `watch`, delivering exactly one change and then
|
|
9
|
+
* stopping.
|
|
10
|
+
*
|
|
11
|
+
* A thin, typed shorthand for `watch(source, callback, { once: true })`:
|
|
12
|
+
* with `immediate: true` the single call is the immediate one. The returned
|
|
13
|
+
* handle can stop the watcher before it fires. Safe during server rendering
|
|
14
|
+
* and bound to the owning reactive scope.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* watchOnce(user, (loaded) => track("first-user", loaded.id));
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param source Ref, getter, reactive object, or tuple of those.
|
|
22
|
+
* @param callback Called at most once.
|
|
23
|
+
* @param options Vue watch options except `once`.
|
|
24
|
+
* @default options {}
|
|
25
|
+
* @returns Vue's watch handle.
|
|
26
|
+
*/
|
|
27
|
+
declare function watchOnce<const Sources extends WatchSources, Immediate extends Readonly<boolean> = false>(source: Sources, callback: WatchHelperCallback<Sources, Immediate>, options?: WatchOnceOptions<Immediate>): WatchHandle;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { WatchOnceOptions, watchOnce };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { WatchHelperCallback, WatchSources } from "./watch-source.mjs";
|
|
2
|
+
import { ShallowRef, WatchOptions } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/watch-pausable.d.ts
|
|
5
|
+
/** Controls returned by {@link watchPausable}. */
|
|
6
|
+
interface PausableWatchHandle {
|
|
7
|
+
/** Whether changes are currently delivered to the callback. */
|
|
8
|
+
readonly isActive: Readonly<ShallowRef<boolean>>;
|
|
9
|
+
/** Drop changes until {@link PausableWatchHandle.resume}. Idempotent. */
|
|
10
|
+
readonly pause: () => void;
|
|
11
|
+
/** Deliver changes again. Changes made while paused are not replayed. */
|
|
12
|
+
readonly resume: () => void;
|
|
13
|
+
/** Stop watching permanently. */
|
|
14
|
+
readonly stop: () => void;
|
|
15
|
+
}
|
|
16
|
+
/** Options for {@link watchPausable}. */
|
|
17
|
+
interface WatchPausableOptions<Immediate extends boolean = false> extends WatchOptions<Immediate> {
|
|
18
|
+
/**
|
|
19
|
+
* Start in the paused state.
|
|
20
|
+
*
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
readonly initiallyPaused?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Watch sources like Vue's `watch`, with pause and resume.
|
|
27
|
+
*
|
|
28
|
+
* Unlike the `pause()` built into Vue 3.5 watch handles, which delivers one
|
|
29
|
+
* catch-up call on resume, changes made while paused are dropped: the
|
|
30
|
+
* callback only ever sees changes that happened while active. The old value
|
|
31
|
+
* passed after a resume is the value from the most recent change Vue
|
|
32
|
+
* observed, whether or not it was delivered. The watcher follows the owning
|
|
33
|
+
* reactive scope and is safe during server rendering.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* const { pause, resume } = watchPausable(form, persist, { deep: true });
|
|
38
|
+
* pause();
|
|
39
|
+
* form.name = "x"; // not persisted
|
|
40
|
+
* resume();
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @param source Ref, getter, reactive object, or tuple of those.
|
|
44
|
+
* @param callback Watch callback, skipped while paused.
|
|
45
|
+
* @param options Watch options plus the initial pause state.
|
|
46
|
+
* @default options {}
|
|
47
|
+
* @returns Pause, resume, and stop controls with the active flag.
|
|
48
|
+
*/
|
|
49
|
+
declare function watchPausable<const Sources extends WatchSources, Immediate extends Readonly<boolean> = false>(source: Sources, callback: WatchHelperCallback<Sources, Immediate>, options?: WatchPausableOptions<Immediate>): PausableWatchHandle;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { PausableWatchHandle, WatchPausableOptions, watchPausable };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { shallowRef, watch } from "vue";
|
|
2
|
+
//#region src/watch-pausable.ts
|
|
3
|
+
function watchPausable(source, callback, options = {}) {
|
|
4
|
+
const { initiallyPaused = false, ...watchOptions } = options;
|
|
5
|
+
const isActive = shallowRef(!initiallyPaused);
|
|
6
|
+
const handle = watch(source, (value, oldValue, onCleanup) => {
|
|
7
|
+
if (isActive.value) callback(value, oldValue, onCleanup);
|
|
8
|
+
}, watchOptions);
|
|
9
|
+
return {
|
|
10
|
+
isActive,
|
|
11
|
+
pause: () => {
|
|
12
|
+
isActive.value = false;
|
|
13
|
+
},
|
|
14
|
+
resume: () => {
|
|
15
|
+
isActive.value = true;
|
|
16
|
+
},
|
|
17
|
+
stop: () => {
|
|
18
|
+
handle.stop();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { watchPausable };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { WatchCallback, WatchSource } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/watch-source.d.ts
|
|
4
|
+
/** A single source accepted by Vue's `watch`: ref, getter, or reactive object. */
|
|
5
|
+
type WatchSourceInput = WatchSource<unknown> | object;
|
|
6
|
+
/** Every source shape accepted by the watch helpers, including tuples. */
|
|
7
|
+
type WatchSources = WatchSourceInput | readonly WatchSourceInput[];
|
|
8
|
+
/**
|
|
9
|
+
* Value observed from a single source: the ref/getter value, or the reactive
|
|
10
|
+
* object itself.
|
|
11
|
+
*/
|
|
12
|
+
type WatchSourceValue<Source> = Source extends WatchSource<infer Value> ? Value : Source extends object ? Source : never;
|
|
13
|
+
/**
|
|
14
|
+
* Value delivered to a watch callback for {@link WatchSources}: a tuple
|
|
15
|
+
* source maps element-wise, any other source resolves through
|
|
16
|
+
* {@link WatchSourceValue}.
|
|
17
|
+
*/
|
|
18
|
+
type WatchValue<Sources> = Sources extends readonly unknown[] ? { -readonly [Index in keyof Sources]: WatchSourceValue<Sources[Index]> } : WatchSourceValue<Sources>;
|
|
19
|
+
/**
|
|
20
|
+
* Previous value delivered to a watch callback: `undefined` is added only
|
|
21
|
+
* when the watcher runs immediately (tuples get it per element, as in Vue).
|
|
22
|
+
*/
|
|
23
|
+
type WatchOldValue<Sources, Immediate> = Immediate extends true ? Sources extends readonly unknown[] ? { -readonly [Index in keyof Sources]: WatchSourceValue<Sources[Index]> | undefined } : WatchSourceValue<Sources> | undefined : WatchValue<Sources>;
|
|
24
|
+
/** Callback typed from its sources and the `immediate` flag. */
|
|
25
|
+
type WatchHelperCallback<Sources, Immediate = false> = WatchCallback<WatchValue<Sources>, WatchOldValue<Sources, Immediate>>;
|
|
26
|
+
/** Cleanup registrar passed as the third argument of a watch callback. */
|
|
27
|
+
type WatchCleanupRegistrar = Parameters<WatchCallback>[2];
|
|
28
|
+
//#endregion
|
|
29
|
+
export { WatchCleanupRegistrar, WatchHelperCallback, WatchOldValue, WatchSourceInput, WatchSourceValue, WatchSources, WatchValue };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { WatchHelperCallback, WatchSources } from "./watch-source.mjs";
|
|
3
|
+
import { TimedWatchHandle } from "./watch-debounced.mjs";
|
|
4
|
+
import { MaybeRefOrGetter, WatchOptions } from "vue";
|
|
5
|
+
|
|
6
|
+
//#region src/watch-throttled.d.ts
|
|
7
|
+
/** Options for {@link watchThrottled}. */
|
|
8
|
+
interface WatchThrottledOptions<Immediate extends boolean = false> extends WatchOptions<Immediate> {
|
|
9
|
+
/**
|
|
10
|
+
* Cooldown window in milliseconds. Reactive; read whenever a window opens.
|
|
11
|
+
*
|
|
12
|
+
* @default 0
|
|
13
|
+
*/
|
|
14
|
+
readonly throttle?: MaybeRefOrGetter<number>;
|
|
15
|
+
/**
|
|
16
|
+
* Run the first change of a window immediately.
|
|
17
|
+
*
|
|
18
|
+
* @default true
|
|
19
|
+
*/
|
|
20
|
+
readonly leading?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Run the newest change collected during a window when it closes.
|
|
23
|
+
*
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
26
|
+
readonly trailing?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Applies the timing policy when no browser `window` is available. When
|
|
29
|
+
* disabled, the callback runs synchronously on the server.
|
|
30
|
+
*
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
readonly runOnServer?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Owns the cooldown timer.
|
|
36
|
+
*
|
|
37
|
+
* @default globalThis timer functions
|
|
38
|
+
*/
|
|
39
|
+
readonly scheduler?: TimeoutScheduler;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Watch sources like Vue's `watch`, but run the callback at most once per
|
|
43
|
+
* cooldown window.
|
|
44
|
+
*
|
|
45
|
+
* With the defaults (`leading` and `trailing` both on) the first change runs
|
|
46
|
+
* immediately and the newest change inside the window runs when it closes,
|
|
47
|
+
* which opens a new window. Every call receives, as its old value, the value
|
|
48
|
+
* of the previously delivered call, so consecutive calls chain without gaps. Source
|
|
49
|
+
* typing mirrors `watch`.
|
|
50
|
+
*
|
|
51
|
+
* Without a browser `window` (and without `runOnServer`) the callback runs
|
|
52
|
+
* synchronously. Timers are cleared when the watcher stops or the owning
|
|
53
|
+
* scope is disposed.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* watchThrottled(scrollY, (y) => report(y), { throttle: 100 });
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @param source Ref, getter, reactive object, or tuple of those.
|
|
61
|
+
* @param callback Throttled watch callback.
|
|
62
|
+
* @param options Watch options plus the throttle policy.
|
|
63
|
+
* @default options {}
|
|
64
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_WATCH_THROTTLED_INVALID_DELAY`
|
|
65
|
+
* when `throttle` resolves to a negative or non-finite value.
|
|
66
|
+
* @returns Stop, flush, and cancel controls.
|
|
67
|
+
*/
|
|
68
|
+
declare function watchThrottled<const Sources extends WatchSources, Immediate extends Readonly<boolean> = false>(source: Sources, callback: WatchHelperCallback<Sources, Immediate>, options?: WatchThrottledOptions<Immediate>): TimedWatchHandle;
|
|
69
|
+
//#endregion
|
|
70
|
+
export { WatchThrottledOptions, watchThrottled };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { toValue, watch } from "vue";
|
|
3
|
+
//#region src/watch-throttled.ts
|
|
4
|
+
const defaultScheduler = {
|
|
5
|
+
setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
|
|
6
|
+
clearTimeout: (handle) => {
|
|
7
|
+
globalThis.clearTimeout(handle);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function resolveThrottleMs(value) {
|
|
11
|
+
if (!Number.isFinite(value) || value < 0) throw new RangeError(`[VIZE_COMPOSE_WATCH_THROTTLED_INVALID_DELAY] throttle must be finite and at least zero; received ${String(value)}`);
|
|
12
|
+
return Math.trunc(value);
|
|
13
|
+
}
|
|
14
|
+
function watchThrottled(source, callback, options = {}) {
|
|
15
|
+
const { throttle = 0, leading = true, trailing = true, runOnServer = false, scheduler = defaultScheduler, ...watchOptions } = options;
|
|
16
|
+
resolveThrottleMs(toValue(throttle));
|
|
17
|
+
let timer;
|
|
18
|
+
let pending;
|
|
19
|
+
let lastDelivered;
|
|
20
|
+
let pendingOld;
|
|
21
|
+
let delivered = false;
|
|
22
|
+
let cleanup;
|
|
23
|
+
const invoke = (value, oldValue) => {
|
|
24
|
+
const runCleanup = cleanup;
|
|
25
|
+
cleanup = void 0;
|
|
26
|
+
runCleanup?.();
|
|
27
|
+
lastDelivered = value;
|
|
28
|
+
delivered = true;
|
|
29
|
+
const onCleanup = (fn) => {
|
|
30
|
+
cleanup = fn;
|
|
31
|
+
};
|
|
32
|
+
callback(value, oldValue, onCleanup);
|
|
33
|
+
};
|
|
34
|
+
const closeWindow = () => {
|
|
35
|
+
timer = void 0;
|
|
36
|
+
const run = pending;
|
|
37
|
+
pending = void 0;
|
|
38
|
+
if (run === void 0) return;
|
|
39
|
+
run();
|
|
40
|
+
openWindow();
|
|
41
|
+
};
|
|
42
|
+
function openWindow() {
|
|
43
|
+
timer = scheduler.setTimeout(closeWindow, resolveThrottleMs(toValue(throttle)));
|
|
44
|
+
}
|
|
45
|
+
const cancel = () => {
|
|
46
|
+
if (timer !== void 0) scheduler.clearTimeout(timer);
|
|
47
|
+
timer = void 0;
|
|
48
|
+
const hadPending = pending !== void 0;
|
|
49
|
+
pending = void 0;
|
|
50
|
+
return hadPending;
|
|
51
|
+
};
|
|
52
|
+
const flush = () => {
|
|
53
|
+
const run = pending;
|
|
54
|
+
if (run === void 0) return false;
|
|
55
|
+
pending = void 0;
|
|
56
|
+
run();
|
|
57
|
+
return true;
|
|
58
|
+
};
|
|
59
|
+
const schedule = (value, previous) => {
|
|
60
|
+
pending = () => {
|
|
61
|
+
invoke(value, previous);
|
|
62
|
+
};
|
|
63
|
+
pendingOld = previous;
|
|
64
|
+
};
|
|
65
|
+
const handle = watch(source, (value, oldValue) => {
|
|
66
|
+
if (typeof window === "undefined" && !runOnServer) {
|
|
67
|
+
invoke(value, oldValue);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const previous = pending === void 0 ? delivered ? lastDelivered : oldValue : pendingOld;
|
|
71
|
+
if (timer === void 0) {
|
|
72
|
+
if (leading) invoke(value, previous);
|
|
73
|
+
else if (trailing) schedule(value, previous);
|
|
74
|
+
openWindow();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (trailing) schedule(value, previous);
|
|
78
|
+
}, watchOptions);
|
|
79
|
+
const stop = () => {
|
|
80
|
+
handle.stop();
|
|
81
|
+
cancel();
|
|
82
|
+
const runCleanup = cleanup;
|
|
83
|
+
cleanup = void 0;
|
|
84
|
+
runCleanup?.();
|
|
85
|
+
};
|
|
86
|
+
tryOnScopeDispose(stop);
|
|
87
|
+
return {
|
|
88
|
+
stop,
|
|
89
|
+
flush,
|
|
90
|
+
cancel
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
export { watchThrottled };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { WatchCleanupRegistrar } from "./watch-source.mjs";
|
|
2
|
+
import { WatchHandle, WatchOptions, WatchSource } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/whenever.d.ts
|
|
5
|
+
/** Values treated as "not yet" by {@link whenever}. */
|
|
6
|
+
type Falsy = false | 0 | 0n | "" | null | undefined;
|
|
7
|
+
/** Options for {@link whenever}. */
|
|
8
|
+
type WheneverOptions = Omit<WatchOptions<boolean>, "once"> & {
|
|
9
|
+
/**
|
|
10
|
+
* Stop after the first truthy delivery instead of after the first change.
|
|
11
|
+
*
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
readonly once?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Run a callback whenever a source becomes (or changes while) truthy.
|
|
18
|
+
*
|
|
19
|
+
* The callback's value is narrowed with `Exclude<Value, Falsy>`, so a
|
|
20
|
+
* `Ref<User | null>` delivers `User`. With `once`, the watcher stops after
|
|
21
|
+
* the first truthy delivery, not after the first change (unlike Vue's
|
|
22
|
+
* `once`). With `immediate`, an already-truthy source is delivered right
|
|
23
|
+
* away. Safe during server rendering and bound to the owning scope.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* whenever(currentUser, (user) => greet(user.name), { immediate: true, once: true });
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param source Ref or getter.
|
|
31
|
+
* @param callback Receives the truthy value, the previous value, and
|
|
32
|
+
* `onCleanup`.
|
|
33
|
+
* @param options Vue watch options; `once` counts truthy deliveries only.
|
|
34
|
+
* @default options {}
|
|
35
|
+
* @returns Vue's watch handle.
|
|
36
|
+
*/
|
|
37
|
+
declare function whenever<Value>(source: WatchSource<Value>, callback: (value: Exclude<Value, Falsy>, oldValue: Value | undefined, onCleanup: WatchCleanupRegistrar) => void, options?: WheneverOptions): WatchHandle;
|
|
38
|
+
//#endregion
|
|
39
|
+
export { Falsy, WheneverOptions, whenever };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { watch } from "vue";
|
|
2
|
+
//#region src/whenever.ts
|
|
3
|
+
/**
|
|
4
|
+
* Run a callback whenever a source becomes (or changes while) truthy.
|
|
5
|
+
*
|
|
6
|
+
* The callback's value is narrowed with `Exclude<Value, Falsy>`, so a
|
|
7
|
+
* `Ref<User | null>` delivers `User`. With `once`, the watcher stops after
|
|
8
|
+
* the first truthy delivery, not after the first change (unlike Vue's
|
|
9
|
+
* `once`). With `immediate`, an already-truthy source is delivered right
|
|
10
|
+
* away. Safe during server rendering and bound to the owning scope.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* whenever(currentUser, (user) => greet(user.name), { immediate: true, once: true });
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param source Ref or getter.
|
|
18
|
+
* @param callback Receives the truthy value, the previous value, and
|
|
19
|
+
* `onCleanup`.
|
|
20
|
+
* @param options Vue watch options; `once` counts truthy deliveries only.
|
|
21
|
+
* @default options {}
|
|
22
|
+
* @returns Vue's watch handle.
|
|
23
|
+
*/
|
|
24
|
+
function whenever(source, callback, options = {}) {
|
|
25
|
+
const { once = false, ...watchOptions } = options;
|
|
26
|
+
let handle;
|
|
27
|
+
let stopRequested = false;
|
|
28
|
+
handle = watch(source, (value, oldValue, onCleanup) => {
|
|
29
|
+
if (!isTruthy(value)) return;
|
|
30
|
+
if (once) if (handle === void 0) stopRequested = true;
|
|
31
|
+
else handle.stop();
|
|
32
|
+
callback(value, oldValue, onCleanup);
|
|
33
|
+
}, watchOptions);
|
|
34
|
+
if (stopRequested) handle.stop();
|
|
35
|
+
return handle;
|
|
36
|
+
}
|
|
37
|
+
function isTruthy(value) {
|
|
38
|
+
return Boolean(value);
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { whenever };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/window-size.d.ts
|
|
4
|
+
/** Window-like capability observed by {@link useWindowSize}. */
|
|
5
|
+
interface WindowSizeHost extends EventTarget {
|
|
6
|
+
/** Viewport width including the vertical scrollbar. */
|
|
7
|
+
readonly innerWidth: number;
|
|
8
|
+
/** Viewport height including the horizontal scrollbar. */
|
|
9
|
+
readonly innerHeight: number;
|
|
10
|
+
/** Outer browser window width. */
|
|
11
|
+
readonly outerWidth: number;
|
|
12
|
+
/** Outer browser window height. */
|
|
13
|
+
readonly outerHeight: number;
|
|
14
|
+
/** Document whose root element reports the scrollbar-free viewport. */
|
|
15
|
+
readonly document: {
|
|
16
|
+
readonly documentElement: {
|
|
17
|
+
readonly clientWidth: number;
|
|
18
|
+
readonly clientHeight: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Which window dimensions {@link useWindowSize} reports. */
|
|
23
|
+
type WindowSizeKind = "inner" | "outer";
|
|
24
|
+
/** Options for {@link useWindowSize}. */
|
|
25
|
+
interface UseWindowSizeOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Width exposed during server rendering and before hydration.
|
|
28
|
+
*
|
|
29
|
+
* @default 0
|
|
30
|
+
*/
|
|
31
|
+
readonly initialWidth?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Height exposed during server rendering and before hydration.
|
|
34
|
+
*
|
|
35
|
+
* @default 0
|
|
36
|
+
*/
|
|
37
|
+
readonly initialHeight?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Include scrollbars in the inner dimensions. When `false`, the root
|
|
40
|
+
* element's `clientWidth`/`clientHeight` are reported instead.
|
|
41
|
+
*
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
readonly includeScrollbar?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Report inner (viewport) or outer (browser window) dimensions.
|
|
47
|
+
*
|
|
48
|
+
* @default "inner"
|
|
49
|
+
*/
|
|
50
|
+
readonly type?: WindowSizeKind;
|
|
51
|
+
/**
|
|
52
|
+
* Also re-measure on `orientationchange` for engines that resize late.
|
|
53
|
+
*
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
56
|
+
readonly listenOrientation?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Reactive window capability for alternate runtimes and tests.
|
|
59
|
+
*
|
|
60
|
+
* @default globalThis.window when available
|
|
61
|
+
*/
|
|
62
|
+
readonly host?: MaybeRefOrGetter<WindowSizeHost | null | undefined>;
|
|
63
|
+
}
|
|
64
|
+
/** Reactive size returned by {@link useWindowSize}. */
|
|
65
|
+
interface WindowSizeControls {
|
|
66
|
+
/** Current width in CSS pixels. */
|
|
67
|
+
readonly width: Readonly<Ref<number>>;
|
|
68
|
+
/** Current height in CSS pixels. */
|
|
69
|
+
readonly height: Readonly<Ref<number>>;
|
|
70
|
+
/** Whether a window capability is attached. `false` during server rendering. */
|
|
71
|
+
readonly isSupported: Readonly<Ref<boolean>>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Track the window size reactively.
|
|
75
|
+
*
|
|
76
|
+
* Server renders expose `initialWidth`/`initialHeight` (default `0`), so the
|
|
77
|
+
* first client render matches; the real size is applied as soon as a window
|
|
78
|
+
* resolves (after mounting when called inside a component). Resize (and orientation) listeners are passive and removed with
|
|
79
|
+
* the owning reactive scope.
|
|
80
|
+
*
|
|
81
|
+
* @param options Initial size, measurement kind, and capability.
|
|
82
|
+
* @default options {}
|
|
83
|
+
* @returns Reactive width/height plus a support flag.
|
|
84
|
+
*/
|
|
85
|
+
declare function useWindowSize(options?: UseWindowSizeOptions): WindowSizeControls;
|
|
86
|
+
//#endregion
|
|
87
|
+
export { UseWindowSizeOptions, WindowSizeControls, WindowSizeHost, WindowSizeKind, useWindowSize };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext, onMounted, readonly, ref, toValue, watch } from "vue";
|
|
3
|
+
//#region src/window-size.ts
|
|
4
|
+
/**
|
|
5
|
+
* Track the window size reactively.
|
|
6
|
+
*
|
|
7
|
+
* Server renders expose `initialWidth`/`initialHeight` (default `0`), so the
|
|
8
|
+
* first client render matches; the real size is applied as soon as a window
|
|
9
|
+
* resolves (after mounting when called inside a component). Resize (and orientation) listeners are passive and removed with
|
|
10
|
+
* the owning reactive scope.
|
|
11
|
+
*
|
|
12
|
+
* @param options Initial size, measurement kind, and capability.
|
|
13
|
+
* @default options {}
|
|
14
|
+
* @returns Reactive width/height plus a support flag.
|
|
15
|
+
*/
|
|
16
|
+
function useWindowSize(options = {}) {
|
|
17
|
+
const { initialWidth = 0, initialHeight = 0, includeScrollbar = true, type = "inner", listenOrientation = true } = options;
|
|
18
|
+
const width = ref(initialWidth);
|
|
19
|
+
const height = ref(initialHeight);
|
|
20
|
+
const isSupported = ref(false);
|
|
21
|
+
let stopWatch;
|
|
22
|
+
const start = () => {
|
|
23
|
+
stopWatch = watch(() => options.host === void 0 ? browserWindowSizeHost() : toValue(options.host), (host, _previous, onCleanup) => {
|
|
24
|
+
isSupported.value = Boolean(host);
|
|
25
|
+
if (!host) {
|
|
26
|
+
width.value = initialWidth;
|
|
27
|
+
height.value = initialHeight;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const update = () => {
|
|
31
|
+
if (type === "outer") {
|
|
32
|
+
width.value = host.outerWidth;
|
|
33
|
+
height.value = host.outerHeight;
|
|
34
|
+
} else if (includeScrollbar) {
|
|
35
|
+
width.value = host.innerWidth;
|
|
36
|
+
height.value = host.innerHeight;
|
|
37
|
+
} else {
|
|
38
|
+
width.value = host.document.documentElement.clientWidth;
|
|
39
|
+
height.value = host.document.documentElement.clientHeight;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
update();
|
|
43
|
+
const listenerOptions = { passive: true };
|
|
44
|
+
host.addEventListener("resize", update, listenerOptions);
|
|
45
|
+
if (listenOrientation) host.addEventListener("orientationchange", update, listenerOptions);
|
|
46
|
+
onCleanup(() => {
|
|
47
|
+
host.removeEventListener("resize", update);
|
|
48
|
+
if (listenOrientation) host.removeEventListener("orientationchange", update);
|
|
49
|
+
});
|
|
50
|
+
}, { immediate: true });
|
|
51
|
+
};
|
|
52
|
+
if (hasInjectionContext()) onMounted(start);
|
|
53
|
+
else start();
|
|
54
|
+
tryOnScopeDispose(() => stopWatch?.stop());
|
|
55
|
+
return {
|
|
56
|
+
width: readonly(width),
|
|
57
|
+
height: readonly(height),
|
|
58
|
+
isSupported: readonly(isSupported)
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function browserWindowSizeHost() {
|
|
62
|
+
return typeof window !== "undefined" ? window : void 0;
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { useWindowSize };
|