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,38 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/set.ts
3
- /**
4
- * Reactive `Set` with mutation helpers.
5
- */
6
- function createSet(initial) {
7
- const s = signal(new Set(initial));
8
- const add = (value) => {
9
- const next = new Set(s());
10
- next.add(value);
11
- s(next);
12
- };
13
- const remove = (value) => {
14
- const next = new Set(s());
15
- next.delete(value);
16
- s(next);
17
- };
18
- const toggle = (value) => {
19
- const next = new Set(s());
20
- if (next.has(value)) next.delete(value);
21
- else next.add(value);
22
- s(next);
23
- };
24
- const has = (value) => s().has(value);
25
- const clear = () => s(/* @__PURE__ */ new Set());
26
- const size = () => s().size;
27
- return {
28
- entries: s,
29
- add,
30
- remove,
31
- toggle,
32
- has,
33
- clear,
34
- size
35
- };
36
- }
37
- //#endregion
38
- export { createSet };
@@ -1 +0,0 @@
1
- export { };
@@ -1,70 +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 { createSet } from "./set.mjs";
4
- //#region src/signals/lib/set.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createSet", () => {
9
- it("starts empty by default", () => {
10
- let s;
11
- effectScope(() => {
12
- s = createSet();
13
- });
14
- globalExpect(s.entries().size).toBe(0);
15
- globalExpect(s.size()).toBe(0);
16
- });
17
- it("initializes from a Set", () => {
18
- let s;
19
- effectScope(() => {
20
- s = createSet(new Set([
21
- 1,
22
- 2,
23
- 3
24
- ]));
25
- });
26
- globalExpect(s.has(2)).toBe(true);
27
- globalExpect(s.size()).toBe(3);
28
- });
29
- it("add inserts a value", () => {
30
- let s;
31
- effectScope(() => {
32
- s = createSet();
33
- });
34
- s.add(5);
35
- globalExpect(s.has(5)).toBe(true);
36
- });
37
- it("remove deletes a value", () => {
38
- let s;
39
- effectScope(() => {
40
- s = createSet(new Set([1, 2]));
41
- });
42
- s.remove(1);
43
- globalExpect(s.has(1)).toBe(false);
44
- globalExpect(s.size()).toBe(1);
45
- });
46
- it("toggle adds if absent, removes if present", () => {
47
- let s;
48
- effectScope(() => {
49
- s = createSet();
50
- });
51
- s.toggle(7);
52
- globalExpect(s.has(7)).toBe(true);
53
- s.toggle(7);
54
- globalExpect(s.has(7)).toBe(false);
55
- });
56
- it("clear empties the set", () => {
57
- let s;
58
- effectScope(() => {
59
- s = createSet(new Set([
60
- 1,
61
- 2,
62
- 3
63
- ]));
64
- });
65
- s.clear();
66
- globalExpect(s.size()).toBe(0);
67
- });
68
- });
69
- //#endregion
70
- export {};
@@ -1,9 +0,0 @@
1
- //#region src/signals/lib/start-typing.d.ts
2
- /**
3
- * Fires `handler` once whenever the user starts typing (presses a non-modifier
4
- * key on the document). The handler is not called again until the user stops
5
- * typing and then starts again (debounced by a 1 s idle window).
6
- */
7
- declare function createStartTyping(handler: () => void, idleMs?: number): Disposable;
8
- //#endregion
9
- export { createStartTyping };
@@ -1,39 +0,0 @@
1
- import { d as onCleanup } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/start-typing.ts
4
- const TYPING_KEYS = new Set([
5
- "Meta",
6
- "Alt",
7
- "Control",
8
- "Shift",
9
- "CapsLock",
10
- "Tab"
11
- ]);
12
- /**
13
- * Fires `handler` once whenever the user starts typing (presses a non-modifier
14
- * key on the document). The handler is not called again until the user stops
15
- * typing and then starts again (debounced by a 1 s idle window).
16
- */
17
- function createStartTyping(handler, idleMs = 1e3) {
18
- let timer;
19
- let isTyping = false;
20
- const onKeyDown = (e) => {
21
- if (TYPING_KEYS.has(e.key)) return;
22
- if (!isTyping) {
23
- isTyping = true;
24
- handler();
25
- }
26
- clearTimeout(timer);
27
- timer = setTimeout(() => {
28
- isTyping = false;
29
- }, idleMs);
30
- };
31
- const removeListener = createEventListener(document, "keydown", onKeyDown);
32
- onCleanup(() => clearTimeout(timer));
33
- return { [Symbol.dispose]: () => {
34
- clearTimeout(timer);
35
- removeListener();
36
- } };
37
- }
38
- //#endregion
39
- export { createStartTyping };
@@ -1 +0,0 @@
1
- export { };
@@ -1,64 +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 { createStartTyping } from "./start-typing.mjs";
4
- //#region src/signals/lib/start-typing.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.useRealTimers();
8
- });
9
- describe("createStartTyping", () => {
10
- it("calls handler on first keydown", () => {
11
- vi.useFakeTimers();
12
- const handler = vi.fn();
13
- effectScope(() => {
14
- createStartTyping(handler, 1e3);
15
- });
16
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
17
- globalExpect(handler).toHaveBeenCalledOnce();
18
- });
19
- it("does not call handler again while still typing", () => {
20
- vi.useFakeTimers();
21
- const handler = vi.fn();
22
- effectScope(() => {
23
- createStartTyping(handler, 1e3);
24
- });
25
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
26
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "b" }));
27
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "c" }));
28
- globalExpect(handler).toHaveBeenCalledOnce();
29
- });
30
- it("calls handler again after idle period", () => {
31
- vi.useFakeTimers();
32
- const handler = vi.fn();
33
- effectScope(() => {
34
- createStartTyping(handler, 1e3);
35
- });
36
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
37
- vi.advanceTimersByTime(1100);
38
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "b" }));
39
- globalExpect(handler).toHaveBeenCalledTimes(2);
40
- });
41
- it("ignores modifier keys", () => {
42
- vi.useFakeTimers();
43
- const handler = vi.fn();
44
- effectScope(() => {
45
- createStartTyping(handler, 1e3);
46
- });
47
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "Shift" }));
48
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "Control" }));
49
- globalExpect(handler).not.toHaveBeenCalled();
50
- });
51
- it("stops on Symbol.dispose", () => {
52
- vi.useFakeTimers();
53
- const handler = vi.fn();
54
- let st;
55
- effectScope(() => {
56
- st = createStartTyping(handler, 1e3);
57
- });
58
- st[Symbol.dispose]();
59
- document.dispatchEvent(new KeyboardEvent("keydown", { key: "a" }));
60
- globalExpect(handler).not.toHaveBeenCalled();
61
- });
62
- });
63
- //#endregion
64
- export {};
@@ -1,21 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/state-history.d.ts
4
- type StateHistoryResult<T> = {
5
- history: Computed<T[]>;
6
- index: Computed<number>;
7
- canUndo: Computed<boolean>;
8
- canRedo: Computed<boolean>;
9
- undo(): void;
10
- redo(): void;
11
- clear(): void;
12
- };
13
- /**
14
- * Tracks the history of a reactive getter, providing `undo` and `redo`.
15
- *
16
- * @param getter - A reactive getter whose value is tracked.
17
- * @param capacity - Maximum number of history entries (default: 100).
18
- */
19
- declare function createStateHistory<T>(getter: () => T, capacity?: number): StateHistoryResult<T>;
20
- //#endregion
21
- export { createStateHistory };
@@ -1,61 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/state-history.ts
3
- /**
4
- * Tracks the history of a reactive getter, providing `undo` and `redo`.
5
- *
6
- * @param getter - A reactive getter whose value is tracked.
7
- * @param capacity - Maximum number of history entries (default: 100).
8
- */
9
- function createStateHistory(getter, capacity = 100) {
10
- const history = signal([getter()]);
11
- const index = signal(0);
12
- let paused = false;
13
- let firstRun = true;
14
- effect(() => {
15
- const next = getter();
16
- if (paused) return;
17
- if (firstRun) {
18
- firstRun = false;
19
- return;
20
- }
21
- const hist = history();
22
- const idx = index();
23
- const trimmed = hist.slice(0, idx + 1);
24
- trimmed.push(next);
25
- if (trimmed.length > capacity) trimmed.shift();
26
- history(trimmed);
27
- index(trimmed.length - 1);
28
- });
29
- const canUndo = () => index() > 0;
30
- const canRedo = () => index() < history().length - 1;
31
- const undo = () => {
32
- if (!canUndo()) return;
33
- paused = true;
34
- index(index() - 1);
35
- paused = false;
36
- };
37
- const redo = () => {
38
- if (!canRedo()) return;
39
- paused = true;
40
- index(index() + 1);
41
- paused = false;
42
- };
43
- const clear = () => {
44
- const current = getter();
45
- paused = true;
46
- history([current]);
47
- index(0);
48
- paused = false;
49
- };
50
- return {
51
- history,
52
- index,
53
- canUndo,
54
- canRedo,
55
- undo,
56
- redo,
57
- clear
58
- };
59
- }
60
- //#endregion
61
- export { createStateHistory };
@@ -1 +0,0 @@
1
- export { };
@@ -1,106 +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 { createStateHistory } from "./state-history.mjs";
4
- //#region src/signals/lib/state-history.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createStateHistory", () => {
9
- it("starts with the current getter value in history", () => {
10
- const s = signal(0);
11
- let h;
12
- effectScope(() => {
13
- h = createStateHistory(() => s());
14
- });
15
- globalExpect(h.history()).toEqual([0]);
16
- globalExpect(h.index()).toBe(0);
17
- });
18
- it("records new values", () => {
19
- const s = signal(0);
20
- let h;
21
- effectScope(() => {
22
- h = createStateHistory(() => s());
23
- });
24
- s(1);
25
- s(2);
26
- globalExpect(h.history()).toEqual([
27
- 0,
28
- 1,
29
- 2
30
- ]);
31
- globalExpect(h.index()).toBe(2);
32
- });
33
- it("canUndo is false initially", () => {
34
- const s = signal(0);
35
- let h;
36
- effectScope(() => {
37
- h = createStateHistory(() => s());
38
- });
39
- globalExpect(h.canUndo()).toBe(false);
40
- });
41
- it("canUndo is true after a change", () => {
42
- const s = signal(0);
43
- let h;
44
- effectScope(() => {
45
- h = createStateHistory(() => s());
46
- });
47
- s(1);
48
- globalExpect(h.canUndo()).toBe(true);
49
- });
50
- it("undo moves the index back", () => {
51
- const s = signal(0);
52
- let h;
53
- effectScope(() => {
54
- h = createStateHistory(() => s());
55
- });
56
- s(1);
57
- s(2);
58
- h.undo();
59
- globalExpect(h.index()).toBe(1);
60
- globalExpect(h.canRedo()).toBe(true);
61
- });
62
- it("redo moves the index forward", () => {
63
- const s = signal(0);
64
- let h;
65
- effectScope(() => {
66
- h = createStateHistory(() => s());
67
- });
68
- s(1);
69
- s(2);
70
- h.undo();
71
- h.redo();
72
- globalExpect(h.index()).toBe(2);
73
- globalExpect(h.canRedo()).toBe(false);
74
- });
75
- it("new change after undo drops the future", () => {
76
- const s = signal(0);
77
- let h;
78
- effectScope(() => {
79
- h = createStateHistory(() => s());
80
- });
81
- s(1);
82
- s(2);
83
- h.undo();
84
- s(3);
85
- globalExpect(h.history()).toEqual([
86
- 0,
87
- 1,
88
- 3
89
- ]);
90
- globalExpect(h.canRedo()).toBe(false);
91
- });
92
- it("clear resets history to the current value", () => {
93
- const s = signal(0);
94
- let h;
95
- effectScope(() => {
96
- h = createStateHistory(() => s());
97
- });
98
- s(1);
99
- s(2);
100
- h.clear();
101
- globalExpect(h.history()).toEqual([2]);
102
- globalExpect(h.index()).toBe(0);
103
- });
104
- });
105
- //#endregion
106
- export {};
@@ -1,16 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/state-validator.d.ts
4
- type StateValidatorResult<E> = {
5
- errors: Computed<E | null>;
6
- isValid: Computed<boolean>;
7
- };
8
- /**
9
- * Runs `validator` reactively against a getter's value and exposes the result
10
- * as `errors` and `isValid` computeds.
11
- *
12
- * Return `null` from `validator` to indicate no error.
13
- */
14
- declare function createStateValidator<T, E>(getter: () => T, validator: (value: T) => E | null): StateValidatorResult<E>;
15
- //#endregion
16
- export { createStateValidator };
@@ -1,21 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/state-validator.ts
3
- /**
4
- * Runs `validator` reactively against a getter's value and exposes the result
5
- * as `errors` and `isValid` computeds.
6
- *
7
- * Return `null` from `validator` to indicate no error.
8
- */
9
- function createStateValidator(getter, validator) {
10
- const errors = signal(null);
11
- effect(() => {
12
- errors(validator(getter()));
13
- });
14
- const isValid = () => errors() === null;
15
- return {
16
- errors,
17
- isValid
18
- };
19
- }
20
- //#endregion
21
- export { createStateValidator };
@@ -1 +0,0 @@
1
- export { };
@@ -1,41 +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 { createStateValidator } from "./state-validator.mjs";
4
- //#region src/signals/lib/state-validator.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createStateValidator", () => {
9
- it("starts with validator result of the initial value", () => {
10
- const s = signal("");
11
- let v;
12
- effectScope(() => {
13
- v = createStateValidator(() => s(), (value) => value.length < 3 ? "Too short" : null);
14
- });
15
- globalExpect(v.errors()).toBe("Too short");
16
- globalExpect(v.isValid()).toBe(false);
17
- });
18
- it("becomes valid when constraint is met", () => {
19
- const s = signal("");
20
- let v;
21
- effectScope(() => {
22
- v = createStateValidator(() => s(), (value) => value.length < 3 ? "Too short" : null);
23
- });
24
- s("hello");
25
- globalExpect(v.errors()).toBeNull();
26
- globalExpect(v.isValid()).toBe(true);
27
- });
28
- it("re-validates when the source changes", () => {
29
- const s = signal(5);
30
- let v;
31
- effectScope(() => {
32
- v = createStateValidator(() => s(), (n) => n > 10 ? "Too big" : null);
33
- });
34
- globalExpect(v.isValid()).toBe(true);
35
- s(15);
36
- globalExpect(v.errors()).toBe("Too big");
37
- globalExpect(v.isValid()).toBe(false);
38
- });
39
- });
40
- //#endregion
41
- export {};
@@ -1,45 +0,0 @@
1
- import { a as effect, d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/throttled.ts
3
- /**
4
- * Returns a `Computed` that mirrors `getter` but updates at most once per
5
- * `interval` milliseconds. A trailing-edge update is scheduled so the final
6
- * value is never lost.
7
- *
8
- * The initial value is read synchronously.
9
- */
10
- function createThrottled(getter, interval) {
11
- const s = signal(getter());
12
- let lastRun = -Infinity;
13
- let trailingTimer;
14
- let firstRun = true;
15
- effect(() => {
16
- const latest = getter();
17
- if (firstRun) {
18
- firstRun = false;
19
- return;
20
- }
21
- const now = Date.now();
22
- const elapsed = now - lastRun;
23
- if (trailingTimer !== void 0) {
24
- clearTimeout(trailingTimer);
25
- trailingTimer = void 0;
26
- }
27
- if (elapsed >= interval) {
28
- lastRun = now;
29
- s(latest);
30
- } else {
31
- trailingTimer = setTimeout(() => {
32
- lastRun = Date.now();
33
- trailingTimer = void 0;
34
- s(latest);
35
- }, interval - elapsed);
36
- onCleanup(() => {
37
- clearTimeout(trailingTimer);
38
- trailingTimer = void 0;
39
- });
40
- }
41
- });
42
- return s;
43
- }
44
- //#endregion
45
- export { createThrottled };
@@ -1,39 +0,0 @@
1
- import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/timeout.ts
3
- /**
4
- * Reactive `setTimeout` wrapper with pause/resume/reset control.
5
- * The callback fires once after `delay` ms. Starts running immediately.
6
- */
7
- function createTimeout(callback, delay) {
8
- const isPending = signal(false);
9
- let id;
10
- const stop = () => {
11
- clearTimeout(id);
12
- id = void 0;
13
- isPending(false);
14
- };
15
- const start = () => {
16
- if (isPending()) return;
17
- isPending(true);
18
- id = setTimeout(() => {
19
- isPending(false);
20
- id = void 0;
21
- callback();
22
- }, delay);
23
- };
24
- const reset = () => {
25
- stop();
26
- start();
27
- };
28
- start();
29
- const cleanup = () => stop();
30
- onCleanup(cleanup);
31
- return Object.assign({
32
- isPending,
33
- start,
34
- stop,
35
- reset
36
- }, { [Symbol.dispose]: cleanup });
37
- }
38
- //#endregion
39
- export { createTimeout };
@@ -1,12 +0,0 @@
1
- import { n as Signal } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/toggle.d.ts
4
- type ToggleResult = Signal<boolean> & {
5
- toggle(): void;
6
- };
7
- /**
8
- * Returns a boolean `Signal` with an additional `toggle()` helper.
9
- */
10
- declare function createToggle(initial?: boolean): ToggleResult;
11
- //#endregion
12
- export { createToggle };
@@ -1,12 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/toggle.ts
3
- /**
4
- * Returns a boolean `Signal` with an additional `toggle()` helper.
5
- */
6
- function createToggle(initial = false) {
7
- const s = signal(initial);
8
- const toggle = () => s(!s());
9
- return Object.assign(s, { toggle });
10
- }
11
- //#endregion
12
- export { createToggle };
@@ -1 +0,0 @@
1
- export { };
@@ -1,43 +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 { createToggle } from "./toggle.mjs";
4
- //#region src/signals/lib/toggle.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createToggle", () => {
9
- it("starts as false by default", () => {
10
- let t;
11
- effectScope(() => {
12
- t = createToggle();
13
- });
14
- globalExpect(t()).toBe(false);
15
- });
16
- it("starts with provided initial value", () => {
17
- let t;
18
- effectScope(() => {
19
- t = createToggle(true);
20
- });
21
- globalExpect(t()).toBe(true);
22
- });
23
- it("toggle() flips the value", () => {
24
- let t;
25
- effectScope(() => {
26
- t = createToggle(false);
27
- });
28
- t.toggle();
29
- globalExpect(t()).toBe(true);
30
- t.toggle();
31
- globalExpect(t()).toBe(false);
32
- });
33
- it("can be set directly via signal call", () => {
34
- let t;
35
- effectScope(() => {
36
- t = createToggle();
37
- });
38
- t(true);
39
- globalExpect(t()).toBe(true);
40
- });
41
- });
42
- //#endregion
43
- export {};