@design.estate/dees-domtools 2.5.3 → 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.
@@ -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 = (event) => {
12
+ handleNativeScroll = (_event) => {
10
13
  this.executeScrollCallbacks();
11
14
  };
12
- handleLenisScroll = (info) => {
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 = 100;
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
- if (smoothRatio >= minimumSmoothRatio) {
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.addEventListener('wheel', onWheel);
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
- // Monkey-patch the destroy method so that when Lenis is destroyed,
89
- // the native scroll listener is reattached.
90
- const originalDestroy = lenis.destroy.bind(lenis);
91
- lenis.destroy = () => {
92
- originalDestroy();
93
- this.detachLenisScrollListener();
94
- this.attachNativeScrollListener();
95
- this.lenisInstance = null;
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
- // Assuming that Lenis exposes an `on` method to listen to scroll events.
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.lenisInstance) {
145
- // Assuming that Lenis exposes an `off` method to remove scroll event listeners.
146
- this.lenisInstance.off('scroll', this.handleLenisScroll);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy5zY3JvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLmNsYXNzZXMuc2Nyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sUUFBUTtJQUNaLGdCQUFnQixDQUFXO0lBRWxDLDRDQUE0QztJQUNwQyxlQUFlLEdBQXNCLEVBQUUsQ0FBQztJQUVoRCx5Q0FBeUM7SUFDakMsYUFBYSxHQUF5QixJQUFJLENBQUM7SUFFbkQsd0RBQXdEO0lBQ2hELGtCQUFrQixHQUFHLENBQUMsS0FBWSxFQUFRLEVBQUU7UUFDbEQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFTLEVBQVEsRUFBRTtRQUM5QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRixZQUFZLG1CQUE2QjtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7UUFDNUMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxhQUFhLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FDcEIsVUFBdUIsRUFDdkIsVUFBOEQ7UUFFOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELElBQUksVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7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
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', (eventArg) => {
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
- if (document.body && document.body.style) {
20
- this.themeObservable.subscribe({
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
- async updateAllConnectedElements() {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy50aGVtZW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9kb210b29scy5jbGFzc2VzLnRoZW1lbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sWUFBWTtJQUNoQixXQUFXLENBQVc7SUFFdEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4Qiw4QkFBOEIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFFcEYsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO0lBRTVFLFlBQVksY0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFFbEMsWUFBWTtRQUNaLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQztRQUNuRSxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3hDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQ0FBZ0M7UUFDM0MsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDOUQsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLDBCQUEwQjtRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU07UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0MsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuZWxlbWVudGJhc2ljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9tdG9vbHMuZWxlbWVudGJhc2ljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBbUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFakYsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7OztJQVczQixTQUFTLENBQUMsZUFBZSxDQUFDO0NBQzdCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUE7Ozs7Ozs7Ozs7O01BV3BCLGVBQWU7O0NBRXBCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUN4QixVQUF1QixFQUN2QixhQUF5QyxFQUFFLEVBQ3hCLEVBQUU7SUFDckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixxQ0FBcUM7UUFDckMscUJBQXFCO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQy9DLGFBQWE7UUFDYixRQUFRLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUMifQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuZWxlbWVudGJhc2ljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9tdG9vbHMuZWxlbWVudGJhc2ljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQW1DLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7SUFXM0IsU0FBUyxDQUFDLGVBQWUsQ0FBQztDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFBOzs7Ozs7Ozs7OztNQVdwQixlQUFlOztDQUVwQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFDeEIsVUFBdUIsRUFDdkIsYUFBeUMsRUFBRSxFQUN4QixFQUFFO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YscUNBQXFDO1FBQ3JDLHFCQUFxQjtJQUN2QixDQUFDO0lBRUQsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JELGFBQWE7UUFDYixNQUFNLFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNwRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztJQUN6QyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUMifQ==
@@ -1,11 +1 @@
1
- import * as smartdelay from '@push.rocks/smartdelay';
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
- import * as smartdelay from '@push.rocks/smartdelay';
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 };
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 Lossless GmbH (hello@lossless.com)
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",
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,16 +10,15 @@
10
10
  "license": "MIT",
11
11
  "scripts": {
12
12
  "test": "(tstest test/ --verbose --logfile)",
13
- "build": "(tsbuild --web --allowimplicitany && tsbundle npm)",
13
+ "build": "(tsbuild && tsbundle)",
14
14
  "format": "(gitzone format)",
15
15
  "buildDocs": "tsdoc"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@git.zone/tsbuild": "^4.4.0",
19
19
  "@git.zone/tsbundle": "^2.10.0",
20
- "@git.zone/tstest": "^3.6.1",
21
- "@push.rocks/tapbundle": "^6.0.3",
22
- "@types/node": "^25.5.0"
20
+ "@git.zone/tstest": "^3.6.3",
21
+ "@types/node": "^25.6.0"
23
22
  },
24
23
  "dependencies": {
25
24
  "@api.global/typedrequest": "^3.3.0",