/** * Waits for a specific event to be emitted from an element. Ignores events that bubble up from child elements. * * Copied from Shoelace * /src/internal/event.ts */ export function waitForEvent(el : HTMLElement, eventName : string) { return new Promise(resolve => { function done(event : Event) { if(event.target === el) { el.removeEventListener(eventName, done); resolve(); } } el.addEventListener(eventName, done); }); }