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,38 +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 { createBattery } from "./battery.mjs";
4
- //#region src/signals/lib/battery.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.unstubAllGlobals();
8
- });
9
- describe("createBattery", () => {
10
- it("returns unsupported=false when getBattery not present", () => {
11
- vi.stubGlobal("navigator", {});
12
- let b;
13
- effectScope(() => {
14
- b = createBattery();
15
- });
16
- globalExpect(b.supported()).toBe(false);
17
- });
18
- it("fetches battery info via getBattery", async () => {
19
- const batteryMock = {
20
- charging: true,
21
- level: .8,
22
- chargingTime: 3600,
23
- dischargingTime: Infinity,
24
- addEventListener: vi.fn(),
25
- removeEventListener: vi.fn()
26
- };
27
- vi.stubGlobal("navigator", { getBattery: vi.fn().mockResolvedValue(batteryMock) });
28
- let b;
29
- effectScope(() => {
30
- b = createBattery();
31
- });
32
- await new Promise((res) => setTimeout(res, 0));
33
- globalExpect(b.charging()).toBe(true);
34
- globalExpect(b.level()).toBe(.8);
35
- });
36
- });
37
- //#endregion
38
- export {};
@@ -1,11 +0,0 @@
1
- //#region src/signals/lib/before-unload.d.ts
2
- /**
3
- * Registers a `beforeunload` handler that shows a native confirmation dialog
4
- * when the user tries to leave the page.
5
- *
6
- * `message` can be a string or a reactive getter (re-evaluated on each event).
7
- * Modern browsers ignore custom messages and show a generic prompt instead.
8
- */
9
- declare function createBeforeUnload(message?: string | (() => string)): Disposable;
10
- //#endregion
11
- export { createBeforeUnload };
@@ -1,20 +0,0 @@
1
- import { createEventListener } from "./event-listener.mjs";
2
- //#region src/signals/lib/before-unload.ts
3
- /**
4
- * Registers a `beforeunload` handler that shows a native confirmation dialog
5
- * when the user tries to leave the page.
6
- *
7
- * `message` can be a string or a reactive getter (re-evaluated on each event).
8
- * Modern browsers ignore custom messages and show a generic prompt instead.
9
- */
10
- function createBeforeUnload(message) {
11
- const handler = (e) => {
12
- const msg = typeof message === "function" ? message() : message;
13
- e.preventDefault();
14
- if (msg !== void 0) e.returnValue = msg;
15
- };
16
- const cleanup = createEventListener(window, "beforeunload", handler);
17
- return { [Symbol.dispose]: cleanup };
18
- }
19
- //#endregion
20
- export { createBeforeUnload };
@@ -1,29 +0,0 @@
1
- import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
2
- import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
3
- import { createBeforeUnload } from "./before-unload.mjs";
4
- //#region src/signals/lib/before-unload.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createBeforeUnload", () => {
9
- it("registers a beforeunload handler", () => {
10
- const addSpy = vi.spyOn(window, "addEventListener");
11
- effectScope(() => {
12
- createBeforeUnload("Are you sure?");
13
- });
14
- globalExpect(addSpy).toHaveBeenCalledWith("beforeunload", globalExpect.any(Function));
15
- addSpy.mockRestore();
16
- });
17
- it("removes the handler on Symbol.dispose", () => {
18
- const removeSpy = vi.spyOn(window, "removeEventListener");
19
- let bu;
20
- effectScope(() => {
21
- bu = createBeforeUnload();
22
- });
23
- bu[Symbol.dispose]();
24
- globalExpect(removeSpy).toHaveBeenCalledWith("beforeunload", globalExpect.any(Function));
25
- removeSpy.mockRestore();
26
- });
27
- });
28
- //#endregion
29
- export {};
@@ -1,15 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/clipboard.d.ts
4
- type ClipboardResult = {
5
- copied: Computed<boolean>;
6
- value: Computed<string | null>;
7
- copy(text: string): Promise<void>;
8
- };
9
- /**
10
- * Provides a `copy(text)` helper that writes to the clipboard.
11
- * `copied` is `true` for 1 500 ms after a successful copy.
12
- */
13
- declare function createClipboard(resetDelay?: number): ClipboardResult;
14
- //#endregion
15
- export { createClipboard };
@@ -1,25 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/clipboard.ts
3
- /**
4
- * Provides a `copy(text)` helper that writes to the clipboard.
5
- * `copied` is `true` for 1 500 ms after a successful copy.
6
- */
7
- function createClipboard(resetDelay = 1500) {
8
- const copied = signal(false);
9
- const value = signal(null);
10
- let timer;
11
- const copy = async (text) => {
12
- await navigator.clipboard.writeText(text);
13
- clearTimeout(timer);
14
- value(text);
15
- copied(true);
16
- timer = setTimeout(() => copied(false), resetDelay);
17
- };
18
- return {
19
- copied,
20
- value,
21
- copy
22
- };
23
- }
24
- //#endregion
25
- export { createClipboard };
@@ -1,53 +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 { createClipboard } from "./clipboard.mjs";
4
- //#region src/signals/lib/clipboard.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- vi.useRealTimers();
8
- vi.unstubAllGlobals();
9
- });
10
- describe("createClipboard", () => {
11
- it("starts as not copied", () => {
12
- vi.stubGlobal("navigator", {
13
- ...navigator,
14
- clipboard: { writeText: vi.fn().mockResolvedValue(void 0) }
15
- });
16
- let cb;
17
- effectScope(() => {
18
- cb = createClipboard();
19
- });
20
- globalExpect(cb.copied()).toBe(false);
21
- globalExpect(cb.value()).toBeNull();
22
- });
23
- it("sets copied and value after copy()", async () => {
24
- vi.useFakeTimers();
25
- vi.stubGlobal("navigator", {
26
- ...navigator,
27
- clipboard: { writeText: vi.fn().mockResolvedValue(void 0) }
28
- });
29
- let cb;
30
- effectScope(() => {
31
- cb = createClipboard();
32
- });
33
- await cb.copy("hello");
34
- globalExpect(cb.copied()).toBe(true);
35
- globalExpect(cb.value()).toBe("hello");
36
- });
37
- it("resets copied after resetDelay", async () => {
38
- vi.useFakeTimers();
39
- vi.stubGlobal("navigator", {
40
- ...navigator,
41
- clipboard: { writeText: vi.fn().mockResolvedValue(void 0) }
42
- });
43
- let cb;
44
- effectScope(() => {
45
- cb = createClipboard(500);
46
- });
47
- await cb.copy("text");
48
- vi.advanceTimersByTime(600);
49
- globalExpect(cb.copied()).toBe(false);
50
- });
51
- });
52
- //#endregion
53
- export {};
@@ -1,18 +0,0 @@
1
- import { n as Signal } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/counter.d.ts
4
- type CounterResult = Signal<number> & {
5
- increment(step?: number): void;
6
- decrement(step?: number): void;
7
- reset(): void;
8
- };
9
- /**
10
- * Returns a numeric `Signal` with `increment`, `decrement`, and `reset`
11
- * helpers. Optionally clamp to `[min, max]`.
12
- */
13
- declare function createCounter(initial?: number, options?: {
14
- min?: number;
15
- max?: number;
16
- }): CounterResult;
17
- //#endregion
18
- export { createCounter };
@@ -1,21 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/counter.ts
3
- /**
4
- * Returns a numeric `Signal` with `increment`, `decrement`, and `reset`
5
- * helpers. Optionally clamp to `[min, max]`.
6
- */
7
- function createCounter(initial = 0, options) {
8
- const { min = -Infinity, max = Infinity } = options ?? {};
9
- const clamp = (v) => Math.min(max, Math.max(min, v));
10
- const s = signal(clamp(initial));
11
- const increment = (step = 1) => s(clamp(s() + step));
12
- const decrement = (step = 1) => s(clamp(s() - step));
13
- const reset = () => s(clamp(initial));
14
- return Object.assign(s, {
15
- increment,
16
- decrement,
17
- reset
18
- });
19
- }
20
- //#endregion
21
- export { createCounter };
@@ -1 +0,0 @@
1
- export { };
@@ -1,74 +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 { createCounter } from "./counter.mjs";
4
- //#region src/signals/lib/counter.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createCounter", () => {
9
- it("starts at 0 by default", () => {
10
- let c;
11
- effectScope(() => {
12
- c = createCounter();
13
- });
14
- globalExpect(c()).toBe(0);
15
- });
16
- it("starts at a provided initial value", () => {
17
- let c;
18
- effectScope(() => {
19
- c = createCounter(10);
20
- });
21
- globalExpect(c()).toBe(10);
22
- });
23
- it("increments by 1", () => {
24
- let c;
25
- effectScope(() => {
26
- c = createCounter(0);
27
- });
28
- c.increment();
29
- globalExpect(c()).toBe(1);
30
- });
31
- it("increments by step", () => {
32
- let c;
33
- effectScope(() => {
34
- c = createCounter(0);
35
- });
36
- c.increment(5);
37
- globalExpect(c()).toBe(5);
38
- });
39
- it("decrements by 1", () => {
40
- let c;
41
- effectScope(() => {
42
- c = createCounter(5);
43
- });
44
- c.decrement();
45
- globalExpect(c()).toBe(4);
46
- });
47
- it("resets to initial value", () => {
48
- let c;
49
- effectScope(() => {
50
- c = createCounter(3);
51
- });
52
- c.increment(10);
53
- c.reset();
54
- globalExpect(c()).toBe(3);
55
- });
56
- it("clamps to max", () => {
57
- let c;
58
- effectScope(() => {
59
- c = createCounter(0, { max: 5 });
60
- });
61
- c.increment(100);
62
- globalExpect(c()).toBe(5);
63
- });
64
- it("clamps to min", () => {
65
- let c;
66
- effectScope(() => {
67
- c = createCounter(0, { min: -3 });
68
- });
69
- c.decrement(100);
70
- globalExpect(c()).toBe(-3);
71
- });
72
- });
73
- //#endregion
74
- export {};
@@ -1,10 +0,0 @@
1
- import { n as Signal } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/document-title.d.ts
4
- /**
5
- * Returns a writable `Signal<string>` synced to `document.title`.
6
- * Writing the signal immediately updates the browser tab title.
7
- */
8
- declare function createDocumentTitle(initial?: string): Signal<string>;
9
- //#endregion
10
- export { createDocumentTitle };
@@ -1,15 +0,0 @@
1
- import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
2
- //#region src/signals/lib/document-title.ts
3
- /**
4
- * Returns a writable `Signal<string>` synced to `document.title`.
5
- * Writing the signal immediately updates the browser tab title.
6
- */
7
- function createDocumentTitle(initial) {
8
- const title = signal(initial ?? (typeof document !== "undefined" ? document.title : ""));
9
- effect(() => {
10
- if (typeof document !== "undefined") document.title = title();
11
- });
12
- return title;
13
- }
14
- //#endregion
15
- export { createDocumentTitle };
@@ -1 +0,0 @@
1
- export { };
@@ -1,33 +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 { createDocumentTitle } from "./document-title.mjs";
4
- //#region src/signals/lib/document-title.test.ts
5
- afterEach(() => {
6
- document.body.innerHTML = "";
7
- });
8
- describe("createDocumentTitle", () => {
9
- it("sets document.title from initial value", () => {
10
- effectScope(() => {
11
- createDocumentTitle("My App");
12
- });
13
- globalExpect(document.title).toBe("My App");
14
- });
15
- it("updates document.title when signal is written", () => {
16
- let title;
17
- effectScope(() => {
18
- title = createDocumentTitle("Initial");
19
- });
20
- title("Updated");
21
- globalExpect(document.title).toBe("Updated");
22
- });
23
- it("reads from document.title if no initial value given", () => {
24
- document.title = "Existing Title";
25
- let title;
26
- effectScope(() => {
27
- title = createDocumentTitle();
28
- });
29
- globalExpect(title()).toBe("Existing Title");
30
- });
31
- });
32
- //#endregion
33
- export {};
@@ -1,16 +0,0 @@
1
- import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
-
3
- //#region src/signals/lib/element-size.d.ts
4
- /**
5
- * Observes the content-box size of `target` using a `ResizeObserver` and
6
- * returns reactive `width` and `height` computeds.
7
- *
8
- * Supports a reactive getter — pass `() => element` when the target element
9
- * is not known at call time.
10
- */
11
- declare function createElementSize(target: Element | (() => Element | null)): {
12
- width: Computed<number>;
13
- height: Computed<number>;
14
- } & Disposable;
15
- //#endregion
16
- export { createElementSize };
@@ -1,32 +0,0 @@
1
- import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
- import { createResizeObserver } from "./resize-observer.mjs";
3
- //#region src/signals/lib/element-size.ts
4
- /**
5
- * Observes the content-box size of `target` using a `ResizeObserver` and
6
- * returns reactive `width` and `height` computeds.
7
- *
8
- * Supports a reactive getter — pass `() => element` when the target element
9
- * is not known at call time.
10
- */
11
- function createElementSize(target) {
12
- const w = signal(0);
13
- const h = signal(0);
14
- const observer = createResizeObserver(target, (entries) => {
15
- for (const entry of entries) {
16
- w(entry.contentRect.width);
17
- h(entry.contentRect.height);
18
- }
19
- });
20
- const el = typeof target === "function" ? target() : target;
21
- if (el) {
22
- const rect = el.getBoundingClientRect();
23
- w(rect.width);
24
- h(rect.height);
25
- }
26
- return Object.assign({
27
- width: w,
28
- height: h
29
- }, { [Symbol.dispose]: observer[Symbol.dispose] });
30
- }
31
- //#endregion
32
- export { createElementSize };
@@ -1 +0,0 @@
1
- export { };
@@ -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 { };