onfire.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. /**
  3. * mini (~300 b) version for event-emitter.
  4. */
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. /**
  9. * const ee = new OnFire();
  10. *
  11. * ee.on('click', () => {});
  12. *
  13. * ee.on('mouseover', () => {});
  14. *
  15. * ee.emit('click', 1, 2, 3);
  16. * ee.fire('mouseover', {}); // same with emit
  17. *
  18. * ee.off();
  19. */
  20. var OnFire =
  21. /** @class */
  22. function () {
  23. function OnFire() {
  24. // 所有事件的监听器
  25. this.es = {}; // cname of fire
  26. this.emit = this.fire;
  27. }
  28. OnFire.prototype.on = function (eventName, cb, once) {
  29. if (once === void 0) {
  30. once = false;
  31. }
  32. if (!this.es[eventName]) {
  33. this.es[eventName] = [];
  34. }
  35. this.es[eventName].push({
  36. cb: cb,
  37. once: once
  38. });
  39. };
  40. OnFire.prototype.once = function (eventName, cb) {
  41. this.on(eventName, cb, true);
  42. };
  43. OnFire.prototype.fire = function (eventName) {
  44. var params = [];
  45. for (var _i = 1; _i < arguments.length; _i++) {
  46. params[_i - 1] = arguments[_i];
  47. }
  48. var listeners = this.es[eventName] || [];
  49. for (var i = 0; i < listeners.length; i++) {
  50. var _a = listeners[i],
  51. cb = _a.cb,
  52. once = _a.once;
  53. cb.apply(this, params);
  54. if (once) {
  55. listeners.splice(i, 1);
  56. i--;
  57. }
  58. }
  59. };
  60. OnFire.prototype.off = function (eventName, cb) {
  61. // clean all
  62. if (eventName === undefined) {
  63. this.es = {};
  64. } else {
  65. if (cb === undefined) {
  66. // clean the eventName's listeners
  67. delete this.es[eventName];
  68. } else {
  69. var listeners = this.es[eventName] || []; // clean the event and listener
  70. for (var i = 0; i < listeners.length; i++) {
  71. if (listeners[i].cb === cb) {
  72. listeners.splice(i, 1);
  73. i--;
  74. }
  75. }
  76. }
  77. }
  78. };
  79. OnFire.ver = "2.0.0";
  80. return OnFire;
  81. }();
  82. exports.default = OnFire;