@schukai/monster 1.29.2 → 1.31.0
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 +24 -0
- package/README.md +3 -3
- package/dist/modules/constants.js +1 -1
- package/dist/modules/constraints/abstract.js +1 -1
- package/dist/modules/constraints/abstractoperator.js +1 -1
- package/dist/modules/constraints/andoperator.js +1 -1
- package/dist/modules/constraints/invalid.js +1 -1
- package/dist/modules/constraints/isarray.js +1 -1
- package/dist/modules/constraints/isobject.js +1 -1
- package/dist/modules/constraints/namespace.js +1 -1
- package/dist/modules/constraints/oroperator.js +1 -1
- package/dist/modules/constraints/valid.js +1 -1
- package/dist/modules/data/buildmap.js +2 -2
- package/dist/modules/data/buildtree.js +2 -2
- package/dist/modules/data/datasource/namespace.js +1 -1
- package/dist/modules/data/datasource/restapi/writeerror.js +1 -1
- package/dist/modules/data/datasource/restapi.js +2 -2
- package/dist/modules/data/datasource/storage/localstorage.js +1 -1
- package/dist/modules/data/datasource/storage/namespace.js +1 -1
- package/dist/modules/data/datasource/storage/sessionstorage.js +1 -1
- package/dist/modules/data/datasource/storage.js +1 -1
- package/dist/modules/data/datasource.js +1 -1
- package/dist/modules/data/diff.js +2 -2
- package/dist/modules/data/extend.js +1 -1
- package/dist/modules/data/namespace.js +1 -1
- package/dist/modules/data/pathfinder.js +2 -2
- package/dist/modules/data/pipe.js +1 -1
- package/dist/modules/data/transformer.js +2 -2
- package/dist/modules/dom/assembler.js +1 -1
- package/dist/modules/dom/attributes.js +2 -2
- package/dist/modules/dom/constants.js +2 -2
- package/dist/modules/dom/customcontrol.js +1 -1
- package/dist/modules/dom/customelement.js +2 -2
- package/dist/modules/dom/events.js +1 -1
- package/dist/modules/dom/focusmanager.js +1 -1
- package/dist/modules/dom/locale.js +1 -1
- package/dist/modules/dom/namespace.js +1 -1
- package/dist/modules/dom/ready.js +2 -0
- package/dist/modules/dom/resource/data.js +1 -1
- package/dist/modules/dom/resource/link/stylesheet.js +1 -1
- package/dist/modules/dom/resource/link.js +1 -1
- package/dist/modules/dom/resource/script.js +1 -1
- package/dist/modules/dom/resource.js +1 -1
- package/dist/modules/dom/resourcemanager.js +2 -2
- package/dist/modules/dom/template.js +2 -2
- package/dist/modules/dom/theme.js +1 -1
- package/dist/modules/dom/updater.js +2 -2
- package/dist/modules/dom/util.js +1 -1
- package/dist/modules/dom/worker/factory.js +2 -2
- package/dist/modules/i18n/formatter.js +2 -2
- package/dist/modules/i18n/locale.js +1 -1
- package/dist/modules/i18n/namespace.js +1 -1
- package/dist/modules/i18n/provider.js +1 -1
- package/dist/modules/i18n/providers/fetch.js +1 -1
- package/dist/modules/i18n/providers/namespace.js +1 -1
- package/dist/modules/i18n/translations.js +1 -1
- package/dist/modules/logging/handler/console.js +1 -1
- package/dist/modules/logging/handler/namespace.js +1 -1
- package/dist/modules/logging/handler.js +1 -1
- package/dist/modules/logging/logentry.js +1 -1
- package/dist/modules/logging/logger.js +1 -1
- 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 +1 -1
- package/dist/modules/namespace.js +1 -1
- package/dist/modules/text/formatter.js +2 -2
- package/dist/modules/text/namespace.js +1 -1
- package/dist/modules/types/base.js +1 -1
- package/dist/modules/types/basewithoptions.js +2 -2
- package/dist/modules/types/binary.js +1 -1
- package/dist/modules/types/dataurl.js +2 -2
- package/dist/modules/types/global.js +1 -1
- package/dist/modules/types/id.js +2 -2
- package/dist/modules/types/is.js +1 -1
- package/dist/modules/types/mediatype.js +2 -2
- package/dist/modules/types/namespace.js +1 -1
- package/dist/modules/types/node.js +1 -1
- package/dist/modules/types/nodelist.js +1 -1
- package/dist/modules/types/noderecursiveiterator.js +1 -1
- package/dist/modules/types/observer.js +1 -1
- package/dist/modules/types/observerlist.js +1 -1
- package/dist/modules/types/proxyobserver.js +2 -2
- package/dist/modules/types/queue.js +1 -1
- package/dist/modules/types/randomid.js +1 -1
- package/dist/modules/types/regex.js +1 -1
- package/dist/modules/types/stack.js +1 -1
- package/dist/modules/types/tokenlist.js +1 -1
- package/dist/modules/types/typeof.js +1 -1
- package/dist/modules/types/uniquequeue.js +2 -2
- package/dist/modules/types/uuid.js +2 -2
- package/dist/modules/types/validate.js +1 -1
- package/dist/modules/types/version.js +2 -2
- package/dist/modules/util/clone.js +1 -1
- package/dist/modules/util/comparator.js +1 -1
- package/dist/modules/util/deadmansswitch.js +1 -1
- package/dist/modules/util/freeze.js +1 -1
- package/dist/modules/util/namespace.js +1 -1
- package/dist/modules/util/processing.js +1 -1
- package/dist/modules/util/trimspaces.js +2 -2
- package/dist/monster.dev.js +378 -260
- package/dist/monster.dev.js.map +1 -1
- package/dist/monster.js +2 -2
- package/package.json +1 -1
- package/source/constraints/andoperator.js +5 -5
- package/source/constraints/invalid.js +3 -3
- package/source/constraints/isarray.js +3 -3
- package/source/constraints/isobject.js +3 -3
- package/source/constraints/oroperator.js +5 -5
- package/source/constraints/valid.js +3 -3
- package/source/data/buildmap.js +12 -5
- package/source/data/buildtree.js +2 -2
- package/source/data/datasource/restapi.js +3 -3
- package/source/data/datasource/storage/localstorage.js +2 -2
- package/source/data/datasource/storage/sessionstorage.js +2 -2
- package/source/data/datasource/storage.js +3 -3
- package/source/data/datasource.js +3 -3
- package/source/data/diff.js +3 -3
- package/source/data/extend.js +2 -2
- package/source/data/pathfinder.js +5 -4
- package/source/data/pipe.js +3 -3
- package/source/data/transformer.js +3 -3
- package/source/dom/assembler.js +2 -2
- package/source/dom/attributes.js +26 -26
- package/source/dom/constants.js +11 -1
- package/source/dom/customcontrol.js +1 -1
- package/source/dom/customelement.js +125 -30
- package/source/dom/events.js +6 -6
- package/source/dom/focusmanager.js +2 -2
- package/source/dom/locale.js +2 -2
- package/source/dom/ready.js +81 -0
- package/source/dom/resource/data.js +2 -2
- package/source/dom/resource/link/stylesheet.js +2 -2
- package/source/dom/resource/link.js +2 -2
- package/source/dom/resource/script.js +2 -2
- package/source/dom/resource.js +2 -2
- package/source/dom/resourcemanager.js +2 -2
- package/source/dom/template.js +5 -5
- package/source/dom/theme.js +3 -3
- package/source/dom/updater.js +3 -3
- package/source/dom/util.js +6 -6
- package/source/dom/worker/factory.js +2 -2
- package/source/i18n/formatter.js +4 -4
- package/source/i18n/locale.js +4 -4
- package/source/i18n/provider.js +2 -2
- package/source/i18n/providers/fetch.js +3 -3
- package/source/i18n/translations.js +4 -4
- package/source/logging/handler/console.js +2 -2
- package/source/logging/handler.js +2 -2
- package/source/logging/logentry.js +2 -2
- package/source/logging/logger.js +2 -2
- package/source/math/random.js +2 -2
- package/source/namespace.js +9 -8
- package/source/text/formatter.js +3 -3
- package/source/types/base.js +2 -2
- package/source/types/basewithoptions.js +2 -2
- package/source/types/binary.js +4 -4
- package/source/types/dataurl.js +4 -4
- package/source/types/global.js +4 -4
- package/source/types/id.js +2 -2
- package/source/types/is.js +20 -20
- package/source/types/mediatype.js +4 -4
- package/source/types/node.js +2 -2
- package/source/types/nodelist.js +2 -2
- package/source/types/noderecursiveiterator.js +4 -4
- package/source/types/observer.js +3 -3
- package/source/types/observerlist.js +2 -2
- package/source/types/proxyobserver.js +5 -5
- package/source/types/queue.js +3 -3
- package/source/types/randomid.js +2 -2
- package/source/types/regex.js +2 -2
- package/source/types/stack.js +2 -2
- package/source/types/tokenlist.js +2 -2
- package/source/types/typeof.js +3 -3
- package/source/types/uniquequeue.js +2 -2
- package/source/types/uuid.js +2 -2
- package/source/types/validate.js +20 -20
- package/source/types/version.js +6 -6
- package/source/util/clone.js +2 -2
- package/source/util/comparator.js +3 -3
- package/source/util/deadmansswitch.js +3 -3
- package/source/util/freeze.js +2 -2
- package/source/util/processing.js +3 -3
- package/source/util/trimspaces.js +2 -2
- package/test/cases/dom/customelement.js +186 -5
- package/test/cases/dom/ready.js +42 -0
- package/test/cases/dom/resource/link.js +3 -5
- package/test/cases/monster.js +1 -1
- package/test/util/jsdom.js +1 -0
- package/test/web/import.js +1 -0
- package/test/web/monster-dev.html +3 -3
- package/test/web/monster.html +2 -2
- package/test/web/test.html +2 -2
- package/test/web/tests.js +7 -13
package/source/dom/attributes.js
CHANGED
|
@@ -20,7 +20,7 @@ import {ATTRIBUTE_OBJECTLINK} from "./constants.js";
|
|
|
20
20
|
*
|
|
21
21
|
* ```
|
|
22
22
|
* <script type="module">
|
|
23
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
23
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
24
24
|
* console.log(Monster.DOM.findClosestObjectLink())
|
|
25
25
|
* </script>
|
|
26
26
|
* ```
|
|
@@ -29,7 +29,7 @@ import {ATTRIBUTE_OBJECTLINK} from "./constants.js";
|
|
|
29
29
|
*
|
|
30
30
|
* ```
|
|
31
31
|
* <script type="module">
|
|
32
|
-
* import {getUpdaterFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
32
|
+
* import {getUpdaterFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/updater.js';
|
|
33
33
|
* console.log(findClosestObjectLink())
|
|
34
34
|
* </script>
|
|
35
35
|
* ```
|
|
@@ -50,7 +50,7 @@ function findClosestObjectLink(element) {
|
|
|
50
50
|
*
|
|
51
51
|
* ```
|
|
52
52
|
* <script type="module">
|
|
53
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
53
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
54
54
|
* Monster.DOM.addToObjectLink();
|
|
55
55
|
* </script>
|
|
56
56
|
* ```
|
|
@@ -59,7 +59,7 @@ function findClosestObjectLink(element) {
|
|
|
59
59
|
*
|
|
60
60
|
* ```
|
|
61
61
|
* <script type="module">
|
|
62
|
-
* import {addToObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
62
|
+
* import {addToObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
63
63
|
* addToObjectLink();
|
|
64
64
|
* </script>
|
|
65
65
|
* ```
|
|
@@ -92,7 +92,7 @@ function addToObjectLink(element, symbol, object) {
|
|
|
92
92
|
*
|
|
93
93
|
* ```
|
|
94
94
|
* <script type="module">
|
|
95
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
95
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
96
96
|
* Monster.DOM.removeObjectLink();
|
|
97
97
|
* </script>
|
|
98
98
|
* ```
|
|
@@ -101,7 +101,7 @@ function addToObjectLink(element, symbol, object) {
|
|
|
101
101
|
*
|
|
102
102
|
* ```
|
|
103
103
|
* <script type="module">
|
|
104
|
-
* import {removeObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
104
|
+
* import {removeObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
105
105
|
* removeObjectLink();
|
|
106
106
|
* </script>
|
|
107
107
|
* ```
|
|
@@ -134,7 +134,7 @@ function removeObjectLink(element, symbol) {
|
|
|
134
134
|
*
|
|
135
135
|
* ```
|
|
136
136
|
* <script type="module">
|
|
137
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
137
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
138
138
|
* Monster.DOM.hasObjectLink();
|
|
139
139
|
* </script>
|
|
140
140
|
* ```
|
|
@@ -143,7 +143,7 @@ function removeObjectLink(element, symbol) {
|
|
|
143
143
|
*
|
|
144
144
|
* ```
|
|
145
145
|
* <script type="module">
|
|
146
|
-
* import {hasObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
146
|
+
* import {hasObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
147
147
|
* hasObjectLink();
|
|
148
148
|
* </script>
|
|
149
149
|
* ```
|
|
@@ -180,7 +180,7 @@ function hasObjectLink(element, symbol) {
|
|
|
180
180
|
*
|
|
181
181
|
* ```
|
|
182
182
|
* <script type="module">
|
|
183
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
183
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
184
184
|
* Monster.DOM.getLinkedObjects();
|
|
185
185
|
* </script>
|
|
186
186
|
* ```
|
|
@@ -189,7 +189,7 @@ function hasObjectLink(element, symbol) {
|
|
|
189
189
|
*
|
|
190
190
|
* ```
|
|
191
191
|
* <script type="module">
|
|
192
|
-
* import {getLinkedObjects} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
192
|
+
* import {getLinkedObjects} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
193
193
|
* getLinkedObjects();
|
|
194
194
|
* </script>
|
|
195
195
|
* ```
|
|
@@ -225,7 +225,7 @@ function getLinkedObjects(element, symbol) {
|
|
|
225
225
|
*
|
|
226
226
|
* ```
|
|
227
227
|
* <script type="module">
|
|
228
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
228
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
229
229
|
* Monster.DOM.toggleAttributeToken();
|
|
230
230
|
* </script>
|
|
231
231
|
* ```
|
|
@@ -234,7 +234,7 @@ function getLinkedObjects(element, symbol) {
|
|
|
234
234
|
*
|
|
235
235
|
* ```
|
|
236
236
|
* <script type="module">
|
|
237
|
-
* import {toggleAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
237
|
+
* import {toggleAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
238
238
|
* toggleAttributeToken();
|
|
239
239
|
* </script>
|
|
240
240
|
* ```
|
|
@@ -269,7 +269,7 @@ function toggleAttributeToken(element, key, token) {
|
|
|
269
269
|
*
|
|
270
270
|
* ```
|
|
271
271
|
* <script type="module">
|
|
272
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
272
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
273
273
|
* Monster.DOM.addAttributeToken();
|
|
274
274
|
* </script>
|
|
275
275
|
* ```
|
|
@@ -278,7 +278,7 @@ function toggleAttributeToken(element, key, token) {
|
|
|
278
278
|
*
|
|
279
279
|
* ```
|
|
280
280
|
* <script type="module">
|
|
281
|
-
* import {addAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
281
|
+
* import {addAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
282
282
|
* addAttributeToken();
|
|
283
283
|
* </script>
|
|
284
284
|
* ```
|
|
@@ -315,7 +315,7 @@ function addAttributeToken(element, key, token) {
|
|
|
315
315
|
*
|
|
316
316
|
* ```
|
|
317
317
|
* <script type="module">
|
|
318
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
318
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
319
319
|
* Monster.DOM.removeAttributeToken();
|
|
320
320
|
* </script>
|
|
321
321
|
* ```
|
|
@@ -324,7 +324,7 @@ function addAttributeToken(element, key, token) {
|
|
|
324
324
|
*
|
|
325
325
|
* ```
|
|
326
326
|
* <script type="module">
|
|
327
|
-
* import {removeAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
327
|
+
* import {removeAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
328
328
|
* removeAttributeToken();
|
|
329
329
|
* </script>
|
|
330
330
|
* ```
|
|
@@ -360,7 +360,7 @@ function removeAttributeToken(element, key, token) {
|
|
|
360
360
|
*
|
|
361
361
|
* ```
|
|
362
362
|
* <script type="module">
|
|
363
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
363
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
364
364
|
* Monster.DOM.containsAttributeToken();
|
|
365
365
|
* </script>
|
|
366
366
|
* ```
|
|
@@ -369,7 +369,7 @@ function removeAttributeToken(element, key, token) {
|
|
|
369
369
|
*
|
|
370
370
|
* ```
|
|
371
371
|
* <script type="module">
|
|
372
|
-
* import {containsAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
372
|
+
* import {containsAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
373
373
|
* containsAttributeToken();
|
|
374
374
|
* </script>
|
|
375
375
|
* ```
|
|
@@ -402,7 +402,7 @@ function containsAttributeToken(element, key, token) {
|
|
|
402
402
|
*
|
|
403
403
|
* ```
|
|
404
404
|
* <script type="module">
|
|
405
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
405
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
406
406
|
* Monster.DOM.replaceAttributeToken();
|
|
407
407
|
* </script>
|
|
408
408
|
* ```
|
|
@@ -411,7 +411,7 @@ function containsAttributeToken(element, key, token) {
|
|
|
411
411
|
*
|
|
412
412
|
* ```
|
|
413
413
|
* <script type="module">
|
|
414
|
-
* import {replaceAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
414
|
+
* import {replaceAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
415
415
|
* replaceAttributeToken();
|
|
416
416
|
* </script>
|
|
417
417
|
* ```
|
|
@@ -447,7 +447,7 @@ function replaceAttributeToken(element, key, from, to) {
|
|
|
447
447
|
*
|
|
448
448
|
* ```
|
|
449
449
|
* <script type="module">
|
|
450
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
450
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
451
451
|
* Monster.DOM.clearAttributeTokens();
|
|
452
452
|
* </script>
|
|
453
453
|
* ```
|
|
@@ -456,7 +456,7 @@ function replaceAttributeToken(element, key, from, to) {
|
|
|
456
456
|
*
|
|
457
457
|
* ```
|
|
458
458
|
* <script type="module">
|
|
459
|
-
* import {clearAttributeTokens} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
459
|
+
* import {clearAttributeTokens} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
460
460
|
* clearAttributeTokens();
|
|
461
461
|
* </script>
|
|
462
462
|
* ```
|
|
@@ -504,7 +504,7 @@ function clearAttributeTokens(element, key) {
|
|
|
504
504
|
*
|
|
505
505
|
* ```
|
|
506
506
|
* <script type="module">
|
|
507
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
507
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
508
508
|
* Monster.DOM.findClosestByAttribute();
|
|
509
509
|
* </script>
|
|
510
510
|
* ```
|
|
@@ -513,7 +513,7 @@ function clearAttributeTokens(element, key) {
|
|
|
513
513
|
*
|
|
514
514
|
* ```
|
|
515
515
|
* <script type="module">
|
|
516
|
-
* import {findClosestByAttribute} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
516
|
+
* import {findClosestByAttribute} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
517
517
|
* findClosestByAttribute();
|
|
518
518
|
* </script>
|
|
519
519
|
* ```
|
|
@@ -569,7 +569,7 @@ function findClosestByAttribute(element, key, value) {
|
|
|
569
569
|
*
|
|
570
570
|
* ```
|
|
571
571
|
* <script type="module">
|
|
572
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
572
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
573
573
|
* Monster.DOM.findClosestByClass();
|
|
574
574
|
* </script>
|
|
575
575
|
* ```
|
|
@@ -578,7 +578,7 @@ function findClosestByAttribute(element, key, value) {
|
|
|
578
578
|
*
|
|
579
579
|
* ```
|
|
580
580
|
* <script type="module">
|
|
581
|
-
* import {findClosestByClass} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
581
|
+
* import {findClosestByClass} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/attributes.js';
|
|
582
582
|
* findClosestByClass();
|
|
583
583
|
* </script>
|
|
584
584
|
* ```
|
package/source/dom/constants.js
CHANGED
|
@@ -29,6 +29,15 @@ const ATTRIBUTE_PREFIX = 'data-monster-';
|
|
|
29
29
|
*/
|
|
30
30
|
const ATTRIBUTE_OPTIONS = ATTRIBUTE_PREFIX + 'options';
|
|
31
31
|
|
|
32
|
+
/**
|
|
33
|
+
* This is the name of the attribute to pass options to a control
|
|
34
|
+
*
|
|
35
|
+
* @memberOf Monster.DOM
|
|
36
|
+
* @since 1.30.0
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
const ATTRIBUTE_OPTIONS_SELECTOR = ATTRIBUTE_PREFIX + 'options-selector';
|
|
40
|
+
|
|
32
41
|
/**
|
|
33
42
|
* @memberOf Monster.DOM
|
|
34
43
|
* @type {string}
|
|
@@ -430,5 +439,6 @@ export {
|
|
|
430
439
|
ATTRIBUTE_VALUE,
|
|
431
440
|
objectUpdaterLinkSymbol,
|
|
432
441
|
ATTRIBUTE_TEMPLATE_PREFIX,
|
|
433
|
-
ATTRIBUTE_UPDATER_SELECT_THIS
|
|
442
|
+
ATTRIBUTE_UPDATER_SELECT_THIS,
|
|
443
|
+
ATTRIBUTE_OPTIONS_SELECTOR
|
|
434
444
|
}
|
|
@@ -30,7 +30,7 @@ const attachedInternalSymbol = Symbol('attachedInternal');
|
|
|
30
30
|
*
|
|
31
31
|
* ```
|
|
32
32
|
* <script type="module">
|
|
33
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
33
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
34
34
|
* document.createElement('monster-')
|
|
35
35
|
* </script>
|
|
36
36
|
* ```
|
|
@@ -15,8 +15,14 @@ import {Observer} from "../types/observer.js";
|
|
|
15
15
|
import {ProxyObserver} from "../types/proxyobserver.js";
|
|
16
16
|
import {validateFunction, validateInstance, validateObject, validateString} from "../types/validate.js";
|
|
17
17
|
import {clone} from "../util/clone.js";
|
|
18
|
-
import {addToObjectLink,
|
|
19
|
-
import {
|
|
18
|
+
import {addAttributeToken, addToObjectLink, getLinkedObjects, hasObjectLink} from "./attributes.js";
|
|
19
|
+
import {
|
|
20
|
+
ATTRIBUTE_DISABLED,
|
|
21
|
+
ATTRIBUTE_ERRORMESSAGE,
|
|
22
|
+
ATTRIBUTE_OPTIONS,
|
|
23
|
+
ATTRIBUTE_OPTIONS_SELECTOR,
|
|
24
|
+
objectUpdaterLinkSymbol
|
|
25
|
+
} from "./constants.js";
|
|
20
26
|
import {findDocumentTemplate, Template} from "./template.js";
|
|
21
27
|
import {Updater} from "./updater.js";
|
|
22
28
|
|
|
@@ -97,7 +103,7 @@ const attributeObserverSymbol = Symbol('attributeObserver');
|
|
|
97
103
|
*
|
|
98
104
|
* ```
|
|
99
105
|
* <script type="module">
|
|
100
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
106
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
101
107
|
* document.createElement('monster-')
|
|
102
108
|
* </script>
|
|
103
109
|
* ```
|
|
@@ -201,7 +207,7 @@ class CustomElement extends HTMLElement {
|
|
|
201
207
|
*/
|
|
202
208
|
constructor() {
|
|
203
209
|
super();
|
|
204
|
-
this[internalSymbol] = new ProxyObserver({'options': extend({}, this.defaults
|
|
210
|
+
this[internalSymbol] = new ProxyObserver({'options': extend({}, this.defaults)});
|
|
205
211
|
this[attributeObserverSymbol] = {};
|
|
206
212
|
initOptionObserver.call(this);
|
|
207
213
|
this[initMethodSymbol]();
|
|
@@ -228,7 +234,7 @@ class CustomElement extends HTMLElement {
|
|
|
228
234
|
* }
|
|
229
235
|
* ```
|
|
230
236
|
*
|
|
231
|
-
*
|
|
237
|
+
* To set the options via the html tag the attribute data-monster-options must be set.
|
|
232
238
|
* As value a JSON object with the desired values must be defined.
|
|
233
239
|
*
|
|
234
240
|
* Since 1.18.0 the JSON can be specified as a DataURI.
|
|
@@ -243,6 +249,20 @@ class CustomElement extends HTMLElement {
|
|
|
243
249
|
* })),'application/json',true).toString()
|
|
244
250
|
* ```
|
|
245
251
|
*
|
|
252
|
+
* The attribute data-monster-options-selector can be used to access a script tag that contains additional configuration.
|
|
253
|
+
*
|
|
254
|
+
* As value a selector must be specified, which belongs to a script tag and contains the configuration as json.
|
|
255
|
+
*
|
|
256
|
+
* ```
|
|
257
|
+
* <script id="id-for-this-config" type="application/json">
|
|
258
|
+
* {
|
|
259
|
+
* "config-key": "config-value"
|
|
260
|
+
* }
|
|
261
|
+
* </script>
|
|
262
|
+
* ```
|
|
263
|
+
*
|
|
264
|
+
* The individual configuration values can be found in the table.
|
|
265
|
+
*
|
|
246
266
|
* @property {boolean} disabled=false Object The Boolean disabled attribute, when present, makes the element not mutable, focusable, or even submitted with the form.
|
|
247
267
|
* @property {string} shadowMode=open `open` Elements of the shadow root are accessible from JavaScript outside the root, for example using. `close` Denies access to the node(s) of a closed shadow root from JavaScript outside it
|
|
248
268
|
* @property {Boolean} delegatesFocus=true A boolean that, when set to true, specifies behavior that mitigates custom element issues around focusability. When a non-focusable part of the shadow DOM is clicked, the first focusable part is given focus, and the shadow host is given any available :focus styling.
|
|
@@ -374,7 +394,7 @@ class CustomElement extends HTMLElement {
|
|
|
374
394
|
setOptions(options) {
|
|
375
395
|
|
|
376
396
|
if (isString(options)) {
|
|
377
|
-
options = parseOptionsJSON(options)
|
|
397
|
+
options = parseOptionsJSON.call(this, options)
|
|
378
398
|
}
|
|
379
399
|
|
|
380
400
|
const self = this;
|
|
@@ -404,6 +424,17 @@ class CustomElement extends HTMLElement {
|
|
|
404
424
|
const self = this;
|
|
405
425
|
let elements, nodeList;
|
|
406
426
|
|
|
427
|
+
const AttributeOptions = getOptionsFromAttributes.call(self);
|
|
428
|
+
if (isObject(AttributeOptions) && Object.keys(AttributeOptions).length > 0) {
|
|
429
|
+
self.setOptions(AttributeOptions);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const ScriptOptions = getOptionsFromScriptTag.call(self);
|
|
433
|
+
if (isObject(ScriptOptions) && Object.keys(ScriptOptions).length > 0) {
|
|
434
|
+
self.setOptions(ScriptOptions);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
|
|
407
438
|
if (self.getOption('shadowMode', false) !== false) {
|
|
408
439
|
try {
|
|
409
440
|
initShadowRoot.call(self);
|
|
@@ -674,7 +705,15 @@ function initOptionObserver() {
|
|
|
674
705
|
// data-monster-options
|
|
675
706
|
self[attributeObserverSymbol][ATTRIBUTE_OPTIONS] = () => {
|
|
676
707
|
const options = getOptionsFromAttributes.call(self);
|
|
677
|
-
if (isObject(options)) {
|
|
708
|
+
if (isObject(options) && Object.keys(options).length > 0) {
|
|
709
|
+
self.setOptions(options);
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// data-monster-options-selector
|
|
714
|
+
self[attributeObserverSymbol][ATTRIBUTE_OPTIONS_SELECTOR] = () => {
|
|
715
|
+
const options = getOptionsFromScriptTag.call(self);
|
|
716
|
+
if (isObject(options) && Object.keys(options).length > 0) {
|
|
678
717
|
self.setOptions(options);
|
|
679
718
|
}
|
|
680
719
|
}
|
|
@@ -685,14 +724,45 @@ function initOptionObserver() {
|
|
|
685
724
|
/**
|
|
686
725
|
* @private
|
|
687
726
|
* @return {object}
|
|
688
|
-
* @throws {
|
|
727
|
+
* @throws {TypeError} value is not a object
|
|
728
|
+
*/
|
|
729
|
+
function getOptionsFromScriptTag() {
|
|
730
|
+
const self = this;
|
|
731
|
+
|
|
732
|
+
if (!self.hasAttribute(ATTRIBUTE_OPTIONS_SELECTOR)) {
|
|
733
|
+
return {};
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
const node = document.querySelector(self.getAttribute(ATTRIBUTE_OPTIONS_SELECTOR));
|
|
737
|
+
if (!(node instanceof HTMLScriptElement)) {
|
|
738
|
+
addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, 'the selector ' + ATTRIBUTE_OPTIONS_SELECTOR + ' for options was specified (' + self.getAttribute(ATTRIBUTE_OPTIONS_SELECTOR) + ') but not found.');
|
|
739
|
+
return {};
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
let obj = {};
|
|
743
|
+
|
|
744
|
+
try {
|
|
745
|
+
obj = parseOptionsJSON.call(this, node.textContent.trim())
|
|
746
|
+
} catch (e) {
|
|
747
|
+
addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, 'when analyzing the configuration from the script tag there was an error. ' + e);
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
return obj;
|
|
751
|
+
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* @private
|
|
756
|
+
* @return {object}
|
|
689
757
|
*/
|
|
690
758
|
function getOptionsFromAttributes() {
|
|
759
|
+
const self = this;
|
|
760
|
+
|
|
691
761
|
if (this.hasAttribute(ATTRIBUTE_OPTIONS)) {
|
|
692
762
|
try {
|
|
693
|
-
return parseOptionsJSON(this.getAttribute(ATTRIBUTE_OPTIONS))
|
|
763
|
+
return parseOptionsJSON.call(self, this.getAttribute(ATTRIBUTE_OPTIONS))
|
|
694
764
|
} catch (e) {
|
|
695
|
-
|
|
765
|
+
addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, 'the options attribute ' + ATTRIBUTE_OPTIONS + ' does not contain a valid json definition (actual: ' + this.getAttribute(ATTRIBUTE_OPTIONS) + ').' + e);
|
|
696
766
|
}
|
|
697
767
|
}
|
|
698
768
|
|
|
@@ -705,27 +775,30 @@ function getOptionsFromAttributes() {
|
|
|
705
775
|
* @return {Object}
|
|
706
776
|
*/
|
|
707
777
|
function parseOptionsJSON(data) {
|
|
708
|
-
if (isString(data)) {
|
|
709
778
|
|
|
710
|
-
|
|
711
|
-
try {
|
|
712
|
-
let dataUrl = parseDataURL(data);
|
|
713
|
-
data = dataUrl.content;
|
|
714
|
-
} catch (e) {
|
|
779
|
+
const self = this, obj = {};
|
|
715
780
|
|
|
716
|
-
|
|
781
|
+
if (!isString(data)) {
|
|
782
|
+
return obj;
|
|
783
|
+
}
|
|
717
784
|
|
|
785
|
+
// the configuration can be specified as a data url.
|
|
786
|
+
try {
|
|
787
|
+
let dataUrl = parseDataURL(data);
|
|
788
|
+
data = dataUrl.content;
|
|
789
|
+
} catch (e) {
|
|
718
790
|
|
|
719
|
-
try {
|
|
720
|
-
let obj = JSON.parse(data);
|
|
721
|
-
validateObject(obj);
|
|
722
|
-
return obj;
|
|
723
|
-
} catch (e) {
|
|
724
|
-
throw new Error('the options does not contain a valid json definition (actual: ' + data + ').');
|
|
725
|
-
}
|
|
726
791
|
}
|
|
727
792
|
|
|
728
|
-
|
|
793
|
+
try {
|
|
794
|
+
let obj = JSON.parse(data);
|
|
795
|
+
return validateObject(obj);
|
|
796
|
+
} catch (e) {
|
|
797
|
+
throw e;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
return obj;
|
|
729
802
|
}
|
|
730
803
|
|
|
731
804
|
/**
|
|
@@ -768,12 +841,29 @@ function initCSSStylesheet() {
|
|
|
768
841
|
const styleSheet = this.constructor.getCSSStyleSheet();
|
|
769
842
|
|
|
770
843
|
if (styleSheet instanceof CSSStyleSheet) {
|
|
771
|
-
|
|
844
|
+
if (styleSheet.cssRules.length > 0) {
|
|
845
|
+
this.shadowRoot.adoptedStyleSheets = [styleSheet];
|
|
846
|
+
}
|
|
772
847
|
} else if (isArray(styleSheet)) {
|
|
773
848
|
const assign = [];
|
|
774
849
|
for (let s of styleSheet) {
|
|
850
|
+
|
|
851
|
+
if (isString(s)) {
|
|
852
|
+
let trimedStyleSheet = s.trim()
|
|
853
|
+
if (trimedStyleSheet !== '') {
|
|
854
|
+
const style = document.createElement('style')
|
|
855
|
+
style.innerHTML = trimedStyleSheet;
|
|
856
|
+
self.shadowRoot.prepend(style);
|
|
857
|
+
}
|
|
858
|
+
continue;
|
|
859
|
+
}
|
|
860
|
+
|
|
775
861
|
validateInstance(s, CSSStyleSheet);
|
|
776
|
-
|
|
862
|
+
|
|
863
|
+
if (s.cssRules.length > 0) {
|
|
864
|
+
assign.push(s);
|
|
865
|
+
}
|
|
866
|
+
|
|
777
867
|
}
|
|
778
868
|
|
|
779
869
|
if (assign.length > 0) {
|
|
@@ -781,9 +871,14 @@ function initCSSStylesheet() {
|
|
|
781
871
|
}
|
|
782
872
|
|
|
783
873
|
} else if (isString(styleSheet)) {
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
874
|
+
|
|
875
|
+
let trimedStyleSheet = styleSheet.trim()
|
|
876
|
+
if (trimedStyleSheet !== '') {
|
|
877
|
+
const style = document.createElement('style')
|
|
878
|
+
style.innerHTML = styleSheet;
|
|
879
|
+
self.shadowRoot.prepend(style);
|
|
880
|
+
}
|
|
881
|
+
|
|
787
882
|
}
|
|
788
883
|
|
|
789
884
|
return self;
|
package/source/dom/events.js
CHANGED
|
@@ -14,7 +14,7 @@ import {getDocument} from "./util.js";
|
|
|
14
14
|
*
|
|
15
15
|
* ```
|
|
16
16
|
* <script type="module">
|
|
17
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
17
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
18
18
|
* new Monster.DOM.fireEvent()
|
|
19
19
|
* </script>
|
|
20
20
|
* ```
|
|
@@ -23,7 +23,7 @@ import {getDocument} from "./util.js";
|
|
|
23
23
|
*
|
|
24
24
|
* ```
|
|
25
25
|
* <script type="module">
|
|
26
|
-
* import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
26
|
+
* import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/events.js';
|
|
27
27
|
* fireEvent()
|
|
28
28
|
* </script>
|
|
29
29
|
* ```
|
|
@@ -70,7 +70,7 @@ function fireEvent(element, type) {
|
|
|
70
70
|
*
|
|
71
71
|
* ```
|
|
72
72
|
* <script type="module">
|
|
73
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
73
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
74
74
|
* new Monster.DOM.fireCustomEvent()
|
|
75
75
|
* </script>
|
|
76
76
|
* ```
|
|
@@ -79,7 +79,7 @@ function fireEvent(element, type) {
|
|
|
79
79
|
*
|
|
80
80
|
* ```
|
|
81
81
|
* <script type="module">
|
|
82
|
-
* import {fireCustomEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
82
|
+
* import {fireCustomEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/events.js';
|
|
83
83
|
* fireCustomEvent()
|
|
84
84
|
* </script>
|
|
85
85
|
* ```
|
|
@@ -130,7 +130,7 @@ function fireCustomEvent(element, type, detail) {
|
|
|
130
130
|
*
|
|
131
131
|
* ```
|
|
132
132
|
* <script type="module">
|
|
133
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
133
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
134
134
|
* new Monster.DOM.findTargetElementFromEvent()
|
|
135
135
|
* </script>
|
|
136
136
|
* ```
|
|
@@ -139,7 +139,7 @@ function fireCustomEvent(element, type, detail) {
|
|
|
139
139
|
*
|
|
140
140
|
* ```
|
|
141
141
|
* <script type="module">
|
|
142
|
-
* import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
142
|
+
* import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/events.js';
|
|
143
143
|
* findTargetElementFromEvent()
|
|
144
144
|
* </script>
|
|
145
145
|
* ```
|
|
@@ -41,7 +41,7 @@ const stackSymbol = Symbol('stack');
|
|
|
41
41
|
*
|
|
42
42
|
* ```
|
|
43
43
|
* <script type="module">
|
|
44
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
44
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
45
45
|
* new Monster.DOM.FocusManager()
|
|
46
46
|
* </script>
|
|
47
47
|
* ```
|
|
@@ -50,7 +50,7 @@ const stackSymbol = Symbol('stack');
|
|
|
50
50
|
*
|
|
51
51
|
* ```
|
|
52
52
|
* <script type="module">
|
|
53
|
-
* import {FocusManager} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
53
|
+
* import {FocusManager} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/focusmanager.js';
|
|
54
54
|
* new FocusManager()
|
|
55
55
|
* </script>
|
|
56
56
|
* ```
|
package/source/dom/locale.js
CHANGED
|
@@ -26,7 +26,7 @@ const DEFAULT_LANGUAGE = 'en';
|
|
|
26
26
|
*
|
|
27
27
|
* ```
|
|
28
28
|
* <script type="module">
|
|
29
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
29
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
30
30
|
* new Monster.DOM.getLocaleOfDocument()
|
|
31
31
|
* </script>
|
|
32
32
|
* ```
|
|
@@ -35,7 +35,7 @@ const DEFAULT_LANGUAGE = 'en';
|
|
|
35
35
|
*
|
|
36
36
|
* ```
|
|
37
37
|
* <script type="module">
|
|
38
|
-
* import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
38
|
+
* import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/dom/locale.js';
|
|
39
39
|
* new getLocaleOfDocument()
|
|
40
40
|
* </script>
|
|
41
41
|
* ```
|