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.
- package/README.md +3 -3
- package/dist/builder/dom.d.mts +1 -1
- package/dist/builder/index.d.mts +1 -1
- package/dist/{index-BGKVkZ6y.d.mts → index-BtqiEEfc.d.mts} +1 -1
- package/dist/{index-Ukqj0EcT.d.mts → index-CKjDUp1B.d.mts} +1 -1
- package/dist/jsx-runtime/index.d.mts +1 -1
- package/dist/magic-string.es-i62WTP6J.mjs +1011 -0
- package/dist/signals/index.d.mts +1 -1
- package/dist/signals/lib/active-element.d.mts +10 -0
- package/dist/signals/lib/active-element.mjs +20 -0
- package/dist/signals/lib/active-element.test.d.mts +1 -0
- package/dist/signals/lib/active-element.test.mjs +39 -0
- package/dist/signals/lib/animation-frames.d.mts +18 -0
- package/dist/signals/lib/animation-frames.mjs +48 -0
- package/dist/signals/lib/animation-frames.test.d.mts +1 -0
- package/dist/signals/lib/animation-frames.test.mjs +52 -0
- package/dist/signals/lib/async-retry.d.mts +21 -0
- package/dist/signals/lib/async-retry.mjs +57 -0
- package/dist/signals/lib/async-retry.test.d.mts +1 -0
- package/dist/signals/lib/async-retry.test.mjs +57 -0
- package/dist/signals/lib/audio.d.mts +26 -0
- package/dist/signals/lib/audio.mjs +60 -0
- package/dist/signals/lib/audio.test.d.mts +1 -0
- package/dist/signals/lib/audio.test.mjs +54 -0
- package/dist/signals/lib/battery.d.mts +17 -0
- package/dist/signals/lib/battery.mjs +45 -0
- package/dist/signals/lib/battery.test.d.mts +1 -0
- package/dist/signals/lib/battery.test.mjs +38 -0
- package/dist/signals/lib/before-unload.d.mts +11 -0
- package/dist/signals/lib/before-unload.mjs +20 -0
- package/dist/signals/lib/before-unload.test.d.mts +1 -0
- package/dist/signals/lib/before-unload.test.mjs +29 -0
- package/dist/signals/lib/clipboard.d.mts +15 -0
- package/dist/signals/lib/clipboard.mjs +25 -0
- package/dist/signals/lib/clipboard.test.d.mts +1 -0
- package/dist/signals/lib/clipboard.test.mjs +53 -0
- package/dist/signals/lib/counter.d.mts +18 -0
- package/dist/signals/lib/counter.mjs +21 -0
- package/dist/signals/lib/counter.test.d.mts +1 -0
- package/dist/signals/lib/counter.test.mjs +74 -0
- package/dist/signals/lib/debounced.d.mts +12 -0
- package/dist/signals/lib/debounced.mjs +20 -0
- package/dist/signals/lib/debounced.test.d.mts +1 -0
- package/dist/signals/lib/debounced.test.mjs +66 -0
- package/dist/signals/lib/document-title.d.mts +10 -0
- package/dist/signals/lib/document-title.mjs +15 -0
- package/dist/signals/lib/document-title.test.d.mts +1 -0
- package/dist/signals/lib/document-title.test.mjs +33 -0
- package/dist/signals/lib/element-rect.d.mts +21 -0
- package/dist/signals/lib/element-rect.mjs +46 -0
- package/dist/signals/lib/element-rect.test.d.mts +1 -0
- package/dist/signals/lib/element-rect.test.mjs +99 -0
- package/dist/signals/lib/element-size.d.mts +16 -0
- package/dist/signals/lib/element-size.mjs +32 -0
- package/dist/signals/lib/element-size.test.d.mts +1 -0
- package/dist/signals/lib/element-size.test.mjs +86 -0
- package/dist/signals/lib/event-listener.d.mts +14 -0
- package/dist/signals/lib/event-listener.mjs +28 -0
- package/dist/signals/lib/event-listener.test.d.mts +1 -0
- package/dist/signals/lib/event-listener.test.mjs +58 -0
- package/dist/signals/lib/favicon.d.mts +10 -0
- package/dist/signals/lib/favicon.mjs +24 -0
- package/dist/signals/lib/favicon.test.d.mts +1 -0
- package/dist/signals/lib/favicon.test.mjs +28 -0
- package/dist/signals/lib/finite-state-machine.d.mts +22 -0
- package/dist/signals/lib/finite-state-machine.mjs +26 -0
- package/dist/signals/lib/finite-state-machine.test.d.mts +1 -0
- package/dist/signals/lib/finite-state-machine.test.mjs +66 -0
- package/dist/signals/lib/fullscreen.d.mts +15 -0
- package/dist/signals/lib/fullscreen.mjs +26 -0
- package/dist/signals/lib/fullscreen.test.d.mts +1 -0
- package/dist/signals/lib/fullscreen.test.mjs +56 -0
- package/dist/signals/lib/geolocation.d.mts +15 -0
- package/dist/signals/lib/geolocation.mjs +30 -0
- package/dist/signals/lib/geolocation.test.d.mts +1 -0
- package/dist/signals/lib/geolocation.test.mjs +37 -0
- package/dist/signals/lib/hash.d.mts +10 -0
- package/dist/signals/lib/hash.mjs +20 -0
- package/dist/signals/lib/hash.test.d.mts +1 -0
- package/dist/signals/lib/hash.test.mjs +47 -0
- package/dist/signals/lib/hover.d.mts +11 -0
- package/dist/signals/lib/hover.mjs +23 -0
- package/dist/signals/lib/hover.test.d.mts +1 -0
- package/dist/signals/lib/hover.test.mjs +63 -0
- package/dist/signals/lib/intersection-observer.d.mts +8 -0
- package/dist/signals/lib/intersection-observer.mjs +16 -0
- package/dist/signals/lib/intersection-observer.test.d.mts +1 -0
- package/dist/signals/lib/intersection-observer.test.mjs +44 -0
- package/dist/signals/lib/interval.d.mts +18 -0
- package/dist/signals/lib/interval.mjs +38 -0
- package/dist/signals/lib/interval.test.d.mts +1 -0
- package/dist/signals/lib/interval.test.mjs +68 -0
- package/dist/signals/lib/is-document-visible.d.mts +11 -0
- package/dist/signals/lib/is-document-visible.mjs +19 -0
- package/dist/signals/lib/is-document-visible.test.d.mts +1 -0
- package/dist/signals/lib/is-document-visible.test.mjs +58 -0
- package/dist/signals/lib/is-focus-within.d.mts +10 -0
- package/dist/signals/lib/is-focus-within.mjs +28 -0
- package/dist/signals/lib/is-focus-within.test.d.mts +1 -0
- package/dist/signals/lib/is-focus-within.test.mjs +50 -0
- package/dist/signals/lib/is-idle.d.mts +10 -0
- package/dist/signals/lib/is-idle.mjs +37 -0
- package/dist/signals/lib/is-idle.test.d.mts +1 -0
- package/dist/signals/lib/is-idle.test.mjs +50 -0
- package/dist/signals/lib/is-in-viewport.d.mts +10 -0
- package/dist/signals/lib/is-in-viewport.mjs +16 -0
- package/dist/signals/lib/is-in-viewport.test.d.mts +1 -0
- package/dist/signals/lib/is-in-viewport.test.mjs +74 -0
- package/dist/signals/lib/key-press.d.mts +13 -0
- package/dist/signals/lib/key-press.mjs +25 -0
- package/dist/signals/lib/key-press.test.d.mts +1 -0
- package/dist/signals/lib/key-press.test.mjs +52 -0
- package/dist/signals/lib/list.d.mts +19 -0
- package/dist/signals/lib/list.mjs +36 -0
- package/dist/signals/lib/list.test.d.mts +1 -0
- package/dist/signals/lib/list.test.mjs +104 -0
- package/dist/signals/lib/lock-body-scroll.d.mts +8 -0
- package/dist/signals/lib/lock-body-scroll.mjs +17 -0
- package/dist/signals/lib/lock-body-scroll.test.d.mts +1 -0
- package/dist/signals/lib/lock-body-scroll.test.mjs +37 -0
- package/dist/signals/lib/long-press.d.mts +10 -0
- package/dist/signals/lib/long-press.mjs +29 -0
- package/dist/signals/lib/long-press.test.d.mts +1 -0
- package/dist/signals/lib/long-press.test.mjs +52 -0
- package/dist/signals/lib/map.d.mts +18 -0
- package/dist/signals/lib/map.mjs +33 -0
- package/dist/signals/lib/map.test.d.mts +1 -0
- package/dist/signals/lib/map.test.mjs +60 -0
- package/dist/signals/lib/media-devices.d.mts +10 -0
- package/dist/signals/lib/media-devices.mjs +18 -0
- package/dist/signals/lib/media-devices.test.d.mts +1 -0
- package/dist/signals/lib/media-devices.test.mjs +44 -0
- package/dist/signals/lib/media.d.mts +1 -1
- package/dist/signals/lib/motion.d.mts +15 -0
- package/dist/signals/lib/motion.mjs +27 -0
- package/dist/signals/lib/motion.test.d.mts +1 -0
- package/dist/signals/lib/motion.test.mjs +51 -0
- package/dist/signals/lib/mouse-position.d.mts +14 -0
- package/dist/signals/lib/mouse-position.mjs +22 -0
- package/dist/signals/lib/mouse-position.test.d.mts +1 -0
- package/dist/signals/lib/mouse-position.test.mjs +44 -0
- package/dist/signals/lib/mouse-wheel.d.mts +10 -0
- package/dist/signals/lib/mouse-wheel.mjs +17 -0
- package/dist/signals/lib/mouse-wheel.test.d.mts +1 -0
- package/dist/signals/lib/mouse-wheel.test.mjs +38 -0
- package/dist/signals/lib/mutation-observer.d.mts +8 -0
- package/dist/signals/lib/mutation-observer.mjs +16 -0
- package/dist/signals/lib/mutation-observer.test.d.mts +1 -0
- package/dist/signals/lib/mutation-observer.test.mjs +46 -0
- package/dist/signals/lib/network-state.d.mts +17 -0
- package/dist/signals/lib/network-state.mjs +34 -0
- package/dist/signals/lib/network-state.test.d.mts +1 -0
- package/dist/signals/lib/network-state.test.mjs +61 -0
- package/dist/signals/lib/on-click-outside.d.mts +11 -0
- package/dist/signals/lib/on-click-outside.mjs +20 -0
- package/dist/signals/lib/on-click-outside.test.d.mts +1 -0
- package/dist/signals/lib/on-click-outside.test.mjs +54 -0
- package/dist/signals/lib/orientation.d.mts +13 -0
- package/dist/signals/lib/orientation.mjs +21 -0
- package/dist/signals/lib/orientation.test.d.mts +1 -0
- package/dist/signals/lib/orientation.test.mjs +43 -0
- package/dist/signals/lib/page-leave.d.mts +8 -0
- package/dist/signals/lib/page-leave.mjs +12 -0
- package/dist/signals/lib/page-leave.test.d.mts +1 -0
- package/dist/signals/lib/page-leave.test.mjs +29 -0
- package/dist/signals/lib/permission.d.mts +14 -0
- package/dist/signals/lib/permission.mjs +26 -0
- package/dist/signals/lib/permission.test.d.mts +1 -0
- package/dist/signals/lib/permission.test.mjs +50 -0
- package/dist/signals/lib/persisted-state.d.mts +11 -0
- package/dist/signals/lib/persisted-state.mjs +25 -0
- package/dist/signals/lib/persisted-state.test.d.mts +1 -0
- package/dist/signals/lib/persisted-state.test.mjs +70 -0
- package/dist/signals/lib/pressed-keys.d.mts +10 -0
- package/dist/signals/lib/pressed-keys.mjs +32 -0
- package/dist/signals/lib/pressed-keys.test.d.mts +1 -0
- package/dist/signals/lib/pressed-keys.test.mjs +54 -0
- package/dist/signals/lib/previous-distinct.d.mts +10 -0
- package/dist/signals/lib/previous-distinct.mjs +22 -0
- package/dist/signals/lib/previous-distinct.test.d.mts +1 -0
- package/dist/signals/lib/previous-distinct.test.mjs +50 -0
- package/dist/signals/lib/previous.d.mts +10 -0
- package/dist/signals/lib/previous.mjs +18 -0
- package/dist/signals/lib/previous.test.d.mts +1 -0
- package/dist/signals/lib/previous.test.mjs +47 -0
- package/dist/signals/lib/queue.d.mts +17 -0
- package/dist/signals/lib/queue.mjs +28 -0
- package/dist/signals/lib/queue.test.d.mts +1 -0
- package/dist/signals/lib/queue.test.mjs +61 -0
- package/dist/signals/lib/raf.d.mts +17 -0
- package/dist/signals/lib/raf.mjs +38 -0
- package/dist/signals/lib/raf.test.d.mts +1 -0
- package/dist/signals/lib/raf.test.mjs +58 -0
- package/dist/signals/lib/react.d.mts +1 -1
- package/dist/signals/lib/resize-observer.d.mts +8 -0
- package/dist/signals/lib/resize-observer.mjs +16 -0
- package/dist/signals/lib/resize-observer.test.d.mts +1 -0
- package/dist/signals/lib/resize-observer.test.mjs +44 -0
- package/dist/signals/lib/resource.d.mts +23 -0
- package/dist/signals/lib/resource.mjs +43 -0
- package/dist/signals/lib/resource.test.d.mts +1 -0
- package/dist/signals/lib/resource.test.mjs +56 -0
- package/dist/signals/lib/scroll-state.d.mts +19 -0
- package/dist/signals/lib/scroll-state.mjs +46 -0
- package/dist/signals/lib/scroll-state.test.d.mts +1 -0
- package/dist/signals/lib/scroll-state.test.mjs +94 -0
- package/dist/signals/lib/scrolling.d.mts +12 -0
- package/dist/signals/lib/scrolling.mjs +26 -0
- package/dist/signals/lib/scrolling.test.d.mts +1 -0
- package/dist/signals/lib/scrolling.test.mjs +57 -0
- package/dist/signals/lib/search-params.d.mts +16 -0
- package/dist/signals/lib/search-params.mjs +37 -0
- package/dist/signals/lib/search-params.test.d.mts +1 -0
- package/dist/signals/lib/search-params.test.mjs +56 -0
- package/dist/signals/lib/set.d.mts +18 -0
- package/dist/signals/lib/set.mjs +38 -0
- package/dist/signals/lib/set.test.d.mts +1 -0
- package/dist/signals/lib/set.test.mjs +70 -0
- package/dist/signals/lib/start-typing.d.mts +9 -0
- package/dist/signals/lib/start-typing.mjs +39 -0
- package/dist/signals/lib/start-typing.test.d.mts +1 -0
- package/dist/signals/lib/start-typing.test.mjs +64 -0
- package/dist/signals/lib/state-history.d.mts +21 -0
- package/dist/signals/lib/state-history.mjs +61 -0
- package/dist/signals/lib/state-history.test.d.mts +1 -0
- package/dist/signals/lib/state-history.test.mjs +106 -0
- package/dist/signals/lib/state-validator.d.mts +16 -0
- package/dist/signals/lib/state-validator.mjs +21 -0
- package/dist/signals/lib/state-validator.test.d.mts +1 -0
- package/dist/signals/lib/state-validator.test.mjs +41 -0
- package/dist/signals/lib/throttled.d.mts +13 -0
- package/dist/signals/lib/throttled.mjs +45 -0
- package/dist/signals/lib/throttled.test.d.mts +1 -0
- package/dist/signals/lib/throttled.test.mjs +56 -0
- package/dist/signals/lib/timeout.d.mts +16 -0
- package/dist/signals/lib/timeout.mjs +39 -0
- package/dist/signals/lib/timeout.test.d.mts +1 -0
- package/dist/signals/lib/timeout.test.mjs +64 -0
- package/dist/signals/lib/toggle.d.mts +12 -0
- package/dist/signals/lib/toggle.mjs +12 -0
- package/dist/signals/lib/toggle.test.d.mts +1 -0
- package/dist/signals/lib/toggle.test.mjs +43 -0
- package/dist/signals/lib/video.d.mts +25 -0
- package/dist/signals/lib/video.mjs +59 -0
- package/dist/signals/lib/video.test.d.mts +1 -0
- package/dist/signals/lib/video.test.mjs +51 -0
- package/dist/signals/lib/watch.d.mts +16 -0
- package/dist/signals/lib/watch.mjs +31 -0
- package/dist/signals/lib/watch.test.d.mts +1 -0
- package/dist/signals/lib/watch.test.mjs +51 -0
- package/dist/signals/lib/window-size.d.mts +14 -0
- package/dist/signals/lib/window-size.mjs +22 -0
- package/dist/signals/lib/window-size.test.d.mts +1 -0
- package/dist/signals/lib/window-size.test.mjs +50 -0
- package/dist/slot.d.mts +1 -1
- package/dist/test.BmQO5GaM-CR2qjV1t.mjs +13314 -0
- package/package.json +1 -1
- /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 {};
|
|
@@ -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 { };
|