@vizejs/composable 0.426.3 → 0.428.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,342 @@
1
+ import { ComputedRef, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
2
+
3
+ //#region src/use-builtin-ai.d.ts
4
+ /** Model availability reported by the built-in AI APIs. */
5
+ type BuiltinAiAvailability = "unavailable" | "downloadable" | "downloading" | "available";
6
+ /** Lifecycle of a built-in AI session owned by a composable. */
7
+ type BuiltinAiStatus = "unsupported" | "idle" | "downloading" | "creating" | "ready" | "error";
8
+ /** `downloadprogress` event: `loaded` is a fraction of `total` (usually 1). */
9
+ interface BuiltinAiDownloadProgressEvent {
10
+ /** Downloaded amount. */
11
+ readonly loaded: number;
12
+ /** Total amount (1 in current browsers). */
13
+ readonly total?: number | undefined;
14
+ }
15
+ /** Monitor handed to the `monitor` callback of `create()`. */
16
+ interface BuiltinAiMonitorLike {
17
+ /** Subscribe to model download progress. */
18
+ addEventListener(type: "downloadprogress", listener: (event: BuiltinAiDownloadProgressEvent) => void): void;
19
+ }
20
+ /** Options added by the composables to every `create()` call. */
21
+ interface BuiltinAiCreateMonitorOptions {
22
+ /** Receives the download monitor. */
23
+ readonly monitor: (monitor: BuiltinAiMonitorLike) => void;
24
+ /** Aborts creation when the session is destroyed. */
25
+ readonly signal: AbortSignal;
26
+ }
27
+ /** Streaming output of a built-in AI call (a `ReadableStream<string>`). */
28
+ type BuiltinAiTextStream = AsyncIterable<string> | {
29
+ /** Lock the stream and read chunks. */getReader(): {
30
+ /** Read the next chunk. */read(): Promise<{
31
+ readonly done: boolean;
32
+ readonly value?: string | undefined;
33
+ }>; /** Release the lock. */
34
+ releaseLock(): void;
35
+ };
36
+ };
37
+ /** Common state and actions of every built-in AI composable. */
38
+ interface BuiltinAiSessionControls {
39
+ /** Whether the API's global constructor is available. */
40
+ readonly supported: ComputedRef<boolean>;
41
+ /** Session lifecycle. */
42
+ readonly status: ComputedRef<BuiltinAiStatus>;
43
+ /** Model download progress (0..1) during `create()`. */
44
+ readonly downloadProgress: Readonly<Ref<number>>;
45
+ /** Most recent failure, cleared by the next successful call. */
46
+ readonly error: Readonly<ShallowRef<unknown>>;
47
+ /**
48
+ * Ask whether the model for the current options is usable.
49
+ *
50
+ * @returns The availability; `"unavailable"` when unsupported or on failure.
51
+ */
52
+ readonly availability: () => Promise<BuiltinAiAvailability>;
53
+ /**
54
+ * Create the session (downloading the model when needed). Browsers require
55
+ * a user gesture for a download. Operations create it lazily.
56
+ *
57
+ * @returns Whether the session is ready.
58
+ */
59
+ readonly create: () => Promise<boolean>;
60
+ /** Destroy the session and abort a pending creation. Repeated calls are safe. */
61
+ readonly destroy: () => void;
62
+ }
63
+ /** Minimal `Translator` instance. */
64
+ interface TranslatorLike {
65
+ /** Translate `input`. */
66
+ translate(input: string): Promise<string>;
67
+ /** Translate `input`, streaming chunks. */
68
+ translateStreaming(input: string): BuiltinAiTextStream;
69
+ /** Release the session. */
70
+ destroy(): void;
71
+ }
72
+ /** Language pair of a translator. */
73
+ interface TranslatorLanguages {
74
+ /** BCP 47 source language. */
75
+ readonly sourceLanguage: string;
76
+ /** BCP 47 target language. */
77
+ readonly targetLanguage: string;
78
+ }
79
+ /** Minimal global `Translator` class (static methods). */
80
+ interface TranslatorHost {
81
+ /** Availability of a language pair. */
82
+ availability(options: TranslatorLanguages): Promise<BuiltinAiAvailability>;
83
+ /** Create a translator. */
84
+ create(options: TranslatorLanguages & BuiltinAiCreateMonitorOptions): Promise<TranslatorLike>;
85
+ }
86
+ /** Options for {@link useTranslator}. */
87
+ interface UseTranslatorOptions {
88
+ /** BCP 47 source language; a change destroys the current session. */
89
+ readonly sourceLanguage: MaybeRefOrGetter<string>;
90
+ /** BCP 47 target language; a change destroys the current session. */
91
+ readonly targetLanguage: MaybeRefOrGetter<string>;
92
+ /**
93
+ * `Translator` class. A ref (not a getter) because the host is a class.
94
+ *
95
+ * @default window.Translator when it exists
96
+ */
97
+ readonly host?: MaybeRef<TranslatorHost | null | undefined>;
98
+ }
99
+ /** State and actions returned by {@link useTranslator}. */
100
+ interface TranslatorControls extends BuiltinAiSessionControls {
101
+ /**
102
+ * Translate text, creating the session on first use. Rejects with a
103
+ * tagged `Error` when unsupported or with the host's failure.
104
+ *
105
+ * @param text Text to translate.
106
+ * @returns The translation.
107
+ */
108
+ readonly translate: (text: string) => Promise<string>;
109
+ /**
110
+ * Translate text as a stream of chunks.
111
+ *
112
+ * @param text Text to translate.
113
+ * @returns Async iterable of translated chunks.
114
+ */
115
+ readonly translateStreaming: (text: string) => AsyncIterable<string>;
116
+ }
117
+ /** One candidate returned by `LanguageDetector.detect`. */
118
+ interface LanguageDetectionResult {
119
+ /** BCP 47 language tag (`"und"` for unknown). */
120
+ readonly detectedLanguage: string;
121
+ /** Confidence between 0 and 1. */
122
+ readonly confidence: number;
123
+ }
124
+ /** Minimal `LanguageDetector` instance. */
125
+ interface LanguageDetectorLike {
126
+ /** Rank candidate languages for `input`. */
127
+ detect(input: string): Promise<readonly LanguageDetectionResult[]>;
128
+ /** Release the session. */
129
+ destroy(): void;
130
+ }
131
+ /** Creation options of a language detector. */
132
+ interface LanguageDetectorCreateOptions {
133
+ /**
134
+ * Languages the input is expected to be in.
135
+ *
136
+ * @default undefined
137
+ */
138
+ readonly expectedInputLanguages?: readonly string[];
139
+ }
140
+ /** Minimal global `LanguageDetector` class (static methods). */
141
+ interface LanguageDetectorHost {
142
+ /** Availability of the detector. */
143
+ availability(options: LanguageDetectorCreateOptions): Promise<BuiltinAiAvailability>;
144
+ /** Create a detector. */
145
+ create(options: LanguageDetectorCreateOptions & BuiltinAiCreateMonitorOptions): Promise<LanguageDetectorLike>;
146
+ }
147
+ /** Options for {@link useLanguageDetector}. */
148
+ interface UseLanguageDetectorOptions {
149
+ /**
150
+ * Languages the input is expected to be in; a change destroys the session.
151
+ *
152
+ * @default undefined
153
+ */
154
+ readonly expectedInputLanguages?: MaybeRefOrGetter<readonly string[] | undefined>;
155
+ /**
156
+ * `LanguageDetector` class.
157
+ *
158
+ * @default window.LanguageDetector when it exists
159
+ */
160
+ readonly host?: MaybeRef<LanguageDetectorHost | null | undefined>;
161
+ }
162
+ /** State and actions returned by {@link useLanguageDetector}. */
163
+ interface LanguageDetectorControls extends BuiltinAiSessionControls {
164
+ /**
165
+ * Detect the language of text, creating the session on first use.
166
+ *
167
+ * @param text Text to inspect.
168
+ * @returns Candidates ordered by confidence.
169
+ */
170
+ readonly detect: (text: string) => Promise<readonly LanguageDetectionResult[]>;
171
+ }
172
+ /** Summary kinds. */
173
+ type SummarizerType = "tldr" | "teaser" | "key-points" | "headline";
174
+ /** Summary output formats. */
175
+ type SummarizerFormat = "plain-text" | "markdown";
176
+ /** Summary lengths. */
177
+ type SummarizerLength = "short" | "medium" | "long";
178
+ /** Creation options of a summarizer. */
179
+ interface SummarizerCreateOptions {
180
+ /** Summary kind. */
181
+ readonly type: SummarizerType;
182
+ /** Output format. */
183
+ readonly format: SummarizerFormat;
184
+ /** Output length. */
185
+ readonly length: SummarizerLength;
186
+ /**
187
+ * Background shared by every summary.
188
+ *
189
+ * @default undefined
190
+ */
191
+ readonly sharedContext?: string;
192
+ }
193
+ /** Per-call options of `summarize`. */
194
+ interface SummarizeCallOptions {
195
+ /**
196
+ * Background for this input only.
197
+ *
198
+ * @default undefined
199
+ */
200
+ readonly context?: string;
201
+ }
202
+ /** Minimal `Summarizer` instance. */
203
+ interface SummarizerLike {
204
+ /** Summarize `input`. */
205
+ summarize(input: string, options?: SummarizeCallOptions): Promise<string>;
206
+ /** Summarize `input`, streaming chunks. */
207
+ summarizeStreaming(input: string, options?: SummarizeCallOptions): BuiltinAiTextStream;
208
+ /** Release the session. */
209
+ destroy(): void;
210
+ }
211
+ /** Minimal global `Summarizer` class (static methods). */
212
+ interface SummarizerHost {
213
+ /** Availability of the summarizer. */
214
+ availability(options: SummarizerCreateOptions): Promise<BuiltinAiAvailability>;
215
+ /** Create a summarizer. */
216
+ create(options: SummarizerCreateOptions & BuiltinAiCreateMonitorOptions): Promise<SummarizerLike>;
217
+ }
218
+ /** Options for {@link useSummarizer}. */
219
+ interface UseSummarizerOptions {
220
+ /**
221
+ * Summary kind; a change destroys the session.
222
+ *
223
+ * @default "key-points"
224
+ */
225
+ readonly type?: MaybeRefOrGetter<SummarizerType>;
226
+ /**
227
+ * Output format; a change destroys the session.
228
+ *
229
+ * @default "markdown"
230
+ */
231
+ readonly format?: MaybeRefOrGetter<SummarizerFormat>;
232
+ /**
233
+ * Output length; a change destroys the session.
234
+ *
235
+ * @default "short"
236
+ */
237
+ readonly length?: MaybeRefOrGetter<SummarizerLength>;
238
+ /**
239
+ * Background shared by every summary; a change destroys the session.
240
+ *
241
+ * @default undefined
242
+ */
243
+ readonly sharedContext?: MaybeRefOrGetter<string | undefined>;
244
+ /**
245
+ * `Summarizer` class.
246
+ *
247
+ * @default window.Summarizer when it exists
248
+ */
249
+ readonly host?: MaybeRef<SummarizerHost | null | undefined>;
250
+ }
251
+ /** State and actions returned by {@link useSummarizer}. */
252
+ interface SummarizerControls extends BuiltinAiSessionControls {
253
+ /**
254
+ * Summarize text, creating the session on first use.
255
+ *
256
+ * @param text Text to summarize.
257
+ * @param options Per-call context.
258
+ * @returns The summary.
259
+ */
260
+ readonly summarize: (text: string, options?: SummarizeCallOptions) => Promise<string>;
261
+ /**
262
+ * Summarize text as a stream of chunks.
263
+ *
264
+ * @param text Text to summarize.
265
+ * @param options Per-call context.
266
+ * @returns Async iterable of summary chunks.
267
+ */
268
+ readonly summarizeStreaming: (text: string, options?: SummarizeCallOptions) => AsyncIterable<string>;
269
+ }
270
+ /**
271
+ * Translate text on-device with Chrome's built-in `Translator` API.
272
+ *
273
+ * The session is created lazily by the first `translate` (or explicitly by
274
+ * `create()`, which browsers require inside a user gesture when the model
275
+ * must be downloaded); `downloadProgress` follows the download. Changing a
276
+ * language destroys the session. The session is destroyed and a pending
277
+ * creation aborted when the owning reactive scope stops; outside a scope
278
+ * call `destroy()`.
279
+ *
280
+ * Server rendering: nothing is created, `supported` is false and `status`
281
+ * is `"unsupported"`.
282
+ * Inside a component `supported` turns true only after mounting, so
283
+ * hydration renders this server state first.
284
+ *
285
+ * @example
286
+ * ```ts
287
+ * const translator = useTranslator({ sourceLanguage: "en", targetLanguage: "ja" });
288
+ * const japanese = await translator.translate("Hello");
289
+ * ```
290
+ *
291
+ * @param options Language pair and class override.
292
+ * @returns Translator state and actions.
293
+ */
294
+ declare function useTranslator(options: UseTranslatorOptions): TranslatorControls;
295
+ /**
296
+ * Detect the language of text on-device with Chrome's built-in
297
+ * `LanguageDetector` API.
298
+ *
299
+ * Shares the lifecycle of {@link useTranslator}: lazy creation, download
300
+ * progress, destruction with the owning reactive scope.
301
+ *
302
+ * Server rendering: nothing is created, `supported` is false and `status`
303
+ * is `"unsupported"`.
304
+ * Inside a component `supported` turns true only after mounting, so
305
+ * hydration renders this server state first.
306
+ *
307
+ * @example
308
+ * ```ts
309
+ * const detector = useLanguageDetector();
310
+ * const [best] = await detector.detect(input.value);
311
+ * ```
312
+ *
313
+ * @param options Expected languages and class override.
314
+ * @default options {}
315
+ * @returns Detector state and actions.
316
+ */
317
+ declare function useLanguageDetector(options?: UseLanguageDetectorOptions): LanguageDetectorControls;
318
+ /**
319
+ * Summarize text on-device with Chrome's built-in `Summarizer` API.
320
+ *
321
+ * Shares the lifecycle of {@link useTranslator}: lazy creation, download
322
+ * progress, destruction with the owning reactive scope; changing `type`,
323
+ * `format`, `length` or `sharedContext` destroys the session.
324
+ *
325
+ * Server rendering: nothing is created, `supported` is false and `status`
326
+ * is `"unsupported"`.
327
+ * Inside a component `supported` turns true only after mounting, so
328
+ * hydration renders this server state first.
329
+ *
330
+ * @example
331
+ * ```ts
332
+ * const summarizer = useSummarizer({ type: "tldr", length: "medium" });
333
+ * for await (const chunk of summarizer.summarizeStreaming(article.value)) output.value += chunk;
334
+ * ```
335
+ *
336
+ * @param options Summary shape and class override.
337
+ * @default options {}
338
+ * @returns Summarizer state and actions.
339
+ */
340
+ declare function useSummarizer(options?: UseSummarizerOptions): SummarizerControls;
341
+ //#endregion
342
+ export { BuiltinAiAvailability, BuiltinAiCreateMonitorOptions, BuiltinAiDownloadProgressEvent, BuiltinAiMonitorLike, BuiltinAiSessionControls, BuiltinAiStatus, BuiltinAiTextStream, LanguageDetectionResult, LanguageDetectorControls, LanguageDetectorCreateOptions, LanguageDetectorHost, LanguageDetectorLike, SummarizeCallOptions, SummarizerControls, SummarizerCreateOptions, SummarizerFormat, SummarizerHost, SummarizerLength, SummarizerLike, SummarizerType, TranslatorControls, TranslatorHost, TranslatorLanguages, TranslatorLike, UseLanguageDetectorOptions, UseSummarizerOptions, UseTranslatorOptions, useLanguageDetector, useSummarizer, useTranslator };
@@ -0,0 +1,261 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { computed, hasInjectionContext, readonly, ref, shallowRef, toValue, unref, watch, watchPostEffect } from "vue";
3
+ //#region src/use-builtin-ai.ts
4
+ function isFactory(candidate) {
5
+ return typeof candidate === "function" && typeof Reflect.get(candidate, "create") === "function" && typeof Reflect.get(candidate, "availability") === "function";
6
+ }
7
+ function browserFactory(name) {
8
+ if (typeof window === "undefined") return void 0;
9
+ const candidate = Reflect.get(window, name);
10
+ return isFactory(candidate) ? candidate : void 0;
11
+ }
12
+ function useAiSession(name, host, createOptions) {
13
+ const phase = ref("idle");
14
+ const downloadProgress = ref(0);
15
+ const error = shallowRef(void 0);
16
+ let instance;
17
+ let creating;
18
+ let controller;
19
+ let generation = 0;
20
+ const hydrated = shallowRef(!hasInjectionContext());
21
+ if (!hydrated.value) watchPostEffect(() => {
22
+ hydrated.value = true;
23
+ });
24
+ const resolveFactory = () => host === void 0 ? browserFactory(name) : unref(host) ?? void 0;
25
+ const fail = (cause) => {
26
+ error.value = cause;
27
+ throw cause;
28
+ };
29
+ const ensure = () => {
30
+ if (instance) return Promise.resolve(instance);
31
+ if (creating) return creating;
32
+ const factory = resolveFactory();
33
+ if (!factory) return Promise.reject(/* @__PURE__ */ new Error(`[VIZE_COMPOSE_BUILTIN_AI_UNSUPPORTED] ${name} is not available.`)).catch(fail);
34
+ const current = ++generation;
35
+ const abort = new AbortController();
36
+ controller = abort;
37
+ phase.value = "creating";
38
+ downloadProgress.value = 0;
39
+ const monitor = (target) => {
40
+ target.addEventListener("downloadprogress", ({ loaded, total }) => {
41
+ if (current !== generation) return;
42
+ const fraction = total !== void 0 && total > 0 ? loaded / total : loaded;
43
+ downloadProgress.value = Math.min(1, Math.max(0, fraction));
44
+ phase.value = "downloading";
45
+ });
46
+ };
47
+ let requested;
48
+ try {
49
+ requested = factory.create({
50
+ ...createOptions(),
51
+ monitor,
52
+ signal: abort.signal
53
+ });
54
+ } catch (cause) {
55
+ controller = void 0;
56
+ phase.value = "error";
57
+ error.value = cause;
58
+ return Promise.reject(cause);
59
+ }
60
+ creating = requested.then((created) => {
61
+ if (current !== generation) {
62
+ created.destroy();
63
+ throw new DOMException("The session was destroyed.", "AbortError");
64
+ }
65
+ instance = created;
66
+ creating = void 0;
67
+ phase.value = "ready";
68
+ downloadProgress.value = 1;
69
+ error.value = void 0;
70
+ return created;
71
+ }, (cause) => {
72
+ if (current === generation) {
73
+ creating = void 0;
74
+ phase.value = "error";
75
+ error.value = cause;
76
+ }
77
+ throw cause;
78
+ });
79
+ return creating;
80
+ };
81
+ const destroy = () => {
82
+ generation += 1;
83
+ controller?.abort(new DOMException("The session was destroyed.", "AbortError"));
84
+ controller = void 0;
85
+ creating = void 0;
86
+ instance?.destroy();
87
+ instance = void 0;
88
+ phase.value = "idle";
89
+ downloadProgress.value = 0;
90
+ };
91
+ const run = async (action) => {
92
+ const session = await ensure();
93
+ try {
94
+ const value = await action(session);
95
+ error.value = void 0;
96
+ return value;
97
+ } catch (cause) {
98
+ return fail(cause);
99
+ }
100
+ };
101
+ async function* stream(open) {
102
+ const session = await ensure();
103
+ try {
104
+ const source = open(session);
105
+ if (Symbol.asyncIterator in source) for await (const chunk of source) yield chunk;
106
+ else {
107
+ const reader = source.getReader();
108
+ try {
109
+ for (;;) {
110
+ const { done, value } = await reader.read();
111
+ if (done) break;
112
+ if (value !== void 0) yield value;
113
+ }
114
+ } finally {
115
+ reader.releaseLock();
116
+ }
117
+ }
118
+ error.value = void 0;
119
+ } catch (cause) {
120
+ fail(cause);
121
+ }
122
+ }
123
+ const availability = async () => {
124
+ const factory = resolveFactory();
125
+ if (!factory) return "unavailable";
126
+ try {
127
+ return await factory.availability(createOptions());
128
+ } catch (cause) {
129
+ error.value = cause;
130
+ return "unavailable";
131
+ }
132
+ };
133
+ watch(createOptions, () => {
134
+ if (instance || creating) destroy();
135
+ });
136
+ tryOnScopeDispose(destroy);
137
+ const supported = computed(() => hydrated.value && resolveFactory() !== void 0);
138
+ return {
139
+ controls: {
140
+ supported,
141
+ status: computed(() => supported.value ? phase.value : "unsupported"),
142
+ downloadProgress: readonly(downloadProgress),
143
+ error: readonly(error),
144
+ availability,
145
+ create: () => ensure().then(() => true, () => false),
146
+ destroy
147
+ },
148
+ run,
149
+ stream
150
+ };
151
+ }
152
+ /**
153
+ * Translate text on-device with Chrome's built-in `Translator` API.
154
+ *
155
+ * The session is created lazily by the first `translate` (or explicitly by
156
+ * `create()`, which browsers require inside a user gesture when the model
157
+ * must be downloaded); `downloadProgress` follows the download. Changing a
158
+ * language destroys the session. The session is destroyed and a pending
159
+ * creation aborted when the owning reactive scope stops; outside a scope
160
+ * call `destroy()`.
161
+ *
162
+ * Server rendering: nothing is created, `supported` is false and `status`
163
+ * is `"unsupported"`.
164
+ * Inside a component `supported` turns true only after mounting, so
165
+ * hydration renders this server state first.
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * const translator = useTranslator({ sourceLanguage: "en", targetLanguage: "ja" });
170
+ * const japanese = await translator.translate("Hello");
171
+ * ```
172
+ *
173
+ * @param options Language pair and class override.
174
+ * @returns Translator state and actions.
175
+ */
176
+ function useTranslator(options) {
177
+ const session = useAiSession("Translator", options.host, () => ({
178
+ sourceLanguage: toValue(options.sourceLanguage),
179
+ targetLanguage: toValue(options.targetLanguage)
180
+ }));
181
+ return {
182
+ ...session.controls,
183
+ translate: (text) => session.run((translator) => translator.translate(text)),
184
+ translateStreaming: (text) => session.stream((translator) => translator.translateStreaming(text))
185
+ };
186
+ }
187
+ /**
188
+ * Detect the language of text on-device with Chrome's built-in
189
+ * `LanguageDetector` API.
190
+ *
191
+ * Shares the lifecycle of {@link useTranslator}: lazy creation, download
192
+ * progress, destruction with the owning reactive scope.
193
+ *
194
+ * Server rendering: nothing is created, `supported` is false and `status`
195
+ * is `"unsupported"`.
196
+ * Inside a component `supported` turns true only after mounting, so
197
+ * hydration renders this server state first.
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * const detector = useLanguageDetector();
202
+ * const [best] = await detector.detect(input.value);
203
+ * ```
204
+ *
205
+ * @param options Expected languages and class override.
206
+ * @default options {}
207
+ * @returns Detector state and actions.
208
+ */
209
+ function useLanguageDetector(options = {}) {
210
+ const session = useAiSession("LanguageDetector", options.host, () => {
211
+ const expectedInputLanguages = toValue(options.expectedInputLanguages);
212
+ return expectedInputLanguages ? { expectedInputLanguages } : {};
213
+ });
214
+ return {
215
+ ...session.controls,
216
+ detect: (text) => session.run((detector) => detector.detect(text))
217
+ };
218
+ }
219
+ /**
220
+ * Summarize text on-device with Chrome's built-in `Summarizer` API.
221
+ *
222
+ * Shares the lifecycle of {@link useTranslator}: lazy creation, download
223
+ * progress, destruction with the owning reactive scope; changing `type`,
224
+ * `format`, `length` or `sharedContext` destroys the session.
225
+ *
226
+ * Server rendering: nothing is created, `supported` is false and `status`
227
+ * is `"unsupported"`.
228
+ * Inside a component `supported` turns true only after mounting, so
229
+ * hydration renders this server state first.
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * const summarizer = useSummarizer({ type: "tldr", length: "medium" });
234
+ * for await (const chunk of summarizer.summarizeStreaming(article.value)) output.value += chunk;
235
+ * ```
236
+ *
237
+ * @param options Summary shape and class override.
238
+ * @default options {}
239
+ * @returns Summarizer state and actions.
240
+ */
241
+ function useSummarizer(options = {}) {
242
+ const session = useAiSession("Summarizer", options.host, () => {
243
+ const base = {
244
+ type: toValue(options.type) ?? "key-points",
245
+ format: toValue(options.format) ?? "markdown",
246
+ length: toValue(options.length) ?? "short"
247
+ };
248
+ const sharedContext = toValue(options.sharedContext);
249
+ return sharedContext === void 0 ? base : {
250
+ ...base,
251
+ sharedContext
252
+ };
253
+ });
254
+ return {
255
+ ...session.controls,
256
+ summarize: (text, callOptions) => session.run((summarizer) => summarizer.summarize(text, callOptions)),
257
+ summarizeStreaming: (text, callOptions) => session.stream((summarizer) => summarizer.summarizeStreaming(text, callOptions))
258
+ };
259
+ }
260
+ //#endregion
261
+ export { useLanguageDetector, useSummarizer, useTranslator };