elements-kit 0.0.9 → 0.0.11

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 (313) hide show
  1. package/README.md +3 -4
  2. package/dist/builder/dom.d.mts +1 -1
  3. package/dist/builder/index.d.mts +87 -1
  4. package/dist/builder/index.mjs +1 -1
  5. package/dist/{element-Ddk9YaoE.mjs → element-MXzFk4G2.mjs} +1 -1
  6. package/dist/{index-BtqiEEfc.d.mts → index-Cvdhuy6Y.d.mts} +8 -4
  7. package/dist/index.d.mts +1 -1
  8. package/dist/index.mjs +3 -3
  9. package/dist/{signals/lib → integrations}/react.d.mts +2 -2
  10. package/dist/{signals/lib → integrations}/react.mjs +2 -2
  11. package/dist/jsx-runtime/index.d.mts +2 -2
  12. package/dist/jsx-runtime/index.mjs +3 -3
  13. package/dist/lib-BYJ5jPTG.d.mts +4 -0
  14. package/dist/polyfill-DR5XVnh_.d.mts +9 -0
  15. package/dist/signals/index.d.mts +2 -2
  16. package/dist/signals/index.mjs +2 -2
  17. package/dist/{signals-CLAPw8kk.mjs → signals-DcgXhkU2.mjs} +41 -9
  18. package/dist/slot.d.mts +1 -2
  19. package/dist/{test.BmQO5GaM-CR2qjV1t.mjs → test.BmQO5GaM-ANkhHvbr.mjs} +1 -1
  20. package/dist/utilities/active-element.d.mts +6 -0
  21. package/dist/utilities/active-element.mjs +13 -0
  22. package/dist/utilities/active-element.test.mjs +24 -0
  23. package/dist/{signals/lib → utilities}/debounced.d.mts +3 -3
  24. package/dist/{signals/lib → utilities}/debounced.mjs +7 -6
  25. package/dist/{signals/lib → utilities}/debounced.test.mjs +3 -3
  26. package/dist/{signals/lib → utilities}/element-rect.d.mts +3 -3
  27. package/dist/{signals/lib → utilities}/element-rect.mjs +7 -7
  28. package/dist/{signals/lib → utilities}/element-rect.test.mjs +3 -3
  29. package/dist/utilities/element-scroll.d.mts +16 -0
  30. package/dist/utilities/element-scroll.mjs +52 -0
  31. package/dist/utilities/element-scroll.test.mjs +25 -0
  32. package/dist/utilities/event-driven.d.mts +47 -0
  33. package/dist/utilities/event-driven.mjs +38 -0
  34. package/dist/utilities/event-listener.d.mts +16 -0
  35. package/dist/{signals/lib → utilities}/event-listener.mjs +4 -4
  36. package/dist/{signals/lib → utilities}/event-listener.test.mjs +8 -8
  37. package/dist/utilities/focus-within.d.mts +10 -0
  38. package/dist/utilities/focus-within.mjs +20 -0
  39. package/dist/{signals/lib/is-focus-within.test.mjs → utilities/focus-within.test.mjs} +10 -11
  40. package/dist/utilities/hover.d.mts +11 -0
  41. package/dist/utilities/hover.mjs +20 -0
  42. package/dist/{signals/lib → utilities}/hover.test.mjs +5 -16
  43. package/dist/utilities/intersection-observer.d.mts +8 -0
  44. package/dist/{signals/lib → utilities}/intersection-observer.mjs +3 -4
  45. package/dist/{signals/lib → utilities}/intersection-observer.test.mjs +3 -3
  46. package/dist/{signals/lib → utilities}/interval.d.mts +2 -2
  47. package/dist/{signals/lib → utilities}/interval.mjs +6 -5
  48. package/dist/{signals/lib → utilities}/interval.test.mjs +3 -3
  49. package/dist/utilities/location.d.mts +24 -0
  50. package/dist/utilities/location.mjs +54 -0
  51. package/dist/utilities/location.test.mjs +60 -0
  52. package/dist/utilities/long-press.d.mts +10 -0
  53. package/dist/utilities/long-press.mjs +27 -0
  54. package/dist/{signals/lib → utilities}/long-press.test.mjs +3 -3
  55. package/dist/{signals/lib → utilities}/media-devices.d.mts +3 -3
  56. package/dist/{signals/lib → utilities}/media-devices.mjs +5 -5
  57. package/dist/{signals/lib → utilities}/media-devices.test.mjs +6 -8
  58. package/dist/utilities/media-player.d.mts +22 -0
  59. package/dist/utilities/media-player.mjs +36 -0
  60. package/dist/utilities/media-player.test.mjs +100 -0
  61. package/dist/{signals/lib/media.d.mts → utilities/media-query.d.mts} +4 -4
  62. package/dist/utilities/media-query.mjs +19 -0
  63. package/dist/utilities/mutation-observer.d.mts +8 -0
  64. package/dist/{signals/lib → utilities}/mutation-observer.mjs +3 -3
  65. package/dist/{signals/lib → utilities}/mutation-observer.test.mjs +3 -3
  66. package/dist/{signals/lib → utilities}/on-click-outside.d.mts +3 -3
  67. package/dist/utilities/on-click-outside.mjs +17 -0
  68. package/dist/{signals/lib → utilities}/on-click-outside.test.mjs +7 -18
  69. package/dist/utilities/orientation.d.mts +10 -0
  70. package/dist/utilities/orientation.mjs +21 -0
  71. package/dist/utilities/previous.d.mts +12 -0
  72. package/dist/utilities/previous.mjs +24 -0
  73. package/dist/utilities/previous.test.mjs +88 -0
  74. package/dist/utilities/resize-observer.d.mts +8 -0
  75. package/dist/{signals/lib → utilities}/resize-observer.mjs +4 -5
  76. package/dist/utilities/routing.d.mts +59 -0
  77. package/dist/utilities/routing.mjs +89 -0
  78. package/dist/utilities/routing.test.mjs +128 -0
  79. package/dist/utilities/search-params.d.mts +13 -0
  80. package/dist/utilities/search-params.mjs +23 -0
  81. package/dist/utilities/search-params.test.mjs +35 -0
  82. package/dist/utilities/storage.d.mts +22 -0
  83. package/dist/utilities/storage.mjs +65 -0
  84. package/dist/utilities/storage.test.mjs +137 -0
  85. package/dist/{signals/lib → utilities}/throttled.d.mts +2 -2
  86. package/dist/utilities/throttled.mjs +36 -0
  87. package/dist/{signals/lib → utilities}/throttled.test.mjs +3 -3
  88. package/dist/{signals/lib → utilities}/timeout.d.mts +6 -5
  89. package/dist/utilities/timeout.mjs +42 -0
  90. package/dist/{signals/lib → utilities}/timeout.test.mjs +7 -7
  91. package/dist/utilities/window-size.d.mts +10 -0
  92. package/dist/utilities/window-size.mjs +22 -0
  93. package/dist/utilities/window-size.test.mjs +42 -0
  94. package/package.json +11 -6
  95. package/dist/index-CKjDUp1B.d.mts +0 -89
  96. package/dist/polyfill-AFIi9kAN.d.mts +0 -14
  97. package/dist/signals/lib/active-element.d.mts +0 -10
  98. package/dist/signals/lib/active-element.mjs +0 -20
  99. package/dist/signals/lib/active-element.test.mjs +0 -39
  100. package/dist/signals/lib/animation-frames.d.mts +0 -18
  101. package/dist/signals/lib/animation-frames.mjs +0 -48
  102. package/dist/signals/lib/animation-frames.test.mjs +0 -52
  103. package/dist/signals/lib/async-retry.d.mts +0 -21
  104. package/dist/signals/lib/async-retry.mjs +0 -57
  105. package/dist/signals/lib/async-retry.test.mjs +0 -57
  106. package/dist/signals/lib/audio.d.mts +0 -26
  107. package/dist/signals/lib/audio.mjs +0 -60
  108. package/dist/signals/lib/audio.test.mjs +0 -54
  109. package/dist/signals/lib/battery.d.mts +0 -17
  110. package/dist/signals/lib/battery.mjs +0 -45
  111. package/dist/signals/lib/battery.test.mjs +0 -38
  112. package/dist/signals/lib/before-unload.d.mts +0 -11
  113. package/dist/signals/lib/before-unload.mjs +0 -20
  114. package/dist/signals/lib/before-unload.test.mjs +0 -29
  115. package/dist/signals/lib/clipboard.d.mts +0 -15
  116. package/dist/signals/lib/clipboard.mjs +0 -25
  117. package/dist/signals/lib/clipboard.test.mjs +0 -53
  118. package/dist/signals/lib/counter.d.mts +0 -18
  119. package/dist/signals/lib/counter.mjs +0 -21
  120. package/dist/signals/lib/counter.test.d.mts +0 -1
  121. package/dist/signals/lib/counter.test.mjs +0 -74
  122. package/dist/signals/lib/document-title.d.mts +0 -10
  123. package/dist/signals/lib/document-title.mjs +0 -15
  124. package/dist/signals/lib/document-title.test.d.mts +0 -1
  125. package/dist/signals/lib/document-title.test.mjs +0 -33
  126. package/dist/signals/lib/element-size.d.mts +0 -16
  127. package/dist/signals/lib/element-size.mjs +0 -32
  128. package/dist/signals/lib/element-size.test.d.mts +0 -1
  129. package/dist/signals/lib/element-size.test.mjs +0 -86
  130. package/dist/signals/lib/event-listener.d.mts +0 -14
  131. package/dist/signals/lib/favicon.d.mts +0 -10
  132. package/dist/signals/lib/favicon.mjs +0 -24
  133. package/dist/signals/lib/favicon.test.d.mts +0 -1
  134. package/dist/signals/lib/favicon.test.mjs +0 -28
  135. package/dist/signals/lib/finite-state-machine.d.mts +0 -22
  136. package/dist/signals/lib/finite-state-machine.mjs +0 -26
  137. package/dist/signals/lib/finite-state-machine.test.d.mts +0 -1
  138. package/dist/signals/lib/finite-state-machine.test.mjs +0 -66
  139. package/dist/signals/lib/fullscreen.d.mts +0 -15
  140. package/dist/signals/lib/fullscreen.mjs +0 -26
  141. package/dist/signals/lib/fullscreen.test.d.mts +0 -1
  142. package/dist/signals/lib/fullscreen.test.mjs +0 -56
  143. package/dist/signals/lib/geolocation.d.mts +0 -15
  144. package/dist/signals/lib/geolocation.mjs +0 -30
  145. package/dist/signals/lib/geolocation.test.d.mts +0 -1
  146. package/dist/signals/lib/geolocation.test.mjs +0 -37
  147. package/dist/signals/lib/hash.d.mts +0 -10
  148. package/dist/signals/lib/hash.mjs +0 -20
  149. package/dist/signals/lib/hash.test.d.mts +0 -1
  150. package/dist/signals/lib/hash.test.mjs +0 -47
  151. package/dist/signals/lib/hover.d.mts +0 -11
  152. package/dist/signals/lib/hover.mjs +0 -23
  153. package/dist/signals/lib/intersection-observer.d.mts +0 -8
  154. package/dist/signals/lib/is-document-visible.d.mts +0 -11
  155. package/dist/signals/lib/is-document-visible.mjs +0 -19
  156. package/dist/signals/lib/is-document-visible.test.d.mts +0 -1
  157. package/dist/signals/lib/is-document-visible.test.mjs +0 -58
  158. package/dist/signals/lib/is-focus-within.d.mts +0 -10
  159. package/dist/signals/lib/is-focus-within.mjs +0 -28
  160. package/dist/signals/lib/is-focus-within.test.d.mts +0 -1
  161. package/dist/signals/lib/is-idle.d.mts +0 -10
  162. package/dist/signals/lib/is-idle.mjs +0 -37
  163. package/dist/signals/lib/is-idle.test.d.mts +0 -1
  164. package/dist/signals/lib/is-idle.test.mjs +0 -50
  165. package/dist/signals/lib/is-in-viewport.d.mts +0 -10
  166. package/dist/signals/lib/is-in-viewport.mjs +0 -16
  167. package/dist/signals/lib/is-in-viewport.test.d.mts +0 -1
  168. package/dist/signals/lib/is-in-viewport.test.mjs +0 -74
  169. package/dist/signals/lib/key-press.d.mts +0 -13
  170. package/dist/signals/lib/key-press.mjs +0 -25
  171. package/dist/signals/lib/key-press.test.d.mts +0 -1
  172. package/dist/signals/lib/key-press.test.mjs +0 -52
  173. package/dist/signals/lib/list.d.mts +0 -19
  174. package/dist/signals/lib/list.mjs +0 -36
  175. package/dist/signals/lib/list.test.d.mts +0 -1
  176. package/dist/signals/lib/list.test.mjs +0 -104
  177. package/dist/signals/lib/lock-body-scroll.d.mts +0 -8
  178. package/dist/signals/lib/lock-body-scroll.mjs +0 -17
  179. package/dist/signals/lib/lock-body-scroll.test.d.mts +0 -1
  180. package/dist/signals/lib/lock-body-scroll.test.mjs +0 -37
  181. package/dist/signals/lib/long-press.d.mts +0 -10
  182. package/dist/signals/lib/long-press.mjs +0 -29
  183. package/dist/signals/lib/map.d.mts +0 -18
  184. package/dist/signals/lib/map.mjs +0 -33
  185. package/dist/signals/lib/map.test.d.mts +0 -1
  186. package/dist/signals/lib/map.test.mjs +0 -60
  187. package/dist/signals/lib/media.mjs +0 -26
  188. package/dist/signals/lib/motion.d.mts +0 -15
  189. package/dist/signals/lib/motion.mjs +0 -27
  190. package/dist/signals/lib/motion.test.d.mts +0 -1
  191. package/dist/signals/lib/motion.test.mjs +0 -51
  192. package/dist/signals/lib/mouse-position.d.mts +0 -14
  193. package/dist/signals/lib/mouse-position.mjs +0 -22
  194. package/dist/signals/lib/mouse-position.test.d.mts +0 -1
  195. package/dist/signals/lib/mouse-position.test.mjs +0 -44
  196. package/dist/signals/lib/mouse-wheel.d.mts +0 -10
  197. package/dist/signals/lib/mouse-wheel.mjs +0 -17
  198. package/dist/signals/lib/mouse-wheel.test.d.mts +0 -1
  199. package/dist/signals/lib/mouse-wheel.test.mjs +0 -38
  200. package/dist/signals/lib/mutation-observer.d.mts +0 -8
  201. package/dist/signals/lib/network-state.d.mts +0 -17
  202. package/dist/signals/lib/network-state.mjs +0 -34
  203. package/dist/signals/lib/network-state.test.d.mts +0 -1
  204. package/dist/signals/lib/network-state.test.mjs +0 -61
  205. package/dist/signals/lib/on-click-outside.mjs +0 -20
  206. package/dist/signals/lib/orientation.d.mts +0 -13
  207. package/dist/signals/lib/orientation.mjs +0 -21
  208. package/dist/signals/lib/orientation.test.d.mts +0 -1
  209. package/dist/signals/lib/orientation.test.mjs +0 -43
  210. package/dist/signals/lib/page-leave.d.mts +0 -8
  211. package/dist/signals/lib/page-leave.mjs +0 -12
  212. package/dist/signals/lib/page-leave.test.d.mts +0 -1
  213. package/dist/signals/lib/page-leave.test.mjs +0 -29
  214. package/dist/signals/lib/permission.d.mts +0 -14
  215. package/dist/signals/lib/permission.mjs +0 -26
  216. package/dist/signals/lib/permission.test.d.mts +0 -1
  217. package/dist/signals/lib/permission.test.mjs +0 -50
  218. package/dist/signals/lib/persisted-state.d.mts +0 -11
  219. package/dist/signals/lib/persisted-state.mjs +0 -25
  220. package/dist/signals/lib/persisted-state.test.d.mts +0 -1
  221. package/dist/signals/lib/persisted-state.test.mjs +0 -70
  222. package/dist/signals/lib/pressed-keys.d.mts +0 -10
  223. package/dist/signals/lib/pressed-keys.mjs +0 -32
  224. package/dist/signals/lib/pressed-keys.test.d.mts +0 -1
  225. package/dist/signals/lib/pressed-keys.test.mjs +0 -54
  226. package/dist/signals/lib/previous-distinct.d.mts +0 -10
  227. package/dist/signals/lib/previous-distinct.mjs +0 -22
  228. package/dist/signals/lib/previous-distinct.test.d.mts +0 -1
  229. package/dist/signals/lib/previous-distinct.test.mjs +0 -50
  230. package/dist/signals/lib/previous.d.mts +0 -10
  231. package/dist/signals/lib/previous.mjs +0 -18
  232. package/dist/signals/lib/previous.test.mjs +0 -47
  233. package/dist/signals/lib/queue.d.mts +0 -17
  234. package/dist/signals/lib/queue.mjs +0 -28
  235. package/dist/signals/lib/queue.test.d.mts +0 -1
  236. package/dist/signals/lib/queue.test.mjs +0 -61
  237. package/dist/signals/lib/raf.d.mts +0 -17
  238. package/dist/signals/lib/raf.mjs +0 -38
  239. package/dist/signals/lib/raf.test.d.mts +0 -1
  240. package/dist/signals/lib/raf.test.mjs +0 -58
  241. package/dist/signals/lib/resize-observer.d.mts +0 -8
  242. package/dist/signals/lib/resize-observer.test.d.mts +0 -1
  243. package/dist/signals/lib/resize-observer.test.mjs +0 -44
  244. package/dist/signals/lib/resource.d.mts +0 -23
  245. package/dist/signals/lib/resource.mjs +0 -43
  246. package/dist/signals/lib/resource.test.d.mts +0 -1
  247. package/dist/signals/lib/resource.test.mjs +0 -56
  248. package/dist/signals/lib/scroll-state.d.mts +0 -19
  249. package/dist/signals/lib/scroll-state.mjs +0 -46
  250. package/dist/signals/lib/scroll-state.test.d.mts +0 -1
  251. package/dist/signals/lib/scroll-state.test.mjs +0 -94
  252. package/dist/signals/lib/scrolling.d.mts +0 -12
  253. package/dist/signals/lib/scrolling.mjs +0 -26
  254. package/dist/signals/lib/scrolling.test.d.mts +0 -1
  255. package/dist/signals/lib/scrolling.test.mjs +0 -57
  256. package/dist/signals/lib/search-params.d.mts +0 -16
  257. package/dist/signals/lib/search-params.mjs +0 -37
  258. package/dist/signals/lib/search-params.test.mjs +0 -56
  259. package/dist/signals/lib/set.d.mts +0 -18
  260. package/dist/signals/lib/set.mjs +0 -38
  261. package/dist/signals/lib/set.test.d.mts +0 -1
  262. package/dist/signals/lib/set.test.mjs +0 -70
  263. package/dist/signals/lib/start-typing.d.mts +0 -9
  264. package/dist/signals/lib/start-typing.mjs +0 -39
  265. package/dist/signals/lib/start-typing.test.d.mts +0 -1
  266. package/dist/signals/lib/start-typing.test.mjs +0 -64
  267. package/dist/signals/lib/state-history.d.mts +0 -21
  268. package/dist/signals/lib/state-history.mjs +0 -61
  269. package/dist/signals/lib/state-history.test.d.mts +0 -1
  270. package/dist/signals/lib/state-history.test.mjs +0 -106
  271. package/dist/signals/lib/state-validator.d.mts +0 -16
  272. package/dist/signals/lib/state-validator.mjs +0 -21
  273. package/dist/signals/lib/state-validator.test.d.mts +0 -1
  274. package/dist/signals/lib/state-validator.test.mjs +0 -41
  275. package/dist/signals/lib/throttled.mjs +0 -45
  276. package/dist/signals/lib/timeout.mjs +0 -39
  277. package/dist/signals/lib/toggle.d.mts +0 -12
  278. package/dist/signals/lib/toggle.mjs +0 -12
  279. package/dist/signals/lib/toggle.test.d.mts +0 -1
  280. package/dist/signals/lib/toggle.test.mjs +0 -43
  281. package/dist/signals/lib/video.d.mts +0 -25
  282. package/dist/signals/lib/video.mjs +0 -59
  283. package/dist/signals/lib/video.test.d.mts +0 -1
  284. package/dist/signals/lib/video.test.mjs +0 -51
  285. package/dist/signals/lib/watch.d.mts +0 -16
  286. package/dist/signals/lib/watch.mjs +0 -31
  287. package/dist/signals/lib/watch.test.d.mts +0 -1
  288. package/dist/signals/lib/watch.test.mjs +0 -51
  289. package/dist/signals/lib/window-size.d.mts +0 -14
  290. package/dist/signals/lib/window-size.mjs +0 -22
  291. package/dist/signals/lib/window-size.test.mjs +0 -50
  292. /package/dist/{signals/lib → utilities}/active-element.test.d.mts +0 -0
  293. /package/dist/{signals/lib → utilities}/debounced.test.d.mts +0 -0
  294. /package/dist/{signals/lib → utilities}/element-rect.test.d.mts +0 -0
  295. /package/dist/{signals/lib/animation-frames.test.d.mts → utilities/element-scroll.test.d.mts} +0 -0
  296. /package/dist/{signals/lib → utilities}/event-listener.test.d.mts +0 -0
  297. /package/dist/{signals/lib/async-retry.test.d.mts → utilities/focus-within.test.d.mts} +0 -0
  298. /package/dist/{signals/lib → utilities}/hover.test.d.mts +0 -0
  299. /package/dist/{signals/lib → utilities}/intersection-observer.test.d.mts +0 -0
  300. /package/dist/{signals/lib → utilities}/interval.test.d.mts +0 -0
  301. /package/dist/{signals/lib/audio.test.d.mts → utilities/location.test.d.mts} +0 -0
  302. /package/dist/{signals/lib → utilities}/long-press.test.d.mts +0 -0
  303. /package/dist/{signals/lib → utilities}/media-devices.test.d.mts +0 -0
  304. /package/dist/{signals/lib/battery.test.d.mts → utilities/media-player.test.d.mts} +0 -0
  305. /package/dist/{signals/lib → utilities}/mutation-observer.test.d.mts +0 -0
  306. /package/dist/{signals/lib → utilities}/on-click-outside.test.d.mts +0 -0
  307. /package/dist/{signals/lib → utilities}/previous.test.d.mts +0 -0
  308. /package/dist/{signals/lib/before-unload.test.d.mts → utilities/routing.test.d.mts} +0 -0
  309. /package/dist/{signals/lib → utilities}/search-params.test.d.mts +0 -0
  310. /package/dist/{signals/lib/clipboard.test.d.mts → utilities/storage.test.d.mts} +0 -0
  311. /package/dist/{signals/lib → utilities}/throttled.test.d.mts +0 -0
  312. /package/dist/{signals/lib → utilities}/timeout.test.d.mts +0 -0
  313. /package/dist/{signals/lib → utilities}/window-size.test.d.mts +0 -0
