@vizejs/composable 0.426.2 → 0.427.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abort-signal.d.mts +1 -1
- package/dist/active-element.d.mts +37 -0
- package/dist/active-element.mjs +56 -0
- package/dist/animate.d.mts +114 -0
- package/dist/animate.mjs +157 -0
- package/dist/battery.d.mts +61 -0
- package/dist/battery.mjs +90 -0
- package/dist/breakpoints.d.mts +82 -0
- package/dist/breakpoints.mjs +91 -0
- package/dist/catalog-BeTXFKxF.d.mts +4188 -0
- package/dist/catalog-r4Z5nptX.mjs +5144 -0
- package/dist/catalog.d.mts +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/color-mode.d.mts +131 -0
- package/dist/color-mode.mjs +133 -0
- package/dist/computed-async.d.mts +63 -0
- package/dist/computed-async.mjs +43 -0
- package/dist/computed-with-control.d.mts +44 -0
- package/dist/computed-with-control.mjs +54 -0
- package/dist/create-event-hook.d.mts +77 -0
- package/dist/create-event-hook.mjs +66 -0
- package/dist/create-global-state.d.mts +24 -0
- package/dist/create-global-state.mjs +34 -0
- package/dist/create-injection-state.d.mts +51 -0
- package/dist/create-injection-state.mjs +19 -0
- package/dist/create-shared-composable.d.mts +38 -0
- package/dist/create-shared-composable.mjs +54 -0
- package/dist/device-motion.d.mts +71 -0
- package/dist/device-motion.mjs +75 -0
- package/dist/device-orientation.d.mts +82 -0
- package/dist/device-orientation.mjs +86 -0
- package/dist/device-pixel-ratio.d.mts +45 -0
- package/dist/device-pixel-ratio.mjs +50 -0
- package/dist/document-visibility.mjs +6 -2
- package/dist/draggable.d.mts +121 -0
- package/dist/draggable.mjs +153 -0
- package/dist/element-bounding.d.mts +87 -0
- package/dist/element-bounding.mjs +95 -0
- package/dist/element-by-point.d.mts +70 -0
- package/dist/element-by-point.mjs +69 -0
- package/dist/element-hover.d.mts +42 -0
- package/dist/element-hover.mjs +70 -0
- package/dist/element-ref.d.mts +34 -0
- package/dist/element-ref.mjs +23 -0
- package/dist/element-target-Crpxl4D9.d.mts +60 -0
- package/dist/element-target.d.mts +2 -0
- package/dist/element-target.mjs +58 -0
- package/dist/event-listener.mjs +7 -3
- package/dist/focus.d.mts +69 -0
- package/dist/focus.mjs +124 -0
- package/dist/fps.d.mts +59 -0
- package/dist/fps.mjs +64 -0
- package/dist/geolocation.d.mts +98 -0
- package/dist/geolocation.mjs +86 -0
- package/dist/i18n.d.mts +237 -0
- package/dist/i18n.mjs +215 -0
- package/dist/icu-message.d.mts +235 -0
- package/dist/icu-message.mjs +343 -0
- package/dist/idle.d.mts +79 -0
- package/dist/idle.mjs +90 -0
- package/dist/index.d.mts +172 -6
- package/dist/index.mjs +173 -7
- package/dist/infinite-scroll.d.mts +56 -0
- package/dist/infinite-scroll.mjs +72 -0
- package/dist/intersection-observer.d.mts +122 -0
- package/dist/intersection-observer.mjs +117 -0
- package/dist/magic-keys.d.mts +121 -0
- package/dist/magic-keys.mjs +163 -0
- package/dist/math.d.mts +96 -0
- package/dist/math.mjs +84 -0
- package/dist/media-query.d.mts +3 -1
- package/dist/media-query.mjs +5 -3
- package/dist/mouse-in-element.d.mts +49 -0
- package/dist/mouse-in-element.mjs +66 -0
- package/dist/mouse.d.mts +77 -0
- package/dist/mouse.mjs +100 -0
- package/dist/mutation-observer.d.mts +98 -0
- package/dist/mutation-observer.mjs +69 -0
- package/dist/network.d.mts +96 -0
- package/dist/network.mjs +117 -0
- package/dist/on-click-outside.d.mts +69 -0
- package/dist/on-click-outside.mjs +115 -0
- package/dist/on-key-stroke.d.mts +71 -0
- package/dist/on-key-stroke.mjs +79 -0
- package/dist/on-long-press.d.mts +82 -0
- package/dist/on-long-press.mjs +105 -0
- package/dist/on-start-typing.d.mts +44 -0
- package/dist/on-start-typing.mjs +61 -0
- package/dist/page-leave.d.mts +26 -0
- package/dist/page-leave.mjs +40 -0
- package/dist/parent-element.d.mts +16 -0
- package/dist/parent-element.mjs +27 -0
- package/dist/pinch.d.mts +73 -0
- package/dist/pinch.mjs +138 -0
- package/dist/pointer-lock.d.mts +79 -0
- package/dist/pointer-lock.mjs +126 -0
- package/dist/pointer.d.mts +78 -0
- package/dist/pointer.mjs +95 -0
- package/dist/preferences.d.mts +55 -0
- package/dist/preferences.mjs +63 -0
- package/dist/preferred-languages.d.mts +43 -0
- package/dist/preferred-languages.mjs +44 -0
- package/dist/reactify.d.mts +28 -0
- package/dist/reactify.mjs +7 -0
- package/dist/ref-auto-reset.d.mts +47 -0
- package/dist/ref-auto-reset.mjs +70 -0
- package/dist/ref-debounced.d.mts +29 -0
- package/dist/ref-debounced.mjs +29 -0
- package/dist/ref-default.d.mts +27 -0
- package/dist/ref-default.mjs +33 -0
- package/dist/resize-observer.d.mts +96 -0
- package/dist/resize-observer.mjs +111 -0
- package/dist/resolver.d.mts +124 -0
- package/dist/resolver.mjs +138 -0
- package/dist/retry-async.d.mts +2 -2
- package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
- package/dist/retry-delay.d.mts +1 -72
- package/dist/screen-orientation.d.mts +77 -0
- package/dist/screen-orientation.mjs +74 -0
- package/dist/scroll-lock.d.mts +37 -0
- package/dist/scroll-lock.mjs +50 -0
- package/dist/scroll.d.mts +158 -0
- package/dist/scroll.mjs +172 -0
- package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
- package/dist/standard-schema.d.mts +2 -0
- package/dist/standard-schema.mjs +60 -0
- package/dist/swipe.d.mts +125 -0
- package/dist/swipe.mjs +225 -0
- package/dist/sync-ref.d.mts +80 -0
- package/dist/sync-ref.mjs +43 -0
- package/dist/text-selection.d.mts +46 -0
- package/dist/text-selection.mjs +62 -0
- package/dist/textarea-autosize.d.mts +58 -0
- package/dist/textarea-autosize.mjs +54 -0
- package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
- package/dist/timeout-scheduler.d.mts +1 -17
- package/dist/to-reactive.d.mts +26 -0
- package/dist/to-reactive.mjs +46 -0
- package/dist/transition.d.mts +125 -0
- package/dist/transition.mjs +266 -0
- package/dist/until.d.mts +177 -0
- package/dist/until.mjs +111 -0
- package/dist/use-array.d.mts +112 -0
- package/dist/use-array.mjs +90 -0
- package/dist/use-async-queue.d.mts +109 -0
- package/dist/use-async-queue.mjs +96 -0
- package/dist/use-async-state.d.mts +86 -0
- package/dist/use-async-state.mjs +41 -0
- package/dist/use-barcode-detector.d.mts +159 -0
- package/dist/use-barcode-detector.mjs +143 -0
- package/dist/use-bluetooth.d.mts +164 -0
- package/dist/use-bluetooth.mjs +183 -0
- package/dist/use-broadcast-channel.d.mts +115 -0
- package/dist/use-broadcast-channel.mjs +121 -0
- package/dist/use-builtin-ai.d.mts +342 -0
- package/dist/use-builtin-ai.mjs +261 -0
- package/dist/use-clipboard.d.mts +169 -0
- package/dist/use-clipboard.mjs +226 -0
- package/dist/use-compression-stream.d.mts +173 -0
- package/dist/use-compression-stream.mjs +166 -0
- package/dist/use-confirm-dialog.d.mts +70 -0
- package/dist/use-confirm-dialog.mjs +57 -0
- package/dist/use-contact-picker.d.mts +117 -0
- package/dist/use-contact-picker.mjs +103 -0
- package/dist/use-cookie.d.mts +196 -0
- package/dist/use-cookie.mjs +259 -0
- package/dist/use-countdown.d.mts +85 -0
- package/dist/use-countdown.mjs +74 -0
- package/dist/use-css-var.d.mts +96 -0
- package/dist/use-css-var.mjs +104 -0
- package/dist/use-cycle-list.d.mts +76 -0
- package/dist/use-cycle-list.mjs +39 -0
- package/dist/use-date-format.d.mts +103 -0
- package/dist/use-date-format.mjs +147 -0
- package/dist/use-date-time-format.d.mts +75 -0
- package/dist/use-date-time-format.mjs +53 -0
- package/dist/use-debounced.d.mts +1 -1
- package/dist/use-display-media.d.mts +62 -0
- package/dist/use-display-media.mjs +46 -0
- package/dist/use-display-names.d.mts +75 -0
- package/dist/use-display-names.mjs +52 -0
- package/dist/use-document-title.d.mts +88 -0
- package/dist/use-document-title.mjs +100 -0
- package/dist/use-drop-zone.d.mts +128 -0
- package/dist/use-drop-zone.mjs +154 -0
- package/dist/use-event-source.d.mts +184 -0
- package/dist/use-event-source.mjs +226 -0
- package/dist/use-eye-dropper.d.mts +79 -0
- package/dist/use-eye-dropper.mjs +68 -0
- package/dist/use-favicon.d.mts +78 -0
- package/dist/use-favicon.mjs +68 -0
- package/dist/use-fetch.d.mts +230 -0
- package/dist/use-fetch.mjs +263 -0
- package/dist/use-field.d.mts +107 -0
- package/dist/use-field.mjs +117 -0
- package/dist/use-file-dialog.d.mts +139 -0
- package/dist/use-file-dialog.mjs +101 -0
- package/dist/use-file-system-access.d.mts +184 -0
- package/dist/use-file-system-access.mjs +151 -0
- package/dist/use-form-field-props.d.mts +235 -0
- package/dist/use-form-field-props.mjs +164 -0
- package/dist/use-form.d.mts +324 -0
- package/dist/use-form.mjs +482 -0
- package/dist/use-fullscreen.d.mts +104 -0
- package/dist/use-fullscreen.mjs +95 -0
- package/dist/use-gamepad.d.mts +242 -0
- package/dist/use-gamepad.mjs +218 -0
- package/dist/use-hid.d.mts +160 -0
- package/dist/use-hid.mjs +156 -0
- package/dist/use-id-generator.d.mts +44 -0
- package/dist/use-id-generator.mjs +38 -0
- package/dist/use-image.d.mts +125 -0
- package/dist/use-image.mjs +109 -0
- package/dist/use-indexed-db.d.mts +207 -0
- package/dist/use-indexed-db.mjs +251 -0
- package/dist/use-interval-BA55gTHT.d.mts +140 -0
- package/dist/use-interval.d.mts +2 -0
- package/dist/use-interval.mjs +100 -0
- package/dist/use-list-format.d.mts +60 -0
- package/dist/use-list-format.mjs +40 -0
- package/dist/use-machine.d.mts +90 -0
- package/dist/use-machine.mjs +78 -0
- package/dist/use-map.d.mts +90 -0
- package/dist/use-map.mjs +70 -0
- package/dist/use-media-controls.d.mts +198 -0
- package/dist/use-media-controls.mjs +264 -0
- package/dist/use-memoize.d.mts +73 -0
- package/dist/use-memoize.mjs +28 -0
- package/dist/use-mounted.d.mts +24 -0
- package/dist/use-mounted.mjs +29 -0
- package/dist/use-navigation-api.d.mts +360 -0
- package/dist/use-navigation-api.mjs +231 -0
- package/dist/use-notification.d.mts +139 -0
- package/dist/use-notification.mjs +131 -0
- package/dist/use-now.d.mts +137 -0
- package/dist/use-now.mjs +44 -0
- package/dist/use-number-format.d.mts +73 -0
- package/dist/use-number-format.mjs +58 -0
- package/dist/use-object-url.d.mts +47 -0
- package/dist/use-object-url.mjs +54 -0
- package/dist/use-offset-pagination.d.mts +91 -0
- package/dist/use-offset-pagination.mjs +80 -0
- package/dist/use-payment-request.d.mts +239 -0
- package/dist/use-payment-request.mjs +206 -0
- package/dist/use-performance-observer.d.mts +285 -0
- package/dist/use-performance-observer.mjs +132 -0
- package/dist/use-permission.d.mts +99 -0
- package/dist/use-permission.mjs +92 -0
- package/dist/use-plural-rules.d.mts +79 -0
- package/dist/use-plural-rules.mjs +59 -0
- package/dist/use-push-subscription.d.mts +154 -0
- package/dist/use-push-subscription.mjs +146 -0
- package/dist/use-queue.d.mts +89 -0
- package/dist/use-queue.mjs +116 -0
- package/dist/use-raf-fn.d.mts +87 -0
- package/dist/use-raf-fn.mjs +99 -0
- package/dist/use-relative-time-format.d.mts +111 -0
- package/dist/use-relative-time-format.mjs +119 -0
- package/dist/use-request-idle-callback.d.mts +122 -0
- package/dist/use-request-idle-callback.mjs +147 -0
- package/dist/use-route-query.d.mts +149 -0
- package/dist/use-route-query.mjs +86 -0
- package/dist/use-scheduler-post-task.d.mts +156 -0
- package/dist/use-scheduler-post-task.mjs +182 -0
- package/dist/use-screen-details.d.mts +205 -0
- package/dist/use-screen-details.mjs +188 -0
- package/dist/use-script-tag.d.mts +162 -0
- package/dist/use-script-tag.mjs +171 -0
- package/dist/use-segmenter.d.mts +78 -0
- package/dist/use-segmenter.mjs +66 -0
- package/dist/use-selection.d.mts +125 -0
- package/dist/use-selection.mjs +77 -0
- package/dist/use-serial.d.mts +165 -0
- package/dist/use-serial.mjs +205 -0
- package/dist/use-service-worker.d.mts +177 -0
- package/dist/use-service-worker.mjs +178 -0
- package/dist/use-set.d.mts +96 -0
- package/dist/use-set.mjs +74 -0
- package/dist/use-share.d.mts +92 -0
- package/dist/use-share.mjs +99 -0
- package/dist/use-sorted-locale.d.mts +62 -0
- package/dist/use-sorted-locale.mjs +52 -0
- package/dist/use-sorted.d.mts +29 -0
- package/dist/use-sorted.mjs +14 -0
- package/dist/use-speech-recognition.d.mts +150 -0
- package/dist/use-speech-recognition.mjs +168 -0
- package/dist/use-speech-synthesis.d.mts +148 -0
- package/dist/use-speech-synthesis.mjs +152 -0
- package/dist/use-stack.d.mts +83 -0
- package/dist/use-stack.mjs +93 -0
- package/dist/use-stepper.d.mts +79 -0
- package/dist/use-stepper.mjs +52 -0
- package/dist/use-storage-estimate.d.mts +151 -0
- package/dist/use-storage-estimate.mjs +170 -0
- package/dist/use-storage.d.mts +214 -0
- package/dist/use-storage.mjs +415 -0
- package/dist/use-style-tag.d.mts +102 -0
- package/dist/use-style-tag.mjs +91 -0
- package/dist/use-supported.d.mts +23 -0
- package/dist/use-supported.mjs +26 -0
- package/dist/use-throttled.d.mts +1 -1
- package/dist/use-time-ago.d.mts +163 -0
- package/dist/use-time-ago.mjs +95 -0
- package/dist/use-timeout.d.mts +122 -0
- package/dist/use-timeout.mjs +65 -0
- package/dist/use-url-hash.d.mts +88 -0
- package/dist/use-url-hash.mjs +145 -0
- package/dist/use-url-search-params.d.mts +223 -0
- package/dist/use-url-search-params.mjs +295 -0
- package/dist/use-usb.d.mts +212 -0
- package/dist/use-usb.mjs +137 -0
- package/dist/use-user-activation.d.mts +83 -0
- package/dist/use-user-activation.mjs +113 -0
- package/dist/use-user-media.d.mts +194 -0
- package/dist/use-user-media.mjs +214 -0
- package/dist/use-v-model.d.mts +113 -0
- package/dist/use-v-model.mjs +40 -0
- package/dist/use-vibrate.d.mts +81 -0
- package/dist/use-vibrate.mjs +90 -0
- package/dist/use-view-transition.d.mts +106 -0
- package/dist/use-view-transition.mjs +101 -0
- package/dist/use-visual-viewport.d.mts +105 -0
- package/dist/use-visual-viewport.mjs +104 -0
- package/dist/use-wake-lock.d.mts +96 -0
- package/dist/use-wake-lock.mjs +106 -0
- package/dist/use-web-authn.d.mts +404 -0
- package/dist/use-web-authn.mjs +323 -0
- package/dist/use-web-locks.d.mts +180 -0
- package/dist/use-web-locks.mjs +136 -0
- package/dist/use-web-midi.d.mts +148 -0
- package/dist/use-web-midi.mjs +140 -0
- package/dist/use-web-vitals.d.mts +142 -0
- package/dist/use-web-vitals.mjs +248 -0
- package/dist/use-websocket.d.mts +218 -0
- package/dist/use-websocket.mjs +257 -0
- package/dist/use-worker-fn.d.mts +119 -0
- package/dist/use-worker-fn.mjs +162 -0
- package/dist/virtual-list.d.mts +105 -0
- package/dist/virtual-list.mjs +128 -0
- package/dist/watch-debounced.d.mts +84 -0
- package/dist/watch-debounced.mjs +84 -0
- package/dist/watch-ignorable.d.mts +47 -0
- package/dist/watch-ignorable.mjs +61 -0
- package/dist/watch-once.d.mts +29 -0
- package/dist/watch-once.mjs +10 -0
- package/dist/watch-pausable.d.mts +51 -0
- package/dist/watch-pausable.mjs +23 -0
- package/dist/watch-source.d.mts +29 -0
- package/dist/watch-source.mjs +1 -0
- package/dist/watch-throttled.d.mts +70 -0
- package/dist/watch-throttled.mjs +94 -0
- package/dist/whenever.d.mts +39 -0
- package/dist/whenever.mjs +41 -0
- package/dist/window-size.d.mts +87 -0
- package/dist/window-size.mjs +65 -0
- package/package.json +846 -5
- package/registry/files/abort-signal.ts +292 -0
- package/registry/files/active-element.ts +93 -0
- package/registry/files/animate.ts +322 -0
- package/registry/files/async-resource.ts +190 -0
- package/registry/files/battery.ts +166 -0
- package/registry/files/breakpoints.ts +166 -0
- package/registry/files/capability.ts +171 -0
- package/registry/files/color-mode.ts +274 -0
- package/registry/files/computed-async.ts +123 -0
- package/registry/files/computed-with-control.ts +80 -0
- package/registry/files/create-event-hook.ts +139 -0
- package/registry/files/create-global-state.ts +34 -0
- package/registry/files/create-injection-state.ts +75 -0
- package/registry/files/create-shared-composable.ts +74 -0
- package/registry/files/device-motion.ts +152 -0
- package/registry/files/device-orientation.ts +168 -0
- package/registry/files/device-pixel-ratio.ts +100 -0
- package/registry/files/disposal-scope.ts +201 -0
- package/registry/files/document-visibility.ts +152 -0
- package/registry/files/draggable.ts +273 -0
- package/registry/files/element-bounding.ts +175 -0
- package/registry/files/element-by-point.ts +149 -0
- package/registry/files/element-hover.ts +104 -0
- package/registry/files/element-ref.ts +58 -0
- package/registry/files/element-target.ts +99 -0
- package/registry/files/event-listener.ts +188 -0
- package/registry/files/focus.ts +181 -0
- package/registry/files/fps.ts +133 -0
- package/registry/files/geolocation.ts +214 -0
- package/registry/files/i18n.ts +524 -0
- package/registry/files/icu-message.ts +701 -0
- package/registry/files/idle.ts +176 -0
- package/registry/files/infinite-scroll.ts +135 -0
- package/registry/files/intersection-observer.ts +261 -0
- package/registry/files/locale.ts +148 -0
- package/registry/files/magic-keys.ts +298 -0
- package/registry/files/math.ts +175 -0
- package/registry/files/media-query.ts +102 -0
- package/registry/files/mouse-in-element.ts +107 -0
- package/registry/files/mouse.ts +167 -0
- package/registry/files/mutation-observer.ts +183 -0
- package/registry/files/network.ts +229 -0
- package/registry/files/on-click-outside.ts +178 -0
- package/registry/files/on-key-stroke.ts +135 -0
- package/registry/files/on-long-press.ts +188 -0
- package/registry/files/on-start-typing.ts +88 -0
- package/registry/files/page-leave.ts +57 -0
- package/registry/files/parent-element.ts +29 -0
- package/registry/files/pinch.ts +187 -0
- package/registry/files/pointer-lock.ts +232 -0
- package/registry/files/pointer.ts +153 -0
- package/registry/files/preferences.ts +98 -0
- package/registry/files/preferred-languages.ts +88 -0
- package/registry/files/reactify.ts +39 -0
- package/registry/files/ref-auto-reset.ts +102 -0
- package/registry/files/ref-debounced.ts +34 -0
- package/registry/files/ref-default.ts +35 -0
- package/registry/files/resize-observer.ts +220 -0
- package/registry/files/retry-async.ts +261 -0
- package/registry/files/retry-delay.ts +132 -0
- package/registry/files/scope.ts +21 -0
- package/registry/files/screen-orientation.ts +165 -0
- package/registry/files/scroll-lock.ts +80 -0
- package/registry/files/scroll.ts +338 -0
- package/registry/files/standard-schema.ts +163 -0
- package/registry/files/swipe.ts +321 -0
- package/registry/files/sync-ref.ts +166 -0
- package/registry/files/temporal.ts +182 -0
- package/registry/files/text-selection.ts +110 -0
- package/registry/files/textarea-autosize.ts +114 -0
- package/registry/files/timeout-scheduler.ts +16 -0
- package/registry/files/to-reactive.ts +44 -0
- package/registry/files/transition.ts +271 -0
- package/registry/files/until.ts +352 -0
- package/registry/files/use-array.ts +201 -0
- package/registry/files/use-async-queue.ts +278 -0
- package/registry/files/use-async-state.ts +139 -0
- package/registry/files/use-barcode-detector.ts +321 -0
- package/registry/files/use-bluetooth.ts +409 -0
- package/registry/files/use-broadcast-channel.ts +250 -0
- package/registry/files/use-builtin-ai.ts +674 -0
- package/registry/files/use-clipboard.ts +425 -0
- package/registry/files/use-compression-stream.ts +364 -0
- package/registry/files/use-confirm-dialog.ts +137 -0
- package/registry/files/use-contact-picker.ts +246 -0
- package/registry/files/use-cookie.ts +500 -0
- package/registry/files/use-countdown.ts +161 -0
- package/registry/files/use-counter.ts +147 -0
- package/registry/files/use-css-var.ts +191 -0
- package/registry/files/use-cycle-list.ts +136 -0
- package/registry/files/use-date-format.ts +281 -0
- package/registry/files/use-date-time-format.ts +113 -0
- package/registry/files/use-debounced.ts +163 -0
- package/registry/files/use-display-media.ts +89 -0
- package/registry/files/use-display-names.ts +122 -0
- package/registry/files/use-document-title.ts +196 -0
- package/registry/files/use-drop-zone.ts +287 -0
- package/registry/files/use-event-source.ts +470 -0
- package/registry/files/use-eye-dropper.ts +134 -0
- package/registry/files/use-favicon.ts +140 -0
- package/registry/files/use-fetch.ts +578 -0
- package/registry/files/use-field.ts +247 -0
- package/registry/files/use-file-dialog.ts +257 -0
- package/registry/files/use-file-system-access.ts +383 -0
- package/registry/files/use-form-field-props.ts +381 -0
- package/registry/files/use-form.ts +980 -0
- package/registry/files/use-fullscreen.ts +214 -0
- package/registry/files/use-gamepad.ts +463 -0
- package/registry/files/use-hid.ts +359 -0
- package/registry/files/use-history.ts +231 -0
- package/registry/files/use-id-generator.ts +61 -0
- package/registry/files/use-image.ts +253 -0
- package/registry/files/use-indexed-db.ts +508 -0
- package/registry/files/use-interval.ts +253 -0
- package/registry/files/use-list-format.ts +85 -0
- package/registry/files/use-machine.ts +171 -0
- package/registry/files/use-map.ts +145 -0
- package/registry/files/use-media-controls.ts +545 -0
- package/registry/files/use-memoize.ts +118 -0
- package/registry/files/use-mounted.ts +30 -0
- package/registry/files/use-navigation-api.ts +641 -0
- package/registry/files/use-notification.ts +285 -0
- package/registry/files/use-now.ts +194 -0
- package/registry/files/use-number-format.ts +120 -0
- package/registry/files/use-object-url.ts +87 -0
- package/registry/files/use-offset-pagination.ts +168 -0
- package/registry/files/use-payment-request.ts +465 -0
- package/registry/files/use-performance-observer.ts +469 -0
- package/registry/files/use-permission.ts +220 -0
- package/registry/files/use-plural-rules.ts +134 -0
- package/registry/files/use-previous.ts +62 -0
- package/registry/files/use-push-subscription.ts +352 -0
- package/registry/files/use-queue.ts +197 -0
- package/registry/files/use-raf-fn.ts +176 -0
- package/registry/files/use-relative-time-format.ts +201 -0
- package/registry/files/use-request-idle-callback.ts +278 -0
- package/registry/files/use-route-query.ts +300 -0
- package/registry/files/use-scheduler-post-task.ts +397 -0
- package/registry/files/use-screen-details.ts +393 -0
- package/registry/files/use-script-tag.ts +341 -0
- package/registry/files/use-segmenter.ts +147 -0
- package/registry/files/use-selection.ts +233 -0
- package/registry/files/use-serial.ts +404 -0
- package/registry/files/use-service-worker.ts +413 -0
- package/registry/files/use-set.ts +154 -0
- package/registry/files/use-share.ts +168 -0
- package/registry/files/use-sorted-locale.ts +130 -0
- package/registry/files/use-sorted.ts +49 -0
- package/registry/files/use-speech-recognition.ts +357 -0
- package/registry/files/use-speech-synthesis.ts +333 -0
- package/registry/files/use-stack.ts +164 -0
- package/registry/files/use-stepper.ts +166 -0
- package/registry/files/use-storage-estimate.ts +352 -0
- package/registry/files/use-storage.ts +635 -0
- package/registry/files/use-style-tag.ts +200 -0
- package/registry/files/use-supported.ts +26 -0
- package/registry/files/use-throttled.ts +215 -0
- package/registry/files/use-time-ago.ts +276 -0
- package/registry/files/use-timeout.ts +218 -0
- package/registry/files/use-toggle.ts +54 -0
- package/registry/files/use-url-hash.ts +280 -0
- package/registry/files/use-url-search-params.ts +497 -0
- package/registry/files/use-usb.ts +395 -0
- package/registry/files/use-user-activation.ts +215 -0
- package/registry/files/use-user-media.ts +422 -0
- package/registry/files/use-v-model.ts +210 -0
- package/registry/files/use-vibrate.ts +174 -0
- package/registry/files/use-view-transition.ts +229 -0
- package/registry/files/use-visual-viewport.ts +228 -0
- package/registry/files/use-wake-lock.ts +206 -0
- package/registry/files/use-web-authn.ts +793 -0
- package/registry/files/use-web-locks.ts +363 -0
- package/registry/files/use-web-midi.ts +306 -0
- package/registry/files/use-web-vitals.ts +409 -0
- package/registry/files/use-websocket.ts +553 -0
- package/registry/files/use-worker-fn.ts +306 -0
- package/registry/files/virtual-list.ts +230 -0
- package/registry/files/watch-debounced.ts +206 -0
- package/registry/files/watch-ignorable.ts +128 -0
- package/registry/files/watch-once.ts +46 -0
- package/registry/files/watch-pausable.ts +93 -0
- package/registry/files/watch-source.ts +51 -0
- package/registry/files/watch-throttled.ts +201 -0
- package/registry/files/whenever.ts +70 -0
- package/registry/files/window-size.ts +151 -0
- package/registry/registry.json +5792 -0
- package/dist/catalog-D2AL3xYl.d.mts +0 -523
- package/dist/catalog-D5SYCsgW.mjs +0 -549
package/dist/catalog.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-
|
|
1
|
+
import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-BeTXFKxF.mjs";
|
|
2
2
|
export { COMPOSABLE_CATALOG, type ComposableCatalog, type ComposableCategory, type ComposableCleanupOwner, type ComposableEntryMetadata, type ComposableHydrationBehavior, type ComposableInstallationAvailability, type ComposableRootEntryMetadata, type ComposableSsrBehavior, type ComposableStability, type ComposableUtilityMetadata };
|
package/dist/catalog.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as COMPOSABLE_CATALOG } from "./catalog-
|
|
1
|
+
import { t as COMPOSABLE_CATALOG } from "./catalog-r4Z5nptX.mjs";
|
|
2
2
|
export { COMPOSABLE_CATALOG };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
|
|
2
|
+
import { MediaQueryHost } from "./media-query.mjs";
|
|
3
|
+
import { StorageLike } from "./use-storage.mjs";
|
|
4
|
+
import { ComputedRef, MaybeRefOrGetter, WritableComputedRef } from "vue";
|
|
5
|
+
|
|
6
|
+
//#region src/color-mode.d.ts
|
|
7
|
+
/** Built-in color modes. */
|
|
8
|
+
type BasicColorMode = "light" | "dark";
|
|
9
|
+
/** Selectable mode: a built-in mode, a custom mode, or `"auto"` (follow the system). */
|
|
10
|
+
type ColorModeValue<Custom extends string = never> = BasicColorMode | Custom | "auto";
|
|
11
|
+
/**
|
|
12
|
+
* Synchronous key-value persistence used by {@link useColorMode}.
|
|
13
|
+
*
|
|
14
|
+
* The read/write subset of `StorageLike` from `./use-storage`, so
|
|
15
|
+
* `localStorage`, `sessionStorage`, and the same adapters work for both. For
|
|
16
|
+
* hydration-stable SSR pass a cookie-backed adapter that reads the request
|
|
17
|
+
* cookie on the server and `document.cookie` on the client.
|
|
18
|
+
*/
|
|
19
|
+
type ColorModeStorage = Pick<StorageLike, "getItem" | "setItem">;
|
|
20
|
+
/** Options for {@link useColorMode}. */
|
|
21
|
+
interface UseColorModeOptions<Custom extends string = never> {
|
|
22
|
+
/**
|
|
23
|
+
* Class name (or attribute value) written for each mode. Custom modes must
|
|
24
|
+
* be listed here.
|
|
25
|
+
*
|
|
26
|
+
* @default { light: "light", dark: "dark" }
|
|
27
|
+
*/
|
|
28
|
+
readonly modes?: Readonly<Partial<Record<BasicColorMode, string>> & Record<Custom, string>>;
|
|
29
|
+
/**
|
|
30
|
+
* `"class"` toggles class names; any other value is used as an attribute
|
|
31
|
+
* name (e.g. `"data-theme"`).
|
|
32
|
+
*
|
|
33
|
+
* @default "class"
|
|
34
|
+
*/
|
|
35
|
+
readonly attribute?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Element that receives the class/attribute.
|
|
38
|
+
*
|
|
39
|
+
* @default document.documentElement when available
|
|
40
|
+
*/
|
|
41
|
+
readonly target?: MaybeElementTarget;
|
|
42
|
+
/**
|
|
43
|
+
* Mode used when nothing is stored.
|
|
44
|
+
*
|
|
45
|
+
* @default "auto"
|
|
46
|
+
*/
|
|
47
|
+
readonly initialValue?: ColorModeValue<Custom>;
|
|
48
|
+
/**
|
|
49
|
+
* Storage key. `null` disables persistence.
|
|
50
|
+
*
|
|
51
|
+
* @default "vize-color-mode"
|
|
52
|
+
*/
|
|
53
|
+
readonly storageKey?: string | null;
|
|
54
|
+
/**
|
|
55
|
+
* Persistence adapter. `null` disables persistence.
|
|
56
|
+
*
|
|
57
|
+
* @default globalThis.window.localStorage when available
|
|
58
|
+
*/
|
|
59
|
+
readonly storage?: ColorModeStorage | null;
|
|
60
|
+
/**
|
|
61
|
+
* System preference assumed while no media capability exists (server rendering).
|
|
62
|
+
*
|
|
63
|
+
* @default "light"
|
|
64
|
+
*/
|
|
65
|
+
readonly ssrSystem?: BasicColorMode;
|
|
66
|
+
/**
|
|
67
|
+
* Suppress CSS transitions for one frame while switching modes.
|
|
68
|
+
*
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
71
|
+
readonly disableTransition?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Media capability used to read `prefers-color-scheme`.
|
|
74
|
+
*
|
|
75
|
+
* @default globalThis.window when available
|
|
76
|
+
*/
|
|
77
|
+
readonly host?: MaybeRefOrGetter<MediaQueryHost | null | undefined>;
|
|
78
|
+
}
|
|
79
|
+
/** Reactive color mode returned by {@link useColorMode}. */
|
|
80
|
+
interface ColorModeControls<Custom extends string> {
|
|
81
|
+
/** Selected mode, including `"auto"`. Assigning persists and applies it. */
|
|
82
|
+
readonly mode: WritableComputedRef<ColorModeValue<Custom>>;
|
|
83
|
+
/** System preference from `prefers-color-scheme`. */
|
|
84
|
+
readonly system: ComputedRef<BasicColorMode>;
|
|
85
|
+
/** Resolved mode (`"auto"` replaced by the system preference). */
|
|
86
|
+
readonly state: ComputedRef<BasicColorMode | Custom>;
|
|
87
|
+
/** Value read from storage at creation (or the initial value). */
|
|
88
|
+
readonly stored: ComputedRef<ColorModeValue<Custom>>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Reactive color mode with persistence and DOM application.
|
|
92
|
+
*
|
|
93
|
+
* The stored mode is read synchronously during setup through the injected
|
|
94
|
+
* storage, so a cookie adapter yields identical server and client renders.
|
|
95
|
+
* On the client the resolved mode is written to the target's class list (or
|
|
96
|
+
* attribute) after each change, optionally with transitions suppressed.
|
|
97
|
+
* Nothing touches the DOM during server rendering.
|
|
98
|
+
*
|
|
99
|
+
* @param options Modes, target, persistence, SSR fallback, and capabilities.
|
|
100
|
+
* @default options {}
|
|
101
|
+
* @returns Writable mode plus system and resolved state.
|
|
102
|
+
*/
|
|
103
|
+
declare function useColorMode<const Custom extends string = never>(options?: UseColorModeOptions<Custom>): ColorModeControls<Custom>;
|
|
104
|
+
/** Options for {@link useDark}. */
|
|
105
|
+
interface UseDarkOptions extends Omit<UseColorModeOptions, "modes"> {
|
|
106
|
+
/**
|
|
107
|
+
* Class/attribute value applied in dark mode.
|
|
108
|
+
*
|
|
109
|
+
* @default "dark"
|
|
110
|
+
*/
|
|
111
|
+
readonly valueDark?: string;
|
|
112
|
+
/**
|
|
113
|
+
* Class/attribute value applied in light mode.
|
|
114
|
+
*
|
|
115
|
+
* @default ""
|
|
116
|
+
*/
|
|
117
|
+
readonly valueLight?: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Boolean dark-mode switch built on {@link useColorMode}.
|
|
121
|
+
*
|
|
122
|
+
* Setting the ref to the current system preference stores `"auto"`, so the
|
|
123
|
+
* page keeps following the system until the user picks the opposite mode.
|
|
124
|
+
*
|
|
125
|
+
* @param options Dark/light values plus {@link useColorMode} options.
|
|
126
|
+
* @default options {}
|
|
127
|
+
* @returns Writable dark flag.
|
|
128
|
+
*/
|
|
129
|
+
declare function useDark(options?: UseDarkOptions): WritableComputedRef<boolean>;
|
|
130
|
+
//#endregion
|
|
131
|
+
export { BasicColorMode, ColorModeControls, ColorModeStorage, ColorModeValue, UseColorModeOptions, UseDarkOptions, useColorMode, useDark };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { resolveElement } from "./element-target.mjs";
|
|
3
|
+
import { useMediaQuery } from "./media-query.mjs";
|
|
4
|
+
import { computed, hasInjectionContext, onMounted, shallowRef, watch } from "vue";
|
|
5
|
+
//#region src/color-mode.ts
|
|
6
|
+
/**
|
|
7
|
+
* Reactive color mode with persistence and DOM application.
|
|
8
|
+
*
|
|
9
|
+
* The stored mode is read synchronously during setup through the injected
|
|
10
|
+
* storage, so a cookie adapter yields identical server and client renders.
|
|
11
|
+
* On the client the resolved mode is written to the target's class list (or
|
|
12
|
+
* attribute) after each change, optionally with transitions suppressed.
|
|
13
|
+
* Nothing touches the DOM during server rendering.
|
|
14
|
+
*
|
|
15
|
+
* @param options Modes, target, persistence, SSR fallback, and capabilities.
|
|
16
|
+
* @default options {}
|
|
17
|
+
* @returns Writable mode plus system and resolved state.
|
|
18
|
+
*/
|
|
19
|
+
function useColorMode(options = {}) {
|
|
20
|
+
const modes = {
|
|
21
|
+
light: "light",
|
|
22
|
+
dark: "dark",
|
|
23
|
+
...options.modes
|
|
24
|
+
};
|
|
25
|
+
const attribute = options.attribute ?? "class";
|
|
26
|
+
const storageKey = options.storageKey === void 0 ? "vize-color-mode" : options.storageKey;
|
|
27
|
+
const storage = options.storage === void 0 ? browserStorage() : options.storage;
|
|
28
|
+
const initial = options.initialValue ?? "auto";
|
|
29
|
+
const isMode = (value) => value === "auto" || value !== null && Object.hasOwn(modes, value);
|
|
30
|
+
const read = () => {
|
|
31
|
+
if (!storage || storageKey === null) return initial;
|
|
32
|
+
try {
|
|
33
|
+
const value = storage.getItem(storageKey);
|
|
34
|
+
return isMode(value) ? value : initial;
|
|
35
|
+
} catch {
|
|
36
|
+
return initial;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const deferRead = hasInjectionContext();
|
|
40
|
+
const storedValue = shallowRef(deferRead ? initial : read());
|
|
41
|
+
const selectedRaw = shallowRef(storedValue.value);
|
|
42
|
+
if (deferRead) onMounted(() => {
|
|
43
|
+
const value = read();
|
|
44
|
+
storedValue.value = value;
|
|
45
|
+
if (selectedRaw.value === initial) selectedRaw.value = value;
|
|
46
|
+
});
|
|
47
|
+
const selected = computed(() => isMode(selectedRaw.value) ? selectedRaw.value : initial);
|
|
48
|
+
const prefersDark = useMediaQuery("(prefers-color-scheme: dark)", options.host === void 0 ? { ssrValue: options.ssrSystem === "dark" } : {
|
|
49
|
+
ssrValue: options.ssrSystem === "dark",
|
|
50
|
+
host: options.host
|
|
51
|
+
});
|
|
52
|
+
const system = computed(() => prefersDark.value ? "dark" : "light");
|
|
53
|
+
const state = computed(() => selected.value === "auto" ? system.value : selected.value);
|
|
54
|
+
const target = () => options.target === void 0 ? typeof document !== "undefined" ? document.documentElement : null : resolveElement(options.target);
|
|
55
|
+
const stop = watch([state, target], ([resolved, element]) => {
|
|
56
|
+
if (!element) return;
|
|
57
|
+
const restore = options.disableTransition === false ? void 0 : suppressTransitions(element);
|
|
58
|
+
const value = modes[resolved] ?? resolved;
|
|
59
|
+
if (attribute === "class") {
|
|
60
|
+
for (const name of Object.values(modes)) for (const token of name.split(/\s+/)) if (token) element.classList.remove(token);
|
|
61
|
+
for (const token of value.split(/\s+/)) if (token) element.classList.add(token);
|
|
62
|
+
} else element.setAttribute(attribute, value);
|
|
63
|
+
restore?.();
|
|
64
|
+
}, {
|
|
65
|
+
immediate: true,
|
|
66
|
+
flush: "post"
|
|
67
|
+
});
|
|
68
|
+
tryOnScopeDispose(() => stop.stop());
|
|
69
|
+
return {
|
|
70
|
+
mode: computed({
|
|
71
|
+
get: () => selected.value,
|
|
72
|
+
set: (next) => {
|
|
73
|
+
selectedRaw.value = next;
|
|
74
|
+
if (!storage || storageKey === null) return;
|
|
75
|
+
try {
|
|
76
|
+
storage.setItem(storageKey, next);
|
|
77
|
+
} catch {}
|
|
78
|
+
}
|
|
79
|
+
}),
|
|
80
|
+
system,
|
|
81
|
+
state,
|
|
82
|
+
stored: computed(() => storedValue.value)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Boolean dark-mode switch built on {@link useColorMode}.
|
|
87
|
+
*
|
|
88
|
+
* Setting the ref to the current system preference stores `"auto"`, so the
|
|
89
|
+
* page keeps following the system until the user picks the opposite mode.
|
|
90
|
+
*
|
|
91
|
+
* @param options Dark/light values plus {@link useColorMode} options.
|
|
92
|
+
* @default options {}
|
|
93
|
+
* @returns Writable dark flag.
|
|
94
|
+
*/
|
|
95
|
+
function useDark(options = {}) {
|
|
96
|
+
const { valueDark = "dark", valueLight = "", ...rest } = options;
|
|
97
|
+
const colorMode = useColorMode({
|
|
98
|
+
...rest,
|
|
99
|
+
modes: {
|
|
100
|
+
dark: valueDark,
|
|
101
|
+
light: valueLight
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return computed({
|
|
105
|
+
get: () => colorMode.state.value === "dark",
|
|
106
|
+
set: (dark) => {
|
|
107
|
+
const preferred = dark ? "dark" : "light";
|
|
108
|
+
colorMode.mode.value = preferred === colorMode.system.value ? "auto" : preferred;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function suppressTransitions(element) {
|
|
113
|
+
const document = element.ownerDocument;
|
|
114
|
+
const head = document?.head;
|
|
115
|
+
if (!head || typeof document.createElement !== "function") return void 0;
|
|
116
|
+
const style = document.createElement("style");
|
|
117
|
+
style.textContent = "*,*::before,*::after{transition:none!important}";
|
|
118
|
+
head.appendChild(style);
|
|
119
|
+
return () => {
|
|
120
|
+
document.defaultView?.getComputedStyle(style).opacity;
|
|
121
|
+
style.remove();
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function browserStorage() {
|
|
125
|
+
if (typeof window === "undefined") return null;
|
|
126
|
+
try {
|
|
127
|
+
return window.localStorage;
|
|
128
|
+
} catch {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
export { useColorMode, useDark };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/computed-async.d.ts
|
|
4
|
+
/** Registers a callback run when the current evaluation becomes stale. */
|
|
5
|
+
type ComputedAsyncCancel = (onCancel: () => void) => void;
|
|
6
|
+
/** Context handed to a {@link computedAsync} evaluator. */
|
|
7
|
+
interface ComputedAsyncContext {
|
|
8
|
+
/** Aborted as soon as a newer evaluation starts or the scope stops. */
|
|
9
|
+
readonly signal: AbortSignal;
|
|
10
|
+
/** Register a callback for when this evaluation becomes stale. */
|
|
11
|
+
readonly onCancel: ComputedAsyncCancel;
|
|
12
|
+
}
|
|
13
|
+
/** Options for {@link computedAsync}. */
|
|
14
|
+
interface ComputedAsyncOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Defer the first evaluation until the value is read.
|
|
17
|
+
*
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
readonly lazy?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Ref that is `true` while an evaluation is in flight.
|
|
23
|
+
*
|
|
24
|
+
* @default an internal ref
|
|
25
|
+
*/
|
|
26
|
+
readonly evaluating?: Ref<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Receives evaluator failures; the previous value is kept.
|
|
29
|
+
*
|
|
30
|
+
* @default undefined (failures are dropped)
|
|
31
|
+
*/
|
|
32
|
+
readonly onError?: (error: unknown) => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Computed value backed by an async evaluator.
|
|
36
|
+
*
|
|
37
|
+
* Reactive dependencies read synchronously in the evaluator (before its
|
|
38
|
+
* first `await`) are tracked; when one changes, the previous evaluation is
|
|
39
|
+
* cancelled (its `signal` aborts and `onCancel` callbacks run) and a new one
|
|
40
|
+
* starts. Only the newest evaluation may write the result, so out-of-order
|
|
41
|
+
* responses can never win. The value holds `initial` until the first
|
|
42
|
+
* evaluation settles, which also keeps server and client markup identical
|
|
43
|
+
* during hydration (the server never waits for the promise). Results are
|
|
44
|
+
* stored shallowly: replace the value instead of mutating it.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const user = computedAsync(
|
|
49
|
+
* async ({ signal }) => (await fetch(`/users/${id.value}`, { signal })).json(),
|
|
50
|
+
* null,
|
|
51
|
+
* );
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @param evaluator Async (or sync) producer of the value.
|
|
55
|
+
* @param initial Value before the first evaluation settles.
|
|
56
|
+
* @param options Laziness, evaluating flag, and error hook.
|
|
57
|
+
* @default options {}
|
|
58
|
+
* @returns Readonly ref holding the newest settled value.
|
|
59
|
+
*/
|
|
60
|
+
declare function computedAsync<Value>(evaluator: (context: ComputedAsyncContext) => Value | Promise<Value>, initial: Value, options?: ComputedAsyncOptions): Readonly<Ref<Value>>;
|
|
61
|
+
declare function computedAsync<Value>(evaluator: (context: ComputedAsyncContext) => Value | Promise<Value>, initial?: undefined, options?: ComputedAsyncOptions): Readonly<Ref<Value | undefined>>;
|
|
62
|
+
//#endregion
|
|
63
|
+
export { ComputedAsyncCancel, ComputedAsyncContext, ComputedAsyncOptions, computedAsync };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { computed, shallowRef, watchEffect } from "vue";
|
|
2
|
+
//#region src/computed-async.ts
|
|
3
|
+
function computedAsync(evaluator, initial, options = {}) {
|
|
4
|
+
const started = shallowRef(!(options.lazy ?? false));
|
|
5
|
+
const current = shallowRef(initial);
|
|
6
|
+
const evaluating = options.evaluating ?? shallowRef(false);
|
|
7
|
+
let generation = 0;
|
|
8
|
+
watchEffect(async (onCleanup) => {
|
|
9
|
+
if (!started.value) return;
|
|
10
|
+
generation += 1;
|
|
11
|
+
const own = generation;
|
|
12
|
+
const controller = new AbortController();
|
|
13
|
+
const cancelCallbacks = [];
|
|
14
|
+
let settled = false;
|
|
15
|
+
onCleanup(() => {
|
|
16
|
+
if (settled) return;
|
|
17
|
+
controller.abort();
|
|
18
|
+
for (const callback of cancelCallbacks) callback();
|
|
19
|
+
});
|
|
20
|
+
evaluating.value = true;
|
|
21
|
+
try {
|
|
22
|
+
const result = await evaluator({
|
|
23
|
+
signal: controller.signal,
|
|
24
|
+
onCancel: (callback) => {
|
|
25
|
+
cancelCallbacks.push(callback);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (own === generation) current.value = result;
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (own === generation) options.onError?.(error);
|
|
31
|
+
} finally {
|
|
32
|
+
settled = true;
|
|
33
|
+
if (own === generation) evaluating.value = false;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
if (options.lazy ?? false) return computed(() => {
|
|
37
|
+
started.value = true;
|
|
38
|
+
return current.value;
|
|
39
|
+
});
|
|
40
|
+
return current;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { computedAsync };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Ref, WatchSource } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/computed-with-control.d.ts
|
|
4
|
+
/** Readonly cached value plus a manual invalidation trigger. */
|
|
5
|
+
interface ComputedWithControl<Value> extends Readonly<Ref<Value>> {
|
|
6
|
+
/** Mark the cached value stale; the next read recomputes it. */
|
|
7
|
+
readonly trigger: () => void;
|
|
8
|
+
}
|
|
9
|
+
/** Explicit dependency accepted by {@link computedWithControl}: anything Vue's `watch` accepts. */
|
|
10
|
+
type ComputedWithControlSource = WatchSource<unknown> | object | readonly (WatchSource<unknown> | object)[];
|
|
11
|
+
/** Options for {@link computedWithControl}. */
|
|
12
|
+
interface ComputedWithControlOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Invalidate on nested changes of the explicit sources.
|
|
15
|
+
*
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
readonly deep?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Computed value whose dependencies are declared explicitly.
|
|
22
|
+
*
|
|
23
|
+
* Only changes of `source` (or a manual {@link ComputedWithControl.trigger})
|
|
24
|
+
* invalidate the cache; reactive reads inside `getter` do not. Useful when
|
|
25
|
+
* the getter reads non-reactive data or should ignore some reactive reads.
|
|
26
|
+
* The getter receives the previous value and runs lazily on the next read.
|
|
27
|
+
* Pure derived state: SSR-safe; the invalidation watcher follows the owning
|
|
28
|
+
* reactive scope.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const snapshot = computedWithControl(version, () => expensiveRead(store));
|
|
33
|
+
* snapshot.trigger(); // force a refresh
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @param source Ref, getter, reactive object, or tuple of those.
|
|
37
|
+
* @param getter Produces the value from the previous one.
|
|
38
|
+
* @param options Depth of the source watch.
|
|
39
|
+
* @default options {}
|
|
40
|
+
* @returns The controlled computed ref.
|
|
41
|
+
*/
|
|
42
|
+
declare function computedWithControl<Value>(source: ComputedWithControlSource, getter: (previous: Value | undefined) => Value, options?: ComputedWithControlOptions): ComputedWithControl<Value>;
|
|
43
|
+
//#endregion
|
|
44
|
+
export { ComputedWithControl, ComputedWithControlOptions, ComputedWithControlSource, computedWithControl };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { customRef, watch } from "vue";
|
|
2
|
+
//#region src/computed-with-control.ts
|
|
3
|
+
/**
|
|
4
|
+
* Computed value whose dependencies are declared explicitly.
|
|
5
|
+
*
|
|
6
|
+
* Only changes of `source` (or a manual {@link ComputedWithControl.trigger})
|
|
7
|
+
* invalidate the cache; reactive reads inside `getter` do not. Useful when
|
|
8
|
+
* the getter reads non-reactive data or should ignore some reactive reads.
|
|
9
|
+
* The getter receives the previous value and runs lazily on the next read.
|
|
10
|
+
* Pure derived state: SSR-safe; the invalidation watcher follows the owning
|
|
11
|
+
* reactive scope.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const snapshot = computedWithControl(version, () => expensiveRead(store));
|
|
16
|
+
* snapshot.trigger(); // force a refresh
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @param source Ref, getter, reactive object, or tuple of those.
|
|
20
|
+
* @param getter Produces the value from the previous one.
|
|
21
|
+
* @param options Depth of the source watch.
|
|
22
|
+
* @default options {}
|
|
23
|
+
* @returns The controlled computed ref.
|
|
24
|
+
*/
|
|
25
|
+
function computedWithControl(source, getter, options = {}) {
|
|
26
|
+
let dirty = true;
|
|
27
|
+
let cached;
|
|
28
|
+
let notify = () => void 0;
|
|
29
|
+
const invalidate = () => {
|
|
30
|
+
dirty = true;
|
|
31
|
+
notify();
|
|
32
|
+
};
|
|
33
|
+
watch(source, invalidate, {
|
|
34
|
+
flush: "sync",
|
|
35
|
+
deep: options.deep ?? false
|
|
36
|
+
});
|
|
37
|
+
const value = customRef((track, trigger) => {
|
|
38
|
+
notify = trigger;
|
|
39
|
+
return {
|
|
40
|
+
get: () => {
|
|
41
|
+
track();
|
|
42
|
+
if (dirty || cached === void 0) {
|
|
43
|
+
cached = { value: getter(cached?.value) };
|
|
44
|
+
dirty = false;
|
|
45
|
+
}
|
|
46
|
+
return cached.value;
|
|
47
|
+
},
|
|
48
|
+
set: () => void 0
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
return Object.assign(value, { trigger: invalidate });
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { computedWithControl };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//#region src/create-event-hook.d.ts
|
|
2
|
+
/** Listener registered on an {@link EventHook}. */
|
|
3
|
+
type EventHookListener<Arguments extends readonly unknown[]> = (...args: Arguments) => unknown;
|
|
4
|
+
/** Registration handle returned by {@link EventHook.on}. */
|
|
5
|
+
interface EventHookSubscription {
|
|
6
|
+
/** Remove the listener. Idempotent. */
|
|
7
|
+
readonly off: () => void;
|
|
8
|
+
}
|
|
9
|
+
/** Options for {@link createEventHook}. */
|
|
10
|
+
interface CreateEventHookOptions {
|
|
11
|
+
/**
|
|
12
|
+
* What `on()` does when a hook created outside any component (a
|
|
13
|
+
* module-level hook shared by every request) is subscribed to from a
|
|
14
|
+
* component `setup` during server rendering. Vue never disposes server
|
|
15
|
+
* component scopes, so such listeners would accumulate across requests
|
|
16
|
+
* and keep every rendered component alive.
|
|
17
|
+
*
|
|
18
|
+
* - `"ignore"`: skip the registration (the returned `off` is a no-op) and
|
|
19
|
+
* warn once in development.
|
|
20
|
+
* - `"register"`: register anyway; the caller must call `off()`.
|
|
21
|
+
*
|
|
22
|
+
* Hooks created inside a component (request-local hooks) are unaffected.
|
|
23
|
+
*
|
|
24
|
+
* @default "ignore"
|
|
25
|
+
*/
|
|
26
|
+
readonly serverListeners?: "ignore" | "register";
|
|
27
|
+
}
|
|
28
|
+
/** Typed event emitter created by {@link createEventHook}. */
|
|
29
|
+
interface EventHook<Arguments extends readonly unknown[] = []> {
|
|
30
|
+
/**
|
|
31
|
+
* Add a listener. Inside an effect scope it is removed automatically when
|
|
32
|
+
* the scope stops. Adding the same function twice registers it once.
|
|
33
|
+
*/
|
|
34
|
+
readonly on: (listener: EventHookListener<Arguments>) => EventHookSubscription;
|
|
35
|
+
/** Remove a listener. */
|
|
36
|
+
readonly off: (listener: EventHookListener<Arguments>) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Call every listener with `args`, in registration order.
|
|
39
|
+
*
|
|
40
|
+
* @returns Settles with every listener's (awaited) result.
|
|
41
|
+
*/
|
|
42
|
+
readonly trigger: (...args: Arguments) => Promise<unknown[]>;
|
|
43
|
+
/** Remove every listener. */
|
|
44
|
+
readonly clear: () => void;
|
|
45
|
+
/** Number of registered listeners. */
|
|
46
|
+
readonly size: () => number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a small, strongly typed event emitter.
|
|
50
|
+
*
|
|
51
|
+
* The payload is a tuple type, so events can carry several named arguments
|
|
52
|
+
* (`createEventHook<[id: string, value: number]>()`) and `trigger` checks
|
|
53
|
+
* them. Listeners registered inside an effect scope unsubscribe themselves
|
|
54
|
+
* when it stops. Synchronous listener errors propagate from `trigger`;
|
|
55
|
+
* async rejections reject the returned promise.
|
|
56
|
+
*
|
|
57
|
+
* SSR: Vue does not dispose component scopes after a server render, so a
|
|
58
|
+
* listener that a server `setup` adds to a module-level hook would never be
|
|
59
|
+
* removed and would pile up once per request. By default such registrations
|
|
60
|
+
* are therefore skipped (with a one-time development warning); see
|
|
61
|
+
* {@link CreateEventHookOptions.serverListeners}. Hooks created inside a
|
|
62
|
+
* component, and every registration in the browser, behave normally.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* const saved = createEventHook<[id: string]>();
|
|
67
|
+
* saved.on((id) => toast(`Saved ${id}`));
|
|
68
|
+
* await saved.trigger("doc-1");
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @param options Server-side registration policy.
|
|
72
|
+
* @default options {}
|
|
73
|
+
* @returns The event hook.
|
|
74
|
+
*/
|
|
75
|
+
declare function createEventHook<Arguments extends readonly unknown[] = []>(options?: CreateEventHookOptions): EventHook<Arguments>;
|
|
76
|
+
//#endregion
|
|
77
|
+
export { CreateEventHookOptions, EventHook, EventHookListener, EventHookSubscription, createEventHook };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { tryOnScopeDispose } from "./scope.mjs";
|
|
2
|
+
import { hasInjectionContext } from "vue";
|
|
3
|
+
//#region src/create-event-hook.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a small, strongly typed event emitter.
|
|
6
|
+
*
|
|
7
|
+
* The payload is a tuple type, so events can carry several named arguments
|
|
8
|
+
* (`createEventHook<[id: string, value: number]>()`) and `trigger` checks
|
|
9
|
+
* them. Listeners registered inside an effect scope unsubscribe themselves
|
|
10
|
+
* when it stops. Synchronous listener errors propagate from `trigger`;
|
|
11
|
+
* async rejections reject the returned promise.
|
|
12
|
+
*
|
|
13
|
+
* SSR: Vue does not dispose component scopes after a server render, so a
|
|
14
|
+
* listener that a server `setup` adds to a module-level hook would never be
|
|
15
|
+
* removed and would pile up once per request. By default such registrations
|
|
16
|
+
* are therefore skipped (with a one-time development warning); see
|
|
17
|
+
* {@link CreateEventHookOptions.serverListeners}. Hooks created inside a
|
|
18
|
+
* component, and every registration in the browser, behave normally.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const saved = createEventHook<[id: string]>();
|
|
23
|
+
* saved.on((id) => toast(`Saved ${id}`));
|
|
24
|
+
* await saved.trigger("doc-1");
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @param options Server-side registration policy.
|
|
28
|
+
* @default options {}
|
|
29
|
+
* @returns The event hook.
|
|
30
|
+
*/
|
|
31
|
+
function createEventHook(options = {}) {
|
|
32
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
33
|
+
const shared = !hasInjectionContext();
|
|
34
|
+
let warned = false;
|
|
35
|
+
const off = (listener) => {
|
|
36
|
+
listeners.delete(listener);
|
|
37
|
+
};
|
|
38
|
+
const on = (listener) => {
|
|
39
|
+
if (shared && (options.serverListeners ?? "ignore") === "ignore" && typeof window === "undefined" && hasInjectionContext()) {
|
|
40
|
+
if (!warned && isDevelopment()) {
|
|
41
|
+
warned = true;
|
|
42
|
+
console.warn("[VIZE_COMPOSE_EVENT_HOOK_SERVER_LISTENER] a module-level event hook was subscribed to during server rendering; the listener was skipped because server component scopes are never disposed. Create the hook inside the component tree, or pass { serverListeners: \"register\" } and call off() yourself.");
|
|
43
|
+
}
|
|
44
|
+
return { off: () => void 0 };
|
|
45
|
+
}
|
|
46
|
+
listeners.add(listener);
|
|
47
|
+
const subscription = { off: () => off(listener) };
|
|
48
|
+
tryOnScopeDispose(subscription.off);
|
|
49
|
+
return subscription;
|
|
50
|
+
};
|
|
51
|
+
const trigger = (...args) => Promise.all([...listeners].map((listener) => listener(...args)));
|
|
52
|
+
return {
|
|
53
|
+
on,
|
|
54
|
+
off,
|
|
55
|
+
trigger,
|
|
56
|
+
clear: () => {
|
|
57
|
+
listeners.clear();
|
|
58
|
+
},
|
|
59
|
+
size: () => listeners.size
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function isDevelopment() {
|
|
63
|
+
return typeof process === "undefined" || process.env["NODE_ENV"] !== "production";
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { createEventHook };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/create-global-state.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Lift a state factory into application-wide state shared by every caller.
|
|
4
|
+
*
|
|
5
|
+
* The factory runs once, lazily on the first call, inside a detached effect
|
|
6
|
+
* scope so its watchers and computeds outlive any component; every later
|
|
7
|
+
* call returns the same state. Because the state is module-level, it is
|
|
8
|
+
* shared across all server requests: on the server, keep per-request state
|
|
9
|
+
* in `provide`/`createInjectionState` instead, or reset it per request.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const useSession = createGlobalState(() => ({ user: shallowRef<User | null>(null) }));
|
|
14
|
+
* useSession().user.value = currentUser;
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param factory Creates the state; may use any composable.
|
|
18
|
+
* @throws `Error` tagged `VIZE_COMPOSE_GLOBAL_STATE_INACTIVE_SCOPE` if the
|
|
19
|
+
* private scope cannot run (never expected in practice).
|
|
20
|
+
* @returns Accessor returning the shared state.
|
|
21
|
+
*/
|
|
22
|
+
declare function createGlobalState<State>(factory: () => State): () => State;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { createGlobalState };
|