@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,102 @@
1
+ import { MaybeRefOrGetter, Ref } from "vue";
2
+
3
+ //#region src/use-style-tag.d.ts
4
+ /** `<style>` subset used by {@link useStyleTag}. */
5
+ interface StyleTagElement {
6
+ /** Style sheet text. */
7
+ textContent: string | null;
8
+ /** Write an attribute. */
9
+ setAttribute(name: string, value: string): void;
10
+ }
11
+ /** Document capability used by {@link useStyleTag}. */
12
+ interface StyleTagHost {
13
+ /** Find an existing `<style>` with the given `id`. */
14
+ findStyle(id: string): StyleTagElement | undefined;
15
+ /** Create a detached `<style>`. */
16
+ createStyle(): StyleTagElement;
17
+ /** Attach a style element to `<head>`. */
18
+ append(element: StyleTagElement): void;
19
+ /** Detach a style element. */
20
+ remove(element: StyleTagElement): void;
21
+ }
22
+ /** Options for {@link useStyleTag}. */
23
+ interface UseStyleTagOptions {
24
+ /**
25
+ * Element `id`. Instances sharing an id share one element (last write
26
+ * wins, first unload removes it), so give every independent style sheet
27
+ * its own stable id. The default is a constant rather than a generated
28
+ * counter because generated ids differ between server and client.
29
+ *
30
+ * @default "vize-style"
31
+ */
32
+ readonly id?: string;
33
+ /**
34
+ * `media` attribute.
35
+ *
36
+ * @default undefined
37
+ */
38
+ readonly media?: string;
39
+ /**
40
+ * CSP nonce.
41
+ *
42
+ * @default undefined
43
+ */
44
+ readonly nonce?: string;
45
+ /**
46
+ * Attach the style element when created.
47
+ *
48
+ * @default true
49
+ */
50
+ readonly immediate?: boolean;
51
+ /**
52
+ * Document capability for alternate runtimes and tests.
53
+ *
54
+ * @default window.document's `<head>`
55
+ */
56
+ readonly host?: MaybeRefOrGetter<StyleTagHost | null | undefined>;
57
+ }
58
+ /** Reactive state and actions returned by {@link useStyleTag}. */
59
+ interface StyleTagControls {
60
+ /** Element id in use. */
61
+ readonly id: string;
62
+ /**
63
+ * Style sheet text. Writable; when a getter was passed, the next getter
64
+ * change overwrites manual assignments.
65
+ */
66
+ readonly css: Ref<string>;
67
+ /** Whether the style element is attached. */
68
+ readonly loaded: Readonly<Ref<boolean>>;
69
+ /**
70
+ * Attach (or adopt an existing element with the same id) and apply `css`.
71
+ *
72
+ * @returns Whether a style element is attached afterwards.
73
+ */
74
+ readonly load: () => boolean;
75
+ /** Remove the style element. */
76
+ readonly unload: () => void;
77
+ }
78
+ /**
79
+ * Inject a reactive `<style>` element.
80
+ *
81
+ * The element's text follows `css`. An existing `<style>` with the same
82
+ * id — for example one emitted in server-rendered HTML — is adopted instead
83
+ * of duplicated, which keeps hydration free of flashes. The element is
84
+ * removed when the owning reactive scope stops or `unload` is called.
85
+ *
86
+ * Server rendering: nothing is injected and `loaded` is false. Emit the
87
+ * server-side `<style id>` through the application's head manager using the
88
+ * same id to make the client adopt it.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * const { css } = useStyleTag(() => `:root { --accent: ${accent.value} }`, { id: "theme" });
93
+ * ```
94
+ *
95
+ * @param css Reactive style sheet text.
96
+ * @param options Id, attributes, timing, and capability.
97
+ * @default options {}
98
+ * @returns Style state and actions.
99
+ */
100
+ declare function useStyleTag(css: MaybeRefOrGetter<string>, options?: UseStyleTagOptions): StyleTagControls;
101
+ //#endregion
102
+ export { StyleTagControls, StyleTagElement, StyleTagHost, UseStyleTagOptions, useStyleTag };
@@ -0,0 +1,91 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { hasInjectionContext, isRef, onMounted, readonly, ref, toValue, watch } from "vue";
3
+ //#region src/use-style-tag.ts
4
+ function browserStyleHost() {
5
+ if (typeof window === "undefined") return void 0;
6
+ const { document, HTMLStyleElement } = window;
7
+ return {
8
+ findStyle: (id) => {
9
+ const found = document.getElementById(id);
10
+ return found instanceof HTMLStyleElement ? found : void 0;
11
+ },
12
+ createStyle: () => document.createElement("style"),
13
+ append: (element) => {
14
+ if (element instanceof HTMLStyleElement) document.head.append(element);
15
+ },
16
+ remove: (element) => {
17
+ if (element instanceof HTMLStyleElement) element.remove();
18
+ }
19
+ };
20
+ }
21
+ /**
22
+ * Inject a reactive `<style>` element.
23
+ *
24
+ * The element's text follows `css`. An existing `<style>` with the same
25
+ * id — for example one emitted in server-rendered HTML — is adopted instead
26
+ * of duplicated, which keeps hydration free of flashes. The element is
27
+ * removed when the owning reactive scope stops or `unload` is called.
28
+ *
29
+ * Server rendering: nothing is injected and `loaded` is false. Emit the
30
+ * server-side `<style id>` through the application's head manager using the
31
+ * same id to make the client adopt it.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const { css } = useStyleTag(() => `:root { --accent: ${accent.value} }`, { id: "theme" });
36
+ * ```
37
+ *
38
+ * @param css Reactive style sheet text.
39
+ * @param options Id, attributes, timing, and capability.
40
+ * @default options {}
41
+ * @returns Style state and actions.
42
+ */
43
+ function useStyleTag(css, options = {}) {
44
+ const id = options.id ?? "vize-style";
45
+ const state = isRef(css) ? css : ref(toValue(css));
46
+ const loaded = ref(false);
47
+ let element;
48
+ const resolveHost = () => options.host === void 0 ? browserStyleHost() : toValue(options.host) ?? void 0;
49
+ if (typeof css === "function") watch(css, (next) => {
50
+ state.value = next;
51
+ });
52
+ const load = () => {
53
+ if (element) return true;
54
+ const host = resolveHost();
55
+ if (!host) return false;
56
+ const existing = host.findStyle(id);
57
+ const target = existing ?? host.createStyle();
58
+ if (!existing) {
59
+ target.setAttribute("id", id);
60
+ if (options.media !== void 0) target.setAttribute("media", options.media);
61
+ if (options.nonce !== void 0) target.setAttribute("nonce", options.nonce);
62
+ }
63
+ if (target.textContent !== state.value) target.textContent = state.value;
64
+ if (!existing) host.append(target);
65
+ element = target;
66
+ loaded.value = true;
67
+ return true;
68
+ };
69
+ const unload = () => {
70
+ if (element) resolveHost()?.remove(element);
71
+ element = void 0;
72
+ loaded.value = false;
73
+ };
74
+ watch(state, (next) => {
75
+ if (element && element.textContent !== next) element.textContent = next;
76
+ }, { flush: "sync" });
77
+ if (options.immediate ?? true) if (hasInjectionContext()) onMounted(() => {
78
+ load();
79
+ });
80
+ else load();
81
+ tryOnScopeDispose(unload);
82
+ return {
83
+ id,
84
+ css: state,
85
+ loaded: readonly(loaded),
86
+ load,
87
+ unload
88
+ };
89
+ }
90
+ //#endregion
91
+ export { useStyleTag };
@@ -0,0 +1,23 @@
1
+ import { ComputedRef } from "vue";
2
+
3
+ //#region src/use-supported.d.ts
4
+ /**
5
+ * Hydration-stable feature detection.
6
+ *
7
+ * Inside a component the result is `false` until the component mounts and
8
+ * then reflects `check()`, so server and hydrating client render the same
9
+ * fallback first. Outside a component it is evaluated right away when a
10
+ * browser `window` exists and stays `false` otherwise. `check` may read
11
+ * reactive state; the result recomputes when it changes.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const isSupported = useSupported(() => "share" in navigator);
16
+ * ```
17
+ *
18
+ * @param check Returns a truthy value when the feature is available.
19
+ * @returns Computed support flag.
20
+ */
21
+ declare function useSupported(check: () => unknown): ComputedRef<boolean>;
22
+ //#endregion
23
+ export { useSupported };
@@ -0,0 +1,26 @@
1
+ import { useMounted } from "./use-mounted.mjs";
2
+ import { computed, hasInjectionContext, shallowRef } from "vue";
3
+ //#region src/use-supported.ts
4
+ /**
5
+ * Hydration-stable feature detection.
6
+ *
7
+ * Inside a component the result is `false` until the component mounts and
8
+ * then reflects `check()`, so server and hydrating client render the same
9
+ * fallback first. Outside a component it is evaluated right away when a
10
+ * browser `window` exists and stays `false` otherwise. `check` may read
11
+ * reactive state; the result recomputes when it changes.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const isSupported = useSupported(() => "share" in navigator);
16
+ * ```
17
+ *
18
+ * @param check Returns a truthy value when the feature is available.
19
+ * @returns Computed support flag.
20
+ */
21
+ function useSupported(check) {
22
+ const ready = hasInjectionContext() ? useMounted() : shallowRef(typeof window !== "undefined");
23
+ return computed(() => ready.value && Boolean(check()));
24
+ }
25
+ //#endregion
26
+ export { useSupported };
@@ -1,4 +1,4 @@
1
- import { TimeoutScheduler } from "./timeout-scheduler.mjs";
1
+ import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
2
2
  import { MaybeRefOrGetter, ShallowRef } from "vue";
