From 053a7dfed1bbd4200d09f886b170b9ce6d2e4099 Mon Sep 17 00:00:00 2001 From: "Manu Mtz.-Almeida" Date: Tue, 6 Aug 2019 10:09:13 +0200 Subject: [PATCH] feat(): emit warning when emitting event while disconnected --- src/runtime/event-emitter.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/runtime/event-emitter.ts b/src/runtime/event-emitter.ts index b3de2b82925..4a986ec56fb 100644 --- a/src/runtime/event-emitter.ts +++ b/src/runtime/event-emitter.ts @@ -5,15 +5,20 @@ import { getElement, win } from '@platform'; export const createEvent = (ref: d.RuntimeRef, name: string, flags: number) => { - const elm = getElement(ref); + const elm = getElement(ref) as HTMLElement; return { - emit: (detail: any) => elm.dispatchEvent( - new (BUILD.hydrateServerSide ? (win as any).CustomEvent : CustomEvent)(name, { - bubbles: !!(flags & EVENT_FLAGS.Bubbles), - composed: !!(flags & EVENT_FLAGS.Composed), - cancelable: !!(flags & EVENT_FLAGS.Cancellable), - detail - }) - ) + emit: (detail: any) => { + if (BUILD.isDev && !elm.isConnected) { + console.warn(`The "${name}" event was emitted, but the dispatcher node is not longer connected to the dom.`); + } + return elm.dispatchEvent( + new (BUILD.hydrateServerSide ? (win as any).CustomEvent : CustomEvent)(name, { + bubbles: !!(flags & EVENT_FLAGS.Bubbles), + composed: !!(flags & EVENT_FLAGS.Composed), + cancelable: !!(flags & EVENT_FLAGS.Cancellable), + detail + }) + ); + } }; };