@schukai/monster 3.44.0 → 3.44.1
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
@@ -60,6 +60,12 @@ const assembleMethodSymbol = Symbol.for("@schukai/monster/dom/@@assembleMethodSy
|
|
60
60
|
*/
|
61
61
|
const attributeObserverSymbol = Symbol.for("@schukai/monster/dom/@@attributeObserver");
|
62
62
|
|
63
|
+
/**
|
64
|
+
* @private
|
65
|
+
* @type {symbol}
|
66
|
+
*/
|
67
|
+
const attributeMutationObserverSymbol = Symbol("@schukai/monster/dom/@@mutationObserver");
|
68
|
+
|
63
69
|
/**
|
64
70
|
* HTMLElement
|
65
71
|
* @external HTMLElement
|
@@ -205,7 +211,7 @@ class CustomElement extends HTMLElement {
|
|
205
211
|
});
|
206
212
|
this[initMethodSymbol]();
|
207
213
|
initOptionObserver.call(this);
|
208
|
-
|
214
|
+
|
209
215
|
}
|
210
216
|
|
211
217
|
/**
|
@@ -230,7 +236,7 @@ class CustomElement extends HTMLElement {
|
|
230
236
|
}
|
231
237
|
|
232
238
|
/**
|
233
|
-
*
|
239
|
+
*
|
234
240
|
* @param attribute
|
235
241
|
* @param callback
|
236
242
|
* @returns {Monster.DOM.CustomElement}
|
@@ -242,7 +248,7 @@ class CustomElement extends HTMLElement {
|
|
242
248
|
}
|
243
249
|
|
244
250
|
/**
|
245
|
-
*
|
251
|
+
*
|
246
252
|
* @param attribute
|
247
253
|
* @returns {Monster.DOM.CustomElement}
|
248
254
|
*/
|
@@ -546,6 +552,9 @@ class CustomElement extends HTMLElement {
|
|
546
552
|
customElementUpdaterLinkSymbol,
|
547
553
|
clone(self[internalSymbol].getRealSubject()["options"]),
|
548
554
|
);
|
555
|
+
|
556
|
+
attachAttributeChangeMutationObserver.call(this);
|
557
|
+
|
549
558
|
return self;
|
550
559
|
}
|
551
560
|
|
@@ -561,6 +570,7 @@ class CustomElement extends HTMLElement {
|
|
561
570
|
if (!hasObjectLink(self, customElementUpdaterLinkSymbol)) {
|
562
571
|
self[assembleMethodSymbol]();
|
563
572
|
}
|
573
|
+
|
564
574
|
}
|
565
575
|
|
566
576
|
/**
|
@@ -598,7 +608,12 @@ class CustomElement extends HTMLElement {
|
|
598
608
|
const callback = self[attributeObserverSymbol]?.[attrName];
|
599
609
|
|
600
610
|
if (isFunction(callback)) {
|
601
|
-
|
611
|
+
try {
|
612
|
+
callback.call(self, newVal, oldVal);
|
613
|
+
} catch (e) {
|
614
|
+
addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, e.toString());
|
615
|
+
}
|
616
|
+
|
602
617
|
}
|
603
618
|
}
|
604
619
|
|
@@ -626,23 +641,34 @@ class CustomElement extends HTMLElement {
|
|
626
641
|
|
627
642
|
/**
|
628
643
|
* This method is called when the element is first created.
|
629
|
-
*
|
644
|
+
*
|
630
645
|
* @private
|
631
646
|
* @this CustomElement
|
632
647
|
*/
|
633
|
-
function
|
648
|
+
function attachAttributeChangeMutationObserver() {
|
634
649
|
const self = this;
|
635
650
|
|
636
|
-
|
651
|
+
if (typeof self[attributeMutationObserverSymbol] !== "undefined") {
|
652
|
+
return;
|
653
|
+
}
|
654
|
+
|
655
|
+
self[attributeMutationObserverSymbol] = new MutationObserver(function (mutations, observer) {
|
637
656
|
for (const mutation of mutations) {
|
638
657
|
if (mutation.type === "attributes") {
|
639
658
|
self.attributeChangedCallback(mutation.attributeName, mutation.oldValue, mutation.target.getAttribute(mutation.attributeName));
|
640
659
|
}
|
641
660
|
}
|
642
|
-
}).observe(self, {
|
643
|
-
attributes: true,
|
644
|
-
attributeOldValue: true,
|
645
661
|
});
|
662
|
+
|
663
|
+
try {
|
664
|
+
self[attributeMutationObserverSymbol].observe(self, {
|
665
|
+
attributes: true,
|
666
|
+
attributeOldValue: true,
|
667
|
+
});
|
668
|
+
|
669
|
+
} catch (e) {
|
670
|
+
addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, e.toString());
|
671
|
+
}
|
646
672
|
}
|
647
673
|
|
648
674
|
/**
|
package/source/types/version.mjs
CHANGED
package/test/cases/monster.mjs
CHANGED