source: node_modules/eventemitter3/dist/eventemitter3.umd.js@ a762898

Last change on this file since a762898 was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 10.6 KB
Line 
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3 typeof define === 'function' && define.amd ? define(factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventEmitter3 = factory());
5})(this, (function () { 'use strict';
6
7 function getDefaultExportFromCjs (x) {
8 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
9 }
10
11 var eventemitter3 = {exports: {}};
12
13 var hasRequiredEventemitter3;
14
15 function requireEventemitter3 () {
16 if (hasRequiredEventemitter3) return eventemitter3.exports;
17 hasRequiredEventemitter3 = 1;
18 (function (module) {
19
20 var has = Object.prototype.hasOwnProperty
21 , prefix = '~';
22
23 /**
24 * Constructor to create a storage for our `EE` objects.
25 * An `Events` instance is a plain object whose properties are event names.
26 *
27 * @constructor
28 * @private
29 */
30 function Events() {}
31
32 //
33 // We try to not inherit from `Object.prototype`. In some engines creating an
34 // instance in this way is faster than calling `Object.create(null)` directly.
35 // If `Object.create(null)` is not supported we prefix the event names with a
36 // character to make sure that the built-in object properties are not
37 // overridden or used as an attack vector.
38 //
39 if (Object.create) {
40 Events.prototype = Object.create(null);
41
42 //
43 // This hack is needed because the `__proto__` property is still inherited in
44 // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
45 //
46 if (!new Events().__proto__) prefix = false;
47 }
48
49 /**
50 * Representation of a single event listener.
51 *
52 * @param {Function} fn The listener function.
53 * @param {*} context The context to invoke the listener with.
54 * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
55 * @constructor
56 * @private
57 */
58 function EE(fn, context, once) {
59 this.fn = fn;
60 this.context = context;
61 this.once = once || false;
62 }
63
64 /**
65 * Add a listener for a given event.
66 *
67 * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
68 * @param {(String|Symbol)} event The event name.
69 * @param {Function} fn The listener function.
70 * @param {*} context The context to invoke the listener with.
71 * @param {Boolean} once Specify if the listener is a one-time listener.
72 * @returns {EventEmitter}
73 * @private
74 */
75 function addListener(emitter, event, fn, context, once) {
76 if (typeof fn !== 'function') {
77 throw new TypeError('The listener must be a function');
78 }
79
80 var listener = new EE(fn, context || emitter, once)
81 , evt = prefix ? prefix + event : event;
82
83 if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
84 else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
85 else emitter._events[evt] = [emitter._events[evt], listener];
86
87 return emitter;
88 }
89
90 /**
91 * Clear event by name.
92 *
93 * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
94 * @param {(String|Symbol)} evt The Event name.
95 * @private
96 */
97 function clearEvent(emitter, evt) {
98 if (--emitter._eventsCount === 0) emitter._events = new Events();
99 else delete emitter._events[evt];
100 }
101
102 /**
103 * Minimal `EventEmitter` interface that is molded against the Node.js
104 * `EventEmitter` interface.
105 *
106 * @constructor
107 * @public
108 */
109 function EventEmitter() {
110 this._events = new Events();
111 this._eventsCount = 0;
112 }
113
114 /**
115 * Return an array listing the events for which the emitter has registered
116 * listeners.
117 *
118 * @returns {Array}
119 * @public
120 */
121 EventEmitter.prototype.eventNames = function eventNames() {
122 var names = []
123 , events
124 , name;
125
126 if (this._eventsCount === 0) return names;
127
128 for (name in (events = this._events)) {
129 if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
130 }
131
132 if (Object.getOwnPropertySymbols) {
133 return names.concat(Object.getOwnPropertySymbols(events));
134 }
135
136 return names;
137 };
138
139 /**
140 * Return the listeners registered for a given event.
141 *
142 * @param {(String|Symbol)} event The event name.
143 * @returns {Array} The registered listeners.
144 * @public
145 */
146 EventEmitter.prototype.listeners = function listeners(event) {
147 var evt = prefix ? prefix + event : event
148 , handlers = this._events[evt];
149
150 if (!handlers) return [];
151 if (handlers.fn) return [handlers.fn];
152
153 for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
154 ee[i] = handlers[i].fn;
155 }
156
157 return ee;
158 };
159
160 /**
161 * Return the number of listeners listening to a given event.
162 *
163 * @param {(String|Symbol)} event The event name.
164 * @returns {Number} The number of listeners.
165 * @public
166 */
167 EventEmitter.prototype.listenerCount = function listenerCount(event) {
168 var evt = prefix ? prefix + event : event
169 , listeners = this._events[evt];
170
171 if (!listeners) return 0;
172 if (listeners.fn) return 1;
173 return listeners.length;
174 };
175
176 /**
177 * Calls each of the listeners registered for a given event.
178 *
179 * @param {(String|Symbol)} event The event name.
180 * @returns {Boolean} `true` if the event had listeners, else `false`.
181 * @public
182 */
183 EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
184 var evt = prefix ? prefix + event : event;
185
186 if (!this._events[evt]) return false;
187
188 var listeners = this._events[evt]
189 , len = arguments.length
190 , args
191 , i;
192
193 if (listeners.fn) {
194 if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
195
196 switch (len) {
197 case 1: return listeners.fn.call(listeners.context), true;
198 case 2: return listeners.fn.call(listeners.context, a1), true;
199 case 3: return listeners.fn.call(listeners.context, a1, a2), true;
200 case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
201 case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
202 case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
203 }
204
205 for (i = 1, args = new Array(len -1); i < len; i++) {
206 args[i - 1] = arguments[i];
207 }
208
209 listeners.fn.apply(listeners.context, args);
210 } else {
211 var length = listeners.length
212 , j;
213
214 for (i = 0; i < length; i++) {
215 if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
216
217 switch (len) {
218 case 1: listeners[i].fn.call(listeners[i].context); break;
219 case 2: listeners[i].fn.call(listeners[i].context, a1); break;
220 case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
221 case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
222 default:
223 if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
224 args[j - 1] = arguments[j];
225 }
226
227 listeners[i].fn.apply(listeners[i].context, args);
228 }
229 }
230 }
231
232 return true;
233 };
234
235 /**
236 * Add a listener for a given event.
237 *
238 * @param {(String|Symbol)} event The event name.
239 * @param {Function} fn The listener function.
240 * @param {*} [context=this] The context to invoke the listener with.
241 * @returns {EventEmitter} `this`.
242 * @public
243 */
244 EventEmitter.prototype.on = function on(event, fn, context) {
245 return addListener(this, event, fn, context, false);
246 };
247
248 /**
249 * Add a one-time listener for a given event.
250 *
251 * @param {(String|Symbol)} event The event name.
252 * @param {Function} fn The listener function.
253 * @param {*} [context=this] The context to invoke the listener with.
254 * @returns {EventEmitter} `this`.
255 * @public
256 */
257 EventEmitter.prototype.once = function once(event, fn, context) {
258 return addListener(this, event, fn, context, true);
259 };
260
261 /**
262 * Remove the listeners of a given event.
263 *
264 * @param {(String|Symbol)} event The event name.
265 * @param {Function} fn Only remove the listeners that match this function.
266 * @param {*} context Only remove the listeners that have this context.
267 * @param {Boolean} once Only remove one-time listeners.
268 * @returns {EventEmitter} `this`.
269 * @public
270 */
271 EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
272 var evt = prefix ? prefix + event : event;
273
274 if (!this._events[evt]) return this;
275 if (!fn) {
276 clearEvent(this, evt);
277 return this;
278 }
279
280 var listeners = this._events[evt];
281
282 if (listeners.fn) {
283 if (
284 listeners.fn === fn &&
285 (!once || listeners.once) &&
286 (!context || listeners.context === context)
287 ) {
288 clearEvent(this, evt);
289 }
290 } else {
291 for (var i = 0, events = [], length = listeners.length; i < length; i++) {
292 if (
293 listeners[i].fn !== fn ||
294 (once && !listeners[i].once) ||
295 (context && listeners[i].context !== context)
296 ) {
297 events.push(listeners[i]);
298 }
299 }
300
301 //
302 // Reset the array, or remove it completely if we have no more listeners.
303 //
304 if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
305 else clearEvent(this, evt);
306 }
307
308 return this;
309 };
310
311 /**
312 * Remove all listeners, or those of the specified event.
313 *
314 * @param {(String|Symbol)} [event] The event name.
315 * @returns {EventEmitter} `this`.
316 * @public
317 */
318 EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
319 var evt;
320
321 if (event) {
322 evt = prefix ? prefix + event : event;
323 if (this._events[evt]) clearEvent(this, evt);
324 } else {
325 this._events = new Events();
326 this._eventsCount = 0;
327 }
328
329 return this;
330 };
331
332 //
333 // Alias methods names because people roll like that.
334 //
335 EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
336 EventEmitter.prototype.addListener = EventEmitter.prototype.on;
337
338 //
339 // Expose the prefix.
340 //
341 EventEmitter.prefixed = prefix;
342
343 //
344 // Allow `EventEmitter` to be imported as module namespace.
345 //
346 EventEmitter.EventEmitter = EventEmitter;
347
348 //
349 // Expose the module.
350 //
351 {
352 module.exports = EventEmitter;
353 }
354 } (eventemitter3));
355 return eventemitter3.exports;
356 }
357
358 var eventemitter3Exports = requireEventemitter3();
359 var index = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports);
360
361 return index;
362
363}));
Note: See TracBrowser for help on using the repository browser.