@schukai/monster 1.14.0 → 1.15.3

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.
Files changed (151) hide show
  1. package/CHANGELOG +38 -0
  2. package/README.md +5 -5
  3. package/dist/modules/constants.js +2 -2
  4. package/dist/modules/constraints/abstract.js +2 -2
  5. package/dist/modules/constraints/abstractoperator.js +2 -2
  6. package/dist/modules/constraints/andoperator.js +2 -2
  7. package/dist/modules/constraints/invalid.js +2 -2
  8. package/dist/modules/constraints/isarray.js +2 -2
  9. package/dist/modules/constraints/isobject.js +2 -2
  10. package/dist/modules/constraints/namespace.js +1 -1
  11. package/dist/modules/constraints/oroperator.js +2 -2
  12. package/dist/modules/constraints/valid.js +2 -2
  13. package/dist/modules/data/buildmap.js +2 -2
  14. package/dist/modules/data/diff.js +2 -2
  15. package/dist/modules/data/extend.js +2 -2
  16. package/dist/modules/data/namespace.js +1 -1
  17. package/dist/modules/data/pathfinder.js +2 -2
  18. package/dist/modules/data/pipe.js +2 -2
  19. package/dist/modules/data/transformer.js +2 -2
  20. package/dist/modules/dom/assembler.js +2 -2
  21. package/dist/modules/dom/attributes.js +2 -2
  22. package/dist/modules/dom/constants.js +1 -1
  23. package/dist/modules/dom/customcontrol.js +2 -2
  24. package/dist/modules/dom/customelement.js +2 -2
  25. package/dist/modules/dom/events.js +2 -2
  26. package/dist/modules/dom/locale.js +2 -2
  27. package/dist/modules/dom/namespace.js +1 -1
  28. package/dist/modules/dom/template.js +2 -2
  29. package/dist/modules/dom/theme.js +2 -2
  30. package/dist/modules/dom/updater.js +2 -2
  31. package/dist/modules/dom/util.js +2 -2
  32. package/dist/modules/i18n/locale.js +2 -2
  33. package/dist/modules/i18n/namespace.js +1 -1
  34. package/dist/modules/i18n/provider.js +2 -2
  35. package/dist/modules/i18n/providers/fetch.js +2 -2
  36. package/dist/modules/i18n/providers/namespace.js +1 -1
  37. package/dist/modules/i18n/translations.js +2 -2
  38. package/dist/modules/logging/handler/console.js +2 -2
  39. package/dist/modules/logging/handler/namespace.js +1 -1
  40. package/dist/modules/logging/handler.js +2 -2
  41. package/dist/modules/logging/logentry.js +2 -2
  42. package/dist/modules/logging/logger.js +2 -2
  43. package/dist/modules/logging/namespace.js +1 -1
  44. package/dist/modules/math/namespace.js +1 -1
  45. package/dist/modules/math/random.js +2 -2
  46. package/dist/modules/monster.js +2 -2
  47. package/dist/modules/namespace.js +2 -2
  48. package/dist/modules/text/formatter.js +2 -2
  49. package/dist/modules/text/namespace.js +1 -1
  50. package/dist/modules/types/base.js +2 -2
  51. package/dist/modules/types/basewithoptions.js +2 -2
  52. package/dist/modules/types/global.js +2 -2
  53. package/dist/modules/types/id.js +2 -2
  54. package/dist/modules/types/is.js +2 -2
  55. package/dist/modules/types/namespace.js +1 -1
  56. package/dist/modules/types/observer.js +2 -2
  57. package/dist/modules/types/observerlist.js +2 -2
  58. package/dist/modules/types/proxyobserver.js +2 -2
  59. package/dist/modules/types/queue.js +2 -2
  60. package/dist/modules/types/randomid.js +2 -2
  61. package/dist/modules/types/stack.js +2 -2
  62. package/dist/modules/types/tokenlist.js +2 -2
  63. package/dist/modules/types/typeof.js +2 -2
  64. package/dist/modules/types/uniquequeue.js +2 -2
  65. package/dist/modules/types/validate.js +2 -2
  66. package/dist/modules/types/version.js +2 -2
  67. package/dist/modules/util/clone.js +2 -2
  68. package/dist/modules/util/comparator.js +2 -2
  69. package/dist/modules/util/freeze.js +2 -2
  70. package/dist/modules/util/namespace.js +1 -1
  71. package/dist/monster.dev.js +8263 -7501
  72. package/dist/monster.dev.js.map +1 -1
  73. package/dist/monster.js +2 -9
  74. package/package.json +1 -1
  75. package/source/constants.js +6 -5
  76. package/source/constraints/abstract.js +2 -2
  77. package/source/constraints/abstractoperator.js +4 -4
  78. package/source/constraints/andoperator.js +8 -8
  79. package/source/constraints/invalid.js +6 -6
  80. package/source/constraints/isarray.js +7 -7
  81. package/source/constraints/isobject.js +7 -7
  82. package/source/constraints/namespace.js +2 -2
  83. package/source/constraints/oroperator.js +8 -8
  84. package/source/constraints/valid.js +7 -7
  85. package/source/data/buildmap.js +15 -15
  86. package/source/data/diff.js +9 -9
  87. package/source/data/extend.js +55 -13
  88. package/source/data/namespace.js +2 -2
  89. package/source/data/pathfinder.js +13 -14
  90. package/source/data/pipe.js +8 -8
  91. package/source/data/transformer.js +10 -11
  92. package/source/dom/assembler.js +7 -7
  93. package/source/dom/attributes.js +27 -28
  94. package/source/dom/constants.js +1 -2
  95. package/source/dom/customcontrol.js +90 -128
  96. package/source/dom/customelement.js +166 -71
  97. package/source/dom/events.js +9 -9
  98. package/source/dom/locale.js +5 -5
  99. package/source/dom/namespace.js +2 -2
  100. package/source/dom/template.js +30 -19
  101. package/source/dom/theme.js +8 -9
  102. package/source/dom/updater.js +43 -26
  103. package/source/dom/util.js +11 -11
  104. package/source/i18n/locale.js +7 -7
  105. package/source/i18n/namespace.js +1 -1
  106. package/source/i18n/provider.js +6 -6
  107. package/source/i18n/providers/fetch.js +10 -10
  108. package/source/i18n/translations.js +5 -5
  109. package/source/logging/handler/console.js +5 -5
  110. package/source/logging/handler/namespace.js +1 -1
  111. package/source/logging/handler.js +8 -8
  112. package/source/logging/logentry.js +5 -5
  113. package/source/logging/logger.js +5 -5
  114. package/source/logging/namespace.js +2 -2
  115. package/source/math/namespace.js +2 -2
  116. package/source/math/random.js +5 -5
  117. package/source/monster.js +48 -44
  118. package/source/namespace.js +2 -2
  119. package/source/text/formatter.js +6 -7
  120. package/source/text/namespace.js +1 -1
  121. package/source/types/base.js +4 -5
  122. package/source/types/basewithoptions.js +10 -9
  123. package/source/types/global.js +7 -7
  124. package/source/types/id.js +7 -7
  125. package/source/types/is.js +22 -22
  126. package/source/types/namespace.js +2 -2
  127. package/source/types/observer.js +7 -7
  128. package/source/types/observerlist.js +4 -4
  129. package/source/types/proxyobserver.js +32 -26
  130. package/source/types/queue.js +13 -7
  131. package/source/types/randomid.js +6 -6
  132. package/source/types/stack.js +11 -4
  133. package/source/types/tokenlist.js +9 -9
  134. package/source/types/typeof.js +5 -5
  135. package/source/types/uniquequeue.js +14 -7
  136. package/source/types/validate.js +27 -27
  137. package/source/types/version.js +9 -9
  138. package/source/util/clone.js +6 -6
  139. package/source/util/comparator.js +7 -7
  140. package/source/util/freeze.js +7 -7
  141. package/source/util/namespace.js +2 -2
  142. package/test/cases/data/extend.js +66 -13
  143. package/test/cases/dom/customcontrol.js +17 -3
  144. package/test/cases/dom/customelement.js +65 -7
  145. package/test/cases/dom/template.js +40 -1
  146. package/test/cases/monster.js +1 -1
  147. package/test/cases/types/proxyobserver.js +9 -0
  148. package/test/web/monster-dev.html +3 -3
  149. package/test/web/monster.html +2 -2
  150. package/test/web/test.html +3 -3
  151. package/test/web/tests.js +3 -3
