UNPKG

@webqit/quantum-js

Version:

Runtime extension to JavaScript that let's us do Imperative Reactive Programming (IRP) in the very language.

33 lines (25 loc) 844 B
/** * @imports */ import { env } from "../util.js"; export default class _EventTarget extends EventTarget { managedAlways = new Set; managedOnce = new Set; constructor() { super(); env.setMaxListeners?.( 0, this ); } fire( evenName ) { return this.dispatchEvent( new Event( evenName, { cancelable: true } ) ); } on( ...args ) { this.addEventListener( ...args ); return () => this.removeEventListener( ...args ); } abort( total = false ) { this.managedAlways.forEach( x => x.abort ? x.abort( total ) : x( total ) ); this.managedOnce.forEach( x => x.abort ? x.abort( total ) : x( total ) ); this.managedOnce.clear(); this.fire( 'abort' ); } manage( x ) { this.managedAlways.add( x ); } once( x ) { this.managedOnce.add( x ); } }