elements-kit 0.0.10 → 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 (310) 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/{signals/lib → utilities}/event-driven.d.mts +2 -2
  33. package/dist/{signals/lib → utilities}/event-driven.mjs +2 -2
  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/{signals/lib/video.mjs → utilities/media-player.mjs} +5 -4
  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/{signals/lib/media.mjs → utilities/media-query.mjs} +6 -6
  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/{signals/lib → utilities}/orientation.mjs +3 -2
  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 -12
  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 -21
  107. package/dist/signals/lib/audio.mjs +0 -35
  108. package/dist/signals/lib/audio.test.mjs +0 -57
  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 -24
  141. package/dist/signals/lib/fullscreen.test.d.mts +0 -1
  142. package/dist/signals/lib/fullscreen.test.mjs +0 -48
  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 -14
  149. package/dist/signals/lib/hash.test.d.mts +0 -1
  150. package/dist/signals/lib/hash.test.mjs +0 -46
  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 -13
  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/motion.d.mts +0 -15
  188. package/dist/signals/lib/motion.mjs +0 -27
  189. package/dist/signals/lib/motion.test.d.mts +0 -1
  190. package/dist/signals/lib/motion.test.mjs +0 -51
  191. package/dist/signals/lib/mouse-position.d.mts +0 -14
  192. package/dist/signals/lib/mouse-position.mjs +0 -22
  193. package/dist/signals/lib/mouse-position.test.d.mts +0 -1
  194. package/dist/signals/lib/mouse-position.test.mjs +0 -44
  195. package/dist/signals/lib/mouse-wheel.d.mts +0 -10
  196. package/dist/signals/lib/mouse-wheel.mjs +0 -17
  197. package/dist/signals/lib/mouse-wheel.test.d.mts +0 -1
  198. package/dist/signals/lib/mouse-wheel.test.mjs +0 -38
  199. package/dist/signals/lib/mutation-observer.d.mts +0 -8
  200. package/dist/signals/lib/network-state.d.mts +0 -17
  201. package/dist/signals/lib/network-state.mjs +0 -34
  202. package/dist/signals/lib/network-state.test.d.mts +0 -1
  203. package/dist/signals/lib/network-state.test.mjs +0 -61
  204. package/dist/signals/lib/on-click-outside.mjs +0 -20
  205. package/dist/signals/lib/orientation.d.mts +0 -13
  206. package/dist/signals/lib/orientation.test.d.mts +0 -1
  207. package/dist/signals/lib/orientation.test.mjs +0 -43
  208. package/dist/signals/lib/page-leave.d.mts +0 -8
  209. package/dist/signals/lib/page-leave.mjs +0 -12
  210. package/dist/signals/lib/page-leave.test.d.mts +0 -1
  211. package/dist/signals/lib/page-leave.test.mjs +0 -29
  212. package/dist/signals/lib/permission.d.mts +0 -14
  213. package/dist/signals/lib/permission.mjs +0 -26
  214. package/dist/signals/lib/permission.test.d.mts +0 -1
  215. package/dist/signals/lib/permission.test.mjs +0 -50
  216. package/dist/signals/lib/persisted-state.d.mts +0 -11
  217. package/dist/signals/lib/persisted-state.mjs +0 -25
  218. package/dist/signals/lib/persisted-state.test.d.mts +0 -1
  219. package/dist/signals/lib/persisted-state.test.mjs +0 -70
  220. package/dist/signals/lib/pressed-keys.d.mts +0 -10
  221. package/dist/signals/lib/pressed-keys.mjs +0 -32
  222. package/dist/signals/lib/pressed-keys.test.d.mts +0 -1
  223. package/dist/signals/lib/pressed-keys.test.mjs +0 -54
  224. package/dist/signals/lib/previous-distinct.d.mts +0 -10
  225. package/dist/signals/lib/previous-distinct.mjs +0 -22
  226. package/dist/signals/lib/previous-distinct.test.d.mts +0 -1
  227. package/dist/signals/lib/previous-distinct.test.mjs +0 -50
  228. package/dist/signals/lib/previous.d.mts +0 -10
  229. package/dist/signals/lib/previous.mjs +0 -18
  230. package/dist/signals/lib/previous.test.mjs +0 -47
  231. package/dist/signals/lib/queue.d.mts +0 -17
  232. package/dist/signals/lib/queue.mjs +0 -28
  233. package/dist/signals/lib/queue.test.d.mts +0 -1
  234. package/dist/signals/lib/queue.test.mjs +0 -61
  235. package/dist/signals/lib/raf.d.mts +0 -17
  236. package/dist/signals/lib/raf.mjs +0 -38
  237. package/dist/signals/lib/raf.test.d.mts +0 -1
  238. package/dist/signals/lib/raf.test.mjs +0 -58
  239. package/dist/signals/lib/resize-observer.d.mts +0 -8
  240. package/dist/signals/lib/resize-observer.test.d.mts +0 -1
  241. package/dist/signals/lib/resize-observer.test.mjs +0 -44
  242. package/dist/signals/lib/resource.d.mts +0 -23
  243. package/dist/signals/lib/resource.mjs +0 -43
  244. package/dist/signals/lib/resource.test.d.mts +0 -1
  245. package/dist/signals/lib/resource.test.mjs +0 -56
  246. package/dist/signals/lib/scroll-state.d.mts +0 -19
  247. package/dist/signals/lib/scroll-state.mjs +0 -46
  248. package/dist/signals/lib/scroll-state.test.d.mts +0 -1
  249. package/dist/signals/lib/scroll-state.test.mjs +0 -94
  250. package/dist/signals/lib/scrolling.d.mts +0 -12
  251. package/dist/signals/lib/scrolling.mjs +0 -26
  252. package/dist/signals/lib/scrolling.test.d.mts +0 -1
  253. package/dist/signals/lib/scrolling.test.mjs +0 -57
  254. package/dist/signals/lib/search-params.d.mts +0 -16
  255. package/dist/signals/lib/search-params.mjs +0 -37
  256. package/dist/signals/lib/search-params.test.mjs +0 -56
  257. package/dist/signals/lib/set.d.mts +0 -18
  258. package/dist/signals/lib/set.mjs +0 -38
  259. package/dist/signals/lib/set.test.d.mts +0 -1
  260. package/dist/signals/lib/set.test.mjs +0 -70
  261. package/dist/signals/lib/start-typing.d.mts +0 -9
  262. package/dist/signals/lib/start-typing.mjs +0 -39
  263. package/dist/signals/lib/start-typing.test.d.mts +0 -1
  264. package/dist/signals/lib/start-typing.test.mjs +0 -64
  265. package/dist/signals/lib/state-history.d.mts +0 -21
  266. package/dist/signals/lib/state-history.mjs +0 -61
  267. package/dist/signals/lib/state-history.test.d.mts +0 -1
  268. package/dist/signals/lib/state-history.test.mjs +0 -106
  269. package/dist/signals/lib/state-validator.d.mts +0 -16
  270. package/dist/signals/lib/state-validator.mjs +0 -21
  271. package/dist/signals/lib/state-validator.test.d.mts +0 -1
  272. package/dist/signals/lib/state-validator.test.mjs +0 -41
  273. package/dist/signals/lib/throttled.mjs +0 -45
  274. package/dist/signals/lib/timeout.mjs +0 -39
  275. package/dist/signals/lib/toggle.d.mts +0 -12
  276. package/dist/signals/lib/toggle.mjs +0 -12
  277. package/dist/signals/lib/toggle.test.d.mts +0 -1
  278. package/dist/signals/lib/toggle.test.mjs +0 -43
  279. package/dist/signals/lib/video.d.mts +0 -21
  280. package/dist/signals/lib/video.test.d.mts +0 -1
  281. package/dist/signals/lib/video.test.mjs +0 -51
  282. package/dist/signals/lib/watch.d.mts +0 -16
  283. package/dist/signals/lib/watch.mjs +0 -31
  284. package/dist/signals/lib/watch.test.d.mts +0 -1
  285. package/dist/signals/lib/watch.test.mjs +0 -51
  286. package/dist/signals/lib/window-size.d.mts +0 -14
  287. package/dist/signals/lib/window-size.mjs +0 -21
  288. package/dist/signals/lib/window-size.test.mjs +0 -50
  289. /package/dist/{signals/lib → utilities}/active-element.test.d.mts +0 -0
  290. /package/dist/{signals/lib → utilities}/debounced.test.d.mts +0 -0
  291. /package/dist/{signals/lib → utilities}/element-rect.test.d.mts +0 -0
  292. /package/dist/{signals/lib/animation-frames.test.d.mts → utilities/element-scroll.test.d.mts} +0 -0
  293. /package/dist/{signals/lib → utilities}/event-listener.test.d.mts +0 -0
  294. /package/dist/{signals/lib/async-retry.test.d.mts → utilities/focus-within.test.d.mts} +0 -0
  295. /package/dist/{signals/lib → utilities}/hover.test.d.mts +0 -0
  296. /package/dist/{signals/lib → utilities}/intersection-observer.test.d.mts +0 -0
  297. /package/dist/{signals/lib → utilities}/interval.test.d.mts +0 -0
  298. /package/dist/{signals/lib/audio.test.d.mts → utilities/location.test.d.mts} +0 -0
  299. /package/dist/{signals/lib → utilities}/long-press.test.d.mts +0 -0
  300. /package/dist/{signals/lib → utilities}/media-devices.test.d.mts +0 -0
  301. /package/dist/{signals/lib/battery.test.d.mts → utilities/media-player.test.d.mts} +0 -0
  302. /package/dist/{signals/lib → utilities}/mutation-observer.test.d.mts +0 -0
  303. /package/dist/{signals/lib → utilities}/on-click-outside.test.d.mts +0 -0
  304. /package/dist/{signals/lib → utilities}/previous.test.d.mts +0 -0
  305. /package/dist/{signals/lib/before-unload.test.d.mts → utilities/routing.test.d.mts} +0 -0
  306. /package/dist/{signals/lib → utilities}/search-params.test.d.mts +0 -0
  307. /package/dist/{signals/lib/clipboard.test.d.mts → utilities/storage.test.d.mts} +0 -0
  308. /package/dist/{signals/lib → utilities}/throttled.test.d.mts +0 -0
  309. /package/dist/{signals/lib → utilities}/timeout.test.d.mts +0 -0
  310. /package/dist/{signals/lib → utilities}/window-size.test.d.mts +0 -0
