@vizejs/composable 0.426.3 → 0.427.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abort-signal.d.mts +1 -1
- package/dist/active-element.d.mts +37 -0
- package/dist/active-element.mjs +56 -0
- package/dist/animate.d.mts +114 -0
- package/dist/animate.mjs +157 -0
- package/dist/battery.d.mts +61 -0
- package/dist/battery.mjs +90 -0
- package/dist/breakpoints.d.mts +82 -0
- package/dist/breakpoints.mjs +91 -0
- package/dist/catalog-BeTXFKxF.d.mts +4188 -0
- package/dist/catalog-r4Z5nptX.mjs +5144 -0
- package/dist/catalog.d.mts +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/color-mode.d.mts +131 -0
- package/dist/color-mode.mjs +133 -0
- package/dist/computed-async.d.mts +63 -0
- package/dist/computed-async.mjs +43 -0
- package/dist/computed-with-control.d.mts +44 -0
- package/dist/computed-with-control.mjs +54 -0
- package/dist/create-event-hook.d.mts +77 -0
- package/dist/create-event-hook.mjs +66 -0
- package/dist/create-global-state.d.mts +24 -0
- package/dist/create-global-state.mjs +34 -0
- package/dist/create-injection-state.d.mts +51 -0
- package/dist/create-injection-state.mjs +19 -0
- package/dist/create-shared-composable.d.mts +38 -0
- package/dist/create-shared-composable.mjs +54 -0
- package/dist/device-motion.d.mts +71 -0
- package/dist/device-motion.mjs +75 -0
- package/dist/device-orientation.d.mts +82 -0
- package/dist/device-orientation.mjs +86 -0
- package/dist/device-pixel-ratio.d.mts +45 -0
- package/dist/device-pixel-ratio.mjs +50 -0
- package/dist/document-visibility.mjs +6 -2
- package/dist/draggable.d.mts +121 -0
- package/dist/draggable.mjs +153 -0
- package/dist/element-bounding.d.mts +87 -0
- package/dist/element-bounding.mjs +95 -0
- package/dist/element-by-point.d.mts +70 -0
- package/dist/element-by-point.mjs +69 -0
- package/dist/element-hover.d.mts +42 -0
- package/dist/element-hover.mjs +70 -0
- package/dist/element-ref.d.mts +34 -0
- package/dist/element-ref.mjs +23 -0
- package/dist/element-target-Crpxl4D9.d.mts +60 -0
- package/dist/element-target.d.mts +2 -0
- package/dist/element-target.mjs +58 -0
- package/dist/event-listener.mjs +7 -3
- package/dist/focus.d.mts +69 -0
- package/dist/focus.mjs +124 -0
- package/dist/fps.d.mts +59 -0
- package/dist/fps.mjs +64 -0
- package/dist/geolocation.d.mts +98 -0
- package/dist/geolocation.mjs +86 -0
- package/dist/i18n.d.mts +237 -0
- package/dist/i18n.mjs +215 -0
- package/dist/icu-message.d.mts +235 -0
- package/dist/icu-message.mjs +343 -0
- package/dist/idle.d.mts +79 -0
- package/dist/idle.mjs +90 -0
- package/dist/index.d.mts +172 -6
- package/dist/index.mjs +173 -7
- package/dist/infinite-scroll.d.mts +56 -0
- package/dist/infinite-scroll.mjs +72 -0
- package/dist/intersection-observer.d.mts +122 -0
- package/dist/intersection-observer.mjs +117 -0
- package/dist/magic-keys.d.mts +121 -0
- package/dist/magic-keys.mjs +163 -0
- package/dist/math.d.mts +96 -0
- package/dist/math.mjs +84 -0
- package/dist/media-query.d.mts +3 -1
- package/dist/media-query.mjs +5 -3
- package/dist/mouse-in-element.d.mts +49 -0
- package/dist/mouse-in-element.mjs +66 -0
- package/dist/mouse.d.mts +77 -0
- package/dist/mouse.mjs +100 -0
- package/dist/mutation-observer.d.mts +98 -0
- package/dist/mutation-observer.mjs +69 -0
- package/dist/network.d.mts +96 -0
- package/dist/network.mjs +117 -0
- package/dist/on-click-outside.d.mts +69 -0
- package/dist/on-click-outside.mjs +115 -0
- package/dist/on-key-stroke.d.mts +71 -0
- package/dist/on-key-stroke.mjs +79 -0
- package/dist/on-long-press.d.mts +82 -0
- package/dist/on-long-press.mjs +105 -0
- package/dist/on-start-typing.d.mts +44 -0
- package/dist/on-start-typing.mjs +61 -0
- package/dist/page-leave.d.mts +26 -0
- package/dist/page-leave.mjs +40 -0
- package/dist/parent-element.d.mts +16 -0
- package/dist/parent-element.mjs +27 -0
- package/dist/pinch.d.mts +73 -0
- package/dist/pinch.mjs +138 -0
- package/dist/pointer-lock.d.mts +79 -0
- package/dist/pointer-lock.mjs +126 -0
- package/dist/pointer.d.mts +78 -0
- package/dist/pointer.mjs +95 -0
- package/dist/preferences.d.mts +55 -0
- package/dist/preferences.mjs +63 -0
- package/dist/preferred-languages.d.mts +43 -0
- package/dist/preferred-languages.mjs +44 -0
- package/dist/reactify.d.mts +28 -0
- package/dist/reactify.mjs +7 -0
- package/dist/ref-auto-reset.d.mts +47 -0
- package/dist/ref-auto-reset.mjs +70 -0
- package/dist/ref-debounced.d.mts +29 -0
- package/dist/ref-debounced.mjs +29 -0
- package/dist/ref-default.d.mts +27 -0
- package/dist/ref-default.mjs +33 -0
- package/dist/resize-observer.d.mts +96 -0
- package/dist/resize-observer.mjs +111 -0
- package/dist/resolver.d.mts +124 -0
- package/dist/resolver.mjs +138 -0
- package/dist/retry-async.d.mts +2 -2
- package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
- package/dist/retry-delay.d.mts +1 -72
- package/dist/screen-orientation.d.mts +77 -0
- package/dist/screen-orientation.mjs +74 -0
- package/dist/scroll-lock.d.mts +37 -0
- package/dist/scroll-lock.mjs +50 -0
- package/dist/scroll.d.mts +158 -0
- package/dist/scroll.mjs +172 -0
- package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
- package/dist/standard-schema.d.mts +2 -0
- package/dist/standard-schema.mjs +60 -0
- package/dist/swipe.d.mts +125 -0
- package/dist/swipe.mjs +225 -0
- package/dist/sync-ref.d.mts +80 -0
- package/dist/sync-ref.mjs +43 -0
- package/dist/text-selection.d.mts +46 -0
- package/dist/text-selection.mjs +62 -0
- package/dist/textarea-autosize.d.mts +58 -0
- package/dist/textarea-autosize.mjs +54 -0
- package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
- package/dist/timeout-scheduler.d.mts +1 -17
- package/dist/to-reactive.d.mts +26 -0
- package/dist/to-reactive.mjs +46 -0
- package/dist/transition.d.mts +125 -0
- package/dist/transition.mjs +266 -0
- package/dist/until.d.mts +177 -0
- package/dist/until.mjs +111 -0
- package/dist/use-array.d.mts +112 -0
- package/dist/use-array.mjs +90 -0
- package/dist/use-async-queue.d.mts +109 -0
- package/dist/use-async-queue.mjs +96 -0
- package/dist/use-async-state.d.mts +86 -0
- package/dist/use-async-state.mjs +41 -0
- package/dist/use-barcode-detector.d.mts +159 -0
- package/dist/use-barcode-detector.mjs +143 -0
- package/dist/use-bluetooth.d.mts +164 -0
- package/dist/use-bluetooth.mjs +183 -0
- package/dist/use-broadcast-channel.d.mts +115 -0
- package/dist/use-broadcast-channel.mjs +121 -0
- package/dist/use-builtin-ai.d.mts +342 -0
- package/dist/use-builtin-ai.mjs +261 -0
- package/dist/use-clipboard.d.mts +169 -0
- package/dist/use-clipboard.mjs +226 -0
- package/dist/use-compression-stream.d.mts +173 -0
- package/dist/use-compression-stream.mjs +166 -0
- package/dist/use-confirm-dialog.d.mts +70 -0
- package/dist/use-confirm-dialog.mjs +57 -0
- package/dist/use-contact-picker.d.mts +117 -0
- package/dist/use-contact-picker.mjs +103 -0
- package/dist/use-cookie.d.mts +196 -0
- package/dist/use-cookie.mjs +259 -0
- package/dist/use-countdown.d.mts +85 -0
- package/dist/use-countdown.mjs +74 -0
- package/dist/use-css-var.d.mts +96 -0
- package/dist/use-css-var.mjs +104 -0
- package/dist/use-cycle-list.d.mts +76 -0
- package/dist/use-cycle-list.mjs +39 -0
- package/dist/use-date-format.d.mts +103 -0
- package/dist/use-date-format.mjs +147 -0
- package/dist/use-date-time-format.d.mts +75 -0
- package/dist/use-date-time-format.mjs +53 -0
- package/dist/use-debounced.d.mts +1 -1
- package/dist/use-display-media.d.mts +62 -0
- package/dist/use-display-media.mjs +46 -0
- package/dist/use-display-names.d.mts +75 -0
- package/dist/use-display-names.mjs +52 -0
- package/dist/use-document-title.d.mts +88 -0
- package/dist/use-document-title.mjs +100 -0
- package/dist/use-drop-zone.d.mts +128 -0
- package/dist/use-drop-zone.mjs +154 -0
- package/dist/use-event-source.d.mts +184 -0
- package/dist/use-event-source.mjs +226 -0
- package/dist/use-eye-dropper.d.mts +79 -0
- package/dist/use-eye-dropper.mjs +68 -0
- package/dist/use-favicon.d.mts +78 -0
- package/dist/use-favicon.mjs +68 -0
- package/dist/use-fetch.d.mts +230 -0
- package/dist/use-fetch.mjs +263 -0
- package/dist/use-field.d.mts +107 -0
- package/dist/use-field.mjs +117 -0
- package/dist/use-file-dialog.d.mts +139 -0
- package/dist/use-file-dialog.mjs +101 -0
- package/dist/use-file-system-access.d.mts +184 -0
- package/dist/use-file-system-access.mjs +151 -0
- package/dist/use-form-field-props.d.mts +235 -0
- package/dist/use-form-field-props.mjs +164 -0
- package/dist/use-form.d.mts +324 -0
- package/dist/use-form.mjs +482 -0
- package/dist/use-fullscreen.d.mts +104 -0
- package/dist/use-fullscreen.mjs +95 -0
- package/dist/use-gamepad.d.mts +242 -0
- package/dist/use-gamepad.mjs +218 -0
- package/dist/use-hid.d.mts +160 -0
- package/dist/use-hid.mjs +156 -0
- package/dist/use-id-generator.d.mts +44 -0
- package/dist/use-id-generator.mjs +38 -0
- package/dist/use-image.d.mts +125 -0
- package/dist/use-image.mjs +109 -0
- package/dist/use-indexed-db.d.mts +207 -0
- package/dist/use-indexed-db.mjs +251 -0
- package/dist/use-interval-BA55gTHT.d.mts +140 -0
- package/dist/use-interval.d.mts +2 -0
- package/dist/use-interval.mjs +100 -0
- package/dist/use-list-format.d.mts +60 -0
- package/dist/use-list-format.mjs +40 -0
- package/dist/use-machine.d.mts +90 -0
- package/dist/use-machine.mjs +78 -0
- package/dist/use-map.d.mts +90 -0
- package/dist/use-map.mjs +70 -0
- package/dist/use-media-controls.d.mts +198 -0
- package/dist/use-media-controls.mjs +264 -0
- package/dist/use-memoize.d.mts +73 -0
- package/dist/use-memoize.mjs +28 -0
- package/dist/use-mounted.d.mts +24 -0
- package/dist/use-mounted.mjs +29 -0
- package/dist/use-navigation-api.d.mts +360 -0
- package/dist/use-navigation-api.mjs +231 -0
- package/dist/use-notification.d.mts +139 -0
- package/dist/use-notification.mjs +131 -0
- package/dist/use-now.d.mts +137 -0
- package/dist/use-now.mjs +44 -0
- package/dist/use-number-format.d.mts +73 -0
- package/dist/use-number-format.mjs +58 -0
- package/dist/use-object-url.d.mts +47 -0
- package/dist/use-object-url.mjs +54 -0
- package/dist/use-offset-pagination.d.mts +91 -0
- package/dist/use-offset-pagination.mjs +80 -0
- package/dist/use-payment-request.d.mts +239 -0
- package/dist/use-payment-request.mjs +206 -0
- package/dist/use-performance-observer.d.mts +285 -0
- package/dist/use-performance-observer.mjs +132 -0
- package/dist/use-permission.d.mts +99 -0
- package/dist/use-permission.mjs +92 -0
- package/dist/use-plural-rules.d.mts +79 -0
- package/dist/use-plural-rules.mjs +59 -0
- package/dist/use-push-subscription.d.mts +154 -0
- package/dist/use-push-subscription.mjs +146 -0
- package/dist/use-queue.d.mts +89 -0
- package/dist/use-queue.mjs +116 -0
- package/dist/use-raf-fn.d.mts +87 -0
- package/dist/use-raf-fn.mjs +99 -0
- package/dist/use-relative-time-format.d.mts +111 -0
- package/dist/use-relative-time-format.mjs +119 -0
- package/dist/use-request-idle-callback.d.mts +122 -0
- package/dist/use-request-idle-callback.mjs +147 -0
- package/dist/use-route-query.d.mts +149 -0
- package/dist/use-route-query.mjs +86 -0
- package/dist/use-scheduler-post-task.d.mts +156 -0
- package/dist/use-scheduler-post-task.mjs +182 -0
- package/dist/use-screen-details.d.mts +205 -0
- package/dist/use-screen-details.mjs +188 -0
- package/dist/use-script-tag.d.mts +162 -0
- package/dist/use-script-tag.mjs +171 -0
- package/dist/use-segmenter.d.mts +78 -0
- package/dist/use-segmenter.mjs +66 -0
- package/dist/use-selection.d.mts +125 -0
- package/dist/use-selection.mjs +77 -0
- package/dist/use-serial.d.mts +165 -0
- package/dist/use-serial.mjs +205 -0
- package/dist/use-service-worker.d.mts +177 -0
- package/dist/use-service-worker.mjs +178 -0
- package/dist/use-set.d.mts +96 -0
- package/dist/use-set.mjs +74 -0
- package/dist/use-share.d.mts +92 -0
- package/dist/use-share.mjs +99 -0
- package/dist/use-sorted-locale.d.mts +62 -0
- package/dist/use-sorted-locale.mjs +52 -0
- package/dist/use-sorted.d.mts +29 -0
- package/dist/use-sorted.mjs +14 -0
- package/dist/use-speech-recognition.d.mts +150 -0
- package/dist/use-speech-recognition.mjs +168 -0
- package/dist/use-speech-synthesis.d.mts +148 -0
- package/dist/use-speech-synthesis.mjs +152 -0
- package/dist/use-stack.d.mts +83 -0
- package/dist/use-stack.mjs +93 -0
- package/dist/use-stepper.d.mts +79 -0
- package/dist/use-stepper.mjs +52 -0
- package/dist/use-storage-estimate.d.mts +151 -0
- package/dist/use-storage-estimate.mjs +170 -0
- package/dist/use-storage.d.mts +214 -0
- package/dist/use-storage.mjs +415 -0
- package/dist/use-style-tag.d.mts +102 -0
- package/dist/use-style-tag.mjs +91 -0
- package/dist/use-supported.d.mts +23 -0
- package/dist/use-supported.mjs +26 -0
- package/dist/use-throttled.d.mts +1 -1
- package/dist/use-time-ago.d.mts +163 -0
- package/dist/use-time-ago.mjs +95 -0
- package/dist/use-timeout.d.mts +122 -0
- package/dist/use-timeout.mjs +65 -0
- package/dist/use-url-hash.d.mts +88 -0
- package/dist/use-url-hash.mjs +145 -0
- package/dist/use-url-search-params.d.mts +223 -0
- package/dist/use-url-search-params.mjs +295 -0
- package/dist/use-usb.d.mts +212 -0
- package/dist/use-usb.mjs +137 -0
- package/dist/use-user-activation.d.mts +83 -0
- package/dist/use-user-activation.mjs +113 -0
- package/dist/use-user-media.d.mts +194 -0
- package/dist/use-user-media.mjs +214 -0
- package/dist/use-v-model.d.mts +113 -0
- package/dist/use-v-model.mjs +40 -0
- package/dist/use-vibrate.d.mts +81 -0
- package/dist/use-vibrate.mjs +90 -0
- package/dist/use-view-transition.d.mts +106 -0
- package/dist/use-view-transition.mjs +101 -0
- package/dist/use-visual-viewport.d.mts +105 -0
- package/dist/use-visual-viewport.mjs +104 -0
- package/dist/use-wake-lock.d.mts +96 -0
- package/dist/use-wake-lock.mjs +106 -0
- package/dist/use-web-authn.d.mts +404 -0
- package/dist/use-web-authn.mjs +323 -0
- package/dist/use-web-locks.d.mts +180 -0
- package/dist/use-web-locks.mjs +136 -0
- package/dist/use-web-midi.d.mts +148 -0
- package/dist/use-web-midi.mjs +140 -0
- package/dist/use-web-vitals.d.mts +142 -0
- package/dist/use-web-vitals.mjs +248 -0
- package/dist/use-websocket.d.mts +218 -0
- package/dist/use-websocket.mjs +257 -0
- package/dist/use-worker-fn.d.mts +119 -0
- package/dist/use-worker-fn.mjs +162 -0
- package/dist/virtual-list.d.mts +105 -0
- package/dist/virtual-list.mjs +128 -0
- package/dist/watch-debounced.d.mts +84 -0
- package/dist/watch-debounced.mjs +84 -0
- package/dist/watch-ignorable.d.mts +47 -0
- package/dist/watch-ignorable.mjs +61 -0
- package/dist/watch-once.d.mts +29 -0
- package/dist/watch-once.mjs +10 -0
- package/dist/watch-pausable.d.mts +51 -0
- package/dist/watch-pausable.mjs +23 -0
- package/dist/watch-source.d.mts +29 -0
- package/dist/watch-source.mjs +1 -0
- package/dist/watch-throttled.d.mts +70 -0
- package/dist/watch-throttled.mjs +94 -0
- package/dist/whenever.d.mts +39 -0
- package/dist/whenever.mjs +41 -0
- package/dist/window-size.d.mts +87 -0
- package/dist/window-size.mjs +65 -0
- package/package.json +846 -5
- package/registry/files/abort-signal.ts +292 -0
- package/registry/files/active-element.ts +93 -0
- package/registry/files/animate.ts +322 -0
- package/registry/files/async-resource.ts +190 -0
- package/registry/files/battery.ts +166 -0
- package/registry/files/breakpoints.ts +166 -0
- package/registry/files/capability.ts +171 -0
- package/registry/files/color-mode.ts +274 -0
- package/registry/files/computed-async.ts +123 -0
- package/registry/files/computed-with-control.ts +80 -0
- package/registry/files/create-event-hook.ts +139 -0
- package/registry/files/create-global-state.ts +34 -0
- package/registry/files/create-injection-state.ts +75 -0
- package/registry/files/create-shared-composable.ts +74 -0
- package/registry/files/device-motion.ts +152 -0
- package/registry/files/device-orientation.ts +168 -0
- package/registry/files/device-pixel-ratio.ts +100 -0
- package/registry/files/disposal-scope.ts +201 -0
- package/registry/files/document-visibility.ts +152 -0
- package/registry/files/draggable.ts +273 -0
- package/registry/files/element-bounding.ts +175 -0
- package/registry/files/element-by-point.ts +149 -0
- package/registry/files/element-hover.ts +104 -0
- package/registry/files/element-ref.ts +58 -0
- package/registry/files/element-target.ts +99 -0
- package/registry/files/event-listener.ts +188 -0
- package/registry/files/focus.ts +181 -0
- package/registry/files/fps.ts +133 -0
- package/registry/files/geolocation.ts +214 -0
- package/registry/files/i18n.ts +524 -0
- package/registry/files/icu-message.ts +701 -0
- package/registry/files/idle.ts +176 -0
- package/registry/files/infinite-scroll.ts +135 -0
- package/registry/files/intersection-observer.ts +261 -0
- package/registry/files/locale.ts +148 -0
- package/registry/files/magic-keys.ts +298 -0
- package/registry/files/math.ts +175 -0
- package/registry/files/media-query.ts +102 -0
- package/registry/files/mouse-in-element.ts +107 -0
- package/registry/files/mouse.ts +167 -0
- package/registry/files/mutation-observer.ts +183 -0
- package/registry/files/network.ts +229 -0
- package/registry/files/on-click-outside.ts +178 -0
- package/registry/files/on-key-stroke.ts +135 -0
- package/registry/files/on-long-press.ts +188 -0
- package/registry/files/on-start-typing.ts +88 -0
- package/registry/files/page-leave.ts +57 -0
- package/registry/files/parent-element.ts +29 -0
- package/registry/files/pinch.ts +187 -0
- package/registry/files/pointer-lock.ts +232 -0
- package/registry/files/pointer.ts +153 -0
- package/registry/files/preferences.ts +98 -0
- package/registry/files/preferred-languages.ts +88 -0
- package/registry/files/reactify.ts +39 -0
- package/registry/files/ref-auto-reset.ts +102 -0
- package/registry/files/ref-debounced.ts +34 -0
- package/registry/files/ref-default.ts +35 -0
- package/registry/files/resize-observer.ts +220 -0
- package/registry/files/retry-async.ts +261 -0
- package/registry/files/retry-delay.ts +132 -0
- package/registry/files/scope.ts +21 -0
- package/registry/files/screen-orientation.ts +165 -0
- package/registry/files/scroll-lock.ts +80 -0
- package/registry/files/scroll.ts +338 -0
- package/registry/files/standard-schema.ts +163 -0
- package/registry/files/swipe.ts +321 -0
- package/registry/files/sync-ref.ts +166 -0
- package/registry/files/temporal.ts +182 -0
- package/registry/files/text-selection.ts +110 -0
- package/registry/files/textarea-autosize.ts +114 -0
- package/registry/files/timeout-scheduler.ts +16 -0
- package/registry/files/to-reactive.ts +44 -0
- package/registry/files/transition.ts +271 -0
- package/registry/files/until.ts +352 -0
- package/registry/files/use-array.ts +201 -0
- package/registry/files/use-async-queue.ts +278 -0
- package/registry/files/use-async-state.ts +139 -0
- package/registry/files/use-barcode-detector.ts +321 -0
- package/registry/files/use-bluetooth.ts +409 -0
- package/registry/files/use-broadcast-channel.ts +250 -0
- package/registry/files/use-builtin-ai.ts +674 -0
- package/registry/files/use-clipboard.ts +425 -0
- package/registry/files/use-compression-stream.ts +364 -0
- package/registry/files/use-confirm-dialog.ts +137 -0
- package/registry/files/use-contact-picker.ts +246 -0
- package/registry/files/use-cookie.ts +500 -0
- package/registry/files/use-countdown.ts +161 -0
- package/registry/files/use-counter.ts +147 -0
- package/registry/files/use-css-var.ts +191 -0
- package/registry/files/use-cycle-list.ts +136 -0
- package/registry/files/use-date-format.ts +281 -0
- package/registry/files/use-date-time-format.ts +113 -0
- package/registry/files/use-debounced.ts +163 -0
- package/registry/files/use-display-media.ts +89 -0
- package/registry/files/use-display-names.ts +122 -0
- package/registry/files/use-document-title.ts +196 -0
- package/registry/files/use-drop-zone.ts +287 -0
- package/registry/files/use-event-source.ts +470 -0
- package/registry/files/use-eye-dropper.ts +134 -0
- package/registry/files/use-favicon.ts +140 -0
- package/registry/files/use-fetch.ts +578 -0
- package/registry/files/use-field.ts +247 -0
- package/registry/files/use-file-dialog.ts +257 -0
- package/registry/files/use-file-system-access.ts +383 -0
- package/registry/files/use-form-field-props.ts +381 -0
- package/registry/files/use-form.ts +980 -0
- package/registry/files/use-fullscreen.ts +214 -0
- package/registry/files/use-gamepad.ts +463 -0
- package/registry/files/use-hid.ts +359 -0
- package/registry/files/use-history.ts +231 -0
- package/registry/files/use-id-generator.ts +61 -0
- package/registry/files/use-image.ts +253 -0
- package/registry/files/use-indexed-db.ts +508 -0
- package/registry/files/use-interval.ts +253 -0
- package/registry/files/use-list-format.ts +85 -0
- package/registry/files/use-machine.ts +171 -0
- package/registry/files/use-map.ts +145 -0
- package/registry/files/use-media-controls.ts +545 -0
- package/registry/files/use-memoize.ts +118 -0
- package/registry/files/use-mounted.ts +30 -0
- package/registry/files/use-navigation-api.ts +641 -0
- package/registry/files/use-notification.ts +285 -0
- package/registry/files/use-now.ts +194 -0
- package/registry/files/use-number-format.ts +120 -0
- package/registry/files/use-object-url.ts +87 -0
- package/registry/files/use-offset-pagination.ts +168 -0
- package/registry/files/use-payment-request.ts +465 -0
- package/registry/files/use-performance-observer.ts +469 -0
- package/registry/files/use-permission.ts +220 -0
- package/registry/files/use-plural-rules.ts +134 -0
- package/registry/files/use-previous.ts +62 -0
- package/registry/files/use-push-subscription.ts +352 -0
- package/registry/files/use-queue.ts +197 -0
- package/registry/files/use-raf-fn.ts +176 -0
- package/registry/files/use-relative-time-format.ts +201 -0
- package/registry/files/use-request-idle-callback.ts +278 -0
- package/registry/files/use-route-query.ts +300 -0
- package/registry/files/use-scheduler-post-task.ts +397 -0
- package/registry/files/use-screen-details.ts +393 -0
- package/registry/files/use-script-tag.ts +341 -0
- package/registry/files/use-segmenter.ts +147 -0
- package/registry/files/use-selection.ts +233 -0
- package/registry/files/use-serial.ts +404 -0
- package/registry/files/use-service-worker.ts +413 -0
- package/registry/files/use-set.ts +154 -0
- package/registry/files/use-share.ts +168 -0
- package/registry/files/use-sorted-locale.ts +130 -0
- package/registry/files/use-sorted.ts +49 -0
- package/registry/files/use-speech-recognition.ts +357 -0
- package/registry/files/use-speech-synthesis.ts +333 -0
- package/registry/files/use-stack.ts +164 -0
- package/registry/files/use-stepper.ts +166 -0
- package/registry/files/use-storage-estimate.ts +352 -0
- package/registry/files/use-storage.ts +635 -0
- package/registry/files/use-style-tag.ts +200 -0
- package/registry/files/use-supported.ts +26 -0
- package/registry/files/use-throttled.ts +215 -0
- package/registry/files/use-time-ago.ts +276 -0
- package/registry/files/use-timeout.ts +218 -0
- package/registry/files/use-toggle.ts +54 -0
- package/registry/files/use-url-hash.ts +280 -0
- package/registry/files/use-url-search-params.ts +497 -0
- package/registry/files/use-usb.ts +395 -0
- package/registry/files/use-user-activation.ts +215 -0
- package/registry/files/use-user-media.ts +422 -0
- package/registry/files/use-v-model.ts +210 -0
- package/registry/files/use-vibrate.ts +174 -0
- package/registry/files/use-view-transition.ts +229 -0
- package/registry/files/use-visual-viewport.ts +228 -0
- package/registry/files/use-wake-lock.ts +206 -0
- package/registry/files/use-web-authn.ts +793 -0
- package/registry/files/use-web-locks.ts +363 -0
- package/registry/files/use-web-midi.ts +306 -0
- package/registry/files/use-web-vitals.ts +409 -0
- package/registry/files/use-websocket.ts +553 -0
- package/registry/files/use-worker-fn.ts +306 -0
- package/registry/files/virtual-list.ts +230 -0
- package/registry/files/watch-debounced.ts +206 -0
- package/registry/files/watch-ignorable.ts +128 -0
- package/registry/files/watch-once.ts +46 -0
- package/registry/files/watch-pausable.ts +93 -0
- package/registry/files/watch-source.ts +51 -0
- package/registry/files/watch-throttled.ts +201 -0
- package/registry/files/whenever.ts +70 -0
- package/registry/files/window-size.ts +151 -0
- package/registry/registry.json +5792 -0
- package/dist/catalog-D2AL3xYl.d.mts +0 -523
- package/dist/catalog-D5SYCsgW.mjs +0 -549
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
|
|
2
|
+
import { PermissionQueryState, PermissionsHost } from "./use-permission.mjs";
|
|
3
|
+
import { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/use-clipboard.d.ts
|
|
6
|
+
/** One clipboard entry, compatible with the DOM `ClipboardItem`. */
|
|
7
|
+
interface ClipboardItemLike {
|
|
8
|
+
/** MIME types available in this item. */
|
|
9
|
+
readonly types: readonly string[];
|
|
10
|
+
/** Read the item's data for one of its `types`. */
|
|
11
|
+
getType(type: string): Promise<Blob>;
|
|
12
|
+
}
|
|
13
|
+
/** Minimal async Clipboard API consumed by {@link useClipboard}. */
|
|
14
|
+
interface ClipboardLike {
|
|
15
|
+
/** Read plain text. */
|
|
16
|
+
readText(): Promise<string>;
|
|
17
|
+
/** Write plain text. */
|
|
18
|
+
writeText(text: string): Promise<void>;
|
|
19
|
+
/** Read rich items. Absent in older browsers. */
|
|
20
|
+
read?(): Promise<readonly ClipboardItemLike[]>;
|
|
21
|
+
/** Write rich items. Absent in older browsers. */
|
|
22
|
+
write?(items: readonly ClipboardItemLike[]): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/** Capabilities used by {@link useClipboard}; every member is optional. */
|
|
25
|
+
interface ClipboardHost {
|
|
26
|
+
/** Async Clipboard API (`navigator.clipboard`). */
|
|
27
|
+
readonly clipboard?: ClipboardLike | null;
|
|
28
|
+
/** Permissions API used to report read/write permission state. */
|
|
29
|
+
readonly permissions?: PermissionsHost | null;
|
|
30
|
+
/**
|
|
31
|
+
* Synchronous legacy copy used when the async API is missing or refuses.
|
|
32
|
+
* Returns whether the copy succeeded.
|
|
33
|
+
*/
|
|
34
|
+
readonly legacyCopy?: ((text: string) => boolean) | null;
|
|
35
|
+
/** Target of `copy`/`cut` events observed when `listen` is enabled. */
|
|
36
|
+
readonly events?: EventTarget | null;
|
|
37
|
+
}
|
|
38
|
+
/** Why a clipboard operation did not complete. */
|
|
39
|
+
type ClipboardFailureReason = "permission-denied" | "unsupported" | "failed";
|
|
40
|
+
/** Successful clipboard operation. */
|
|
41
|
+
interface ClipboardSuccess<Value> {
|
|
42
|
+
/** The operation succeeded. */
|
|
43
|
+
readonly status: "success";
|
|
44
|
+
/** Value that was read or written. */
|
|
45
|
+
readonly value: Value;
|
|
46
|
+
/** Mechanism that performed the operation. */
|
|
47
|
+
readonly method: "clipboard" | "legacy";
|
|
48
|
+
}
|
|
49
|
+
/** Failed clipboard operation. */
|
|
50
|
+
interface ClipboardFailure {
|
|
51
|
+
/** Why the operation failed. */
|
|
52
|
+
readonly status: ClipboardFailureReason;
|
|
53
|
+
/** Exact error thrown by the host, when one was thrown. */
|
|
54
|
+
readonly error: unknown;
|
|
55
|
+
}
|
|
56
|
+
/** Discriminated result of a clipboard operation. */
|
|
57
|
+
type ClipboardResult<Value> = ClipboardSuccess<Value> | ClipboardFailure;
|
|
58
|
+
/** Options for {@link useClipboard}. */
|
|
59
|
+
interface UseClipboardOptions {
|
|
60
|
+
/**
|
|
61
|
+
* Clipboard capabilities for alternate runtimes and tests.
|
|
62
|
+
*
|
|
63
|
+
* @default navigator.clipboard, navigator.permissions, and an
|
|
64
|
+
* `execCommand("copy")` fallback when a browser window exists
|
|
65
|
+
*/
|
|
66
|
+
readonly host?: MaybeRefOrGetter<ClipboardHost | null | undefined>;
|
|
67
|
+
/**
|
|
68
|
+
* Fall back to `document.execCommand("copy")` when the async API is
|
|
69
|
+
* unavailable or rejects a write.
|
|
70
|
+
*
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
readonly legacy?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Milliseconds for which `copied` stays `true` after a successful write.
|
|
76
|
+
*
|
|
77
|
+
* @default 1500
|
|
78
|
+
*/
|
|
79
|
+
readonly copiedDuringMs?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Timer host used to reset `copied`.
|
|
82
|
+
*
|
|
83
|
+
* @default globalThis timer functions
|
|
84
|
+
*/
|
|
85
|
+
readonly scheduler?: TimeoutScheduler;
|
|
86
|
+
/**
|
|
87
|
+
* Update `text` by reading the clipboard after every `copy`/`cut` event.
|
|
88
|
+
*
|
|
89
|
+
* @default false
|
|
90
|
+
*/
|
|
91
|
+
readonly listen?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Query the `clipboard-read` / `clipboard-write` permissions.
|
|
94
|
+
*
|
|
95
|
+
* @default true
|
|
96
|
+
*/
|
|
97
|
+
readonly queryPermissions?: boolean;
|
|
98
|
+
}
|
|
99
|
+
/** Reactive state and actions returned by {@link useClipboard}. */
|
|
100
|
+
interface ClipboardControls {
|
|
101
|
+
/** Whether the async Clipboard API or the legacy fallback is available. */
|
|
102
|
+
readonly supported: ComputedRef<boolean>;
|
|
103
|
+
/** Text most recently copied or read. */
|
|
104
|
+
readonly text: Readonly<Ref<string>>;
|
|
105
|
+
/** `true` for `copiedDuringMs` after a successful copy. */
|
|
106
|
+
readonly copied: Readonly<Ref<boolean>>;
|
|
107
|
+
/** Most recent failure, cleared by the next success. */
|
|
108
|
+
readonly error: Readonly<ShallowRef<ClipboardFailure | undefined>>;
|
|
109
|
+
/** State of the `clipboard-read` permission. */
|
|
110
|
+
readonly readPermission: Readonly<Ref<PermissionQueryState>>;
|
|
111
|
+
/** State of the `clipboard-write` permission. */
|
|
112
|
+
readonly writePermission: Readonly<Ref<PermissionQueryState>>;
|
|
113
|
+
/**
|
|
114
|
+
* Copy text, falling back to the legacy mechanism when allowed.
|
|
115
|
+
*
|
|
116
|
+
* @param text Text to copy.
|
|
117
|
+
* @returns The discriminated outcome; never rejects.
|
|
118
|
+
*/
|
|
119
|
+
readonly copy: (text: string) => Promise<ClipboardResult<string>>;
|
|
120
|
+
/**
|
|
121
|
+
* Read plain text.
|
|
122
|
+
*
|
|
123
|
+
* @returns The discriminated outcome; never rejects.
|
|
124
|
+
*/
|
|
125
|
+
readonly readText: () => Promise<ClipboardResult<string>>;
|
|
126
|
+
/**
|
|
127
|
+
* Write rich clipboard items.
|
|
128
|
+
*
|
|
129
|
+
* @param items Items to write.
|
|
130
|
+
* @returns The discriminated outcome; never rejects.
|
|
131
|
+
*/
|
|
132
|
+
readonly writeItems: (items: readonly ClipboardItemLike[]) => Promise<ClipboardResult<readonly ClipboardItemLike[]>>;
|
|
133
|
+
/**
|
|
134
|
+
* Read rich clipboard items.
|
|
135
|
+
*
|
|
136
|
+
* @returns The discriminated outcome; never rejects.
|
|
137
|
+
*/
|
|
138
|
+
readonly readItems: () => Promise<ClipboardResult<readonly ClipboardItemLike[]>>;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Permission-aware clipboard access with a legacy copy fallback.
|
|
142
|
+
*
|
|
143
|
+
* Text and rich items go through the async Clipboard API. When it is
|
|
144
|
+
* missing (insecure contexts, older engines) or refuses a write, `copy`
|
|
145
|
+
* falls back to `document.execCommand("copy")` unless `legacy` is false.
|
|
146
|
+
* Every action resolves to a discriminated {@link ClipboardResult}
|
|
147
|
+
* (`"success"`, `"permission-denied"`, `"unsupported"`, `"failed"`) instead
|
|
148
|
+
* of rejecting, and the read/write permission states are exposed reactively.
|
|
149
|
+
*
|
|
150
|
+
* Server rendering: nothing is read and no permission is queried; `text` is
|
|
151
|
+
* empty and `supported` is false. The `copied` reset timer and the optional
|
|
152
|
+
* `copy`/`cut` listeners are released when the owning scope stops.
|
|
153
|
+
*
|
|
154
|
+
* Inside a component the host is read after mounting, so hydration renders
|
|
155
|
+
* the server fallback first and never mismatches.
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* const { copy, copied } = useClipboard();
|
|
160
|
+
* await copy("npm i @vizejs/composable");
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @param options Capabilities, fallback policy, and feedback timing.
|
|
164
|
+
* @default options {}
|
|
165
|
+
* @returns Reactive clipboard state and actions.
|
|
166
|
+
*/
|
|
167
|
+
declare function useClipboard(options?: UseClipboardOptions): ClipboardControls;
|
|
168
|
+
//#endregion
|
|
169
|
+
export { ClipboardControls, ClipboardFailure, ClipboardFailureReason, ClipboardHost, ClipboardItemLike, ClipboardLike, ClipboardResult, ClipboardSuccess, UseClipboardOptions, useClipboard };
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { usePermission } from "./use-permission.mjs";
|
|
3
|
+
import { computed, hasInjectionContext, readonly, ref, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
4
|
+
//#region src/use-clipboard.ts
|
|
5
|
+
const defaultScheduler = {
|
|
6
|
+
setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
|
|
7
|
+
clearTimeout: (handle) => {
|
|
8
|
+
globalThis.clearTimeout(handle);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
function legacyDocumentCopy(document) {
|
|
12
|
+
return (text) => {
|
|
13
|
+
const area = document.createElement("textarea");
|
|
14
|
+
area.value = text;
|
|
15
|
+
area.setAttribute("readonly", "");
|
|
16
|
+
area.style.position = "fixed";
|
|
17
|
+
area.style.opacity = "0";
|
|
18
|
+
area.style.pointerEvents = "none";
|
|
19
|
+
document.body.append(area);
|
|
20
|
+
area.select();
|
|
21
|
+
try {
|
|
22
|
+
return document.execCommand("copy");
|
|
23
|
+
} catch {
|
|
24
|
+
return false;
|
|
25
|
+
} finally {
|
|
26
|
+
area.remove();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function browserClipboardHost() {
|
|
31
|
+
if (typeof window === "undefined") return void 0;
|
|
32
|
+
const { navigator, document } = window;
|
|
33
|
+
return {
|
|
34
|
+
clipboard: navigator.clipboard ?? null,
|
|
35
|
+
permissions: navigator.permissions ?? null,
|
|
36
|
+
legacyCopy: typeof document.execCommand === "function" ? legacyDocumentCopy(document) : null,
|
|
37
|
+
events: document
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function isPermissionError(error) {
|
|
41
|
+
return typeof error === "object" && error !== null && "name" in error && (error.name === "NotAllowedError" || error.name === "SecurityError");
|
|
42
|
+
}
|
|
43
|
+
function failure(error) {
|
|
44
|
+
return {
|
|
45
|
+
status: isPermissionError(error) ? "permission-denied" : "failed",
|
|
46
|
+
error
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const unsupported = {
|
|
50
|
+
status: "unsupported",
|
|
51
|
+
error: void 0
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Permission-aware clipboard access with a legacy copy fallback.
|
|
55
|
+
*
|
|
56
|
+
* Text and rich items go through the async Clipboard API. When it is
|
|
57
|
+
* missing (insecure contexts, older engines) or refuses a write, `copy`
|
|
58
|
+
* falls back to `document.execCommand("copy")` unless `legacy` is false.
|
|
59
|
+
* Every action resolves to a discriminated {@link ClipboardResult}
|
|
60
|
+
* (`"success"`, `"permission-denied"`, `"unsupported"`, `"failed"`) instead
|
|
61
|
+
* of rejecting, and the read/write permission states are exposed reactively.
|
|
62
|
+
*
|
|
63
|
+
* Server rendering: nothing is read and no permission is queried; `text` is
|
|
64
|
+
* empty and `supported` is false. The `copied` reset timer and the optional
|
|
65
|
+
* `copy`/`cut` listeners are released when the owning scope stops.
|
|
66
|
+
*
|
|
67
|
+
* Inside a component the host is read after mounting, so hydration renders
|
|
68
|
+
* the server fallback first and never mismatches.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const { copy, copied } = useClipboard();
|
|
73
|
+
* await copy("npm i @vizejs/composable");
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @param options Capabilities, fallback policy, and feedback timing.
|
|
77
|
+
* @default options {}
|
|
78
|
+
* @returns Reactive clipboard state and actions.
|
|
79
|
+
*/
|
|
80
|
+
function useClipboard(options = {}) {
|
|
81
|
+
const copiedDuringMs = options.copiedDuringMs ?? 1500;
|
|
82
|
+
if (!Number.isFinite(copiedDuringMs) || copiedDuringMs < 0) throw new RangeError(`[VIZE_COMPOSE_CLIPBOARD_INVALID_DURATION] copiedDuringMs must be a non-negative finite number; received ${String(copiedDuringMs)}`);
|
|
83
|
+
const scheduler = options.scheduler ?? defaultScheduler;
|
|
84
|
+
const allowLegacy = options.legacy ?? true;
|
|
85
|
+
const text = ref("");
|
|
86
|
+
const copied = ref(false);
|
|
87
|
+
const error = shallowRef(void 0);
|
|
88
|
+
let resetHandle;
|
|
89
|
+
let resetPending = false;
|
|
90
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
91
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
92
|
+
hydrated.value = true;
|
|
93
|
+
});
|
|
94
|
+
const resolveHost = () => options.host === void 0 ? browserClipboardHost() : toValue(options.host) ?? void 0;
|
|
95
|
+
const queryPermissions = options.queryPermissions ?? true;
|
|
96
|
+
const permissionHost = () => queryPermissions ? resolveHost()?.permissions ?? void 0 : void 0;
|
|
97
|
+
const readPermission = usePermission("clipboard-read", { host: permissionHost });
|
|
98
|
+
const writePermission = usePermission("clipboard-write", { host: permissionHost });
|
|
99
|
+
const supported = computed(() => {
|
|
100
|
+
if (!hydrated.value) return false;
|
|
101
|
+
const host = resolveHost();
|
|
102
|
+
return Boolean(host?.clipboard) || Boolean(allowLegacy && host?.legacyCopy);
|
|
103
|
+
});
|
|
104
|
+
const settle = (result) => {
|
|
105
|
+
error.value = result.status === "success" ? void 0 : result;
|
|
106
|
+
return result;
|
|
107
|
+
};
|
|
108
|
+
const markCopied = (value) => {
|
|
109
|
+
text.value = value;
|
|
110
|
+
copied.value = true;
|
|
111
|
+
if (resetPending) scheduler.clearTimeout(resetHandle);
|
|
112
|
+
resetPending = true;
|
|
113
|
+
resetHandle = scheduler.setTimeout(() => {
|
|
114
|
+
resetPending = false;
|
|
115
|
+
copied.value = false;
|
|
116
|
+
}, copiedDuringMs);
|
|
117
|
+
};
|
|
118
|
+
const tryLegacy = (host, value) => {
|
|
119
|
+
if (!allowLegacy || !host.legacyCopy) return void 0;
|
|
120
|
+
try {
|
|
121
|
+
return host.legacyCopy(value) ? {
|
|
122
|
+
status: "success",
|
|
123
|
+
value,
|
|
124
|
+
method: "legacy"
|
|
125
|
+
} : {
|
|
126
|
+
status: "failed",
|
|
127
|
+
error: void 0
|
|
128
|
+
};
|
|
129
|
+
} catch (cause) {
|
|
130
|
+
return failure(cause);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const copy = async (value) => {
|
|
134
|
+
const host = resolveHost();
|
|
135
|
+
if (!host) return settle(unsupported);
|
|
136
|
+
let result;
|
|
137
|
+
if (host.clipboard) try {
|
|
138
|
+
await host.clipboard.writeText(value);
|
|
139
|
+
result = {
|
|
140
|
+
status: "success",
|
|
141
|
+
value,
|
|
142
|
+
method: "clipboard"
|
|
143
|
+
};
|
|
144
|
+
} catch (cause) {
|
|
145
|
+
result = tryLegacy(host, value) ?? failure(cause);
|
|
146
|
+
}
|
|
147
|
+
else result = tryLegacy(host, value) ?? unsupported;
|
|
148
|
+
if (result.status === "success") markCopied(value);
|
|
149
|
+
return settle(result);
|
|
150
|
+
};
|
|
151
|
+
const readText = async () => {
|
|
152
|
+
const clipboard = resolveHost()?.clipboard;
|
|
153
|
+
if (!clipboard) return settle(unsupported);
|
|
154
|
+
try {
|
|
155
|
+
const value = await clipboard.readText();
|
|
156
|
+
text.value = value;
|
|
157
|
+
return settle({
|
|
158
|
+
status: "success",
|
|
159
|
+
value,
|
|
160
|
+
method: "clipboard"
|
|
161
|
+
});
|
|
162
|
+
} catch (cause) {
|
|
163
|
+
return settle(failure(cause));
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
const writeItems = async (items) => {
|
|
167
|
+
const clipboard = resolveHost()?.clipboard;
|
|
168
|
+
if (!clipboard?.write) return settle(unsupported);
|
|
169
|
+
try {
|
|
170
|
+
await clipboard.write(items);
|
|
171
|
+
return settle({
|
|
172
|
+
status: "success",
|
|
173
|
+
value: items,
|
|
174
|
+
method: "clipboard"
|
|
175
|
+
});
|
|
176
|
+
} catch (cause) {
|
|
177
|
+
return settle(failure(cause));
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
const readItems = async () => {
|
|
181
|
+
const clipboard = resolveHost()?.clipboard;
|
|
182
|
+
if (!clipboard?.read) return settle(unsupported);
|
|
183
|
+
try {
|
|
184
|
+
return settle({
|
|
185
|
+
status: "success",
|
|
186
|
+
value: await clipboard.read(),
|
|
187
|
+
method: "clipboard"
|
|
188
|
+
});
|
|
189
|
+
} catch (cause) {
|
|
190
|
+
return settle(failure(cause));
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
if (options.listen ?? false) watch(() => resolveHost()?.events ?? void 0, (events, _previous, onCleanup) => {
|
|
194
|
+
if (!events) return;
|
|
195
|
+
const onCopy = () => {
|
|
196
|
+
readText();
|
|
197
|
+
};
|
|
198
|
+
events.addEventListener("copy", onCopy);
|
|
199
|
+
events.addEventListener("cut", onCopy);
|
|
200
|
+
onCleanup(() => {
|
|
201
|
+
events.removeEventListener("copy", onCopy);
|
|
202
|
+
events.removeEventListener("cut", onCopy);
|
|
203
|
+
});
|
|
204
|
+
}, {
|
|
205
|
+
immediate: true,
|
|
206
|
+
flush: "sync"
|
|
207
|
+
});
|
|
208
|
+
tryOnScopeDispose(() => {
|
|
209
|
+
if (resetPending) scheduler.clearTimeout(resetHandle);
|
|
210
|
+
resetPending = false;
|
|
211
|
+
});
|
|
212
|
+
return {
|
|
213
|
+
supported,
|
|
214
|
+
text: readonly(text),
|
|
215
|
+
copied: readonly(copied),
|
|
216
|
+
error: readonly(error),
|
|
217
|
+
readPermission: readPermission.state,
|
|
218
|
+
writePermission: writePermission.state,
|
|
219
|
+
copy,
|
|
220
|
+
readText,
|
|
221
|
+
writeItems,
|
|
222
|
+
readItems
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
//#endregion
|
|
226
|
+
export { useClipboard };
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRef, Ref, ShallowRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-compression-stream.d.ts
|
|
4
|
+
/** Formats supported by `CompressionStream` and `DecompressionStream`. */
|
|
5
|
+
type CompressionFormatName = "gzip" | "deflate" | "deflate-raw";
|
|
6
|
+
/** Data accepted by {@link compress} and {@link decompress}. */
|
|
7
|
+
type CompressionInput = string | ArrayBuffer | ArrayBufferView | Blob | ReadableStream<BufferSource>;
|
|
8
|
+
/** Transform stream created by a (de)compression constructor. */
|
|
9
|
+
interface CompressionTransformLike {
|
|
10
|
+
/** Transformed output. */
|
|
11
|
+
readonly readable: ReadableStream<Uint8Array>;
|
|
12
|
+
/** Raw input. */
|
|
13
|
+
readonly writable: WritableStream<BufferSource>;
|
|
14
|
+
}
|
|
15
|
+
/** Minimal `CompressionStream` / `DecompressionStream` constructor. */
|
|
16
|
+
type CompressionStreamConstructor = new (format: CompressionFormatName) => CompressionTransformLike;
|
|
17
|
+
/** Options for {@link compress}. */
|
|
18
|
+
interface CompressOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Compression stream constructor.
|
|
21
|
+
*
|
|
22
|
+
* @default window.CompressionStream when it exists
|
|
23
|
+
*/
|
|
24
|
+
readonly CompressionStream?: CompressionStreamConstructor | null | undefined;
|
|
25
|
+
}
|
|
26
|
+
/** Options for {@link decompress} and {@link decompressText}. */
|
|
27
|
+
interface DecompressOptions {
|
|
28
|
+
/**
|
|
29
|
+
* Decompression stream constructor.
|
|
30
|
+
*
|
|
31
|
+
* @default window.DecompressionStream when it exists
|
|
32
|
+
*/
|
|
33
|
+
readonly DecompressionStream?: CompressionStreamConstructor | null | undefined;
|
|
34
|
+
}
|
|
35
|
+
/** Options for {@link useCompressionStream}. */
|
|
36
|
+
interface UseCompressionStreamOptions {
|
|
37
|
+
/**
|
|
38
|
+
* Compression stream constructor. A ref (not a getter) because the host is
|
|
39
|
+
* a constructor function.
|
|
40
|
+
*
|
|
41
|
+
* @default window.CompressionStream when it exists
|
|
42
|
+
*/
|
|
43
|
+
readonly CompressionStream?: MaybeRef<CompressionStreamConstructor | null | undefined>;
|
|
44
|
+
/**
|
|
45
|
+
* Decompression stream constructor.
|
|
46
|
+
*
|
|
47
|
+
* @default window.DecompressionStream when it exists
|
|
48
|
+
*/
|
|
49
|
+
readonly DecompressionStream?: MaybeRef<CompressionStreamConstructor | null | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* Format used when an action is called without one.
|
|
52
|
+
*
|
|
53
|
+
* @default "gzip"
|
|
54
|
+
*/
|
|
55
|
+
readonly format?: CompressionFormatName;
|
|
56
|
+
}
|
|
57
|
+
/** Reactive state and actions returned by {@link useCompressionStream}. */
|
|
58
|
+
interface CompressionStreamControls {
|
|
59
|
+
/** Whether both `CompressionStream` and `DecompressionStream` are available. */
|
|
60
|
+
readonly supported: ComputedRef<boolean>;
|
|
61
|
+
/** Whether an action is in flight. */
|
|
62
|
+
readonly pending: Readonly<Ref<boolean>>;
|
|
63
|
+
/** Most recent failure, cleared by the next successful action. */
|
|
64
|
+
readonly error: Readonly<ShallowRef<unknown>>;
|
|
65
|
+
/**
|
|
66
|
+
* Compress `data`; rejects like {@link compress}.
|
|
67
|
+
*
|
|
68
|
+
* @param data Input data.
|
|
69
|
+
* @param format Compression format.
|
|
70
|
+
* @returns Compressed bytes.
|
|
71
|
+
*/
|
|
72
|
+
readonly compress: (data: CompressionInput, format?: CompressionFormatName) => Promise<Uint8Array<ArrayBuffer>>;
|
|
73
|
+
/**
|
|
74
|
+
* Decompress `data`; rejects like {@link decompress}.
|
|
75
|
+
*
|
|
76
|
+
* @param data Compressed data.
|
|
77
|
+
* @param format Compression format.
|
|
78
|
+
* @returns Decompressed bytes.
|
|
79
|
+
*/
|
|
80
|
+
readonly decompress: (data: CompressionInput, format?: CompressionFormatName) => Promise<Uint8Array<ArrayBuffer>>;
|
|
81
|
+
/**
|
|
82
|
+
* Decompress `data` and decode it as UTF-8.
|
|
83
|
+
*
|
|
84
|
+
* @param data Compressed data.
|
|
85
|
+
* @param format Compression format.
|
|
86
|
+
* @returns Decompressed text.
|
|
87
|
+
*/
|
|
88
|
+
readonly decompressText: (data: CompressionInput, format?: CompressionFormatName) => Promise<string>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Compress data with the Compression Streams API.
|
|
92
|
+
*
|
|
93
|
+
* Strings are UTF-8 encoded first. Rejects with a tagged `TypeError` for an
|
|
94
|
+
* unknown format or when no `CompressionStream` is available (always on the
|
|
95
|
+
* server unless one is injected).
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const gzipped = await compress(JSON.stringify(state), "gzip");
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @param data Input data.
|
|
103
|
+
* @param format Compression format.
|
|
104
|
+
* @param options Constructor override.
|
|
105
|
+
* @default format "gzip"
|
|
106
|
+
* @default options {}
|
|
107
|
+
* @returns Compressed bytes.
|
|
108
|
+
*/
|
|
109
|
+
declare function compress(data: CompressionInput, format?: CompressionFormatName, options?: CompressOptions): Promise<Uint8Array<ArrayBuffer>>;
|
|
110
|
+
/**
|
|
111
|
+
* Decompress data with the Compression Streams API.
|
|
112
|
+
*
|
|
113
|
+
* Rejects with a tagged `TypeError` for an unknown format or when no
|
|
114
|
+
* `DecompressionStream` is available, and with the stream's error for
|
|
115
|
+
* corrupt input.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* const bytes = await decompress(await response.blob(), "gzip");
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* @param data Compressed data.
|
|
123
|
+
* @param format Compression format.
|
|
124
|
+
* @param options Constructor override.
|
|
125
|
+
* @default format "gzip"
|
|
126
|
+
* @default options {}
|
|
127
|
+
* @returns Decompressed bytes.
|
|
128
|
+
*/
|
|
129
|
+
declare function decompress(data: CompressionInput, format?: CompressionFormatName, options?: DecompressOptions): Promise<Uint8Array<ArrayBuffer>>;
|
|
130
|
+
/**
|
|
131
|
+
* Decompress data and decode the result as UTF-8 text.
|
|
132
|
+
*
|
|
133
|
+
* Rejects exactly like {@link decompress}.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* const json = JSON.parse(await decompressText(bytes, "deflate"));
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* @param data Compressed data.
|
|
141
|
+
* @param format Compression format.
|
|
142
|
+
* @param options Constructor override.
|
|
143
|
+
* @default format "gzip"
|
|
144
|
+
* @default options {}
|
|
145
|
+
* @returns Decompressed text.
|
|
146
|
+
*/
|
|
147
|
+
declare function decompressText(data: CompressionInput, format?: CompressionFormatName, options?: DecompressOptions): Promise<string>;
|
|
148
|
+
/**
|
|
149
|
+
* Reactive wrapper around {@link compress}, {@link decompress} and
|
|
150
|
+
* {@link decompressText}.
|
|
151
|
+
*
|
|
152
|
+
* Tracks whether an action is in flight and records the last failure in
|
|
153
|
+
* `error`; actions still reject so callers can handle failures inline.
|
|
154
|
+
* Nothing needs cleanup.
|
|
155
|
+
*
|
|
156
|
+
* Server rendering: `supported` is false and actions reject with the tagged
|
|
157
|
+
* unsupported error unless constructors are injected.
|
|
158
|
+
* Inside a component `supported` turns true only after mounting, so
|
|
159
|
+
* hydration renders this server state first.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* const { compress, decompressText, pending } = useCompressionStream({ format: "deflate" });
|
|
164
|
+
* const packed = await compress(draft.value);
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* @param options Constructor overrides and default format.
|
|
168
|
+
* @default options {}
|
|
169
|
+
* @returns Compression state and bound actions.
|
|
170
|
+
*/
|
|
171
|
+
declare function useCompressionStream(options?: UseCompressionStreamOptions): CompressionStreamControls;
|
|
172
|
+
//#endregion
|
|
173
|
+
export { CompressOptions, CompressionFormatName, CompressionInput, CompressionStreamConstructor, CompressionStreamControls, CompressionTransformLike, DecompressOptions, UseCompressionStreamOptions, compress, decompress, decompressText, useCompressionStream };
|