@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,183 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { computed, hasInjectionContext, readonly, ref, shallowReadonly, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/use-bluetooth.ts
|
|
4
|
+
function browserBluetoothHost() {
|
|
5
|
+
if (typeof window === "undefined") return void 0;
|
|
6
|
+
const { navigator } = window;
|
|
7
|
+
const bluetooth = "bluetooth" in navigator ? navigator.bluetooth : void 0;
|
|
8
|
+
return isBluetoothHost(bluetooth) ? bluetooth : void 0;
|
|
9
|
+
}
|
|
10
|
+
function isBluetoothHost(value) {
|
|
11
|
+
return typeof value === "object" && value !== null && "requestDevice" in value;
|
|
12
|
+
}
|
|
13
|
+
function availabilityOf(event) {
|
|
14
|
+
return "value" in event && typeof event.value === "boolean" ? event.value : void 0;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Connect to Bluetooth Low Energy devices with the Web Bluetooth API.
|
|
18
|
+
*
|
|
19
|
+
* `requestDevice()` prompts for a device, `connect()` connects its GATT
|
|
20
|
+
* server, and `read` / `write` / `notify` address characteristics by service
|
|
21
|
+
* and characteristic UUID. `connected` follows `gattserverdisconnected` and
|
|
22
|
+
* `available` follows `availabilitychanged`. Failures land in `error`.
|
|
23
|
+
* Notifications are stopped and the server disconnected when the owning
|
|
24
|
+
* reactive scope stops; outside a scope call `disconnect()`.
|
|
25
|
+
*
|
|
26
|
+
* Server rendering: `supported`, `available` and `connected` are false and
|
|
27
|
+
* nothing is queried.
|
|
28
|
+
* Inside a component the host is resolved after mounting, so hydration
|
|
29
|
+
* renders this server state first.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const ble = useBluetooth({ requestOptions: { filters: [{ services: ["heart_rate"] }] } });
|
|
34
|
+
* await ble.requestDevice();
|
|
35
|
+
* await ble.connect();
|
|
36
|
+
* await ble.notify("heart_rate", "heart_rate_measurement", (value) => show(value.getUint8(1)));
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @param options Host and default request options.
|
|
40
|
+
* @default options {}
|
|
41
|
+
* @returns Bluetooth state and actions.
|
|
42
|
+
*/
|
|
43
|
+
function useBluetooth(options = {}) {
|
|
44
|
+
const available = ref(false);
|
|
45
|
+
const device = shallowRef(void 0);
|
|
46
|
+
const connected = ref(false);
|
|
47
|
+
const error = shallowRef(void 0);
|
|
48
|
+
const notifications = /* @__PURE__ */ new Set();
|
|
49
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
50
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
51
|
+
hydrated.value = true;
|
|
52
|
+
});
|
|
53
|
+
const resolveHost = () => {
|
|
54
|
+
if (!hydrated.value) return void 0;
|
|
55
|
+
return options.host === void 0 ? browserBluetoothHost() : toValue(options.host) ?? void 0;
|
|
56
|
+
};
|
|
57
|
+
const onDisconnected = () => {
|
|
58
|
+
connected.value = false;
|
|
59
|
+
for (const stop of notifications) stop();
|
|
60
|
+
};
|
|
61
|
+
const disconnect = () => {
|
|
62
|
+
for (const stop of notifications) stop();
|
|
63
|
+
notifications.clear();
|
|
64
|
+
device.value?.gatt?.disconnect();
|
|
65
|
+
connected.value = false;
|
|
66
|
+
};
|
|
67
|
+
const requestDevice = async (requestOptions = options.requestOptions ?? { acceptAllDevices: true }) => {
|
|
68
|
+
const host = resolveHost();
|
|
69
|
+
if (!host) return void 0;
|
|
70
|
+
try {
|
|
71
|
+
const chosen = await host.requestDevice(requestOptions);
|
|
72
|
+
disconnect();
|
|
73
|
+
device.value?.removeEventListener("gattserverdisconnected", onDisconnected);
|
|
74
|
+
chosen.addEventListener("gattserverdisconnected", onDisconnected);
|
|
75
|
+
device.value = chosen;
|
|
76
|
+
connected.value = chosen.gatt?.connected ?? false;
|
|
77
|
+
error.value = void 0;
|
|
78
|
+
return chosen;
|
|
79
|
+
} catch (cause) {
|
|
80
|
+
error.value = cause;
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const connect = async () => {
|
|
85
|
+
const server = device.value?.gatt;
|
|
86
|
+
if (!server) return false;
|
|
87
|
+
try {
|
|
88
|
+
await server.connect();
|
|
89
|
+
connected.value = server.connected;
|
|
90
|
+
error.value = void 0;
|
|
91
|
+
} catch (cause) {
|
|
92
|
+
error.value = cause;
|
|
93
|
+
connected.value = false;
|
|
94
|
+
}
|
|
95
|
+
return connected.value;
|
|
96
|
+
};
|
|
97
|
+
const characteristicOf = async (service, characteristic) => {
|
|
98
|
+
const server = device.value?.gatt;
|
|
99
|
+
if (!server?.connected) throw new Error("[VIZE_COMPOSE_BLUETOOTH_NOT_CONNECTED] connect() to a device before accessing characteristics");
|
|
100
|
+
return (await server.getPrimaryService(service)).getCharacteristic(characteristic);
|
|
101
|
+
};
|
|
102
|
+
const attempt = async (action) => {
|
|
103
|
+
try {
|
|
104
|
+
const value = await action();
|
|
105
|
+
error.value = void 0;
|
|
106
|
+
return value;
|
|
107
|
+
} catch (cause) {
|
|
108
|
+
error.value = cause;
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const read = (service, characteristic) => attempt(async () => (await characteristicOf(service, characteristic)).readValue());
|
|
113
|
+
const write = async (service, characteristic, value, writeOptions = {}) => await attempt(async () => {
|
|
114
|
+
const target = await characteristicOf(service, characteristic);
|
|
115
|
+
await (writeOptions.withoutResponse ?? false ? target.writeValueWithoutResponse(value) : target.writeValueWithResponse(value));
|
|
116
|
+
return true;
|
|
117
|
+
}) === true;
|
|
118
|
+
const notify = (service, characteristic, listener) => attempt(async () => {
|
|
119
|
+
const target = await characteristicOf(service, characteristic);
|
|
120
|
+
const onChange = () => {
|
|
121
|
+
if (target.value) listener(target.value);
|
|
122
|
+
};
|
|
123
|
+
target.addEventListener("characteristicvaluechanged", onChange);
|
|
124
|
+
try {
|
|
125
|
+
await target.startNotifications();
|
|
126
|
+
} catch (cause) {
|
|
127
|
+
target.removeEventListener("characteristicvaluechanged", onChange);
|
|
128
|
+
throw cause;
|
|
129
|
+
}
|
|
130
|
+
const stop = async () => {
|
|
131
|
+
if (!notifications.delete(stop)) return;
|
|
132
|
+
target.removeEventListener("characteristicvaluechanged", onChange);
|
|
133
|
+
try {
|
|
134
|
+
await target.stopNotifications();
|
|
135
|
+
} catch (cause) {
|
|
136
|
+
error.value = cause;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
notifications.add(stop);
|
|
140
|
+
return stop;
|
|
141
|
+
});
|
|
142
|
+
watch(resolveHost, (host, _previous, onCleanup) => {
|
|
143
|
+
available.value = false;
|
|
144
|
+
if (!host) return;
|
|
145
|
+
let active = true;
|
|
146
|
+
const onAvailability = (event) => {
|
|
147
|
+
const value = availabilityOf(event);
|
|
148
|
+
if (value !== void 0) available.value = value;
|
|
149
|
+
};
|
|
150
|
+
host.addEventListener("availabilitychanged", onAvailability);
|
|
151
|
+
onCleanup(() => {
|
|
152
|
+
active = false;
|
|
153
|
+
host.removeEventListener("availabilitychanged", onAvailability);
|
|
154
|
+
});
|
|
155
|
+
host.getAvailability().then((value) => {
|
|
156
|
+
if (active) available.value = value;
|
|
157
|
+
}, (cause) => {
|
|
158
|
+
if (active) error.value = cause;
|
|
159
|
+
});
|
|
160
|
+
}, {
|
|
161
|
+
immediate: true,
|
|
162
|
+
flush: "sync"
|
|
163
|
+
});
|
|
164
|
+
tryOnScopeDispose(() => {
|
|
165
|
+
disconnect();
|
|
166
|
+
device.value?.removeEventListener("gattserverdisconnected", onDisconnected);
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
supported: computed(() => resolveHost() !== void 0),
|
|
170
|
+
available: readonly(available),
|
|
171
|
+
device: shallowReadonly(device),
|
|
172
|
+
connected: readonly(connected),
|
|
173
|
+
error: readonly(error),
|
|
174
|
+
requestDevice,
|
|
175
|
+
connect,
|
|
176
|
+
disconnect,
|
|
177
|
+
read,
|
|
178
|
+
write,
|
|
179
|
+
notify
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
export { useBluetooth };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref, ShallowRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-broadcast-channel.d.ts
|
|
4
|
+
/** Minimal structural view of a `BroadcastChannel` instance. */
|
|
5
|
+
interface BroadcastChannelLike extends EventTarget {
|
|
6
|
+
/** Post a structured-cloneable message to every other channel with the same name. */
|
|
7
|
+
readonly postMessage: (message: unknown) => void;
|
|
8
|
+
/** Close the channel; no further messages are delivered. */
|
|
9
|
+
readonly close: () => void;
|
|
10
|
+
}
|
|
11
|
+
/** Constructor creating channels, compatible with `window.BroadcastChannel`. */
|
|
12
|
+
type BroadcastChannelConstructor = new (name: string) => BroadcastChannelLike;
|
|
13
|
+
/**
|
|
14
|
+
* Capability host exposing a channel constructor; `window` satisfies it.
|
|
15
|
+
*
|
|
16
|
+
* The constructor is wrapped in an object because a bare class would be
|
|
17
|
+
* mistaken for a getter by `MaybeRefOrGetter` resolution.
|
|
18
|
+
*/
|
|
19
|
+
interface BroadcastChannelHost {
|
|
20
|
+
/** Channel constructor. */
|
|
21
|
+
readonly BroadcastChannel: BroadcastChannelConstructor;
|
|
22
|
+
}
|
|
23
|
+
/** Stable failure codes reported by {@link useBroadcastChannel}. */
|
|
24
|
+
type BroadcastChannelErrorCode = "open-failed" | "post-failed" | "message-error" | "invalid-message";
|
|
25
|
+
/** Failure observed while using a broadcast channel. */
|
|
26
|
+
interface BroadcastChannelFailure {
|
|
27
|
+
/** Which step failed. */
|
|
28
|
+
readonly code: BroadcastChannelErrorCode;
|
|
29
|
+
/** Channel name involved in the failure. */
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** Exact thrown value, event, or rejected payload. */
|
|
32
|
+
readonly cause: unknown;
|
|
33
|
+
}
|
|
34
|
+
/** Options for {@link useBroadcastChannel}. */
|
|
35
|
+
interface UseBroadcastChannelOptions<Message> {
|
|
36
|
+
/**
|
|
37
|
+
* Host exposing the channel constructor. `null`/`undefined` keeps the
|
|
38
|
+
* composable closed, which is also what happens during server rendering.
|
|
39
|
+
*
|
|
40
|
+
* @default window when it exposes `BroadcastChannel`
|
|
41
|
+
*/
|
|
42
|
+
readonly host?: MaybeRefOrGetter<BroadcastChannelHost | null | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Validate incoming payloads. Rejected payloads leave `data` untouched and
|
|
45
|
+
* report an `"invalid-message"` failure.
|
|
46
|
+
*
|
|
47
|
+
* @default every payload is accepted
|
|
48
|
+
*/
|
|
49
|
+
readonly validate?: (data: unknown) => data is Message;
|
|
50
|
+
/**
|
|
51
|
+
* Observe every accepted message.
|
|
52
|
+
*
|
|
53
|
+
* @default undefined
|
|
54
|
+
*/
|
|
55
|
+
readonly onMessage?: (message: Message) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Observe failures. Failures never throw out of the composable.
|
|
58
|
+
*
|
|
59
|
+
* @default undefined
|
|
60
|
+
*/
|
|
61
|
+
readonly onError?: (failure: BroadcastChannelFailure) => void;
|
|
62
|
+
}
|
|
63
|
+
/** Reactive state and controls returned by {@link useBroadcastChannel}. */
|
|
64
|
+
interface BroadcastChannelControls<Message> {
|
|
65
|
+
/** Most recent accepted message received from another context. */
|
|
66
|
+
readonly data: Readonly<ShallowRef<Message | undefined>>;
|
|
67
|
+
/** Whether a channel constructor is available. */
|
|
68
|
+
readonly supported: Readonly<Ref<boolean>>;
|
|
69
|
+
/** Whether no channel is currently open. */
|
|
70
|
+
readonly closed: Readonly<Ref<boolean>>;
|
|
71
|
+
/** Most recent failure, cleared by the next successful post or message. */
|
|
72
|
+
readonly error: Readonly<ShallowRef<BroadcastChannelFailure | undefined>>;
|
|
73
|
+
/**
|
|
74
|
+
* Post a typed message.
|
|
75
|
+
*
|
|
76
|
+
* @param message Structured-cloneable payload.
|
|
77
|
+
* @returns Whether the message was handed to an open channel.
|
|
78
|
+
*/
|
|
79
|
+
readonly post: (message: Message) => boolean;
|
|
80
|
+
/** Close the channel and stop following the reactive name. Idempotent. */
|
|
81
|
+
readonly close: () => void;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Exchange typed messages with other tabs, windows, and workers of the same
|
|
85
|
+
* origin through the Broadcast Channel API.
|
|
86
|
+
*
|
|
87
|
+
* The channel follows the reactive `name`: changing it closes the old channel
|
|
88
|
+
* and opens a new one. The channel closes when the owning reactive scope
|
|
89
|
+
* stops or when `close()` is called; outside a scope the caller owns
|
|
90
|
+
* `close()`. Incoming payloads pass the `validate` type guard before they
|
|
91
|
+
* reach `data`, so foreign messages cannot widen the declared type.
|
|
92
|
+
*
|
|
93
|
+
* Server rendering: without a browser `window` no channel is opened (Node's
|
|
94
|
+
* global `BroadcastChannel` is ignored), `supported` is `false`, and `post`
|
|
95
|
+
* returns `false`.
|
|
96
|
+
*
|
|
97
|
+
* Inside a component the host is read after mounting, so hydration renders
|
|
98
|
+
* the server fallback first and never mismatches.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* type Sync = { readonly type: "logout" };
|
|
103
|
+
* const { data, post } = useBroadcastChannel<Sync>("auth");
|
|
104
|
+
* post({ type: "logout" });
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @typeParam Message Payload type exchanged over the channel.
|
|
108
|
+
* @param name Reactive channel name.
|
|
109
|
+
* @param options Host, validation, and observation hooks.
|
|
110
|
+
* @default options {}
|
|
111
|
+
* @returns Reactive channel state and controls.
|
|
112
|
+
*/
|
|
113
|
+
declare function useBroadcastChannel<Message>(name: MaybeRefOrGetter<string>, options?: UseBroadcastChannelOptions<Message>): BroadcastChannelControls<Message>;
|
|
114
|
+
//#endregion
|
|
115
|
+
export { BroadcastChannelConstructor, BroadcastChannelControls, BroadcastChannelErrorCode, BroadcastChannelFailure, BroadcastChannelHost, BroadcastChannelLike, UseBroadcastChannelOptions, useBroadcastChannel };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext, readonly, ref, shallowRef, toValue, watch, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/use-broadcast-channel.ts
|
|
4
|
+
function browserBroadcastChannelHost() {
|
|
5
|
+
return typeof window !== "undefined" && typeof window.BroadcastChannel === "function" ? window : void 0;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Exchange typed messages with other tabs, windows, and workers of the same
|
|
9
|
+
* origin through the Broadcast Channel API.
|
|
10
|
+
*
|
|
11
|
+
* The channel follows the reactive `name`: changing it closes the old channel
|
|
12
|
+
* and opens a new one. The channel closes when the owning reactive scope
|
|
13
|
+
* stops or when `close()` is called; outside a scope the caller owns
|
|
14
|
+
* `close()`. Incoming payloads pass the `validate` type guard before they
|
|
15
|
+
* reach `data`, so foreign messages cannot widen the declared type.
|
|
16
|
+
*
|
|
17
|
+
* Server rendering: without a browser `window` no channel is opened (Node's
|
|
18
|
+
* global `BroadcastChannel` is ignored), `supported` is `false`, and `post`
|
|
19
|
+
* returns `false`.
|
|
20
|
+
*
|
|
21
|
+
* Inside a component the host is read after mounting, so hydration renders
|
|
22
|
+
* the server fallback first and never mismatches.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* type Sync = { readonly type: "logout" };
|
|
27
|
+
* const { data, post } = useBroadcastChannel<Sync>("auth");
|
|
28
|
+
* post({ type: "logout" });
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @typeParam Message Payload type exchanged over the channel.
|
|
32
|
+
* @param name Reactive channel name.
|
|
33
|
+
* @param options Host, validation, and observation hooks.
|
|
34
|
+
* @default options {}
|
|
35
|
+
* @returns Reactive channel state and controls.
|
|
36
|
+
*/
|
|
37
|
+
function useBroadcastChannel(name, options = {}) {
|
|
38
|
+
const data = shallowRef(void 0);
|
|
39
|
+
const error = shallowRef(void 0);
|
|
40
|
+
const supported = ref(false);
|
|
41
|
+
const closed = ref(true);
|
|
42
|
+
let channel;
|
|
43
|
+
let stopped = false;
|
|
44
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
45
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
46
|
+
hydrated.value = true;
|
|
47
|
+
});
|
|
48
|
+
const fail = (code, cause) => {
|
|
49
|
+
const failure = {
|
|
50
|
+
code,
|
|
51
|
+
name: toValue(name),
|
|
52
|
+
cause
|
|
53
|
+
};
|
|
54
|
+
error.value = failure;
|
|
55
|
+
options.onError?.(failure);
|
|
56
|
+
};
|
|
57
|
+
const resolveHost = () => (options.host === void 0 ? browserBroadcastChannelHost() : toValue(options.host))?.BroadcastChannel;
|
|
58
|
+
const onMessage = (event) => {
|
|
59
|
+
const payload = event instanceof MessageEvent ? event.data : void 0;
|
|
60
|
+
if (options.validate !== void 0 && !options.validate(payload)) {
|
|
61
|
+
fail("invalid-message", payload);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const message = payload;
|
|
65
|
+
error.value = void 0;
|
|
66
|
+
data.value = message;
|
|
67
|
+
options.onMessage?.(message);
|
|
68
|
+
};
|
|
69
|
+
const onMessageError = (event) => fail("message-error", event);
|
|
70
|
+
const stopWatch = watch([() => toValue(name), () => hydrated.value ? resolveHost() : void 0], ([channelName, Host], _previous, onCleanup) => {
|
|
71
|
+
supported.value = Host !== void 0;
|
|
72
|
+
if (Host === void 0 || stopped) return;
|
|
73
|
+
let opened;
|
|
74
|
+
try {
|
|
75
|
+
opened = new Host(channelName);
|
|
76
|
+
} catch (cause) {
|
|
77
|
+
fail("open-failed", cause);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
channel = opened;
|
|
81
|
+
closed.value = false;
|
|
82
|
+
opened.addEventListener("message", onMessage);
|
|
83
|
+
opened.addEventListener("messageerror", onMessageError);
|
|
84
|
+
onCleanup(() => {
|
|
85
|
+
opened.removeEventListener("message", onMessage);
|
|
86
|
+
opened.removeEventListener("messageerror", onMessageError);
|
|
87
|
+
opened.close();
|
|
88
|
+
if (channel === opened) channel = void 0;
|
|
89
|
+
closed.value = true;
|
|
90
|
+
});
|
|
91
|
+
}, {
|
|
92
|
+
immediate: true,
|
|
93
|
+
flush: "sync"
|
|
94
|
+
});
|
|
95
|
+
const post = (message) => {
|
|
96
|
+
if (channel === void 0) return false;
|
|
97
|
+
try {
|
|
98
|
+
channel.postMessage(message);
|
|
99
|
+
} catch (cause) {
|
|
100
|
+
fail("post-failed", cause);
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
error.value = void 0;
|
|
104
|
+
return true;
|
|
105
|
+
};
|
|
106
|
+
const close = () => {
|
|
107
|
+
stopped = true;
|
|
108
|
+
stopWatch();
|
|
109
|
+
};
|
|
110
|
+
tryOnScopeDispose(close);
|
|
111
|
+
return {
|
|
112
|
+
data,
|
|
113
|
+
supported: readonly(supported),
|
|
114
|
+
closed: readonly(closed),
|
|
115
|
+
error,
|
|
116
|
+
post,
|
|
117
|
+
close
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//#endregion
|
|
121
|
+
export { useBroadcastChannel };
|