@vizejs/composable 0.426.3 → 0.428.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abort-signal.d.mts +1 -1
- package/dist/active-element.d.mts +37 -0
- package/dist/active-element.mjs +56 -0
- package/dist/animate.d.mts +114 -0
- package/dist/animate.mjs +157 -0
- package/dist/battery.d.mts +61 -0
- package/dist/battery.mjs +90 -0
- package/dist/breakpoints.d.mts +82 -0
- package/dist/breakpoints.mjs +91 -0
- package/dist/catalog-BeTXFKxF.d.mts +4188 -0
- package/dist/catalog-r4Z5nptX.mjs +5144 -0
- package/dist/catalog.d.mts +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/color-mode.d.mts +131 -0
- package/dist/color-mode.mjs +133 -0
- package/dist/computed-async.d.mts +63 -0
- package/dist/computed-async.mjs +43 -0
- package/dist/computed-with-control.d.mts +44 -0
- package/dist/computed-with-control.mjs +54 -0
- package/dist/create-event-hook.d.mts +77 -0
- package/dist/create-event-hook.mjs +66 -0
- package/dist/create-global-state.d.mts +24 -0
- package/dist/create-global-state.mjs +34 -0
- package/dist/create-injection-state.d.mts +51 -0
- package/dist/create-injection-state.mjs +19 -0
- package/dist/create-shared-composable.d.mts +38 -0
- package/dist/create-shared-composable.mjs +54 -0
- package/dist/device-motion.d.mts +71 -0
- package/dist/device-motion.mjs +75 -0
- package/dist/device-orientation.d.mts +82 -0
- package/dist/device-orientation.mjs +86 -0
- package/dist/device-pixel-ratio.d.mts +45 -0
- package/dist/device-pixel-ratio.mjs +50 -0
- package/dist/document-visibility.mjs +6 -2
- package/dist/draggable.d.mts +121 -0
- package/dist/draggable.mjs +153 -0
- package/dist/element-bounding.d.mts +87 -0
- package/dist/element-bounding.mjs +95 -0
- package/dist/element-by-point.d.mts +70 -0
- package/dist/element-by-point.mjs +69 -0
- package/dist/element-hover.d.mts +42 -0
- package/dist/element-hover.mjs +70 -0
- package/dist/element-ref.d.mts +34 -0
- package/dist/element-ref.mjs +23 -0
- package/dist/element-target-Crpxl4D9.d.mts +60 -0
- package/dist/element-target.d.mts +2 -0
- package/dist/element-target.mjs +58 -0
- package/dist/event-listener.mjs +7 -3
- package/dist/focus.d.mts +69 -0
- package/dist/focus.mjs +124 -0
- package/dist/fps.d.mts +59 -0
- package/dist/fps.mjs +64 -0
- package/dist/geolocation.d.mts +98 -0
- package/dist/geolocation.mjs +86 -0
- package/dist/i18n.d.mts +237 -0
- package/dist/i18n.mjs +215 -0
- package/dist/icu-message.d.mts +235 -0
- package/dist/icu-message.mjs +343 -0
- package/dist/idle.d.mts +79 -0
- package/dist/idle.mjs +90 -0
- package/dist/index.d.mts +172 -6
- package/dist/index.mjs +173 -7
- package/dist/infinite-scroll.d.mts +56 -0
- package/dist/infinite-scroll.mjs +72 -0
- package/dist/intersection-observer.d.mts +122 -0
- package/dist/intersection-observer.mjs +117 -0
- package/dist/magic-keys.d.mts +121 -0
- package/dist/magic-keys.mjs +163 -0
- package/dist/math.d.mts +96 -0
- package/dist/math.mjs +84 -0
- package/dist/media-query.d.mts +3 -1
- package/dist/media-query.mjs +5 -3
- package/dist/mouse-in-element.d.mts +49 -0
- package/dist/mouse-in-element.mjs +66 -0
- package/dist/mouse.d.mts +77 -0
- package/dist/mouse.mjs +100 -0
- package/dist/mutation-observer.d.mts +98 -0
- package/dist/mutation-observer.mjs +69 -0
- package/dist/network.d.mts +96 -0
- package/dist/network.mjs +117 -0
- package/dist/on-click-outside.d.mts +69 -0
- package/dist/on-click-outside.mjs +115 -0
- package/dist/on-key-stroke.d.mts +71 -0
- package/dist/on-key-stroke.mjs +79 -0
- package/dist/on-long-press.d.mts +82 -0
- package/dist/on-long-press.mjs +105 -0
- package/dist/on-start-typing.d.mts +44 -0
- package/dist/on-start-typing.mjs +61 -0
- package/dist/page-leave.d.mts +26 -0
- package/dist/page-leave.mjs +40 -0
- package/dist/parent-element.d.mts +16 -0
- package/dist/parent-element.mjs +27 -0
- package/dist/pinch.d.mts +73 -0
- package/dist/pinch.mjs +138 -0
- package/dist/pointer-lock.d.mts +79 -0
- package/dist/pointer-lock.mjs +126 -0
- package/dist/pointer.d.mts +78 -0
- package/dist/pointer.mjs +95 -0
- package/dist/preferences.d.mts +55 -0
- package/dist/preferences.mjs +63 -0
- package/dist/preferred-languages.d.mts +43 -0
- package/dist/preferred-languages.mjs +44 -0
- package/dist/reactify.d.mts +28 -0
- package/dist/reactify.mjs +7 -0
- package/dist/ref-auto-reset.d.mts +47 -0
- package/dist/ref-auto-reset.mjs +70 -0
- package/dist/ref-debounced.d.mts +29 -0
- package/dist/ref-debounced.mjs +29 -0
- package/dist/ref-default.d.mts +27 -0
- package/dist/ref-default.mjs +33 -0
- package/dist/resize-observer.d.mts +96 -0
- package/dist/resize-observer.mjs +111 -0
- package/dist/resolver.d.mts +124 -0
- package/dist/resolver.mjs +138 -0
- package/dist/retry-async.d.mts +2 -2
- package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
- package/dist/retry-delay.d.mts +1 -72
- package/dist/screen-orientation.d.mts +77 -0
- package/dist/screen-orientation.mjs +74 -0
- package/dist/scroll-lock.d.mts +37 -0
- package/dist/scroll-lock.mjs +50 -0
- package/dist/scroll.d.mts +158 -0
- package/dist/scroll.mjs +172 -0
- package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
- package/dist/standard-schema.d.mts +2 -0
- package/dist/standard-schema.mjs +60 -0
- package/dist/swipe.d.mts +125 -0
- package/dist/swipe.mjs +225 -0
- package/dist/sync-ref.d.mts +80 -0
- package/dist/sync-ref.mjs +43 -0
- package/dist/text-selection.d.mts +46 -0
- package/dist/text-selection.mjs +62 -0
- package/dist/textarea-autosize.d.mts +58 -0
- package/dist/textarea-autosize.mjs +54 -0
- package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
- package/dist/timeout-scheduler.d.mts +1 -17
- package/dist/to-reactive.d.mts +26 -0
- package/dist/to-reactive.mjs +46 -0
- package/dist/transition.d.mts +125 -0
- package/dist/transition.mjs +266 -0
- package/dist/until.d.mts +177 -0
- package/dist/until.mjs +111 -0
- package/dist/use-array.d.mts +112 -0
- package/dist/use-array.mjs +90 -0
- package/dist/use-async-queue.d.mts +109 -0
- package/dist/use-async-queue.mjs +96 -0
- package/dist/use-async-state.d.mts +86 -0
- package/dist/use-async-state.mjs +41 -0
- package/dist/use-barcode-detector.d.mts +159 -0
- package/dist/use-barcode-detector.mjs +143 -0
- package/dist/use-bluetooth.d.mts +164 -0
- package/dist/use-bluetooth.mjs +183 -0
- package/dist/use-broadcast-channel.d.mts +115 -0
- package/dist/use-broadcast-channel.mjs +121 -0
- package/dist/use-builtin-ai.d.mts +342 -0
- package/dist/use-builtin-ai.mjs +261 -0
- package/dist/use-clipboard.d.mts +169 -0
- package/dist/use-clipboard.mjs +226 -0
- package/dist/use-compression-stream.d.mts +173 -0
- package/dist/use-compression-stream.mjs +166 -0
- package/dist/use-confirm-dialog.d.mts +70 -0
- package/dist/use-confirm-dialog.mjs +57 -0
- package/dist/use-contact-picker.d.mts +117 -0
- package/dist/use-contact-picker.mjs +103 -0
- package/dist/use-cookie.d.mts +196 -0
- package/dist/use-cookie.mjs +259 -0
- package/dist/use-countdown.d.mts +85 -0
- package/dist/use-countdown.mjs +74 -0
- package/dist/use-css-var.d.mts +96 -0
- package/dist/use-css-var.mjs +104 -0
- package/dist/use-cycle-list.d.mts +76 -0
- package/dist/use-cycle-list.mjs +39 -0
- package/dist/use-date-format.d.mts +103 -0
- package/dist/use-date-format.mjs +147 -0
- package/dist/use-date-time-format.d.mts +75 -0
- package/dist/use-date-time-format.mjs +53 -0
- package/dist/use-debounced.d.mts +1 -1
- package/dist/use-display-media.d.mts +62 -0
- package/dist/use-display-media.mjs +46 -0
- package/dist/use-display-names.d.mts +75 -0
- package/dist/use-display-names.mjs +52 -0
- package/dist/use-document-title.d.mts +88 -0
- package/dist/use-document-title.mjs +100 -0
- package/dist/use-drop-zone.d.mts +128 -0
- package/dist/use-drop-zone.mjs +154 -0
- package/dist/use-event-source.d.mts +184 -0
- package/dist/use-event-source.mjs +226 -0
- package/dist/use-eye-dropper.d.mts +79 -0
- package/dist/use-eye-dropper.mjs +68 -0
- package/dist/use-favicon.d.mts +78 -0
- package/dist/use-favicon.mjs +68 -0
- package/dist/use-fetch.d.mts +230 -0
- package/dist/use-fetch.mjs +263 -0
- package/dist/use-field.d.mts +107 -0
- package/dist/use-field.mjs +117 -0
- package/dist/use-file-dialog.d.mts +139 -0
- package/dist/use-file-dialog.mjs +101 -0
- package/dist/use-file-system-access.d.mts +184 -0
- package/dist/use-file-system-access.mjs +151 -0
- package/dist/use-form-field-props.d.mts +235 -0
- package/dist/use-form-field-props.mjs +164 -0
- package/dist/use-form.d.mts +324 -0
- package/dist/use-form.mjs +482 -0
- package/dist/use-fullscreen.d.mts +104 -0
- package/dist/use-fullscreen.mjs +95 -0
- package/dist/use-gamepad.d.mts +242 -0
- package/dist/use-gamepad.mjs +218 -0
- package/dist/use-hid.d.mts +160 -0
- package/dist/use-hid.mjs +156 -0
- package/dist/use-id-generator.d.mts +44 -0
- package/dist/use-id-generator.mjs +38 -0
- package/dist/use-image.d.mts +125 -0
- package/dist/use-image.mjs +109 -0
- package/dist/use-indexed-db.d.mts +207 -0
- package/dist/use-indexed-db.mjs +251 -0
- package/dist/use-interval-BA55gTHT.d.mts +140 -0
- package/dist/use-interval.d.mts +2 -0
- package/dist/use-interval.mjs +100 -0
- package/dist/use-list-format.d.mts +60 -0
- package/dist/use-list-format.mjs +40 -0
- package/dist/use-machine.d.mts +90 -0
- package/dist/use-machine.mjs +78 -0
- package/dist/use-map.d.mts +90 -0
- package/dist/use-map.mjs +70 -0
- package/dist/use-media-controls.d.mts +198 -0
- package/dist/use-media-controls.mjs +264 -0
- package/dist/use-memoize.d.mts +73 -0
- package/dist/use-memoize.mjs +28 -0
- package/dist/use-mounted.d.mts +24 -0
- package/dist/use-mounted.mjs +29 -0
- package/dist/use-navigation-api.d.mts +360 -0
- package/dist/use-navigation-api.mjs +231 -0
- package/dist/use-notification.d.mts +139 -0
- package/dist/use-notification.mjs +131 -0
- package/dist/use-now.d.mts +137 -0
- package/dist/use-now.mjs +44 -0
- package/dist/use-number-format.d.mts +73 -0
- package/dist/use-number-format.mjs +58 -0
- package/dist/use-object-url.d.mts +47 -0
- package/dist/use-object-url.mjs +54 -0
- package/dist/use-offset-pagination.d.mts +91 -0
- package/dist/use-offset-pagination.mjs +80 -0
- package/dist/use-payment-request.d.mts +239 -0
- package/dist/use-payment-request.mjs +206 -0
- package/dist/use-performance-observer.d.mts +285 -0
- package/dist/use-performance-observer.mjs +132 -0
- package/dist/use-permission.d.mts +99 -0
- package/dist/use-permission.mjs +92 -0
- package/dist/use-plural-rules.d.mts +79 -0
- package/dist/use-plural-rules.mjs +59 -0
- package/dist/use-push-subscription.d.mts +154 -0
- package/dist/use-push-subscription.mjs +146 -0
- package/dist/use-queue.d.mts +89 -0
- package/dist/use-queue.mjs +116 -0
- package/dist/use-raf-fn.d.mts +87 -0
- package/dist/use-raf-fn.mjs +99 -0
- package/dist/use-relative-time-format.d.mts +111 -0
- package/dist/use-relative-time-format.mjs +119 -0
- package/dist/use-request-idle-callback.d.mts +122 -0
- package/dist/use-request-idle-callback.mjs +147 -0
- package/dist/use-route-query.d.mts +149 -0
- package/dist/use-route-query.mjs +86 -0
- package/dist/use-scheduler-post-task.d.mts +156 -0
- package/dist/use-scheduler-post-task.mjs +182 -0
- package/dist/use-screen-details.d.mts +205 -0
- package/dist/use-screen-details.mjs +188 -0
- package/dist/use-script-tag.d.mts +162 -0
- package/dist/use-script-tag.mjs +171 -0
- package/dist/use-segmenter.d.mts +78 -0
- package/dist/use-segmenter.mjs +66 -0
- package/dist/use-selection.d.mts +125 -0
- package/dist/use-selection.mjs +77 -0
- package/dist/use-serial.d.mts +165 -0
- package/dist/use-serial.mjs +205 -0
- package/dist/use-service-worker.d.mts +177 -0
- package/dist/use-service-worker.mjs +178 -0
- package/dist/use-set.d.mts +96 -0
- package/dist/use-set.mjs +74 -0
- package/dist/use-share.d.mts +92 -0
- package/dist/use-share.mjs +99 -0
- package/dist/use-sorted-locale.d.mts +62 -0
- package/dist/use-sorted-locale.mjs +52 -0
- package/dist/use-sorted.d.mts +29 -0
- package/dist/use-sorted.mjs +14 -0
- package/dist/use-speech-recognition.d.mts +150 -0
- package/dist/use-speech-recognition.mjs +168 -0
- package/dist/use-speech-synthesis.d.mts +148 -0
- package/dist/use-speech-synthesis.mjs +152 -0
- package/dist/use-stack.d.mts +83 -0
- package/dist/use-stack.mjs +93 -0
- package/dist/use-stepper.d.mts +79 -0
- package/dist/use-stepper.mjs +52 -0
- package/dist/use-storage-estimate.d.mts +151 -0
- package/dist/use-storage-estimate.mjs +170 -0
- package/dist/use-storage.d.mts +214 -0
- package/dist/use-storage.mjs +415 -0
- package/dist/use-style-tag.d.mts +102 -0
- package/dist/use-style-tag.mjs +91 -0
- package/dist/use-supported.d.mts +23 -0
- package/dist/use-supported.mjs +26 -0
- package/dist/use-throttled.d.mts +1 -1
- package/dist/use-time-ago.d.mts +163 -0
- package/dist/use-time-ago.mjs +95 -0
- package/dist/use-timeout.d.mts +122 -0
- package/dist/use-timeout.mjs +65 -0
- package/dist/use-url-hash.d.mts +88 -0
- package/dist/use-url-hash.mjs +145 -0
- package/dist/use-url-search-params.d.mts +223 -0
- package/dist/use-url-search-params.mjs +295 -0
- package/dist/use-usb.d.mts +212 -0
- package/dist/use-usb.mjs +137 -0
- package/dist/use-user-activation.d.mts +83 -0
- package/dist/use-user-activation.mjs +113 -0
- package/dist/use-user-media.d.mts +194 -0
- package/dist/use-user-media.mjs +214 -0
- package/dist/use-v-model.d.mts +113 -0
- package/dist/use-v-model.mjs +40 -0
- package/dist/use-vibrate.d.mts +81 -0
- package/dist/use-vibrate.mjs +90 -0
- package/dist/use-view-transition.d.mts +106 -0
- package/dist/use-view-transition.mjs +101 -0
- package/dist/use-visual-viewport.d.mts +105 -0
- package/dist/use-visual-viewport.mjs +104 -0
- package/dist/use-wake-lock.d.mts +96 -0
- package/dist/use-wake-lock.mjs +106 -0
- package/dist/use-web-authn.d.mts +404 -0
- package/dist/use-web-authn.mjs +323 -0
- package/dist/use-web-locks.d.mts +180 -0
- package/dist/use-web-locks.mjs +136 -0
- package/dist/use-web-midi.d.mts +148 -0
- package/dist/use-web-midi.mjs +140 -0
- package/dist/use-web-vitals.d.mts +142 -0
- package/dist/use-web-vitals.mjs +248 -0
- package/dist/use-websocket.d.mts +218 -0
- package/dist/use-websocket.mjs +257 -0
- package/dist/use-worker-fn.d.mts +119 -0
- package/dist/use-worker-fn.mjs +162 -0
- package/dist/virtual-list.d.mts +105 -0
- package/dist/virtual-list.mjs +128 -0
- package/dist/watch-debounced.d.mts +84 -0
- package/dist/watch-debounced.mjs +84 -0
- package/dist/watch-ignorable.d.mts +47 -0
- package/dist/watch-ignorable.mjs +61 -0
- package/dist/watch-once.d.mts +29 -0
- package/dist/watch-once.mjs +10 -0
- package/dist/watch-pausable.d.mts +51 -0
- package/dist/watch-pausable.mjs +23 -0
- package/dist/watch-source.d.mts +29 -0
- package/dist/watch-source.mjs +1 -0
- package/dist/watch-throttled.d.mts +70 -0
- package/dist/watch-throttled.mjs +94 -0
- package/dist/whenever.d.mts +39 -0
- package/dist/whenever.mjs +41 -0
- package/dist/window-size.d.mts +87 -0
- package/dist/window-size.mjs +65 -0
- package/package.json +846 -5
- package/registry/files/abort-signal.ts +292 -0
- package/registry/files/active-element.ts +93 -0
- package/registry/files/animate.ts +322 -0
- package/registry/files/async-resource.ts +190 -0
- package/registry/files/battery.ts +166 -0
- package/registry/files/breakpoints.ts +166 -0
- package/registry/files/capability.ts +171 -0
- package/registry/files/color-mode.ts +274 -0
- package/registry/files/computed-async.ts +123 -0
- package/registry/files/computed-with-control.ts +80 -0
- package/registry/files/create-event-hook.ts +139 -0
- package/registry/files/create-global-state.ts +34 -0
- package/registry/files/create-injection-state.ts +75 -0
- package/registry/files/create-shared-composable.ts +74 -0
- package/registry/files/device-motion.ts +152 -0
- package/registry/files/device-orientation.ts +168 -0
- package/registry/files/device-pixel-ratio.ts +100 -0
- package/registry/files/disposal-scope.ts +201 -0
- package/registry/files/document-visibility.ts +152 -0
- package/registry/files/draggable.ts +273 -0
- package/registry/files/element-bounding.ts +175 -0
- package/registry/files/element-by-point.ts +149 -0
- package/registry/files/element-hover.ts +104 -0
- package/registry/files/element-ref.ts +58 -0
- package/registry/files/element-target.ts +99 -0
- package/registry/files/event-listener.ts +188 -0
- package/registry/files/focus.ts +181 -0
- package/registry/files/fps.ts +133 -0
- package/registry/files/geolocation.ts +214 -0
- package/registry/files/i18n.ts +524 -0
- package/registry/files/icu-message.ts +701 -0
- package/registry/files/idle.ts +176 -0
- package/registry/files/infinite-scroll.ts +135 -0
- package/registry/files/intersection-observer.ts +261 -0
- package/registry/files/locale.ts +148 -0
- package/registry/files/magic-keys.ts +298 -0
- package/registry/files/math.ts +175 -0
- package/registry/files/media-query.ts +102 -0
- package/registry/files/mouse-in-element.ts +107 -0
- package/registry/files/mouse.ts +167 -0
- package/registry/files/mutation-observer.ts +183 -0
- package/registry/files/network.ts +229 -0
- package/registry/files/on-click-outside.ts +178 -0
- package/registry/files/on-key-stroke.ts +135 -0
- package/registry/files/on-long-press.ts +188 -0
- package/registry/files/on-start-typing.ts +88 -0
- package/registry/files/page-leave.ts +57 -0
- package/registry/files/parent-element.ts +29 -0
- package/registry/files/pinch.ts +187 -0
- package/registry/files/pointer-lock.ts +232 -0
- package/registry/files/pointer.ts +153 -0
- package/registry/files/preferences.ts +98 -0
- package/registry/files/preferred-languages.ts +88 -0
- package/registry/files/reactify.ts +39 -0
- package/registry/files/ref-auto-reset.ts +102 -0
- package/registry/files/ref-debounced.ts +34 -0
- package/registry/files/ref-default.ts +35 -0
- package/registry/files/resize-observer.ts +220 -0
- package/registry/files/retry-async.ts +261 -0
- package/registry/files/retry-delay.ts +132 -0
- package/registry/files/scope.ts +21 -0
- package/registry/files/screen-orientation.ts +165 -0
- package/registry/files/scroll-lock.ts +80 -0
- package/registry/files/scroll.ts +338 -0
- package/registry/files/standard-schema.ts +163 -0
- package/registry/files/swipe.ts +321 -0
- package/registry/files/sync-ref.ts +166 -0
- package/registry/files/temporal.ts +182 -0
- package/registry/files/text-selection.ts +110 -0
- package/registry/files/textarea-autosize.ts +114 -0
- package/registry/files/timeout-scheduler.ts +16 -0
- package/registry/files/to-reactive.ts +44 -0
- package/registry/files/transition.ts +271 -0
- package/registry/files/until.ts +352 -0
- package/registry/files/use-array.ts +201 -0
- package/registry/files/use-async-queue.ts +278 -0
- package/registry/files/use-async-state.ts +139 -0
- package/registry/files/use-barcode-detector.ts +321 -0
- package/registry/files/use-bluetooth.ts +409 -0
- package/registry/files/use-broadcast-channel.ts +250 -0
- package/registry/files/use-builtin-ai.ts +674 -0
- package/registry/files/use-clipboard.ts +425 -0
- package/registry/files/use-compression-stream.ts +364 -0
- package/registry/files/use-confirm-dialog.ts +137 -0
- package/registry/files/use-contact-picker.ts +246 -0
- package/registry/files/use-cookie.ts +500 -0
- package/registry/files/use-countdown.ts +161 -0
- package/registry/files/use-counter.ts +147 -0
- package/registry/files/use-css-var.ts +191 -0
- package/registry/files/use-cycle-list.ts +136 -0
- package/registry/files/use-date-format.ts +281 -0
- package/registry/files/use-date-time-format.ts +113 -0
- package/registry/files/use-debounced.ts +163 -0
- package/registry/files/use-display-media.ts +89 -0
- package/registry/files/use-display-names.ts +122 -0
- package/registry/files/use-document-title.ts +196 -0
- package/registry/files/use-drop-zone.ts +287 -0
- package/registry/files/use-event-source.ts +470 -0
- package/registry/files/use-eye-dropper.ts +134 -0
- package/registry/files/use-favicon.ts +140 -0
- package/registry/files/use-fetch.ts +578 -0
- package/registry/files/use-field.ts +247 -0
- package/registry/files/use-file-dialog.ts +257 -0
- package/registry/files/use-file-system-access.ts +383 -0
- package/registry/files/use-form-field-props.ts +381 -0
- package/registry/files/use-form.ts +980 -0
- package/registry/files/use-fullscreen.ts +214 -0
- package/registry/files/use-gamepad.ts +463 -0
- package/registry/files/use-hid.ts +359 -0
- package/registry/files/use-history.ts +231 -0
- package/registry/files/use-id-generator.ts +61 -0
- package/registry/files/use-image.ts +253 -0
- package/registry/files/use-indexed-db.ts +508 -0
- package/registry/files/use-interval.ts +253 -0
- package/registry/files/use-list-format.ts +85 -0
- package/registry/files/use-machine.ts +171 -0
- package/registry/files/use-map.ts +145 -0
- package/registry/files/use-media-controls.ts +545 -0
- package/registry/files/use-memoize.ts +118 -0
- package/registry/files/use-mounted.ts +30 -0
- package/registry/files/use-navigation-api.ts +641 -0
- package/registry/files/use-notification.ts +285 -0
- package/registry/files/use-now.ts +194 -0
- package/registry/files/use-number-format.ts +120 -0
- package/registry/files/use-object-url.ts +87 -0
- package/registry/files/use-offset-pagination.ts +168 -0
- package/registry/files/use-payment-request.ts +465 -0
- package/registry/files/use-performance-observer.ts +469 -0
- package/registry/files/use-permission.ts +220 -0
- package/registry/files/use-plural-rules.ts +134 -0
- package/registry/files/use-previous.ts +62 -0
- package/registry/files/use-push-subscription.ts +352 -0
- package/registry/files/use-queue.ts +197 -0
- package/registry/files/use-raf-fn.ts +176 -0
- package/registry/files/use-relative-time-format.ts +201 -0
- package/registry/files/use-request-idle-callback.ts +278 -0
- package/registry/files/use-route-query.ts +300 -0
- package/registry/files/use-scheduler-post-task.ts +397 -0
- package/registry/files/use-screen-details.ts +393 -0
- package/registry/files/use-script-tag.ts +341 -0
- package/registry/files/use-segmenter.ts +147 -0
- package/registry/files/use-selection.ts +233 -0
- package/registry/files/use-serial.ts +404 -0
- package/registry/files/use-service-worker.ts +413 -0
- package/registry/files/use-set.ts +154 -0
- package/registry/files/use-share.ts +168 -0
- package/registry/files/use-sorted-locale.ts +130 -0
- package/registry/files/use-sorted.ts +49 -0
- package/registry/files/use-speech-recognition.ts +357 -0
- package/registry/files/use-speech-synthesis.ts +333 -0
- package/registry/files/use-stack.ts +164 -0
- package/registry/files/use-stepper.ts +166 -0
- package/registry/files/use-storage-estimate.ts +352 -0
- package/registry/files/use-storage.ts +635 -0
- package/registry/files/use-style-tag.ts +200 -0
- package/registry/files/use-supported.ts +26 -0
- package/registry/files/use-throttled.ts +215 -0
- package/registry/files/use-time-ago.ts +276 -0
- package/registry/files/use-timeout.ts +218 -0
- package/registry/files/use-toggle.ts +54 -0
- package/registry/files/use-url-hash.ts +280 -0
- package/registry/files/use-url-search-params.ts +497 -0
- package/registry/files/use-usb.ts +395 -0
- package/registry/files/use-user-activation.ts +215 -0
- package/registry/files/use-user-media.ts +422 -0
- package/registry/files/use-v-model.ts +210 -0
- package/registry/files/use-vibrate.ts +174 -0
- package/registry/files/use-view-transition.ts +229 -0
- package/registry/files/use-visual-viewport.ts +228 -0
- package/registry/files/use-wake-lock.ts +206 -0
- package/registry/files/use-web-authn.ts +793 -0
- package/registry/files/use-web-locks.ts +363 -0
- package/registry/files/use-web-midi.ts +306 -0
- package/registry/files/use-web-vitals.ts +409 -0
- package/registry/files/use-websocket.ts +553 -0
- package/registry/files/use-worker-fn.ts +306 -0
- package/registry/files/virtual-list.ts +230 -0
- package/registry/files/watch-debounced.ts +206 -0
- package/registry/files/watch-ignorable.ts +128 -0
- package/registry/files/watch-once.ts +46 -0
- package/registry/files/watch-pausable.ts +93 -0
- package/registry/files/watch-source.ts +51 -0
- package/registry/files/watch-throttled.ts +201 -0
- package/registry/files/whenever.ts +70 -0
- package/registry/files/window-size.ts +151 -0
- package/registry/registry.json +5792 -0
- package/dist/catalog-D2AL3xYl.d.mts +0 -523
- package/dist/catalog-D5SYCsgW.mjs +0 -549
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-style-tag.d.ts
|
|
4
|
+
/** `<style>` subset used by {@link useStyleTag}. */
|
|
5
|
+
interface StyleTagElement {
|
|
6
|
+
/** Style sheet text. */
|
|
7
|
+
textContent: string | null;
|
|
8
|
+
/** Write an attribute. */
|
|
9
|
+
setAttribute(name: string, value: string): void;
|
|
10
|
+
}
|
|
11
|
+
/** Document capability used by {@link useStyleTag}. */
|
|
12
|
+
interface StyleTagHost {
|
|
13
|
+
/** Find an existing `<style>` with the given `id`. */
|
|
14
|
+
findStyle(id: string): StyleTagElement | undefined;
|
|
15
|
+
/** Create a detached `<style>`. */
|
|
16
|
+
createStyle(): StyleTagElement;
|
|
17
|
+
/** Attach a style element to `<head>`. */
|
|
18
|
+
append(element: StyleTagElement): void;
|
|
19
|
+
/** Detach a style element. */
|
|
20
|
+
remove(element: StyleTagElement): void;
|
|
21
|
+
}
|
|
22
|
+
/** Options for {@link useStyleTag}. */
|
|
23
|
+
interface UseStyleTagOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Element `id`. Instances sharing an id share one element (last write
|
|
26
|
+
* wins, first unload removes it), so give every independent style sheet
|
|
27
|
+
* its own stable id. The default is a constant rather than a generated
|
|
28
|
+
* counter because generated ids differ between server and client.
|
|
29
|
+
*
|
|
30
|
+
* @default "vize-style"
|
|
31
|
+
*/
|
|
32
|
+
readonly id?: string;
|
|
33
|
+
/**
|
|
34
|
+
* `media` attribute.
|
|
35
|
+
*
|
|
36
|
+
* @default undefined
|
|
37
|
+
*/
|
|
38
|
+
readonly media?: string;
|
|
39
|
+
/**
|
|
40
|
+
* CSP nonce.
|
|
41
|
+
*
|
|
42
|
+
* @default undefined
|
|
43
|
+
*/
|
|
44
|
+
readonly nonce?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Attach the style element when created.
|
|
47
|
+
*
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
readonly immediate?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Document capability for alternate runtimes and tests.
|
|
53
|
+
*
|
|
54
|
+
* @default window.document's `<head>`
|
|
55
|
+
*/
|
|
56
|
+
readonly host?: MaybeRefOrGetter<StyleTagHost | null | undefined>;
|
|
57
|
+
}
|
|
58
|
+
/** Reactive state and actions returned by {@link useStyleTag}. */
|
|
59
|
+
interface StyleTagControls {
|
|
60
|
+
/** Element id in use. */
|
|
61
|
+
readonly id: string;
|
|
62
|
+
/**
|
|
63
|
+
* Style sheet text. Writable; when a getter was passed, the next getter
|
|
64
|
+
* change overwrites manual assignments.
|
|
65
|
+
*/
|
|
66
|
+
readonly css: Ref<string>;
|
|
67
|
+
/** Whether the style element is attached. */
|
|
68
|
+
readonly loaded: Readonly<Ref<boolean>>;
|
|
69
|
+
/**
|
|
70
|
+
* Attach (or adopt an existing element with the same id) and apply `css`.
|
|
71
|
+
*
|
|
72
|
+
* @returns Whether a style element is attached afterwards.
|
|
73
|
+
*/
|
|
74
|
+
readonly load: () => boolean;
|
|
75
|
+
/** Remove the style element. */
|
|
76
|
+
readonly unload: () => void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Inject a reactive `<style>` element.
|
|
80
|
+
*
|
|
81
|
+
* The element's text follows `css`. An existing `<style>` with the same
|
|
82
|
+
* id — for example one emitted in server-rendered HTML — is adopted instead
|
|
83
|
+
* of duplicated, which keeps hydration free of flashes. The element is
|
|
84
|
+
* removed when the owning reactive scope stops or `unload` is called.
|
|
85
|
+
*
|
|
86
|
+
* Server rendering: nothing is injected and `loaded` is false. Emit the
|
|
87
|
+
* server-side `<style id>` through the application's head manager using the
|
|
88
|
+
* same id to make the client adopt it.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```ts
|
|
92
|
+
* const { css } = useStyleTag(() => `:root { --accent: ${accent.value} }`, { id: "theme" });
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @param css Reactive style sheet text.
|
|
96
|
+
* @param options Id, attributes, timing, and capability.
|
|
97
|
+
* @default options {}
|
|
98
|
+
* @returns Style state and actions.
|
|
99
|
+
*/
|
|
100
|
+
declare function useStyleTag(css: MaybeRefOrGetter<string>, options?: UseStyleTagOptions): StyleTagControls;
|
|
101
|
+
//#endregion
|
|
102
|
+
export { StyleTagControls, StyleTagElement, StyleTagHost, UseStyleTagOptions, useStyleTag };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext, isRef, onMounted, readonly, ref, toValue, watch } from "vue";
|
|
3
|
+
//#region src/use-style-tag.ts
|
|
4
|
+
function browserStyleHost() {
|
|
5
|
+
if (typeof window === "undefined") return void 0;
|
|
6
|
+
const { document, HTMLStyleElement } = window;
|
|
7
|
+
return {
|
|
8
|
+
findStyle: (id) => {
|
|
9
|
+
const found = document.getElementById(id);
|
|
10
|
+
return found instanceof HTMLStyleElement ? found : void 0;
|
|
11
|
+
},
|
|
12
|
+
createStyle: () => document.createElement("style"),
|
|
13
|
+
append: (element) => {
|
|
14
|
+
if (element instanceof HTMLStyleElement) document.head.append(element);
|
|
15
|
+
},
|
|
16
|
+
remove: (element) => {
|
|
17
|
+
if (element instanceof HTMLStyleElement) element.remove();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Inject a reactive `<style>` element.
|
|
23
|
+
*
|
|
24
|
+
* The element's text follows `css`. An existing `<style>` with the same
|
|
25
|
+
* id — for example one emitted in server-rendered HTML — is adopted instead
|
|
26
|
+
* of duplicated, which keeps hydration free of flashes. The element is
|
|
27
|
+
* removed when the owning reactive scope stops or `unload` is called.
|
|
28
|
+
*
|
|
29
|
+
* Server rendering: nothing is injected and `loaded` is false. Emit the
|
|
30
|
+
* server-side `<style id>` through the application's head manager using the
|
|
31
|
+
* same id to make the client adopt it.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const { css } = useStyleTag(() => `:root { --accent: ${accent.value} }`, { id: "theme" });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param css Reactive style sheet text.
|
|
39
|
+
* @param options Id, attributes, timing, and capability.
|
|
40
|
+
* @default options {}
|
|
41
|
+
* @returns Style state and actions.
|
|
42
|
+
*/
|
|
43
|
+
function useStyleTag(css, options = {}) {
|
|
44
|
+
const id = options.id ?? "vize-style";
|
|
45
|
+
const state = isRef(css) ? css : ref(toValue(css));
|
|
46
|
+
const loaded = ref(false);
|
|
47
|
+
let element;
|
|
48
|
+
const resolveHost = () => options.host === void 0 ? browserStyleHost() : toValue(options.host) ?? void 0;
|
|
49
|
+
if (typeof css === "function") watch(css, (next) => {
|
|
50
|
+
state.value = next;
|
|
51
|
+
});
|
|
52
|
+
const load = () => {
|
|
53
|
+
if (element) return true;
|
|
54
|
+
const host = resolveHost();
|
|
55
|
+
if (!host) return false;
|
|
56
|
+
const existing = host.findStyle(id);
|
|
57
|
+
const target = existing ?? host.createStyle();
|
|
58
|
+
if (!existing) {
|
|
59
|
+
target.setAttribute("id", id);
|
|
60
|
+
if (options.media !== void 0) target.setAttribute("media", options.media);
|
|
61
|
+
if (options.nonce !== void 0) target.setAttribute("nonce", options.nonce);
|
|
62
|
+
}
|
|
63
|
+
if (target.textContent !== state.value) target.textContent = state.value;
|
|
64
|
+
if (!existing) host.append(target);
|
|
65
|
+
element = target;
|
|
66
|
+
loaded.value = true;
|
|
67
|
+
return true;
|
|
68
|
+
};
|
|
69
|
+
const unload = () => {
|
|
70
|
+
if (element) resolveHost()?.remove(element);
|
|
71
|
+
element = void 0;
|
|
72
|
+
loaded.value = false;
|
|
73
|
+
};
|
|
74
|
+
watch(state, (next) => {
|
|
75
|
+
if (element && element.textContent !== next) element.textContent = next;
|
|
76
|
+
}, { flush: "sync" });
|
|
77
|
+
if (options.immediate ?? true) if (hasInjectionContext()) onMounted(() => {
|
|
78
|
+
load();
|
|
79
|
+
});
|
|
80
|
+
else load();
|
|
81
|
+
tryOnScopeDispose(unload);
|
|
82
|
+
return {
|
|
83
|
+
id,
|
|
84
|
+
css: state,
|
|
85
|
+
loaded: readonly(loaded),
|
|
86
|
+
load,
|
|
87
|
+
unload
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
export { useStyleTag };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComputedRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-supported.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Hydration-stable feature detection.
|
|
6
|
+
*
|
|
7
|
+
* Inside a component the result is `false` until the component mounts and
|
|
8
|
+
* then reflects `check()`, so server and hydrating client render the same
|
|
9
|
+
* fallback first. Outside a component it is evaluated right away when a
|
|
10
|
+
* browser `window` exists and stays `false` otherwise. `check` may read
|
|
11
|
+
* reactive state; the result recomputes when it changes.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const isSupported = useSupported(() => "share" in navigator);
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @param check Returns a truthy value when the feature is available.
|
|
19
|
+
* @returns Computed support flag.
|
|
20
|
+
*/
|
|
21
|
+
declare function useSupported(check: () => unknown): ComputedRef<boolean>;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { useSupported };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useMounted } from "./use-mounted.mjs";
|
|
2
|
+
import { computed, hasInjectionContext, shallowRef } from "vue";
|
|
3
|
+
//#region src/use-supported.ts
|
|
4
|
+
/**
|
|
5
|
+
* Hydration-stable feature detection.
|
|
6
|
+
*
|
|
7
|
+
* Inside a component the result is `false` until the component mounts and
|
|
8
|
+
* then reflects `check()`, so server and hydrating client render the same
|
|
9
|
+
* fallback first. Outside a component it is evaluated right away when a
|
|
10
|
+
* browser `window` exists and stays `false` otherwise. `check` may read
|
|
11
|
+
* reactive state; the result recomputes when it changes.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const isSupported = useSupported(() => "share" in navigator);
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @param check Returns a truthy value when the feature is available.
|
|
19
|
+
* @returns Computed support flag.
|
|
20
|
+
*/
|
|
21
|
+
function useSupported(check) {
|
|
22
|
+
const ready = hasInjectionContext() ? useMounted() : shallowRef(typeof window !== "undefined");
|
|
23
|
+
return computed(() => ready.value && Boolean(check()));
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { useSupported };
|
package/dist/use-throttled.d.mts
CHANGED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { n as IntervalScheduler, r as PausableControls } from "./use-interval-BA55gTHT.mjs";
|
|
2
|
+
import { ComputedRef, MaybeRefOrGetter, ShallowRef } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/use-time-ago.d.ts
|
|
5
|
+
/** Calendar units {@link formatTimeAgo} can express a distance in. */
|
|
6
|
+
type TimeAgoUnit = "second" | "minute" | "hour" | "day" | "week" | "month" | "year";
|
|
7
|
+
/** Date input accepted by the time formatting helpers. */
|
|
8
|
+
type TimeAgoInput = Date | number | string;
|
|
9
|
+
/** Options for {@link formatTimeAgo}. */
|
|
10
|
+
interface FormatTimeAgoOptions {
|
|
11
|
+
/**
|
|
12
|
+
* BCP 47 locale(s) for `Intl.RelativeTimeFormat`. Defaults to a fixed
|
|
13
|
+
* locale (not the host default) so server and client output agree.
|
|
14
|
+
*
|
|
15
|
+
* @default "en"
|
|
16
|
+
*/
|
|
17
|
+
readonly locale?: string | readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* `"auto"` allows phrases such as "yesterday" and "now"; `"always"` keeps
|
|
20
|
+
* numeric output such as "1 day ago".
|
|
21
|
+
*
|
|
22
|
+
* @default "auto"
|
|
23
|
+
*/
|
|
24
|
+
readonly numeric?: "always" | "auto";
|
|
25
|
+
/**
|
|
26
|
+
* Length of the unit wording.
|
|
27
|
+
*
|
|
28
|
+
* @default "long"
|
|
29
|
+
*/
|
|
30
|
+
readonly style?: "long" | "short" | "narrow";
|
|
31
|
+
/**
|
|
32
|
+
* Units allowed in the output, in any order. The largest allowed unit
|
|
33
|
+
* that fits the distance wins; smaller distances use the smallest unit.
|
|
34
|
+
*
|
|
35
|
+
* @default all units from second to year
|
|
36
|
+
*/
|
|
37
|
+
readonly units?: readonly TimeAgoUnit[];
|
|
38
|
+
/**
|
|
39
|
+
* How a fractional unit count becomes an integer.
|
|
40
|
+
*
|
|
41
|
+
* @default "round"
|
|
42
|
+
*/
|
|
43
|
+
readonly rounding?: "round" | "floor" | "ceil";
|
|
44
|
+
/**
|
|
45
|
+
* Distances below this many milliseconds are reported as zero of the
|
|
46
|
+
* smallest unit ("now" with `numeric: "auto"`).
|
|
47
|
+
*
|
|
48
|
+
* @default 0
|
|
49
|
+
*/
|
|
50
|
+
readonly justNowMs?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Distances of at least this many milliseconds are delegated to
|
|
53
|
+
* {@link FormatTimeAgoOptions.fullDateFormatter}.
|
|
54
|
+
*
|
|
55
|
+
* @default Number.POSITIVE_INFINITY
|
|
56
|
+
*/
|
|
57
|
+
readonly maxMs?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Formats dates beyond {@link FormatTimeAgoOptions.maxMs}.
|
|
60
|
+
*
|
|
61
|
+
* @default medium date style in UTC for the configured locale
|
|
62
|
+
*/
|
|
63
|
+
readonly fullDateFormatter?: (date: Date) => string;
|
|
64
|
+
}
|
|
65
|
+
/** Options for {@link useTimeAgo}. */
|
|
66
|
+
interface UseTimeAgoOptions<Controls extends boolean = false> extends Omit<FormatTimeAgoOptions, "locale"> {
|
|
67
|
+
/**
|
|
68
|
+
* Reactive BCP 47 locale(s). Pair with `useLocale()` to follow the user.
|
|
69
|
+
*
|
|
70
|
+
* @default "en"
|
|
71
|
+
*/
|
|
72
|
+
readonly locale?: MaybeRefOrGetter<string | readonly string[]>;
|
|
73
|
+
/**
|
|
74
|
+
* How often the relative phrase is recomputed, in milliseconds.
|
|
75
|
+
*
|
|
76
|
+
* @default 30000
|
|
77
|
+
*/
|
|
78
|
+
readonly updateIntervalMs?: MaybeRefOrGetter<number>;
|
|
79
|
+
/**
|
|
80
|
+
* Clock source returning Unix epoch milliseconds.
|
|
81
|
+
*
|
|
82
|
+
* @default Date.now
|
|
83
|
+
*/
|
|
84
|
+
readonly now?: () => number;
|
|
85
|
+
/**
|
|
86
|
+
* Hydration-stable "now" used for the first render on server and client.
|
|
87
|
+
*
|
|
88
|
+
* @default undefined (read the clock immediately)
|
|
89
|
+
*/
|
|
90
|
+
readonly initialNow?: number;
|
|
91
|
+
/**
|
|
92
|
+
* Starts host timers when no browser `window` is available.
|
|
93
|
+
*
|
|
94
|
+
* @default false
|
|
95
|
+
*/
|
|
96
|
+
readonly runOnServer?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Repeating timer host.
|
|
99
|
+
*
|
|
100
|
+
* @default globalThis timer functions
|
|
101
|
+
*/
|
|
102
|
+
readonly scheduler?: IntervalScheduler;
|
|
103
|
+
/**
|
|
104
|
+
* Return the full control object instead of the bare phrase ref.
|
|
105
|
+
*
|
|
106
|
+
* @default false
|
|
107
|
+
*/
|
|
108
|
+
readonly controls?: Controls;
|
|
109
|
+
}
|
|
110
|
+
/** Phrase and controls returned by `useTimeAgo(time, { controls: true })`. */
|
|
111
|
+
interface TimeAgoControls extends PausableControls {
|
|
112
|
+
/** Localized relative phrase such as "3 minutes ago". */
|
|
113
|
+
readonly timeAgo: ComputedRef<string>;
|
|
114
|
+
/** The reference "now" in Unix epoch milliseconds. */
|
|
115
|
+
readonly now: Readonly<ShallowRef<number>>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Format the distance between two instants as a localized relative phrase.
|
|
119
|
+
*
|
|
120
|
+
* Pure and deterministic: the output depends only on the arguments (the
|
|
121
|
+
* locale defaults to `"en"`, never the host default), which makes it safe
|
|
122
|
+
* for server rendering and hydration.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* formatTimeAgo(Date.UTC(2026, 0, 1), Date.UTC(2026, 0, 2)); // "yesterday"
|
|
127
|
+
* formatTimeAgo(0, 90_000, { numeric: "always" }); // "2 minutes ago"
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @param time Instant being described.
|
|
131
|
+
* @param now Reference instant.
|
|
132
|
+
* @param options Locale, wording, unit, and threshold policy.
|
|
133
|
+
* @default options {}
|
|
134
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_TIME_AGO_INVALID_DATE` when
|
|
135
|
+
* either input is not a valid date, and `RangeError` from `Intl` for invalid
|
|
136
|
+
* locales.
|
|
137
|
+
* @returns The localized phrase.
|
|
138
|
+
*/
|
|
139
|
+
declare function formatTimeAgo(time: TimeAgoInput, now: TimeAgoInput, options?: FormatTimeAgoOptions): string;
|
|
140
|
+
/**
|
|
141
|
+
* Reactive localized "time ago" phrase that refreshes on an interval.
|
|
142
|
+
*
|
|
143
|
+
* Combines {@link formatTimeAgo} with a pausable clock. For SSR, inject
|
|
144
|
+
* `initialNow` (the server render time) and a fixed `locale`: both sides
|
|
145
|
+
* then produce the same phrase and the client clock takes over on its first
|
|
146
|
+
* tick. No timer runs on the server; the timer stops with the owning scope.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```ts
|
|
150
|
+
* const phrase = useTimeAgo(() => post.value.createdAt, { locale: useLocale().locale });
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @param time Reactive instant being described.
|
|
154
|
+
* @param options Formatting, cadence, clock, and SSR policy.
|
|
155
|
+
* @default options {}
|
|
156
|
+
* @throws `RangeError` on read for invalid dates or locales, and for invalid
|
|
157
|
+
* update intervals at creation.
|
|
158
|
+
* @returns The phrase ref, or the full controls when `controls` is `true`.
|
|
159
|
+
*/
|
|
160
|
+
declare function useTimeAgo(time: MaybeRefOrGetter<TimeAgoInput>, options?: UseTimeAgoOptions<false>): ComputedRef<string>;
|
|
161
|
+
declare function useTimeAgo(time: MaybeRefOrGetter<TimeAgoInput>, options: UseTimeAgoOptions<true>): TimeAgoControls;
|
|
162
|
+
//#endregion
|
|
163
|
+
export { FormatTimeAgoOptions, TimeAgoControls, TimeAgoInput, TimeAgoUnit, UseTimeAgoOptions, formatTimeAgo, useTimeAgo };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useTimestamp } from "./use-now.mjs";
|
|
2
|
+
import { computed, toValue } from "vue";
|
|
3
|
+
//#region src/use-time-ago.ts
|
|
4
|
+
const unitMs = {
|
|
5
|
+
second: 1e3,
|
|
6
|
+
minute: 6e4,
|
|
7
|
+
hour: 36e5,
|
|
8
|
+
day: 864e5,
|
|
9
|
+
week: 6048e5,
|
|
10
|
+
month: 2592e6,
|
|
11
|
+
year: 31536e6
|
|
12
|
+
};
|
|
13
|
+
const allUnits = [
|
|
14
|
+
"second",
|
|
15
|
+
"minute",
|
|
16
|
+
"hour",
|
|
17
|
+
"day",
|
|
18
|
+
"week",
|
|
19
|
+
"month",
|
|
20
|
+
"year"
|
|
21
|
+
];
|
|
22
|
+
function toEpochMs(input) {
|
|
23
|
+
const value = input instanceof Date ? input.getTime() : new Date(input).getTime();
|
|
24
|
+
if (Number.isNaN(value)) throw new RangeError(`[VIZE_COMPOSE_TIME_AGO_INVALID_DATE] expected a valid date; received ${String(input)}`);
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Format the distance between two instants as a localized relative phrase.
|
|
29
|
+
*
|
|
30
|
+
* Pure and deterministic: the output depends only on the arguments (the
|
|
31
|
+
* locale defaults to `"en"`, never the host default), which makes it safe
|
|
32
|
+
* for server rendering and hydration.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* formatTimeAgo(Date.UTC(2026, 0, 1), Date.UTC(2026, 0, 2)); // "yesterday"
|
|
37
|
+
* formatTimeAgo(0, 90_000, { numeric: "always" }); // "2 minutes ago"
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @param time Instant being described.
|
|
41
|
+
* @param now Reference instant.
|
|
42
|
+
* @param options Locale, wording, unit, and threshold policy.
|
|
43
|
+
* @default options {}
|
|
44
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_TIME_AGO_INVALID_DATE` when
|
|
45
|
+
* either input is not a valid date, and `RangeError` from `Intl` for invalid
|
|
46
|
+
* locales.
|
|
47
|
+
* @returns The localized phrase.
|
|
48
|
+
*/
|
|
49
|
+
function formatTimeAgo(time, now, options = {}) {
|
|
50
|
+
const target = toEpochMs(time);
|
|
51
|
+
const diff = target - toEpochMs(now);
|
|
52
|
+
const distance = Math.abs(diff);
|
|
53
|
+
const locales = typeof options.locale === "string" ? options.locale : [...options.locale ?? ["en"]];
|
|
54
|
+
if (distance >= (options.maxMs ?? Number.POSITIVE_INFINITY)) {
|
|
55
|
+
const date = new Date(target);
|
|
56
|
+
return options.fullDateFormatter === void 0 ? new Intl.DateTimeFormat(locales, {
|
|
57
|
+
dateStyle: "medium",
|
|
58
|
+
timeZone: "UTC"
|
|
59
|
+
}).format(date) : options.fullDateFormatter(date);
|
|
60
|
+
}
|
|
61
|
+
const allowed = allUnits.filter((unit) => (options.units ?? allUnits).includes(unit));
|
|
62
|
+
const smallest = allowed[0] ?? "second";
|
|
63
|
+
let unit = smallest;
|
|
64
|
+
for (const candidate of allowed) if (distance >= unitMs[candidate]) unit = candidate;
|
|
65
|
+
const round = Math[options.rounding ?? "round"];
|
|
66
|
+
const magnitude = distance < (options.justNowMs ?? 0) ? 0 : round(distance / unitMs[unit]);
|
|
67
|
+
return new Intl.RelativeTimeFormat(locales, {
|
|
68
|
+
numeric: options.numeric ?? "auto",
|
|
69
|
+
style: options.style ?? "long"
|
|
70
|
+
}).format(diff <= 0 ? -magnitude : magnitude, magnitude === 0 ? smallest : unit);
|
|
71
|
+
}
|
|
72
|
+
function useTimeAgo(time, options = {}) {
|
|
73
|
+
const { timestamp, pause, resume, isActive } = useTimestamp({
|
|
74
|
+
interval: options.updateIntervalMs ?? 3e4,
|
|
75
|
+
controls: true,
|
|
76
|
+
runOnServer: options.runOnServer ?? false,
|
|
77
|
+
...options.now === void 0 ? {} : { now: options.now },
|
|
78
|
+
...options.initialNow === void 0 ? {} : { initial: options.initialNow },
|
|
79
|
+
...options.scheduler === void 0 ? {} : { scheduler: options.scheduler }
|
|
80
|
+
});
|
|
81
|
+
const timeAgo = computed(() => formatTimeAgo(toValue(time), timestamp.value, {
|
|
82
|
+
...options,
|
|
83
|
+
locale: toValue(options.locale) ?? "en"
|
|
84
|
+
}));
|
|
85
|
+
if (options.controls !== true) return timeAgo;
|
|
86
|
+
return {
|
|
87
|
+
timeAgo,
|
|
88
|
+
now: timestamp,
|
|
89
|
+
pause,
|
|
90
|
+
resume,
|
|
91
|
+
isActive
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { formatTimeAgo, useTimeAgo };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { ComputedRef, MaybeRefOrGetter, ShallowRef } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/use-timeout.d.ts
|
|
5
|
+
/** Options for {@link useTimeoutFn}. */
|
|
6
|
+
interface UseTimeoutFnOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Start the timer as soon as the composable is created. Only available
|
|
9
|
+
* for callbacks without arguments; pass `false` to schedule a callback
|
|
10
|
+
* that takes arguments through {@link TimeoutFnControls.start}.
|
|
11
|
+
*
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
readonly immediate?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Starts host timers when no browser `window` is available.
|
|
17
|
+
*
|
|
18
|
+
* Keep this disabled during server rendering: `isPending` then reports the
|
|
19
|
+
* requested state but no timer is created and the callback never runs.
|
|
20
|
+
*
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
readonly runOnServer?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Owns the single-shot timer.
|
|
26
|
+
*
|
|
27
|
+
* @default globalThis timer functions
|
|
28
|
+
*/
|
|
29
|
+
readonly scheduler?: TimeoutScheduler;
|
|
30
|
+
}
|
|
31
|
+
/** Controls returned by {@link useTimeoutFn}. */
|
|
32
|
+
interface TimeoutFnControls<Args extends readonly unknown[]> {
|
|
33
|
+
/** Whether a call is scheduled and has not fired or been stopped yet. */
|
|
34
|
+
readonly isPending: Readonly<ShallowRef<boolean>>;
|
|
35
|
+
/**
|
|
36
|
+
* (Re)start the timer. A pending call is replaced, and the callback later
|
|
37
|
+
* receives exactly these arguments.
|
|
38
|
+
*/
|
|
39
|
+
readonly start: (...args: Args) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Cancel the pending call.
|
|
42
|
+
*
|
|
43
|
+
* @returns Whether a pending call was cancelled.
|
|
44
|
+
*/
|
|
45
|
+
readonly stop: () => boolean;
|
|
46
|
+
}
|
|
47
|
+
/** Options for {@link useTimeout}. */
|
|
48
|
+
interface UseTimeoutOptions<Controls extends boolean = false> extends UseTimeoutFnOptions {
|
|
49
|
+
/**
|
|
50
|
+
* Return the full control object instead of the bare readiness ref.
|
|
51
|
+
*
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
readonly controls?: Controls;
|
|
55
|
+
/**
|
|
56
|
+
* Invoked when the timeout elapses.
|
|
57
|
+
*
|
|
58
|
+
* @default undefined
|
|
59
|
+
*/
|
|
60
|
+
readonly callback?: () => void;
|
|
61
|
+
}
|
|
62
|
+
/** Readiness and controls returned by `useTimeout(ms, { controls: true })`. */
|
|
63
|
+
interface TimeoutControls extends TimeoutFnControls<[]> {
|
|
64
|
+
/** `true` once the timer elapsed or was stopped, `false` while pending. */
|
|
65
|
+
readonly ready: ComputedRef<boolean>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Call a function once after a delay, with restart and cancel controls.
|
|
69
|
+
*
|
|
70
|
+
* The typing is arity-aware: a zero-argument callback may start
|
|
71
|
+
* immediately, while a callback with parameters requires
|
|
72
|
+
* `{ immediate: false }` so it can only ever run with arguments supplied to
|
|
73
|
+
* `start(...)`. `delayMs` is reactive and read on every `start`.
|
|
74
|
+
*
|
|
75
|
+
* Server rendering is hydration-stable: without a browser `window` (and with
|
|
76
|
+
* {@link UseTimeoutFnOptions.runOnServer} disabled) `isPending` reports the
|
|
77
|
+
* requested state but no timer is created. A pending timer is cleared when
|
|
78
|
+
* the owning reactive scope stops.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* const { start, stop } = useTimeoutFn((id: string) => save(id), 500, { immediate: false });
|
|
83
|
+
* start("draft-1");
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @param callback Invoked once the delay elapses.
|
|
87
|
+
* @param delayMs Reactive delay in milliseconds; finite and at least zero.
|
|
88
|
+
* @param options Start, server, and scheduler policy.
|
|
89
|
+
* @default options {}
|
|
90
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_TIMEOUT_INVALID_DELAY` for invalid
|
|
91
|
+
* delays, synchronously at creation and on every `start`.
|
|
92
|
+
* @returns Pending flag and start/stop controls.
|
|
93
|
+
*/
|
|
94
|
+
declare function useTimeoutFn(callback: () => void, delayMs: MaybeRefOrGetter<number>, options?: UseTimeoutFnOptions): TimeoutFnControls<[]>;
|
|
95
|
+
declare function useTimeoutFn<Args extends readonly unknown[]>(callback: (...args: Args) => void, delayMs: MaybeRefOrGetter<number>, options: UseTimeoutFnOptions & {
|
|
96
|
+
readonly immediate: false;
|
|
97
|
+
}): TimeoutFnControls<Args>;
|
|
98
|
+
/**
|
|
99
|
+
* Reactive "has the delay elapsed yet?" flag.
|
|
100
|
+
*
|
|
101
|
+
* A wrapper over {@link useTimeoutFn}. Pass `{ controls: true }` to receive
|
|
102
|
+
* start/stop alongside the flag; the return type follows the literal flag.
|
|
103
|
+
* Stopping a pending timer marks it ready.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* const ready = useTimeout(300); // ComputedRef<boolean>
|
|
108
|
+
* const { ready: done, start } = useTimeout(300, { controls: true, immediate: false });
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @param delayMs Reactive delay in milliseconds.
|
|
112
|
+
* @param options Timeout options plus the `controls` flag.
|
|
113
|
+
* @default delayMs 1000
|
|
114
|
+
* @default options {}
|
|
115
|
+
* @throws `RangeError` tagged `VIZE_COMPOSE_TIMEOUT_INVALID_DELAY` for invalid
|
|
116
|
+
* delays (see {@link useTimeoutFn}).
|
|
117
|
+
* @returns The readiness ref, or the full controls when `controls` is `true`.
|
|
118
|
+
*/
|
|
119
|
+
declare function useTimeout(delayMs?: MaybeRefOrGetter<number>, options?: UseTimeoutOptions<false>): ComputedRef<boolean>;
|
|
120
|
+
declare function useTimeout(delayMs: MaybeRefOrGetter<number>, options: UseTimeoutOptions<true>): TimeoutControls;
|
|
121
|
+
//#endregion
|
|
122
|
+
export { TimeoutControls, TimeoutFnControls, UseTimeoutFnOptions, UseTimeoutOptions, useTimeout, useTimeoutFn };
|