import { Observable, Observer } from "../observable" /** * @internal */ export class EventTargetObservable implements Observable { constructor( public readonly element: EventTarget, public readonly eventName: string ) {} subscribe(observer: Observer): { unsubscribe: () => void } { const handler: EventListener = (ev: Event) => !!observer.next && observer.next((ev)) this.element.addEventListener(this.eventName, handler, false) return { unsubscribe: () => this.element.removeEventListener(this.eventName, handler), } } }