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,86 +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 { createElementSize } from "./element-size.mjs";
4
- //#region src/signals/lib/element-size.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.restoreAllMocks();
8
- vi.unstubAllGlobals();
9
- });
10
- describe("createElementSize", () => {
11
- it("returns initial dimensions from getBoundingClientRect", () => {
12
- const el = document.createElement("div");
13
- document.body.appendChild(el);
14
- vi.spyOn(el, "getBoundingClientRect").mockReturnValue({
15
- width: 200,
16
- height: 100,
17
- x: 0,
18
- y: 0,
19
- top: 0,
20
- right: 200,
21
- bottom: 100,
22
- left: 0,
23
- toJSON: () => ({})
24
- });
25
- let size;
26
- effectScope(() => {
27
- size = createElementSize(el);
28
- });
29
- globalExpect(size.width()).toBe(200);
30
- globalExpect(size.height()).toBe(100);
31
- });
32
- it("updates when ResizeObserver fires", () => {
33
- const el = document.createElement("div");
34
- document.body.appendChild(el);
35
- vi.spyOn(el, "getBoundingClientRect").mockReturnValue({
36
- width: 0,
37
- height: 0,
38
- x: 0,
39
- y: 0,
40
- top: 0,
41
- right: 0,
42
- bottom: 0,
43
- left: 0,
44
- toJSON: () => ({})
45
- });
46
- let observerCallback;
47
- vi.stubGlobal("ResizeObserver", function MockRO(cb) {
48
- observerCallback = cb;
49
- return {
50
- observe: vi.fn(),
51
- disconnect: vi.fn(),
52
- unobserve: vi.fn()
53
- };
54
- });
55
- let size;
56
- effectScope(() => {
57
- size = createElementSize(el);
58
- });
59
- observerCallback([{ contentRect: {
60
- width: 300,
61
- height: 150
62
- } }], {});
63
- globalExpect(size.width()).toBe(300);
64
- globalExpect(size.height()).toBe(150);
65
- });
66
- it("disconnects the observer on Symbol.dispose", () => {
67
- const disconnect = vi.fn();
68
- vi.stubGlobal("ResizeObserver", function MockRO() {
69
- return {
70
- observe: vi.fn(),
71
- disconnect,
72
- unobserve: vi.fn()
73
- };
74
- });
75
- const el = document.createElement("div");
76
- document.body.appendChild(el);
77
- let size;
78
- effectScope(() => {
79
- size = createElementSize(el);
80
- });
81
- size[Symbol.dispose]();
82
- globalExpect(disconnect).toHaveBeenCalledOnce();
83
- });
84
- });
85
- //#endregion
86
- export {};
@@ -1,14 +0,0 @@
1
- //#region src/signals/lib/event-listener.d.ts
2
- /**
3
- * Attaches a type-safe event listener to a target, with automatic cleanup.
4
- *
5
- * When called inside an `effect` or `effectScope` the listener is removed
6
- * when the scope is disposed. When the target is a reactive getter the
7
- * listener is re-registered whenever the target changes.
8
- */
9
- declare function createEventListener<K extends keyof HTMLElementEventMap>(target: HTMLElement | (() => HTMLElement | null), type: K, handler: (e: HTMLElementEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
10
- declare function createEventListener<K extends keyof DocumentEventMap>(target: Document | (() => Document | null), type: K, handler: (e: DocumentEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
11
- declare function createEventListener<K extends keyof WindowEventMap>(target: Window | (() => Window | null), type: K, handler: (e: WindowEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
12
- declare function createEventListener(target: EventTarget | (() => EventTarget | null), type: string, handler: EventListener, options?: AddEventListenerOptions): () => void;
13
- //#endregion
14
- export { createEventListener };
@@ -1,10 +0,0 @@
1
- import { n as Signal } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/favicon.d.ts
4
- /**
5
- * Returns a writable `Signal<string>` whose value is reflected as the page's
6
- * favicon `href`. Writing the signal swaps the `<link rel="icon">` element.
7
- */
8
- declare function createFavicon(initial?: string): Signal<string>;
9
- //#endregion
10
- export { createFavicon };
@@ -1,24 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/favicon.ts
3
- /**
4
- * Returns a writable `Signal<string>` whose value is reflected as the page's
5
- * favicon `href`. Writing the signal swaps the `<link rel="icon">` element.
6
- */
7
- function createFavicon(initial) {
8
- const getLink = () => {
9
- let link = document.querySelector("link[rel~='icon']");
10
- if (!link) {
11
- link = document.createElement("link");
12
- link.rel = "icon";
13
- document.head.appendChild(link);
14
- }
15
- return link;
16
- };
17
- const href = signal(initial ?? (typeof document !== "undefined" ? getLink().href || "" : ""));
18
- effect(() => {
19
- if (typeof document !== "undefined") getLink().href = href();
20
- });
21
- return href;
22
- }
23
- //#endregion
24
- export { createFavicon };
@@ -1 +0,0 @@
1
- export { };
@@ -1,28 +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 { createFavicon } from "./favicon.mjs";
4
- //#region src/signals/lib/favicon.test.ts
5
- afterEach(() => {
6
- document.head.innerHTML = "";
7
- document.body.innerHTML = "";
8
- });
9
- describe("createFavicon", () => {
10
- it("creates a link element if none exists", () => {
11
- effectScope(() => {
12
- createFavicon("/icon.png");
13
- });
14
- const link = document.querySelector("link[rel~='icon']");
15
- globalExpect(link).not.toBeNull();
16
- globalExpect(link?.href).toContain("/icon.png");
17
- });
18
- it("updates favicon href when signal changes", () => {
19
- let fav;
20
- effectScope(() => {
21
- fav = createFavicon("/old.png");
22
- });
23
- fav("/new.png");
24
- globalExpect(document.querySelector("link[rel~='icon']")?.href).toContain("/new.png");
25
- });
26
- });
27
- //#endregion
28
- export {};
@@ -1,22 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/finite-state-machine.d.ts
4
- type Transitions<S extends string, E extends string> = Partial<Record<S, Partial<Record<E, S>>>>;
5
- type StateHooks<S extends string> = Partial<Record<S, {
6
- enter?: () => void;
7
- exit?: () => void;
8
- }>>;
9
- type FSMResult<S extends string, E extends string> = {
10
- state: Computed<S>;
11
- send(event: E): void;
12
- can(event: E): boolean;
13
- };
14
- /**
15
- * Type-safe finite state machine with optional `enter` / `exit` lifecycle
16
- * hooks per state.
17
- */
18
- declare function createFiniteStateMachine<S extends string, E extends string>(initial: S, transitions: Transitions<S, E>, options?: {
19
- on?: StateHooks<S>;
20
- }): FSMResult<S, E>;
21
- //#endregion
22
- export { createFiniteStateMachine };
@@ -1,26 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/finite-state-machine.ts
3
- /**
4
- * Type-safe finite state machine with optional `enter` / `exit` lifecycle
5
- * hooks per state.
6
- */
7
- function createFiniteStateMachine(initial, transitions, options) {
8
- const state = signal(initial);
9
- options?.on?.[initial]?.enter?.();
10
- const send = (event) => {
11
- const current = state();
12
- const next = transitions[current]?.[event];
13
- if (next === void 0 || next === current) return;
14
- options?.on?.[current]?.exit?.();
15
- state(next);
16
- options?.on?.[next]?.enter?.();
17
- };
18
- const can = (event) => transitions[state()]?.[event] !== void 0;
19
- return {
20
- state,
21
- send,
22
- can
23
- };
24
- }
25
- //#endregion
26
- export { createFiniteStateMachine };
@@ -1 +0,0 @@
1
- export { };
@@ -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,26 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/fullscreen.ts
4
- /**
5
- * Wraps the Fullscreen API. `target` defaults to `document.documentElement`.
6
- */
7
- function createFullscreen(target) {
8
- const getTarget = () => {
9
- if (!target) return document.documentElement;
10
- return typeof target === "function" ? target() ?? document.documentElement : target;
11
- };
12
- const isFullscreen = signal(!!document.fullscreenElement);
13
- const onChange = () => isFullscreen(!!document.fullscreenElement);
14
- const cleanup = createEventListener(document, "fullscreenchange", onChange);
15
- const enter = () => getTarget().requestFullscreen();
16
- const exit = () => document.exitFullscreen();
17
- const toggle = () => isFullscreen() ? exit() : enter();
18
- return Object.assign({
19
- isFullscreen,
20
- enter,
21
- exit,
22
- toggle
23
- }, { [Symbol.dispose]: cleanup });
24
- }
25
- //#endregion
26
- export { createFullscreen };
@@ -1 +0,0 @@
1
- export { };
@@ -1,56 +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("stops reacting after Symbol.dispose", () => {
38
- Object.defineProperty(document, "fullscreenElement", {
39
- configurable: true,
40
- get: () => null
41
- });
42
- let f;
43
- effectScope(() => {
44
- f = createFullscreen();
45
- });
46
- f[Symbol.dispose]();
47
- Object.defineProperty(document, "fullscreenElement", {
48
- configurable: true,
49
- get: () => document.documentElement
50
- });
51
- document.dispatchEvent(new Event("fullscreenchange"));
52
- globalExpect(f.isFullscreen()).toBe(false);
53
- });
54
- });
55
- //#endregion
56
- 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,20 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createEventListener } from "./event-listener.mjs";
3
- //#region src/signals/lib/hash.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
- function createHash() {
9
- const hash = signal(typeof location !== "undefined" ? location.hash : "");
10
- const onHashChange = () => hash(location.hash);
11
- const cleanup = createEventListener(window, "hashchange", onHashChange);
12
- const proxy = (value) => {
13
- if (value === void 0) return hash();
14
- location.hash = value;
15
- hash(value);
16
- };
17
- return Object.assign(proxy, { [Symbol.dispose]: cleanup });
18
- }
19
- //#endregion
20
- export { createHash };
@@ -1 +0,0 @@
1
- export { };
@@ -1,47 +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("stops updating after Symbol.dispose", () => {
36
- let h;
37
- effectScope(() => {
38
- h = createHash();
39
- });
40
- h[Symbol.dispose]();
41
- location.hash = "#other";
42
- window.dispatchEvent(new HashChangeEvent("hashchange"));
43
- globalExpect(h()).not.toBe("#other");
44
- });
45
- });
46
- //#endregion
47
- 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,19 +0,0 @@
1
- import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.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 = signal(typeof document !== "undefined" ? document.visibilityState === "visible" : true);
10
- const handler = () => {
11
- visible(document.visibilityState === "visible");
12
- };
13
- document.addEventListener("visibilitychange", handler);
14
- const cleanup = () => document.removeEventListener("visibilitychange", handler);
15
- onCleanup(cleanup);
16
- return Object.assign(visible, { [Symbol.dispose]: cleanup });
17
- }
18
- //#endregion
19
- export { createIsDocumentVisible };
@@ -1 +0,0 @@
1
- export { };