@vizejs/composable 0.426.3 → 0.428.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/dist/abort-signal.d.mts +1 -1
  2. package/dist/active-element.d.mts +37 -0
  3. package/dist/active-element.mjs +56 -0
  4. package/dist/animate.d.mts +114 -0
  5. package/dist/animate.mjs +157 -0
  6. package/dist/battery.d.mts +61 -0
  7. package/dist/battery.mjs +90 -0
  8. package/dist/breakpoints.d.mts +82 -0
  9. package/dist/breakpoints.mjs +91 -0
  10. package/dist/catalog-BeTXFKxF.d.mts +4188 -0
  11. package/dist/catalog-r4Z5nptX.mjs +5144 -0
  12. package/dist/catalog.d.mts +1 -1
  13. package/dist/catalog.mjs +1 -1
  14. package/dist/color-mode.d.mts +131 -0
  15. package/dist/color-mode.mjs +133 -0
  16. package/dist/computed-async.d.mts +63 -0
  17. package/dist/computed-async.mjs +43 -0
  18. package/dist/computed-with-control.d.mts +44 -0
  19. package/dist/computed-with-control.mjs +54 -0
  20. package/dist/create-event-hook.d.mts +77 -0
  21. package/dist/create-event-hook.mjs +66 -0
  22. package/dist/create-global-state.d.mts +24 -0
  23. package/dist/create-global-state.mjs +34 -0
  24. package/dist/create-injection-state.d.mts +51 -0
  25. package/dist/create-injection-state.mjs +19 -0
  26. package/dist/create-shared-composable.d.mts +38 -0
  27. package/dist/create-shared-composable.mjs +54 -0
  28. package/dist/device-motion.d.mts +71 -0
  29. package/dist/device-motion.mjs +75 -0
  30. package/dist/device-orientation.d.mts +82 -0
  31. package/dist/device-orientation.mjs +86 -0
  32. package/dist/device-pixel-ratio.d.mts +45 -0
  33. package/dist/device-pixel-ratio.mjs +50 -0
  34. package/dist/document-visibility.mjs +6 -2
  35. package/dist/draggable.d.mts +121 -0
  36. package/dist/draggable.mjs +153 -0
  37. package/dist/element-bounding.d.mts +87 -0
  38. package/dist/element-bounding.mjs +95 -0
  39. package/dist/element-by-point.d.mts +70 -0
  40. package/dist/element-by-point.mjs +69 -0
  41. package/dist/element-hover.d.mts +42 -0
  42. package/dist/element-hover.mjs +70 -0
  43. package/dist/element-ref.d.mts +34 -0
  44. package/dist/element-ref.mjs +23 -0
  45. package/dist/element-target-Crpxl4D9.d.mts +60 -0
  46. package/dist/element-target.d.mts +2 -0
  47. package/dist/element-target.mjs +58 -0
  48. package/dist/event-listener.mjs +7 -3
  49. package/dist/focus.d.mts +69 -0
  50. package/dist/focus.mjs +124 -0
  51. package/dist/fps.d.mts +59 -0
  52. package/dist/fps.mjs +64 -0
  53. package/dist/geolocation.d.mts +98 -0
  54. package/dist/geolocation.mjs +86 -0
  55. package/dist/i18n.d.mts +237 -0
  56. package/dist/i18n.mjs +215 -0
  57. package/dist/icu-message.d.mts +235 -0
  58. package/dist/icu-message.mjs +343 -0
  59. package/dist/idle.d.mts +79 -0
  60. package/dist/idle.mjs +90 -0
  61. package/dist/index.d.mts +172 -6
  62. package/dist/index.mjs +173 -7
  63. package/dist/infinite-scroll.d.mts +56 -0
  64. package/dist/infinite-scroll.mjs +72 -0
  65. package/dist/intersection-observer.d.mts +122 -0
  66. package/dist/intersection-observer.mjs +117 -0
  67. package/dist/magic-keys.d.mts +121 -0
  68. package/dist/magic-keys.mjs +163 -0
  69. package/dist/math.d.mts +96 -0
  70. package/dist/math.mjs +84 -0
  71. package/dist/media-query.d.mts +3 -1
  72. package/dist/media-query.mjs +5 -3
  73. package/dist/mouse-in-element.d.mts +49 -0
  74. package/dist/mouse-in-element.mjs +66 -0
  75. package/dist/mouse.d.mts +77 -0
  76. package/dist/mouse.mjs +100 -0
  77. package/dist/mutation-observer.d.mts +98 -0
  78. package/dist/mutation-observer.mjs +69 -0
  79. package/dist/network.d.mts +96 -0
  80. package/dist/network.mjs +117 -0
  81. package/dist/on-click-outside.d.mts +69 -0
  82. package/dist/on-click-outside.mjs +115 -0
  83. package/dist/on-key-stroke.d.mts +71 -0
  84. package/dist/on-key-stroke.mjs +79 -0
  85. package/dist/on-long-press.d.mts +82 -0
  86. package/dist/on-long-press.mjs +105 -0
  87. package/dist/on-start-typing.d.mts +44 -0
  88. package/dist/on-start-typing.mjs +61 -0
  89. package/dist/page-leave.d.mts +26 -0
  90. package/dist/page-leave.mjs +40 -0
  91. package/dist/parent-element.d.mts +16 -0
  92. package/dist/parent-element.mjs +27 -0
  93. package/dist/pinch.d.mts +73 -0
  94. package/dist/pinch.mjs +138 -0
  95. package/dist/pointer-lock.d.mts +79 -0
  96. package/dist/pointer-lock.mjs +126 -0
  97. package/dist/pointer.d.mts +78 -0
  98. package/dist/pointer.mjs +95 -0
  99. package/dist/preferences.d.mts +55 -0
  100. package/dist/preferences.mjs +63 -0
  101. package/dist/preferred-languages.d.mts +43 -0
  102. package/dist/preferred-languages.mjs +44 -0
  103. package/dist/reactify.d.mts +28 -0
  104. package/dist/reactify.mjs +7 -0
  105. package/dist/ref-auto-reset.d.mts +47 -0
  106. package/dist/ref-auto-reset.mjs +70 -0
  107. package/dist/ref-debounced.d.mts +29 -0
  108. package/dist/ref-debounced.mjs +29 -0
  109. package/dist/ref-default.d.mts +27 -0
  110. package/dist/ref-default.mjs +33 -0
  111. package/dist/resize-observer.d.mts +96 -0
  112. package/dist/resize-observer.mjs +111 -0
  113. package/dist/resolver.d.mts +124 -0
  114. package/dist/resolver.mjs +138 -0
  115. package/dist/retry-async.d.mts +2 -2
  116. package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
  117. package/dist/retry-delay.d.mts +1 -72
  118. package/dist/screen-orientation.d.mts +77 -0
  119. package/dist/screen-orientation.mjs +74 -0
  120. package/dist/scroll-lock.d.mts +37 -0
  121. package/dist/scroll-lock.mjs +50 -0
  122. package/dist/scroll.d.mts +158 -0
  123. package/dist/scroll.mjs +172 -0
  124. package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
  125. package/dist/standard-schema.d.mts +2 -0
  126. package/dist/standard-schema.mjs +60 -0
  127. package/dist/swipe.d.mts +125 -0
  128. package/dist/swipe.mjs +225 -0
  129. package/dist/sync-ref.d.mts +80 -0
  130. package/dist/sync-ref.mjs +43 -0
  131. package/dist/text-selection.d.mts +46 -0
  132. package/dist/text-selection.mjs +62 -0
  133. package/dist/textarea-autosize.d.mts +58 -0
  134. package/dist/textarea-autosize.mjs +54 -0
  135. package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
  136. package/dist/timeout-scheduler.d.mts +1 -17
  137. package/dist/to-reactive.d.mts +26 -0
  138. package/dist/to-reactive.mjs +46 -0
  139. package/dist/transition.d.mts +125 -0
  140. package/dist/transition.mjs +266 -0
  141. package/dist/until.d.mts +177 -0
  142. package/dist/until.mjs +111 -0
  143. package/dist/use-array.d.mts +112 -0
  144. package/dist/use-array.mjs +90 -0
  145. package/dist/use-async-queue.d.mts +109 -0
  146. package/dist/use-async-queue.mjs +96 -0
  147. package/dist/use-async-state.d.mts +86 -0
  148. package/dist/use-async-state.mjs +41 -0
  149. package/dist/use-barcode-detector.d.mts +159 -0
  150. package/dist/use-barcode-detector.mjs +143 -0
  151. package/dist/use-bluetooth.d.mts +164 -0
  152. package/dist/use-bluetooth.mjs +183 -0
  153. package/dist/use-broadcast-channel.d.mts +115 -0
  154. package/dist/use-broadcast-channel.mjs +121 -0
  155. package/dist/use-builtin-ai.d.mts +342 -0
  156. package/dist/use-builtin-ai.mjs +261 -0
  157. package/dist/use-clipboard.d.mts +169 -0
  158. package/dist/use-clipboard.mjs +226 -0
  159. package/dist/use-compression-stream.d.mts +173 -0
  160. package/dist/use-compression-stream.mjs +166 -0
  161. package/dist/use-confirm-dialog.d.mts +70 -0
  162. package/dist/use-confirm-dialog.mjs +57 -0
  163. package/dist/use-contact-picker.d.mts +117 -0
  164. package/dist/use-contact-picker.mjs +103 -0
  165. package/dist/use-cookie.d.mts +196 -0
  166. package/dist/use-cookie.mjs +259 -0
  167. package/dist/use-countdown.d.mts +85 -0
  168. package/dist/use-countdown.mjs +74 -0
  169. package/dist/use-css-var.d.mts +96 -0
  170. package/dist/use-css-var.mjs +104 -0
  171. package/dist/use-cycle-list.d.mts +76 -0
  172. package/dist/use-cycle-list.mjs +39 -0
  173. package/dist/use-date-format.d.mts +103 -0
  174. package/dist/use-date-format.mjs +147 -0
  175. package/dist/use-date-time-format.d.mts +75 -0
  176. package/dist/use-date-time-format.mjs +53 -0
  177. package/dist/use-debounced.d.mts +1 -1
  178. package/dist/use-display-media.d.mts +62 -0
  179. package/dist/use-display-media.mjs +46 -0
  180. package/dist/use-display-names.d.mts +75 -0
  181. package/dist/use-display-names.mjs +52 -0
  182. package/dist/use-document-title.d.mts +88 -0
  183. package/dist/use-document-title.mjs +100 -0
  184. package/dist/use-drop-zone.d.mts +128 -0
  185. package/dist/use-drop-zone.mjs +154 -0
  186. package/dist/use-event-source.d.mts +184 -0
  187. package/dist/use-event-source.mjs +226 -0
  188. package/dist/use-eye-dropper.d.mts +79 -0
  189. package/dist/use-eye-dropper.mjs +68 -0
  190. package/dist/use-favicon.d.mts +78 -0
  191. package/dist/use-favicon.mjs +68 -0
  192. package/dist/use-fetch.d.mts +230 -0
  193. package/dist/use-fetch.mjs +263 -0
  194. package/dist/use-field.d.mts +107 -0
  195. package/dist/use-field.mjs +117 -0
  196. package/dist/use-file-dialog.d.mts +139 -0
  197. package/dist/use-file-dialog.mjs +101 -0
  198. package/dist/use-file-system-access.d.mts +184 -0
  199. package/dist/use-file-system-access.mjs +151 -0
  200. package/dist/use-form-field-props.d.mts +235 -0
  201. package/dist/use-form-field-props.mjs +164 -0
  202. package/dist/use-form.d.mts +324 -0
  203. package/dist/use-form.mjs +482 -0
  204. package/dist/use-fullscreen.d.mts +104 -0
  205. package/dist/use-fullscreen.mjs +95 -0
  206. package/dist/use-gamepad.d.mts +242 -0
  207. package/dist/use-gamepad.mjs +218 -0
  208. package/dist/use-hid.d.mts +160 -0
  209. package/dist/use-hid.mjs +156 -0
  210. package/dist/use-id-generator.d.mts +44 -0
  211. package/dist/use-id-generator.mjs +38 -0
  212. package/dist/use-image.d.mts +125 -0
  213. package/dist/use-image.mjs +109 -0
  214. package/dist/use-indexed-db.d.mts +207 -0
  215. package/dist/use-indexed-db.mjs +251 -0
  216. package/dist/use-interval-BA55gTHT.d.mts +140 -0
  217. package/dist/use-interval.d.mts +2 -0
  218. package/dist/use-interval.mjs +100 -0
  219. package/dist/use-list-format.d.mts +60 -0
  220. package/dist/use-list-format.mjs +40 -0
  221. package/dist/use-machine.d.mts +90 -0
  222. package/dist/use-machine.mjs +78 -0
  223. package/dist/use-map.d.mts +90 -0
  224. package/dist/use-map.mjs +70 -0
  225. package/dist/use-media-controls.d.mts +198 -0
  226. package/dist/use-media-controls.mjs +264 -0
  227. package/dist/use-memoize.d.mts +73 -0
  228. package/dist/use-memoize.mjs +28 -0
  229. package/dist/use-mounted.d.mts +24 -0
  230. package/dist/use-mounted.mjs +29 -0
  231. package/dist/use-navigation-api.d.mts +360 -0
  232. package/dist/use-navigation-api.mjs +231 -0
  233. package/dist/use-notification.d.mts +139 -0
  234. package/dist/use-notification.mjs +131 -0
  235. package/dist/use-now.d.mts +137 -0
  236. package/dist/use-now.mjs +44 -0
  237. package/dist/use-number-format.d.mts +73 -0
  238. package/dist/use-number-format.mjs +58 -0
  239. package/dist/use-object-url.d.mts +47 -0
  240. package/dist/use-object-url.mjs +54 -0
  241. package/dist/use-offset-pagination.d.mts +91 -0
  242. package/dist/use-offset-pagination.mjs +80 -0
  243. package/dist/use-payment-request.d.mts +239 -0
  244. package/dist/use-payment-request.mjs +206 -0
  245. package/dist/use-performance-observer.d.mts +285 -0
  246. package/dist/use-performance-observer.mjs +132 -0
  247. package/dist/use-permission.d.mts +99 -0
  248. package/dist/use-permission.mjs +92 -0
  249. package/dist/use-plural-rules.d.mts +79 -0
  250. package/dist/use-plural-rules.mjs +59 -0
  251. package/dist/use-push-subscription.d.mts +154 -0
  252. package/dist/use-push-subscription.mjs +146 -0
  253. package/dist/use-queue.d.mts +89 -0
  254. package/dist/use-queue.mjs +116 -0
  255. package/dist/use-raf-fn.d.mts +87 -0
  256. package/dist/use-raf-fn.mjs +99 -0
  257. package/dist/use-relative-time-format.d.mts +111 -0
  258. package/dist/use-relative-time-format.mjs +119 -0
  259. package/dist/use-request-idle-callback.d.mts +122 -0
  260. package/dist/use-request-idle-callback.mjs +147 -0
  261. package/dist/use-route-query.d.mts +149 -0
  262. package/dist/use-route-query.mjs +86 -0
  263. package/dist/use-scheduler-post-task.d.mts +156 -0
  264. package/dist/use-scheduler-post-task.mjs +182 -0
  265. package/dist/use-screen-details.d.mts +205 -0
  266. package/dist/use-screen-details.mjs +188 -0
  267. package/dist/use-script-tag.d.mts +162 -0
  268. package/dist/use-script-tag.mjs +171 -0
  269. package/dist/use-segmenter.d.mts +78 -0
  270. package/dist/use-segmenter.mjs +66 -0
  271. package/dist/use-selection.d.mts +125 -0
  272. package/dist/use-selection.mjs +77 -0
  273. package/dist/use-serial.d.mts +165 -0
  274. package/dist/use-serial.mjs +205 -0
  275. package/dist/use-service-worker.d.mts +177 -0
  276. package/dist/use-service-worker.mjs +178 -0
  277. package/dist/use-set.d.mts +96 -0
  278. package/dist/use-set.mjs +74 -0
  279. package/dist/use-share.d.mts +92 -0
  280. package/dist/use-share.mjs +99 -0
  281. package/dist/use-sorted-locale.d.mts +62 -0
  282. package/dist/use-sorted-locale.mjs +52 -0
  283. package/dist/use-sorted.d.mts +29 -0
  284. package/dist/use-sorted.mjs +14 -0
  285. package/dist/use-speech-recognition.d.mts +150 -0
  286. package/dist/use-speech-recognition.mjs +168 -0
  287. package/dist/use-speech-synthesis.d.mts +148 -0
  288. package/dist/use-speech-synthesis.mjs +152 -0
  289. package/dist/use-stack.d.mts +83 -0
  290. package/dist/use-stack.mjs +93 -0
  291. package/dist/use-stepper.d.mts +79 -0
  292. package/dist/use-stepper.mjs +52 -0
  293. package/dist/use-storage-estimate.d.mts +151 -0
  294. package/dist/use-storage-estimate.mjs +170 -0
  295. package/dist/use-storage.d.mts +214 -0
  296. package/dist/use-storage.mjs +415 -0
  297. package/dist/use-style-tag.d.mts +102 -0
  298. package/dist/use-style-tag.mjs +91 -0
  299. package/dist/use-supported.d.mts +23 -0
  300. package/dist/use-supported.mjs +26 -0
  301. package/dist/use-throttled.d.mts +1 -1
  302. package/dist/use-time-ago.d.mts +163 -0
  303. package/dist/use-time-ago.mjs +95 -0
  304. package/dist/use-timeout.d.mts +122 -0
  305. package/dist/use-timeout.mjs +65 -0
  306. package/dist/use-url-hash.d.mts +88 -0
  307. package/dist/use-url-hash.mjs +145 -0
  308. package/dist/use-url-search-params.d.mts +223 -0
  309. package/dist/use-url-search-params.mjs +295 -0
  310. package/dist/use-usb.d.mts +212 -0
  311. package/dist/use-usb.mjs +137 -0
  312. package/dist/use-user-activation.d.mts +83 -0
  313. package/dist/use-user-activation.mjs +113 -0
  314. package/dist/use-user-media.d.mts +194 -0
  315. package/dist/use-user-media.mjs +214 -0
  316. package/dist/use-v-model.d.mts +113 -0
  317. package/dist/use-v-model.mjs +40 -0
  318. package/dist/use-vibrate.d.mts +81 -0
  319. package/dist/use-vibrate.mjs +90 -0
  320. package/dist/use-view-transition.d.mts +106 -0
  321. package/dist/use-view-transition.mjs +101 -0
  322. package/dist/use-visual-viewport.d.mts +105 -0
  323. package/dist/use-visual-viewport.mjs +104 -0
  324. package/dist/use-wake-lock.d.mts +96 -0
  325. package/dist/use-wake-lock.mjs +106 -0
  326. package/dist/use-web-authn.d.mts +404 -0
  327. package/dist/use-web-authn.mjs +323 -0
  328. package/dist/use-web-locks.d.mts +180 -0
  329. package/dist/use-web-locks.mjs +136 -0
  330. package/dist/use-web-midi.d.mts +148 -0
  331. package/dist/use-web-midi.mjs +140 -0
  332. package/dist/use-web-vitals.d.mts +142 -0
  333. package/dist/use-web-vitals.mjs +248 -0
  334. package/dist/use-websocket.d.mts +218 -0
  335. package/dist/use-websocket.mjs +257 -0
  336. package/dist/use-worker-fn.d.mts +119 -0
  337. package/dist/use-worker-fn.mjs +162 -0
  338. package/dist/virtual-list.d.mts +105 -0
  339. package/dist/virtual-list.mjs +128 -0
  340. package/dist/watch-debounced.d.mts +84 -0
  341. package/dist/watch-debounced.mjs +84 -0
  342. package/dist/watch-ignorable.d.mts +47 -0
  343. package/dist/watch-ignorable.mjs +61 -0
  344. package/dist/watch-once.d.mts +29 -0
  345. package/dist/watch-once.mjs +10 -0
  346. package/dist/watch-pausable.d.mts +51 -0
  347. package/dist/watch-pausable.mjs +23 -0
  348. package/dist/watch-source.d.mts +29 -0
  349. package/dist/watch-source.mjs +1 -0
  350. package/dist/watch-throttled.d.mts +70 -0
  351. package/dist/watch-throttled.mjs +94 -0
  352. package/dist/whenever.d.mts +39 -0
  353. package/dist/whenever.mjs +41 -0
  354. package/dist/window-size.d.mts +87 -0
  355. package/dist/window-size.mjs +65 -0
  356. package/package.json +846 -5
  357. package/registry/files/abort-signal.ts +292 -0
  358. package/registry/files/active-element.ts +93 -0
  359. package/registry/files/animate.ts +322 -0
  360. package/registry/files/async-resource.ts +190 -0
  361. package/registry/files/battery.ts +166 -0
  362. package/registry/files/breakpoints.ts +166 -0
  363. package/registry/files/capability.ts +171 -0
  364. package/registry/files/color-mode.ts +274 -0
  365. package/registry/files/computed-async.ts +123 -0
  366. package/registry/files/computed-with-control.ts +80 -0
  367. package/registry/files/create-event-hook.ts +139 -0
  368. package/registry/files/create-global-state.ts +34 -0
  369. package/registry/files/create-injection-state.ts +75 -0
  370. package/registry/files/create-shared-composable.ts +74 -0
  371. package/registry/files/device-motion.ts +152 -0
  372. package/registry/files/device-orientation.ts +168 -0
  373. package/registry/files/device-pixel-ratio.ts +100 -0
  374. package/registry/files/disposal-scope.ts +201 -0
  375. package/registry/files/document-visibility.ts +152 -0
  376. package/registry/files/draggable.ts +273 -0
  377. package/registry/files/element-bounding.ts +175 -0
  378. package/registry/files/element-by-point.ts +149 -0
  379. package/registry/files/element-hover.ts +104 -0
  380. package/registry/files/element-ref.ts +58 -0
  381. package/registry/files/element-target.ts +99 -0
  382. package/registry/files/event-listener.ts +188 -0
  383. package/registry/files/focus.ts +181 -0
  384. package/registry/files/fps.ts +133 -0
  385. package/registry/files/geolocation.ts +214 -0
  386. package/registry/files/i18n.ts +524 -0
  387. package/registry/files/icu-message.ts +701 -0
  388. package/registry/files/idle.ts +176 -0
  389. package/registry/files/infinite-scroll.ts +135 -0
  390. package/registry/files/intersection-observer.ts +261 -0
  391. package/registry/files/locale.ts +148 -0
  392. package/registry/files/magic-keys.ts +298 -0
  393. package/registry/files/math.ts +175 -0
  394. package/registry/files/media-query.ts +102 -0
  395. package/registry/files/mouse-in-element.ts +107 -0
  396. package/registry/files/mouse.ts +167 -0
  397. package/registry/files/mutation-observer.ts +183 -0
  398. package/registry/files/network.ts +229 -0
  399. package/registry/files/on-click-outside.ts +178 -0
  400. package/registry/files/on-key-stroke.ts +135 -0
  401. package/registry/files/on-long-press.ts +188 -0
  402. package/registry/files/on-start-typing.ts +88 -0
  403. package/registry/files/page-leave.ts +57 -0
  404. package/registry/files/parent-element.ts +29 -0
  405. package/registry/files/pinch.ts +187 -0
  406. package/registry/files/pointer-lock.ts +232 -0
  407. package/registry/files/pointer.ts +153 -0
  408. package/registry/files/preferences.ts +98 -0
  409. package/registry/files/preferred-languages.ts +88 -0
  410. package/registry/files/reactify.ts +39 -0
  411. package/registry/files/ref-auto-reset.ts +102 -0
  412. package/registry/files/ref-debounced.ts +34 -0
  413. package/registry/files/ref-default.ts +35 -0
  414. package/registry/files/resize-observer.ts +220 -0
  415. package/registry/files/retry-async.ts +261 -0
  416. package/registry/files/retry-delay.ts +132 -0
  417. package/registry/files/scope.ts +21 -0
  418. package/registry/files/screen-orientation.ts +165 -0
  419. package/registry/files/scroll-lock.ts +80 -0
  420. package/registry/files/scroll.ts +338 -0
  421. package/registry/files/standard-schema.ts +163 -0
  422. package/registry/files/swipe.ts +321 -0
  423. package/registry/files/sync-ref.ts +166 -0
  424. package/registry/files/temporal.ts +182 -0
  425. package/registry/files/text-selection.ts +110 -0
  426. package/registry/files/textarea-autosize.ts +114 -0
  427. package/registry/files/timeout-scheduler.ts +16 -0
  428. package/registry/files/to-reactive.ts +44 -0
  429. package/registry/files/transition.ts +271 -0
  430. package/registry/files/until.ts +352 -0
  431. package/registry/files/use-array.ts +201 -0
  432. package/registry/files/use-async-queue.ts +278 -0
  433. package/registry/files/use-async-state.ts +139 -0
  434. package/registry/files/use-barcode-detector.ts +321 -0
  435. package/registry/files/use-bluetooth.ts +409 -0
  436. package/registry/files/use-broadcast-channel.ts +250 -0
  437. package/registry/files/use-builtin-ai.ts +674 -0
  438. package/registry/files/use-clipboard.ts +425 -0
  439. package/registry/files/use-compression-stream.ts +364 -0
  440. package/registry/files/use-confirm-dialog.ts +137 -0
  441. package/registry/files/use-contact-picker.ts +246 -0
  442. package/registry/files/use-cookie.ts +500 -0
  443. package/registry/files/use-countdown.ts +161 -0
  444. package/registry/files/use-counter.ts +147 -0
  445. package/registry/files/use-css-var.ts +191 -0
  446. package/registry/files/use-cycle-list.ts +136 -0
  447. package/registry/files/use-date-format.ts +281 -0
  448. package/registry/files/use-date-time-format.ts +113 -0
  449. package/registry/files/use-debounced.ts +163 -0
  450. package/registry/files/use-display-media.ts +89 -0
  451. package/registry/files/use-display-names.ts +122 -0
  452. package/registry/files/use-document-title.ts +196 -0
  453. package/registry/files/use-drop-zone.ts +287 -0
  454. package/registry/files/use-event-source.ts +470 -0
  455. package/registry/files/use-eye-dropper.ts +134 -0
  456. package/registry/files/use-favicon.ts +140 -0
  457. package/registry/files/use-fetch.ts +578 -0
  458. package/registry/files/use-field.ts +247 -0
  459. package/registry/files/use-file-dialog.ts +257 -0
  460. package/registry/files/use-file-system-access.ts +383 -0
  461. package/registry/files/use-form-field-props.ts +381 -0
  462. package/registry/files/use-form.ts +980 -0
  463. package/registry/files/use-fullscreen.ts +214 -0
  464. package/registry/files/use-gamepad.ts +463 -0
  465. package/registry/files/use-hid.ts +359 -0
  466. package/registry/files/use-history.ts +231 -0
  467. package/registry/files/use-id-generator.ts +61 -0
  468. package/registry/files/use-image.ts +253 -0
  469. package/registry/files/use-indexed-db.ts +508 -0
  470. package/registry/files/use-interval.ts +253 -0
  471. package/registry/files/use-list-format.ts +85 -0
  472. package/registry/files/use-machine.ts +171 -0
  473. package/registry/files/use-map.ts +145 -0
  474. package/registry/files/use-media-controls.ts +545 -0
  475. package/registry/files/use-memoize.ts +118 -0
  476. package/registry/files/use-mounted.ts +30 -0
  477. package/registry/files/use-navigation-api.ts +641 -0
  478. package/registry/files/use-notification.ts +285 -0
  479. package/registry/files/use-now.ts +194 -0
  480. package/registry/files/use-number-format.ts +120 -0
  481. package/registry/files/use-object-url.ts +87 -0
  482. package/registry/files/use-offset-pagination.ts +168 -0
  483. package/registry/files/use-payment-request.ts +465 -0
  484. package/registry/files/use-performance-observer.ts +469 -0
  485. package/registry/files/use-permission.ts +220 -0
  486. package/registry/files/use-plural-rules.ts +134 -0
  487. package/registry/files/use-previous.ts +62 -0
  488. package/registry/files/use-push-subscription.ts +352 -0
  489. package/registry/files/use-queue.ts +197 -0
  490. package/registry/files/use-raf-fn.ts +176 -0
  491. package/registry/files/use-relative-time-format.ts +201 -0
  492. package/registry/files/use-request-idle-callback.ts +278 -0
  493. package/registry/files/use-route-query.ts +300 -0
  494. package/registry/files/use-scheduler-post-task.ts +397 -0
  495. package/registry/files/use-screen-details.ts +393 -0
  496. package/registry/files/use-script-tag.ts +341 -0
  497. package/registry/files/use-segmenter.ts +147 -0
  498. package/registry/files/use-selection.ts +233 -0
  499. package/registry/files/use-serial.ts +404 -0
  500. package/registry/files/use-service-worker.ts +413 -0
  501. package/registry/files/use-set.ts +154 -0
  502. package/registry/files/use-share.ts +168 -0
  503. package/registry/files/use-sorted-locale.ts +130 -0
  504. package/registry/files/use-sorted.ts +49 -0
  505. package/registry/files/use-speech-recognition.ts +357 -0
  506. package/registry/files/use-speech-synthesis.ts +333 -0
  507. package/registry/files/use-stack.ts +164 -0
  508. package/registry/files/use-stepper.ts +166 -0
  509. package/registry/files/use-storage-estimate.ts +352 -0
  510. package/registry/files/use-storage.ts +635 -0
  511. package/registry/files/use-style-tag.ts +200 -0
  512. package/registry/files/use-supported.ts +26 -0
  513. package/registry/files/use-throttled.ts +215 -0
  514. package/registry/files/use-time-ago.ts +276 -0
  515. package/registry/files/use-timeout.ts +218 -0
  516. package/registry/files/use-toggle.ts +54 -0
  517. package/registry/files/use-url-hash.ts +280 -0
  518. package/registry/files/use-url-search-params.ts +497 -0
  519. package/registry/files/use-usb.ts +395 -0
  520. package/registry/files/use-user-activation.ts +215 -0
  521. package/registry/files/use-user-media.ts +422 -0
  522. package/registry/files/use-v-model.ts +210 -0
  523. package/registry/files/use-vibrate.ts +174 -0
  524. package/registry/files/use-view-transition.ts +229 -0
  525. package/registry/files/use-visual-viewport.ts +228 -0
  526. package/registry/files/use-wake-lock.ts +206 -0
  527. package/registry/files/use-web-authn.ts +793 -0
  528. package/registry/files/use-web-locks.ts +363 -0
  529. package/registry/files/use-web-midi.ts +306 -0
  530. package/registry/files/use-web-vitals.ts +409 -0
  531. package/registry/files/use-websocket.ts +553 -0
  532. package/registry/files/use-worker-fn.ts +306 -0
  533. package/registry/files/virtual-list.ts +230 -0
  534. package/registry/files/watch-debounced.ts +206 -0
  535. package/registry/files/watch-ignorable.ts +128 -0
  536. package/registry/files/watch-once.ts +46 -0
  537. package/registry/files/watch-pausable.ts +93 -0
  538. package/registry/files/watch-source.ts +51 -0
  539. package/registry/files/watch-throttled.ts +201 -0
  540. package/registry/files/whenever.ts +70 -0
  541. package/registry/files/window-size.ts +151 -0
  542. package/registry/registry.json +5792 -0
  543. package/dist/catalog-D2AL3xYl.d.mts +0 -523
  544. package/dist/catalog-D5SYCsgW.mjs +0 -549
