elements-kit 0.0.8 → 0.0.9

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 (258) hide show
  1. package/README.md +3 -3
  2. package/dist/builder/dom.d.mts +1 -1
  3. package/dist/builder/index.d.mts +1 -1
  4. package/dist/{index-BGKVkZ6y.d.mts → index-BtqiEEfc.d.mts} +1 -1
  5. package/dist/{index-Ukqj0EcT.d.mts → index-CKjDUp1B.d.mts} +1 -1
  6. package/dist/jsx-runtime/index.d.mts +1 -1
  7. package/dist/magic-string.es-i62WTP6J.mjs +1011 -0
  8. package/dist/signals/index.d.mts +1 -1
  9. package/dist/signals/lib/active-element.d.mts +10 -0
  10. package/dist/signals/lib/active-element.mjs +20 -0
  11. package/dist/signals/lib/active-element.test.d.mts +1 -0
  12. package/dist/signals/lib/active-element.test.mjs +39 -0
  13. package/dist/signals/lib/animation-frames.d.mts +18 -0
  14. package/dist/signals/lib/animation-frames.mjs +48 -0
  15. package/dist/signals/lib/animation-frames.test.d.mts +1 -0
  16. package/dist/signals/lib/animation-frames.test.mjs +52 -0
  17. package/dist/signals/lib/async-retry.d.mts +21 -0
  18. package/dist/signals/lib/async-retry.mjs +57 -0
  19. package/dist/signals/lib/async-retry.test.d.mts +1 -0
  20. package/dist/signals/lib/async-retry.test.mjs +57 -0
  21. package/dist/signals/lib/audio.d.mts +26 -0
  22. package/dist/signals/lib/audio.mjs +60 -0
  23. package/dist/signals/lib/audio.test.d.mts +1 -0
  24. package/dist/signals/lib/audio.test.mjs +54 -0
  25. package/dist/signals/lib/battery.d.mts +17 -0
  26. package/dist/signals/lib/battery.mjs +45 -0
  27. package/dist/signals/lib/battery.test.d.mts +1 -0
  28. package/dist/signals/lib/battery.test.mjs +38 -0
  29. package/dist/signals/lib/before-unload.d.mts +11 -0
  30. package/dist/signals/lib/before-unload.mjs +20 -0
  31. package/dist/signals/lib/before-unload.test.d.mts +1 -0
  32. package/dist/signals/lib/before-unload.test.mjs +29 -0
  33. package/dist/signals/lib/clipboard.d.mts +15 -0
  34. package/dist/signals/lib/clipboard.mjs +25 -0
  35. package/dist/signals/lib/clipboard.test.d.mts +1 -0
  36. package/dist/signals/lib/clipboard.test.mjs +53 -0
  37. package/dist/signals/lib/counter.d.mts +18 -0
  38. package/dist/signals/lib/counter.mjs +21 -0
  39. package/dist/signals/lib/counter.test.d.mts +1 -0
  40. package/dist/signals/lib/counter.test.mjs +74 -0
  41. package/dist/signals/lib/debounced.d.mts +12 -0
  42. package/dist/signals/lib/debounced.mjs +20 -0
  43. package/dist/signals/lib/debounced.test.d.mts +1 -0
  44. package/dist/signals/lib/debounced.test.mjs +66 -0
  45. package/dist/signals/lib/document-title.d.mts +10 -0
  46. package/dist/signals/lib/document-title.mjs +15 -0
  47. package/dist/signals/lib/document-title.test.d.mts +1 -0
  48. package/dist/signals/lib/document-title.test.mjs +33 -0
  49. package/dist/signals/lib/element-rect.d.mts +21 -0
  50. package/dist/signals/lib/element-rect.mjs +46 -0
  51. package/dist/signals/lib/element-rect.test.d.mts +1 -0
  52. package/dist/signals/lib/element-rect.test.mjs +99 -0
  53. package/dist/signals/lib/element-size.d.mts +16 -0
  54. package/dist/signals/lib/element-size.mjs +32 -0
  55. package/dist/signals/lib/element-size.test.d.mts +1 -0
  56. package/dist/signals/lib/element-size.test.mjs +86 -0
  57. package/dist/signals/lib/event-listener.d.mts +14 -0
  58. package/dist/signals/lib/event-listener.mjs +28 -0
  59. package/dist/signals/lib/event-listener.test.d.mts +1 -0
  60. package/dist/signals/lib/event-listener.test.mjs +58 -0
  61. package/dist/signals/lib/favicon.d.mts +10 -0
  62. package/dist/signals/lib/favicon.mjs +24 -0
  63. package/dist/signals/lib/favicon.test.d.mts +1 -0
  64. package/dist/signals/lib/favicon.test.mjs +28 -0
  65. package/dist/signals/lib/finite-state-machine.d.mts +22 -0
  66. package/dist/signals/lib/finite-state-machine.mjs +26 -0
  67. package/dist/signals/lib/finite-state-machine.test.d.mts +1 -0
  68. package/dist/signals/lib/finite-state-machine.test.mjs +66 -0
  69. package/dist/signals/lib/fullscreen.d.mts +15 -0
  70. package/dist/signals/lib/fullscreen.mjs +26 -0
  71. package/dist/signals/lib/fullscreen.test.d.mts +1 -0
  72. package/dist/signals/lib/fullscreen.test.mjs +56 -0
  73. package/dist/signals/lib/geolocation.d.mts +15 -0
  74. package/dist/signals/lib/geolocation.mjs +30 -0
  75. package/dist/signals/lib/geolocation.test.d.mts +1 -0
  76. package/dist/signals/lib/geolocation.test.mjs +37 -0
  77. package/dist/signals/lib/hash.d.mts +10 -0
  78. package/dist/signals/lib/hash.mjs +20 -0
  79. package/dist/signals/lib/hash.test.d.mts +1 -0
  80. package/dist/signals/lib/hash.test.mjs +47 -0
  81. package/dist/signals/lib/hover.d.mts +11 -0
  82. package/dist/signals/lib/hover.mjs +23 -0
  83. package/dist/signals/lib/hover.test.d.mts +1 -0
  84. package/dist/signals/lib/hover.test.mjs +63 -0
  85. package/dist/signals/lib/intersection-observer.d.mts +8 -0
  86. package/dist/signals/lib/intersection-observer.mjs +16 -0
  87. package/dist/signals/lib/intersection-observer.test.d.mts +1 -0
  88. package/dist/signals/lib/intersection-observer.test.mjs +44 -0
  89. package/dist/signals/lib/interval.d.mts +18 -0
  90. package/dist/signals/lib/interval.mjs +38 -0
  91. package/dist/signals/lib/interval.test.d.mts +1 -0
  92. package/dist/signals/lib/interval.test.mjs +68 -0
  93. package/dist/signals/lib/is-document-visible.d.mts +11 -0
  94. package/dist/signals/lib/is-document-visible.mjs +19 -0
  95. package/dist/signals/lib/is-document-visible.test.d.mts +1 -0
  96. package/dist/signals/lib/is-document-visible.test.mjs +58 -0
  97. package/dist/signals/lib/is-focus-within.d.mts +10 -0
  98. package/dist/signals/lib/is-focus-within.mjs +28 -0
  99. package/dist/signals/lib/is-focus-within.test.d.mts +1 -0
  100. package/dist/signals/lib/is-focus-within.test.mjs +50 -0
  101. package/dist/signals/lib/is-idle.d.mts +10 -0
  102. package/dist/signals/lib/is-idle.mjs +37 -0
  103. package/dist/signals/lib/is-idle.test.d.mts +1 -0
  104. package/dist/signals/lib/is-idle.test.mjs +50 -0
  105. package/dist/signals/lib/is-in-viewport.d.mts +10 -0
  106. package/dist/signals/lib/is-in-viewport.mjs +16 -0
  107. package/dist/signals/lib/is-in-viewport.test.d.mts +1 -0
  108. package/dist/signals/lib/is-in-viewport.test.mjs +74 -0
  109. package/dist/signals/lib/key-press.d.mts +13 -0
  110. package/dist/signals/lib/key-press.mjs +25 -0
  111. package/dist/signals/lib/key-press.test.d.mts +1 -0
  112. package/dist/signals/lib/key-press.test.mjs +52 -0
  113. package/dist/signals/lib/list.d.mts +19 -0
  114. package/dist/signals/lib/list.mjs +36 -0
  115. package/dist/signals/lib/list.test.d.mts +1 -0
  116. package/dist/signals/lib/list.test.mjs +104 -0
  117. package/dist/signals/lib/lock-body-scroll.d.mts +8 -0
  118. package/dist/signals/lib/lock-body-scroll.mjs +17 -0
  119. package/dist/signals/lib/lock-body-scroll.test.d.mts +1 -0
  120. package/dist/signals/lib/lock-body-scroll.test.mjs +37 -0
  121. package/dist/signals/lib/long-press.d.mts +10 -0
  122. package/dist/signals/lib/long-press.mjs +29 -0
  123. package/dist/signals/lib/long-press.test.d.mts +1 -0
  124. package/dist/signals/lib/long-press.test.mjs +52 -0
  125. package/dist/signals/lib/map.d.mts +18 -0
  126. package/dist/signals/lib/map.mjs +33 -0
  127. package/dist/signals/lib/map.test.d.mts +1 -0
  128. package/dist/signals/lib/map.test.mjs +60 -0
  129. package/dist/signals/lib/media-devices.d.mts +10 -0
  130. package/dist/signals/lib/media-devices.mjs +18 -0
  131. package/dist/signals/lib/media-devices.test.d.mts +1 -0
  132. package/dist/signals/lib/media-devices.test.mjs +44 -0
  133. package/dist/signals/lib/media.d.mts +1 -1
  134. package/dist/signals/lib/motion.d.mts +15 -0
  135. package/dist/signals/lib/motion.mjs +27 -0
  136. package/dist/signals/lib/motion.test.d.mts +1 -0
  137. package/dist/signals/lib/motion.test.mjs +51 -0
  138. package/dist/signals/lib/mouse-position.d.mts +14 -0
  139. package/dist/signals/lib/mouse-position.mjs +22 -0
  140. package/dist/signals/lib/mouse-position.test.d.mts +1 -0
  141. package/dist/signals/lib/mouse-position.test.mjs +44 -0
  142. package/dist/signals/lib/mouse-wheel.d.mts +10 -0
  143. package/dist/signals/lib/mouse-wheel.mjs +17 -0
  144. package/dist/signals/lib/mouse-wheel.test.d.mts +1 -0
  145. package/dist/signals/lib/mouse-wheel.test.mjs +38 -0
  146. package/dist/signals/lib/mutation-observer.d.mts +8 -0
  147. package/dist/signals/lib/mutation-observer.mjs +16 -0
  148. package/dist/signals/lib/mutation-observer.test.d.mts +1 -0
  149. package/dist/signals/lib/mutation-observer.test.mjs +46 -0
  150. package/dist/signals/lib/network-state.d.mts +17 -0
  151. package/dist/signals/lib/network-state.mjs +34 -0
  152. package/dist/signals/lib/network-state.test.d.mts +1 -0
  153. package/dist/signals/lib/network-state.test.mjs +61 -0
  154. package/dist/signals/lib/on-click-outside.d.mts +11 -0
  155. package/dist/signals/lib/on-click-outside.mjs +20 -0
  156. package/dist/signals/lib/on-click-outside.test.d.mts +1 -0
  157. package/dist/signals/lib/on-click-outside.test.mjs +54 -0
  158. package/dist/signals/lib/orientation.d.mts +13 -0
  159. package/dist/signals/lib/orientation.mjs +21 -0
  160. package/dist/signals/lib/orientation.test.d.mts +1 -0
  161. package/dist/signals/lib/orientation.test.mjs +43 -0
  162. package/dist/signals/lib/page-leave.d.mts +8 -0
  163. package/dist/signals/lib/page-leave.mjs +12 -0
  164. package/dist/signals/lib/page-leave.test.d.mts +1 -0
  165. package/dist/signals/lib/page-leave.test.mjs +29 -0
  166. package/dist/signals/lib/permission.d.mts +14 -0
  167. package/dist/signals/lib/permission.mjs +26 -0
  168. package/dist/signals/lib/permission.test.d.mts +1 -0
  169. package/dist/signals/lib/permission.test.mjs +50 -0
  170. package/dist/signals/lib/persisted-state.d.mts +11 -0
  171. package/dist/signals/lib/persisted-state.mjs +25 -0
  172. package/dist/signals/lib/persisted-state.test.d.mts +1 -0
  173. package/dist/signals/lib/persisted-state.test.mjs +70 -0
  174. package/dist/signals/lib/pressed-keys.d.mts +10 -0
  175. package/dist/signals/lib/pressed-keys.mjs +32 -0
  176. package/dist/signals/lib/pressed-keys.test.d.mts +1 -0
  177. package/dist/signals/lib/pressed-keys.test.mjs +54 -0
  178. package/dist/signals/lib/previous-distinct.d.mts +10 -0
  179. package/dist/signals/lib/previous-distinct.mjs +22 -0
  180. package/dist/signals/lib/previous-distinct.test.d.mts +1 -0
  181. package/dist/signals/lib/previous-distinct.test.mjs +50 -0
  182. package/dist/signals/lib/previous.d.mts +10 -0
  183. package/dist/signals/lib/previous.mjs +18 -0
  184. package/dist/signals/lib/previous.test.d.mts +1 -0
  185. package/dist/signals/lib/previous.test.mjs +47 -0
  186. package/dist/signals/lib/queue.d.mts +17 -0
  187. package/dist/signals/lib/queue.mjs +28 -0
  188. package/dist/signals/lib/queue.test.d.mts +1 -0
  189. package/dist/signals/lib/queue.test.mjs +61 -0
  190. package/dist/signals/lib/raf.d.mts +17 -0
  191. package/dist/signals/lib/raf.mjs +38 -0
  192. package/dist/signals/lib/raf.test.d.mts +1 -0
  193. package/dist/signals/lib/raf.test.mjs +58 -0
  194. package/dist/signals/lib/react.d.mts +1 -1
  195. package/dist/signals/lib/resize-observer.d.mts +8 -0
  196. package/dist/signals/lib/resize-observer.mjs +16 -0
  197. package/dist/signals/lib/resize-observer.test.d.mts +1 -0
  198. package/dist/signals/lib/resize-observer.test.mjs +44 -0
  199. package/dist/signals/lib/resource.d.mts +23 -0
  200. package/dist/signals/lib/resource.mjs +43 -0
  201. package/dist/signals/lib/resource.test.d.mts +1 -0
  202. package/dist/signals/lib/resource.test.mjs +56 -0
  203. package/dist/signals/lib/scroll-state.d.mts +19 -0
  204. package/dist/signals/lib/scroll-state.mjs +46 -0
  205. package/dist/signals/lib/scroll-state.test.d.mts +1 -0
  206. package/dist/signals/lib/scroll-state.test.mjs +94 -0
  207. package/dist/signals/lib/scrolling.d.mts +12 -0
  208. package/dist/signals/lib/scrolling.mjs +26 -0
  209. package/dist/signals/lib/scrolling.test.d.mts +1 -0
  210. package/dist/signals/lib/scrolling.test.mjs +57 -0
  211. package/dist/signals/lib/search-params.d.mts +16 -0
  212. package/dist/signals/lib/search-params.mjs +37 -0
  213. package/dist/signals/lib/search-params.test.d.mts +1 -0
  214. package/dist/signals/lib/search-params.test.mjs +56 -0
  215. package/dist/signals/lib/set.d.mts +18 -0
  216. package/dist/signals/lib/set.mjs +38 -0
  217. package/dist/signals/lib/set.test.d.mts +1 -0
  218. package/dist/signals/lib/set.test.mjs +70 -0
  219. package/dist/signals/lib/start-typing.d.mts +9 -0
  220. package/dist/signals/lib/start-typing.mjs +39 -0
  221. package/dist/signals/lib/start-typing.test.d.mts +1 -0
  222. package/dist/signals/lib/start-typing.test.mjs +64 -0
  223. package/dist/signals/lib/state-history.d.mts +21 -0
  224. package/dist/signals/lib/state-history.mjs +61 -0
  225. package/dist/signals/lib/state-history.test.d.mts +1 -0
  226. package/dist/signals/lib/state-history.test.mjs +106 -0
  227. package/dist/signals/lib/state-validator.d.mts +16 -0
  228. package/dist/signals/lib/state-validator.mjs +21 -0
  229. package/dist/signals/lib/state-validator.test.d.mts +1 -0
  230. package/dist/signals/lib/state-validator.test.mjs +41 -0
  231. package/dist/signals/lib/throttled.d.mts +13 -0
  232. package/dist/signals/lib/throttled.mjs +45 -0
  233. package/dist/signals/lib/throttled.test.d.mts +1 -0
  234. package/dist/signals/lib/throttled.test.mjs +56 -0
  235. package/dist/signals/lib/timeout.d.mts +16 -0
  236. package/dist/signals/lib/timeout.mjs +39 -0
  237. package/dist/signals/lib/timeout.test.d.mts +1 -0
  238. package/dist/signals/lib/timeout.test.mjs +64 -0
  239. package/dist/signals/lib/toggle.d.mts +12 -0
  240. package/dist/signals/lib/toggle.mjs +12 -0
  241. package/dist/signals/lib/toggle.test.d.mts +1 -0
  242. package/dist/signals/lib/toggle.test.mjs +43 -0
  243. package/dist/signals/lib/video.d.mts +25 -0
  244. package/dist/signals/lib/video.mjs +59 -0
  245. package/dist/signals/lib/video.test.d.mts +1 -0
  246. package/dist/signals/lib/video.test.mjs +51 -0
  247. package/dist/signals/lib/watch.d.mts +16 -0
  248. package/dist/signals/lib/watch.mjs +31 -0
  249. package/dist/signals/lib/watch.test.d.mts +1 -0
  250. package/dist/signals/lib/watch.test.mjs +51 -0
  251. package/dist/signals/lib/window-size.d.mts +14 -0
  252. package/dist/signals/lib/window-size.mjs +22 -0
  253. package/dist/signals/lib/window-size.test.d.mts +1 -0
  254. package/dist/signals/lib/window-size.test.mjs +50 -0
  255. package/dist/slot.d.mts +1 -1
  256. package/dist/test.BmQO5GaM-CR2qjV1t.mjs +13314 -0
  257. package/package.json +1 -1
  258. /package/dist/{polyfill-BW_B2r6i.d.mts → polyfill-AFIi9kAN.d.mts} +0 -0
