!function t(e,i,s){function r(o,a){if(!i[o]){if(!e[o]){var h="function"==typeof require&&require;if(!a&&h)return h(o,!0);if(n)return n(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var l=i[o]={exports:{}};e[o][0].call(l.exports,function(t){var i=e[o][1][t];return r(i||t)},l,l.exports,t,e,i,s)}return i[o].exports}for(var n="function"==typeof require&&require,o=0;o0,this.isGrid=location.hash.indexOf("grid")>0,this.isOrbit=location.hash.indexOf("orbit")>0,this.debugHash="",this.isDebug?(this.isGrid=!0,this.isOrbit=!0,this.debugHash+="debug",this.dom.html.classList.add("is-debug")):(this.debugHash+=this.isGrid?"grid":"",this.debugHash+=this.isOrbit?"orbit":""),this.debugHash&&[].slice.call(document.querySelectorAll(".demo")).forEach(function(e,i,s){e.setAttribute("href",e.getAttribute("href")+"#"+t.debugHash)})}},{key:"setupTime",value:function(){this.timescale=1,this.clock=new THREE.Clock,this.deltaTimeSeconds=this.clock.getDelta()*this.timescale,this.deltaTimeMilliseconds=1e3*this.deltaTimeSeconds,this.deltaTimeNormal=this.deltaTimeMilliseconds/(1e3/60),this.elapsedMilliseconds=0}},{key:"setupScene",value:function(){this.scene=new THREE.Scene}},{key:"setupCamera",value:function(){this.camera=new THREE.PerspectiveCamera(100,0,1e-4,1e4),this.cameraBaseX=this.isGrid?-20:0,this.cameraBaseY=this.isGrid?15:0,this.cameraBaseZ=this.isGrid?20:30,this.camera.position.x=this.cameraBaseX,this.camera.position.y=this.cameraBaseY,this.camera.position.z=this.cameraBaseZ}},{key:"setupRenderer",value:function(){this.renderer=new THREE.WebGLRenderer({alpha:!0,antialias:!0}),this.dom.container.appendChild(this.renderer.domElement)}},{key:"setupControls",value:function(){this.isOrbit&&(this.controls=new THREE.OrbitControls(this.camera,this.renderer.domElement),this.controls.enableDamping=!0,this.controls.dampingFactor=.2,this.controls.enableKeys=!1,this.dom.timescaleWrap.style.visibility="visible")}},{key:"setupHelpers",value:function(){this.isGrid&&(this.gridOpacityMap=[.4,.2,.2,.2,.1,.2,.1,.1],this.gridHelper=new THREE.GridHelper(300,60,16777215,16777215),this.gridHelper.material.transparent=!0,this.gridHelper.material.opacity=this.gridOpacityMap[demoNum-1],this.scene.add(this.gridHelper),this.axisOpacityMap=[1,.6,.6,.6,.3,.6,.3,.3],this.axisHelper=new o(150,this.axisOpacityMap[demoNum-1]),this.scene.add(this.axisHelper),this.camera.lookAt(new THREE.Vector3))}},{key:"update",value:function(){this.deltaTimeSeconds=this.clock.getDelta(),this.diffTime&&(this.deltaTimeSeconds-=this.diffTime,this.diffTime=0),this.deltaTimeSeconds*=this.timescale,this.deltaTimeMilliseconds=1e3*this.deltaTimeSeconds,this.deltaTimeNormal=this.deltaTimeMilliseconds/(1e3/60),this.elapsedMilliseconds+=this.deltaTimeMilliseconds,this.system.update(),this.isOrbit&&this.controls.update()}},{key:"render",value:function(){this.renderer.render(this.scene,this.camera)}},{key:"listen",value:function(){var t=this;window.addEventListener("resize",function(e){return t.onResize(e)}),this.dom.replayButton.addEventListener("click",function(e){return t.onReplayButtonClick(e)}),this.dom.debugButton.addEventListener("click",function(e){return t.onDebugButtonClick(e)}),this.isOrbit&&(this.dom.timescaleRange.addEventListener("change",function(e){return t.onTimescaleRangeChange(e)}),this.dom.timescaleRange.addEventListener("mousemove",function(e){return t.onTimescaleRangeChange(e)})),this.hidden=null,this.visibilityChange=null,void 0!==document.hidden?(this.hidden="hidden",this.visibilityChange="visibilitychange"):void 0!==document.msHidden?(this.hidden="msHidden",this.visibilityChange="msvisibilitychange"):void 0!==document.webkitHidden&&(this.hidden="webkitHidden",this.visibilityChange="webkitvisibilitychange"),void 0===document.addEventListener||void 0===document.hidden||window.addEventListener(this.visibilityChange,function(e){return t.onVisibilityChange(e)})}},{key:"replay",value:function(){document.documentElement.classList.remove("completed"),document.documentElement.classList.add("loading"),this.camera.position.x=this.cameraBaseX,this.camera.position.y=this.cameraBaseY,this.camera.position.z=this.cameraBaseZ,this.timescale=1,this.deltaTimeSeconds=1/60,this.deltaTimeMilliseconds=1e3*this.deltaTimeSeconds,this.deltaTimeNormal=this.deltaTimeMilliseconds/(1e3/60),this.elapsedMilliseconds=0,this.blurTime=0,this.diffTime=0,this.focusTime=0,this.system.replay(),this.completed=!1,this.clock.start(),this.loop()}},{key:"complete",value:function(){var t=this;this.isOrbit||this.isGrid||(setTimeout(function(){t.clock.stop(),cancelAnimationFrame(t.raf)},600),this.completed=!0,this.dom.html.classList.remove("loading"),this.dom.html.classList.add("completed"))}},{key:"onResize",value:function(){this.width=window.innerWidth,this.height=window.innerHeight,this.dpr=window.devicePixelRatio>1?2:1,this.camera.aspect=this.width/this.height,this.camera.updateProjectionMatrix(),this.renderer.setPixelRatio(this.dpr),this.renderer.setSize(this.width,this.height)}},{key:"onReplayButtonClick",value:function(t){t.preventDefault(),this.replay()}},{key:"onDebugButtonClick",value:function(t){t.preventDefault();var e=window.location.href.split("#")[0];this.isDebug?(history?history.pushState("",document.title,window.location.pathname):location.hash="",location.href=e):location.href=e+"#debug",location.reload()}},{key:"onTimescaleRangeChange",value:function(t){this.timescale=parseFloat(this.dom.timescaleRange.value),this.dom.timescaleValue.innerHTML=this.timescale.toFixed(1)}},{key:"onVisibilityChange",value:function(t){document.hidden?this.blurTime=Date.now():(this.focusTime=Date.now(),this.blurTime&&(this.diffTime=(this.focusTime-this.blurTime)/1e3))}},{key:"loop",value:function(){var t=this;this.update(),this.render(),this.raf=window.requestAnimationFrame(function(){return t.loop()})}}]),t}();e.exports=a},{"./utils/axis":7,"./utils/calc":8,"./utils/ease":9}],5:[function(t,e,i){"use strict";var s=function(){function t(t,e){for(var i=0;i1&&(this.enterProgress=1,this.entering=!1);var e=this.ease.inOutExpo(this.enterProgress,0,1,1);this.particleGroup.scale.set(e,e,e)}!this.exiting&&this.loader.elapsedMilliseconds>this.duration&&(this.exiting=!0),this.exiting&&(this.exitProgress+=this.exitRate*this.loader.deltaTimeNormal,this.exitProgress>=1&&!this.loader.completed&&(this.exitProgress=1,this.loader.complete()))}},{key:"replay",value:function(){this.particleGroup.scale.set(1e-4,1e-4,1e-4);for(var t=this.particles.length;t--;)this.particles[t].reset();this.entering=!0,this.enterProgress=0,this.exiting=!1,this.exitProgress=0}}]),t}();e.exports=r},{}],7:[function(t,e,i){"use strict";var s=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2])||arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._val=e,this._rate=i,this._dir=s,this._flip=r,this._valBase=e,this._rateBase=i,this._dirBase=s,this._flipBase=r,this.trigger=!1,this.triggerTop=!1,this.triggerBot=!1}return s(t,[{key:"reset",value:function(){this._val=this._valBase,this._rate=this._rateBase,this._dir=this._dirBase,this._flip=this._flipBase,this.trigger=!1,this.triggerTop=!1,this.triggerBot=!1}},{key:"update",value:function(t){this.trigger=!1,this.triggerTop=!1,this.triggerBot=!1,this._dir?this._val<1?this._val+=this._rate*t:(this.trigger=!0,this.triggerTop=!0,this._flip?this._val=this._val-1:(this._val=1-(this._val-1),this._dir=!this._dir)):this._val>0?this._val-=this._rate*t:(this.trigger=!0,this.triggerBot=!0,this._flip?this._val=1+this._val:(this._val=-this._val,this._dir=!this._dir))}},{key:"val",value:function(t){return t?t(this._val,0,1,1):this._val}}]),t}();e.exports=r},{}]},{},[1]);