diff --git a/glass-easel/src/component.ts b/glass-easel/src/component.ts index 1722bad..3603795 100644 --- a/glass-easel/src/component.ts +++ b/glass-easel/src/component.ts @@ -542,11 +542,9 @@ export class Component< const comp = Object.create(proto) as ComponentInstance if (ENV.DEV) performanceMeasureStart('component.create', comp) comp._$genericImpls = genericImpls - comp._$placeholderHandlerRemover = placeholderHandlerRemover comp._$external = external comp.tagName = tagName comp._$methodCaller = comp - comp._$virtual = virtualHost // check shared style scope const ownerSpace = behavior.ownerSpace @@ -601,6 +599,7 @@ export class Component< owner, owner ? owner._$nodeTreeContext : nodeTreeContext!, ) + comp._$placeholderHandlerRemover = placeholderHandlerRemover const ownerHost = owner ? owner.getHostNode() : undefined const ownerComponentOptions = ownerHost?.getComponentOptions() diff --git a/glass-easel/src/component_space.ts b/glass-easel/src/component_space.ts index 3edeaf5..41e37b4 100644 --- a/glass-easel/src/component_space.ts +++ b/glass-easel/src/component_space.ts @@ -108,11 +108,9 @@ export class ComponentWaitingList { } call(c: GeneralComponentDefinition) { - const cbs = this._$callbacks - this._$callbacks = [] - for (let i = 0; i < cbs.length; i += 1) { - const f = cbs[i]! - f(c) + while (this._$callbacks.length > 0) { + const callback = this._$callbacks.shift()! + callback(c) } } } diff --git a/glass-easel/src/element.ts b/glass-easel/src/element.ts index 3df4ed2..2728a56 100644 --- a/glass-easel/src/element.ts +++ b/glass-easel/src/element.ts @@ -577,8 +577,6 @@ export class Element implements NodeCast { node.triggerLifetime('beforeDetach', []) } node.childNodes.forEach(callFunc) - const f = node._$placeholderHandlerRemover - if (typeof f === 'function') f() if (isComponent(node)) { const shadowRoot = node.getShadowRoot() if (shadowRoot) callFunc(shadowRoot) @@ -624,6 +622,8 @@ export class Element implements NodeCast { elem._$destroyOnRemoval = AutoDestroyState.Destroyed elem.destroyBackendElement() } + const f = elem._$placeholderHandlerRemover + if (typeof f === 'function') f() } rec(node) } else if (node._$destroyOnRemoval === AutoDestroyState.Enabled) {