elements-kit 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/dist/builder/dom.d.mts +1 -1
- package/dist/builder/index.d.mts +87 -1
- package/dist/builder/index.mjs +1 -1
- package/dist/{element-Ddk9YaoE.mjs → element-MXzFk4G2.mjs} +1 -1
- package/dist/{index-BtqiEEfc.d.mts → index-Cvdhuy6Y.d.mts} +8 -4
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +3 -3
- package/dist/{signals/lib → integrations}/react.d.mts +2 -2
- package/dist/{signals/lib → integrations}/react.mjs +2 -2
- package/dist/jsx-runtime/index.d.mts +2 -2
- package/dist/jsx-runtime/index.mjs +3 -3
- package/dist/lib-BYJ5jPTG.d.mts +4 -0
- package/dist/polyfill-DR5XVnh_.d.mts +9 -0
- package/dist/signals/index.d.mts +2 -2
- package/dist/signals/index.mjs +2 -2
- package/dist/{signals-CLAPw8kk.mjs → signals-DcgXhkU2.mjs} +41 -9
- package/dist/slot.d.mts +1 -2
- package/dist/{test.BmQO5GaM-CR2qjV1t.mjs → test.BmQO5GaM-ANkhHvbr.mjs} +1 -1
- package/dist/utilities/active-element.d.mts +6 -0
- package/dist/utilities/active-element.mjs +13 -0
- package/dist/utilities/active-element.test.mjs +24 -0
- package/dist/{signals/lib → utilities}/debounced.d.mts +3 -3
- package/dist/{signals/lib → utilities}/debounced.mjs +7 -6
- package/dist/{signals/lib → utilities}/debounced.test.mjs +3 -3
- package/dist/{signals/lib → utilities}/element-rect.d.mts +3 -3
- package/dist/{signals/lib → utilities}/element-rect.mjs +7 -7
- package/dist/{signals/lib → utilities}/element-rect.test.mjs +3 -3
- package/dist/utilities/element-scroll.d.mts +16 -0
- package/dist/utilities/element-scroll.mjs +52 -0
- package/dist/utilities/element-scroll.test.mjs +25 -0
- package/dist/utilities/event-driven.d.mts +47 -0
- package/dist/utilities/event-driven.mjs +38 -0
- package/dist/utilities/event-listener.d.mts +16 -0
- package/dist/{signals/lib → utilities}/event-listener.mjs +4 -4
- package/dist/{signals/lib → utilities}/event-listener.test.mjs +8 -8
- package/dist/utilities/focus-within.d.mts +10 -0
- package/dist/utilities/focus-within.mjs +20 -0
- package/dist/{signals/lib/is-focus-within.test.mjs → utilities/focus-within.test.mjs} +10 -11
- package/dist/utilities/hover.d.mts +11 -0
- package/dist/utilities/hover.mjs +20 -0
- package/dist/{signals/lib → utilities}/hover.test.mjs +5 -16
- package/dist/utilities/intersection-observer.d.mts +8 -0
- package/dist/{signals/lib → utilities}/intersection-observer.mjs +3 -4
- package/dist/{signals/lib → utilities}/intersection-observer.test.mjs +3 -3
- package/dist/{signals/lib → utilities}/interval.d.mts +2 -2
- package/dist/{signals/lib → utilities}/interval.mjs +6 -5
- package/dist/{signals/lib → utilities}/interval.test.mjs +3 -3
- package/dist/utilities/location.d.mts +24 -0
- package/dist/utilities/location.mjs +54 -0
- package/dist/utilities/location.test.mjs +60 -0
- package/dist/utilities/long-press.d.mts +10 -0
- package/dist/utilities/long-press.mjs +27 -0
- package/dist/{signals/lib → utilities}/long-press.test.mjs +3 -3
- package/dist/{signals/lib → utilities}/media-devices.d.mts +3 -3
- package/dist/{signals/lib → utilities}/media-devices.mjs +5 -5
- package/dist/{signals/lib → utilities}/media-devices.test.mjs +6 -8
- package/dist/utilities/media-player.d.mts +22 -0
- package/dist/utilities/media-player.mjs +36 -0
- package/dist/utilities/media-player.test.mjs +100 -0
- package/dist/{signals/lib/media.d.mts → utilities/media-query.d.mts} +4 -4
- package/dist/utilities/media-query.mjs +19 -0
- package/dist/utilities/mutation-observer.d.mts +8 -0
- package/dist/{signals/lib → utilities}/mutation-observer.mjs +3 -3
- package/dist/{signals/lib → utilities}/mutation-observer.test.mjs +3 -3
- package/dist/{signals/lib → utilities}/on-click-outside.d.mts +3 -3
- package/dist/utilities/on-click-outside.mjs +17 -0
- package/dist/{signals/lib → utilities}/on-click-outside.test.mjs +7 -18
- package/dist/utilities/orientation.d.mts +10 -0
- package/dist/utilities/orientation.mjs +21 -0
- package/dist/utilities/previous.d.mts +12 -0
- package/dist/utilities/previous.mjs +24 -0
- package/dist/utilities/previous.test.mjs +88 -0
- package/dist/utilities/resize-observer.d.mts +8 -0
- package/dist/{signals/lib → utilities}/resize-observer.mjs +4 -5
- package/dist/utilities/routing.d.mts +59 -0
- package/dist/utilities/routing.mjs +89 -0
- package/dist/utilities/routing.test.mjs +128 -0
- package/dist/utilities/search-params.d.mts +13 -0
- package/dist/utilities/search-params.mjs +23 -0
- package/dist/utilities/search-params.test.mjs +35 -0
- package/dist/utilities/storage.d.mts +22 -0
- package/dist/utilities/storage.mjs +65 -0
- package/dist/utilities/storage.test.mjs +137 -0
- package/dist/{signals/lib → utilities}/throttled.d.mts +2 -2
- package/dist/utilities/throttled.mjs +36 -0
- package/dist/{signals/lib → utilities}/throttled.test.mjs +3 -3
- package/dist/{signals/lib → utilities}/timeout.d.mts +6 -5
- package/dist/utilities/timeout.mjs +42 -0
- package/dist/{signals/lib → utilities}/timeout.test.mjs +7 -7
- package/dist/utilities/window-size.d.mts +10 -0
- package/dist/utilities/window-size.mjs +22 -0
- package/dist/utilities/window-size.test.mjs +42 -0
- package/package.json +11 -6
- package/dist/index-CKjDUp1B.d.mts +0 -89
- package/dist/polyfill-AFIi9kAN.d.mts +0 -14
- package/dist/signals/lib/active-element.d.mts +0 -10
- package/dist/signals/lib/active-element.mjs +0 -20
- package/dist/signals/lib/active-element.test.mjs +0 -39
- package/dist/signals/lib/animation-frames.d.mts +0 -18
- package/dist/signals/lib/animation-frames.mjs +0 -48
- package/dist/signals/lib/animation-frames.test.mjs +0 -52
- package/dist/signals/lib/async-retry.d.mts +0 -21
- package/dist/signals/lib/async-retry.mjs +0 -57
- package/dist/signals/lib/async-retry.test.mjs +0 -57
- package/dist/signals/lib/audio.d.mts +0 -26
- package/dist/signals/lib/audio.mjs +0 -60
- package/dist/signals/lib/audio.test.mjs +0 -54
- package/dist/signals/lib/battery.d.mts +0 -17
- package/dist/signals/lib/battery.mjs +0 -45
- package/dist/signals/lib/battery.test.mjs +0 -38
- package/dist/signals/lib/before-unload.d.mts +0 -11
- package/dist/signals/lib/before-unload.mjs +0 -20
- package/dist/signals/lib/before-unload.test.mjs +0 -29
- package/dist/signals/lib/clipboard.d.mts +0 -15
- package/dist/signals/lib/clipboard.mjs +0 -25
- package/dist/signals/lib/clipboard.test.mjs +0 -53
- package/dist/signals/lib/counter.d.mts +0 -18
- package/dist/signals/lib/counter.mjs +0 -21
- package/dist/signals/lib/counter.test.d.mts +0 -1
- package/dist/signals/lib/counter.test.mjs +0 -74
- package/dist/signals/lib/document-title.d.mts +0 -10
- package/dist/signals/lib/document-title.mjs +0 -15
- package/dist/signals/lib/document-title.test.d.mts +0 -1
- package/dist/signals/lib/document-title.test.mjs +0 -33
- package/dist/signals/lib/element-size.d.mts +0 -16
- package/dist/signals/lib/element-size.mjs +0 -32
- package/dist/signals/lib/element-size.test.d.mts +0 -1
- package/dist/signals/lib/element-size.test.mjs +0 -86
- package/dist/signals/lib/event-listener.d.mts +0 -14
- package/dist/signals/lib/favicon.d.mts +0 -10
- package/dist/signals/lib/favicon.mjs +0 -24
- package/dist/signals/lib/favicon.test.d.mts +0 -1
- package/dist/signals/lib/favicon.test.mjs +0 -28
- package/dist/signals/lib/finite-state-machine.d.mts +0 -22
- package/dist/signals/lib/finite-state-machine.mjs +0 -26
- package/dist/signals/lib/finite-state-machine.test.d.mts +0 -1
- package/dist/signals/lib/finite-state-machine.test.mjs +0 -66
- package/dist/signals/lib/fullscreen.d.mts +0 -15
- package/dist/signals/lib/fullscreen.mjs +0 -26
- package/dist/signals/lib/fullscreen.test.d.mts +0 -1
- package/dist/signals/lib/fullscreen.test.mjs +0 -56
- package/dist/signals/lib/geolocation.d.mts +0 -15
- package/dist/signals/lib/geolocation.mjs +0 -30
- package/dist/signals/lib/geolocation.test.d.mts +0 -1
- package/dist/signals/lib/geolocation.test.mjs +0 -37
- package/dist/signals/lib/hash.d.mts +0 -10
- package/dist/signals/lib/hash.mjs +0 -20
- package/dist/signals/lib/hash.test.d.mts +0 -1
- package/dist/signals/lib/hash.test.mjs +0 -47
- package/dist/signals/lib/hover.d.mts +0 -11
- package/dist/signals/lib/hover.mjs +0 -23
- package/dist/signals/lib/intersection-observer.d.mts +0 -8
- package/dist/signals/lib/is-document-visible.d.mts +0 -11
- package/dist/signals/lib/is-document-visible.mjs +0 -19
- package/dist/signals/lib/is-document-visible.test.d.mts +0 -1
- package/dist/signals/lib/is-document-visible.test.mjs +0 -58
- package/dist/signals/lib/is-focus-within.d.mts +0 -10
- package/dist/signals/lib/is-focus-within.mjs +0 -28
- package/dist/signals/lib/is-focus-within.test.d.mts +0 -1
- package/dist/signals/lib/is-idle.d.mts +0 -10
- package/dist/signals/lib/is-idle.mjs +0 -37
- package/dist/signals/lib/is-idle.test.d.mts +0 -1
- package/dist/signals/lib/is-idle.test.mjs +0 -50
- package/dist/signals/lib/is-in-viewport.d.mts +0 -10
- package/dist/signals/lib/is-in-viewport.mjs +0 -16
- package/dist/signals/lib/is-in-viewport.test.d.mts +0 -1
- package/dist/signals/lib/is-in-viewport.test.mjs +0 -74
- package/dist/signals/lib/key-press.d.mts +0 -13
- package/dist/signals/lib/key-press.mjs +0 -25
- package/dist/signals/lib/key-press.test.d.mts +0 -1
- package/dist/signals/lib/key-press.test.mjs +0 -52
- package/dist/signals/lib/list.d.mts +0 -19
- package/dist/signals/lib/list.mjs +0 -36
- package/dist/signals/lib/list.test.d.mts +0 -1
- package/dist/signals/lib/list.test.mjs +0 -104
- package/dist/signals/lib/lock-body-scroll.d.mts +0 -8
- package/dist/signals/lib/lock-body-scroll.mjs +0 -17
- package/dist/signals/lib/lock-body-scroll.test.d.mts +0 -1
- package/dist/signals/lib/lock-body-scroll.test.mjs +0 -37
- package/dist/signals/lib/long-press.d.mts +0 -10
- package/dist/signals/lib/long-press.mjs +0 -29
- package/dist/signals/lib/map.d.mts +0 -18
- package/dist/signals/lib/map.mjs +0 -33
- package/dist/signals/lib/map.test.d.mts +0 -1
- package/dist/signals/lib/map.test.mjs +0 -60
- package/dist/signals/lib/media.mjs +0 -26
- package/dist/signals/lib/motion.d.mts +0 -15
- package/dist/signals/lib/motion.mjs +0 -27
- package/dist/signals/lib/motion.test.d.mts +0 -1
- package/dist/signals/lib/motion.test.mjs +0 -51
- package/dist/signals/lib/mouse-position.d.mts +0 -14
- package/dist/signals/lib/mouse-position.mjs +0 -22
- package/dist/signals/lib/mouse-position.test.d.mts +0 -1
- package/dist/signals/lib/mouse-position.test.mjs +0 -44
- package/dist/signals/lib/mouse-wheel.d.mts +0 -10
- package/dist/signals/lib/mouse-wheel.mjs +0 -17
- package/dist/signals/lib/mouse-wheel.test.d.mts +0 -1
- package/dist/signals/lib/mouse-wheel.test.mjs +0 -38
- package/dist/signals/lib/mutation-observer.d.mts +0 -8
- package/dist/signals/lib/network-state.d.mts +0 -17
- package/dist/signals/lib/network-state.mjs +0 -34
- package/dist/signals/lib/network-state.test.d.mts +0 -1
- package/dist/signals/lib/network-state.test.mjs +0 -61
- package/dist/signals/lib/on-click-outside.mjs +0 -20
- package/dist/signals/lib/orientation.d.mts +0 -13
- package/dist/signals/lib/orientation.mjs +0 -21
- package/dist/signals/lib/orientation.test.d.mts +0 -1
- package/dist/signals/lib/orientation.test.mjs +0 -43
- package/dist/signals/lib/page-leave.d.mts +0 -8
- package/dist/signals/lib/page-leave.mjs +0 -12
- package/dist/signals/lib/page-leave.test.d.mts +0 -1
- package/dist/signals/lib/page-leave.test.mjs +0 -29
- package/dist/signals/lib/permission.d.mts +0 -14
- package/dist/signals/lib/permission.mjs +0 -26
- package/dist/signals/lib/permission.test.d.mts +0 -1
- package/dist/signals/lib/permission.test.mjs +0 -50
- package/dist/signals/lib/persisted-state.d.mts +0 -11
- package/dist/signals/lib/persisted-state.mjs +0 -25
- package/dist/signals/lib/persisted-state.test.d.mts +0 -1
- package/dist/signals/lib/persisted-state.test.mjs +0 -70
- package/dist/signals/lib/pressed-keys.d.mts +0 -10
- package/dist/signals/lib/pressed-keys.mjs +0 -32
- package/dist/signals/lib/pressed-keys.test.d.mts +0 -1
- package/dist/signals/lib/pressed-keys.test.mjs +0 -54
- package/dist/signals/lib/previous-distinct.d.mts +0 -10
- package/dist/signals/lib/previous-distinct.mjs +0 -22
- package/dist/signals/lib/previous-distinct.test.d.mts +0 -1
- package/dist/signals/lib/previous-distinct.test.mjs +0 -50
- package/dist/signals/lib/previous.d.mts +0 -10
- package/dist/signals/lib/previous.mjs +0 -18
- package/dist/signals/lib/previous.test.mjs +0 -47
- package/dist/signals/lib/queue.d.mts +0 -17
- package/dist/signals/lib/queue.mjs +0 -28
- package/dist/signals/lib/queue.test.d.mts +0 -1
- package/dist/signals/lib/queue.test.mjs +0 -61
- package/dist/signals/lib/raf.d.mts +0 -17
- package/dist/signals/lib/raf.mjs +0 -38
- package/dist/signals/lib/raf.test.d.mts +0 -1
- package/dist/signals/lib/raf.test.mjs +0 -58
- package/dist/signals/lib/resize-observer.d.mts +0 -8
- package/dist/signals/lib/resize-observer.test.d.mts +0 -1
- package/dist/signals/lib/resize-observer.test.mjs +0 -44
- package/dist/signals/lib/resource.d.mts +0 -23
- package/dist/signals/lib/resource.mjs +0 -43
- package/dist/signals/lib/resource.test.d.mts +0 -1
- package/dist/signals/lib/resource.test.mjs +0 -56
- package/dist/signals/lib/scroll-state.d.mts +0 -19
- package/dist/signals/lib/scroll-state.mjs +0 -46
- package/dist/signals/lib/scroll-state.test.d.mts +0 -1
- package/dist/signals/lib/scroll-state.test.mjs +0 -94
- package/dist/signals/lib/scrolling.d.mts +0 -12
- package/dist/signals/lib/scrolling.mjs +0 -26
- package/dist/signals/lib/scrolling.test.d.mts +0 -1
- package/dist/signals/lib/scrolling.test.mjs +0 -57
- package/dist/signals/lib/search-params.d.mts +0 -16
- package/dist/signals/lib/search-params.mjs +0 -37
- package/dist/signals/lib/search-params.test.mjs +0 -56
- package/dist/signals/lib/set.d.mts +0 -18
- package/dist/signals/lib/set.mjs +0 -38
- package/dist/signals/lib/set.test.d.mts +0 -1
- package/dist/signals/lib/set.test.mjs +0 -70
- package/dist/signals/lib/start-typing.d.mts +0 -9
- package/dist/signals/lib/start-typing.mjs +0 -39
- package/dist/signals/lib/start-typing.test.d.mts +0 -1
- package/dist/signals/lib/start-typing.test.mjs +0 -64
- package/dist/signals/lib/state-history.d.mts +0 -21
- package/dist/signals/lib/state-history.mjs +0 -61
- package/dist/signals/lib/state-history.test.d.mts +0 -1
- package/dist/signals/lib/state-history.test.mjs +0 -106
- package/dist/signals/lib/state-validator.d.mts +0 -16
- package/dist/signals/lib/state-validator.mjs +0 -21
- package/dist/signals/lib/state-validator.test.d.mts +0 -1
- package/dist/signals/lib/state-validator.test.mjs +0 -41
- package/dist/signals/lib/throttled.mjs +0 -45
- package/dist/signals/lib/timeout.mjs +0 -39
- package/dist/signals/lib/toggle.d.mts +0 -12
- package/dist/signals/lib/toggle.mjs +0 -12
- package/dist/signals/lib/toggle.test.d.mts +0 -1
- package/dist/signals/lib/toggle.test.mjs +0 -43
- package/dist/signals/lib/video.d.mts +0 -25
- package/dist/signals/lib/video.mjs +0 -59
- package/dist/signals/lib/video.test.d.mts +0 -1
- package/dist/signals/lib/video.test.mjs +0 -51
- package/dist/signals/lib/watch.d.mts +0 -16
- package/dist/signals/lib/watch.mjs +0 -31
- package/dist/signals/lib/watch.test.d.mts +0 -1
- package/dist/signals/lib/watch.test.mjs +0 -51
- package/dist/signals/lib/window-size.d.mts +0 -14
- package/dist/signals/lib/window-size.mjs +0 -22
- package/dist/signals/lib/window-size.test.mjs +0 -50
- /package/dist/{signals/lib → utilities}/active-element.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/debounced.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/element-rect.test.d.mts +0 -0
- /package/dist/{signals/lib/animation-frames.test.d.mts → utilities/element-scroll.test.d.mts} +0 -0
- /package/dist/{signals/lib → utilities}/event-listener.test.d.mts +0 -0
- /package/dist/{signals/lib/async-retry.test.d.mts → utilities/focus-within.test.d.mts} +0 -0
- /package/dist/{signals/lib → utilities}/hover.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/intersection-observer.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/interval.test.d.mts +0 -0
- /package/dist/{signals/lib/audio.test.d.mts → utilities/location.test.d.mts} +0 -0
- /package/dist/{signals/lib → utilities}/long-press.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/media-devices.test.d.mts +0 -0
- /package/dist/{signals/lib/battery.test.d.mts → utilities/media-player.test.d.mts} +0 -0
- /package/dist/{signals/lib → utilities}/mutation-observer.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/on-click-outside.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/previous.test.d.mts +0 -0
- /package/dist/{signals/lib/before-unload.test.d.mts → utilities/routing.test.d.mts} +0 -0
- /package/dist/{signals/lib → utilities}/search-params.test.d.mts +0 -0
- /package/dist/{signals/lib/clipboard.test.d.mts → utilities/storage.test.d.mts} +0 -0
- /package/dist/{signals/lib → utilities}/throttled.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/timeout.test.d.mts +0 -0
- /package/dist/{signals/lib → utilities}/window-size.test.d.mts +0 -0
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createElementSize } from "./element-size.mjs";
|
|
4
|
-
//#region src/signals/lib/element-size.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
vi.restoreAllMocks();
|
|
8
|
-
vi.unstubAllGlobals();
|
|
9
|
-
});
|
|
10
|
-
describe("createElementSize", () => {
|
|
11
|
-
it("returns initial dimensions from getBoundingClientRect", () => {
|
|
12
|
-
const el = document.createElement("div");
|
|
13
|
-
document.body.appendChild(el);
|
|
14
|
-
vi.spyOn(el, "getBoundingClientRect").mockReturnValue({
|
|
15
|
-
width: 200,
|
|
16
|
-
height: 100,
|
|
17
|
-
x: 0,
|
|
18
|
-
y: 0,
|
|
19
|
-
top: 0,
|
|
20
|
-
right: 200,
|
|
21
|
-
bottom: 100,
|
|
22
|
-
left: 0,
|
|
23
|
-
toJSON: () => ({})
|
|
24
|
-
});
|
|
25
|
-
let size;
|
|
26
|
-
effectScope(() => {
|
|
27
|
-
size = createElementSize(el);
|
|
28
|
-
});
|
|
29
|
-
globalExpect(size.width()).toBe(200);
|
|
30
|
-
globalExpect(size.height()).toBe(100);
|
|
31
|
-
});
|
|
32
|
-
it("updates when ResizeObserver fires", () => {
|
|
33
|
-
const el = document.createElement("div");
|
|
34
|
-
document.body.appendChild(el);
|
|
35
|
-
vi.spyOn(el, "getBoundingClientRect").mockReturnValue({
|
|
36
|
-
width: 0,
|
|
37
|
-
height: 0,
|
|
38
|
-
x: 0,
|
|
39
|
-
y: 0,
|
|
40
|
-
top: 0,
|
|
41
|
-
right: 0,
|
|
42
|
-
bottom: 0,
|
|
43
|
-
left: 0,
|
|
44
|
-
toJSON: () => ({})
|
|
45
|
-
});
|
|
46
|
-
let observerCallback;
|
|
47
|
-
vi.stubGlobal("ResizeObserver", function MockRO(cb) {
|
|
48
|
-
observerCallback = cb;
|
|
49
|
-
return {
|
|
50
|
-
observe: vi.fn(),
|
|
51
|
-
disconnect: vi.fn(),
|
|
52
|
-
unobserve: vi.fn()
|
|
53
|
-
};
|
|
54
|
-
});
|
|
55
|
-
let size;
|
|
56
|
-
effectScope(() => {
|
|
57
|
-
size = createElementSize(el);
|
|
58
|
-
});
|
|
59
|
-
observerCallback([{ contentRect: {
|
|
60
|
-
width: 300,
|
|
61
|
-
height: 150
|
|
62
|
-
} }], {});
|
|
63
|
-
globalExpect(size.width()).toBe(300);
|
|
64
|
-
globalExpect(size.height()).toBe(150);
|
|
65
|
-
});
|
|
66
|
-
it("disconnects the observer on Symbol.dispose", () => {
|
|
67
|
-
const disconnect = vi.fn();
|
|
68
|
-
vi.stubGlobal("ResizeObserver", function MockRO() {
|
|
69
|
-
return {
|
|
70
|
-
observe: vi.fn(),
|
|
71
|
-
disconnect,
|
|
72
|
-
unobserve: vi.fn()
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
const el = document.createElement("div");
|
|
76
|
-
document.body.appendChild(el);
|
|
77
|
-
let size;
|
|
78
|
-
effectScope(() => {
|
|
79
|
-
size = createElementSize(el);
|
|
80
|
-
});
|
|
81
|
-
size[Symbol.dispose]();
|
|
82
|
-
globalExpect(disconnect).toHaveBeenCalledOnce();
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
//#endregion
|
|
86
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/signals/lib/event-listener.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Attaches a type-safe event listener to a target, with automatic cleanup.
|
|
4
|
-
*
|
|
5
|
-
* When called inside an `effect` or `effectScope` the listener is removed
|
|
6
|
-
* when the scope is disposed. When the target is a reactive getter the
|
|
7
|
-
* listener is re-registered whenever the target changes.
|
|
8
|
-
*/
|
|
9
|
-
declare function createEventListener<K extends keyof HTMLElementEventMap>(target: HTMLElement | (() => HTMLElement | null), type: K, handler: (e: HTMLElementEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
|
|
10
|
-
declare function createEventListener<K extends keyof DocumentEventMap>(target: Document | (() => Document | null), type: K, handler: (e: DocumentEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
|
|
11
|
-
declare function createEventListener<K extends keyof WindowEventMap>(target: Window | (() => Window | null), type: K, handler: (e: WindowEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
|
|
12
|
-
declare function createEventListener(target: EventTarget | (() => EventTarget | null), type: string, handler: EventListener, options?: AddEventListenerOptions): () => void;
|
|
13
|
-
//#endregion
|
|
14
|
-
export { createEventListener };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { n as Signal } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/favicon.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a writable `Signal<string>` whose value is reflected as the page's
|
|
6
|
-
* favicon `href`. Writing the signal swaps the `<link rel="icon">` element.
|
|
7
|
-
*/
|
|
8
|
-
declare function createFavicon(initial?: string): Signal<string>;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { createFavicon };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/favicon.ts
|
|
3
|
-
/**
|
|
4
|
-
* Returns a writable `Signal<string>` whose value is reflected as the page's
|
|
5
|
-
* favicon `href`. Writing the signal swaps the `<link rel="icon">` element.
|
|
6
|
-
*/
|
|
7
|
-
function createFavicon(initial) {
|
|
8
|
-
const getLink = () => {
|
|
9
|
-
let link = document.querySelector("link[rel~='icon']");
|
|
10
|
-
if (!link) {
|
|
11
|
-
link = document.createElement("link");
|
|
12
|
-
link.rel = "icon";
|
|
13
|
-
document.head.appendChild(link);
|
|
14
|
-
}
|
|
15
|
-
return link;
|
|
16
|
-
};
|
|
17
|
-
const href = signal(initial ?? (typeof document !== "undefined" ? getLink().href || "" : ""));
|
|
18
|
-
effect(() => {
|
|
19
|
-
if (typeof document !== "undefined") getLink().href = href();
|
|
20
|
-
});
|
|
21
|
-
return href;
|
|
22
|
-
}
|
|
23
|
-
//#endregion
|
|
24
|
-
export { createFavicon };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createFavicon } from "./favicon.mjs";
|
|
4
|
-
//#region src/signals/lib/favicon.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.head.innerHTML = "";
|
|
7
|
-
document.body.innerHTML = "";
|
|
8
|
-
});
|
|
9
|
-
describe("createFavicon", () => {
|
|
10
|
-
it("creates a link element if none exists", () => {
|
|
11
|
-
effectScope(() => {
|
|
12
|
-
createFavicon("/icon.png");
|
|
13
|
-
});
|
|
14
|
-
const link = document.querySelector("link[rel~='icon']");
|
|
15
|
-
globalExpect(link).not.toBeNull();
|
|
16
|
-
globalExpect(link?.href).toContain("/icon.png");
|
|
17
|
-
});
|
|
18
|
-
it("updates favicon href when signal changes", () => {
|
|
19
|
-
let fav;
|
|
20
|
-
effectScope(() => {
|
|
21
|
-
fav = createFavicon("/old.png");
|
|
22
|
-
});
|
|
23
|
-
fav("/new.png");
|
|
24
|
-
globalExpect(document.querySelector("link[rel~='icon']")?.href).toContain("/new.png");
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
//#endregion
|
|
28
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/finite-state-machine.d.ts
|
|
4
|
-
type Transitions<S extends string, E extends string> = Partial<Record<S, Partial<Record<E, S>>>>;
|
|
5
|
-
type StateHooks<S extends string> = Partial<Record<S, {
|
|
6
|
-
enter?: () => void;
|
|
7
|
-
exit?: () => void;
|
|
8
|
-
}>>;
|
|
9
|
-
type FSMResult<S extends string, E extends string> = {
|
|
10
|
-
state: Computed<S>;
|
|
11
|
-
send(event: E): void;
|
|
12
|
-
can(event: E): boolean;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Type-safe finite state machine with optional `enter` / `exit` lifecycle
|
|
16
|
-
* hooks per state.
|
|
17
|
-
*/
|
|
18
|
-
declare function createFiniteStateMachine<S extends string, E extends string>(initial: S, transitions: Transitions<S, E>, options?: {
|
|
19
|
-
on?: StateHooks<S>;
|
|
20
|
-
}): FSMResult<S, E>;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { createFiniteStateMachine };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/finite-state-machine.ts
|
|
3
|
-
/**
|
|
4
|
-
* Type-safe finite state machine with optional `enter` / `exit` lifecycle
|
|
5
|
-
* hooks per state.
|
|
6
|
-
*/
|
|
7
|
-
function createFiniteStateMachine(initial, transitions, options) {
|
|
8
|
-
const state = signal(initial);
|
|
9
|
-
options?.on?.[initial]?.enter?.();
|
|
10
|
-
const send = (event) => {
|
|
11
|
-
const current = state();
|
|
12
|
-
const next = transitions[current]?.[event];
|
|
13
|
-
if (next === void 0 || next === current) return;
|
|
14
|
-
options?.on?.[current]?.exit?.();
|
|
15
|
-
state(next);
|
|
16
|
-
options?.on?.[next]?.enter?.();
|
|
17
|
-
};
|
|
18
|
-
const can = (event) => transitions[state()]?.[event] !== void 0;
|
|
19
|
-
return {
|
|
20
|
-
state,
|
|
21
|
-
send,
|
|
22
|
-
can
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
//#endregion
|
|
26
|
-
export { createFiniteStateMachine };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createFiniteStateMachine } from "./finite-state-machine.mjs";
|
|
4
|
-
//#region src/signals/lib/finite-state-machine.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
});
|
|
8
|
-
const transitions = {
|
|
9
|
-
red: { GO: "green" },
|
|
10
|
-
green: { SLOW: "yellow" },
|
|
11
|
-
yellow: { STOP: "red" }
|
|
12
|
-
};
|
|
13
|
-
describe("createFiniteStateMachine", () => {
|
|
14
|
-
it("starts in the initial state", () => {
|
|
15
|
-
let fsm;
|
|
16
|
-
effectScope(() => {
|
|
17
|
-
fsm = createFiniteStateMachine("red", transitions);
|
|
18
|
-
});
|
|
19
|
-
globalExpect(fsm.state()).toBe("red");
|
|
20
|
-
});
|
|
21
|
-
it("transitions on valid event", () => {
|
|
22
|
-
let fsm;
|
|
23
|
-
effectScope(() => {
|
|
24
|
-
fsm = createFiniteStateMachine("red", transitions);
|
|
25
|
-
});
|
|
26
|
-
fsm.send("GO");
|
|
27
|
-
globalExpect(fsm.state()).toBe("green");
|
|
28
|
-
});
|
|
29
|
-
it("does not transition on invalid event", () => {
|
|
30
|
-
let fsm;
|
|
31
|
-
effectScope(() => {
|
|
32
|
-
fsm = createFiniteStateMachine("red", transitions);
|
|
33
|
-
});
|
|
34
|
-
fsm.send("SLOW");
|
|
35
|
-
globalExpect(fsm.state()).toBe("red");
|
|
36
|
-
});
|
|
37
|
-
it("can() returns true for valid transition", () => {
|
|
38
|
-
let fsm;
|
|
39
|
-
effectScope(() => {
|
|
40
|
-
fsm = createFiniteStateMachine("red", transitions);
|
|
41
|
-
});
|
|
42
|
-
globalExpect(fsm.can("GO")).toBe(true);
|
|
43
|
-
globalExpect(fsm.can("SLOW")).toBe(false);
|
|
44
|
-
});
|
|
45
|
-
it("calls enter/exit hooks on transition", () => {
|
|
46
|
-
const enterRed = vi.fn();
|
|
47
|
-
const exitRed = vi.fn();
|
|
48
|
-
const enterGreen = vi.fn();
|
|
49
|
-
let fsm;
|
|
50
|
-
effectScope(() => {
|
|
51
|
-
fsm = createFiniteStateMachine("red", transitions, { on: {
|
|
52
|
-
red: {
|
|
53
|
-
enter: enterRed,
|
|
54
|
-
exit: exitRed
|
|
55
|
-
},
|
|
56
|
-
green: { enter: enterGreen }
|
|
57
|
-
} });
|
|
58
|
-
});
|
|
59
|
-
globalExpect(enterRed).toHaveBeenCalledOnce();
|
|
60
|
-
fsm.send("GO");
|
|
61
|
-
globalExpect(exitRed).toHaveBeenCalledOnce();
|
|
62
|
-
globalExpect(enterGreen).toHaveBeenCalledOnce();
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
//#endregion
|
|
66
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/fullscreen.d.ts
|
|
4
|
-
type FullscreenResult = {
|
|
5
|
-
isFullscreen: Computed<boolean>;
|
|
6
|
-
enter(): Promise<void>;
|
|
7
|
-
exit(): Promise<void>;
|
|
8
|
-
toggle(): Promise<void>;
|
|
9
|
-
} & Disposable;
|
|
10
|
-
/**
|
|
11
|
-
* Wraps the Fullscreen API. `target` defaults to `document.documentElement`.
|
|
12
|
-
*/
|
|
13
|
-
declare function createFullscreen(target?: Element | (() => Element | null)): FullscreenResult;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { createFullscreen };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { createEventListener } from "./event-listener.mjs";
|
|
3
|
-
//#region src/signals/lib/fullscreen.ts
|
|
4
|
-
/**
|
|
5
|
-
* Wraps the Fullscreen API. `target` defaults to `document.documentElement`.
|
|
6
|
-
*/
|
|
7
|
-
function createFullscreen(target) {
|
|
8
|
-
const getTarget = () => {
|
|
9
|
-
if (!target) return document.documentElement;
|
|
10
|
-
return typeof target === "function" ? target() ?? document.documentElement : target;
|
|
11
|
-
};
|
|
12
|
-
const isFullscreen = signal(!!document.fullscreenElement);
|
|
13
|
-
const onChange = () => isFullscreen(!!document.fullscreenElement);
|
|
14
|
-
const cleanup = createEventListener(document, "fullscreenchange", onChange);
|
|
15
|
-
const enter = () => getTarget().requestFullscreen();
|
|
16
|
-
const exit = () => document.exitFullscreen();
|
|
17
|
-
const toggle = () => isFullscreen() ? exit() : enter();
|
|
18
|
-
return Object.assign({
|
|
19
|
-
isFullscreen,
|
|
20
|
-
enter,
|
|
21
|
-
exit,
|
|
22
|
-
toggle
|
|
23
|
-
}, { [Symbol.dispose]: cleanup });
|
|
24
|
-
}
|
|
25
|
-
//#endregion
|
|
26
|
-
export { createFullscreen };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createFullscreen } from "./fullscreen.mjs";
|
|
4
|
-
//#region src/signals/lib/fullscreen.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
vi.restoreAllMocks();
|
|
8
|
-
});
|
|
9
|
-
describe("createFullscreen", () => {
|
|
10
|
-
it("starts with current fullscreen state", () => {
|
|
11
|
-
Object.defineProperty(document, "fullscreenElement", {
|
|
12
|
-
configurable: true,
|
|
13
|
-
get: () => null
|
|
14
|
-
});
|
|
15
|
-
let f;
|
|
16
|
-
effectScope(() => {
|
|
17
|
-
f = createFullscreen();
|
|
18
|
-
});
|
|
19
|
-
globalExpect(f.isFullscreen()).toBe(false);
|
|
20
|
-
});
|
|
21
|
-
it("updates isFullscreen on fullscreenchange event", () => {
|
|
22
|
-
Object.defineProperty(document, "fullscreenElement", {
|
|
23
|
-
configurable: true,
|
|
24
|
-
get: () => null
|
|
25
|
-
});
|
|
26
|
-
let f;
|
|
27
|
-
effectScope(() => {
|
|
28
|
-
f = createFullscreen();
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(document, "fullscreenElement", {
|
|
31
|
-
configurable: true,
|
|
32
|
-
get: () => document.documentElement
|
|
33
|
-
});
|
|
34
|
-
document.dispatchEvent(new Event("fullscreenchange"));
|
|
35
|
-
globalExpect(f.isFullscreen()).toBe(true);
|
|
36
|
-
});
|
|
37
|
-
it("stops reacting after Symbol.dispose", () => {
|
|
38
|
-
Object.defineProperty(document, "fullscreenElement", {
|
|
39
|
-
configurable: true,
|
|
40
|
-
get: () => null
|
|
41
|
-
});
|
|
42
|
-
let f;
|
|
43
|
-
effectScope(() => {
|
|
44
|
-
f = createFullscreen();
|
|
45
|
-
});
|
|
46
|
-
f[Symbol.dispose]();
|
|
47
|
-
Object.defineProperty(document, "fullscreenElement", {
|
|
48
|
-
configurable: true,
|
|
49
|
-
get: () => document.documentElement
|
|
50
|
-
});
|
|
51
|
-
document.dispatchEvent(new Event("fullscreenchange"));
|
|
52
|
-
globalExpect(f.isFullscreen()).toBe(false);
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
//#endregion
|
|
56
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/geolocation.d.ts
|
|
4
|
-
type GeolocationResult = {
|
|
5
|
-
position: Computed<GeolocationPosition | null>;
|
|
6
|
-
error: Computed<GeolocationPositionError | null>;
|
|
7
|
-
loading: Computed<boolean>;
|
|
8
|
-
} & Disposable;
|
|
9
|
-
/**
|
|
10
|
-
* Exposes the Geolocation API as reactive signals.
|
|
11
|
-
* Begins watching the position immediately.
|
|
12
|
-
*/
|
|
13
|
-
declare function createGeolocation(options?: PositionOptions): GeolocationResult;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { createGeolocation };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/geolocation.ts
|
|
3
|
-
/**
|
|
4
|
-
* Exposes the Geolocation API as reactive signals.
|
|
5
|
-
* Begins watching the position immediately.
|
|
6
|
-
*/
|
|
7
|
-
function createGeolocation(options) {
|
|
8
|
-
const position = signal(null);
|
|
9
|
-
const error = signal(null);
|
|
10
|
-
const loading = signal(true);
|
|
11
|
-
const onSuccess = (pos) => {
|
|
12
|
-
position(pos);
|
|
13
|
-
error(null);
|
|
14
|
-
loading(false);
|
|
15
|
-
};
|
|
16
|
-
const onError = (err) => {
|
|
17
|
-
error(err);
|
|
18
|
-
loading(false);
|
|
19
|
-
};
|
|
20
|
-
const watchId = navigator.geolocation.watchPosition(onSuccess, onError, options);
|
|
21
|
-
const cleanup = () => navigator.geolocation.clearWatch(watchId);
|
|
22
|
-
onCleanup(cleanup);
|
|
23
|
-
return Object.assign({
|
|
24
|
-
position,
|
|
25
|
-
error,
|
|
26
|
-
loading
|
|
27
|
-
}, { [Symbol.dispose]: cleanup });
|
|
28
|
-
}
|
|
29
|
-
//#endregion
|
|
30
|
-
export { createGeolocation };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createGeolocation } from "./geolocation.mjs";
|
|
4
|
-
//#region src/signals/lib/geolocation.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
vi.unstubAllGlobals();
|
|
8
|
-
});
|
|
9
|
-
describe("createGeolocation", () => {
|
|
10
|
-
it("starts with null position and loading true", () => {
|
|
11
|
-
vi.stubGlobal("navigator", { geolocation: {
|
|
12
|
-
watchPosition: vi.fn().mockReturnValue(1),
|
|
13
|
-
clearWatch: vi.fn()
|
|
14
|
-
} });
|
|
15
|
-
let g;
|
|
16
|
-
effectScope(() => {
|
|
17
|
-
g = createGeolocation();
|
|
18
|
-
});
|
|
19
|
-
globalExpect(g.position()).toBeNull();
|
|
20
|
-
globalExpect(g.loading()).toBe(true);
|
|
21
|
-
});
|
|
22
|
-
it("calls clearWatch on Symbol.dispose", () => {
|
|
23
|
-
const clearWatch = vi.fn();
|
|
24
|
-
vi.stubGlobal("navigator", { geolocation: {
|
|
25
|
-
watchPosition: vi.fn().mockReturnValue(42),
|
|
26
|
-
clearWatch
|
|
27
|
-
} });
|
|
28
|
-
let g;
|
|
29
|
-
effectScope(() => {
|
|
30
|
-
g = createGeolocation();
|
|
31
|
-
});
|
|
32
|
-
g[Symbol.dispose]();
|
|
33
|
-
globalExpect(clearWatch).toHaveBeenCalledWith(42);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
//#endregion
|
|
37
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { n as Signal } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/hash.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a writable `Signal<string>` that stays in sync with `location.hash`
|
|
6
|
-
* (including the leading `#`). Writing the signal updates `location.hash`.
|
|
7
|
-
*/
|
|
8
|
-
declare function createHash(): Signal<string> & Disposable;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { createHash };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { createEventListener } from "./event-listener.mjs";
|
|
3
|
-
//#region src/signals/lib/hash.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a writable `Signal<string>` that stays in sync with `location.hash`
|
|
6
|
-
* (including the leading `#`). Writing the signal updates `location.hash`.
|
|
7
|
-
*/
|
|
8
|
-
function createHash() {
|
|
9
|
-
const hash = signal(typeof location !== "undefined" ? location.hash : "");
|
|
10
|
-
const onHashChange = () => hash(location.hash);
|
|
11
|
-
const cleanup = createEventListener(window, "hashchange", onHashChange);
|
|
12
|
-
const proxy = (value) => {
|
|
13
|
-
if (value === void 0) return hash();
|
|
14
|
-
location.hash = value;
|
|
15
|
-
hash(value);
|
|
16
|
-
};
|
|
17
|
-
return Object.assign(proxy, { [Symbol.dispose]: cleanup });
|
|
18
|
-
}
|
|
19
|
-
//#endregion
|
|
20
|
-
export { createHash };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createHash } from "./hash.mjs";
|
|
4
|
-
//#region src/signals/lib/hash.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
location.hash = "";
|
|
8
|
-
vi.useRealTimers();
|
|
9
|
-
});
|
|
10
|
-
describe("createHash", () => {
|
|
11
|
-
it("reads the current location.hash", () => {
|
|
12
|
-
let h;
|
|
13
|
-
effectScope(() => {
|
|
14
|
-
h = createHash();
|
|
15
|
-
});
|
|
16
|
-
globalExpect(typeof h()).toBe("string");
|
|
17
|
-
});
|
|
18
|
-
it("updates when hash changes via hashchange event", () => {
|
|
19
|
-
let h;
|
|
20
|
-
effectScope(() => {
|
|
21
|
-
h = createHash();
|
|
22
|
-
});
|
|
23
|
-
location.hash = "#section";
|
|
24
|
-
window.dispatchEvent(new HashChangeEvent("hashchange"));
|
|
25
|
-
globalExpect(h()).toBe("#section");
|
|
26
|
-
});
|
|
27
|
-
it("writing the signal updates location.hash", () => {
|
|
28
|
-
let h;
|
|
29
|
-
effectScope(() => {
|
|
30
|
-
h = createHash();
|
|
31
|
-
});
|
|
32
|
-
h("#new");
|
|
33
|
-
globalExpect(location.hash).toBe("#new");
|
|
34
|
-
});
|
|
35
|
-
it("stops updating after Symbol.dispose", () => {
|
|
36
|
-
let h;
|
|
37
|
-
effectScope(() => {
|
|
38
|
-
h = createHash();
|
|
39
|
-
});
|
|
40
|
-
h[Symbol.dispose]();
|
|
41
|
-
location.hash = "#other";
|
|
42
|
-
window.dispatchEvent(new HashChangeEvent("hashchange"));
|
|
43
|
-
globalExpect(h()).not.toBe("#other");
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//#endregion
|
|
47
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/hover.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a `Computed<boolean>` that is `true` while the pointer is over
|
|
6
|
-
* `target`. Uses `pointerenter` / `pointerleave` so it works for both mouse
|
|
7
|
-
* and touch/stylus input.
|
|
8
|
-
*/
|
|
9
|
-
declare function createHover(target: Element | (() => Element | null)): Computed<boolean> & Disposable;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { createHover };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { createEventListener } from "./event-listener.mjs";
|
|
3
|
-
//#region src/signals/lib/hover.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a `Computed<boolean>` that is `true` while the pointer is over
|
|
6
|
-
* `target`. Uses `pointerenter` / `pointerleave` so it works for both mouse
|
|
7
|
-
* and touch/stylus input.
|
|
8
|
-
*/
|
|
9
|
-
function createHover(target) {
|
|
10
|
-
const hovered = signal(false);
|
|
11
|
-
const el = typeof target === "function" ? target() : target;
|
|
12
|
-
const onEnter = () => hovered(true);
|
|
13
|
-
const onLeave = () => hovered(false);
|
|
14
|
-
const cleanups = [];
|
|
15
|
-
if (el) {
|
|
16
|
-
cleanups.push(createEventListener(el, "pointerenter", onEnter));
|
|
17
|
-
cleanups.push(createEventListener(el, "pointerleave", onLeave));
|
|
18
|
-
}
|
|
19
|
-
const cleanup = () => cleanups.forEach((fn) => fn());
|
|
20
|
-
return Object.assign(hovered, { [Symbol.dispose]: cleanup });
|
|
21
|
-
}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { createHover };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
//#region src/signals/lib/intersection-observer.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Raw `IntersectionObserver` wrapper with automatic cleanup.
|
|
4
|
-
* Use `createIsInViewport` for the common boolean case.
|
|
5
|
-
*/
|
|
6
|
-
declare function createIntersectionObserver(target: Element | (() => Element | null), callback: IntersectionObserverCallback, options?: IntersectionObserverInit): Disposable;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { createIntersectionObserver };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/is-document-visible.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a `Computed<boolean>` that tracks the Page Visibility API.
|
|
6
|
-
* `true` while the document is visible; `false` when hidden (minimised,
|
|
7
|
-
* background tab, etc.).
|
|
8
|
-
*/
|
|
9
|
-
declare function createIsDocumentVisible(): Computed<boolean> & Disposable;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { createIsDocumentVisible };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { d as onCleanup, f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/is-document-visible.ts
|
|
3
|
-
/**
|
|
4
|
-
* Returns a `Computed<boolean>` that tracks the Page Visibility API.
|
|
5
|
-
* `true` while the document is visible; `false` when hidden (minimised,
|
|
6
|
-
* background tab, etc.).
|
|
7
|
-
*/
|
|
8
|
-
function createIsDocumentVisible() {
|
|
9
|
-
const visible = signal(typeof document !== "undefined" ? document.visibilityState === "visible" : true);
|
|
10
|
-
const handler = () => {
|
|
11
|
-
visible(document.visibilityState === "visible");
|
|
12
|
-
};
|
|
13
|
-
document.addEventListener("visibilitychange", handler);
|
|
14
|
-
const cleanup = () => document.removeEventListener("visibilitychange", handler);
|
|
15
|
-
onCleanup(cleanup);
|
|
16
|
-
return Object.assign(visible, { [Symbol.dispose]: cleanup });
|
|
17
|
-
}
|
|
18
|
-
//#endregion
|
|
19
|
-
export { createIsDocumentVisible };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|