@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,53 @@
|
|
|
1
|
+
import { useLocale } from "./locale.mjs";
|
|
2
|
+
import { computed, toValue } from "vue";
|
|
3
|
+
//#region src/use-date-time-format.ts
|
|
4
|
+
function browserLanguage() {
|
|
5
|
+
return typeof window === "undefined" ? void 0 : window.navigator.language;
|
|
6
|
+
}
|
|
7
|
+
function isValidDate(value) {
|
|
8
|
+
return !Number.isNaN(value instanceof Date ? value.getTime() : value);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Format dates and times reactively with `Intl.DateTimeFormat`.
|
|
12
|
+
*
|
|
13
|
+
* The formatter follows the reactive options (including `locale`) and is
|
|
14
|
+
* cached per locale and option set through {@link useLocale}. For
|
|
15
|
+
* hydration-stable output pass both `locale` and `timeZone`: otherwise the
|
|
16
|
+
* server uses `"en"` and its own zone. Invalid options surface as the
|
|
17
|
+
* platform's `RangeError` on first read; invalid dates render as `""`.
|
|
18
|
+
* No listeners or timers are created — combine with a clock composable for
|
|
19
|
+
* live-updating output.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const { formatted } = useDateTimeFormat(date, { locale: "en-GB", dateStyle: "long", timeZone: "UTC" });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @param value Reactive date; `null`/`undefined` format as `""`.
|
|
27
|
+
* @param options Reactive locale and `Intl.DateTimeFormat` options.
|
|
28
|
+
* @default value undefined
|
|
29
|
+
* @default options {}
|
|
30
|
+
* @returns Reactive formatted output and formatter helpers.
|
|
31
|
+
*/
|
|
32
|
+
function useDateTimeFormat(value, options = {}) {
|
|
33
|
+
const localeControls = useLocale(() => toValue(options).locale, { detect: browserLanguage });
|
|
34
|
+
const formatter = computed(() => {
|
|
35
|
+
const { locale: _locale, ...formatOptions } = toValue(options);
|
|
36
|
+
return localeControls.dateTime(formatOptions);
|
|
37
|
+
});
|
|
38
|
+
const formatted = computed(() => {
|
|
39
|
+
const current = value === void 0 ? void 0 : toValue(value);
|
|
40
|
+
if (current === null || current === void 0 || !isValidDate(current)) return "";
|
|
41
|
+
return formatter.value.format(current);
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
locale: localeControls.locale,
|
|
45
|
+
formatter,
|
|
46
|
+
formatted,
|
|
47
|
+
format: (input) => formatter.value.format(input),
|
|
48
|
+
formatToParts: (input) => formatter.value.formatToParts(input),
|
|
49
|
+
formatRange: (start, end) => formatter.value.formatRange(start, end)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { useDateTimeFormat };
|
package/dist/use-debounced.d.mts
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { MediaStreamControls, MediaStreamLike } from "./use-user-media.mjs";
|
|
2
|
+
import { MaybeRefOrGetter } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/use-display-media.d.ts
|
|
5
|
+
/** Minimal `MediaDevices` consumed by {@link useDisplayMedia}. */
|
|
6
|
+
interface DisplayMediaHost {
|
|
7
|
+
/** Ask the user to pick a screen, window, or tab to capture. */
|
|
8
|
+
getDisplayMedia(options?: DisplayMediaStreamOptions): Promise<MediaStreamLike>;
|
|
9
|
+
}
|
|
10
|
+
/** Options for {@link useDisplayMedia}. */
|
|
11
|
+
interface UseDisplayMediaOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Video capture constraints.
|
|
14
|
+
*
|
|
15
|
+
* @default true
|
|
16
|
+
*/
|
|
17
|
+
readonly video?: MaybeRefOrGetter<boolean | MediaTrackConstraints>;
|
|
18
|
+
/**
|
|
19
|
+
* Audio capture constraints (tab or system audio where supported).
|
|
20
|
+
*
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
readonly audio?: MaybeRefOrGetter<boolean | MediaTrackConstraints>;
|
|
24
|
+
/**
|
|
25
|
+
* Start while `true`, stop while `false`. Browsers require a user gesture
|
|
26
|
+
* for screen capture, so prefer calling `start` from an event handler.
|
|
27
|
+
*
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
readonly enabled?: MaybeRefOrGetter<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* `MediaDevices` capability for alternate runtimes and tests.
|
|
33
|
+
*
|
|
34
|
+
* @default window.navigator.mediaDevices when it implements `getDisplayMedia`
|
|
35
|
+
*/
|
|
36
|
+
readonly host?: MaybeRefOrGetter<DisplayMediaHost | null | undefined>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Capture a screen, window, or tab with `getDisplayMedia`.
|
|
40
|
+
*
|
|
41
|
+
* Shares the stream lifecycle of `useMediaStream` (from `use-user-media`):
|
|
42
|
+
* classified failures (`"permission-denied"` when the user dismisses the
|
|
43
|
+
* picker), latest-wins requests, and automatic return to `"idle"` when the
|
|
44
|
+
* user ends sharing from the browser UI (every track `ended`). Tracks are
|
|
45
|
+
* stopped when the owning reactive scope stops.
|
|
46
|
+
*
|
|
47
|
+
* Server rendering: nothing is captured; `status` is `"idle"` and
|
|
48
|
+
* `supported` is false.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* const screen = useDisplayMedia({ audio: true });
|
|
53
|
+
* const share = () => screen.start();
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @param options Capture constraints, activation, and capability.
|
|
57
|
+
* @default options {}
|
|
58
|
+
* @returns Stream state and actions.
|
|
59
|
+
*/
|
|
60
|
+
declare function useDisplayMedia(options?: UseDisplayMediaOptions): MediaStreamControls;
|
|
61
|
+
//#endregion
|
|
62
|
+
export { DisplayMediaHost, UseDisplayMediaOptions, useDisplayMedia };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useMediaStream } from "./use-user-media.mjs";
|
|
2
|
+
import { toValue } from "vue";
|
|
3
|
+
//#region src/use-display-media.ts
|
|
4
|
+
function browserDisplayMediaHost() {
|
|
5
|
+
if (typeof window === "undefined") return void 0;
|
|
6
|
+
const devices = window.navigator.mediaDevices;
|
|
7
|
+
return devices && typeof devices.getDisplayMedia === "function" ? devices : void 0;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Capture a screen, window, or tab with `getDisplayMedia`.
|
|
11
|
+
*
|
|
12
|
+
* Shares the stream lifecycle of `useMediaStream` (from `use-user-media`):
|
|
13
|
+
* classified failures (`"permission-denied"` when the user dismisses the
|
|
14
|
+
* picker), latest-wins requests, and automatic return to `"idle"` when the
|
|
15
|
+
* user ends sharing from the browser UI (every track `ended`). Tracks are
|
|
16
|
+
* stopped when the owning reactive scope stops.
|
|
17
|
+
*
|
|
18
|
+
* Server rendering: nothing is captured; `status` is `"idle"` and
|
|
19
|
+
* `supported` is false.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const screen = useDisplayMedia({ audio: true });
|
|
24
|
+
* const share = () => screen.start();
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @param options Capture constraints, activation, and capability.
|
|
28
|
+
* @default options {}
|
|
29
|
+
* @returns Stream state and actions.
|
|
30
|
+
*/
|
|
31
|
+
function useDisplayMedia(options = {}) {
|
|
32
|
+
const resolveHost = () => options.host === void 0 ? browserDisplayMediaHost() : toValue(options.host) ?? void 0;
|
|
33
|
+
return useMediaStream({
|
|
34
|
+
source: () => {
|
|
35
|
+
const host = resolveHost();
|
|
36
|
+
return host ? { request: (constraints) => host.getDisplayMedia(constraints) } : void 0;
|
|
37
|
+
},
|
|
38
|
+
constraints: () => ({
|
|
39
|
+
video: toValue(options.video) ?? true,
|
|
40
|
+
audio: toValue(options.audio) ?? false
|
|
41
|
+
}),
|
|
42
|
+
enabled: () => toValue(options.enabled) ?? false
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { useDisplayMedia };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRefOrGetter } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-display-names.d.ts
|
|
4
|
+
/** Kinds of codes `Intl.DisplayNames` can name. */
|
|
5
|
+
type DisplayNamesKind = "language" | "region" | "script" | "currency" | "calendar" | "dateTimeField";
|
|
6
|
+
/** Options for {@link useDisplayNames}. */
|
|
7
|
+
interface UseDisplayNamesOptions {
|
|
8
|
+
/** Kind of code to name. */
|
|
9
|
+
readonly type: DisplayNamesKind;
|
|
10
|
+
/**
|
|
11
|
+
* Locale the names are written in. Pass it explicitly for
|
|
12
|
+
* hydration-stable server rendering.
|
|
13
|
+
*
|
|
14
|
+
* @default the browser language, otherwise "en"
|
|
15
|
+
*/
|
|
16
|
+
readonly locale?: string | Intl.Locale;
|
|
17
|
+
/**
|
|
18
|
+
* Name length.
|
|
19
|
+
*
|
|
20
|
+
* @default "long"
|
|
21
|
+
*/
|
|
22
|
+
readonly style?: "narrow" | "short" | "long";
|
|
23
|
+
/**
|
|
24
|
+
* What to return for a well-formed code without a name: the code itself
|
|
25
|
+
* or `undefined`.
|
|
26
|
+
*
|
|
27
|
+
* @default "code"
|
|
28
|
+
*/
|
|
29
|
+
readonly fallback?: "code" | "none";
|
|
30
|
+
/**
|
|
31
|
+
* Language names: `"dialect"` names `"en-GB"` "British English",
|
|
32
|
+
* `"standard"` names it "English (United Kingdom)".
|
|
33
|
+
*
|
|
34
|
+
* @default "dialect"
|
|
35
|
+
*/
|
|
36
|
+
readonly languageDisplay?: "dialect" | "standard";
|
|
37
|
+
}
|
|
38
|
+
/** Reactive display names returned by {@link useDisplayNames}. */
|
|
39
|
+
interface DisplayNamesControls {
|
|
40
|
+
/** Canonical locale in use. */
|
|
41
|
+
readonly locale: ComputedRef<string>;
|
|
42
|
+
/** Display names instance for the current locale and options. */
|
|
43
|
+
readonly displayNames: ComputedRef<Intl.DisplayNames>;
|
|
44
|
+
/** Name of the reactive code; `undefined` for malformed or unnamed codes. */
|
|
45
|
+
readonly name: ComputedRef<string | undefined>;
|
|
46
|
+
/**
|
|
47
|
+
* Name any code. Malformed codes return `undefined` instead of throwing.
|
|
48
|
+
*
|
|
49
|
+
* @param code Language tag, region, script, currency, calendar, or field code.
|
|
50
|
+
* @returns The localized name.
|
|
51
|
+
*/
|
|
52
|
+
readonly of: (code: string) => string | undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Localized names of languages, regions, scripts, currencies, calendars, and
|
|
56
|
+
* date-time fields (`Intl.DisplayNames`): `"JP"` → "Japan", `"ja"` → "日本語"
|
|
57
|
+
* in Japanese, `"EUR"` → "Euro".
|
|
58
|
+
*
|
|
59
|
+
* Malformed codes yield `undefined` rather than the platform `RangeError`,
|
|
60
|
+
* so user-entered codes never crash rendering; invalid *options* still
|
|
61
|
+
* throw on first read. Derived state only: no listeners or timers, and
|
|
62
|
+
* deterministic during server rendering when the locale is explicit.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* const { name } = useDisplayNames(regionCode, { type: "region", locale: "en" });
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @param code Reactive code to name.
|
|
70
|
+
* @param options Reactive kind, locale, and display options.
|
|
71
|
+
* @returns Reactive name and a naming helper.
|
|
72
|
+
*/
|
|
73
|
+
declare function useDisplayNames(code: MaybeRefOrGetter<string | null | undefined>, options: MaybeRefOrGetter<UseDisplayNamesOptions>): DisplayNamesControls;
|
|
74
|
+
//#endregion
|
|
75
|
+
export { DisplayNamesControls, DisplayNamesKind, UseDisplayNamesOptions, useDisplayNames };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useLocale } from "./locale.mjs";
|
|
2
|
+
import { computed, toValue } from "vue";
|
|
3
|
+
//#region src/use-display-names.ts
|
|
4
|
+
function browserLanguage() {
|
|
5
|
+
return typeof window === "undefined" ? void 0 : window.navigator.language;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Localized names of languages, regions, scripts, currencies, calendars, and
|
|
9
|
+
* date-time fields (`Intl.DisplayNames`): `"JP"` → "Japan", `"ja"` → "日本語"
|
|
10
|
+
* in Japanese, `"EUR"` → "Euro".
|
|
11
|
+
*
|
|
12
|
+
* Malformed codes yield `undefined` rather than the platform `RangeError`,
|
|
13
|
+
* so user-entered codes never crash rendering; invalid *options* still
|
|
14
|
+
* throw on first read. Derived state only: no listeners or timers, and
|
|
15
|
+
* deterministic during server rendering when the locale is explicit.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const { name } = useDisplayNames(regionCode, { type: "region", locale: "en" });
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param code Reactive code to name.
|
|
23
|
+
* @param options Reactive kind, locale, and display options.
|
|
24
|
+
* @returns Reactive name and a naming helper.
|
|
25
|
+
*/
|
|
26
|
+
function useDisplayNames(code, options) {
|
|
27
|
+
const localeControls = useLocale(() => toValue(options).locale, { detect: browserLanguage });
|
|
28
|
+
const displayNames = computed(() => {
|
|
29
|
+
const { locale: _locale, ...displayOptions } = toValue(options);
|
|
30
|
+
return new Intl.DisplayNames(localeControls.locale.value, displayOptions);
|
|
31
|
+
});
|
|
32
|
+
const of = (value) => {
|
|
33
|
+
const names = displayNames.value;
|
|
34
|
+
try {
|
|
35
|
+
return names.of(value);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
if (error instanceof RangeError) return void 0;
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
locale: localeControls.locale,
|
|
43
|
+
displayNames,
|
|
44
|
+
name: computed(() => {
|
|
45
|
+
const current = toValue(code);
|
|
46
|
+
return current === null || current === void 0 || current === "" ? void 0 : of(current);
|
|
47
|
+
}),
|
|
48
|
+
of
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { useDisplayNames };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRefOrGetter, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-document-title.d.ts
|
|
4
|
+
/** Document subset used by {@link useDocumentTitle}. */
|
|
5
|
+
interface DocumentTitleHost {
|
|
6
|
+
/** Current document title (readable and writable). */
|
|
7
|
+
title: string;
|
|
8
|
+
/**
|
|
9
|
+
* Observe external title changes (for example by other libraries).
|
|
10
|
+
* Returns a function that stops observing.
|
|
11
|
+
*/
|
|
12
|
+
readonly observeTitle?: (callback: () => void) => () => void;
|
|
13
|
+
}
|
|
14
|
+
/** Title template: a string containing `%s`, or a formatting function. */
|
|
15
|
+
type DocumentTitleTemplate = string | ((title: string) => string);
|
|
16
|
+
/** Title applied when the owning scope stops. */
|
|
17
|
+
type DocumentTitleRestore = false | "previous" | ((originalTitle: string, currentTitle: string) => string);
|
|
18
|
+
/** Options for {@link useDocumentTitle}. */
|
|
19
|
+
interface UseDocumentTitleOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Template applied to every title written to the document.
|
|
22
|
+
*
|
|
23
|
+
* @default "%s"
|
|
24
|
+
*/
|
|
25
|
+
readonly template?: DocumentTitleTemplate;
|
|
26
|
+
/**
|
|
27
|
+
* Title restored when the owning reactive scope stops: `false` leaves the
|
|
28
|
+
* current title, `"previous"` restores the title seen at creation, and a
|
|
29
|
+
* function computes it.
|
|
30
|
+
*
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
readonly restoreOnDispose?: DocumentTitleRestore;
|
|
34
|
+
/**
|
|
35
|
+
* Follow title changes made outside this composable.
|
|
36
|
+
*
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
readonly observe?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Document capability for alternate runtimes and tests.
|
|
42
|
+
*
|
|
43
|
+
* @default window.document (with a MutationObserver on `<title>`)
|
|
44
|
+
*/
|
|
45
|
+
readonly host?: MaybeRefOrGetter<DocumentTitleHost | null | undefined>;
|
|
46
|
+
}
|
|
47
|
+
/** Reactive state returned by {@link useDocumentTitle}. */
|
|
48
|
+
interface DocumentTitleControls {
|
|
49
|
+
/**
|
|
50
|
+
* Title before templating. Writable; `null`/`undefined` leaves the
|
|
51
|
+
* document title untouched. When a getter was passed, the next getter
|
|
52
|
+
* change overwrites manual assignments.
|
|
53
|
+
*/
|
|
54
|
+
readonly title: Ref<string | null | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Whether a document capability is attached. Inside a component it stays
|
|
57
|
+
* `false` until mounted, so hydration matches the server render.
|
|
58
|
+
*/
|
|
59
|
+
readonly supported: ComputedRef<boolean>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Bind the document title to reactive state.
|
|
63
|
+
*
|
|
64
|
+
* Accepts a writable ref (used as-is), a getter (followed), a plain
|
|
65
|
+
* string, or nothing (an owned ref seeded from the current title). Every
|
|
66
|
+
* non-nullish title is passed through `template` before it is written.
|
|
67
|
+
* With `observe`, external title changes flow back into `title`.
|
|
68
|
+
*
|
|
69
|
+
* Server rendering: the document is never touched and `title` keeps the
|
|
70
|
+
* value it was given (or `undefined`). Head management for server-rendered
|
|
71
|
+
* markup (`<title>` in the HTML) is the job of the application's head
|
|
72
|
+
* manager; this composable only updates the live document on the client.
|
|
73
|
+
* Watchers and the observer are released with the owning reactive scope,
|
|
74
|
+
* which also applies `restoreOnDispose`.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* const { title } = useDocumentTitle(() => route.meta.title, { template: "%s | Vize" });
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @param title Reactive title source.
|
|
82
|
+
* @param options Template, restore policy, observation, and capability.
|
|
83
|
+
* @default options {}
|
|
84
|
+
* @returns The title ref and support flag.
|
|
85
|
+
*/
|
|
86
|
+
declare function useDocumentTitle(title?: MaybeRefOrGetter<string | null | undefined>, options?: UseDocumentTitleOptions): DocumentTitleControls;
|
|
87
|
+
//#endregion
|
|
88
|
+
export { DocumentTitleControls, DocumentTitleHost, DocumentTitleRestore, DocumentTitleTemplate, UseDocumentTitleOptions, useDocumentTitle };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { useMounted } from "./use-mounted.mjs";
|
|
3
|
+
import { computed, hasInjectionContext, isRef, ref, toValue, watch } from "vue";
|
|
4
|
+
//#region src/use-document-title.ts
|
|
5
|
+
function browserTitleHost() {
|
|
6
|
+
if (typeof window === "undefined") return void 0;
|
|
7
|
+
const { document, MutationObserver } = window;
|
|
8
|
+
return {
|
|
9
|
+
get title() {
|
|
10
|
+
return document.title;
|
|
11
|
+
},
|
|
12
|
+
set title(value) {
|
|
13
|
+
document.title = value;
|
|
14
|
+
},
|
|
15
|
+
observeTitle: (callback) => {
|
|
16
|
+
const observer = new MutationObserver(callback);
|
|
17
|
+
const element = document.head.querySelector("title");
|
|
18
|
+
if (element) observer.observe(element, {
|
|
19
|
+
childList: true,
|
|
20
|
+
characterData: true,
|
|
21
|
+
subtree: true
|
|
22
|
+
});
|
|
23
|
+
return () => observer.disconnect();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function formatTitle(template, title) {
|
|
28
|
+
return typeof template === "function" ? template(title) : template.replaceAll("%s", title);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Bind the document title to reactive state.
|
|
32
|
+
*
|
|
33
|
+
* Accepts a writable ref (used as-is), a getter (followed), a plain
|
|
34
|
+
* string, or nothing (an owned ref seeded from the current title). Every
|
|
35
|
+
* non-nullish title is passed through `template` before it is written.
|
|
36
|
+
* With `observe`, external title changes flow back into `title`.
|
|
37
|
+
*
|
|
38
|
+
* Server rendering: the document is never touched and `title` keeps the
|
|
39
|
+
* value it was given (or `undefined`). Head management for server-rendered
|
|
40
|
+
* markup (`<title>` in the HTML) is the job of the application's head
|
|
41
|
+
* manager; this composable only updates the live document on the client.
|
|
42
|
+
* Watchers and the observer are released with the owning reactive scope,
|
|
43
|
+
* which also applies `restoreOnDispose`.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const { title } = useDocumentTitle(() => route.meta.title, { template: "%s | Vize" });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @param title Reactive title source.
|
|
51
|
+
* @param options Template, restore policy, observation, and capability.
|
|
52
|
+
* @default options {}
|
|
53
|
+
* @returns The title ref and support flag.
|
|
54
|
+
*/
|
|
55
|
+
function useDocumentTitle(title, options = {}) {
|
|
56
|
+
const template = options.template ?? "%s";
|
|
57
|
+
const resolveHost = () => options.host === void 0 ? browserTitleHost() : toValue(options.host) ?? void 0;
|
|
58
|
+
const initialHost = resolveHost();
|
|
59
|
+
const originalTitle = initialHost?.title ?? "";
|
|
60
|
+
const mounted = hasInjectionContext() ? useMounted() : void 0;
|
|
61
|
+
const adoptTitle = title === void 0 && mounted !== void 0;
|
|
62
|
+
const state = isRef(title) ? title : ref(title === void 0 && !adoptTitle ? initialHost?.title : toValue(title));
|
|
63
|
+
if (adoptTitle) watch(mounted, (isMounted) => {
|
|
64
|
+
if (isMounted && state.value === void 0) state.value = resolveHost()?.title;
|
|
65
|
+
});
|
|
66
|
+
let lastWritten;
|
|
67
|
+
if (typeof title === "function") watch(title, (next) => {
|
|
68
|
+
state.value = next;
|
|
69
|
+
});
|
|
70
|
+
watch([state, resolveHost], ([next, host]) => {
|
|
71
|
+
if (!host || next === null || next === void 0) return;
|
|
72
|
+
const formatted = formatTitle(template, next);
|
|
73
|
+
lastWritten = formatted;
|
|
74
|
+
if (host.title !== formatted) host.title = formatted;
|
|
75
|
+
}, {
|
|
76
|
+
immediate: true,
|
|
77
|
+
flush: "sync"
|
|
78
|
+
});
|
|
79
|
+
if (options.observe ?? false) watch(resolveHost, (host, _previous, onCleanup) => {
|
|
80
|
+
if (!host?.observeTitle) return;
|
|
81
|
+
onCleanup(host.observeTitle(() => {
|
|
82
|
+
if (host.title !== lastWritten) state.value = host.title;
|
|
83
|
+
}));
|
|
84
|
+
}, {
|
|
85
|
+
immediate: true,
|
|
86
|
+
flush: "sync"
|
|
87
|
+
});
|
|
88
|
+
const restore = options.restoreOnDispose ?? false;
|
|
89
|
+
if (restore !== false) tryOnScopeDispose(() => {
|
|
90
|
+
const host = resolveHost();
|
|
91
|
+
if (!host) return;
|
|
92
|
+
host.title = restore === "previous" ? originalTitle : restore(originalTitle, host.title);
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
title: state,
|
|
96
|
+
supported: computed(() => (mounted?.value ?? true) && resolveHost() !== void 0)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { useDocumentTitle };
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-drop-zone.d.ts
|
|
4
|
+
/** One entry of `DataTransfer.items`. */
|
|
5
|
+
interface DataTransferItemLike {
|
|
6
|
+
/** `"file"` or `"string"`. */
|
|
7
|
+
readonly kind: string;
|
|
8
|
+
/** MIME type of the item. */
|
|
9
|
+
readonly type: string;
|
|
10
|
+
}
|
|
11
|
+
/** Minimal `DataTransfer` consumed by {@link useDropZone}. */
|
|
12
|
+
interface DataTransferLike {
|
|
13
|
+
/** Items being dragged; types are readable during the drag. */
|
|
14
|
+
readonly items?: ArrayLike<DataTransferItemLike>;
|
|
15
|
+
/** Dropped files; populated on `drop`. */
|
|
16
|
+
readonly files: ArrayLike<File>;
|
|
17
|
+
/** Feedback shown to the user (`"copy"`, `"none"`, …). */
|
|
18
|
+
dropEffect: string;
|
|
19
|
+
}
|
|
20
|
+
/** File name and MIME type used for acceptance checks. */
|
|
21
|
+
interface DropZoneFileInfo {
|
|
22
|
+
/** File name including extension. Empty while dragging. */
|
|
23
|
+
readonly name: string;
|
|
24
|
+
/** MIME type, possibly empty for unknown types. */
|
|
25
|
+
readonly type: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Accepted files: `accept`-attribute style patterns (`"image/*"`,
|
|
29
|
+
* `"application/pdf"`, `".png"`), or a predicate over the dragged MIME types.
|
|
30
|
+
*/
|
|
31
|
+
type DropZoneAccept = readonly string[] | ((types: readonly string[]) => boolean);
|
|
32
|
+
/** Options for {@link useDropZone}. */
|
|
33
|
+
interface UseDropZoneOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Accepted files. Extension patterns can only be verified on drop
|
|
36
|
+
* because browsers hide file names while dragging. A ref rather than a
|
|
37
|
+
* getter, because a predicate is itself a function.
|
|
38
|
+
*
|
|
39
|
+
* @default every file
|
|
40
|
+
*/
|
|
41
|
+
readonly accept?: MaybeRef<DropZoneAccept | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Accept more than one file per drop.
|
|
44
|
+
*
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
readonly multiple?: MaybeRefOrGetter<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Call `preventDefault` even for rejected drags, so the browser never
|
|
50
|
+
* opens a rejected file dropped onto the zone.
|
|
51
|
+
*
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
readonly preventDefaultForUnhandled?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Called with the accepted files (or `null` when none were accepted).
|
|
57
|
+
*
|
|
58
|
+
* @default undefined
|
|
59
|
+
*/
|
|
60
|
+
readonly onDrop?: (files: readonly File[] | null, event: Event) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Called when a drag enters the zone.
|
|
63
|
+
*
|
|
64
|
+
* @default undefined
|
|
65
|
+
*/
|
|
66
|
+
readonly onEnter?: (event: Event) => void;
|
|
67
|
+
/**
|
|
68
|
+
* Called when a drag leaves the zone (including its children).
|
|
69
|
+
*
|
|
70
|
+
* @default undefined
|
|
71
|
+
*/
|
|
72
|
+
readonly onLeave?: (event: Event) => void;
|
|
73
|
+
/**
|
|
74
|
+
* Called for every `dragover` inside the zone.
|
|
75
|
+
*
|
|
76
|
+
* @default undefined
|
|
77
|
+
*/
|
|
78
|
+
readonly onOver?: (event: Event) => void;
|
|
79
|
+
}
|
|
80
|
+
/** Reactive state returned by {@link useDropZone}. */
|
|
81
|
+
interface DropZoneControls {
|
|
82
|
+
/** Whether a drag is currently over the zone (children included). */
|
|
83
|
+
readonly isOverDropZone: Readonly<Ref<boolean>>;
|
|
84
|
+
/** Whether the current drag is acceptable. */
|
|
85
|
+
readonly accepted: Readonly<Ref<boolean>>;
|
|
86
|
+
/** Files accepted by the most recent drop. */
|
|
87
|
+
readonly files: Readonly<ShallowRef<readonly File[] | null>>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Test a file against `accept`-attribute style patterns.
|
|
91
|
+
*
|
|
92
|
+
* Supports exact MIME types, wildcard subtypes (`"image/*"`), extensions
|
|
93
|
+
* (`".png"`, case-insensitive), and `"*"`. An empty pattern list accepts
|
|
94
|
+
* everything. An empty `name` (the file is still being dragged) makes
|
|
95
|
+
* extension patterns match provisionally.
|
|
96
|
+
*
|
|
97
|
+
* @param accept Patterns to test.
|
|
98
|
+
* @param file File name and MIME type.
|
|
99
|
+
* @returns Whether any pattern matches.
|
|
100
|
+
*/
|
|
101
|
+
declare function matchesAccept(accept: readonly string[], file: DropZoneFileInfo): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Headless drop-zone logic for any element.
|
|
104
|
+
*
|
|
105
|
+
* Tracks whether a drag is over the target (a nesting counter keeps
|
|
106
|
+
* `dragleave` from child elements from flickering the state), decides
|
|
107
|
+
* acceptance from the dragged MIME types while dragging, and filters the
|
|
108
|
+
* dropped files by `accept` (including extension patterns) and `multiple`.
|
|
109
|
+
* Rejected drags show the `"none"` drop effect. Rendering is entirely up to
|
|
110
|
+
* the caller. Listeners follow the reactive target and are removed when the
|
|
111
|
+
* owning reactive scope stops.
|
|
112
|
+
*
|
|
113
|
+
* Server rendering: no listener is attached; all state is empty/false.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* const zone = useTemplateRef<HTMLElement>("zone");
|
|
118
|
+
* const { isOverDropZone, files } = useDropZone(zone, { accept: ["image/*"] });
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @param target Reactive drop target.
|
|
122
|
+
* @param options Acceptance rules and lifecycle callbacks.
|
|
123
|
+
* @default options {}
|
|
124
|
+
* @returns Drag and drop state.
|
|
125
|
+
*/
|
|
126
|
+
declare function useDropZone(target: MaybeRefOrGetter<EventTarget | null | undefined>, options?: UseDropZoneOptions): DropZoneControls;
|
|
127
|
+
//#endregion
|
|
128
|
+
export { DataTransferItemLike, DataTransferLike, DropZoneAccept, DropZoneControls, DropZoneFileInfo, UseDropZoneOptions, matchesAccept, useDropZone };
|