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,8 +0,0 @@
1
- //#region src/signals/lib/page-leave.d.ts
2
- /**
3
- * Fires `handler` when the mouse cursor leaves the browser viewport
4
- * (detected via `mouseleave` on the document).
5
- */
6
- declare function createPageLeave(handler: () => void): Disposable;
7
- //#endregion
8
- export { createPageLeave };
@@ -1,12 +0,0 @@
1
- import { createEventListener } from "./event-listener.mjs";
2
- //#region src/signals/lib/page-leave.ts
3
- /**
4
- * Fires `handler` when the mouse cursor leaves the browser viewport
5
- * (detected via `mouseleave` on the document).
6
- */
7
- function createPageLeave(handler) {
8
- const cleanup = createEventListener(document, "mouseleave", handler);
9
- return { [Symbol.dispose]: cleanup };
10
- }
11
- //#endregion
12
- export { createPageLeave };
@@ -1 +0,0 @@
1
- export { };
@@ -1,29 +0,0 @@
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 { createPageLeave } from "./page-leave.mjs";
4
- //#region src/signals/lib/page-leave.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createPageLeave", () => {
9
- it("fires handler when mouse leaves the document", () => {
10
- const handler = vi.fn();
11
- effectScope(() => {
12
- createPageLeave(handler);
13
- });
14
- document.dispatchEvent(new MouseEvent("mouseleave"));
15
- globalExpect(handler).toHaveBeenCalledOnce();
16
- });
17
- it("stops firing after Symbol.dispose", () => {
18
- const handler = vi.fn();
19
- let pl;
20
- effectScope(() => {
21
- pl = createPageLeave(handler);
22
- });
23
- pl[Symbol.dispose]();
24
- document.dispatchEvent(new MouseEvent("mouseleave"));
25
- globalExpect(handler).not.toHaveBeenCalled();
26
- });
27
- });
28
- //#endregion
29
- export {};
@@ -1,14 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/permission.d.ts
4
- type PermissionResult = {
5
- state: Computed<PermissionState | "unsupported">;
6
- } & Disposable;
7
- /**
8
- * Returns a reactive `Computed` reflecting the current permission state for
9
- * the given descriptor. Falls back to `"unsupported"` when the Permissions
10
- * API is unavailable.
11
- */
12
- declare function createPermission(descriptor: PermissionDescriptor): PermissionResult;
13
- //#endregion
14
- export { createPermission };
@@ -1,26 +0,0 @@
1
- import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/permission.ts
3
- /**
4
- * Returns a reactive `Computed` reflecting the current permission state for
5
- * the given descriptor. Falls back to `"unsupported"` when the Permissions
6
- * API is unavailable.
7
- */
8
- function createPermission(descriptor) {
9
- const state = signal("unsupported");
10
- let permissionStatus;
11
- const cleanup = () => {
12
- permissionStatus?.removeEventListener("change", onChange);
13
- };
14
- const onChange = () => {
15
- if (permissionStatus) state(permissionStatus.state);
16
- };
17
- if (typeof navigator !== "undefined" && navigator.permissions != null) navigator.permissions.query(descriptor).then((status) => {
18
- permissionStatus = status;
19
- state(status.state);
20
- status.addEventListener("change", onChange);
21
- });
22
- onCleanup(cleanup);
23
- return Object.assign({ state }, { [Symbol.dispose]: cleanup });
24
- }
25
- //#endregion
26
- export { createPermission };
@@ -1 +0,0 @@
1
- export { };
@@ -1,50 +0,0 @@
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 { createPermission } from "./permission.mjs";
4
- //#region src/signals/lib/permission.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.unstubAllGlobals();
8
- vi.restoreAllMocks();
9
- });
10
- describe("createPermission", () => {
11
- it("returns 'unsupported' when permissions API is missing", () => {
12
- vi.stubGlobal("navigator", { permissions: void 0 });
13
- let p;
14
- effectScope(() => {
15
- p = createPermission({ name: "geolocation" });
16
- });
17
- globalExpect(p.state()).toBe("unsupported");
18
- });
19
- it("queries permissions and returns the state", async () => {
20
- const mockStatus = {
21
- state: "granted",
22
- addEventListener: vi.fn(),
23
- removeEventListener: vi.fn()
24
- };
25
- vi.stubGlobal("navigator", { permissions: { query: vi.fn().mockResolvedValue(mockStatus) } });
26
- let p;
27
- effectScope(() => {
28
- p = createPermission({ name: "geolocation" });
29
- });
30
- await new Promise((res) => setTimeout(res, 0));
31
- globalExpect(p.state()).toBe("granted");
32
- });
33
- it("removes event listener on Symbol.dispose", () => {
34
- const removeListener = vi.fn();
35
- const mockStatus = {
36
- state: "denied",
37
- addEventListener: vi.fn(),
38
- removeEventListener: removeListener
39
- };
40
- vi.stubGlobal("navigator", { permissions: { query: vi.fn().mockResolvedValue(mockStatus) } });
41
- let p;
42
- effectScope(() => {
43
- p = createPermission({ name: "geolocation" });
44
- });
45
- p[Symbol.dispose]();
46
- globalExpect(typeof p.state()).toBe("string");
47
- });
48
- });
49
- //#endregion
50
- export {};
@@ -1,11 +0,0 @@
1
- import { n as Signal } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/persisted-state.d.ts
4
- /**
5
- * Returns a `Signal` whose value is persisted to `storage` (defaults to
6
- * `localStorage`). On creation the stored value is read back; on every
7
- * change the new value is serialised with `JSON.stringify`.
8
- */
9
- declare function createPersistedState<T>(key: string, initialValue: T, storage?: Storage): Signal<T>;
10
- //#endregion
11
- export { createPersistedState };
@@ -1,25 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/persisted-state.ts
3
- /**
4
- * Returns a `Signal` whose value is persisted to `storage` (defaults to
5
- * `localStorage`). On creation the stored value is read back; on every
6
- * change the new value is serialised with `JSON.stringify`.
7
- */
8
- function createPersistedState(key, initialValue, storage = typeof localStorage !== "undefined" ? localStorage : void 0) {
9
- let stored = initialValue;
10
- if (storage) try {
11
- const item = storage.getItem(key);
12
- if (item !== null) stored = JSON.parse(item);
13
- } catch {}
14
- const s = signal(stored);
15
- effect(() => {
16
- const val = s();
17
- if (!storage) return;
18
- try {
19
- storage.setItem(key, JSON.stringify(val));
20
- } catch {}
21
- });
22
- return s;
23
- }
24
- //#endregion
25
- export { createPersistedState };
@@ -1 +0,0 @@
1
- export { };
@@ -1,70 +0,0 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, i as beforeEach, o as it, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createPersistedState } from "./persisted-state.mjs";
4
- //#region src/signals/lib/persisted-state.test.ts
5
- function makeStorage() {
6
- const store = {};
7
- return {
8
- getItem: (k) => store[k] ?? null,
9
- setItem: (k, v) => {
10
- store[k] = v;
11
- },
12
- removeItem: (k) => {
13
- delete store[k];
14
- },
15
- clear: () => {
16
- for (const k of Object.keys(store)) delete store[k];
17
- },
18
- get length() {
19
- return Object.keys(store).length;
20
- },
21
- key: (i) => Object.keys(store)[i] ?? null
22
- };
23
- }
24
- describe("createPersistedState", () => {
25
- let storage;
26
- beforeEach(() => {
27
- storage = makeStorage();
28
- });
29
- it("uses initialValue when storage is empty", () => {
30
- let s;
31
- effectScope(() => {
32
- s = createPersistedState("count", 0, storage);
33
- });
34
- globalExpect(s()).toBe(0);
35
- });
36
- it("reads an existing value from storage", () => {
37
- storage.setItem("count", "42");
38
- let s;
39
- effectScope(() => {
40
- s = createPersistedState("count", 0, storage);
41
- });
42
- globalExpect(s()).toBe(42);
43
- });
44
- it("persists changes to storage", () => {
45
- let s;
46
- effectScope(() => {
47
- s = createPersistedState("count", 0, storage);
48
- });
49
- s(5);
50
- globalExpect(storage.getItem("count")).toBe("5");
51
- });
52
- it("persists complex values as JSON", () => {
53
- let s;
54
- effectScope(() => {
55
- s = createPersistedState("obj", { x: 1 }, storage);
56
- });
57
- s({ x: 99 });
58
- globalExpect(JSON.parse(storage.getItem("obj"))).toEqual({ x: 99 });
59
- });
60
- it("falls back to initialValue on invalid JSON", () => {
61
- storage.setItem("broken", "{not json}");
62
- let s;
63
- effectScope(() => {
64
- s = createPersistedState("broken", 7, storage);
65
- });
66
- globalExpect(s()).toBe(7);
67
- });
68
- });
69
- //#endregion
70
- export {};
@@ -1,10 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/pressed-keys.d.ts
4
- /**
5
- * Returns a `Computed<ReadonlySet<string>>` containing all keyboard keys
6
- * currently being held down. Key values follow the `KeyboardEvent.key` spec.
7
- */
8
- declare function createPressedKeys(): Computed<ReadonlySet<string>> & Disposable;
9
- //#endregion
10
- export { createPressedKeys };
@@ -1,32 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/pressed-keys.ts
4
- /**
5
- * Returns a `Computed<ReadonlySet<string>>` containing all keyboard keys
6
- * currently being held down. Key values follow the `KeyboardEvent.key` spec.
7
- */
8
- function createPressedKeys() {
9
- const keys = signal(/* @__PURE__ */ new Set());
10
- const onKeyDown = (e) => {
11
- const next = new Set(keys());
12
- next.add(e.key);
13
- keys(next);
14
- };
15
- const onKeyUp = (e) => {
16
- const next = new Set(keys());
17
- next.delete(e.key);
18
- keys(next);
19
- };
20
- const onBlur = () => keys(/* @__PURE__ */ new Set());
21
- const r1 = createEventListener(window, "keydown", onKeyDown);
22
- const r2 = createEventListener(window, "keyup", onKeyUp);
23
- const r3 = createEventListener(window, "blur", onBlur);
24
- const cleanup = () => {
25
- r1();
26
- r2();
27
- r3();
28
- };
29
- return Object.assign(keys, { [Symbol.dispose]: cleanup });
30
- }
31
- //#endregion
32
- export { createPressedKeys };
@@ -1 +0,0 @@
1
- export { };
@@ -1,54 +0,0 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createPressedKeys } from "./pressed-keys.mjs";
4
- //#region src/signals/lib/pressed-keys.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createPressedKeys", () => {
9
- it("starts with an empty set", () => {
10
- let keys;
11
- effectScope(() => {
12
- keys = createPressedKeys();
13
- });
14
- globalExpect(keys().size).toBe(0);
15
- });
16
- it("adds a key on keydown", () => {
17
- let keys;
18
- effectScope(() => {
19
- keys = createPressedKeys();
20
- });
21
- window.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
22
- globalExpect(keys().has("a")).toBe(true);
23
- });
24
- it("removes a key on keyup", () => {
25
- let keys;
26
- effectScope(() => {
27
- keys = createPressedKeys();
28
- });
29
- window.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
30
- window.dispatchEvent(new KeyboardEvent("keyup", { key: "a" }));
31
- globalExpect(keys().has("a")).toBe(false);
32
- });
33
- it("tracks multiple keys simultaneously", () => {
34
- let keys;
35
- effectScope(() => {
36
- keys = createPressedKeys();
37
- });
38
- window.dispatchEvent(new KeyboardEvent("keydown", { key: "Control" }));
39
- window.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
40
- globalExpect(keys().has("Control")).toBe(true);
41
- globalExpect(keys().has("a")).toBe(true);
42
- });
43
- it("stops reacting after Symbol.dispose", () => {
44
- let keys;
45
- effectScope(() => {
46
- keys = createPressedKeys();
47
- });
48
- keys[Symbol.dispose]();
49
- window.dispatchEvent(new KeyboardEvent("keydown", { key: "z" }));
50
- globalExpect(keys().has("z")).toBe(false);
51
- });
52
- });
53
- //#endregion
54
- export {};
@@ -1,10 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/previous-distinct.d.ts
4
- /**
5
- * Like `createPrevious` but only updates when the value is *distinct*
6
- * (i.e. fails the equality check).
7
- */
8
- declare function createPreviousDistinct<T>(getter: () => T, isEqual?: (a: T, b: T) => boolean): Computed<T | undefined>;
9
- //#endregion
10
- export { createPreviousDistinct };
@@ -1,22 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/previous-distinct.ts
3
- /**
4
- * Like `createPrevious` but only updates when the value is *distinct*
5
- * (i.e. fails the equality check).
6
- */
7
- function createPreviousDistinct(getter, isEqual = Object.is) {
8
- const prev = signal(void 0);
9
- let current;
10
- let initialized = false;
11
- effect(() => {
12
- const next = getter();
13
- if (!initialized || !isEqual(next, current)) {
14
- prev(current);
15
- current = next;
16
- initialized = true;
17
- }
18
- });
19
- return prev;
20
- }
21
- //#endregion
22
- export { createPreviousDistinct };
@@ -1 +0,0 @@
1
- export { };
@@ -1,50 +0,0 @@
1
- import { f as signal, o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createPreviousDistinct } from "./previous-distinct.mjs";
4
- //#region src/signals/lib/previous-distinct.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createPreviousDistinct", () => {
9
- it("starts as undefined", () => {
10
- const s = signal(0);
11
- let prev;
12
- effectScope(() => {
13
- prev = createPreviousDistinct(() => s());
14
- });
15
- globalExpect(prev()).toBeUndefined();
16
- });
17
- it("updates previous when value changes", () => {
18
- const s = signal(0);
19
- let prev;
20
- effectScope(() => {
21
- prev = createPreviousDistinct(() => s());
22
- });
23
- s(1);
24
- globalExpect(prev()).toBe(0);
25
- });
26
- it("does not update previous when value is the same", () => {
27
- const s = signal(0);
28
- let prev;
29
- effectScope(() => {
30
- prev = createPreviousDistinct(() => s());
31
- });
32
- s(1);
33
- globalExpect(prev()).toBe(0);
34
- s(1);
35
- globalExpect(prev()).toBe(0);
36
- });
37
- it("uses a custom equality function", () => {
38
- const s = signal({ id: 1 });
39
- let prev;
40
- effectScope(() => {
41
- prev = createPreviousDistinct(() => s(), (a, b) => a.id === b.id);
42
- });
43
- s({ id: 1 });
44
- globalExpect(prev()).toBeUndefined();
45
- s({ id: 2 });
46
- globalExpect(prev()?.id).toBe(1);
47
- });
48
- });
49
- //#endregion
50
- export {};
@@ -1,10 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/previous.d.ts
4
- /**
5
- * Returns a `Computed` that always holds the *previous* value emitted by
6
- * `getter`. Starts as `undefined` until the getter changes for the first time.
7
- */
8
- declare function createPrevious<T>(getter: () => T): Computed<T | undefined>;
9
- //#endregion
10
- export { createPrevious };
@@ -1,18 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/previous.ts
3
- /**
4
- * Returns a `Computed` that always holds the *previous* value emitted by
5
- * `getter`. Starts as `undefined` until the getter changes for the first time.
6
- */
7
- function createPrevious(getter) {
8
- const prev = signal(void 0);
9
- let current;
10
- effect(() => {
11
- const next = getter();
12
- prev(current);
13
- current = next;
14
- });
15
- return prev;
16
- }
17
- //#endregion
18
- export { createPrevious };
@@ -1,47 +0,0 @@
1
- import { f as signal, o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, o as it, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createPrevious } from "./previous.mjs";
4
- //#region src/signals/lib/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
- //#endregion
47
- export {};
@@ -1,17 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/queue.d.ts
4
- type QueueResult<T> = {
5
- items: Computed<readonly T[]>;
6
- add(item: T): void;
7
- remove(): T | undefined;
8
- peek(): T | undefined;
9
- clear(): void;
10
- size: Computed<number>;
11
- };
12
- /**
13
- * Reactive FIFO queue.
14
- */
15
- declare function createQueue<T>(initial?: T[]): QueueResult<T>;
16
- //#endregion
17
- export { createQueue };
@@ -1,28 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/queue.ts
3
- /**
4
- * Reactive FIFO queue.
5
- */
6
- function createQueue(initial = []) {
7
- const s = signal([...initial]);
8
- const add = (item) => s([...s(), item]);
9
- const remove = () => {
10
- const arr = [...s()];
11
- const first = arr.shift();
12
- s(arr);
13
- return first;
14
- };
15
- const peek = () => s()[0];
16
- const clear = () => s([]);
17
- const size = () => s().length;
18
- return {
19
- items: s,
20
- add,
21
- remove,
22
- peek,
23
- clear,
24
- size
25
- };
26
- }
27
- //#endregion
28
- export { createQueue };
@@ -1 +0,0 @@
1
- export { };
@@ -1,61 +0,0 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createQueue } from "./queue.mjs";
4
- //#region src/signals/lib/queue.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createQueue", () => {
9
- it("starts empty by default", () => {
10
- let q;
11
- effectScope(() => {
12
- q = createQueue();
13
- });
14
- globalExpect(q.items()).toEqual([]);
15
- globalExpect(q.size()).toBe(0);
16
- });
17
- it("add enqueues an item", () => {
18
- let q;
19
- effectScope(() => {
20
- q = createQueue();
21
- });
22
- q.add(1);
23
- q.add(2);
24
- globalExpect(q.items()).toEqual([1, 2]);
25
- });
26
- it("remove dequeues the first item (FIFO)", () => {
27
- let q;
28
- effectScope(() => {
29
- q = createQueue([
30
- 1,
31
- 2,
32
- 3
33
- ]);
34
- });
35
- globalExpect(q.remove()).toBe(1);
36
- globalExpect(q.items()).toEqual([2, 3]);
37
- });
38
- it("peek returns the front without removing", () => {
39
- let q;
40
- effectScope(() => {
41
- q = createQueue([10, 20]);
42
- });
43
- globalExpect(q.peek()).toBe(10);
44
- globalExpect(q.size()).toBe(2);
45
- });
46
- it("clear empties the queue", () => {
47
- let q;
48
- effectScope(() => {
49
- q = createQueue([
50
- 1,
51
- 2,
52
- 3
53
- ]);
54
- });
55
- q.clear();
56
- globalExpect(q.items()).toEqual([]);
57
- globalExpect(q.size()).toBe(0);
58
- });
59
- });
60
- //#endregion
61
- export {};
@@ -1,17 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/raf.d.ts
4
- type RafResult = {
5
- isRunning: Computed<boolean>;
6
- start(): void;
7
- stop(): void;
8
- } & Disposable;
9
- /**
10
- * Looping `requestAnimationFrame` wrapper with start/stop control.
11
- *
12
- * The callback receives the `DOMHighResTimeStamp` elapsed since page load.
13
- * Starts running immediately on creation.
14
- */
15
- declare function createRaf(callback: (time: number) => void): RafResult;
16
- //#endregion
17
- export { createRaf };