iobroker.mywebui 1.37.86 → 1.37.87
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/io-package.json
CHANGED
package/package.json
CHANGED
|
@@ -674,25 +674,34 @@ export class IobrokerWebuiScreenEditor extends BaseCustomWebComponentConstructor
|
|
|
674
674
|
const shadowRoot = rootEl?.shadowRoot;
|
|
675
675
|
if (!rootEl || !shadowRoot) return;
|
|
676
676
|
try {
|
|
677
|
-
//
|
|
678
|
-
//
|
|
679
|
-
|
|
677
|
+
// Proxy wraps rootEl so ALL native HTMLElement methods (attachInternals, querySelector,
|
|
678
|
+
// closest, matches, getBoundingClientRect, etc.) work automatically.
|
|
679
|
+
// Custom WebUI API (_getDomElement, _assignEvent, shadowRoot) is injected via the handler.
|
|
680
|
+
const overrides = {
|
|
680
681
|
shadowRoot,
|
|
681
682
|
_getDomElement(id) {
|
|
682
683
|
return shadowRoot.getElementById(id) ?? shadowRoot.querySelector(`[name="${id}"]`);
|
|
683
684
|
},
|
|
684
685
|
_assignEvent(id, evtName, handler) {
|
|
685
|
-
const el =
|
|
686
|
+
const el = overrides._getDomElement(id);
|
|
686
687
|
if (el) el.addEventListener(evtName, handler);
|
|
687
688
|
},
|
|
688
|
-
addEventListener: (type, handler, opts) => rootEl.addEventListener(type, handler, opts),
|
|
689
|
-
removeEventListener: (type, handler, opts) => rootEl.removeEventListener(type, handler, opts),
|
|
690
|
-
dispatchEvent: (evt) => rootEl.dispatchEvent(evt),
|
|
691
|
-
getAttribute: (name) => rootEl.getAttribute(name),
|
|
692
|
-
setAttribute: (name, val) => rootEl.setAttribute(name, val),
|
|
693
|
-
style: rootEl.style,
|
|
694
|
-
dataset: rootEl.dataset,
|
|
695
689
|
};
|
|
690
|
+
const facade = new Proxy(rootEl, {
|
|
691
|
+
get(target, prop, receiver) {
|
|
692
|
+
if (prop in overrides) {
|
|
693
|
+
const v = overrides[prop];
|
|
694
|
+
return typeof v === 'function' ? v.bind(overrides) : v;
|
|
695
|
+
}
|
|
696
|
+
const v = target[prop];
|
|
697
|
+
return typeof v === 'function' ? v.bind(target) : v;
|
|
698
|
+
},
|
|
699
|
+
set(target, prop, value) {
|
|
700
|
+
if (prop in overrides) { overrides[prop] = value; return true; }
|
|
701
|
+
target[prop] = value;
|
|
702
|
+
return true;
|
|
703
|
+
},
|
|
704
|
+
});
|
|
696
705
|
this._designerFacade = facade;
|
|
697
706
|
// Use scriptSystem.assignAllScripts — handles @event attrs, init(), applyBindings, etc.
|
|
698
707
|
let scriptObj = await window.appShell.scriptSystem.assignAllScripts(
|