@@ -1,6 +1,6 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/media-devices.ts
1
+ import { p as signal } from "../signals-DcgXhkU2.mjs";
2
+ import { on } from "./event-listener.mjs";
3
+ //#region src/utilities/media-devices.ts
4
4
  /**
5
5
  * Returns a reactive list of available media devices, refreshed whenever
6
6
  * devices are added or removed.
@@ -11,8 +11,8 @@ function createMediaDevices() {
11
11
  navigator.mediaDevices.enumerateDevices().then((list) => devices(list));
12
12
  };
13
13
  refresh();
14
- const cleanup = createEventListener(navigator.mediaDevices, "devicechange", refresh);
15
- return Object.assign(devices, { [Symbol.dispose]: cleanup });
14
+ on(navigator.mediaDevices, "devicechange", refresh);
15
+ return devices;
16
16
  }
17
17
  //#endregion
18
18
  export { createMediaDevices };
@@ -1,7 +1,7 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
1
+ import { s as effectScope } from "../signals-DcgXhkU2.mjs";
2
+ import { n as vi, o as describe, r as afterEach, s as it, t as globalExpect } from "../test.BmQO5GaM-ANkhHvbr.mjs";
3
3
  import { createMediaDevices } from "./media-devices.mjs";
4
- //#region src/signals/lib/media-devices.test.ts
4
+ //#region src/utilities/media-devices.test.ts
5
5
  afterEach(() => {
6
6
  document.body.innerHTML = "";
7
7
  vi.unstubAllGlobals();
@@ -25,18 +25,16 @@ describe("createMediaDevices", () => {
25
25
  await new Promise((res) => setTimeout(res, 0));
26
26
  globalExpect(d()).toEqual(mockDevices);
27
27
  });
28
- it("removes devicechange listener on Symbol.dispose", () => {
28
+ it("removes devicechange listener on scope disposal", () => {
29
29
  const removeListener = vi.fn();
30
30
  vi.stubGlobal("navigator", { mediaDevices: {
31
31
  enumerateDevices: vi.fn().mockResolvedValue([]),
32
32
  addEventListener: vi.fn(),
33
33
  removeEventListener: removeListener
34
34
  } });
35
- let d;
36
35
  effectScope(() => {
37
- d = createMediaDevices();
38
- });
39
- d[Symbol.dispose]();
36
+ createMediaDevices();
37
+ })();
40
38
  globalExpect(removeListener).toHaveBeenCalledWith("devicechange", globalExpect.any(Function));
41
39
  });
42
40
  });
@@ -0,0 +1,22 @@
1
+ import { r as Signal, t as Computed } from "../index-Cvdhuy6Y.mjs";
2
+
3
+ //#region src/utilities/media-player.d.ts
4
+ type MediaPlayerResult<T extends HTMLMediaElement> = {
5
+ element: T;
6
+ playing: Computed<boolean>;
7
+ muted: Signal<boolean>;
8
+ volume: Signal<number>;
9
+ duration: Computed<number>;
10
+ time: Signal<number>;
11
+ ended: Computed<boolean>;
12
+ play(): void;
13
+ pause(): void;
14
+ toggle(): void;
15
+ } & Disposable;
16
+ /**
17
+ * Wraps an `HTMLMediaElement` (`<audio>` or `<video>`) with reactive state
18
+ * and playback controls.
19
+ */
20
+ declare function createMediaPlayer<T extends HTMLMediaElement>(element: T): MediaPlayerResult<T>;
21
+ //#endregion
22
+ export { createMediaPlayer };
@@ -0,0 +1,36 @@
1
+ import { fromEvent, sync } from "./event-driven.mjs";
2
+ //#region src/utilities/media-player.ts
3
+ /**
4
+ * Wraps an `HTMLMediaElement` (`<audio>` or `<video>`) with reactive state
5
+ * and playback controls.
6
+ */
7
+ function createMediaPlayer(element) {
8
+ const el = element;
9
+ const [playing] = sync(fromEvent(el, ["play", "pause"]), () => !el.paused);
10
+ const [muted] = sync(fromEvent(el, "volumechange"), () => el.muted, (v) => {
11
+ el.muted = v;
12
+ });
13
+ const [volume] = sync(fromEvent(el, "volumechange"), () => el.volume, (v) => {
14
+ el.volume = Math.min(1, Math.max(0, v));
15
+ });
16
+ const [duration] = sync(fromEvent(el, "durationchange"), () => el.duration || 0);
17
+ const [time] = sync(fromEvent(el, "timeupdate"), () => el.currentTime, (v) => {
18
+ el.currentTime = v;
19
+ });
20
+ const [ended] = sync(fromEvent(el, "ended"), () => el.ended);
21
+ return {
22
+ element: el,
23
+ playing,
24
+ muted,
25
+ volume,
26
+ duration,
27
+ time,
28
+ ended,
29
+ play: () => el.play(),
30
+ pause: () => el.pause(),
31
+ toggle: () => el.paused ? el.play() : el.pause(),
32
+ [Symbol.dispose]: () => {}
33
+ };
34
+ }
35
+ //#endregion
36
+ export { createMediaPlayer };
@@ -0,0 +1,100 @@
1
+ import { s as effectScope } from "../signals-DcgXhkU2.mjs";
2
+ import { n as vi, o as describe, r as afterEach, s as it, t as globalExpect } from "../test.BmQO5GaM-ANkhHvbr.mjs";
3
+ import { createMediaPlayer } from "./media-player.mjs";
4
+ //#region src/utilities/media-player.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ vi.restoreAllMocks();
8
+ });
9
+ describe("createMediaPlayer", () => {
10
+ describe("with <audio>", () => {
11
+ it("accepts an HTMLAudioElement", () => {
12
+ const el = new Audio();
13
+ let a;
14
+ effectScope(() => {
15
+ a = createMediaPlayer(el);
16
+ });
17
+ globalExpect(a.element).toBe(el);
18
+ });
19
+ it("starts as paused", () => {
20
+ let a;
21
+ effectScope(() => {
22
+ a = createMediaPlayer(new Audio());
23
+ });
24
+ globalExpect(a.playing()).toBe(false);
25
+ });
26
+ it("muted(true) sets muted to true", () => {
27
+ let a;
28
+ effectScope(() => {
29
+ a = createMediaPlayer(new Audio());
30
+ });
31
+ a.muted(true);
32
+ globalExpect(a.element.muted).toBe(true);
33
+ });
34
+ it("volume() clamps to [0, 1]", () => {
35
+ let a;
36
+ effectScope(() => {
37
+ a = createMediaPlayer(new Audio());
38
+ });
39
+ a.volume(2);
40
+ globalExpect(a.element.volume).toBe(1);
41
+ a.volume(-1);
42
+ globalExpect(a.element.volume).toBe(0);
43
+ });
44
+ it("removes event listeners when scope is disposed", () => {
45
+ const removeSpy = vi.fn();
46
+ const el = new Audio();
47
+ let dispose;
48
+ let a;
49
+ dispose = effectScope(() => {
50
+ a = createMediaPlayer(el);
51
+ });
52
+ vi.spyOn(a.element, "removeEventListener").mockImplementation(removeSpy);
53
+ dispose();
54
+ globalExpect(removeSpy).toHaveBeenCalled();
55
+ });
56
+ });
57
+ describe("with <video>", () => {
58
+ it("accepts an HTMLVideoElement", () => {
59
+ const el = document.createElement("video");
60
+ document.body.appendChild(el);
61
+ let v;
62
+ effectScope(() => {
63
+ v = createMediaPlayer(el);
64
+ });
65
+ globalExpect(v.element).toBe(el);
66
+ });
67
+ it("starts as paused", () => {
68
+ const el = document.createElement("video");
69
+ document.body.appendChild(el);
70
+ let v;
71
+ effectScope(() => {
72
+ v = createMediaPlayer(el);
73
+ });
74
+ globalExpect(v.playing()).toBe(false);
75
+ });
76
+ it("time(v) updates currentTime", () => {
77
+ const el = document.createElement("video");
78
+ document.body.appendChild(el);
79
+ let v;
80
+ effectScope(() => {
81
+ v = createMediaPlayer(el);
82
+ });
83
+ v.time(30);
84
+ globalExpect(el.currentTime).toBe(30);
85
+ });
86
+ it("removes event listeners when scope is disposed", () => {
87
+ const el = document.createElement("video");
88
+ document.body.appendChild(el);
89
+ let dispose;
90
+ dispose = effectScope(() => {
91
+ createMediaPlayer(el);
92
+ });
93
+ const removeSpy = vi.spyOn(el, "removeEventListener");
94
+ dispose();
95
+ globalExpect(removeSpy).toHaveBeenCalled();
96
+ });
97
+ });
98
+ });
99
+ //#endregion
100
+ export {};
@@ -1,6 +1,6 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
1
+ import { t as Computed } from "../index-Cvdhuy6Y.mjs";
2
2
 