@@ -0,0 +1,44 @@
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 { createMediaDevices } from "./media-devices.mjs";
4
+ //#region src/signals/lib/media-devices.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ vi.unstubAllGlobals();
8
+ });
9
+ describe("createMediaDevices", () => {
10
+ it("returns a list of devices", async () => {
11
+ const mockDevices = [{
12
+ deviceId: "1",
13
+ kind: "audioinput",
14
+ label: "Mic"
15
+ }];
16
+ vi.stubGlobal("navigator", { mediaDevices: {
17
+ enumerateDevices: vi.fn().mockResolvedValue(mockDevices),
18
+ addEventListener: vi.fn(),
19
+ removeEventListener: vi.fn()
20
+ } });
21
+ let d;
22
+ effectScope(() => {
23
+ d = createMediaDevices();
24
+ });
25
+ await new Promise((res) => setTimeout(res, 0));
26
+ globalExpect(d()).toEqual(mockDevices);
27
+ });
28
+ it("removes devicechange listener on Symbol.dispose", () => {
29
+ const removeListener = vi.fn();
30
+ vi.stubGlobal("navigator", { mediaDevices: {
31
+ enumerateDevices: vi.fn().mockResolvedValue([]),
32
+ addEventListener: vi.fn(),
33
+ removeEventListener: removeListener
34
+ } });
35
+ let d;
36
+ effectScope(() => {
37
+ d = createMediaDevices();
38
+ });
39
+ d[Symbol.dispose]();
40
+ globalExpect(removeListener).toHaveBeenCalledWith("devicechange", globalExpect.any(Function));
41
+ });
42
+ });
43
+ //#endregion
44
+ export {};
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../../index-BGKVkZ6y.mjs";
1
+ import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
2
 
