@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
@@ -1,73 +1,2 @@
1
- //#region src/retry-delay.d.ts
2
- /** Options for {@link calculateRetryDelay}. */
3
- interface RetryDelayOptions {
4
- /**
5
- * Delay before the first retry, in milliseconds.
6
- *
7
- * @default 100
8
- */
9
- readonly initialDelayMs?: number;
10
- /**
11
- * Exponential multiplier applied for each subsequent retry.
12
- *
13
- * Values may be fractional but must be finite and at least one. The
14
- * calculated delay is rounded up so a retry never starts earlier than the
15
- * requested backoff.
16
- *
17
- * @default 2
18
- */
19
- readonly multiplier?: number;
20
- /**
21
- * Inclusive ceiling for the calculated delay, in milliseconds.
22
- *
23
- * The ceiling may be lower than {@link RetryDelayOptions.initialDelayMs};
24
- * in that case it also caps the first retry.
25
- *
26
- * @default 30000
27
- */
28
- readonly maximumDelayMs?: number;
29
- /**
30
- * Fraction of the capped delay eligible for downward jitter.
31
- *
32
- * `0` is deterministic exponential backoff, `0.5` samples from the upper
33
- * half of the range, and `1` applies full jitter from zero through the
34
- * capped delay. Jitter never exceeds the unjittered delay.
35
- *
36
- * @default 0
37
- */
38
- readonly jitterRatio?: number;
39
- /**
40
- * Entropy source returning a number in the half-open interval `[0, 1)`.
41
- * It is called exactly once when the selected jitter range contains more
42
- * than one integer millisecond, and is otherwise not read.
43
- *
44
- * @default Math.random
45
- */
46
- readonly random?: () => number;
47
- }
48
- /**
49
- * Calculate a bounded exponential-backoff delay for a one-based retry.
50
- *
51
- * The first retry is `retryAttempt = 1`. The result is always an integer from
52
- * zero through `2_147_483_647`, making it safe to pass to common host timer
53
- * APIs without implementation-specific clamping. The calculation is pure
54
- * unless jitter requires the supplied entropy source, and it performs no work
55
- * when the module is imported.
56
- *
57
- * Jitter samples uniformly from the inclusive integer range
58
- * `ceil(cappedDelay * (1 - jitterRatio))...cappedDelay`. Capping occurs before
59
- * jitter, so neither floating-point overflow nor entropy can exceed the
60
- * configured maximum.
61
- *
62
- * @param retryAttempt One-based retry number after a failed initial attempt.
63
- * @param options Backoff, cap, jitter, and entropy configuration.
64
- * @default options {}
65
- * @throws {RangeError} A tagged error when the retry number, delay options, or
66
- * entropy value is outside its documented range.
67
- * @throws {TypeError} A tagged error when `options` is not an object or
68
- * `random` is not callable.
69
- * @returns An integer delay in milliseconds.
70
- */
71
- declare function calculateRetryDelay(retryAttempt: number, options?: RetryDelayOptions): number;
72
- //#endregion
1
+ import { n as calculateRetryDelay, t as RetryDelayOptions } from "./retry-delay-DYsdq4SE.mjs";
73
2
  export { RetryDelayOptions, calculateRetryDelay };
