@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,164 @@
|
|
|
1
|
+
import { computed, toValue } from "vue";
|
|
2
|
+
//#region src/use-form-field-props.ts
|
|
3
|
+
/** Derive the default control id for a path. */
|
|
4
|
+
function formFieldId(path, idPrefix = "field") {
|
|
5
|
+
const segment = path.replace(/[^A-Za-z0-9_-]+/g, "-");
|
|
6
|
+
return segment.length === 0 ? idPrefix : `${idPrefix}-${segment}`;
|
|
7
|
+
}
|
|
8
|
+
function readFlag(source, fallback) {
|
|
9
|
+
const value = source === void 0 ? void 0 : toValue(source);
|
|
10
|
+
return typeof value === "boolean" ? value : fallback;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Bind one `useForm` field to accessible field markup and any `v-model` control.
|
|
14
|
+
*
|
|
15
|
+
* Returns ids, ARIA relations (`fieldProps`), label/description/error props,
|
|
16
|
+
* and `modelProps` whose shapes match `@vizejs/ui`'s Field contracts
|
|
17
|
+
* structurally, so the bridge lives here without a runtime dependency on the
|
|
18
|
+
* UI package. Ids are derived from the path, so server and client agree
|
|
19
|
+
* without any instance-local id sequence.
|
|
20
|
+
*
|
|
21
|
+
* Server rendering: pure derived state, no host access. Cleanup: none needed
|
|
22
|
+
* beyond the owning form.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```vue
|
|
26
|
+
* <script setup lang="ts">
|
|
27
|
+
* const form = useForm({ initialValues: { address: { city: "" } } });
|
|
28
|
+
* const city = useFormFieldProps(form, "address.city");
|
|
29
|
+
* <\/script>
|
|
30
|
+
* <template>
|
|
31
|
+
* <label v-bind="city.labelProps.value">City</label>
|
|
32
|
+
* <TextInput v-bind="city.controlProps.value" />
|
|
33
|
+
* <p v-if="city.invalid.value" v-bind="city.errorMessageProps.value">{{ city.errorMessage.value }}</p>
|
|
34
|
+
* </template>
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @param form Controls returned by `useForm`.
|
|
38
|
+
* @param path Typed dotted path.
|
|
39
|
+
* @param options Id, relation, and error-visibility options.
|
|
40
|
+
* @default options {}
|
|
41
|
+
* @returns Typed bindings for the field.
|
|
42
|
+
*/
|
|
43
|
+
function useFormFieldProps(form, path, options = {}) {
|
|
44
|
+
const field = form.field(path);
|
|
45
|
+
const showErrors = options.showErrors ?? "touched";
|
|
46
|
+
const id = computed(() => {
|
|
47
|
+
const explicit = options.id === void 0 ? void 0 : toValue(options.id);
|
|
48
|
+
return typeof explicit === "string" && explicit.length > 0 ? explicit : formFieldId(path, options.idPrefix);
|
|
49
|
+
});
|
|
50
|
+
const invalid = computed(() => {
|
|
51
|
+
if (field.errors.value.length === 0) return false;
|
|
52
|
+
if (showErrors === "always") return true;
|
|
53
|
+
const submitted = form.submitCount.value > 0;
|
|
54
|
+
return showErrors === "submitted" ? submitted : submitted || field.touched.value;
|
|
55
|
+
});
|
|
56
|
+
const errorMessage = computed(() => invalid.value ? field.error.value : void 0);
|
|
57
|
+
const fieldProps = computed(() => {
|
|
58
|
+
const describedBy = [];
|
|
59
|
+
if (readFlag(options.hasDescription, false)) describedBy.push(`${id.value}-description`);
|
|
60
|
+
const referencesError = invalid.value && readFlag(options.hasErrorMessage, true);
|
|
61
|
+
if (referencesError) describedBy.push(`${id.value}-error`);
|
|
62
|
+
return {
|
|
63
|
+
id: id.value,
|
|
64
|
+
"aria-labelledby": `${id.value}-label`,
|
|
65
|
+
"aria-describedby": describedBy.length === 0 ? void 0 : describedBy.join(" "),
|
|
66
|
+
"aria-errormessage": referencesError ? `${id.value}-error` : void 0,
|
|
67
|
+
"aria-invalid": invalid.value ? "true" : void 0
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
const modelProps = computed(() => ({
|
|
71
|
+
modelValue: field.value.value,
|
|
72
|
+
"onUpdate:modelValue": (value) => {
|
|
73
|
+
field.value.value = value;
|
|
74
|
+
},
|
|
75
|
+
onBlur: field.onBlur
|
|
76
|
+
}));
|
|
77
|
+
return {
|
|
78
|
+
field,
|
|
79
|
+
id,
|
|
80
|
+
invalid,
|
|
81
|
+
errorMessage,
|
|
82
|
+
fieldProps,
|
|
83
|
+
labelProps: computed(() => ({
|
|
84
|
+
id: `${id.value}-label`,
|
|
85
|
+
for: id.value
|
|
86
|
+
})),
|
|
87
|
+
descriptionProps: computed(() => ({ id: `${id.value}-description` })),
|
|
88
|
+
errorMessageProps: computed(() => ({ id: `${id.value}-error` })),
|
|
89
|
+
modelProps,
|
|
90
|
+
controlProps: computed(() => ({
|
|
91
|
+
...fieldProps.value,
|
|
92
|
+
...modelProps.value
|
|
93
|
+
}))
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Convert form errors into ui `FormFieldError` entries (`{ name, message, path }`),
|
|
98
|
+
* one per message, so `@vizejs/ui` `Field` components match them by `name`.
|
|
99
|
+
*
|
|
100
|
+
* @param errors `form.errors.value`.
|
|
101
|
+
* @returns Entries in record order; the form-level `""` path has an empty `path`.
|
|
102
|
+
*/
|
|
103
|
+
function toFormFieldErrors(errors) {
|
|
104
|
+
return Object.entries(errors).flatMap(([name, messages]) => {
|
|
105
|
+
const path = name.length === 0 ? [] : name.split(".").map((segment) => /^\d+$/.test(segment) ? Number(segment) : segment);
|
|
106
|
+
return messages.map((message) => ({
|
|
107
|
+
name,
|
|
108
|
+
message,
|
|
109
|
+
path
|
|
110
|
+
}));
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Derive `@vizejs/ui` `ErrorSummary` fields from a `useForm` instance.
|
|
115
|
+
*
|
|
116
|
+
* Each invalid path becomes `{ id, message, label? }` pointing at the control
|
|
117
|
+
* id that {@link useFormFieldProps} assigns, in `order` then error order.
|
|
118
|
+
*
|
|
119
|
+
* Server rendering: pure derived state. Cleanup: none.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```vue
|
|
123
|
+
* <ErrorSummary :fields="summary" heading="Fix these fields" />
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @param form Controls returned by `useForm`.
|
|
127
|
+
* @param options Id, label, ordering, and visibility options.
|
|
128
|
+
* @default options {}
|
|
129
|
+
* @returns Summary fields, empty until errors should be shown.
|
|
130
|
+
*/
|
|
131
|
+
function useFormErrorSummaryFields(form, options = {}) {
|
|
132
|
+
const order = options.order ?? [];
|
|
133
|
+
const ids = options.ids ?? {};
|
|
134
|
+
const labels = options.labels ?? {};
|
|
135
|
+
return computed(() => {
|
|
136
|
+
if ((options.showErrors ?? "submitted") === "submitted" && form.submitCount.value === 0) return [];
|
|
137
|
+
const record = form.errors.value;
|
|
138
|
+
const paths = Object.keys(record).filter((path) => (record[path]?.length ?? 0) > 0);
|
|
139
|
+
const rank = (path) => {
|
|
140
|
+
const index = order.indexOf(path);
|
|
141
|
+
return index === -1 ? order.length : index;
|
|
142
|
+
};
|
|
143
|
+
return paths.map((path, index) => ({
|
|
144
|
+
path,
|
|
145
|
+
index
|
|
146
|
+
})).sort((left, right) => rank(left.path) - rank(right.path) || left.index - right.index).flatMap(({ path }) => {
|
|
147
|
+
const message = record[path]?.[0];
|
|
148
|
+
if (message === void 0) return [];
|
|
149
|
+
if (path.length === 0 && options.rootId === void 0) return [];
|
|
150
|
+
const id = path.length === 0 ? options.rootId ?? "" : ids[path] ?? formFieldId(path, options.idPrefix);
|
|
151
|
+
const label = labels[path];
|
|
152
|
+
return [label === void 0 ? {
|
|
153
|
+
id,
|
|
154
|
+
message
|
|
155
|
+
} : {
|
|
156
|
+
id,
|
|
157
|
+
message,
|
|
158
|
+
label
|
|
159
|
+
}];
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
//#endregion
|
|
164
|
+
export { formFieldId, toFormFieldErrors, useFormErrorSummaryFields, useFormFieldProps };
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { d as StandardSchemaV1 } from "./standard-schema-DmNgFVK5.mjs";
|
|
2
|
+
import { ComputedRef, Ref, ShallowRef, WritableComputedRef } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/use-form.d.ts
|
|
5
|
+
/** Values treated as leaves: paths never descend into them. */
|
|
6
|
+
type FormLeaf = string | number | bigint | boolean | symbol | null | undefined | Date | RegExp | Blob | Map<unknown, unknown> | Set<unknown> | ((...arguments_: never[]) => unknown);
|
|
7
|
+
type Decrement = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8];
|
|
8
|
+
/**
|
|
9
|
+
* Every dotted path into `Values`, as template-literal keys.
|
|
10
|
+
*
|
|
11
|
+
* Objects contribute their string keys, arrays and tuples contribute
|
|
12
|
+
* `${number}` segments, and {@link FormLeaf} values end a path. Recursion
|
|
13
|
+
* is bounded at eight levels to keep type checking fast.
|
|
14
|
+
*/
|
|
15
|
+
type FormPath<Values, Depth extends number = 8> = [Depth] extends [never] ? never : Values extends FormLeaf ? never : Values extends readonly (infer Item)[] ? `${number}` | `${number}.${FormPath<Item, Decrement[Depth]>}` : { [Key in keyof Values & string]: Key | (FormPath<Values[Key], Decrement[Depth]> extends infer Rest extends string ? [Rest] extends [never] ? never : `${Key}.${Rest}` : never) }[keyof Values & string];
|
|
16
|
+
/** Value type found at `Path` inside `Values`. */
|
|
17
|
+
type FormPathValue<Values, Path extends string> = Path extends `${infer Head}.${infer Rest}` ? Values extends readonly (infer Item)[] ? Head extends `${number}` ? FormPathValue<Item, Rest> : never : Head extends keyof Values ? FormPathValue<Values[Head], Rest> : never : Values extends readonly (infer Item)[] ? Path extends `${number}` ? Item : never : Path extends keyof Values ? Values[Path] : never;
|
|
18
|
+
/** Paths whose value is an array (usable with {@link FormControls.fieldArray}). */
|
|
19
|
+
type FormArrayPath<Values> = { [Path in FormPath<Values>]: FormPathValue<Values, Path> extends readonly unknown[] ? Path : never }[FormPath<Values>];
|
|
20
|
+
/** Item type of the array at `Path`. */
|
|
21
|
+
type FormArrayItem<Values, Path extends string> = FormPathValue<Values, Path> extends readonly (infer Item)[] ? Item : never;
|
|
22
|
+
/**
|
|
23
|
+
* Error messages keyed by dotted path; `""` holds form-level errors.
|
|
24
|
+
*
|
|
25
|
+
* Known paths are typed for autocompletion; the string index signature
|
|
26
|
+
* stays because schemas and servers may report paths that are not fields.
|
|
27
|
+
*/
|
|
28
|
+
type FormErrors<Values> = { readonly [Path in FormPath<Values> | ""]?: readonly string[] } & {
|
|
29
|
+
readonly [path: string]: readonly string[] | undefined;
|
|
30
|
+
};
|
|
31
|
+
/** Current errors as recorded: messages keyed by dotted path (`""` = form level). */
|
|
32
|
+
type FormErrorRecord = Readonly<Record<string, readonly string[]>>;
|
|
33
|
+
/** Result of a validator: messages, one message, or nothing when valid. */
|
|
34
|
+
type ValidatorResult = string | readonly string[] | null | undefined | void;
|
|
35
|
+
/** Context passed to field validators. */
|
|
36
|
+
interface FieldValidatorContext<Values> {
|
|
37
|
+
/** Current form values (`undefined` for standalone fields). */
|
|
38
|
+
readonly values: Values;
|
|
39
|
+
/** Dotted path of the validated field. */
|
|
40
|
+
readonly path: string;
|
|
41
|
+
/** Aborted when a newer validation supersedes this one. */
|
|
42
|
+
readonly signal: AbortSignal;
|
|
43
|
+
}
|
|
44
|
+
/** Plain validator for one field value. */
|
|
45
|
+
type FieldValidator<Value, Values = undefined> = (value: Value, context: FieldValidatorContext<Values>) => ValidatorResult | Promise<ValidatorResult>;
|
|
46
|
+
/** Plain validator for the whole form, returning errors keyed by path. */
|
|
47
|
+
type FormValidator<Values> = (values: Values, context: {
|
|
48
|
+
readonly signal: AbortSignal;
|
|
49
|
+
}) => FormErrors<Values> | undefined | void | Promise<FormErrors<Values> | undefined | void>;
|
|
50
|
+
/** Per-field validators keyed by path. */
|
|
51
|
+
type FormFieldValidators<Values> = { readonly [Path in FormPath<Values>]?: FieldValidator<FormPathValue<Values, Path>, Values> };
|
|
52
|
+
/** When validation runs automatically. */
|
|
53
|
+
type FormValidationTrigger = "change" | "blur" | "submit";
|
|
54
|
+
/** Discriminated outcome of {@link FormControls.validate} and submission. */
|
|
55
|
+
type FormResult<Output> = {
|
|
56
|
+
/** Every validator passed. */readonly status: "valid"; /** Schema output, or the values when no schema is configured. */
|
|
57
|
+
readonly value: Output;
|
|
58
|
+
} | {
|
|
59
|
+
/** At least one validator failed. */readonly status: "invalid"; /** Errors keyed by path. */
|
|
60
|
+
readonly errors: FormErrorRecord;
|
|
61
|
+
} | {
|
|
62
|
+
/** A newer validation started before this one finished. */readonly status: "superseded";
|
|
63
|
+
};
|
|
64
|
+
/** Options for {@link useForm}. */
|
|
65
|
+
interface UseFormOptions<Values extends object, Output> {
|
|
66
|
+
/** Initial values, or a factory producing fresh initial values. */
|
|
67
|
+
readonly initialValues: Values | (() => Values);
|
|
68
|
+
/**
|
|
69
|
+
* Standard Schema v1 validator for the whole form. Its output becomes the
|
|
70
|
+
* submitted value.
|
|
71
|
+
*
|
|
72
|
+
* @default undefined
|
|
73
|
+
*/
|
|
74
|
+
readonly schema?: StandardSchemaV1<NoInfer<Values>, Output>;
|
|
75
|
+
/**
|
|
76
|
+
* Plain whole-form validator.
|
|
77
|
+
*
|
|
78
|
+
* @default undefined
|
|
79
|
+
*/
|
|
80
|
+
readonly validate?: NoInfer<FormValidator<Values>>;
|
|
81
|
+
/**
|
|
82
|
+
* Plain per-field validators keyed by path.
|
|
83
|
+
*
|
|
84
|
+
* @default {}
|
|
85
|
+
*/
|
|
86
|
+
readonly validators?: NoInfer<FormFieldValidators<Values>>;
|
|
87
|
+
/**
|
|
88
|
+
* When fields validate before the first submit.
|
|
89
|
+
*
|
|
90
|
+
* @default "submit"
|
|
91
|
+
*/
|
|
92
|
+
readonly validateOn?: FormValidationTrigger;
|
|
93
|
+
/**
|
|
94
|
+
* When fields re-validate after the first submit.
|
|
95
|
+
*
|
|
96
|
+
* @default "change"
|
|
97
|
+
*/
|
|
98
|
+
readonly revalidateOn?: FormValidationTrigger;
|
|
99
|
+
/**
|
|
100
|
+
* Default submit handler for {@link FormControls.submit}.
|
|
101
|
+
*
|
|
102
|
+
* @default undefined
|
|
103
|
+
*/
|
|
104
|
+
readonly onSubmit?: (value: Output, context: {
|
|
105
|
+
readonly signal: AbortSignal;
|
|
106
|
+
}) => unknown;
|
|
107
|
+
}
|
|
108
|
+
/** Options for {@link FormControls.setValue}. */
|
|
109
|
+
interface SetFieldValueOptions {
|
|
110
|
+
/**
|
|
111
|
+
* Mark the field touched.
|
|
112
|
+
*
|
|
113
|
+
* @default false
|
|
114
|
+
*/
|
|
115
|
+
readonly touch?: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Validate the field after setting it.
|
|
118
|
+
*
|
|
119
|
+
* @default true while the active trigger is "change"
|
|
120
|
+
*/
|
|
121
|
+
readonly validate?: boolean;
|
|
122
|
+
}
|
|
123
|
+
/** Reactive controls for one field, returned by {@link FormControls.field}. */
|
|
124
|
+
interface FormFieldControls<Value, Path extends string = string> {
|
|
125
|
+
/** Dotted path of the field (also a suitable `name` attribute). */
|
|
126
|
+
readonly path: Path;
|
|
127
|
+
/** Writable value bound to the form state (use with `v-model`). */
|
|
128
|
+
readonly value: WritableComputedRef<Value>;
|
|
129
|
+
/** Current error messages. */
|
|
130
|
+
readonly errors: ComputedRef<readonly string[]>;
|
|
131
|
+
/** First error message. */
|
|
132
|
+
readonly error: ComputedRef<string | undefined>;
|
|
133
|
+
/** Whether the value differs from its initial value. */
|
|
134
|
+
readonly dirty: ComputedRef<boolean>;
|
|
135
|
+
/** Whether the field was blurred or touched programmatically. */
|
|
136
|
+
readonly touched: ComputedRef<boolean>;
|
|
137
|
+
/** Whether a validation of this field is pending. */
|
|
138
|
+
readonly validating: ComputedRef<boolean>;
|
|
139
|
+
/** Mark the field touched (wire to `blur`); validates when configured. */
|
|
140
|
+
readonly onBlur: () => void;
|
|
141
|
+
/**
|
|
142
|
+
* Validate this field.
|
|
143
|
+
*
|
|
144
|
+
* @returns Whether the field is valid (`false` also when superseded).
|
|
145
|
+
*/
|
|
146
|
+
readonly validate: () => Promise<boolean>;
|
|
147
|
+
/** Restore the initial value and clear errors and touched state. */
|
|
148
|
+
readonly reset: () => void;
|
|
149
|
+
}
|
|
150
|
+
/** One entry of a field array, with a stable key for `v-for`. */
|
|
151
|
+
interface FormArrayEntry<Item, Path extends string = string> {
|
|
152
|
+
/** Stable key that follows the item through moves. */
|
|
153
|
+
readonly key: number;
|
|
154
|
+
/** Current index. */
|
|
155
|
+
readonly index: number;
|
|
156
|
+
/** Dotted path of the item, e.g. `items.2`. */
|
|
157
|
+
readonly path: `${Path}.${number}`;
|
|
158
|
+
/** Current item value. */
|
|
159
|
+
readonly value: Item;
|
|
160
|
+
}
|
|
161
|
+
/** Typed operations on an array field, returned by {@link FormControls.fieldArray}. */
|
|
162
|
+
interface FormFieldArrayControls<Item, Path extends string = string> {
|
|
163
|
+
/** Entries with stable keys. */
|
|
164
|
+
readonly entries: ComputedRef<readonly FormArrayEntry<Item, Path>[]>;
|
|
165
|
+
/** Append items. */
|
|
166
|
+
readonly append: (...items: Item[]) => void;
|
|
167
|
+
/** Prepend items. */
|
|
168
|
+
readonly prepend: (...items: Item[]) => void;
|
|
169
|
+
/** Insert an item at `index`. */
|
|
170
|
+
readonly insert: (index: number, item: Item) => void;
|
|
171
|
+
/** Remove the item at `index`, shifting errors and touched state. */
|
|
172
|
+
readonly remove: (index: number) => void;
|
|
173
|
+
/** Move an item from one index to another, carrying its state along. */
|
|
174
|
+
readonly move: (from: number, to: number) => void;
|
|
175
|
+
/** Swap two items. */
|
|
176
|
+
readonly swap: (first: number, second: number) => void;
|
|
177
|
+
/** Replace all items and reset their state. */
|
|
178
|
+
readonly replace: (items: readonly Item[]) => void;
|
|
179
|
+
}
|
|
180
|
+
/** Reactive state and actions returned by {@link useForm}. */
|
|
181
|
+
interface FormControls<Values extends object, Output> {
|
|
182
|
+
/** Current values. Mutations are tracked (dirty state derives from them). */
|
|
183
|
+
readonly values: Ref<Values>;
|
|
184
|
+
/** Current errors keyed by path; `""` holds form-level errors. */
|
|
185
|
+
readonly errors: Readonly<ShallowRef<FormErrorRecord>>;
|
|
186
|
+
/** Whether no errors are currently recorded. */
|
|
187
|
+
readonly valid: ComputedRef<boolean>;
|
|
188
|
+
/** Whether any value differs from its initial value. */
|
|
189
|
+
readonly dirty: ComputedRef<boolean>;
|
|
190
|
+
/** Whether any validation is pending. */
|
|
191
|
+
readonly validating: ComputedRef<boolean>;
|
|
192
|
+
/** Whether a submission is in progress. */
|
|
193
|
+
readonly submitting: Readonly<Ref<boolean>>;
|
|
194
|
+
/** Number of submit attempts. */
|
|
195
|
+
readonly submitCount: Readonly<Ref<number>>;
|
|
196
|
+
/**
|
|
197
|
+
* Typed controls for one field.
|
|
198
|
+
*
|
|
199
|
+
* @param path Dotted path.
|
|
200
|
+
* @returns Field controls whose value type follows the path.
|
|
201
|
+
*/
|
|
202
|
+
readonly field: <Path extends FormPath<Values>>(path: Path) => FormFieldControls<FormPathValue<Values, Path>, Path>;
|
|
203
|
+
/**
|
|
204
|
+
* Typed operations for an array field.
|
|
205
|
+
*
|
|
206
|
+
* @param path Dotted path of an array.
|
|
207
|
+
* @returns Field array controls.
|
|
208
|
+
*/
|
|
209
|
+
readonly fieldArray: <Path extends FormArrayPath<Values>>(path: Path) => FormFieldArrayControls<FormArrayItem<Values, Path>, Path>;
|
|
210
|
+
/**
|
|
211
|
+
* Read the value at a path.
|
|
212
|
+
*
|
|
213
|
+
* @param path Dotted path.
|
|
214
|
+
* @returns The value.
|
|
215
|
+
*/
|
|
216
|
+
readonly getValue: <Path extends FormPath<Values>>(path: Path) => FormPathValue<Values, Path>;
|
|
217
|
+
/**
|
|
218
|
+
* Write the value at a path.
|
|
219
|
+
*
|
|
220
|
+
* @param path Dotted path.
|
|
221
|
+
* @param value New value.
|
|
222
|
+
* @param options Touch and validation behavior.
|
|
223
|
+
*/
|
|
224
|
+
readonly setValue: <Path extends FormPath<Values>>(path: Path, value: FormPathValue<Values, Path>, options?: SetFieldValueOptions) => void;
|
|
225
|
+
/**
|
|
226
|
+
* Replace (or shallowly merge) the values without touching initial values.
|
|
227
|
+
*
|
|
228
|
+
* @param values New values.
|
|
229
|
+
* @param options `merge: true` shallowly merges top-level keys.
|
|
230
|
+
*/
|
|
231
|
+
readonly setValues: (values: Partial<Values>, options?: {
|
|
232
|
+
readonly merge?: boolean;
|
|
233
|
+
}) => void;
|
|
234
|
+
/**
|
|
235
|
+
* Whether a field was touched.
|
|
236
|
+
*
|
|
237
|
+
* @param path Dotted path.
|
|
238
|
+
* @returns Touched state.
|
|
239
|
+
*/
|
|
240
|
+
readonly isTouched: (path: FormPath<Values>) => boolean;
|
|
241
|
+
/**
|
|
242
|
+
* Replace errors (for example with server-side errors).
|
|
243
|
+
*
|
|
244
|
+
* @param errors Errors keyed by path.
|
|
245
|
+
*/
|
|
246
|
+
readonly setErrors: (errors: FormErrors<Values>) => void;
|
|
247
|
+
/**
|
|
248
|
+
* Clear errors of one path, or all errors.
|
|
249
|
+
*
|
|
250
|
+
* @param path Dotted path; omit to clear everything.
|
|
251
|
+
*/
|
|
252
|
+
readonly clearErrors: (path?: FormPath<Values> | "") => void;
|
|
253
|
+
/**
|
|
254
|
+
* Run every validator, aborting any older validation still in flight.
|
|
255
|
+
*
|
|
256
|
+
* @returns The discriminated result; never rejects on validation failure.
|
|
257
|
+
*/
|
|
258
|
+
readonly validate: () => Promise<FormResult<Output>>;
|
|
259
|
+
/**
|
|
260
|
+
* Validate and, when valid, call `handler` (or the `onSubmit` option).
|
|
261
|
+
* A newer submit aborts an older one's pending validation.
|
|
262
|
+
*
|
|
263
|
+
* @param handler Submit handler overriding `onSubmit`.
|
|
264
|
+
* @returns The validation result.
|
|
265
|
+
*/
|
|
266
|
+
readonly submit: (handler?: (value: Output, context: {
|
|
267
|
+
readonly signal: AbortSignal;
|
|
268
|
+
}) => unknown) => Promise<FormResult<Output>>;
|
|
269
|
+
/**
|
|
270
|
+
* Create a `submit` event listener that prevents the native submission.
|
|
271
|
+
*
|
|
272
|
+
* @param handler Submit handler overriding `onSubmit`.
|
|
273
|
+
* @returns Event listener for `<form @submit>`.
|
|
274
|
+
*/
|
|
275
|
+
readonly handleSubmit: (handler?: (value: Output, context: {
|
|
276
|
+
readonly signal: AbortSignal;
|
|
277
|
+
}) => unknown) => (event?: Event) => Promise<FormResult<Output>>;
|
|
278
|
+
/**
|
|
279
|
+
* Restore initial values (or install new ones) and clear all state.
|
|
280
|
+
*
|
|
281
|
+
* @param values New initial values.
|
|
282
|
+
*/
|
|
283
|
+
readonly reset: (values?: Values) => void;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Fully typed form state with validation, field arrays, and submission.
|
|
287
|
+
*
|
|
288
|
+
* The value type is inferred from `initialValues`; every path is a
|
|
289
|
+
* template-literal key, so `field("address.city")` returns controls whose
|
|
290
|
+
* `value` is typed as the city's type and misspelled paths do not compile.
|
|
291
|
+
* Validation combines a Standard Schema v1 validator (Zod, Valibot, ArkType,
|
|
292
|
+
* … via the `~standard` protocol), a whole-form validator, and per-field
|
|
293
|
+
* validators; all may be asynchronous. A newer validation aborts older ones
|
|
294
|
+
* through their `signal` and their results are discarded, so a slow check
|
|
295
|
+
* can never overwrite fresher errors.
|
|
296
|
+
*
|
|
297
|
+
* This composable owns the *values*. `@vizejs/ui/form` owns accessible
|
|
298
|
+
* error presentation (error summaries, focus management, native constraint
|
|
299
|
+
* validation); feed {@link FormControls.errors} into it to render them.
|
|
300
|
+
*
|
|
301
|
+
* Server rendering: pure state, no host access; validation never runs
|
|
302
|
+
* automatically during setup, so server and client render the same markup.
|
|
303
|
+
* Pending validations are aborted when the owning scope stops.
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```ts
|
|
307
|
+
* const form = useForm({
|
|
308
|
+
* initialValues: { name: "", address: { city: "" }, tags: [] as string[] },
|
|
309
|
+
* validators: { name: (name) => (name ? undefined : "Required") },
|
|
310
|
+
* onSubmit: (values) => api.save(values),
|
|
311
|
+
* });
|
|
312
|
+
* const city = form.field("address.city"); // city.value: Ref<string>
|
|
313
|
+
* const tags = form.fieldArray("tags");
|
|
314
|
+
* tags.append("vue");
|
|
315
|
+
* ```
|
|
316
|
+
*
|
|
317
|
+
* @typeParam Values Form values, inferred from `initialValues`.
|
|
318
|
+
* @typeParam Output Submitted value, inferred from `schema` (defaults to `Values`).
|
|
319
|
+
* @param options Initial values, validators, triggers, and submit handler.
|
|
320
|
+
* @returns Form state and actions.
|
|
321
|
+
*/
|
|
322
|
+
declare function useForm<Values extends object, Output = Values>(options: UseFormOptions<Values, Output>): FormControls<Values, Output>;
|
|
323
|
+
//#endregion
|
|
324
|
+
export { FieldValidator, FieldValidatorContext, FormArrayEntry, FormArrayItem, FormArrayPath, FormControls, FormErrorRecord, FormErrors, FormFieldArrayControls, FormFieldControls, FormFieldValidators, FormLeaf, FormPath, FormPathValue, FormResult, FormValidationTrigger, FormValidator, SetFieldValueOptions, UseFormOptions, ValidatorResult, useForm };
|