@@ -3,8 +3,8 @@
3
3
  /**
4
4
  * @author schukai GmbH
5
5
  */
6
-
7
- import {Monster, validateInstance, validateString} from "../types/validate.js";
6
+ import {assignToNamespace, Monster} from '../namespace.js';
7
+ import {validateInstance, validateString} from "../types/validate.js";
8
8
  import {findClosestByAttribute} from "./attributes.js";
9
9
  import {getDocument} from "./util.js";
10
10
 
@@ -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.14.0/dist/modules/dom/events.js';
16
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/events.js';
25
+ * import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/events.js';
74
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/events.js';
83
+ * import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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
@@ -113,5 +113,5 @@ function findTargetElementFromEvent(event, attributeName, attributeValue) {
113
113
  }
114
114
 
115
115
 
116
- Monster.assignToNamespace('Monster.DOM', findTargetElementFromEvent, fireEvent);
116
+ assignToNamespace('Monster.DOM', findTargetElementFromEvent, fireEvent);
117
117
  export {Monster, findTargetElementFromEvent, fireEvent}
@@ -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
-
7
- import {Monster, 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.14.0/dist/modules/dom/locale.js';
23
+ * import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/locale.js';
32
+ * import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/dom/locale.js';
33
33
  * console.log(new getLocaleOfDocument())
34
34
  * </script>
35
35
  * ```
@@ -55,5 +55,5 @@ function getLocaleOfDocument() {
55
55
  return parseLocale(DEFAULT_LANGUAGE);
56
56
  }
57
57
 
58
- Monster.assignToNamespace('Monster.DOM', getLocaleOfDocument);
58
+ assignToNamespace('Monster.DOM', getLocaleOfDocument);
59
59
  export {Monster, getLocaleOfDocument}
@@ -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";
@@ -3,11 +3,10 @@
3
3
  /**
4
4
  * @author schukai GmbH
5
5
  */
6
-
7
- import {Monster, Base} from '../types/base.js';
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.14.0/dist/modules/dom/template.js';
17
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/template.js';
26
+ * import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/template.js';
76
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/template.js';
85
+ * import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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} root
91
+ * @param {Node} currentNode
93
92
  * @return {Template}
94
93
  * @since 1.7.0
95
94
  * @copyright schukai GmbH
@@ -97,29 +96,41 @@ 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, root) {
99
+ function findDocumentTemplate(id, currentNode) {
101
100
  validateString(id);
102
-
103
- if (!(root instanceof Node)) {
104
- root = getGlobalObject('document');
101
+
102
+ if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {
103
+
104
+ if (currentNode instanceof Node) {
105
+ currentNode = currentNode.getRootNode();
106
+
107
+ if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {
108
+ currentNode = currentNode.ownerDocument;
109
+ }
110
+
111
+ }
112
+
113
+ if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {
114
+ currentNode = getGlobalObject('document');
115
+ }
105
116
  }
106
-
117
+
107
118
  const HTMLTemplateElement = getGlobalFunction('HTMLTemplateElement');
108
119
 
109
120
  let theme = getDocumentTheme()
110
121
  let themedID = id + '-' + theme.getName();
111
122
 
112
- let template = root.getElementById(themedID);
123
+ let template = currentNode.getElementById(themedID);
113
124
  if (template instanceof HTMLTemplateElement) {
114
125
  return new Template(template);
115
126
  }
116
127
 
117
- template = root.getElementById(id);
128
+ template = currentNode.getElementById(id);
118
129
  if (template instanceof HTMLTemplateElement) {
119
130
  return new Template(template);
120
131
  }
121
-
122
- if(root!==getGlobalObject('document')) {
132
+
133
+ if (currentNode !== getGlobalObject('document')) {
123
134
  return findDocumentTemplate(id)
124
135
  }
125
136
 
@@ -127,7 +138,7 @@ function findDocumentTemplate(id, root) {
127
138
  }
128
139
 
129
140
 
130
- Monster.assignToNamespace('Monster.DOM', Template, findDocumentTemplate);
141
+ assignToNamespace('Monster.DOM', Template, findDocumentTemplate);
131
142
  export {Monster, Template, findDocumentTemplate}
132
143
 
133
144
 
@@ -3,20 +3,19 @@
3
3
  /**
4
4
  * @author schukai GmbH
5
5
  */
6
-
7
- import {Monster, Base} from '../types/base.js';
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.14.0/dist/modules/dom/theme.js';
18
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/theme.js';
27
+ * import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/theme.js';
34
+ * import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/dom/theme.js';
36
35
  *
37
36
  * const theme = getDocumentTheme();
38
37
  * console.log(theme.getName());
@@ -96,5 +95,5 @@ function getDocumentTheme() {
96
95
 
97
96
  }
98
97
 
99
- Monster.assignToNamespace('Monster.DOM', Theme, getDocumentTheme);
98
+ assignToNamespace('Monster.DOM', Theme, getDocumentTheme);
100
99
  export {Monster, Theme, getDocumentTheme}
@@ -1,28 +1,28 @@
1
1
  'use strict';
2
2
 
3
+ import {Diff} from "../data/diff.js";
3
4
  import {Pathfinder} from "../data/pathfinder.js";
4
5
  import {Pipe} from "../data/pipe.js";
5
- import {Base, Monster} from "../types/base.js";
6
- import {isInstance, isArray} from "../types/is.js";
7
- import {Observer} from "../types/observer.js";
8
- import {ProxyObserver} from "../types/proxyobserver.js";
9
- import {validateInstance, validateArray} from "../types/validate.js";
10
- import {clone} from "../util/clone.js";
11
- import {Diff} from "../data/diff.js";
12
6
  import {
13
- ATTRIBUTE_UPDATER_REPLACE,
14
7
  ATTRIBUTE_UPDATER_ATTRIBUTES,
8
+ ATTRIBUTE_UPDATER_BIND,
15
9
  ATTRIBUTE_UPDATER_INSERT,
16
- ATTRIBUTE_UPDATER_REMOVE,
17
10
  ATTRIBUTE_UPDATER_INSERT_REFERENCE,
18
- ATTRIBUTE_UPDATER_BIND
11
+ ATTRIBUTE_UPDATER_REMOVE,
12
+ ATTRIBUTE_UPDATER_REPLACE
19
13
  } from "../dom/constants.js";
20
- import {findDocumentTemplate} from "./template.js";
21
- import {getDocument} from "./util.js";
22
-
23
14
  /**
24
15
  * @author schukai GmbH
25
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
+ import {findDocumentTemplate} from "./template.js";
25
+ import {getDocument} from "./util.js";
26
26
 
27
27
 
28
28
  /**
@@ -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.14.0/dist/modules/dom/updater.js';
37
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/updater.js';
46
+ * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/updater.js';
53
+ * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.
@@ -102,6 +102,7 @@ class Updater extends Base {
102
102
  this.element = validateInstance(element, HTMLElement);
103
103
 
104
104
  if (subject === undefined) subject = {}
105
+ let a = subject;
105
106
  if (!isInstance(subject, ProxyObserver)) {
106
107
  subject = new ProxyObserver(subject);
107
108
  }
@@ -114,7 +115,9 @@ class Updater extends Base {
114
115
  * @type {object}
115
116
  */
116
117
  this.subject = subject.attachObserver(new Observer(() => {
118
+
117
119
  const s = this.subject.getRealSubject();
120
+
118
121
  const diff = Diff(this.last, s)
119
122
  this.last = clone(s);
120
123
 
@@ -174,6 +177,26 @@ class Updater extends Base {
174
177
 
175
178
  }
176
179
 
180
+ // /**
181
+ // *
182
+ // * @param {string} path
183
+ // * @param {*} value
184
+ // * @param {boolean} notifyAnyway
185
+ // * @return {Updater}
186
+ // * @since 1.15.0
187
+ // */
188
+ // setVia(path, value, notifyAnyway) {
189
+ // if(isBoolean(notifyAnyway)&&notifyAnyway===true) {
190
+ // // the key __init__has no further meaning and is only
191
+ // // used to create the diff for empty objects.
192
+ // new Pathfinder(this.last).setVia(path, {'__init__': true});
193
+ //
194
+ // }
195
+ //
196
+ // new Pathfinder(this.subject.getSubject()).setVia(path, value);
197
+ // return this;
198
+ // }
199
+
177
200
  /**
178
201
  * Let the magic begin
179
202
  *
@@ -318,10 +341,9 @@ function getControlEventHandler() {
318
341
 
319
342
 
320
343
  // values from customelements
321
- } else if ((element?.constructor?.prototype && !!Object.getOwnPropertyDescriptor(element.constructor.prototype, 'value')?.['get'])|| element.hasOwnProperty('value')) {
344
+ } else if ((element?.constructor?.prototype && !!Object.getOwnPropertyDescriptor(element.constructor.prototype, 'value')?.['get']) || element.hasOwnProperty('value')) {
322
345
  value = element?.['value'];
323
346
  } else {
324
- console.log(element);
325
347
  throw new Error("unsupported object");
326
348
  }
327
349
 
@@ -416,7 +438,7 @@ function insertElement(change) {
416
438
  insertPoint = containerElement.lastChild;
417
439
  }
418
440
 
419
- if (!isArray(value)) {
441
+ if (!isIterable(value)) {
420
442
  throw new Error('the value is not iterable');
421
443
  }
422
444
 
@@ -470,12 +492,7 @@ function insertElement(change) {
470
492
  */
471
493
  function appendNewDocumentFragment(container, key, ref, path) {
472
494
 
473
- let rootNode = container.getRootNode();
474
- if (!rootNode) {
475
- rootNode = getDocument();
476
- }
477
-
478
- let template = findDocumentTemplate(key, rootNode);
495
+ let template = findDocumentTemplate(key, container);
479
496
 
480
497
  let nodes = template.createDocumentFragment();
481
498
  for (const [, node] of Object.entries(nodes.childNodes)) {
@@ -728,5 +745,5 @@ function handleInputControlAttributeUpdate(element, name, value) {
728
745
 
729
746
  }
730
747
 
731
- Monster.assignToNamespace('Monster.DOM', Updater);
748
+ assignToNamespace('Monster.DOM', Updater);
732
749
  export {Monster, Updater}
@@ -3,8 +3,8 @@
3
3
  /**
4
4
  * @author schukai GmbH
5
5
  */
6
-
7
- import {Monster, getGlobal} from "../types/global.js";
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.14.0/dist/modules/dom/util.js';
16
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/util.js';
25
+ * import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/util.js';
77
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/util.js';
86
+ * import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/util.js';
143
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/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.14.0/dist/modules/dom/util.js';
152
+ * import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/dom/util.js';
153
153
  * console.log(getDocumentFragmentFromString('<div></div>'))
154
154
  * </script>
155
155
  * ```
@@ -194,10 +194,10 @@ 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
 
201
201
 
202
- Monster.assignToNamespace('Monster.DOM', getWindow, getDocument, getDocumentFragmentFromString);
202
+ assignToNamespace('Monster.DOM', getWindow, getDocument, getDocumentFragmentFromString);
203
203
  export {Monster, getWindow, getDocument, getDocumentFragmentFromString}
@@ -3,8 +3,8 @@
3
3
  /**
4
4
  * @author schukai GmbH
5
5
  */
6
-
7
- import {Monster, Base} from "../types/base.js";
6
+ import {assignToNamespace, Monster} from '../namespace.js';
7
+ import {Base} from "../types/base.js";
8
8
  import {validateString} from "../types/validate.js";
9
9
  import {clone} from "../util/clone.js";
10
10
 
@@ -23,7 +23,7 @@ const localeStringSymbol = Symbol('localeString');
23
23
  *
24
24
  * ```
25
25
  * <script type="module">
26
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.14.0/dist/modules/i18n/locale.js';
26
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/i18n/locale.js';
27
27
  * console.log(new Monster.I18n.Locale())
28
28
  * </script>
29
29
  * ```
@@ -32,7 +32,7 @@ const localeStringSymbol = Symbol('localeString');
32
32
  *
33
33
  * ```
34
34
  * <script type="module">
35
- * import {Locale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.14.0/dist/modules/i18n/locale.js';
35
+ * import {Locale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/i18n/locale.js';
36
36
  * console.log(new Locale())
37
37
  * </script>
38
38
  * ```
@@ -189,7 +189,7 @@ class Locale extends Base {
189
189
  *
190
190
  * ```
191
191
  * <script type="module">
192
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.14.0/dist/modules/i18n/locale.js';
192
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/i18n/locale.js';
193
193
  * console.log(new Monster.I18n.createLocale())
194
194
  * </script>
195
195
  * ```
@@ -198,7 +198,7 @@ class Locale extends Base {
198
198
  *
199
199
  * ```
200
200
  * <script type="module">
201
- * import {createLocale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.14.0/dist/modules/i18n/locale.js';
201
+ * import {createLocale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/i18n/locale.js';
202
202
  * console.log(createLocale())
203
203
  * </script>
204
204
  * ```
@@ -318,5 +318,5 @@ function parseLocale(locale) {
318
318
  }
319
319
 
320
320
 
321
- Monster.assignToNamespace('Monster.I18n', Locale, parseLocale);
321
+ assignToNamespace('Monster.I18n', Locale, parseLocale);
322
322
  export {Monster, Locale, parseLocale}
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * In this namespace you will find classes and methods for handling locale and localized texts.
5
- *
5
+ *
6
6
  * @namespace Monster/I18n
7
7
  * @author schukai GmbH
8
8
  */
@@ -3,19 +3,19 @@
3
3
  /**
4
4
  * @author schukai GmbH
5
5
  */
6
-
7
- import {Monster, BaseWithOptions} from "../types/basewithoptions.js";
6
+ import {assignToNamespace, Monster} from '../namespace.js';
7
+ import {BaseWithOptions} from "../types/basewithoptions.js";
8
8
  import {Locale} from "./locale.js"
9
9
  import {Translations} from "./translations.js"
10
10
 
11
11
  /**
12
12
  * A provider makes a translation object available.
13
- *
13
+ *
14
14
  * You can call the method via the monster namespace `new Monster.I18n.Provider()`.
15
15
  *
16
16
  * ```
17
17
  * <script type="module">
18
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.14.0/dist/modules/i18n/provider.js';
18
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/i18n/provider.js';
19
19
  * console.log(new Monster.I18n.Provider())
20
20
  * </script>
21
21
  * ```
@@ -24,7 +24,7 @@ import {Translations} from "./translations.js"
24
24
  *
25
25
  * ```
26
26
  * <script type="module">
27
- * import {Provider} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.14.0/dist/modules/i18n/provider.js';
27
+ * import {Provider} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.3/dist/modules/i18n/provider.js';
28
28
  * console.log(new Provider())
29
29
  * </script>
30
30
  * ```
@@ -54,5 +54,5 @@ class Provider extends BaseWithOptions {
54
54
  }
55
55
 
56
56
 
57
- Monster.assignToNamespace('Monster.I18n', Provider);
57
+ assignToNamespace('Monster.I18n', Provider);
58
58
  export {Monster, Provider}