@@ -1,66 +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 { createFiniteStateMachine } from "./finite-state-machine.mjs";
4
- //#region src/signals/lib/finite-state-machine.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- const transitions = {
9
- red: { GO: "green" },
10
- green: { SLOW: "yellow" },
11
- yellow: { STOP: "red" }
12
- };
13
- describe("createFiniteStateMachine", () => {
14
- it("starts in the initial state", () => {
15
- let fsm;
16
- effectScope(() => {
17
- fsm = createFiniteStateMachine("red", transitions);
18
- });
19
- globalExpect(fsm.state()).toBe("red");
20
- });
21
- it("transitions on valid event", () => {
22
- let fsm;
23
- effectScope(() => {
24
- fsm = createFiniteStateMachine("red", transitions);
25
- });
26
- fsm.send("GO");
27
- globalExpect(fsm.state()).toBe("green");
28
- });
29
- it("does not transition on invalid event", () => {
30
- let fsm;
31
- effectScope(() => {
32
- fsm = createFiniteStateMachine("red", transitions);
33
- });
34
- fsm.send("SLOW");
35
- globalExpect(fsm.state()).toBe("red");
36
- });
37
- it("can() returns true for valid transition", () => {
38
- let fsm;
39
- effectScope(() => {
40
- fsm = createFiniteStateMachine("red", transitions);
41
- });
42
- globalExpect(fsm.can("GO")).toBe(true);
43
- globalExpect(fsm.can("SLOW")).toBe(false);
44
- });
45
- it("calls enter/exit hooks on transition", () => {
46
- const enterRed = vi.fn();
47
- const exitRed = vi.fn();
48
- const enterGreen = vi.fn();
49
- let fsm;
50
- effectScope(() => {
51
- fsm = createFiniteStateMachine("red", transitions, { on: {
52
- red: {
53
- enter: enterRed,
54
- exit: exitRed
55
- },
56
- green: { enter: enterGreen }
57
- } });
58
- });
59
- globalExpect(enterRed).toHaveBeenCalledOnce();
60
- fsm.send("GO");
61
- globalExpect(exitRed).toHaveBeenCalledOnce();
62
- globalExpect(enterGreen).toHaveBeenCalledOnce();
63
- });
64
- });
65
- //#endregion
66
- export {};
@@ -1,15 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/fullscreen.d.ts
4
- type FullscreenResult = {
5
- isFullscreen: Computed<boolean>;
6
- enter(): Promise<void>;
7
- exit(): Promise<void>;
8
- toggle(): Promise<void>;
9
- } & Disposable;
10
- /**
11
- * Wraps the Fullscreen API. `target` defaults to `document.documentElement`.
12
- */
13
- declare function createFullscreen(target?: Element | (() => Element | null)): FullscreenResult;
14
- //#endregion
15
- export { createFullscreen };
@@ -1,24 +0,0 @@
1
- import { fromEvent, sync } from "./event-driven.mjs";
2
- //#region src/signals/lib/fullscreen.ts
3
- /**
4
- * Wraps the Fullscreen API. `target` defaults to `document.documentElement`.
5
- */
6
- function createFullscreen(target) {
7
- const getTarget = () => {
8
- if (!target) return document.documentElement;
9
- return typeof target === "function" ? target() ?? document.documentElement : target;
10
- };
11
- const [isFullscreen, cleanup] = sync(fromEvent(document, "fullscreenchange"), () => !!document.fullscreenElement);
12
- const enter = () => getTarget().requestFullscreen();
13
- const exit = () => document.exitFullscreen();
14
- const toggle = () => isFullscreen() ? exit() : enter();
15
- return {
16
- isFullscreen,
17
- enter,
18
- exit,
19
- toggle,
20
- [Symbol.dispose]: cleanup
21
- };
22
- }
23
- //#endregion
24
- export { createFullscreen };
@@ -1 +0,0 @@
1
- export { };
@@ -1,48 +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 { createFullscreen } from "./fullscreen.mjs";
4
- //#region src/signals/lib/fullscreen.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.restoreAllMocks();
8
- });
9
- describe("createFullscreen", () => {
10
- it("starts with current fullscreen state", () => {
11
- Object.defineProperty(document, "fullscreenElement", {
12
- configurable: true,
13
- get: () => null
14
- });
15
- let f;
16
- effectScope(() => {
17
- f = createFullscreen();
18
- });
19
- globalExpect(f.isFullscreen()).toBe(false);
20
- });
21
- it("updates isFullscreen on fullscreenchange event", () => {
22
- Object.defineProperty(document, "fullscreenElement", {
23
- configurable: true,
24
- get: () => null
25
- });
26
- let f;
27
- effectScope(() => {
28
- f = createFullscreen();
29
- });
30
- Object.defineProperty(document, "fullscreenElement", {
31
- configurable: true,
32
- get: () => document.documentElement
33
- });
34
- document.dispatchEvent(new Event("fullscreenchange"));
35
- globalExpect(f.isFullscreen()).toBe(true);
36
- });
37
- it("removes event listener on Symbol.dispose", () => {
38
- const removeSpy = vi.spyOn(document, "removeEventListener");
39
- let f;
40
- effectScope(() => {
41
- f = createFullscreen();
42
- });
43
- f[Symbol.dispose]();
44
- globalExpect(removeSpy).toHaveBeenCalledWith("fullscreenchange", globalExpect.any(Function));
45
- });
46
- });
47
- //#endregion
48
- export {};
@@ -1,15 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/geolocation.d.ts
4
- type GeolocationResult = {
5
- position: Computed<GeolocationPosition | null>;
6
- error: Computed<GeolocationPositionError | null>;
7
- loading: Computed<boolean>;
8
- } & Disposable;
9
- /**
10
- * Exposes the Geolocation API as reactive signals.
11
- * Begins watching the position immediately.
12
- */
13
- declare function createGeolocation(options?: PositionOptions): GeolocationResult;
14
- //#endregion
15
- export { createGeolocation };
@@ -1,30 +0,0 @@
1
- import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/geolocation.ts
3
- /**
4
- * Exposes the Geolocation API as reactive signals.
5
- * Begins watching the position immediately.
6
- */
7
- function createGeolocation(options) {
8
- const position = signal(null);
9
- const error = signal(null);
10
- const loading = signal(true);
11
- const onSuccess = (pos) => {
12
- position(pos);
13
- error(null);
14
- loading(false);
15
- };
16
- const onError = (err) => {
17
- error(err);
18
- loading(false);
19
- };
20
- const watchId = navigator.geolocation.watchPosition(onSuccess, onError, options);
21
- const cleanup = () => navigator.geolocation.clearWatch(watchId);
22
- onCleanup(cleanup);
23
- return Object.assign({
24
- position,
25
- error,
26
- loading
27
- }, { [Symbol.dispose]: cleanup });
28
- }
29
- //#endregion
30
- export { createGeolocation };
@@ -1 +0,0 @@
1
- export { };
@@ -1,37 +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 { createGeolocation } from "./geolocation.mjs";
4
- //#region src/signals/lib/geolocation.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.unstubAllGlobals();
8
- });
9
- describe("createGeolocation", () => {
10
- it("starts with null position and loading true", () => {
11
- vi.stubGlobal("navigator", { geolocation: {
12
- watchPosition: vi.fn().mockReturnValue(1),
13
- clearWatch: vi.fn()
14
- } });
15
- let g;
16
- effectScope(() => {
17
- g = createGeolocation();
18
- });
19
- globalExpect(g.position()).toBeNull();
20
- globalExpect(g.loading()).toBe(true);
21
- });
22
- it("calls clearWatch on Symbol.dispose", () => {
23
- const clearWatch = vi.fn();
24
- vi.stubGlobal("navigator", { geolocation: {
25
- watchPosition: vi.fn().mockReturnValue(42),
26
- clearWatch
27
- } });
28
- let g;
29
- effectScope(() => {
30
- g = createGeolocation();
31
- });
32
- g[Symbol.dispose]();
33
- globalExpect(clearWatch).toHaveBeenCalledWith(42);
34
- });
35
- });
36
- //#endregion
37
- export {};
@@ -1,10 +0,0 @@
1
- import { n as Signal } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/hash.d.ts
4
- /**
5
- * Returns a writable `Signal<string>` that stays in sync with `location.hash`
6
- * (including the leading `#`). Writing the signal updates `location.hash`.
7
- */
8
- declare function createHash(): Signal<string> & Disposable;
9
- //#endregion
10
- export { createHash };
@@ -1,14 +0,0 @@
1
- import { fromEvent, sync } from "./event-driven.mjs";
2
- //#region src/signals/lib/hash.ts
3
- /**
4
- * Returns a writable `Signal<string>` that stays in sync with `location.hash`
5
- * (including the leading `#`). Writing the signal updates `location.hash`.
6
- */
7
- function createHash() {
8
- const [hash, cleanup] = sync(fromEvent(window, "hashchange"), () => typeof location !== "undefined" ? location.hash : "", (v) => {
9
- location.hash = v;
10
- });
11
- return Object.assign(hash, { [Symbol.dispose]: cleanup });
12
- }
13
- //#endregion
14
- export { createHash };
@@ -1 +0,0 @@
1
- export { };
@@ -1,46 +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 { createHash } from "./hash.mjs";
4
- //#region src/signals/lib/hash.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- location.hash = "";
8
- vi.useRealTimers();
9
- });
10
- describe("createHash", () => {
11
- it("reads the current location.hash", () => {
12
- let h;
13
- effectScope(() => {
14
- h = createHash();
15
- });
16
- globalExpect(typeof h()).toBe("string");
17
- });
18
- it("updates when hash changes via hashchange event", () => {
19
- let h;
20
- effectScope(() => {
21
- h = createHash();
22
- });
23
- location.hash = "#section";
24
- window.dispatchEvent(new HashChangeEvent("hashchange"));
25
- globalExpect(h()).toBe("#section");
26
- });
27
- it("writing the signal updates location.hash", () => {
28
- let h;
29
- effectScope(() => {
30
- h = createHash();
31
- });
32
- h("#new");
33
- globalExpect(location.hash).toBe("#new");
34
- });
35
- it("removes event listener on Symbol.dispose", () => {
36
- const removeSpy = vi.spyOn(window, "removeEventListener");
37
- let h;
38
- effectScope(() => {
39
- h = createHash();
40
- });
41
- h[Symbol.dispose]();
42
- globalExpect(removeSpy).toHaveBeenCalledWith("hashchange", globalExpect.any(Function));
43
- });
44
- });
45
- //#endregion
46
- export {};
@@ -1,11 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/hover.d.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` while the pointer is over
6
- * `target`. Uses `pointerenter` / `pointerleave` so it works for both mouse
7
- * and touch/stylus input.
8
- */
9
- declare function createHover(target: Element | (() => Element | null)): Computed<boolean> & Disposable;
10
- //#endregion
11
- export { createHover };
@@ -1,23 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/hover.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` while the pointer is over
6
- * `target`. Uses `pointerenter` / `pointerleave` so it works for both mouse
7
- * and touch/stylus input.
8
- */
9
- function createHover(target) {
10
- const hovered = signal(false);
11
- const el = typeof target === "function" ? target() : target;
12
- const onEnter = () => hovered(true);
13
- const onLeave = () => hovered(false);
14
- const cleanups = [];
15
- if (el) {
16
- cleanups.push(createEventListener(el, "pointerenter", onEnter));
17
- cleanups.push(createEventListener(el, "pointerleave", onLeave));
18
- }
19
- const cleanup = () => cleanups.forEach((fn) => fn());
20
- return Object.assign(hovered, { [Symbol.dispose]: cleanup });
21
- }
22
- //#endregion
23
- export { createHover };
@@ -1,8 +0,0 @@
1
- //#region src/signals/lib/intersection-observer.d.ts
2
- /**
3
- * Raw `IntersectionObserver` wrapper with automatic cleanup.
4
- * Use `createIsInViewport` for the common boolean case.
5
- */
6
- declare function createIntersectionObserver(target: Element | (() => Element | null), callback: IntersectionObserverCallback, options?: IntersectionObserverInit): Disposable;
7
- //#endregion
8
- export { createIntersectionObserver };
@@ -1,11 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/is-document-visible.d.ts
4
- /**
5
- * Returns a `Computed<boolean>` that tracks the Page Visibility API.
6
- * `true` while the document is visible; `false` when hidden (minimised,
7
- * background tab, etc.).
8
- */
9
- declare function createIsDocumentVisible(): Computed<boolean> & Disposable;
10
- //#endregion
11
- export { createIsDocumentVisible };
@@ -1,13 +0,0 @@
1
- import { fromEvent, sync } from "./event-driven.mjs";
2
- //#region src/signals/lib/is-document-visible.ts
3
- /**
4
- * Returns a `Computed<boolean>` that tracks the Page Visibility API.
5
- * `true` while the document is visible; `false` when hidden (minimised,
6
- * background tab, etc.).
7
- */
8
- function createIsDocumentVisible() {
9
- const [visible, cleanup] = sync(fromEvent(document, "visibilitychange"), () => typeof document !== "undefined" ? document.visibilityState === "visible" : true);
10
- return Object.assign(visible, { [Symbol.dispose]: cleanup });
11
- }
12
- //#endregion
13
- export { createIsDocumentVisible };
@@ -1 +0,0 @@
1
- export { };
@@ -1,58 +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 { createIsDocumentVisible } from "./is-document-visible.mjs";
4
- //#region src/signals/lib/is-document-visible.test.ts
5
- afterEach(() => {
6
- Object.defineProperty(document, "visibilityState", {
7
- value: "visible",
8
- configurable: true
9
- });
10
- });
11
- function setVisibility(state) {
12
- Object.defineProperty(document, "visibilityState", {
13
- value: state,
14
- configurable: true
15
- });
16
- document.dispatchEvent(new Event("visibilitychange"));
17
- }
18
- describe("createIsDocumentVisible", () => {
19
- it("starts as true when document is visible", () => {
20
- Object.defineProperty(document, "visibilityState", {
21
- value: "visible",
22
- configurable: true
23
- });
24
- let visible;
25
- effectScope(() => {
26
- visible = createIsDocumentVisible();
27
- });
28
- globalExpect(visible()).toBe(true);
29
- });
30
- it("becomes false when document becomes hidden", () => {
31
- let visible;
32
- effectScope(() => {
33
- visible = createIsDocumentVisible();
34
- });
35
- setVisibility("hidden");
36
- globalExpect(visible()).toBe(false);
37
- });
38
- it("becomes true again when document becomes visible", () => {
39
- let visible;
40
- effectScope(() => {
41
- visible = createIsDocumentVisible();
42
- });
43
- setVisibility("hidden");
44
- setVisibility("visible");
45
- globalExpect(visible()).toBe(true);
46
- });
47
- it("stops reacting after Symbol.dispose", () => {
48
- let visible;
49
- effectScope(() => {
50
- visible = createIsDocumentVisible();
51
- });
52
- visible[Symbol.dispose]();
53
- setVisibility("hidden");
54
- globalExpect(visible()).toBe(true);
55
- });
56
- });
57
- //#endregion
58
- export {};
@@ -1,10 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/is-focus-within.d.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` while focus is anywhere inside
6
- * `target` (including `target` itself).
7
- */
8
- declare function createIsFocusWithin(target: Element | (() => Element | null)): Computed<boolean> & Disposable;
9
- //#endregion
10
- export { createIsFocusWithin };
@@ -1,28 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/is-focus-within.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` while focus is anywhere inside
6
- * `target` (including `target` itself).
7
- */
8
- function createIsFocusWithin(target) {
9
- const focused = signal(false);
10
- const el = typeof target === "function" ? target() : target;
11
- const onFocusIn = (e) => {
12
- const t = typeof target === "function" ? target() : target;
13
- if (t && t.contains(e.target)) focused(true);
14
- };
15
- const onFocusOut = (e) => {
16
- const t = typeof target === "function" ? target() : target;
17
- if (t && !t.contains(e.relatedTarget)) focused(false);
18
- };
19
- const cleanups = [];
20
- if (el) {
21
- cleanups.push(createEventListener(document, "focusin", onFocusIn));
22
- cleanups.push(createEventListener(document, "focusout", onFocusOut));
23
- }
24
- const cleanup = () => cleanups.forEach((fn) => fn());
25
- return Object.assign(focused, { [Symbol.dispose]: cleanup });
26
- }
27
- //#endregion
28
- export { createIsFocusWithin };
@@ -1 +0,0 @@
1
- export { };
@@ -1,10 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/is-idle.d.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` when the user has been inactive
6
- * for longer than `timeout` milliseconds (default 60 s).
7
- */
8
- declare function createIsIdle(timeout?: number): Computed<boolean> & Disposable;
9
- //#endregion
10
- export { createIsIdle };
@@ -1,37 +0,0 @@
1
- import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/is-idle.ts
4
- /** Default idle timeout in milliseconds (60 seconds). */
5
- const DEFAULT_TIMEOUT = 6e4;
6
- /** Events that reset the idle timer. */
7
- const ACTIVITY_EVENTS = [
8
- "mousemove",
9
- "mousedown",
10
- "keydown",
11
- "touchstart",
12
- "scroll",
13
- "pointermove"
14
- ];
15
- /**
16
- * Returns a `Computed<boolean>` that is `true` when the user has been inactive
17
- * for longer than `timeout` milliseconds (default 60 s).
18
- */
19
- function createIsIdle(timeout = DEFAULT_TIMEOUT) {
20
- const idle = signal(false);
21
- let timer;
22
- const reset = () => {
23
- clearTimeout(timer);
24
- idle(false);
25
- timer = setTimeout(() => idle(true), timeout);
26
- };
27
- reset();
28
- const removes = ACTIVITY_EVENTS.map((event) => createEventListener(window, event, reset, { passive: true }));
29
- onCleanup(() => clearTimeout(timer));
30
- const cleanup = () => {
31
- clearTimeout(timer);
32
- removes.forEach((fn) => fn());
33
- };
34
- return Object.assign(idle, { [Symbol.dispose]: cleanup });
35
- }
36
- //#endregion
37
- export { createIsIdle };
@@ -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 { createIsIdle } from "./is-idle.mjs";
4
- //#region src/signals/lib/is-idle.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.useRealTimers();
8
- });
9
- describe("createIsIdle", () => {
10
- it("starts as false (user is active)", () => {
11
- vi.useFakeTimers();
12
- let idle;
13
- effectScope(() => {
14
- idle = createIsIdle(1e3);
15
- });
16
- globalExpect(idle()).toBe(false);
17
- });
18
- it("becomes true after the timeout", () => {
19
- vi.useFakeTimers();
20
- let idle;
21
- effectScope(() => {
22
- idle = createIsIdle(1e3);
23
- });
24
- vi.advanceTimersByTime(1001);
25
- globalExpect(idle()).toBe(true);
26
- });
27
- it("resets the timer on activity", () => {
28
- vi.useFakeTimers();
29
- let idle;
30
- effectScope(() => {
31
- idle = createIsIdle(1e3);
32
- });
33
- vi.advanceTimersByTime(800);
34
- window.dispatchEvent(new MouseEvent("mousemove"));
35
- vi.advanceTimersByTime(800);
36
- globalExpect(idle()).toBe(false);
37
- });
38
- it("stops reacting after Symbol.dispose", () => {
39
- vi.useFakeTimers();
40
- let idle;
41
- effectScope(() => {
42
- idle = createIsIdle(500);
43
- });
44
- idle[Symbol.dispose]();
45
- vi.advanceTimersByTime(1e3);
46
- globalExpect(idle()).toBe(false);
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/is-in-viewport.d.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` while `target` is intersecting
6
- * the viewport (or a custom root defined via `options`).
7
- */
8
- declare function createIsInViewport(target: Element | (() => Element | null), options?: IntersectionObserverInit): Computed<boolean> & Disposable;
9
- //#endregion
10
- export { createIsInViewport };
@@ -1,16 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createIntersectionObserver } from "./intersection-observer.mjs";
3
- //#region src/signals/lib/is-in-viewport.ts
4
- /**
5
- * Returns a `Computed<boolean>` that is `true` while `target` is intersecting
6
- * the viewport (or a custom root defined via `options`).
7
- */
8
- function createIsInViewport(target, options) {
9
- const visible = signal(false);
10
- const observer = createIntersectionObserver(target, (entries) => {
11
- for (const entry of entries) visible(entry.isIntersecting);
12
- }, options);
13
- return Object.assign(visible, { [Symbol.dispose]: observer[Symbol.dispose] });
14
- }
15
- //#endregion
16
- export { createIsInViewport };
@@ -1 +0,0 @@
1
- export { };