@vizejs/composable 0.426.2 → 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,98 @@
1
+ import { n as CapabilityResult } from "./capability-Ptkjr_sD.mjs";
2
+ import { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
3
+
4
+ //#region src/geolocation.d.ts
5
+ /** Navigator-like capability used by {@link useGeolocation}. */
6
+ interface GeolocationHost {
7
+ /** Geolocation service, absent in unsupported runtimes. */
8
+ readonly geolocation?: Pick<Geolocation, "watchPosition" | "clearWatch">;
9
+ }
10
+ /** Serializable snapshot of `GeolocationCoordinates`. */
11
+ interface GeolocationCoordinatesSnapshot {
12
+ /** Latitude in decimal degrees. */
13
+ readonly latitude: number;
14
+ /** Longitude in decimal degrees. */
15
+ readonly longitude: number;
16
+ /** Accuracy radius of latitude/longitude in meters. */
17
+ readonly accuracy: number;
18
+ /** Altitude in meters, when available. */
19
+ readonly altitude: number | null;
20
+ /** Altitude accuracy in meters, when available. */
21
+ readonly altitudeAccuracy: number | null;
22
+ /** Heading in degrees clockwise from true north, when available. */
23
+ readonly heading: number | null;
24
+ /** Ground speed in meters per second, when available. */
25
+ readonly speed: number | null;
26
+ }
27
+ /** Why geolocation cannot currently provide a position. */
28
+ type GeolocationUnavailableReason = "unsupported" | "permission-denied" | "unavailable" | "not-ready";
29
+ /** Options for {@link useGeolocation}. */
30
+ interface UseGeolocationOptions {
31
+ /**
32
+ * Ask for the most accurate position the device can provide.
33
+ *
34
+ * @default false
35
+ */
36
+ readonly enableHighAccuracy?: boolean;
37
+ /**
38
+ * Maximum age in milliseconds of a cached position.
39
+ *
40
+ * @default 30000
41
+ */
42
+ readonly maximumAge?: number;
43
+ /**
44
+ * Maximum time in milliseconds to wait for a position.
45
+ *
46
+ * @default 27000
47
+ */
48
+ readonly timeout?: number;
49
+ /**
50
+ * Start watching during composable creation. When `false`, call `resume`
51
+ * (typically from a user gesture, which some browsers require).
52
+ *
53
+ * @default true
54
+ */
55
+ readonly immediate?: boolean;
56
+ /**
57
+ * Reactive navigator capability for alternate runtimes and tests.
58
+ *
59
+ * @default globalThis.window.navigator when available
60
+ */
61
+ readonly host?: MaybeRefOrGetter<GeolocationHost | null | undefined>;
62
+ }
63
+ /** Reactive position state returned by {@link useGeolocation}. */
64
+ interface GeolocationControls {
65
+ /** Whether the host exposes geolocation. `false` during server rendering. */
66
+ readonly isSupported: Readonly<Ref<boolean>>;
67
+ /** Latest coordinates; `null` until the first fix and during server rendering. */
68
+ readonly coords: Readonly<ShallowRef<GeolocationCoordinatesSnapshot | null>>;
69
+ /** Epoch milliseconds of the latest fix; `null` before the first fix. */
70
+ readonly locatedAt: Readonly<Ref<number | null>>;
71
+ /** Latest platform error; cleared by the next successful fix. */
72
+ readonly error: Readonly<ShallowRef<GeolocationPositionError | null>>;
73
+ /** Capability result combining support, permission, and readiness. */
74
+ readonly capability: ComputedRef<CapabilityResult<GeolocationCoordinatesSnapshot, GeolocationUnavailableReason>>;
75
+ /** Whether a position watch is active. */
76
+ readonly isActive: Readonly<Ref<boolean>>;
77
+ /** Start (or restart) watching. */
78
+ readonly resume: () => void;
79
+ /** Stop watching. Idempotent. */
80
+ readonly pause: () => void;
81
+ }
82
+ /**
83
+ * Watch the device position with the Geolocation API.
84
+ *
85
+ * The watch follows the reactive host and is cleared when paused or when the
86
+ * owning reactive scope stops. Coordinates are copied into a plain snapshot
87
+ * so they are serializable. The `capability` result reports
88
+ * `"unsupported"`, `"permission-denied"`, `"unavailable"`, or `"not-ready"`
89
+ * (before the first fix) as data instead of throwing. Server renders expose
90
+ * `null` coordinates.
91
+ *
92
+ * @param options Accuracy, caching, start mode, and navigator capability.
93
+ * @default options {}
94
+ * @returns Reactive position, error, capability, and controls.
95
+ */
96
+ declare function useGeolocation(options?: UseGeolocationOptions): GeolocationControls;
97
+ //#endregion
98
+ export { GeolocationControls, GeolocationCoordinatesSnapshot, GeolocationHost, GeolocationUnavailableReason, UseGeolocationOptions, useGeolocation };
@@ -0,0 +1,86 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { availableCapability, unavailableCapability } from "./capability.mjs";
3
+ import { computed, hasInjectionContext, onMounted, readonly, ref, shallowRef, toValue, watch } from "vue";
4
+ //#region src/geolocation.ts
5
+ const PERMISSION_DENIED = 1;
6
+ const POSITION_UNAVAILABLE = 2;
7
+ /**
8
+ * Watch the device position with the Geolocation API.
9
+ *
10
+ * The watch follows the reactive host and is cleared when paused or when the
11
+ * owning reactive scope stops. Coordinates are copied into a plain snapshot
12
+ * so they are serializable. The `capability` result reports
13
+ * `"unsupported"`, `"permission-denied"`, `"unavailable"`, or `"not-ready"`
14
+ * (before the first fix) as data instead of throwing. Server renders expose
15
+ * `null` coordinates.
16
+ *
17
+ * @param options Accuracy, caching, start mode, and navigator capability.
18
+ * @default options {}
19
+ * @returns Reactive position, error, capability, and controls.
20
+ */
21
+ function useGeolocation(options = {}) {
22
+ const isSupported = ref(false);
23
+ const coords = shallowRef(null);
24
+ const locatedAt = ref(null);
25
+ const error = shallowRef(null);
26
+ const isActive = ref(options.immediate ?? true);
27
+ const mounted = shallowRef(!hasInjectionContext());
28
+ if (!mounted.value) onMounted(() => {
29
+ mounted.value = true;
30
+ });
31
+ const host = () => !mounted.value ? void 0 : options.host === void 0 ? browserGeolocationHost() : toValue(options.host);
32
+ const stopWatch = watch([host, isActive], ([current, active], _previous, onCleanup) => {
33
+ const geolocation = current?.geolocation;
34
+ isSupported.value = geolocation !== void 0;
35
+ if (!geolocation || !active) return;
36
+ const id = geolocation.watchPosition((position) => {
37
+ coords.value = snapshotCoordinates(position.coords);
38
+ locatedAt.value = position.timestamp;
39
+ error.value = null;
40
+ }, (failure) => {
41
+ error.value = failure;
42
+ }, {
43
+ enableHighAccuracy: options.enableHighAccuracy ?? false,
44
+ maximumAge: options.maximumAge ?? 3e4,
45
+ timeout: options.timeout ?? 27e3
46
+ });
47
+ onCleanup(() => geolocation.clearWatch(id));
48
+ }, { immediate: true });
49
+ tryOnScopeDispose(() => stopWatch.stop());
50
+ const capability = computed(() => {
51
+ if (!isSupported.value) return unavailableCapability("unsupported");
52
+ if (error.value?.code === PERMISSION_DENIED) return unavailableCapability("permission-denied");
53
+ if (error.value?.code === POSITION_UNAVAILABLE) return unavailableCapability("unavailable");
54
+ return coords.value ? availableCapability(coords.value) : unavailableCapability("not-ready");
55
+ });
56
+ return {
57
+ isSupported: readonly(isSupported),
58
+ coords,
59
+ locatedAt: readonly(locatedAt),
60
+ error,
61
+ capability,
62
+ isActive: readonly(isActive),
63
+ resume: () => {
64
+ isActive.value = true;
65
+ },
66
+ pause: () => {
67
+ isActive.value = false;
68
+ }
69
+ };
70
+ }
71
+ function snapshotCoordinates(coords) {
72
+ return {
73
+ latitude: coords.latitude,
74
+ longitude: coords.longitude,
75
+ accuracy: coords.accuracy,
76
+ altitude: coords.altitude,
77
+ altitudeAccuracy: coords.altitudeAccuracy,
78
+ heading: coords.heading,
79
+ speed: coords.speed
80
+ };
81
+ }
82
+ function browserGeolocationHost() {
83
+ return typeof window !== "undefined" ? window.navigator : void 0;
84
+ }
85
+ //#endregion
86
+ export { useGeolocation };
@@ -0,0 +1,237 @@
1
+ import { FormatMessageOptions, MessageArgument, MessageArguments, ResolveMessageArguments } from "./icu-message.mjs";
2
+ import { LocaleControls, TextDirection } from "./locale.mjs";
3
+ import { App, ComputedRef, InjectionKey, ShallowRef } from "vue";
4
+
5
+ //#region src/i18n.d.ts
6
+ /** A nested message catalog: leaves are ICU message strings. */
7
+ interface MessageTree {
8
+ readonly [key: string]: string | MessageTree;
9
+ }
10
+ /** Catalogs keyed by locale. */
11
+ type MessageCatalogs = Readonly<Record<string, MessageTree>>;
12
+ /** Dotted message keys of one catalog, e.g. `"home.title"`. */
13
+ type MessageKeysOf<Tree> = { [Key in keyof Tree & string]: Tree[Key] extends string ? Key : `${Key}.${MessageKeysOf<Tree[Key]>}` }[keyof Tree & string];
14
+ /** Message literal stored at a dotted key. */
15
+ type MessageAt<Tree, Path extends string> = Path extends `${infer Head}.${infer Rest}` ? Head extends keyof Tree ? MessageAt<Tree[Head], Rest> : never : Path extends keyof Tree ? Tree[Path] extends string ? Tree[Path] : never : never;
16
+ /** Every key present in any locale of a catalog set. */
17
+ type MessageKey<Catalogs> = { [Locale in keyof Catalogs]: MessageKeysOf<Catalogs[Locale]> }[keyof Catalogs];
18
+ /**
19
+ * Parameters `t(key)` needs: the arguments of every translation of `Key`,
20
+ * merged (a typed occurrence in any locale wins over a plain `{name}`).
21
+ */
22
+ type MessageParamsFor<Catalogs, Key extends string> = ResolveMessageArguments<Extract<{ [Locale in keyof Catalogs]: MessageAt<Catalogs[Locale], Key> extends infer Message extends string ? MessageArguments<Message> : never }[keyof Catalogs], MessageArgument>>;
23
+ /** Keys whose merged parameters contain an impossible (`never`) value. */
24
+ type ConflictingKeys<Catalogs> = { [Key in MessageKey<Catalogs> & string]: { [Param in keyof MessageParamsFor<Catalogs, Key>]: [MessageParamsFor<Catalogs, Key>[Param]] extends [never] ? Param : never }[keyof MessageParamsFor<Catalogs, Key>] extends never ? never : Key }[MessageKey<Catalogs> & string];
25
+ /**
26
+ * Compile-time validation mixed into the `defineMessages` argument. A
27
+ * locale that misses keys other locales define must carry a
28
+ * `__missingTranslations` property (which it cannot), so the compiler
29
+ * reports the missing keys; incompatible parameter types across locales are
30
+ * reported the same way through `__incompatibleParams`.
31
+ */
32
+ type ValidateCatalogs<Catalogs> = { readonly [Locale in keyof Catalogs]: (Exclude<MessageKey<Catalogs>, MessageKeysOf<Catalogs[Locale]>> extends infer Missing ? [Missing] extends [never] ? unknown : {
33
+ readonly __missingTranslations: Missing;
34
+ } : unknown) & ([ConflictingKeys<Catalogs>] extends [never] ? unknown : {
35
+ readonly __incompatibleParams: ConflictingKeys<Catalogs>;
36
+ }) };
37
+ /** Same key structure as a catalog, with any string as message. */
38
+ type MessageShape<Tree> = { readonly [Key in keyof Tree]: Tree[Key] extends string ? string : MessageShape<Tree[Key]> };
39
+ /** Catalog shape a lazily loaded locale must provide. */
40
+ type LocaleMessages<Catalogs> = MessageShape<Catalogs[keyof Catalogs]>;
41
+ /**
42
+ * Per-key check for {@link defineLocale}: a translation may only use
43
+ * parameters the schema knows, with compatible types.
44
+ */
45
+ type ValidateTranslation<Catalogs, Tree, Prefix extends string = ""> = { readonly [Key in keyof Tree & string]: Tree[Key] extends infer Message extends string ? keyof ResolveMessageArguments<MessageArguments<Message>> extends keyof MessageParamsFor<Catalogs, `${Prefix}${Key}`> ? MessageParamsFor<Catalogs, `${Prefix}${Key}`> extends ResolveMessageArguments<MessageArguments<Message>> ? Message : `incompatible parameter types for "${Prefix}${Key}"` : `unknown parameter in "${Prefix}${Key}"` : ValidateTranslation<Catalogs, Tree[Key], `${Prefix}${Key}.`> };
46
+ /**
47
+ * Declare typed message catalogs for several locales.
48
+ *
49
+ * The literal messages are preserved, so {@link MessageParamsFor} knows the
50
+ * ICU parameters of every key. The compiler rejects catalogs whose locales
51
+ * do not share the same keys (`__missingTranslations`) or whose
52
+ * translations need incompatible parameter types (`__incompatibleParams`).
53
+ * Returns the catalogs unchanged; the function exists for inference and
54
+ * validation only.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const messages = defineMessages({
59
+ * en: { cart: "{count, plural, one {# item} other {# items}}" },
60
+ * ja: { cart: "{count, plural, other {# 個}}" },
61
+ * });
62
+ * ```
63
+ *
64
+ * @param catalogs Messages keyed by locale, then by (nested) key.
65
+ * @throws `TypeError` tagged `VIZE_COMPOSE_I18N_INVALID_KEY` when a key
66
+ * contains a dot (dots separate nested keys).
67
+ * @returns The same catalogs.
68
+ */
69
+ declare function defineMessages<const Catalogs extends MessageCatalogs>(catalogs: Catalogs & ValidateCatalogs<Catalogs>): Catalogs;
70
+ /**
71
+ * Declare one additional locale (typically a lazily loaded module) against
72
+ * the catalogs produced by {@link defineMessages}.
73
+ *
74
+ * The keys must match exactly, and every translation may only use
75
+ * parameters the schema declares, with compatible types.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * // fr.ts
80
+ * export default defineLocale<typeof messages>()({ cart: "{count, plural, one {# article} other {# articles}}" });
81
+ * ```
82
+ *
83
+ * @returns A function that validates and returns the locale catalog.
84
+ */
85
+ declare function defineLocale<Catalogs extends MessageCatalogs>(): <const Tree extends LocaleMessages<Catalogs>>(catalog: Tree & ValidateTranslation<Catalogs, Tree>) => Tree;
86
+ /** Loader returning the catalog of a lazily loaded locale. */
87
+ type LocaleLoader<Catalogs> = () => Promise<LocaleMessages<Catalogs> | {
88
+ readonly default: LocaleMessages<Catalogs>;
89
+ }>;
90
+ /** Static configuration shared by every request, passed to {@link defineI18n}. */
91
+ interface DefineI18nOptions<Catalogs extends MessageCatalogs, Lazy extends string> extends FormatMessageOptions {
92
+ /** Eagerly bundled catalogs (see {@link defineMessages}). */
93
+ readonly messages: Catalogs;
94
+ /**
95
+ * Locale used when a key is missing in the active locale.
96
+ *
97
+ * @default the first eager locale
98
+ */
99
+ readonly fallbackLocale?: keyof Catalogs & string;
100
+ /**
101
+ * Loaders for locales fetched on demand.
102
+ *
103
+ * @default {}
104
+ */
105
+ readonly loaders?: { readonly [Locale in Lazy]: LocaleLoader<Catalogs> };
106
+ /**
107
+ * Called when a key is missing in the active and fallback locales; the
108
+ * key itself is rendered.
109
+ *
110
+ * @default undefined
111
+ */
112
+ readonly onMissing?: (key: string, locale: string) => void;
113
+ }
114
+ /** Arguments of `t(key, …)`: the params object is optional only when empty. */
115
+ type TranslateArguments<Params> = {} extends Params ? [params?: Params] : [params: Params];
116
+ /** Per-request i18n state and typed translation functions. */
117
+ interface I18n<Catalogs extends MessageCatalogs, Lazy extends string> {
118
+ /** Active locale. Change it with {@link I18n.setLocale}. */
119
+ readonly locale: Readonly<ShallowRef<(keyof Catalogs & string) | Lazy>>;
120
+ /** Every locale this instance can switch to. */
121
+ readonly availableLocales: readonly ((keyof Catalogs & string) | Lazy)[];
122
+ /** Locales whose messages are available right now. */
123
+ readonly loadedLocales: ComputedRef<((keyof Catalogs & string) | Lazy)[]>;
124
+ /** Whether a lazy locale is being loaded. */
125
+ readonly isLoading: Readonly<ShallowRef<boolean>>;
126
+ /** Most recent loader failure, cleared on success. */
127
+ readonly error: Readonly<ShallowRef<unknown>>;
128
+ /** Text direction of the active locale. */
129
+ readonly direction: ComputedRef<TextDirection>;
130
+ /** `Intl` helpers bound to the active locale (from `useLocale`). */
131
+ readonly intl: LocaleControls;
132
+ /** Resolves once the initial locale's messages are loaded. */
133
+ readonly ready: Promise<void>;
134
+ /**
135
+ * Translate a key. Parameters are typed from the ICU messages of every
136
+ * locale. Reactive: reading inside a render re-renders on locale change.
137
+ *
138
+ * @returns The formatted message, or the key when it is missing.
139
+ */
140
+ readonly t: <Key extends MessageKey<Catalogs> & string>(key: Key, ...params: TranslateArguments<MessageParamsFor<Catalogs, Key>>) => string;
141
+ /** Whether `key` exists in the active locale. */
142
+ readonly te: (key: MessageKey<Catalogs> & string) => boolean;
143
+ /**
144
+ * Load (if needed) and activate a locale.
145
+ *
146
+ * @returns Resolves once the locale is active; rejects when loading fails.
147
+ */
148
+ readonly setLocale: (locale: (keyof Catalogs & string) | Lazy) => Promise<void>;
149
+ /**
150
+ * Load a lazy locale without activating it (for example on hover).
151
+ *
152
+ * @returns Resolves once its messages are available.
153
+ */
154
+ readonly loadLocale: (locale: (keyof Catalogs & string) | Lazy) => Promise<void>;
155
+ /** Vue plugin hook: provides this instance to the app. */
156
+ readonly install: (app: App) => void;
157
+ }
158
+ /** Options for {@link I18nDefinition.create}. */
159
+ interface CreateI18nOptions<Locale extends string> {
160
+ /**
161
+ * Initial locale. Pass the locale resolved for the request (server) and
162
+ * the same value on the client so hydration renders identical text.
163
+ *
164
+ * @default the fallback locale
165
+ */
166
+ readonly locale?: Locale;
167
+ }
168
+ /** Static i18n definition returned by {@link defineI18n}. */
169
+ interface I18nDefinition<Catalogs extends MessageCatalogs, Lazy extends string> {
170
+ /** Injection key under which instances are provided. */
171
+ readonly key: InjectionKey<I18n<Catalogs, Lazy>>;
172
+ /**
173
+ * Create a per-request (per-app) instance. Never share one instance
174
+ * between server requests.
175
+ *
176
+ * @returns The instance; await `ready` before rendering a lazy locale.
177
+ */
178
+ readonly create: (options?: CreateI18nOptions<(keyof Catalogs & string) | Lazy>) => I18n<Catalogs, Lazy>;
179
+ /**
180
+ * Inject the instance provided by an ancestor (or `app.use(instance)`).
181
+ *
182
+ * @returns The typed instance.
183
+ */
184
+ readonly use: () => I18n<Catalogs, Lazy>;
185
+ }
186
+ /**
187
+ * Define the typed i18n setup of an application.
188
+ *
189
+ * The definition holds only static configuration (catalogs, loaders,
190
+ * formats) and an injection key; it has no mutable module state. Call
191
+ * `create()` per request on the server and once on the client, install the
192
+ * instance with `app.use(instance)`, and read it in components with
193
+ * `definition.use()` (or {@link useI18n}). Locale changes are reactive
194
+ * through `setLocale`, which loads lazy locales first; `Intl` formatting
195
+ * follows the locale through the existing `useLocale` composable.
196
+ *
197
+ * Hydration: locale detection is never automatic. Resolve the locale per
198
+ * request, pass it to `create({ locale })` on both sides, and await
199
+ * `instance.ready` before rendering or mounting when it is lazy.
200
+ * `date`/`time` arguments use a fixed time zone (UTC unless configured).
201
+ *
202
+ * @example
203
+ * ```ts
204
+ * export const appI18n = defineI18n({
205
+ * messages,
206
+ * loaders: { fr: () => import("./locales/fr.ts") },
207
+ * });
208
+ * // per request / client entry
209
+ * const i18n = appI18n.create({ locale: "fr" });
210
+ * await i18n.ready;
211
+ * app.use(i18n);
212
+ * // component
213
+ * const { t } = appI18n.use();
214
+ * t("cart", { count: 2 });
215
+ * ```
216
+ *
217
+ * @param options Catalogs, fallback, loaders, formats, and missing-key hook.
218
+ * @returns The i18n definition.
219
+ */
220
+ declare function defineI18n<const Catalogs extends MessageCatalogs, const Lazy extends string = never>(options: DefineI18nOptions<Catalogs, Lazy>): I18nDefinition<Catalogs, Lazy>;
221
+ /**
222
+ * Inject the i18n instance of a definition. Equivalent to
223
+ * `definition.use()`; must run inside `setup` (or `app.runWithContext`).
224
+ *
225
+ * @example
226
+ * ```ts
227
+ * const { t, setLocale } = useI18n(appI18n);
228
+ * ```
229
+ *
230
+ * @param definition Result of {@link defineI18n}.
231
+ * @throws `Error` tagged `VIZE_COMPOSE_I18N_NOT_PROVIDED` when no instance
232
+ * was provided.
233
+ * @returns The typed instance.
234
+ */
235
+ declare function useI18n<Catalogs extends MessageCatalogs, Lazy extends string>(definition: I18nDefinition<Catalogs, Lazy>): I18n<Catalogs, Lazy>;
236
+ //#endregion
237
+ export { CreateI18nOptions, DefineI18nOptions, I18n, I18nDefinition, LocaleLoader, LocaleMessages, MessageAt, MessageCatalogs, MessageKey, MessageKeysOf, MessageParamsFor, MessageShape, MessageTree, TranslateArguments, ValidateCatalogs, defineI18n, defineLocale, defineMessages, useI18n };
package/dist/i18n.mjs ADDED
@@ -0,0 +1,215 @@
1
+ import { createMessageFormatter } from "./icu-message.mjs";
2
+ import { useLocale } from "./locale.mjs";
3
+ import { computed, inject, shallowReactive, shallowRef } from "vue";
4
+ //#region src/i18n.ts
5
+ /**
6
+ * Declare typed message catalogs for several locales.
7
+ *
8
+ * The literal messages are preserved, so {@link MessageParamsFor} knows the
9
+ * ICU parameters of every key. The compiler rejects catalogs whose locales
10
+ * do not share the same keys (`__missingTranslations`) or whose
11
+ * translations need incompatible parameter types (`__incompatibleParams`).
12
+ * Returns the catalogs unchanged; the function exists for inference and
13
+ * validation only.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const messages = defineMessages({
18
+ * en: { cart: "{count, plural, one {# item} other {# items}}" },
19
+ * ja: { cart: "{count, plural, other {# 個}}" },
20
+ * });
21
+ * ```
22
+ *
23
+ * @param catalogs Messages keyed by locale, then by (nested) key.
24
+ * @throws `TypeError` tagged `VIZE_COMPOSE_I18N_INVALID_KEY` when a key
25
+ * contains a dot (dots separate nested keys).
26
+ * @returns The same catalogs.
27
+ */
28
+ function defineMessages(catalogs) {
29
+ for (const tree of Object.values(catalogs)) assertKeys(tree, "");
30
+ return catalogs;
31
+ }
32
+ /**
33
+ * Declare one additional locale (typically a lazily loaded module) against
34
+ * the catalogs produced by {@link defineMessages}.
35
+ *
36
+ * The keys must match exactly, and every translation may only use
37
+ * parameters the schema declares, with compatible types.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * // fr.ts
42
+ * export default defineLocale<typeof messages>()({ cart: "{count, plural, one {# article} other {# articles}}" });
43
+ * ```
44
+ *
45
+ * @returns A function that validates and returns the locale catalog.
46
+ */
47
+ function defineLocale() {
48
+ return (catalog) => {
49
+ assertKeys(catalog, "");
50
+ return catalog;
51
+ };
52
+ }
53
+ function assertKeys(tree, prefix) {
54
+ for (const [key, value] of Object.entries(tree)) {
55
+ if (key.includes(".")) throw new TypeError(`[VIZE_COMPOSE_I18N_INVALID_KEY] message keys must not contain "."; received "${prefix}${key}"`);
56
+ if (typeof value !== "string") assertKeys(value, `${prefix}${key}.`);
57
+ }
58
+ }
59
+ function readMessage(tree, key) {
60
+ let node = tree;
61
+ for (const part of key.split(".")) {
62
+ if (node === void 0 || typeof node === "string") return void 0;
63
+ node = node[part];
64
+ }
65
+ return typeof node === "string" ? node : void 0;
66
+ }
67
+ function unwrapModule(loaded) {
68
+ return typeof loaded === "object" && loaded !== null && "default" in loaded ? loaded.default : loaded;
69
+ }
70
+ /**
71
+ * Define the typed i18n setup of an application.
72
+ *
73
+ * The definition holds only static configuration (catalogs, loaders,
74
+ * formats) and an injection key; it has no mutable module state. Call
75
+ * `create()` per request on the server and once on the client, install the
76
+ * instance with `app.use(instance)`, and read it in components with
77
+ * `definition.use()` (or {@link useI18n}). Locale changes are reactive
78
+ * through `setLocale`, which loads lazy locales first; `Intl` formatting
79
+ * follows the locale through the existing `useLocale` composable.
80
+ *
81
+ * Hydration: locale detection is never automatic. Resolve the locale per
82
+ * request, pass it to `create({ locale })` on both sides, and await
83
+ * `instance.ready` before rendering or mounting when it is lazy.
84
+ * `date`/`time` arguments use a fixed time zone (UTC unless configured).
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * export const appI18n = defineI18n({
89
+ * messages,
90
+ * loaders: { fr: () => import("./locales/fr.ts") },
91
+ * });
92
+ * // per request / client entry
93
+ * const i18n = appI18n.create({ locale: "fr" });
94
+ * await i18n.ready;
95
+ * app.use(i18n);
96
+ * // component
97
+ * const { t } = appI18n.use();
98
+ * t("cart", { count: 2 });
99
+ * ```
100
+ *
101
+ * @param options Catalogs, fallback, loaders, formats, and missing-key hook.
102
+ * @returns The i18n definition.
103
+ */
104
+ function defineI18n(options) {
105
+ const key = Symbol("vize-i18n");
106
+ const eager = Object.keys(options.messages);
107
+ const lazy = Object.keys(options.loaders ?? {});
108
+ const fallbackLocale = options.fallbackLocale ?? eager[0] ?? "en";
109
+ const isLocale = (value) => eager.includes(value) || lazy.includes(value);
110
+ const availableLocales = [...eager, ...lazy].filter(isLocale);
111
+ const create = (createOptions = {}) => {
112
+ const initial = createOptions.locale ?? fallbackLocale;
113
+ if (!isLocale(initial)) throw new RangeError(`[VIZE_COMPOSE_I18N_UNKNOWN_LOCALE] unknown locale "${String(initial)}"`);
114
+ const catalogs = shallowReactive(new Map(Object.entries(options.messages)));
115
+ const pending = /* @__PURE__ */ new Map();
116
+ const formatters = /* @__PURE__ */ new Map();
117
+ const locale = shallowRef(initial);
118
+ const isLoading = shallowRef(false);
119
+ const error = shallowRef(void 0);
120
+ const intl = useLocale(locale, {
121
+ detect: () => void 0,
122
+ fallback: fallbackLocale
123
+ });
124
+ const formatterFor = (localeTag) => {
125
+ let formatter = formatters.get(localeTag);
126
+ if (formatter === void 0) {
127
+ formatter = createMessageFormatter(localeTag, options);
128
+ formatters.set(localeTag, formatter);
129
+ }
130
+ return formatter;
131
+ };
132
+ const loadLocale = (target) => {
133
+ if (catalogs.has(target)) return Promise.resolve();
134
+ const existing = pending.get(target);
135
+ if (existing !== void 0) return existing;
136
+ const loader = (options.loaders ?? {})[target];
137
+ if (loader === void 0) return Promise.reject(/* @__PURE__ */ new RangeError(`[VIZE_COMPOSE_I18N_UNKNOWN_LOCALE] unknown locale "${target}"`));
138
+ isLoading.value = true;
139
+ const task = loader().then((loaded) => {
140
+ assertKeys(unwrapModule(loaded), "");
141
+ catalogs.set(target, unwrapModule(loaded));
142
+ error.value = void 0;
143
+ }).catch((cause) => {
144
+ error.value = cause;
145
+ throw cause;
146
+ }).finally(() => {
147
+ pending.delete(target);
148
+ isLoading.value = pending.size > 0;
149
+ });
150
+ pending.set(target, task);
151
+ return task;
152
+ };
153
+ const setLocale = async (target) => {
154
+ await loadLocale(target);
155
+ locale.value = target;
156
+ };
157
+ const translate = (messageKey, params) => {
158
+ const active = locale.value;
159
+ for (const candidate of [active, fallbackLocale]) {
160
+ const message = readMessage(catalogs.get(candidate), messageKey);
161
+ if (message !== void 0) return formatterFor(candidate === active ? intl.locale.value : candidate).format(message, params);
162
+ }
163
+ options.onMissing?.(messageKey, active);
164
+ return messageKey;
165
+ };
166
+ const instance = {
167
+ locale,
168
+ availableLocales,
169
+ loadedLocales: computed(() => [...catalogs.keys()].filter(isLocale)),
170
+ isLoading,
171
+ error,
172
+ direction: intl.direction,
173
+ intl,
174
+ ready: loadLocale(initial),
175
+ t: (messageKey, ...params) => translate(messageKey, params[0]),
176
+ te: (messageKey) => readMessage(catalogs.get(locale.value), messageKey) !== void 0,
177
+ setLocale,
178
+ loadLocale,
179
+ install: (app) => {
180
+ app.provide(key, instance);
181
+ }
182
+ };
183
+ instance.ready.catch(() => void 0);
184
+ return instance;
185
+ };
186
+ const use = () => {
187
+ const instance = inject(key, null);
188
+ if (instance === null) throw new Error("[VIZE_COMPOSE_I18N_NOT_PROVIDED] no i18n instance was provided; call app.use(definition.create())");
189
+ return instance;
190
+ };
191
+ return {
192
+ key,
193
+ create,
194
+ use
195
+ };
196
+ }
197
+ /**
198
+ * Inject the i18n instance of a definition. Equivalent to
199
+ * `definition.use()`; must run inside `setup` (or `app.runWithContext`).
200
+ *
201
+ * @example
202
+ * ```ts
203
+ * const { t, setLocale } = useI18n(appI18n);
204
+ * ```
205
+ *
206
+ * @param definition Result of {@link defineI18n}.
207
+ * @throws `Error` tagged `VIZE_COMPOSE_I18N_NOT_PROVIDED` when no instance
208
+ * was provided.
209
+ * @returns The typed instance.
210
+ */
211
+ function useI18n(definition) {
212
+ return definition.use();
213
+ }
214
+ //#endregion
215
+ export { defineI18n, defineLocale, defineMessages, useI18n };