@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,206 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { computed, hasInjectionContext, readonly, shallowRef, toValue, unref, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/use-payment-request.ts
|
|
4
|
+
function isPaymentRequestHost(candidate) {
|
|
5
|
+
return typeof candidate === "function";
|
|
6
|
+
}
|
|
7
|
+
function browserPaymentRequest() {
|
|
8
|
+
if (typeof window === "undefined") return void 0;
|
|
9
|
+
const candidate = Reflect.get(window, "PaymentRequest");
|
|
10
|
+
return isPaymentRequestHost(candidate) ? candidate : void 0;
|
|
11
|
+
}
|
|
12
|
+
function hasUpdateWith(event) {
|
|
13
|
+
return "updateWith" in event && typeof event.updateWith === "function";
|
|
14
|
+
}
|
|
15
|
+
function errorName(error) {
|
|
16
|
+
return typeof error === "object" && error !== null && "name" in error ? error.name : void 0;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Collect payments with a typed Payment Request API wrapper.
|
|
20
|
+
*
|
|
21
|
+
* Every `show()` constructs a fresh request from the reactive `methods`,
|
|
22
|
+
* `details`, and `paymentOptions`, wires the shipping hooks (which call
|
|
23
|
+
* `updateWith` synchronously when they return an update), and resolves to a
|
|
24
|
+
* discriminated {@link PaymentShowResult}. Call `complete()` after
|
|
25
|
+
* processing a `"completed"` result. A showing sheet is aborted when the
|
|
26
|
+
* owning reactive scope stops; outside a scope call `abort()`.
|
|
27
|
+
*
|
|
28
|
+
* Server rendering: nothing is constructed, `supported` is false and
|
|
29
|
+
* `state` is `"idle"`.
|
|
30
|
+
* Inside a component `supported` turns true only after mounting, so
|
|
31
|
+
* hydration renders this server state first.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const payment = usePaymentRequest({ methods, details: { total } });
|
|
36
|
+
* const result = await payment.show();
|
|
37
|
+
* if (result.status === "completed") await payment.complete(await charge(result.response));
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @param options Methods, details, hooks, and the constructor host.
|
|
41
|
+
* @returns Payment state and actions.
|
|
42
|
+
*/
|
|
43
|
+
function usePaymentRequest(options) {
|
|
44
|
+
const state = shallowRef("idle");
|
|
45
|
+
const response = shallowRef(void 0);
|
|
46
|
+
const error = shallowRef(void 0);
|
|
47
|
+
let active;
|
|
48
|
+
let generation = 0;
|
|
49
|
+
let completing = false;
|
|
50
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
51
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
52
|
+
hydrated.value = true;
|
|
53
|
+
});
|
|
54
|
+
const resolveHost = () => options.PaymentRequest === void 0 ? browserPaymentRequest() : unref(options.PaymentRequest) ?? void 0;
|
|
55
|
+
const construct = (Host) => new Host([...toValue(options.methods)], toValue(options.details), toValue(options.paymentOptions) ?? {});
|
|
56
|
+
const bindHook = (request, type, hook) => {
|
|
57
|
+
if (!hook) return;
|
|
58
|
+
request.addEventListener(type, (event) => {
|
|
59
|
+
const update = hook({
|
|
60
|
+
request,
|
|
61
|
+
shippingAddress: request.shippingAddress ?? null,
|
|
62
|
+
shippingOption: request.shippingOption ?? null
|
|
63
|
+
});
|
|
64
|
+
if (update !== void 0 && hasUpdateWith(event)) event.updateWith(Promise.resolve(update));
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const canMakePayment = async () => {
|
|
68
|
+
const Host = resolveHost();
|
|
69
|
+
if (!Host) return false;
|
|
70
|
+
try {
|
|
71
|
+
return await construct(Host).canMakePayment();
|
|
72
|
+
} catch {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const abort = async () => {
|
|
77
|
+
const current = active;
|
|
78
|
+
if (!current) return false;
|
|
79
|
+
try {
|
|
80
|
+
await current.abort();
|
|
81
|
+
if (active === current) {
|
|
82
|
+
active = void 0;
|
|
83
|
+
state.value = "idle";
|
|
84
|
+
generation += 1;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
} catch {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const show = async () => {
|
|
92
|
+
const Host = resolveHost();
|
|
93
|
+
if (!Host) return {
|
|
94
|
+
status: "unsupported",
|
|
95
|
+
error: void 0
|
|
96
|
+
};
|
|
97
|
+
if (state.value === "awaiting-complete") return {
|
|
98
|
+
status: "failed",
|
|
99
|
+
error: /* @__PURE__ */ new Error("[VIZE_COMPOSE_PAYMENT_RESPONSE_INCOMPLETE] call complete() first")
|
|
100
|
+
};
|
|
101
|
+
const currentGeneration = ++generation;
|
|
102
|
+
const previous = active;
|
|
103
|
+
if (previous) {
|
|
104
|
+
try {
|
|
105
|
+
await previous.abort();
|
|
106
|
+
} catch (cause) {
|
|
107
|
+
if (active === previous) {
|
|
108
|
+
error.value = cause;
|
|
109
|
+
return {
|
|
110
|
+
status: "failed",
|
|
111
|
+
error: cause
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (active === previous) {
|
|
116
|
+
active = void 0;
|
|
117
|
+
state.value = "idle";
|
|
118
|
+
}
|
|
119
|
+
if (currentGeneration !== generation) return {
|
|
120
|
+
status: "aborted",
|
|
121
|
+
error: void 0
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
response.value = void 0;
|
|
125
|
+
let request;
|
|
126
|
+
try {
|
|
127
|
+
request = construct(Host);
|
|
128
|
+
} catch (cause) {
|
|
129
|
+
error.value = cause;
|
|
130
|
+
return {
|
|
131
|
+
status: "failed",
|
|
132
|
+
error: cause
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
bindHook(request, "shippingaddresschange", options.onShippingAddressChange);
|
|
136
|
+
bindHook(request, "shippingoptionchange", options.onShippingOptionChange);
|
|
137
|
+
active = request;
|
|
138
|
+
state.value = "interactive";
|
|
139
|
+
try {
|
|
140
|
+
const result = await request.show();
|
|
141
|
+
if (active !== request || currentGeneration !== generation) return {
|
|
142
|
+
status: "aborted",
|
|
143
|
+
error: void 0
|
|
144
|
+
};
|
|
145
|
+
active = void 0;
|
|
146
|
+
response.value = result;
|
|
147
|
+
state.value = "awaiting-complete";
|
|
148
|
+
error.value = void 0;
|
|
149
|
+
return {
|
|
150
|
+
status: "completed",
|
|
151
|
+
response: result
|
|
152
|
+
};
|
|
153
|
+
} catch (cause) {
|
|
154
|
+
if (active !== request || currentGeneration !== generation) return {
|
|
155
|
+
status: "aborted",
|
|
156
|
+
error: cause
|
|
157
|
+
};
|
|
158
|
+
active = void 0;
|
|
159
|
+
state.value = "idle";
|
|
160
|
+
const name = errorName(cause);
|
|
161
|
+
if (name === "AbortError") return {
|
|
162
|
+
status: "aborted",
|
|
163
|
+
error: cause
|
|
164
|
+
};
|
|
165
|
+
if (name === "NotSupportedError") return {
|
|
166
|
+
status: "unsupported",
|
|
167
|
+
error: cause
|
|
168
|
+
};
|
|
169
|
+
error.value = cause;
|
|
170
|
+
return {
|
|
171
|
+
status: "failed",
|
|
172
|
+
error: cause
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const complete = async (result = "unknown") => {
|
|
177
|
+
const current = response.value;
|
|
178
|
+
if (!current || state.value !== "awaiting-complete" || completing) return false;
|
|
179
|
+
completing = true;
|
|
180
|
+
try {
|
|
181
|
+
await current.complete(result);
|
|
182
|
+
return true;
|
|
183
|
+
} catch (cause) {
|
|
184
|
+
error.value = cause;
|
|
185
|
+
return false;
|
|
186
|
+
} finally {
|
|
187
|
+
completing = false;
|
|
188
|
+
state.value = "idle";
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
tryOnScopeDispose(() => {
|
|
192
|
+
abort();
|
|
193
|
+
});
|
|
194
|
+
return {
|
|
195
|
+
supported: computed(() => hydrated.value && resolveHost() !== void 0),
|
|
196
|
+
state: readonly(state),
|
|
197
|
+
response: readonly(response),
|
|
198
|
+
error: readonly(error),
|
|
199
|
+
canMakePayment,
|
|
200
|
+
show,
|
|
201
|
+
complete,
|
|
202
|
+
abort
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//#endregion
|
|
206
|
+
export { usePaymentRequest };
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/use-performance-observer.d.ts
|
|
4
|
+
/** Fields shared by every performance entry consumed by {@link usePerformanceObserver}. */
|
|
5
|
+
interface PerformanceEntryLike {
|
|
6
|
+
/** Entry name (URL, mark name, paint name, event type, …). */
|
|
7
|
+
readonly name: string;
|
|
8
|
+
/** Entry type this entry was reported for. */
|
|
9
|
+
readonly entryType: string;
|
|
10
|
+
/** Start time relative to the time origin, in milliseconds. */
|
|
11
|
+
readonly startTime: number;
|
|
12
|
+
/** Duration in milliseconds (`0` for instantaneous entries). */
|
|
13
|
+
readonly duration: number;
|
|
14
|
+
}
|
|
15
|
+
/** `largest-contentful-paint` entry. */
|
|
16
|
+
interface LargestContentfulPaintEntryLike extends PerformanceEntryLike {
|
|
17
|
+
/** Entry type discriminant. */
|
|
18
|
+
readonly entryType: "largest-contentful-paint";
|
|
19
|
+
/** Render time, or `0` for cross-origin images without Timing-Allow-Origin. */
|
|
20
|
+
readonly renderTime: number;
|
|
21
|
+
/** Load time of the resource, or `0` for text. */
|
|
22
|
+
readonly loadTime: number;
|
|
23
|
+
/** Visible area of the element in square pixels. */
|
|
24
|
+
readonly size: number;
|
|
25
|
+
/** Element `id`, or an empty string. */
|
|
26
|
+
readonly id: string;
|
|
27
|
+
/** Image URL, or an empty string for text. */
|
|
28
|
+
readonly url: string;
|
|
29
|
+
}
|
|
30
|
+
/** `layout-shift` entry (Layout Instability API). */
|
|
31
|
+
interface LayoutShiftEntryLike extends PerformanceEntryLike {
|
|
32
|
+
/** Entry type discriminant. */
|
|
33
|
+
readonly entryType: "layout-shift";
|
|
34
|
+
/** Layout shift score. */
|
|
35
|
+
readonly value: number;
|
|
36
|
+
/** Whether a user input happened within the previous 500 ms. */
|
|
37
|
+
readonly hadRecentInput: boolean;
|
|
38
|
+
/** Time of the most recent input. */
|
|
39
|
+
readonly lastInputTime: number;
|
|
40
|
+
}
|
|
41
|
+
/** Fields of Event Timing entries (`event` and `first-input`). */
|
|
42
|
+
interface EventTimingFieldsLike extends PerformanceEntryLike {
|
|
43
|
+
/** Time the event handlers started running. */
|
|
44
|
+
readonly processingStart: number;
|
|
45
|
+
/** Time the event handlers finished running. */
|
|
46
|
+
readonly processingEnd: number;
|
|
47
|
+
/** Whether the event was cancelable. */
|
|
48
|
+
readonly cancelable: boolean;
|
|
49
|
+
/** Interaction identifier; `0` when the event is not part of an interaction. */
|
|
50
|
+
readonly interactionId?: number;
|
|
51
|
+
}
|
|
52
|
+
/** `event` entry (Event Timing API). */
|
|
53
|
+
interface EventTimingEntryLike extends EventTimingFieldsLike {
|
|
54
|
+
/** Entry type discriminant. */
|
|
55
|
+
readonly entryType: "event";
|
|
56
|
+
}
|
|
57
|
+
/** `first-input` entry (Event Timing API). */
|
|
58
|
+
interface FirstInputEntryLike extends EventTimingFieldsLike {
|
|
59
|
+
/** Entry type discriminant. */
|
|
60
|
+
readonly entryType: "first-input";
|
|
61
|
+
}
|
|
62
|
+
/** `paint` entry (`first-paint` or `first-contentful-paint`). */
|
|
63
|
+
interface PaintEntryLike extends PerformanceEntryLike {
|
|
64
|
+
/** Entry type discriminant. */
|
|
65
|
+
readonly entryType: "paint";
|
|
66
|
+
}
|
|
67
|
+
/** Fields shared by resource and navigation timing entries. */
|
|
68
|
+
interface ResourceTimingFieldsLike extends PerformanceEntryLike {
|
|
69
|
+
/** Initiator (`navigation`, `script`, `img`, `fetch`, …). */
|
|
70
|
+
readonly initiatorType: string;
|
|
71
|
+
/** Time the request started. */
|
|
72
|
+
readonly requestStart: number;
|
|
73
|
+
/** Time the first response byte arrived. */
|
|
74
|
+
readonly responseStart: number;
|
|
75
|
+
/** Time the last response byte arrived. */
|
|
76
|
+
readonly responseEnd: number;
|
|
77
|
+
/** Transferred size in bytes including headers. */
|
|
78
|
+
readonly transferSize: number;
|
|
79
|
+
}
|
|
80
|
+
/** `resource` entry (Resource Timing API). */
|
|
81
|
+
interface ResourceTimingEntryLike extends ResourceTimingFieldsLike {
|
|
82
|
+
/** Entry type discriminant. */
|
|
83
|
+
readonly entryType: "resource";
|
|
84
|
+
}
|
|
85
|
+
/** `navigation` entry (Navigation Timing API). */
|
|
86
|
+
interface NavigationTimingEntryLike extends ResourceTimingFieldsLike {
|
|
87
|
+
/** Entry type discriminant. */
|
|
88
|
+
readonly entryType: "navigation";
|
|
89
|
+
/** Navigation type (`navigate`, `reload`, `back_forward`, `prerender`). */
|
|
90
|
+
readonly type: string;
|
|
91
|
+
/** Time a prerendered page was activated; `0` or absent otherwise. */
|
|
92
|
+
readonly activationStart?: number;
|
|
93
|
+
/** End of the `DOMContentLoaded` handlers. */
|
|
94
|
+
readonly domContentLoadedEventEnd: number;
|
|
95
|
+
/** End of the `load` handlers. */
|
|
96
|
+
readonly loadEventEnd: number;
|
|
97
|
+
}
|
|
98
|
+
/** `longtask` entry (Long Tasks API). */
|
|
99
|
+
interface LongTaskEntryLike extends PerformanceEntryLike {
|
|
100
|
+
/** Entry type discriminant. */
|
|
101
|
+
readonly entryType: "longtask";
|
|
102
|
+
}
|
|
103
|
+
/** `mark` entry (User Timing API). */
|
|
104
|
+
interface MarkEntryLike extends PerformanceEntryLike {
|
|
105
|
+
/** Entry type discriminant. */
|
|
106
|
+
readonly entryType: "mark";
|
|
107
|
+
/** Detail passed to `performance.mark`. */
|
|
108
|
+
readonly detail: unknown;
|
|
109
|
+
}
|
|
110
|
+
/** `measure` entry (User Timing API). */
|
|
111
|
+
interface MeasureEntryLike extends PerformanceEntryLike {
|
|
112
|
+
/** Entry type discriminant. */
|
|
113
|
+
readonly entryType: "measure";
|
|
114
|
+
/** Detail passed to `performance.measure`. */
|
|
115
|
+
readonly detail: unknown;
|
|
116
|
+
}
|
|
117
|
+
/** `element` entry (Element Timing API). */
|
|
118
|
+
interface ElementTimingEntryLike extends PerformanceEntryLike {
|
|
119
|
+
/** Entry type discriminant. */
|
|
120
|
+
readonly entryType: "element";
|
|
121
|
+
/** Value of the `elementtiming` attribute. */
|
|
122
|
+
readonly identifier: string;
|
|
123
|
+
/** Render time. */
|
|
124
|
+
readonly renderTime: number;
|
|
125
|
+
/** Load time of the resource, or `0` for text. */
|
|
126
|
+
readonly loadTime: number;
|
|
127
|
+
/** Element `id`, or an empty string. */
|
|
128
|
+
readonly id: string;
|
|
129
|
+
/** Image URL, or an empty string for text. */
|
|
130
|
+
readonly url: string;
|
|
131
|
+
}
|
|
132
|
+
/** `long-animation-frame` entry (Long Animation Frames API). */
|
|
133
|
+
interface LongAnimationFrameEntryLike extends PerformanceEntryLike {
|
|
134
|
+
/** Entry type discriminant. */
|
|
135
|
+
readonly entryType: "long-animation-frame";
|
|
136
|
+
/** Start of the rendering phase. */
|
|
137
|
+
readonly renderStart: number;
|
|
138
|
+
/** Start of style and layout. */
|
|
139
|
+
readonly styleAndLayoutStart: number;
|
|
140
|
+
/** Total blocking time of the frame in milliseconds. */
|
|
141
|
+
readonly blockingDuration: number;
|
|
142
|
+
/** Time of the first UI event handled in this frame, or `0`. */
|
|
143
|
+
readonly firstUIEventTimestamp: number;
|
|
144
|
+
}
|
|
145
|
+
/** Entry interface delivered for each supported entry type. */
|
|
146
|
+
interface PerformanceEntryTypeMap {
|
|
147
|
+
/** Largest Contentful Paint candidates. */
|
|
148
|
+
readonly "largest-contentful-paint": LargestContentfulPaintEntryLike;
|
|
149
|
+
/** Layout shifts. */
|
|
150
|
+
readonly "layout-shift": LayoutShiftEntryLike;
|
|
151
|
+
/** Event Timing entries. */
|
|
152
|
+
readonly event: EventTimingEntryLike;
|
|
153
|
+
/** The first input of the page. */
|
|
154
|
+
readonly "first-input": FirstInputEntryLike;
|
|
155
|
+
/** First paint and first contentful paint. */
|
|
156
|
+
readonly paint: PaintEntryLike;
|
|
157
|
+
/** Document navigation timing. */
|
|
158
|
+
readonly navigation: NavigationTimingEntryLike;
|
|
159
|
+
/** Resource timing. */
|
|
160
|
+
readonly resource: ResourceTimingEntryLike;
|
|
161
|
+
/** Tasks longer than 50 ms. */
|
|
162
|
+
readonly longtask: LongTaskEntryLike;
|
|
163
|
+
/** User Timing marks. */
|
|
164
|
+
readonly mark: MarkEntryLike;
|
|
165
|
+
/** User Timing measures. */
|
|
166
|
+
readonly measure: MeasureEntryLike;
|
|
167
|
+
/** Element Timing entries. */
|
|
168
|
+
readonly element: ElementTimingEntryLike;
|
|
169
|
+
/** Long animation frames. */
|
|
170
|
+
readonly "long-animation-frame": LongAnimationFrameEntryLike;
|
|
171
|
+
}
|
|
172
|
+
/** Entry type understood by {@link usePerformanceObserver}. */
|
|
173
|
+
type PerformanceEntryType = keyof PerformanceEntryTypeMap;
|
|
174
|
+
/** Options passed to {@link PerformanceObserverLike.observe}. */
|
|
175
|
+
interface PerformanceObserveInit {
|
|
176
|
+
/** Single entry type to observe. */
|
|
177
|
+
readonly type: string;
|
|
178
|
+
/** Replay entries buffered before observation started. */
|
|
179
|
+
readonly buffered?: boolean;
|
|
180
|
+
/** Minimum duration of reported `event` entries. */
|
|
181
|
+
readonly durationThreshold?: number;
|
|
182
|
+
}
|
|
183
|
+
/** Minimal entry list handed to observer callbacks. */
|
|
184
|
+
interface PerformanceObserverEntryListLike {
|
|
185
|
+
/** Every entry of this batch. */
|
|
186
|
+
getEntries(): readonly PerformanceEntryLike[];
|
|
187
|
+
}
|
|
188
|
+
/** Minimal `PerformanceObserver` instance. */
|
|
189
|
+
interface PerformanceObserverLike {
|
|
190
|
+
/** Start observing one entry type. */
|
|
191
|
+
observe(options: PerformanceObserveInit): void;
|
|
192
|
+
/** Stop observing everything. */
|
|
193
|
+
disconnect(): void;
|
|
194
|
+
/** Return and clear pending entries. */
|
|
195
|
+
takeRecords(): readonly PerformanceEntryLike[];
|
|
196
|
+
}
|
|
197
|
+
/** Minimal `PerformanceObserver` constructor. */
|
|
198
|
+
interface PerformanceObserverHost {
|
|
199
|
+
/** Create an observer. */
|
|
200
|
+
new (callback: (list: PerformanceObserverEntryListLike, observer: PerformanceObserverLike) => void): PerformanceObserverLike;
|
|
201
|
+
/** Entry types this runtime supports; every type is attempted when absent. */
|
|
202
|
+
readonly supportedEntryTypes?: readonly string[] | undefined;
|
|
203
|
+
}
|
|
204
|
+
/** Options for {@link usePerformanceObserver}. */
|
|
205
|
+
interface UsePerformanceObserverOptions {
|
|
206
|
+
/**
|
|
207
|
+
* `PerformanceObserver` constructor for alternate runtimes and tests. A ref
|
|
208
|
+
* (not a getter) because the host itself is a constructor function.
|
|
209
|
+
*
|
|
210
|
+
* @default window.PerformanceObserver when it exists
|
|
211
|
+
*/
|
|
212
|
+
readonly PerformanceObserver?: MaybeRef<PerformanceObserverHost | null | undefined>;
|
|
213
|
+
/**
|
|
214
|
+
* Replay entries recorded before observation started.
|
|
215
|
+
*
|
|
216
|
+
* @default false
|
|
217
|
+
*/
|
|
218
|
+
readonly buffered?: boolean;
|
|
219
|
+
/**
|
|
220
|
+
* Minimum duration in milliseconds of reported `event` entries (the
|
|
221
|
+
* platform rounds it and clamps it to at least 16).
|
|
222
|
+
*
|
|
223
|
+
* @default undefined (platform default of 104)
|
|
224
|
+
*/
|
|
225
|
+
readonly durationThreshold?: number;
|
|
226
|
+
/**
|
|
227
|
+
* Start observing immediately.
|
|
228
|
+
*
|
|
229
|
+
* @default true
|
|
230
|
+
*/
|
|
231
|
+
readonly immediate?: boolean;
|
|
232
|
+
}
|
|
233
|
+
/** Callback invoked with correctly typed entries. */
|
|
234
|
+
type PerformanceObserverCallback<Type extends PerformanceEntryType> = (entries: readonly PerformanceEntryTypeMap[Type][], observer: PerformanceObserverLike) => void;
|
|
235
|
+
/** Reactive state and actions returned by {@link usePerformanceObserver}. */
|
|
236
|
+
interface PerformanceObserverControls<Type extends PerformanceEntryType> {
|
|
237
|
+
/** Whether an observer exists and supports at least one requested type. */
|
|
238
|
+
readonly supported: ComputedRef<boolean>;
|
|
239
|
+
/** Requested entry types the runtime supports. */
|
|
240
|
+
readonly observedTypes: ComputedRef<readonly Type[]>;
|
|
241
|
+
/** Whether an observer is currently connected. */
|
|
242
|
+
readonly isActive: Readonly<ShallowRef<boolean>>;
|
|
243
|
+
/** Most recent failure thrown by `observe`, cleared on the next start. */
|
|
244
|
+
readonly error: Readonly<ShallowRef<unknown>>;
|
|
245
|
+
/** Start (or restart) observing. */
|
|
246
|
+
readonly start: () => void;
|
|
247
|
+
/** Disconnect the observer. Repeated calls are safe. */
|
|
248
|
+
readonly stop: () => void;
|
|
249
|
+
/**
|
|
250
|
+
* Return and clear entries that are queued but not yet delivered.
|
|
251
|
+
*
|
|
252
|
+
* @returns Pending entries of the requested types.
|
|
253
|
+
*/
|
|
254
|
+
readonly takeRecords: () => readonly PerformanceEntryTypeMap[Type][];
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Observe performance entries with callbacks typed by entry type.
|
|
258
|
+
*
|
|
259
|
+
* Each supported type is observed with its own `observe({ type })` call so
|
|
260
|
+
* `buffered` and `durationThreshold` apply. Types missing from
|
|
261
|
+
* `PerformanceObserver.supportedEntryTypes` are skipped; `supported` is false
|
|
262
|
+
* when none remain. The observer follows reactive `entryTypes` and is
|
|
263
|
+
* disconnected when the owning reactive scope stops; outside a scope the
|
|
264
|
+
* caller owns `stop()`.
|
|
265
|
+
*
|
|
266
|
+
* Server rendering: no observer is created and `supported` is false. Inside
|
|
267
|
+
* a component the observer connects after mounting, so hydration renders the
|
|
268
|
+
* server state first.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```ts
|
|
272
|
+
* usePerformanceObserver("largest-contentful-paint", (entries) => {
|
|
273
|
+
* console.log(entries.at(-1)?.renderTime);
|
|
274
|
+
* }, { buffered: true });
|
|
275
|
+
* ```
|
|
276
|
+
*
|
|
277
|
+
* @param entryTypes One entry type or a list of them.
|
|
278
|
+
* @param callback Receives batches of typed entries.
|
|
279
|
+
* @param options Constructor host and observation options.
|
|
280
|
+
* @default options {}
|
|
281
|
+
* @returns Observer state and actions.
|
|
282
|
+
*/
|
|
283
|
+
declare function usePerformanceObserver<const Type extends PerformanceEntryType>(entryTypes: MaybeRefOrGetter<Type | readonly Type[]>, callback: PerformanceObserverCallback<Type>, options?: UsePerformanceObserverOptions): PerformanceObserverControls<Type>;
|
|
284
|
+
//#endregion
|
|
285
|
+
export { ElementTimingEntryLike, EventTimingEntryLike, EventTimingFieldsLike, FirstInputEntryLike, LargestContentfulPaintEntryLike, LayoutShiftEntryLike, LongAnimationFrameEntryLike, LongTaskEntryLike, MarkEntryLike, MeasureEntryLike, NavigationTimingEntryLike, PaintEntryLike, PerformanceEntryLike, PerformanceEntryType, PerformanceEntryTypeMap, PerformanceObserveInit, PerformanceObserverCallback, PerformanceObserverControls, PerformanceObserverEntryListLike, PerformanceObserverHost, PerformanceObserverLike, ResourceTimingEntryLike, ResourceTimingFieldsLike, UsePerformanceObserverOptions, usePerformanceObserver };
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { computed, hasInjectionContext, readonly, shallowRef, toValue, unref, watch, watchPostEffect } from "vue";
|
|
3
|
+
//#region src/use-performance-observer.ts
|
|
4
|
+
function isPerformanceObserverHost(candidate) {
|
|
5
|
+
return typeof candidate === "function";
|
|
6
|
+
}
|
|
7
|
+
function browserPerformanceObserver() {
|
|
8
|
+
if (typeof window === "undefined") return void 0;
|
|
9
|
+
const candidate = Reflect.get(window, "PerformanceObserver");
|
|
10
|
+
return isPerformanceObserverHost(candidate) ? candidate : void 0;
|
|
11
|
+
}
|
|
12
|
+
function isEntryOf(entry, types) {
|
|
13
|
+
return types.some((type) => type === entry.entryType);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Observe performance entries with callbacks typed by entry type.
|
|
17
|
+
*
|
|
18
|
+
* Each supported type is observed with its own `observe({ type })` call so
|
|
19
|
+
* `buffered` and `durationThreshold` apply. Types missing from
|
|
20
|
+
* `PerformanceObserver.supportedEntryTypes` are skipped; `supported` is false
|
|
21
|
+
* when none remain. The observer follows reactive `entryTypes` and is
|
|
22
|
+
* disconnected when the owning reactive scope stops; outside a scope the
|
|
23
|
+
* caller owns `stop()`.
|
|
24
|
+
*
|
|
25
|
+
* Server rendering: no observer is created and `supported` is false. Inside
|
|
26
|
+
* a component the observer connects after mounting, so hydration renders the
|
|
27
|
+
* server state first.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* usePerformanceObserver("largest-contentful-paint", (entries) => {
|
|
32
|
+
* console.log(entries.at(-1)?.renderTime);
|
|
33
|
+
* }, { buffered: true });
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @param entryTypes One entry type or a list of them.
|
|
37
|
+
* @param callback Receives batches of typed entries.
|
|
38
|
+
* @param options Constructor host and observation options.
|
|
39
|
+
* @default options {}
|
|
40
|
+
* @returns Observer state and actions.
|
|
41
|
+
*/
|
|
42
|
+
function usePerformanceObserver(entryTypes, callback, options = {}) {
|
|
43
|
+
const { durationThreshold } = options;
|
|
44
|
+
if (durationThreshold !== void 0 && (!Number.isFinite(durationThreshold) || durationThreshold < 0)) throw new RangeError(`[VIZE_COMPOSE_PERF_OBSERVER_INVALID_DURATION_THRESHOLD] durationThreshold must be a finite, non-negative number, received ${String(durationThreshold)}`);
|
|
45
|
+
const isActive = shallowRef(false);
|
|
46
|
+
const error = shallowRef(void 0);
|
|
47
|
+
let observer;
|
|
48
|
+
const hydrated = shallowRef(!hasInjectionContext());
|
|
49
|
+
if (!hydrated.value) watchPostEffect(() => {
|
|
50
|
+
hydrated.value = true;
|
|
51
|
+
});
|
|
52
|
+
const resolveHost = () => {
|
|
53
|
+
if (!hydrated.value) return void 0;
|
|
54
|
+
return options.PerformanceObserver === void 0 ? browserPerformanceObserver() : unref(options.PerformanceObserver) ?? void 0;
|
|
55
|
+
};
|
|
56
|
+
const requestedTypes = () => {
|
|
57
|
+
const value = toValue(entryTypes);
|
|
58
|
+
return typeof value === "string" ? [value] : [...new Set(value)];
|
|
59
|
+
};
|
|
60
|
+
const observedTypes = computed(() => {
|
|
61
|
+
const host = resolveHost();
|
|
62
|
+
if (!host) return [];
|
|
63
|
+
const supportedTypes = host.supportedEntryTypes;
|
|
64
|
+
const requested = requestedTypes();
|
|
65
|
+
return supportedTypes ? requested.filter((type) => supportedTypes.includes(type)) : requested;
|
|
66
|
+
});
|
|
67
|
+
const disconnect = () => {
|
|
68
|
+
observer?.disconnect();
|
|
69
|
+
observer = void 0;
|
|
70
|
+
isActive.value = false;
|
|
71
|
+
};
|
|
72
|
+
const connect = () => {
|
|
73
|
+
disconnect();
|
|
74
|
+
const host = resolveHost();
|
|
75
|
+
const types = observedTypes.value;
|
|
76
|
+
if (!host || types.length === 0) return;
|
|
77
|
+
error.value = void 0;
|
|
78
|
+
const next = new host((list, current) => {
|
|
79
|
+
const entries = list.getEntries().filter((entry) => isEntryOf(entry, types));
|
|
80
|
+
if (entries.length > 0) callback(entries, current);
|
|
81
|
+
});
|
|
82
|
+
let observing = 0;
|
|
83
|
+
for (const type of types) try {
|
|
84
|
+
next.observe({
|
|
85
|
+
type,
|
|
86
|
+
...options.buffered === void 0 ? {} : { buffered: options.buffered },
|
|
87
|
+
...type === "event" && durationThreshold !== void 0 ? { durationThreshold } : {}
|
|
88
|
+
});
|
|
89
|
+
observing += 1;
|
|
90
|
+
} catch (cause) {
|
|
91
|
+
error.value = cause;
|
|
92
|
+
}
|
|
93
|
+
if (observing === 0) {
|
|
94
|
+
next.disconnect();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
observer = next;
|
|
98
|
+
isActive.value = true;
|
|
99
|
+
};
|
|
100
|
+
let enabled = options.immediate ?? true;
|
|
101
|
+
const stopWatch = watch(() => [resolveHost(), observedTypes.value.join(" ")], () => {
|
|
102
|
+
if (enabled) connect();
|
|
103
|
+
}, {
|
|
104
|
+
immediate: true,
|
|
105
|
+
flush: "sync"
|
|
106
|
+
});
|
|
107
|
+
const stop = () => {
|
|
108
|
+
enabled = false;
|
|
109
|
+
disconnect();
|
|
110
|
+
};
|
|
111
|
+
tryOnScopeDispose(() => {
|
|
112
|
+
stopWatch();
|
|
113
|
+
stop();
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
supported: computed(() => observedTypes.value.length > 0),
|
|
117
|
+
observedTypes,
|
|
118
|
+
isActive: readonly(isActive),
|
|
119
|
+
error: readonly(error),
|
|
120
|
+
start: () => {
|
|
121
|
+
enabled = true;
|
|
122
|
+
connect();
|
|
123
|
+
},
|
|
124
|
+
stop,
|
|
125
|
+
takeRecords: () => {
|
|
126
|
+
const types = observedTypes.value;
|
|
127
|
+
return observer ? observer.takeRecords().filter((entry) => isEntryOf(entry, types)) : [];
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
export { usePerformanceObserver };
|