@schukai/monster 3.39.1 → 3.42.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schukai/monster",
3
- "version": "3.39.1",
3
+ "version": "3.42.0",
4
4
  "description": "Monster is a simple library for creating fast, robust and lightweight websites.",
5
5
  "keywords": [
6
6
  "framework",
@@ -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
  import {initOptionsFromAttributes} from "./util/init-options-from-attributes.mjs";
34
34
 
35
35
  export {
@@ -203,6 +203,7 @@ class CustomElement extends HTMLElement {
203
203
  this[internalSymbol] = new ProxyObserver({
204
204
  options: initOptionsFromAttributes(this, extend({}, this.defaults)),
205
205
  });
206
+ initAttributeChangeMutationObserver.call(this);
206
207
  initOptionObserver.call(this);
207
208
  this[initMethodSymbol]();
208
209
  }
@@ -217,7 +218,9 @@ class CustomElement extends HTMLElement {
217
218
  }
218
219
 
219
220
  /**
220
- * This method determines which attributes are to be monitored by `attributeChangedCallback()`.
221
+ * This method determines which attributes are to be
222
+ * monitored by `attributeChangedCallback()`. Unfortunately, this method is static.
223
+ * Therefore, the `observedAttributes` property cannot be changed during runtime.
221
224
  *
222
225
  * @return {string[]}
223
226
  * @since 1.15.0
@@ -421,7 +424,8 @@ class CustomElement extends HTMLElement {
421
424
 
422
425
  try {
423
426
  value = new Pathfinder(this[internalSymbol].getRealSubject()["options"]).getVia(path);
424
- } catch (e) {}
427
+ } catch (e) {
428
+ }
425
429
 
426
430
  if (value === undefined) return defaultValue;
427
431
  return value;
@@ -491,7 +495,8 @@ class CustomElement extends HTMLElement {
491
495
  try {
492
496
  initShadowRoot.call(self);
493
497
  elements = self.shadowRoot.childNodes;
494
- } catch (e) {}
498
+ } catch (e) {
499
+ }
495
500
 
496
501
  try {
497
502
  initCSSStylesheet.call(this);
@@ -542,7 +547,8 @@ class CustomElement extends HTMLElement {
542
547
  * @return {void}
543
548
  * @since 1.7.0
544
549
  */
545
- disconnectedCallback() {}
550
+ disconnectedCallback() {
551
+ }
546
552
 
547
553
  /**
548
554
  * The custom element has been moved into a new document (e.g. someone called document.adoptNode(el)).
@@ -550,7 +556,8 @@ class CustomElement extends HTMLElement {
550
556
  * @return {void}
551
557
  * @since 1.7.0
552
558
  */
553
- adoptedCallback() {}
559
+ adoptedCallback() {
560
+ }
554
561
 
555
562
  /**
556
563
  * Called when an observed attribute has been added, removed, updated, or replaced. Also called for initial
@@ -595,6 +602,32 @@ class CustomElement extends HTMLElement {
595
602
  }
596
603
  }
597
604
 
605
+ /**
606
+ * This method is called when the element is first created.
607
+ *
608
+ * @private
609
+ * @this CustomElement
610
+ */
611
+ function initAttributeChangeMutationObserver() {
612
+ const self = this;
613
+
614
+ if (self[attributeObserverSymbol] === undefined) {
615
+ self[attributeObserverSymbol] = {};
616
+ }
617
+
618
+ new MutationObserver(function (mutations) {
619
+ for (const mutation of mutations) {
620
+ if (mutation.type === "attributes") {
621
+ self.attributeChangedCallback(mutation.attributeName, mutation.oldValue, mutation.target.getAttribute(mutation.attributeName));
622
+ }
623
+ }
624
+ }).observe(self, {
625
+ attributes: true,
626
+ attributeOldValue: true,
627
+ attributeFilter: Object.keys(self[attributeObserverSymbol]),
628
+ });
629
+ }
630
+
598
631
  /**
599
632
  * @this CustomElement
600
633
  * @private
@@ -787,7 +820,8 @@ function parseOptionsJSON(data) {
787
820
  try {
788
821
  let dataUrl = parseDataURL(data);
789
822
  data = dataUrl.content;
790
- } catch (e) {}
823
+ } catch (e) {
824
+ }
791
825
 
792
826
  try {
793
827
  obj = JSON.parse(data);
@@ -142,7 +142,7 @@ function getMonsterVersion() {
142
142
  }
143
143
 
144
144
  /** don't touch, replaced by make with package.json version */
145
- monsterVersion = new Version("3.39.1");
145
+ monsterVersion = new Version("3.42.0");
146
146
 
147
147
  return monsterVersion;
148
148
  }
@@ -7,7 +7,7 @@ describe('Monster', function () {
7
7
  let monsterVersion
8
8
 
9
9
  /** don´t touch, replaced by make with package.json version */
10
- monsterVersion = new Version("3.39.1")
10
+ monsterVersion = new Version("3.42.0")
11
11
 
12
12
  let m = getMonsterVersion();
13
13