@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.
Files changed (544) hide show
  1. package/dist/abort-signal.d.mts +1 -1
  2. package/dist/active-element.d.mts +37 -0
  3. package/dist/active-element.mjs +56 -0
  4. package/dist/animate.d.mts +114 -0
  5. package/dist/animate.mjs +157 -0
  6. package/dist/battery.d.mts +61 -0
  7. package/dist/battery.mjs +90 -0
  8. package/dist/breakpoints.d.mts +82 -0
  9. package/dist/breakpoints.mjs +91 -0
  10. package/dist/catalog-BeTXFKxF.d.mts +4188 -0
  11. package/dist/catalog-r4Z5nptX.mjs +5144 -0
  12. package/dist/catalog.d.mts +1 -1
  13. package/dist/catalog.mjs +1 -1
  14. package/dist/color-mode.d.mts +131 -0
  15. package/dist/color-mode.mjs +133 -0
  16. package/dist/computed-async.d.mts +63 -0
  17. package/dist/computed-async.mjs +43 -0
  18. package/dist/computed-with-control.d.mts +44 -0
  19. package/dist/computed-with-control.mjs +54 -0
  20. package/dist/create-event-hook.d.mts +77 -0
  21. package/dist/create-event-hook.mjs +66 -0
  22. package/dist/create-global-state.d.mts +24 -0
  23. package/dist/create-global-state.mjs +34 -0
  24. package/dist/create-injection-state.d.mts +51 -0
  25. package/dist/create-injection-state.mjs +19 -0
  26. package/dist/create-shared-composable.d.mts +38 -0
  27. package/dist/create-shared-composable.mjs +54 -0
  28. package/dist/device-motion.d.mts +71 -0
  29. package/dist/device-motion.mjs +75 -0
  30. package/dist/device-orientation.d.mts +82 -0
  31. package/dist/device-orientation.mjs +86 -0
  32. package/dist/device-pixel-ratio.d.mts +45 -0
  33. package/dist/device-pixel-ratio.mjs +50 -0
  34. package/dist/document-visibility.mjs +6 -2
  35. package/dist/draggable.d.mts +121 -0
  36. package/dist/draggable.mjs +153 -0
  37. package/dist/element-bounding.d.mts +87 -0
  38. package/dist/element-bounding.mjs +95 -0
  39. package/dist/element-by-point.d.mts +70 -0
  40. package/dist/element-by-point.mjs +69 -0
  41. package/dist/element-hover.d.mts +42 -0
  42. package/dist/element-hover.mjs +70 -0
  43. package/dist/element-ref.d.mts +34 -0
  44. package/dist/element-ref.mjs +23 -0
  45. package/dist/element-target-Crpxl4D9.d.mts +60 -0
  46. package/dist/element-target.d.mts +2 -0
  47. package/dist/element-target.mjs +58 -0
  48. package/dist/event-listener.mjs +7 -3
  49. package/dist/focus.d.mts +69 -0
  50. package/dist/focus.mjs +124 -0
  51. package/dist/fps.d.mts +59 -0
  52. package/dist/fps.mjs +64 -0
  53. package/dist/geolocation.d.mts +98 -0
  54. package/dist/geolocation.mjs +86 -0
  55. package/dist/i18n.d.mts +237 -0
  56. package/dist/i18n.mjs +215 -0
  57. package/dist/icu-message.d.mts +235 -0
  58. package/dist/icu-message.mjs +343 -0
  59. package/dist/idle.d.mts +79 -0
  60. package/dist/idle.mjs +90 -0
  61. package/dist/index.d.mts +172 -6
  62. package/dist/index.mjs +173 -7
  63. package/dist/infinite-scroll.d.mts +56 -0
  64. package/dist/infinite-scroll.mjs +72 -0
  65. package/dist/intersection-observer.d.mts +122 -0
  66. package/dist/intersection-observer.mjs +117 -0
  67. package/dist/magic-keys.d.mts +121 -0
  68. package/dist/magic-keys.mjs +163 -0
  69. package/dist/math.d.mts +96 -0
  70. package/dist/math.mjs +84 -0
  71. package/dist/media-query.d.mts +3 -1
  72. package/dist/media-query.mjs +5 -3
  73. package/dist/mouse-in-element.d.mts +49 -0
  74. package/dist/mouse-in-element.mjs +66 -0
  75. package/dist/mouse.d.mts +77 -0
  76. package/dist/mouse.mjs +100 -0
  77. package/dist/mutation-observer.d.mts +98 -0
  78. package/dist/mutation-observer.mjs +69 -0
  79. package/dist/network.d.mts +96 -0
  80. package/dist/network.mjs +117 -0
  81. package/dist/on-click-outside.d.mts +69 -0
  82. package/dist/on-click-outside.mjs +115 -0
  83. package/dist/on-key-stroke.d.mts +71 -0
  84. package/dist/on-key-stroke.mjs +79 -0
  85. package/dist/on-long-press.d.mts +82 -0
  86. package/dist/on-long-press.mjs +105 -0
  87. package/dist/on-start-typing.d.mts +44 -0
  88. package/dist/on-start-typing.mjs +61 -0
  89. package/dist/page-leave.d.mts +26 -0
  90. package/dist/page-leave.mjs +40 -0
  91. package/dist/parent-element.d.mts +16 -0
  92. package/dist/parent-element.mjs +27 -0
  93. package/dist/pinch.d.mts +73 -0
  94. package/dist/pinch.mjs +138 -0
  95. package/dist/pointer-lock.d.mts +79 -0
  96. package/dist/pointer-lock.mjs +126 -0
  97. package/dist/pointer.d.mts +78 -0
  98. package/dist/pointer.mjs +95 -0
  99. package/dist/preferences.d.mts +55 -0
  100. package/dist/preferences.mjs +63 -0
  101. package/dist/preferred-languages.d.mts +43 -0
  102. package/dist/preferred-languages.mjs +44 -0
  103. package/dist/reactify.d.mts +28 -0
  104. package/dist/reactify.mjs +7 -0
  105. package/dist/ref-auto-reset.d.mts +47 -0
  106. package/dist/ref-auto-reset.mjs +70 -0
  107. package/dist/ref-debounced.d.mts +29 -0
  108. package/dist/ref-debounced.mjs +29 -0
  109. package/dist/ref-default.d.mts +27 -0
  110. package/dist/ref-default.mjs +33 -0
  111. package/dist/resize-observer.d.mts +96 -0
  112. package/dist/resize-observer.mjs +111 -0
  113. package/dist/resolver.d.mts +124 -0
  114. package/dist/resolver.mjs +138 -0
  115. package/dist/retry-async.d.mts +2 -2
  116. package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
  117. package/dist/retry-delay.d.mts +1 -72
  118. package/dist/screen-orientation.d.mts +77 -0
  119. package/dist/screen-orientation.mjs +74 -0
  120. package/dist/scroll-lock.d.mts +37 -0
  121. package/dist/scroll-lock.mjs +50 -0
  122. package/dist/scroll.d.mts +158 -0
  123. package/dist/scroll.mjs +172 -0
  124. package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
  125. package/dist/standard-schema.d.mts +2 -0
  126. package/dist/standard-schema.mjs +60 -0
  127. package/dist/swipe.d.mts +125 -0
  128. package/dist/swipe.mjs +225 -0
  129. package/dist/sync-ref.d.mts +80 -0
  130. package/dist/sync-ref.mjs +43 -0
  131. package/dist/text-selection.d.mts +46 -0
  132. package/dist/text-selection.mjs +62 -0
  133. package/dist/textarea-autosize.d.mts +58 -0
  134. package/dist/textarea-autosize.mjs +54 -0
  135. package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
  136. package/dist/timeout-scheduler.d.mts +1 -17
  137. package/dist/to-reactive.d.mts +26 -0
  138. package/dist/to-reactive.mjs +46 -0
  139. package/dist/transition.d.mts +125 -0
  140. package/dist/transition.mjs +266 -0
  141. package/dist/until.d.mts +177 -0
  142. package/dist/until.mjs +111 -0
  143. package/dist/use-array.d.mts +112 -0
  144. package/dist/use-array.mjs +90 -0
  145. package/dist/use-async-queue.d.mts +109 -0
  146. package/dist/use-async-queue.mjs +96 -0
  147. package/dist/use-async-state.d.mts +86 -0
  148. package/dist/use-async-state.mjs +41 -0
  149. package/dist/use-barcode-detector.d.mts +159 -0
  150. package/dist/use-barcode-detector.mjs +143 -0
  151. package/dist/use-bluetooth.d.mts +164 -0
  152. package/dist/use-bluetooth.mjs +183 -0
  153. package/dist/use-broadcast-channel.d.mts +115 -0
  154. package/dist/use-broadcast-channel.mjs +121 -0
  155. package/dist/use-builtin-ai.d.mts +342 -0
  156. package/dist/use-builtin-ai.mjs +261 -0
  157. package/dist/use-clipboard.d.mts +169 -0
  158. package/dist/use-clipboard.mjs +226 -0
  159. package/dist/use-compression-stream.d.mts +173 -0
  160. package/dist/use-compression-stream.mjs +166 -0
  161. package/dist/use-confirm-dialog.d.mts +70 -0
  162. package/dist/use-confirm-dialog.mjs +57 -0
  163. package/dist/use-contact-picker.d.mts +117 -0
  164. package/dist/use-contact-picker.mjs +103 -0
  165. package/dist/use-cookie.d.mts +196 -0
  166. package/dist/use-cookie.mjs +259 -0
  167. package/dist/use-countdown.d.mts +85 -0
  168. package/dist/use-countdown.mjs +74 -0
  169. package/dist/use-css-var.d.mts +96 -0
  170. package/dist/use-css-var.mjs +104 -0
  171. package/dist/use-cycle-list.d.mts +76 -0
  172. package/dist/use-cycle-list.mjs +39 -0
  173. package/dist/use-date-format.d.mts +103 -0
  174. package/dist/use-date-format.mjs +147 -0
  175. package/dist/use-date-time-format.d.mts +75 -0
  176. package/dist/use-date-time-format.mjs +53 -0
  177. package/dist/use-debounced.d.mts +1 -1
  178. package/dist/use-display-media.d.mts +62 -0
  179. package/dist/use-display-media.mjs +46 -0
  180. package/dist/use-display-names.d.mts +75 -0
  181. package/dist/use-display-names.mjs +52 -0
  182. package/dist/use-document-title.d.mts +88 -0
  183. package/dist/use-document-title.mjs +100 -0
  184. package/dist/use-drop-zone.d.mts +128 -0
  185. package/dist/use-drop-zone.mjs +154 -0
  186. package/dist/use-event-source.d.mts +184 -0
  187. package/dist/use-event-source.mjs +226 -0
  188. package/dist/use-eye-dropper.d.mts +79 -0
  189. package/dist/use-eye-dropper.mjs +68 -0
  190. package/dist/use-favicon.d.mts +78 -0
  191. package/dist/use-favicon.mjs +68 -0
  192. package/dist/use-fetch.d.mts +230 -0
  193. package/dist/use-fetch.mjs +263 -0
  194. package/dist/use-field.d.mts +107 -0
  195. package/dist/use-field.mjs +117 -0
  196. package/dist/use-file-dialog.d.mts +139 -0
  197. package/dist/use-file-dialog.mjs +101 -0
  198. package/dist/use-file-system-access.d.mts +184 -0
  199. package/dist/use-file-system-access.mjs +151 -0
  200. package/dist/use-form-field-props.d.mts +235 -0
  201. package/dist/use-form-field-props.mjs +164 -0
  202. package/dist/use-form.d.mts +324 -0
  203. package/dist/use-form.mjs +482 -0
  204. package/dist/use-fullscreen.d.mts +104 -0
  205. package/dist/use-fullscreen.mjs +95 -0
  206. package/dist/use-gamepad.d.mts +242 -0
  207. package/dist/use-gamepad.mjs +218 -0
  208. package/dist/use-hid.d.mts +160 -0
  209. package/dist/use-hid.mjs +156 -0
  210. package/dist/use-id-generator.d.mts +44 -0
  211. package/dist/use-id-generator.mjs +38 -0
  212. package/dist/use-image.d.mts +125 -0
  213. package/dist/use-image.mjs +109 -0
  214. package/dist/use-indexed-db.d.mts +207 -0
  215. package/dist/use-indexed-db.mjs +251 -0
  216. package/dist/use-interval-BA55gTHT.d.mts +140 -0
  217. package/dist/use-interval.d.mts +2 -0
  218. package/dist/use-interval.mjs +100 -0
  219. package/dist/use-list-format.d.mts +60 -0
  220. package/dist/use-list-format.mjs +40 -0
  221. package/dist/use-machine.d.mts +90 -0
  222. package/dist/use-machine.mjs +78 -0
  223. package/dist/use-map.d.mts +90 -0
  224. package/dist/use-map.mjs +70 -0
  225. package/dist/use-media-controls.d.mts +198 -0
  226. package/dist/use-media-controls.mjs +264 -0
  227. package/dist/use-memoize.d.mts +73 -0
  228. package/dist/use-memoize.mjs +28 -0
  229. package/dist/use-mounted.d.mts +24 -0
  230. package/dist/use-mounted.mjs +29 -0
  231. package/dist/use-navigation-api.d.mts +360 -0
  232. package/dist/use-navigation-api.mjs +231 -0
  233. package/dist/use-notification.d.mts +139 -0
  234. package/dist/use-notification.mjs +131 -0
  235. package/dist/use-now.d.mts +137 -0
  236. package/dist/use-now.mjs +44 -0
  237. package/dist/use-number-format.d.mts +73 -0
  238. package/dist/use-number-format.mjs +58 -0
  239. package/dist/use-object-url.d.mts +47 -0
  240. package/dist/use-object-url.mjs +54 -0
  241. package/dist/use-offset-pagination.d.mts +91 -0
  242. package/dist/use-offset-pagination.mjs +80 -0
  243. package/dist/use-payment-request.d.mts +239 -0
  244. package/dist/use-payment-request.mjs +206 -0
  245. package/dist/use-performance-observer.d.mts +285 -0
  246. package/dist/use-performance-observer.mjs +132 -0
  247. package/dist/use-permission.d.mts +99 -0
  248. package/dist/use-permission.mjs +92 -0
  249. package/dist/use-plural-rules.d.mts +79 -0
  250. package/dist/use-plural-rules.mjs +59 -0
  251. package/dist/use-push-subscription.d.mts +154 -0
  252. package/dist/use-push-subscription.mjs +146 -0
  253. package/dist/use-queue.d.mts +89 -0
  254. package/dist/use-queue.mjs +116 -0
  255. package/dist/use-raf-fn.d.mts +87 -0
  256. package/dist/use-raf-fn.mjs +99 -0
  257. package/dist/use-relative-time-format.d.mts +111 -0
  258. package/dist/use-relative-time-format.mjs +119 -0
  259. package/dist/use-request-idle-callback.d.mts +122 -0
  260. package/dist/use-request-idle-callback.mjs +147 -0
  261. package/dist/use-route-query.d.mts +149 -0
  262. package/dist/use-route-query.mjs +86 -0
  263. package/dist/use-scheduler-post-task.d.mts +156 -0
  264. package/dist/use-scheduler-post-task.mjs +182 -0
  265. package/dist/use-screen-details.d.mts +205 -0
  266. package/dist/use-screen-details.mjs +188 -0
  267. package/dist/use-script-tag.d.mts +162 -0
  268. package/dist/use-script-tag.mjs +171 -0
  269. package/dist/use-segmenter.d.mts +78 -0
  270. package/dist/use-segmenter.mjs +66 -0
  271. package/dist/use-selection.d.mts +125 -0
  272. package/dist/use-selection.mjs +77 -0
  273. package/dist/use-serial.d.mts +165 -0
  274. package/dist/use-serial.mjs +205 -0
  275. package/dist/use-service-worker.d.mts +177 -0
  276. package/dist/use-service-worker.mjs +178 -0
  277. package/dist/use-set.d.mts +96 -0
  278. package/dist/use-set.mjs +74 -0
  279. package/dist/use-share.d.mts +92 -0
  280. package/dist/use-share.mjs +99 -0
  281. package/dist/use-sorted-locale.d.mts +62 -0
  282. package/dist/use-sorted-locale.mjs +52 -0
  283. package/dist/use-sorted.d.mts +29 -0
  284. package/dist/use-sorted.mjs +14 -0
  285. package/dist/use-speech-recognition.d.mts +150 -0
  286. package/dist/use-speech-recognition.mjs +168 -0
  287. package/dist/use-speech-synthesis.d.mts +148 -0
  288. package/dist/use-speech-synthesis.mjs +152 -0
  289. package/dist/use-stack.d.mts +83 -0
  290. package/dist/use-stack.mjs +93 -0
  291. package/dist/use-stepper.d.mts +79 -0
  292. package/dist/use-stepper.mjs +52 -0
  293. package/dist/use-storage-estimate.d.mts +151 -0
  294. package/dist/use-storage-estimate.mjs +170 -0
  295. package/dist/use-storage.d.mts +214 -0
  296. package/dist/use-storage.mjs +415 -0
  297. package/dist/use-style-tag.d.mts +102 -0
  298. package/dist/use-style-tag.mjs +91 -0
  299. package/dist/use-supported.d.mts +23 -0
  300. package/dist/use-supported.mjs +26 -0
  301. package/dist/use-throttled.d.mts +1 -1
  302. package/dist/use-time-ago.d.mts +163 -0
  303. package/dist/use-time-ago.mjs +95 -0
  304. package/dist/use-timeout.d.mts +122 -0
  305. package/dist/use-timeout.mjs +65 -0
  306. package/dist/use-url-hash.d.mts +88 -0
  307. package/dist/use-url-hash.mjs +145 -0
  308. package/dist/use-url-search-params.d.mts +223 -0
  309. package/dist/use-url-search-params.mjs +295 -0
  310. package/dist/use-usb.d.mts +212 -0
  311. package/dist/use-usb.mjs +137 -0
  312. package/dist/use-user-activation.d.mts +83 -0
  313. package/dist/use-user-activation.mjs +113 -0
  314. package/dist/use-user-media.d.mts +194 -0
  315. package/dist/use-user-media.mjs +214 -0
  316. package/dist/use-v-model.d.mts +113 -0
  317. package/dist/use-v-model.mjs +40 -0
  318. package/dist/use-vibrate.d.mts +81 -0
  319. package/dist/use-vibrate.mjs +90 -0
  320. package/dist/use-view-transition.d.mts +106 -0
  321. package/dist/use-view-transition.mjs +101 -0
  322. package/dist/use-visual-viewport.d.mts +105 -0
  323. package/dist/use-visual-viewport.mjs +104 -0
  324. package/dist/use-wake-lock.d.mts +96 -0
  325. package/dist/use-wake-lock.mjs +106 -0
  326. package/dist/use-web-authn.d.mts +404 -0
  327. package/dist/use-web-authn.mjs +323 -0
  328. package/dist/use-web-locks.d.mts +180 -0
  329. package/dist/use-web-locks.mjs +136 -0
  330. package/dist/use-web-midi.d.mts +148 -0
  331. package/dist/use-web-midi.mjs +140 -0
  332. package/dist/use-web-vitals.d.mts +142 -0
  333. package/dist/use-web-vitals.mjs +248 -0
  334. package/dist/use-websocket.d.mts +218 -0
  335. package/dist/use-websocket.mjs +257 -0
  336. package/dist/use-worker-fn.d.mts +119 -0
  337. package/dist/use-worker-fn.mjs +162 -0
  338. package/dist/virtual-list.d.mts +105 -0
  339. package/dist/virtual-list.mjs +128 -0
  340. package/dist/watch-debounced.d.mts +84 -0
  341. package/dist/watch-debounced.mjs +84 -0
  342. package/dist/watch-ignorable.d.mts +47 -0
  343. package/dist/watch-ignorable.mjs +61 -0
  344. package/dist/watch-once.d.mts +29 -0
  345. package/dist/watch-once.mjs +10 -0
  346. package/dist/watch-pausable.d.mts +51 -0
  347. package/dist/watch-pausable.mjs +23 -0
  348. package/dist/watch-source.d.mts +29 -0
  349. package/dist/watch-source.mjs +1 -0
  350. package/dist/watch-throttled.d.mts +70 -0
  351. package/dist/watch-throttled.mjs +94 -0
  352. package/dist/whenever.d.mts +39 -0
  353. package/dist/whenever.mjs +41 -0
  354. package/dist/window-size.d.mts +87 -0
  355. package/dist/window-size.mjs +65 -0
  356. package/package.json +846 -5
  357. package/registry/files/abort-signal.ts +292 -0
  358. package/registry/files/active-element.ts +93 -0
  359. package/registry/files/animate.ts +322 -0
  360. package/registry/files/async-resource.ts +190 -0
  361. package/registry/files/battery.ts +166 -0
  362. package/registry/files/breakpoints.ts +166 -0
  363. package/registry/files/capability.ts +171 -0
  364. package/registry/files/color-mode.ts +274 -0
  365. package/registry/files/computed-async.ts +123 -0
  366. package/registry/files/computed-with-control.ts +80 -0
  367. package/registry/files/create-event-hook.ts +139 -0
  368. package/registry/files/create-global-state.ts +34 -0
  369. package/registry/files/create-injection-state.ts +75 -0
  370. package/registry/files/create-shared-composable.ts +74 -0
  371. package/registry/files/device-motion.ts +152 -0
  372. package/registry/files/device-orientation.ts +168 -0
  373. package/registry/files/device-pixel-ratio.ts +100 -0
  374. package/registry/files/disposal-scope.ts +201 -0
  375. package/registry/files/document-visibility.ts +152 -0
  376. package/registry/files/draggable.ts +273 -0
  377. package/registry/files/element-bounding.ts +175 -0
  378. package/registry/files/element-by-point.ts +149 -0
  379. package/registry/files/element-hover.ts +104 -0
  380. package/registry/files/element-ref.ts +58 -0
  381. package/registry/files/element-target.ts +99 -0
  382. package/registry/files/event-listener.ts +188 -0
  383. package/registry/files/focus.ts +181 -0
  384. package/registry/files/fps.ts +133 -0
  385. package/registry/files/geolocation.ts +214 -0
  386. package/registry/files/i18n.ts +524 -0
  387. package/registry/files/icu-message.ts +701 -0
  388. package/registry/files/idle.ts +176 -0
  389. package/registry/files/infinite-scroll.ts +135 -0
  390. package/registry/files/intersection-observer.ts +261 -0
  391. package/registry/files/locale.ts +148 -0
  392. package/registry/files/magic-keys.ts +298 -0
  393. package/registry/files/math.ts +175 -0
  394. package/registry/files/media-query.ts +102 -0
  395. package/registry/files/mouse-in-element.ts +107 -0
  396. package/registry/files/mouse.ts +167 -0
  397. package/registry/files/mutation-observer.ts +183 -0
  398. package/registry/files/network.ts +229 -0
  399. package/registry/files/on-click-outside.ts +178 -0
  400. package/registry/files/on-key-stroke.ts +135 -0
  401. package/registry/files/on-long-press.ts +188 -0
  402. package/registry/files/on-start-typing.ts +88 -0
  403. package/registry/files/page-leave.ts +57 -0
  404. package/registry/files/parent-element.ts +29 -0
  405. package/registry/files/pinch.ts +187 -0
  406. package/registry/files/pointer-lock.ts +232 -0
  407. package/registry/files/pointer.ts +153 -0
  408. package/registry/files/preferences.ts +98 -0
  409. package/registry/files/preferred-languages.ts +88 -0
  410. package/registry/files/reactify.ts +39 -0
  411. package/registry/files/ref-auto-reset.ts +102 -0
  412. package/registry/files/ref-debounced.ts +34 -0
  413. package/registry/files/ref-default.ts +35 -0
  414. package/registry/files/resize-observer.ts +220 -0
  415. package/registry/files/retry-async.ts +261 -0
  416. package/registry/files/retry-delay.ts +132 -0
  417. package/registry/files/scope.ts +21 -0
  418. package/registry/files/screen-orientation.ts +165 -0
  419. package/registry/files/scroll-lock.ts +80 -0
  420. package/registry/files/scroll.ts +338 -0
  421. package/registry/files/standard-schema.ts +163 -0
  422. package/registry/files/swipe.ts +321 -0
  423. package/registry/files/sync-ref.ts +166 -0
  424. package/registry/files/temporal.ts +182 -0
  425. package/registry/files/text-selection.ts +110 -0
  426. package/registry/files/textarea-autosize.ts +114 -0
  427. package/registry/files/timeout-scheduler.ts +16 -0
  428. package/registry/files/to-reactive.ts +44 -0
  429. package/registry/files/transition.ts +271 -0
  430. package/registry/files/until.ts +352 -0
  431. package/registry/files/use-array.ts +201 -0
  432. package/registry/files/use-async-queue.ts +278 -0
  433. package/registry/files/use-async-state.ts +139 -0
  434. package/registry/files/use-barcode-detector.ts +321 -0
  435. package/registry/files/use-bluetooth.ts +409 -0
  436. package/registry/files/use-broadcast-channel.ts +250 -0
  437. package/registry/files/use-builtin-ai.ts +674 -0
  438. package/registry/files/use-clipboard.ts +425 -0
  439. package/registry/files/use-compression-stream.ts +364 -0
  440. package/registry/files/use-confirm-dialog.ts +137 -0
  441. package/registry/files/use-contact-picker.ts +246 -0
  442. package/registry/files/use-cookie.ts +500 -0
  443. package/registry/files/use-countdown.ts +161 -0
  444. package/registry/files/use-counter.ts +147 -0
  445. package/registry/files/use-css-var.ts +191 -0
  446. package/registry/files/use-cycle-list.ts +136 -0
  447. package/registry/files/use-date-format.ts +281 -0
  448. package/registry/files/use-date-time-format.ts +113 -0
  449. package/registry/files/use-debounced.ts +163 -0
  450. package/registry/files/use-display-media.ts +89 -0
  451. package/registry/files/use-display-names.ts +122 -0
  452. package/registry/files/use-document-title.ts +196 -0
  453. package/registry/files/use-drop-zone.ts +287 -0
  454. package/registry/files/use-event-source.ts +470 -0
  455. package/registry/files/use-eye-dropper.ts +134 -0
  456. package/registry/files/use-favicon.ts +140 -0
  457. package/registry/files/use-fetch.ts +578 -0
  458. package/registry/files/use-field.ts +247 -0
  459. package/registry/files/use-file-dialog.ts +257 -0
  460. package/registry/files/use-file-system-access.ts +383 -0
  461. package/registry/files/use-form-field-props.ts +381 -0
  462. package/registry/files/use-form.ts +980 -0
  463. package/registry/files/use-fullscreen.ts +214 -0
  464. package/registry/files/use-gamepad.ts +463 -0
  465. package/registry/files/use-hid.ts +359 -0
  466. package/registry/files/use-history.ts +231 -0
  467. package/registry/files/use-id-generator.ts +61 -0
  468. package/registry/files/use-image.ts +253 -0
  469. package/registry/files/use-indexed-db.ts +508 -0
  470. package/registry/files/use-interval.ts +253 -0
  471. package/registry/files/use-list-format.ts +85 -0
  472. package/registry/files/use-machine.ts +171 -0
  473. package/registry/files/use-map.ts +145 -0
  474. package/registry/files/use-media-controls.ts +545 -0
  475. package/registry/files/use-memoize.ts +118 -0
  476. package/registry/files/use-mounted.ts +30 -0
  477. package/registry/files/use-navigation-api.ts +641 -0
  478. package/registry/files/use-notification.ts +285 -0
  479. package/registry/files/use-now.ts +194 -0
  480. package/registry/files/use-number-format.ts +120 -0
  481. package/registry/files/use-object-url.ts +87 -0
  482. package/registry/files/use-offset-pagination.ts +168 -0
  483. package/registry/files/use-payment-request.ts +465 -0
  484. package/registry/files/use-performance-observer.ts +469 -0
  485. package/registry/files/use-permission.ts +220 -0
  486. package/registry/files/use-plural-rules.ts +134 -0
  487. package/registry/files/use-previous.ts +62 -0
  488. package/registry/files/use-push-subscription.ts +352 -0
  489. package/registry/files/use-queue.ts +197 -0
  490. package/registry/files/use-raf-fn.ts +176 -0
  491. package/registry/files/use-relative-time-format.ts +201 -0
  492. package/registry/files/use-request-idle-callback.ts +278 -0
  493. package/registry/files/use-route-query.ts +300 -0
  494. package/registry/files/use-scheduler-post-task.ts +397 -0
  495. package/registry/files/use-screen-details.ts +393 -0
  496. package/registry/files/use-script-tag.ts +341 -0
  497. package/registry/files/use-segmenter.ts +147 -0
  498. package/registry/files/use-selection.ts +233 -0
  499. package/registry/files/use-serial.ts +404 -0
  500. package/registry/files/use-service-worker.ts +413 -0
  501. package/registry/files/use-set.ts +154 -0
  502. package/registry/files/use-share.ts +168 -0
  503. package/registry/files/use-sorted-locale.ts +130 -0
  504. package/registry/files/use-sorted.ts +49 -0
  505. package/registry/files/use-speech-recognition.ts +357 -0
  506. package/registry/files/use-speech-synthesis.ts +333 -0
  507. package/registry/files/use-stack.ts +164 -0
  508. package/registry/files/use-stepper.ts +166 -0
  509. package/registry/files/use-storage-estimate.ts +352 -0
  510. package/registry/files/use-storage.ts +635 -0
  511. package/registry/files/use-style-tag.ts +200 -0
  512. package/registry/files/use-supported.ts +26 -0
  513. package/registry/files/use-throttled.ts +215 -0
  514. package/registry/files/use-time-ago.ts +276 -0
  515. package/registry/files/use-timeout.ts +218 -0
  516. package/registry/files/use-toggle.ts +54 -0
  517. package/registry/files/use-url-hash.ts +280 -0
  518. package/registry/files/use-url-search-params.ts +497 -0
  519. package/registry/files/use-usb.ts +395 -0
  520. package/registry/files/use-user-activation.ts +215 -0
  521. package/registry/files/use-user-media.ts +422 -0
  522. package/registry/files/use-v-model.ts +210 -0
  523. package/registry/files/use-vibrate.ts +174 -0
  524. package/registry/files/use-view-transition.ts +229 -0
  525. package/registry/files/use-visual-viewport.ts +228 -0
  526. package/registry/files/use-wake-lock.ts +206 -0
  527. package/registry/files/use-web-authn.ts +793 -0
  528. package/registry/files/use-web-locks.ts +363 -0
  529. package/registry/files/use-web-midi.ts +306 -0
  530. package/registry/files/use-web-vitals.ts +409 -0
  531. package/registry/files/use-websocket.ts +553 -0
  532. package/registry/files/use-worker-fn.ts +306 -0
  533. package/registry/files/virtual-list.ts +230 -0
  534. package/registry/files/watch-debounced.ts +206 -0
  535. package/registry/files/watch-ignorable.ts +128 -0
  536. package/registry/files/watch-once.ts +46 -0
  537. package/registry/files/watch-pausable.ts +93 -0
  538. package/registry/files/watch-source.ts +51 -0
  539. package/registry/files/watch-throttled.ts +201 -0
  540. package/registry/files/whenever.ts +70 -0
  541. package/registry/files/window-size.ts +151 -0
  542. package/registry/registry.json +5792 -0
  543. package/dist/catalog-D2AL3xYl.d.mts +0 -523
  544. package/dist/catalog-D5SYCsgW.mjs +0 -549
