12345678910111213141516171819202122232425262728293031323334 |
- var initEvent = function (cos) {
- var listeners = {};
- var getList = function (action) {
- !listeners[action] && (listeners[action] = []);
- return listeners[action];
- };
- cos.on = function (action, callback) {
- if (action === 'task-list-update') {
- console.warn('warning: Event "' + action + '" has been deprecated. Please use "list-update" instead.');
- }
- getList(action).push(callback);
- };
- cos.off = function (action, callback) {
- var list = getList(action);
- for (var i = list.length - 1; i >= 0; i--) {
- callback === list[i] && list.splice(i, 1);
- }
- };
- cos.emit = function (action, data) {
- var list = getList(action).map(function (cb) {
- return cb;
- });
- for (var i = 0; i < list.length; i++) {
- list[i](data);
- }
- };
- };
- var EventProxy = function () {
- initEvent(this);
- };
- module.exports.init = initEvent;
- module.exports.EventProxy = EventProxy;
|