@vizejs/composable 0.426.3 → 0.427.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/dist/abort-signal.d.mts +1 -1
  2. package/dist/active-element.d.mts +37 -0
  3. package/dist/active-element.mjs +56 -0
  4. package/dist/animate.d.mts +114 -0
  5. package/dist/animate.mjs +157 -0
  6. package/dist/battery.d.mts +61 -0
  7. package/dist/battery.mjs +90 -0
  8. package/dist/breakpoints.d.mts +82 -0
  9. package/dist/breakpoints.mjs +91 -0
  10. package/dist/catalog-BeTXFKxF.d.mts +4188 -0
  11. package/dist/catalog-r4Z5nptX.mjs +5144 -0
  12. package/dist/catalog.d.mts +1 -1
  13. package/dist/catalog.mjs +1 -1
  14. package/dist/color-mode.d.mts +131 -0
  15. package/dist/color-mode.mjs +133 -0
  16. package/dist/computed-async.d.mts +63 -0
  17. package/dist/computed-async.mjs +43 -0
  18. package/dist/computed-with-control.d.mts +44 -0
  19. package/dist/computed-with-control.mjs +54 -0
  20. package/dist/create-event-hook.d.mts +77 -0
  21. package/dist/create-event-hook.mjs +66 -0
  22. package/dist/create-global-state.d.mts +24 -0
  23. package/dist/create-global-state.mjs +34 -0
  24. package/dist/create-injection-state.d.mts +51 -0
  25. package/dist/create-injection-state.mjs +19 -0
  26. package/dist/create-shared-composable.d.mts +38 -0
  27. package/dist/create-shared-composable.mjs +54 -0
  28. package/dist/device-motion.d.mts +71 -0
  29. package/dist/device-motion.mjs +75 -0
  30. package/dist/device-orientation.d.mts +82 -0
  31. package/dist/device-orientation.mjs +86 -0
  32. package/dist/device-pixel-ratio.d.mts +45 -0
  33. package/dist/device-pixel-ratio.mjs +50 -0
  34. package/dist/document-visibility.mjs +6 -2
  35. package/dist/draggable.d.mts +121 -0
  36. package/dist/draggable.mjs +153 -0
  37. package/dist/element-bounding.d.mts +87 -0
  38. package/dist/element-bounding.mjs +95 -0
  39. package/dist/element-by-point.d.mts +70 -0
  40. package/dist/element-by-point.mjs +69 -0
  41. package/dist/element-hover.d.mts +42 -0
  42. package/dist/element-hover.mjs +70 -0
  43. package/dist/element-ref.d.mts +34 -0
  44. package/dist/element-ref.mjs +23 -0
  45. package/dist/element-target-Crpxl4D9.d.mts +60 -0
  46. package/dist/element-target.d.mts +2 -0
  47. package/dist/element-target.mjs +58 -0
  48. package/dist/event-listener.mjs +7 -3
  49. package/dist/focus.d.mts +69 -0
  50. package/dist/focus.mjs +124 -0
  51. package/dist/fps.d.mts +59 -0
  52. package/dist/fps.mjs +64 -0
  53. package/dist/geolocation.d.mts +98 -0
  54. package/dist/geolocation.mjs +86 -0
  55. package/dist/i18n.d.mts +237 -0
  56. package/dist/i18n.mjs +215 -0
  57. package/dist/icu-message.d.mts +235 -0
  58. package/dist/icu-message.mjs +343 -0
  59. package/dist/idle.d.mts +79 -0
  60. package/dist/idle.mjs +90 -0
  61. package/dist/index.d.mts +172 -6
  62. package/dist/index.mjs +173 -7
  63. package/dist/infinite-scroll.d.mts +56 -0
  64. package/dist/infinite-scroll.mjs +72 -0
  65. package/dist/intersection-observer.d.mts +122 -0
  66. package/dist/intersection-observer.mjs +117 -0
  67. package/dist/magic-keys.d.mts +121 -0
  68. package/dist/magic-keys.mjs +163 -0
  69. package/dist/math.d.mts +96 -0
  70. package/dist/math.mjs +84 -0
  71. package/dist/media-query.d.mts +3 -1
  72. package/dist/media-query.mjs +5 -3
  73. package/dist/mouse-in-element.d.mts +49 -0
  74. package/dist/mouse-in-element.mjs +66 -0
  75. package/dist/mouse.d.mts +77 -0
  76. package/dist/mouse.mjs +100 -0
  77. package/dist/mutation-observer.d.mts +98 -0
  78. package/dist/mutation-observer.mjs +69 -0
  79. package/dist/network.d.mts +96 -0
  80. package/dist/network.mjs +117 -0
  81. package/dist/on-click-outside.d.mts +69 -0
  82. package/dist/on-click-outside.mjs +115 -0
  83. package/dist/on-key-stroke.d.mts +71 -0
  84. package/dist/on-key-stroke.mjs +79 -0
  85. package/dist/on-long-press.d.mts +82 -0
  86. package/dist/on-long-press.mjs +105 -0
  87. package/dist/on-start-typing.d.mts +44 -0
  88. package/dist/on-start-typing.mjs +61 -0
  89. package/dist/page-leave.d.mts +26 -0
  90. package/dist/page-leave.mjs +40 -0
  91. package/dist/parent-element.d.mts +16 -0
  92. package/dist/parent-element.mjs +27 -0
  93. package/dist/pinch.d.mts +73 -0
  94. package/dist/pinch.mjs +138 -0
  95. package/dist/pointer-lock.d.mts +79 -0
  96. package/dist/pointer-lock.mjs +126 -0
  97. package/dist/pointer.d.mts +78 -0
  98. package/dist/pointer.mjs +95 -0
  99. package/dist/preferences.d.mts +55 -0
  100. package/dist/preferences.mjs +63 -0
  101. package/dist/preferred-languages.d.mts +43 -0
  102. package/dist/preferred-languages.mjs +44 -0
  103. package/dist/reactify.d.mts +28 -0
  104. package/dist/reactify.mjs +7 -0
  105. package/dist/ref-auto-reset.d.mts +47 -0
  106. package/dist/ref-auto-reset.mjs +70 -0
  107. package/dist/ref-debounced.d.mts +29 -0
  108. package/dist/ref-debounced.mjs +29 -0
  109. package/dist/ref-default.d.mts +27 -0
  110. package/dist/ref-default.mjs +33 -0
  111. package/dist/resize-observer.d.mts +96 -0
  112. package/dist/resize-observer.mjs +111 -0
  113. package/dist/resolver.d.mts +124 -0
  114. package/dist/resolver.mjs +138 -0
  115. package/dist/retry-async.d.mts +2 -2
  116. package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
  117. package/dist/retry-delay.d.mts +1 -72
  118. package/dist/screen-orientation.d.mts +77 -0
  119. package/dist/screen-orientation.mjs +74 -0
  120. package/dist/scroll-lock.d.mts +37 -0
  121. package/dist/scroll-lock.mjs +50 -0
  122. package/dist/scroll.d.mts +158 -0
  123. package/dist/scroll.mjs +172 -0
  124. package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
  125. package/dist/standard-schema.d.mts +2 -0
  126. package/dist/standard-schema.mjs +60 -0
  127. package/dist/swipe.d.mts +125 -0
  128. package/dist/swipe.mjs +225 -0
  129. package/dist/sync-ref.d.mts +80 -0
  130. package/dist/sync-ref.mjs +43 -0
  131. package/dist/text-selection.d.mts +46 -0
  132. package/dist/text-selection.mjs +62 -0
  133. package/dist/textarea-autosize.d.mts +58 -0
  134. package/dist/textarea-autosize.mjs +54 -0
  135. package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
  136. package/dist/timeout-scheduler.d.mts +1 -17
  137. package/dist/to-reactive.d.mts +26 -0
  138. package/dist/to-reactive.mjs +46 -0
  139. package/dist/transition.d.mts +125 -0
  140. package/dist/transition.mjs +266 -0
  141. package/dist/until.d.mts +177 -0
  142. package/dist/until.mjs +111 -0
  143. package/dist/use-array.d.mts +112 -0
  144. package/dist/use-array.mjs +90 -0
  145. package/dist/use-async-queue.d.mts +109 -0
  146. package/dist/use-async-queue.mjs +96 -0
  147. package/dist/use-async-state.d.mts +86 -0
  148. package/dist/use-async-state.mjs +41 -0
  149. package/dist/use-barcode-detector.d.mts +159 -0
  150. package/dist/use-barcode-detector.mjs +143 -0
  151. package/dist/use-bluetooth.d.mts +164 -0
  152. package/dist/use-bluetooth.mjs +183 -0
  153. package/dist/use-broadcast-channel.d.mts +115 -0
  154. package/dist/use-broadcast-channel.mjs +121 -0
  155. package/dist/use-builtin-ai.d.mts +342 -0
  156. package/dist/use-builtin-ai.mjs +261 -0
  157. package/dist/use-clipboard.d.mts +169 -0
  158. package/dist/use-clipboard.mjs +226 -0
  159. package/dist/use-compression-stream.d.mts +173 -0
  160. package/dist/use-compression-stream.mjs +166 -0
  161. package/dist/use-confirm-dialog.d.mts +70 -0
  162. package/dist/use-confirm-dialog.mjs +57 -0
  163. package/dist/use-contact-picker.d.mts +117 -0
  164. package/dist/use-contact-picker.mjs +103 -0
  165. package/dist/use-cookie.d.mts +196 -0
  166. package/dist/use-cookie.mjs +259 -0
  167. package/dist/use-countdown.d.mts +85 -0
  168. package/dist/use-countdown.mjs +74 -0
  169. package/dist/use-css-var.d.mts +96 -0
  170. package/dist/use-css-var.mjs +104 -0
  171. package/dist/use-cycle-list.d.mts +76 -0
  172. package/dist/use-cycle-list.mjs +39 -0
  173. package/dist/use-date-format.d.mts +103 -0
  174. package/dist/use-date-format.mjs +147 -0
  175. package/dist/use-date-time-format.d.mts +75 -0
  176. package/dist/use-date-time-format.mjs +53 -0
  177. package/dist/use-debounced.d.mts +1 -1
  178. package/dist/use-display-media.d.mts +62 -0
  179. package/dist/use-display-media.mjs +46 -0
  180. package/dist/use-display-names.d.mts +75 -0
  181. package/dist/use-display-names.mjs +52 -0
  182. package/dist/use-document-title.d.mts +88 -0
  183. package/dist/use-document-title.mjs +100 -0
  184. package/dist/use-drop-zone.d.mts +128 -0
  185. package/dist/use-drop-zone.mjs +154 -0
  186. package/dist/use-event-source.d.mts +184 -0
  187. package/dist/use-event-source.mjs +226 -0
  188. package/dist/use-eye-dropper.d.mts +79 -0
  189. package/dist/use-eye-dropper.mjs +68 -0
  190. package/dist/use-favicon.d.mts +78 -0
  191. package/dist/use-favicon.mjs +68 -0
  192. package/dist/use-fetch.d.mts +230 -0
  193. package/dist/use-fetch.mjs +263 -0
  194. package/dist/use-field.d.mts +107 -0
  195. package/dist/use-field.mjs +117 -0
  196. package/dist/use-file-dialog.d.mts +139 -0
  197. package/dist/use-file-dialog.mjs +101 -0
  198. package/dist/use-file-system-access.d.mts +184 -0
  199. package/dist/use-file-system-access.mjs +151 -0
  200. package/dist/use-form-field-props.d.mts +235 -0
  201. package/dist/use-form-field-props.mjs +164 -0
  202. package/dist/use-form.d.mts +324 -0
  203. package/dist/use-form.mjs +482 -0
  204. package/dist/use-fullscreen.d.mts +104 -0
  205. package/dist/use-fullscreen.mjs +95 -0
  206. package/dist/use-gamepad.d.mts +242 -0
  207. package/dist/use-gamepad.mjs +218 -0
  208. package/dist/use-hid.d.mts +160 -0
  209. package/dist/use-hid.mjs +156 -0
  210. package/dist/use-id-generator.d.mts +44 -0
  211. package/dist/use-id-generator.mjs +38 -0
  212. package/dist/use-image.d.mts +125 -0
  213. package/dist/use-image.mjs +109 -0
  214. package/dist/use-indexed-db.d.mts +207 -0
  215. package/dist/use-indexed-db.mjs +251 -0
  216. package/dist/use-interval-BA55gTHT.d.mts +140 -0
  217. package/dist/use-interval.d.mts +2 -0
  218. package/dist/use-interval.mjs +100 -0
  219. package/dist/use-list-format.d.mts +60 -0
  220. package/dist/use-list-format.mjs +40 -0
  221. package/dist/use-machine.d.mts +90 -0
  222. package/dist/use-machine.mjs +78 -0
  223. package/dist/use-map.d.mts +90 -0
  224. package/dist/use-map.mjs +70 -0
  225. package/dist/use-media-controls.d.mts +198 -0
  226. package/dist/use-media-controls.mjs +264 -0
  227. package/dist/use-memoize.d.mts +73 -0
  228. package/dist/use-memoize.mjs +28 -0
  229. package/dist/use-mounted.d.mts +24 -0
  230. package/dist/use-mounted.mjs +29 -0
  231. package/dist/use-navigation-api.d.mts +360 -0
  232. package/dist/use-navigation-api.mjs +231 -0
  233. package/dist/use-notification.d.mts +139 -0
  234. package/dist/use-notification.mjs +131 -0
  235. package/dist/use-now.d.mts +137 -0
  236. package/dist/use-now.mjs +44 -0
  237. package/dist/use-number-format.d.mts +73 -0
  238. package/dist/use-number-format.mjs +58 -0
  239. package/dist/use-object-url.d.mts +47 -0
  240. package/dist/use-object-url.mjs +54 -0
  241. package/dist/use-offset-pagination.d.mts +91 -0
  242. package/dist/use-offset-pagination.mjs +80 -0
  243. package/dist/use-payment-request.d.mts +239 -0
  244. package/dist/use-payment-request.mjs +206 -0
  245. package/dist/use-performance-observer.d.mts +285 -0
  246. package/dist/use-performance-observer.mjs +132 -0
  247. package/dist/use-permission.d.mts +99 -0
  248. package/dist/use-permission.mjs +92 -0
  249. package/dist/use-plural-rules.d.mts +79 -0
  250. package/dist/use-plural-rules.mjs +59 -0
  251. package/dist/use-push-subscription.d.mts +154 -0
  252. package/dist/use-push-subscription.mjs +146 -0
  253. package/dist/use-queue.d.mts +89 -0
  254. package/dist/use-queue.mjs +116 -0
  255. package/dist/use-raf-fn.d.mts +87 -0
  256. package/dist/use-raf-fn.mjs +99 -0
  257. package/dist/use-relative-time-format.d.mts +111 -0
  258. package/dist/use-relative-time-format.mjs +119 -0
  259. package/dist/use-request-idle-callback.d.mts +122 -0
  260. package/dist/use-request-idle-callback.mjs +147 -0
  261. package/dist/use-route-query.d.mts +149 -0
  262. package/dist/use-route-query.mjs +86 -0
  263. package/dist/use-scheduler-post-task.d.mts +156 -0
  264. package/dist/use-scheduler-post-task.mjs +182 -0
  265. package/dist/use-screen-details.d.mts +205 -0
  266. package/dist/use-screen-details.mjs +188 -0
  267. package/dist/use-script-tag.d.mts +162 -0
  268. package/dist/use-script-tag.mjs +171 -0
  269. package/dist/use-segmenter.d.mts +78 -0
  270. package/dist/use-segmenter.mjs +66 -0
  271. package/dist/use-selection.d.mts +125 -0
  272. package/dist/use-selection.mjs +77 -0
  273. package/dist/use-serial.d.mts +165 -0
  274. package/dist/use-serial.mjs +205 -0
  275. package/dist/use-service-worker.d.mts +177 -0
  276. package/dist/use-service-worker.mjs +178 -0
  277. package/dist/use-set.d.mts +96 -0
  278. package/dist/use-set.mjs +74 -0
  279. package/dist/use-share.d.mts +92 -0
  280. package/dist/use-share.mjs +99 -0
  281. package/dist/use-sorted-locale.d.mts +62 -0
  282. package/dist/use-sorted-locale.mjs +52 -0
  283. package/dist/use-sorted.d.mts +29 -0
  284. package/dist/use-sorted.mjs +14 -0
  285. package/dist/use-speech-recognition.d.mts +150 -0
  286. package/dist/use-speech-recognition.mjs +168 -0
  287. package/dist/use-speech-synthesis.d.mts +148 -0
  288. package/dist/use-speech-synthesis.mjs +152 -0
  289. package/dist/use-stack.d.mts +83 -0
  290. package/dist/use-stack.mjs +93 -0
  291. package/dist/use-stepper.d.mts +79 -0
  292. package/dist/use-stepper.mjs +52 -0
  293. package/dist/use-storage-estimate.d.mts +151 -0
  294. package/dist/use-storage-estimate.mjs +170 -0
  295. package/dist/use-storage.d.mts +214 -0
  296. package/dist/use-storage.mjs +415 -0
  297. package/dist/use-style-tag.d.mts +102 -0
  298. package/dist/use-style-tag.mjs +91 -0
  299. package/dist/use-supported.d.mts +23 -0
  300. package/dist/use-supported.mjs +26 -0
  301. package/dist/use-throttled.d.mts +1 -1
  302. package/dist/use-time-ago.d.mts +163 -0
  303. package/dist/use-time-ago.mjs +95 -0
  304. package/dist/use-timeout.d.mts +122 -0
  305. package/dist/use-timeout.mjs +65 -0
  306. package/dist/use-url-hash.d.mts +88 -0
  307. package/dist/use-url-hash.mjs +145 -0
  308. package/dist/use-url-search-params.d.mts +223 -0
  309. package/dist/use-url-search-params.mjs +295 -0
  310. package/dist/use-usb.d.mts +212 -0
  311. package/dist/use-usb.mjs +137 -0
  312. package/dist/use-user-activation.d.mts +83 -0
  313. package/dist/use-user-activation.mjs +113 -0
  314. package/dist/use-user-media.d.mts +194 -0
  315. package/dist/use-user-media.mjs +214 -0
  316. package/dist/use-v-model.d.mts +113 -0
  317. package/dist/use-v-model.mjs +40 -0
  318. package/dist/use-vibrate.d.mts +81 -0
  319. package/dist/use-vibrate.mjs +90 -0
  320. package/dist/use-view-transition.d.mts +106 -0
  321. package/dist/use-view-transition.mjs +101 -0
  322. package/dist/use-visual-viewport.d.mts +105 -0
  323. package/dist/use-visual-viewport.mjs +104 -0
  324. package/dist/use-wake-lock.d.mts +96 -0
  325. package/dist/use-wake-lock.mjs +106 -0
  326. package/dist/use-web-authn.d.mts +404 -0
  327. package/dist/use-web-authn.mjs +323 -0
  328. package/dist/use-web-locks.d.mts +180 -0
  329. package/dist/use-web-locks.mjs +136 -0
  330. package/dist/use-web-midi.d.mts +148 -0
  331. package/dist/use-web-midi.mjs +140 -0
  332. package/dist/use-web-vitals.d.mts +142 -0
  333. package/dist/use-web-vitals.mjs +248 -0
  334. package/dist/use-websocket.d.mts +218 -0
  335. package/dist/use-websocket.mjs +257 -0
  336. package/dist/use-worker-fn.d.mts +119 -0
  337. package/dist/use-worker-fn.mjs +162 -0
  338. package/dist/virtual-list.d.mts +105 -0
  339. package/dist/virtual-list.mjs +128 -0
  340. package/dist/watch-debounced.d.mts +84 -0
  341. package/dist/watch-debounced.mjs +84 -0
  342. package/dist/watch-ignorable.d.mts +47 -0
  343. package/dist/watch-ignorable.mjs +61 -0
  344. package/dist/watch-once.d.mts +29 -0
  345. package/dist/watch-once.mjs +10 -0
  346. package/dist/watch-pausable.d.mts +51 -0
  347. package/dist/watch-pausable.mjs +23 -0
  348. package/dist/watch-source.d.mts +29 -0
  349. package/dist/watch-source.mjs +1 -0
  350. package/dist/watch-throttled.d.mts +70 -0
  351. package/dist/watch-throttled.mjs +94 -0
  352. package/dist/whenever.d.mts +39 -0
  353. package/dist/whenever.mjs +41 -0
  354. package/dist/window-size.d.mts +87 -0
  355. package/dist/window-size.mjs +65 -0
  356. package/package.json +846 -5
  357. package/registry/files/abort-signal.ts +292 -0
  358. package/registry/files/active-element.ts +93 -0
  359. package/registry/files/animate.ts +322 -0
  360. package/registry/files/async-resource.ts +190 -0
  361. package/registry/files/battery.ts +166 -0
  362. package/registry/files/breakpoints.ts +166 -0
  363. package/registry/files/capability.ts +171 -0
  364. package/registry/files/color-mode.ts +274 -0
  365. package/registry/files/computed-async.ts +123 -0
  366. package/registry/files/computed-with-control.ts +80 -0
  367. package/registry/files/create-event-hook.ts +139 -0
  368. package/registry/files/create-global-state.ts +34 -0
  369. package/registry/files/create-injection-state.ts +75 -0
  370. package/registry/files/create-shared-composable.ts +74 -0
  371. package/registry/files/device-motion.ts +152 -0
  372. package/registry/files/device-orientation.ts +168 -0
  373. package/registry/files/device-pixel-ratio.ts +100 -0
  374. package/registry/files/disposal-scope.ts +201 -0
  375. package/registry/files/document-visibility.ts +152 -0
  376. package/registry/files/draggable.ts +273 -0
  377. package/registry/files/element-bounding.ts +175 -0
  378. package/registry/files/element-by-point.ts +149 -0
  379. package/registry/files/element-hover.ts +104 -0
  380. package/registry/files/element-ref.ts +58 -0
  381. package/registry/files/element-target.ts +99 -0
  382. package/registry/files/event-listener.ts +188 -0
  383. package/registry/files/focus.ts +181 -0
  384. package/registry/files/fps.ts +133 -0
  385. package/registry/files/geolocation.ts +214 -0
  386. package/registry/files/i18n.ts +524 -0
  387. package/registry/files/icu-message.ts +701 -0
  388. package/registry/files/idle.ts +176 -0
  389. package/registry/files/infinite-scroll.ts +135 -0
  390. package/registry/files/intersection-observer.ts +261 -0
  391. package/registry/files/locale.ts +148 -0
  392. package/registry/files/magic-keys.ts +298 -0
  393. package/registry/files/math.ts +175 -0
  394. package/registry/files/media-query.ts +102 -0
  395. package/registry/files/mouse-in-element.ts +107 -0
  396. package/registry/files/mouse.ts +167 -0
  397. package/registry/files/mutation-observer.ts +183 -0
  398. package/registry/files/network.ts +229 -0
  399. package/registry/files/on-click-outside.ts +178 -0
  400. package/registry/files/on-key-stroke.ts +135 -0
  401. package/registry/files/on-long-press.ts +188 -0
  402. package/registry/files/on-start-typing.ts +88 -0
  403. package/registry/files/page-leave.ts +57 -0
  404. package/registry/files/parent-element.ts +29 -0
  405. package/registry/files/pinch.ts +187 -0
  406. package/registry/files/pointer-lock.ts +232 -0
  407. package/registry/files/pointer.ts +153 -0
  408. package/registry/files/preferences.ts +98 -0
  409. package/registry/files/preferred-languages.ts +88 -0
  410. package/registry/files/reactify.ts +39 -0
  411. package/registry/files/ref-auto-reset.ts +102 -0
  412. package/registry/files/ref-debounced.ts +34 -0
  413. package/registry/files/ref-default.ts +35 -0
  414. package/registry/files/resize-observer.ts +220 -0
  415. package/registry/files/retry-async.ts +261 -0
  416. package/registry/files/retry-delay.ts +132 -0
  417. package/registry/files/scope.ts +21 -0
  418. package/registry/files/screen-orientation.ts +165 -0
  419. package/registry/files/scroll-lock.ts +80 -0
  420. package/registry/files/scroll.ts +338 -0
  421. package/registry/files/standard-schema.ts +163 -0
  422. package/registry/files/swipe.ts +321 -0
  423. package/registry/files/sync-ref.ts +166 -0
  424. package/registry/files/temporal.ts +182 -0
  425. package/registry/files/text-selection.ts +110 -0
  426. package/registry/files/textarea-autosize.ts +114 -0
  427. package/registry/files/timeout-scheduler.ts +16 -0
  428. package/registry/files/to-reactive.ts +44 -0
  429. package/registry/files/transition.ts +271 -0
  430. package/registry/files/until.ts +352 -0
  431. package/registry/files/use-array.ts +201 -0
  432. package/registry/files/use-async-queue.ts +278 -0
  433. package/registry/files/use-async-state.ts +139 -0
  434. package/registry/files/use-barcode-detector.ts +321 -0
  435. package/registry/files/use-bluetooth.ts +409 -0
  436. package/registry/files/use-broadcast-channel.ts +250 -0
  437. package/registry/files/use-builtin-ai.ts +674 -0
  438. package/registry/files/use-clipboard.ts +425 -0
  439. package/registry/files/use-compression-stream.ts +364 -0
  440. package/registry/files/use-confirm-dialog.ts +137 -0
  441. package/registry/files/use-contact-picker.ts +246 -0
  442. package/registry/files/use-cookie.ts +500 -0
  443. package/registry/files/use-countdown.ts +161 -0
  444. package/registry/files/use-counter.ts +147 -0
  445. package/registry/files/use-css-var.ts +191 -0
  446. package/registry/files/use-cycle-list.ts +136 -0
  447. package/registry/files/use-date-format.ts +281 -0
  448. package/registry/files/use-date-time-format.ts +113 -0
  449. package/registry/files/use-debounced.ts +163 -0
  450. package/registry/files/use-display-media.ts +89 -0
  451. package/registry/files/use-display-names.ts +122 -0
  452. package/registry/files/use-document-title.ts +196 -0
  453. package/registry/files/use-drop-zone.ts +287 -0
  454. package/registry/files/use-event-source.ts +470 -0
  455. package/registry/files/use-eye-dropper.ts +134 -0
  456. package/registry/files/use-favicon.ts +140 -0
  457. package/registry/files/use-fetch.ts +578 -0
  458. package/registry/files/use-field.ts +247 -0
  459. package/registry/files/use-file-dialog.ts +257 -0
  460. package/registry/files/use-file-system-access.ts +383 -0
  461. package/registry/files/use-form-field-props.ts +381 -0
  462. package/registry/files/use-form.ts +980 -0
  463. package/registry/files/use-fullscreen.ts +214 -0
  464. package/registry/files/use-gamepad.ts +463 -0
  465. package/registry/files/use-hid.ts +359 -0
  466. package/registry/files/use-history.ts +231 -0
  467. package/registry/files/use-id-generator.ts +61 -0
  468. package/registry/files/use-image.ts +253 -0
  469. package/registry/files/use-indexed-db.ts +508 -0
  470. package/registry/files/use-interval.ts +253 -0
  471. package/registry/files/use-list-format.ts +85 -0
  472. package/registry/files/use-machine.ts +171 -0
  473. package/registry/files/use-map.ts +145 -0
  474. package/registry/files/use-media-controls.ts +545 -0
  475. package/registry/files/use-memoize.ts +118 -0
  476. package/registry/files/use-mounted.ts +30 -0
  477. package/registry/files/use-navigation-api.ts +641 -0
  478. package/registry/files/use-notification.ts +285 -0
  479. package/registry/files/use-now.ts +194 -0
  480. package/registry/files/use-number-format.ts +120 -0
  481. package/registry/files/use-object-url.ts +87 -0
  482. package/registry/files/use-offset-pagination.ts +168 -0
  483. package/registry/files/use-payment-request.ts +465 -0
  484. package/registry/files/use-performance-observer.ts +469 -0
  485. package/registry/files/use-permission.ts +220 -0
  486. package/registry/files/use-plural-rules.ts +134 -0
  487. package/registry/files/use-previous.ts +62 -0
  488. package/registry/files/use-push-subscription.ts +352 -0
  489. package/registry/files/use-queue.ts +197 -0
  490. package/registry/files/use-raf-fn.ts +176 -0
  491. package/registry/files/use-relative-time-format.ts +201 -0
  492. package/registry/files/use-request-idle-callback.ts +278 -0
  493. package/registry/files/use-route-query.ts +300 -0
  494. package/registry/files/use-scheduler-post-task.ts +397 -0
  495. package/registry/files/use-screen-details.ts +393 -0
  496. package/registry/files/use-script-tag.ts +341 -0
  497. package/registry/files/use-segmenter.ts +147 -0
  498. package/registry/files/use-selection.ts +233 -0
  499. package/registry/files/use-serial.ts +404 -0
  500. package/registry/files/use-service-worker.ts +413 -0
  501. package/registry/files/use-set.ts +154 -0
  502. package/registry/files/use-share.ts +168 -0
  503. package/registry/files/use-sorted-locale.ts +130 -0
  504. package/registry/files/use-sorted.ts +49 -0
  505. package/registry/files/use-speech-recognition.ts +357 -0
  506. package/registry/files/use-speech-synthesis.ts +333 -0
  507. package/registry/files/use-stack.ts +164 -0
  508. package/registry/files/use-stepper.ts +166 -0
  509. package/registry/files/use-storage-estimate.ts +352 -0
  510. package/registry/files/use-storage.ts +635 -0
  511. package/registry/files/use-style-tag.ts +200 -0
  512. package/registry/files/use-supported.ts +26 -0
  513. package/registry/files/use-throttled.ts +215 -0
  514. package/registry/files/use-time-ago.ts +276 -0
  515. package/registry/files/use-timeout.ts +218 -0
  516. package/registry/files/use-toggle.ts +54 -0
  517. package/registry/files/use-url-hash.ts +280 -0
  518. package/registry/files/use-url-search-params.ts +497 -0
  519. package/registry/files/use-usb.ts +395 -0
  520. package/registry/files/use-user-activation.ts +215 -0
  521. package/registry/files/use-user-media.ts +422 -0
  522. package/registry/files/use-v-model.ts +210 -0
  523. package/registry/files/use-vibrate.ts +174 -0
  524. package/registry/files/use-view-transition.ts +229 -0
  525. package/registry/files/use-visual-viewport.ts +228 -0
  526. package/registry/files/use-wake-lock.ts +206 -0
  527. package/registry/files/use-web-authn.ts +793 -0
  528. package/registry/files/use-web-locks.ts +363 -0
  529. package/registry/files/use-web-midi.ts +306 -0
  530. package/registry/files/use-web-vitals.ts +409 -0
  531. package/registry/files/use-websocket.ts +553 -0
  532. package/registry/files/use-worker-fn.ts +306 -0
  533. package/registry/files/virtual-list.ts +230 -0
  534. package/registry/files/watch-debounced.ts +206 -0
  535. package/registry/files/watch-ignorable.ts +128 -0
  536. package/registry/files/watch-once.ts +46 -0
  537. package/registry/files/watch-pausable.ts +93 -0
  538. package/registry/files/watch-source.ts +51 -0
  539. package/registry/files/watch-throttled.ts +201 -0
  540. package/registry/files/whenever.ts +70 -0
  541. package/registry/files/window-size.ts +151 -0
  542. package/registry/registry.json +5792 -0
  543. package/dist/catalog-D2AL3xYl.d.mts +0 -523
  544. package/dist/catalog-D5SYCsgW.mjs +0 -549
