@schukai/monster 3.34.0 → 3.35.0

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schukai/monster",
3
- "version": "3.34.0",
3
+ "version": "3.35.0",
4
4
  "description": "Monster is a simple library for creating fast, robust and lightweight websites.",
5
5
  "keywords": [
6
6
  "framework",
@@ -19,27 +19,26 @@ export { buildMap, PARENT, assembleParts };
19
19
  const PARENT = "^";
20
20
 
21
21
  /**
22
- * With the help of the function `buildMap()`, maps can be easily created from data objects.
22
+ * Maps can be easily created from data objects with the help of the function `buildMap()`.
23
23
  *
24
- * Either a simple definition `a.b.c` or a template `${a.b.c}` can be specified as the path.
24
+ * The path can be specified as either a simple definition a.b.c or a template ${a.b.c}.
25
25
  * Key and value can be either a definition or a template. The key does not have to be defined.
26
- *
27
26
  * The templates determine the appearance of the keys and the value of the map. Either a single value
28
- * `id` can be taken or a composite key `${id} ${name}` can be used.
27
+ * id can be taken or a composite key ${id} ${name} can be used.
29
28
  *
30
- * If you want to access values of the parent data set, you have to use the `^` character `${id} ${^.name}`.
29
+ * If you want to access values of the parent data set, you have to use the ^ character, for example ${id} ${^.name}.
31
30
  *
32
31
  * @externalExample ../../example/data/buildmap.mjs
33
- * @param {*} subject
34
- * @param {string|Monster.Data~exampleSelectorCallback} selector
35
- * @param {string} [valueTemplate]
36
- * @param {string} [keyTemplate]
37
- * @param {Monster.Data~exampleFilterCallback} [filter]
38
- * @return {*}
32
+ * @param {*} subject - The data object from which the map will be created
33
+ * @param {string|Monster.Data~exampleSelectorCallback} selector - The path to the data object, or a callback that returns a map.
34
+ * @param {string} [valueTemplate] - A template for the value of the map.
35
+ * @param {string} [keyTemplate] - A template for the key of the map.
36
+ * @param {Monster.Data~exampleFilterCallback} [filter] - A callback function to filter out values.
37
+ * @return {*} - The created map.
39
38
  * @memberOf Monster.Data
40
- * @throws {TypeError} value is neither a string nor a function
41
- * @throws {TypeError} the selector callback must return a map
42
- */
39
+ * @throws {TypeError} - If the value is neither a string nor a function.
40
+ * @throws {TypeError} - If the selector callback does not return a map.
41
+ **/
43
42
  function buildMap(subject, selector, valueTemplate, keyTemplate, filter) {
44
43
  return assembleParts(subject, selector, filter, function (v, k, m) {
45
44
  k = build(v, keyTemplate, k);
@@ -49,13 +48,66 @@ function buildMap(subject, selector, valueTemplate, keyTemplate, filter) {
49
48
  }
50
49
 
51
50
  /**
51
+ * The assembleParts function is a private function that helps in building a map from a subject object based on a provided
52
+ * selector. The selector can either be a string or a callback function. This function is meant to be used as a
53
+ * helper function by other functions in the module.
54
+ *
55
+ * The function takes four parameters:
56
+ *
57
+ * subject: The subject object from which the map is to be built
58
+ * selector: The selector to determine the structure of the map. It can be a string or a callback function.
59
+ * filter (optional): A callback function that can be used to filter values based on some criteria.
60
+ * callback: A function to be called for each element in the map.
61
+ * If the selector parameter is a callback function, it is executed passing the subject as its argument,
62
+ * and the resulting value must be an instance of Map. Otherwise, if the selector parameter is a string,
63
+ * buildFlatMap is called to build a flat map with keys and values extracted from the subject object based on the selector.
64
+ *
65
+ * If the filter parameter is provided, it will be used to filter out certain elements from the map, based on some
66
+ * criteria. The callback will be passed the value, key, and map object, and if it returns false, the element will be skipped.
67
+ *
68
+ * For each element in the map, the callback function is called with the following parameters:
69
+ *
70
+ * v: The value of the element
71
+ * k: The key of the element
72
+ * m: The map object
73
+ * The function returns a new map with the processed values. If map is not an instance of Map, an empty map will be returned.
74
+ *
75
+ * Example Usage:
76
+ *
77
+ * ```javascript
78
+ * const obj = {
79
+ * name: "John",
80
+ * age: 30,
81
+ * address: {
82
+ * city: "New York",
83
+ * state: "NY",
84
+ * country: "USA",
85
+ * },
86
+ * };
87
+ *
88
+ * const selector = "address";
89
+ *
90
+ * const map = assembleParts(obj, selector, null, function (v, k, m) {
91
+ * this.set(k, v);
92
+ * });
93
+ *
94
+ * console.log(map);
95
+ * // Output: Map(3) {
96
+ * // "address.city" => "New York",
97
+ * // "address.state" => "NY",
98
+ * // "address.country" => "USA"
99
+ * // }
100
+ * ```
101
+ *
102
+ *
52
103
  * @private
53
- * @param {*} subject
54
- * @param {string|Monster.Data~exampleSelectorCallback} selector
55
- * @param {Monster.Data~exampleFilterCallback} [filter]
56
- * @param {function} callback
57
- * @return {Map}
58
- * @throws {TypeError} selector is neither a string nor a function
104
+ * @param {*} subject - The subject object from which the map is to be built.
105
+ * @param {string|Monster.Data~exampleSelectorCallback} selector - The selector to determine the structure of the map. It can be a string or a callback function.
106
+ * @param {Monster.Data~exampleFilterCallback} [filter] - A callback function that can be used to filter values based on some criteria.
107
+ * @param {function} callback - A function to be called for each element in the map.
108
+ * @return {Map} - A new map with the processed values.
109
+ * @throws {TypeError} - When selector is neither a string nor a function.
110
+ * @memberOf Monster.Data
59
111
  */
60
112
  function assembleParts(subject, selector, filter, callback) {
61
113
  const result = new Map();
@@ -33,19 +33,102 @@ const rootSymbol = Symbol("root");
33
33
  */
34
34
 
35
35
  /**
36
- * With the help of the function `buildTree()`, nodes can be easily created from data objects.
37
- *
38
- * @param {*} subject
39
- * @param {string|Monster.Data~exampleSelectorCallback} selector
40
- * @param {string} idKey
41
- * @param {string} parentIDKey
42
- * @param {buildTreeOptions} [options]
43
- * @return {*}
44
- * @memberOf Monster.Data
45
- * @throws {TypeError} value is neither a string nor a function
46
- * @throws {TypeError} the selector callback must return a map
47
- * @throws {Error} the object has no value for the specified id
36
+ * Creates a tree structure from a given subject using a selector and specified ID and parent ID keys.
37
+ *
38
+ * The buildTree function is a powerful tool for creating tree-like data structures from plain JavaScript
39
+ * objects. It takes in four required parameters: the subject object that you want to turn into a tree, a
40
+ * selector that identifies which parts of the subject to use when building the tree, and two keys
41
+ * (idKey and parentIDKey) that specify which properties in the subject represent the unique identifiers
42
+ * and parent-child relationships between nodes in the tree.
43
+ *
44
+ * Optionally, you can also pass in an options object to further configure the behavior of the function,
45
+ * such as specifying which values should be treated as roots of the tree, or providing a custom filter
46
+ * function to only include certain nodes in the final output.
47
+ *
48
+ * The buildTree function works by first using the assembleParts helper function to extract the relevant
49
+ * parts of the subject based on the selector, and then iterates over the resulting map to create Node
50
+ * objects and organize them into parent-child relationships based on the values of the idKey and parentIDKey properties.
51
+ *
52
+ * The resulting NodeList represents the tree structure, with each Node object containing the original
53
+ * object data as well as additional metadata about its position in the tree. You can then use the childNodes
54
+ * property of each Node to access its children, or the parent property to access its parent.
55
+ *
56
+ * Overall, the buildTree function is a flexible and powerful way to transform flat data into hierarchical
57
+ * structures, and can be especially useful in scenarios such as displaying folder structures or
58
+ * visualizing complex data relationships.
59
+ *
60
+ * Let's say you have an array of data objects representing a file system directory structure, and you want
61
+ * to turn it into a tree-like structure where each node represents a folder or file, and child nodes
62
+ * represent the contents of the folder:
63
+ *
64
+ * ```javascript
65
+ * const fileSystem = [
66
+ * { id: 'folder1', name: 'Folder 1', type: 'folder', parent: null },
67
+ * { id: 'file1', name: 'File 1', type: 'file', parent: 'folder1' },
68
+ * { id: 'file2', name: 'File 2', type: 'file', parent: 'folder1' },
69
+ * { id: 'subfolder1', name: 'Subfolder 1', type: 'folder', parent: 'folder1' },
70
+ * { id: 'file3', name: 'File 3', type: 'file', parent: 'subfolder1' },
71
+ * { id: 'file4', name: 'File 4', type: 'file', parent: 'subfolder1' },
72
+ * { id: 'subfolder2', name: 'Subfolder 2', type: 'folder', parent: 'folder1' },
73
+ * { id: 'file5', name: 'File 5', type: 'file', parent: 'subfolder2' },
74
+ * { id: 'file6', name: 'File 6', type: 'file', parent: 'subfolder2' },
75
+ * { id: 'folder2', name: 'Folder 2', type: 'folder', parent: null },
76
+ * { id: 'file7', name: 'File 7', type: 'file', parent: 'folder2' },
77
+ * { id: 'file8', name: 'File 8', type: 'file', parent: 'folder2' },
78
+ * { id: 'subfolder3', name: 'Subfolder 3', type: 'folder', parent: 'folder2' },
79
+ * { id: 'file9', name: 'File 9', type: 'file', parent: 'subfolder3' },
80
+ * { id: 'file10', name: 'File 10', type: 'file', parent: 'subfolder3' },
81
+ * ];
82
+ *
83
+ * const tree = buildTree(fileSystem, 'id', 'id', 'parent', { rootReferences: [null] });
84
+ *
85
+ * console.log(tree.toString());
86
+ * ```
87
+ *
88
+ * The buildTree function takes in the array of data objects, as well as some configuration options specifying
89
+ * the keys to use for identifying nodes and their parent-child relationships. In this example, we use the id
90
+ * key to identify nodes, and the parent key to specify the parent of each node.
91
+ *
92
+ * The resulting tree object is a nested tree structure, where each node is an object representing a file or
93
+ * folder, and has child nodes representing its contents. The toString method of the tree object
94
+ * can be used to print out the tree in a readable format:
95
+ *
96
+ * ```markdown
97
+ * - Folder 1
98
+ * - File 1
99
+ * - File 2
100
+ * - Subfolder 1
101
+ * - File 3
102
+ * - File 4
103
+ * - Subfolder 2
104
+ * - File 5
105
+ * - File 6
106
+ * - Folder 2
107
+ * - File 7
108
+ * - File 8
109
+ * - Subfolder 3
110
+ * - File 9
111
+ * - File 10
112
+ * ```
113
+ *
114
+ * @memberof Monster.Data
115
+ *
116
+ * @param {*} subject - The object or array to build the tree from.
117
+ * @param {string|Monster.Data~exampleSelectorCallback} selector - Either a string to specify a property of each object to use as a selector, or a selector function to generate a map of objects.
118
+ * @param {string} idKey - The property key to use as the unique ID of each node.
119
+ * @param {string} parentIDKey - The property key to use as the parent ID of each node.
120
+ * @param {object} [options] - Additional options to modify the function behavior.
121
+ * @param {Array<*>} [options.rootReferences=[null, undefined]] - An array of values to treat as root references when creating the tree.
122
+ * @param {function} [options.filter] - A filter function to apply to each node.
123
+ *
124
+ * @return {*} The resulting tree structure as a NodeList.
125
+ *
126
+ * @throws {TypeError} selector is neither a string nor a function.
127
+ * @throws {TypeError} the selector callback must return a map.
128
+ * @throws {Error} the object has no value for the specified id.
129
+ *
48
130
  * @license AGPLv3
131
+ *
49
132
  * @since 1.26.0
50
133
  */
51
134
  function buildTree(subject, selector, idKey, parentIDKey, options) {
@@ -5,12 +5,11 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import { instanceSymbol } from "../../constants.mjs";
9
- import { isObject } from "../../types/is.mjs";
8
+ import { instanceSymbol } from "../../constants.mjs";
9
+ import { isObject } from "../../types/is.mjs";
10
10
  import { Datasource } from "../datasource.mjs";
11
11
 
12
- export {DomStorage};
13
-
12
+ export { DomStorage };
14
13
 
15
14
  /**
16
15
  * The DomStorage is a class that stores data in memory.
@@ -53,7 +52,7 @@ class DomStorage extends Datasource {
53
52
  },
54
53
  write: {
55
54
  selector: undefined,
56
- }
55
+ },
57
56
  });
58
57
  }
59
58
 
@@ -78,13 +77,12 @@ class DomStorage extends Datasource {
78
77
  return new Promise((resolve, reject) => {
79
78
  try {
80
79
  let data = JSON.parse(storage.innerHTML);
81
- self.set(data)
80
+ self.set(data);
82
81
  resolve(data);
83
82
  } catch (e) {
84
83
  reject(e);
85
84
  }
86
- ;
87
- })
85
+ });
88
86
  }
89
87
 
90
88
  /**
@@ -93,7 +91,6 @@ class DomStorage extends Datasource {
93
91
  * @throws {Error} There are no storage element
94
92
  */
95
93
  write() {
96
-
97
94
  const self = this;
98
95
 
99
96
  let selector = self.getOption("write.selector");
@@ -113,10 +110,6 @@ class DomStorage extends Datasource {
113
110
  } catch (e) {
114
111
  reject(e);
115
112
  }
116
- })
117
-
118
-
113
+ });
119
114
  }
120
-
121
115
  }
122
-
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { internalSymbol, instanceSymbol } from "../../../constants.mjs";
9
- import { isObject,isFunction } from "../../../types/is.mjs";
9
+ import { isObject, isFunction } from "../../../types/is.mjs";
10
10
  import { Server } from "../server.mjs";
11
11
  import { WriteError } from "./restapi/writeerror.mjs";
12
12
 
@@ -127,11 +127,12 @@ class RestAPI extends Server {
127
127
  if (!init["method"]) init["method"] = "GET";
128
128
 
129
129
  let callback = self.getOption("read.responseCallback");
130
- if(!callback) callback = (obj) => {
131
- self.set(self.transformServerPayload.call(self, obj));
132
- };
133
-
134
- return fetchData.call(this, init,"read", callback);
130
+ if (!callback)
131
+ callback = (obj) => {
132
+ self.set(self.transformServerPayload.call(self, obj));
133
+ };
134
+
135
+ return fetchData.call(this, init, "read", callback);
135
136
  }
136
137
 
137
138
  /**
@@ -199,7 +200,6 @@ function fetchData(init, key, callback) {
199
200
  obj = JSON.parse(body);
200
201
 
201
202
  response[rawDataSymbol] = obj;
202
-
203
203
  } catch (e) {
204
204
  if (body.length > 100) {
205
205
  body = `${body.substring(0, 97)}...`;
@@ -211,7 +211,7 @@ function fetchData(init, key, callback) {
211
211
  if (callback && isFunction(callback)) {
212
212
  callback(obj);
213
213
  }
214
-
214
+
215
215
  return response;
216
216
  });
217
217
  }
@@ -5,12 +5,12 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {getLocaleOfDocument} from "../dom/locale.mjs";
9
- import {Base} from "../types/base.mjs";
10
- import {getGlobal, getGlobalObject} from "../types/global.mjs";
11
- import {ID} from "../types/id.mjs";
12
- import {isArray, isObject, isString, isPrimitive} from "../types/is.mjs";
13
- import {getDocumentTranslations, Translations} from "../i18n/translations.mjs";
8
+ import { getLocaleOfDocument } from "../dom/locale.mjs";
9
+ import { Base } from "../types/base.mjs";
10
+ import { getGlobal, getGlobalObject } from "../types/global.mjs";
11
+ import { ID } from "../types/id.mjs";
12
+ import { isArray, isObject, isString, isPrimitive } from "../types/is.mjs";
13
+ import { getDocumentTranslations, Translations } from "../i18n/translations.mjs";
14
14
  import {
15
15
  validateFunction,
16
16
  validateInteger,
@@ -19,10 +19,10 @@ import {
19
19
  validateString,
20
20
  validateBoolean,
21
21
  } from "../types/validate.mjs";
22
- import {clone} from "../util/clone.mjs";
23
- import {Pathfinder} from "./pathfinder.mjs";
22
+ import { clone } from "../util/clone.mjs";
23
+ import { Pathfinder } from "./pathfinder.mjs";
24
24
 
25
- export {Transformer};
25
+ export { Transformer };
26
26
 
27
27
  /**
28
28
  * The transformer class is a swiss army knife for manipulating values. especially in combination with the pipe, processing chains can be built up.
@@ -576,7 +576,6 @@ function transform(value) {
576
576
 
577
577
  throw new Error("type not supported");
578
578
 
579
-
580
579
  case "map":
581
580
  map = new Map();
582
581
  while (args.length > 0) {
@@ -592,7 +591,6 @@ function transform(value) {
592
591
  return map.get(value);
593
592
 
594
593
  case "equals":
595
-
596
594
  if (args.length === 0) {
597
595
  throw new Error("missing value parameter");
598
596
  }
@@ -631,11 +629,10 @@ function transform(value) {
631
629
 
632
630
  case "money":
633
631
  case "currency":
634
-
635
632
  try {
636
633
  locale = getLocaleOfDocument();
637
634
  } catch (e) {
638
- throw new Error("unsupported locale or missing format (" + e.message + ")");
635
+ throw new Error(`unsupported locale or missing format (${e.message})`);
639
636
  }
640
637
 
641
638
  const currency = value.substring(0, 3);
@@ -672,9 +669,8 @@ function transform(value) {
672
669
  try {
673
670
  locale = getLocaleOfDocument();
674
671
  return date.toLocaleTimeString(locale);
675
-
676
672
  } catch (e) {
677
- throw new Error("unsupported locale or missing format (" + e.message + ")");
673
+ throw new Error(`unsupported locale or missing format (${e.message})`);
678
674
  }
679
675
 
680
676
  case "datetime":
@@ -686,9 +682,8 @@ function transform(value) {
686
682
  try {
687
683
  locale = getLocaleOfDocument();
688
684
  return date.toLocaleString(locale);
689
-
690
685
  } catch (e) {
691
- throw new Error("unsupported locale or missing format (" + e.message + ")");
686
+ throw new Error(`unsupported locale or missing format (${e.message})`);
692
687
  }
693
688
 
694
689
  case "date":
@@ -700,12 +695,10 @@ function transform(value) {
700
695
  try {
701
696
  locale = getLocaleOfDocument();
702
697
  return date.toLocaleDateString(locale);
703
-
704
698
  } catch (e) {
705
- throw new Error("unsupported locale or missing format (" + e.message + ")");
699
+ throw new Error(`unsupported locale or missing format (${e.message})`);
706
700
  }
707
701
 
708
-
709
702
  case "year":
710
703
  date = new Date(value);
711
704
  if (isNaN(date.getTime())) {
@@ -5,19 +5,19 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {internalSymbol} from "../constants.mjs";
9
- import {extend} from "../data/extend.mjs";
10
- import {Pathfinder} from "../data/pathfinder.mjs";
11
- import {Formatter} from "../text/formatter.mjs";
12
-
13
- import {parseDataURL} from "../types/dataurl.mjs";
14
- import {getGlobalObject} from "../types/global.mjs";
15
- import {isArray, isFunction, isIterable, isObject, isString} from "../types/is.mjs";
16
- import {Observer} from "../types/observer.mjs";
17
- import {ProxyObserver} from "../types/proxyobserver.mjs";
18
- import {validateFunction, validateInstance, validateObject, validateString} from "../types/validate.mjs";
19
- import {clone} from "../util/clone.mjs";
20
- import {addAttributeToken, getLinkedObjects, hasObjectLink} from "./attributes.mjs";
8
+ import { internalSymbol } from "../constants.mjs";
9
+ import { extend } from "../data/extend.mjs";
10
+ import { Pathfinder } from "../data/pathfinder.mjs";
11
+ import { Formatter } from "../text/formatter.mjs";
12
+
13
+ import { parseDataURL } from "../types/dataurl.mjs";
14
+ import { getGlobalObject } from "../types/global.mjs";
15
+ import { isArray, isFunction, isIterable, isObject, isString } from "../types/is.mjs";
16
+ import { Observer } from "../types/observer.mjs";
17
+ import { ProxyObserver } from "../types/proxyobserver.mjs";
18
+ import { validateFunction, validateInstance, validateObject, validateString } from "../types/validate.mjs";
19
+ import { clone } from "../util/clone.mjs";
20
+ import { addAttributeToken, getLinkedObjects, hasObjectLink } from "./attributes.mjs";
21
21
  import {
22
22
  ATTRIBUTE_DISABLED,
23
23
  ATTRIBUTE_ERRORMESSAGE,
@@ -25,11 +25,11 @@ import {
25
25
  ATTRIBUTE_OPTIONS_SELECTOR,
26
26
  customElementUpdaterLinkSymbol,
27
27
  } from "./constants.mjs";
28
- import {findDocumentTemplate, Template} from "./template.mjs";
29
- import {addObjectWithUpdaterToElement} from "./updater.mjs";
30
- import {instanceSymbol} from "../constants.mjs";
31
- import {getDocumentTranslations, Translations} from "../i18n/translations.mjs";
32
- import {getSlottedElements} from "./slotted.mjs";
28
+ import { findDocumentTemplate, Template } from "./template.mjs";
29
+ import { addObjectWithUpdaterToElement } from "./updater.mjs";
30
+ import { instanceSymbol } from "../constants.mjs";
31
+ import { getDocumentTranslations, Translations } from "../i18n/translations.mjs";
32
+ import { getSlottedElements } from "./slotted.mjs";
33
33
 
34
34
  export {
35
35
  CustomElement,
@@ -286,7 +286,6 @@ class CustomElement extends HTMLElement {
286
286
  };
287
287
  }
288
288
 
289
-
290
289
  /**
291
290
  * This method updates the labels of the element.
292
291
  * The labels are defined in the options object.
@@ -315,26 +314,25 @@ class CustomElement extends HTMLElement {
315
314
  if (isString(def)) {
316
315
  const text = translations.getText(key, def);
317
316
  if (text !== def) {
318
- this.setOption("labels." + key, text);
317
+ this.setOption(`labels.${key}`, text);
319
318
  }
320
319
  continue;
321
320
  } else if (isObject(def)) {
322
321
  for (const k in def) {
323
322
  const d = def[k];
324
-
323
+
325
324
  const text = translations.getPluralRuleText(key, k, d);
326
325
  if (!isString(text)) {
327
326
  throw new Error("Invalid labels definition");
328
327
  }
329
328
  if (text !== d) {
330
- this.setOption("labels." + key + "." + k, text);
329
+ this.setOption(`labels.${key}.${k}`, text);
331
330
  }
332
331
  }
333
332
  continue;
334
333
  }
335
334
 
336
335
  throw new Error("Invalid labels definition");
337
-
338
336
  }
339
337
  return this;
340
338
  }
@@ -352,7 +350,6 @@ class CustomElement extends HTMLElement {
352
350
  throw new Error("the method getTag must be overwritten by the derived class.");
353
351
  }
354
352
 
355
-
356
353
  /**
357
354
  * At this point a `CSSStyleSheet` object can be returned. If the environment does not
358
355
  * support a constructor, then an object can also be built using the following detour.
@@ -422,8 +419,7 @@ class CustomElement extends HTMLElement {
422
419
 
423
420
  try {
424
421
  value = new Pathfinder(this[internalSymbol].getRealSubject()["options"]).getVia(path);
425
- } catch (e) {
426
- }
422
+ } catch (e) {}
427
423
 
428
424
  if (value === undefined) return defaultValue;
429
425
  return value;
@@ -493,8 +489,7 @@ class CustomElement extends HTMLElement {
493
489
  try {
494
490
  initShadowRoot.call(self);
495
491
  elements = self.shadowRoot.childNodes;
496
- } catch (e) {
497
- }
492
+ } catch (e) {}
498
493
 
499
494
  try {
500
495
  initCSSStylesheet.call(this);
@@ -545,8 +540,7 @@ class CustomElement extends HTMLElement {
545
540
  * @return {void}
546
541
  * @since 1.7.0
547
542
  */
548
- disconnectedCallback() {
549
- }
543
+ disconnectedCallback() {}
550
544
 
551
545
  /**
552
546
  * The custom element has been moved into a new document (e.g. someone called document.adoptNode(el)).
@@ -554,8 +548,7 @@ class CustomElement extends HTMLElement {
554
548
  * @return {void}
555
549
  * @since 1.7.0
556
550
  */
557
- adoptedCallback() {
558
- }
551
+ adoptedCallback() {}
559
552
 
560
553
  /**
561
554
  * Called when an observed attribute has been added, removed, updated, or replaced. Also called for initial
@@ -792,8 +785,7 @@ function parseOptionsJSON(data) {
792
785
  try {
793
786
  let dataUrl = parseDataURL(data);
794
787
  data = dataUrl.content;
795
- } catch (e) {
796
- }
788
+ } catch (e) {}
797
789
 
798
790
  try {
799
791
  obj = JSON.parse(data);
@@ -815,7 +807,6 @@ function initHtmlContent() {
815
807
  } catch (e) {
816
808
  let html = this.getOption("templates.main", "");
817
809
  if (isString(html) && html.length > 0) {
818
-
819
810
  const mapping = this.getOption("templateMapping", {});
820
811
  if (isObject(mapping)) {
821
812
  html = new Formatter(mapping).format(html);
@@ -938,7 +929,7 @@ function initShadowRoot() {
938
929
  */
939
930
  function registerCustomElement(element) {
940
931
  validateFunction(element);
941
- const customElements = getGlobalObject("customElements")
932
+ const customElements = getGlobalObject("customElements");
942
933
  if (customElements === undefined) {
943
934
  throw new Error("customElements is not supported.");
944
935
  }