-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathanimitter.min.js
1 lines (1 loc) · 13.7 KB
/
animitter.min.js
1
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.animitter=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var EventEmitter=require("events").EventEmitter,inherits=require("inherits"),raf=require("raf"),methods;var defaultRAFObject={requestAnimationFrame:raf,cancelAnimationFrame:raf.cancel};function returnTrue(){return true}function makeThrottle(fps){var delay=1e3/fps;var lastTime=Date.now();if(fps<=0||fps===Infinity){return returnTrue}var half=Math.ceil(1e3/60)/2;return function(){var now=Date.now();if(now-lastTime<delay-half){return false}lastTime=now;return true}}function Animitter(opts){opts=opts||{};this.__delay=opts.delay||0;this.fixedDelta=!!opts.fixedDelta;this.frameCount=0;this.deltaTime=0;this.elapsedTime=0;this.__running=false;this.__completed=false;this.setFPS(opts.fps||Infinity);this.setRequestAnimationFrameObject(opts.requestAnimationFrameObject||defaultRAFObject)}inherits(Animitter,EventEmitter);function onStart(scope){var now=Date.now();var rAFID;if(scope.__running){return scope}exports.running+=1;scope.__running=true;scope.__lastTime=now;scope.deltaTime=0;scope.emit("start",scope.deltaTime,0,scope.frameCount);var lastRAFObject=scope.requestAnimationFrameObject;var drawFrame=function(){if(lastRAFObject!==scope.requestAnimationFrameObject){lastRAFObject=scope.requestAnimationFrameObject;scope.requestAnimationFrameObject.requestAnimationFrame(drawFrame);return}if(scope.__isReadyForUpdate()){scope.update()}if(scope.__running){rAFID=scope.requestAnimationFrameObject.requestAnimationFrame(drawFrame)}else{scope.requestAnimationFrameObject.cancelAnimationFrame(rAFID)}};scope.requestAnimationFrameObject.requestAnimationFrame(drawFrame);return scope}methods={off:EventEmitter.prototype.removeListener,trigger:EventEmitter.prototype.emit,complete:function(){this.stop();this.__completed=true;this.emit("complete",this.frameCount,this.deltaTime);return this},dispose:function(){this.stop();this.removeAllListeners();return this},getDeltaTime:function(){return this.deltaTime},getElapsedTime:function(){return this.elapsedTime},getFPS:function(){return this.deltaTime>0?1e3/this.deltaTime:0;if(this.deltaTime){return 1e3/this.deltaTime}},getFPSLimit:function(){return this.__fps},getFrameCount:function(){return this.frameCount},getRequestAnimationFrameObject:function(){return this.requestAnimationFrameObject},isRunning:function(){return this.__running},isCompleted:function(){return this.__completed},reset:function(){this.stop();this.__completed=false;this.__lastTime=0;this.deltaTime=0;this.elapsedTime=0;this.frameCount=0;this.emit("reset",0,0,this.frameCount);return this},setFPS:function(fps){this.__fps=fps;this.__isReadyForUpdate=makeThrottle(fps);return this},setRequestAnimationFrameObject:function(object){if(typeof object.requestAnimationFrame!=="function"||typeof object.cancelAnimationFrame!=="function"){throw new Error("Invalid object provide to `setRequestAnimationFrameObject`")}this.requestAnimationFrameObject=object;return this},start:function(){var self=this;if(this.__delay){setTimeout(function(){onStart(self)},this.__delay)}else{onStart(this)}return this},stop:function(){if(this.__running){this.__running=false;exports.running-=1;this.emit("stop",this.deltaTime,this.elapsedTime,this.frameCount)}return this},update:function(){this.frameCount++;var now=Date.now();this.__lastTime=this.__lastTime||now;this.deltaTime=this.fixedDelta||exports.globalFixedDelta?1e3/Math.min(60,this.__fps):now-this.__lastTime;this.elapsedTime+=this.deltaTime;this.__lastTime=now;this.emit("update",this.deltaTime,this.elapsedTime,this.frameCount);return this}};for(var method in methods){Animitter.prototype[method]=methods[method]}function createAnimitter(options,fn){if(arguments.length===1&&typeof options==="function"){fn=options;options={}}var _instance=new Animitter(options);if(fn){_instance.on("update",fn)}return _instance}module.exports=exports=createAnimitter;exports.bound=function(options,fn){var loop=createAnimitter(options,fn),functionKeys=functions(Animitter.prototype),hasBind=!!Function.prototype.bind,fnKey;for(var i=0;i<functionKeys.length;i++){fnKey=functionKeys[i];loop[fnKey]=hasBind?loop[fnKey].bind(loop):bind(loop[fnKey],loop)}return loop};exports.Animitter=Animitter;exports.globalFixedDelta=false;exports.EventEmitter=EventEmitter;exports.running=0;function bind(fn,scope){if(typeof fn.bind==="function"){return fn.bind(scope)}return function(){return fn.apply(scope,arguments)}}function functions(obj){var keys=Object.keys(obj);var arr=[];for(var i=0;i<keys.length;i++){if(typeof obj[keys[i]]==="function"){arr.push(keys[i])}}return arr}Date.now=Date.now||function now(){return(new Date).getTime()}},{events:2,inherits:4,raf:5}],2:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}throw TypeError('Uncaught, unspecified "error" event.')}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],3:[function(require,module,exports){var process=module.exports={};var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=setTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){currentQueue[queueIndex].run()}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;clearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){setTimeout(drainQueue,0)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],4:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],5:[function(require,module,exports){var now=require("performance-now"),global=typeof window==="undefined"?{}:window,vendors=["moz","webkit"],suffix="AnimationFrame",raf=global["request"+suffix],caf=global["cancel"+suffix]||global["cancelRequest"+suffix];for(var i=0;i<vendors.length&&!raf;i++){raf=global[vendors[i]+"Request"+suffix];caf=global[vendors[i]+"Cancel"+suffix]||global[vendors[i]+"CancelRequest"+suffix]}if(!raf||!caf){var last=0,id=0,queue=[],frameDuration=1e3/60;raf=function(callback){if(queue.length===0){var _now=now(),next=Math.max(0,frameDuration-(_now-last));last=next+_now;setTimeout(function(){var cp=queue.slice(0);queue.length=0;for(var i=0;i<cp.length;i++){if(!cp[i].cancelled){try{cp[i].callback(last)}catch(e){setTimeout(function(){throw e},0)}}}},Math.round(next))}queue.push({handle:++id,callback:callback,cancelled:false});return id};caf=function(handle){for(var i=0;i<queue.length;i++){if(queue[i].handle===handle){queue[i].cancelled=true}}}}module.exports=function(fn){return raf.call(global,fn)};module.exports.cancel=function(){caf.apply(global,arguments)}},{"performance-now":6}],6:[function(require,module,exports){(function(process){(function(){var getNanoSeconds,hrtime,loadTime;if(typeof performance!=="undefined"&&performance!==null&&performance.now){module.exports=function(){return performance.now()}}else if(typeof process!=="undefined"&&process!==null&&process.hrtime){module.exports=function(){return(getNanoSeconds()-loadTime)/1e6};hrtime=process.hrtime;getNanoSeconds=function(){var hr;hr=hrtime();return hr[0]*1e9+hr[1]};loadTime=getNanoSeconds()}else if(Date.now){module.exports=function(){return Date.now()-loadTime};loadTime=Date.now()}else{module.exports=function(){return(new Date).getTime()-loadTime};loadTime=(new Date).getTime()}}).call(this)}).call(this,require("_process"))},{_process:3}]},{},[1])(1)});