@schukai/monster 3.65.20 → 3.66.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
2
+ * Copyright © schukai GmbH and all contributing authors, 2024. All rights reserved.
3
3
  * Node module: @schukai/monster
4
4
  *
5
5
  * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
@@ -8,8 +8,6 @@
8
8
  * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
9
  * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
10
  * For more information about purchasing a commercial license, please contact schukai GmbH.
11
- *
12
- * SPDX-License-Identifier: AGPL-3.0
13
11
  */
14
12
 
15
13
  import { addAttributeToken } from "../../dom/attributes.mjs";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
2
+ * Copyright © schukai GmbH and all contributing authors, 2024. All rights reserved.
3
3
  * Node module: @schukai/monster
4
4
  *
5
5
  * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
@@ -8,8 +8,6 @@
8
8
  * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
9
  * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
10
  * For more information about purchasing a commercial license, please contact schukai GmbH.
11
- *
12
- * SPDX-License-Identifier: AGPL-3.0
13
11
  */
14
12
 
15
13
  import { addAttributeToken } from "../../../dom/attributes.mjs";
@@ -13,6 +13,7 @@
13
13
  */
14
14
 
15
15
  import { instanceSymbol } from "../../constants.mjs";
16
+ import { findElementWithSelectorUpwards } from "../../dom/util.mjs";
16
17
  import { isObject } from "../../types/is.mjs";
17
18
  import { Datasource } from "../datasource.mjs";
18
19
 
@@ -74,9 +75,9 @@ class DomStorage extends Datasource {
74
75
  throw new Error("The read selector is not defined");
75
76
  }
76
77
 
77
- const storage = document.querySelector(selector);
78
+ const storage = findElementWithSelectorUpwards(this, selector);
78
79
  if (!storage) {
79
- throw new Error("There are no storage element");
80
+ throw new Error("There is no storage element");
80
81
  }
81
82
 
