@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,105 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElement } from "./element-target.mjs";
3
+ import { watch } from "vue";
4
+ //#region src/on-long-press.ts
5
+ const defaultScheduler = {
6
+ setTimeout: (callback, delayMs) => globalThis.setTimeout(callback, delayMs),
7
+ clearTimeout: (handle) => {
8
+ globalThis.clearTimeout(handle);
9
+ }
10
+ };
11
+ /**
12
+ * Call a handler when an element is pressed and held.
13
+ *
14
+ * Uses Pointer Events, so mouse, touch, and pen behave alike. Moving more than
15
+ * `distanceThreshold` or releasing early cancels the press. Nothing is
16
+ * registered during server rendering; listeners and the timer are released
17
+ * with the owning scope or the returned stop function.
18
+ *
19
+ * @param target Reactive element target.
20
+ * @param handler Called with the initiating `pointerdown` event.
21
+ * @param options Delay, threshold, modifiers, and callbacks.
22
+ * @default options {}
23
+ * @returns Stop function.
24
+ */
25
+ function onLongPress(target, handler, options = {}) {
26
+ const { delay = 500, distanceThreshold = 10, modifiers = {}, now = Date.now, scheduler = defaultScheduler } = options;
27
+ let handle;
28
+ let pending = false;
29
+ let fired = false;
30
+ let used = false;
31
+ let start = null;
32
+ const clear = () => {
33
+ if (pending) scheduler.clearTimeout(handle);
34
+ pending = false;
35
+ };
36
+ const apply = (event) => {
37
+ if (modifiers.prevent && event.cancelable) event.preventDefault();
38
+ if (modifiers.stop) event.stopPropagation();
39
+ };
40
+ const stopWatch = watch(() => resolveElement(target), (element, _previous, onCleanup) => {
41
+ if (!element) return;
42
+ const onDown = (event) => {
43
+ if (!isPointerEvent(event) || modifiers.once && used) return;
44
+ if (modifiers.self && event.target !== element) return;
45
+ apply(event);
46
+ clear();
47
+ fired = false;
48
+ start = {
49
+ x: event.clientX,
50
+ y: event.clientY,
51
+ time: now()
52
+ };
53
+ pending = true;
54
+ handle = scheduler.setTimeout(() => {
55
+ pending = false;
56
+ fired = true;
57
+ used = true;
58
+ handler(event);
59
+ }, delay);
60
+ };
61
+ const onMove = (event) => {
62
+ if (!isPointerEvent(event) || !start || !pending) return;
63
+ if (Math.hypot(event.clientX - start.x, event.clientY - start.y) > distanceThreshold) clear();
64
+ };
65
+ const onUp = (event) => {
66
+ if (!isPointerEvent(event) || !start) return;
67
+ apply(event);
68
+ const release = {
69
+ duration: now() - start.time,
70
+ distance: Math.hypot(event.clientX - start.x, event.clientY - start.y),
71
+ isLongPress: fired
72
+ };
73
+ clear();
74
+ start = null;
75
+ options.onRelease?.(release, event);
76
+ };
77
+ const listenerOptions = { capture: modifiers.capture ?? false };
78
+ element.addEventListener("pointerdown", onDown, listenerOptions);
79
+ element.addEventListener("pointermove", onMove, listenerOptions);
80
+ element.addEventListener("pointerup", onUp, listenerOptions);
81
+ element.addEventListener("pointerleave", onUp, listenerOptions);
82
+ element.addEventListener("pointercancel", onUp, listenerOptions);
83
+ onCleanup(() => {
84
+ const removeOptions = { capture: modifiers.capture ?? false };
85
+ element.removeEventListener("pointerdown", onDown, removeOptions);
86
+ element.removeEventListener("pointermove", onMove, removeOptions);
87
+ element.removeEventListener("pointerup", onUp, removeOptions);
88
+ element.removeEventListener("pointerleave", onUp, removeOptions);
89
+ element.removeEventListener("pointercancel", onUp, removeOptions);
90
+ clear();
91
+ start = null;
92
+ });
93
+ }, {
94
+ immediate: true,
95
+ flush: "post"
96
+ });
97
+ const stop = () => stopWatch.stop();
98
+ tryOnScopeDispose(stop);
99
+ return stop;
100
+ }
101
+ function isPointerEvent(event) {
102
+ return "pointerId" in event && "clientX" in event;
103
+ }
104
+ //#endregion
105
+ export { onLongPress };
@@ -0,0 +1,44 @@
1
+ import { MaybeRefOrGetter } from "vue";
2
+
3
+ //#region src/on-start-typing.d.ts
4
+ /** Document-like capability observed by {@link onStartTyping}. */
5
+ interface StartTypingHost extends EventTarget {
6
+ /** Currently focused element. */
7
+ readonly activeElement: Element | null;
8
+ }
9
+ /** Options for {@link onStartTyping}. */
10
+ interface OnStartTypingOptions {
11
+ /**
12
+ * Reactive document capability for alternate runtimes and tests.
13
+ *
14
+ * @default globalThis.document when available
15
+ */
16
+ readonly host?: MaybeRefOrGetter<StartTypingHost | null | undefined>;
17
+ }
18
+ /**
19
+ * Whether a keyboard event would type a printable character.
20
+ *
21
+ * Single-character keys (letters, digits, punctuation; not space) without
22
+ * `ctrl`/`meta`/`alt` qualify.
23
+ *
24
+ * @param event Keyboard event.
25
+ * @returns Whether the event starts typing.
26
+ */
27
+ declare function isTypingKeystroke(event: KeyboardEvent): boolean;
28
+ /**
29
+ * Call a handler when the user starts typing while no editable element has
30
+ * focus — typically to focus a search field.
31
+ *
32
+ * Editable means `input`, `textarea`, `select`, or any element with
33
+ * `isContentEditable`, and elements with `role="textbox"`/`"searchbox"`/`"combobox"`.
34
+ * Nothing is registered during server rendering; the listener is removed with
35
+ * the owning scope or the returned stop function.
36
+ *
37
+ * @param handler Called with the initiating `keydown` event.
38
+ * @param options Document capability.
39
+ * @default options {}
40
+ * @returns Stop function.
41
+ */
42
+ declare function onStartTyping(handler: (event: KeyboardEvent) => void, options?: OnStartTypingOptions): () => void;
43
+ //#endregion
44
+ export { OnStartTypingOptions, StartTypingHost, isTypingKeystroke, onStartTyping };
@@ -0,0 +1,61 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { toValue, watch } from "vue";
3
+ //#region src/on-start-typing.ts
4
+ /**
5
+ * Whether a keyboard event would type a printable character.
6
+ *
7
+ * Single-character keys (letters, digits, punctuation; not space) without
8
+ * `ctrl`/`meta`/`alt` qualify.
9
+ *
10
+ * @param event Keyboard event.
11
+ * @returns Whether the event starts typing.
12
+ */
13
+ function isTypingKeystroke(event) {
14
+ if (event.ctrlKey || event.metaKey || event.altKey) return false;
15
+ return event.key.length === 1 && event.key !== " ";
16
+ }
17
+ /**
18
+ * Call a handler when the user starts typing while no editable element has
19
+ * focus — typically to focus a search field.
20
+ *
21
+ * Editable means `input`, `textarea`, `select`, or any element with
22
+ * `isContentEditable`, and elements with `role="textbox"`/`"searchbox"`/`"combobox"`.
23
+ * Nothing is registered during server rendering; the listener is removed with
24
+ * the owning scope or the returned stop function.
25
+ *
26
+ * @param handler Called with the initiating `keydown` event.
27
+ * @param options Document capability.
28
+ * @default options {}
29
+ * @returns Stop function.
30
+ */
31
+ function onStartTyping(handler, options = {}) {
32
+ const stop = watch(() => options.host === void 0 ? browserTypingHost() : toValue(options.host), (host, _previous, onCleanup) => {
33
+ if (!host) return;
34
+ const onKeyDown = (event) => {
35
+ if (!isKeyboardEvent(event) || event.defaultPrevented) return;
36
+ if (isEditable(host.activeElement) || !isTypingKeystroke(event)) return;
37
+ handler(event);
38
+ };
39
+ host.addEventListener("keydown", onKeyDown, { passive: true });
40
+ onCleanup(() => host.removeEventListener("keydown", onKeyDown));
41
+ }, { immediate: true });
42
+ const dispose = () => stop.stop();
43
+ tryOnScopeDispose(dispose);
44
+ return dispose;
45
+ }
46
+ function isEditable(element) {
47
+ if (!element) return false;
48
+ const tag = element.tagName;
49
+ if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return true;
50
+ if ("isContentEditable" in element && element.isContentEditable === true) return true;
51
+ const role = element.getAttribute?.("role");
52
+ return role === "textbox" || role === "searchbox" || role === "combobox";
53
+ }
54
+ function isKeyboardEvent(event) {
55
+ return "key" in event && "code" in event;
56
+ }
57
+ function browserTypingHost() {
58
+ return typeof document !== "undefined" ? document : void 0;
59
+ }
60
+ //#endregion
61
+ export { isTypingKeystroke, onStartTyping };
@@ -0,0 +1,26 @@
1
+ import { MaybeRefOrGetter, Ref } from "vue";
2
+
3
+ //#region src/page-leave.d.ts
4
+ /** Options for {@link usePageLeave}. */
5
+ interface UsePageLeaveOptions {
6
+ /**
7
+ * Window-like target that receives `mouseout`/`mouseover`.
8
+ *
9
+ * @default globalThis.window when available
10
+ */
11
+ readonly host?: MaybeRefOrGetter<EventTarget | null | undefined>;
12
+ }
13
+ /**
14
+ * Detect when the mouse leaves the page (for exit-intent UI).
15
+ *
16
+ * A `mouseout` without a `relatedTarget` means the pointer left the
17
+ * document; any `mouseover` means it came back. Server renders report
18
+ * `false`; listeners are removed with the owning reactive scope.
19
+ *
20
+ * @param options Window capability.
21
+ * @default options {}
22
+ * @returns Readonly ref that is `true` while the pointer is outside the page.
23
+ */
24
+ declare function usePageLeave(options?: UsePageLeaveOptions): Readonly<Ref<boolean>>;
25
+ //#endregion
26
+ export { UsePageLeaveOptions, usePageLeave };
@@ -0,0 +1,40 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { readonly, ref, toValue, watch } from "vue";
3
+ //#region src/page-leave.ts
4
+ /**
5
+ * Detect when the mouse leaves the page (for exit-intent UI).
6
+ *
7
+ * A `mouseout` without a `relatedTarget` means the pointer left the
8
+ * document; any `mouseover` means it came back. Server renders report
9
+ * `false`; listeners are removed with the owning reactive scope.
10
+ *
11
+ * @param options Window capability.
12
+ * @default options {}
13
+ * @returns Readonly ref that is `true` while the pointer is outside the page.
14
+ */
15
+ function usePageLeave(options = {}) {
16
+ const left = ref(false);
17
+ const onOut = (event) => {
18
+ const related = "relatedTarget" in event ? event.relatedTarget : null;
19
+ left.value = related === null || related === void 0;
20
+ };
21
+ const onOver = () => {
22
+ left.value = false;
23
+ };
24
+ const stop = watch(() => options.host === void 0 ? browserPageHost() : toValue(options.host), (host, _previous, onCleanup) => {
25
+ if (!host) return;
26
+ host.addEventListener("mouseout", onOut, { passive: true });
27
+ host.addEventListener("mouseover", onOver, { passive: true });
28
+ onCleanup(() => {
29
+ host.removeEventListener("mouseout", onOut);
30
+ host.removeEventListener("mouseover", onOver);
31
+ });
32
+ }, { immediate: true });
33
+ tryOnScopeDispose(() => stop.stop());
34
+ return readonly(left);
35
+ }
36
+ function browserPageHost() {
37
+ return typeof window !== "undefined" ? window : void 0;
38
+ }
39
+ //#endregion
40
+ export { usePageLeave };
@@ -0,0 +1,16 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { ShallowRef } from "vue";
3
+
4
+ //#region src/parent-element.d.ts
5
+ /**
6
+ * Track the parent element of a reactive element target.
7
+ *
8
+ * Re-reads `parentElement` whenever the target resolves or changes (after
9
+ * the DOM update). Server renders expose `null`.
10
+ *
11
+ * @param target Reactive element target.
12
+ * @returns Readonly shallow ref of the parent element.
13
+ */
14
+ declare function useParentElement(target: MaybeElementTarget): Readonly<ShallowRef<Element | null>>;
15
+ //#endregion
16
+ export { useParentElement };
@@ -0,0 +1,27 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { isElementNode, resolveElement } from "./element-target.mjs";
3
+ import { shallowRef, watch } from "vue";
4
+ //#region src/parent-element.ts
5
+ /**
6
+ * Track the parent element of a reactive element target.
7
+ *
8
+ * Re-reads `parentElement` whenever the target resolves or changes (after
9
+ * the DOM update). Server renders expose `null`.
10
+ *
11
+ * @param target Reactive element target.
12
+ * @returns Readonly shallow ref of the parent element.
13
+ */
14
+ function useParentElement(target) {
15
+ const parent = shallowRef(null);
16
+ const stop = watch(() => resolveElement(target), (element) => {
17
+ const candidate = element?.parentElement ?? null;
18
+ parent.value = isElementNode(candidate) ? candidate : null;
19
+ }, {
20
+ immediate: true,
21
+ flush: "post"
22
+ });
23
+ tryOnScopeDispose(() => stop.stop());
24
+ return parent;
25
+ }
26
+ //#endregion
27
+ export { useParentElement };
@@ -0,0 +1,73 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { Point } from "./mouse.mjs";
3
+ import { Ref } from "vue";
4
+
5
+ //#region src/pinch.d.ts
6
+ /** Snapshot passed to pinch callbacks. */
7
+ interface PinchSnapshot {
8
+ /** Scale relative to the start of the gesture (`1` = unchanged). */
9
+ readonly scale: number;
10
+ /** Rotation relative to the start of the gesture, in degrees. */
11
+ readonly rotation: number;
12
+ /** Midpoint between the two pointers in client coordinates. */
13
+ readonly origin: Point;
14
+ /** Current distance between the two pointers. */
15
+ readonly distance: number;
16
+ }
17
+ /** Options for {@link usePinch}. */
18
+ interface UsePinchOptions {
19
+ /**
20
+ * Called when a second pointer starts a pinch.
21
+ *
22
+ * @default undefined
23
+ */
24
+ readonly onPinchStart?: (snapshot: PinchSnapshot) => void;
25
+ /**
26
+ * Called on every move while pinching.
27
+ *
28
+ * @default undefined
29
+ */
30
+ readonly onPinch?: (snapshot: PinchSnapshot) => void;
31
+ /**
32
+ * Called when one of the two pointers lifts.
33
+ *
34
+ * @default undefined
35
+ */
36
+ readonly onPinchEnd?: (snapshot: PinchSnapshot) => void;
37
+ }
38
+ /** Reactive gesture state returned by {@link usePinch}. */
39
+ interface PinchControls {
40
+ /** Whether two pointers are currently pinching. */
41
+ readonly isPinching: Readonly<Ref<boolean>>;
42
+ /** Scale relative to the gesture start; stays at the final value after the gesture. */
43
+ readonly scale: Readonly<Ref<number>>;
44
+ /** Rotation relative to the gesture start in degrees. */
45
+ readonly rotation: Readonly<Ref<number>>;
46
+ /** Distance between the pointers when the gesture started. */
47
+ readonly initialDistance: Readonly<Ref<number>>;
48
+ /** Current distance between the pointers. */
49
+ readonly distance: Readonly<Ref<number>>;
50
+ /** Midpoint between the pointers. */
51
+ readonly origin: Readonly<Point>;
52
+ /** Restore scale `1` and rotation `0`. */
53
+ readonly reset: () => void;
54
+ /** Remove listeners. Idempotent. */
55
+ readonly stop: () => void;
56
+ }
57
+ /**
58
+ * Recognize two-pointer pinch/rotate gestures on an element.
59
+ *
60
+ * Tracks active pointers with Pointer Events (touch, pen, or mouse chords).
61
+ * The first two pointers define the gesture; additional pointers are
62
+ * ignored. Pair it with `touch-action: none` on the element so the browser
63
+ * does not claim the gesture for zooming. Server renders expose scale `1`,
64
+ * rotation `0`, and `isPinching: false`.
65
+ *
66
+ * @param target Reactive element target.
67
+ * @param options Gesture lifecycle callbacks.
68
+ * @default options {}
69
+ * @returns Reactive gesture state plus reset/stop controls.
70
+ */
71
+ declare function usePinch(target: MaybeElementTarget, options?: UsePinchOptions): PinchControls;
72
+ //#endregion
73
+ export { PinchControls, PinchSnapshot, UsePinchOptions, usePinch };
package/dist/pinch.mjs ADDED
@@ -0,0 +1,138 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { resolveElement } from "./element-target.mjs";
3
+ import { readonly, ref, shallowReactive, shallowReadonly, watch } from "vue";
4
+ //#region src/pinch.ts
5
+ /**
6
+ * Recognize two-pointer pinch/rotate gestures on an element.
7
+ *
8
+ * Tracks active pointers with Pointer Events (touch, pen, or mouse chords).
9
+ * The first two pointers define the gesture; additional pointers are
10
+ * ignored. Pair it with `touch-action: none` on the element so the browser
11
+ * does not claim the gesture for zooming. Server renders expose scale `1`,
12
+ * rotation `0`, and `isPinching: false`.
13
+ *
14
+ * @param target Reactive element target.
15
+ * @param options Gesture lifecycle callbacks.
16
+ * @default options {}
17
+ * @returns Reactive gesture state plus reset/stop controls.
18
+ */
19
+ function usePinch(target, options = {}) {
20
+ const isPinching = ref(false);
21
+ const scale = ref(1);
22
+ const rotation = ref(0);
23
+ const initialDistance = ref(0);
24
+ const distance = ref(0);
25
+ const origin = shallowReactive({
26
+ x: 0,
27
+ y: 0
28
+ });
29
+ const pointers = /* @__PURE__ */ new Map();
30
+ let initialAngle = 0;
31
+ const pair = () => {
32
+ const [first, second] = pointers.values();
33
+ return first && second ? [first, second] : null;
34
+ };
35
+ const snapshot = () => ({
36
+ scale: scale.value,
37
+ rotation: rotation.value,
38
+ origin: {
39
+ x: origin.x,
40
+ y: origin.y
41
+ },
42
+ distance: distance.value
43
+ });
44
+ const measure = (first, second) => {
45
+ origin.x = (first.x + second.x) / 2;
46
+ origin.y = (first.y + second.y) / 2;
47
+ return {
48
+ distance: Math.hypot(second.x - first.x, second.y - first.y),
49
+ angle: Math.atan2(second.y - first.y, second.x - first.x) * 180 / Math.PI
50
+ };
51
+ };
52
+ const onDown = (event) => {
53
+ if (!isPointerEvent(event) || pointers.size >= 2) return;
54
+ pointers.set(event.pointerId, {
55
+ x: event.clientX,
56
+ y: event.clientY
57
+ });
58
+ const points = pair();
59
+ if (!points) return;
60
+ const measured = measure(...points);
61
+ initialDistance.value = measured.distance;
62
+ distance.value = measured.distance;
63
+ initialAngle = measured.angle;
64
+ scale.value = 1;
65
+ rotation.value = 0;
66
+ isPinching.value = true;
67
+ options.onPinchStart?.(snapshot());
68
+ };
69
+ const onMove = (event) => {
70
+ if (!isPointerEvent(event) || !pointers.has(event.pointerId)) return;
71
+ pointers.set(event.pointerId, {
72
+ x: event.clientX,
73
+ y: event.clientY
74
+ });
75
+ const points = pair();
76
+ if (!points || !isPinching.value) return;
77
+ const measured = measure(...points);
78
+ distance.value = measured.distance;
79
+ scale.value = initialDistance.value === 0 ? 1 : measured.distance / initialDistance.value;
80
+ rotation.value = normalizeDegrees(measured.angle - initialAngle);
81
+ options.onPinch?.(snapshot());
82
+ };
83
+ const onUp = (event) => {
84
+ if (!isPointerEvent(event) || !pointers.delete(event.pointerId)) return;
85
+ if (!isPinching.value) return;
86
+ isPinching.value = false;
87
+ options.onPinchEnd?.(snapshot());
88
+ };
89
+ const stopWatch = watch(() => resolveElement(target), (element, _previous, onCleanup) => {
90
+ if (!element) return;
91
+ const listenerOptions = { passive: true };
92
+ element.addEventListener("pointerdown", onDown, listenerOptions);
93
+ element.addEventListener("pointermove", onMove, listenerOptions);
94
+ for (const type of [
95
+ "pointerup",
96
+ "pointercancel",
97
+ "pointerleave"
98
+ ]) element.addEventListener(type, onUp, listenerOptions);
99
+ onCleanup(() => {
100
+ element.removeEventListener("pointerdown", onDown);
101
+ element.removeEventListener("pointermove", onMove);
102
+ for (const type of [
103
+ "pointerup",
104
+ "pointercancel",
105
+ "pointerleave"
106
+ ]) element.removeEventListener(type, onUp);
107
+ pointers.clear();
108
+ isPinching.value = false;
109
+ });
110
+ }, {
111
+ immediate: true,
112
+ flush: "post"
113
+ });
114
+ const stop = () => stopWatch.stop();
115
+ tryOnScopeDispose(stop);
116
+ return {
117
+ isPinching: readonly(isPinching),
118
+ scale: readonly(scale),
119
+ rotation: readonly(rotation),
120
+ initialDistance: readonly(initialDistance),
121
+ distance: readonly(distance),
122
+ origin: shallowReadonly(origin),
123
+ reset: () => {
124
+ scale.value = 1;
125
+ rotation.value = 0;
126
+ },
127
+ stop
128
+ };
129
+ }
130
+ function normalizeDegrees(value) {
131
+ const wrapped = ((value + 180) % 360 + 360) % 360 - 180;
132
+ return wrapped === -180 ? 180 : wrapped;
133
+ }
134
+ function isPointerEvent(event) {
135
+ return "pointerId" in event && "clientX" in event;
136
+ }
137
+ //#endregion
138
+ export { usePinch };
@@ -0,0 +1,79 @@
1
+ import { n as MaybeElementTarget } from "./element-target-Crpxl4D9.mjs";
2
+ import { MaybeRefOrGetter, Ref, ShallowRef } from "vue";
3
+
4
+ //#region src/pointer-lock.d.ts
5
+ /** Document-like capability used by {@link usePointerLock}. */
6
+ interface PointerLockHost extends EventTarget {
7
+ /** Element that currently holds the pointer lock. */
8
+ readonly pointerLockElement: Element | null;
9
+ /** Release the pointer lock. */
10
+ exitPointerLock(): void;
11
+ }
12
+ /** Stable error codes rejected by {@link PointerLockControls.lock} and `unlock`. */
13
+ type PointerLockErrorCode = "VIZE_COMPOSE_POINTER_LOCK_UNSUPPORTED" | "VIZE_COMPOSE_POINTER_LOCK_NO_TARGET" | "VIZE_COMPOSE_POINTER_LOCK_FAILED";
14
+ /** Error thrown when pointer lock cannot be acquired or released. */
15
+ declare class PointerLockError extends Error {
16
+ /** Machine-readable failure code. */
17
+ readonly code: PointerLockErrorCode;
18
+ /**
19
+ * @param code Machine-readable failure code.
20
+ * @param message Human-readable explanation.
21
+ */
22
+ constructor(code: PointerLockErrorCode, message: string);
23
+ }
24
+ /** Options for {@link usePointerLock}. */
25
+ interface UsePointerLockOptions {
26
+ /**
27
+ * Request raw (unaccelerated) movement deltas where supported.
28
+ *
29
+ * @default false
30
+ */
31
+ readonly unadjustedMovement?: boolean;
32
+ /**
33
+ * Reactive document capability for alternate runtimes and tests.
34
+ *
35
+ * @default globalThis.document when available
36
+ */
37
+ readonly host?: MaybeRefOrGetter<PointerLockHost | null | undefined>;
38
+ }
39
+ /** Reactive state and actions returned by {@link usePointerLock}. */
40
+ interface PointerLockControls {
41
+ /** Whether the host supports pointer lock. `false` during server rendering. */
42
+ readonly isSupported: Readonly<Ref<boolean>>;
43
+ /** Element currently holding the lock (any element, not only the target). */
44
+ readonly element: Readonly<ShallowRef<Element | null>>;
45
+ /** Whether the composable's own target holds the lock. */
46
+ readonly isLocked: Readonly<Ref<boolean>>;
47
+ /**
48
+ * Lock the pointer to `target` (or the composable target).
49
+ *
50
+ * @returns The locked element once `pointerlockchange` confirms the lock.
51
+ */
52
+ readonly lock: (target?: MaybeElementTarget) => Promise<Element>;
53
+ /**
54
+ * Release the lock.
55
+ *
56
+ * @returns Whether a lock was held and released.
57
+ */
58
+ readonly unlock: () => Promise<boolean>;
59
+ }
60
+ /**
61
+ * Reactive wrapper around the Pointer Lock API.
62
+ *
63
+ * Tracks `pointerlockchange` on the document and exposes promise-based lock
64
+ * and unlock actions that settle on the platform confirmation events.
65
+ * Rejections are {@link PointerLockError}s with stable codes. Nothing runs
66
+ * during server rendering; listeners are removed with the owning scope.
67
+ *
68
+ * Inside a component the host is read after mounting, so hydration renders
69
+ * the server fallback first and never mismatches.
70
+ *
71
+ * @param target Default reactive element to lock.
72
+ * @param options Movement mode and document capability.
73
+ * @default target undefined
74
+ * @default options {}
75
+ * @returns Support flag, lock state, and actions.
76
+ */
77
+ declare function usePointerLock(target?: MaybeElementTarget, options?: UsePointerLockOptions): PointerLockControls;
78
+ //#endregion
79
+ export { PointerLockControls, PointerLockError, PointerLockErrorCode, PointerLockHost, UsePointerLockOptions, usePointerLock };