elements-kit 0.0.10 → 0.0.12
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/{signals/lib → utilities}/event-driven.d.mts +2 -2
- package/dist/{signals/lib → utilities}/event-driven.mjs +2 -2
- 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/{signals/lib/video.mjs → utilities/media-player.mjs} +5 -4
- 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/{signals/lib/media.mjs → utilities/media-query.mjs} +6 -6
- 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/{signals/lib → utilities}/orientation.mjs +3 -2
- 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 -12
- 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 -21
- package/dist/signals/lib/audio.mjs +0 -35
- package/dist/signals/lib/audio.test.mjs +0 -57
- 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 -24
- package/dist/signals/lib/fullscreen.test.d.mts +0 -1
- package/dist/signals/lib/fullscreen.test.mjs +0 -48
- 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 -14
- package/dist/signals/lib/hash.test.d.mts +0 -1
- package/dist/signals/lib/hash.test.mjs +0 -46
- 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 -13
- 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/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.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 -21
- 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 -21
- 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,38 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createBattery } from "./battery.mjs";
|
|
4
|
-
//#region src/signals/lib/battery.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
vi.unstubAllGlobals();
|
|
8
|
-
});
|
|
9
|
-
describe("createBattery", () => {
|
|
10
|
-
it("returns unsupported=false when getBattery not present", () => {
|
|
11
|
-
vi.stubGlobal("navigator", {});
|
|
12
|
-
let b;
|
|
13
|
-
effectScope(() => {
|
|
14
|
-
b = createBattery();
|
|
15
|
-
});
|
|
16
|
-
globalExpect(b.supported()).toBe(false);
|
|
17
|
-
});
|
|
18
|
-
it("fetches battery info via getBattery", async () => {
|
|
19
|
-
const batteryMock = {
|
|
20
|
-
charging: true,
|
|
21
|
-
level: .8,
|
|
22
|
-
chargingTime: 3600,
|
|
23
|
-
dischargingTime: Infinity,
|
|
24
|
-
addEventListener: vi.fn(),
|
|
25
|
-
removeEventListener: vi.fn()
|
|
26
|
-
};
|
|
27
|
-
vi.stubGlobal("navigator", { getBattery: vi.fn().mockResolvedValue(batteryMock) });
|
|
28
|
-
let b;
|
|
29
|
-
effectScope(() => {
|
|
30
|
-
b = createBattery();
|
|
31
|
-
});
|
|
32
|
-
await new Promise((res) => setTimeout(res, 0));
|
|
33
|
-
globalExpect(b.charging()).toBe(true);
|
|
34
|
-
globalExpect(b.level()).toBe(.8);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
//#endregion
|
|
38
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
//#region src/signals/lib/before-unload.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Registers a `beforeunload` handler that shows a native confirmation dialog
|
|
4
|
-
* when the user tries to leave the page.
|
|
5
|
-
*
|
|
6
|
-
* `message` can be a string or a reactive getter (re-evaluated on each event).
|
|
7
|
-
* Modern browsers ignore custom messages and show a generic prompt instead.
|
|
8
|
-
*/
|
|
9
|
-
declare function createBeforeUnload(message?: string | (() => string)): Disposable;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { createBeforeUnload };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { createEventListener } from "./event-listener.mjs";
|
|
2
|
-
//#region src/signals/lib/before-unload.ts
|
|
3
|
-
/**
|
|
4
|
-
* Registers a `beforeunload` handler that shows a native confirmation dialog
|
|
5
|
-
* when the user tries to leave the page.
|
|
6
|
-
*
|
|
7
|
-
* `message` can be a string or a reactive getter (re-evaluated on each event).
|
|
8
|
-
* Modern browsers ignore custom messages and show a generic prompt instead.
|
|
9
|
-
*/
|
|
10
|
-
function createBeforeUnload(message) {
|
|
11
|
-
const handler = (e) => {
|
|
12
|
-
const msg = typeof message === "function" ? message() : message;
|
|
13
|
-
e.preventDefault();
|
|
14
|
-
if (msg !== void 0) e.returnValue = msg;
|
|
15
|
-
};
|
|
16
|
-
const cleanup = createEventListener(window, "beforeunload", handler);
|
|
17
|
-
return { [Symbol.dispose]: cleanup };
|
|
18
|
-
}
|
|
19
|
-
//#endregion
|
|
20
|
-
export { createBeforeUnload };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createBeforeUnload } from "./before-unload.mjs";
|
|
4
|
-
//#region src/signals/lib/before-unload.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
});
|
|
8
|
-
describe("createBeforeUnload", () => {
|
|
9
|
-
it("registers a beforeunload handler", () => {
|
|
10
|
-
const addSpy = vi.spyOn(window, "addEventListener");
|
|
11
|
-
effectScope(() => {
|
|
12
|
-
createBeforeUnload("Are you sure?");
|
|
13
|
-
});
|
|
14
|
-
globalExpect(addSpy).toHaveBeenCalledWith("beforeunload", globalExpect.any(Function));
|
|
15
|
-
addSpy.mockRestore();
|
|
16
|
-
});
|
|
17
|
-
it("removes the handler on Symbol.dispose", () => {
|
|
18
|
-
const removeSpy = vi.spyOn(window, "removeEventListener");
|
|
19
|
-
let bu;
|
|
20
|
-
effectScope(() => {
|
|
21
|
-
bu = createBeforeUnload();
|
|
22
|
-
});
|
|
23
|
-
bu[Symbol.dispose]();
|
|
24
|
-
globalExpect(removeSpy).toHaveBeenCalledWith("beforeunload", globalExpect.any(Function));
|
|
25
|
-
removeSpy.mockRestore();
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
//#endregion
|
|
29
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/clipboard.d.ts
|
|
4
|
-
type ClipboardResult = {
|
|
5
|
-
copied: Computed<boolean>;
|
|
6
|
-
value: Computed<string | null>;
|
|
7
|
-
copy(text: string): Promise<void>;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Provides a `copy(text)` helper that writes to the clipboard.
|
|
11
|
-
* `copied` is `true` for 1 500 ms after a successful copy.
|
|
12
|
-
*/
|
|
13
|
-
declare function createClipboard(resetDelay?: number): ClipboardResult;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { createClipboard };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/clipboard.ts
|
|
3
|
-
/**
|
|
4
|
-
* Provides a `copy(text)` helper that writes to the clipboard.
|
|
5
|
-
* `copied` is `true` for 1 500 ms after a successful copy.
|
|
6
|
-
*/
|
|
7
|
-
function createClipboard(resetDelay = 1500) {
|
|
8
|
-
const copied = signal(false);
|
|
9
|
-
const value = signal(null);
|
|
10
|
-
let timer;
|
|
11
|
-
const copy = async (text) => {
|
|
12
|
-
await navigator.clipboard.writeText(text);
|
|
13
|
-
clearTimeout(timer);
|
|
14
|
-
value(text);
|
|
15
|
-
copied(true);
|
|
16
|
-
timer = setTimeout(() => copied(false), resetDelay);
|
|
17
|
-
};
|
|
18
|
-
return {
|
|
19
|
-
copied,
|
|
20
|
-
value,
|
|
21
|
-
copy
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
|
-
export { createClipboard };
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createClipboard } from "./clipboard.mjs";
|
|
4
|
-
//#region src/signals/lib/clipboard.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
vi.useRealTimers();
|
|
8
|
-
vi.unstubAllGlobals();
|
|
9
|
-
});
|
|
10
|
-
describe("createClipboard", () => {
|
|
11
|
-
it("starts as not copied", () => {
|
|
12
|
-
vi.stubGlobal("navigator", {
|
|
13
|
-
...navigator,
|
|
14
|
-
clipboard: { writeText: vi.fn().mockResolvedValue(void 0) }
|
|
15
|
-
});
|
|
16
|
-
let cb;
|
|
17
|
-
effectScope(() => {
|
|
18
|
-
cb = createClipboard();
|
|
19
|
-
});
|
|
20
|
-
globalExpect(cb.copied()).toBe(false);
|
|
21
|
-
globalExpect(cb.value()).toBeNull();
|
|
22
|
-
});
|
|
23
|
-
it("sets copied and value after copy()", async () => {
|
|
24
|
-
vi.useFakeTimers();
|
|
25
|
-
vi.stubGlobal("navigator", {
|
|
26
|
-
...navigator,
|
|
27
|
-
clipboard: { writeText: vi.fn().mockResolvedValue(void 0) }
|
|
28
|
-
});
|
|
29
|
-
let cb;
|
|
30
|
-
effectScope(() => {
|
|
31
|
-
cb = createClipboard();
|
|
32
|
-
});
|
|
33
|
-
await cb.copy("hello");
|
|
34
|
-
globalExpect(cb.copied()).toBe(true);
|
|
35
|
-
globalExpect(cb.value()).toBe("hello");
|
|
36
|
-
});
|
|
37
|
-
it("resets copied after resetDelay", async () => {
|
|
38
|
-
vi.useFakeTimers();
|
|
39
|
-
vi.stubGlobal("navigator", {
|
|
40
|
-
...navigator,
|
|
41
|
-
clipboard: { writeText: vi.fn().mockResolvedValue(void 0) }
|
|
42
|
-
});
|
|
43
|
-
let cb;
|
|
44
|
-
effectScope(() => {
|
|
45
|
-
cb = createClipboard(500);
|
|
46
|
-
});
|
|
47
|
-
await cb.copy("text");
|
|
48
|
-
vi.advanceTimersByTime(600);
|
|
49
|
-
globalExpect(cb.copied()).toBe(false);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
//#endregion
|
|
53
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { n as Signal } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/counter.d.ts
|
|
4
|
-
type CounterResult = Signal<number> & {
|
|
5
|
-
increment(step?: number): void;
|
|
6
|
-
decrement(step?: number): void;
|
|
7
|
-
reset(): void;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Returns a numeric `Signal` with `increment`, `decrement`, and `reset`
|
|
11
|
-
* helpers. Optionally clamp to `[min, max]`.
|
|
12
|
-
*/
|
|
13
|
-
declare function createCounter(initial?: number, options?: {
|
|
14
|
-
min?: number;
|
|
15
|
-
max?: number;
|
|
16
|
-
}): CounterResult;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { createCounter };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/counter.ts
|
|
3
|
-
/**
|
|
4
|
-
* Returns a numeric `Signal` with `increment`, `decrement`, and `reset`
|
|
5
|
-
* helpers. Optionally clamp to `[min, max]`.
|
|
6
|
-
*/
|
|
7
|
-
function createCounter(initial = 0, options) {
|
|
8
|
-
const { min = -Infinity, max = Infinity } = options ?? {};
|
|
9
|
-
const clamp = (v) => Math.min(max, Math.max(min, v));
|
|
10
|
-
const s = signal(clamp(initial));
|
|
11
|
-
const increment = (step = 1) => s(clamp(s() + step));
|
|
12
|
-
const decrement = (step = 1) => s(clamp(s() - step));
|
|
13
|
-
const reset = () => s(clamp(initial));
|
|
14
|
-
return Object.assign(s, {
|
|
15
|
-
increment,
|
|
16
|
-
decrement,
|
|
17
|
-
reset
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { createCounter };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createCounter } from "./counter.mjs";
|
|
4
|
-
//#region src/signals/lib/counter.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
});
|
|
8
|
-
describe("createCounter", () => {
|
|
9
|
-
it("starts at 0 by default", () => {
|
|
10
|
-
let c;
|
|
11
|
-
effectScope(() => {
|
|
12
|
-
c = createCounter();
|
|
13
|
-
});
|
|
14
|
-
globalExpect(c()).toBe(0);
|
|
15
|
-
});
|
|
16
|
-
it("starts at a provided initial value", () => {
|
|
17
|
-
let c;
|
|
18
|
-
effectScope(() => {
|
|
19
|
-
c = createCounter(10);
|
|
20
|
-
});
|
|
21
|
-
globalExpect(c()).toBe(10);
|
|
22
|
-
});
|
|
23
|
-
it("increments by 1", () => {
|
|
24
|
-
let c;
|
|
25
|
-
effectScope(() => {
|
|
26
|
-
c = createCounter(0);
|
|
27
|
-
});
|
|
28
|
-
c.increment();
|
|
29
|
-
globalExpect(c()).toBe(1);
|
|
30
|
-
});
|
|
31
|
-
it("increments by step", () => {
|
|
32
|
-
let c;
|
|
33
|
-
effectScope(() => {
|
|
34
|
-
c = createCounter(0);
|
|
35
|
-
});
|
|
36
|
-
c.increment(5);
|
|
37
|
-
globalExpect(c()).toBe(5);
|
|
38
|
-
});
|
|
39
|
-
it("decrements by 1", () => {
|
|
40
|
-
let c;
|
|
41
|
-
effectScope(() => {
|
|
42
|
-
c = createCounter(5);
|
|
43
|
-
});
|
|
44
|
-
c.decrement();
|
|
45
|
-
globalExpect(c()).toBe(4);
|
|
46
|
-
});
|
|
47
|
-
it("resets to initial value", () => {
|
|
48
|
-
let c;
|
|
49
|
-
effectScope(() => {
|
|
50
|
-
c = createCounter(3);
|
|
51
|
-
});
|
|
52
|
-
c.increment(10);
|
|
53
|
-
c.reset();
|
|
54
|
-
globalExpect(c()).toBe(3);
|
|
55
|
-
});
|
|
56
|
-
it("clamps to max", () => {
|
|
57
|
-
let c;
|
|
58
|
-
effectScope(() => {
|
|
59
|
-
c = createCounter(0, { max: 5 });
|
|
60
|
-
});
|
|
61
|
-
c.increment(100);
|
|
62
|
-
globalExpect(c()).toBe(5);
|
|
63
|
-
});
|
|
64
|
-
it("clamps to min", () => {
|
|
65
|
-
let c;
|
|
66
|
-
effectScope(() => {
|
|
67
|
-
c = createCounter(0, { min: -3 });
|
|
68
|
-
});
|
|
69
|
-
c.decrement(100);
|
|
70
|
-
globalExpect(c()).toBe(-3);
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
//#endregion
|
|
74
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { n as Signal } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/document-title.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a writable `Signal<string>` synced to `document.title`.
|
|
6
|
-
* Writing the signal immediately updates the browser tab title.
|
|
7
|
-
*/
|
|
8
|
-
declare function createDocumentTitle(initial?: string): Signal<string>;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { createDocumentTitle };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/document-title.ts
|
|
3
|
-
/**
|
|
4
|
-
* Returns a writable `Signal<string>` synced to `document.title`.
|
|
5
|
-
* Writing the signal immediately updates the browser tab title.
|
|
6
|
-
*/
|
|
7
|
-
function createDocumentTitle(initial) {
|
|
8
|
-
const title = signal(initial ?? (typeof document !== "undefined" ? document.title : ""));
|
|
9
|
-
effect(() => {
|
|
10
|
-
if (typeof document !== "undefined") document.title = title();
|
|
11
|
-
});
|
|
12
|
-
return title;
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { createDocumentTitle };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createDocumentTitle } from "./document-title.mjs";
|
|
4
|
-
//#region src/signals/lib/document-title.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
});
|
|
8
|
-
describe("createDocumentTitle", () => {
|
|
9
|
-
it("sets document.title from initial value", () => {
|
|
10
|
-
effectScope(() => {
|
|
11
|
-
createDocumentTitle("My App");
|
|
12
|
-
});
|
|
13
|
-
globalExpect(document.title).toBe("My App");
|
|
14
|
-
});
|
|
15
|
-
it("updates document.title when signal is written", () => {
|
|
16
|
-
let title;
|
|
17
|
-
effectScope(() => {
|
|
18
|
-
title = createDocumentTitle("Initial");
|
|
19
|
-
});
|
|
20
|
-
title("Updated");
|
|
21
|
-
globalExpect(document.title).toBe("Updated");
|
|
22
|
-
});
|
|
23
|
-
it("reads from document.title if no initial value given", () => {
|
|
24
|
-
document.title = "Existing Title";
|
|
25
|
-
let title;
|
|
26
|
-
effectScope(() => {
|
|
27
|
-
title = createDocumentTitle();
|
|
28
|
-
});
|
|
29
|
-
globalExpect(title()).toBe("Existing Title");
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
//#endregion
|
|
33
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/element-size.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Observes the content-box size of `target` using a `ResizeObserver` and
|
|
6
|
-
* returns reactive `width` and `height` computeds.
|
|
7
|
-
*
|
|
8
|
-
* Supports a reactive getter — pass `() => element` when the target element
|
|
9
|
-
* is not known at call time.
|
|
10
|
-
*/
|
|
11
|
-
declare function createElementSize(target: Element | (() => Element | null)): {
|
|
12
|
-
width: Computed<number>;
|
|
13
|
-
height: Computed<number>;
|
|
14
|
-
} & Disposable;
|
|
15
|
-
//#endregion
|
|
16
|
-
export { createElementSize };
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { createResizeObserver } from "./resize-observer.mjs";
|
|
3
|
-
//#region src/signals/lib/element-size.ts
|
|
4
|
-
/**
|
|
5
|
-
* Observes the content-box size of `target` using a `ResizeObserver` and
|
|
6
|
-
* returns reactive `width` and `height` computeds.
|
|
7
|
-
*
|
|
8
|
-
* Supports a reactive getter — pass `() => element` when the target element
|
|
9
|
-
* is not known at call time.
|
|
10
|
-
*/
|
|
11
|
-
function createElementSize(target) {
|
|
12
|
-
const w = signal(0);
|
|
13
|
-
const h = signal(0);
|
|
14
|
-
const observer = createResizeObserver(target, (entries) => {
|
|
15
|
-
for (const entry of entries) {
|
|
16
|
-
w(entry.contentRect.width);
|
|
17
|
-
h(entry.contentRect.height);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
const el = typeof target === "function" ? target() : target;
|
|
21
|
-
if (el) {
|
|
22
|
-
const rect = el.getBoundingClientRect();
|
|
23
|
-
w(rect.width);
|
|
24
|
-
h(rect.height);
|
|
25
|
-
}
|
|
26
|
-
return Object.assign({
|
|
27
|
-
width: w,
|
|
28
|
-
height: h
|
|
29
|
-
}, { [Symbol.dispose]: observer[Symbol.dispose] });
|
|
30
|
-
}
|
|
31
|
-
//#endregion
|
|
32
|
-
export { createElementSize };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, n as vi, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createElementSize } from "./element-size.mjs";
|
|
4
|
-
//#region src/signals/lib/element-size.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.body.innerHTML = "";
|
|
7
|
-
vi.restoreAllMocks();
|
|
8
|
-
vi.unstubAllGlobals();
|
|
9
|
-
});
|
|
10
|
-
describe("createElementSize", () => {
|
|
11
|
-
it("returns initial dimensions from getBoundingClientRect", () => {
|
|
12
|
-
const el = document.createElement("div");
|
|
13
|
-
document.body.appendChild(el);
|
|
14
|
-
vi.spyOn(el, "getBoundingClientRect").mockReturnValue({
|
|
15
|
-
width: 200,
|
|
16
|
-
height: 100,
|
|
17
|
-
x: 0,
|
|
18
|
-
y: 0,
|
|
19
|
-
top: 0,
|
|
20
|
-
right: 200,
|
|
21
|
-
bottom: 100,
|
|
22
|
-
left: 0,
|
|
23
|
-
toJSON: () => ({})
|
|
24
|
-
});
|
|
25
|
-
let size;
|
|
26
|
-
effectScope(() => {
|
|
27
|
-
size = createElementSize(el);
|
|
28
|
-
});
|
|
29
|
-
globalExpect(size.width()).toBe(200);
|
|
30
|
-
globalExpect(size.height()).toBe(100);
|
|
31
|
-
});
|
|
32
|
-
it("updates when ResizeObserver fires", () => {
|
|
33
|
-
const el = document.createElement("div");
|
|
34
|
-
document.body.appendChild(el);
|
|
35
|
-
vi.spyOn(el, "getBoundingClientRect").mockReturnValue({
|
|
36
|
-
width: 0,
|
|
37
|
-
height: 0,
|
|
38
|
-
x: 0,
|
|
39
|
-
y: 0,
|
|
40
|
-
top: 0,
|
|
41
|
-
right: 0,
|
|
42
|
-
bottom: 0,
|
|
43
|
-
left: 0,
|
|
44
|
-
toJSON: () => ({})
|
|
45
|
-
});
|
|
46
|
-
let observerCallback;
|
|
47
|
-
vi.stubGlobal("ResizeObserver", function MockRO(cb) {
|
|
48
|
-
observerCallback = cb;
|
|
49
|
-
return {
|
|
50
|
-
observe: vi.fn(),
|
|
51
|
-
disconnect: vi.fn(),
|
|
52
|
-
unobserve: vi.fn()
|
|
53
|
-
};
|
|
54
|
-
});
|
|
55
|
-
let size;
|
|
56
|
-
effectScope(() => {
|
|
57
|
-
size = createElementSize(el);
|
|
58
|
-
});
|
|
59
|
-
observerCallback([{ contentRect: {
|
|
60
|
-
width: 300,
|
|
61
|
-
height: 150
|
|
62
|
-
} }], {});
|
|
63
|
-
globalExpect(size.width()).toBe(300);
|
|
64
|
-
globalExpect(size.height()).toBe(150);
|
|
65
|
-
});
|
|
66
|
-
it("disconnects the observer on Symbol.dispose", () => {
|
|
67
|
-
const disconnect = vi.fn();
|
|
68
|
-
vi.stubGlobal("ResizeObserver", function MockRO() {
|
|
69
|
-
return {
|
|
70
|
-
observe: vi.fn(),
|
|
71
|
-
disconnect,
|
|
72
|
-
unobserve: vi.fn()
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
const el = document.createElement("div");
|
|
76
|
-
document.body.appendChild(el);
|
|
77
|
-
let size;
|
|
78
|
-
effectScope(() => {
|
|
79
|
-
size = createElementSize(el);
|
|
80
|
-
});
|
|
81
|
-
size[Symbol.dispose]();
|
|
82
|
-
globalExpect(disconnect).toHaveBeenCalledOnce();
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
//#endregion
|
|
86
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/signals/lib/event-listener.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Attaches a type-safe event listener to a target, with automatic cleanup.
|
|
4
|
-
*
|
|
5
|
-
* When called inside an `effect` or `effectScope` the listener is removed
|
|
6
|
-
* when the scope is disposed. When the target is a reactive getter the
|
|
7
|
-
* listener is re-registered whenever the target changes.
|
|
8
|
-
*/
|
|
9
|
-
declare function createEventListener<K extends keyof HTMLElementEventMap>(target: HTMLElement | (() => HTMLElement | null), type: K, handler: (e: HTMLElementEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
|
|
10
|
-
declare function createEventListener<K extends keyof DocumentEventMap>(target: Document | (() => Document | null), type: K, handler: (e: DocumentEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
|
|
11
|
-
declare function createEventListener<K extends keyof WindowEventMap>(target: Window | (() => Window | null), type: K, handler: (e: WindowEventMap[K]) => void, options?: AddEventListenerOptions): () => void;
|
|
12
|
-
declare function createEventListener(target: EventTarget | (() => EventTarget | null), type: string, handler: EventListener, options?: AddEventListenerOptions): () => void;
|
|
13
|
-
//#endregion
|
|
14
|
-
export { createEventListener };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { n as Signal } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/favicon.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Returns a writable `Signal<string>` whose value is reflected as the page's
|
|
6
|
-
* favicon `href`. Writing the signal swaps the `<link rel="icon">` element.
|
|
7
|
-
*/
|
|
8
|
-
declare function createFavicon(initial?: string): Signal<string>;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { createFavicon };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { a as effect, f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/favicon.ts
|
|
3
|
-
/**
|
|
4
|
-
* Returns a writable `Signal<string>` whose value is reflected as the page's
|
|
5
|
-
* favicon `href`. Writing the signal swaps the `<link rel="icon">` element.
|
|
6
|
-
*/
|
|
7
|
-
function createFavicon(initial) {
|
|
8
|
-
const getLink = () => {
|
|
9
|
-
let link = document.querySelector("link[rel~='icon']");
|
|
10
|
-
if (!link) {
|
|
11
|
-
link = document.createElement("link");
|
|
12
|
-
link.rel = "icon";
|
|
13
|
-
document.head.appendChild(link);
|
|
14
|
-
}
|
|
15
|
-
return link;
|
|
16
|
-
};
|
|
17
|
-
const href = signal(initial ?? (typeof document !== "undefined" ? getLink().href || "" : ""));
|
|
18
|
-
effect(() => {
|
|
19
|
-
if (typeof document !== "undefined") getLink().href = href();
|
|
20
|
-
});
|
|
21
|
-
return href;
|
|
22
|
-
}
|
|
23
|
-
//#endregion
|
|
24
|
-
export { createFavicon };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { o as effectScope } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
import { a as describe, o as it, r as afterEach, t as globalExpect } from "../../test.BmQO5GaM-CR2qjV1t.mjs";
|
|
3
|
-
import { createFavicon } from "./favicon.mjs";
|
|
4
|
-
//#region src/signals/lib/favicon.test.ts
|
|
5
|
-
afterEach(() => {
|
|
6
|
-
document.head.innerHTML = "";
|
|
7
|
-
document.body.innerHTML = "";
|
|
8
|
-
});
|
|
9
|
-
describe("createFavicon", () => {
|
|
10
|
-
it("creates a link element if none exists", () => {
|
|
11
|
-
effectScope(() => {
|
|
12
|
-
createFavicon("/icon.png");
|
|
13
|
-
});
|
|
14
|
-
const link = document.querySelector("link[rel~='icon']");
|
|
15
|
-
globalExpect(link).not.toBeNull();
|
|
16
|
-
globalExpect(link?.href).toContain("/icon.png");
|
|
17
|
-
});
|
|
18
|
-
it("updates favicon href when signal changes", () => {
|
|
19
|
-
let fav;
|
|
20
|
-
effectScope(() => {
|
|
21
|
-
fav = createFavicon("/old.png");
|
|
22
|
-
});
|
|
23
|
-
fav("/new.png");
|
|
24
|
-
globalExpect(document.querySelector("link[rel~='icon']")?.href).toContain("/new.png");
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
//#endregion
|
|
28
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { t as Computed } from "../../index-BtqiEEfc.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/signals/lib/finite-state-machine.d.ts
|
|
4
|
-
type Transitions<S extends string, E extends string> = Partial<Record<S, Partial<Record<E, S>>>>;
|
|
5
|
-
type StateHooks<S extends string> = Partial<Record<S, {
|
|
6
|
-
enter?: () => void;
|
|
7
|
-
exit?: () => void;
|
|
8
|
-
}>>;
|
|
9
|
-
type FSMResult<S extends string, E extends string> = {
|
|
10
|
-
state: Computed<S>;
|
|
11
|
-
send(event: E): void;
|
|
12
|
-
can(event: E): boolean;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Type-safe finite state machine with optional `enter` / `exit` lifecycle
|
|
16
|
-
* hooks per state.
|
|
17
|
-
*/
|
|
18
|
-
declare function createFiniteStateMachine<S extends string, E extends string>(initial: S, transitions: Transitions<S, E>, options?: {
|
|
19
|
-
on?: StateHooks<S>;
|
|
20
|
-
}): FSMResult<S, E>;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { createFiniteStateMachine };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { f as signal } from "../../signals-CLAPw8kk.mjs";
|
|
2
|
-
//#region src/signals/lib/finite-state-machine.ts
|
|
3
|
-
/**
|
|
4
|
-
* Type-safe finite state machine with optional `enter` / `exit` lifecycle
|
|
5
|
-
* hooks per state.
|
|
6
|
-
*/
|
|
7
|
-
function createFiniteStateMachine(initial, transitions, options) {
|
|
8
|
-
const state = signal(initial);
|
|
9
|
-
options?.on?.[initial]?.enter?.();
|
|
10
|
-
const send = (event) => {
|
|
11
|
-
const current = state();
|
|
12
|
-
const next = transitions[current]?.[event];
|
|
13
|
-
if (next === void 0 || next === current) return;
|
|
14
|
-
options?.on?.[current]?.exit?.();
|
|
15
|
-
state(next);
|
|
16
|
-
options?.on?.[next]?.enter?.();
|
|
17
|
-
};
|
|
18
|
-
const can = (event) => transitions[state()]?.[event] !== void 0;
|
|
19
|
-
return {
|
|
20
|
-
state,
|
|
21
|
-
send,
|
|
22
|
-
can
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
//#endregion
|
|
26
|
-
export { createFiniteStateMachine };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|