82
83
  return new Promise((resolve, reject) => {
@@ -98,12 +99,12 @@ class DomStorage extends Datasource {
98
99
  write() {
99
100
  const selector = this.getOption("write.selector");
100
101
  if (!selector) {
101
- throw new Error("The write selector is not defined");
102
+ throw new Error("The option write.selector is not defined");
102
103
  }
103
104
 
104
- const storage = document.querySelector(selector);
105
+ const storage = findElementWithSelectorUpwards(this, selector);
105
106
  if (!storage) {
106
- throw new Error("There are no storage element");
107
+ throw new Error("There is no storage element");
107
108
  }
108
109
 
109
110
  return new Promise((resolve, reject) => {
@@ -15,6 +15,7 @@
15
15
  import { internalStateSymbol } from "../../constants.mjs";
16
16
  import { extend } from "../../data/extend.mjs";
17
17
  import { getGlobalFunction } from "../../types/global.mjs";
18
+ import { addAttributeToken } from "../attributes.mjs";
18
19
  import {
19
20
  ATTRIBUTE_CLASS,
20
21
  ATTRIBUTE_ERRORMESSAGE,
@@ -31,6 +32,7 @@ import {
31
32
  Resource,
32
33
  } from "../resource.mjs";
33
34
  import { instanceSymbol } from "../../constants.mjs";
35
+
34
36
  export { Data };
35
37
 
36
38
  /**
@@ -72,6 +74,7 @@ class Data extends Resource {
72
74
  * @return {Monster.DOM.Resource}
73
75
  */
74
76
  connect() {
77
+ const self = this;
75
78
  if (!(this[referenceSymbol] instanceof HTMLElement)) {
76
79
  this.create();
77
80
  }
@@ -242,7 +242,6 @@ function addEvents() {
242
242
  this[referenceSymbol].removeEventListener("error", onError);
243
243
  this[referenceSymbol].removeEventListener("load", onLoad);
244
244
  this[internalStateSymbol].getSubject()["loaded"] = true;
245
- return;
246
245
  };
247
246
 
248
247
  this[referenceSymbol].addEventListener("load", onLoad, false);
@@ -12,15 +12,15 @@
12
12
  * SPDX-License-Identifier: AGPL-3.0
13
13
  */
14
14
 
15
- import {Base} from "../types/base.mjs";
16
- import {getGlobalFunction, getGlobalObject} from "../types/global.mjs";
17
- import {validateInstance, validateString} from "../types/validate.mjs";
18
- import {ATTRIBUTE_TEMPLATE_PREFIX} from "./constants.mjs";
19
- import {getDocumentTheme} from "./theme.mjs";
20
- import {instanceSymbol} from "../constants.mjs";
21
- import {findElementWithIdUpwards} from "./util.mjs";
15
+ import { Base } from "../types/base.mjs";
16
+ import { getGlobalFunction, getGlobalObject } from "../types/global.mjs";
17
+ import { validateInstance, validateString } from "../types/validate.mjs";
18
+ import { ATTRIBUTE_TEMPLATE_PREFIX } from "./constants.mjs";
19
+ import { getDocumentTheme } from "./theme.mjs";
20
+ import { instanceSymbol } from "../constants.mjs";
21
+ import { findElementWithIdUpwards } from "./util.mjs";
22
22
 
23
- export {Template};
23
+ export { Template };
24
24
 
25
25
  /**
26
26
  * The template class provides methods for creating templates.
@@ -32,45 +32,45 @@ export {Template};
32
32
  * @summary A template class
33
33
  */
34
34
  class Template extends Base {
35
- /**
36
- *
37
- * @param {HTMLTemplateElement} template
38
- * @throws {TypeError} value is not an instance of
39
- * @throws {TypeError} value is not a function
40
- * @throws {Error} the function is not defined
41
- */
42
- constructor(template) {
43
- super();
44
- const HTMLTemplateElement = getGlobalFunction("HTMLTemplateElement");
45
- validateInstance(template, HTMLTemplateElement);
46
- this.template = template;
47
- }
48
-
49
- /**
50
- * This method is called by the `instanceof` operator.
51
- * @returns {symbol}
52
- * @since 2.1.0
53
- */
54
- static get [instanceSymbol]() {
55
- return Symbol.for("@schukai/monster/dom/resource/template");
56
- }
57
-
58
- /**
59
- *
60
- * @returns {HTMLTemplateElement}
61
- */
62
- getTemplateElement() {
63
- return this.template;
64
- }
65
-
66
- /**
67
- *
68
- * @return {DocumentFragment}
69
- * @throws {TypeError} value is not an instance of
70
- */
71
- createDocumentFragment() {
72
- return this.template.content.cloneNode(true);
73
- }
35
+ /**
36
+ *
37
+ * @param {HTMLTemplateElement} template
38
+ * @throws {TypeError} value is not an instance of
39
+ * @throws {TypeError} value is not a function
40
+ * @throws {Error} the function is not defined
41
+ */
42
+ constructor(template) {
43
+ super();
44
+ const HTMLTemplateElement = getGlobalFunction("HTMLTemplateElement");
45
+ validateInstance(template, HTMLTemplateElement);
46
+ this.template = template;
47
+ }
48
+
49
+ /**
50
+ * This method is called by the `instanceof` operator.
51
+ * @returns {symbol}
52
+ * @since 2.1.0
53
+ */
54
+ static get [instanceSymbol]() {
55
+ return Symbol.for("@schukai/monster/dom/resource/template");
56
+ }
57
+
58
+ /**
59
+ *
60
+ * @returns {HTMLTemplateElement}
61
+ */
62
+ getTemplateElement() {
63
+ return this.template;
64
+ }
65
+
66
+ /**
67
+ *
68
+ * @return {DocumentFragment}
69
+ * @throws {TypeError} value is not an instance of
70
+ */
71
+ createDocumentFragment() {
72
+ return this.template.content.cloneNode(true);
73
+ }
74
74
  }
75
75
 
76
76
  /**
@@ -137,70 +137,70 @@ class Template extends Base {
137
137
  * @throws {TypeError} value is not a string
138
138
  */
139
139
  export function findDocumentTemplate(id, currentNode) {
140
- validateString(id);
141
-
142
- const document = getGlobalObject("document");
143
- const HTMLTemplateElement = getGlobalFunction("HTMLTemplateElement");
144
- const DocumentFragment = getGlobalFunction("DocumentFragment");
145
- const Document = getGlobalFunction("Document");
146
-
147
- let prefixID;
148
-
149
- if (
150
- !(
151
- currentNode instanceof Document || currentNode instanceof DocumentFragment
152
- )
153
- ) {
154
- if (currentNode instanceof Node) {
155
- if (currentNode.hasAttribute(ATTRIBUTE_TEMPLATE_PREFIX)) {
156
- prefixID = currentNode.getAttribute(ATTRIBUTE_TEMPLATE_PREFIX);
157
- }
158
-
159
- currentNode = currentNode.getRootNode();
160
-
161
- if (
162
- !(
163
- currentNode instanceof Document ||
164
- currentNode instanceof DocumentFragment
165
- )
166
- ) {
167
- currentNode = currentNode.ownerDocument;
168
- }
169
- }
170
-
171
- if (
172
- !(
173
- currentNode instanceof Document ||
174
- currentNode instanceof DocumentFragment
175
- )
176
- ) {
177
- currentNode = document;
178
- }
179
- }
180
-
181
- let template;
182
- const theme = getDocumentTheme();
183
-
184
- if (prefixID) {
185
- const themedPrefixID = `${prefixID}-${id}-${theme.getName()}`;
186
-
187
- template = findElementWithIdUpwards(currentNode, themedPrefixID);
188
- if (template instanceof HTMLTemplateElement) {
189
- return new Template(template);
190
- }
191
- }
192
-
193
- const themedID = `${id}-${theme.getName()}`;
194
-
195
- template = findElementWithIdUpwards(currentNode, themedID);
196
- if (template instanceof HTMLTemplateElement) {
197
- return new Template(template);
198
- }
199
-
200
- template = findElementWithIdUpwards(currentNode, id);
201
- if (template instanceof HTMLTemplateElement) {
202
- return new Template(template);
203
- }
204
-
205
- throw new Error(`template ${id} not found.`);
140
+ validateString(id);
141
+
142
+ const document = getGlobalObject("document");
143
+ const HTMLTemplateElement = getGlobalFunction("HTMLTemplateElement");
144
+ const DocumentFragment = getGlobalFunction("DocumentFragment");
145
+ const Document = getGlobalFunction("Document");
146
+
147
+ let prefixID;
148
+
149
+ if (
150
+ !(
151
+ currentNode instanceof Document || currentNode instanceof DocumentFragment
152
+ )
153
+ ) {
154
+ if (currentNode instanceof Node) {
155
+ if (currentNode.hasAttribute(ATTRIBUTE_TEMPLATE_PREFIX)) {
156
+ prefixID = currentNode.getAttribute(ATTRIBUTE_TEMPLATE_PREFIX);
157
+ }
158
+
159
+ currentNode = currentNode.getRootNode();
160
+
161
+ if (
162
+ !(
163
+ currentNode instanceof Document ||
164
+ currentNode instanceof DocumentFragment
165
+ )
166
+ ) {
167
+ currentNode = currentNode.ownerDocument;
168
+ }
169
+ }
170
+
171
+ if (
172
+ !(
173
+ currentNode instanceof Document ||
174
+ currentNode instanceof DocumentFragment
175
+ )
176
+ ) {
177
+ currentNode = document;
178
+ }
179
+ }
180
+
181
+ let template;
182
+ const theme = getDocumentTheme();
183
+
184
+ if (prefixID) {
185
+ const themedPrefixID = `${prefixID}-${id}-${theme.getName()}`;
186
+
187
+ template = findElementWithIdUpwards(currentNode, themedPrefixID);
188
+ if (template instanceof HTMLTemplateElement) {
189
+ return new Template(template);
190
+ }
191
+ }
192
+
193
+ const themedID = `${id}-${theme.getName()}`;
194
+
195
+ template = findElementWithIdUpwards(currentNode, themedID);
196
+ if (template instanceof HTMLTemplateElement) {
197
+ return new Template(template);
198
+ }
199
+
200
+ template = findElementWithIdUpwards(currentNode, id);
201
+ if (template instanceof HTMLTemplateElement) {
202
+ return new Template(template);
203
+ }
204
+
205
+ throw new Error(`template ${id} not found.`);
206
206
  }