animationvideo
Version:
Javascript-Libary for animation and audio syncing
1 lines • 64.7 kB
JavaScript
import t from"pasition";import*as i from"stackblur-canvas";import e,{}from"stackblur-canvas";import n from"color";import o from"eases";export{default as Easing}from"eases";function s(t){for(var i=[],e=arguments.length-1;e-- >0;)i[e]=arguments[e+1];return"function"==typeof t?t.apply(null,i):t}var r=function(t){var i=this,e=t;if("object"!=typeof t)throw new Error("No canvas given for Engine constructor");if(t.getContext)e={canvas:t};else if(!t.canvas)throw new Error("No canvas given for Engine constructor");var n=Object.assign({},{scene:null,canvas:null,autoSize:!1,clickToPlayAudio:!1},e);if(this._output={canvas:null,context:null,width:0,height:0,ratio:1},this._scene=null,this._isSceneInitialized=!1,this._newScene=null,this._lastTimestamp=0,this._timePassed=0,this._recalculateCanvas=!1,this._referenceRequestAnimationFrame=null,this._output.canvas=n.canvas,"object"!=typeof n.canvas||null===n.canvas||!n.canvas.getContext)throw new Error("Countn't create contect for canvas in Engine");if(n.autoSize){var o={enabled:!0,scaleLimitMin:1,scaleLimitMax:8,scaleFactor:1.1,referenceWidth:function(){return i._output.canvas.clientWidth},referenceHeight:function(){return i._output.canvas.clientHeight},currentScale:1,waitTime:800,currentWaitedTime:0,currentOffsetTime:0,offsetTimeLimitUp:300,offsetTimeLimitDown:300,offsetTimeTarget:1e3/60,offsetTimeDelta:3,registerResizeEvents:!0,registerVisibilityEvents:!0,setCanvasStyle:!1};this._autoSize="object"==typeof n.autoSize?Object.assign({},o,n.autoSize):o,this._autoSize.registerResizeEvents&&(window.addEventListener("resize",this.recalculateCanvas.bind(this),!1),window.addEventListener("orientationchange",this.recalculateCanvas.bind(this),!1)),this._autoSize.registerVisibilityEvents&&document.addEventListener("visibilitychange",this.handleVisibilityChange.bind(this),!1),this.recalculateCanvas()}else this._output.width=this._output.canvas.width,this._output.height=this._output.canvas.height,this._output.ratio=this._output.width/this._output.height;this._output.context=n.canvas.getContext("2d"),n.clickToPlayAudio&&n.canvas.addEventListener("click",this.playAudioOfScene.bind(this),!1),this.switchScene(n.scene),this.normalizeContext(this._output.context)};r.prototype.handleVisibilityChange=function(){this._autoSize.enabled=!("hidden"==document.visibilityState)},r.prototype.playAudioOfScene=function(){this._isSceneInitialized&&this._scene&&this._scene.audioElement&&this._scene.audioElement.play()},r.prototype.normalizeContext=function(t){t.textBaseline="middle",t.textAlign="center",t.globalAlpha=1,t.globalCompositeOperation="source-over"},r.prototype.getWidth=function(){return this._output.width},r.prototype.getHeight=function(){return this._output.height},r.prototype.recalculateCanvas=function(){if(this._autoSize){var t=s(this._autoSize.referenceWidth),i=s(this._autoSize.referenceHeight);if(t<=0||i<=0)return;this._output.canvas.width=Math.round(t/this._autoSize.currentScale),this._output.canvas.height=Math.round(i/this._autoSize.currentScale),this._autoSize.setCanvasStyle&&(this._output.canvas.style.width=t+"px",this._output.canvas.style.height=i+"px"),this._autoSize.currentWaitedTime=0,this._autoSize.currentOffsetTime=0}return this._output.width=this._output.canvas.width,this._output.height=this._output.canvas.height,this._output.ratio=this._output.width/this._output.height,this.resize(),this},r.prototype.resize=function(){return this._scene&&this._scene.resize&&this._scene.resize(this._output),this},r.prototype.switchScene=function(t){return t&&(this._newScene=t),this},r.prototype.run=function(t){return t=t||{},this._referenceRequestAnimationFrame=window.requestAnimationFrame(function i(e){if(this._referenceRequestAnimationFrame=window.requestAnimationFrame(i.bind(this)),this._recalculateCanvas&&(this.recalculateCanvas(),this._recalculateCanvas=!1),this._realLastTimestamp||(this._realLastTimestamp=e),null!==this._newScene){var n=this._scene?this._scene.destroy(this._output):t;n&&(this._newScene.callInit(this._output,n,this),this._scene=this._newScene,this._newScene=null,this._isSceneInitialized=!1)}if(this._scene&&this._output.canvas.width){var o=this._scene.currentTime();this._timePassed=this._scene.clampTime(o-this._lastTimestamp);var s=this._scene.shiftTime(this._timePassed);if(this._timePassed=this._timePassed+s,this._lastTimestamp=o+s,this._isSceneInitialized){if(0!==this._timePassed&&(this._autoSize&&this._autoSize.enabled&&(o=window.performance?performance.now():Date.now()),this._scene.move(this._output,this._timePassed),this._timePassed<0&&(this._timePassed=this._scene.totalTimePassed),this._scene.draw(this._output),this._autoSize&&this._autoSize.enabled)){var r=(window.performance?performance.now():Date.now())-o-this._autoSize.offsetTimeTarget;this._autoSize.currentWaitedTime<this._autoSize.waitTime?this._autoSize.currentWaitedTime+=e-this._realLastTimestamp:Math.abs(r)<=this._autoSize.offsetTimeDelta?this._autoSize.currentOffsetTime=this._autoSize.currentOffsetTime>=0?Math.max(0,this._autoSize.currentOffsetTime-this._autoSize.offsetTimeDelta):Math.min(0,this._autoSize.currentOffsetTime+this._autoSize.offsetTimeDelta):r<0&&this._autoSize.currentScale>this._autoSize.scaleLimitMin?(this._autoSize.currentOffsetTime+=r,this._autoSize.currentOffsetTime<=this._autoSize.offsetTimeLimitDown&&(this._autoSize.currentScale=Math.max(this._autoSize.scaleLimitMin,this._autoSize.currentScale/this._autoSize.scaleFactor),this._recalculateCanvas=!0)):r>0&&this._autoSize.currentScale<this._autoSize.scaleLimitMax&&(this._autoSize.currentOffsetTime+=r,this._autoSize.currentOffsetTime>=this._autoSize.offsetTimeLimitUp&&(this._autoSize.currentScale=Math.min(this._autoSize.scaleLimitMax,this._autoSize.currentScale*this._autoSize.scaleFactor),this._recalculateCanvas=!0))}}else this._isSceneInitialized=this._scene.callLoading(this._output),this._isSceneInitialized&&(this._scene.reset(this._output),this._autoSize&&(this._autoSize.currentWaitedTime=0))}this._realLastTimestamp=e}.bind(this)),this},r.prototype.destroy=function(){return this._referenceRequestAnimationFrame&&window.cancelAnimationFrame(this._referenceRequestAnimationFrame),this._referenceRequestAnimationFrame=null,this._scene&&this._scene.destroy(this._output),window.removeEventListener("resize",this.recalculateCanvas.bind(this),!1),window.removeEventListener("orientationchange",this.recalculateCanvas.bind(this),!1),document.removeEventListener("visibilitychange",this.handleVisibilityChange.bind(this),!1),this._output.canvas.removeEventListener("click",this.playAudioOfScene.bind(this),!1),this};var a=function(){};a.add=function(t,i){var e=this||a,n=function(n){if(e.Images[n])i&&"function"==typeof i[n]&&i[n](n,e.Images[n]);else{if(e.Images[n]=new window.Image,e.Images[n].onload=function(){e.loaded++,i&&"function"==typeof i?e.isLoaded()&&i():i&&"function"==typeof i[n]&&i[n](n,e.Images[n]),e.resolve&&e.isLoaded()&&(e.resolve(),e.resolve=null)},"<svg"===t[n].substr(0,4)){var o=window.URL||window.webkitURL||window,s=new window.Blob([t[n]],{type:"image/svg+xml"});e.Images[n].src=o.createObjectURL(s)}else e.Images[n].src=t[n];e.count++}};for(var o in t)n(o);return i&&"function"==typeof i&&e.isLoaded()&&i(),e.resolve&&e.isLoaded()&&(e.resolve(),e.resolve=null),e},a.reset=function(){var t=this||a;return t.Images={},t.count=0,t.loaded=0,t},a.getLoaded=function(){return(this||a).loaded},a.getCount=function(){return(this||a).count},a.isLoaded=function(){var t=this||a;return t.loaded===t.count},a.getImage=function(t){return"object"==typeof t?t:(this||a).Images[t]},a.isLoadedPromise=function(){var t=this||a;return!!t.isLoaded()||new Promise(function(i,e){t.resolve=i})},a.Images={},a.count=0,a.loaded=0;var h=function(){this.layer=[],this.isFunction=[],this.start=0,this.nextFree=0};h.prototype.addElement=function(t){return this.addElementForId(t),t},h.prototype.addElements=function(t){return this.addElementsForIds(t),t},h.prototype.addElementForId=function(t){var i=this.layer.length,e=this.nextFree;this.layer[e]=t,this.isFunction[e]="function"==typeof t,i===e&&i++;for(var n=this.nextFree+1;n!==i&&layer[n];)n++;return this.nextFree=n,this.start>e&&(this.start=e),e},h.prototype.addElementsForIds=function(t){var i=this,e=this.layer.length;return e===this.nextFree?(this.layer=this.layer.concat(t),this.nextFree=this.layer.length,t.forEach(function(t,n){i.isFunction[e+n]="function"==typeof t}),Array.from({length:t.length},function(t,i){return i+e})):t.map(function(t){return i.addElement(t)})},h.prototype.getById=function(t){return this.layer[t]},h.prototype.getIdByElement=function(t){return this.layer.indexOf(t)},h.prototype.deleteByElement=function(t){var i=this.getIdByElement(t);i>=0&&this.deleteById(i)},h.prototype.deleteById=function(t){var i=this.layer.length-1;if(i>0&&t===i){for(this.layer[t]=null;i&&!this.layer[i-1];)i--;this.layer.length=i,this.isFunction.length=i,this.nextFree=Math.min(this.nextFree,i),this.start=Math.min(this.start,i)}else this.layer[t]=null,this.nextFree=Math.min(this.nextFree,t),this.start===t&&(this.start=t+1)},h.prototype.forEach=function(t){var i,e,n=this.layer.length;for(i=this.start;i<n;i++)(e=this.layer[i])&&t({index:i,element:e,isFunction:this.isFunction[i],layer:this})},h.prototype.count=function(){for(var t=0,i=this.layer.length,e=this.start;e<i;e++)this.layer[e]&&t++;return t},h.prototype.clear=function(){this.layer=[],this.isFunction=[],this.start=0,this.nextFree=0};var c=function(){this.layers=[]};function u(t,i){return null==t||""===t?i:t}c.prototype.addLayer=function(){return this.layers[this.layers.length]=new h,this.layers[this.layers.length-1]},c.prototype.addLayers=function(t){void 0===t&&(t=1);var i=Array.from({length:t},function(t){return new h});return this.layers=this.layers.concat(i),i},c.prototype.addLayerForId=function(){return this.layers[this.layers.length]=new h,this.layers.length-1},c.prototype.addLayersForIds=function(t){var i=this;void 0===t&&(t=1);var e=Array.from({length:t},function(t,e){return e+i.layers.length});return this.layers=this.layers.concat(Array.from({length:t},function(t){return new h})),e},c.prototype.getById=function(t){return this.layers[t]},c.prototype.forEach=function(t){var i,e=this.layers.length;for(i=0;i<e;i++)this.layers[i].forEach(t)},c.prototype.count=function(){return this.layers.length},c.prototype.clear=function(){this.layers=[]};var l=function(t){this.configuration="function"==typeof t?new t:t,this.layerManager=new c,this.totalTimePassed=0,this.engine=null,this.initDone=!1,this.additionalModifier=void 0,this.tickChunk=u(s(this.configuration.tickChunk),100/6),this.maxSkippedTickChunk=u(s(this.configuration.maxSkippedTickChunk),3),this.tickChunkTolerance=u(s(this.configuration.tickChunkTolerance),.1)};l.prototype.currentTime=function(){return window.performance?performance.now():Date.now()},l.prototype.clampTime=function(t){var i=2e3;return this.tickChunk&&(i=this.tickChunk*this.maxSkippedTickChunk),t>i?i:t},l.prototype.shiftTime=function(t){return this.configuration.fixedUpdate?-t%this.tickChunk:0},l.prototype.callInit=function(t,i,e){var n=this;this.engine=e,this.resize(t);var o=s(this.configuration.images);o&&a.add(o),Promise.resolve(this.configuration.init&&this.configuration.init({engine:e,output:t,scene:this,parameter:i,imageManager:a})).then(function(t){return n.initDone=!0})},l.prototype.resize=function(t){var i=this;this.additionalModifier={alpha:1,x:0,y:0,width:t.width,height:t.height,widthInPixel:t.width,heightInPixel:t.height,visibleScreen:{x:0,y:0,width:t.width,height:t.height}},this.layerManager.forEach(function(e){e.isFunction||e.element.resize(t,i.additionalModifier)})},l.prototype.destroy=function(t){var i=this.configuration.destroy&&this.configuration.destroy({engine:this.engine,scene:this,output:t});return this.initDone=!1,i},l.prototype.loadingScreen=function(t,i){if(this.configuration.loading)return this.configuration.loading({engine:this.engine,scene:this,output:t,progress:i});var e=t.context,n="number"==typeof i?Math.max(1,i*t.h):t.h;e.globalCompositeOperation="source-over",e.globalAlpha=1,e.clearRect(0,0,t.w,t.h),e.fillStyle="#aaa",e.fillRect(0,t.height/2-n/2,t.width,n),e.font="20px Georgia",e.fillStyle="#fff",e.textAlign="left",e.textBaseline="bottom";var o=i;isNaN(parseFloat(i))||isNaN(i-0)||(o="Loading "+Math.round(100*i)+"%"),e.fillText(o,10+3*Math.random(),t.height-10+3*Math.random()),this.engine&&this.engine.normalizeContext(e)},l.prototype.callLoading=function(t){if(a.isLoaded()&&this.initDone)return!0;var i=a.getCount()?a.getLoaded()/a.getCount():"Loading...";return this.loadingScreen(t,i),!1},l.prototype.fixedUpdate=function(t,i){this.configuration.fixedUpdate&&this.configuration.fixedUpdate({engine:this.engine,scene:this,layerManager:this.layerManager,output:t,timePassed:i,totalTimePassed:this.totalTimePassed})},l.prototype.move=function(t,i){if(this.totalTimePassed+=i,i<0?(this.reset(t),i=this.totalTimePassed):this.configuration.endTime&&this.configuration.endTime<=this.totalTimePassed&&(i-=this.totalTimePassed-this.configuration.endTime,this.totalTimePassed=this.configuration.endTime,this.configuration.end&&this.configuration.end({engine:this.engine,scene:this,output:t,timePassed:i,totalTimePassed:this.totalTimePassed})),this.tickChunk){if(i>=this.tickChunk-this.tickChunkTolerance)for(var e=0,n=Math.min(this.maxSkippedTickChunk,Math.floor(i/this.tickChunk));e<n;e++)this.fixedUpdate(t,this.tickChunk,e===n-1)}else this.fixedUpdate(t,i,!0);this.configuration.update&&this.configuration.update({engine:this.engine,scene:this,layerManager:this.layerManager,output:t,timePassed:i,totalTimePassed:this.totalTimePassed}),this.layerManager.forEach(function(t){var e=t.layer,n=t.index;t.isFunction||t.element.animate(i)&&e.deleteById(n)})},l.prototype.draw=function(t){var i=this;this.layerManager.forEach(function(e){var n=e.layer,o=e.element,s=e.index;e.isFunction?o({engine:i.engine,scene:i,layerManager:i.layerManager,layer:n,output:t,totalTimePassed:i.totalTimePassed})&&n.deleteById(s):o.draw(t.context,i.additionalModifier)})},l.prototype.reset=function(t){var i=this.configuration.reset?this.configuration.reset({engine:this.engine,scene:this,layerManager:this.layerManager,output:t}):new c;if(Array.isArray(i)){var e=i;i=new c,e.forEach(function(t){i.addLayer().addElements(t)})}i&&(this.layerManager=i)};var p=function(t){function i(i){t.call(this,i),this.audioStartTime=null,this.audioPosition=null,this.enableAndroidHack=!1,this.audioElement=this.configuration.audioElement}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.currentTime=function(){var i=t.prototype.currentTime.call(this);if(this.audioElement){if(this.enableAndroidHack){if(null===this.audioStartTime)return this.audioStartTime=i,this.audioPosition=this.audioElement.currentTime,1e3*this.audioElement.currentTime;if("playing"===this.audioElement.controller.playbackState){if(this.audioElement.currentTime===this.audioPosition)return 1e3*this.audioPosition+Math.min(260,i-this.audioStartTime);if(this.audioElement.currentTime-this.audioPosition<.5&&this.audioElement.currentTime>this.audioPosition&&i-this.audioStartTime<350)return this.audioStartTime=this.audioStartTime+1e3*(this.audioElement.currentTime-this.audioPosition),this.audioPosition=this.audioElement.currentTime,1e3*this.audioPosition+i-this.audioStartTime}return this.audioStartTime=i,this.audioPosition=1e3*(this.audioElement.ended?this.audioElement.duration:this.audioElement.currentTime),1e3*this.audioPosition}return 1e3*(this.audioElement.ended?this.audioElement.duration:this.audioElement.currentTime)}return i},i.prototype.clampTime=function(t){return t},i.prototype.shiftTime=function(t){return 0},i.prototype.callInit=function(){for(var i=[],e=arguments.length;e--;)i[e]=arguments[e];return this.audioElement&&(this.audioElement.canPlayType("audio/mp3").match(/maybe|probably/i),"function"==typeof MediaController&&(this.audioElement.controller=new MediaController,this.enableAndroidHack=!0),this.audioElement.preload="auto",this.audioElement.load()),t.prototype.callInit.apply(this,i)},i.prototype.callLoading=function(i){var e=t.prototype.callLoading.call(this,i);if(e&&this.audioElement){if(!(this.audioElement.readyState>=this.audioElement.HAVE_ENOUGH_DATA))return this.loadingScreen(i,"Waiting for Audio"),!1;var n=this.audioElement.play();n&&n.catch(function(t){}),this.configuration.endTime||(this.configuration.endTime=1e3*this.audioElement.duration),this.loadingScreen(i,"Click to play")}return e},i}(l);function d(){this.reset()}d.prototype.reset=function(){return this.m=[1,0,0,1,0,0],this},d.prototype.multiply=function(t){var i=this.m[1]*t.m[0]+this.m[3]*t.m[1],e=this.m[0]*t.m[2]+this.m[2]*t.m[3],n=this.m[1]*t.m[2]+this.m[3]*t.m[3],o=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],s=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=this.m[0]*t.m[0]+this.m[2]*t.m[1],this.m[1]=i,this.m[2]=e,this.m[3]=n,this.m[4]=o,this.m[5]=s,this},d.prototype.invert=function(){var t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),i=-this.m[1]*t,e=-this.m[2]*t,n=this.m[0]*t,o=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),s=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=this.m[3]*t,this.m[1]=i,this.m[2]=e,this.m[3]=n,this.m[4]=o,this.m[5]=s,this},d.prototype.rotate=function(t){var i=Math.cos(t),e=Math.sin(t),n=this.m[1]*i+this.m[3]*e,o=this.m[0]*-e+this.m[2]*i,s=this.m[1]*-e+this.m[3]*i;return this.m[0]=this.m[0]*i+this.m[2]*e,this.m[1]=n,this.m[2]=o,this.m[3]=s,this},d.prototype.translate=function(t,i){return this.m[4]+=this.m[0]*t+this.m[2]*i,this.m[5]+=this.m[1]*t+this.m[3]*i,this},d.prototype.scale=function(t,i){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=i,this.m[3]*=i,this},d.prototype.transformPoint=function(t,i){var e=t;return[t=e*this.m[0]+i*this.m[2]+this.m[4],i=e*this.m[1]+i*this.m[3]+this.m[5]]},d.prototype.clone=function(){var t=new d;return t.m=this.m.slice(0),t};var m=function(t){function i(){for(var i=[],e=arguments.length;e--;)i[e]=arguments[e];t.apply(this,i),this.transform=null,this.transformInvert=null,this.cam={zoom:1,x:0,y:0}}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype._getViewport=function(){return this.engine?(this.transform||(this.transform=this._getViewportByCam(this.cam),this.transformInvert=null),this.transform):new d},i.prototype._getViewportByCam=function(t){var i=this.engine._output.width/2,e=this.engine._output.height/2,n=this.engine._output.ratio>1?i:e;return(new d).translate(i,e).scale(n,n).scale(t.zoom,t.zoom).translate(-t.x,-t.y)},i.prototype.resize=function(t){var i=this;this.transform=null,this.transformInvert=null,this.additionalModifier={alpha:1,x:-1,y:-1,width:2,height:2,widthInPixel:t.width,heightInPixel:t.height,scaleCanvas:t.width/t.canvas.clientWidth};var e=this.transformPoint(0,0,1),n=e[0],o=e[1],s=this.transformPoint(t.width,t.height,1);this.additionalModifier.visibleScreen={x:n,y:o,width:s[0]-n,height:s[1]-o},this.layerManager.forEach(function(e){e.isFunction||e.element.resize(t,i.additionalModifier)})},i.prototype.transformPoint=function(t,i,e){return void 0===e&&(e=this.additionalModifier.scaleCanvas),this.transformInvert||(this.transformInvert=this._getViewport().clone().invert()),this.transformInvert.transformPoint(t*e,i*e)},i.prototype.draw=function(i){var e;i.context.save(),(e=i.context).setTransform.apply(e,this._getViewport().m),t.prototype.draw.call(this,i),i.context.restore()},i}(l),f=function(t){function i(){for(var i=[],e=arguments.length;e--;)i[e]=arguments[e];t.apply(this,i),this.transform=null,this.transformInvert=null}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype._getViewport=function(){if(!this.engine)return new Transform;if(!this.transform){var t=this.engine._output.width/2,i=this.engine._output.height/2,e=this.engine._output.ratio>1?t:i;this.transform=(new Transform).translate(t,i).scale(e,e),this.transformInvert=null}return this.transform},i.prototype.resize=function(t){var i=this;this.transform=null,this.transformInvert=null,this.additionalModifier={alpha:1,x:-1,y:-1,width:2,height:2,widthInPixel:t.width,heightInPixel:t.height,scaleCanvas:t.width/t.canvas.clientWidth};var e=this.transformPoint(0,0,1),n=e[0],o=e[1],s=this.transformPoint(t.width,t.height,1);this.additionalModifier.visibleScreen={x:n,y:o,width:s[0]-n,height:s[1]-o},this.layerManager.forEach(function(e){e.isFunction||e.element.resize(t,i.additionalModifier)})},i.prototype.transformPoint=function(t,i,e){return void 0===e&&(e=this.additionalModifier.scaleCanvas),this.transformInvert||(this.transformInvert=this._getViewport().clone().invert()),this.transformInvert.transformPoint(t*e,i*e)},i.prototype.draw=function(i){var e;i.context.save(),(e=i.context).setTransform.apply(e,this._getViewport().m),t.prototype.draw.call(this,i),i.context.restore()},i}(p),g=function(t){function i(){for(var i=[],e=arguments.length;e--;)i[e]=arguments[e];t.apply(this,i),this.clampView=function(){var t=this._getViewportByCam(this.toCam).invert(),i=t.transformPoint(0,0),e=i[0],n=i[1],o=t.transformPoint(this.engine._output.width,this.engine._output.height),s=o[0],r=o[1];s-e<=2?e<-1?s<=1&&(this.toCam.x+=-1-e):s>1&&(this.toCam.x+=1-s):e>-1?this.toCam.x+=-1-e:s<1&&(this.toCam.x+=1-s),r-n<=2?n<-1?r<=1&&(this.toCam.y+=-1-n):r>1&&(this.toCam.y+=1-r):n>-1?this.toCam.y+=-1-n:r<1&&(this.toCam.y+=1-r)},this.camConfig=Object.assign({},{zoomMax:10,zoomMin:.5,zoomFactor:1.2,tween:4,registerEvents:!0,enabled:!0,click:function(t,i,e){},dblClick:void 0,callResize:!0},s(this.configuration.cam)||{}),this.toCam={x:0,y:0,distance:void 0,zoom:1},this.mousePos={x:0,y:0,timestamp:0,isDown:!1}}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.camEnable=function(){this.camConfig.enabled=!0},i.prototype.camDisable=function(){this.camConfig.enabled=!1},i.prototype.camReset=function(){this.toCam={x:0,y:0,zoom:1}},i.prototype.callInit=function(i,e,n){return this.camConfig.registerEvents&&this.registerCamEvents(i.canvas),t.prototype.callInit.call(this,i,e,n)},i.prototype.destroy=function(i){return this.camConfig.registerEvents&&this.destroyCamEvents(i.canvas),t.prototype.destroy.call(this,i)},i.prototype._hasCamChanged=function(){return this.toCam.x!==this.cam.x||this.toCam.y!==this.cam.y||this.toCam.zoom!==this.cam.zoom},i.prototype.fixedUpdate=function(i,e,n){var o=t.prototype.fixedUpdate.call(this,i,e);return this.camConfig.tween&&this._hasCamChanged()&&(this.cam.x+=(this.toCam.x-this.cam.x)/this.camConfig.tween,this.cam.y+=(this.toCam.y-this.cam.y)/this.camConfig.tween,this.cam.zoom+=(this.toCam.zoom-this.cam.zoom)/this.camConfig.tween,n&&(this.camConfig.callResize?this.resize(i):(this.transform=null,this.transformInvert=null))),o},i.prototype.move=function(i,e){var n=t.prototype.move.call(this,i,e);return!this.camConfig.tween&&this._hasCamChanged()&&(this.cam=Object.assign({},this.toCam),this.camConfig.callResize?this.resize(i):(this.transform=null,this.transformInvert=null)),n},i.prototype.registerCamEvents=function(t){void 0===t&&(t=this.engine._output.canvas);for(var i=0,e=["touchstart","mousedown"];i<e.length;i+=1)t.addEventListener(e[i],this._mouseDown.bind(this),!0);for(var n=0,o=["touchend","mouseup"];n<o.length;n+=1)t.addEventListener(o[n],this._mouseUp.bind(this),!0);for(var s=0,r=["touchendoutside","mouseout"];s<r.length;s+=1)t.addEventListener(r[s],this._mouseOut.bind(this),!0);for(var a=0,h=["touchmove","mousemove"];a<h.length;a+=1)t.addEventListener(h[a],this._mouseMove.bind(this),!0);t.addEventListener("mousewheel",this._mouseWheel.bind(this),!0)},i.prototype.destroyCamEvents=function(t){void 0===t&&(t=this.engine._output.canvas);for(var i=0,e=["touchstart","mousedown"];i<e.length;i+=1)t.removeEventListener(e[i],this._mouseDown,!0);for(var n=0,o=["touchend","mouseup"];n<o.length;n+=1)t.removeEventListener(o[n],this._mouseUp,!0);for(var s=0,r=["touchendoutside","mouseout"];s<r.length;s+=1)t.removeEventListener(r[s],this._mouseOut,!0);for(var a=0,h=["touchmove","mousemove"];a<h.length;a+=1)t.removeEventListener(h[a],this._mouseMove,!0);t.removeEventListener("mousewheel",this._mouseWheel,!0)},i.prototype._getMousePosition=function(t){if(t&&t.touches&&t.touches.length>0){var i=t.target.getBoundingClientRect();return[t.targetTouches[0].pageX-i.left,t.targetTouches[0].pageY-i.top]}return[t.offsetX,t.offsetY]},i.prototype._mouseDown=function(t){if(t&&this.camConfig.enabled){var i=this._getMousePosition(t),e=i[1];this.mousePos.x=i[0],this.mousePos.y=e,this.mousePos.cx=this.toCam.x,this.mousePos.cy=this.toCam.y,this.mousePos.isDown=!0,this.mousePos.distance=void 0,this.mousePos.timestamp=Date.now()}},i.prototype._mouseUp=function(t){this.mousePos.isDown=!1;var i=this._getMousePosition(t),e=i[0],n=i[1];if(Date.now()-this.mousePos.timestamp<150&&Math.abs(this.mousePos.x-e)<5&&Math.abs(this.mousePos.y-n)<5){var o=this.transformPoint(e,n);this.camConfig.click(t,o[0],o[1])}},i.prototype._mouseOut=function(t){this.mousePos.isDown=!1},i.prototype._mouseMove=function(t){if(t&&this.camConfig.enabled&&this.mousePos.isDown)if(t.touches&&t.touches.length>=2){var i=t.touches,e=Math.sqrt((i[0].pageX-i[1].pageX)*(i[0].pageX-i[1].pageX)+(i[0].pageY-i[1].pageY)*(i[0].pageY-i[1].pageY));void 0!==this.mousePos.distance&&(e>this.mousePos.distance?this._zoomIn():e<this.mousePos.distance&&this._zoomOut()),this.mousePos.distance=e}else{this.mousePos.distance=void 0;var n=this._getMousePosition(t),o=n[0],s=n[1],r=this._getViewportByCam(this.toCam).invert(),a=r.transformPoint(this.mousePos.x,this.mousePos.y),h=a[0],c=a[1],u=r.transformPoint(o,s),l=u[1];this.toCam.x=this.mousePos.cx+h-u[0],this.toCam.y=this.mousePos.cy+c-l,this.clampView()}},i.prototype._mouseWheel=function(t){if(t&&this.camConfig.enabled){t.preventDefault();var i=this._getMousePosition(t),e=i[0],n=i[1],o=this._getViewportByCam(this.toCam).invert().transformPoint(e,n),s=o[0],r=o[1];if((t.wheelDelta||-1*t.deltaY)/120>0){this._zoomIn();var a=this._getViewportByCam(this.toCam).invert().transformPoint(e,n),h=a[1];this.toCam.x-=a[0]-s,this.toCam.y-=h-r,this.clampView()}else this._zoomOut()}},i.prototype._zoomIn=function(){this.toCam.zoom=Math.min(this.camConfig.zoomMax,this.toCam.zoom*this.camConfig.zoomFactor)},i.prototype._zoomOut=function(){this.toCam.zoom=Math.max(this.camConfig.zoomMin,this.toCam.zoom/this.camConfig.zoomFactor),this.clampView()},i}(m);NormCamera=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return new(Function.prototype.bind.apply(g,[null].concat(t)))};var y={Default:function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return new(Function.prototype.bind.apply(l,[null].concat(t)))},Audio:function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return new(Function.prototype.bind.apply(p,[null].concat(t)))},Norm:function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return new(Function.prototype.bind.apply(m,[null].concat(t)))},NormAudio:function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return new(Function.prototype.bind.apply(f,[null].concat(t)))},NormCamera:NormCamera},v=function(t){this.duration=s(t)};v.prototype.run=function(t,i){return this.duration?i-this.duration:-1};var _=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];var e=0;"number"==typeof t[0]&&(e=t.shift()),this.sequences=t.map(function(t){Array.isArray(t)||(t=[t]);var i=e;return"number"==typeof t[0]&&(i=t.shift()),{position:0,timelapsed:-i,sequence:t.map(function(t){return"function"!=typeof t.run?"number"==typeof t?new v(t):{run:t}:t}).filter(function(t){return"function"==typeof t.run}),label:t.reduce(function(t,i,e){return"string"==typeof i&&(t[i]=e-Object.keys(t).length),t},{}),enabled:!0}}),this.lastTimestamp=0,this.enabled=!0};_.prototype.reset=function(t){void 0===t&&(t=0),this.sequences.forEach(function(i){i.enabled=!0,i.position=0,i.timelapsed=t,i.sequence[0]&&i.sequence[0].reset&&i.sequence[0].reset(t)}),this.enabled=!0},_.prototype.play=function(t,i){if(void 0===t&&(t=""),void 0===i&&(i=0),t){var e=this.sequences.reduce(function(e,n){return n.label.hasOwnProperty(t)?(e=!0,n.position=n.label[t],n.enabled=!0,n.timelapsed=i,n.sequence[n.position]&&n.sequence[n.position].reset&&n.sequence[n.position].reset()):e|=n.sequence.find(function(e){return e.play&&e.play(t,i)})>=0,e},!1);return e&&(this.enabled=!0),e}return this.sequences.forEach(function(t){return t.enabled=!0}),this.enabled=!0,!0},_.prototype.runSequence=function(t,i,e){for(var n=e;i.sequence[i.position]&&n>=0;){if(i.timelapsed+=n,i.timelapsed<0)return-1;if(!0===(n=i.sequence[i.position].run(t,i.timelapsed)))n=0;else{if(!1===n)return-1;if(n===_.TIMELAPSE_TO_FORCE_DISABLE)return i.enabled=!1,this.enabled=!1,e;if(n===_.TIMELAPSE_TO_STOP)return i.enabled=!1,e;if(n===_.TIMELAPSE_TO_REMOVE)return!0}if(n>=0&&(i.position=(i.position+1)%i.sequence.length,i.sequence[i.position]&&i.sequence[i.position].reset&&i.sequence[i.position].reset(),i.timelapsed=0,0===i.position))return i.enabled=!1,n}return n},_.prototype.run=function(t,i,e){var n=i;if(e||(n=i-this.lastTimestamp,this.lastTimestamp=i),!this.enabled)return n;for(var o=this.sequences.length,s=0,r=Infinity,a=0;a<o;a++)if(this.sequences[a].enabled){var h=this.runSequence(t,this.sequences[a],n);if(!0===h)return!0;r=Math.min(r,h)}else s++;return s===o?(this.enabled=!1,n):r},_.TIMELAPSE_TO_FORCE_DISABLE="FORCE_DISABLE",_.TIMELAPSE_TO_STOP="STOP",_.TIMELAPSE_TO_REMOVE="REMOVE";var w=function(t){var i=this,e=this.getParameterList();Object.keys(e).forEach(function(n){var o=e[n];i[n]="function"==typeof o?o(t[n],t,i):u(s(t[n]),o)})};w.prototype.getBaseParameterList=function(){return{animation:function(t,i){var e=s(t);return Array.isArray(e)?new _(e):"object"==typeof e?e:void 0},enabled:!0}},w.prototype.getParameterList=function(){return Object.assign({},this.getBaseParameterList(),{x:0,y:0,rotation:function(t,i){return u(t,u(i.rotationInRadian,.017453292519943295*u(i.rotationInDegree,0)))},scaleX:1,scaleY:1,alpha:1,compositeOperation:"source-over",color:"#fff"})},w.prototype.animate=function(t){return!(!this.animation||!0!==this.animation.run(this,t,!0)||(this.enabled=!1,0))},w.prototype.play=function(t,i){void 0===t&&(t=""),void 0===i&&(i=0),this.animation&&this.animation.play&&this.animation.play(t,i)},w.prototype.resize=function(t,i){},w.prototype.draw=function(t,i){this.enabled&&(t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=this.alpha*i.alpha,t.save(),t.translate(this.x,this.y),t.scale(this.scaleX,this.scaleY),t.beginPath(),t.fillStyle=this.color,t.arc(0,0,1,Math.PI/2+this.rotation,2.5*Math.PI-this.rotation,!1),t.fill(),t.closePath(),t.restore())};var b=function(t){function i(i){"function"==typeof i&&(i={callback:i}),t.call(this,i),this.timePassed=0,this.deltaTime=0}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},this.getBaseParameterList(),{callback:function(t){return void 0===typeof t?function(){}:t}})},i.prototype.animate=function(i){return this.enabled&&(this.timePassed+=i,this.deltaTime+=i),t.prototype.animate.call(this,i)},i.prototype.draw=function(t,i){this.enabled&&this.callback(t,this.timePassed,i,this),this.deltaTime=0},i}(w),S=function(t){function i(i){t.call(this,i)}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{sprite:[]})},i.prototype.animate=function(i){var e=t.prototype.animate.call(this,i),n=!1;if(this.enabled)for(var o in this.sprite)n=n||!0===this.sprite[o].animate(i);return this.animation?e:(n&&(this.enabled=!1),n)},i.prototype.play=function(t,i){for(var e in void 0===t&&(t=""),void 0===i&&(i=0),this.animation&&this.animation.play&&this.animation.play(t,i),this.sprite)this.sprite[e].play&&this.sprite[e].play(t,i)},i.prototype.draw=function(t,i){if(this.enabled){for(var e in this.alpha<1&&((i=Object.assign({},i)).alpha*=this.alpha),t.save(),t.translate(this.x,this.y),t.scale(this.scaleX,this.scaleY),t.rotate(this.rotation),this.sprite)this.sprite[e].draw(t,i);t.restore()}},i}(w),x=function(t){function i(i){t.call(this,i),this.currentGridSize=!1}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{x:void 0,y:void 0,width:void 0,height:void 0,gridSize:void 0,norm:function(t,i,e){return u(s(t),void 0===e.x&&void 0===e.y&&void 0===e.width&&void 0===e.height)}})},i.prototype.generateTempCanvas=function(t,i){var e=i.widthInPixel||t.canvas.width,n=i.heightInPixel||t.canvas.height;this.temp_canvas=document.createElement("canvas"),this.gridSize?(this.currentGridSize=this.gridSize,this.temp_canvas.width=Math.round(this.currentGridSize),this.temp_canvas.height=Math.round(this.currentGridSize)):(this.temp_canvas.width=Math.round(e/this.scaleX),this.temp_canvas.height=Math.round(n/this.scaleY)),this.tctx=this.temp_canvas.getContext("2d"),this.tctx.globalCompositeOperation="source-over",this.tctx.globalAlpha=1},i.prototype.normalizeFullScreen=function(t){(void 0===this.x||this.norm)&&(this.x=t.visibleScreen.x),(void 0===this.y||this.norm)&&(this.y=t.visibleScreen.y),(void 0===this.width||this.norm)&&(this.width=t.visibleScreen.width),(void 0===this.height||this.norm)&&(this.height=t.visibleScreen.height)},i.prototype.resize=function(t,i){if(this.temp_canvas&&this.currentGridSize!==this.gridSize){var e=this.temp_canvas;this.generateTempCanvas(t,i),this.tctx.globalCompositeOperation="copy",this.tctx.drawImage(e,0,0,e.width,e.height,0,0,this.temp_canvas.width,this.temp_canvas.height),this.tctx.globalCompositeOperation="source-over"}this.normalizeFullScreen(i)},i.prototype.draw=function(t,i){if(this.enabled){this.temp_canvas||(this.generateTempCanvas(t,i),this.normalizeFullScreen(i)),this.gridSize&&this.currentGridSize!==this.gridSize&&this.resize(t,i);var e=this.width,n=this.height,o=e/2,s=n/2,r=this.temp_canvas.width,a=this.temp_canvas.height;for(var h in this.sprite)this.sprite[h].draw(this.tctx,{alpha:1,x:0,y:0,width:r,height:a,widthInPixel:r,heightInPixel:a,visibleScreen:{x:0,y:0,width:r,height:a}});this.additionalBlur&&this.additionalBlur(r,a,i),t.save(),t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=this.alpha*i.alpha,t.translate(this.x+o,this.y+s),t.scale(this.scaleX,this.scaleY),t.rotate(this.rotation),t.drawImage(this.temp_canvas,0,0,this.temp_canvas.width,this.temp_canvas.height,-o,-s,e,n),t.restore()}},i}(S),T=function(t){function i(i){t.call(this,i.self||{});var e={},n={};for(var o in i)["self","class","count"].includes(o)||("function"==typeof i[o]?n[o]=i[o]:e[o]=i[o]);var r=u(s(i.count),1);this.sprite=[];for(var a=0;a<r;a++){var h=i.class,c={};for(var l in e)c[l]=e[l];for(var p in n)c[p]=n[p].call(null,a);this.sprite[a]=new h(c)}}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i}(S),P=function(t){function i(i){t.call(this,i),this.currentGridSize=!1}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{x:void 0,y:void 0,width:void 0,height:void 0,gridSize:void 0,darker:0,pixel:!1,clear:!1,norm:function(t,i,e){return u(s(t),void 0===e.x&&void 0===e.y&&void 0===e.width&&void 0===e.height)}})},i.prototype.generateTempCanvas=function(t,i){var e=i.widthInPixel||t.canvas.width,n=i.heightInPixel||t.canvas.height;this.temp_canvas=document.createElement("canvas"),this.gridSize?(this.currentGridSize=this.gridSize,this.temp_canvas.width=Math.round(this.currentGridSize),this.temp_canvas.height=Math.round(this.currentGridSize)):(this.temp_canvas.width=Math.ceil(e/this.scaleX),this.temp_canvas.height=Math.ceil(n/this.scaleY)),this.tctx=this.temp_canvas.getContext("2d"),this.tctx.globalCompositeOperation="source-over",this.tctx.globalAlpha=1},i.prototype.normalizeFullScreen=function(t){(void 0===this.x||this.norm)&&(this.x=t.visibleScreen.x),(void 0===this.y||this.norm)&&(this.y=t.visibleScreen.y),(void 0===this.width||this.norm)&&(this.width=t.visibleScreen.width),(void 0===this.height||this.norm)&&(this.height=t.visibleScreen.height)},i.prototype.resize=function(t,i){if(this.temp_canvas&&this.currentGridSize!==this.gridSize){var e=this.temp_canvas;this.generateTempCanvas(t,i),this.tctx.globalCompositeOperation="copy",this.tctx.drawImage(e,0,0,e.width,e.height,0,0,this.temp_canvas.width,this.temp_canvas.height),this.tctx.globalCompositeOperation="source-over"}this.normalizeFullScreen(i)},i.prototype.draw=function(t,i){if(this.enabled){this.temp_canvas||(this.generateTempCanvas(t,i),this.normalizeFullScreen(i)),this.gridSize&&this.currentGridSize!==this.gridSize&&this.resize(t,i);var e=this.alpha*i.alpha,n=this.width,o=this.height,s=this.temp_canvas.width,r=this.temp_canvas.height;e>0&&s&&r&&(this.tctx.globalCompositeOperation="copy",this.tctx.globalAlpha=1,this.tctx.drawImage(t.canvas,0,0,t.canvas.width,t.canvas.height,0,0,s,r),this.darker>0&&(this.tctx.globalCompositeOperation=this.clear?"source-atop":"source-over",this.tctx.fillStyle="rgba(0,0,0,"+this.darker+")",this.tctx.fillRect(0,0,s,r)),this.additionalBlur&&this.additionalBlur(s,r,i),this.clear&&t.clearRect(this.x,this.y,n,o),t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=e,t.imageSmoothingEnabled=!this.pixel,t.drawImage(this.temp_canvas,0,0,s,r,this.x,this.y,n,o),t.imageSmoothingEnabled=!0)}else this.clear&&(this.x||(this.x=i.x),this.y||(this.y=i.y),this.width||(this.width=i.width),this.height||(this.height=i.height),t.clearRect(this.x,this.y,this.width,this.height))},i}(w),C=function(t){function i(i){t.call(this,i)}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{image:function(t){return a.getImage(s(t))},position:i.CENTER,frameX:0,frameY:0,frameWidth:0,frameHeight:0,norm:!1,normCover:!1})},i.prototype.resize=function(){this.normScale=void 0},i.prototype.draw=function(t,e){if(this.enabled&&this.image){var n=this.frameWidth||this.image.width,o=this.frameHeight||this.image.height;this.normScale||(this.normScale=this.normCover?Math.max(e.width/n,e.height/o):this.norm?Math.min(e.width/n,e.height/o):1);var s=n*this.normScale*this.scaleX,r=o*this.normScale*this.scaleY;t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=this.alpha*e.alpha,0==this.rotation?this.position===i.LEFT_TOP?t.drawImage(this.image,this.frameX,this.frameY,n,o,this.x,this.y,s,r):t.drawImage(this.image,this.frameX,this.frameY,n,o,this.x-s/2,this.y-r/2,s,r):(t.save(),t.translate(this.x,this.y),t.rotate(this.rotation),t.drawImage(this.image,this.frameX,this.frameY,n,o,-s/2,-r/2,s,r),t.restore())}},i}(w);C.LEFT_TOP=0,C.CENTER=1;var E=function(t){function i(i){t.call(this,i)}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{text:void 0,font:"26px monospace",position:i.CENTER,color:void 0,borderColor:void 0,lineWidth:1})},i.prototype.draw=function(t,e){this.enabled&&(t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=this.alpha*e.alpha,t.save(),i.LEFT_TOP&&(t.textAlign="left",t.textBaseline="top"),t.translate(this.x,this.y),t.scale(this.scaleX,this.scaleY),t.rotate(this.rotation),t.font=this.font,this.color&&(t.fillStyle=this.color,t.fillText(this.text,0,0)),this.borderColor&&(t.strokeStyle=this.borderColor,t.lineWidth=this.lineWidth,t.strokeText(this.text,0,0)),t.restore())},i}(w);E.LEFT_TOP=0,E.CENTER=1;var z=function(t){function i(i){t.call(this,i)}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.getGradientImage=function(t,e,n){var o,s,r=t>>4,a=e>>4,h=n>>4;if(!i.Gradient)for(i.Gradient=new Array(16),o=0;o<i.Gradient.length;o++)for(i.Gradient[o]=new Array(16),s=0;s<i.Gradient[o].length;s++)i.Gradient[o][s]=new Array(16);return i.Gradient[r][a][h]||(i.Gradient[r][a][h]=i.generateGradientImage(r,a,h)),i.Gradient[r][a][h]},i.generateGradientImage=function(t,i,e){var n=document.createElement("canvas");n.width=n.height=64;var o=n.getContext("2d");o.globalAlpha=1,o.globalCompositeOperation="source-over",o.clearRect(0,0,64,64);var s=o.createRadialGradient(32,32,0,32,32,32);return s.addColorStop(0,"rgba("+(16+(t<<4)-1)+","+(16+(i<<4)-1)+","+(16+(e<<4)-1)+",1)"),s.addColorStop(.3,"rgba("+(16+(t<<4)-1)+","+(16+(i<<4)-1)+","+(16+(e<<4)-1)+",0.4)"),s.addColorStop(1,"rgba("+(16+(t<<4)-1)+","+(16+(i<<4)-1)+","+(16+(e<<4)-1)+",0)"),o.fillStyle=s,o.fillRect(0,0,64,64),n},i.prototype.draw=function(t,e){if(this.enabled){this.color&&this.color.color||(this.color=n(this.color).rgb());var o=this.color.color;t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=this.alpha*e.alpha,t.imageSmoothingEnabled=this.scaleX*e.widthInPixel/e.width>64,t.drawImage(i.getGradientImage(o[0],o[1],o[2]),0,0,64,64,this.x-this.scaleX/2,this.y-this.scaleY/2,this.scaleX,this.scaleY),t.imageSmoothingEnabled=!0}},i}(w);z.Gradient=null;var O=function(i){function e(t){if(i.call(this,t),this.oldPath=void 0,this.path2D=new Path2D,this.polyfill)if("function"!=typeof Path2D){var e=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.src="https://cdn.jsdelivr.net/npm/canvas-5-polyfill@0.1.5/canvas.min.js",e.appendChild(n)}else{var o=document.createElement("canvas").getContext("2d");o.stroke(new Path2D("M0,0H1")),o.getImageData(0,0,1,1).data[3]&&(this.polyfill=!1)}}return i&&(e.__proto__=i),(e.prototype=Object.create(i&&i.prototype)).constructor=e,e.prototype.getParameterList=function(){return Object.assign({},i.prototype.getParameterList.call(this),{path:void 0,color:void 0,borderColor:void 0,lineWidth:1,clip:!1,fixed:!1,polyfill:!0})},e.prototype.changeToPathInit=function(i,e){return t._preprocessing("string"==typeof i?t.path2shapes(i):i,"string"==typeof e?t.path2shapes(e):e)},e.prototype.changeToPath=function(i,e,n){return t._lerp(e.pathFrom,e.pathTo,i)},e.prototype.draw=function(i,e){var n=this;if(this.enabled){var o=this.alpha*e.alpha;this.oldPath!==this.path&&(this.polyfill&&"string"==typeof this.path&&(this.path=t.path2shapes(this.path)),Array.isArray(this.path)?(this.path2D=new Path2D,this.path.forEach(function(t){n.path2D.moveTo(t[0][0],t[0][1]),t.forEach(function(t){n.path2D.bezierCurveTo(t[2],t[3],t[4],t[5],t[6],t[7])}),n.path2D.closePath()})):this.path2D=new Path2D(this.path),this.oldPath=this.path);var s=this.scaleX,r=this.scaleY;for(var a in this.fixed&&(0==s&&(s=1e-10),0==r&&(r=1e-10)),i.globalCompositeOperation=this.compositeOperation,i.globalAlpha=o,i.save(),i.translate(this.x,this.y),i.scale(s,r),i.rotate(this.rotation),this.color&&(i.fillStyle=this.color,i.fill(this.path2D)),i.save(),this.clip&&(i.clip(this.path2D),this.fixed&&(i.rotate(-this.rotation),i.scale(1/s,1/r),i.translate(-this.x,-this.y))),this.sprite)this.sprite[a].draw(i,e);i.restore(),this.borderColor&&(i.strokeStyle=this.borderColor,i.lineWidth=this.lineWidth,i.stroke(this.path2D)),i.restore()}},e}(S),F=function(t){function i(i){t.call(this,i)}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{x:void 0,y:void 0,width:void 0,height:void 0,borderColor:void 0,lineWidth:1,clear:!1,norm:function(t,i,e){return u(s(t),void 0===e.x&&void 0===e.y&&void 0===e.width&&void 0===e.height)}})},i.prototype.normalizeFullScreen=function(t){(void 0===this.x||this.norm)&&(this.x=t.visibleScreen.x),(void 0===this.y||this.norm)&&(this.y=t.visibleScreen.y),(void 0===this.width||this.norm)&&(this.width=t.visibleScreen.width),(void 0===this.height||this.norm)&&(this.height=t.visibleScreen.height)},i.prototype.resize=function(t,i){this.normalizeFullScreen(i)},i.prototype.draw=function(t,i){if(this.enabled)if(this.width||(this.width=i.width),this.height||(this.height=i.height),void 0===this.x&&(this.x=i.x),void 0===this.y&&(this.y=i.y),t.globalCompositeOperation=this.compositeOperation,t.globalAlpha=this.alpha*i.alpha,0===this.rotation)this.clear?t.clearRect(this.x,this.y,this.width,this.height):(t.fillStyle=this.color,t.fillRect(this.x,this.y,this.width,this.height)),this.borderColor&&(t.beginPath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.borderColor,t.rect(this.x,this.y,this.width,this.height),t.stroke());else{var e=this.width/2,n=this.height/2;t.save(),t.translate(this.x+e,this.y+n),t.rotate(this.rotation),this.clear?t.clearRect(-e,-n,this.width,this.height):(t.fillStyle=this.color,t.fillRect(-e,-n,this.width,this.height)),this.borderColor&&(t.beginPath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.borderColor,t.rect(-e,-n,this.width,this.height),t.stroke()),t.restore()}},i}(w),I=function(t){function i(i){var e=s(i.text),n=Array.isArray(e)?e:[].concat(e);t.call(this,Object.assign({},i,{class:E,count:n.length,text:function(t){return n[t]},enabled:function(t){return" "!==n[t]&&s(i.enabled,t)}}))}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i}(T),M=(e||i).imageDataRGBA,A=function(t){function i(i){t.call(this,i),this.currentGridSize=!1,this.currentRadiusPart=void 0}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{onCanvas:!1,radius:void 0,radiusPart:void 0})},i.prototype.normalizeFullScreen=function(i){this.norm&&this.onCanvas?(this.x=0,this.y=0,this.width=i.widthInPixel,this.height=i.heightInPixel):t.prototype.normalizeFullScreen.call(this,i)},i.prototype.resize=function(i,e){t.prototype.resize.call(this,i,e),this.radiusPart&&(this.radius=void 0)},i.prototype.additionalBlur=function(t,i,e){this.imageData=this.tctx.getImageData(0,0,t,i),M(this.imageData,0,0,t,i,e.radius),this.tctx.putImageData(this.imageData,0,0)},i.prototype.draw=function(i,e){if(this.enabled){void 0!==this.radius&&this.currentRadiusPart===this.radiusPart||(this.radius=Math.round((e.widthInPixel+e.heightInPixel)/2/this.radiusPart),this.currentRadiusPart=this.radiusPart);var n=Math.round(this.radius);if(n)if(this.onCanvas){void 0!==this.width&&void 0!==this.height||this.normalizeFullScreen(e);var o=Math.round(this.x),s=Math.round(this.y),r=Math.round(this.width),a=Math.round(this.height);this.imageData=i.getImageData(o,s,r,a),M(this.imageData,0,0,r-o,a-s,n),i.putImageData(this.imageData,o,s,0,0,r,a)}else e.radius=n,t.prototype.draw.call(this,i,e)}else t.prototype.draw.call(this,i,e)},i}(P),L=(e||i).imageDataRGBA,k=function(t){function i(i){t.call(this,i),this.currentGridSize=!1,this.currentRadiusPart=void 0}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{radius:void 0,radiusPart:void 0})},i.prototype.resize=function(i,e){t.prototype.resize.call(this,i,e),this.radiusPart&&(this.radius=void 0)},i.prototype.additionalBlur=function(t,i,e){e.radius&&(this.imageData=this.tctx.getImageData(0,0,t,i),L(this.imageData,0,0,t,i,e.radius),this.tctx.putImageData(this.imageData,0,0))},i.prototype.draw=function(i,e){this.enabled&&(void 0!==this.radius&&this.currentRadiusPart===this.radiusPart||(this.radius=Math.round((e.widthInPixel+e.heightInPixel)/2/this.radiusPart),this.currentRadiusPart=this.radiusPart),e.radius=Math.round(this.radius),t.prototype.draw.call(this,i,e))},i}(x),D=function(t){function i(i){t.call(this,i),void 0!==this.x&&void 0!==this.y&&this.width&&this.height&&this.lineWidth?this.init():this.centerX=void 0}return t&&(i.__proto__=t),(i.prototype=Object.create(t&&t.prototype)).constructor=i,i.prototype.getParameterList=function(){return Object.assign({},t.prototype.getParameterList.call(this),{count:40,moveX:0,moveY:0,moveZ:0,lineWidth:void 0,highScale:!0})},i.prototype.init=function(){this.centerX=this.width/2+this.x,this.centerY=this.height/2+this.y,this.scaleZ=Math.max(this.width,this.height)/2,this.starsX=[],this.starsY=[],this.starsZ=[],this.starsOldX=[],this.starsOldY=[],this.starsNewX=[],this.starsNewY=[],this.starsEnabled=[],this.starsLineWidth=[];for(var t=0;t<this.count;t++)this.starsX[t]=Math.random()*this.width-this.width/2,this.starsY[t]=Math.random()*this.height-this.height/2,this.starsZ[t]=Math.random()*this.scaleZ},i.prototype.moveStar=function(t,i,e){e&&(this.starsEnabled[t]=!0);for(var n=this.width/2,o=this.height/2,s=this.starsX[t]+this.moveX*i,r=this.starsY[t]+this.moveY*i,a=this.starsZ[t]+this.moveZ*i;s<-n;)s+=this.width,r=Math.random()*this.height-o,this.starsEnabled[t]=!1;for(;s>n;)s-=this.width,r=Math.random()*this.height-o,this.starsEnabled[t]=!1;for(;r<-o;)r+=this.height,s=Math.random()*this.width-n,this.starsEnabled[t]=!1;for(;r>o;)r-=this.height,s=Math.random()*this.width-n,this.starsEnabled[t]=!1;for(;a<=0;)a+=this.scaleZ,s=Math.random()*this.width-n,r=Math.random()*this.height-o,this.starsEnabled[t]=!1;for(;a>this.scaleZ;)a-=this.scaleZ,s=Math.random()*this.width-n,r=Math.random()*this.height-o,this.starsEnabled[t]=!1;var h=this.centerX+s/a*n,c=this.centerY+r/a*o;if(this.starsEnabled[t]=this.starsEnabled[t]&&h>=this.x&&c>=this.y&&h<this.x+this.width&&c<this.y+this.height,e)this.starsX[t]=s,this.starsY[t]=r,this.starsZ[t]=a,this.starsNewX[t]=h,this.starsNewY[t]=c;else{this.starsOldX[t]=h,this.starsOldY[t]=c;var u=4*(1-this.starsZ[t]/this.scaleZ);this.highScale||(u=Math.ceil(u)),this.starsLineWidth[t]=u}},i.prototype.animate=function(i){var e=t.prototype.animate.call(this,i);if(this.enabled&&void 0!==this.centerX)for(var n=this.count;n--;)this.moveStar(n,i/16,!0),this.starsEnabled[n]&&this.moveStar(n,-5,!1);return e},i.pro