From e077bf5b25a4a34e8e00ed1f2276f37f10ed5d99 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Wed, 25 Nov 2020 14:43:23 +0000 Subject: [PATCH] fix(core): update --- ts/domtools.classes.elementinstrumenter.ts | 25 ++++++++++------------ 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/ts/domtools.classes.elementinstrumenter.ts b/ts/domtools.classes.elementinstrumenter.ts index 1a5d6c6..873f704 100644 --- a/ts/domtools.classes.elementinstrumenter.ts +++ b/ts/domtools.classes.elementinstrumenter.ts @@ -5,23 +5,20 @@ export class ElementInstrumenter { connectedElements = new plugins.lik.ObjectMap(); public instrumentElement(elementArg: LitElement) { - const originalConnectedCallback = elementArg.connectedCallback; - const originalDisconnectedCallback = elementArg.disconnectedCallback; - - if (!elementArg.parentElement) { - elementArg.connectedCallback = () => { - this.connectedElements.add(elementArg); - originalConnectedCallback.apply(elementArg); - }; - } else { + const addToConnectedElementsFunc = (eventArg: CustomEvent) => { this.connectedElements.add(elementArg); - } - - elementArg.disconnectedCallback = () => { - this.connectedElements.remove(elementArg); - originalDisconnectedCallback.apply(elementArg); }; + const removeFromConnectedElementsFunc = eventArg => { + this.connectedElements.remove(elementArg); + elementArg.removeEventListener('domtools-connected', addToConnectedElementsFunc); + elementArg.removeEventListener('domtools-disconnected', removeFromConnectedElementsFunc); + }; + elementArg.addEventListener('domtools-connected', addToConnectedElementsFunc); + elementArg.addEventListener('domtools-disconnected', removeFromConnectedElementsFunc); + if (!elementArg.parentElement) { + this.connectedElements.add(elementArg); + } } public async forEachelement(eachFuncArg: (elementArg: LitElement) => Promise) {