@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,409 @@
1
+ import {
2
+ computed,
3
+ hasInjectionContext,
4
+ readonly,
5
+ shallowRef,
6
+ toValue,
7
+ watch,
8
+ watchPostEffect,
9
+ } from "vue";
10
+ import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from "vue";
11
+
12
+ import { tryOnScopeDispose } from "./scope.ts";
13
+ import { usePerformanceObserver } from "./use-performance-observer.ts";
14
+ import type {
15
+ EventTimingFieldsLike,
16
+ LayoutShiftEntryLike,
17
+ PerformanceObserverHost,
18
+ } from "./use-performance-observer.ts";
19
+
20
+ /** Core Web Vitals and supporting metrics computed by {@link useWebVitals}. */
21
+ export type WebVitalName = "LCP" | "CLS" | "INP" | "FCP" | "TTFB";
22
+
23
+ /** Rating bucket of a metric value. */
24
+ export type WebVitalRating = "good" | "needs-improvement" | "poor";
25
+
26
+ /**
27
+ * Standard `[good, poor]` thresholds: values up to the first bound are
28
+ * "good", values above the second are "poor". Times are milliseconds; CLS is
29
+ * unitless.
30
+ */
31
+ export const WEB_VITALS_THRESHOLDS = {
32
+ LCP: [2500, 4000],
33
+ CLS: [0.1, 0.25],
34
+ INP: [200, 500],
35
+ FCP: [1800, 3000],
36
+ TTFB: [800, 1800],
37
+ } as const satisfies Readonly<Record<WebVitalName, readonly [number, number]>>;
38
+
39
+ /**
40
+ * Rate a metric value with {@link WEB_VITALS_THRESHOLDS}.
41
+ *
42
+ * @param name Metric name.
43
+ * @param value Metric value (milliseconds, or the unitless CLS score).
44
+ * @returns The rating bucket.
45
+ */
46
+ export function rateMetric(name: WebVitalName, value: number): WebVitalRating {
47
+ if (Number.isNaN(value)) {
48
+ throw new RangeError(`[VIZE_COMPOSE_WEB_VITALS_INVALID_VALUE] ${name} value must be a number`);
49
+ }
50
+ const [good, poor] = WEB_VITALS_THRESHOLDS[name];
51
+ if (value > poor) return "poor";
52
+ return value > good ? "needs-improvement" : "good";
53
+ }
54
+
55
+ /** Snapshot of one metric. */
56
+ export interface WebVitalMetric {
57
+ /** Metric name. */
58
+ readonly name: WebVitalName;
59
+ /** Current value (milliseconds, or the unitless CLS score). */
60
+ readonly value: number;
61
+ /** Rating of `value`. */
62
+ readonly rating: WebVitalRating;
63
+ /** Change since the value last reported through `onMetric` (the full value before that). */
64
+ readonly delta: number;
65
+ /** Number of performance entries that make up `value`. */
66
+ readonly entries: number;
67
+ /** Identifier stable for this metric during the page load. */
68
+ readonly id?: string;
69
+ }
70
+
71
+ /** Metrics measured so far; a metric is absent until it has a value. */
72
+ export type WebVitalsRecord = Readonly<Partial<Record<WebVitalName, WebVitalMetric>>>;
73
+
74
+ /** Document events used by {@link useWebVitals}. */
75
+ export type WebVitalsDocumentEvent = "visibilitychange" | "keydown" | "click";
76
+
77
+ /** Minimal document consumed by {@link useWebVitals}. */
78
+ export interface WebVitalsDocumentHost {
79
+ /** Current visibility (`"visible"` or `"hidden"`). */
80
+ readonly visibilityState: string;
81
+ /** Subscribe to a document event. */
82
+ addEventListener(
83
+ type: WebVitalsDocumentEvent,
84
+ listener: (event: { readonly timeStamp: number }) => void,
85
+ options?: { readonly capture?: boolean },
86
+ ): void;
87
+ /** Unsubscribe from a document event. */
88
+ removeEventListener(
89
+ type: WebVitalsDocumentEvent,
90
+ listener: (event: { readonly timeStamp: number }) => void,
91
+ options?: { readonly capture?: boolean },
92
+ ): void;
93
+ }
94
+
95
+ /** Options for {@link useWebVitals}. */
96
+ export interface UseWebVitalsOptions {
97
+ /**
98
+ * `PerformanceObserver` constructor for alternate runtimes and tests.
99
+ *
100
+ * @default window.PerformanceObserver when it exists
101
+ */
102
+ readonly PerformanceObserver?: MaybeRef<PerformanceObserverHost | null | undefined>;
103
+
104
+ /**
105
+ * Document whose visibility finalizes metrics and whose first input stops LCP.
106
+ *
107
+ * @default window.document when available
108
+ */
109
+ readonly document?: MaybeRefOrGetter<WebVitalsDocumentHost | null | undefined>;
110
+
111
+ /**
112
+ * Report every change through `onMetric` instead of only final values.
113
+ *
114
+ * @default false
115
+ */
116
+ readonly reportAllChanges?: boolean;
117
+
118
+ /**
119
+ * Minimum Event Timing duration considered for INP, in milliseconds.
120
+ *
121
+ * @default 40
122
+ */
123
+ readonly durationThreshold?: number;
124
+ }
125
+
126
+ /** Reactive state and actions returned by {@link useWebVitals}. */
127
+ export interface WebVitalsControls {
128
+ /** Whether at least one metric can be observed. */
129
+ readonly supported: ComputedRef<boolean>;
130
+
131
+ /** Metrics measured so far, replaced on each change. */
132
+ readonly metrics: Readonly<ShallowRef<WebVitalsRecord>>;
133
+
134
+ /**
135
+ * Subscribe to reported metrics. FCP and TTFB are reported once measured;
136
+ * LCP once finalized (first input or hidden page); CLS and INP whenever
137
+ * the page becomes hidden with a changed value. With `reportAllChanges`,
138
+ * every change is reported.
139
+ *
140
+ * @param listener Receives each reported metric.
141
+ * @returns Removes the listener.
142
+ */
143
+ readonly onMetric: (listener: (metric: WebVitalMetric) => void) => () => void;
144
+
145
+ /** Stop every observer and listener. Repeated calls are safe. */
146
+ readonly stop: () => void;
147
+ }
148
+
149
+ interface Interaction {
150
+ readonly id: number;
151
+ duration: number;
152
+ entries: number;
153
+ }
154
+
155
+ const MAX_INTERACTIONS = 10;
156
+
157
+ function browserDocument(): WebVitalsDocumentHost | undefined {
158
+ return typeof window === "undefined" ? undefined : window.document;
159
+ }
160
+
161
+ /**
162
+ * Measure LCP, CLS, INP, FCP and TTFB locally, without dependencies.
163
+ *
164
+ * - LCP: last candidate before the first input or hidden page.
165
+ * - CLS: largest session window (shifts < 1 s apart, window ≤ 5 s),
166
+ * ignoring shifts after recent input.
167
+ * - INP: per-interaction maximum duration; the highest after ignoring one
168
+ * per 50 interactions (a p98 approximation over the 10 longest). The
169
+ * interaction count only includes interactions above `durationThreshold`.
170
+ * - FCP: `first-contentful-paint` before the page was first hidden.
171
+ * - TTFB: navigation `responseStart - activationStart`, clamped at 0.
172
+ *
173
+ * Values are not adjusted for prerender activation except TTFB. Observers
174
+ * and listeners are released when the owning reactive scope stops; outside
175
+ * a scope the caller owns `stop()`.
176
+ *
177
+ * Server rendering: nothing is observed, `metrics` is `{}` and `supported`
178
+ * is false.
179
+ *
180
+ * @example
181
+ * ```ts
182
+ * const { metrics, onMetric } = useWebVitals();
183
+ * onMetric((metric) => navigator.sendBeacon("/vitals", JSON.stringify(metric)));
184
+ * ```
185
+ *
186
+ * @param options Hosts and reporting policy.
187
+ * @default options {}
188
+ * @returns Reactive metrics and a report hook.
189
+ */
190
+ export function useWebVitals(options: UseWebVitalsOptions = {}): WebVitalsControls {
191
+ const metrics = shallowRef<WebVitalsRecord>({});
192
+ const reported = new Map<WebVitalName, number>();
193
+ const listeners = new Set<(metric: WebVitalMetric) => void>();
194
+ const reportAllChanges = options.reportAllChanges ?? false;
195
+ const observerOptions =
196
+ options.PerformanceObserver === undefined
197
+ ? { buffered: true }
198
+ : { buffered: true, PerformanceObserver: options.PerformanceObserver };
199
+ let pageId: string | undefined;
200
+
201
+ // Inside a component the host resolves only after mount (a post-flush
202
+ // job), so a hydrating client first renders the same unsupported state as
203
+ // the server. Outside components it resolves immediately.
204
+ const hydrated = shallowRef(!hasInjectionContext());
205
+ if (!hydrated.value) {
206
+ watchPostEffect(() => {
207
+ hydrated.value = true;
208
+ });
209
+ }
210
+ const resolveDocument = (): WebVitalsDocumentHost | undefined =>
211
+ !hydrated.value
212
+ ? undefined
213
+ : options.document === undefined
214
+ ? browserDocument()
215
+ : (toValue(options.document) ?? undefined);
216
+
217
+ const report = (name: WebVitalName): void => {
218
+ const metric = metrics.value[name];
219
+ if (!metric || reported.get(name) === metric.value) return;
220
+ reported.set(name, metric.value);
221
+ for (const listener of listeners) listener(metric);
222
+ };
223
+
224
+ const set = (name: WebVitalName, value: number, entries: number): void => {
225
+ pageId ??= `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
226
+ const metric: WebVitalMetric = {
227
+ name,
228
+ value,
229
+ rating: rateMetric(name, value),
230
+ delta: value - (reported.get(name) ?? 0),
231
+ entries,
232
+ id: `${name}-${pageId}`,
233
+ };
234
+ metrics.value = { ...metrics.value, [name]: metric };
235
+ if (reportAllChanges) report(name);
236
+ };
237
+
238
+ let firstHiddenTime = resolveDocument()?.visibilityState === "hidden" ? 0 : Infinity;
239
+
240
+ // LCP
241
+ let lcpFinal = false;
242
+ const lcp = usePerformanceObserver(
243
+ "largest-contentful-paint",
244
+ (entries) => {
245
+ if (lcpFinal) return;
246
+ const last = entries.filter((entry) => entry.startTime < firstHiddenTime).at(-1);
247
+ if (last) set("LCP", Math.max(last.startTime, 0), 1);
248
+ },
249
+ observerOptions,
250
+ );
251
+
252
+ // CLS
253
+ let sessionValue = 0;
254
+ let session: LayoutShiftEntryLike[] = [];
255
+ const handleShifts = (entries: readonly LayoutShiftEntryLike[]): void => {
256
+ for (const entry of entries) {
257
+ if (entry.hadRecentInput) continue;
258
+ const first = session[0];
259
+ const last = session.at(-1);
260
+ if (
261
+ first &&
262
+ last &&
263
+ entry.startTime - last.startTime < 1000 &&
264
+ entry.startTime - first.startTime < 5000
265
+ ) {
266
+ sessionValue += entry.value;
267
+ session.push(entry);
268
+ } else {
269
+ sessionValue = entry.value;
270
+ session = [entry];
271
+ }
272
+ if (sessionValue > (metrics.value.CLS?.value ?? 0)) set("CLS", sessionValue, session.length);
273
+ }
274
+ };
275
+ const cls = usePerformanceObserver("layout-shift", handleShifts, observerOptions);
276
+
277
+ // INP
278
+ const longest: Interaction[] = [];
279
+ let interactionCount = 0;
280
+ let previousInteractionId = 0;
281
+ const handleEvents = (entries: readonly EventTimingFieldsLike[]): void => {
282
+ let changed = false;
283
+ for (const entry of entries) {
284
+ const id = entry.interactionId ?? 0;
285
+ if (id === 0) continue;
286
+ const existing = longest.find((interaction) => interaction.id === id);
287
+ if (existing) {
288
+ existing.entries += 1;
289
+ existing.duration = Math.max(existing.duration, entry.duration);
290
+ } else {
291
+ if (id !== previousInteractionId) interactionCount += 1;
292
+ longest.push({ id, duration: entry.duration, entries: 1 });
293
+ }
294
+ previousInteractionId = id;
295
+ changed = true;
296
+ }
297
+ if (!changed) return;
298
+ longest.sort((left, right) => right.duration - left.duration);
299
+ longest.splice(MAX_INTERACTIONS);
300
+ const candidate =
301
+ longest[Math.min(longest.length - 1, Math.floor(interactionCount / 50))] ?? longest[0];
302
+ if (candidate) set("INP", candidate.duration, candidate.entries);
303
+ };
304
+ const inp = usePerformanceObserver(["event", "first-input"], handleEvents, {
305
+ ...observerOptions,
306
+ durationThreshold: options.durationThreshold ?? 40,
307
+ });
308
+
309
+ // FCP
310
+ const fcp = usePerformanceObserver(
311
+ "paint",
312
+ (entries) => {
313
+ const entry = entries.find(
314
+ (paint) => paint.name === "first-contentful-paint" && paint.startTime < firstHiddenTime,
315
+ );
316
+ if (!entry) return;
317
+ fcp.stop();
318
+ set("FCP", Math.max(entry.startTime, 0), 1);
319
+ report("FCP");
320
+ },
321
+ observerOptions,
322
+ );
323
+
324
+ // TTFB
325
+ const ttfb = usePerformanceObserver(
326
+ "navigation",
327
+ (entries) => {
328
+ const entry = entries[0];
329
+ if (!entry) return;
330
+ ttfb.stop();
331
+ set("TTFB", Math.max(entry.responseStart - (entry.activationStart ?? 0), 0), 1);
332
+ report("TTFB");
333
+ },
334
+ observerOptions,
335
+ );
336
+
337
+ const finalizeLcp = (): void => {
338
+ if (lcpFinal) return;
339
+ const pending = lcp.takeRecords().filter((entry) => entry.startTime < firstHiddenTime);
340
+ const last = pending.at(-1);
341
+ if (last) set("LCP", Math.max(last.startTime, 0), 1);
342
+ lcpFinal = true;
343
+ lcp.stop();
344
+ report("LCP");
345
+ };
346
+
347
+ const onHidden = (timeStamp: number): void => {
348
+ firstHiddenTime = Math.min(firstHiddenTime, timeStamp);
349
+ finalizeLcp();
350
+ handleShifts(cls.takeRecords());
351
+ handleEvents(inp.takeRecords());
352
+ if (!metrics.value.CLS && cls.supported.value) set("CLS", 0, 0);
353
+ report("CLS");
354
+ report("INP");
355
+ };
356
+
357
+ const stopDocument = watch(
358
+ resolveDocument,
359
+ (document, _previous, onCleanup) => {
360
+ if (!document) return;
361
+ const onVisibility = (event: { readonly timeStamp: number }): void => {
362
+ if (document.visibilityState === "hidden") onHidden(event.timeStamp);
363
+ };
364
+ const onInput = (): void => {
365
+ finalizeLcp();
366
+ removeInput();
367
+ };
368
+ const removeInput = (): void => {
369
+ document.removeEventListener("keydown", onInput, { capture: true });
370
+ document.removeEventListener("click", onInput, { capture: true });
371
+ };
372
+ document.addEventListener("visibilitychange", onVisibility);
373
+ if (!lcpFinal) {
374
+ document.addEventListener("keydown", onInput, { capture: true });
375
+ document.addEventListener("click", onInput, { capture: true });
376
+ }
377
+ onCleanup(() => {
378
+ document.removeEventListener("visibilitychange", onVisibility);
379
+ removeInput();
380
+ });
381
+ },
382
+ { immediate: true, flush: "sync" },
383
+ );
384
+
385
+ const stop = (): void => {
386
+ stopDocument();
387
+ for (const observer of [lcp, cls, inp, fcp, ttfb]) observer.stop();
388
+ };
389
+
390
+ tryOnScopeDispose(() => {
391
+ stop();
392
+ listeners.clear();
393
+ });
394
+
395
+ return {
396
+ supported: computed(
397
+ () =>
398
+ hydrated.value && [lcp, cls, inp, fcp, ttfb].some((observer) => observer.supported.value),
399
+ ),
400
+ metrics: readonly(metrics),
401
+ onMetric: (listener) => {
402
+ listeners.add(listener);
403
+ return () => {
404
+ listeners.delete(listener);
405
+ };
406
+ },
407
+ stop,
408
+ };
409
+ }