3
- //#region src/signals/lib/media.d.ts
3
+ //#region src/utilities/media-query.d.ts
4
4
  declare const isBrowser: boolean;
5
5
  /**
6
6
  * Creates a signal that tracks a CSS media query.
@@ -9,6 +9,6 @@ declare const isBrowser: boolean;
9
9
  * @param defaultState The default value (for SSR/hydration)
10
10
  * @returns Computed<boolean> that is true if the query matches
11
11
  */
12
- declare function createMediaSignal(query: string, defaultState?: boolean): Computed<boolean>;
12
+ declare function createMediaQuery(query: string, defaultState?: boolean): Computed<boolean>;
13
13
  //#endregion
14
- export { createMediaSignal, isBrowser };
14
+ export { createMediaQuery, isBrowser };
@@ -0,0 +1,19 @@
1
+ import { p as signal } from "../signals-DcgXhkU2.mjs";
2
+ import { fromEvent, sync } from "./event-driven.mjs";
3
+ //#region src/utilities/media-query.ts
4
+ const isBrowser = typeof window !== "undefined";
5
+ /**
6
+ * Creates a signal that tracks a CSS media query.
7
+ *
8
+ * @param query The media query string (e.g. '(max-width: 600px)')
9
+ * @param defaultState The default value (for SSR/hydration)
10
+ * @returns Computed<boolean> that is true if the query matches
11
+ */
12
+ function createMediaQuery(query, defaultState) {
13
+ if (!isBrowser) return signal(defaultState ?? false);
14
+ const mql = window.matchMedia(query);
15
+ const [state] = sync(fromEvent(mql, "change"), () => mql.matches);
16
+ return state;
17
+ }
18
+ //#endregion
19
+ export { createMediaQuery, isBrowser };
@@ -0,0 +1,8 @@
1
+ //#region src/utilities/mutation-observer.d.ts
2
+ /**
3
+ * Watches `target` for DOM mutations and calls `callback` with each batch of
4
+ * `MutationRecord`s.
5
+ */
6
+ declare function createMutationObserver(target: Element, options: MutationObserverInit, callback: (records: MutationRecord[]) => void): Disposable;
7
+ //#endregion
8
+ export { createMutationObserver };
@@ -1,12 +1,12 @@
1
- import { d as onCleanup } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/mutation-observer.ts
1
+ import { f as onCleanup } from "../signals-DcgXhkU2.mjs";
2
+ //#region src/utilities/mutation-observer.ts
3
3
  /**
4
4
  * Watches `target` for DOM mutations and calls `callback` with each batch of
5
5
  * `MutationRecord`s.
6
6
  */
