-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonkeybars.min.js
More file actions
6 lines (6 loc) · 12.4 KB
/
monkeybars.min.js
File metadata and controls
6 lines (6 loc) · 12.4 KB
1
2
3
4
5
6
/*!
* MonkeyBars v0.9.14
* http://mcgaryes.github.com/monkeybars/
* MonkeyBars may be freely distributed under the MIT license.
*/
(function(){"use strict";var e=0,t=1,n=2,r=3,i=4,s="parallel",o="sequence",u="simple",a=0,f=10,l=20,c=30,h="task",p=100,d="Override Needed",v="Undefined Task",m="No Attributes",g="Unknown Task Type",y="Invalid Arguments",b="Unhandled 'postMessage'",w=this,E=0,S=["name","tid","data","type","concurrent","worker","displayName","state","logLevel","timeout","dependencies","group","processed","tasks","max","count","interval"],x=w.MonkeyBars={};typeof exports!="undefined"&&typeof module!="undefined"&&module.exports&&(exports=module.exports=x);var T=function(e){if(!e){e.logLevel>=f&&H(m);return}var t;if(e.tid)t=e;else{var n=e.type,r=e.tasks;r&&(e.tasks=N(r));if(n)if(n===u)t=new F(e);else if(n===o)t=new R(e);else{if(n!==s)throw g;t=new q(e)}else r?t=new R(e):t=new F(e)}return t},N=function(e){var t=[];if(e)for(var n=0;n<e.length;n++)t.push(T(e[n]));return t},C=function(e){var t={};for(var n in e)t[n]={value:e[n],writable:!0};return t},k=function(e){var t=E++,n=e?e+t:h+t;return n},L=function(e,t){var n=e.dependencies;if(n){var r=n.length;for(var i=0;i<r;i++){var s=n[i];if(s.tid===t.tid)return!0;if(s===t.name&&t.name!=="undefined")return!0}}return!1},A=function(e){if(typeof e.toSource!="undefined"&&typeof e.callee=="undefined")return e.toSource();if(typeof e=="number"||typeof e=="boolean"||typeof e=="function")return e;if(typeof e=="string")return"'"+e+"'";if(typeof e=="object"){var t;if(e.constructor===Array||typeof e.callee!="undefined"){t="[";var n,r=e.length;for(n=0;n<r-1;n++)t+=A(e[n])+",";t+=A(e[n])+"]"}else{t="{";var i;for(i in e)t+=i+":"+A(e[i])+",";t=t.replace(/\,$/,"")+"}"}return t}return"UNKNOWN"},O=function(e){var t="var console = { log: function(msg) { postMessage({ type: 'console', message: msg }); } };",n;e.worker!==undefined?typeof e.worker=="function"?n=new e.worker(e):e.worker.constructor!==undefined&&typeof e.worker.constructor=="function"&&(n=new e.worker.constructor(e)):n=new j(e);var r="var workerTask = "+A(n)+"; workerTask.performTask();",i="onmessage = function(e) {"+t+r+"};";return new Blob([i],{type:"text/javascript"})},M=function(e,t){var n=w.URL||w.webkitURL,r=new Worker(n.createObjectURL(e));return r.onmessage=function(e){e.data.type==="complete"?t.complete(e.data.value):e.data.type==="fault"?t.fault(e.data.value):e.data.type==="cancel"?t.cancel():e.data.type==="console"?H(e.data.message):t.worker!==undefined&&typeof t.worker.handler=="function"?t.worker.handler(e):t.logLevel>f&&H(b+": "+A(e.data))},r.onerror=function(e){t.fault("WebWorker error.")},r},_=function(e){if(typeof Worker=="undefined"||typeof Blob=="undefined"||e.type!==u){e.performTask();return}var t=M(O(e),e);t.postMessage()},D=function(e,t){e.count&&U(e),e.when&&W(e),e.doWhile&&z(e)},P=function(e){var t=this,n=function(){t.apply(this,arguments)},r=C(e);return n.prototype=Object.create(t.prototype,r),n},H=function(e){console&&console.log&&console.log(e)},B={_eventMap:undefined,has:function(e){return this._eventMap===undefined||this._eventMap[e]===undefined?!1:!0},off:function(e,t){if(this._eventMap===undefined||this._eventMap[e]===undefined)return;if(e)if(t){var n=[];for(var r=0;r<this._eventMap[e].length;r++){var i=this._eventMap[e][r];i.callback===t&&(this._eventMap[e]=this._eventMap[e].splice(r,0))}}else for(var s=0;s<this._eventMap[e].length;s++){var o=this._eventMap[e][s];o.configurable===!0&&(this._eventMap[e]=this._eventMap[e].splice(s,0))}else this._eventMap={}},on:function(e,t,n,r){this._eventMap===undefined&&(this._eventMap={}),this._eventMap[e]===undefined&&(this._eventMap[e]=[]),r===undefined&&(r=!0),this._eventMap[e].push({callback:t,context:n,configurable:r})},trigger:function(e){if(this._eventMap===undefined||this._eventMap[e]===undefined)return;for(var t=0;t<this._eventMap[e].length;t++){var n=this._eventMap[e][t];n.callback.call(n.context,{type:e,target:this,isConfigurable:n.configurable})}}},j=x.WorkerTask=function(e){if(!e)throw y;e.data!==undefined&&(this.data=e.data),this.performTask=e.performTask};j.prototype={complete:function(e){this.postMessage("complete",e)},fault:function(e){this.postMessage("fault",e)},cancel:function(){this.postMessage("cancel")},postMessage:function(e,t){var n={};e!==undefined&&typeof e=="string"&&(n.type=e),t!==undefined&&(n.value=t),postMessage(n)}},j.extend=function(e){var t=this,n=function(){t.apply(this,arguments)},r=Object.create(t.prototype);for(var i in e)r[i]=e[i];return n.prototype=r,n};var F=x.Task=function(e){var t=this;t.tid=k();for(var n in e)if(e.hasOwnProperty(n)){var r=!0;for(var i=0;i<S.length;i++)if(n===S[i]||typeof e[n]=="function"){r=!1;break}r?(t.options===undefined&&(t.options={}),t.options[n]=e[n]):t.hasOwnProperty(n)||(t[n]=e[n])}D(t,e),t.initialize(t.options)};F.prototype=Object.create(B,{_state:{value:e,writable:!0},concurrent:{value:!1,writable:!0},logLevel:{value:a,writable:!0},timeout:{value:undefined,writable:!0},type:{value:u},worker:{value:undefined,writable:!0},__onStateChange:{value:function(e,t){},writable:!0},cancel:{value:function(){if(this._state>t)return;this._state=n,this.logLevel>=l&&H("Canceled: "+this.displayName),this.timeoutId&&clearTimeout(this.timeoutId),this.trigger("cancel"),this.__onStateChange(this._state),this.onCancel()}},complete:{value:function(e){if(this._state>t)return;this._state=i,this.logLevel>=l&&H("Completed: "+this.displayName),this.timeoutId&&clearTimeout(this.timeoutId),arguments.length!==0&&this.operate(e,this),this.trigger("complete"),this.onComplete(),this.__onStateChange(this._state)},writable:!0},destroy:{value:function(){for(var e in this)this.hasOwnProperty(e)&&delete this[e]}},displayName:{get:function(){return this.name?this.name:this.type+":"+this.tid}},fault:{value:function(e){if(this._state>=n)return;this._state=r,this.logLevel>=l&&H("Faulted: "+this.displayName),this.timeoutId&&clearTimeout(this.timeoutId),this.trigger("fault"),this.__onStateChange(this._state,e),this.onFault(e)}},initialize:{value:function(e){},writable:!0},onCancel:{value:function(){},writable:!0},onComplete:{value:function(){},writable:!0},onFault:{value:function(e){},writable:!0},onStart:{value:function(){},writable:!0},operate:{value:function(e,t){this.data=e},writable:!0},performTask:{value:function(){throw"performTask: "+d},writable:!0},reset:{value:function(){this._state=e,this.processed=!1}},start:{value:function(){if(this._state>=t)return;this._state=t,this.logLevel>=l&&H("Started: "+this.displayName);if(this.timeout!==undefined){var e=this;this.timeoutId=setTimeout(function(){e.fault()},this.timeout)}this.trigger("start"),this.__onStateChange(this._state),this.concurrent?_(this):this.performTask(),this.onStart()},writable:!0},state:{get:function(){return this._state}}}),F.extend=P;var I=x.TaskGroup=function(e){var t=this;e&&e.tasks&&(t.tasks=N(e.tasks));if(t.tasks)for(var n=0;n<t.tasks.length;n++){var r=t.tasks[n];this._dependencyMap[r.tid]=[],t.setDependeciesForTask(r)}this.tasks===undefined&&(this.tasks=[]),F.call(t,e)};I.prototype=Object.create(F.prototype,{_dependencyMap:{value:{},writable:!0},_currentIndex:{value:0,writable:!0},_processedIndex:{value:0,writable:!0},addSubTask:{value:function(e){if(!e)throw"addSubTask: "+y;e.tid||(e=T(e)),this.setDependeciesForTask(e),this.tasks.push(e)}},addSubTaskAfterTask:{value:function(e,t){if(!e||!t)throw"addSubTaskAfterTask: "+y;if(!e||this._state===n)return;e.tid||(e=T(e)),this.setDependeciesForTask(e);var r=this.tasks.indexOf(t);this.tasks.splice(r+1,0,e)}},addSubTaskBeforeTask:{value:function(e,t){if(!e||!t)throw"addSubTaskBeforeTask: "+y;if(!e||this._state===n)return;e.tid||(e=T(e)),this.setDependeciesForTask(e);var r=this.tasks.indexOf(t);this.tasks.splice(r,0,e)}},cancel:{value:function(){F.prototype.cancel.call(this);for(var t=0;t<this.tasks.length;t++){var r=this.tasks[t];r._state>e?r.cancel():r._state=n}}},getTaskByName:{value:function(e){for(var t=0;t<this.tasks.length;t++){var n=this.tasks[t];if(n.name===e)return n}}},getTaskByTid:{value:function(e){for(var t=0;t<this.tasks.length;t++){var n=this.tasks[t];if(n.tid===e)return n}}},onSubTaskCancel:{value:function(e){for(var t=0;t<this.tasks.length;t++)L(this.tasks[t],e)&&(this.tasks[t]._state=n)},writable:!0},onSubTaskComplete:{value:function(e){e.group.operate(e.data,e)},writable:!0},onSubTaskFault:{value:function(e,t){this.fault(t)},writable:!0},processSubTask:{value:function(e){if(e===undefined){this.logLevel>=f&&H(v);return}return e._state===n?(this.onSubTaskCancel(e),!0):(this._processedIndex=this._processedIndex+1,e.group=this,e.processed=!0,e.concurrent&&(e.concurrent=this.concurrent),this.logLevel!==a&&(e.logLevel=this.logLevel),e.__onStateChange=function(e,t){e===i?this.group.onSubTaskComplete(this):e===r?this.group.onSubTaskFault(this,t):e===n&&this.group.onSubTaskCancel(this)},e.start(),!1)}},removeSubTask:{value:function(e){if(!e)return;var t=this.tasks.indexOf(e);this.tasks.splice(t,1)}},reset:{value:function(){if(this.tasks){this._currentIndex=0,this._processedIndex=0;for(var e=0;e<this.tasks.length;e++)this.tasks[e].reset()}F.prototype.reset.call(this)}},setDependeciesForTask:{value:function(e){if(e.dependencies){var t=e.dependencies.length;for(var n=0;n<t;n++){var r=e.dependencies[n];if(r.tid===undefined){var i=this.getTaskByTid(r);i===undefined&&(i=this.getTaskByName(r)),i!==undefined&&(r=e.dependencies[n]=i)}r.tid?this._dependencyMap[e.tid].push(r.tid):this._dependencyMap[e.tid].push(r)}}}}}),I.extend=P;var q=x.ParallelTask=function(e){var t=this;I.call(t,e)};q.prototype=Object.create(I.prototype,{type:{value:s},addSubTask:{value:function(e){if(!e||e._state===n)return;e.tid||(e=T(e)),this.tasks.push(e),this._state>=t&&this.processSubTask(e)}},canProcessSubTask:{value:function(e){if(!e.dependencies)return!0;var n=e.dependencies.length,r=n,i=0,s=[],o=[];for(var u=0;u<n;u++){var a=e.dependencies[u];a._state>t?i++:(o.push(a),s.push(a.displayName))}if(i<r){this.logLevel>=c&&H("Cannot process "+e.displayName+" until its dependencies ["+s.join(",")+"] have run");var f=function(t){t.target.off("complete",f),this.processSubTask(e)};for(var l=0;l<o.length;l++){var h=o[l];console.log("add event"),console.log(h),h.on("complete",f,this,!1)}return!1}return!0}},hasNoEnabledSubTasks:{value:function(){if(!this.tasks)return!0;for(var e=0;e<this.tasks.length;e++){var t=this.tasks[e];if(t._state!==n)return!1}return!0}},onSubTaskComplete:{value:function(e){this._currentIndex++,I.prototype.onSubTaskComplete.call(this,e),this._currentIndex===this.tasks.length&&this.complete()},writable:!0},performTask:{value:function(){this.hasNoEnabledSubTasks()?this.complete():this.processSubTasks()},writable:!0},processSubTask:{value:function(e){this.canProcessSubTask(e)&&I.prototype.processSubTask.call(this,e)}},processSubTasks:{value:function(){for(var e=0;e<this.tasks.length;e++){var t=this.tasks[e];t!==undefined&&!t.processed&&this.processSubTask(t)}}}}),q.extend=P;var R=x.SequenceTask=function(e){var t=this;I.call(t,e)};R.prototype=Object.create(I.prototype,{type:{value:o},onSubTaskCancel:{value:function(e){I.prototype.onSubTaskCancel.call(this,e),this._state!==n&&this.startNextSubTask()},writable:!0},onSubTaskComplete:{value:function(e){if(this._state===n)return;var t=this;setTimeout(function(){I.prototype.onSubTaskComplete.call(this,e),t.startNextSubTask()},0)},writable:!0},performTask:{value:function(){this.startNextSubTask()},writable:!0},startNextSubTask:{value:function(){if(this._state>=n)return;if(this.tasks&&this._currentIndex<this.tasks.length){var e=this.tasks[this._currentIndex++],t=this.processSubTask(e);t&&(this.logLevel>=l&&H("Skipped: "+e.displayName+" Group: "+this.displayName),this.startNextSubTask())}else this.complete()}}}),R.extend=P;var U=function(e){e.itterationIndex=0,e.complete=function(){this.itterationIndex!==this.count-1?(this.reset(),this.itterationIndex++,this.logLevel>=l&&H("Completed:"+this.displayName+" "+this.itterationIndex+" out of "+this.count+" times"),this.performTask()):F.prototype.complete.call(this)}},z=function(t){t.interval=t.interval?t.interval:p,t.complete=function(){if(this.doWhile()){this._state=e;var t=this;this.interval!==0?setTimeout(function(){t.reset(),t.start()},this.interval):t.start()}else F.prototype.complete.call(this)}},W=function(e){e.interval=e.interval?e.interval:p,e.start=function(){var e=this,t=setInterval(function(){e.when()&&(F.prototype.start.call(e),clearInterval(this))},this.interval)}};x.TaskStates={Initialized:e,Started:t,Canceled:n,Faulted:r,Completed:i},x.TaskTypes={Parallel:s,Sequence:o,Simple:u},x.LogLevels={None:a,Error:f,Info:l,Verbose:c}}).call(this);