UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

128 lines (127 loc) 3.2 kB
function Handler(action, context) { this.action = action; this.context = context; } var notifier = { trigger: function(name) { if (!this.hasOwnProperty("__handlers__")) { return; } if (!this.__handlers__.hasOwnProperty(name)) { return; } var hdls = this.__handlers__[name]; var l = hdls.length, i = -1, args = arguments; switch (args.length) { case 1: while (++i < l) { hdls[i].action.call(hdls[i].context); } return; case 2: while (++i < l) { hdls[i].action.call(hdls[i].context, args[1]); } return; case 3: while (++i < l) { hdls[i].action.call(hdls[i].context, args[1], args[2]); } return; case 4: while (++i < l) { hdls[i].action.call(hdls[i].context, args[1], args[2], args[3]); } return; case 5: while (++i < l) { hdls[i].action.call(hdls[i].context, args[1], args[2], args[3], args[4]); } return; default: while (++i < l) { hdls[i].action.apply(hdls[i].context, Array.prototype.slice.call(args, 1)); } return; } }, on: function(name, action, context) { if (!name || !action) { return; } var handlers = this.__handlers__ || (this.__handlers__ = {}); if (!handlers[name]) { handlers[name] = []; } else { if (this.has(name, action)) { return; } } var handler = new Handler(action, context || this); handlers[name].push(handler); return this; }, once: function(name, action, context) { if (!name || !action) { return; } var self = this; function wrapper() { self.off(name, wrapper); action.apply(this, arguments); } return this.on(name, wrapper, context); }, before: function(name, action, context) { if (!name || !action) { return; } name = "before" + name; return this.on(name, action, context); }, after: function(name, action, context) { if (!name || !action) { return; } name = "after" + name; return this.on(name, action, context); }, success: function(action, context) { return this.once("success", action, context); }, error: function(action, context) { return this.once("error", action, context); }, off: function(name, action) { var handlers = this.__handlers__ || (this.__handlers__ = {}); if (!action) { handlers[name] = []; return; } if (handlers[name]) { var hdls = handlers[name]; var retains = []; for (var i = 0; i < hdls.length; i++) { if (action && hdls[i].action !== action) { retains.push(hdls[i]); } } handlers[name] = retains; } return this; }, has: function(name, action) { var handlers = this.__handlers__; if (!handlers || !handlers[name]) { return false; } var hdls = handlers[name]; for (var i = 0; i < hdls.length; i++) { if (hdls[i].action === action) { return true; } } } }; var notifier$1 = notifier; export { notifier$1 as default };