@@ -0,0 +1,206 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { computed, hasInjectionContext, readonly, shallowRef, toValue, unref, watchPostEffect } from "vue";
3
+ //#region src/use-payment-request.ts
4
+ function isPaymentRequestHost(candidate) {
5
+ return typeof candidate === "function";
6
+ }
7
+ function browserPaymentRequest() {
8
+ if (typeof window === "undefined") return void 0;
9
+ const candidate = Reflect.get(window, "PaymentRequest");
10
+ return isPaymentRequestHost(candidate) ? candidate : void 0;
11
+ }
12
+ function hasUpdateWith(event) {
13
+ return "updateWith" in event && typeof event.updateWith === "function";
14
+ }
15
+ function errorName(error) {
16
+ return typeof error === "object" && error !== null && "name" in error ? error.name : void 0;
17
+ }
18
+ /**
19
+ * Collect payments with a typed Payment Request API wrapper.
20
+ *
21
+ * Every `show()` constructs a fresh request from the reactive `methods`,
22
+ * `details`, and `paymentOptions`, wires the shipping hooks (which call
23
+ * `updateWith` synchronously when they return an update), and resolves to a
24
+ * discriminated {@link PaymentShowResult}. Call `complete()` after
25
+ * processing a `"completed"` result. A showing sheet is aborted when the
26
+ * owning reactive scope stops; outside a scope call `abort()`.
27
+ *
28
+ * Server rendering: nothing is constructed, `supported` is false and
29
+ * `state` is `"idle"`.
30
+ * Inside a component `supported` turns true only after mounting, so
31
+ * hydration renders this server state first.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const payment = usePaymentRequest({ methods, details: { total } });
36
+ * const result = await payment.show();
37
+ * if (result.status === "completed") await payment.complete(await charge(result.response));
38
+ * ```
39
+ *
40
+ * @param options Methods, details, hooks, and the constructor host.
41
+ * @returns Payment state and actions.
42
+ */
43
+ function usePaymentRequest(options) {
44
+ const state = shallowRef("idle");
45
+ const response = shallowRef(void 0);
46
+ const error = shallowRef(void 0);
47
+ let active;
48
+ let generation = 0;
49
+ let completing = false;
50
+ const hydrated = shallowRef(!hasInjectionContext());
51
+ if (!hydrated.value) watchPostEffect(() => {
52
+ hydrated.value = true;
53
+ });
54
+ const resolveHost = () => options.PaymentRequest === void 0 ? browserPaymentRequest() : unref(options.PaymentRequest) ?? void 0;
55
+ const construct = (Host) => new Host([...toValue(options.methods)], toValue(options.details), toValue(options.paymentOptions) ?? {});
56
+ const bindHook = (request, type, hook) => {
57
+ if (!hook) return;
58
+ request.addEventListener(type, (event) => {
59
+ const update = hook({
60
+ request,
61
+ shippingAddress: request.shippingAddress ?? null,
62
+ shippingOption: request.shippingOption ?? null
63
+ });
64
+ if (update !== void 0 && hasUpdateWith(event)) event.updateWith(Promise.resolve(update));
65
+ });
66
+ };
67
+ const canMakePayment = async () => {
68
+ const Host = resolveHost();
69
+ if (!Host) return false;
70
+ try {
71
+ return await construct(Host).canMakePayment();
72
+ } catch {
73
+ return false;
74
+ }
75
+ };
76
+ const abort = async () => {
77
+ const current = active;
78
+ if (!current) return false;
79
+ try {
80
+ await current.abort();
81
+ if (active === current) {
82
+ active = void 0;
83
+ state.value = "idle";
84
+ generation += 1;
85
+ }
86
+ return true;
87
+ } catch {
88
+ return false;
89
+ }
90
+ };
91
+ const show = async () => {
92
+ const Host = resolveHost();
93
+ if (!Host) return {
94
+ status: "unsupported",
95
+ error: void 0
96
+ };
97
+ if (state.value === "awaiting-complete") return {
98
+ status: "failed",
99
+ error: /* @__PURE__ */ new Error("[VIZE_COMPOSE_PAYMENT_RESPONSE_INCOMPLETE] call complete() first")
100
+ };
101
+ const currentGeneration = ++generation;
102
+ const previous = active;
103
+ if (previous) {
104
+ try {
105
+ await previous.abort();
106
+ } catch (cause) {
107
+ if (active === previous) {
108
+ error.value = cause;
109
+ return {
110
+ status: "failed",
111
+ error: cause
112
+ };
113
+ }
114
+ }
115
+ if (active === previous) {
116
+ active = void 0;
117
+ state.value = "idle";
118
+ }
119
+ if (currentGeneration !== generation) return {
120
+ status: "aborted",
121
+ error: void 0
122
+ };
123
+ }
124
+ response.value = void 0;
125
+ let request;
126
+ try {
127
+ request = construct(Host);
128
+ } catch (cause) {
129
+ error.value = cause;
130
+ return {
131
+ status: "failed",
132
+ error: cause
133
+ };
134
+ }
135
+ bindHook(request, "shippingaddresschange", options.onShippingAddressChange);
136
+ bindHook(request, "shippingoptionchange", options.onShippingOptionChange);
137
+ active = request;
138
+ state.value = "interactive";
139
+ try {
140
+ const result = await request.show();
141
+ if (active !== request || currentGeneration !== generation) return {
142
+ status: "aborted",
143
+ error: void 0
144
+ };
145
+ active = void 0;
146
+ response.value = result;
147
+ state.value = "awaiting-complete";
148
+ error.value = void 0;
149
+ return {
150
+ status: "completed",
151
+ response: result
152
+ };
153
+ } catch (cause) {
154
+ if (active !== request || currentGeneration !== generation) return {
155
+ status: "aborted",
156
+ error: cause
157
+ };
158
+ active = void 0;
159
+ state.value = "idle";
160
+ const name = errorName(cause);
161
+ if (name === "AbortError") return {
162
+ status: "aborted",
163
+ error: cause
164
+ };
165
+ if (name === "NotSupportedError") return {
166
+ status: "unsupported",
167
+ error: cause
168
+ };
169
+ error.value = cause;
170
+ return {
171
+ status: "failed",
172
+ error: cause
173
+ };
174
+ }
175
+ };
176
+ const complete = async (result = "unknown") => {
177
+ const current = response.value;
178
+ if (!current || state.value !== "awaiting-complete" || completing) return false;
179
+ completing = true;
180
+ try {
181
+ await current.complete(result);
182
+ return true;
183
+ } catch (cause) {
184
+ error.value = cause;
185
+ return false;
186
+ } finally {
187
+ completing = false;
188
+ state.value = "idle";
189
+ }
190
+ };
191
+ tryOnScopeDispose(() => {
192
+ abort();
193
+ });
194
+ return {
195
+ supported: computed(() => hydrated.value && resolveHost() !== void 0),
196
+ state: readonly(state),
197
+ response: readonly(response),
198
+ error: readonly(error),
199
+ canMakePayment,
200
+ show,
201
+ complete,
202
+ abort
203
+ };
204
+ }
205
+ //#endregion
206
+ export { usePaymentRequest };
@@ -0,0 +1,285 @@
1
+ import { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from "vue";
2
+
3
+ //#region src/use-performance-observer.d.ts
4
+ /** Fields shared by every performance entry consumed by {@link usePerformanceObserver}. */
5
+ interface PerformanceEntryLike {
6
+ /** Entry name (URL, mark name, paint name, event type, …). */
7
+ readonly name: string;
8
+ /** Entry type this entry was reported for. */
9
+ readonly entryType: string;
10
+ /** Start time relative to the time origin, in milliseconds. */
11
+ readonly startTime: number;
12
+ /** Duration in milliseconds (`0` for instantaneous entries). */
13
+ readonly duration: number;
14
+ }
15
+ /** `largest-contentful-paint` entry. */
16
+ interface LargestContentfulPaintEntryLike extends PerformanceEntryLike {
17
+ /** Entry type discriminant. */
18
+ readonly entryType: "largest-contentful-paint";
19
+ /** Render time, or `0` for cross-origin images without Timing-Allow-Origin. */
20
+ readonly renderTime: number;
21
+ /** Load time of the resource, or `0` for text. */
22
+ readonly loadTime: number;
23
+ /** Visible area of the element in square pixels. */
24
+ readonly size: number;
25
+ /** Element `id`, or an empty string. */
26
+ readonly id: string;
27
+ /** Image URL, or an empty string for text. */
28
+ readonly url: string;
29
+ }
30
+ /** `layout-shift` entry (Layout Instability API). */
31
+ interface LayoutShiftEntryLike extends PerformanceEntryLike {
32
+ /** Entry type discriminant. */
33
+ readonly entryType: "layout-shift";
34
+ /** Layout shift score. */
35
+ readonly value: number;
36
+ /** Whether a user input happened within the previous 500 ms. */
37
+ readonly hadRecentInput: boolean;
38
+ /** Time of the most recent input. */
39
+ readonly lastInputTime: number;
40
+ }
41
+ /** Fields of Event Timing entries (`event` and `first-input`). */
42
+ interface EventTimingFieldsLike extends PerformanceEntryLike {
43
+ /** Time the event handlers started running. */
44
+ readonly processingStart: number;
45
+ /** Time the event handlers finished running. */
46
+ readonly processingEnd: number;
47
+ /** Whether the event was cancelable. */
48
+ readonly cancelable: boolean;
49
+ /** Interaction identifier; `0` when the event is not part of an interaction. */
50
+ readonly interactionId?: number;
51
+ }
52
+ /** `event` entry (Event Timing API). */
53
+ interface EventTimingEntryLike extends EventTimingFieldsLike {
54
+ /** Entry type discriminant. */
55
+ readonly entryType: "event";
56
+ }
57
+ /** `first-input` entry (Event Timing API). */
58
+ interface FirstInputEntryLike extends EventTimingFieldsLike {
59
+ /** Entry type discriminant. */
60
+ readonly entryType: "first-input";
61
+ }
62
+ /** `paint` entry (`first-paint` or `first-contentful-paint`). */
63
+ interface PaintEntryLike extends PerformanceEntryLike {
64
+ /** Entry type discriminant. */
65
+ readonly entryType: "paint";
66
+ }
67
+ /** Fields shared by resource and navigation timing entries. */
68
+ interface ResourceTimingFieldsLike extends PerformanceEntryLike {
69
+ /** Initiator (`navigation`, `script`, `img`, `fetch`, …). */
70
+ readonly initiatorType: string;
71
+ /** Time the request started. */
72
+ readonly requestStart: number;
73
+ /** Time the first response byte arrived. */
74
+ readonly responseStart: number;
75
+ /** Time the last response byte arrived. */
76
+ readonly responseEnd: number;
77
+ /** Transferred size in bytes including headers. */
78
+ readonly transferSize: number;
79
+ }
80
+ /** `resource` entry (Resource Timing API). */
81
+ interface ResourceTimingEntryLike extends ResourceTimingFieldsLike {
82
+ /** Entry type discriminant. */
83
+ readonly entryType: "resource";
84
+ }
85
+ /** `navigation` entry (Navigation Timing API). */
86
+ interface NavigationTimingEntryLike extends ResourceTimingFieldsLike {
87
+ /** Entry type discriminant. */
88
+ readonly entryType: "navigation";
89
+ /** Navigation type (`navigate`, `reload`, `back_forward`, `prerender`). */
90
+ readonly type: string;
91
+ /** Time a prerendered page was activated; `0` or absent otherwise. */
92
+ readonly activationStart?: number;
93
+ /** End of the `DOMContentLoaded` handlers. */
94
+ readonly domContentLoadedEventEnd: number;
95
+ /** End of the `load` handlers. */
96
+ readonly loadEventEnd: number;
97
+ }
98
+ /** `longtask` entry (Long Tasks API). */
99
+ interface LongTaskEntryLike extends PerformanceEntryLike {
100
+ /** Entry type discriminant. */
101
+ readonly entryType: "longtask";
102
+ }
103
+ /** `mark` entry (User Timing API). */
104
+ interface MarkEntryLike extends PerformanceEntryLike {
105
+ /** Entry type discriminant. */
106
+ readonly entryType: "mark";
107
+ /** Detail passed to `performance.mark`. */
108
+ readonly detail: unknown;
109
+ }
110
+ /** `measure` entry (User Timing API). */
111
+ interface MeasureEntryLike extends PerformanceEntryLike {
112
+ /** Entry type discriminant. */
113
+ readonly entryType: "measure";
114
+ /** Detail passed to `performance.measure`. */
115
+ readonly detail: unknown;
116
+ }
117
+ /** `element` entry (Element Timing API). */
118
+ interface ElementTimingEntryLike extends PerformanceEntryLike {
119
+ /** Entry type discriminant. */
120
+ readonly entryType: "element";
121
+ /** Value of the `elementtiming` attribute. */
122
+ readonly identifier: string;
123
+ /** Render time. */
124
+ readonly renderTime: number;
125
+ /** Load time of the resource, or `0` for text. */
126
+ readonly loadTime: number;
127
+ /** Element `id`, or an empty string. */
128
+ readonly id: string;
129
+ /** Image URL, or an empty string for text. */
130
+ readonly url: string;
131
+ }
132
+ /** `long-animation-frame` entry (Long Animation Frames API). */
133
+ interface LongAnimationFrameEntryLike extends PerformanceEntryLike {
134
+ /** Entry type discriminant. */
135
+ readonly entryType: "long-animation-frame";
136
+ /** Start of the rendering phase. */
137
+ readonly renderStart: number;
138
+ /** Start of style and layout. */
139
+ readonly styleAndLayoutStart: number;
140
+ /** Total blocking time of the frame in milliseconds. */
141
+ readonly blockingDuration: number;
142
+ /** Time of the first UI event handled in this frame, or `0`. */
143
+ readonly firstUIEventTimestamp: number;
144
+ }
145
+ /** Entry interface delivered for each supported entry type. */
146
+ interface PerformanceEntryTypeMap {
147
+ /** Largest Contentful Paint candidates. */
148
+ readonly "largest-contentful-paint": LargestContentfulPaintEntryLike;
149
+ /** Layout shifts. */
150
+ readonly "layout-shift": LayoutShiftEntryLike;
151
+ /** Event Timing entries. */
152
+ readonly event: EventTimingEntryLike;
153
+ /** The first input of the page. */
154
+ readonly "first-input": FirstInputEntryLike;
155
+ /** First paint and first contentful paint. */
156
+ readonly paint: PaintEntryLike;
157
+ /** Document navigation timing. */
158
+ readonly navigation: NavigationTimingEntryLike;
159
+ /** Resource timing. */
160
+ readonly resource: ResourceTimingEntryLike;
161
+ /** Tasks longer than 50 ms. */
162
+ readonly longtask: LongTaskEntryLike;
163
+ /** User Timing marks. */
164
+ readonly mark: MarkEntryLike;
165
+ /** User Timing measures. */
166
+ readonly measure: MeasureEntryLike;
167
+ /** Element Timing entries. */
168
+ readonly element: ElementTimingEntryLike;
169
+ /** Long animation frames. */
170
+ readonly "long-animation-frame": LongAnimationFrameEntryLike;
171
+ }
172
+ /** Entry type understood by {@link usePerformanceObserver}. */
173
+ type PerformanceEntryType = keyof PerformanceEntryTypeMap;
174
+ /** Options passed to {@link PerformanceObserverLike.observe}. */
175
+ interface PerformanceObserveInit {
176
+ /** Single entry type to observe. */
177
+ readonly type: string;
178
+ /** Replay entries buffered before observation started. */
179
+ readonly buffered?: boolean;
180
+ /** Minimum duration of reported `event` entries. */
181
+ readonly durationThreshold?: number;
182
+ }
183
+ /** Minimal entry list handed to observer callbacks. */
184
+ interface PerformanceObserverEntryListLike {
185
+ /** Every entry of this batch. */
186
+ getEntries(): readonly PerformanceEntryLike[];
187
+ }
188
+ /** Minimal `PerformanceObserver` instance. */
189
+ interface PerformanceObserverLike {
190
+ /** Start observing one entry type. */
191
+ observe(options: PerformanceObserveInit): void;
192
+ /** Stop observing everything. */
193
+ disconnect(): void;
194
+ /** Return and clear pending entries. */
195
+ takeRecords(): readonly PerformanceEntryLike[];
196
+ }
197
+ /** Minimal `PerformanceObserver` constructor. */
198
+ interface PerformanceObserverHost {
199
+ /** Create an observer. */
200
+ new (callback: (list: PerformanceObserverEntryListLike, observer: PerformanceObserverLike) => void): PerformanceObserverLike;
201
+ /** Entry types this runtime supports; every type is attempted when absent. */
202
+ readonly supportedEntryTypes?: readonly string[] | undefined;
203
+ }
204
+ /** Options for {@link usePerformanceObserver}. */
205
+ interface UsePerformanceObserverOptions {
206
+ /**
207
+ * `PerformanceObserver` constructor for alternate runtimes and tests. A ref
208
+ * (not a getter) because the host itself is a constructor function.
209
+ *
210
+ * @default window.PerformanceObserver when it exists
211
+ */
212
+ readonly PerformanceObserver?: MaybeRef<PerformanceObserverHost | null | undefined>;
213
+ /**
214
+ * Replay entries recorded before observation started.
215
+ *
216
+ * @default false
217
+ */
218
+ readonly buffered?: boolean;
219
+ /**
220
+ * Minimum duration in milliseconds of reported `event` entries (the
221
+ * platform rounds it and clamps it to at least 16).
222
+ *
223
+ * @default undefined (platform default of 104)
224
+ */
225
+ readonly durationThreshold?: number;
226
+ /**
227
+ * Start observing immediately.
228
+ *
229
+ * @default true
230
+ */
231
+ readonly immediate?: boolean;
232
+ }
233
+ /** Callback invoked with correctly typed entries. */
234
+ type PerformanceObserverCallback<Type extends PerformanceEntryType> = (entries: readonly PerformanceEntryTypeMap[Type][], observer: PerformanceObserverLike) => void;
235
+ /** Reactive state and actions returned by {@link usePerformanceObserver}. */
236
+ interface PerformanceObserverControls<Type extends PerformanceEntryType> {
237
+ /** Whether an observer exists and supports at least one requested type. */
238
+ readonly supported: ComputedRef<boolean>;
239
+ /** Requested entry types the runtime supports. */
240
+ readonly observedTypes: ComputedRef<readonly Type[]>;
241
+ /** Whether an observer is currently connected. */
242
+ readonly isActive: Readonly<ShallowRef<boolean>>;
243
+ /** Most recent failure thrown by `observe`, cleared on the next start. */
244
+ readonly error: Readonly<ShallowRef<unknown>>;
245
+ /** Start (or restart) observing. */
246
+ readonly start: () => void;
247
+ /** Disconnect the observer. Repeated calls are safe. */
248
+ readonly stop: () => void;
249
+ /**
250
+ * Return and clear entries that are queued but not yet delivered.
251
+ *
252
+ * @returns Pending entries of the requested types.
253
+ */
254
+ readonly takeRecords: () => readonly PerformanceEntryTypeMap[Type][];
255
+ }
256
+ /**
257
+ * Observe performance entries with callbacks typed by entry type.
258
+ *
259
+ * Each supported type is observed with its own `observe({ type })` call so
260
+ * `buffered` and `durationThreshold` apply. Types missing from
261
+ * `PerformanceObserver.supportedEntryTypes` are skipped; `supported` is false
262
+ * when none remain. The observer follows reactive `entryTypes` and is
263
+ * disconnected when the owning reactive scope stops; outside a scope the
264
+ * caller owns `stop()`.
265
+ *
266
+ * Server rendering: no observer is created and `supported` is false. Inside
267
+ * a component the observer connects after mounting, so hydration renders the
268
+ * server state first.
269
+ *
270
+ * @example
271
+ * ```ts
272
+ * usePerformanceObserver("largest-contentful-paint", (entries) => {
273
+ * console.log(entries.at(-1)?.renderTime);
274
+ * }, { buffered: true });
275
+ * ```
276
+ *
277
+ * @param entryTypes One entry type or a list of them.
278
+ * @param callback Receives batches of typed entries.
279
+ * @param options Constructor host and observation options.
280
+ * @default options {}
281
+ * @returns Observer state and actions.
282
+ */
283
+ declare function usePerformanceObserver<const Type extends PerformanceEntryType>(entryTypes: MaybeRefOrGetter<Type | readonly Type[]>, callback: PerformanceObserverCallback<Type>, options?: UsePerformanceObserverOptions): PerformanceObserverControls<Type>;
284
+ //#endregion
285
+ export { ElementTimingEntryLike, EventTimingEntryLike, EventTimingFieldsLike, FirstInputEntryLike, LargestContentfulPaintEntryLike, LayoutShiftEntryLike, LongAnimationFrameEntryLike, LongTaskEntryLike, MarkEntryLike, MeasureEntryLike, NavigationTimingEntryLike, PaintEntryLike, PerformanceEntryLike, PerformanceEntryType, PerformanceEntryTypeMap, PerformanceObserveInit, PerformanceObserverCallback, PerformanceObserverControls, PerformanceObserverEntryListLike, PerformanceObserverHost, PerformanceObserverLike, ResourceTimingEntryLike, ResourceTimingFieldsLike, UsePerformanceObserverOptions, usePerformanceObserver };
@@ -0,0 +1,132 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { computed, hasInjectionContext, readonly, shallowRef, toValue, unref, watch, watchPostEffect } from "vue";
3
+ //#region src/use-performance-observer.ts
4
+ function isPerformanceObserverHost(candidate) {
5
+ return typeof candidate === "function";
6
+ }
7
+ function browserPerformanceObserver() {
8
+ if (typeof window === "undefined") return void 0;
9
+ const candidate = Reflect.get(window, "PerformanceObserver");
10
+ return isPerformanceObserverHost(candidate) ? candidate : void 0;
11
+ }
12
+ function isEntryOf(entry, types) {
13
+ return types.some((type) => type === entry.entryType);
14
+ }
15
+ /**
16
+ * Observe performance entries with callbacks typed by entry type.
17
+ *
18
+ * Each supported type is observed with its own `observe({ type })` call so
19
+ * `buffered` and `durationThreshold` apply. Types missing from
20
+ * `PerformanceObserver.supportedEntryTypes` are skipped; `supported` is false
21
+ * when none remain. The observer follows reactive `entryTypes` and is
22
+ * disconnected when the owning reactive scope stops; outside a scope the
23
+ * caller owns `stop()`.
24
+ *
25
+ * Server rendering: no observer is created and `supported` is false. Inside
26
+ * a component the observer connects after mounting, so hydration renders the
27
+ * server state first.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * usePerformanceObserver("largest-contentful-paint", (entries) => {
32
+ * console.log(entries.at(-1)?.renderTime);
33
+ * }, { buffered: true });
34
+ * ```
35
+ *
36
+ * @param entryTypes One entry type or a list of them.
37
+ * @param callback Receives batches of typed entries.
38
+ * @param options Constructor host and observation options.
39
+ * @default options {}
40
+ * @returns Observer state and actions.
41
+ */
42
+ function usePerformanceObserver(entryTypes, callback, options = {}) {
43
+ const { durationThreshold } = options;
44
+ if (durationThreshold !== void 0 && (!Number.isFinite(durationThreshold) || durationThreshold < 0)) throw new RangeError(`[VIZE_COMPOSE_PERF_OBSERVER_INVALID_DURATION_THRESHOLD] durationThreshold must be a finite, non-negative number, received ${String(durationThreshold)}`);
45
+ const isActive = shallowRef(false);
46
+ const error = shallowRef(void 0);
47
+ let observer;
48
+ const hydrated = shallowRef(!hasInjectionContext());
49
+ if (!hydrated.value) watchPostEffect(() => {
50
+ hydrated.value = true;
51
+ });
52
+ const resolveHost = () => {
53
+ if (!hydrated.value) return void 0;
54
+ return options.PerformanceObserver === void 0 ? browserPerformanceObserver() : unref(options.PerformanceObserver) ?? void 0;
55
+ };
56
+ const requestedTypes = () => {
57
+ const value = toValue(entryTypes);
58
+ return typeof value === "string" ? [value] : [...new Set(value)];
59
+ };
60
+ const observedTypes = computed(() => {
61
+ const host = resolveHost();
62
+ if (!host) return [];
63
+ const supportedTypes = host.supportedEntryTypes;
64
+ const requested = requestedTypes();
65
+ return supportedTypes ? requested.filter((type) => supportedTypes.includes(type)) : requested;
66
+ });
67
+ const disconnect = () => {
68
+ observer?.disconnect();
69
+ observer = void 0;
70
+ isActive.value = false;
71
+ };
72
+ const connect = () => {
73
+ disconnect();
74
+ const host = resolveHost();
75
+ const types = observedTypes.value;
76
+ if (!host || types.length === 0) return;
77
+ error.value = void 0;
78
+ const next = new host((list, current) => {
79
+ const entries = list.getEntries().filter((entry) => isEntryOf(entry, types));
80
+ if (entries.length > 0) callback(entries, current);
81
+ });
82
+ let observing = 0;
83
+ for (const type of types) try {
84
+ next.observe({
85
+ type,
86
+ ...options.buffered === void 0 ? {} : { buffered: options.buffered },
87
+ ...type === "event" && durationThreshold !== void 0 ? { durationThreshold } : {}
88
+ });
89
+ observing += 1;
90
+ } catch (cause) {
91
+ error.value = cause;
92
+ }
93
+ if (observing === 0) {
94
+ next.disconnect();
95
+ return;
96
+ }
97
+ observer = next;
98
+ isActive.value = true;
99
+ };
100
+ let enabled = options.immediate ?? true;
101
+ const stopWatch = watch(() => [resolveHost(), observedTypes.value.join(" ")], () => {
102
+ if (enabled) connect();
103
+ }, {
104
+ immediate: true,
105
+ flush: "sync"
106
+ });
107
+ const stop = () => {
108
+ enabled = false;
109
+ disconnect();
110
+ };
111
+ tryOnScopeDispose(() => {
112
+ stopWatch();
113
+ stop();
114
+ });
115
+ return {
116
+ supported: computed(() => observedTypes.value.length > 0),
117
+ observedTypes,
118
+ isActive: readonly(isActive),
119
+ error: readonly(error),
120
+ start: () => {
121
+ enabled = true;
122
+ connect();
123
+ },
124
+ stop,
125
+ takeRecords: () => {
126
+ const types = observedTypes.value;
127
+ return observer ? observer.takeRecords().filter((entry) => isEntryOf(entry, types)) : [];
128
+ }
129
+ };
130
+ }
131
+ //#endregion
132
+ export { usePerformanceObserver };