@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
JavaScript
/**
* @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 ); }
}