-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmediator.min.js
1 lines (1 loc) · 1.68 KB
/
mediator.min.js
1
!function(){function r(r){return r.map(function(r){return e[r]})}var n={},e={},t=[],o=[],a={};n.register=function(n,a){if("string"!=typeof n)throw new Error("Name must be a string!");if("undefined"==typeof a)throw new Error("Mediator.register takes two arguments");var i=n[0]===n[0].toLowerCase();if(i)e[n]||(e[n]=[]),e[n].push(a);else{if(e[n])throw new Error("Module "+n+" already exists!");e[n]=a;for(var u=t.length-1;u>=0;u--){var l=t[u],c=l.waitFor.indexOf(n);if(c>-1&&(l.waitFor.splice(c,1),0===l.waitFor.length)){var f=r(l.modules);l.callback.apply(null,f),t.splice(u,1)}}}return o.forEach(function(r){r(a,n)}),a},n.connect=function(o,i){if(claimed=o.filter(function(r){var n=!!a[r];return n&&(a[r]=!0),n}),claimed.length>0)throw new Error("Cannot group modules "+claimed.join(",")+": They are already coupled!");var u=o.filter(function(r){return!e[r]});return 0===u.length?i.apply(null,r(o)):t.push({waitFor:u,modules:o,callback:i}),n},n.forEach=function(r,t,a){if(Array.isArray(r)&&"function"==typeof t&&(a=t,t=r,r=null),"function"==typeof r&&(a=r,t=[],r=null),"function"==typeof t&&(a=t,t=[]),"function"!=typeof a)throw new Error("Callback is not a function!");return n.connect(t,function(n){n=Array.prototype.slice.apply(arguments);var t=function(e,t){(r===!1||r===t)&&a.apply(null,[e,t].concat(n))};o.push(t),Object.keys(e).forEach(function(r){var n=e[r];Array.isArray(n)?n.forEach(function(n){t(n,r)}):t(n,r)})}),n},n.group=function(r,e,t){if(r[0]!==r[0].toUpperCase())throw new Error("Group is a Module, so the name should start with UpperCase.");return n.connect(e,function(){var e={};e=t.apply(e,arguments)||e,n.register(r,e)}),n},n.debug=e,window.Mediator=n,module&&module.exports&&(module.exports=n)}();