@@ -0,0 +1,196 @@
1
+ import { InjectionKey, Ref, ShallowRef } from "vue";
2
+
3
+ //#region src/use-cookie.d.ts
4
+ /** `SameSite` attribute values. */
5
+ type CookieSameSite = "lax" | "strict" | "none";
6
+ /** Attributes written with a cookie (RFC 6265bis). */
7
+ interface CookieAttributes {
8
+ /**
9
+ * `Path` attribute.
10
+ *
11
+ * @default "/" when written by {@link useCookie}; omitted by {@link serializeCookie}
12
+ */
13
+ readonly path?: string;
14
+ /**
15
+ * `Domain` attribute.
16
+ *
17
+ * @default omitted (host-only cookie)
18
+ */
19
+ readonly domain?: string;
20
+ /**
21
+ * `Max-Age` in integer seconds; `0` or less expires the cookie.
22
+ *
23
+ * @default omitted (session cookie)
24
+ */
25
+ readonly maxAge?: number;
26
+ /**
27
+ * `Expires` date.
28
+ *
29
+ * @default omitted (session cookie)
30
+ */
31
+ readonly expires?: Date;
32
+ /**
33
+ * `SameSite` policy. `"none"` requires `secure`.
34
+ *
35
+ * @default omitted (browser default, usually lax)
36
+ */
37
+ readonly sameSite?: CookieSameSite;
38
+ /**
39
+ * `Secure` flag.
40
+ *
41
+ * @default false
42
+ */
43
+ readonly secure?: boolean;
44
+ /**
45
+ * `HttpOnly` flag. Only honored by server adapters: browsers ignore
46
+ * cookies with this flag written through `document.cookie`.
47
+ *
48
+ * @default false
49
+ */
50
+ readonly httpOnly?: boolean;
51
+ /**
52
+ * `Partitioned` flag (CHIPS). Requires `secure`.
53
+ *
54
+ * @default false
55
+ */
56
+ readonly partitioned?: boolean;
57
+ }
58
+ /**
59
+ * Parse a `Cookie` request header (or `document.cookie`) into name/value
60
+ * pairs. Values are percent-decoded; the first occurrence of a name wins,
61
+ * matching how browsers order more specific cookies first. Pure and
62
+ * SSR-safe.
63
+ *
64
+ * @param header Raw header value.
65
+ * @returns Cookie values by name.
66
+ */
67
+ declare function parseCookieHeader(header: string): Record<string, string>;
68
+ /**
69
+ * Serialize one cookie as a `Set-Cookie` header value (also accepted by
70
+ * `document.cookie`). The value is percent-encoded so any string is safe.
71
+ *
72
+ * @param name Cookie name; must be an RFC 6265 token.
73
+ * @param value Unencoded cookie value.
74
+ * @param attributes Cookie attributes.
75
+ * @default attributes {}
76
+ * @throws {TypeError} `[VIZE_COMPOSE_COOKIE_INVALID_NAME]`,
77
+ * `[VIZE_COMPOSE_COOKIE_INVALID_DOMAIN]`, `[VIZE_COMPOSE_COOKIE_INVALID_PATH]`,
78
+ * or `[VIZE_COMPOSE_COOKIE_REQUIRES_SECURE]` for malformed attributes.
79
+ * @throws {RangeError} `[VIZE_COMPOSE_COOKIE_INVALID_MAX_AGE]` or
80
+ * `[VIZE_COMPOSE_COOKIE_INVALID_EXPIRES]` for invalid lifetimes.
81
+ * @returns The serialized cookie.
82
+ */
83
+ declare function serializeCookie(name: string, value: string, attributes?: CookieAttributes): string;
84
+ /**
85
+ * Request/response bridge used by {@link useCookie}.
86
+ *
87
+ * On the server, `read` returns the incoming `Cookie` header and `write`
88
+ * appends a `Set-Cookie` header to the response. In the browser the default
89
+ * adapter reads and writes `document.cookie`.
90
+ */
91
+ interface CookieAdapter {
92
+ /** Return the current `Cookie` header (`name=value; …`). */
93
+ readonly read: () => string;
94
+ /** Persist one serialized cookie (a `Set-Cookie` header value). */
95
+ readonly write: (setCookie: string) => void;
96
+ }
97
+ /** Injection key for an app- or subtree-wide {@link CookieAdapter}. */
98
+ declare const COOKIE_ADAPTER_KEY: InjectionKey<CookieAdapter>;
99
+ /**
100
+ * Provide a {@link CookieAdapter} to descendant components (for example the
101
+ * request/response pair of a server render). Must be called during setup;
102
+ * use `app.provide(COOKIE_ADAPTER_KEY, adapter)` for a whole app.
103
+ *
104
+ * @param adapter Adapter used by descendants' {@link useCookie} calls.
105
+ */
106
+ declare function provideCookieAdapter(adapter: CookieAdapter): void;
107
+ /** Converts a cookie value to and from its string form. */
108
+ interface CookieSerializer<Value> {
109
+ /** Decode the percent-decoded cookie value. Throwing selects the default. */
110
+ readonly read: (raw: string) => Value;
111
+ /** Encode a value; the result is percent-encoded when written. */
112
+ readonly write: (value: Value) => string;
113
+ }
114
+ /** Stable failure codes reported by {@link useCookie}. */
115
+ type CookieErrorCode = "read-failed" | "invalid-value" | "write-failed";
116
+ /** Failure observed while synchronizing a cookie. */
117
+ interface CookieFailure {
118
+ /** Which synchronization step failed. */
119
+ readonly code: CookieErrorCode;
120
+ /** Cookie name involved in the failure. */
121
+ readonly name: string;
122
+ /** Exact thrown value, or the rejected candidate for `"invalid-value"`. */
123
+ readonly cause: unknown;
124
+ }
125
+ /** Options for {@link useCookie}. */
126
+ interface UseCookieOptions<Value> extends CookieAttributes {
127
+ /**
128
+ * Value used when the cookie is absent or unreadable. Also selects the
129
+ * serializer: strings are stored raw, everything else as JSON.
130
+ *
131
+ * @default undefined (the state is `string | undefined`)
132
+ */
133
+ readonly default?: Value;
134
+ /**
135
+ * Explicit serializer.
136
+ *
137
+ * @default raw strings for string defaults, JSON otherwise
138
+ */
139
+ readonly serializer?: CookieSerializer<Value>;
140
+ /**
141
+ * Validation hook applied to every decoded value.
142
+ *
143
+ * @default a check that the value has the default's kind
144
+ */
145
+ readonly validate?: (candidate: unknown) => candidate is Value;
146
+ /**
147
+ * Request/response adapter. Takes precedence over an injected adapter.
148
+ *
149
+ * @default the injected adapter, else `document.cookie` in browsers
150
+ */
151
+ readonly adapter?: CookieAdapter | null;
152
+ /**
153
+ * Observe failures. Failures never throw out of the composable.
154
+ *
155
+ * @default undefined
156
+ */
157
+ readonly onError?: (failure: CookieFailure) => void;
158
+ }
159
+ /** Reactive state and controls returned by {@link useCookie}. */
160
+ interface CookieControls<Value> {
161
+ /** Writable cookie value; assignments write the cookie. */
162
+ readonly state: Ref<Value>;
163
+ /**
164
+ * Whether an adapter is attached. With the implicit `document.cookie`
165
+ * adapter inside a component it stays `false` until mounted, matching a
166
+ * server render without an adapter.
167
+ */
168
+ readonly supported: Readonly<Ref<boolean>>;
169
+ /** Most recent failure, cleared by the next success. */
170
+ readonly error: Readonly<ShallowRef<CookieFailure | undefined>>;
171
+ /** Re-read the cookie from the adapter. */
172
+ readonly refresh: () => void;
173
+ /** Expire the cookie and restore the default value. */
174
+ readonly remove: () => void;
175
+ }
176
+ /**
177
+ * Read and write one cookie with a typed default.
178
+ *
179
+ * @typeParam Value Cookie value type, inferred from `default`.
180
+ * @param name Cookie name.
181
+ * @param options Default, serializer, validation, attributes, and adapter.
182
+ * @returns The typed cookie value and its controls.
183
+ */
184
+ declare function useCookie<Value>(name: string, options: UseCookieOptions<Value> & {
185
+ readonly default: Value;
186
+ }): CookieControls<Value>;
187
+ /**
188
+ * Read and write one raw string cookie; absent cookies are `undefined`.
189
+ *
190
+ * @param name Cookie name.
191
+ * @param options Attributes and adapter.
192
+ * @returns The cookie string and its controls.
193
+ */
194
+ declare function useCookie(name: string, options?: UseCookieOptions<string>): CookieControls<string | undefined>;
195
+ //#endregion
196
+ export { COOKIE_ADAPTER_KEY, CookieAdapter, CookieAttributes, CookieControls, CookieErrorCode, CookieFailure, CookieSameSite, CookieSerializer, UseCookieOptions, parseCookieHeader, provideCookieAdapter, serializeCookie, useCookie };
@@ -0,0 +1,259 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { useMounted } from "./use-mounted.mjs";
3
+ import { computed, hasInjectionContext, inject, provide, shallowRef, watch } from "vue";
4
+ //#region src/use-cookie.ts
5
+ const TOKEN = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
6
+ const DOMAIN = /^\.?[0-9A-Za-z]([0-9A-Za-z-]*[0-9A-Za-z])?(\.[0-9A-Za-z]([0-9A-Za-z-]*[0-9A-Za-z])?)*$/;
7
+ const UNSAFE_PATH = /[\u0000-\u001f\u007f;]/;
8
+ function decode(value) {
9
+ try {
10
+ return decodeURIComponent(value);
11
+ } catch {
12
+ return value;
13
+ }
14
+ }
15
+ /**
16
+ * Parse a `Cookie` request header (or `document.cookie`) into name/value
17
+ * pairs. Values are percent-decoded; the first occurrence of a name wins,
18
+ * matching how browsers order more specific cookies first. Pure and
19
+ * SSR-safe.
20
+ *
21
+ * @param header Raw header value.
22
+ * @returns Cookie values by name.
23
+ */
24
+ function parseCookieHeader(header) {
25
+ const cookies = /* @__PURE__ */ new Map();
26
+ for (const part of header.split(";")) {
27
+ const separator = part.indexOf("=");
28
+ if (separator === -1) continue;
29
+ const name = part.slice(0, separator).trim();
30
+ if (name === "" || cookies.has(name)) continue;
31
+ let value = part.slice(separator + 1).trim();
32
+ if (value.length >= 2 && value.startsWith("\"") && value.endsWith("\"")) value = value.slice(1, -1);
33
+ cookies.set(name, decode(value));
34
+ }
35
+ return Object.fromEntries(cookies);
36
+ }
37
+ /**
38
+ * Serialize one cookie as a `Set-Cookie` header value (also accepted by
39
+ * `document.cookie`). The value is percent-encoded so any string is safe.
40
+ *
41
+ * @param name Cookie name; must be an RFC 6265 token.
42
+ * @param value Unencoded cookie value.
43
+ * @param attributes Cookie attributes.
44
+ * @default attributes {}
45
+ * @throws {TypeError} `[VIZE_COMPOSE_COOKIE_INVALID_NAME]`,
46
+ * `[VIZE_COMPOSE_COOKIE_INVALID_DOMAIN]`, `[VIZE_COMPOSE_COOKIE_INVALID_PATH]`,
47
+ * or `[VIZE_COMPOSE_COOKIE_REQUIRES_SECURE]` for malformed attributes.
48
+ * @throws {RangeError} `[VIZE_COMPOSE_COOKIE_INVALID_MAX_AGE]` or
49
+ * `[VIZE_COMPOSE_COOKIE_INVALID_EXPIRES]` for invalid lifetimes.
50
+ * @returns The serialized cookie.
51
+ */
52
+ function serializeCookie(name, value, attributes = {}) {
53
+ if (!TOKEN.test(name)) throw new TypeError(`[VIZE_COMPOSE_COOKIE_INVALID_NAME] cookie names must be RFC 6265 tokens; received ${JSON.stringify(name)}`);
54
+ let cookie = `${name}=${encodeURIComponent(value)}`;
55
+ if (attributes.maxAge !== void 0) {
56
+ if (!Number.isSafeInteger(attributes.maxAge)) throw new RangeError(`[VIZE_COMPOSE_COOKIE_INVALID_MAX_AGE] maxAge must be an integer number of seconds; received ${String(attributes.maxAge)}`);
57
+ cookie += `; Max-Age=${String(attributes.maxAge)}`;
58
+ }
59
+ if (attributes.expires !== void 0) {
60
+ if (Number.isNaN(attributes.expires.getTime())) throw new RangeError("[VIZE_COMPOSE_COOKIE_INVALID_EXPIRES] expires must be a valid Date");
61
+ cookie += `; Expires=${attributes.expires.toUTCString()}`;
62
+ }
63
+ if (attributes.domain !== void 0) {
64
+ if (!DOMAIN.test(attributes.domain)) throw new TypeError(`[VIZE_COMPOSE_COOKIE_INVALID_DOMAIN] invalid cookie domain ${JSON.stringify(attributes.domain)}`);
65
+ cookie += `; Domain=${attributes.domain}`;
66
+ }
67
+ if (attributes.path !== void 0) {
68
+ if (UNSAFE_PATH.test(attributes.path)) throw new TypeError(`[VIZE_COMPOSE_COOKIE_INVALID_PATH] cookie paths cannot contain ';' or control characters; received ${JSON.stringify(attributes.path)}`);
69
+ cookie += `; Path=${attributes.path}`;
70
+ }
71
+ const secure = attributes.secure ?? false;
72
+ if ((attributes.sameSite === "none" || attributes.partitioned === true) && !secure) throw new TypeError("[VIZE_COMPOSE_COOKIE_REQUIRES_SECURE] SameSite=None and Partitioned cookies must be Secure");
73
+ if (attributes.sameSite !== void 0) {
74
+ const sameSite = attributes.sameSite;
75
+ cookie += `; SameSite=${sameSite === "lax" ? "Lax" : sameSite === "strict" ? "Strict" : "None"}`;
76
+ }
77
+ if (secure) cookie += "; Secure";
78
+ if (attributes.httpOnly === true) cookie += "; HttpOnly";
79
+ if (attributes.partitioned === true) cookie += "; Partitioned";
80
+ return cookie;
81
+ }
82
+ /** Injection key for an app- or subtree-wide {@link CookieAdapter}. */
83
+ const COOKIE_ADAPTER_KEY = Symbol("vize:cookie-adapter");
84
+ /**
85
+ * Provide a {@link CookieAdapter} to descendant components (for example the
86
+ * request/response pair of a server render). Must be called during setup;
87
+ * use `app.provide(COOKIE_ADAPTER_KEY, adapter)` for a whole app.
88
+ *
89
+ * @param adapter Adapter used by descendants' {@link useCookie} calls.
90
+ */
91
+ function provideCookieAdapter(adapter) {
92
+ provide(COOKIE_ADAPTER_KEY, adapter);
93
+ }
94
+ function browserAdapter() {
95
+ if (typeof window === "undefined") return void 0;
96
+ const document = window.document;
97
+ return {
98
+ read: () => document.cookie,
99
+ write: (setCookie) => {
100
+ document.cookie = setCookie;
101
+ }
102
+ };
103
+ }
104
+ function sameKind(defaults, candidate) {
105
+ if (defaults === null || defaults === void 0) return true;
106
+ if (Array.isArray(defaults)) return Array.isArray(candidate);
107
+ if (typeof defaults === "object") return typeof candidate === "object" && candidate !== null && !Array.isArray(candidate);
108
+ return typeof candidate === typeof defaults;
109
+ }
110
+ const rawCodec = {
111
+ read: (raw) => raw,
112
+ write: (value) => String(value)
113
+ };
114
+ const jsonCodec = {
115
+ read: (raw) => JSON.parse(raw),
116
+ write: (value) => JSON.stringify(value)
117
+ };
118
+ /**
119
+ * Synchronize a typed reactive value with one cookie, on the server and in
120
+ * the browser.
121
+ *
122
+ * The adapter is resolved from `options.adapter`, then from
123
+ * {@link COOKIE_ADAPTER_KEY} (see {@link provideCookieAdapter}), then from
124
+ * `document.cookie` in browsers. During a server render with an adapter the
125
+ * value comes from the request `Cookie` header and assignments emit
126
+ * `Set-Cookie` headers through `adapter.write`, so server and client render
127
+ * the same value and hydrate without a mismatch. Without any adapter (plain
128
+ * SSR) the default is used and nothing is written.
129
+ *
130
+ * String defaults are stored raw; other defaults as JSON checked by
131
+ * `validate` (by default: same kind as the default). Assigning `undefined`
132
+ * (or calling `remove`) expires the cookie. Cookies are written with
133
+ * `Path=/` unless `path` is given. Failures never throw; they are exposed
134
+ * through `error` and `onError`. The write watcher stops with the owning
135
+ * reactive scope.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * // server entry: app.provide(COOKIE_ADAPTER_KEY, { read: () => req.headers.cookie ?? "",
140
+ * // write: (value) => res.appendHeader("Set-Cookie", value) });
141
+ * const { state: locale } = useCookie("locale", { default: "en", maxAge: 31_536_000 });
142
+ * ```
143
+ *
144
+ * @param name Cookie name (an RFC 6265 token).
145
+ * @param options Default, serializer, validation, attributes, and adapter.
146
+ * @default options {}
147
+ * @returns The synchronized value and its controls.
148
+ */
149
+ function useCookie(name, options = {}) {
150
+ const injected = hasInjectionContext() ? inject(COOKIE_ADAPTER_KEY, void 0) : void 0;
151
+ const adapter = options.adapter === void 0 ? injected ?? browserAdapter() : options.adapter ?? void 0;
152
+ const fallback = options.default;
153
+ const codec = options.serializer ?? (fallback === void 0 || typeof fallback === "string" ? rawCodec : jsonCodec);
154
+ const validate = options.validate ?? ((candidate) => sameKind(fallback, candidate));
155
+ const state = shallowRef(fallback);
156
+ const error = shallowRef(void 0);
157
+ const mounted = options.adapter === void 0 && injected === void 0 && hasInjectionContext() ? useMounted() : void 0;
158
+ const supported = computed(() => (mounted?.value ?? true) && adapter !== void 0);
159
+ const attributes = {
160
+ path: "/",
161
+ ...options.domain === void 0 ? {} : { domain: options.domain },
162
+ ...options.path === void 0 ? {} : { path: options.path },
163
+ ...options.maxAge === void 0 ? {} : { maxAge: options.maxAge },
164
+ ...options.expires === void 0 ? {} : { expires: options.expires },
165
+ ...options.sameSite === void 0 ? {} : { sameSite: options.sameSite },
166
+ ...options.secure === void 0 ? {} : { secure: options.secure },
167
+ ...options.httpOnly === void 0 ? {} : { httpOnly: options.httpOnly },
168
+ ...options.partitioned === void 0 ? {} : { partitioned: options.partitioned }
169
+ };
170
+ let syncedRaw;
171
+ const fail = (code, cause) => {
172
+ const failure = {
173
+ code,
174
+ name,
175
+ cause
176
+ };
177
+ error.value = failure;
178
+ options.onError?.(failure);
179
+ };
180
+ let applying = false;
181
+ const assign = (value, raw) => {
182
+ syncedRaw = raw;
183
+ applying = true;
184
+ try {
185
+ state.value = value;
186
+ } finally {
187
+ applying = false;
188
+ }
189
+ };
190
+ const refresh = () => {
191
+ if (adapter === void 0) return;
192
+ let raw;
193
+ try {
194
+ raw = parseCookieHeader(adapter.read())[name];
195
+ } catch (cause) {
196
+ fail("read-failed", cause);
197
+ return;
198
+ }
199
+ if (raw === void 0) {
200
+ assign(fallback, void 0);
201
+ return;
202
+ }
203
+ let candidate;
204
+ try {
205
+ candidate = codec.read(raw);
206
+ } catch (cause) {
207
+ fail("read-failed", cause);
208
+ assign(fallback, raw);
209
+ return;
210
+ }
211
+ if (!validate(candidate)) {
212
+ fail("invalid-value", candidate);
213
+ assign(fallback, raw);
214
+ return;
215
+ }
216
+ error.value = void 0;
217
+ assign(candidate, raw);
218
+ };
219
+ const writeCookie = (value) => {
220
+ if (adapter === void 0) return;
221
+ try {
222
+ if (value === void 0) {
223
+ adapter.write(serializeCookie(name, "", {
224
+ ...attributes,
225
+ maxAge: 0,
226
+ expires: /* @__PURE__ */ new Date(0)
227
+ }));
228
+ syncedRaw = void 0;
229
+ } else {
230
+ const raw = codec.write(value);
231
+ if (raw === syncedRaw) return;
232
+ adapter.write(serializeCookie(name, raw, attributes));
233
+ syncedRaw = raw;
234
+ }
235
+ } catch (cause) {
236
+ fail("write-failed", cause);
237
+ return;
238
+ }
239
+ error.value = void 0;
240
+ };
241
+ refresh();
242
+ const stopWrite = watch(state, (value) => {
243
+ if (!applying) writeCookie(value);
244
+ }, { flush: "sync" });
245
+ const remove = () => {
246
+ writeCookie(void 0);
247
+ assign(fallback, void 0);
248
+ };
249
+ tryOnScopeDispose(stopWrite);
250
+ return {
251
+ state,
252
+ supported,
253
+ error,
254
+ refresh,
255
+ remove
256
+ };
257
+ }
258
+ //#endregion
259
+ export { COOKIE_ADAPTER_KEY, parseCookieHeader, provideCookieAdapter, serializeCookie, useCookie };
@@ -0,0 +1,85 @@
1
+ import { n as IntervalScheduler, r as PausableControls } from "./use-interval-BA55gTHT.mjs";
2
+ import { ComputedRef, MaybeRefOrGetter, ShallowRef } from "vue";
3
+
4
+ //#region src/use-countdown.d.ts
5
+ /** Options for {@link useCountdown}. */
6
+ interface UseCountdownOptions {
7
+ /**
8
+ * Milliseconds between two decrements. Reactive.
9
+ *
10
+ * @default 1000
11
+ */
12
+ readonly intervalMs?: MaybeRefOrGetter<number>;
13
+ /**
14
+ * Start counting down as soon as the composable is created.
15
+ *
16
+ * @default false
17
+ */
18
+ readonly immediate?: boolean;
19
+ /**
20
+ * Invoked after every decrement with the remaining count.
21
+ *
22
+ * @default undefined
23
+ */
24
+ readonly onTick?: (remaining: number) => void;
25
+ /**
26
+ * Invoked once when the count reaches zero.
27
+ *
28
+ * @default undefined
29
+ */
30
+ readonly onComplete?: () => void;
31
+ /**
32
+ * Starts host timers when no browser `window` is available.
33
+ *
34
+ * @default false
35
+ */
36
+ readonly runOnServer?: boolean;
37
+ /**
38
+ * Repeating timer host.
39
+ *
40
+ * @default globalThis timer functions
41
+ */
42
+ readonly scheduler?: IntervalScheduler;
43
+ }
44
+ /** State and controls returned by {@link useCountdown}. */
45
+ interface CountdownControls extends PausableControls {
46
+ /** Remaining whole ticks; never negative. */
47
+ readonly remaining: Readonly<ShallowRef<number>>;
48
+ /** Whether the countdown reached zero. */
49
+ readonly isComplete: ComputedRef<boolean>;
50
+ /**
51
+ * Reset to `count` (default: the initial count) and start ticking.
52
+ *
53
+ * @param count Replacement starting count.
54
+ */
55
+ readonly start: (count?: number) => void;
56
+ /** Pause and reset to `count` (default: the initial count). */
57
+ readonly reset: (count?: number) => void;
58
+ /** Pause and jump to zero without firing `onComplete`. */
59
+ readonly stop: () => void;
60
+ }
61
+ /**
62
+ * Count down from a number of ticks to zero.
63
+ *
64
+ * Builds on {@link useIntervalFn}: pause/resume keep the remaining count,
65
+ * `start` and `reset` restore it, and the timer pauses itself at zero after
66
+ * calling `onComplete`. The initial count is reactive only for later
67
+ * `start()`/`reset()` calls without an argument. Server rendering is
68
+ * hydration-stable (no timer, remaining stays at the initial count).
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const { remaining, start } = useCountdown(60, { onComplete: resendAvailable });
73
+ * start();
74
+ * ```
75
+ *
76
+ * @param initialCount Reactive starting count in ticks.
77
+ * @param options Cadence, callbacks, and scheduler policy.
78
+ * @default options {}
79
+ * @throws `RangeError` tagged `VIZE_COMPOSE_COUNTDOWN_INVALID_COUNT` when a
80
+ * count is negative or not finite.
81
+ * @returns Remaining count, completion flag, and controls.
82
+ */
83
+ declare function useCountdown(initialCount: MaybeRefOrGetter<number>, options?: UseCountdownOptions): CountdownControls;
84
+ //#endregion
85
+ export { CountdownControls, UseCountdownOptions, useCountdown };
@@ -0,0 +1,74 @@
1
+ import { useIntervalFn } from "./use-interval.mjs";
2
+ import { computed, shallowRef, toValue } from "vue";
3
+ //#region src/use-countdown.ts
4
+ function resolveCount(value) {
5
+ if (!Number.isFinite(value) || value < 0) throw new RangeError(`[VIZE_COMPOSE_COUNTDOWN_INVALID_COUNT] count must be finite and at least zero; received ${String(value)}`);
6
+ return Math.trunc(value);
7
+ }
8
+ /**
9
+ * Count down from a number of ticks to zero.
10
+ *
11
+ * Builds on {@link useIntervalFn}: pause/resume keep the remaining count,
12
+ * `start` and `reset` restore it, and the timer pauses itself at zero after
13
+ * calling `onComplete`. The initial count is reactive only for later
14
+ * `start()`/`reset()` calls without an argument. Server rendering is
15
+ * hydration-stable (no timer, remaining stays at the initial count).
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const { remaining, start } = useCountdown(60, { onComplete: resendAvailable });
20
+ * start();
21
+ * ```
22
+ *
23
+ * @param initialCount Reactive starting count in ticks.
24
+ * @param options Cadence, callbacks, and scheduler policy.
25
+ * @default options {}
26
+ * @throws `RangeError` tagged `VIZE_COMPOSE_COUNTDOWN_INVALID_COUNT` when a
27
+ * count is negative or not finite.
28
+ * @returns Remaining count, completion flag, and controls.
29
+ */
30
+ function useCountdown(initialCount, options = {}) {
31
+ const remaining = shallowRef(resolveCount(toValue(initialCount)));
32
+ const isComplete = computed(() => remaining.value === 0);
33
+ const interval = useIntervalFn(() => {
34
+ if (remaining.value === 0) return;
35
+ remaining.value -= 1;
36
+ options.onTick?.(remaining.value);
37
+ if (remaining.value === 0) {
38
+ interval.pause();
39
+ options.onComplete?.();
40
+ }
41
+ }, options.intervalMs ?? 1e3, {
42
+ immediate: false,
43
+ runOnServer: options.runOnServer ?? false,
44
+ ...options.scheduler === void 0 ? {} : { scheduler: options.scheduler }
45
+ });
46
+ const reset = (count) => {
47
+ interval.pause();
48
+ remaining.value = resolveCount(count ?? toValue(initialCount));
49
+ };
50
+ const start = (count) => {
51
+ reset(count);
52
+ if (remaining.value > 0) interval.resume();
53
+ };
54
+ const stop = () => {
55
+ interval.pause();
56
+ remaining.value = 0;
57
+ };
58
+ const resume = () => {
59
+ if (remaining.value > 0) interval.resume();
60
+ };
61
+ if ((options.immediate ?? false) && remaining.value > 0) interval.resume();
62
+ return {
63
+ isActive: interval.isActive,
64
+ pause: interval.pause,
65
+ resume,
66
+ remaining,
67
+ isComplete,
68
+ start,
69
+ reset,
70
+ stop
71
+ };
72
+ }
73
+ //#endregion
74
+ export { useCountdown };