index.js 10 KB

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