3
3
  //#region src/signals/lib/media.d.ts
4
4
  declare const isBrowser: boolean;
@@ -0,0 +1,15 @@
1
+ import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
+
3
+ //#region src/signals/lib/motion.d.ts
4
+ type MotionResult = {
5
+ acceleration: Computed<DeviceMotionEventAcceleration | null>;
6
+ accelerationIncludingGravity: Computed<DeviceMotionEventAcceleration | null>;
7
+ rotationRate: Computed<DeviceMotionEventRotationRate | null>;
8
+ interval: Computed<number | null>;
9
+ } & Disposable;
10
+ /**
11
+ * Returns reactive signals driven by the `devicemotion` event.
12
+ */
13
+ declare function createMotion(): MotionResult;
14
+ //#endregion
15
+ export { createMotion };
@@ -0,0 +1,27 @@
1
+ import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
+ import { createEventListener } from "./event-listener.mjs";
3
+ //#region src/signals/lib/motion.ts
4
+ /**
5
+ * Returns reactive signals driven by the `devicemotion` event.
6
+ */
7
+ function createMotion() {
8
+ const acceleration = signal(null);
9
+ const accelerationIncludingGravity = signal(null);
10
+ const rotationRate = signal(null);
11
+ const interval = signal(null);
12
+ const onMotion = (e) => {
13
+ acceleration(e.acceleration);
14
+ accelerationIncludingGravity(e.accelerationIncludingGravity);
15
+ rotationRate(e.rotationRate);
16
+ interval(e.interval);
17
+ };
18
+ const cleanup = createEventListener(window, "devicemotion", onMotion);
19
+ return Object.assign({
20
+ acceleration,
21
+ accelerationIncludingGravity,
22
+ rotationRate,
23
+ interval
24
+ }, { [Symbol.dispose]: cleanup });
25
+ }
26
+ //#endregion
27
+ export { createMotion };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,51 @@
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 { createMotion } from "./motion.mjs";
4
+ //#region src/signals/lib/motion.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ });
8
+ describe("createMotion", () => {
9
+ it("starts with null values", () => {
10
+ let m;
11
+ effectScope(() => {
12
+ m = createMotion();
13
+ });
14
+ globalExpect(m.acceleration()).toBeNull();
15
+ globalExpect(m.rotationRate()).toBeNull();
16
+ globalExpect(m.interval()).toBeNull();
17
+ });
18
+ it("updates on devicemotion event", () => {
19
+ let m;
20
+ effectScope(() => {
21
+ m = createMotion();
22
+ });
23
+ const accel = {
24
+ x: 1,
25
+ y: 2,
26
+ z: 3
27
+ };
28
+ window.dispatchEvent(Object.assign(new Event("devicemotion"), {
29
+ acceleration: accel,
30
+ accelerationIncludingGravity: accel,
31
+ rotationRate: {
32
+ alpha: 0,
33
+ beta: 90,
34
+ gamma: -45
35
+ },
36
+ interval: 16
37
+ }));
38
+ globalExpect(m.interval()).toBe(16);
39
+ });
40
+ it("stops reacting after Symbol.dispose", () => {
41
+ let m;
42
+ effectScope(() => {
43
+ m = createMotion();
44
+ });
45
+ m[Symbol.dispose]();
46
+ window.dispatchEvent(Object.assign(new Event("devicemotion"), { interval: 100 }));
47
+ globalExpect(m.interval()).toBeNull();
48
+ });
49
+ });
50
+ //#endregion
51
+ export {};
@@ -0,0 +1,14 @@
1
+ import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
+
3
+ //#region src/signals/lib/mouse-position.d.ts
4
+ type MousePositionResult = {
5
+ x: Computed<number>;
6
+ y: Computed<number>;
7
+ } & Disposable;
8
+ /**
9
+ * Returns reactive `x` / `y` signals that track the mouse pointer position on
10
+ * the document.
11
+ */
12
+ declare function createMousePosition(): MousePositionResult;
13
+ //#endregion
14
+ export { createMousePosition };
@@ -0,0 +1,22 @@
1
+ import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
+ import { createEventListener } from "./event-listener.mjs";
3
+ //#region src/signals/lib/mouse-position.ts
4
+ /**
5
+ * Returns reactive `x` / `y` signals that track the mouse pointer position on
6
+ * the document.
7
+ */
8
+ function createMousePosition() {
9
+ const x = signal(0);
10
+ const y = signal(0);
11
+ const handler = (e) => {
12
+ x(e.clientX);
13
+ y(e.clientY);
14
+ };
15
+ const cleanup = createEventListener(document, "mousemove", handler);
16
+ return Object.assign({
17
+ x,
18
+ y
19
+ }, { [Symbol.dispose]: cleanup });
20
+ }
21
+ //#endregion
22
+ export { createMousePosition };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,44 @@
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 { createMousePosition } from "./mouse-position.mjs";
4
+ //#region src/signals/lib/mouse-position.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ });
8
+ describe("createMousePosition", () => {
9
+ it("starts at (0, 0)", () => {
10
+ let pos;
11
+ effectScope(() => {
12
+ pos = createMousePosition();
13
+ });
14
+ globalExpect(pos.x()).toBe(0);
15
+ globalExpect(pos.y()).toBe(0);
16
+ });
17
+ it("updates on mousemove", () => {
18
+ let pos;
19
+ effectScope(() => {
20
+ pos = createMousePosition();
21
+ });
22
+ document.dispatchEvent(new MouseEvent("mousemove", {
23
+ clientX: 100,
24
+ clientY: 200
25
+ }));
26
+ globalExpect(pos.x()).toBe(100);
27
+ globalExpect(pos.y()).toBe(200);
28
+ });
29
+ it("stops updating after Symbol.dispose", () => {
30
+ let pos;
31
+ effectScope(() => {
32
+ pos = createMousePosition();
33
+ });
34
+ pos[Symbol.dispose]();
35
+ document.dispatchEvent(new MouseEvent("mousemove", {
36
+ clientX: 99,
37
+ clientY: 77
38
+ }));
39
+ globalExpect(pos.x()).toBe(0);
40
+ globalExpect(pos.y()).toBe(0);
41
+ });
42
+ });
43
+ //#endregion
44
+ export {};
@@ -0,0 +1,10 @@
1
+ import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
+
3
+ //#region src/signals/lib/mouse-wheel.d.ts
4
+ /**
5
+ * Returns a `Computed<number>` tracking the cumulative vertical mouse-wheel
6
+ * delta (positive = scrolled down).
7
+ */
8
+ declare function createMouseWheel(): Computed<number> & Disposable;
9
+ //#endregion
10
+ export { createMouseWheel };
@@ -0,0 +1,17 @@
1
+ import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
+ import { createEventListener } from "./event-listener.mjs";
3
+ //#region src/signals/lib/mouse-wheel.ts
4
+ /**
5
+ * Returns a `Computed<number>` tracking the cumulative vertical mouse-wheel
6
+ * delta (positive = scrolled down).
7
+ */
8
+ function createMouseWheel() {
9
+ const delta = signal(0);
10
+ const handler = (e) => {
11
+ delta(delta() + e.deltaY);
12
+ };
13
+ const cleanup = createEventListener(window, "wheel", handler, { passive: true });
14
+ return Object.assign(delta, { [Symbol.dispose]: cleanup });
15
+ }
16
+ //#endregion
17
+ export { createMouseWheel };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,38 @@
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 { createMouseWheel } from "./mouse-wheel.mjs";
4
+ //#region src/signals/lib/mouse-wheel.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ vi.useRealTimers();
8
+ });
9
+ describe("createMouseWheel", () => {
10
+ it("starts at 0", () => {
11
+ let w;
12
+ effectScope(() => {
13
+ w = createMouseWheel();
14
+ });
15
+ globalExpect(w()).toBe(0);
16
+ });
17
+ it("accumulates deltaY on wheel events", () => {
18
+ let w;
19
+ effectScope(() => {
20
+ w = createMouseWheel();
21
+ });
22
+ window.dispatchEvent(new WheelEvent("wheel", { deltaY: 100 }));
23
+ globalExpect(w()).toBe(100);
24
+ window.dispatchEvent(new WheelEvent("wheel", { deltaY: -50 }));
25
+ globalExpect(w()).toBe(50);
26
+ });
27
+ it("stops updating after Symbol.dispose", () => {
28
+ let w;
29
+ effectScope(() => {
30
+ w = createMouseWheel();
31
+ });
32
+ w[Symbol.dispose]();
33
+ window.dispatchEvent(new WheelEvent("wheel", { deltaY: 200 }));
34
+ globalExpect(w()).toBe(0);
35
+ });
36
+ });
37
+ //#endregion
38
+ export {};
@@ -0,0 +1,8 @@
1
+ //#region src/signals/lib/mutation-observer.d.ts
2
+ /**
3
+ * Watches `target` for DOM mutations and calls `callback` with each batch of
4
+ * `MutationRecord`s.
5
+ */
6
+ declare function createMutationObserver(target: Element | (() => Element | null), options: MutationObserverInit, callback: (records: MutationRecord[]) => void): Disposable;
7
+ //#endregion
8
+ export { createMutationObserver };
@@ -0,0 +1,16 @@
1
+ import { d as onCleanup } from "../../signals-CLAPw8kk.mjs";
2
+ //#region src/signals/lib/mutation-observer.ts
3
+ /**
4
+ * Watches `target` for DOM mutations and calls `callback` with each batch of
5
+ * `MutationRecord`s.
6
+ */
7
+ function createMutationObserver(target, options, callback) {
8
+ const observer = new MutationObserver((records) => callback(records));
9
+ const el = typeof target === "function" ? target() : target;
10
+ if (el) observer.observe(el, options);
11
+ const cleanup = () => observer.disconnect();
12
+ onCleanup(cleanup);
13
+ return { [Symbol.dispose]: cleanup };
14
+ }
15
+ //#endregion
16
+ export { createMutationObserver };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,46 @@
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 { createMutationObserver } from "./mutation-observer.mjs";
4
+ //#region src/signals/lib/mutation-observer.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ vi.unstubAllGlobals();
8
+ });
9
+ describe("createMutationObserver", () => {
10
+ it("observes mutations on a target element", () => {
11
+ const target = document.createElement("div");
12
+ document.body.appendChild(target);
13
+ let observeCount = 0;
14
+ vi.stubGlobal("MutationObserver", function MockMO(cb) {
15
+ return {
16
+ observe: () => {
17
+ observeCount++;
18
+ },
19
+ disconnect: vi.fn()
20
+ };
21
+ });
22
+ effectScope(() => {
23
+ createMutationObserver(target, { childList: true }, vi.fn());
24
+ });
25
+ globalExpect(observeCount).toBe(1);
26
+ });
27
+ it("disconnects on Symbol.dispose", () => {
28
+ const target = document.createElement("div");
29
+ document.body.appendChild(target);
30
+ const disconnect = vi.fn();
31
+ vi.stubGlobal("MutationObserver", function MockMO() {
32
+ return {
33
+ observe: vi.fn(),
34
+ disconnect
35
+ };
36
+ });
37
+ let mo;
38
+ effectScope(() => {
39
+ mo = createMutationObserver(target, { childList: true }, vi.fn());
40
+ });
41
+ mo[Symbol.dispose]();
42
+ globalExpect(disconnect).toHaveBeenCalledOnce();
43
+ });
44
+ });
45
+ //#endregion
46
+ export {};
@@ -0,0 +1,17 @@
1
+ import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
+
3
+ //#region src/signals/lib/network-state.d.ts
4
+ type NetworkStateResult = {
5
+ online: Computed<boolean>;
6
+ downlink: Computed<number | undefined>;
7
+ effectiveType: Computed<string | undefined>;
8
+ rtt: Computed<number | undefined>;
9
+ saveData: Computed<boolean | undefined>;
10
+ } & Disposable;
11
+ /**
12
+ * Returns reactive signals reflecting `navigator.onLine` and the Network
13
+ * Information API (`navigator.connection`) when available.
14
+ */
15
+ declare function createNetworkState(): NetworkStateResult;
16
+ //#endregion
17
+ export { createNetworkState };
@@ -0,0 +1,34 @@
1
+ import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
+ import { createEventListener } from "./event-listener.mjs";
3
+ //#region src/signals/lib/network-state.ts
4
+ /**
5
+ * Returns reactive signals reflecting `navigator.onLine` and the Network
6
+ * Information API (`navigator.connection`) when available.
7
+ */
8
+ function createNetworkState() {
9
+ const connection = navigator.connection;
10
+ const online = signal(typeof navigator !== "undefined" ? navigator.onLine : true);
11
+ const downlink = signal(connection?.downlink);
12
+ const effectiveType = signal(connection?.effectiveType);
13
+ const rtt = signal(connection?.rtt);
14
+ const saveData = signal(connection?.saveData);
15
+ const updateOnline = () => online(navigator.onLine);
16
+ const updateConnection = () => {
17
+ downlink(connection?.downlink);
18
+ effectiveType(connection?.effectiveType);
19
+ rtt(connection?.rtt);
20
+ saveData(connection?.saveData);
21
+ };
22
+ const cleanups = [createEventListener(window, "online", updateOnline), createEventListener(window, "offline", updateOnline)];
23
+ if (connection) cleanups.push(createEventListener(connection, "change", updateConnection));
24
+ const cleanup = () => cleanups.forEach((fn) => fn());
25
+ return Object.assign({
26
+ online,
27
+ downlink,
28
+ effectiveType,
29
+ rtt,
30
+ saveData
31
+ }, { [Symbol.dispose]: cleanup });
32
+ }
33
+ //#endregion
34
+ export { createNetworkState };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,61 @@
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 { createNetworkState } from "./network-state.mjs";
4
+ //#region src/signals/lib/network-state.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ vi.restoreAllMocks();
8
+ });
9
+ describe("createNetworkState", () => {
10
+ it("reads navigator.onLine initially", () => {
11
+ let n;
12
+ effectScope(() => {
13
+ n = createNetworkState();
14
+ });
15
+ globalExpect(n.online()).toBe(navigator.onLine);
16
+ });
17
+ it("becomes false on offline event", () => {
18
+ let n;
19
+ effectScope(() => {
20
+ n = createNetworkState();
21
+ });
22
+ Object.defineProperty(navigator, "onLine", {
23
+ configurable: true,
24
+ get: () => false
25
+ });
26
+ window.dispatchEvent(new Event("offline"));
27
+ globalExpect(n.online()).toBe(false);
28
+ });
29
+ it("becomes true on online event", () => {
30
+ Object.defineProperty(navigator, "onLine", {
31
+ configurable: true,
32
+ get: () => false
33
+ });
34
+ let n;
35
+ effectScope(() => {
36
+ n = createNetworkState();
37
+ });
38
+ Object.defineProperty(navigator, "onLine", {
39
+ configurable: true,
40
+ get: () => true
41
+ });
42
+ window.dispatchEvent(new Event("online"));
43
+ globalExpect(n.online()).toBe(true);
44
+ });
45
+ it("stops reacting after Symbol.dispose", () => {
46
+ let n;
47
+ effectScope(() => {
48
+ n = createNetworkState();
49
+ });
50
+ const initial = n.online();
51
+ n[Symbol.dispose]();
52
+ Object.defineProperty(navigator, "onLine", {
53
+ configurable: true,
54
+ get: () => !initial
55
+ });
56
+ window.dispatchEvent(new Event("offline"));
57
+ globalExpect(n.online()).toBe(initial);
58
+ });
59
+ });
60
+ //#endregion
61
+ export {};
@@ -0,0 +1,11 @@
1
+ //#region src/signals/lib/on-click-outside.d.ts
2
+ /**
3
+ * Fires `handler` whenever a pointer-down event occurs outside `target`.
4
+ *
5
+ * Built on a `document` `pointerdown` listener so it works for both mouse and
6
+ * touch input. Cleanup is registered automatically when called inside an
7
+ * effect or scope.
8
+ */
9
+ declare function createOnClickOutside(target: Element | (() => Element | null), handler: (e: PointerEvent) => void): void;
10
+ //#endregion
11
+ export { createOnClickOutside };
@@ -0,0 +1,20 @@
1
+ import { createEventListener } from "./event-listener.mjs";
2
+ //#region src/signals/lib/on-click-outside.ts
3
+ /**
4
+ * Fires `handler` whenever a pointer-down event occurs outside `target`.
5
+ *
6
+ * Built on a `document` `pointerdown` listener so it works for both mouse and
7
+ * touch input. Cleanup is registered automatically when called inside an
8
+ * effect or scope.
9
+ */
10
+ function createOnClickOutside(target, handler) {
11
+ const getTarget = typeof target === "function" ? target : () => target;
12
+ const listener = (e) => {
13
+ const el = getTarget();
14
+ if (!el) return;
15
+ if (!el.contains(e.target)) handler(e);
16
+ };
17
+ createEventListener(document, "pointerdown", listener);
18
+ }
19
+ //#endregion
20
+ export { createOnClickOutside };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,54 @@
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 { createOnClickOutside } from "./on-click-outside.mjs";
4
+ //#region src/signals/lib/on-click-outside.test.ts
5
+ afterEach(() => {
6
+ document.body.innerHTML = "";
7
+ });
8
+ describe("createOnClickOutside", () => {
9
+ it("fires handler when clicking outside the target", () => {
10
+ const inside = document.createElement("div");
11
+ const outside = document.createElement("span");
12
+ document.body.append(inside, outside);
13
+ const handler = vi.fn();
14
+ effectScope(() => {
15
+ createOnClickOutside(inside, handler);
16
+ });
17
+ outside.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
18
+ globalExpect(handler).toHaveBeenCalledOnce();
19
+ });
20
+ it("does not fire handler when clicking inside the target", () => {
21
+ const el = document.createElement("div");
22
+ document.body.appendChild(el);
23
+ const handler = vi.fn();
24
+ effectScope(() => {
25
+ createOnClickOutside(el, handler);
26
+ });
27
+ el.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
28
+ globalExpect(handler).not.toHaveBeenCalled();
29
+ });
30
+ it("does not fire after scope disposal", () => {
31
+ const inside = document.createElement("div");
32
+ const outside = document.createElement("span");
33
+ document.body.append(inside, outside);
34
+ const handler = vi.fn();
35
+ effectScope(() => {
36
+ createOnClickOutside(inside, handler);
37
+ })();
38
+ outside.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
39
+ globalExpect(handler).not.toHaveBeenCalled();
40
+ });
41
+ it("works with a reactive target getter", () => {
42
+ const el = document.createElement("div");
43
+ const outside = document.createElement("span");
44
+ document.body.append(el, outside);
45
+ const handler = vi.fn();
46
+ effectScope(() => {
47
+ createOnClickOutside(() => el, handler);
48
+ });
49
+ outside.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true }));
50
+ globalExpect(handler).toHaveBeenCalledOnce();
51
+ });
52
+ });
53
+ //#endregion
54
+ export {};
@@ -0,0 +1,13 @@
1
+ import { t as Computed } from "../../index-BtqiEEfc.mjs";
2
+
3
+ //#region src/signals/lib/orientation.d.ts
4
+ type OrientationResult = {
5
+ angle: Computed<number>;
6
+ type: Computed<OrientationType>;
7
+ } & Disposable;
8
+ /**
9
+ * Returns reactive signals for the screen orientation.
10
+ */
11
+ declare function createOrientation(): OrientationResult;
12
+ //#endregion
13
+ export { createOrientation };
@@ -0,0 +1,21 @@
1
+ import { f as signal } from "../../signals-CLAPw8kk.mjs";
2
+ import { createEventListener } from "./event-listener.mjs";
3
+ //#region src/signals/lib/orientation.ts
4
+ /**
5
+ * Returns reactive signals for the screen orientation.
6
+ */
7
+ function createOrientation() {
8
+ const angle = signal(screen.orientation?.angle ?? 0);
9
+ const type = signal(screen.orientation?.type ?? "portrait-primary");
10
+ const onChange = () => {
11
+ angle(screen.orientation.angle);
12
+ type(screen.orientation.type);
13
+ };
14
+ const cleanup = createEventListener(screen.orientation, "change", onChange);
15
+ return Object.assign({
16
+ angle,
17
+ type
18
+ }, { [Symbol.dispose]: cleanup });
19
+ }
20
+ //#endregion
21
+ export { createOrientation };
@@ -0,0 +1 @@
1
+ export { };