@design.estate/dees-domtools 2.5.4 → 2.5.6
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/dist_bundle/bundle.js +83 -83
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/domtools.classes.domtools.d.ts +14 -4
- package/dist_ts/domtools.classes.domtools.js +115 -80
- package/dist_ts/domtools.classes.keyboard.d.ts +9 -0
- package/dist_ts/domtools.classes.keyboard.js +349 -14
- package/dist_ts/domtools.classes.scroller.d.ts +6 -1
- package/dist_ts/domtools.classes.scroller.js +70 -29
- package/dist_ts/domtools.classes.thememanager.d.ts +3 -0
- package/dist_ts/domtools.classes.thememanager.js +21 -9
- package/dist_ts/domtools.elementbasic.js +7 -4
- package/dist_ts/domtools.pluginexports.d.ts +1 -11
- package/dist_ts/domtools.pluginexports.js +2 -12
- package/license +2 -2
- package/package.json +3 -4
- package/readme.md +187 -371
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/domtools.classes.domtools.ts +136 -81
- package/ts/domtools.classes.keyboard.ts +374 -15
- package/ts/domtools.classes.scroller.ts +80 -29
- package/ts/domtools.classes.thememanager.ts +21 -8
- package/ts/domtools.elementbasic.ts +6 -3
- package/ts/domtools.pluginexports.ts +11 -22
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import * as plugins from './domtools.plugins.js';
|
|
2
2
|
export class Scroller {
|
|
3
3
|
domtoolsInstance;
|
|
4
|
+
disposed = false;
|
|
4
5
|
// Array to store scroll callback functions.
|
|
5
6
|
scrollCallbacks = [];
|
|
6
7
|
// Lenis instance (if activated) or null.
|
|
7
8
|
lenisInstance = null;
|
|
9
|
+
lenisScrollUnsubscribe = null;
|
|
10
|
+
nativeScrollListenerAttached = false;
|
|
8
11
|
// Bound handlers to allow removal from event listeners.
|
|
9
|
-
handleNativeScroll = (
|
|
12
|
+
handleNativeScroll = (_event) => {
|
|
10
13
|
this.executeScrollCallbacks();
|
|
11
14
|
};
|
|
12
|
-
handleLenisScroll = (
|
|
15
|
+
handleLenisScroll = (_info) => {
|
|
13
16
|
this.executeScrollCallbacks();
|
|
14
17
|
};
|
|
15
18
|
constructor(domtoolsInstanceArg) {
|
|
@@ -31,19 +34,33 @@ export class Scroller {
|
|
|
31
34
|
* Detects whether native smooth scrolling is enabled.
|
|
32
35
|
*/
|
|
33
36
|
async detectNativeSmoothScroll() {
|
|
37
|
+
const rootScrollBehavior = getComputedStyle(document.documentElement).scrollBehavior;
|
|
38
|
+
const bodyScrollBehavior = document.body ? getComputedStyle(document.body).scrollBehavior : 'auto';
|
|
39
|
+
if (rootScrollBehavior === 'smooth' || bodyScrollBehavior === 'smooth') {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
34
42
|
const done = plugins.smartpromise.defer();
|
|
35
|
-
const sampleSize =
|
|
43
|
+
const sampleSize = 12;
|
|
36
44
|
const acceptableDeltaDifference = 3;
|
|
37
45
|
const minimumSmoothRatio = 0.75;
|
|
46
|
+
const timeoutInMs = 1200;
|
|
38
47
|
const eventDeltas = [];
|
|
48
|
+
const finalize = (result) => {
|
|
49
|
+
window.removeEventListener('wheel', onWheel);
|
|
50
|
+
window.clearTimeout(timeoutId);
|
|
51
|
+
done.resolve(result);
|
|
52
|
+
};
|
|
39
53
|
function onWheel(event) {
|
|
40
54
|
eventDeltas.push(event.deltaY);
|
|
41
55
|
if (eventDeltas.length >= sampleSize) {
|
|
42
|
-
window.removeEventListener('wheel', onWheel);
|
|
43
56
|
analyzeEvents();
|
|
44
57
|
}
|
|
45
58
|
}
|
|
46
59
|
function analyzeEvents() {
|
|
60
|
+
if (eventDeltas.length < 2) {
|
|
61
|
+
finalize(false);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
47
64
|
const totalDiffs = eventDeltas.length - 1;
|
|
48
65
|
let smallDiffCount = 0;
|
|
49
66
|
for (let i = 0; i < totalDiffs; i++) {
|
|
@@ -53,16 +70,12 @@ export class Scroller {
|
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
72
|
const smoothRatio = smallDiffCount / totalDiffs;
|
|
56
|
-
|
|
57
|
-
console.log('Smooth scrolling detected.');
|
|
58
|
-
done.resolve(true);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
console.log('Smooth scrolling NOT detected.');
|
|
62
|
-
done.resolve(false);
|
|
63
|
-
}
|
|
73
|
+
finalize(smoothRatio >= minimumSmoothRatio);
|
|
64
74
|
}
|
|
65
|
-
window.
|
|
75
|
+
const timeoutId = window.setTimeout(() => {
|
|
76
|
+
analyzeEvents();
|
|
77
|
+
}, timeoutInMs);
|
|
78
|
+
window.addEventListener('wheel', onWheel, { passive: true });
|
|
66
79
|
return done.promise;
|
|
67
80
|
}
|
|
68
81
|
/**
|
|
@@ -71,6 +84,12 @@ export class Scroller {
|
|
|
71
84
|
* Lenis will be destroyed immediately.
|
|
72
85
|
*/
|
|
73
86
|
async enableLenisScroll(optionsArg) {
|
|
87
|
+
if (this.disposed) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (this.lenisInstance) {
|
|
91
|
+
this.disableLenisScroll();
|
|
92
|
+
}
|
|
74
93
|
const lenis = new plugins.Lenis({
|
|
75
94
|
autoRaf: true,
|
|
76
95
|
});
|
|
@@ -85,15 +104,15 @@ export class Scroller {
|
|
|
85
104
|
// Switch from native scroll listener to Lenis scroll listener.
|
|
86
105
|
this.detachNativeScrollListener();
|
|
87
106
|
this.attachLenisScrollListener();
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
107
|
+
}
|
|
108
|
+
disableLenisScroll() {
|
|
109
|
+
if (!this.lenisInstance) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.detachLenisScrollListener();
|
|
113
|
+
this.lenisInstance.destroy();
|
|
114
|
+
this.lenisInstance = null;
|
|
115
|
+
this.attachNativeScrollListener();
|
|
97
116
|
}
|
|
98
117
|
/**
|
|
99
118
|
* Registers a callback to be executed on scroll.
|
|
@@ -101,6 +120,9 @@ export class Scroller {
|
|
|
101
120
|
*/
|
|
102
121
|
onScroll(callback) {
|
|
103
122
|
this.scrollCallbacks.push(callback);
|
|
123
|
+
return () => {
|
|
124
|
+
this.scrollCallbacks = this.scrollCallbacks.filter((existingCallback) => existingCallback !== callback);
|
|
125
|
+
};
|
|
104
126
|
}
|
|
105
127
|
/**
|
|
106
128
|
* Executes all registered scroll callbacks concurrently.
|
|
@@ -120,31 +142,50 @@ export class Scroller {
|
|
|
120
142
|
* Attaches the native scroll event listener.
|
|
121
143
|
*/
|
|
122
144
|
attachNativeScrollListener() {
|
|
145
|
+
if (this.nativeScrollListenerAttached || this.disposed) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
123
148
|
window.addEventListener('scroll', this.handleNativeScroll);
|
|
149
|
+
this.nativeScrollListenerAttached = true;
|
|
124
150
|
}
|
|
125
151
|
/**
|
|
126
152
|
* Detaches the native scroll event listener.
|
|
127
153
|
*/
|
|
128
154
|
detachNativeScrollListener() {
|
|
155
|
+
if (!this.nativeScrollListenerAttached) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
129
158
|
window.removeEventListener('scroll', this.handleNativeScroll);
|
|
159
|
+
this.nativeScrollListenerAttached = false;
|
|
130
160
|
}
|
|
131
161
|
/**
|
|
132
162
|
* Attaches the Lenis scroll event listener.
|
|
133
163
|
*/
|
|
134
164
|
attachLenisScrollListener() {
|
|
135
|
-
if (this.lenisInstance) {
|
|
136
|
-
|
|
137
|
-
this.lenisInstance.on('scroll', this.handleLenisScroll);
|
|
165
|
+
if (this.lenisInstance && !this.lenisScrollUnsubscribe) {
|
|
166
|
+
this.lenisScrollUnsubscribe = this.lenisInstance.on('scroll', this.handleLenisScroll);
|
|
138
167
|
}
|
|
139
168
|
}
|
|
140
169
|
/**
|
|
141
170
|
* Detaches the Lenis scroll event listener.
|
|
142
171
|
*/
|
|
143
172
|
detachLenisScrollListener() {
|
|
144
|
-
if (this.
|
|
145
|
-
|
|
146
|
-
this.
|
|
173
|
+
if (this.lenisScrollUnsubscribe) {
|
|
174
|
+
this.lenisScrollUnsubscribe();
|
|
175
|
+
this.lenisScrollUnsubscribe = null;
|
|
147
176
|
}
|
|
148
177
|
}
|
|
178
|
+
dispose() {
|
|
179
|
+
if (this.disposed) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this.disposed = true;
|
|
183
|
+
this.detachLenisScrollListener();
|
|
184
|
+
this.lenisInstance?.destroy();
|
|
185
|
+
this.lenisInstance = null;
|
|
186
|
+
this.detachNativeScrollListener();
|
|
187
|
+
this.scrollCallbacks = [];
|
|
188
|
+
this.sweetScroller.destroy();
|
|
189
|
+
}
|
|
149
190
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy5zY3JvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLmNsYXNzZXMuc2Nyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sUUFBUTtJQUNaLGdCQUFnQixDQUFXO0lBQzFCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFekIsNENBQTRDO0lBQ3BDLGVBQWUsR0FBc0IsRUFBRSxDQUFDO0lBRWhELHlDQUF5QztJQUNqQyxhQUFhLEdBQXlCLElBQUksQ0FBQztJQUMzQyxzQkFBc0IsR0FBd0IsSUFBSSxDQUFDO0lBQ25ELDRCQUE0QixHQUFHLEtBQUssQ0FBQztJQUU3Qyx3REFBd0Q7SUFDaEQsa0JBQWtCLEdBQUcsQ0FBQyxNQUFhLEVBQVEsRUFBRTtRQUNuRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFTSxpQkFBaUIsR0FBRyxDQUFDLEtBQW9CLEVBQVEsRUFBRTtRQUN6RCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRixZQUFZLG1CQUE2QjtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7UUFDNUMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxhQUFhLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FDcEIsVUFBdUIsRUFDdkIsVUFBOEQ7UUFFOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELElBQUksVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sT0FB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
|
|
@@ -5,6 +5,8 @@ export declare class ThemeManager {
|
|
|
5
5
|
goBrightBoolean: boolean;
|
|
6
6
|
preferredColorSchemeMediaMatch: MediaQueryList;
|
|
7
7
|
themeObservable: plugins.smartrx.rxjs.ReplaySubject<boolean>;
|
|
8
|
+
private automaticGlobalThemeChangeSubscription;
|
|
9
|
+
private readonly preferredColorSchemeChangeHandler;
|
|
8
10
|
constructor(domtoolsRefArg: DomTools);
|
|
9
11
|
enableAutomaticGlobalThemeChange(): Promise<void>;
|
|
10
12
|
private updateAllConnectedElements;
|
|
@@ -20,4 +22,5 @@ export declare class ThemeManager {
|
|
|
20
22
|
* simply toggle between bright and dark
|
|
21
23
|
*/
|
|
22
24
|
toggleDarkBright(): void;
|
|
25
|
+
dispose(): void;
|
|
23
26
|
}
|
|
@@ -5,26 +5,32 @@ export class ThemeManager {
|
|
|
5
5
|
goBrightBoolean = false;
|
|
6
6
|
preferredColorSchemeMediaMatch = window.matchMedia('(prefers-color-scheme: light)');
|
|
7
7
|
themeObservable = new plugins.smartrx.rxjs.ReplaySubject(1);
|
|
8
|
+
automaticGlobalThemeChangeSubscription = null;
|
|
9
|
+
preferredColorSchemeChangeHandler = (eventArg) => {
|
|
10
|
+
this.goBrightBoolean = eventArg.matches;
|
|
11
|
+
this.updateAllConnectedElements();
|
|
12
|
+
};
|
|
8
13
|
constructor(domtoolsRefArg) {
|
|
9
14
|
this.domtoolsRef = domtoolsRefArg;
|
|
10
15
|
// lets care
|
|
11
16
|
this.goBrightBoolean = this.preferredColorSchemeMediaMatch.matches;
|
|
12
|
-
this.preferredColorSchemeMediaMatch.addEventListener('change',
|
|
13
|
-
this.goBrightBoolean = eventArg.matches;
|
|
14
|
-
this.updateAllConnectedElements();
|
|
15
|
-
});
|
|
17
|
+
this.preferredColorSchemeMediaMatch.addEventListener('change', this.preferredColorSchemeChangeHandler);
|
|
16
18
|
this.updateAllConnectedElements();
|
|
17
19
|
}
|
|
18
20
|
async enableAutomaticGlobalThemeChange() {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
await this.domtoolsRef.domReady.promise;
|
|
22
|
+
if (!this.automaticGlobalThemeChangeSubscription) {
|
|
23
|
+
this.automaticGlobalThemeChangeSubscription = this.themeObservable.subscribe({
|
|
21
24
|
next: (goBright) => {
|
|
22
25
|
document.body.style.background = goBright ? '#fff' : '#000';
|
|
23
|
-
}
|
|
26
|
+
},
|
|
24
27
|
});
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
|
-
|
|
30
|
+
updateAllConnectedElements() {
|
|
31
|
+
if (this.domtoolsRef.disposed) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
28
34
|
this.themeObservable.next(this.goBrightBoolean);
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
@@ -48,5 +54,11 @@ export class ThemeManager {
|
|
|
48
54
|
this.goBrightBoolean = !this.goBrightBoolean;
|
|
49
55
|
this.updateAllConnectedElements();
|
|
50
56
|
}
|
|
57
|
+
dispose() {
|
|
58
|
+
this.preferredColorSchemeMediaMatch.removeEventListener('change', this.preferredColorSchemeChangeHandler);
|
|
59
|
+
this.automaticGlobalThemeChangeSubscription?.unsubscribe();
|
|
60
|
+
this.automaticGlobalThemeChangeSubscription = null;
|
|
61
|
+
this.themeObservable.complete();
|
|
62
|
+
}
|
|
51
63
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy50aGVtZW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9kb210b29scy5jbGFzc2VzLnRoZW1lbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sWUFBWTtJQUNoQixXQUFXLENBQVc7SUFFdEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4Qiw4QkFBOEIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFFcEYsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLHNDQUFzQyxHQUE2QyxJQUFJLENBQUM7SUFDL0UsaUNBQWlDLEdBQUcsQ0FBQyxRQUE2QixFQUFFLEVBQUU7UUFDckYsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUMsQ0FBQztJQUVGLFlBQVksY0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFFbEMsWUFBWTtRQUNaLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQztRQUNuRSxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLLENBQUMsZ0NBQWdDO1FBQzNDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsc0NBQXNDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7Z0JBQzNFLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDOUQsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YifQ==
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as plugins from './domtools.plugins.js';
|
|
2
1
|
import { DomTools } from './domtools.classes.domtools.js';
|
|
3
2
|
import { scrollBarStyles, globalBaseStyles } from './domtools.css.basestyles.js';
|
|
4
3
|
import { html, LitElement, css, unsafeCSS } from 'lit';
|
|
@@ -42,10 +41,14 @@ export const setup = async (elementArg, optionsArg = {}) => {
|
|
|
42
41
|
// lets do something with the element
|
|
43
42
|
// not used right now
|
|
44
43
|
}
|
|
45
|
-
domTools.runOnce('elementBasicSetup', async () => {
|
|
44
|
+
await domTools.runOnce('elementBasicSetup', async () => {
|
|
46
45
|
// bodyStyles
|
|
47
|
-
domTools.setGlobalStyles(globalBaseStyles);
|
|
46
|
+
await domTools.setGlobalStyles(globalBaseStyles);
|
|
48
47
|
});
|
|
48
|
+
if (domTools.globalStylesReady.status === 'pending') {
|
|
49
|
+
domTools.globalStylesReady.resolve();
|
|
50
|
+
}
|
|
51
|
+
await domTools.globalStylesReady.promise;
|
|
49
52
|
return domTools;
|
|
50
53
|
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuZWxlbWVudGJhc2ljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9tdG9vbHMuZWxlbWVudGJhc2ljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQW1DLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7SUFXM0IsU0FBUyxDQUFDLGVBQWUsQ0FBQztDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFBOzs7Ozs7Ozs7OztNQVdwQixlQUFlOztDQUVwQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFDeEIsVUFBdUIsRUFDdkIsYUFBeUMsRUFBRSxFQUN4QixFQUFFO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YscUNBQXFDO1FBQ3JDLHFCQUFxQjtJQUN2QixDQUFDO0lBRUQsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JELGFBQWE7UUFDYixNQUFNLFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNwRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztJQUN6QyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUMifQ==
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import * as smartmarkdown from '@push.rocks/smartmarkdown';
|
|
3
|
-
import * as smartpromise from '@push.rocks/smartpromise';
|
|
4
|
-
import SweetScroll from 'sweet-scroll';
|
|
5
|
-
import * as smartstate from '@push.rocks/smartstate';
|
|
6
|
-
import * as smartrouter from '@push.rocks/smartrouter';
|
|
7
|
-
import * as smartrx from '@push.rocks/smartrx';
|
|
8
|
-
import * as smartstring from '@push.rocks/smartstring';
|
|
9
|
-
import * as smarturl from '@push.rocks/smarturl';
|
|
10
|
-
import * as typedrequest from '@api.global/typedrequest';
|
|
11
|
-
export { smartdelay, smartmarkdown, smartpromise, SweetScroll, smartstate, smartrouter, smartrx, smartstring, smarturl, typedrequest };
|
|
1
|
+
export { smartdelay, smartmarkdown, smartpromise, SweetScroll, smartstate, smartrouter, smartrx, smartstring, smarturl, typedrequest, } from './domtools.plugins.js';
|
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import * as smartpromise from '@push.rocks/smartpromise';
|
|
4
|
-
import SweetScroll from 'sweet-scroll';
|
|
5
|
-
import * as smartstate from '@push.rocks/smartstate';
|
|
6
|
-
import * as smartrouter from '@push.rocks/smartrouter';
|
|
7
|
-
import * as smartrx from '@push.rocks/smartrx';
|
|
8
|
-
import * as smartstring from '@push.rocks/smartstring';
|
|
9
|
-
import * as smarturl from '@push.rocks/smarturl';
|
|
10
|
-
import * as typedrequest from '@api.global/typedrequest';
|
|
11
|
-
export { smartdelay, smartmarkdown, smartpromise, SweetScroll, smartstate, smartrouter, smartrx, smartstring, smarturl, typedrequest };
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMucGx1Z2luZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLnBsdWdpbmV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsVUFBVSxFQUNWLFdBQVcsRUFDWCxPQUFPLEVBQ1AsV0FBVyxFQUNYLFFBQVEsRUFDUixZQUFZLEVBQ2IsQ0FBQyJ9
|
|
1
|
+
export { smartdelay, smartmarkdown, smartpromise, SweetScroll, smartstate, smartrouter, smartrx, smartstring, smarturl, typedrequest, } from './domtools.plugins.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMucGx1Z2luZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLnBsdWdpbmV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE9BQU8sRUFDUCxXQUFXLEVBQ1gsUUFBUSxFQUNSLFlBQVksR0FDYixNQUFNLHVCQUF1QixDQUFDIn0=
|
package/license
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (c) 2020
|
|
1
|
+
Copyright (c) 2020 Task Venture Capital GmbH (hello@task.vc)
|
|
2
2
|
Copyright (c) 2017 Nathan Friend (ts-keycode-enum)
|
|
3
3
|
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
@@ -17,4 +17,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
17
17
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
18
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
19
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
-
SOFTWARE.
|
|
20
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-domtools",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A package providing tools to simplify complex CSS structures and web development tasks, featuring TypeScript support and integration with various web technologies.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"test": "(tstest test/ --verbose --logfile)",
|
|
13
|
-
"build": "(tsbuild
|
|
13
|
+
"build": "(tsbuild && tsbundle)",
|
|
14
14
|
"format": "(gitzone format)",
|
|
15
15
|
"buildDocs": "tsdoc"
|
|
16
16
|
},
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
"@git.zone/tsbuild": "^4.4.0",
|
|
19
19
|
"@git.zone/tsbundle": "^2.10.0",
|
|
20
20
|
"@git.zone/tstest": "^3.6.3",
|
|
21
|
-
"@
|
|
22
|
-
"@types/node": "^25.5.0"
|
|
21
|
+
"@types/node": "^25.6.0"
|
|
23
22
|
},
|
|
24
23
|
"dependencies": {
|
|
25
24
|
"@api.global/typedrequest": "^3.3.0",
|