@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,107 @@
1
+ //#region src/standard-schema.d.ts
2
+ /**
3
+ * Minimal, dependency-free Standard Schema v1 interop.
4
+ *
5
+ * Any validation library implementing the `~standard` protocol (Zod,
6
+ * Valibot, ArkType, Effect Schema, …) satisfies {@link StandardSchemaV1}
7
+ * structurally; nothing from those libraries is imported.
8
+ */
9
+ /** One segment of a Standard Schema issue path. */
10
+ type StandardSchemaPathSegment = PropertyKey | {
11
+ readonly key: PropertyKey;
12
+ };
13
+ /** One validation issue reported by a Standard Schema. */
14
+ interface StandardSchemaIssue {
15
+ /** Human-readable message. */
16
+ readonly message: string;
17
+ /** Location of the issue inside the validated value; absent for root issues. */
18
+ readonly path?: readonly StandardSchemaPathSegment[] | undefined;
19
+ }
20
+ /** Successful Standard Schema result. */
21
+ interface StandardSchemaSuccess<Output> {
22
+ /** Parsed (possibly transformed) output. */
23
+ readonly value: Output;
24
+ /** Always absent on success. */
25
+ readonly issues?: undefined;
26
+ }
27
+ /** Failed Standard Schema result. */
28
+ interface StandardSchemaFailure {
29
+ /** Non-empty list of issues. */
30
+ readonly issues: readonly StandardSchemaIssue[];
31
+ }
32
+ /** Result of `~standard.validate`. */
33
+ type StandardSchemaResult<Output> = StandardSchemaSuccess<Output> | StandardSchemaFailure;
34
+ /** The `~standard` property of a Standard Schema v1 validator. */
35
+ interface StandardSchemaProps<Input, Output> {
36
+ /** Protocol version. */
37
+ readonly version: 1;
38
+ /** Library that produced the schema. */
39
+ readonly vendor: string;
40
+ /** Validate an unknown value, synchronously or asynchronously. */
41
+ readonly validate: (value: unknown) => StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;
42
+ /** Type-only carrier of the input and output types. */
43
+ readonly types?: {
44
+ readonly input: Input;
45
+ readonly output: Output;
46
+ } | undefined;
47
+ }
48
+ /** Any Standard Schema v1 validator. */
49
+ interface StandardSchemaV1<Input = unknown, Output = Input> {
50
+ /** Standard Schema protocol entry point. */
51
+ readonly "~standard": StandardSchemaProps<Input, Output>;
52
+ }
53
+ /** Input type accepted by a Standard Schema. */
54
+ type InferStandardSchemaInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
55
+ /** Output type produced by a Standard Schema. */
56
+ type InferStandardSchemaOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
57
+ /** Issue normalized to a dotted path (`""` for the root). */
58
+ interface NormalizedSchemaIssue {
59
+ /** Dotted path such as `address.city` or `items.0.name`; `""` for the root. */
60
+ readonly path: string;
61
+ /** Human-readable message. */
62
+ readonly message: string;
63
+ }
64
+ /** Normalized outcome of {@link validateStandardSchema}. */
65
+ type NormalizedSchemaResult<Output> = {
66
+ /** Validation passed. */readonly status: "valid"; /** Parsed output. */
67
+ readonly value: Output;
68
+ } | {
69
+ /** Validation failed. */readonly status: "invalid"; /** Issues with dotted paths, in schema order. */
70
+ readonly issues: readonly NormalizedSchemaIssue[];
71
+ };
72
+ /**
73
+ * Whether a value implements the Standard Schema v1 protocol.
74
+ *
75
+ * @param candidate Value to test.
76
+ * @returns Whether `candidate["~standard"].validate` is callable with version 1.
77
+ */
78
+ declare function isStandardSchema(candidate: unknown): candidate is StandardSchemaV1;
79
+ /**
80
+ * Convert a Standard Schema issue path to a dotted path.
81
+ *
82
+ * `{ key }` segments are unwrapped; symbols use their description.
83
+ *
84
+ * @param path Issue path.
85
+ * @returns Dotted path, `""` for the root.
86
+ */
87
+ declare function formatSchemaPath(path: readonly StandardSchemaPathSegment[] | undefined): string;
88
+ /**
89
+ * Validate a value with a Standard Schema and normalize the result.
90
+ *
91
+ * Synchronous and asynchronous schemas are handled identically. Throwing
92
+ * schemas propagate their error. Pure: safe on the server.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * const result = await validateStandardSchema(zodSchema, formValues);
97
+ * if (result.status === "invalid") console.log(result.issues);
98
+ * ```
99
+ *
100
+ * @typeParam Output Schema output type.
101
+ * @param schema Standard Schema v1 validator.
102
+ * @param value Value to validate.
103
+ * @returns The normalized result.
104
+ */
105
+ declare function validateStandardSchema<Output>(schema: StandardSchemaV1<unknown, Output>, value: unknown): Promise<NormalizedSchemaResult<Output>>;
106
+ //#endregion
107
+ export { StandardSchemaFailure as a, StandardSchemaProps as c, StandardSchemaV1 as d, formatSchemaPath as f, NormalizedSchemaResult as i, StandardSchemaResult as l, validateStandardSchema as m, InferStandardSchemaOutput as n, StandardSchemaIssue as o, isStandardSchema as p, NormalizedSchemaIssue as r, StandardSchemaPathSegment as s, InferStandardSchemaInput as t, StandardSchemaSuccess as u };
@@ -0,0 +1,2 @@
1
+ import { a as StandardSchemaFailure, c as StandardSchemaProps, d as StandardSchemaV1, f as formatSchemaPath, i as NormalizedSchemaResult, l as StandardSchemaResult, m as validateStandardSchema, n as InferStandardSchemaOutput, o as StandardSchemaIssue, p as isStandardSchema, r as NormalizedSchemaIssue, s as StandardSchemaPathSegment, t as InferStandardSchemaInput, u as StandardSchemaSuccess } from "./standard-schema-DmNgFVK5.mjs";
2
+ export { InferStandardSchemaInput, InferStandardSchemaOutput, NormalizedSchemaIssue, NormalizedSchemaResult, StandardSchemaFailure, StandardSchemaIssue, StandardSchemaPathSegment, StandardSchemaProps, StandardSchemaResult, StandardSchemaSuccess, StandardSchemaV1, formatSchemaPath, isStandardSchema, validateStandardSchema };
@@ -0,0 +1,60 @@
1
+ //#region src/standard-schema.ts
2
+ /**
3
+ * Whether a value implements the Standard Schema v1 protocol.
4
+ *
5
+ * @param candidate Value to test.
6
+ * @returns Whether `candidate["~standard"].validate` is callable with version 1.
7
+ */
8
+ function isStandardSchema(candidate) {
9
+ if (typeof candidate !== "object" && typeof candidate !== "function" || candidate === null) return false;
10
+ const props = Reflect.get(candidate, "~standard");
11
+ return typeof props === "object" && props !== null && Reflect.get(props, "version") === 1 && typeof Reflect.get(props, "validate") === "function";
12
+ }
13
+ /**
14
+ * Convert a Standard Schema issue path to a dotted path.
15
+ *
16
+ * `{ key }` segments are unwrapped; symbols use their description.
17
+ *
18
+ * @param path Issue path.
19
+ * @returns Dotted path, `""` for the root.
20
+ */
21
+ function formatSchemaPath(path) {
22
+ if (!path) return "";
23
+ return path.map((segment) => {
24
+ const key = typeof segment === "object" ? segment.key : segment;
25
+ return typeof key === "symbol" ? key.description ?? "" : String(key);
26
+ }).join(".");
27
+ }
28
+ /**
29
+ * Validate a value with a Standard Schema and normalize the result.
30
+ *
31
+ * Synchronous and asynchronous schemas are handled identically. Throwing
32
+ * schemas propagate their error. Pure: safe on the server.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const result = await validateStandardSchema(zodSchema, formValues);
37
+ * if (result.status === "invalid") console.log(result.issues);
38
+ * ```
39
+ *
40
+ * @typeParam Output Schema output type.
41
+ * @param schema Standard Schema v1 validator.
42
+ * @param value Value to validate.
43
+ * @returns The normalized result.
44
+ */
45
+ async function validateStandardSchema(schema, value) {
46
+ const result = await schema["~standard"].validate(value);
47
+ if (result.issues === void 0) return {
48
+ status: "valid",
49
+ value: result.value
50
+ };
51
+ return {
52
+ status: "invalid",
53
+ issues: result.issues.map((issue) => ({
54
+ path: formatSchemaPath(issue.path),
55
+ message: issue.message
56
+ }))
57
+ };
58
+ }
59
+ //#endregion
60
+ export { formatSchemaPath, isStandardSchema, validateStandardSchema };
@@ -0,0 +1,125 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { Point } from "./mouse.mjs";
3
+ import { PointerKind } from "./pointer.mjs";
4
+ import { ComputedRef, Ref } from "vue";
5
+
6
+ //#region src/swipe.d.ts
7
+ /** Dominant direction of a swipe gesture. `"none"` below the threshold. */
8
+ type SwipeDirection = "up" | "down" | "left" | "right" | "none";
9
+ /** Callbacks shared by {@link useSwipe} and {@link usePointerSwipe}. */
10
+ interface SwipeCallbacks<GestureEvent extends Event> {
11
+ /**
12
+ * Called when a gesture starts.
13
+ *
14
+ * @default undefined
15
+ */
16
+ readonly onSwipeStart?: (event: GestureEvent) => void;
17
+ /**
18
+ * Called on every move after the threshold has been exceeded.
19
+ *
20
+ * @default undefined
21
+ */
22
+ readonly onSwipe?: (event: GestureEvent) => void;
23
+ /**
24
+ * Called when a gesture that exceeded the threshold ends.
25
+ *
26
+ * @default undefined
27
+ */
28
+ readonly onSwipeEnd?: (event: GestureEvent, direction: SwipeDirection) => void;
29
+ }
30
+ /** Options for {@link useSwipe}. */
31
+ interface UseSwipeOptions extends SwipeCallbacks<TouchEvent> {
32
+ /**
33
+ * Minimum travel in CSS pixels before a gesture counts as a swipe.
34
+ *
35
+ * @default 50
36
+ */
37
+ readonly threshold?: number;
38
+ /**
39
+ * Register passive touch listeners. Set to `false` to call
40
+ * `preventDefault()` on moves while swiping (for example to block
41
+ * pull-to-refresh).
42
+ *
43
+ * @default true
44
+ */
45
+ readonly passive?: boolean;
46
+ }
47
+ /** Reactive gesture state shared by the swipe composables. */
48
+ interface SwipeControls {
49
+ /** Whether a gesture past the threshold is in progress. */
50
+ readonly isSwiping: Readonly<Ref<boolean>>;
51
+ /** Dominant direction of the current (or last) gesture. */
52
+ readonly direction: ComputedRef<SwipeDirection>;
53
+ /** Gesture start coordinates. */
54
+ readonly coordsStart: Readonly<Point>;
55
+ /** Latest gesture coordinates. */
56
+ readonly coordsEnd: Readonly<Point>;
57
+ /** `start.x - end.x`: positive when moving left. */
58
+ readonly lengthX: ComputedRef<number>;
59
+ /** `start.y - end.y`: positive when moving up. */
60
+ readonly lengthY: ComputedRef<number>;
61
+ /** Remove listeners. Idempotent. */
62
+ readonly stop: () => void;
63
+ }
64
+ /**
65
+ * Classify a displacement into a {@link SwipeDirection}.
66
+ *
67
+ * Pure helper shared by the swipe composables and usable for custom gesture
68
+ * recognizers.
69
+ *
70
+ * @param lengthX `start.x - end.x`.
71
+ * @param lengthY `start.y - end.y`.
72
+ * @param threshold Minimum travel before a direction is reported.
73
+ * @returns The dominant axis direction, or `"none"`.
74
+ */
75
+ declare function swipeDirection(lengthX: number, lengthY: number, threshold: number): SwipeDirection;
76
+ /**
77
+ * Detect touch swipes on an element.
78
+ *
79
+ * Tracks the first touch point from `touchstart` through `touchend`/
80
+ * `touchcancel`. Direction is derived from the dominant axis once the travel
81
+ * exceeds `threshold`. Server renders expose zeroed coordinates and
82
+ * `direction: "none"`; listeners are removed with the owning scope.
83
+ *
84
+ * @param target Reactive element target.
85
+ * @param options Threshold, passivity, and callbacks.
86
+ * @default options {}
87
+ * @returns Reactive gesture state and stop control.
88
+ */
89
+ declare function useSwipe(target: MaybeElementTarget, options?: UseSwipeOptions): SwipeControls;
90
+ /** Options for {@link usePointerSwipe}. */
91
+ interface UsePointerSwipeOptions extends SwipeCallbacks<PointerEvent> {
92
+ /**
93
+ * Minimum travel in CSS pixels before a gesture counts as a swipe.
94
+ *
95
+ * @default 50
96
+ */
97
+ readonly threshold?: number;
98
+ /**
99
+ * Device kinds that may start a gesture.
100
+ *
101
+ * @default ["mouse", "touch", "pen"]
102
+ */
103
+ readonly pointerTypes?: readonly PointerKind[];
104
+ /**
105
+ * Suppress text selection on the element while a gesture is active.
106
+ *
107
+ * @default false
108
+ */
109
+ readonly disableTextSelect?: boolean;
110
+ }
111
+ /**
112
+ * Detect swipes from any pointer device (mouse, touch, pen).
113
+ *
114
+ * Captures the pointer on `pointerdown` so moves outside the element still
115
+ * count, and ignores secondary pointers during a gesture. Shares the state
116
+ * shape and SSR defaults of {@link useSwipe}.
117
+ *
118
+ * @param target Reactive element target.
119
+ * @param options Threshold, device filter, selection handling, and callbacks.
120
+ * @default options {}
121
+ * @returns Reactive gesture state and stop control.
122
+ */
123
+ declare function usePointerSwipe(target: MaybeElementTarget, options?: UsePointerSwipeOptions): SwipeControls;
124
+ //#endregion
125
+ export { SwipeCallbacks, SwipeControls, SwipeDirection, UsePointerSwipeOptions, UseSwipeOptions, swipeDirection, usePointerSwipe, useSwipe };
package/dist/swipe.mjs ADDED
@@ -0,0 +1,225 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElement } from "./element-target.mjs";
3
+ import { toPointerKind } from "./pointer.mjs";
4
+ import { computed, readonly, ref, shallowReactive, shallowReadonly, watch } from "vue";
5
+ //#region src/swipe.ts
6
+ /**
7
+ * Classify a displacement into a {@link SwipeDirection}.
8
+ *
9
+ * Pure helper shared by the swipe composables and usable for custom gesture
10
+ * recognizers.
11
+ *
12
+ * @param lengthX `start.x - end.x`.
13
+ * @param lengthY `start.y - end.y`.
14
+ * @param threshold Minimum travel before a direction is reported.
15
+ * @returns The dominant axis direction, or `"none"`.
16
+ */
17
+ function swipeDirection(lengthX, lengthY, threshold) {
18
+ if (Math.max(Math.abs(lengthX), Math.abs(lengthY)) < threshold) return "none";
19
+ if (Math.abs(lengthX) > Math.abs(lengthY)) return lengthX > 0 ? "left" : "right";
20
+ return lengthY > 0 ? "up" : "down";
21
+ }
22
+ function createGesture(threshold) {
23
+ const coordsStart = shallowReactive({
24
+ x: 0,
25
+ y: 0
26
+ });
27
+ const coordsEnd = shallowReactive({
28
+ x: 0,
29
+ y: 0
30
+ });
31
+ const swiping = ref(false);
32
+ const lengthX = computed(() => coordsStart.x - coordsEnd.x);
33
+ const lengthY = computed(() => coordsStart.y - coordsEnd.y);
34
+ const direction = computed(() => swipeDirection(lengthX.value, lengthY.value, threshold));
35
+ return {
36
+ controls: {
37
+ isSwiping: readonly(swiping),
38
+ direction,
39
+ coordsStart: shallowReadonly(coordsStart),
40
+ coordsEnd: shallowReadonly(coordsEnd),
41
+ lengthX,
42
+ lengthY
43
+ },
44
+ begin: (point) => {
45
+ coordsStart.x = point.x;
46
+ coordsStart.y = point.y;
47
+ coordsEnd.x = point.x;
48
+ coordsEnd.y = point.y;
49
+ },
50
+ move: (point) => {
51
+ coordsEnd.x = point.x;
52
+ coordsEnd.y = point.y;
53
+ if (!swiping.value && direction.value !== "none") swiping.value = true;
54
+ return swiping.value;
55
+ },
56
+ reset: () => {
57
+ swiping.value = false;
58
+ },
59
+ swiping
60
+ };
61
+ }
62
+ /**
63
+ * Detect touch swipes on an element.
64
+ *
65
+ * Tracks the first touch point from `touchstart` through `touchend`/
66
+ * `touchcancel`. Direction is derived from the dominant axis once the travel
67
+ * exceeds `threshold`. Server renders expose zeroed coordinates and
68
+ * `direction: "none"`; listeners are removed with the owning scope.
69
+ *
70
+ * @param target Reactive element target.
71
+ * @param options Threshold, passivity, and callbacks.
72
+ * @default options {}
73
+ * @returns Reactive gesture state and stop control.
74
+ */
75
+ function useSwipe(target, options = {}) {
76
+ const gesture = createGesture(options.threshold ?? 50);
77
+ const passive = options.passive ?? true;
78
+ const firstTouch = (event) => {
79
+ const touch = event.touches[0] ?? event.changedTouches[0];
80
+ return touch ? {
81
+ x: touch.clientX,
82
+ y: touch.clientY
83
+ } : null;
84
+ };
85
+ const onStart = (event) => {
86
+ if (!isTouchEvent(event)) return;
87
+ const point = firstTouch(event);
88
+ if (!point || event.touches.length > 1) return;
89
+ gesture.begin(point);
90
+ options.onSwipeStart?.(event);
91
+ };
92
+ const onMove = (event) => {
93
+ if (!isTouchEvent(event)) return;
94
+ const point = firstTouch(event);
95
+ if (!point) return;
96
+ if (!gesture.move(point)) return;
97
+ if (!passive && event.cancelable) event.preventDefault();
98
+ options.onSwipe?.(event);
99
+ };
100
+ const onEnd = (event) => {
101
+ if (!isTouchEvent(event)) return;
102
+ if (gesture.swiping.value) options.onSwipeEnd?.(event, gesture.controls.direction.value);
103
+ gesture.reset();
104
+ };
105
+ const stopWatch = watch(() => resolveElement(target), (element, _previous, onCleanup) => {
106
+ if (!element) return;
107
+ const listenerOptions = { passive };
108
+ element.addEventListener("touchstart", onStart, { passive: true });
109
+ element.addEventListener("touchmove", onMove, listenerOptions);
110
+ element.addEventListener("touchend", onEnd, { passive: true });
111
+ element.addEventListener("touchcancel", onEnd, { passive: true });
112
+ onCleanup(() => {
113
+ element.removeEventListener("touchstart", onStart);
114
+ element.removeEventListener("touchmove", onMove);
115
+ element.removeEventListener("touchend", onEnd);
116
+ element.removeEventListener("touchcancel", onEnd);
117
+ });
118
+ }, {
119
+ immediate: true,
120
+ flush: "post"
121
+ });
122
+ const stop = () => stopWatch.stop();
123
+ tryOnScopeDispose(stop);
124
+ return {
125
+ ...gesture.controls,
126
+ stop
127
+ };
128
+ }
129
+ /**
130
+ * Detect swipes from any pointer device (mouse, touch, pen).
131
+ *
132
+ * Captures the pointer on `pointerdown` so moves outside the element still
133
+ * count, and ignores secondary pointers during a gesture. Shares the state
134
+ * shape and SSR defaults of {@link useSwipe}.
135
+ *
136
+ * @param target Reactive element target.
137
+ * @param options Threshold, device filter, selection handling, and callbacks.
138
+ * @default options {}
139
+ * @returns Reactive gesture state and stop control.
140
+ */
141
+ function usePointerSwipe(target, options = {}) {
142
+ const gesture = createGesture(options.threshold ?? 50);
143
+ const pointerTypes = options.pointerTypes ?? [
144
+ "mouse",
145
+ "touch",
146
+ "pen"
147
+ ];
148
+ let activePointer = null;
149
+ const accepts = (event) => {
150
+ if (!isPointerEvent(event)) return false;
151
+ const kind = toPointerKind(event.pointerType);
152
+ return kind !== null && pointerTypes.includes(kind);
153
+ };
154
+ const setSelection = (element, disabled) => {
155
+ if (!options.disableTextSelect || !hasStyle(element)) return;
156
+ element.style.setProperty("user-select", disabled ? "none" : "");
157
+ element.style.setProperty("-webkit-user-select", disabled ? "none" : "");
158
+ };
159
+ const stopWatch = watch(() => resolveElement(target), (element, _previous, onCleanup) => {
160
+ if (!element) return;
161
+ const onDown = (event) => {
162
+ if (!accepts(event) || activePointer !== null) return;
163
+ if (event.pointerType === "mouse" && event.button !== 0) return;
164
+ activePointer = event.pointerId;
165
+ if (hasPointerCapture(element)) element.setPointerCapture(event.pointerId);
166
+ gesture.begin({
167
+ x: event.clientX,
168
+ y: event.clientY
169
+ });
170
+ setSelection(element, true);
171
+ options.onSwipeStart?.(event);
172
+ };
173
+ const onMove = (event) => {
174
+ if (!accepts(event) || event.pointerId !== activePointer) return;
175
+ if (gesture.move({
176
+ x: event.clientX,
177
+ y: event.clientY
178
+ })) options.onSwipe?.(event);
179
+ };
180
+ const onUp = (event) => {
181
+ if (!accepts(event) || event.pointerId !== activePointer) return;
182
+ activePointer = null;
183
+ if (hasPointerCapture(element)) element.releasePointerCapture(event.pointerId);
184
+ if (gesture.swiping.value) options.onSwipeEnd?.(event, gesture.controls.direction.value);
185
+ gesture.reset();
186
+ setSelection(element, false);
187
+ };
188
+ element.addEventListener("pointerdown", onDown, { passive: true });
189
+ element.addEventListener("pointermove", onMove, { passive: true });
190
+ element.addEventListener("pointerup", onUp, { passive: true });
191
+ element.addEventListener("pointercancel", onUp, { passive: true });
192
+ onCleanup(() => {
193
+ element.removeEventListener("pointerdown", onDown);
194
+ element.removeEventListener("pointermove", onMove);
195
+ element.removeEventListener("pointerup", onUp);
196
+ element.removeEventListener("pointercancel", onUp);
197
+ activePointer = null;
198
+ gesture.reset();
199
+ setSelection(element, false);
200
+ });
201
+ }, {
202
+ immediate: true,
203
+ flush: "post"
204
+ });
205
+ const stop = () => stopWatch.stop();
206
+ tryOnScopeDispose(stop);
207
+ return {
208
+ ...gesture.controls,
209
+ stop
210
+ };
211
+ }
212
+ function isTouchEvent(event) {
213
+ return "touches" in event && "changedTouches" in event;
214
+ }
215
+ function isPointerEvent(event) {
216
+ return "pointerId" in event && "pointerType" in event;
217
+ }
218
+ function hasPointerCapture(element) {
219
+ return typeof element.setPointerCapture === "function";
220
+ }
221
+ function hasStyle(element) {
222
+ return "style" in element && typeof element.style === "object" && element.style !== null;
223
+ }
224
+ //#endregion
225
+ export { swipeDirection, usePointerSwipe, useSwipe };
@@ -0,0 +1,80 @@
1
+ import { Ref } from "vue";
2
+
3
+ //#region src/sync-ref.d.ts
4
+ /** Which way {@link syncRef} copies values. */
5
+ type SyncRefDirection = "ltr" | "rtl" | "both";
6
+ /** Converters required by {@link syncRef} for the chosen direction. */
7
+ type SyncRefTransform<Left, Right, Direction extends SyncRefDirection> = Direction extends "ltr" ? {
8
+ readonly ltr: (left: Left) => Right;
9
+ } : Direction extends "rtl" ? {
10
+ readonly rtl: (right: Right) => Left;
11
+ } : {
12
+ readonly ltr: (left: Left) => Right;
13
+ readonly rtl: (right: Right) => Left;
14
+ };
15
+ /** Whether two types are mutually assignable (identical for syncing purposes). */
16
+ type SameType<Left, Right> = [Left] extends [Right] ? [Right] extends [Left] ? true : false : false;
17
+ /** Options for {@link syncRef}; `transform` is required when the ref types differ. */
18
+ type SyncRefOptions<Left, Right, Direction extends SyncRefDirection = "both"> = SyncRefBaseOptions<Direction> & (SameType<Left, Right> extends true ? {
19
+ /**
20
+ * Converters between the two refs.
21
+ *
22
+ * @default identity
23
+ */
24
+ readonly transform?: Partial<SyncRefTransform<Left, Right, Direction>>;
25
+ } : {
26
+ /** Converters between the two refs (required: the types differ). */readonly transform: SyncRefTransform<Left, Right, Direction>;
27
+ });
28
+ /** Direction and timing options shared by every {@link syncRef} call. */
29
+ interface SyncRefBaseOptions<Direction extends SyncRefDirection = "both"> {
30
+ /**
31
+ * `"ltr"` copies left to right, `"rtl"` right to left, `"both"` both ways.
32
+ *
33
+ * @default "both"
34
+ */
35
+ readonly direction?: Direction;
36
+ /**
37
+ * Watch flush timing.
38
+ *
39
+ * @default "sync"
40
+ */
41
+ readonly flush?: "pre" | "post" | "sync";
42
+ /**
43
+ * Watch nested changes.
44
+ *
45
+ * @default false
46
+ */
47
+ readonly deep?: boolean;
48
+ /**
49
+ * Copy once right away (left wins for `"both"`/`"ltr"`, right for `"rtl"`).
50
+ *
51
+ * @default true
52
+ */
53
+ readonly immediate?: boolean;
54
+ }
55
+ /**
56
+ * Keep two refs in sync, optionally converting between their types.
57
+ *
58
+ * The option type is computed from both ref types: converters may be
59
+ * omitted only when the types are identical, and exactly the converters the
60
+ * direction needs are required otherwise. A re-entrancy guard prevents
61
+ * ping-pong when converters are not exact inverses. Watchers follow the
62
+ * owning reactive scope; SSR-safe.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const celsius = ref(20);
67
+ * const label = ref("");
68
+ * syncRef(celsius, label, {
69
+ * transform: { ltr: (c) => `${c}°C`, rtl: (text) => Number.parseFloat(text) },
70
+ * });
71
+ * ```
72
+ *
73
+ * @param left First ref.
74
+ * @param right Second ref.
75
+ * @param options Direction, timing, and converters.
76
+ * @returns Stops every sync watcher.
77
+ */
78
+ declare function syncRef<Left, Right = Left, const Direction extends SyncRefDirection = "both">(left: Ref<Left>, right: Ref<Right>, ...options: SameType<Left, Right> extends true ? [options?: SyncRefOptions<Left, Right, Direction>] : [options: SyncRefOptions<Left, Right, Direction>]): () => void;
79
+ //#endregion
80
+ export { SyncRefBaseOptions, SyncRefDirection, SyncRefOptions, SyncRefTransform, syncRef };
@@ -0,0 +1,43 @@
1
+ import { watch } from "vue";
2
+ //#region src/sync-ref.ts
3
+ function syncRef(left, right, options = {}) {
4
+ const direction = options.direction ?? "both";
5
+ const toRight = options.transform?.ltr ?? ((value) => value);
6
+ const toLeft = options.transform?.rtl ?? ((value) => value);
7
+ const watchOptions = {
8
+ flush: options.flush ?? "sync",
9
+ deep: options.deep ?? false
10
+ };
11
+ const stops = [];
12
+ let syncing = false;
13
+ const guarded = (copy) => {
14
+ if (syncing) return;
15
+ syncing = true;
16
+ try {
17
+ copy();
18
+ } finally {
19
+ syncing = false;
20
+ }
21
+ };
22
+ if (direction !== "rtl") stops.push(watch(left, (value) => {
23
+ guarded(() => {
24
+ right.value = toRight(value);
25
+ });
26
+ }, {
27
+ ...watchOptions,
28
+ immediate: options.immediate ?? true
29
+ }));
30
+ if (direction !== "ltr") stops.push(watch(right, (value) => {
31
+ guarded(() => {
32
+ left.value = toLeft(value);
33
+ });
34
+ }, {
35
+ ...watchOptions,
36
+ immediate: direction === "rtl" && (options.immediate ?? true)
37
+ }));
38
+ return () => {
39
+ for (const stop of stops) stop();
40
+ };
41
+ }
42
+ //#endregion
43
+ export { syncRef };
@@ -0,0 +1,46 @@
1
+ import { ComputedRef, MaybeRefOrGetter, ShallowRef } from "vue";
2
+
3
+ //#region src/text-selection.d.ts
4
+ /** Document-like capability observed by {@link useTextSelection}. */
5
+ interface TextSelectionHost extends EventTarget {
6
+ /** Current selection. */
7
+ getSelection(): Selection | null;
8
+ }
9
+ /** Options for {@link useTextSelection}. */
10
+ interface UseTextSelectionOptions {
11
+ /**
12
+ * Reactive document capability for alternate runtimes and tests.
13
+ *
14
+ * @default globalThis.document when available
15
+ */
16
+ readonly host?: MaybeRefOrGetter<TextSelectionHost | null | undefined>;
17
+ }
18
+ /** Reactive selection state returned by {@link useTextSelection}. */
19
+ interface TextSelectionControls {
20
+ /** Current `Selection` object; `null` during server rendering. */
21
+ readonly selection: Readonly<ShallowRef<Selection | null>>;
22
+ /** Selected text. Empty during server rendering. */
23
+ readonly text: ComputedRef<string>;
24
+ /** Selected ranges. */
25
+ readonly ranges: ComputedRef<readonly Range[]>;
26
+ /** Client rectangles of each selected range. */
27
+ readonly rects: ComputedRef<readonly DOMRect[]>;
28
+ }
29
+ /**
30
+ * Track the document text selection.
31
+ *
32
+ * Re-reads the selection on every `selectionchange`. Because the platform
33
+ * mutates the same `Selection` object in place, a revision counter is used to
34
+ * invalidate the derived `text`, `ranges`, and `rects`. Server renders expose
35
+ * an empty selection; the listener is removed with the owning scope.
36
+ *
37
+ * Inside a component the host is read after mounting, so hydration renders
38
+ * the server fallback first and never mismatches.
39
+ *
40
+ * @param options Document capability.
41
+ * @default options {}
42
+ * @returns Reactive selection, text, ranges, and rectangles.
43
+ */
44
+ declare function useTextSelection(options?: UseTextSelectionOptions): TextSelectionControls;
45
+ //#endregion
46
+ export { TextSelectionControls, TextSelectionHost, UseTextSelectionOptions, useTextSelection };