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