Skip to content

Instantly share code, notes, and snippets.

@DeadWisdom
Last active December 14, 2020 14:37
Show Gist options
  • Save DeadWisdom/ce964517eb9d603f54e57349f74b38e4 to your computer and use it in GitHub Desktop.
Save DeadWisdom/ce964517eb9d603f54e57349f74b38e4 to your computer and use it in GitHub Desktop.
export class EventRegister {
constructor(...args) {
this.callbacks = [];
args.forEach(arr => this.add.apply(this, arr));
}
add(target, event, callback) {
this.callbacks.push([target, event, callback]);
target.addEventListener(event, callback);
}
remove(target, event, callback) {
target.removeEventListener(event, callback);
}
dispose() {
this.callbacks.forEach(arr => {
target.remove.apply(this, arr);
})
}
}
// Usage
class SomeElement extends LitElement {
connectedCallback() {
super.connectedCallback();
this.eventRegister = new EventRegister(
[window, 'login', (e) => this.user = e.detail],
[window, 'logout', (e) => this.user = null]
)
}
disconnectedCallback() {
super.disconnectedCallback();
this.eventRegister.dispose();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment