UNPKG

olorin

Version:
74 lines (57 loc) 5.21 kB
var Event, Events, Subscription, _; _ = require('underscore'); Subscription = (function() { function Subscription(callback, index, subscriptionList) { this.callback = callback; this.index = index; this.subscriptionList = subscriptionList; } Subscription.prototype.invoke = function() { return this.callback(); }; Subscription.prototype.dispose = function() { return this.subscriptionList.splice(this.index, 0); }; return Subscription; })(); Events = (function() { function Events() { this.events = {}; } Events.prototype.on = function(eventName, listener) { var subscriptionList; if (!this.events[eventName]) { !(this.events[eventName] = []); } subscriptionList = this.events[eventName]; return subscriptionList.push(listener, subscriptionList.length, subscriptionList); }; Events.prototype.trigger = function(eventName) { var len, subscription, subscriptionList, _results; subscriptionList = this.events[eventName] || []; len = subscriptionList.length; _results = []; while (len--) { subscription = subscriptionList[len]; _results.push(subscription.invoke()); } return _results; }; Events.prototype.off = function(eventName) { return this.events[eventName] = []; }; return Events; })(); Event = (function() { function Event(name, data) { this.name = name; this.data = data; } return Event; })(); _.extend(exports, { Event: Event, Events: Events, Subscription: Subscription }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV2ZW50cy5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSw4QkFBQTs7QUFBQSxDQUFBLEdBQUksT0FBQSxDQUFRLFlBQVIsQ0FBSixDQUFBOztBQUFBO0FBSWlCLEVBQUEsc0JBQUUsUUFBRixFQUFhLEtBQWIsRUFBcUIsZ0JBQXJCLEdBQUE7QUFBd0MsSUFBdkMsSUFBQyxDQUFBLFdBQUEsUUFBc0MsQ0FBQTtBQUFBLElBQTVCLElBQUMsQ0FBQSxRQUFBLEtBQTJCLENBQUE7QUFBQSxJQUFwQixJQUFDLENBQUEsbUJBQUEsZ0JBQW1CLENBQXhDO0VBQUEsQ0FBYjs7QUFBQSx5QkFFQSxNQUFBLEdBQVEsU0FBQSxHQUFBO1dBQ0osSUFBQyxDQUFBLFFBQUQsQ0FBQSxFQURJO0VBQUEsQ0FGUixDQUFBOztBQUFBLHlCQUtBLE9BQUEsR0FBUyxTQUFBLEdBQUE7V0FDTCxJQUFDLENBQUEsZ0JBQWdCLENBQUMsTUFBbEIsQ0FBeUIsSUFBQyxDQUFBLEtBQTFCLEVBQWlDLENBQWpDLEVBREs7RUFBQSxDQUxULENBQUE7O3NCQUFBOztJQUpKLENBQUE7O0FBQUE7QUFjaUIsRUFBQSxnQkFBQSxHQUFBO0FBQ1QsSUFBQSxJQUFDLENBQUEsTUFBRCxHQUFVLEVBQVYsQ0FEUztFQUFBLENBQWI7O0FBQUEsbUJBR0EsRUFBQSxHQUFJLFNBQUMsU0FBRCxFQUFZLFFBQVosR0FBQTtBQUNBLFFBQUEsZ0JBQUE7QUFBQSxJQUFBLElBQUcsQ0FBQSxJQUFFLENBQUEsTUFBTyxDQUFBLFNBQUEsQ0FBWjtBQUNJLE1BQUEsQ0FBQSxDQUFDLElBQUMsQ0FBQSxNQUFPLENBQUEsU0FBQSxDQUFSLEdBQXFCLEVBQXJCLENBQUQsQ0FESjtLQUFBO0FBQUEsSUFHQSxnQkFBQSxHQUFtQixJQUFDLENBQUEsTUFBTyxDQUFBLFNBQUEsQ0FIM0IsQ0FBQTtXQUlBLGdCQUFnQixDQUFDLElBQWpCLENBQXNCLFFBQXRCLEVBQWdDLGdCQUFnQixDQUFDLE1BQWpELEVBQXlELGdCQUF6RCxFQUxBO0VBQUEsQ0FISixDQUFBOztBQUFBLG1CQVVBLE9BQUEsR0FBUyxTQUFDLFNBQUQsR0FBQTtBQUNMLFFBQUEsNkNBQUE7QUFBQSxJQUFBLGdCQUFBLEdBQW1CLElBQUMsQ0FBQSxNQUFPLENBQUEsU0FBQSxDQUFSLElBQXNCLEVBQXpDLENBQUE7QUFBQSxJQUNBLEdBQUEsR0FBTSxnQkFBZ0IsQ0FBQyxNQUR2QixDQUFBO0FBR0E7V0FBTSxHQUFBLEVBQU4sR0FBQTtBQUNJLE1BQUEsWUFBQSxHQUFlLGdCQUFpQixDQUFBLEdBQUEsQ0FBaEMsQ0FBQTtBQUFBLG9CQUNBLFlBQVksQ0FBQyxNQUFiLENBQUEsRUFEQSxDQURKO0lBQUEsQ0FBQTtvQkFKSztFQUFBLENBVlQsQ0FBQTs7QUFBQSxtQkFrQkEsR0FBQSxHQUFLLFNBQUMsU0FBRCxHQUFBO1dBQ0QsSUFBQyxDQUFBLE1BQU8sQ0FBQSxTQUFBLENBQVIsR0FBcUIsR0FEcEI7RUFBQSxDQWxCTCxDQUFBOztnQkFBQTs7SUFkSixDQUFBOztBQUFBO0FBcUNpQixFQUFBLGVBQUUsSUFBRixFQUFTLElBQVQsR0FBQTtBQUFnQixJQUFmLElBQUMsQ0FBQSxPQUFBLElBQWMsQ0FBQTtBQUFBLElBQVIsSUFBQyxDQUFBLE9BQUEsSUFBTyxDQUFoQjtFQUFBLENBQWI7O2VBQUE7O0lBckNKLENBQUE7O0FBQUEsQ0F3Q0MsQ0FBQyxNQUFGLENBQVMsT0FBVCxFQUFrQjtBQUFBLEVBQ2QsS0FBQSxFQUFPLEtBRE87QUFBQSxFQUVkLE1BQUEsRUFBUSxNQUZNO0FBQUEsRUFHZCxZQUFBLEVBQWMsWUFIQTtDQUFsQixDQXhDQSxDQUFBIiwiZmlsZSI6ImV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyIsInNvdXJjZXNDb250ZW50IjpbIl8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJylcblxuXG5jbGFzcyBTdWJzY3JpcHRpb25cbiAgICBjb25zdHJ1Y3RvcjogKEBjYWxsYmFjaywgQGluZGV4LCBAc3Vic2NyaXB0aW9uTGlzdCkgLT5cblxuICAgIGludm9rZTogKCkgLT5cbiAgICAgICAgQGNhbGxiYWNrKClcblxuICAgIGRpc3Bvc2U6ICgpIC0+XG4gICAgICAgIEBzdWJzY3JpcHRpb25MaXN0LnNwbGljZShAaW5kZXgsIDApXG5cblxuY2xhc3MgRXZlbnRzXG4gICAgY29uc3RydWN0b3I6ICgpIC0+XG4gICAgICAgIEBldmVudHMgPSB7fVxuXG4gICAgb246IChldmVudE5hbWUsIGxpc3RlbmVyKSAtPlxuICAgICAgICBpZiAhQGV2ZW50c1tldmVudE5hbWVdXG4gICAgICAgICAgICAhQGV2ZW50c1tldmVudE5hbWVdID0gW10gICMgbmV3IHN1YnNjcmlwdGlvbiBsaXN0IGZvciB0aGlzIG5ldyBldmVudFxuXG4gICAgICAgIHN1YnNjcmlwdGlvbkxpc3QgPSBAZXZlbnRzW2V2ZW50TmFtZV1cbiAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5wdXNoKGxpc3RlbmVyLCBzdWJzY3JpcHRpb25MaXN0Lmxlbmd0aCwgc3Vic2NyaXB0aW9uTGlzdClcblxuICAgIHRyaWdnZXI6IChldmVudE5hbWUpIC0+XG4gICAgICAgIHN1YnNjcmlwdGlvbkxpc3QgPSBAZXZlbnRzW2V2ZW50TmFtZV0gfHwgW11cbiAgICAgICAgbGVuID0gc3Vic2NyaXB0aW9uTGlzdC5sZW5ndGhcblxuICAgICAgICB3aGlsZSBsZW4tLVxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uID0gc3Vic2NyaXB0aW9uTGlzdFtsZW5dXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24uaW52b2tlKClcblxuICAgIG9mZjogKGV2ZW50TmFtZSkgLT5cbiAgICAgICAgQGV2ZW50c1tldmVudE5hbWVdID0gW11cblxuXG5jbGFzcyBFdmVudFxuICAgIGNvbnN0cnVjdG9yOiAoQG5hbWUsIEBkYXRhKSAtPlxuXG5cbl8uZXh0ZW5kKGV4cG9ydHMsIHtcbiAgICBFdmVudDogRXZlbnRcbiAgICBFdmVudHM6IEV2ZW50c1xuICAgIFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXG59KVxuIl19