@@ -0,0 +1,96 @@
1
+ import { ComputedRef, MaybeRefOrGetter, Ref } from "vue";
2
+
3
+ //#region src/use-css-var.d.ts
4
+ /** Style declaration subset used by {@link useCssVar}. */
5
+ interface CssVarStyle {
6
+ /** Read a property value. */
7
+ getPropertyValue(name: string): string;
8
+ /** Write a property value. */
9
+ setProperty(name: string, value: string | null): void;
10
+ /** Remove a property. */
11
+ removeProperty(name: string): string;
12
+ }
13
+ /** Element subset used by {@link useCssVar}. */
14
+ interface CssVarTarget {
15
+ /** Inline style declaration. */
16
+ readonly style: CssVarStyle;
17
+ }
18
+ /** Minimal `MutationObserver` instance. */
19
+ interface CssVarObserver {
20
+ /** Start observing `target`. */
21
+ observe(target: CssVarTarget, options: {
22
+ attributes: true;
23
+ attributeFilter: string[];
24
+ }): void;
25
+ /** Stop observing. */
26
+ disconnect(): void;
27
+ }
28
+ /** Capabilities used by {@link useCssVar}. */
29
+ interface CssVarHost {
30
+ /** Resolved (computed) style of a target. */
31
+ getComputedStyle(target: CssVarTarget): Pick<CssVarStyle, "getPropertyValue">;
32
+ /** Target used when none is given (the document root element). */
33
+ readonly documentElement: CssVarTarget;
34
+ /** Observer factory used when `observe` is enabled. */
35
+ readonly createObserver?: (callback: () => void) => CssVarObserver;
36
+ }
37
+ /** Options for {@link useCssVar}. */
38
+ interface UseCssVarOptions {
39
+ /**
40
+ * Value used while the variable is unset and during server rendering.
41
+ *
42
+ * @default ""
43
+ */
44
+ readonly initialValue?: string;
45
+ /**
46
+ * Re-read the variable when the target's `style` or `class` attribute
47
+ * changes (MutationObserver).
48
+ *
49
+ * @default false
50
+ */
51
+ readonly observe?: boolean;
52
+ /**
53
+ * Style capability for alternate runtimes and tests.
54
+ *
55
+ * @default window.getComputedStyle, document.documentElement, and MutationObserver
56
+ */
57
+ readonly host?: MaybeRefOrGetter<CssVarHost | null | undefined>;
58
+ }
59
+ /** Reactive state returned by {@link useCssVar}. */
60
+ interface CssVarControls {
61
+ /** Writable variable value; assignments are written as inline style. */
62
+ readonly value: Ref<string>;
63
+ /** Whether a style capability and target are attached. */
64
+ readonly supported: ComputedRef<boolean>;
65
+ }
66
+ /**
67
+ * Read and write a CSS custom property reactively.
68
+ *
69
+ * The value is read from the target's computed style whenever the
70
+ * reactive name, target, or host changes (and, with `observe`, when its
71
+ * `style`/`class` attribute changes). Assigning `value` writes an inline
72
+ * `style.setProperty`; assigning `""` removes the inline declaration. Values
73
+ * read from the element are never written back, so a stylesheet-provided
74
+ * variable is not frozen into inline style.
75
+ *
76
+ * Server rendering: nothing is read or written; `value` holds
77
+ * `initialValue`. Keep server markup and the first client render identical
78
+ * by rendering from `initialValue` until mounted. The observer and
79
+ * watchers are released with the owning reactive scope.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * const accent = useCssVar("--accent", rootRef, { initialValue: "#0af" });
84
+ * accent.value.value = "#f60";
85
+ * ```
86
+ *
87
+ * @param name Reactive custom property name, starting with `--`.
88
+ * @param target Reactive element; defaults to the document root element.
89
+ * @param options Initial value, observation, and capability.
90
+ * @default options {}
91
+ * @returns The writable variable value.
92
+ * @throws {TypeError} `[VIZE_COMPOSE_CSS_VAR_INVALID_NAME]` when the name does not start with `--`.
93
+ */
94
+ declare function useCssVar(name: MaybeRefOrGetter<string>, target?: MaybeRefOrGetter<CssVarTarget | null | undefined>, options?: UseCssVarOptions): CssVarControls;
95
+ //#endregion
96
+ export { CssVarControls, CssVarHost, CssVarObserver, CssVarStyle, CssVarTarget, UseCssVarOptions, useCssVar };
@@ -0,0 +1,104 @@
1
+ import { computed, ref, toValue, watch } from "vue";
2
+ //#region src/use-css-var.ts
3
+ function browserCssVarHost() {
4
+ if (typeof window === "undefined") return void 0;
5
+ const view = window;
6
+ return {
7
+ getComputedStyle: (target) => target instanceof view.Element ? view.getComputedStyle(target) : target.style,
8
+ documentElement: view.document.documentElement,
9
+ createObserver: (callback) => {
10
+ const observer = new view.MutationObserver(callback);
11
+ return {
12
+ observe: (target, init) => {
13
+ if (target instanceof view.Node) observer.observe(target, init);
14
+ },
15
+ disconnect: () => observer.disconnect()
16
+ };
17
+ }
18
+ };
19
+ }
20
+ function assertVariableName(name) {
21
+ if (!name.startsWith("--")) throw new TypeError(`[VIZE_COMPOSE_CSS_VAR_INVALID_NAME] custom property names must start with "--"; received ${JSON.stringify(name)}`);
22
+ }
23
+ /**
24
+ * Read and write a CSS custom property reactively.
25
+ *
26
+ * The value is read from the target's computed style whenever the
27
+ * reactive name, target, or host changes (and, with `observe`, when its
28
+ * `style`/`class` attribute changes). Assigning `value` writes an inline
29
+ * `style.setProperty`; assigning `""` removes the inline declaration. Values
30
+ * read from the element are never written back, so a stylesheet-provided
31
+ * variable is not frozen into inline style.
32
+ *
33
+ * Server rendering: nothing is read or written; `value` holds
34
+ * `initialValue`. Keep server markup and the first client render identical
35
+ * by rendering from `initialValue` until mounted. The observer and
36
+ * watchers are released with the owning reactive scope.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const accent = useCssVar("--accent", rootRef, { initialValue: "#0af" });
41
+ * accent.value.value = "#f60";
42
+ * ```
43
+ *
44
+ * @param name Reactive custom property name, starting with `--`.
45
+ * @param target Reactive element; defaults to the document root element.
46
+ * @param options Initial value, observation, and capability.
47
+ * @default options {}
48
+ * @returns The writable variable value.
49
+ * @throws {TypeError} `[VIZE_COMPOSE_CSS_VAR_INVALID_NAME]` when the name does not start with `--`.
50
+ */
51
+ function useCssVar(name, target, options = {}) {
52
+ const initialValue = options.initialValue ?? "";
53
+ assertVariableName(toValue(name));
54
+ const value = ref(initialValue);
55
+ let lastRead;
56
+ const resolveHost = () => options.host === void 0 ? browserCssVarHost() : toValue(options.host) ?? void 0;
57
+ const resolveTarget = (host) => {
58
+ if (!host) return void 0;
59
+ return target === void 0 ? host.documentElement : toValue(target) ?? void 0;
60
+ };
61
+ const read = (host, element, variable) => {
62
+ const current = host.getComputedStyle(element).getPropertyValue(variable).trim();
63
+ const next = current === "" ? initialValue : current;
64
+ lastRead = next;
65
+ value.value = next;
66
+ };
67
+ watch(() => {
68
+ const host = resolveHost();
69
+ return [
70
+ host,
71
+ resolveTarget(host),
72
+ toValue(name)
73
+ ];
74
+ }, ([host, element, variable], _previous, onCleanup) => {
75
+ assertVariableName(variable);
76
+ if (!host || !element) return;
77
+ read(host, element, variable);
78
+ if (!(options.observe ?? false) || !host.createObserver) return;
79
+ const observer = host.createObserver(() => read(host, element, variable));
80
+ observer.observe(element, {
81
+ attributes: true,
82
+ attributeFilter: ["style", "class"]
83
+ });
84
+ onCleanup(() => observer.disconnect());
85
+ }, {
86
+ immediate: true,
87
+ flush: "sync"
88
+ });
89
+ watch(value, (next) => {
90
+ if (next === lastRead) return;
91
+ lastRead = void 0;
92
+ const element = resolveTarget(resolveHost());
93
+ if (!element) return;
94
+ const variable = toValue(name);
95
+ if (next === "") element.style.removeProperty(variable);
96
+ else element.style.setProperty(variable, next);
97
+ }, { flush: "sync" });
98
+ return {
99
+ value,
100
+ supported: computed(() => resolveTarget(resolveHost()) !== void 0)
101
+ };
102
+ }
103
+ //#endregion
104
+ export { useCssVar };
@@ -0,0 +1,76 @@
1
+ import { MaybeRefOrGetter, ShallowRef, WritableComputedRef } from "vue";
2
+
3
+ //#region src/use-cycle-list.d.ts
4
+ /** Options for {@link useCycleList}. */
5
+ interface UseCycleListOptions<Item> {
6
+ /**
7
+ * Item selected initially.
8
+ *
9
+ * @default the first item
10
+ */
11
+ readonly initialValue?: Item;
12
+ /**
13
+ * Index used when the current item is not in the list.
14
+ *
15
+ * @default 0
16
+ */
17
+ readonly fallbackIndex?: number;
18
+ /**
19
+ * Locate an item in the list, for example by id.
20
+ *
21
+ * @default Array.prototype.indexOf
22
+ */
23
+ readonly getIndexOf?: (item: Item, list: readonly Item[]) => number;
24
+ }
25
+ /** Cursor over a list returned by {@link useCycleList}. */
26
+ interface CycleList<Current, Item> {
27
+ /** Current item. Writable: assigning moves the cursor to that item. */
28
+ readonly state: ShallowRef<Current>;
29
+ /** Current index. Writable: assigning wraps around the list. */
30
+ readonly index: WritableComputedRef<number>;
31
+ /**
32
+ * Move forward `steps` items (default `1`), wrapping around.
33
+ *
34
+ * @returns The new current item.
35
+ */
36
+ readonly next: (steps?: number) => Current;
37
+ /**
38
+ * Move backward `steps` items (default `1`), wrapping around.
39
+ *
40
+ * @returns The new current item.
41
+ */
42
+ readonly prev: (steps?: number) => Current;
43
+ /**
44
+ * Jump to `index`, wrapping around.
45
+ *
46
+ * @returns The new current item.
47
+ */
48
+ readonly go: (index: number) => Current;
49
+ /** The list items, for convenience. */
50
+ readonly list: Readonly<ShallowRef<readonly Item[]>>;
51
+ }
52
+ /**
53
+ * Cycle through a list with wrap-around navigation.
54
+ *
55
+ * Non-empty tuple sources (`["light", "dark", "system"] as const`) yield a
56
+ * `state` typed as the element union; general arrays may be empty, so their
57
+ * `state` includes `undefined`. When the list changes, the cursor keeps the
58
+ * current item if it is still present and otherwise moves to
59
+ * `fallbackIndex`. Synchronous state: SSR-safe; the list watcher follows the
60
+ * owning scope.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const { state, next } = useCycleList(["light", "dark", "system"] as const);
65
+ * next(); // "dark"
66
+ * ```
67
+ *
68
+ * @param list Reactive list to cycle through.
69
+ * @param options Initial item, fallback index, and item lookup.
70
+ * @default options {}
71
+ * @returns The cursor and navigation controls.
72
+ */
73
+ declare function useCycleList<const List extends readonly [unknown, ...unknown[]]>(list: MaybeRefOrGetter<List>, options?: UseCycleListOptions<List[number]>): CycleList<List[number], List[number]>;
74
+ declare function useCycleList<Item>(list: MaybeRefOrGetter<readonly Item[]>, options?: UseCycleListOptions<Item>): CycleList<Item | undefined, Item>;
75
+ //#endregion
76
+ export { CycleList, UseCycleListOptions, useCycleList };
@@ -0,0 +1,39 @@
1
+ import { computed, shallowRef, toValue, watch } from "vue";
2
+ //#region src/use-cycle-list.ts
3
+ function useCycleList(list, options = {}) {
4
+ const items = computed(() => toValue(list));
5
+ const locate = options.getIndexOf ?? ((item, all) => all.indexOf(item));
6
+ const state = shallowRef("initialValue" in options ? options.initialValue : items.value[0]);
7
+ const wrap = (index) => {
8
+ const length = items.value.length;
9
+ return length === 0 ? 0 : (Math.trunc(index) % length + length) % length;
10
+ };
11
+ const index = computed({
12
+ get: () => {
13
+ const current = state.value;
14
+ const found = current === void 0 ? -1 : locate(current, items.value);
15
+ return found === -1 ? wrap(options.fallbackIndex ?? 0) : found;
16
+ },
17
+ set: (next) => {
18
+ state.value = items.value[wrap(next)];
19
+ }
20
+ });
21
+ const go = (target) => {
22
+ index.value = target;
23
+ return state.value;
24
+ };
25
+ watch(items, () => {
26
+ const current = state.value;
27
+ if (current === void 0 || locate(current, items.value) === -1) state.value = items.value[wrap(options.fallbackIndex ?? 0)];
28
+ });
29
+ return {
30
+ state,
31
+ index,
32
+ next: (steps = 1) => go(index.value + steps),
33
+ prev: (steps = 1) => go(index.value - steps),
34
+ go,
35
+ list: items
36
+ };
37
+ }
38
+ //#endregion
39
+ export { useCycleList };
@@ -0,0 +1,103 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from "vue";
2
+
3
+ //#region src/use-date-format.d.ts
4
+ /** Date input accepted by {@link formatDate} and {@link useDateFormat}. */
5
+ type DateFormatInput = Date | number | string;
6
+ /**
7
+ * Tokens understood by the pattern form of {@link formatDate}.
8
+ *
9
+ * | Token | Output | Token | Output |
10
+ * | --- | --- | --- | --- |
11
+ * | `YYYY` | 2026 | `YY` | 26 |
12
+ * | `M` / `MM` | 1 / 01 | `MMM` / `MMMM` | Jan / January (localized) |
13
+ * | `D` / `DD` | 5 / 05 | `d` | 0–6, Sunday is 0 |
14
+ * | `dd` / `ddd` / `dddd` | S / Sun / Sunday (localized) | `H` / `HH` | 0–23 |
15
+ * | `h` / `hh` | 1–12 | `m` / `mm`, `s` / `ss` | minutes, seconds |
16
+ * | `SSS` | milliseconds | `A` / `a` | AM / am (localized) |
17
+ * | `Z` / `ZZ` | +09:00 / +0900 | `[text]` | literal text |
18
+ */
19
+ type DateFormatToken = "YYYY" | "YY" | "M" | "MM" | "MMM" | "MMMM" | "D" | "DD" | "d" | "dd" | "ddd" | "dddd" | "H" | "HH" | "h" | "hh" | "m" | "mm" | "s" | "ss" | "SSS" | "A" | "a" | "Z" | "ZZ";
20
+ /** Options for {@link formatDate}. */
21
+ interface FormatDateOptions {
22
+ /**
23
+ * BCP 47 locale(s) for names and `Intl` option formats. Defaults to a fixed
24
+ * locale (not the host default) so server and client output agree.
25
+ *
26
+ * @default "en"
27
+ */
28
+ readonly locale?: string | readonly string[];
29
+ /**
30
+ * IANA time zone the date is rendered in. Defaults to UTC (not the host
31
+ * zone) for SSR determinism; pass the user's zone explicitly.
32
+ *
33
+ * @default "UTC"
34
+ */
35
+ readonly timeZone?: string;
36
+ }
37
+ /** Options for {@link useDateFormat}. */
38
+ interface UseDateFormatOptions {
39
+ /**
40
+ * Reactive BCP 47 locale(s).
41
+ *
42
+ * @default "en"
43
+ */
44
+ readonly locale?: MaybeRefOrGetter<string | readonly string[]>;
45
+ /**
46
+ * Reactive IANA time zone.
47
+ *
48
+ * @default "UTC"
49
+ */
50
+ readonly timeZone?: MaybeRefOrGetter<string>;
51
+ }
52
+ /**
53
+ * Format a date with a token pattern or `Intl.DateTimeFormat` options.
54
+ *
55
+ * Pure and deterministic: locale and time zone default to fixed values
56
+ * (`"en"`, `"UTC"`) rather than host settings, so the same input renders
57
+ * identically on server and client. Calendar fields are computed in the
58
+ * requested time zone through `Intl`, so no host-zone arithmetic leaks in.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * formatDate(0, "YYYY-MM-DD HH:mm:ss"); // "1970-01-01 00:00:00"
63
+ * formatDate(0, "dddd, MMMM D [at] h:mm A", { locale: "en", timeZone: "Asia/Tokyo" });
64
+ * formatDate(0, { dateStyle: "long" }, { locale: "ja" }); // "1970年1月1日"
65
+ * ```
66
+ *
67
+ * @param input Date to format.
68
+ * @param format Token pattern (see {@link DateFormatToken}) or `Intl` options.
69
+ * @param options Locale and time zone.
70
+ * @default format "HH:mm:ss"
71
+ * @default options {}
72
+ * @throws `RangeError` tagged `VIZE_COMPOSE_DATE_FORMAT_INVALID_DATE` for
73
+ * invalid dates, and `RangeError` from `Intl` for invalid locales or zones.
74
+ * @returns The formatted string.
75
+ */
76
+ declare function formatDate(input: DateFormatInput, format?: string | Intl.DateTimeFormatOptions, options?: FormatDateOptions): string;
77
+ /**
78
+ * Reactive formatted date.
79
+ *
80
+ * Wraps {@link formatDate} in a computed ref; the date, the format, the
81
+ * locale, and the time zone are all reactive. Deterministic defaults (`"en"`,
82
+ * `"UTC"`) keep server and client output identical. No timers, no globals,
83
+ * nothing to dispose.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const label = useDateFormat(() => event.value.startsAt, "ddd, MMM D HH:mm", {
88
+ * locale: () => locale.value,
89
+ * timeZone: "Europe/Paris",
90
+ * });
91
+ * ```
92
+ *
93
+ * @param input Reactive date.
94
+ * @param format Reactive token pattern or `Intl` options.
95
+ * @param options Reactive locale and time zone.
96
+ * @default format "HH:mm:ss"
97
+ * @default options {}
98
+ * @throws `RangeError` on read for invalid dates, locales, or zones.
99
+ * @returns Computed formatted string.
100
+ */
101
+ declare function useDateFormat(input: MaybeRefOrGetter<DateFormatInput>, format?: MaybeRefOrGetter<string | Intl.DateTimeFormatOptions>, options?: UseDateFormatOptions): ComputedRef<string>;
102
+ //#endregion
103
+ export { DateFormatInput, DateFormatToken, FormatDateOptions, UseDateFormatOptions, formatDate, useDateFormat };
@@ -0,0 +1,147 @@
1
+ import { computed, toValue } from "vue";
2
+ //#region src/use-date-format.ts
3
+ const tokenPattern = /\[([^\]]*)]|YYYY|YY|MMMM|MMM|MM|M|DD|D|dddd|ddd|dd|d|HH|H|hh|h|mm|m|ss|s|SSS|A|a|ZZ|Z/g;
4
+ const weekdayIndex = {
5
+ Sun: 0,
6
+ Mon: 1,
7
+ Tue: 2,
8
+ Wed: 3,
9
+ Thu: 4,
10
+ Fri: 5,
11
+ Sat: 6
12
+ };
13
+ function toDate(input) {
14
+ const date = input instanceof Date ? new Date(input.getTime()) : new Date(input);
15
+ if (Number.isNaN(date.getTime())) throw new RangeError(`[VIZE_COMPOSE_DATE_FORMAT_INVALID_DATE] expected a valid date; received ${String(input)}`);
16
+ return date;
17
+ }
18
+ function pad(value, length) {
19
+ return String(value).padStart(length, "0");
20
+ }
21
+ function partsOf(formatter, date) {
22
+ return new Map(formatter.formatToParts(date).map((part) => [part.type, part.value]));
23
+ }
24
+ /**
25
+ * Format a date with a token pattern or `Intl.DateTimeFormat` options.
26
+ *
27
+ * Pure and deterministic: locale and time zone default to fixed values
28
+ * (`"en"`, `"UTC"`) rather than host settings, so the same input renders
29
+ * identically on server and client. Calendar fields are computed in the
30
+ * requested time zone through `Intl`, so no host-zone arithmetic leaks in.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * formatDate(0, "YYYY-MM-DD HH:mm:ss"); // "1970-01-01 00:00:00"
35
+ * formatDate(0, "dddd, MMMM D [at] h:mm A", { locale: "en", timeZone: "Asia/Tokyo" });
36
+ * formatDate(0, { dateStyle: "long" }, { locale: "ja" }); // "1970年1月1日"
37
+ * ```
38
+ *
39
+ * @param input Date to format.
40
+ * @param format Token pattern (see {@link DateFormatToken}) or `Intl` options.
41
+ * @param options Locale and time zone.
42
+ * @default format "HH:mm:ss"
43
+ * @default options {}
44
+ * @throws `RangeError` tagged `VIZE_COMPOSE_DATE_FORMAT_INVALID_DATE` for
45
+ * invalid dates, and `RangeError` from `Intl` for invalid locales or zones.
46
+ * @returns The formatted string.
47
+ */
48
+ function formatDate(input, format = "HH:mm:ss", options = {}) {
49
+ const date = toDate(input);
50
+ const locales = typeof options.locale === "string" ? options.locale : [...options.locale ?? ["en"]];
51
+ const timeZone = options.timeZone ?? "UTC";
52
+ if (typeof format !== "string") return new Intl.DateTimeFormat(locales, {
53
+ ...format,
54
+ timeZone
55
+ }).format(date);
56
+ const numeric = partsOf(new Intl.DateTimeFormat("en-US", {
57
+ timeZone,
58
+ hourCycle: "h23",
59
+ year: "numeric",
60
+ month: "numeric",
61
+ day: "numeric",
62
+ hour: "numeric",
63
+ minute: "numeric",
64
+ second: "numeric",
65
+ weekday: "short",
66
+ timeZoneName: "longOffset"
67
+ }), date);
68
+ const field = (type) => Number(numeric.get(type) ?? "0");
69
+ const localized = (formatOptions) => new Intl.DateTimeFormat(locales, {
70
+ ...formatOptions,
71
+ timeZone
72
+ }).format(date);
73
+ const year = field("year");
74
+ const month = field("month");
75
+ const day = field("day");
76
+ const hour = field("hour") % 24;
77
+ const minute = field("minute");
78
+ const second = field("second");
79
+ const offset = (numeric.get("timeZoneName") ?? "GMT").replace("GMT", "") || "+00:00";
80
+ const meridiem = () => partsOf(new Intl.DateTimeFormat(locales, {
81
+ hour: "numeric",
82
+ hourCycle: "h12",
83
+ timeZone
84
+ }), date).get("dayPeriod") ?? (hour < 12 ? "AM" : "PM");
85
+ const render = (token) => {
86
+ switch (token) {
87
+ case "YYYY": return pad(year, 4);
88
+ case "YY": return pad(year % 100, 2);
89
+ case "M": return String(month);
90
+ case "MM": return pad(month, 2);
91
+ case "MMM": return localized({ month: "short" });
92
+ case "MMMM": return localized({ month: "long" });
93
+ case "D": return String(day);
94
+ case "DD": return pad(day, 2);
95
+ case "d": return String(weekdayIndex[numeric.get("weekday") ?? "Sun"] ?? 0);
96
+ case "dd": return localized({ weekday: "narrow" });
97
+ case "ddd": return localized({ weekday: "short" });
98
+ case "dddd": return localized({ weekday: "long" });
99
+ case "H": return String(hour);
100
+ case "HH": return pad(hour, 2);
101
+ case "h": return String(hour % 12 || 12);
102
+ case "hh": return pad(hour % 12 || 12, 2);
103
+ case "m": return String(minute);
104
+ case "mm": return pad(minute, 2);
105
+ case "s": return String(second);
106
+ case "ss": return pad(second, 2);
107
+ case "SSS": return pad(date.getUTCMilliseconds(), 3);
108
+ case "A": return meridiem();
109
+ case "a": return meridiem().toLowerCase();
110
+ case "Z": return offset;
111
+ default: return offset.replace(":", "");
112
+ }
113
+ };
114
+ return format.replaceAll(tokenPattern, (match, literal) => literal ?? render(match));
115
+ }
116
+ /**
117
+ * Reactive formatted date.
118
+ *
119
+ * Wraps {@link formatDate} in a computed ref; the date, the format, the
120
+ * locale, and the time zone are all reactive. Deterministic defaults (`"en"`,
121
+ * `"UTC"`) keep server and client output identical. No timers, no globals,
122
+ * nothing to dispose.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * const label = useDateFormat(() => event.value.startsAt, "ddd, MMM D HH:mm", {
127
+ * locale: () => locale.value,
128
+ * timeZone: "Europe/Paris",
129
+ * });
130
+ * ```
131
+ *
132
+ * @param input Reactive date.
133
+ * @param format Reactive token pattern or `Intl` options.
134
+ * @param options Reactive locale and time zone.
135
+ * @default format "HH:mm:ss"
136
+ * @default options {}
137
+ * @throws `RangeError` on read for invalid dates, locales, or zones.
138
+ * @returns Computed formatted string.
139
+ */
140
+ function useDateFormat(input, format = "HH:mm:ss", options = {}) {
141
+ return computed(() => formatDate(toValue(input), toValue(format), {
142
+ locale: toValue(options.locale) ?? "en",
143
+ timeZone: toValue(options.timeZone) ?? "UTC"
144
+ }));
145
+ }
146
+ //#endregion
147
+ export { formatDate, useDateFormat };
@@ -0,0 +1,75 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from "vue";
2
+
3
+ //#region src/use-date-time-format.d.ts
4
+ /** Values accepted by `Intl.DateTimeFormat`: a `Date` or Unix milliseconds. */
5
+ type FormattableDate = Date | number;
6
+ /** Options for {@link useDateTimeFormat}. */
7
+ interface UseDateTimeFormatOptions extends Intl.DateTimeFormatOptions {
8
+ /**
9
+ * Locale used for formatting. Pass it explicitly (and a `timeZone`) for
10
+ * server rendering: the server falls back to `"en"` and its own time zone.
11
+ *
12
+ * @default the browser language, otherwise "en"
13
+ */
14
+ readonly locale?: string | Intl.Locale;
15
+ }
16
+ /** Reactive date formatting returned by {@link useDateTimeFormat}. */
17
+ interface DateTimeFormatControls {
18
+ /** Canonical locale in use. */
19
+ readonly locale: ComputedRef<string>;
20
+ /** Cached formatter for the current locale and options. */
21
+ readonly formatter: ComputedRef<Intl.DateTimeFormat>;
22
+ /**
23
+ * Formatted `value`, or `""` while the value is `null`/`undefined` or an
24
+ * invalid date.
25
+ */
26
+ readonly formatted: ComputedRef<string>;
27
+ /**
28
+ * Format any date with the current formatter.
29
+ *
30
+ * @param value Date or Unix milliseconds.
31
+ * @returns The formatted string.
32
+ * @throws {RangeError} For an invalid date, as `Intl.DateTimeFormat` does.
33
+ */
34
+ readonly format: (value: FormattableDate) => string;
35
+ /**
36
+ * Format any date into locale-aware parts.
37
+ *
38
+ * @param value Date or Unix milliseconds.
39
+ * @returns The formatted parts.
40
+ */
41
+ readonly formatToParts: (value: FormattableDate) => Intl.DateTimeFormatPart[];
42
+ /**
43
+ * Format a date range, collapsing shared fields (for example `"Jan 3 – 5, 2026"`).
44
+ *
45
+ * @param start Range start.
46
+ * @param end Range end.
47
+ * @returns The formatted range.
48
+ */
49
+ readonly formatRange: (start: FormattableDate, end: FormattableDate) => string;
50
+ }
51
+ /**
52
+ * Format dates and times reactively with `Intl.DateTimeFormat`.
53
+ *
54
+ * The formatter follows the reactive options (including `locale`) and is
55
+ * cached per locale and option set through {@link useLocale}. For
56
+ * hydration-stable output pass both `locale` and `timeZone`: otherwise the
57
+ * server uses `"en"` and its own zone. Invalid options surface as the
58
+ * platform's `RangeError` on first read; invalid dates render as `""`.
59
+ * No listeners or timers are created — combine with a clock composable for
60
+ * live-updating output.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const { formatted } = useDateTimeFormat(date, { locale: "en-GB", dateStyle: "long", timeZone: "UTC" });
65
+ * ```
66
+ *
67
+ * @param value Reactive date; `null`/`undefined` format as `""`.
68
+ * @param options Reactive locale and `Intl.DateTimeFormat` options.
69
+ * @default value undefined
70
+ * @default options {}
71
+ * @returns Reactive formatted output and formatter helpers.
72
+ */
73
+ declare function useDateTimeFormat(value?: MaybeRefOrGetter<FormattableDate | null | undefined>, options?: MaybeRefOrGetter<UseDateTimeFormatOptions>): DateTimeFormatControls;
74
+ //#endregion
75
+ export { DateTimeFormatControls, FormattableDate, UseDateTimeFormatOptions, useDateTimeFormat };