@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,156 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { computed, hasInjectionContext, readonly, shallowReadonly, shallowRef, toValue, watch, watchPostEffect } from "vue";
3
+ //#region src/use-hid.ts
4
+ function browserHIDHost() {
5
+ if (typeof window === "undefined") return void 0;
6
+ const { navigator } = window;
7
+ const hid = "hid" in navigator ? navigator.hid : void 0;
8
+ return isHIDHost(hid) ? hid : void 0;
9
+ }
10
+ function isHIDHost(value) {
11
+ return typeof value === "object" && value !== null && "getDevices" in value;
12
+ }
13
+ function isInputReport(event) {
14
+ return "reportId" in event && "data" in event;
15
+ }
16
+ function describe(device) {
17
+ return {
18
+ device,
19
+ vendorId: device.vendorId,
20
+ productId: device.productId,
21
+ productName: device.productName,
22
+ opened: device.opened
23
+ };
24
+ }
25
+ /**
26
+ * Talk to human-interface devices with the WebHID API.
27
+ *
28
+ * `devices` lists granted devices as plain snapshots and follows the host's
29
+ * `connect` / `disconnect` events. Devices opened through `open()` forward
30
+ * `inputreport` events to `onInputReport`. Every action resolves to a
31
+ * boolean or value and records failures in `error`. Report listeners are
32
+ * removed and opened devices closed when the owning reactive scope stops;
33
+ * outside a scope call `close()` per device.
34
+ *
35
+ * Server rendering: `supported` is false and `devices` is empty.
36
+ * Inside a component the host is resolved after mounting, so hydration
37
+ * renders this server state first.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const hid = useHID({ onInputReport: ({ reportId, data }) => read(reportId, data) });
42
+ * const [device] = await hid.requestDevice([{ vendorId: 0x054c }]);
43
+ * if (device) await hid.open(device);
44
+ * ```
45
+ *
46
+ * @param options Host and input report callback.
47
+ * @default options {}
48
+ * @returns HID state and actions.
49
+ */
50
+ function useHID(options = {}) {
51
+ const devices = shallowRef([]);
52
+ const error = shallowRef(void 0);
53
+ const reportListeners = /* @__PURE__ */ new Map();
54
+ const owned = /* @__PURE__ */ new Set();
55
+ const hydrated = shallowRef(!hasInjectionContext());
56
+ if (!hydrated.value) watchPostEffect(() => {
57
+ hydrated.value = true;
58
+ });
59
+ const resolveHost = () => {
60
+ if (!hydrated.value) return void 0;
61
+ return options.host === void 0 ? browserHIDHost() : toValue(options.host) ?? void 0;
62
+ };
63
+ const attempt = async (action, clearError = true) => {
64
+ try {
65
+ const value = await action();
66
+ if (clearError) error.value = void 0;
67
+ return value;
68
+ } catch (cause) {
69
+ error.value = cause;
70
+ return;
71
+ }
72
+ };
73
+ const getDevices = async () => {
74
+ const host = resolveHost();
75
+ const granted = host ? await attempt(() => host.getDevices(), false) : [];
76
+ if (granted) devices.value = granted.map(describe);
77
+ return devices.value;
78
+ };
79
+ const requestDevice = async (filters = []) => {
80
+ const host = resolveHost();
81
+ if (!host) return [];
82
+ const chosen = await attempt(() => host.requestDevice({ filters }));
83
+ await getDevices();
84
+ return chosen ?? [];
85
+ };
86
+ const unlisten = (device) => {
87
+ const listener = reportListeners.get(device);
88
+ if (!listener) return;
89
+ device.removeEventListener("inputreport", listener);
90
+ reportListeners.delete(device);
91
+ };
92
+ const open = async (device) => {
93
+ if (!device.opened && await attempt(() => device.open().then(() => true)) !== true) return false;
94
+ owned.add(device);
95
+ const onInputReport = options.onInputReport;
96
+ if (onInputReport && !reportListeners.has(device)) {
97
+ const listener = (event) => {
98
+ if (isInputReport(event)) onInputReport({
99
+ device,
100
+ reportId: event.reportId,
101
+ data: event.data
102
+ });
103
+ };
104
+ reportListeners.set(device, listener);
105
+ device.addEventListener("inputreport", listener);
106
+ }
107
+ devices.value = devices.value.map((entry) => describe(entry.device));
108
+ return true;
109
+ };
110
+ const close = async (device) => {
111
+ unlisten(device);
112
+ owned.delete(device);
113
+ const closed = !device.opened || await attempt(() => device.close().then(() => true)) === true;
114
+ devices.value = devices.value.map((entry) => describe(entry.device));
115
+ return closed;
116
+ };
117
+ const sendReport = async (device, reportId, data) => await attempt(() => device.sendReport(reportId, data).then(() => true)) === true;
118
+ const sendFeatureReport = async (device, reportId, data) => await attempt(() => device.sendFeatureReport(reportId, data).then(() => true)) === true;
119
+ const receiveFeatureReport = (device, reportId) => attempt(() => device.receiveFeatureReport(reportId));
120
+ const onConnectionChange = () => {
121
+ getDevices();
122
+ };
123
+ watch(resolveHost, (host, _previous, onCleanup) => {
124
+ if (!host) {
125
+ devices.value = [];
126
+ return;
127
+ }
128
+ host.addEventListener("connect", onConnectionChange);
129
+ host.addEventListener("disconnect", onConnectionChange);
130
+ onCleanup(() => {
131
+ host.removeEventListener("connect", onConnectionChange);
132
+ host.removeEventListener("disconnect", onConnectionChange);
133
+ });
134
+ getDevices();
135
+ }, {
136
+ immediate: true,
137
+ flush: "sync"
138
+ });
139
+ tryOnScopeDispose(() => {
140
+ for (const device of owned) close(device);
141
+ });
142
+ return {
143
+ supported: computed(() => resolveHost() !== void 0),
144
+ devices: shallowReadonly(devices),
145
+ error: readonly(error),
146
+ requestDevice,
147
+ getDevices,
148
+ open,
149
+ close,
150
+ sendReport,
151
+ sendFeatureReport,
152
+ receiveFeatureReport
153
+ };
154
+ }
155
+ //#endregion
156
+ export { useHID };
@@ -0,0 +1,44 @@
1
+ //#region src/use-id-generator.d.ts
2
+ /** Options for {@link useIdGenerator}. */
3
+ interface UseIdGeneratorOptions {
4
+ /**
5
+ * Namespace placed in front of every id.
6
+ *
7
+ * @default "vize"
8
+ */
9
+ readonly prefix?: string;
10
+ /**
11
+ * Stable seed identifying this generator. Defaults to Vue's `useId()`
12
+ * inside a component (identical on server and hydrating client), or to
13
+ * `"root"` outside one.
14
+ *
15
+ * @default useId() or "root"
16
+ */
17
+ readonly seed?: string;
18
+ }
19
+ /** Id factory returned by {@link useIdGenerator}. */
20
+ type IdGenerator = (hint?: string) => string;
21
+ /**
22
+ * Create an SSR-stable id factory for one component.
23
+ *
24
+ * Each call to the returned function yields
25
+ * `<prefix>-<seed>-<hint>-<n>` with a per-generator counter, so as long as
26
+ * ids are generated in the same order on the server and the client (for
27
+ * example during `setup`), the markup hydrates without mismatches. The seed
28
+ * comes from Vue's `useId()` inside components, which is itself stable across
29
+ * SSR and hydration; outside components pass an explicit `seed`. Characters
30
+ * outside `[A-Za-z0-9_-]` are replaced so ids are valid in selectors.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const nextId = useIdGenerator({ prefix: "field" });
35
+ * const inputId = nextId("input"); // "field-v-0-input-0"
36
+ * ```
37
+ *
38
+ * @param options Prefix and seed.
39
+ * @default options {}
40
+ * @returns The id factory.
41
+ */
42
+ declare function useIdGenerator(options?: UseIdGeneratorOptions): IdGenerator;
43
+ //#endregion
44
+ export { IdGenerator, UseIdGeneratorOptions, useIdGenerator };
@@ -0,0 +1,38 @@
1
+ import { hasInjectionContext, useId } from "vue";
2
+ //#region src/use-id-generator.ts
3
+ function sanitize(part) {
4
+ return part.replaceAll(/[^\w-]/g, "-");
5
+ }
6
+ /**
7
+ * Create an SSR-stable id factory for one component.
8
+ *
9
+ * Each call to the returned function yields
10
+ * `<prefix>-<seed>-<hint>-<n>` with a per-generator counter, so as long as
11
+ * ids are generated in the same order on the server and the client (for
12
+ * example during `setup`), the markup hydrates without mismatches. The seed
13
+ * comes from Vue's `useId()` inside components, which is itself stable across
14
+ * SSR and hydration; outside components pass an explicit `seed`. Characters
15
+ * outside `[A-Za-z0-9_-]` are replaced so ids are valid in selectors.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const nextId = useIdGenerator({ prefix: "field" });
20
+ * const inputId = nextId("input"); // "field-v-0-input-0"
21
+ * ```
22
+ *
23
+ * @param options Prefix and seed.
24
+ * @default options {}
25
+ * @returns The id factory.
26
+ */
27
+ function useIdGenerator(options = {}) {
28
+ const seed = options.seed ?? (hasInjectionContext() ? useId() : "root");
29
+ const base = `${sanitize(options.prefix ?? "vize")}-${sanitize(seed)}`;
30
+ let counter = 0;
31
+ return (hint = "id") => {
32
+ const id = `${base}-${sanitize(hint)}-${counter}`;
33
+ counter += 1;
34
+ return id;
35
+ };
36
+ }
37
+ //#endregion
38
+ export { useIdGenerator };
@@ -0,0 +1,125 @@
1
+ import { ComputedRef, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
2
+
3
+ //#region src/use-image.d.ts
4
+ /** Image attributes accepted by {@link useImage}. */
5
+ interface ImageSource {
6
+ /** Image URL. */
7
+ readonly src: string;
8
+ /** Responsive candidates. */
9
+ readonly srcset?: string;
10
+ /** Responsive layout sizes. */
11
+ readonly sizes?: string;
12
+ /** Alternative text. */
13
+ readonly alt?: string;
14
+ /** CORS mode. */
15
+ readonly crossOrigin?: "anonymous" | "use-credentials";
16
+ /** Referrer policy. */
17
+ readonly referrerPolicy?: ReferrerPolicy;
18
+ /** Loading strategy. */
19
+ readonly loading?: "eager" | "lazy";
20
+ /** Decoding hint. */
21
+ readonly decoding?: "sync" | "async" | "auto";
22
+ /** Fetch priority hint. */
23
+ readonly fetchPriority?: "high" | "low" | "auto";
24
+ /** Intrinsic width. */
25
+ readonly width?: number;
26
+ /** Intrinsic height. */
27
+ readonly height?: number;
28
+ }
29
+ /** `HTMLImageElement` subset used by {@link useImage}. */
30
+ interface ImageLike extends EventTarget {
31
+ /** Image URL. */
32
+ src: string;
33
+ /** Responsive candidates. */
34
+ srcset: string;
35
+ /** Responsive layout sizes. */
36
+ sizes: string;
37
+ /** Alternative text. */
38
+ alt: string;
39
+ /** CORS mode. */
40
+ crossOrigin: string | null;
41
+ /** Referrer policy. */
42
+ referrerPolicy: string;
43
+ /** Loading strategy. */
44
+ loading: string;
45
+ /** Decoding hint. */
46
+ decoding: string;
47
+ /** Fetch priority hint; absent in engines without priority hints. */
48
+ fetchPriority?: string;
49
+ /** Intrinsic width. */
50
+ width: number;
51
+ /** Intrinsic height. */
52
+ height: number;
53
+ }
54
+ /** Image constructor used by {@link useImage}. */
55
+ type ImageHost = new () => ImageLike;
56
+ /** Loading state of the image. */
57
+ type ImageStatus = "idle" | "loading" | "loaded" | "error";
58
+ /** Discriminated outcome of {@link ImageControls.load}. */
59
+ type ImageLoadResult = {
60
+ /** The image loaded. */readonly status: "loaded"; /** Loaded image. */
61
+ readonly image: ImageLike;
62
+ } | {
63
+ /** The image failed to load. */readonly status: "error"; /** Native error event. */
64
+ readonly error: Event;
65
+ } | {
66
+ /** A newer load started, the scope stopped, or no capability exists. */readonly status: "cancelled" | "unsupported";
67
+ };
68
+ /** Options for {@link useImage}. */
69
+ interface UseImageOptions {
70
+ /**
71
+ * Load when created and whenever the source changes.
72
+ *
73
+ * @default true
74
+ */
75
+ readonly immediate?: boolean;
76
+ /**
77
+ * Image constructor for alternate runtimes and tests. A ref (not a
78
+ * getter) because the host is a constructor function.
79
+ *
80
+ * @default window.Image when a browser window exists
81
+ */
82
+ readonly host?: MaybeRef<ImageHost | null | undefined>;
83
+ }
84
+ /** Reactive state and actions returned by {@link useImage}. */
85
+ interface ImageControls {
86
+ /** Loading state of the newest load. */
87
+ readonly status: Readonly<Ref<ImageStatus>>;
88
+ /** Most recently loaded image. */
89
+ readonly image: Readonly<ShallowRef<ImageLike | undefined>>;
90
+ /** Error event of the newest load, cleared when a load starts. */
91
+ readonly error: Readonly<ShallowRef<Event | undefined>>;
92
+ /** Whether the newest load succeeded. */
93
+ readonly ready: ComputedRef<boolean>;
94
+ /**
95
+ * Load the current source, superseding any pending load.
96
+ *
97
+ * @returns The discriminated outcome; never rejects.
98
+ */
99
+ readonly load: () => Promise<ImageLoadResult>;
100
+ }
101
+ /**
102
+ * Preload an image and track its loading state.
103
+ *
104
+ * A detached image is created for every source; the newest load wins, and
105
+ * superseded images have their listeners removed and their `src` cleared so
106
+ * the browser can abort the download. Use it to show a placeholder until
107
+ * the real image is decoded, or to validate URLs before rendering them.
108
+ *
109
+ * Server rendering: no image is created and `status` stays `"idle"`. The
110
+ * pending load is cancelled when the owning reactive scope stops.
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const { ready } = useImage(() => ({ src: avatarUrl.value }));
115
+ * // <img v-if="ready" :src="avatarUrl"> <Skeleton v-else />
116
+ * ```
117
+ *
118
+ * @param source Reactive image attributes.
119
+ * @param options Timing and capability.
120
+ * @default options {}
121
+ * @returns Image state and actions.
122
+ */
123
+ declare function useImage(source: MaybeRefOrGetter<ImageSource>, options?: UseImageOptions): ImageControls;
124
+ //#endregion
125
+ export { ImageControls, ImageHost, ImageLike, ImageLoadResult, ImageSource, ImageStatus, UseImageOptions, useImage };
@@ -0,0 +1,109 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { computed, readonly, ref, shallowRef, toValue, unref, watch } from "vue";
3
+ //#region src/use-image.ts
4
+ function browserImageHost() {
5
+ return typeof window === "undefined" ? void 0 : window.Image;
6
+ }
7
+ function applySource(image, source) {
8
+ if (source.crossOrigin !== void 0) image.crossOrigin = source.crossOrigin;
9
+ if (source.referrerPolicy !== void 0) image.referrerPolicy = source.referrerPolicy;
10
+ if (source.loading !== void 0) image.loading = source.loading;
11
+ if (source.decoding !== void 0) image.decoding = source.decoding;
12
+ if (source.fetchPriority !== void 0) image.fetchPriority = source.fetchPriority;
13
+ if (source.alt !== void 0) image.alt = source.alt;
14
+ if (source.width !== void 0) image.width = source.width;
15
+ if (source.height !== void 0) image.height = source.height;
16
+ if (source.sizes !== void 0) image.sizes = source.sizes;
17
+ if (source.srcset !== void 0) image.srcset = source.srcset;
18
+ image.src = source.src;
19
+ }
20
+ /**
21
+ * Preload an image and track its loading state.
22
+ *
23
+ * A detached image is created for every source; the newest load wins, and
24
+ * superseded images have their listeners removed and their `src` cleared so
25
+ * the browser can abort the download. Use it to show a placeholder until
26
+ * the real image is decoded, or to validate URLs before rendering them.
27
+ *
28
+ * Server rendering: no image is created and `status` stays `"idle"`. The
29
+ * pending load is cancelled when the owning reactive scope stops.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const { ready } = useImage(() => ({ src: avatarUrl.value }));
34
+ * // <img v-if="ready" :src="avatarUrl"> <Skeleton v-else />
35
+ * ```
36
+ *
37
+ * @param source Reactive image attributes.
38
+ * @param options Timing and capability.
39
+ * @default options {}
40
+ * @returns Image state and actions.
41
+ */
42
+ function useImage(source, options = {}) {
43
+ const status = ref("idle");
44
+ const image = shallowRef(void 0);
45
+ const error = shallowRef(void 0);
46
+ let cancelActive;
47
+ const resolveHost = () => options.host === void 0 ? browserImageHost() : unref(options.host) ?? void 0;
48
+ const load = () => {
49
+ cancelActive?.();
50
+ cancelActive = void 0;
51
+ const Host = resolveHost();
52
+ if (!Host) return Promise.resolve({ status: "unsupported" });
53
+ const candidate = new Host();
54
+ status.value = "loading";
55
+ error.value = void 0;
56
+ return new Promise((resolve) => {
57
+ const detach = () => {
58
+ candidate.removeEventListener("load", onLoad);
59
+ candidate.removeEventListener("error", onError);
60
+ cancelActive = void 0;
61
+ };
62
+ const onLoad = () => {
63
+ detach();
64
+ image.value = candidate;
65
+ status.value = "loaded";
66
+ resolve({
67
+ status: "loaded",
68
+ image: candidate
69
+ });
70
+ };
71
+ const onError = (event) => {
72
+ detach();
73
+ error.value = event;
74
+ status.value = "error";
75
+ resolve({
76
+ status: "error",
77
+ error: event
78
+ });
79
+ };
80
+ candidate.addEventListener("load", onLoad);
81
+ candidate.addEventListener("error", onError);
82
+ cancelActive = () => {
83
+ detach();
84
+ candidate.src = "";
85
+ resolve({ status: "cancelled" });
86
+ };
87
+ applySource(candidate, toValue(source));
88
+ });
89
+ };
90
+ if (options.immediate ?? true) watch(() => toValue(source), () => {
91
+ load();
92
+ }, {
93
+ immediate: true,
94
+ deep: true,
95
+ flush: "sync"
96
+ });
97
+ tryOnScopeDispose(() => {
98
+ cancelActive?.();
99
+ });
100
+ return {
101
+ status: readonly(status),
102
+ image,
103
+ error,
104
+ ready: computed(() => status.value === "loaded"),
105
+ load
106
+ };
107
+ }
108
+ //#endregion
109
+ export { useImage };
@@ -0,0 +1,207 @@
1
+ import { MaybeRefOrGetter, Ref, ShallowRef } from "vue";
2
+
3
+ //#region src/use-indexed-db.d.ts
4
+ /** Minimal structural view of an `IDBRequest`. */
5
+ interface IndexedDBRequestLike<Result> extends Pick<EventTarget, "addEventListener"> {
6
+ /** Result available after the `success` event. */
7
+ readonly result: Result;
8
+ /** Failure available after the `error` event. */
9
+ readonly error: unknown;
10
+ }
11
+ /** Minimal structural view of an `IDBObjectStore` using out-of-line keys. */
12
+ interface IndexedDBObjectStoreLike {
13
+ /** Read the value stored under `key`. */
14
+ readonly get: (key: IDBValidKey) => IndexedDBRequestLike<unknown>;
15
+ /** Store `value` under `key`. */
16
+ readonly put: (value: unknown, key: IDBValidKey) => IndexedDBRequestLike<IDBValidKey>;
17
+ /** Delete `key`. */
18
+ readonly delete: (key: IDBValidKey) => IndexedDBRequestLike<undefined>;
19
+ /** List every key. */
20
+ readonly getAllKeys: () => IndexedDBRequestLike<IDBValidKey[]>;
21
+ /** Delete every entry. */
22
+ readonly clear: () => IndexedDBRequestLike<undefined>;
23
+ }
24
+ /** Minimal structural view of an `IDBTransaction` (`complete`/`error`/`abort` events). */
25
+ interface IndexedDBTransactionLike extends Pick<EventTarget, "addEventListener"> {
26
+ /** Access an object store in the transaction scope. */
27
+ readonly objectStore: (name: string) => IndexedDBObjectStoreLike;
28
+ /** Failure available after `error`/`abort`. */
29
+ readonly error: unknown;
30
+ }
31
+ /** Minimal structural view of an `IDBDatabase`. */
32
+ interface IndexedDBDatabaseLike {
33
+ /** Current schema version. */
34
+ readonly version: number;
35
+ /** Names of the existing object stores. */
36
+ readonly objectStoreNames: {
37
+ readonly contains: (name: string) => boolean;
38
+ };
39
+ /** Create an object store; only valid during `upgradeneeded`. */
40
+ readonly createObjectStore: (name: string) => unknown;
41
+ /** Start a transaction on one store. */
42
+ readonly transaction: (store: string, mode: "readonly" | "readwrite") => IndexedDBTransactionLike;
43
+ /** Close the connection. */
44
+ readonly close: () => void;
45
+ }
46
+ /** Minimal structural view of an `IDBFactory`; `window.indexedDB` satisfies it. */
47
+ interface IndexedDBFactoryLike {
48
+ /** Open (and possibly upgrade) a database; fires `upgradeneeded`, `success`, `error`. */
49
+ readonly open: (name: string, version?: number) => IndexedDBRequestLike<IndexedDBDatabaseLike>;
50
+ }
51
+ /** Options for {@link createIndexedDBKeyval}. */
52
+ interface IndexedDBKeyvalOptions {
53
+ /**
54
+ * Database name.
55
+ *
56
+ * @default "vize-keyval"
57
+ */
58
+ readonly database?: string;
59
+ /**
60
+ * Object store name; created on demand.
61
+ *
62
+ * @default "keyval"
63
+ */
64
+ readonly store?: string;
65
+ /**
66
+ * IndexedDB implementation.
67
+ *
68
+ * @default window.indexedDB when a browser window exists
69
+ */
70
+ readonly factory?: IndexedDBFactoryLike | null;
71
+ }
72
+ /** Promise-based key-value store returned by {@link createIndexedDBKeyval}. */
73
+ interface IndexedDBKeyval {
74
+ /** Read a structured-cloned value, or `undefined` when absent. */
75
+ readonly get: (key: IDBValidKey) => Promise<unknown>;
76
+ /** Store a structured-cloneable value. Resolves when the transaction commits. */
77
+ readonly set: (key: IDBValidKey, value: unknown) => Promise<void>;
78
+ /** Delete a key. Resolves when the transaction commits. */
79
+ readonly delete: (key: IDBValidKey) => Promise<void>;
80
+ /** List every key. */
81
+ readonly keys: () => Promise<IDBValidKey[]>;
82
+ /** Delete every entry. */
83
+ readonly clear: () => Promise<void>;
84
+ /** Close the connection; the next operation reopens it. */
85
+ readonly close: () => void;
86
+ }
87
+ /**
88
+ * Create a small promise-based key-value store on one IndexedDB object
89
+ * store. The connection opens lazily on the first operation, the store is
90
+ * created on demand, and writes resolve once their transaction commits.
91
+ * Without IndexedDB (server rendering, privacy modes) every operation
92
+ * rejects with a tagged `[VIZE_COMPOSE_INDEXED_DB_UNAVAILABLE]` error.
93
+ *
94
+ * @param options Database, store, and implementation.
95
+ * @default options {}
96
+ * @returns Key-value operations.
97
+ */
98
+ declare function createIndexedDBKeyval(options?: IndexedDBKeyvalOptions): IndexedDBKeyval;
99
+ /** Stable failure codes reported by {@link useIndexedDB}. */
100
+ type IndexedDBErrorCode = "read-failed" | "invalid-value" | "write-failed";
101
+ /** Failure observed while synchronizing a value with IndexedDB. */
102
+ interface IndexedDBFailure {
103
+ /** Which synchronization step failed. */
104
+ readonly code: IndexedDBErrorCode;
105
+ /** Key involved in the failure. */
106
+ readonly key: IDBValidKey;
107
+ /** Exact rejection, or the rejected candidate for `"invalid-value"`. */
108
+ readonly cause: unknown;
109
+ }
110
+ /** Options for {@link useIndexedDB}. */
111
+ interface UseIndexedDBOptions<Value> {
112
+ /**
113
+ * Database name.
114
+ *
115
+ * @default "vize-keyval"
116
+ */
117
+ readonly database?: string;
118
+ /**
119
+ * Object store name; created on demand.
120
+ *
121
+ * @default "keyval"
122
+ */
123
+ readonly store?: string;
124
+ /**
125
+ * Reactive IndexedDB implementation. `null`/`undefined` keeps the default
126
+ * value, which is also what happens during server rendering.
127
+ *
128
+ * @default window.indexedDB when a browser window exists
129
+ */
130
+ readonly factory?: MaybeRefOrGetter<IndexedDBFactoryLike | null | undefined>;
131
+ /**
132
+ * Validation hook applied to every loaded value.
133
+ *
134
+ * @default a structural check that the value has the default's kind
135
+ */
136
+ readonly validate?: (candidate: unknown) => candidate is Value;
137
+ /**
138
+ * Persist the default value when the key is absent.
139
+ *
140
+ * @default true
141
+ */
142
+ readonly writeDefaults?: boolean;
143
+ /**
144
+ * Watch nested mutations of object values.
145
+ *
146
+ * @default true
147
+ */
148
+ readonly deep?: boolean;
149
+ /**
150
+ * Write timing relative to component rendering.
151
+ *
152
+ * @default "pre"
153
+ */
154
+ readonly flush?: "pre" | "post" | "sync";
155
+ /**
156
+ * Observe failures. Failures never reject out of the composable.
157
+ *
158
+ * @default undefined
159
+ */
160
+ readonly onError?: (failure: IndexedDBFailure) => void;
161
+ }
162
+ /** Reactive state and controls returned by {@link useIndexedDB}. */
163
+ interface IndexedDBControls<Value> {
164
+ /** Writable value; assignments and nested mutations are persisted. */
165
+ readonly state: Ref<Value>;
166
+ /** Whether an IndexedDB implementation is attached. */
167
+ readonly supported: Readonly<Ref<boolean>>;
168
+ /** Whether the stored value for the current key has been loaded. */
169
+ readonly ready: Readonly<Ref<boolean>>;
170
+ /** Most recent failure, cleared by the next success. */
171
+ readonly error: Readonly<ShallowRef<IndexedDBFailure | undefined>>;
172
+ /** Reload the stored value. Never rejects. */
173
+ readonly refresh: () => Promise<void>;
174
+ /** Delete the key and restore the default value. Never rejects. */
175
+ readonly remove: () => Promise<void>;
176
+ }
177
+ /**
178
+ * Synchronize a reactive value with one IndexedDB key.
179
+ *
180
+ * Values are stored by structured clone, so objects, arrays, `Map`, `Set`,
181
+ * `Date`, typed arrays, and `Blob`s round-trip without a serializer. The
182
+ * value is loaded asynchronously: `state` holds the default until `ready`
183
+ * becomes `true`. Loaded values pass `validate` before they are accepted.
184
+ * Assignments and nested mutations are written back; changing the reactive
185
+ * `key` loads the new key (stale loads are discarded).
186
+ *
187
+ * Server rendering: without a browser `window` nothing is opened, `state`
188
+ * is the default, and `ready` stays `false`, so server and client first
189
+ * render identically. The connection closes and watchers stop with the
190
+ * owning reactive scope. Failures never reject; they are exposed through
191
+ * `error` and `onError`.
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * const { state: draft, ready } = useIndexedDB("draft", { title: "", body: "" });
196
+ * ```
197
+ *
198
+ * @typeParam Value Stored value type, inferred from `defaultValue`.
199
+ * @param key Reactive IndexedDB key.
200
+ * @param defaultValue Value used until loaded, and when absent or invalid.
201
+ * @param options Database, store, implementation, and validation.
202
+ * @default options {}
203
+ * @returns The synchronized value and its controls.
204
+ */
205
+ declare function useIndexedDB<Value>(key: MaybeRefOrGetter<IDBValidKey>, defaultValue: Value, options?: UseIndexedDBOptions<Value>): IndexedDBControls<Value>;
206
+ //#endregion
207
+ export { IndexedDBControls, IndexedDBDatabaseLike, IndexedDBErrorCode, IndexedDBFactoryLike, IndexedDBFailure, IndexedDBKeyval, IndexedDBKeyvalOptions, IndexedDBObjectStoreLike, IndexedDBRequestLike, IndexedDBTransactionLike, UseIndexedDBOptions, createIndexedDBKeyval, useIndexedDB };