@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,96 @@
1
+ import { ComputedRef, MaybeRefOrGetter, Ref, WritableComputedRef } from "vue";
2
+
3
+ //#region src/math.d.ts
4
+ /**
5
+ * Number kept inside `[min, max]`.
6
+ *
7
+ * A writable source (a number or a writable ref) yields a writable ref whose
8
+ * reads and writes are clamped; writes go through to the source ref. A
9
+ * getter or computed source yields a readonly computed. Bounds are reactive.
10
+ * Pure derived state: SSR-safe and nothing to dispose.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const volume = useClamp(50, 0, 100);
15
+ * volume.value = 150; // 100
16
+ * const progress = useClamp(() => loaded.value / total.value, 0, 1);
17
+ * ```
18
+ *
19
+ * @param value Source number, writable ref, or getter.
20
+ * @param min Reactive inclusive lower bound.
21
+ * @param max Reactive inclusive upper bound.
22
+ * @throws `RangeError` tagged `VIZE_COMPOSE_MATH_INVALID_RANGE` on read or
23
+ * write when `min > max`.
24
+ * @returns Writable clamped ref, or a readonly computed for getters.
25
+ */
26
+ declare function useClamp(value: (() => number) | ComputedRef<number>, min: MaybeRefOrGetter<number>, max: MaybeRefOrGetter<number>): ComputedRef<number>;
27
+ declare function useClamp(value: number | Ref<number>, min: MaybeRefOrGetter<number>, max: MaybeRefOrGetter<number>): WritableComputedRef<number>;
28
+ /** Rounding strategy used by {@link useRound}. */
29
+ type RoundingMethod = "round" | "floor" | "ceil" | "trunc";
30
+ /** Options for {@link useRound}. */
31
+ interface UseRoundOptions {
32
+ /**
33
+ * Decimal places to keep; negative values round to tens, hundreds, …
34
+ * Reactive.
35
+ *
36
+ * @default 0
37
+ */
38
+ readonly precision?: MaybeRefOrGetter<number>;
39
+ /**
40
+ * Rounding strategy.
41
+ *
42
+ * @default "round"
43
+ */
44
+ readonly method?: RoundingMethod;
45
+ }
46
+ /**
47
+ * Reactive rounding with decimal precision.
48
+ *
49
+ * Uses exponent shifting instead of multiplying by powers of ten, so values
50
+ * such as `1.005` round to `1.01` at two decimals. Pure derived state.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * const price = useRound(rawPrice, { precision: 2 });
55
+ * ```
56
+ *
57
+ * @param value Reactive number.
58
+ * @param options Precision and method.
59
+ * @default options {}
60
+ * @throws `RangeError` tagged `VIZE_COMPOSE_MATH_INVALID_PRECISION` on read
61
+ * when the precision is not an integer.
62
+ * @returns Computed rounded number.
63
+ */
64
+ declare function useRound(value: MaybeRefOrGetter<number>, options?: UseRoundOptions): ComputedRef<number>;
65
+ /** A `[start, end]` numeric interval. */
66
+ type ProjectionDomain = readonly [start: number, end: number];
67
+ /** Options for {@link useProjection}. */
68
+ interface UseProjectionOptions {
69
+ /**
70
+ * Clamp the result into the target domain.
71
+ *
72
+ * @default false
73
+ */
74
+ readonly clamp?: boolean;
75
+ }
76
+ /**
77
+ * Linearly map a value from one domain to another.
78
+ *
79
+ * Domains are reactive tuples and may be reversed (`[100, 0]`). A degenerate
80
+ * source domain maps everything to the target start. Pure derived state.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * const percent = useProjection(scrollY, () => [0, maxScroll.value], [0, 100], { clamp: true });
85
+ * ```
86
+ *
87
+ * @param value Reactive number in the source domain.
88
+ * @param from Reactive source domain.
89
+ * @param to Reactive target domain.
90
+ * @param options Clamping.
91
+ * @default options {}
92
+ * @returns Computed projected number.
93
+ */
94
+ declare function useProjection(value: MaybeRefOrGetter<number>, from: MaybeRefOrGetter<ProjectionDomain>, to: MaybeRefOrGetter<ProjectionDomain>, options?: UseProjectionOptions): ComputedRef<number>;
95
+ //#endregion
96
+ export { ProjectionDomain, RoundingMethod, UseProjectionOptions, UseRoundOptions, useClamp, useProjection, useRound };
package/dist/math.mjs ADDED
@@ -0,0 +1,84 @@
1
+ import { computed, isReadonly, isRef, shallowRef, toValue } from "vue";
2
+ //#region src/math.ts
3
+ function clampNumber(value, min, max) {
4
+ if (min > max) throw new RangeError(`[VIZE_COMPOSE_MATH_INVALID_RANGE] min must not exceed max; received [${String(min)}, ${String(max)}]`);
5
+ return Math.min(max, Math.max(min, value));
6
+ }
7
+ function isWritableRef(value) {
8
+ return isRef(value) && !isReadonly(value);
9
+ }
10
+ function useClamp(value, min, max) {
11
+ let source;
12
+ if (isWritableRef(value)) source = value;
13
+ else if (typeof value === "number") source = shallowRef(value);
14
+ else return computed(() => clampNumber(toValue(value), toValue(min), toValue(max)));
15
+ return computed({
16
+ get: () => clampNumber(source.value, toValue(min), toValue(max)),
17
+ set: (next) => {
18
+ source.value = clampNumber(next, toValue(min), toValue(max));
19
+ }
20
+ });
21
+ }
22
+ /** Multiply by `10 ** places` exactly, by editing the decimal exponent. */
23
+ function shiftExponent(value, places) {
24
+ const [mantissa, exponent = "0"] = String(value).split("e");
25
+ return Number(`${mantissa}e${Number(exponent) + places}`);
26
+ }
27
+ /**
28
+ * Reactive rounding with decimal precision.
29
+ *
30
+ * Uses exponent shifting instead of multiplying by powers of ten, so values
31
+ * such as `1.005` round to `1.01` at two decimals. Pure derived state.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const price = useRound(rawPrice, { precision: 2 });
36
+ * ```
37
+ *
38
+ * @param value Reactive number.
39
+ * @param options Precision and method.
40
+ * @default options {}
41
+ * @throws `RangeError` tagged `VIZE_COMPOSE_MATH_INVALID_PRECISION` on read
42
+ * when the precision is not an integer.
43
+ * @returns Computed rounded number.
44
+ */
45
+ function useRound(value, options = {}) {
46
+ return computed(() => {
47
+ const precision = toValue(options.precision ?? 0);
48
+ if (!Number.isInteger(precision)) throw new RangeError(`[VIZE_COMPOSE_MATH_INVALID_PRECISION] precision must be an integer; received ${String(precision)}`);
49
+ const number = toValue(value);
50
+ if (!Number.isFinite(number)) return number;
51
+ const round = Math[options.method ?? "round"];
52
+ return shiftExponent(round(shiftExponent(number, precision)), -precision);
53
+ });
54
+ }
55
+ /**
56
+ * Linearly map a value from one domain to another.
57
+ *
58
+ * Domains are reactive tuples and may be reversed (`[100, 0]`). A degenerate
59
+ * source domain maps everything to the target start. Pure derived state.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * const percent = useProjection(scrollY, () => [0, maxScroll.value], [0, 100], { clamp: true });
64
+ * ```
65
+ *
66
+ * @param value Reactive number in the source domain.
67
+ * @param from Reactive source domain.
68
+ * @param to Reactive target domain.
69
+ * @param options Clamping.
70
+ * @default options {}
71
+ * @returns Computed projected number.
72
+ */
73
+ function useProjection(value, from, to, options = {}) {
74
+ return computed(() => {
75
+ const [fromStart, fromEnd] = toValue(from);
76
+ const [toStart, toEnd] = toValue(to);
77
+ const span = fromEnd - fromStart;
78
+ const projected = toStart + (span === 0 ? 0 : (toValue(value) - fromStart) / span) * (toEnd - toStart);
79
+ if (!(options.clamp ?? false)) return projected;
80
+ return Math.min(Math.max(projected, Math.min(toStart, toEnd)), Math.max(toStart, toEnd));
81
+ });
82
+ }
83
+ //#endregion
84
+ export { useClamp, useProjection, useRound };
@@ -25,7 +25,9 @@ interface UseMediaQueryOptions {
25
25
  * Evaluate a reactive media query without requiring browser globals.
26
26
  *
27
27
  * During server rendering (or whenever no capability host resolves) the ref
28
- * holds the configured server value and no subscription is created. The
28
+ * holds the configured server value and no subscription is created. Inside a
29
+ * component the first match is read after mounting, so hydration renders the
30
+ * server value first and never mismatches. The
29
31
  * change subscription follows the reactive query and host: each
30
32
  * re-evaluation removes the previous listener, and the final listener is
31
33
  * removed when the owning reactive scope stops. Call inside an active scope
@@ -1,10 +1,12 @@
1
- import { computed, readonly, ref, toValue, watchEffect } from "vue";
1
+ import { computed, hasInjectionContext, readonly, ref, toValue, watchEffect } from "vue";
2
2
  //#region src/media-query.ts
3
3
  /**
4
4
  * Evaluate a reactive media query without requiring browser globals.
5
5
  *
6
6
  * During server rendering (or whenever no capability host resolves) the ref
7
- * holds the configured server value and no subscription is created. The
7
+ * holds the configured server value and no subscription is created. Inside a
8
+ * component the first match is read after mounting, so hydration renders the
9
+ * server value first and never mismatches. The
8
10
  * change subscription follows the reactive query and host: each
9
11
  * re-evaluation removes the previous listener, and the final listener is
10
12
  * removed when the owning reactive scope stops. Call inside an active scope
@@ -31,7 +33,7 @@ function useMediaQuery(query, options = {}) {
31
33
  update();
32
34
  media.addEventListener("change", update);
33
35
  onCleanup(() => media.removeEventListener("change", update));
34
- });
36
+ }, { flush: hasInjectionContext() ? "post" : "pre" });
35
37
  return readonly(matches);
36
38
  }
37
39
  /**
@@ -0,0 +1,49 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { MouseControls, UseMouseOptions } from "./mouse.mjs";
3
+ import { Ref } from "vue";
4
+
5
+ //#region src/mouse-in-element.d.ts
6
+ /** Options for {@link useMouseInElement}. */
7
+ interface UseMouseInElementOptions extends Omit<UseMouseOptions, "type"> {
8
+ /**
9
+ * Keep updating element-relative coordinates while the pointer is outside
10
+ * the element. When `false`, they freeze at the last inside position.
11
+ *
12
+ * @default true
13
+ */
14
+ readonly handleOutside?: boolean;
15
+ }
16
+ /** Reactive state returned by {@link useMouseInElement}. */
17
+ interface MouseInElementControls extends MouseControls {
18
+ /** Pointer position relative to the element's left edge. */
19
+ readonly elementX: Readonly<Ref<number>>;
20
+ /** Pointer position relative to the element's top edge. */
21
+ readonly elementY: Readonly<Ref<number>>;
22
+ /** Element left edge in viewport coordinates at the latest update. */
23
+ readonly elementPositionX: Readonly<Ref<number>>;
24
+ /** Element top edge in viewport coordinates at the latest update. */
25
+ readonly elementPositionY: Readonly<Ref<number>>;
26
+ /** Element width at the latest update. */
27
+ readonly elementWidth: Readonly<Ref<number>>;
28
+ /** Element height at the latest update. */
29
+ readonly elementHeight: Readonly<Ref<number>>;
30
+ /** Whether the pointer is outside the element. `true` during server rendering. */
31
+ readonly isOutside: Readonly<Ref<boolean>>;
32
+ /** Stop updating element-relative state. Idempotent. */
33
+ readonly stop: () => void;
34
+ }
35
+ /**
36
+ * Track the pointer position relative to an element.
37
+ *
38
+ * Built on {@link useMouse} in client coordinates: every move re-reads the
39
+ * element rectangle, so transforms and scrolling are reflected. Server
40
+ * renders report zero geometry and `isOutside: true`.
41
+ *
42
+ * @param target Reactive element target.
43
+ * @param options Outside handling plus {@link useMouse} options.
44
+ * @default options {}
45
+ * @returns Pointer, element-relative, and geometry refs.
46
+ */
47
+ declare function useMouseInElement(target: MaybeElementTarget, options?: UseMouseInElementOptions): MouseInElementControls;
48
+ //#endregion
49
+ export { MouseInElementControls, UseMouseInElementOptions, useMouseInElement };
@@ -0,0 +1,66 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElement } from "./element-target.mjs";
3
+ import { useMouse } from "./mouse.mjs";
4
+ import { computed, readonly, ref, watch } from "vue";
5
+ //#region src/mouse-in-element.ts
6
+ /**
7
+ * Track the pointer position relative to an element.
8
+ *
9
+ * Built on {@link useMouse} in client coordinates: every move re-reads the
10
+ * element rectangle, so transforms and scrolling are reflected. Server
11
+ * renders report zero geometry and `isOutside: true`.
12
+ *
13
+ * @param target Reactive element target.
14
+ * @param options Outside handling plus {@link useMouse} options.
15
+ * @default options {}
16
+ * @returns Pointer, element-relative, and geometry refs.
17
+ */
18
+ function useMouseInElement(target, options = {}) {
19
+ const handleOutside = options.handleOutside ?? true;
20
+ const mouse = useMouse({
21
+ ...options,
22
+ type: "client"
23
+ });
24
+ const elementX = ref(0);
25
+ const elementY = ref(0);
26
+ const elementPositionX = ref(0);
27
+ const elementPositionY = ref(0);
28
+ const elementWidth = ref(0);
29
+ const elementHeight = ref(0);
30
+ const isOutside = ref(true);
31
+ const stopWatch = watch([
32
+ computed(() => resolveElement(target)),
33
+ mouse.x,
34
+ mouse.y,
35
+ mouse.sourceType
36
+ ], ([currentElement, x, y, source]) => {
37
+ if (!currentElement || source === null) return;
38
+ const rect = currentElement.getBoundingClientRect();
39
+ elementPositionX.value = rect.left;
40
+ elementPositionY.value = rect.top;
41
+ elementWidth.value = rect.width;
42
+ elementHeight.value = rect.height;
43
+ const relativeX = x - rect.left;
44
+ const relativeY = y - rect.top;
45
+ isOutside.value = rect.width === 0 || rect.height === 0 || relativeX < 0 || relativeY < 0 || relativeX > rect.width || relativeY > rect.height;
46
+ if (handleOutside || !isOutside.value) {
47
+ elementX.value = relativeX;
48
+ elementY.value = relativeY;
49
+ }
50
+ }, { flush: "sync" });
51
+ const stop = () => stopWatch.stop();
52
+ tryOnScopeDispose(stop);
53
+ return {
54
+ ...mouse,
55
+ elementX: readonly(elementX),
56
+ elementY: readonly(elementY),
57
+ elementPositionX: readonly(elementPositionX),
58
+ elementPositionY: readonly(elementPositionY),
59
+ elementWidth: readonly(elementWidth),
60
+ elementHeight: readonly(elementHeight),
61
+ isOutside: readonly(isOutside),
62
+ stop
63
+ };
64
+ }
65
+ //#endregion
66
+ export { useMouseInElement };
@@ -0,0 +1,77 @@
1
+ import { MaybeRefOrGetter, Ref } from "vue";
2
+
3
+ //#region src/mouse.d.ts
4
+ /** Coordinate space reported by {@link useMouse}. */
5
+ type MouseCoordinateType = "page" | "client" | "screen" | "movement";
6
+ /** Input device that produced the latest coordinates. */
7
+ type MouseSourceType = "mouse" | "touch";
8
+ /** Two-dimensional coordinate in CSS pixels. */
9
+ interface Point {
10
+ /** Horizontal coordinate. */
11
+ readonly x: number;
12
+ /** Vertical coordinate. */
13
+ readonly y: number;
14
+ }
15
+ /**
16
+ * Custom coordinate extractor. Return `null` to ignore an event.
17
+ *
18
+ * Receives the mouse event, or the first touch point for touch input.
19
+ */
20
+ type MouseCoordinateExtractor = (input: MouseEvent | Touch) => Point | null;
21
+ /** Options for {@link useMouse}. */
22
+ interface UseMouseOptions {
23
+ /**
24
+ * Coordinate space, or a custom extractor.
25
+ *
26
+ * @default "page"
27
+ */
28
+ readonly type?: MouseCoordinateType | MouseCoordinateExtractor;
29
+ /**
30
+ * Event target to listen on.
31
+ *
32
+ * @default globalThis.window when available
33
+ */
34
+ readonly target?: MaybeRefOrGetter<EventTarget | null | undefined>;
35
+ /**
36
+ * Track touch input in addition to mouse input.
37
+ *
38
+ * @default true
39
+ */
40
+ readonly touch?: boolean;
41
+ /**
42
+ * Restore `initialValue` when a touch ends.
43
+ *
44
+ * @default false
45
+ */
46
+ readonly resetOnTouchEnds?: boolean;
47
+ /**
48
+ * Coordinates exposed before any input and during server rendering.
49
+ *
50
+ * @default { x: 0, y: 0 }
51
+ */
52
+ readonly initialValue?: Point;
53
+ }
54
+ /** Reactive pointer position returned by {@link useMouse}. */
55
+ interface MouseControls {
56
+ /** Latest horizontal coordinate. */
57
+ readonly x: Readonly<Ref<number>>;
58
+ /** Latest vertical coordinate. */
59
+ readonly y: Readonly<Ref<number>>;
60
+ /** Device that produced the latest coordinates; `null` before any input. */
61
+ readonly sourceType: Readonly<Ref<MouseSourceType | null>>;
62
+ }
63
+ /**
64
+ * Track the mouse (and optionally touch) position.
65
+ *
66
+ * Listens passively for `mousemove`, `dragover`, and touch events on the
67
+ * target; listeners follow the reactive target and are removed with the
68
+ * owning reactive scope. Server renders expose `initialValue` with a `null`
69
+ * source type.
70
+ *
71
+ * @param options Coordinate space, target, touch handling, and initial value.
72
+ * @default options {}
73
+ * @returns Reactive coordinates and input source.
74
+ */
75
+ declare function useMouse(options?: UseMouseOptions): MouseControls;
76
+ //#endregion
77
+ export { MouseControls, MouseCoordinateExtractor, MouseCoordinateType, MouseSourceType, Point, UseMouseOptions, useMouse };
package/dist/mouse.mjs ADDED
@@ -0,0 +1,100 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { readonly, ref, toValue, watch } from "vue";
3
+ //#region src/mouse.ts
4
+ /**
5
+ * Track the mouse (and optionally touch) position.
6
+ *
7
+ * Listens passively for `mousemove`, `dragover`, and touch events on the
8
+ * target; listeners follow the reactive target and are removed with the
9
+ * owning reactive scope. Server renders expose `initialValue` with a `null`
10
+ * source type.
11
+ *
12
+ * @param options Coordinate space, target, touch handling, and initial value.
13
+ * @default options {}
14
+ * @returns Reactive coordinates and input source.
15
+ */
16
+ function useMouse(options = {}) {
17
+ const { touch = true, resetOnTouchEnds = false } = options;
18
+ const initial = options.initialValue ?? {
19
+ x: 0,
20
+ y: 0
21
+ };
22
+ const extract = extractorFor(options.type ?? "page");
23
+ const x = ref(initial.x);
24
+ const y = ref(initial.y);
25
+ const sourceType = ref(null);
26
+ const apply = (point, source) => {
27
+ if (!point) return;
28
+ x.value = point.x;
29
+ y.value = point.y;
30
+ sourceType.value = source;
31
+ };
32
+ const onMouse = (event) => {
33
+ if (isMouseEvent(event)) apply(extract(event), "mouse");
34
+ };
35
+ const onTouch = (event) => {
36
+ if (!isTouchEvent(event)) return;
37
+ const first = event.touches[0];
38
+ if (first) apply(extract(first), "touch");
39
+ };
40
+ const onTouchEnd = () => {
41
+ x.value = initial.x;
42
+ y.value = initial.y;
43
+ };
44
+ const stop = watch(() => options.target === void 0 ? browserWindow() : toValue(options.target), (target, _previous, onCleanup) => {
45
+ if (!target) return;
46
+ const listenerOptions = { passive: true };
47
+ target.addEventListener("mousemove", onMouse, listenerOptions);
48
+ target.addEventListener("dragover", onMouse, listenerOptions);
49
+ if (touch) {
50
+ target.addEventListener("touchstart", onTouch, listenerOptions);
51
+ target.addEventListener("touchmove", onTouch, listenerOptions);
52
+ if (resetOnTouchEnds) target.addEventListener("touchend", onTouchEnd, listenerOptions);
53
+ }
54
+ onCleanup(() => {
55
+ target.removeEventListener("mousemove", onMouse);
56
+ target.removeEventListener("dragover", onMouse);
57
+ target.removeEventListener("touchstart", onTouch);
58
+ target.removeEventListener("touchmove", onTouch);
59
+ target.removeEventListener("touchend", onTouchEnd);
60
+ });
61
+ }, { immediate: true });
62
+ tryOnScopeDispose(() => stop.stop());
63
+ return {
64
+ x: readonly(x),
65
+ y: readonly(y),
66
+ sourceType: readonly(sourceType)
67
+ };
68
+ }
69
+ function extractorFor(type) {
70
+ if (typeof type === "function") return type;
71
+ switch (type) {
72
+ case "page": return (input) => ({
73
+ x: input.pageX,
74
+ y: input.pageY
75
+ });
76
+ case "client": return (input) => ({
77
+ x: input.clientX,
78
+ y: input.clientY
79
+ });
80
+ case "screen": return (input) => ({
81
+ x: input.screenX,
82
+ y: input.screenY
83
+ });
84
+ case "movement": return (input) => "movementX" in input ? {
85
+ x: input.movementX,
86
+ y: input.movementY
87
+ } : null;
88
+ }
89
+ }
90
+ function isMouseEvent(event) {
91
+ return "clientX" in event && "button" in event;
92
+ }
93
+ function isTouchEvent(event) {
94
+ return "touches" in event;
95
+ }
96
+ function browserWindow() {
97
+ return typeof window !== "undefined" ? window : void 0;
98
+ }
99
+ //#endregion
100
+ export { useMouse };
@@ -0,0 +1,98 @@
1
+ import { r as MaybeElementTargets } from "./element-target-Crpxl4D9.mjs";
2
+ import { MaybeRefOrGetter, Ref } from "vue";
3
+
4
+ //#region src/mutation-observer.d.ts
5
+ /** Runtime capability that supplies the `MutationObserver` constructor. */
6
+ interface MutationObserverHost {
7
+ /** `MutationObserver` constructor, absent in unsupported runtimes. */
8
+ readonly MutationObserver?: new (callback: MutationCallback) => MutationObserver;
9
+ }
10
+ /** Options for {@link useMutationObserver}. */
11
+ interface UseMutationObserverOptions {
12
+ /**
13
+ * Observe attribute changes.
14
+ *
15
+ * @default false (implicitly `true` when `attributeFilter` or `attributeOldValue` is set)
16
+ */
17
+ readonly attributes?: boolean;
18
+ /**
19
+ * Observe child-list changes.
20
+ *
21
+ * @default false
22
+ */
23
+ readonly childList?: boolean;
24
+ /**
25
+ * Extend observation to the whole subtree.
26
+ *
27
+ * @default false
28
+ */
29
+ readonly subtree?: boolean;
30
+ /**
31
+ * Observe text-content changes.
32
+ *
33
+ * @default false (implicitly `true` when `characterDataOldValue` is set)
34
+ */
35
+ readonly characterData?: boolean;
36
+ /**
37
+ * Record the previous attribute value.
38
+ *
39
+ * @default false
40
+ */
41
+ readonly attributeOldValue?: boolean;
42
+ /**
43
+ * Record the previous text value.
44
+ *
45
+ * @default false
46
+ */
47
+ readonly characterDataOldValue?: boolean;
48
+ /**
49
+ * Restrict attribute observation to these local names.
50
+ *
51
+ * @default undefined (all attributes)
52
+ */
53
+ readonly attributeFilter?: readonly string[];
54
+ /**
55
+ * Reactive constructor capability for alternate runtimes and tests.
56
+ *
57
+ * @default globalThis when it provides `MutationObserver`
58
+ */
59
+ readonly host?: MaybeRefOrGetter<MutationObserverHost | null | undefined>;
60
+ /**
61
+ * Target resolution timing. `"post"` observes template refs after mount.
62
+ *
63
+ * @default "post"
64
+ */
65
+ readonly flush?: "pre" | "post" | "sync";
66
+ }
67
+ /** Controls returned by {@link useMutationObserver}. */
68
+ interface MutationObserverControls {
69
+ /** Whether the host provides `MutationObserver`. `false` during server rendering. */
70
+ readonly isSupported: Readonly<Ref<boolean>>;
71
+ /**
72
+ * Drain the records queued by the active observer without invoking the
73
+ * callback.
74
+ *
75
+ * @returns Pending records, or an empty list without an active observer.
76
+ */
77
+ readonly takeRecords: () => MutationRecord[];
78
+ /** Disconnect permanently. Idempotent. */
79
+ readonly stop: () => void;
80
+ }
81
+ /**
82
+ * Observe DOM mutations of reactive elements.
83
+ *
84
+ * The observer is recreated when the resolved targets or host change and is
85
+ * disconnected when the owning reactive scope stops. At least one of
86
+ * `attributes`, `childList`, or `characterData` must be enabled (directly or
87
+ * implicitly), mirroring the platform contract. No work happens during
88
+ * server rendering.
89
+ *
90
+ * @param targets Reactive element target or list of targets.
91
+ * @param callback Native `MutationObserver` callback.
92
+ * @param options Observation filter, capability, and timing.
93
+ * @default options {}
94
+ * @returns Support flag, record draining, and stop control.
95
+ */
96
+ declare function useMutationObserver(targets: MaybeElementTargets, callback: MutationCallback, options?: UseMutationObserverOptions): MutationObserverControls;
97
+ //#endregion
98
+ export { MutationObserverControls, MutationObserverHost, UseMutationObserverOptions, useMutationObserver };
@@ -0,0 +1,69 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElements } from "./element-target.mjs";
3
+ import { hasInjectionContext, onMounted, readonly, ref, shallowRef, toValue, watch } from "vue";
4
+ //#region src/mutation-observer.ts
5
+ /**
6
+ * Observe DOM mutations of reactive elements.
7
+ *
8
+ * The observer is recreated when the resolved targets or host change and is
9
+ * disconnected when the owning reactive scope stops. At least one of
10
+ * `attributes`, `childList`, or `characterData` must be enabled (directly or
11
+ * implicitly), mirroring the platform contract. No work happens during
12
+ * server rendering.
13
+ *
14
+ * @param targets Reactive element target or list of targets.
15
+ * @param callback Native `MutationObserver` callback.
16
+ * @param options Observation filter, capability, and timing.
17
+ * @default options {}
18
+ * @returns Support flag, record draining, and stop control.
19
+ */
20
+ function useMutationObserver(targets, callback, options = {}) {
21
+ const isSupported = ref(false);
22
+ const mounted = shallowRef(!hasInjectionContext());
23
+ if (!mounted.value) onMounted(() => {
24
+ mounted.value = true;
25
+ });
26
+ const init = observerInit(options);
27
+ let active;
28
+ let stopWatch = watch(() => [!mounted.value ? void 0 : options.host === void 0 ? browserMutationObserverHost() : toValue(options.host), resolveElements(targets)], ([host, elements], _previous, onCleanup) => {
29
+ const Observer = host?.MutationObserver;
30
+ isSupported.value = Observer !== void 0;
31
+ if (!Observer || elements.length === 0) return;
32
+ const observer = new Observer(callback);
33
+ for (const element of elements) observer.observe(element, init);
34
+ active = observer;
35
+ onCleanup(() => {
36
+ observer.disconnect();
37
+ if (active === observer) active = void 0;
38
+ });
39
+ }, {
40
+ immediate: true,
41
+ flush: options.flush ?? "post"
42
+ });
43
+ const stop = () => {
44
+ stopWatch?.stop();
45
+ stopWatch = void 0;
46
+ };
47
+ tryOnScopeDispose(stop);
48
+ return {
49
+ isSupported: readonly(isSupported),
50
+ takeRecords: () => active?.takeRecords() ?? [],
51
+ stop
52
+ };
53
+ }
54
+ function observerInit(options) {
55
+ const init = {};
56
+ if (options.attributes !== void 0) init.attributes = options.attributes;
57
+ if (options.childList !== void 0) init.childList = options.childList;
58
+ if (options.subtree !== void 0) init.subtree = options.subtree;
59
+ if (options.characterData !== void 0) init.characterData = options.characterData;
60
+ if (options.attributeOldValue !== void 0) init.attributeOldValue = options.attributeOldValue;
61
+ if (options.characterDataOldValue !== void 0) init.characterDataOldValue = options.characterDataOldValue;
62
+ if (options.attributeFilter !== void 0) init.attributeFilter = [...options.attributeFilter];
63
+ return init;
64
+ }
65
+ function browserMutationObserverHost() {
66
+ return typeof MutationObserver === "function" ? globalThis : void 0;
67
+ }
68
+ //#endregion
69
+ export { useMutationObserver };