@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
@@ -1,2 +1,2 @@
1
- import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-D2AL3xYl.mjs";
1
+ import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-BeTXFKxF.mjs";
2
2
  export { COMPOSABLE_CATALOG, type ComposableCatalog, type ComposableCategory, type ComposableCleanupOwner, type ComposableEntryMetadata, type ComposableHydrationBehavior, type ComposableInstallationAvailability, type ComposableRootEntryMetadata, type ComposableSsrBehavior, type ComposableStability, type ComposableUtilityMetadata };
package/dist/catalog.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as COMPOSABLE_CATALOG } from "./catalog-D5SYCsgW.mjs";
1
+ import { t as COMPOSABLE_CATALOG } from "./catalog-r4Z5nptX.mjs";
2
2
  export { COMPOSABLE_CATALOG };
@@ -0,0 +1,131 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { MediaQueryHost } from "./media-query.mjs";
3
+ import { StorageLike } from "./use-storage.mjs";
4
+ import { ComputedRef, MaybeRefOrGetter, WritableComputedRef } from "vue";
5
+
6
+ //#region src/color-mode.d.ts
7
+ /** Built-in color modes. */
8
+ type BasicColorMode = "light" | "dark";
9
+ /** Selectable mode: a built-in mode, a custom mode, or `"auto"` (follow the system). */
10
+ type ColorModeValue<Custom extends string = never> = BasicColorMode | Custom | "auto";
11
+ /**
12
+ * Synchronous key-value persistence used by {@link useColorMode}.
13
+ *
14
+ * The read/write subset of `StorageLike` from `./use-storage`, so
15
+ * `localStorage`, `sessionStorage`, and the same adapters work for both. For
16
+ * hydration-stable SSR pass a cookie-backed adapter that reads the request
17
+ * cookie on the server and `document.cookie` on the client.
18
+ */
19
+ type ColorModeStorage = Pick<StorageLike, "getItem" | "setItem">;
20
+ /** Options for {@link useColorMode}. */
21
+ interface UseColorModeOptions<Custom extends string = never> {
22
+ /**
23
+ * Class name (or attribute value) written for each mode. Custom modes must
24
+ * be listed here.
25
+ *
26
+ * @default { light: "light", dark: "dark" }
27
+ */
28
+ readonly modes?: Readonly<Partial<Record<BasicColorMode, string>> & Record<Custom, string>>;
29
+ /**
30
+ * `"class"` toggles class names; any other value is used as an attribute
31
+ * name (e.g. `"data-theme"`).
32
+ *
33
+ * @default "class"
34
+ */
35
+ readonly attribute?: string;
36
+ /**
37
+ * Element that receives the class/attribute.
38
+ *
39
+ * @default document.documentElement when available
40
+ */
41
+ readonly target?: MaybeElementTarget;
42
+ /**
43
+ * Mode used when nothing is stored.
44
+ *
45
+ * @default "auto"
46
+ */
47
+ readonly initialValue?: ColorModeValue<Custom>;
48
+ /**
49
+ * Storage key. `null` disables persistence.
50
+ *
51
+ * @default "vize-color-mode"
52
+ */
53
+ readonly storageKey?: string | null;
54
+ /**
55
+ * Persistence adapter. `null` disables persistence.
56
+ *
57
+ * @default globalThis.window.localStorage when available
58
+ */
59
+ readonly storage?: ColorModeStorage | null;
60
+ /**
61
+ * System preference assumed while no media capability exists (server rendering).
62
+ *
63
+ * @default "light"
64
+ */
65
+ readonly ssrSystem?: BasicColorMode;
66
+ /**
67
+ * Suppress CSS transitions for one frame while switching modes.
68
+ *
69
+ * @default true
70
+ */
71
+ readonly disableTransition?: boolean;
72
+ /**
73
+ * Media capability used to read `prefers-color-scheme`.
74
+ *
75
+ * @default globalThis.window when available
76
+ */
77
+ readonly host?: MaybeRefOrGetter<MediaQueryHost | null | undefined>;
78
+ }
79
+ /** Reactive color mode returned by {@link useColorMode}. */
80
+ interface ColorModeControls<Custom extends string> {
81
+ /** Selected mode, including `"auto"`. Assigning persists and applies it. */
82
+ readonly mode: WritableComputedRef<ColorModeValue<Custom>>;
83
+ /** System preference from `prefers-color-scheme`. */
84
+ readonly system: ComputedRef<BasicColorMode>;
85
+ /** Resolved mode (`"auto"` replaced by the system preference). */
86
+ readonly state: ComputedRef<BasicColorMode | Custom>;
87
+ /** Value read from storage at creation (or the initial value). */
88
+ readonly stored: ComputedRef<ColorModeValue<Custom>>;
89
+ }
90
+ /**
91
+ * Reactive color mode with persistence and DOM application.
92
+ *
93
+ * The stored mode is read synchronously during setup through the injected
94
+ * storage, so a cookie adapter yields identical server and client renders.
95
+ * On the client the resolved mode is written to the target's class list (or
96
+ * attribute) after each change, optionally with transitions suppressed.
97
+ * Nothing touches the DOM during server rendering.
98
+ *
99
+ * @param options Modes, target, persistence, SSR fallback, and capabilities.
100
+ * @default options {}
101
+ * @returns Writable mode plus system and resolved state.
102
+ */
103
+ declare function useColorMode<const Custom extends string = never>(options?: UseColorModeOptions<Custom>): ColorModeControls<Custom>;
104
+ /** Options for {@link useDark}. */
105
+ interface UseDarkOptions extends Omit<UseColorModeOptions, "modes"> {
106
+ /**
107
+ * Class/attribute value applied in dark mode.
108
+ *
109
+ * @default "dark"
110
+ */
111
+ readonly valueDark?: string;
112
+ /**
113
+ * Class/attribute value applied in light mode.
114
+ *
115
+ * @default ""
116
+ */
117
+ readonly valueLight?: string;
118
+ }
119
+ /**
120
+ * Boolean dark-mode switch built on {@link useColorMode}.
121
+ *
122
+ * Setting the ref to the current system preference stores `"auto"`, so the
123
+ * page keeps following the system until the user picks the opposite mode.
124
+ *
125
+ * @param options Dark/light values plus {@link useColorMode} options.
126
+ * @default options {}
127
+ * @returns Writable dark flag.
128
+ */
129
+ declare function useDark(options?: UseDarkOptions): WritableComputedRef<boolean>;
130
+ //#endregion
131
+ export { BasicColorMode, ColorModeControls, ColorModeStorage, ColorModeValue, UseColorModeOptions, UseDarkOptions, useColorMode, useDark };
@@ -0,0 +1,133 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElement } from "./element-target.mjs";
3
+ import { useMediaQuery } from "./media-query.mjs";
4
+ import { computed, hasInjectionContext, onMounted, shallowRef, watch } from "vue";
5
+ //#region src/color-mode.ts
6
+ /**
7
+ * Reactive color mode with persistence and DOM application.
8
+ *
9
+ * The stored mode is read synchronously during setup through the injected
10
+ * storage, so a cookie adapter yields identical server and client renders.
11
+ * On the client the resolved mode is written to the target's class list (or
12
+ * attribute) after each change, optionally with transitions suppressed.
13
+ * Nothing touches the DOM during server rendering.
14
+ *
15
+ * @param options Modes, target, persistence, SSR fallback, and capabilities.
16
+ * @default options {}
17
+ * @returns Writable mode plus system and resolved state.
18
+ */
19
+ function useColorMode(options = {}) {
20
+ const modes = {
21
+ light: "light",
22
+ dark: "dark",
23
+ ...options.modes
24
+ };
25
+ const attribute = options.attribute ?? "class";
26
+ const storageKey = options.storageKey === void 0 ? "vize-color-mode" : options.storageKey;
27
+ const storage = options.storage === void 0 ? browserStorage() : options.storage;
28
+ const initial = options.initialValue ?? "auto";
29
+ const isMode = (value) => value === "auto" || value !== null && Object.hasOwn(modes, value);
30
+ const read = () => {
31
+ if (!storage || storageKey === null) return initial;
32
+ try {
33
+ const value = storage.getItem(storageKey);
34
+ return isMode(value) ? value : initial;
35
+ } catch {
36
+ return initial;
37
+ }
38
+ };
39
+ const deferRead = hasInjectionContext();
40
+ const storedValue = shallowRef(deferRead ? initial : read());
41
+ const selectedRaw = shallowRef(storedValue.value);
42
+ if (deferRead) onMounted(() => {
43
+ const value = read();
44
+ storedValue.value = value;
45
+ if (selectedRaw.value === initial) selectedRaw.value = value;
46
+ });
47
+ const selected = computed(() => isMode(selectedRaw.value) ? selectedRaw.value : initial);
48
+ const prefersDark = useMediaQuery("(prefers-color-scheme: dark)", options.host === void 0 ? { ssrValue: options.ssrSystem === "dark" } : {
49
+ ssrValue: options.ssrSystem === "dark",
50
+ host: options.host
51
+ });
52
+ const system = computed(() => prefersDark.value ? "dark" : "light");
53
+ const state = computed(() => selected.value === "auto" ? system.value : selected.value);
54
+ const target = () => options.target === void 0 ? typeof document !== "undefined" ? document.documentElement : null : resolveElement(options.target);
55
+ const stop = watch([state, target], ([resolved, element]) => {
56
+ if (!element) return;
57
+ const restore = options.disableTransition === false ? void 0 : suppressTransitions(element);
58
+ const value = modes[resolved] ?? resolved;
59
+ if (attribute === "class") {
60
+ for (const name of Object.values(modes)) for (const token of name.split(/\s+/)) if (token) element.classList.remove(token);
61
+ for (const token of value.split(/\s+/)) if (token) element.classList.add(token);
62
+ } else element.setAttribute(attribute, value);
63
+ restore?.();
64
+ }, {
65
+ immediate: true,
66
+ flush: "post"
67
+ });
68
+ tryOnScopeDispose(() => stop.stop());
69
+ return {
70
+ mode: computed({
71
+ get: () => selected.value,
72
+ set: (next) => {
73
+ selectedRaw.value = next;
74
+ if (!storage || storageKey === null) return;
75
+ try {
76
+ storage.setItem(storageKey, next);
77
+ } catch {}
78
+ }
79
+ }),
80
+ system,
81
+ state,
82
+ stored: computed(() => storedValue.value)
83
+ };
84
+ }
85
+ /**
86
+ * Boolean dark-mode switch built on {@link useColorMode}.
87
+ *
88
+ * Setting the ref to the current system preference stores `"auto"`, so the
89
+ * page keeps following the system until the user picks the opposite mode.
90
+ *
91
+ * @param options Dark/light values plus {@link useColorMode} options.
92
+ * @default options {}
93
+ * @returns Writable dark flag.
94
+ */
95
+ function useDark(options = {}) {
96
+ const { valueDark = "dark", valueLight = "", ...rest } = options;
97
+ const colorMode = useColorMode({
98
+ ...rest,
99
+ modes: {
100
+ dark: valueDark,
101
+ light: valueLight
102
+ }
103
+ });
104
+ return computed({
105
+ get: () => colorMode.state.value === "dark",
106
+ set: (dark) => {
107
+ const preferred = dark ? "dark" : "light";
108
+ colorMode.mode.value = preferred === colorMode.system.value ? "auto" : preferred;
109
+ }
110
+ });
111
+ }
112
+ function suppressTransitions(element) {
113
+ const document = element.ownerDocument;
114
+ const head = document?.head;
115
+ if (!head || typeof document.createElement !== "function") return void 0;
116
+ const style = document.createElement("style");
117
+ style.textContent = "*,*::before,*::after{transition:none!important}";
118
+ head.appendChild(style);
119
+ return () => {
120
+ document.defaultView?.getComputedStyle(style).opacity;
121
+ style.remove();
122
+ };
123
+ }
124
+ function browserStorage() {
125
+ if (typeof window === "undefined") return null;
126
+ try {
127
+ return window.localStorage;
128
+ } catch {
129
+ return null;
130
+ }
131
+ }
132
+ //#endregion
133
+ export { useColorMode, useDark };
@@ -0,0 +1,63 @@
1
+ import { Ref } from "vue";
2
+
3
+ //#region src/computed-async.d.ts
4
+ /** Registers a callback run when the current evaluation becomes stale. */
5
+ type ComputedAsyncCancel = (onCancel: () => void) => void;
6
+ /** Context handed to a {@link computedAsync} evaluator. */
7
+ interface ComputedAsyncContext {
8
+ /** Aborted as soon as a newer evaluation starts or the scope stops. */
9
+ readonly signal: AbortSignal;
10
+ /** Register a callback for when this evaluation becomes stale. */
11
+ readonly onCancel: ComputedAsyncCancel;
12
+ }
13
+ /** Options for {@link computedAsync}. */
14
+ interface ComputedAsyncOptions {
15
+ /**
16
+ * Defer the first evaluation until the value is read.
17
+ *
18
+ * @default false
19
+ */
20
+ readonly lazy?: boolean;
21
+ /**
22
+ * Ref that is `true` while an evaluation is in flight.
23
+ *
24
+ * @default an internal ref
25
+ */
26
+ readonly evaluating?: Ref<boolean>;
27
+ /**
28
+ * Receives evaluator failures; the previous value is kept.
29
+ *
30
+ * @default undefined (failures are dropped)
31
+ */
32
+ readonly onError?: (error: unknown) => void;
33
+ }
34
+ /**
35
+ * Computed value backed by an async evaluator.
36
+ *
37
+ * Reactive dependencies read synchronously in the evaluator (before its
38
+ * first `await`) are tracked; when one changes, the previous evaluation is
39
+ * cancelled (its `signal` aborts and `onCancel` callbacks run) and a new one
40
+ * starts. Only the newest evaluation may write the result, so out-of-order
41
+ * responses can never win. The value holds `initial` until the first
42
+ * evaluation settles, which also keeps server and client markup identical
43
+ * during hydration (the server never waits for the promise). Results are
44
+ * stored shallowly: replace the value instead of mutating it.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const user = computedAsync(
49
+ * async ({ signal }) => (await fetch(`/users/${id.value}`, { signal })).json(),
50
+ * null,
51
+ * );
52
+ * ```
53
+ *
54
+ * @param evaluator Async (or sync) producer of the value.
55
+ * @param initial Value before the first evaluation settles.
56
+ * @param options Laziness, evaluating flag, and error hook.
57
+ * @default options {}
58
+ * @returns Readonly ref holding the newest settled value.
59
+ */
60
+ declare function computedAsync<Value>(evaluator: (context: ComputedAsyncContext) => Value | Promise<Value>, initial: Value, options?: ComputedAsyncOptions): Readonly<Ref<Value>>;
61
+ declare function computedAsync<Value>(evaluator: (context: ComputedAsyncContext) => Value | Promise<Value>, initial?: undefined, options?: ComputedAsyncOptions): Readonly<Ref<Value | undefined>>;
62
+ //#endregion
63
+ export { ComputedAsyncCancel, ComputedAsyncContext, ComputedAsyncOptions, computedAsync };
@@ -0,0 +1,43 @@
1
+ import { computed, shallowRef, watchEffect } from "vue";
2
+ //#region src/computed-async.ts
3
+ function computedAsync(evaluator, initial, options = {}) {
4
+ const started = shallowRef(!(options.lazy ?? false));
5
+ const current = shallowRef(initial);
6
+ const evaluating = options.evaluating ?? shallowRef(false);
7
+ let generation = 0;
8
+ watchEffect(async (onCleanup) => {
9
+ if (!started.value) return;
10
+ generation += 1;
11
+ const own = generation;
12
+ const controller = new AbortController();
13
+ const cancelCallbacks = [];
14
+ let settled = false;
15
+ onCleanup(() => {
16
+ if (settled) return;
17
+ controller.abort();
18
+ for (const callback of cancelCallbacks) callback();
19
+ });
20
+ evaluating.value = true;
21
+ try {
22
+ const result = await evaluator({
23
+ signal: controller.signal,
24
+ onCancel: (callback) => {
25
+ cancelCallbacks.push(callback);
26
+ }
27
+ });
28
+ if (own === generation) current.value = result;
29
+ } catch (error) {
30
+ if (own === generation) options.onError?.(error);
31
+ } finally {
32
+ settled = true;
33
+ if (own === generation) evaluating.value = false;
34
+ }
35
+ });
36
+ if (options.lazy ?? false) return computed(() => {
37
+ started.value = true;
38
+ return current.value;
39
+ });
40
+ return current;
41
+ }
42
+ //#endregion
43
+ export { computedAsync };
@@ -0,0 +1,44 @@
1
+ import { Ref, WatchSource } from "vue";
2
+
3
+ //#region src/computed-with-control.d.ts
4
+ /** Readonly cached value plus a manual invalidation trigger. */
5
+ interface ComputedWithControl<Value> extends Readonly<Ref<Value>> {
6
+ /** Mark the cached value stale; the next read recomputes it. */
7
+ readonly trigger: () => void;
8
+ }
9
+ /** Explicit dependency accepted by {@link computedWithControl}: anything Vue's `watch` accepts. */
10
+ type ComputedWithControlSource = WatchSource<unknown> | object | readonly (WatchSource<unknown> | object)[];
11
+ /** Options for {@link computedWithControl}. */
12
+ interface ComputedWithControlOptions {
13
+ /**
14
+ * Invalidate on nested changes of the explicit sources.
15
+ *
16
+ * @default false
17
+ */
18
+ readonly deep?: boolean;
19
+ }
20
+ /**
21
+ * Computed value whose dependencies are declared explicitly.
22
+ *
23
+ * Only changes of `source` (or a manual {@link ComputedWithControl.trigger})
24
+ * invalidate the cache; reactive reads inside `getter` do not. Useful when
25
+ * the getter reads non-reactive data or should ignore some reactive reads.
26
+ * The getter receives the previous value and runs lazily on the next read.
27
+ * Pure derived state: SSR-safe; the invalidation watcher follows the owning
28
+ * reactive scope.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const snapshot = computedWithControl(version, () => expensiveRead(store));
33
+ * snapshot.trigger(); // force a refresh
34
+ * ```
35
+ *
36
+ * @param source Ref, getter, reactive object, or tuple of those.
37
+ * @param getter Produces the value from the previous one.
38
+ * @param options Depth of the source watch.
39
+ * @default options {}
40
+ * @returns The controlled computed ref.
41
+ */
42
+ declare function computedWithControl<Value>(source: ComputedWithControlSource, getter: (previous: Value | undefined) => Value, options?: ComputedWithControlOptions): ComputedWithControl<Value>;
43
+ //#endregion
44
+ export { ComputedWithControl, ComputedWithControlOptions, ComputedWithControlSource, computedWithControl };
@@ -0,0 +1,54 @@
1
+ import { customRef, watch } from "vue";
2
+ //#region src/computed-with-control.ts
3
+ /**
4
+ * Computed value whose dependencies are declared explicitly.
5
+ *
6
+ * Only changes of `source` (or a manual {@link ComputedWithControl.trigger})
7
+ * invalidate the cache; reactive reads inside `getter` do not. Useful when
8
+ * the getter reads non-reactive data or should ignore some reactive reads.
9
+ * The getter receives the previous value and runs lazily on the next read.
10
+ * Pure derived state: SSR-safe; the invalidation watcher follows the owning
11
+ * reactive scope.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const snapshot = computedWithControl(version, () => expensiveRead(store));
16
+ * snapshot.trigger(); // force a refresh
17
+ * ```
18
+ *
19
+ * @param source Ref, getter, reactive object, or tuple of those.
20
+ * @param getter Produces the value from the previous one.
21
+ * @param options Depth of the source watch.
22
+ * @default options {}
23
+ * @returns The controlled computed ref.
24
+ */
25
+ function computedWithControl(source, getter, options = {}) {
26
+ let dirty = true;
27
+ let cached;
28
+ let notify = () => void 0;
29
+ const invalidate = () => {
30
+ dirty = true;
31
+ notify();
32
+ };
33
+ watch(source, invalidate, {
34
+ flush: "sync",
35
+ deep: options.deep ?? false
36
+ });
37
+ const value = customRef((track, trigger) => {
38
+ notify = trigger;
39
+ return {
40
+ get: () => {
41
+ track();
42
+ if (dirty || cached === void 0) {
43
+ cached = { value: getter(cached?.value) };
44
+ dirty = false;
45
+ }
46
+ return cached.value;
47
+ },
48
+ set: () => void 0
49
+ };
50
+ });
51
+ return Object.assign(value, { trigger: invalidate });
52
+ }
53
+ //#endregion
54
+ export { computedWithControl };
@@ -0,0 +1,77 @@
1
+ //#region src/create-event-hook.d.ts
2
+ /** Listener registered on an {@link EventHook}. */
3
+ type EventHookListener<Arguments extends readonly unknown[]> = (...args: Arguments) => unknown;
4
+ /** Registration handle returned by {@link EventHook.on}. */
5
+ interface EventHookSubscription {
6
+ /** Remove the listener. Idempotent. */
7
+ readonly off: () => void;
8
+ }
9
+ /** Options for {@link createEventHook}. */
10
+ interface CreateEventHookOptions {
11
+ /**
12
+ * What `on()` does when a hook created outside any component (a
13
+ * module-level hook shared by every request) is subscribed to from a
14
+ * component `setup` during server rendering. Vue never disposes server
15
+ * component scopes, so such listeners would accumulate across requests
16
+ * and keep every rendered component alive.
17
+ *
18
+ * - `"ignore"`: skip the registration (the returned `off` is a no-op) and
19
+ * warn once in development.
20
+ * - `"register"`: register anyway; the caller must call `off()`.
21
+ *
22
+ * Hooks created inside a component (request-local hooks) are unaffected.
23
+ *
24
+ * @default "ignore"
25
+ */
26
+ readonly serverListeners?: "ignore" | "register";
27
+ }
28
+ /** Typed event emitter created by {@link createEventHook}. */
29
+ interface EventHook<Arguments extends readonly unknown[] = []> {
30
+ /**
31
+ * Add a listener. Inside an effect scope it is removed automatically when
32
+ * the scope stops. Adding the same function twice registers it once.
33
+ */
34
+ readonly on: (listener: EventHookListener<Arguments>) => EventHookSubscription;
35
+ /** Remove a listener. */
36
+ readonly off: (listener: EventHookListener<Arguments>) => void;
37
+ /**
38
+ * Call every listener with `args`, in registration order.
39
+ *
40
+ * @returns Settles with every listener's (awaited) result.
41
+ */
42
+ readonly trigger: (...args: Arguments) => Promise<unknown[]>;
43
+ /** Remove every listener. */
44
+ readonly clear: () => void;
45
+ /** Number of registered listeners. */
46
+ readonly size: () => number;
47
+ }
48
+ /**
49
+ * Create a small, strongly typed event emitter.
50
+ *
51
+ * The payload is a tuple type, so events can carry several named arguments
52
+ * (`createEventHook<[id: string, value: number]>()`) and `trigger` checks
53
+ * them. Listeners registered inside an effect scope unsubscribe themselves
54
+ * when it stops. Synchronous listener errors propagate from `trigger`;
55
+ * async rejections reject the returned promise.
56
+ *
57
+ * SSR: Vue does not dispose component scopes after a server render, so a
58
+ * listener that a server `setup` adds to a module-level hook would never be
59
+ * removed and would pile up once per request. By default such registrations
60
+ * are therefore skipped (with a one-time development warning); see
61
+ * {@link CreateEventHookOptions.serverListeners}. Hooks created inside a
62
+ * component, and every registration in the browser, behave normally.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const saved = createEventHook<[id: string]>();
67
+ * saved.on((id) => toast(`Saved ${id}`));
68
+ * await saved.trigger("doc-1");
69
+ * ```
70
+ *
71
+ * @param options Server-side registration policy.
72
+ * @default options {}
73
+ * @returns The event hook.
74
+ */
75
+ declare function createEventHook<Arguments extends readonly unknown[] = []>(options?: CreateEventHookOptions): EventHook<Arguments>;
76
+ //#endregion
77
+ export { CreateEventHookOptions, EventHook, EventHookListener, EventHookSubscription, createEventHook };
@@ -0,0 +1,66 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { hasInjectionContext } from "vue";
3
+ //#region src/create-event-hook.ts
4
+ /**
5
+ * Create a small, strongly typed event emitter.
6
+ *
7
+ * The payload is a tuple type, so events can carry several named arguments
8
+ * (`createEventHook<[id: string, value: number]>()`) and `trigger` checks
9
+ * them. Listeners registered inside an effect scope unsubscribe themselves
10
+ * when it stops. Synchronous listener errors propagate from `trigger`;
11
+ * async rejections reject the returned promise.
12
+ *
13
+ * SSR: Vue does not dispose component scopes after a server render, so a
14
+ * listener that a server `setup` adds to a module-level hook would never be
15
+ * removed and would pile up once per request. By default such registrations
16
+ * are therefore skipped (with a one-time development warning); see
17
+ * {@link CreateEventHookOptions.serverListeners}. Hooks created inside a
18
+ * component, and every registration in the browser, behave normally.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const saved = createEventHook<[id: string]>();
23
+ * saved.on((id) => toast(`Saved ${id}`));
24
+ * await saved.trigger("doc-1");
25
+ * ```
26
+ *
27
+ * @param options Server-side registration policy.
28
+ * @default options {}
29
+ * @returns The event hook.
30
+ */
31
+ function createEventHook(options = {}) {
32
+ const listeners = /* @__PURE__ */ new Set();
33
+ const shared = !hasInjectionContext();
34
+ let warned = false;
35
+ const off = (listener) => {
36
+ listeners.delete(listener);
37
+ };
38
+ const on = (listener) => {
39
+ if (shared && (options.serverListeners ?? "ignore") === "ignore" && typeof window === "undefined" && hasInjectionContext()) {
40
+ if (!warned && isDevelopment()) {
41
+ warned = true;
42
+ console.warn("[VIZE_COMPOSE_EVENT_HOOK_SERVER_LISTENER] a module-level event hook was subscribed to during server rendering; the listener was skipped because server component scopes are never disposed. Create the hook inside the component tree, or pass { serverListeners: \"register\" } and call off() yourself.");
43
+ }
44
+ return { off: () => void 0 };
45
+ }
46
+ listeners.add(listener);
47
+ const subscription = { off: () => off(listener) };
48
+ tryOnScopeDispose(subscription.off);
49
+ return subscription;
50
+ };
51
+ const trigger = (...args) => Promise.all([...listeners].map((listener) => listener(...args)));
52
+ return {
53
+ on,
54
+ off,
55
+ trigger,
56
+ clear: () => {
57
+ listeners.clear();
58
+ },
59
+ size: () => listeners.size
60
+ };
61
+ }
62
+ function isDevelopment() {
63
+ return typeof process === "undefined" || process.env["NODE_ENV"] !== "production";
64
+ }
65
+ //#endregion
66
+ export { createEventHook };
@@ -0,0 +1,24 @@
1
+ //#region src/create-global-state.d.ts
2
+ /**
3
+ * Lift a state factory into application-wide state shared by every caller.
4
+ *
5
+ * The factory runs once, lazily on the first call, inside a detached effect
6
+ * scope so its watchers and computeds outlive any component; every later
7
+ * call returns the same state. Because the state is module-level, it is
8
+ * shared across all server requests: on the server, keep per-request state
9
+ * in `provide`/`createInjectionState` instead, or reset it per request.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const useSession = createGlobalState(() => ({ user: shallowRef<User | null>(null) }));
14
+ * useSession().user.value = currentUser;
15
+ * ```
16
+ *
17
+ * @param factory Creates the state; may use any composable.
18
+ * @throws `Error` tagged `VIZE_COMPOSE_GLOBAL_STATE_INACTIVE_SCOPE` if the
19
+ * private scope cannot run (never expected in practice).
20
+ * @returns Accessor returning the shared state.
21
+ */
22
+ declare function createGlobalState<State>(factory: () => State): () => State;
23
+ //#endregion
24
+ export { createGlobalState };