123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const events = {};
- export default class EventObject {
- hasEvent(event) {
- return event in events;
- }
- on(event, listener) {
- if (!this.hasEvent(event)) {
- events[event] = [];
- }
- events[event].push(listener);
- }
- off(event, listener = null) {
- if (!this.hasEvent(event)) {
- return;
- }
- if (listener === null) {
- return (events[event] = []);
- }
- events[event] = events[event].filter(
- (eventListener) => eventListener !== listener
- );
- }
- trigger(event, ...data) {
- if (this.hasEvent(event)) {
- let stopped = false;
- events[event].forEach((listener) => {
- if (stopped) {
- return;
- }
- if (listener(...data) === false) {
- stopped = true;
- }
- });
- }
- }
- }
|