@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,150 @@
1
+ import { ComputedRef, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
2
+
3
+ //#region src/use-speech-recognition.d.ts
4
+ /** One recognition hypothesis. */
5
+ interface SpeechRecognitionAlternativeLike {
6
+ /** Recognized text. */
7
+ readonly transcript: string;
8
+ /** Confidence between 0 and 1. */
9
+ readonly confidence: number;
10
+ }
11
+ /** One recognition result: an array-like list of alternatives. */
12
+ interface SpeechRecognitionResultLike {
13
+ /** Number of alternatives. */
14
+ readonly length: number;
15
+ /** Whether the result is final (no longer interim). */
16
+ readonly isFinal: boolean;
17
+ /** Alternative at `index`, most likely first. */
18
+ readonly [index: number]: SpeechRecognitionAlternativeLike;
19
+ }
20
+ /** Array-like list of every result of the current session. */
21
+ interface SpeechRecognitionResultListLike {
22
+ /** Number of results. */
23
+ readonly length: number;
24
+ /** Result at `index`. */
25
+ readonly [index: number]: SpeechRecognitionResultLike;
26
+ }
27
+ /** Minimal `SpeechRecognition` instance consumed by {@link useSpeechRecognition}. */
28
+ interface SpeechRecognitionLike extends EventTarget {
29
+ /** BCP 47 language tag. */
30
+ lang: string;
31
+ /** Keep listening after the first final result. */
32
+ continuous: boolean;
33
+ /** Report interim (non-final) results. */
34
+ interimResults: boolean;
35
+ /** Maximum alternatives per result. */
36
+ maxAlternatives: number;
37
+ /** Start listening. Throws `InvalidStateError` when already started. */
38
+ start(): void;
39
+ /** Stop listening and deliver a final result. */
40
+ stop(): void;
41
+ /** Stop listening without delivering a result. */
42
+ abort(): void;
43
+ }
44
+ /** Minimal `SpeechRecognition` constructor. */
45
+ interface SpeechRecognitionHost {
46
+ /** Create a recognizer. */
47
+ new (): SpeechRecognitionLike;
48
+ }
49
+ /** Error codes defined by the Web Speech API, plus `"unknown"` for future codes. */
50
+ type SpeechRecognitionErrorCode = "aborted" | "audio-capture" | "bad-grammar" | "language-not-supported" | "network" | "no-speech" | "not-allowed" | "phrases-not-supported" | "service-not-allowed" | "unknown";
51
+ /** Recognition failure reported by {@link useSpeechRecognition}. */
52
+ interface SpeechRecognitionFailure {
53
+ /** Normalized error code. */
54
+ readonly code: SpeechRecognitionErrorCode;
55
+ /** Implementation-provided message, possibly empty. */
56
+ readonly message: string;
57
+ }
58
+ /** Options for {@link useSpeechRecognition}. */
59
+ interface UseSpeechRecognitionOptions {
60
+ /**
61
+ * Recognition language, applied when listening starts.
62
+ *
63
+ * @default "en-US"
64
+ */
65
+ readonly lang?: MaybeRefOrGetter<string>;
66
+ /**
67
+ * Keep listening after the first final result.
68
+ *
69
+ * @default true
70
+ */
71
+ readonly continuous?: boolean;
72
+ /**
73
+ * Report interim results through `interimResult`.
74
+ *
75
+ * @default true
76
+ */
77
+ readonly interimResults?: boolean;
78
+ /**
79
+ * Maximum alternatives per result.
80
+ *
81
+ * @default 1
82
+ */
83
+ readonly maxAlternatives?: number;
84
+ /**
85
+ * Recognizer constructor for alternate runtimes and tests. A ref (not a
86
+ * getter) because the host itself is a constructor function.
87
+ *
88
+ * @default window.SpeechRecognition ?? window.webkitSpeechRecognition
89
+ */
90
+ readonly host?: MaybeRef<SpeechRecognitionHost | null | undefined>;
91
+ }
92
+ /** Reactive state and actions returned by {@link useSpeechRecognition}. */
93
+ interface SpeechRecognitionControls {
94
+ /** Whether a speech recognizer is available. */
95
+ readonly supported: ComputedRef<boolean>;
96
+ /** Whether the recognizer is listening. */
97
+ readonly listening: Readonly<Ref<boolean>>;
98
+ /** Concatenated final transcript of the current session. */
99
+ readonly result: Readonly<Ref<string>>;
100
+ /** Concatenated interim transcript not yet final. */
101
+ readonly interimResult: Readonly<Ref<string>>;
102
+ /** Alternatives of the most recent result. */
103
+ readonly alternatives: Readonly<ShallowRef<readonly SpeechRecognitionAlternativeLike[]>>;
104
+ /** Most recent recognition failure, cleared when listening starts. */
105
+ readonly error: Readonly<ShallowRef<SpeechRecognitionFailure | undefined>>;
106
+ /**
107
+ * Start listening with the current options, clearing previous results.
108
+ *
109
+ * @returns Whether listening started.
110
+ */
111
+ readonly start: () => boolean;
112
+ /** Stop listening and keep the final result. */
113
+ readonly stop: () => void;
114
+ /** Stop listening immediately without a final result. */
115
+ readonly abort: () => void;
116
+ /**
117
+ * Start or stop listening.
118
+ *
119
+ * @param value Force listening on or off.
120
+ * @default value !listening
121
+ */
122
+ readonly toggle: (value?: boolean) => void;
123
+ }
124
+ /**
125
+ * Transcribe speech with the Web Speech API.
126
+ *
127
+ * `result` accumulates the final transcript of the current session and
128
+ * `interimResult` the text still being recognized. Options are applied each
129
+ * time listening starts, so a reactive `lang` takes effect on the next
130
+ * `start`. Errors are normalized to a closed {@link SpeechRecognitionErrorCode}
131
+ * union and exposed through `error` rather than thrown. The recognizer is
132
+ * aborted and its listeners removed when the owning reactive scope stops.
133
+ *
134
+ * Server rendering: no recognizer is created; `supported` and `listening`
135
+ * are false and the transcripts are empty.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * const speech = useSpeechRecognition({ lang: "ja-JP" });
140
+ * speech.start();
141
+ * watch(speech.result, (text) => console.log(text));
142
+ * ```
143
+ *
144
+ * @param options Recognition settings and recognizer constructor.
145
+ * @default options {}
146
+ * @returns Recognition state and actions.
147
+ */
148
+ declare function useSpeechRecognition(options?: UseSpeechRecognitionOptions): SpeechRecognitionControls;
149
+ //#endregion
150
+ export { SpeechRecognitionAlternativeLike, SpeechRecognitionControls, SpeechRecognitionErrorCode, SpeechRecognitionFailure, SpeechRecognitionHost, SpeechRecognitionLike, SpeechRecognitionResultLike, SpeechRecognitionResultListLike, UseSpeechRecognitionOptions, useSpeechRecognition };
@@ -0,0 +1,168 @@
1
+ import { computed, readonly, ref, shallowRef, toValue, unref, watch } from "vue";
2
+ //#region src/use-speech-recognition.ts
3
+ const errorCodes = new Set([
4
+ "aborted",
5
+ "audio-capture",
6
+ "bad-grammar",
7
+ "language-not-supported",
8
+ "network",
9
+ "no-speech",
10
+ "not-allowed",
11
+ "phrases-not-supported",
12
+ "service-not-allowed"
13
+ ]);
14
+ function isErrorCode(code) {
15
+ return errorCodes.has(code);
16
+ }
17
+ function isRecognitionConstructor(candidate) {
18
+ return typeof candidate === "function";
19
+ }
20
+ function browserRecognitionHost() {
21
+ if (typeof window === "undefined") return void 0;
22
+ const candidate = Reflect.get(window, "SpeechRecognition") ?? Reflect.get(window, "webkitSpeechRecognition");
23
+ return isRecognitionConstructor(candidate) ? candidate : void 0;
24
+ }
25
+ function isResultEvent(event) {
26
+ if (!("results" in event)) return false;
27
+ const { results } = event;
28
+ return typeof results === "object" && results !== null && "length" in results;
29
+ }
30
+ function readString(event, key) {
31
+ const value = key in event ? Reflect.get(event, key) : void 0;
32
+ return typeof value === "string" ? value : "";
33
+ }
34
+ /**
35
+ * Transcribe speech with the Web Speech API.
36
+ *
37
+ * `result` accumulates the final transcript of the current session and
38
+ * `interimResult` the text still being recognized. Options are applied each
39
+ * time listening starts, so a reactive `lang` takes effect on the next
40
+ * `start`. Errors are normalized to a closed {@link SpeechRecognitionErrorCode}
41
+ * union and exposed through `error` rather than thrown. The recognizer is
42
+ * aborted and its listeners removed when the owning reactive scope stops.
43
+ *
44
+ * Server rendering: no recognizer is created; `supported` and `listening`
45
+ * are false and the transcripts are empty.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * const speech = useSpeechRecognition({ lang: "ja-JP" });
50
+ * speech.start();
51
+ * watch(speech.result, (text) => console.log(text));
52
+ * ```
53
+ *
54
+ * @param options Recognition settings and recognizer constructor.
55
+ * @default options {}
56
+ * @returns Recognition state and actions.
57
+ */
58
+ function useSpeechRecognition(options = {}) {
59
+ const listening = ref(false);
60
+ const result = ref("");
61
+ const interimResult = ref("");
62
+ const alternatives = shallowRef([]);
63
+ const error = shallowRef(void 0);
64
+ let recognition;
65
+ const resolveHost = () => options.host === void 0 ? browserRecognitionHost() : unref(options.host) ?? void 0;
66
+ const onResult = (event) => {
67
+ if (!isResultEvent(event)) return;
68
+ const finals = [];
69
+ const interim = [];
70
+ let last;
71
+ for (let index = 0; index < event.results.length; index += 1) {
72
+ const entry = event.results[index];
73
+ if (!entry) continue;
74
+ last = entry;
75
+ const best = entry[0];
76
+ if (best) (entry.isFinal ? finals : interim).push(best.transcript);
77
+ }
78
+ result.value = finals.join("");
79
+ interimResult.value = interim.join("");
80
+ const collected = [];
81
+ for (let index = 0; last && index < last.length; index += 1) {
82
+ const alternative = last[index];
83
+ if (alternative) collected.push(alternative);
84
+ }
85
+ alternatives.value = collected;
86
+ };
87
+ const onError = (event) => {
88
+ const code = readString(event, "error");
89
+ error.value = {
90
+ code: isErrorCode(code) ? code : "unknown",
91
+ message: readString(event, "message")
92
+ };
93
+ };
94
+ const onStart = () => {
95
+ listening.value = true;
96
+ };
97
+ const onEnd = () => {
98
+ listening.value = false;
99
+ interimResult.value = "";
100
+ };
101
+ watch(resolveHost, (Host, _previous, onCleanup) => {
102
+ listening.value = false;
103
+ recognition = void 0;
104
+ if (!Host) return;
105
+ const instance = new Host();
106
+ instance.addEventListener("result", onResult);
107
+ instance.addEventListener("error", onError);
108
+ instance.addEventListener("start", onStart);
109
+ instance.addEventListener("end", onEnd);
110
+ recognition = instance;
111
+ onCleanup(() => {
112
+ instance.removeEventListener("result", onResult);
113
+ instance.removeEventListener("error", onError);
114
+ instance.removeEventListener("start", onStart);
115
+ instance.removeEventListener("end", onEnd);
116
+ if (listening.value) instance.abort();
117
+ listening.value = false;
118
+ if (recognition === instance) recognition = void 0;
119
+ });
120
+ }, {
121
+ immediate: true,
122
+ flush: "sync"
123
+ });
124
+ const start = () => {
125
+ const instance = recognition;
126
+ if (!instance || listening.value) return listening.value;
127
+ instance.lang = toValue(options.lang) ?? "en-US";
128
+ instance.continuous = options.continuous ?? true;
129
+ instance.interimResults = options.interimResults ?? true;
130
+ instance.maxAlternatives = options.maxAlternatives ?? 1;
131
+ result.value = "";
132
+ interimResult.value = "";
133
+ alternatives.value = [];
134
+ error.value = void 0;
135
+ try {
136
+ instance.start();
137
+ } catch {
138
+ return false;
139
+ }
140
+ listening.value = true;
141
+ return true;
142
+ };
143
+ const stop = () => {
144
+ recognition?.stop();
145
+ };
146
+ const abort = () => {
147
+ recognition?.abort();
148
+ listening.value = false;
149
+ };
150
+ const toggle = (value = !listening.value) => {
151
+ if (value) start();
152
+ else stop();
153
+ };
154
+ return {
155
+ supported: computed(() => resolveHost() !== void 0),
156
+ listening: readonly(listening),
157
+ result: readonly(result),
158
+ interimResult: readonly(interimResult),
159
+ alternatives,
160
+ error,
161
+ start,
162
+ stop,
163
+ abort,
164
+ toggle
165
+ };
166
+ }
167
+ //#endregion
168
+ export { useSpeechRecognition };
@@ -0,0 +1,148 @@
1
+ import { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
2
+
3
+ //#region src/use-speech-synthesis.d.ts
4
+ /** Minimal `SpeechSynthesisVoice`. */
5
+ interface SpeechSynthesisVoiceLike {
6
+ /** Human-readable voice name. */
7
+ readonly name: string;
8
+ /** BCP 47 language tag. */
9
+ readonly lang: string;
10
+ /** Stable voice identifier. */
11
+ readonly voiceURI: string;
12
+ /** Whether synthesis runs locally. */
13
+ readonly localService: boolean;
14
+ /** Whether this is the platform default voice. */
15
+ readonly default: boolean;
16
+ }
17
+ /** Minimal `SpeechSynthesisUtterance`. */
18
+ interface SpeechSynthesisUtteranceLike extends EventTarget {
19
+ /** Text to speak. */
20
+ text: string;
21
+ /** BCP 47 language tag. */
22
+ lang: string;
23
+ /** Pitch from 0 to 2. */
24
+ pitch: number;
25
+ /** Rate from 0.1 to 10. */
26
+ rate: number;
27
+ /** Volume from 0 to 1. */
28
+ volume: number;
29
+ /** Voice, or `null` for the platform default. */
30
+ voice: SpeechSynthesisVoiceLike | null;
31
+ }
32
+ /** Minimal `speechSynthesis` controller. */
33
+ interface SpeechSynthesisLike extends EventTarget {
34
+ /** Queue an utterance. */
35
+ speak(utterance: SpeechSynthesisUtteranceLike): void;
36
+ /** Clear the queue and stop speaking. */
37
+ cancel(): void;
38
+ /** Pause speaking. */
39
+ pause(): void;
40
+ /** Resume speaking. */
41
+ resume(): void;
42
+ /** Voices available right now (may be empty until `voiceschanged`). */
43
+ getVoices(): readonly SpeechSynthesisVoiceLike[];
44
+ }
45
+ /** Capabilities used by {@link useSpeechSynthesis}. */
46
+ interface SpeechSynthesisHost {
47
+ /** Synthesis controller (`window.speechSynthesis`). */
48
+ readonly synthesis: SpeechSynthesisLike;
49
+ /** Utterance constructor (`window.SpeechSynthesisUtterance`). */
50
+ readonly Utterance: new (text?: string) => SpeechSynthesisUtteranceLike;
51
+ }
52
+ /** Playback state of {@link useSpeechSynthesis}. */
53
+ type SpeechSynthesisStatus = "idle" | "speaking" | "paused" | "ended" | "error";
54
+ /** Error codes defined by the Web Speech API, plus `"unknown"` for future codes. */
55
+ type SpeechSynthesisErrorCode = "audio-busy" | "audio-hardware" | "invalid-argument" | "language-unavailable" | "network" | "not-allowed" | "synthesis-failed" | "synthesis-unavailable" | "text-too-long" | "voice-unavailable" | "unknown";
56
+ /** Options for {@link useSpeechSynthesis}. */
57
+ interface UseSpeechSynthesisOptions {
58
+ /**
59
+ * BCP 47 language tag.
60
+ *
61
+ * @default "en-US"
62
+ */
63
+ readonly lang?: MaybeRefOrGetter<string>;
64
+ /**
65
+ * Pitch from 0 to 2.
66
+ *
67
+ * @default 1
68
+ */
69
+ readonly pitch?: MaybeRefOrGetter<number>;
70
+ /**
71
+ * Rate from 0.1 to 10.
72
+ *
73
+ * @default 1
74
+ */
75
+ readonly rate?: MaybeRefOrGetter<number>;
76
+ /**
77
+ * Volume from 0 to 1.
78
+ *
79
+ * @default 1
80
+ */
81
+ readonly volume?: MaybeRefOrGetter<number>;
82
+ /**
83
+ * Voice to use; `undefined` uses the platform default for `lang`.
84
+ *
85
+ * @default undefined
86
+ */
87
+ readonly voice?: MaybeRefOrGetter<SpeechSynthesisVoiceLike | undefined>;
88
+ /**
89
+ * Synthesis capabilities for alternate runtimes and tests.
90
+ *
91
+ * @default window.speechSynthesis and window.SpeechSynthesisUtterance
92
+ */
93
+ readonly host?: MaybeRefOrGetter<SpeechSynthesisHost | null | undefined>;
94
+ }
95
+ /** Reactive state and actions returned by {@link useSpeechSynthesis}. */
96
+ interface SpeechSynthesisControls {
97
+ /** Whether speech synthesis is available. */
98
+ readonly supported: ComputedRef<boolean>;
99
+ /** Playback state of the utterance spoken by this composable. */
100
+ readonly status: Readonly<Ref<SpeechSynthesisStatus>>;
101
+ /** Voices offered by the platform, updated on `voiceschanged`. */
102
+ readonly voices: Readonly<ShallowRef<readonly SpeechSynthesisVoiceLike[]>>;
103
+ /** Most recent synthesis error, cleared by the next `speak`. */
104
+ readonly error: Readonly<ShallowRef<SpeechSynthesisErrorCode | undefined>>;
105
+ /**
106
+ * Speak the current text, cancelling anything this composable is speaking.
107
+ *
108
+ * @returns Whether an utterance was queued.
109
+ * @throws {RangeError} `[VIZE_COMPOSE_SPEECH_SYNTHESIS_INVALID_OPTION]` when
110
+ * pitch, rate, or volume is out of range.
111
+ */
112
+ readonly speak: () => boolean;
113
+ /** Pause speaking. */
114
+ readonly pause: () => void;
115
+ /** Resume paused speech. */
116
+ readonly resume: () => void;
117
+ /** Stop speaking and clear the queue. */
118
+ readonly cancel: () => void;
119
+ }
120
+ /**
121
+ * Speak text with the Web Speech API.
122
+ *
123
+ * Each `speak` creates a fresh utterance from the current reactive text,
124
+ * language, voice, pitch, rate, and volume (validated ranges), and cancels
125
+ * speech previously started by this composable. `status` follows the
126
+ * utterance lifecycle; interruptions caused by `cancel` return to `"idle"`
127
+ * instead of reporting an error. The available voices are kept current via
128
+ * `voiceschanged`. Speech started by this composable is cancelled and the
129
+ * listener removed when the owning reactive scope stops.
130
+ *
131
+ * Server rendering: nothing is spoken; `supported` is false, `status` is
132
+ * `"idle"`, and `voices` is empty.
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * const text = ref("Hello, Vize");
137
+ * const { speak, status } = useSpeechSynthesis(text, { rate: 1.2 });
138
+ * speak();
139
+ * ```
140
+ *
141
+ * @param text Reactive text to speak.
142
+ * @param options Voice parameters and synthesis capabilities.
143
+ * @default options {}
144
+ * @returns Synthesis state and actions.
145
+ */
146
+ declare function useSpeechSynthesis(text: MaybeRefOrGetter<string>, options?: UseSpeechSynthesisOptions): SpeechSynthesisControls;
147
+ //#endregion
148
+ export { SpeechSynthesisControls, SpeechSynthesisErrorCode, SpeechSynthesisHost, SpeechSynthesisLike, SpeechSynthesisStatus, SpeechSynthesisUtteranceLike, SpeechSynthesisVoiceLike, UseSpeechSynthesisOptions, useSpeechSynthesis };
@@ -0,0 +1,152 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { computed, readonly, ref, shallowRef, toValue, watch } from "vue";
3
+ //#region src/use-speech-synthesis.ts
4
+ const synthesisErrorCodes = new Set([
5
+ "audio-busy",
6
+ "audio-hardware",
7
+ "invalid-argument",
8
+ "language-unavailable",
9
+ "network",
10
+ "not-allowed",
11
+ "synthesis-failed",
12
+ "synthesis-unavailable",
13
+ "text-too-long",
14
+ "voice-unavailable"
15
+ ]);
16
+ function isSynthesisErrorCode(code) {
17
+ return synthesisErrorCodes.has(code);
18
+ }
19
+ function browserSynthesisHost() {
20
+ if (typeof window === "undefined") return void 0;
21
+ if (!("speechSynthesis" in window) || !("SpeechSynthesisUtterance" in window)) return void 0;
22
+ return {
23
+ synthesis: window.speechSynthesis,
24
+ Utterance: window.SpeechSynthesisUtterance
25
+ };
26
+ }
27
+ function checkedRange(name, value, minimum, maximum) {
28
+ if (!Number.isFinite(value) || value < minimum || value > maximum) throw new RangeError(`[VIZE_COMPOSE_SPEECH_SYNTHESIS_INVALID_OPTION] ${name} must be between ${String(minimum)} and ${String(maximum)}; received ${String(value)}`);
29
+ return value;
30
+ }
31
+ /**
32
+ * Speak text with the Web Speech API.
33
+ *
34
+ * Each `speak` creates a fresh utterance from the current reactive text,
35
+ * language, voice, pitch, rate, and volume (validated ranges), and cancels
36
+ * speech previously started by this composable. `status` follows the
37
+ * utterance lifecycle; interruptions caused by `cancel` return to `"idle"`
38
+ * instead of reporting an error. The available voices are kept current via
39
+ * `voiceschanged`. Speech started by this composable is cancelled and the
40
+ * listener removed when the owning reactive scope stops.
41
+ *
42
+ * Server rendering: nothing is spoken; `supported` is false, `status` is
43
+ * `"idle"`, and `voices` is empty.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * const text = ref("Hello, Vize");
48
+ * const { speak, status } = useSpeechSynthesis(text, { rate: 1.2 });
49
+ * speak();
50
+ * ```
51
+ *
52
+ * @param text Reactive text to speak.
53
+ * @param options Voice parameters and synthesis capabilities.
54
+ * @default options {}
55
+ * @returns Synthesis state and actions.
56
+ */
57
+ function useSpeechSynthesis(text, options = {}) {
58
+ const status = ref("idle");
59
+ const voices = shallowRef([]);
60
+ const error = shallowRef(void 0);
61
+ let current;
62
+ const resolveHost = () => options.host === void 0 ? browserSynthesisHost() : toValue(options.host) ?? void 0;
63
+ const readParameters = () => ({
64
+ pitch: checkedRange("pitch", toValue(options.pitch) ?? 1, 0, 2),
65
+ rate: checkedRange("rate", toValue(options.rate) ?? 1, .1, 10),
66
+ volume: checkedRange("volume", toValue(options.volume) ?? 1, 0, 1)
67
+ });
68
+ readParameters();
69
+ watch(() => resolveHost()?.synthesis, (synthesis, _previous, onCleanup) => {
70
+ voices.value = [];
71
+ if (!synthesis) return;
72
+ const update = () => {
73
+ voices.value = [...synthesis.getVoices()];
74
+ };
75
+ update();
76
+ synthesis.addEventListener("voiceschanged", update);
77
+ onCleanup(() => synthesis.removeEventListener("voiceschanged", update));
78
+ }, {
79
+ immediate: true,
80
+ flush: "sync"
81
+ });
82
+ const cancel = () => {
83
+ const host = resolveHost();
84
+ const active = current;
85
+ current = void 0;
86
+ if (host && active) host.synthesis.cancel();
87
+ status.value = "idle";
88
+ };
89
+ const speak = () => {
90
+ const host = resolveHost();
91
+ const parameters = readParameters();
92
+ if (!host) return false;
93
+ if (current) cancel();
94
+ const utterance = new host.Utterance(toValue(text));
95
+ utterance.lang = toValue(options.lang) ?? "en-US";
96
+ utterance.pitch = parameters.pitch;
97
+ utterance.rate = parameters.rate;
98
+ utterance.volume = parameters.volume;
99
+ utterance.voice = toValue(options.voice) ?? null;
100
+ const own = () => current === utterance;
101
+ utterance.addEventListener("start", () => {
102
+ if (own()) status.value = "speaking";
103
+ });
104
+ utterance.addEventListener("pause", () => {
105
+ if (own()) status.value = "paused";
106
+ });
107
+ utterance.addEventListener("resume", () => {
108
+ if (own()) status.value = "speaking";
109
+ });
110
+ utterance.addEventListener("end", () => {
111
+ if (!own()) return;
112
+ current = void 0;
113
+ status.value = "ended";
114
+ });
115
+ utterance.addEventListener("error", (event) => {
116
+ if (!own()) return;
117
+ current = void 0;
118
+ const code = "error" in event ? event.error : void 0;
119
+ if (code === "canceled" || code === "interrupted") {
120
+ status.value = "idle";
121
+ return;
122
+ }
123
+ error.value = typeof code === "string" && isSynthesisErrorCode(code) ? code : "unknown";
124
+ status.value = "error";
125
+ });
126
+ error.value = void 0;
127
+ current = utterance;
128
+ host.synthesis.speak(utterance);
129
+ return true;
130
+ };
131
+ const pause = () => {
132
+ if (current) resolveHost()?.synthesis.pause();
133
+ };
134
+ const resume = () => {
135
+ if (current) resolveHost()?.synthesis.resume();
136
+ };
137
+ tryOnScopeDispose(() => {
138
+ if (current) cancel();
139
+ });
140
+ return {
141
+ supported: computed(() => resolveHost() !== void 0),
142
+ status: readonly(status),
143
+ voices,
144
+ error,
145
+ speak,
146
+ pause,
147
+ resume,
148
+ cancel
149
+ };
150
+ }
151
+ //#endregion
152
+ export { useSpeechSynthesis };
@@ -0,0 +1,83 @@
1
+ import { ComputedRef } from "vue";
2
+
3
+ //#region src/use-stack.d.ts
4
+ /** What happens when an item is pushed while a bounded stack is full. */
5
+ type StackOverflowPolicy = "drop-oldest" | "reject";
6
+ /** Options for {@link useStack}. */
7
+ interface UseStackOptions {
8
+ /**
9
+ * Maximum number of stacked items. A positive integer, or
10
+ * `Number.POSITIVE_INFINITY` for an unbounded stack.
11
+ *
12
+ * @default Number.POSITIVE_INFINITY
13
+ */
14
+ readonly capacity?: number;
15
+ /**
16
+ * Policy applied when an item is pushed at capacity: `"drop-oldest"`
17
+ * discards the bottom item to make room, `"reject"` refuses the new item.
18
+ *
19
+ * @default "drop-oldest"
20
+ */
21
+ readonly overflow?: StackOverflowPolicy;
22
+ }
23
+ /** Reactive last-in, first-out stack returned by {@link useStack}. */
24
+ interface StackControls<Item> {
25
+ /** Snapshot of the stacked items, bottom first (the top is the last element). */
26
+ readonly items: ComputedRef<readonly Item[]>;
27
+ /** Number of stacked items. */
28
+ readonly size: ComputedRef<number>;
29
+ /** Whether the stack holds no items. */
30
+ readonly isEmpty: ComputedRef<boolean>;
31
+ /**
32
+ * Read the top without removing it. Reactive when read inside an effect.
33
+ *
34
+ * @returns The top item, or `undefined` when empty.
35
+ */
36
+ readonly peek: () => Item | undefined;
37
+ /**
38
+ * Push items in argument order (the last argument ends on top), applying
39
+ * the overflow policy.
40
+ *
41
+ * @param items Items to push.
42
+ * @returns How many of the given items were accepted.
43
+ */
44
+ readonly push: (...items: Item[]) => number;
45
+ /**
46
+ * Remove and return the top.
47
+ *
48
+ * @returns The removed item, or `undefined` when empty.
49
+ */
50
+ readonly pop: () => Item | undefined;
51
+ /** Remove every item. */
52
+ readonly clear: () => void;
53
+ }
54
+ /**
55
+ * Create a typed reactive LIFO stack.
56
+ *
57
+ * `push` and `pop` are O(1). A bounded stack either drops its bottom item
58
+ * or rejects new pushes when full. Reactivity is driven by a version
59
+ * counter, so `items`, `size`, `isEmpty`, and `peek` re-evaluate after
60
+ * every mutation.
61
+ *
62
+ * Purely synchronous state: safe during server rendering (no host globals,
63
+ * no timers) and nothing to dispose.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const breadcrumbs = useStack<string>(["home"]);
68
+ * breadcrumbs.push("settings");
69
+ * breadcrumbs.pop(); // "settings"
70
+ * ```
71
+ *
72
+ * @typeParam Item Stacked item type, inferred from `initial` when given.
73
+ * @param initial Items pushed at creation, bottom first (overflow applies).
74
+ * @param options Capacity and overflow policy.
75
+ * @default initial []
76
+ * @default options {}
77
+ * @throws {RangeError} `[VIZE_COMPOSE_STACK_INVALID_CAPACITY]` when `capacity`
78
+ * is not a positive integer or `Infinity`.
79
+ * @returns The reactive stack and its controls.
80
+ */
81
+ declare function useStack<Item>(initial?: Iterable<Item>, options?: UseStackOptions): StackControls<Item>;
82
+ //#endregion
83
+ export { StackControls, StackOverflowPolicy, UseStackOptions, useStack };