UNPKG

3.41 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6/* eslint-disable no-underscore-dangle */
7var _default = {
8 on: function on(events, handler, priority) {
9 var self = this;
10 if (typeof handler !== 'function') return self;
11 var method = priority ? 'unshift' : 'push';
12 events.split(' ').forEach(function (event) {
13 if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
14 self.eventsListeners[event][method](handler);
15 });
16 return self;
17 },
18 once: function once(events, handler, priority) {
19 var self = this;
20 if (typeof handler !== 'function') return self;
21
22 function onceHandler() {
23 self.off(events, onceHandler);
24
25 if (onceHandler.__emitterProxy) {
26 delete onceHandler.__emitterProxy;
27 }
28
29 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30 args[_key] = arguments[_key];
31 }
32
33 handler.apply(self, args);
34 }
35
36 onceHandler.__emitterProxy = handler;
37 return self.on(events, onceHandler, priority);
38 },
39 onAny: function onAny(handler, priority) {
40 var self = this;
41 if (typeof handler !== 'function') return self;
42 var method = priority ? 'unshift' : 'push';
43
44 if (self.eventsAnyListeners.indexOf(handler) < 0) {
45 self.eventsAnyListeners[method](handler);
46 }
47
48 return self;
49 },
50 offAny: function offAny(handler) {
51 var self = this;
52 if (!self.eventsAnyListeners) return self;
53 var index = self.eventsAnyListeners.indexOf(handler);
54
55 if (index >= 0) {
56 self.eventsAnyListeners.splice(index, 1);
57 }
58
59 return self;
60 },
61 off: function off(events, handler) {
62 var self = this;
63 if (!self.eventsListeners) return self;
64 events.split(' ').forEach(function (event) {
65 if (typeof handler === 'undefined') {
66 self.eventsListeners[event] = [];
67 } else if (self.eventsListeners[event]) {
68 self.eventsListeners[event].forEach(function (eventHandler, index) {
69 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
70 self.eventsListeners[event].splice(index, 1);
71 }
72 });
73 }
74 });
75 return self;
76 },
77 emit: function emit() {
78 var self = this;
79 if (!self.eventsListeners) return self;
80 var events;
81 var data;
82 var context;
83
84 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
85 args[_key2] = arguments[_key2];
86 }
87
88 if (typeof args[0] === 'string' || Array.isArray(args[0])) {
89 events = args[0];
90 data = args.slice(1, args.length);
91 context = self;
92 } else {
93 events = args[0].events;
94 data = args[0].data;
95 context = args[0].context || self;
96 }
97
98 data.unshift(context);
99 var eventsArray = Array.isArray(events) ? events : events.split(' ');
100 eventsArray.forEach(function (event) {
101 if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
102 self.eventsAnyListeners.forEach(function (eventHandler) {
103 eventHandler.apply(context, [event].concat(data));
104 });
105 }
106
107 if (self.eventsListeners && self.eventsListeners[event]) {
108 self.eventsListeners[event].forEach(function (eventHandler) {
109 eventHandler.apply(context, data);
110 });
111 }
112 });
113 return self;
114 }
115};
116exports.default = _default;
\No newline at end of file