@@ -0,0 +1,77 @@
1
+ import { MaybeRefOrGetter, Ref } from "vue";
2
+
3
+ //#region src/screen-orientation.d.ts
4
+ /** Lock targets accepted by `ScreenOrientation.lock()`. */
5
+ type ScreenOrientationLockType = "any" | "natural" | "landscape" | "portrait" | "portrait-primary" | "portrait-secondary" | "landscape-primary" | "landscape-secondary";
6
+ /** Subset of `ScreenOrientation`, including the lock methods absent from some DOM typings. */
7
+ interface ScreenOrientationLike extends EventTarget {
8
+ /** Current orientation type. */
9
+ readonly type: OrientationType;
10
+ /** Current orientation angle in degrees. */
11
+ readonly angle: number;
12
+ /** Lock the orientation (fullscreen or installed apps only in most browsers). */
13
+ readonly lock?: (orientation: ScreenOrientationLockType) => Promise<void>;
14
+ /** Release an orientation lock. */
15
+ readonly unlock?: () => void;
16
+ }
17
+ /** Window-like capability observed by {@link useScreenOrientation}. */
18
+ interface ScreenOrientationHost {
19
+ /** Screen exposing the orientation object. */
20
+ readonly screen: {
21
+ readonly orientation?: ScreenOrientationLike;
22
+ };
23
+ }
24
+ /** Options for {@link useScreenOrientation}. */
25
+ interface UseScreenOrientationOptions {
26
+ /**
27
+ * Orientation exposed during server rendering.
28
+ *
29
+ * @default "portrait-primary"
30
+ */
31
+ readonly ssrOrientation?: OrientationType;
32
+ /**
33
+ * Reactive window capability for alternate runtimes and tests.
34
+ *
35
+ * @default globalThis.window when available
36
+ */
37
+ readonly host?: MaybeRefOrGetter<ScreenOrientationHost | null | undefined>;
38
+ }
39
+ /** Reactive orientation state returned by {@link useScreenOrientation}. */
40
+ interface ScreenOrientationControls {
41
+ /** Whether the host exposes `screen.orientation`. `false` during server rendering. */
42
+ readonly isSupported: Readonly<Ref<boolean>>;
43
+ /** Current orientation type. */
44
+ readonly orientation: Readonly<Ref<OrientationType>>;
45
+ /** Current angle in degrees. */
46
+ readonly angle: Readonly<Ref<number>>;
47
+ /**
48
+ * Lock the orientation.
49
+ *
50
+ * @returns Whether a lock was requested and accepted.
51
+ */
52
+ readonly lockOrientation: (type: ScreenOrientationLockType) => Promise<boolean>;
53
+ /**
54
+ * Release a lock.
55
+ *
56
+ * @returns Whether an unlock method was available.
57
+ */
58
+ readonly unlockOrientation: () => boolean;
59
+ }
60
+ /**
61
+ * Track the screen orientation.
62
+ *
63
+ * Server renders expose `ssrOrientation` with angle `0`. The `change`
64
+ * listener follows the reactive host and is removed with the owning scope.
65
+ * Lock failures (not fullscreen, unsupported) resolve `false` instead of
66
+ * throwing.
67
+ *
68
+ * Inside a component the host is read after mounting, so hydration renders
69
+ * the server fallback first and never mismatches.
70
+ *
71
+ * @param options Server fallback and window capability.
72
+ * @default options {}
73
+ * @returns Reactive orientation plus lock actions.
74
+ */
75
+ declare function useScreenOrientation(options?: UseScreenOrientationOptions): ScreenOrientationControls;
76
+ //#endregion
77
+ export { ScreenOrientationControls, ScreenOrientationHost, ScreenOrientationLike, ScreenOrientationLockType, UseScreenOrientationOptions, useScreenOrientation };
@@ -0,0 +1,74 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { hasInjectionContext, readonly, ref, shallowRef, toValue, watch, watchPostEffect } from "vue";
3
+ //#region src/screen-orientation.ts
4
+ /**
5
+ * Track the screen orientation.
6
+ *
7
+ * Server renders expose `ssrOrientation` with angle `0`. The `change`
8
+ * listener follows the reactive host and is removed with the owning scope.
9
+ * Lock failures (not fullscreen, unsupported) resolve `false` instead of
10
+ * throwing.
11
+ *
12
+ * Inside a component the host is read after mounting, so hydration renders
13
+ * the server fallback first and never mismatches.
14
+ *
15
+ * @param options Server fallback and window capability.
16
+ * @default options {}
17
+ * @returns Reactive orientation plus lock actions.
18
+ */
19
+ function useScreenOrientation(options = {}) {
20
+ const fallback = options.ssrOrientation ?? "portrait-primary";
21
+ const isSupported = ref(false);
22
+ const orientation = ref(fallback);
23
+ const angle = ref(0);
24
+ const hydrated = shallowRef(!hasInjectionContext());
25
+ if (!hydrated.value) watchPostEffect(() => {
26
+ hydrated.value = true;
27
+ });
28
+ const target = () => {
29
+ if (!hydrated.value) return void 0;
30
+ return (options.host === void 0 ? browserScreenHost() : toValue(options.host))?.screen.orientation;
31
+ };
32
+ const stop = watch(target, (current, _previous, onCleanup) => {
33
+ isSupported.value = current !== void 0;
34
+ if (!current) {
35
+ orientation.value = fallback;
36
+ angle.value = 0;
37
+ return;
38
+ }
39
+ const update = () => {
40
+ orientation.value = current.type;
41
+ angle.value = current.angle;
42
+ };
43
+ update();
44
+ current.addEventListener("change", update, { passive: true });
45
+ onCleanup(() => current.removeEventListener("change", update));
46
+ }, { immediate: true });
47
+ tryOnScopeDispose(() => stop.stop());
48
+ return {
49
+ isSupported: readonly(isSupported),
50
+ orientation: readonly(orientation),
51
+ angle: readonly(angle),
52
+ lockOrientation: async (type) => {
53
+ const current = target();
54
+ if (typeof current?.lock !== "function") return false;
55
+ try {
56
+ await current.lock(type);
57
+ return true;
58
+ } catch {
59
+ return false;
60
+ }
61
+ },
62
+ unlockOrientation: () => {
63
+ const current = target();
64
+ if (typeof current?.unlock !== "function") return false;
65
+ current.unlock();
66
+ return true;
67
+ }
68
+ };
69
+ }
70
+ function browserScreenHost() {
71
+ return typeof window !== "undefined" ? window : void 0;
72
+ }
73
+ //#endregion
74
+ export { useScreenOrientation };
@@ -0,0 +1,37 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { WritableComputedRef } from "vue";
3
+
4
+ //#region src/scroll-lock.d.ts
5
+ /** Options for {@link useScrollLock}. */
6
+ interface UseScrollLockOptions {
7
+ /**
8
+ * Lock as soon as the element resolves.
9
+ *
10
+ * @default false
11
+ */
12
+ readonly initialValue?: boolean;
13
+ /**
14
+ * Also cancel `touchmove` on the element while locked (iOS Safari ignores
15
+ * `overflow: hidden` for touch scrolling).
16
+ *
17
+ * @default true
18
+ */
19
+ readonly preventTouchMove?: boolean;
20
+ }
21
+ /**
22
+ * Lock scrolling of a single element by toggling `overflow: hidden`.
23
+ *
24
+ * The element's previous inline `overflow` is restored on unlock, target
25
+ * change, and scope disposal. This is intentionally element-scoped: for the
26
+ * document viewport (nested lock stacking, scrollbar-gap compensation,
27
+ * scroll restoration) use `createScrollLock` from `@vizejs/ui/scroll-lock`.
28
+ * Server renders never touch styles and report the requested initial value.
29
+ *
30
+ * @param target Reactive element target.
31
+ * @param options Initial state and touch handling.
32
+ * @default options {}
33
+ * @returns Writable locked flag.
34
+ */
35
+ declare function useScrollLock(target: MaybeElementTarget, options?: UseScrollLockOptions): WritableComputedRef<boolean>;
36
+ //#endregion
37
+ export { UseScrollLockOptions, useScrollLock };
@@ -0,0 +1,50 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElement } from "./element-target.mjs";
3
+ import { computed, ref, watch } from "vue";
4
+ //#region src/scroll-lock.ts
5
+ /**
6
+ * Lock scrolling of a single element by toggling `overflow: hidden`.
7
+ *
8
+ * The element's previous inline `overflow` is restored on unlock, target
9
+ * change, and scope disposal. This is intentionally element-scoped: for the
10
+ * document viewport (nested lock stacking, scrollbar-gap compensation,
11
+ * scroll restoration) use `createScrollLock` from `@vizejs/ui/scroll-lock`.
12
+ * Server renders never touch styles and report the requested initial value.
13
+ *
14
+ * @param target Reactive element target.
15
+ * @param options Initial state and touch handling.
16
+ * @default options {}
17
+ * @returns Writable locked flag.
18
+ */
19
+ function useScrollLock(target, options = {}) {
20
+ const locked = ref(options.initialValue ?? false);
21
+ const preventTouchMove = options.preventTouchMove ?? true;
22
+ const onTouchMove = (event) => {
23
+ if (event.cancelable) event.preventDefault();
24
+ };
25
+ const stop = watch([() => resolveElement(target), locked], ([element, isLocked], _previous, onCleanup) => {
26
+ if (!element || !isLocked || !isStyled(element)) return;
27
+ const previous = element.style.overflow;
28
+ element.style.setProperty("overflow", "hidden");
29
+ if (preventTouchMove) element.addEventListener("touchmove", onTouchMove, { passive: false });
30
+ onCleanup(() => {
31
+ element.style.setProperty("overflow", previous);
32
+ element.removeEventListener("touchmove", onTouchMove);
33
+ });
34
+ }, {
35
+ immediate: true,
36
+ flush: "post"
37
+ });
38
+ tryOnScopeDispose(() => stop.stop());
39
+ return computed({
40
+ get: () => locked.value,
41
+ set: (next) => {
42
+ locked.value = next;
43
+ }
44
+ });
45
+ }
46
+ function isStyled(element) {
47
+ return "style" in element && typeof element.style === "object" && element.style !== null;
48
+ }
49
+ //#endregion
50
+ export { useScrollLock };
@@ -0,0 +1,158 @@
1
+ import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
2
+ import { ComponentPublicInstance, MaybeRefOrGetter, Ref, WritableComputedRef } from "vue";
3
+
4
+ //#region src/scroll.d.ts
5
+ /** Scroll extents shared by elements and the document root element. */
6
+ interface ScrollMetrics {
7
+ /** Total scrollable width. */
8
+ readonly scrollWidth: number;
9
+ /** Total scrollable height. */
10
+ readonly scrollHeight: number;
11
+ /** Visible width without scrollbars. */
12
+ readonly clientWidth: number;
13
+ /** Visible height without scrollbars. */
14
+ readonly clientHeight: number;
15
+ }
16
+ /** Window-like scroll container accepted by {@link useScroll}. */
17
+ interface ScrollWindowHost extends EventTarget {
18
+ /** Horizontal document scroll offset. */
19
+ readonly scrollX: number;
20
+ /** Vertical document scroll offset. */
21
+ readonly scrollY: number;
22
+ /** Scroll the document. */
23
+ scrollTo(options: ScrollToOptions): void;
24
+ /** Document whose root element reports the scroll extents. */
25
+ readonly document: {
26
+ readonly documentElement: ScrollMetrics;
27
+ };
28
+ }
29
+ /** Value accepted as a scroll container. */
30
+ type ScrollTargetValue = Element | ComponentPublicInstance | ScrollWindowHost | null | undefined;
31
+ /** Per-edge boolean state. */
32
+ interface ScrollEdges {
33
+ /** Left edge (or inline start in LTR). */
34
+ readonly left: boolean;
35
+ /** Right edge. */
36
+ readonly right: boolean;
37
+ /** Top edge. */
38
+ readonly top: boolean;
39
+ /** Bottom edge. */
40
+ readonly bottom: boolean;
41
+ }
42
+ /** Per-edge distance thresholds in CSS pixels. */
43
+ interface ScrollOffset {
44
+ /** Distance from the left edge that still counts as arrived. */
45
+ readonly left?: number;
46
+ /** Distance from the right edge that still counts as arrived. */
47
+ readonly right?: number;
48
+ /** Distance from the top edge that still counts as arrived. */
49
+ readonly top?: number;
50
+ /** Distance from the bottom edge that still counts as arrived. */
51
+ readonly bottom?: number;
52
+ }
53
+ /** Options for {@link useScroll}. */
54
+ interface UseScrollOptions {
55
+ /**
56
+ * Edge tolerances used to compute `arrivedState`.
57
+ *
58
+ * @default { left: 0, right: 0, top: 0, bottom: 0 }
59
+ */
60
+ readonly offset?: ScrollOffset;
61
+ /**
62
+ * Milliseconds without scroll events before `isScrolling` becomes `false`
63
+ * (used when the engine does not fire `scrollend`).
64
+ *
65
+ * @default 200
66
+ */
67
+ readonly idle?: number;
68
+ /**
69
+ * Scroll behavior used by `scrollTo` and the writable `x`/`y` refs.
70
+ *
71
+ * @default "auto"
72
+ */
73
+ readonly behavior?: MaybeRefOrGetter<ScrollBehavior>;
74
+ /**
75
+ * Called for every scroll event after the state has been updated.
76
+ *
77
+ * @default undefined
78
+ */
79
+ readonly onScroll?: (event: Event) => void;
80
+ /**
81
+ * Called once scrolling settles.
82
+ *
83
+ * @default undefined
84
+ */
85
+ readonly onStop?: (event: Event) => void;
86
+ /**
87
+ * Owns the idle timer.
88
+ *
89
+ * @default globalThis timer functions
90
+ */
91
+ readonly scheduler?: TimeoutScheduler;
92
+ /**
93
+ * Target resolution timing. `"post"` observes template refs after mount.
94
+ *
95
+ * @default "post"
96
+ */
97
+ readonly flush?: "pre" | "post" | "sync";
98
+ }
99
+ /** Reactive scroll state returned by {@link useScroll}. */
100
+ interface ScrollControls {
101
+ /** Horizontal offset. Assigning scrolls the target with the configured behavior. */
102
+ readonly x: WritableComputedRef<number>;
103
+ /** Vertical offset. Assigning scrolls the target with the configured behavior. */
104
+ readonly y: WritableComputedRef<number>;
105
+ /** Whether scroll events arrived within the idle window. */
106
+ readonly isScrolling: Readonly<Ref<boolean>>;
107
+ /** Whether each edge has been reached (within `offset`). */
108
+ readonly arrivedState: Readonly<ScrollEdges>;
109
+ /** Direction of the most recent scroll movement; reset when scrolling stops. */
110
+ readonly directions: Readonly<ScrollEdges>;
111
+ /** Re-read offsets and edges without waiting for a scroll event. */
112
+ readonly measure: () => void;
113
+ /** Scroll the target. Missing axes keep their current offset. */
114
+ readonly scrollTo: (options: {
115
+ readonly left?: number;
116
+ readonly top?: number;
117
+ }) => void;
118
+ }
119
+ /**
120
+ * Track the scroll offset, edges, and direction of an element or window.
121
+ *
122
+ * During server rendering (or while the target is unresolved) offsets are `0`,
123
+ * the top/left edges report arrived, and the bottom/right edges do not —
124
+ * matching an unscrolled page, so hydration is stable. The scroll listener is
125
+ * passive and removed together with the idle timer when the owning reactive
126
+ * scope stops.
127
+ *
128
+ * Inside a component the host is read after mounting, so hydration renders
129
+ * the server fallback first and never mismatches.
130
+ *
131
+ * @param target Reactive element, component, or window-like target.
132
+ * @param options Edge offsets, idle timing, behavior, and callbacks.
133
+ * @default options {}
134
+ * @returns Writable offsets, activity, edges, directions, and controls.
135
+ */
136
+ declare function useScroll(target: MaybeRefOrGetter<ScrollTargetValue>, options?: UseScrollOptions): ScrollControls;
137
+ /** Options for {@link useWindowScroll}. */
138
+ interface UseWindowScrollOptions extends UseScrollOptions {
139
+ /**
140
+ * Reactive window capability for alternate runtimes and tests.
141
+ *
142
+ * @default globalThis.window when available
143
+ */
144
+ readonly host?: MaybeRefOrGetter<ScrollWindowHost | null | undefined>;
145
+ }
146
+ /**
147
+ * Track the document scroll position.
148
+ *
149
+ * Equivalent to {@link useScroll} with the window as target, so it shares its
150
+ * SSR-stable defaults and scope-bound cleanup.
151
+ *
152
+ * @param options Window capability plus every {@link useScroll} option.
153
+ * @default options {}
154
+ * @returns The same controls as {@link useScroll}.
155
+ */
156
+ declare function useWindowScroll(options?: UseWindowScrollOptions): ScrollControls;
157
+ //#endregion
158
+ export { ScrollControls, ScrollEdges, ScrollMetrics, ScrollOffset, ScrollTargetValue, ScrollWindowHost, UseScrollOptions, UseWindowScrollOptions, useScroll, useWindowScroll };
@@ -0,0 +1,172 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { isElementNode, resolveElement } from "./element-target.mjs";
3
+ import { computed, hasInjectionContext, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toValue, watch, watchPostEffect } from "vue";
4
+ //#region src/scroll.ts
5
+ const defaultScheduler = {
6
+ setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
7
+ clearTimeout: (handle) => {
8
+ globalThis.clearTimeout(handle);
9
+ }
10
+ };
11
+ /**
12
+ * Track the scroll offset, edges, and direction of an element or window.
13
+ *
14
+ * During server rendering (or while the target is unresolved) offsets are `0`,
15
+ * the top/left edges report arrived, and the bottom/right edges do not —
16
+ * matching an unscrolled page, so hydration is stable. The scroll listener is
17
+ * passive and removed together with the idle timer when the owning reactive
18
+ * scope stops.
19
+ *
20
+ * Inside a component the host is read after mounting, so hydration renders
21
+ * the server fallback first and never mismatches.
22
+ *
23
+ * @param target Reactive element, component, or window-like target.
24
+ * @param options Edge offsets, idle timing, behavior, and callbacks.
25
+ * @default options {}
26
+ * @returns Writable offsets, activity, edges, directions, and controls.
27
+ */
28
+ function useScroll(target, options = {}) {
29
+ const offset = options.offset ?? {};
30
+ const idle = options.idle ?? 200;
31
+ const scheduler = options.scheduler ?? defaultScheduler;
32
+ const internalX = ref(0);
33
+ const internalY = ref(0);
34
+ const isScrolling = ref(false);
35
+ const hydrated = shallowRef(!hasInjectionContext());
36
+ if (!hydrated.value) watchPostEffect(() => {
37
+ hydrated.value = true;
38
+ });
39
+ const arrivedState = shallowReactive({
40
+ left: true,
41
+ right: false,
42
+ top: true,
43
+ bottom: false
44
+ });
45
+ const directions = shallowReactive({
46
+ left: false,
47
+ right: false,
48
+ top: false,
49
+ bottom: false
50
+ });
51
+ let idleHandle;
52
+ let hasIdleTimer = false;
53
+ const resolveContainer = () => {
54
+ if (!hydrated.value) return null;
55
+ const value = toValue(target);
56
+ if (isScrollWindow(value)) return value;
57
+ return resolveElement(value);
58
+ };
59
+ const measure = () => {
60
+ const container = resolveContainer();
61
+ if (!container) return;
62
+ const metrics = isScrollWindow(container) ? container.document.documentElement : container;
63
+ const x = isScrollWindow(container) ? container.scrollX : container.scrollLeft;
64
+ const y = isScrollWindow(container) ? container.scrollY : container.scrollTop;
65
+ directions.left = x < internalX.value;
66
+ directions.right = x > internalX.value;
67
+ directions.top = y < internalY.value;
68
+ directions.bottom = y > internalY.value;
69
+ internalX.value = x;
70
+ internalY.value = y;
71
+ const left = Math.abs(x) <= (offset.left ?? 0);
72
+ const top = Math.abs(y) <= (offset.top ?? 0);
73
+ arrivedState.left = left;
74
+ arrivedState.top = top;
75
+ arrivedState.right = Math.abs(x) + metrics.clientWidth >= metrics.scrollWidth - (offset.right ?? 0) - 1;
76
+ arrivedState.bottom = Math.abs(y) + metrics.clientHeight >= metrics.scrollHeight - (offset.bottom ?? 0) - 1;
77
+ };
78
+ const settle = (event) => {
79
+ if (!isScrolling.value) return;
80
+ isScrolling.value = false;
81
+ directions.left = false;
82
+ directions.right = false;
83
+ directions.top = false;
84
+ directions.bottom = false;
85
+ options.onStop?.(event);
86
+ };
87
+ const clearIdle = () => {
88
+ if (!hasIdleTimer) return;
89
+ scheduler.clearTimeout(idleHandle);
90
+ hasIdleTimer = false;
91
+ };
92
+ const onScroll = (event) => {
93
+ measure();
94
+ isScrolling.value = true;
95
+ clearIdle();
96
+ idleHandle = scheduler.setTimeout(() => {
97
+ hasIdleTimer = false;
98
+ settle(event);
99
+ }, idle);
100
+ hasIdleTimer = true;
101
+ options.onScroll?.(event);
102
+ };
103
+ const onScrollEnd = (event) => {
104
+ clearIdle();
105
+ settle(event);
106
+ };
107
+ const stopWatch = watch(resolveContainer, (container, _previous, onCleanup) => {
108
+ if (!container) return;
109
+ measure();
110
+ const listenerOptions = { passive: true };
111
+ container.addEventListener("scroll", onScroll, listenerOptions);
112
+ container.addEventListener("scrollend", onScrollEnd, listenerOptions);
113
+ onCleanup(() => {
114
+ container.removeEventListener("scroll", onScroll);
115
+ container.removeEventListener("scrollend", onScrollEnd);
116
+ clearIdle();
117
+ });
118
+ }, {
119
+ immediate: true,
120
+ flush: options.flush ?? "post"
121
+ });
122
+ tryOnScopeDispose(() => {
123
+ stopWatch.stop();
124
+ clearIdle();
125
+ });
126
+ const scrollTo = (next) => {
127
+ const container = resolveContainer();
128
+ if (!container) return;
129
+ container.scrollTo({
130
+ left: next.left ?? internalX.value,
131
+ top: next.top ?? internalY.value,
132
+ behavior: toValue(options.behavior) ?? "auto"
133
+ });
134
+ };
135
+ return {
136
+ x: computed({
137
+ get: () => internalX.value,
138
+ set: (left) => scrollTo({ left })
139
+ }),
140
+ y: computed({
141
+ get: () => internalY.value,
142
+ set: (top) => scrollTo({ top })
143
+ }),
144
+ isScrolling: readonly(isScrolling),
145
+ arrivedState: shallowReadonly(arrivedState),
146
+ directions: shallowReadonly(directions),
147
+ measure,
148
+ scrollTo
149
+ };
150
+ }
151
+ /**
152
+ * Track the document scroll position.
153
+ *
154
+ * Equivalent to {@link useScroll} with the window as target, so it shares its
155
+ * SSR-stable defaults and scope-bound cleanup.
156
+ *
157
+ * @param options Window capability plus every {@link useScroll} option.
158
+ * @default options {}
159
+ * @returns The same controls as {@link useScroll}.
160
+ */
161
+ function useWindowScroll(options = {}) {
162
+ const { host, ...scrollOptions } = options;
163
+ return useScroll(() => host === void 0 ? browserScrollWindow() : toValue(host), scrollOptions);
164
+ }
165
+ function isScrollWindow(value) {
166
+ return typeof value === "object" && value !== null && !isElementNode(value) && "scrollX" in value && "document" in value;
167
+ }
168
+ function browserScrollWindow() {
169
+ return typeof window !== "undefined" ? window : void 0;
170
+ }
171
+ //#endregion
172
+ export { useScroll, useWindowScroll };