7
7
  function createMutationObserver(target, options, callback) {
8
8
  const observer = new MutationObserver((records) => callback(records));
9
- const el = typeof target === "function" ? target() : target;
9
+ const el = target;
10
10
  if (el) observer.observe(el, options);
11
11
  const cleanup = () => observer.disconnect();
12
12
  onCleanup(cleanup);
@@ -1,7 +1,7 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
1
+ import { s as effectScope } from "../signals-DcgXhkU2.mjs";
2
+ import { n as vi, o as describe, r as afterEach, s as it, t as globalExpect } from "../test.BmQO5GaM-ANkhHvbr.mjs";
3
3
  import { createMutationObserver } from "./mutation-observer.mjs";
4
- //#region src/signals/lib/mutation-observer.test.ts
4
+ //#region src/utilities/mutation-observer.test.ts
5
5
  afterEach(() => {
6
6
  document.body.innerHTML = "";
7
7
  vi.unstubAllGlobals();
@@ -1,4 +1,4 @@
1
- //#region src/signals/lib/on-click-outside.d.ts
1
+ //#region src/utilities/on-click-outside.d.ts
2
2
  /**
3
3
  * Fires `handler` whenever a pointer-down event occurs outside `target`.
4
4
  *
@@ -6,6 +6,6 @@
6
6
  * touch input. Cleanup is registered automatically when called inside an
7
7
  * effect or scope.
8
8
  */
9
- declare function createOnClickOutside(target: Element | (() => Element | null), handler: (e: PointerEvent) => void): void;
9
+ declare function onClickOutside(target: Element, handler: (e: PointerEvent) => void): () => void;
10
10
  //#endregion
11
- export { createOnClickOutside };
11
+ export { onClickOutside };
@@ -0,0 +1,17 @@
1
+ import { on } from "./event-listener.mjs";
2
+ //#region src/utilities/on-click-outside.ts
3
+ /**
4
+ * Fires `handler` whenever a pointer-down event occurs outside `target`.
5
+ *
6
+ * Built on a `document` `pointerdown` listener so it works for both mouse and
7
+ * touch input. Cleanup is registered automatically when called inside an
8
+ * effect or scope.
9
+ */
10
+ function onClickOutside(target, handler) {
11
+ const listener = (e) => {
12
+ if (!target.contains(e.target)) handler(e);
13
+ };
14
+ return on(document, "pointerdown", listener);
15
+ }
16
+ //#endregion
17
+ export { onClickOutside };
@@ -1,7 +1,7 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createOnClickOutside } from "./on-click-outside.mjs";
4
- //#region src/signals/lib/on-click-outside.test.ts
1
+ import { s as effectScope } from "../signals-DcgXhkU2.mjs";
2
+ import { n as vi, o as describe, r as afterEach, s as it, t as globalExpect } from "../test.BmQO5GaM-ANkhHvbr.mjs";
3
+ import { onClickOutside } from "./on-click-outside.mjs";
4
+ //#region src/utilities/on-click-outside.test.ts
5
5
  afterEach(() => {
6
6
  document.body.innerHTML = "";
7
7
  });
@@ -12,7 +12,7 @@ describe("createOnClickOutside", () => {
12
12
  document.body.append(inside, outside);
13
13
  const handler = vi.fn();
14
14
  effectScope(() => {
15
- createOnClickOutside(inside, handler);
15
+ onClickOutside(inside, handler);
16
16
  });
17
17
  outside.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
18
18
  globalExpect(handler).toHaveBeenCalledOnce();
@@ -22,7 +22,7 @@ describe("createOnClickOutside", () => {
22
22
  document.body.appendChild(el);
23
23
  const handler = vi.fn();
24
24
  effectScope(() => {
25
- createOnClickOutside(el, handler);
25
+ onClickOutside(el, handler);
26
26
  });
27
27
  el.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
28
28
  globalExpect(handler).not.toHaveBeenCalled();
@@ -33,22 +33,11 @@ describe("createOnClickOutside", () => {
33
33
  document.body.append(inside, outside);
34
34
  const handler = vi.fn();
35
35
  effectScope(() => {
36
- createOnClickOutside(inside, handler);
36
+ onClickOutside(inside, handler);
37
37
  })();
38
38
  outside.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
39
39
  globalExpect(handler).not.toHaveBeenCalled();
40
40
  });
41
- it("works with a reactive target getter", () => {
42
- const el = document.createElement("div");
43
- const outside = document.createElement("span");
44
- document.body.append(el, outside);
45
- const handler = vi.fn();
46
- effectScope(() => {
47
- createOnClickOutside(() => el, handler);
48
- });
49
- outside.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
50
- globalExpect(handler).toHaveBeenCalledOnce();
51
- });
52
41
  });
53
42
  //#endregion
54
43
  export {};
@@ -0,0 +1,10 @@
1
+ import { t as Computed } from "../index-Cvdhuy6Y.mjs";
2
+
3
+ //#region src/utilities/orientation.d.ts
4
+ type OrientationResult = {
5
+ angle: Computed<number>;
6
+ type: Computed<OrientationType>;
7
+ } & Disposable;
8
+ declare const orientation: OrientationResult;
9
+ //#endregion
10
+ export { orientation };
@@ -0,0 +1,21 @@
1
+ import { fromEvent, sync } from "./event-driven.mjs";
2
+ //#region src/utilities/orientation.ts
3
+ /**
4
+ * Returns reactive signals for the screen orientation.
5
+ */
6
+ function createOrientation() {
7
+ const subscribe = fromEvent(screen.orientation, "change");
8
+ const [angle, stopAngle] = sync(subscribe, () => screen.orientation?.angle ?? 0);
9
+ const [type, stopType] = sync(subscribe, () => screen.orientation?.type ?? "portrait-primary");
10
+ return {
11
+ angle,
12
+ type,
13
+ [Symbol.dispose]: () => {
14
+ stopAngle();
15
+ stopType();
16
+ }
17
+ };
18
+ }
19
+ const orientation = createOrientation();
20
+ //#endregion
21
+ export { orientation };
@@ -0,0 +1,12 @@
1
+ import { t as Computed } from "../index-Cvdhuy6Y.mjs";
2
+
3
+ //#region src/utilities/previous.d.ts
4
+ /**
5
+ * Returns a `Computed` that always holds the *previous* value of `source`.
6
+ * Starts as `undefined` until the source changes for the first time.
7
+ *
8
+ * When `ignore` is provided, the previous value only updates when the ignore check fails.
9
+ */
10
+ declare function createPrevious<T>(source: Computed<T>, ignore?: (a: T, b: T) => boolean): Computed<T | undefined>;
11
+ //#endregion
12
+ export { createPrevious };
@@ -0,0 +1,24 @@
1
+ import { o as effect, p as signal } from "../signals-DcgXhkU2.mjs";
2
+ //#region src/utilities/previous.ts
3
+ /**
4
+ * Returns a `Computed` that always holds the *previous* value of `source`.
5
+ * Starts as `undefined` until the source changes for the first time.
6
+ *
7
+ * When `ignore` is provided, the previous value only updates when the ignore check fails.
8
+ */
9
+ function createPrevious(source, ignore) {
10
+ const prev = signal(void 0);
11
+ let current;
12
+ let initialized = false;
13
+ effect(() => {
14
+ const next = source();
15
+ if (!initialized || !ignore || !ignore(next, current)) {
16
+ prev(current);
17
+ current = next;
18
+ initialized = true;
19
+ }
20
+ });
21
+ return prev;
22
+ }
23
+ //#endregion
24
+ export { createPrevious };
@@ -0,0 +1,88 @@
1
+ import { p as signal, s as effectScope } from "../signals-DcgXhkU2.mjs";
2
+ import { o as describe, s as it, t as globalExpect } from "../test.BmQO5GaM-ANkhHvbr.mjs";
3
+ import { createPrevious } from "./previous.mjs";
4
+ //#region src/utilities/previous.test.ts
5
+ describe("createPrevious", () => {
6
+ it("starts as undefined", () => {
7
+ const s = signal(1);
8
+ let p;
9
+ effectScope(() => {
10
+ p = createPrevious(s);
11
+ });
12
+ globalExpect(p()).toBeUndefined();
13
+ });
14
+ it("returns the previous value after a change", () => {
15
+ const s = signal(1);
16
+ let p;
17
+ effectScope(() => {
18
+ p = createPrevious(s);
19
+ });
20
+ s(2);
21
+ globalExpect(p()).toBe(1);
22
+ });
23
+ it("tracks each successive previous value", () => {
24
+ const s = signal("a");
25
+ let p;
26
+ effectScope(() => {
27
+ p = createPrevious(s);
28
+ });
29
+ s("b");
30
+ globalExpect(p()).toBe("a");
31
+ s("c");
32
+ globalExpect(p()).toBe("b");
33
+ });
34
+ it("does not update after scope disposal", () => {
35
+ const s = signal(10);
36
+ let p;
37
+ const stop = effectScope(() => {
38
+ p = createPrevious(s);
39
+ });
40
+ s(20);
41
+ stop();
42
+ s(30);
43
+ globalExpect(p()).toBe(10);
44
+ });
45
+ });
46
+ describe("createPrevious with isEqual (distinct mode)", () => {
47
+ it("starts as undefined", () => {
48
+ const s = signal(0);
49
+ let prev;
50
+ effectScope(() => {
51
+ prev = createPrevious(s, Object.is);
52
+ });
53
+ globalExpect(prev()).toBeUndefined();
54
+ });
55
+ it("updates previous when value changes", () => {
56
+ const s = signal(0);
57
+ let prev;
58
+ effectScope(() => {
59
+ prev = createPrevious(s, Object.is);
60
+ });
61
+ s(1);
62
+ globalExpect(prev()).toBe(0);
63
+ });
64
+ it("does not update previous when value is the same", () => {
65
+ const s = signal(0);
66
+ let prev;
67
+ effectScope(() => {
68
+ prev = createPrevious(s, Object.is);
69
+ });
70
+ s(1);
71
+ globalExpect(prev()).toBe(0);
72
+ s(1);
73
+ globalExpect(prev()).toBe(0);
74
+ });
75
+ it("uses a custom equality function", () => {
76
+ const s = signal({ id: 1 });
77
+ let prev;
78
+ effectScope(() => {
79
+ prev = createPrevious(s, (a, b) => a.id === b.id);
80
+ });
81
+ s({ id: 1 });
82
+ globalExpect(prev()).toBeUndefined();
83
+ s({ id: 2 });
84
+ globalExpect(prev()?.id).toBe(1);
85
+ });
86
+ });
87
+ //#endregion
88
+ export {};
@@ -0,0 +1,8 @@
1
+ //#region src/utilities/resize-observer.d.ts
2
+ /**
3
+ * Raw `ResizeObserver` wrapper with automatic cleanup.
4
+ * Use `createElementRect` for the common case.
5
+ */
6
+ declare function createResizeObserver(target: Element, callback: ResizeObserverCallback): Disposable;
7
+ //#endregion
8
+ export { createResizeObserver };
@@ -1,13 +1,12 @@
1
- import { d as onCleanup } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/resize-observer.ts
1
+ import { f as onCleanup } from "../signals-DcgXhkU2.mjs";
2
+ //#region src/utilities/resize-observer.ts
3
3
  /**
4
4
  * Raw `ResizeObserver` wrapper with automatic cleanup.
5
- * Use `createElementSize` / `createElementRect` for the common cases.
5
+ * Use `createElementRect` for the common case.
6
6
  */
7
7
  function createResizeObserver(target, callback) {
8
8
  const observer = new ResizeObserver(callback);
9
- const el = typeof target === "function" ? target() : target;
10
- if (el) observer.observe(el);
9
+ if (target) observer.observe(target);
11
10
  const cleanup = () => observer.disconnect();
12
11
  onCleanup(cleanup);
13
12
  return { [Symbol.dispose]: cleanup };
@@ -0,0 +1,59 @@
1
+ import { t as Computed } from "../index-Cvdhuy6Y.mjs";
2
+
3
+ //#region src/utilities/routing.d.ts
4
+ declare function patchHistory(): void;
5
+ type NavigateOptions = {
6
+ replace?: boolean;
7
+ state?: unknown;
8
+ };
9
+ /**
10
+ * Navigates to `url` via `history.pushState` (or `replaceState` when
11
+ * `replace` is `true`).
12
+ *
13
+ * `history.pushState` / `replaceState` are patched once at module load so
14
+ * all navigation — including third-party router calls — dispatches the
15
+ * `pushstate` / `replacestate` events that `currentLocation` signals react to.
16
+ */
17
+ declare function navigate(url: string | URL, {
18
+ replace,
19
+ state
20
+ }?: NavigateOptions): void;
21
+ /**
22
+ * Returns `true` when a click event on an `<a>` element should be handled
23
+ * client-side — same origin, primary button, no modifier keys, no download,
24
+ * no `_blank` target. Walks up to the nearest anchor via `closest("a")`.
25
+ *
26
+ * Use alongside `navigate()` to intercept anchor clicks:
27
+ *
28
+ * ```ts
29
+ * el.addEventListener("click", (e) => {
30
+ * if (isLocalNavigationEvent(e)) { e.preventDefault(); navigate(el.href); }
31
+ * });
32
+ * ```
33
+ */
34
+ declare function isLocalNavigationEvent(e: MouseEvent): boolean;
35
+ /**
36
+ * Returns `Computed<boolean>` — `true` when the current URL matches `input`.
37
+ * Uses `URLPattern.test()` — faster than `match` when you don't need
38
+ * captured groups.
39
+ *
40
+ * Use object form: `{ pathname: "/users/:id" }`. Relative string patterns
41
+ * require a base URL and will throw.
42
+ *
43
+ * Requires `urlpattern-polyfill` for Safari < 26 and Firefox < 142.
44
+ */
45
+ declare function matches(input: URLPatternInput, options?: URLPatternOptions): Computed<boolean>;
46
+ /**
47
+ * Returns `Computed<URLPatternResult | null>` — the full match result when
48
+ * the current URL matches `input`, `null` when it does not.
49
+ * Use when you need captured groups (params). For a boolean gate,
50
+ * prefer `matches()` which is faster.
51
+ *
52
+ * Use object form: `{ pathname: "/users/:id" }`. Relative string patterns
53
+ * require a base URL and will throw.
54
+ *
55
+ * Requires `urlpattern-polyfill` for Safari < 26 and Firefox < 142.
56
+ */
57
+ declare function match(input: URLPatternInput, options?: URLPatternOptions): Computed<URLPatternResult | null>;
58
+ //#endregion
59
+ export { isLocalNavigationEvent, match, matches, navigate, patchHistory };