3
3
 
4
4
  //#region src/use-throttled.d.ts
@@ -0,0 +1,163 @@
1
+ import { n as IntervalScheduler, r as PausableControls } from "./use-interval-BA55gTHT.mjs";
2
+ import { ComputedRef, MaybeRefOrGetter, ShallowRef } from "vue";
3
+
4
+ //#region src/use-time-ago.d.ts
5
+ /** Calendar units {@link formatTimeAgo} can express a distance in. */
6
+ type TimeAgoUnit = "second" | "minute" | "hour" | "day" | "week" | "month" | "year";
7
+ /** Date input accepted by the time formatting helpers. */
8
+ type TimeAgoInput = Date | number | string;
9
+ /** Options for {@link formatTimeAgo}. */
10
+ interface FormatTimeAgoOptions {
11
+ /**
12
+ * BCP 47 locale(s) for `Intl.RelativeTimeFormat`. Defaults to a fixed
13
+ * locale (not the host default) so server and client output agree.
14
+ *
15
+ * @default "en"
16
+ */
17
+ readonly locale?: string | readonly string[];
18
+ /**
19
+ * `"auto"` allows phrases such as "yesterday" and "now"; `"always"` keeps
20
+ * numeric output such as "1 day ago".
21
+ *
22
+ * @default "auto"
23
+ */
24
+ readonly numeric?: "always" | "auto";
25
+ /**
26
+ * Length of the unit wording.
27
+ *
28
+ * @default "long"
29
+ */
30
+ readonly style?: "long" | "short" | "narrow";
31
+ /**
32
+ * Units allowed in the output, in any order. The largest allowed unit
33
+ * that fits the distance wins; smaller distances use the smallest unit.
34
+ *
35
+ * @default all units from second to year
36
+ */
37
+ readonly units?: readonly TimeAgoUnit[];
38
+ /**
39
+ * How a fractional unit count becomes an integer.
40
+ *
41
+ * @default "round"
42
+ */
43
+ readonly rounding?: "round" | "floor" | "ceil";
44
+ /**
45
+ * Distances below this many milliseconds are reported as zero of the
46
+ * smallest unit ("now" with `numeric: "auto"`).
47
+ *
48
+ * @default 0
49
+ */
50
+ readonly justNowMs?: number;
51
+ /**
52
+ * Distances of at least this many milliseconds are delegated to
53
+ * {@link FormatTimeAgoOptions.fullDateFormatter}.
54
+ *
55
+ * @default Number.POSITIVE_INFINITY
56
+ */
57
+ readonly maxMs?: number;
58
+ /**
59
+ * Formats dates beyond {@link FormatTimeAgoOptions.maxMs}.
60
+ *
61
+ * @default medium date style in UTC for the configured locale
62
+ */
63
+ readonly fullDateFormatter?: (date: Date) => string;
64
+ }
65
+ /** Options for {@link useTimeAgo}. */
66
+ interface UseTimeAgoOptions<Controls extends boolean = false> extends Omit<FormatTimeAgoOptions, "locale"> {
67
+ /**
68
+ * Reactive BCP 47 locale(s). Pair with `useLocale()` to follow the user.
69
+ *
70
+ * @default "en"
71
+ */
72
+ readonly locale?: MaybeRefOrGetter<string | readonly string[]>;
73
+ /**
74
+ * How often the relative phrase is recomputed, in milliseconds.
75
+ *
76
+ * @default 30000
77
+ */
78
+ readonly updateIntervalMs?: MaybeRefOrGetter<number>;
79
+ /**
80
+ * Clock source returning Unix epoch milliseconds.
81
+ *
82
+ * @default Date.now
83
+ */
84
+ readonly now?: () => number;
85
+ /**
86
+ * Hydration-stable "now" used for the first render on server and client.
87
+ *
88
+ * @default undefined (read the clock immediately)
89
+ */
90
+ readonly initialNow?: number;
91
+ /**
92
+ * Starts host timers when no browser `window` is available.
93
+ *
94
+ * @default false
95
+ */
96
+ readonly runOnServer?: boolean;
97
+ /**
98
+ * Repeating timer host.
99
+ *
100
+ * @default globalThis timer functions
101
+ */
102
+ readonly scheduler?: IntervalScheduler;
103
+ /**
104
+ * Return the full control object instead of the bare phrase ref.
105
+ *
106
+ * @default false
107
+ */
108
+ readonly controls?: Controls;
109
+ }
110
+ /** Phrase and controls returned by `useTimeAgo(time, { controls: true })`. */
111
+ interface TimeAgoControls extends PausableControls {
112
+ /** Localized relative phrase such as "3 minutes ago". */
113
+ readonly timeAgo: ComputedRef<string>;
114
+ /** The reference "now" in Unix epoch milliseconds. */
115
+ readonly now: Readonly<ShallowRef<number>>;
116
+ }
117
+ /**
118
+ * Format the distance between two instants as a localized relative phrase.
119
+ *
120
+ * Pure and deterministic: the output depends only on the arguments (the
121
+ * locale defaults to `"en"`, never the host default), which makes it safe
122
+ * for server rendering and hydration.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * formatTimeAgo(Date.UTC(2026, 0, 1), Date.UTC(2026, 0, 2)); // "yesterday"
127
+ * formatTimeAgo(0, 90_000, { numeric: "always" }); // "2 minutes ago"
128
+ * ```
129
+ *
130
+ * @param time Instant being described.
131
+ * @param now Reference instant.
132
+ * @param options Locale, wording, unit, and threshold policy.
133
+ * @default options {}
134
+ * @throws `RangeError` tagged `VIZE_COMPOSE_TIME_AGO_INVALID_DATE` when
135
+ * either input is not a valid date, and `RangeError` from `Intl` for invalid
136
+ * locales.
137
+ * @returns The localized phrase.
138
+ */
139
+ declare function formatTimeAgo(time: TimeAgoInput, now: TimeAgoInput, options?: FormatTimeAgoOptions): string;
140
+ /**
141
+ * Reactive localized "time ago" phrase that refreshes on an interval.
142
+ *
143
+ * Combines {@link formatTimeAgo} with a pausable clock. For SSR, inject
144
+ * `initialNow` (the server render time) and a fixed `locale`: both sides
145
+ * then produce the same phrase and the client clock takes over on its first
146
+ * tick. No timer runs on the server; the timer stops with the owning scope.
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * const phrase = useTimeAgo(() => post.value.createdAt, { locale: useLocale().locale });
151
+ * ```
152
+ *
153
+ * @param time Reactive instant being described.
154
+ * @param options Formatting, cadence, clock, and SSR policy.
155
+ * @default options {}
156
+ * @throws `RangeError` on read for invalid dates or locales, and for invalid
157
+ * update intervals at creation.
158
+ * @returns The phrase ref, or the full controls when `controls` is `true`.
159
+ */
160
+ declare function useTimeAgo(time: MaybeRefOrGetter<TimeAgoInput>, options?: UseTimeAgoOptions<false>): ComputedRef<string>;
161
+ declare function useTimeAgo(time: MaybeRefOrGetter<TimeAgoInput>, options: UseTimeAgoOptions<true>): TimeAgoControls;
162
+ //#endregion
163
+ export { FormatTimeAgoOptions, TimeAgoControls, TimeAgoInput, TimeAgoUnit, UseTimeAgoOptions, formatTimeAgo, useTimeAgo };
@@ -0,0 +1,95 @@
1
+ import { useTimestamp } from "./use-now.mjs";
2
+ import { computed, toValue } from "vue";
3
+ //#region src/use-time-ago.ts
4
+ const unitMs = {
5
+ second: 1e3,
6
+ minute: 6e4,
7
+ hour: 36e5,
8
+ day: 864e5,
9
+ week: 6048e5,
10
+ month: 2592e6,
11
+ year: 31536e6
12
+ };
13
+ const allUnits = [
14
+ "second",
15
+ "minute",
16
+ "hour",
17
+ "day",
18
+ "week",
19
+ "month",
20
+ "year"
21
+ ];
22
+ function toEpochMs(input) {
23
+ const value = input instanceof Date ? input.getTime() : new Date(input).getTime();
24
+ if (Number.isNaN(value)) throw new RangeError(`[VIZE_COMPOSE_TIME_AGO_INVALID_DATE] expected a valid date; received ${String(input)}`);
25
+ return value;
26
+ }
27
+ /**
28
+ * Format the distance between two instants as a localized relative phrase.
29
+ *
30
+ * Pure and deterministic: the output depends only on the arguments (the
31
+ * locale defaults to `"en"`, never the host default), which makes it safe
32
+ * for server rendering and hydration.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * formatTimeAgo(Date.UTC(2026, 0, 1), Date.UTC(2026, 0, 2)); // "yesterday"
37
+ * formatTimeAgo(0, 90_000, { numeric: "always" }); // "2 minutes ago"
38
+ * ```
39
+ *
40
+ * @param time Instant being described.
41
+ * @param now Reference instant.
42
+ * @param options Locale, wording, unit, and threshold policy.
43
+ * @default options {}
44
+ * @throws `RangeError` tagged `VIZE_COMPOSE_TIME_AGO_INVALID_DATE` when
45
+ * either input is not a valid date, and `RangeError` from `Intl` for invalid
46
+ * locales.
47
+ * @returns The localized phrase.
48
+ */
49
+ function formatTimeAgo(time, now, options = {}) {
50
+ const target = toEpochMs(time);
51
+ const diff = target - toEpochMs(now);
52
+ const distance = Math.abs(diff);
53
+ const locales = typeof options.locale === "string" ? options.locale : [...options.locale ?? ["en"]];
54
+ if (distance >= (options.maxMs ?? Number.POSITIVE_INFINITY)) {
55
+ const date = new Date(target);
56
+ return options.fullDateFormatter === void 0 ? new Intl.DateTimeFormat(locales, {
57
+ dateStyle: "medium",
58
+ timeZone: "UTC"
59
+ }).format(date) : options.fullDateFormatter(date);
60
+ }
61
+ const allowed = allUnits.filter((unit) => (options.units ?? allUnits).includes(unit));
62
+ const smallest = allowed[0] ?? "second";
63
+ let unit = smallest;
64
+ for (const candidate of allowed) if (distance >= unitMs[candidate]) unit = candidate;
65
+ const round = Math[options.rounding ?? "round"];
66
+ const magnitude = distance < (options.justNowMs ?? 0) ? 0 : round(distance / unitMs[unit]);
67
+ return new Intl.RelativeTimeFormat(locales, {
68
+ numeric: options.numeric ?? "auto",
69
+ style: options.style ?? "long"
70
+ }).format(diff <= 0 ? -magnitude : magnitude, magnitude === 0 ? smallest : unit);
71
+ }
72
+ function useTimeAgo(time, options = {}) {
73
+ const { timestamp, pause, resume, isActive } = useTimestamp({
74
+ interval: options.updateIntervalMs ?? 3e4,
75
+ controls: true,
76
+ runOnServer: options.runOnServer ?? false,
77
+ ...options.now === void 0 ? {} : { now: options.now },
78
+ ...options.initialNow === void 0 ? {} : { initial: options.initialNow },
79
+ ...options.scheduler === void 0 ? {} : { scheduler: options.scheduler }
80
+ });
81
+ const timeAgo = computed(() => formatTimeAgo(toValue(time), timestamp.value, {
82
+ ...options,
83
+ locale: toValue(options.locale) ?? "en"
84
+ }));
85
+ if (options.controls !== true) return timeAgo;
86
+ return {
87
+ timeAgo,
88
+ now: timestamp,
89
+ pause,
90
+ resume,
91
+ isActive
92
+ };
93
+ }
94
+ //#endregion
95
+ export { formatTimeAgo, useTimeAgo };
@@ -0,0 +1,122 @@
1
+ import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
2
+ import { ComputedRef, MaybeRefOrGetter, ShallowRef } from "vue";
3
+
4
+ //#region src/use-timeout.d.ts
5
+ /** Options for {@link useTimeoutFn}. */
6
+ interface UseTimeoutFnOptions {
7
+ /**
8
+ * Start the timer as soon as the composable is created. Only available
9
+ * for callbacks without arguments; pass `false` to schedule a callback
10
+ * that takes arguments through {@link TimeoutFnControls.start}.
11
+ *
12
+ * @default true
13
+ */
14
+ readonly immediate?: boolean;
15
+ /**
16
+ * Starts host timers when no browser `window` is available.
17
+ *
18
+ * Keep this disabled during server rendering: `isPending` then reports the
19
+ * requested state but no timer is created and the callback never runs.
20
+ *
21
+ * @default false
22
+ */
23
+ readonly runOnServer?: boolean;
24
+ /**
25
+ * Owns the single-shot timer.
26
+ *
27
+ * @default globalThis timer functions
28
+ */
29
+ readonly scheduler?: TimeoutScheduler;
30
+ }
31
+ /** Controls returned by {@link useTimeoutFn}. */
32
+ interface TimeoutFnControls<Args extends readonly unknown[]> {
33
+ /** Whether a call is scheduled and has not fired or been stopped yet. */
34
+ readonly isPending: Readonly<ShallowRef<boolean>>;
35
+ /**
36
+ * (Re)start the timer. A pending call is replaced, and the callback later
37
+ * receives exactly these arguments.
38
+ */
39
+ readonly start: (...args: Args) => void;
40
+ /**
41
+ * Cancel the pending call.
42
+ *
43
+ * @returns Whether a pending call was cancelled.
44
+ */
45
+ readonly stop: () => boolean;
46
+ }
47
+ /** Options for {@link useTimeout}. */
48
+ interface UseTimeoutOptions<Controls extends boolean = false> extends UseTimeoutFnOptions {
49
+ /**
50
+ * Return the full control object instead of the bare readiness ref.
51
+ *
52
+ * @default false
53
+ */
54
+ readonly controls?: Controls;
55
+ /**
56
+ * Invoked when the timeout elapses.
57
+ *
58
+ * @default undefined
59
+ */
60
+ readonly callback?: () => void;
61
+ }
62
+ /** Readiness and controls returned by `useTimeout(ms, { controls: true })`. */
63
+ interface TimeoutControls extends TimeoutFnControls<[]> {
64
+ /** `true` once the timer elapsed or was stopped, `false` while pending. */
65
+ readonly ready: ComputedRef<boolean>;
66
+ }
67
+ /**
68
+ * Call a function once after a delay, with restart and cancel controls.
69
+ *
70
+ * The typing is arity-aware: a zero-argument callback may start
71
+ * immediately, while a callback with parameters requires
72
+ * `{ immediate: false }` so it can only ever run with arguments supplied to
73
+ * `start(...)`. `delayMs` is reactive and read on every `start`.
74
+ *
75
+ * Server rendering is hydration-stable: without a browser `window` (and with
76
+ * {@link UseTimeoutFnOptions.runOnServer} disabled) `isPending` reports the
77
+ * requested state but no timer is created. A pending timer is cleared when
78
+ * the owning reactive scope stops.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const { start, stop } = useTimeoutFn((id: string) => save(id), 500, { immediate: false });
83
+ * start("draft-1");
84
+ * ```
85
+ *
86
+ * @param callback Invoked once the delay elapses.
87
+ * @param delayMs Reactive delay in milliseconds; finite and at least zero.
88
+ * @param options Start, server, and scheduler policy.
89
+ * @default options {}
90
+ * @throws `RangeError` tagged `VIZE_COMPOSE_TIMEOUT_INVALID_DELAY` for invalid
91
+ * delays, synchronously at creation and on every `start`.
92
+ * @returns Pending flag and start/stop controls.
93
+ */
94
+ declare function useTimeoutFn(callback: () => void, delayMs: MaybeRefOrGetter<number>, options?: UseTimeoutFnOptions): TimeoutFnControls<[]>;
95
+ declare function useTimeoutFn<Args extends readonly unknown[]>(callback: (...args: Args) => void, delayMs: MaybeRefOrGetter<number>, options: UseTimeoutFnOptions & {
96
+ readonly immediate: false;
97
+ }): TimeoutFnControls<Args>;
98
+ /**
99
+ * Reactive "has the delay elapsed yet?" flag.
100
+ *
101
+ * A wrapper over {@link useTimeoutFn}. Pass `{ controls: true }` to receive
102
+ * start/stop alongside the flag; the return type follows the literal flag.
103
+ * Stopping a pending timer marks it ready.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const ready = useTimeout(300); // ComputedRef<boolean>
108
+ * const { ready: done, start } = useTimeout(300, { controls: true, immediate: false });
109
+ * ```
110
+ *
111
+ * @param delayMs Reactive delay in milliseconds.
112
+ * @param options Timeout options plus the `controls` flag.
113
+ * @default delayMs 1000
114
+ * @default options {}
115
+ * @throws `RangeError` tagged `VIZE_COMPOSE_TIMEOUT_INVALID_DELAY` for invalid
116
+ * delays (see {@link useTimeoutFn}).
117
+ * @returns The readiness ref, or the full controls when `controls` is `true`.
118
+ */
119
+ declare function useTimeout(delayMs?: MaybeRefOrGetter<number>, options?: UseTimeoutOptions<false>): ComputedRef<boolean>;
120
+ declare function useTimeout(delayMs: MaybeRefOrGetter<number>, options: UseTimeoutOptions<true>): TimeoutControls;
121
+ //#endregion
122
+ export { TimeoutControls, TimeoutFnControls, UseTimeoutFnOptions, UseTimeoutOptions, useTimeout, useTimeoutFn };