@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,177 @@
1
+ import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
2
+ import { MaybeRefOrGetter } from "vue";
3
+
4
+ //#region src/until.d.ts
5
+ /** Options shared by every {@link until} matcher. */
6
+ interface UntilOptions {
7
+ /**
8
+ * Reject when the condition is not met within this many milliseconds.
9
+ * `undefined` waits indefinitely (until the owning scope stops watching).
10
+ *
11
+ * @default undefined
12
+ */
13
+ readonly timeout?: number;
14
+ /**
15
+ * Abort the wait; the promise rejects with the signal's reason.
16
+ *
17
+ * @default undefined
18
+ */
19
+ readonly signal?: AbortSignal;
20
+ /**
21
+ * Watch flush timing. `"sync"` also works during server rendering.
22
+ *
23
+ * @default "sync"
24
+ */
25
+ readonly flush?: "pre" | "post" | "sync";
26
+ /**
27
+ * Watch nested properties of the value.
28
+ *
29
+ * @default false
30
+ */
31
+ readonly deep?: boolean;
32
+ /**
33
+ * Owns the timeout timer.
34
+ *
35
+ * @default globalThis timer functions
36
+ */
37
+ readonly scheduler?: TimeoutScheduler;
38
+ }
39
+ /** Error code carried by the rejection when an {@link until} wait times out. */
40
+ type UntilTimeoutCode = "VIZE_COMPOSE_UNTIL_TIMEOUT";
41
+ /** Rejection reason used when an {@link until} wait times out. */
42
+ interface UntilTimeoutError extends Error {
43
+ /** Stable machine-readable code. */
44
+ readonly code: UntilTimeoutCode;
45
+ }
46
+ /** Values treated as falsy by `toBeTruthy`. */
47
+ type UntilFalsy = false | 0 | 0n | "" | null | undefined;
48
+ /** Matchers that wait for the source to satisfy a condition. */
49
+ interface UntilMatchers<Value> {
50
+ /**
51
+ * Resolve once the value satisfies the type guard, narrowing the result.
52
+ *
53
+ * @returns The narrowed value.
54
+ */
55
+ toMatch<Narrowed extends Value>(condition: (value: Value) => value is Narrowed, options?: UntilOptions): Promise<Narrowed>;
56
+ /**
57
+ * Resolve once the value satisfies the predicate.
58
+ *
59
+ * @returns The matching value.
60
+ */
61
+ toMatch(condition: (value: Value) => boolean, options?: UntilOptions): Promise<Value>;
62
+ /**
63
+ * Resolve once the value is `Object.is`-equal to `expected` (itself
64
+ * possibly reactive).
65
+ *
66
+ * @returns The expected value.
67
+ */
68
+ toBe<const Expected extends Value>(expected: MaybeRefOrGetter<Expected>, options?: UntilOptions): Promise<Expected>;
69
+ /**
70
+ * Resolve once the value is truthy.
71
+ *
72
+ * @returns The value without its falsy members.
73
+ */
74
+ toBeTruthy(options?: UntilOptions): Promise<Exclude<Value, UntilFalsy>>;
75
+ /**
76
+ * Resolve once the value is `null`.
77
+ *
78
+ * @returns `null`.
79
+ */
80
+ toBeNull(options?: UntilOptions): Promise<Extract<Value, null>>;
81
+ /**
82
+ * Resolve once the value is `undefined`.
83
+ *
84
+ * @returns `undefined`.
85
+ */
86
+ toBeUndefined(options?: UntilOptions): Promise<Extract<Value, undefined>>;
87
+ /**
88
+ * Resolve once the value is `NaN`.
89
+ *
90
+ * @returns `NaN`.
91
+ */
92
+ toBeNaN(options?: UntilOptions): Promise<Value>;
93
+ /**
94
+ * Resolve once an array or string value includes `element`.
95
+ *
96
+ * @returns The containing value.
97
+ */
98
+ toContain(element: Value extends readonly (infer Element)[] ? Element : Value extends string ? string : never, options?: UntilOptions): Promise<Value>;
99
+ /**
100
+ * Resolve after the value changed once.
101
+ *
102
+ * @returns The new value.
103
+ */
104
+ changed(options?: UntilOptions): Promise<Value>;
105
+ /**
106
+ * Resolve after the value changed `count` times.
107
+ *
108
+ * @returns The value after the last counted change.
109
+ */
110
+ changedTimes(count: number, options?: UntilOptions): Promise<Value>;
111
+ }
112
+ /** Negated matchers available through {@link UntilChain.not}. */
113
+ interface UntilNegatedMatchers<Value> {
114
+ /**
115
+ * Resolve once the value is no longer `Object.is`-equal to `unexpected`.
116
+ *
117
+ * @returns The value.
118
+ */
119
+ toBe(unexpected: MaybeRefOrGetter<Value>, options?: UntilOptions): Promise<Value>;
120
+ /**
121
+ * Resolve once the value is falsy.
122
+ *
123
+ * @returns The falsy value.
124
+ */
125
+ toBeTruthy(options?: UntilOptions): Promise<Extract<Value, UntilFalsy>>;
126
+ /**
127
+ * Resolve once the value is not `null`.
128
+ *
129
+ * @returns The value without `null`.
130
+ */
131
+ toBeNull(options?: UntilOptions): Promise<Exclude<Value, null>>;
132
+ /**
133
+ * Resolve once the value is not `undefined`.
134
+ *
135
+ * @returns The value without `undefined`.
136
+ */
137
+ toBeUndefined(options?: UntilOptions): Promise<Exclude<Value, undefined>>;
138
+ /**
139
+ * Resolve once the value no longer satisfies the predicate.
140
+ *
141
+ * @returns The value.
142
+ */
143
+ toMatch(condition: (value: Value) => boolean, options?: UntilOptions): Promise<Value>;
144
+ }
145
+ /** Fluent wait builder returned by {@link until}. */
146
+ interface UntilChain<Value> extends UntilMatchers<Value> {
147
+ /** Inverted matchers. */
148
+ readonly not: UntilNegatedMatchers<Value>;
149
+ }
150
+ /**
151
+ * Await a reactive source reaching a condition.
152
+ *
153
+ * Every matcher resolves immediately when the current value already
154
+ * satisfies it (except `changed`/`changedTimes`), and otherwise watches the
155
+ * source (`flush: "sync"` by default, which also works inside server-side
156
+ * `setup`). Result types are narrowed by the matcher: `toBeTruthy()` strips
157
+ * falsy members, `not.toBeNull()` strips `null`, `toMatch(guard)` follows the
158
+ * guard. Because a timeout rejects (it never resolves with an unmatched
159
+ * value), the narrowing is always sound. Watchers and timers are released
160
+ * as soon as the promise settles.
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const user = await until(currentUser).not.toBeNull({ timeout: 5_000 });
165
+ * const ready = await until(status).toBe("ready");
166
+ * ```
167
+ *
168
+ * @param source Ref or getter to observe.
169
+ * @throws Returned promises reject with an {@link UntilTimeoutError} on
170
+ * timeout, with the abort reason when the signal aborts, and with a
171
+ * `RangeError` tagged `VIZE_COMPOSE_UNTIL_INVALID_OPTION` for a negative or
172
+ * non-finite timeout or change count.
173
+ * @returns The fluent matcher chain.
174
+ */
175
+ declare function until<Value>(source: MaybeRefOrGetter<Value>): UntilChain<Value>;
176
+ //#endregion
177
+ export { UntilChain, UntilMatchers, UntilNegatedMatchers, UntilOptions, UntilTimeoutCode, UntilTimeoutError, until };
package/dist/until.mjs ADDED
@@ -0,0 +1,111 @@
1
+ import { toValue, watch } from "vue";
2
+ //#region src/until.ts
3
+ const defaultScheduler = {
4
+ setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
5
+ clearTimeout: (handle) => {
6
+ globalThis.clearTimeout(handle);
7
+ }
8
+ };
9
+ function createTimeoutError(timeout) {
10
+ return Object.assign(/* @__PURE__ */ new Error(`[VIZE_COMPOSE_UNTIL_TIMEOUT] condition not met within ${timeout}ms`), { code: "VIZE_COMPOSE_UNTIL_TIMEOUT" });
11
+ }
12
+ /**
13
+ * Await a reactive source reaching a condition.
14
+ *
15
+ * Every matcher resolves immediately when the current value already
16
+ * satisfies it (except `changed`/`changedTimes`), and otherwise watches the
17
+ * source (`flush: "sync"` by default, which also works inside server-side
18
+ * `setup`). Result types are narrowed by the matcher: `toBeTruthy()` strips
19
+ * falsy members, `not.toBeNull()` strips `null`, `toMatch(guard)` follows the
20
+ * guard. Because a timeout rejects (it never resolves with an unmatched
21
+ * value), the narrowing is always sound. Watchers and timers are released
22
+ * as soon as the promise settles.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const user = await until(currentUser).not.toBeNull({ timeout: 5_000 });
27
+ * const ready = await until(status).toBe("ready");
28
+ * ```
29
+ *
30
+ * @param source Ref or getter to observe.
31
+ * @throws Returned promises reject with an {@link UntilTimeoutError} on
32
+ * timeout, with the abort reason when the signal aborts, and with a
33
+ * `RangeError` tagged `VIZE_COMPOSE_UNTIL_INVALID_OPTION` for a negative or
34
+ * non-finite timeout or change count.
35
+ * @returns The fluent matcher chain.
36
+ */
37
+ function until(source) {
38
+ const wait = (matches, options, checkInitial = true) => new Promise((resolve, reject) => {
39
+ const { timeout, signal, scheduler = defaultScheduler } = options;
40
+ if (timeout !== void 0 && (!Number.isFinite(timeout) || timeout < 0)) {
41
+ reject(/* @__PURE__ */ new RangeError(`[VIZE_COMPOSE_UNTIL_INVALID_OPTION] timeout must be finite and at least zero; received ${String(timeout)}`));
42
+ return;
43
+ }
44
+ if (signal?.aborted === true) {
45
+ reject(signal.reason);
46
+ return;
47
+ }
48
+ let handle;
49
+ let timer;
50
+ let settled = false;
51
+ const onAbort = () => {
52
+ finish();
53
+ reject(signal?.reason);
54
+ };
55
+ const finish = () => {
56
+ settled = true;
57
+ handle?.stop();
58
+ if (timer !== void 0) scheduler.clearTimeout(timer);
59
+ signal?.removeEventListener("abort", onAbort);
60
+ };
61
+ const accept = (value) => {
62
+ if (settled || !matches(value)) return;
63
+ finish();
64
+ resolve(value);
65
+ };
66
+ if (checkInitial) accept(toValue(source));
67
+ if (settled) return;
68
+ handle = watch(() => toValue(source), accept, {
69
+ flush: options.flush ?? "sync",
70
+ deep: options.deep ?? false
71
+ });
72
+ signal?.addEventListener("abort", onAbort, { once: true });
73
+ if (timeout !== void 0) timer = scheduler.setTimeout(() => {
74
+ finish();
75
+ reject(createTimeoutError(timeout));
76
+ }, timeout);
77
+ });
78
+ const any = (_value) => true;
79
+ const changedTimes = (count, options = {}) => {
80
+ if (!Number.isSafeInteger(count) || count < 1) return Promise.reject(/* @__PURE__ */ new RangeError(`[VIZE_COMPOSE_UNTIL_INVALID_OPTION] count must be a positive integer; received ${String(count)}`));
81
+ let seen = 0;
82
+ return wait((value) => {
83
+ seen += 1;
84
+ return seen >= count && any(value);
85
+ }, options, false);
86
+ };
87
+ const includes = (value, element) => Array.isArray(value) ? value.includes(element) : typeof value === "string" && typeof element === "string" && value.includes(element);
88
+ function toMatch(condition, options = {}) {
89
+ return wait((value) => condition(value), options);
90
+ }
91
+ return {
92
+ toMatch,
93
+ toBe: (expected, options = {}) => wait((value) => Object.is(value, toValue(expected)), options),
94
+ toBeTruthy: (options = {}) => wait((value) => Boolean(value), options),
95
+ toBeNull: (options = {}) => wait((value) => value === null, options),
96
+ toBeUndefined: (options = {}) => wait((value) => value === void 0, options),
97
+ toBeNaN: (options = {}) => wait((value) => Number.isNaN(value), options),
98
+ toContain: (element, options = {}) => wait((value) => includes(value, element), options),
99
+ changed: (options = {}) => changedTimes(1, options),
100
+ changedTimes,
101
+ not: {
102
+ toBe: (unexpected, options = {}) => wait((value) => !Object.is(value, toValue(unexpected)), options),
103
+ toBeTruthy: (options = {}) => wait((value) => !value, options),
104
+ toBeNull: (options = {}) => wait((value) => value !== null, options),
105
+ toBeUndefined: (options = {}) => wait((value) => value !== void 0, options),
106
+ toMatch: (condition, options = {}) => wait((value) => !condition(value), options)
107
+ }
108
+ };
109
+ }
110
+ //#endregion
111
+ export { until };
@@ -0,0 +1,112 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from "vue";
2
+
3
+ //#region src/use-array.d.ts
4
+ /** Callback shape shared by the reactive array helpers. */
5
+ type ArrayCallback<Item, Result> = (item: Item, index: number, array: readonly Item[]) => Result;
6
+ /**
7
+ * Reactive `Array.prototype.filter`. A type-guard predicate narrows the
8
+ * element type.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const active = useArrayFilter(users, (user) => user.active);
13
+ * ```
14
+ *
15
+ * @param list Reactive array.
16
+ * @param predicate Keeps items for which it returns `true`.
17
+ * @returns Computed filtered copy.
18
+ */
19
+ declare function useArrayFilter<Item, Narrowed extends Item>(list: MaybeRefOrGetter<readonly Item[]>, predicate: (item: Item, index: number, array: readonly Item[]) => item is Narrowed): ComputedRef<Narrowed[]>;
20
+ declare function useArrayFilter<Item>(list: MaybeRefOrGetter<readonly Item[]>, predicate: ArrayCallback<Item, boolean>): ComputedRef<Item[]>;
21
+ /**
22
+ * Reactive `Array.prototype.map`.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const names = useArrayMap(users, (user) => user.name);
27
+ * ```
28
+ *
29
+ * @param list Reactive array.
30
+ * @param mapper Produces the mapped item.
31
+ * @returns Computed mapped copy.
32
+ */
33
+ declare function useArrayMap<Item, Mapped>(list: MaybeRefOrGetter<readonly Item[]>, mapper: ArrayCallback<Item, Mapped>): ComputedRef<Mapped[]>;
34
+ /**
35
+ * Reactive `Array.prototype.find`. A type-guard predicate narrows the
36
+ * result.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const admin = useArrayFind(users, (user) => user.role === "admin");
41
+ * ```
42
+ *
43
+ * @param list Reactive array.
44
+ * @param predicate Matches the wanted item.
45
+ * @returns Computed first match, or `undefined`.
46
+ */
47
+ declare function useArrayFind<Item, Narrowed extends Item>(list: MaybeRefOrGetter<readonly Item[]>, predicate: (item: Item, index: number, array: readonly Item[]) => item is Narrowed): ComputedRef<Narrowed | undefined>;
48
+ declare function useArrayFind<Item>(list: MaybeRefOrGetter<readonly Item[]>, predicate: ArrayCallback<Item, boolean>): ComputedRef<Item | undefined>;
49
+ /**
50
+ * Reactive `Array.prototype.reduce`.
51
+ *
52
+ * With an initial value the result has the accumulator type. Without one,
53
+ * the first item seeds the accumulator and an empty array yields
54
+ * `undefined` (instead of throwing like `reduce`).
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const total = useArrayReduce(cart, (sum, line) => sum + line.price, 0);
59
+ * ```
60
+ *
61
+ * @param list Reactive array.
62
+ * @param reducer Folds one item into the accumulator.
63
+ * @param initial Reactive initial accumulator.
64
+ * @returns Computed accumulated value.
65
+ */
66
+ declare function useArrayReduce<Item, Accumulator>(list: MaybeRefOrGetter<readonly Item[]>, reducer: (accumulator: Accumulator, item: Item, index: number, array: readonly Item[]) => Accumulator, initial: MaybeRefOrGetter<Accumulator>): ComputedRef<Accumulator>;
67
+ declare function useArrayReduce<Item>(list: MaybeRefOrGetter<readonly Item[]>, reducer: (accumulator: Item, item: Item, index: number, array: readonly Item[]) => Item): ComputedRef<Item | undefined>;
68
+ /**
69
+ * Reactive `Array.prototype.some`.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const hasErrors = useArraySome(fields, (field) => field.error !== null);
74
+ * ```
75
+ *
76
+ * @param list Reactive array.
77
+ * @param predicate Condition tested per item.
78
+ * @returns Computed flag.
79
+ */
80
+ declare function useArraySome<Item>(list: MaybeRefOrGetter<readonly Item[]>, predicate: ArrayCallback<Item, boolean>): ComputedRef<boolean>;
81
+ /**
82
+ * Reactive `Array.prototype.every`.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const allDone = useArrayEvery(tasks, (task) => task.done);
87
+ * ```
88
+ *
89
+ * @param list Reactive array.
90
+ * @param predicate Condition tested per item.
91
+ * @returns Computed flag.
92
+ */
93
+ declare function useArrayEvery<Item>(list: MaybeRefOrGetter<readonly Item[]>, predicate: ArrayCallback<Item, boolean>): ComputedRef<boolean>;
94
+ /**
95
+ * Reactive de-duplication that keeps the first occurrence of each item.
96
+ *
97
+ * Without `isSame`, items are compared with `SameValueZero` (like `Set`) in
98
+ * linear time; with it, pairwise in quadratic time.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const tags = useArrayUnique(allTags);
103
+ * const people = useArrayUnique(rows, (left, right) => left.id === right.id);
104
+ * ```
105
+ *
106
+ * @param list Reactive array.
107
+ * @param isSame Custom equality.
108
+ * @returns Computed de-duplicated copy.
109
+ */
110
+ declare function useArrayUnique<Item>(list: MaybeRefOrGetter<readonly Item[]>, isSame?: (left: Item, right: Item) => boolean): ComputedRef<Item[]>;
111
+ //#endregion
112
+ export { ArrayCallback, useArrayEvery, useArrayFilter, useArrayFind, useArrayMap, useArrayReduce, useArraySome, useArrayUnique };
@@ -0,0 +1,90 @@
1
+ import { computed, toValue } from "vue";
2
+ //#region src/use-array.ts
3
+ function useArrayFilter(list, predicate) {
4
+ return computed(() => toValue(list).filter(predicate));
5
+ }
6
+ /**
7
+ * Reactive `Array.prototype.map`.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const names = useArrayMap(users, (user) => user.name);
12
+ * ```
13
+ *
14
+ * @param list Reactive array.
15
+ * @param mapper Produces the mapped item.
16
+ * @returns Computed mapped copy.
17
+ */
18
+ function useArrayMap(list, mapper) {
19
+ return computed(() => toValue(list).map(mapper));
20
+ }
21
+ function useArrayFind(list, predicate) {
22
+ return computed(() => toValue(list).find(predicate));
23
+ }
24
+ function useArrayReduce(list, reducer, ...initial) {
25
+ return computed(() => {
26
+ const items = toValue(list);
27
+ const seeded = initial.length === 1;
28
+ if (!seeded && items.length === 0) return void 0;
29
+ let accumulator = seeded ? toValue(initial[0]) : items[0];
30
+ for (const [index, item] of items.entries()) if (seeded || index > 0) accumulator = reducer(accumulator, item, index, items);
31
+ return accumulator;
32
+ });
33
+ }
34
+ /**
35
+ * Reactive `Array.prototype.some`.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const hasErrors = useArraySome(fields, (field) => field.error !== null);
40
+ * ```
41
+ *
42
+ * @param list Reactive array.
43
+ * @param predicate Condition tested per item.
44
+ * @returns Computed flag.
45
+ */
46
+ function useArraySome(list, predicate) {
47
+ return computed(() => toValue(list).some(predicate));
48
+ }
49
+ /**
50
+ * Reactive `Array.prototype.every`.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * const allDone = useArrayEvery(tasks, (task) => task.done);
55
+ * ```
56
+ *
57
+ * @param list Reactive array.
58
+ * @param predicate Condition tested per item.
59
+ * @returns Computed flag.
60
+ */
61
+ function useArrayEvery(list, predicate) {
62
+ return computed(() => toValue(list).every(predicate));
63
+ }
64
+ /**
65
+ * Reactive de-duplication that keeps the first occurrence of each item.
66
+ *
67
+ * Without `isSame`, items are compared with `SameValueZero` (like `Set`) in
68
+ * linear time; with it, pairwise in quadratic time.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const tags = useArrayUnique(allTags);
73
+ * const people = useArrayUnique(rows, (left, right) => left.id === right.id);
74
+ * ```
75
+ *
76
+ * @param list Reactive array.
77
+ * @param isSame Custom equality.
78
+ * @returns Computed de-duplicated copy.
79
+ */
80
+ function useArrayUnique(list, isSame) {
81
+ return computed(() => {
82
+ const items = toValue(list);
83
+ if (isSame === void 0) return [...new Set(items)];
84
+ const unique = [];
85
+ for (const item of items) if (!unique.some((kept) => isSame(kept, item))) unique.push(item);
86
+ return unique;
87
+ });
88
+ }
89
+ //#endregion
90
+ export { useArrayEvery, useArrayFilter, useArrayFind, useArrayMap, useArrayReduce, useArraySome, useArrayUnique };
@@ -0,0 +1,109 @@
1
+ import { ComputedRef, ShallowRef } from "vue";
2
+
3
+ //#region src/use-async-queue.d.ts
4
+ /** Lifecycle of one queued task. */
5
+ type AsyncQueueTaskState = "pending" | "running" | "fulfilled" | "rejected" | "aborted";
6
+ /** Outcome record of one queued task. */
7
+ interface AsyncQueueTaskResult<Data> {
8
+ /** Current lifecycle state. */
9
+ readonly state: AsyncQueueTaskState;
10
+ /** Resolved value once fulfilled. */
11
+ readonly data: Data | undefined;
12
+ /** Failure once rejected. */
13
+ readonly error: unknown;
14
+ }
15
+ /** Context passed to every queued task. */
16
+ interface AsyncQueueContext {
17
+ /** Aborted when the queue is aborted. */
18
+ readonly signal: AbortSignal;
19
+ }
20
+ /** Result of the task before position `Index` (`undefined` for the first). */
21
+ type AsyncQueuePrevious<Results extends readonly unknown[], Index> = Index extends keyof [undefined, ...Results] ? [undefined, ...Results][Index] : never;
22
+ /** One queued task: receives the previous result and resolves the next. */
23
+ type AsyncQueueTask<Previous, Result> = (previous: Previous, context: AsyncQueueContext) => Result | Promise<Result>;
24
+ /** Task tuple whose parameters chain the previous task's result. */
25
+ type AsyncQueueTasks<Results extends readonly unknown[]> = { readonly [Index in keyof Results]: (previous: AsyncQueuePrevious<Results, Index>, context: AsyncQueueContext) => Results[Index] | Promise<Results[Index]> };
26
+ /** Options for {@link useAsyncQueue}. */
27
+ interface UseAsyncQueueOptions {
28
+ /**
29
+ * Stop at the first rejection (remaining tasks become `"aborted"`).
30
+ *
31
+ * @default true
32
+ */
33
+ readonly interrupt?: boolean;
34
+ /**
35
+ * Start running right away.
36
+ *
37
+ * @default true
38
+ */
39
+ readonly immediate?: boolean;
40
+ /**
41
+ * External cancellation; aborting it aborts the queue.
42
+ *
43
+ * @default undefined
44
+ */
45
+ readonly signal?: AbortSignal;
46
+ /**
47
+ * Called when a task rejects.
48
+ *
49
+ * @default undefined
50
+ */
51
+ readonly onError?: (error: unknown, index: number) => void;
52
+ /**
53
+ * Called once the queue settles.
54
+ *
55
+ * @default undefined
56
+ */
57
+ readonly onFinished?: () => void;
58
+ }
59
+ /** Queue state and controls returned by {@link useAsyncQueue}. */
60
+ interface AsyncQueue<Results extends readonly unknown[]> {
61
+ /** Index of the running task (`-1` before start, `length` when done). */
62
+ readonly activeIndex: Readonly<ShallowRef<number>>;
63
+ /** Per-task outcome records, typed per position. */
64
+ readonly results: Readonly<ShallowRef<{ readonly [Index in keyof Results]: AsyncQueueTaskResult<Results[Index]> }>>;
65
+ /** Whether the queue settled (all done, interrupted, or aborted). */
66
+ readonly isFinished: ComputedRef<boolean>;
67
+ /**
68
+ * Run the queue (again) from the first task.
69
+ *
70
+ * @returns Settles with the final records.
71
+ */
72
+ readonly run: () => Promise<{ readonly [Index in keyof Results]: AsyncQueueTaskResult<Results[Index]> }>;
73
+ /** Abort the running queue. */
74
+ readonly abort: (reason?: unknown) => void;
75
+ }
76
+ /**
77
+ * Run async tasks one after another, each receiving the previous result.
78
+ *
79
+ * Result types are inferred per position from the task tuple, and each
80
+ * task's `previous` parameter is contextually typed as the preceding task's
81
+ * result (up to six tasks; longer queues use the mapped-tuple signature with
82
+ * annotated parameters).
83
+ * Every task gets an `AbortSignal`; `abort()` (or the external signal)
84
+ * stops the queue and marks unfinished tasks `"aborted"`. A new `run()`
85
+ * aborts the one in flight. Starts on the server too when `immediate`, but
86
+ * nothing awaits it there, so markup shows the pending state on both sides.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const { results } = useAsyncQueue([
91
+ * async () => fetchUser(),
92
+ * async (user) => fetchOrders(user.id),
93
+ * ]);
94
+ * ```
95
+ *
96
+ * @param tasks Ordered task tuple.
97
+ * @param options Interruption, start, cancellation, and callbacks.
98
+ * @default options {}
99
+ * @returns Queue state and controls.
100
+ */
101
+ declare function useAsyncQueue<R1>(tasks: readonly [AsyncQueueTask<undefined, R1>], options?: UseAsyncQueueOptions): AsyncQueue<[R1]>;
102
+ declare function useAsyncQueue<R1, R2>(tasks: readonly [AsyncQueueTask<undefined, R1>, AsyncQueueTask<R1, R2>], options?: UseAsyncQueueOptions): AsyncQueue<[R1, R2]>;
103
+ declare function useAsyncQueue<R1, R2, R3>(tasks: readonly [AsyncQueueTask<undefined, R1>, AsyncQueueTask<R1, R2>, AsyncQueueTask<R2, R3>], options?: UseAsyncQueueOptions): AsyncQueue<[R1, R2, R3]>;
104
+ declare function useAsyncQueue<R1, R2, R3, R4>(tasks: readonly [AsyncQueueTask<undefined, R1>, AsyncQueueTask<R1, R2>, AsyncQueueTask<R2, R3>, AsyncQueueTask<R3, R4>], options?: UseAsyncQueueOptions): AsyncQueue<[R1, R2, R3, R4]>;
105
+ declare function useAsyncQueue<R1, R2, R3, R4, R5>(tasks: readonly [AsyncQueueTask<undefined, R1>, AsyncQueueTask<R1, R2>, AsyncQueueTask<R2, R3>, AsyncQueueTask<R3, R4>, AsyncQueueTask<R4, R5>], options?: UseAsyncQueueOptions): AsyncQueue<[R1, R2, R3, R4, R5]>;
106
+ declare function useAsyncQueue<R1, R2, R3, R4, R5, R6>(tasks: readonly [AsyncQueueTask<undefined, R1>, AsyncQueueTask<R1, R2>, AsyncQueueTask<R2, R3>, AsyncQueueTask<R3, R4>, AsyncQueueTask<R4, R5>, AsyncQueueTask<R5, R6>], options?: UseAsyncQueueOptions): AsyncQueue<[R1, R2, R3, R4, R5, R6]>;
107
+ declare function useAsyncQueue<Results extends readonly unknown[]>(tasks: AsyncQueueTasks<Results>, options?: UseAsyncQueueOptions): AsyncQueue<Results>;
108
+ //#endregion
109
+ export { AsyncQueue, AsyncQueueContext, AsyncQueuePrevious, AsyncQueueTask, AsyncQueueTaskResult, AsyncQueueTaskState, AsyncQueueTasks, UseAsyncQueueOptions, useAsyncQueue };
@@ -0,0 +1,96 @@
1
+ import { computed, shallowRef } from "vue";
2
+ //#region src/use-async-queue.ts
3
+ function useAsyncQueue(tasks, options = {}) {
4
+ const pendingRecords = () => tasks.map(() => ({
5
+ state: "pending",
6
+ data: void 0,
7
+ error: void 0
8
+ }));
9
+ const activeIndex = shallowRef(-1);
10
+ const results = shallowRef(pendingRecords());
11
+ const isFinished = computed(() => activeIndex.value >= tasks.length);
12
+ let controller;
13
+ const update = (index, record) => {
14
+ results.value = results.value.map((current, position) => position === index ? record : current);
15
+ };
16
+ const abortRemaining = (from) => {
17
+ results.value = results.value.map((current, position) => position >= from && (current.state === "pending" || current.state === "running") ? {
18
+ state: "aborted",
19
+ data: void 0,
20
+ error: current.error
21
+ } : current);
22
+ };
23
+ const finish = () => {
24
+ activeIndex.value = tasks.length;
25
+ options.onFinished?.();
26
+ };
27
+ const abortRun = (run, reason) => {
28
+ if (run.signal.aborted) return;
29
+ run.abort(reason);
30
+ if (controller !== run) return;
31
+ abortRemaining(0);
32
+ finish();
33
+ };
34
+ const run = async () => {
35
+ controller?.abort();
36
+ const own = new AbortController();
37
+ controller = own;
38
+ results.value = pendingRecords();
39
+ const external = options.signal;
40
+ const onExternalAbort = () => abortRun(own, external?.reason);
41
+ if (external?.aborted === true) {
42
+ abortRun(own, external.reason);
43
+ return results.value;
44
+ }
45
+ external?.addEventListener("abort", onExternalAbort, { once: true });
46
+ let previous;
47
+ try {
48
+ for (const [index, task] of tasks.entries()) {
49
+ activeIndex.value = index;
50
+ update(index, {
51
+ state: "running",
52
+ data: void 0,
53
+ error: void 0
54
+ });
55
+ try {
56
+ previous = await task(previous, { signal: own.signal });
57
+ if (own.signal.aborted) return results.value;
58
+ update(index, {
59
+ state: "fulfilled",
60
+ data: previous,
61
+ error: void 0
62
+ });
63
+ } catch (error) {
64
+ if (own.signal.aborted) return results.value;
65
+ update(index, {
66
+ state: "rejected",
67
+ data: void 0,
68
+ error
69
+ });
70
+ options.onError?.(error, index);
71
+ if (options.interrupt ?? true) {
72
+ abortRemaining(index + 1);
73
+ break;
74
+ }
75
+ previous = void 0;
76
+ }
77
+ }
78
+ finish();
79
+ return results.value;
80
+ } finally {
81
+ external?.removeEventListener("abort", onExternalAbort);
82
+ }
83
+ };
84
+ if (options.immediate ?? true) run();
85
+ return {
86
+ activeIndex,
87
+ results,
88
+ isFinished,
89
+ run,
90
+ abort: (reason) => {
91
+ if (controller !== void 0) abortRun(controller, reason);
92
+ }
93
+ };
94
+ }
95
+ //#endregion
96
+ export { useAsyncQueue };