@praxisjs/composables 1.2.1 → 1.2.2
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/CHANGELOG.md +17 -0
- package/dist/browser.d.ts +41 -18
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +114 -114
- package/dist/browser.js.map +1 -1
- package/dist/dom.d.ts +24 -16
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +75 -84
- package/dist/dom.js.map +1 -1
- package/dist/list.d.ts +4 -1
- package/dist/list.d.ts.map +1 -1
- package/dist/list.js +29 -11
- package/dist/list.js.map +1 -1
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +32 -12
- package/dist/upload.js.map +1 -1
- package/dist/utilities.d.ts +13 -1
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +88 -26
- package/dist/utilities.js.map +1 -1
- package/package.json +14 -5
- package/src/browser.ts +129 -115
- package/src/dom.ts +77 -85
- package/src/list.ts +29 -10
- package/src/upload.ts +30 -11
- package/src/utilities.ts +101 -24
- package/dist/__tests__/browser.test.d.ts +0 -2
- package/dist/__tests__/browser.test.d.ts.map +0 -1
- package/dist/__tests__/browser.test.js +0 -350
- package/dist/__tests__/browser.test.js.map +0 -1
- package/dist/__tests__/dom.test.d.ts +0 -2
- package/dist/__tests__/dom.test.d.ts.map +0 -1
- package/dist/__tests__/dom.test.js +0 -463
- package/dist/__tests__/dom.test.js.map +0 -1
- package/dist/__tests__/list.test.d.ts +0 -2
- package/dist/__tests__/list.test.d.ts.map +0 -1
- package/dist/__tests__/list.test.js +0 -156
- package/dist/__tests__/list.test.js.map +0 -1
- package/dist/__tests__/upload.test.d.ts +0 -2
- package/dist/__tests__/upload.test.d.ts.map +0 -1
- package/dist/__tests__/upload.test.js +0 -531
- package/dist/__tests__/upload.test.js.map +0 -1
- package/dist/__tests__/utilities.test.d.ts +0 -2
- package/dist/__tests__/utilities.test.d.ts.map +0 -1
- package/dist/__tests__/utilities.test.js +0 -251
- package/dist/__tests__/utilities.test.js.map +0 -1
- package/src/__tests__/browser.test.ts +0 -414
- package/src/__tests__/dom.test.ts +0 -567
- package/src/__tests__/list.test.ts +0 -210
- package/src/__tests__/upload.test.ts +0 -639
- package/src/__tests__/utilities.test.ts +0 -327
- package/tsconfig.json +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @praxisjs/composables
|
|
2
2
|
|
|
3
|
+
## 1.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 75115a9: Published packages no longer contain their tests: package builds compile `src` without `src/**/__tests__` (through a `tsconfig.build.json`), and each package's `files` leaves test sources and stale compiled tests out of the tarball. `pnpm typecheck` still type-checks the tests.
|
|
8
|
+
- 75115a9: Faster utils packages and fixes. `@praxisjs/css`: shared per-field state for `@Styled`, `@Param` and `@Style`, a prototype-based `css()` builder, cached token reads and a direct `cx()`. Static extraction now keeps `globalStyle()` layers and supports `preflight()`. Server renders collect theme vars, and instantiating a `@Themed` class keeps the active theme. `@praxisjs/composables`: listeners, observers and timers start on mount. `Idle` and `TimeAgo` no longer reschedule or poll timers, and `FileUpload.clear()` no longer starts discarded uploads. `add()` called from an effect no longer subscribes it to the list. `@praxisjs/concurrent`: cached signal detection, direct signal views, O(1) queues, and `@Pool` no longer subscribes the calling effect.
|
|
9
|
+
- 75115a9: Smaller production bundles. The framework and feature packages are marked `"sideEffects": false`, so bundlers leave out the modules an app does not use (`For`/`Index` and `selector()` were kept in every bundle by their shape keepers). `@praxisjs/core`'s graph gates its observer instrumentation on a boolean that minifiers fold away when no observer is ever installed. `@praxisjs/runtime` passes `Index`'s positional update to the list view, so `For`-only apps leave it out, and builds its event prop table from camel-case names. `@praxisjs/devtools` is built one file per module and its decorators check `process.env.NODE_ENV` inline, so `@Trace`/`@Debug` in production code no longer bundle the registry and the panel. `@praxisjs/vite-plugin` serves TypeScript's decorator helpers and the claimed fields' helper from one virtual module (`virtual:praxisjs/decorators`) instead of writing them into every decorated file, and replaces the identical copies `tsc` wrote into ES module libraries.
|
|
10
|
+
- Updated dependencies [75115a9]
|
|
11
|
+
- Updated dependencies [75115a9]
|
|
12
|
+
- Updated dependencies [75115a9]
|
|
13
|
+
- Updated dependencies [75115a9]
|
|
14
|
+
- Updated dependencies [75115a9]
|
|
15
|
+
- Updated dependencies [75115a9]
|
|
16
|
+
- Updated dependencies [75115a9]
|
|
17
|
+
- @praxisjs/core@2.3.0
|
|
18
|
+
- @praxisjs/shared@0.3.2
|
|
19
|
+
|
|
3
20
|
## 1.2.1
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/dist/browser.d.ts
CHANGED
|
@@ -3,47 +3,70 @@ export declare class MediaQuery extends Composable {
|
|
|
3
3
|
private readonly query;
|
|
4
4
|
matches: boolean;
|
|
5
5
|
private _mql?;
|
|
6
|
-
private
|
|
7
|
-
private
|
|
6
|
+
private readonly _matches;
|
|
7
|
+
private readonly _onChange;
|
|
8
8
|
constructor(query: string);
|
|
9
|
-
setup():
|
|
9
|
+
setup(): {
|
|
10
|
+
matches: import("@praxisjs/shared").Signal<boolean>;
|
|
11
|
+
};
|
|
12
|
+
onMount(): void;
|
|
10
13
|
onUnmount(): void;
|
|
11
14
|
}
|
|
12
15
|
export declare class ColorScheme extends Composable {
|
|
13
16
|
isDark: boolean;
|
|
14
17
|
isLight: boolean;
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
private readonly _query;
|
|
19
|
+
setup(): {
|
|
20
|
+
isDark: import("@praxisjs/shared").Signal<boolean>;
|
|
21
|
+
isLight: import("@praxisjs/shared").Computed<boolean>;
|
|
22
|
+
};
|
|
23
|
+
onMount(): void;
|
|
19
24
|
onUnmount(): void;
|
|
20
25
|
}
|
|
21
26
|
export declare class Mouse extends Composable {
|
|
22
27
|
x: number;
|
|
23
28
|
y: number;
|
|
24
|
-
private
|
|
25
|
-
private
|
|
26
|
-
|
|
29
|
+
private readonly _x;
|
|
30
|
+
private readonly _y;
|
|
31
|
+
private readonly _onMove;
|
|
32
|
+
setup(): {
|
|
33
|
+
x: import("@praxisjs/shared").Signal<number>;
|
|
34
|
+
y: import("@praxisjs/shared").Signal<number>;
|
|
35
|
+
};
|
|
36
|
+
onMount(): void;
|
|
27
37
|
onUnmount(): void;
|
|
28
38
|
}
|
|
29
39
|
export declare class KeyCombo extends Composable {
|
|
30
|
-
private readonly combo;
|
|
31
40
|
pressed: boolean;
|
|
32
|
-
private
|
|
33
|
-
private
|
|
34
|
-
private
|
|
41
|
+
private readonly _pressed;
|
|
42
|
+
private readonly _key;
|
|
43
|
+
private readonly _ctrl;
|
|
44
|
+
private readonly _shift;
|
|
45
|
+
private readonly _alt;
|
|
46
|
+
private readonly _meta;
|
|
47
|
+
private readonly _onKeyDown;
|
|
48
|
+
private readonly _onKeyUp;
|
|
35
49
|
constructor(combo: string);
|
|
36
|
-
setup():
|
|
50
|
+
setup(): {
|
|
51
|
+
pressed: import("@praxisjs/shared").Signal<boolean>;
|
|
52
|
+
};
|
|
53
|
+
onMount(): void;
|
|
37
54
|
onUnmount(): void;
|
|
38
55
|
}
|
|
39
56
|
export declare class Idle extends Composable {
|
|
40
57
|
private readonly timeout;
|
|
41
58
|
idle: boolean;
|
|
42
|
-
private
|
|
59
|
+
private readonly _idle;
|
|
43
60
|
private _timer?;
|
|
44
|
-
private
|
|
61
|
+
private _lastActivity;
|
|
62
|
+
private readonly _onActivity;
|
|
63
|
+
private readonly _check;
|
|
45
64
|
constructor(timeout?: number);
|
|
46
|
-
|
|
65
|
+
private _schedule;
|
|
66
|
+
setup(): {
|
|
67
|
+
idle: import("@praxisjs/shared").Signal<boolean>;
|
|
68
|
+
};
|
|
69
|
+
onMount(): void;
|
|
47
70
|
onUnmount(): void;
|
|
48
71
|
}
|
|
49
72
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,qBAAa,UAAW,SAAQ,UAAU;IAU5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAT1B,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,IAAI,CAAC,CAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;gBAE2B,KAAK,EAAE,MAAM;IAI1C,KAAK;;;IAQL,OAAO;IAOP,SAAS;CAGV;AAED,qBAAa,WAAY,SAAQ,UAAU;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;IAEzE,KAAK;;;;IAML,OAAO;IAIP,SAAS;CAGV;AAED,qBAAa,KAAM,SAAQ,UAAU;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAKtB;IAEF,KAAK;;;;IAIL,OAAO;IAIP,SAAS;CAGV;AAID,qBAAa,QAAS,SAAQ,UAAU;IAC9B,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAUzB;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;gBAEU,KAAK,EAAE,MAAM;IAUzB,KAAK;;;IAIL,OAAO;IAMP,SAAS;CAIV;AAID,qBAAa,IAAK,SAAQ,UAAU;IA2BtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IA1B5B,IAAI,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAgC;IAC/C,OAAO,CAAC,aAAa,CAAK;IAI1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAM1B;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAQrB;gBAE2B,OAAO,SAAS;IAI7C,OAAO,CAAC,SAAS;IAIjB,KAAK;;;IAIL,OAAO;IASP,SAAS;CAOV"}
|
package/dist/browser.js
CHANGED
|
@@ -1,163 +1,163 @@
|
|
|
1
1
|
import { Composable } from "@praxisjs/core";
|
|
2
|
-
import {
|
|
2
|
+
import { computed, endBatch, signal, startBatch } from "@praxisjs/core/internal";
|
|
3
|
+
const hasWindow = typeof window !== "undefined";
|
|
4
|
+
// Listeners and timers start in onMount and stop in onUnmount: setup() runs when the component is
|
|
5
|
+
// constructed, which also happens for components that never mount (and on the server).
|
|
3
6
|
export class MediaQuery extends Composable {
|
|
4
7
|
query;
|
|
5
8
|
_mql;
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
_matches = signal(false);
|
|
10
|
+
_onChange = (e) => {
|
|
11
|
+
this._matches.set(e.matches);
|
|
12
|
+
};
|
|
8
13
|
constructor(query) {
|
|
9
14
|
super();
|
|
10
15
|
this.query = query;
|
|
11
16
|
}
|
|
12
17
|
setup() {
|
|
13
|
-
if (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this._mql
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
if (hasWindow) {
|
|
19
|
+
this._mql ??= window.matchMedia(this.query);
|
|
20
|
+
this._matches.set(this._mql.matches);
|
|
21
|
+
}
|
|
22
|
+
return { matches: this._matches };
|
|
23
|
+
}
|
|
24
|
+
onMount() {
|
|
25
|
+
const mql = this._mql;
|
|
26
|
+
if (!mql)
|
|
27
|
+
return;
|
|
28
|
+
this._matches.set(mql.matches);
|
|
29
|
+
mql.addEventListener("change", this._onChange);
|
|
23
30
|
}
|
|
24
31
|
onUnmount() {
|
|
25
|
-
|
|
26
|
-
this._mql.removeEventListener("change", this._handler);
|
|
27
|
-
}
|
|
32
|
+
this._mql?.removeEventListener("change", this._onChange);
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
export class ColorScheme extends Composable {
|
|
31
|
-
|
|
32
|
-
_handler;
|
|
33
|
-
_view;
|
|
36
|
+
_query = new MediaQuery("(prefers-color-scheme: dark)");
|
|
34
37
|
setup() {
|
|
35
|
-
|
|
36
|
-
return this._view;
|
|
37
|
-
this._mql = window.matchMedia("(prefers-color-scheme: dark)");
|
|
38
|
-
const isDark = signal(this._mql.matches);
|
|
38
|
+
const isDark = this._query.setup().matches;
|
|
39
39
|
const isLight = computed(() => !isDark());
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.
|
|
44
|
-
this._view = { isDark, isLight };
|
|
45
|
-
return this._view;
|
|
40
|
+
return { isDark, isLight };
|
|
41
|
+
}
|
|
42
|
+
onMount() {
|
|
43
|
+
this._query.onMount();
|
|
46
44
|
}
|
|
47
45
|
onUnmount() {
|
|
48
|
-
|
|
49
|
-
this._mql.removeEventListener("change", this._handler);
|
|
50
|
-
}
|
|
46
|
+
this._query.onUnmount();
|
|
51
47
|
}
|
|
52
48
|
}
|
|
53
49
|
export class Mouse extends Composable {
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
_x = signal(0);
|
|
51
|
+
_y = signal(0);
|
|
52
|
+
_onMove = (e) => {
|
|
53
|
+
startBatch();
|
|
54
|
+
this._x.set(e.clientX);
|
|
55
|
+
this._y.set(e.clientY);
|
|
56
|
+
endBatch();
|
|
57
|
+
};
|
|
56
58
|
setup() {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this._handler = (e) => {
|
|
62
|
-
batch(() => {
|
|
63
|
-
x.set(e.clientX);
|
|
64
|
-
y.set(e.clientY);
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
window.addEventListener("mousemove", this._handler);
|
|
68
|
-
this._view = { x, y };
|
|
69
|
-
return this._view;
|
|
59
|
+
return { x: this._x, y: this._y };
|
|
60
|
+
}
|
|
61
|
+
onMount() {
|
|
62
|
+
window.addEventListener("mousemove", this._onMove);
|
|
70
63
|
}
|
|
71
64
|
onUnmount() {
|
|
72
|
-
window.removeEventListener("mousemove", this.
|
|
65
|
+
window.removeEventListener("mousemove", this._onMove);
|
|
73
66
|
}
|
|
74
67
|
}
|
|
68
|
+
const MODIFIERS = ["ctrl", "shift", "alt", "meta"];
|
|
75
69
|
export class KeyCombo extends Composable {
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
70
|
+
_pressed = signal(false);
|
|
71
|
+
// Parsed once: the keydown handler runs for every key press on the page.
|
|
72
|
+
_key;
|
|
73
|
+
_ctrl;
|
|
74
|
+
_shift;
|
|
75
|
+
_alt;
|
|
76
|
+
_meta;
|
|
77
|
+
_onKeyDown = (e) => {
|
|
78
|
+
if ((!this._ctrl || e.ctrlKey) &&
|
|
79
|
+
(!this._shift || e.shiftKey) &&
|
|
80
|
+
(!this._alt || e.altKey) &&
|
|
81
|
+
(!this._meta || e.metaKey) &&
|
|
82
|
+
e.key.toLowerCase() === this._key) {
|
|
83
|
+
this._pressed.set(true);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
_onKeyUp = () => {
|
|
87
|
+
this._pressed.set(false);
|
|
88
|
+
};
|
|
81
89
|
constructor(combo) {
|
|
82
90
|
super();
|
|
83
|
-
|
|
91
|
+
const parts = combo.toLowerCase().split("+").map((p) => p.trim());
|
|
92
|
+
this._key = parts.find((p) => !MODIFIERS.includes(p));
|
|
93
|
+
this._ctrl = parts.includes("ctrl");
|
|
94
|
+
this._shift = parts.includes("shift");
|
|
95
|
+
this._alt = parts.includes("alt");
|
|
96
|
+
this._meta = parts.includes("meta");
|
|
84
97
|
}
|
|
85
98
|
setup() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
.
|
|
92
|
-
|
|
93
|
-
const modifiers = ["ctrl", "shift", "alt", "meta"];
|
|
94
|
-
const key = parts.find((p) => !modifiers.includes(p));
|
|
95
|
-
// A combo with no non-modifier key is invalid and should never fire
|
|
96
|
-
if (!key) {
|
|
97
|
-
this._keyupHandler = () => {
|
|
98
|
-
pressed.set(false);
|
|
99
|
-
};
|
|
100
|
-
window.addEventListener("keydown", this._keydownHandler);
|
|
101
|
-
window.addEventListener("keyup", this._keyupHandler);
|
|
102
|
-
this._view = { pressed };
|
|
103
|
-
return this._view;
|
|
104
|
-
}
|
|
105
|
-
this._keydownHandler = (e) => {
|
|
106
|
-
const ctrl = parts.includes("ctrl") ? e.ctrlKey : true;
|
|
107
|
-
const shift = parts.includes("shift") ? e.shiftKey : true;
|
|
108
|
-
const alt = parts.includes("alt") ? e.altKey : true;
|
|
109
|
-
const meta = parts.includes("meta") ? e.metaKey : true;
|
|
110
|
-
if (ctrl && shift && alt && meta && e.key.toLowerCase() === key) {
|
|
111
|
-
pressed.set(true);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
this._keyupHandler = () => {
|
|
115
|
-
pressed.set(false);
|
|
116
|
-
};
|
|
117
|
-
window.addEventListener("keydown", this._keydownHandler);
|
|
118
|
-
window.addEventListener("keyup", this._keyupHandler);
|
|
119
|
-
this._view = { pressed };
|
|
120
|
-
return this._view;
|
|
99
|
+
return { pressed: this._pressed };
|
|
100
|
+
}
|
|
101
|
+
onMount() {
|
|
102
|
+
// A combo with no non-modifier key is invalid and never fires.
|
|
103
|
+
if (this._key !== undefined)
|
|
104
|
+
window.addEventListener("keydown", this._onKeyDown);
|
|
105
|
+
window.addEventListener("keyup", this._onKeyUp);
|
|
121
106
|
}
|
|
122
107
|
onUnmount() {
|
|
123
|
-
window.removeEventListener("keydown", this.
|
|
124
|
-
window.removeEventListener("keyup", this.
|
|
108
|
+
window.removeEventListener("keydown", this._onKeyDown);
|
|
109
|
+
window.removeEventListener("keyup", this._onKeyUp);
|
|
125
110
|
}
|
|
126
111
|
}
|
|
112
|
+
const ACTIVITY_EVENTS = ["mousemove", "keydown", "click", "scroll", "touchstart"];
|
|
127
113
|
export class Idle extends Composable {
|
|
128
114
|
timeout;
|
|
129
|
-
|
|
115
|
+
_idle = signal(false);
|
|
130
116
|
_timer;
|
|
131
|
-
|
|
117
|
+
_lastActivity = 0;
|
|
118
|
+
// Activity only records a timestamp: rescheduling a timer on every mousemove or scroll event was
|
|
119
|
+
// the expensive part. The single pending timer checks the timestamp when it fires.
|
|
120
|
+
_onActivity = () => {
|
|
121
|
+
this._lastActivity = Date.now();
|
|
122
|
+
if (this._timer === undefined) {
|
|
123
|
+
this._idle.set(false);
|
|
124
|
+
this._schedule(this.timeout);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
_check = () => {
|
|
128
|
+
const remaining = this.timeout - (Date.now() - this._lastActivity);
|
|
129
|
+
if (remaining > 0) {
|
|
130
|
+
this._schedule(remaining);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this._timer = undefined;
|
|
134
|
+
this._idle.set(true);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
132
137
|
constructor(timeout = 60_000) {
|
|
133
138
|
super();
|
|
134
139
|
this.timeout = timeout;
|
|
135
140
|
}
|
|
141
|
+
_schedule(delay) {
|
|
142
|
+
this._timer = setTimeout(this._check, delay);
|
|
143
|
+
}
|
|
136
144
|
setup() {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
};
|
|
147
|
-
["mousemove", "keydown", "click", "scroll", "touchstart"].forEach((event) => {
|
|
148
|
-
window.addEventListener(event, reset, { passive: true });
|
|
149
|
-
this._listeners.push([event, reset]);
|
|
150
|
-
});
|
|
151
|
-
reset();
|
|
152
|
-
this._view = { idle };
|
|
153
|
-
return this._view;
|
|
145
|
+
return { idle: this._idle };
|
|
146
|
+
}
|
|
147
|
+
onMount() {
|
|
148
|
+
for (const event of ACTIVITY_EVENTS) {
|
|
149
|
+
window.addEventListener(event, this._onActivity, { passive: true });
|
|
150
|
+
}
|
|
151
|
+
clearTimeout(this._timer);
|
|
152
|
+
this._timer = undefined;
|
|
153
|
+
this._onActivity();
|
|
154
154
|
}
|
|
155
155
|
onUnmount() {
|
|
156
156
|
clearTimeout(this._timer);
|
|
157
|
-
this.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
this._timer = undefined;
|
|
158
|
+
for (const event of ACTIVITY_EVENTS) {
|
|
159
|
+
window.removeEventListener(event, this._onActivity);
|
|
160
|
+
}
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/dom.d.ts
CHANGED
|
@@ -2,9 +2,14 @@ import { Composable } from "@praxisjs/core";
|
|
|
2
2
|
export declare class WindowSize extends Composable {
|
|
3
3
|
width: number;
|
|
4
4
|
height: number;
|
|
5
|
-
private
|
|
6
|
-
private
|
|
7
|
-
|
|
5
|
+
private readonly _width;
|
|
6
|
+
private readonly _height;
|
|
7
|
+
private readonly _onResize;
|
|
8
|
+
setup(): {
|
|
9
|
+
width: import("@praxisjs/shared").Signal<number>;
|
|
10
|
+
height: import("@praxisjs/shared").Signal<number>;
|
|
11
|
+
};
|
|
12
|
+
onMount(): void;
|
|
8
13
|
onUnmount(): void;
|
|
9
14
|
}
|
|
10
15
|
export declare class ScrollPosition extends Composable {
|
|
@@ -12,10 +17,10 @@ export declare class ScrollPosition extends Composable {
|
|
|
12
17
|
y: number;
|
|
13
18
|
private readonly _ref?;
|
|
14
19
|
private readonly _staticTarget?;
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private
|
|
20
|
+
private readonly _x;
|
|
21
|
+
private readonly _y;
|
|
22
|
+
private _target;
|
|
23
|
+
private readonly _onScroll;
|
|
19
24
|
constructor(target?: HTMLElement | Window | {
|
|
20
25
|
current: HTMLElement | null;
|
|
21
26
|
});
|
|
@@ -32,13 +37,15 @@ export declare class ElementSize extends Composable {
|
|
|
32
37
|
width: number;
|
|
33
38
|
height: number;
|
|
34
39
|
private _observer?;
|
|
35
|
-
private _width;
|
|
36
|
-
private _height;
|
|
37
|
-
private _view?;
|
|
40
|
+
private readonly _width;
|
|
41
|
+
private readonly _height;
|
|
38
42
|
constructor(ref: {
|
|
39
43
|
current: HTMLElement | null;
|
|
40
44
|
});
|
|
41
|
-
setup():
|
|
45
|
+
setup(): {
|
|
46
|
+
width: import("@praxisjs/shared").Signal<number>;
|
|
47
|
+
height: import("@praxisjs/shared").Signal<number>;
|
|
48
|
+
};
|
|
42
49
|
onMount(): void;
|
|
43
50
|
onUnmount(): void;
|
|
44
51
|
}
|
|
@@ -47,22 +54,23 @@ export declare class Intersection extends Composable {
|
|
|
47
54
|
private readonly options?;
|
|
48
55
|
visible: boolean;
|
|
49
56
|
private _observer?;
|
|
50
|
-
private _visible;
|
|
51
|
-
private _view?;
|
|
57
|
+
private readonly _visible;
|
|
52
58
|
constructor(ref: {
|
|
53
59
|
current: HTMLElement | null;
|
|
54
60
|
}, options?: IntersectionObserverInit | undefined);
|
|
55
|
-
setup():
|
|
61
|
+
setup(): {
|
|
62
|
+
visible: import("@praxisjs/shared").Signal<boolean>;
|
|
63
|
+
};
|
|
56
64
|
onMount(): void;
|
|
57
65
|
onUnmount(): void;
|
|
58
66
|
}
|
|
59
67
|
export declare class Focus extends Composable {
|
|
60
68
|
private readonly ref;
|
|
61
69
|
focused: boolean;
|
|
62
|
-
private _focused;
|
|
70
|
+
private readonly _focused;
|
|
71
|
+
private _el;
|
|
63
72
|
private readonly _onFocus;
|
|
64
73
|
private readonly _onBlur;
|
|
65
|
-
private _mounted;
|
|
66
74
|
constructor(ref: {
|
|
67
75
|
current: HTMLElement | null;
|
|
68
76
|
});
|
package/dist/dom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,qBAAa,UAAW,SAAQ,UAAU;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IAEtE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAKxB;IAEF,KAAK;;;;IAIL,OAAO;IAKP,SAAS;CAGV;AAED,qBAAa,cAAe,SAAQ,UAAU;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,OAAO,CAAqC;IAEpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAYxB;gBAGA,MAAM,GAAE,WAAW,GAAG,MAAM,GAAG;QAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;KAAW;IAUzE,OAAO,CAAC,cAAc;IAKtB,KAAK;;;;IAIL,OAAO;IASP,SAAS;CAIV;AAED,qBAAa,WAAY,SAAQ,UAAU;IAQ7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAER,GAAG,EAAE;QAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE;IAIjE,KAAK;;;;IAIL,OAAO;IAgBP,SAAS;CAGV;AAED,qBAAa,YAAa,SAAQ,UAAU;IAOxC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAPnB,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAGvB,GAAG,EAAE;QAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,EACpC,OAAO,CAAC,EAAE,wBAAwB,YAAA;IAKrD,KAAK;;;IAIL,OAAO;IASP,SAAS;CAGV;AAED,qBAAa,KAAM,SAAQ,UAAU;IAavB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAZxB,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,GAAG,CAA4B;IAEvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;IACF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;gBAE2B,GAAG,EAAE;QAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE;IAIjE,KAAK;;;IAIL,OAAO;IAWP,SAAS;CAOV"}
|