untemps / event-dispatcher

Abstract class to manage event dispatching

Repository from Github https://github.comuntemps/event-dispatcherRepository from Github https://github.comuntemps/event-dispatcher

@untemps/event-dispatcher

Abstract class that allows to internally dispatch events and attach subscribers to listen for them.

npm GitHub Workflow Status Codecov

Installation

yarn add @untemps/event-dispatcher

Usage

Import EventDispatcher:

import { EventDispatcher } from '@untemps/event-dispatcher'

Create a class that extends EventDispatcher:

class Foo extends EventDispatcher {
	constructor() {
		super()
	}

	foo() {
		this.dispatchEvent(new Event('foo', { bubbles: false, cancelable: false, composed: false }))
	}
}

Each instance can now attach a subscriber to listen for events:

const onFoo = (event) => console.log('foo has be triggered!')
const myFoo = new Foo()
myFoo.addEventListener('foo', onFoo)

And detach it:

myFoo.removeEventListener('foo', onFoo)

All subscriptions for a specific event type can be detached in batches:

const myFoo = new Foo()
myFoo.addEventListener('foo', onFoo1)
myFoo.addEventListener('foo', onFoo2)
myFoo.clearType('somethingDone')

All instance subscriptions can be detached in batches:

const myFoo = new Foo()
myFoo.addEventListener('foo', onFoo)
myFoo.addEventListener('bar', onBar)
myFoo.cleanup()

Todos

  • Add examples
  • Rewrite with TypeScript

About

Abstract class to manage event dispatching

License:MIT License


Languages

Language:JavaScript 100.0%