@schukai/monster 1.15.0 → 1.15.2
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG +6 -0
- package/README.md +5 -5
- package/dist/modules/constants.js +1 -1
- package/dist/modules/constraints/abstract.js +2 -2
- package/dist/modules/constraints/abstractoperator.js +2 -2
- package/dist/modules/constraints/andoperator.js +2 -2
- package/dist/modules/constraints/invalid.js +2 -2
- package/dist/modules/constraints/isarray.js +2 -2
- package/dist/modules/constraints/isobject.js +2 -2
- package/dist/modules/constraints/namespace.js +1 -1
- package/dist/modules/constraints/oroperator.js +2 -2
- package/dist/modules/constraints/valid.js +2 -2
- package/dist/modules/data/buildmap.js +2 -2
- package/dist/modules/data/diff.js +2 -2
- package/dist/modules/data/extend.js +2 -2
- package/dist/modules/data/namespace.js +1 -1
- package/dist/modules/data/pathfinder.js +2 -2
- package/dist/modules/data/pipe.js +2 -2
- package/dist/modules/data/transformer.js +2 -2
- package/dist/modules/dom/assembler.js +2 -2
- package/dist/modules/dom/attributes.js +2 -2
- package/dist/modules/dom/constants.js +2 -2
- package/dist/modules/dom/customcontrol.js +2 -2
- package/dist/modules/dom/customelement.js +2 -2
- package/dist/modules/dom/events.js +2 -2
- package/dist/modules/dom/locale.js +2 -2
- package/dist/modules/dom/namespace.js +1 -1
- package/dist/modules/dom/template.js +2 -2
- package/dist/modules/dom/theme.js +2 -2
- package/dist/modules/dom/updater.js +2 -2
- package/dist/modules/dom/util.js +2 -2
- package/dist/modules/i18n/locale.js +2 -2
- package/dist/modules/i18n/namespace.js +1 -1
- package/dist/modules/i18n/provider.js +2 -2
- package/dist/modules/i18n/providers/fetch.js +2 -2
- package/dist/modules/i18n/providers/namespace.js +1 -1
- package/dist/modules/i18n/translations.js +2 -2
- package/dist/modules/logging/handler/console.js +2 -2
- package/dist/modules/logging/handler/namespace.js +1 -1
- package/dist/modules/logging/handler.js +2 -2
- package/dist/modules/logging/logentry.js +2 -2
- package/dist/modules/logging/logger.js +2 -2
- package/dist/modules/logging/namespace.js +1 -1
- package/dist/modules/math/namespace.js +1 -1
- package/dist/modules/math/random.js +2 -2
- package/dist/modules/monster.js +2 -2
- package/dist/modules/namespace.js +2 -2
- package/dist/modules/text/formatter.js +2 -2
- package/dist/modules/text/namespace.js +1 -1
- package/dist/modules/types/base.js +2 -2
- package/dist/modules/types/basewithoptions.js +2 -2
- package/dist/modules/types/global.js +2 -2
- package/dist/modules/types/id.js +2 -2
- package/dist/modules/types/is.js +2 -2
- package/dist/modules/types/namespace.js +1 -1
- package/dist/modules/types/observer.js +2 -2
- package/dist/modules/types/observerlist.js +2 -2
- package/dist/modules/types/proxyobserver.js +2 -2
- package/dist/modules/types/queue.js +2 -2
- package/dist/modules/types/randomid.js +2 -2
- package/dist/modules/types/stack.js +2 -2
- package/dist/modules/types/tokenlist.js +2 -2
- package/dist/modules/types/typeof.js +2 -2
- package/dist/modules/types/uniquequeue.js +2 -2
- package/dist/modules/types/validate.js +2 -2
- package/dist/modules/types/version.js +2 -2
- package/dist/modules/util/clone.js +2 -2
- package/dist/modules/util/comparator.js +2 -2
- package/dist/modules/util/freeze.js +2 -2
- package/dist/modules/util/namespace.js +1 -1
- package/dist/monster.dev.js +7321 -7322
- package/dist/monster.dev.js.map +1 -1
- package/dist/monster.js +2 -9
- package/package.json +1 -1
- package/source/constraints/abstract.js +1 -1
- package/source/constraints/abstractoperator.js +2 -2
- package/source/constraints/andoperator.js +7 -7
- package/source/constraints/invalid.js +4 -4
- package/source/constraints/isarray.js +6 -6
- package/source/constraints/isobject.js +6 -6
- package/source/constraints/namespace.js +2 -2
- package/source/constraints/oroperator.js +7 -7
- package/source/constraints/valid.js +6 -6
- package/source/data/buildmap.js +3 -3
- package/source/data/diff.js +8 -8
- package/source/data/extend.js +6 -6
- package/source/data/namespace.js +2 -2
- package/source/data/pathfinder.js +12 -12
- package/source/data/pipe.js +7 -7
- package/source/data/transformer.js +9 -9
- package/source/dom/assembler.js +6 -6
- package/source/dom/attributes.js +26 -27
- package/source/dom/constants.js +1 -1
- package/source/dom/customcontrol.js +80 -82
- package/source/dom/customelement.js +87 -87
- package/source/dom/events.js +7 -7
- package/source/dom/locale.js +4 -4
- package/source/dom/namespace.js +2 -2
- package/source/dom/template.js +23 -18
- package/source/dom/theme.js +7 -8
- package/source/dom/updater.js +18 -23
- package/source/dom/util.js +10 -10
- package/source/i18n/locale.js +5 -5
- package/source/i18n/namespace.js +1 -1
- package/source/i18n/provider.js +4 -4
- package/source/i18n/providers/fetch.js +7 -7
- package/source/i18n/translations.js +4 -4
- package/source/logging/handler/console.js +4 -4
- package/source/logging/handler/namespace.js +1 -1
- package/source/logging/handler.js +7 -7
- package/source/logging/logentry.js +4 -4
- package/source/logging/logger.js +4 -4
- package/source/logging/namespace.js +2 -2
- package/source/math/namespace.js +2 -2
- package/source/math/random.js +4 -4
- package/source/monster.js +42 -44
- package/source/namespace.js +2 -2
- package/source/text/formatter.js +5 -5
- package/source/text/namespace.js +1 -1
- package/source/types/base.js +3 -3
- package/source/types/basewithoptions.js +7 -7
- package/source/types/global.js +6 -6
- package/source/types/id.js +5 -5
- package/source/types/is.js +21 -21
- package/source/types/namespace.js +2 -2
- package/source/types/observer.js +6 -6
- package/source/types/observerlist.js +3 -3
- package/source/types/proxyobserver.js +21 -21
- package/source/types/queue.js +4 -4
- package/source/types/randomid.js +5 -5
- package/source/types/stack.js +3 -3
- package/source/types/tokenlist.js +8 -8
- package/source/types/typeof.js +4 -4
- package/source/types/uniquequeue.js +7 -7
- package/source/types/validate.js +26 -26
- package/source/types/version.js +7 -7
- package/source/util/clone.js +5 -5
- package/source/util/comparator.js +6 -6
- package/source/util/freeze.js +6 -6
- package/source/util/namespace.js +2 -2
- package/test/cases/dom/template.js +40 -1
- package/test/cases/monster.js +1 -1
- package/test/web/monster-dev.html +3 -3
- package/test/web/monster.html +2 -2
- package/test/web/test.html +3 -3
- package/test/web/tests.js +2 -2
@@ -1,22 +1,22 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
+
import {PROPERTY_KEY_INTERNALDATA} from "../constants.js";
|
4
|
+
import {extend} from "../data/extend.js";
|
5
|
+
import {Pathfinder} from "../data/pathfinder.js";
|
3
6
|
/**
|
4
7
|
* @author schukai GmbH
|
5
8
|
*/
|
6
|
-
import {
|
9
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
10
|
+
import {getGlobalObject} from "../types/global.js";
|
11
|
+
import {isString} from "../types/is.js";
|
7
12
|
import {Observer} from "../types/observer.js";
|
8
13
|
import {ProxyObserver} from "../types/proxyobserver.js";
|
9
|
-
import {
|
10
|
-
import {extend} from "../data/extend.js";
|
14
|
+
import {validateFunction, validateObject} from "../types/validate.js";
|
11
15
|
import {clone} from "../util/clone.js";
|
12
|
-
import {
|
16
|
+
import {addToObjectLink, getLinkedObjects, hasObjectLink} from "./attributes.js";
|
13
17
|
import {ATTRIBUTE_OPTIONS, OBJECTLINK_KEY_UPDATER} from "./constants.js";
|
14
18
|
import {findDocumentTemplate, Template} from "./template.js";
|
15
|
-
import {
|
16
|
-
import {getGlobalObject} from "../types/global.js";
|
17
|
-
import {validateFunction, validateObject} from "../types/validate.js";
|
18
|
-
import {isString} from "../types/is.js";
|
19
|
-
import {PROPERTY_KEY_INTERNALDATA} from "../constants.js";
|
19
|
+
import {Updater} from "./updater.js";
|
20
20
|
|
21
21
|
/**
|
22
22
|
* @private
|
@@ -50,7 +50,7 @@ const assembleMethodSymbol = Symbol('assembleMethodSymbol');
|
|
50
50
|
*
|
51
51
|
* ```
|
52
52
|
* <script type="module">
|
53
|
-
* import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
53
|
+
* import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/customelement.js';
|
54
54
|
* console.log(new Monster.DOM.CustomElement())
|
55
55
|
* </script>
|
56
56
|
* ```
|
@@ -59,7 +59,7 @@ const assembleMethodSymbol = Symbol('assembleMethodSymbol');
|
|
59
59
|
*
|
60
60
|
* ```
|
61
61
|
* <script type="module">
|
62
|
-
* import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
62
|
+
* import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/customelement.js';
|
63
63
|
* console.log(new CustomElement())
|
64
64
|
* </script>
|
65
65
|
* ```
|
@@ -163,33 +163,13 @@ class CustomElement extends HTMLElement {
|
|
163
163
|
}
|
164
164
|
|
165
165
|
/**
|
166
|
-
*
|
167
|
-
*
|
168
|
-
* @param {Observer} observer
|
169
|
-
* @returns {CustomElement}
|
170
|
-
*/
|
171
|
-
attachObserver(observer) {
|
172
|
-
this[internalDataSymbol].attachObserver(observer)
|
173
|
-
return this;
|
174
|
-
}
|
175
|
-
|
176
|
-
/**
|
177
|
-
* detach a observer
|
166
|
+
* This method determines which attributes are to be monitored by `attributeChangedCallback()`.
|
178
167
|
*
|
179
|
-
* @
|
180
|
-
* @
|
181
|
-
*/
|
182
|
-
detachObserver(observer) {
|
183
|
-
this[internalDataSymbol].detachObserver(observer)
|
184
|
-
return this;
|
185
|
-
}
|
186
|
-
|
187
|
-
/**
|
188
|
-
* @param {Observer} observer
|
189
|
-
* @returns {ProxyObserver}
|
168
|
+
* @return {string[]}
|
169
|
+
* @since 1.15.0
|
190
170
|
*/
|
191
|
-
|
192
|
-
return
|
171
|
+
static get observedAttributes() {
|
172
|
+
return [ATTRIBUTE_OPTIONS];
|
193
173
|
}
|
194
174
|
|
195
175
|
/**
|
@@ -223,6 +203,75 @@ class CustomElement extends HTMLElement {
|
|
223
203
|
};
|
224
204
|
}
|
225
205
|
|
206
|
+
/**
|
207
|
+
* There is no check on the name by this class. the developer is responsible for assigning an appropriate tag.
|
208
|
+
* if the name is not valid, registerCustomElement() will issue an error
|
209
|
+
*
|
210
|
+
* @link https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
|
211
|
+
* @return {string}
|
212
|
+
* @throws {Error} the method getTag must be overwritten by the derived class.
|
213
|
+
* @since 1.7.0
|
214
|
+
*/
|
215
|
+
static getTag() {
|
216
|
+
throw new Error("the method getTag must be overwritten by the derived class.");
|
217
|
+
}
|
218
|
+
|
219
|
+
/**
|
220
|
+
* At this point a `CSSStyleSheet` object can be returned. If the environment does not
|
221
|
+
* support a constructor, then an object can also be built using the following detour.
|
222
|
+
*
|
223
|
+
* If `undefined` is returned then the shadowRoot does not get a stylesheet.
|
224
|
+
*
|
225
|
+
* ```
|
226
|
+
* const doc = document.implementation.createHTMLDocument('title');
|
227
|
+
*
|
228
|
+
* let style = doc.createElement("style");
|
229
|
+
* style.innerHTML="p{color:red;}";
|
230
|
+
*
|
231
|
+
* // WebKit Hack
|
232
|
+
* style.appendChild(document.createTextNode(""));
|
233
|
+
* // Add the <style> element to the page
|
234
|
+
* doc.head.appendChild(style);
|
235
|
+
* return doc.styleSheets[0];
|
236
|
+
* ;
|
237
|
+
* ```
|
238
|
+
*
|
239
|
+
* @return {CSSStyleSheet|undefined}
|
240
|
+
*/
|
241
|
+
static getCSSStyleSheet() {
|
242
|
+
return undefined;
|
243
|
+
}
|
244
|
+
|
245
|
+
/**
|
246
|
+
* attach a new observer
|
247
|
+
*
|
248
|
+
* @param {Observer} observer
|
249
|
+
* @returns {CustomElement}
|
250
|
+
*/
|
251
|
+
attachObserver(observer) {
|
252
|
+
this[internalDataSymbol].attachObserver(observer)
|
253
|
+
return this;
|
254
|
+
}
|
255
|
+
|
256
|
+
/**
|
257
|
+
* detach a observer
|
258
|
+
*
|
259
|
+
* @param {Observer} observer
|
260
|
+
* @returns {CustomElement}
|
261
|
+
*/
|
262
|
+
detachObserver(observer) {
|
263
|
+
this[internalDataSymbol].detachObserver(observer)
|
264
|
+
return this;
|
265
|
+
}
|
266
|
+
|
267
|
+
/**
|
268
|
+
* @param {Observer} observer
|
269
|
+
* @returns {ProxyObserver}
|
270
|
+
*/
|
271
|
+
containsObserver(observer) {
|
272
|
+
return this[internalDataSymbol].containsObserver(observer)
|
273
|
+
}
|
274
|
+
|
226
275
|
/**
|
227
276
|
* nested options can be specified by path `a.b.c`
|
228
277
|
*
|
@@ -272,7 +321,7 @@ class CustomElement extends HTMLElement {
|
|
272
321
|
const self = this;
|
273
322
|
extend(self[internalDataSymbol].getSubject()['options'], self.defaults, options);
|
274
323
|
//this[internalDataSymbol].notifyObservers();
|
275
|
-
|
324
|
+
|
276
325
|
return self;
|
277
326
|
}
|
278
327
|
|
@@ -364,16 +413,6 @@ class CustomElement extends HTMLElement {
|
|
364
413
|
|
365
414
|
}
|
366
415
|
|
367
|
-
/**
|
368
|
-
* This method determines which attributes are to be monitored by `attributeChangedCallback()`.
|
369
|
-
*
|
370
|
-
* @return {string[]}
|
371
|
-
* @since 1.15.0
|
372
|
-
*/
|
373
|
-
static get observedAttributes() {
|
374
|
-
return [ATTRIBUTE_OPTIONS];
|
375
|
-
}
|
376
|
-
|
377
416
|
/**
|
378
417
|
* Called when an observed attribute has been added, removed, updated, or replaced. Also called for initial
|
379
418
|
* values when an element is created by the parser, or upgraded. Note: only attributes listed in the observedAttributes
|
@@ -394,45 +433,6 @@ class CustomElement extends HTMLElement {
|
|
394
433
|
|
395
434
|
}
|
396
435
|
|
397
|
-
/**
|
398
|
-
* There is no check on the name by this class. the developer is responsible for assigning an appropriate tag.
|
399
|
-
* if the name is not valid, registerCustomElement() will issue an error
|
400
|
-
*
|
401
|
-
* @link https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
|
402
|
-
* @return {string}
|
403
|
-
* @throws {Error} the method getTag must be overwritten by the derived class.
|
404
|
-
* @since 1.7.0
|
405
|
-
*/
|
406
|
-
static getTag() {
|
407
|
-
throw new Error("the method getTag must be overwritten by the derived class.");
|
408
|
-
}
|
409
|
-
|
410
|
-
/**
|
411
|
-
* At this point a `CSSStyleSheet` object can be returned. If the environment does not
|
412
|
-
* support a constructor, then an object can also be built using the following detour.
|
413
|
-
*
|
414
|
-
* If `undefined` is returned then the shadowRoot does not get a stylesheet.
|
415
|
-
*
|
416
|
-
* ```
|
417
|
-
* const doc = document.implementation.createHTMLDocument('title');
|
418
|
-
*
|
419
|
-
* let style = doc.createElement("style");
|
420
|
-
* style.innerHTML="p{color:red;}";
|
421
|
-
*
|
422
|
-
* // WebKit Hack
|
423
|
-
* style.appendChild(document.createTextNode(""));
|
424
|
-
* // Add the <style> element to the page
|
425
|
-
* doc.head.appendChild(style);
|
426
|
-
* return doc.styleSheets[0];
|
427
|
-
* ;
|
428
|
-
* ```
|
429
|
-
*
|
430
|
-
* @return {CSSStyleSheet|undefined}
|
431
|
-
*/
|
432
|
-
static getCSSStyleSheet() {
|
433
|
-
return undefined;
|
434
|
-
}
|
435
|
-
|
436
436
|
}
|
437
437
|
|
438
438
|
/**
|
@@ -448,7 +448,7 @@ function initOptionObserver() {
|
|
448
448
|
if (!hasObjectLink(self, Symbol.for(OBJECTLINK_KEY_UPDATER))) {
|
449
449
|
return;
|
450
450
|
}
|
451
|
-
|
451
|
+
// inform every element
|
452
452
|
const updaters = getLinkedObjects(self, Symbol.for(OBJECTLINK_KEY_UPDATER));
|
453
453
|
|
454
454
|
for (const list of updaters) {
|
package/source/dom/events.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
/**
|
4
4
|
* @author schukai GmbH
|
5
5
|
*/
|
6
|
-
import {
|
6
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
7
7
|
import {validateInstance, validateString} from "../types/validate.js";
|
8
8
|
import {findClosestByAttribute} from "./attributes.js";
|
9
9
|
import {getDocument} from "./util.js";
|
@@ -13,7 +13,7 @@ import {getDocument} from "./util.js";
|
|
13
13
|
*
|
14
14
|
* ```
|
15
15
|
* <script type="module">
|
16
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
16
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/events.js';
|
17
17
|
* console.log(new Monster.DOM.fireEvent())
|
18
18
|
* </script>
|
19
19
|
* ```
|
@@ -22,7 +22,7 @@ import {getDocument} from "./util.js";
|
|
22
22
|
*
|
23
23
|
* ```
|
24
24
|
* <script type="module">
|
25
|
-
* import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
25
|
+
* import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/events.js';
|
26
26
|
* console.log(fireEvent())
|
27
27
|
* </script>
|
28
28
|
* ```
|
@@ -64,14 +64,14 @@ function fireEvent(element, type) {
|
|
64
64
|
}
|
65
65
|
|
66
66
|
/**
|
67
|
-
* This function gets the path `Event.composedPath()` from an event and tries to find the next element
|
67
|
+
* This function gets the path `Event.composedPath()` from an event and tries to find the next element
|
68
68
|
* up the tree `element.closest()` with the attribute and value. If no value is specified, only the attribute is searched.
|
69
69
|
*
|
70
70
|
* You can call the function via the monster namespace `new Monster.DOM.findTargetElementFromEvent()`.
|
71
71
|
*
|
72
72
|
* ```
|
73
73
|
* <script type="module">
|
74
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
74
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/events.js';
|
75
75
|
* console.log(new Monster.DOM.findTargetElementFromEvent())
|
76
76
|
* </script>
|
77
77
|
* ```
|
@@ -80,11 +80,11 @@ function fireEvent(element, type) {
|
|
80
80
|
*
|
81
81
|
* ```
|
82
82
|
* <script type="module">
|
83
|
-
* import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
83
|
+
* import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/events.js';
|
84
84
|
* console.log(findTargetElementFromEvent())
|
85
85
|
* </script>
|
86
86
|
* ```
|
87
|
-
*
|
87
|
+
*
|
88
88
|
* @since 1.14.0
|
89
89
|
* @param {Event} event
|
90
90
|
* @param {string} attributeName
|
package/source/dom/locale.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
+
import {parseLocale} from "../i18n/locale.js";
|
3
4
|
/**
|
4
5
|
* @author schukai GmbH
|
5
6
|
*/
|
6
|
-
import {
|
7
|
-
import { parseLocale} from "../i18n/locale.js";
|
7
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
8
8
|
import {getDocument} from "./util.js";
|
9
9
|
|
10
10
|
/**
|
@@ -20,7 +20,7 @@ const DEFAULT_LANGUAGE = 'en';
|
|
20
20
|
*
|
21
21
|
* ```
|
22
22
|
* <script type="module">
|
23
|
-
* import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
23
|
+
* import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/locale.js';
|
24
24
|
* console.log(new Monster.DOM.getLocaleOfDocument())
|
25
25
|
* </script>
|
26
26
|
* ```
|
@@ -29,7 +29,7 @@ const DEFAULT_LANGUAGE = 'en';
|
|
29
29
|
*
|
30
30
|
* ```
|
31
31
|
* <script type="module">
|
32
|
-
* import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
32
|
+
* import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/locale.js';
|
33
33
|
* console.log(new getLocaleOfDocument())
|
34
34
|
* </script>
|
35
35
|
* ```
|
package/source/dom/namespace.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
/**
|
4
4
|
* In this namespace you will find classes and methods for handling the DOM.
|
5
|
-
*
|
5
|
+
*
|
6
6
|
* @namespace Monster/DOM
|
7
7
|
* @author schukai GmbH
|
8
8
|
*/
|
@@ -11,4 +11,4 @@
|
|
11
11
|
* @private
|
12
12
|
* @type {string}
|
13
13
|
*/
|
14
|
-
const namespace="Monster.DOM";
|
14
|
+
const namespace = "Monster.DOM";
|
package/source/dom/template.js
CHANGED
@@ -3,11 +3,10 @@
|
|
3
3
|
/**
|
4
4
|
* @author schukai GmbH
|
5
5
|
*/
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {validateString} from "../types/validate.js";
|
6
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
7
|
+
import {Base} from '../types/base.js';
|
9
8
|
import {getGlobalFunction, getGlobalObject} from '../types/global.js';
|
10
|
-
import {validateInstance} from "../types/validate.js";
|
9
|
+
import {validateInstance, validateString} from "../types/validate.js";
|
11
10
|
import {getDocumentTheme} from "./theme.js";
|
12
11
|
|
13
12
|
/**
|
@@ -15,7 +14,7 @@ import {getDocumentTheme} from "./theme.js";
|
|
15
14
|
*
|
16
15
|
* ```
|
17
16
|
* <script type="module">
|
18
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
17
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/template.js';
|
19
18
|
* console.log(new Monster.DOM.Template())
|
20
19
|
* </script>
|
21
20
|
* ```
|
@@ -24,7 +23,7 @@ import {getDocumentTheme} from "./theme.js";
|
|
24
23
|
*
|
25
24
|
* ```
|
26
25
|
* <script type="module">
|
27
|
-
* import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
26
|
+
* import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/template.js';
|
28
27
|
* console.log(new Template())
|
29
28
|
* </script>
|
30
29
|
* ```
|
@@ -74,7 +73,7 @@ class Template extends Base {
|
|
74
73
|
*
|
75
74
|
* ```
|
76
75
|
* <script type="module">
|
77
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
76
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/template.js';
|
78
77
|
* console.log(Monster.DOM.findDocumentTemplate())
|
79
78
|
* </script>
|
80
79
|
* ```
|
@@ -83,13 +82,13 @@ class Template extends Base {
|
|
83
82
|
*
|
84
83
|
* ```
|
85
84
|
* <script type="module">
|
86
|
-
* import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
85
|
+
* import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/template.js';
|
87
86
|
* console.log(findDocumentTemplate())
|
88
87
|
* </script>
|
89
88
|
* ```
|
90
89
|
*
|
91
90
|
* @param {string} id
|
92
|
-
* @param {Node}
|
91
|
+
* @param {Node} currentNode
|
93
92
|
* @return {Template}
|
94
93
|
* @since 1.7.0
|
95
94
|
* @copyright schukai GmbH
|
@@ -97,29 +96,35 @@ class Template extends Base {
|
|
97
96
|
* @throws {Error} template id not found.
|
98
97
|
* @throws {TypeError} value is not a string
|
99
98
|
*/
|
100
|
-
function findDocumentTemplate(id,
|
99
|
+
function findDocumentTemplate(id, currentNode) {
|
101
100
|
validateString(id);
|
102
|
-
|
103
|
-
if (!(
|
104
|
-
|
101
|
+
|
102
|
+
if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {
|
103
|
+
if (currentNode instanceof Node) {
|
104
|
+
currentNode = currentNode.ownerDocument;
|
105
|
+
}
|
106
|
+
|
107
|
+
if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {
|
108
|
+
currentNode = getGlobalObject('document');
|
109
|
+
}
|
105
110
|
}
|
106
|
-
|
111
|
+
|
107
112
|
const HTMLTemplateElement = getGlobalFunction('HTMLTemplateElement');
|
108
113
|
|
109
114
|
let theme = getDocumentTheme()
|
110
115
|
let themedID = id + '-' + theme.getName();
|
111
116
|
|
112
|
-
let template =
|
117
|
+
let template = currentNode.getElementById(themedID);
|
113
118
|
if (template instanceof HTMLTemplateElement) {
|
114
119
|
return new Template(template);
|
115
120
|
}
|
116
121
|
|
117
|
-
template =
|
122
|
+
template = currentNode.getElementById(id);
|
118
123
|
if (template instanceof HTMLTemplateElement) {
|
119
124
|
return new Template(template);
|
120
125
|
}
|
121
|
-
|
122
|
-
if(
|
126
|
+
|
127
|
+
if (currentNode !== getGlobalObject('document')) {
|
123
128
|
return findDocumentTemplate(id)
|
124
129
|
}
|
125
130
|
|
package/source/dom/theme.js
CHANGED
@@ -3,20 +3,19 @@
|
|
3
3
|
/**
|
4
4
|
* @author schukai GmbH
|
5
5
|
*/
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {validateString} from "../types/validate.js";
|
6
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
7
|
+
import {Base} from '../types/base.js';
|
9
8
|
import {getGlobalObject} from '../types/global.js';
|
9
|
+
import {validateString} from "../types/validate.js";
|
10
10
|
import {ATTRIBUTE_THEME_NAME, DEFAULT_THEME} from "./constants.js";
|
11
11
|
|
12
12
|
|
13
|
-
|
14
13
|
/**
|
15
14
|
* You can call the method via the monster namespace `new Monster.DOM.Theme()`.
|
16
15
|
*
|
17
16
|
* ```
|
18
17
|
* <script type="module">
|
19
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
18
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/theme.js';
|
20
19
|
* console.log(new Monster.DOM.Theme())
|
21
20
|
* </script>
|
22
21
|
* ```
|
@@ -25,14 +24,14 @@ import {ATTRIBUTE_THEME_NAME, DEFAULT_THEME} from "./constants.js";
|
|
25
24
|
*
|
26
25
|
* ```
|
27
26
|
* <script type="module">
|
28
|
-
* import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
27
|
+
* import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/theme.js';
|
29
28
|
* console.log(new Theme())
|
30
29
|
* </script>
|
31
30
|
* ```
|
32
|
-
*
|
31
|
+
*
|
33
32
|
* @example
|
34
33
|
*
|
35
|
-
* import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
34
|
+
* import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/theme.js';
|
36
35
|
*
|
37
36
|
* const theme = getDocumentTheme();
|
38
37
|
* console.log(theme.getName());
|
package/source/dom/updater.js
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
-
|
4
|
-
* @author schukai GmbH
|
5
|
-
*/
|
6
|
-
import {Monster, assignToNamespace} from '../namespace.js';
|
3
|
+
import {Diff} from "../data/diff.js";
|
7
4
|
import {Pathfinder} from "../data/pathfinder.js";
|
8
5
|
import {Pipe} from "../data/pipe.js";
|
9
|
-
import {Base} from "../types/base.js";
|
10
|
-
import {isInstance, isArray, isIterable} from "../types/is.js";
|
11
|
-
import {Observer} from "../types/observer.js";
|
12
|
-
import {ProxyObserver} from "../types/proxyobserver.js";
|
13
|
-
import {validateInstance, validateArray} from "../types/validate.js";
|
14
|
-
import {clone} from "../util/clone.js";
|
15
|
-
import {Diff} from "../data/diff.js";
|
16
6
|
import {
|
17
|
-
ATTRIBUTE_UPDATER_REPLACE,
|
18
7
|
ATTRIBUTE_UPDATER_ATTRIBUTES,
|
8
|
+
ATTRIBUTE_UPDATER_BIND,
|
19
9
|
ATTRIBUTE_UPDATER_INSERT,
|
20
|
-
ATTRIBUTE_UPDATER_REMOVE,
|
21
10
|
ATTRIBUTE_UPDATER_INSERT_REFERENCE,
|
22
|
-
|
11
|
+
ATTRIBUTE_UPDATER_REMOVE,
|
12
|
+
ATTRIBUTE_UPDATER_REPLACE
|
23
13
|
} from "../dom/constants.js";
|
14
|
+
/**
|
15
|
+
* @author schukai GmbH
|
16
|
+
*/
|
17
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
18
|
+
import {Base} from "../types/base.js";
|
19
|
+
import {isArray, isInstance, isIterable} from "../types/is.js";
|
20
|
+
import {Observer} from "../types/observer.js";
|
21
|
+
import {ProxyObserver} from "../types/proxyobserver.js";
|
22
|
+
import {validateArray, validateInstance} from "../types/validate.js";
|
23
|
+
import {clone} from "../util/clone.js";
|
24
24
|
import {findDocumentTemplate} from "./template.js";
|
25
25
|
import {getDocument} from "./util.js";
|
26
26
|
|
@@ -34,7 +34,7 @@ import {getDocument} from "./util.js";
|
|
34
34
|
*
|
35
35
|
* ```
|
36
36
|
* <script type="module">
|
37
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
37
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/updater.js';
|
38
38
|
* console.log(new Monster.DOM.Updater())
|
39
39
|
* </script>
|
40
40
|
* ```
|
@@ -43,14 +43,14 @@ import {getDocument} from "./util.js";
|
|
43
43
|
*
|
44
44
|
* ```
|
45
45
|
* <script type="module">
|
46
|
-
* import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
46
|
+
* import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/updater.js';
|
47
47
|
* console.log(new Updater())
|
48
48
|
* </script>
|
49
49
|
* ```
|
50
50
|
*
|
51
51
|
* @example
|
52
52
|
*
|
53
|
-
* import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
53
|
+
* import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/updater.js';
|
54
54
|
*
|
55
55
|
* // First we prepare the html document.
|
56
56
|
* // This is done here via script, but can also be inserted into the document as pure html.
|
@@ -492,12 +492,7 @@ function insertElement(change) {
|
|
492
492
|
*/
|
493
493
|
function appendNewDocumentFragment(container, key, ref, path) {
|
494
494
|
|
495
|
-
let
|
496
|
-
if (!rootNode) {
|
497
|
-
rootNode = getDocument();
|
498
|
-
}
|
499
|
-
|
500
|
-
let template = findDocumentTemplate(key, rootNode);
|
495
|
+
let template = findDocumentTemplate(key, container);
|
501
496
|
|
502
497
|
let nodes = template.createDocumentFragment();
|
503
498
|
for (const [, node] of Object.entries(nodes.childNodes)) {
|
package/source/dom/util.js
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
/**
|
4
4
|
* @author schukai GmbH
|
5
5
|
*/
|
6
|
-
import {
|
7
|
-
import {
|
6
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
7
|
+
import {getGlobal} from "../types/global.js";
|
8
8
|
import {validateString} from "../types/validate.js";
|
9
9
|
|
10
10
|
|
@@ -13,7 +13,7 @@ import {validateString} from "../types/validate.js";
|
|
13
13
|
*
|
14
14
|
* ```
|
15
15
|
* <script type="module">
|
16
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
16
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/util.js';
|
17
17
|
* console.log(Monster.DOM.getDocument())
|
18
18
|
* </script>
|
19
19
|
* ```
|
@@ -22,7 +22,7 @@ import {validateString} from "../types/validate.js";
|
|
22
22
|
*
|
23
23
|
* ```
|
24
24
|
* <script type="module">
|
25
|
-
* import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
25
|
+
* import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/util.js';
|
26
26
|
* console.log(getDocument())
|
27
27
|
* </script>
|
28
28
|
* ```
|
@@ -62,7 +62,7 @@ import {validateString} from "../types/validate.js";
|
|
62
62
|
*/
|
63
63
|
function getDocument() {
|
64
64
|
let document = getGlobal()?.['document'];
|
65
|
-
if (typeof document !== 'object') {
|
65
|
+
if (typeof document !== 'object') {
|
66
66
|
throw new Error("not supported environment")
|
67
67
|
}
|
68
68
|
|
@@ -74,7 +74,7 @@ function getDocument() {
|
|
74
74
|
*
|
75
75
|
* ```
|
76
76
|
* <script type="module">
|
77
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
77
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/util.js';
|
78
78
|
* console.log(Monster.DOM.getWindow())
|
79
79
|
* </script>
|
80
80
|
* ```
|
@@ -83,7 +83,7 @@ function getDocument() {
|
|
83
83
|
*
|
84
84
|
* ```
|
85
85
|
* <script type="module">
|
86
|
-
* import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
86
|
+
* import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/util.js';
|
87
87
|
* console.log(getWindow(null))
|
88
88
|
* </script>
|
89
89
|
* ```
|
@@ -140,7 +140,7 @@ function getWindow() {
|
|
140
140
|
*
|
141
141
|
* ```
|
142
142
|
* <script type="module">
|
143
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
143
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/util.js';
|
144
144
|
* console.log(Monster.DOM.getDocumentFragmentFromString())
|
145
145
|
* </script>
|
146
146
|
* ```
|
@@ -149,7 +149,7 @@ function getWindow() {
|
|
149
149
|
*
|
150
150
|
* ```
|
151
151
|
* <script type="module">
|
152
|
-
* import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.
|
152
|
+
* import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.2/dist/modules/dom/util.js';
|
153
153
|
* console.log(getDocumentFragmentFromString('<div></div>'))
|
154
154
|
* </script>
|
155
155
|
* ```
|
@@ -194,7 +194,7 @@ function getDocumentFragmentFromString(html) {
|
|
194
194
|
const document = getDocument();
|
195
195
|
const template = document.createElement('template');
|
196
196
|
template.innerHTML = html;
|
197
|
-
|
197
|
+
|
198
198
|
return template.content;
|
199
199
|
}
|
200
200
|
|