/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Owner: mark@famo.us * @license MPL 2.0 * @copyright Famous Industries, Inc. 2014 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Owner: david@famo.us * @license MPL 2.0 * @copyright Famous Industries, Inc. 2014 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * @license MPL 2.0 * @copyright Famous Industries, Inc. 2014 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Owner: mike@famo.us * @license MPL 2.0 * @copyright Famous Industries, Inc. 2014 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Owner: felix@famo.us * @license MPL 2.0 * @copyright Famous Industries, Inc. 2014 */ define("famous/core/Entity",["require","exports","module"],function(t,i,e){function s(t){return a[t]}function o(t,i){a[t]=i}function n(t){var i=a.length;return o(i,t),i}function r(t){o(t,null)}var a=[];e.exports={register:n,unregister:r,get:s,set:o}}),define("famous/core/Transform",["require","exports","module"],function(t,i,e){function s(t){return 2===t.length?t[0]*t[0]+t[1]*t[1]:t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function o(t){return Math.sqrt(s(t))}function n(t){return 0>t?-1:1}var r={};r.precision=1e-6,r.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],r.multiply4x4=function(t,i){return[t[0]*i[0]+t[4]*i[1]+t[8]*i[2]+t[12]*i[3],t[1]*i[0]+t[5]*i[1]+t[9]*i[2]+t[13]*i[3],t[2]*i[0]+t[6]*i[1]+t[10]*i[2]+t[14]*i[3],t[3]*i[0]+t[7]*i[1]+t[11]*i[2]+t[15]*i[3],t[0]*i[4]+t[4]*i[5]+t[8]*i[6]+t[12]*i[7],t[1]*i[4]+t[5]*i[5]+t[9]*i[6]+t[13]*i[7],t[2]*i[4]+t[6]*i[5]+t[10]*i[6]+t[14]*i[7],t[3]*i[4]+t[7]*i[5]+t[11]*i[6]+t[15]*i[7],t[0]*i[8]+t[4]*i[9]+t[8]*i[10]+t[12]*i[11],t[1]*i[8]+t[5]*i[9]+t[9]*i[10]+t[13]*i[11],t[2]*i[8]+t[6]*i[9]+t[10]*i[10]+t[14]*i[11],t[3]*i[8]+t[7]*i[9]+t[11]*i[10]+t[15]*i[11],t[0]*i[12]+t[4]*i[13]+t[8]*i[14]+t[12]*i[15],t[1]*i[12]+t[5]*i[13]+t[9]*i[14]+t[13]*i[15],t[2]*i[12]+t[6]*i[13]+t[10]*i[14]+t[14]*i[15],t[3]*i[12]+t[7]*i[13]+t[11]*i[14]+t[15]*i[15]]},r.multiply=function(t,i){return[t[0]*i[0]+t[4]*i[1]+t[8]*i[2],t[1]*i[0]+t[5]*i[1]+t[9]*i[2],t[2]*i[0]+t[6]*i[1]+t[10]*i[2],0,t[0]*i[4]+t[4]*i[5]+t[8]*i[6],t[1]*i[4]+t[5]*i[5]+t[9]*i[6],t[2]*i[4]+t[6]*i[5]+t[10]*i[6],0,t[0]*i[8]+t[4]*i[9]+t[8]*i[10],t[1]*i[8]+t[5]*i[9]+t[9]*i[10],t[2]*i[8]+t[6]*i[9]+t[10]*i[10],0,t[0]*i[12]+t[4]*i[13]+t[8]*i[14]+t[12],t[1]*i[12]+t[5]*i[13]+t[9]*i[14]+t[13],t[2]*i[12]+t[6]*i[13]+t[10]*i[14]+t[14],1]},r.thenMove=function(t,i){return i[2]||(i[2]=0),[t[0],t[1],t[2],0,t[4],t[5],t[6],0,t[8],t[9],t[10],0,t[12]+i[0],t[13]+i[1],t[14]+i[2],1]},r.moveThen=function(t,i){t[2]||(t[2]=0);var e=t[0]*i[0]+t[1]*i[4]+t[2]*i[8],s=t[0]*i[1]+t[1]*i[5]+t[2]*i[9],o=t[0]*i[2]+t[1]*i[6]+t[2]*i[10];return r.thenMove(i,[e,s,o])},r.translate=function(t,i,e){return void 0===e&&(e=0),[1,0,0,0,0,1,0,0,0,0,1,0,t,i,e,1]},r.thenScale=function(t,i){return[i[0]*t[0],i[1]*t[1],i[2]*t[2],0,i[0]*t[4],i[1]*t[5],i[2]*t[6],0,i[0]*t[8],i[1]*t[9],i[2]*t[10],0,i[0]*t[12],i[1]*t[13],i[2]*t[14],1]},r.scale=function(t,i,e){return void 0===e&&(e=1),[t,0,0,0,0,i,0,0,0,0,e,0,0,0,0,1]},r.rotateX=function(t){var i=Math.cos(t),e=Math.sin(t);return[1,0,0,0,0,i,e,0,0,-e,i,0,0,0,0,1]},r.rotateY=function(t){var i=Math.cos(t),e=Math.sin(t);return[i,0,-e,0,0,1,0,0,e,0,i,0,0,0,0,1]},r.rotateZ=function(t){var i=Math.cos(t),e=Math.sin(t);return[i,e,0,0,-e,i,0,0,0,0,1,0,0,0,0,1]},r.rotate=function(t,i,e){var s=Math.cos(t),o=Math.sin(t),n=Math.cos(i),r=Math.sin(i),a=Math.cos(e),h=Math.sin(e),u=[n*a,s*h+o*r*a,o*h-s*r*a,0,-n*h,s*a-o*r*h,o*a+s*r*h,0,r,-o*n,s*n,0,0,0,0,1];return u},r.rotateAxis=function(t,i){var e=Math.sin(i),s=Math.cos(i),o=1-s,n=t[0]*t[0]*o,r=t[0]*t[1]*o,a=t[0]*t[2]*o,h=t[1]*t[1]*o,u=t[1]*t[2]*o,c=t[2]*t[2]*o,p=t[0]*e,l=t[1]*e,f=t[2]*e,d=[n+s,r+f,a-l,0,r-f,h+s,u+p,0,a+l,u-p,c+s,0,0,0,0,1];return d},r.aboutOrigin=function(t,i){var e=t[0]-(t[0]*i[0]+t[1]*i[4]+t[2]*i[8]),s=t[1]-(t[0]*i[1]+t[1]*i[5]+t[2]*i[9]),o=t[2]-(t[0]*i[2]+t[1]*i[6]+t[2]*i[10]);return r.thenMove(i,[e,s,o])},r.skew=function(t,i,e){return[1,0,0,0,Math.tan(e),1,0,0,Math.tan(i),Math.tan(t),1,0,0,0,0,1]},r.skewX=function(t){return[1,0,0,0,Math.tan(t),1,0,0,0,0,1,0,0,0,0,1]},r.skewY=function(t){return[1,Math.tan(t),0,0,0,1,0,0,0,0,1,0,0,0,0,1]},r.perspective=function(t){return[1,0,0,0,0,1,0,0,0,0,1,-1/t,0,0,0,1]},r.getTranslate=function(t){return[t[12],t[13],t[14]]},r.inverse=function(t){var i=t[5]*t[10]-t[6]*t[9],e=t[4]*t[10]-t[6]*t[8],s=t[4]*t[9]-t[5]*t[8],o=t[1]*t[10]-t[2]*t[9],n=t[0]*t[10]-t[2]*t[8],r=t[0]*t[9]-t[1]*t[8],a=t[1]*t[6]-t[2]*t[5],h=t[0]*t[6]-t[2]*t[4],u=t[0]*t[5]-t[1]*t[4],c=t[0]*i-t[1]*e+t[2]*s,p=1/c,l=[p*i,-p*o,p*a,0,-p*e,p*n,-p*h,0,p*s,-p*r,p*u,0,0,0,0,1];return l[12]=-t[12]*l[0]-t[13]*l[4]-t[14]*l[8],l[13]=-t[12]*l[1]-t[13]*l[5]-t[14]*l[9],l[14]=-t[12]*l[2]-t[13]*l[6]-t[14]*l[10],l},r.transpose=function(t){return[t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]]},r.interpret=function(t){var i=[t[0],t[1],t[2]],e=n(i[0]),a=o(i),h=[i[0]+e*a,i[1],i[2]],u=2/s(h);if(u>=1/0)return{translate:r.getTranslate(t),rotate:[0,0,0],scale:[0,0,0],skew:[0,0,0]};var c=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];c[0]=1-u*h[0]*h[0],c[5]=1-u*h[1]*h[1],c[10]=1-u*h[2]*h[2],c[1]=-u*h[0]*h[1],c[2]=-u*h[0]*h[2],c[6]=-u*h[1]*h[2],c[4]=c[1],c[8]=c[2],c[9]=c[6];var p=r.multiply(c,t),l=[p[5],p[6]],f=n(l[0]),d=o(l),m=[l[0]+f*d,l[1]],y=2/s(m),_=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];_[5]=1-y*m[0]*m[0],_[10]=1-y*m[1]*m[1],_[6]=-y*m[0]*m[1],_[9]=_[6];var g=r.multiply(_,c),v=r.multiply(g,t),O=r.scale(v[0]<0?-1:1,v[5]<0?-1:1,v[10]<0?-1:1);v=r.multiply(v,O),g=r.multiply(O,g);var T={};return T.translate=r.getTranslate(t),T.rotate=[Math.atan2(-g[6],g[10]),Math.asin(g[2]),Math.atan2(-g[1],g[0])],T.rotate[0]||(T.rotate[0]=0,T.rotate[2]=Math.atan2(g[4],g[5])),T.scale=[v[0],v[5],v[10]],T.skew=[Math.atan2(v[9],T.scale[2]),Math.atan2(v[8],T.scale[2]),Math.atan2(v[4],T.scale[0])],Math.abs(T.rotate[0])+Math.abs(T.rotate[2])>1.5*Math.PI&&(T.rotate[1]=Math.PI-T.rotate[1],T.rotate[1]>Math.PI&&(T.rotate[1]-=2*Math.PI),T.rotate[1]<-Math.PI&&(T.rotate[1]+=2*Math.PI),T.rotate[0]<0?T.rotate[0]+=Math.PI:T.rotate[0]-=Math.PI,T.rotate[2]<0?T.rotate[2]+=Math.PI:T.rotate[2]-=Math.PI),T},r.average=function(t,i,e){e=void 0===e?.5:e;for(var s=r.interpret(t),o=r.interpret(i),n={translate:[0,0,0],rotate:[0,0,0],scale:[0,0,0],skew:[0,0,0]},a=0;3>a;a++)n.translate[a]=(1-e)*s.translate[a]+e*o.translate[a],n.rotate[a]=(1-e)*s.rotate[a]+e*o.rotate[a],n.scale[a]=(1-e)*s.scale[a]+e*o.scale[a],n.skew[a]=(1-e)*s.skew[a]+e*o.skew[a];return r.build(n)},r.build=function(t){var i=r.scale(t.scale[0],t.scale[1],t.scale[2]),e=r.skew(t.skew[0],t.skew[1],t.skew[2]),s=r.rotate(t.rotate[0],t.rotate[1],t.rotate[2]);return r.thenMove(r.multiply(r.multiply(s,e),i),t.translate)},r.equals=function(t,i){return!r.notEquals(t,i)},r.notEquals=function(t,i){return t===i?!1:!(t&&i)||t[12]!==i[12]||t[13]!==i[13]||t[14]!==i[14]||t[0]!==i[0]||t[1]!==i[1]||t[2]!==i[2]||t[4]!==i[4]||t[5]!==i[5]||t[6]!==i[6]||t[8]!==i[8]||t[9]!==i[9]||t[10]!==i[10]},r.normalizeRotation=function(t){var i=t.slice(0);for((i[0]===.5*Math.PI||i[0]===.5*-Math.PI)&&(i[0]=-i[0],i[1]=Math.PI-i[1],i[2]-=Math.PI),i[0]>.5*Math.PI&&(i[0]=i[0]-Math.PI,i[1]=Math.PI-i[1],i[2]-=Math.PI),i[0]<.5*-Math.PI&&(i[0]=i[0]+Math.PI,i[1]=-Math.PI-i[1],i[2]-=Math.PI);i[1]<-Math.PI;)i[1]+=2*Math.PI;for(;i[1]>=Math.PI;)i[1]-=2*Math.PI;for(;i[2]<-Math.PI;)i[2]+=2*Math.PI;for(;i[2]>=Math.PI;)i[2]-=2*Math.PI;return i},r.inFront=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,.001,1],r.behind=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,-.001,1],e.exports=r}),define("famous/core/SpecParser",["require","exports","module","./Transform"],function(t,i,e){function s(){this.result={}}function o(t,i){return[t[0]*i[0]+t[1]*i[4]+t[2]*i[8],t[0]*i[1]+t[1]*i[5]+t[2]*i[9],t[0]*i[2]+t[1]*i[6]+t[2]*i[10]]}var n=t("./Transform");s._instance=new s,s.parse=function(t,i){return s._instance.parse(t,i)},s.prototype.parse=function(t,i){return this.reset(),this._parseSpec(t,i,n.identity),this.result},s.prototype.reset=function(){this.result={}};var r=[0,0];s.prototype._parseSpec=function(t,i,e){var s,a,h,u,c,p,l;if("number"==typeof t){if(s=t,h=i.transform,p=i.align||i.origin,i.size&&p&&(p[0]||p[1])){var f=[p[0]*i.size[0],p[1]*i.size[1],0];h=n.thenMove(h,o(f,e))}this.result[s]={transform:h,opacity:i.opacity,origin:i.origin||r,align:i.align||i.origin||r,size:i.size}}else{if(!t)return;if(t instanceof Array)for(var d=0;de&&this.listeners[t].push(i),this},s.prototype.addListener=s.prototype.on,s.prototype.removeListener=function(t,i){var e=this.listeners[t].indexOf(i);return e>=0&&this.listeners[t].splice(e,1),this},s.prototype.bindThis=function(t){this._owner=t},e.exports=s}),define("famous/core/EventHandler",["require","exports","module","./EventEmitter"],function(t,i,e){function s(){o.apply(this,arguments),this.downstream=[],this.downstreamFn=[],this.upstream=[],this.upstreamListeners={}}var o=t("./EventEmitter");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.setInputHandler=function(t,i){t.trigger=i.trigger.bind(i),i.subscribe&&i.unsubscribe&&(t.subscribe=i.subscribe.bind(i),t.unsubscribe=i.unsubscribe.bind(i))},s.setOutputHandler=function(t,i){i instanceof s&&i.bindThis(t),t.pipe=i.pipe.bind(i),t.unpipe=i.unpipe.bind(i),t.on=i.on.bind(i),t.addListener=t.on,t.removeListener=i.removeListener.bind(i)},s.prototype.emit=function(t,i){o.prototype.emit.apply(this,arguments);var e=0;for(e=0;ee&&i.push(t),t instanceof Function?t("pipe",null):t.trigger&&t.trigger("pipe",null),t},s.prototype.unpipe=function(t){if(t.unsubscribe instanceof Function)return t.unsubscribe(this);var i=t instanceof Function?this.downstreamFn:this.downstream,e=i.indexOf(t);return e>=0?(i.splice(e,1),t instanceof Function?t("unpipe",null):t.trigger&&t.trigger("unpipe",null),t):!1},s.prototype.on=function(t){if(o.prototype.on.apply(this,arguments),!(t in this.upstreamListeners)){var i=this.trigger.bind(this,t);this.upstreamListeners[t]=i;for(var e=0;ei){this.upstream.push(t);for(var e in this.upstreamListeners)t.on(e,this.upstreamListeners[e])}return this},s.prototype.unsubscribe=function(t){var i=this.upstream.indexOf(t);if(i>=0){this.upstream.splice(i,1);for(var e in this.upstreamListeners)t.removeListener(e,this.upstreamListeners[e])}return this},e.exports=s}),define("famous/core/ElementAllocator",["require","exports","module"],function(t,i,e){function s(t){t||(t=document.createDocumentFragment()),this.container=t,this.detachedNodes={},this.nodeCount=0}s.prototype.migrate=function(t){var i=this.container;if(t!==i){if(i instanceof DocumentFragment)t.appendChild(i);else for(;i.hasChildNodes();)t.appendChild(i.removeChild(i.firstChild));this.container=t}},s.prototype.allocate=function(t){t=t.toLowerCase(),t in this.detachedNodes||(this.detachedNodes[t]=[]);var i,e=this.detachedNodes[t];return e.length>0?i=e.pop():(i=document.createElement(t),this.container.appendChild(i)),this.nodeCount++,i},s.prototype.deallocate=function(t){var i=t.nodeName.toLowerCase(),e=this.detachedNodes[i];e.push(t),this.nodeCount--},s.prototype.getNodeCount=function(){return this.nodeCount},e.exports=s}),define("famous/utilities/Utility",["require","exports","module"],function(t,i,e){var s={};s.Direction={X:0,Y:1,Z:2},s.after=function(t,i){var e=t;return function(){e--,0===e&&i.apply(this,arguments)}},s.loadURL=function(t,i){var e=new XMLHttpRequest;e.onreadystatechange=function(){4===this.readyState&&i&&i(this.responseText)},e.open("GET",t),e.send()},s.createDocumentFragmentFromHTML=function(t){var i=document.createElement("div");i.innerHTML=t;for(var e=document.createDocumentFragment();i.hasChildNodes();)e.appendChild(i.firstChild);return e},e.exports=s}),define("famous/transitions/MultipleTransition",["require","exports","module","famous/utilities/Utility"],function(t,i,e){function s(t){this.method=t,this._instances=[],this.state=[]}var o=t("famous/utilities/Utility");s.SUPPORTS_MULTIPLE=!0,s.prototype.get=function(){for(var t=0;t=t?2*t*t:-2*t*t+4*t-1},easeOutBounce:function(t){return t*(3-2*t)},spring:function(t){return(1-t)*Math.sin(6*Math.PI*t)+t}},s.SUPPORTS_MULTIPLE=!0,s.DEFAULT_OPTIONS={curve:s.Curves.linear,duration:500,speed:0};var u={};s.registerCurve=function(t,i){return u[t]?!1:(u[t]=i,!0)},s.unregisterCurve=function(t){return u[t]?(delete u[t],!0):!1},s.getCurve=function(t){var i=u[t];if(void 0!==i)return i;throw Error("curve not registered")},s.getCurves=function(){return u},s.prototype.setOptions=function(t){void 0!==t.curve&&(this.options.curve=t.curve),void 0!==t.duration&&(this.options.duration=t.duration),void 0!==t.speed&&(this.options.speed=t.speed)},s.prototype.set=function(t,i,e){if(!i)return this.reset(t),void(e&&e());if(this._startValue=n(this.get()),i=r(i,this.options),i.speed){var s=this._startValue;if(s instanceof Object){var o=0;for(var a in s)o+=(t[a]-s[a])*(t[a]-s[a]);i.duration=Math.sqrt(o)/i.speed}else i.duration=Math.abs(t-s)/i.speed}this._startTime=Date.now(),this._endValue=n(t),this._startVelocity=n(i.velocity),this._duration=i.duration,this._curve=i.curve,this._active=!0,this._callback=e},s.prototype.reset=function(t,i){if(this._callback){var e=this._callback;this._callback=void 0,e()}this.state=n(t),this.velocity=n(i),this._startTime=0,this._duration=0,this._updateTime=0,this._startValue=this.state,this._startVelocity=this.velocity,this._endValue=this.state,this._active=!1},s.prototype.getVelocity=function(){return this.velocity},s.prototype.get=function(t){return this.update(t),this.state},s.prototype.update=function(t){if(this._active){if(t||(t=Date.now()),!(this._updateTime>=t)){this._updateTime=t;var i=t-this._startTime;if(i>=this._duration)this.state=this._endValue,this.velocity=a(this.state,this._startValue,this._curve,this._duration,1),this._active=!1;else if(0>i)this.state=this._startValue,this.velocity=this._startVelocity;else{var e=i/this._duration;this.state=h(this._startValue,this._endValue,this._curve(e)),this.velocity=a(this.state,this._startValue,this._curve,this._duration,e)}}}else if(this._callback){var s=this._callback;this._callback=void 0,s()}},s.prototype.isActive=function(){return this._active},s.prototype.halt=function(){this.reset(this.get())},s.registerCurve("linear",s.Curves.linear),s.registerCurve("easeIn",s.Curves.easeIn),s.registerCurve("easeOut",s.Curves.easeOut),s.registerCurve("easeInOut",s.Curves.easeInOut),s.registerCurve("easeOutBounce",s.Curves.easeOutBounce),s.registerCurve("spring",s.Curves.spring),s.customCurve=function(t,i){return t=t||0,i=i||0,function(e){return t*e+(-2*t-i+3)*e*e+(t+i-2)*e*e*e}},e.exports=s}),define("famous/transitions/Transitionable",["require","exports","module","./MultipleTransition","./TweenTransition"],function(t,i,e){function s(t){this.currentAction=null,this.actionQueue=[],this.callbackQueue=[],this.state=0,this.velocity=void 0,this._callback=void 0,this._engineInstance=null,this._currentMethod=null,this.set(t)}function o(){if(this._callback){var t=this._callback;this._callback=void 0,t()}if(this.actionQueue.length<=0)return void this.set(this.get());this.currentAction=this.actionQueue.shift(),this._callback=this.callbackQueue.shift();var i=null,e=this.currentAction[0],s=this.currentAction[1];s instanceof Object&&s.method?(i=s.method,"string"==typeof i&&(i=a[i])):i=r,this._currentMethod!==i&&(this._engineInstance=!(e instanceof Object)||i.SUPPORTS_MULTIPLE===!0||e.length<=i.SUPPORTS_MULTIPLE?new i:new n(i),this._currentMethod=i),this._engineInstance.reset(this.state,this.velocity),void 0!==this.velocity&&(s.velocity=this.velocity),this._engineInstance.set(e,s,o.bind(this))}var n=t("./MultipleTransition"),r=t("./TweenTransition"),a={};s.registerMethod=function(t,i){return t in a?!1:(a[t]=i,!0)},s.unregisterMethod=function(t){return t in a?(delete a[t],!0):!1},s.prototype.set=function(t,i,e){if(!i)return this.reset(t),e&&e(),this;var s=[t,i];return this.actionQueue.push(s),this.callbackQueue.push(e),this.currentAction||o.call(this),this},s.prototype.reset=function(t,i){this._currentMethod=null,this._engineInstance=null,this._callback=void 0,this.state=t,this.velocity=i,this.currentAction=null,this.actionQueue=[],this.callbackQueue=[]},s.prototype.delay=function(t,i){this.set(this.get(),{duration:t,curve:function(){return 0}},i)},s.prototype.get=function(t){return this._engineInstance&&(this._engineInstance.getVelocity&&(this.velocity=this._engineInstance.getVelocity()),this.state=this._engineInstance.get(t)),this.state},s.prototype.isActive=function(){return!!this.currentAction},s.prototype.halt=function(){this.set(this.get())},e.exports=s}),define("famous/core/Context",["require","exports","module","./RenderNode","./EventHandler","./ElementAllocator","./Transform","famous/transitions/Transitionable"],function(t,i,e){function s(t){return[t.clientWidth,t.clientHeight]}function o(t){this.container=t,this._allocator=new a(t),this._node=new n,this._eventOutput=new r,this._size=s(this.container),this._perspectiveState=new u(0),this._perspective=void 0,this._nodeContext={allocator:this._allocator,transform:h.identity,opacity:1,origin:c,align:null,size:this._size},this._eventOutput.on("resize",function(){this.setSize(s(this.container))}.bind(this))}var n=t("./RenderNode"),r=t("./EventHandler"),a=t("./ElementAllocator"),h=t("./Transform"),u=t("famous/transitions/Transitionable"),c=[0,0];o.prototype.getAllocator=function(){return this._allocator},o.prototype.add=function(t){return this._node.add(t)},o.prototype.migrate=function(t){t!==this.container&&(this.container=t,this._allocator.migrate(t))},o.prototype.getSize=function(){return this._size},o.prototype.setSize=function(t){t||(t=s(this.container)),this._size[0]=t[0],this._size[1]=t[1]},o.prototype.update=function(t){t&&(t.transform&&(this._nodeContext.transform=t.transform),t.opacity&&(this._nodeContext.opacity=t.opacity),t.origin&&(this._nodeContext.origin=t.origin),t.align&&(this._nodeContext.align=t.align),t.size&&(this._nodeContext.size=t.size));var i=this._perspectiveState.get();i!==this._perspective&&(this.container.style.perspective=i?i.toFixed()+"px":"",this.container.style.webkitPerspective=i?i.toFixed():"",this._perspective=i),this._node.commit(this._nodeContext)},o.prototype.getPerspective=function(){return this._perspectiveState.get()},o.prototype.setPerspective=function(t,i,e){return this._perspectiveState.set(t,i,e)},o.prototype.emit=function(t,i){return this._eventOutput.emit(t,i)},o.prototype.on=function(t,i){return this._eventOutput.on(t,i)},o.prototype.removeListener=function(t,i){return this._eventOutput.removeListener(t,i)},o.prototype.pipe=function(t){return this._eventOutput.pipe(t)},o.prototype.unpipe=function(t){return this._eventOutput.unpipe(t)},e.exports=o}),define("famous/core/OptionsManager",["require","exports","module","./EventHandler"],function(t,i,e){function s(t){this._value=t,this.eventOutput=null}function o(){this.eventOutput=new n,this.eventOutput.bindThis(this),n.setOutputHandler(this,this.eventOutput)}var n=t("./EventHandler");s.patch=function(t){for(var i=new s(t),e=1;et-d)){var i=0;for(n=t-d,d=t,_.emit("prerender"),i=0;ie;e++)i+=t[e]<1e-6&&t[e]>-1e-6?"0,":t[e]+",";return i+=t[15]+")"}function c(t){return 100*t[0]+"% "+100*t[1]+"%"}function p(t,i){return t&&i?t[0]!==i[0]||t[1]!==i[1]:t!==i}var l=t("./Entity"),f=t("./EventHandler"),d=t("./Transform"),m=window.devicePixelRatio||1,y=void 0!==document.createElement("div").style.webkitTransform;s.prototype.elementType="div",s.prototype.elementClass="famous-surface",s.prototype.on=function(t,i){this._currTarget&&this._currTarget.addEventListener(t,this.eventForwarder),this.eventHandler.on(t,i)},s.prototype.removeListener=function(t,i){this.eventHandler.removeListener(t,i)},s.prototype.emit=function(t,i){i&&!i.origin&&(i.origin=this);var e=this.eventHandler.emit(t,i);return e&&i&&i.stopPropagation&&i.stopPropagation(),e},s.prototype.pipe=function(t){return this.eventHandler.pipe(t)},s.prototype.unpipe=function(t){return this.eventHandler.unpipe(t)},s.prototype.render=function(){return this.id},s.prototype.setProperties=function(t){for(var i in t)this.properties[i]=t[i];this._stylesDirty=!0},s.prototype.getProperties=function(){return this.properties},s.prototype.addClass=function(t){this.classList.indexOf(t)<0&&(this.classList.push(t),this._classesDirty=!0)},s.prototype.removeClass=function(t){var i=this.classList.indexOf(t);i>=0&&(this._dirtyClasses.push(this.classList.splice(i,1)[0]),this._classesDirty=!0)},s.prototype.setClasses=function(t){var i=0,e=[];for(i=0;i-1?function(t,i){t.style.zIndex=1e6*i[14]|0,t.style.transform=u(i)}:y?function(t,i){t.style.webkitTransform=u(i)}:function(t,i){t.style.transform=u(i)};var g=y?function(t,i){t.style.webkitTransformOrigin=c(i)}:function(t,i){t.style.transformOrigin=c(i)},v=y?function(t){t.style.webkitTransform="scale3d(0.0001,0.0001,1)",t.style.opacity=0}:function(t){t.style.transform="scale3d(0.0001,0.0001,1)",t.style.opacity=0};s.prototype.setup=function(t){var i=t.allocate(this.elementType);if(this.elementClass)if(this.elementClass instanceof Array)for(var e=0;e=1?"0.999999":s),p(this._origin,o)||d.notEquals(this._matrix,e)||this._sizeDirty){e||(e=d.identity),this._matrix=e;var l=e;o&&(this._origin||(this._origin=[0,0]),this._origin[0]=o[0],this._origin[1]=o[1],l=d.thenMove(e,[-this._size[0]*o[0],-this._size[1]*o[1],0]),g(i,o)),_(i,l)}this._sizeDirty&&(this._size&&(i.style.width=this.size&&this.size[0]===!0?"":this._size[0]+"px",i.style.height=this.size&&this.size[1]===!0?"":this._size[1]+"px"),this._sizeDirty=!1)},s.prototype.cleanup=function(t){var i=0,e=this._currTarget; this.eventHandler.emit("recall"),this.recall(e),e.style.display="none",e.style.width="",e.style.height="",this._size=null,h.call(this,e);var s=this.getClassList();for(r.call(this,e),i=0;ii||i>=this.array.length?null:this.array[i]},s.Backing.prototype.setValue=function(t,i){this.array[t-this.firstIndex]=i},s.Backing.prototype.reindex=function(t,i,e){if(this.array[0]){for(var s=0,o=this.firstIndex,n=e-i,r=this.firstNode;t-1>o;)r=r.getNext(),o++;var a=r;for(s=0;i>s;s++)r=r.getNext(),r&&(r._previousNode=a);var h=r?r.getNext():null;for(a._nextNode=null,r=a,s=0;e>s;s++)r=r.getNext();if(o+=e,r!==h&&(r._nextNode=h,h&&(h._previousNode=r)),h)for(r=h,o++;r&&o1e-7?r.call(h,this.mult(t/i)):o.call(h,t,0,0)},s.prototype.clone=function(){return new s(this)},s.prototype.isZero=function(){return!(this.x||this.y||this.z)},s.prototype.set=function(t){return t instanceof Array?n.call(this,t):t instanceof s?r.call(this,t):"number"==typeof t?a.call(this,t):void 0},s.prototype.setXYZ=function(){return o.apply(this,arguments)},s.prototype.set1D=function(t){return a.call(this,t)},s.prototype.put=function(t){r.call(t,h)},s.prototype.clear=function(){return o.call(this,0,0,0)},s.prototype.cap=function u(u){if(1/0===u)return r.call(h,this);var t=this.norm();return t>u?r.call(h,this.mult(u/t)):r.call(h,this)},s.prototype.project=function(t){return t.mult(this.dot(t))},s.prototype.reflectAcross=function(t){return t.normalize().put(t),r(h,this.sub(this.project(t).mult(2)))},s.prototype.get=function(){return[this.x,this.y,this.z]},s.prototype.get1D=function(){return this.x},e.exports=s}),define("famous/math/Matrix",["require","exports","module","./Vector"],function(t,i,e){function s(t){return this.values=t||[[1,0,0],[0,1,0],[0,0,1]],this}var o=t("./Vector"),n=new s,r=new o;s.prototype.get=function(){return this.values},s.prototype.set=function(t){this.values=t},s.prototype.vectorMultiply=function(t){var i=this.get(),e=t.x,s=t.y,o=t.z,n=i[0],a=i[1],h=i[2],u=n[0],c=n[1],p=n[2],l=a[0],f=a[1],d=a[2],m=h[0],y=h[1],_=h[2];return r.setXYZ(u*e+c*s+p*o,l*e+f*s+d*o,m*e+y*s+_*o)},s.prototype.multiply=function(t){for(var i=this.get(),e=[[]],s=0;3>s;s++){e[s]=[];for(var o=0;3>o;o++){for(var r=0,a=0;3>a;a++)r+=i[s][a]*t[a][o];e[s][o]=r}}return n.set(e)},s.prototype.transpose=function(){for(var t=[],i=this.get(),e=0;3>e;e++)for(var s=0;3>s;s++)t[e][s]=i[s][e];return n.set(t)},s.prototype.clone=function(){for(var t=this.get(),i=[],e=0;3>e;e++)i[e]=t[e].slice();return new s(i)},e.exports=s}),define("famous/math/Quaternion",["require","exports","module","./Matrix"],function(t,i,e){function s(t,i,e,s){return 1===arguments.length?this.set(t):(this.w=void 0!==t?t:1,this.x=void 0!==i?i:0,this.y=void 0!==e?e:0,this.z=void 0!==s?s:0),this}var o=t("./Matrix"),n=new s(1,0,0,0);s.prototype.add=function(t){return n.setWXYZ(this.w+t.w,this.x+t.x,this.y+t.y,this.z+t.z)},s.prototype.sub=function(t){return n.setWXYZ(this.w-t.w,this.x-t.x,this.y-t.y,this.z-t.z)},s.prototype.scalarDivide=function(t){return this.scalarMultiply(1/t)},s.prototype.scalarMultiply=function(t){return n.setWXYZ(this.w*t,this.x*t,this.y*t,this.z*t)},s.prototype.multiply=function(t){var i=this.x,e=this.y,s=this.z,o=this.w,r=t.x,a=t.y,h=t.z,u=t.w||0;return n.setWXYZ(o*u-i*r-e*a-s*h,i*u+r*o+a*s-e*h,e*u+a*o+i*h-r*s,s*u+h*o+r*e-i*a)};var r=new s(1,0,0,0);s.prototype.rotateVector=function(t){return r.set(this.conj()),n.set(this.multiply(t).multiply(r))},s.prototype.inverse=function(){return n.set(this.conj().scalarDivide(this.normSquared()))},s.prototype.negate=function(){return this.scalarMultiply(-1)},s.prototype.conj=function(){return n.setWXYZ(this.w,-this.x,-this.y,-this.z)},s.prototype.normalize=function(t){return t=void 0===t?1:t,this.scalarDivide(t*this.norm())},s.prototype.makeFromAngleAndAxis=function(t,i){var e=i.normalize(),s=.5*t,o=-Math.sin(s);return this.x=o*e.x,this.y=o*e.y,this.z=o*e.z,this.w=Math.cos(s),this},s.prototype.setWXYZ=function(t,i,e,s){return n.clear(),this.w=t,this.x=i,this.y=e,this.z=s,this},s.prototype.set=function(t){return t instanceof Array?(this.w=t[0],this.x=t[1],this.y=t[2],this.z=t[3]):(this.w=t.w,this.x=t.x,this.y=t.y,this.z=t.z),this!==n&&n.clear(),this},s.prototype.put=function(t){t.set(n)},s.prototype.clone=function(){return new s(this)},s.prototype.clear=function(){return this.w=1,this.x=0,this.y=0,this.z=0,this},s.prototype.isEqual=function(t){return t.w===this.w&&t.x===this.x&&t.y===this.y&&t.z===this.z},s.prototype.dot=function(t){return this.w*t.w+this.x*t.x+this.y*t.y+this.z*t.z},s.prototype.normSquared=function(){return this.dot(this)},s.prototype.norm=function(){return Math.sqrt(this.normSquared())},s.prototype.isZero=function(){return!(this.x||this.y||this.z)},s.prototype.getTransform=function(){var t=this.normalize(1),i=t.x,e=t.y,s=t.z,o=t.w;return[1-2*e*e-2*s*s,2*i*e-2*s*o,2*i*s+2*e*o,0,2*i*e+2*s*o,1-2*i*i-2*s*s,2*e*s-2*i*o,0,2*i*s-2*e*o,2*e*s+2*i*o,1-2*i*i-2*e*e,0,0,0,0,1]};var a=new o;s.prototype.getMatrix=function(){var t=this.normalize(1),i=t.x,e=t.y,s=t.z,o=t.w;return a.set([[1-2*e*e-2*s*s,2*i*e+2*s*o,2*i*s-2*e*o],[2*i*e-2*s*o,1-2*i*i-2*s*s,2*e*s+2*i*o],[2*i*s+2*e*o,2*e*s-2*i*o,1-2*i*i-2*e*e]])};var h=1e-5;s.prototype.slerp=function(t,i){var e,s,o,r,a;return s=this.dot(t),1-s>h?(e=Math.acos(s),o=Math.sin(e),r=Math.sin((1-i)*e)/o,a=Math.sin(i*e)/o):(r=1-i,a=i),n.set(this.scalarMultiply(r/a).add(t).multiply(a))},e.exports=s}),define("famous/math/Random",["require","exports","module"],function(t,i,e){function s(t,i){return t+n()*(i-t)}function o(t,i){return t+n()*(i-t+1)>>0}var n=Math.random,r={};r.integer=function(t,i,e){if(t=void 0!==t?t:0,i=void 0!==i?i:1,void 0!==e){for(var s=[],n=0;e>n;n++)s.push(o(t,i));return s}return o(t,i)},r.range=function(t,i,e){if(t=void 0!==t?t:0,i=void 0!==i?i:1,void 0!==e){for(var o=[],n=0;e>n;n++)o.push(s(t,i));return o}return s(t,i)},r.sign=function(t){return t=void 0!==t?t:.5,n()n-h){var u=new window.CustomEvent("click",{bubbles:!0,details:a});s[n]=i,i.target.dispatchEvent(u)}delete e[a.identifier]}}),window.addEventListener("click",function(t){var e=o();for(var n in s){var r=s[n];i>e-n?t instanceof window.MouseEvent&&t.target===r.target&&t.stopPropagation():delete s[n]}},!0)}}),define("famous/inputs/GenericSync",["require","exports","module","famous/core/EventHandler"],function(t,i,e){function s(t,i){this._eventInput=new n,this._eventOutput=new n,n.setInputHandler(this,this._eventInput),n.setOutputHandler(this,this._eventOutput),this._syncs={},t&&this.addSync(t),i&&this.setOptions(i)}function o(t,i){r[t]&&(this._syncs[t]=new r[t](i),this.pipeSync(t))}var n=t("famous/core/EventHandler");s.DIRECTION_X=0,s.DIRECTION_Y=1,s.DIRECTION_Z=2;var r={};s.register=function(t){for(var i in t){if(r[i]){if(r[i]===t[i])return;throw Error("this key is registered to a different sync class")}r[i]=t[i]}},s.prototype.setOptions=function(t){for(var i in this._syncs)this._syncs[i].setOptions(t)},s.prototype.pipeSync=function(t){var i=this._syncs[t];this._eventInput.pipe(i),i.pipe(this._eventOutput)},s.prototype.unpipeSync=function(t){var i=this._syncs[t];this._eventInput.unpipe(i),i.unpipe(this._eventOutput)},s.prototype.addSync=function(t){if(t instanceof Array)for(var i=0;iMath.abs(h)?h=0:a=0);var p,l,f=Math.max(r-e,u),d=a/f,m=h/f,y=this.options.scale;this.options.direction===s.DIRECTION_X?(l=y*a,p=y*d,this._position+=l):this.options.direction===s.DIRECTION_Y?(l=y*h,p=y*m,this._position+=l):(l=[y*a,y*h],p=[y*d,y*m],this._position[0]+=l[0],this._position[1]+=l[1]);var _=this._payload;_.delta=l,_.position=this._position,_.velocity=p,_.clientX=o,_.clientY=n,_.offsetX=t.offsetX,_.offsetY=t.offsetY,this._eventOutput.emit("update",_),this._prevCoord=[o,n],this._prevTime=r,this._move=!0}}function r(){this._down&&(this._eventOutput.emit("end",this._payload),this._prevCoord=void 0,this._prevTime=void 0,this._down=!1,this._move=!1)}function a(t){if(this._down&&this._move){var i=n.bind(this),e=function(t){r.call(this,t),document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}.bind(this,t);document.addEventListener("mousemove",i),document.addEventListener("mouseup",e)}}var h=t("famous/core/EventHandler");s.DEFAULT_OPTIONS={direction:void 0,rails:!1,scale:1,propogate:!0},s.DIRECTION_X=0,s.DIRECTION_Y=1;var u=8,c=Date.now;s.prototype.getOptions=function(){return this.options},s.prototype.setOptions=function(t){void 0!==t.direction&&(this.options.direction=t.direction),void 0!==t.rails&&(this.options.rails=t.rails),void 0!==t.scale&&(this.options.scale=t.scale),void 0!==t.propogate&&(this.options.propogate=t.propogate)},e.exports=s}),define("famous/inputs/TwoFingerSync",["require","exports","module","famous/core/EventHandler"],function(t,i,e){function s(){this._eventInput=new o,this._eventOutput=new o,o.setInputHandler(this,this._eventInput),o.setOutputHandler(this,this._eventOutput),this.touchAEnabled=!1,this.touchAId=0,this.posA=null,this.timestampA=0,this.touchBEnabled=!1,this.touchBId=0,this.posB=null,this.timestampB=0,this._eventInput.on("touchstart",this.handleStart.bind(this)),this._eventInput.on("touchmove",this.handleMove.bind(this)),this._eventInput.on("touchend",this.handleEnd.bind(this)),this._eventInput.on("touchcancel",this.handleEnd.bind(this))}var o=t("famous/core/EventHandler");s.calculateAngle=function(t,i){var e=i[0]-t[0],s=i[1]-t[1];return Math.atan2(s,e)},s.calculateDistance=function(t,i){var e=i[0]-t[0],s=i[1]-t[1];return Math.sqrt(e*e+s*s)},s.calculateCenter=function(t,i){return[(t[0]+i[0])/2,(t[1]+i[1])/2]};var n=Date.now;s.prototype.handleStart=function(t){for(var i=0;ithis.options.stallTime){this._position=void 0===this.options.direction?[0,0]:0,this._inProgress=!1;var t=Math.abs(this._prevVel)>=this.options.minimumEndSpeed?this._prevVel:0,i=this._payload;i.position=this._position,i.velocity=t,i.slip=!0,this._eventOutput.emit("end",i)}}function n(t){t.preventDefault(),this._inProgress||(this._inProgress=!0,y=this._payload,y.slip=!0,y.position=this._position,y.clientX=t.clientX,y.clientY=t.clientY,y.offsetX=t.offsetX,y.offsetY=t.offsetY,this._eventOutput.emit("start",y),this._loopBound||(a.on("prerender",o.bind(this)),this._loopBound=!0));var i=u(),e=this._prevTime||i,n=void 0!==t.wheelDeltaX?t.wheelDeltaX:-t.deltaX,r=void 0!==t.wheelDeltaY?t.wheelDeltaY:-t.deltaY;1===t.deltaMode&&(n*=this.options.lineHeight,r*=this.options.lineHeight),this.options.rails&&(Math.abs(n)>Math.abs(r)?r=0:n=0);var c,p,l=Math.max(i-e,h),f=n/l,d=r/l,m=this.options.scale;this.options.direction===s.DIRECTION_X?(p=m*n,c=m*f,this._position+=p):this.options.direction===s.DIRECTION_Y?(p=m*r,c=m*d,this._position+=p):(p=[m*n,m*r],c=[m*f,m*d],this._position[0]+=p[0],this._position[1]+=p[1]);var y=this._payload;y.delta=p,y.velocity=c,y.position=this._position,y.slip=!0,this._eventOutput.emit("update",y),this._prevTime=i,this._prevVel=c}var r=t("famous/core/EventHandler"),a=t("famous/core/Engine");s.DEFAULT_OPTIONS={direction:void 0,minimumEndSpeed:1/0,rails:!1,scale:1,stallTime:50,lineHeight:40},s.DIRECTION_X=0,s.DIRECTION_Y=1;var h=8,u=Date.now;s.prototype.getOptions=function(){return this.options},s.prototype.setOptions=function(t){void 0!==t.direction&&(this.options.direction=t.direction),void 0!==t.minimumEndSpeed&&(this.options.minimumEndSpeed=t.minimumEndSpeed),void 0!==t.rails&&(this.options.rails=t.rails),void 0!==t.scale&&(this.options.scale=t.scale),void 0!==t.stallTime&&(this.options.stallTime=t.stallTime)},e.exports=s}),define("famous/inputs/TouchTracker",["require","exports","module","famous/core/EventHandler"],function(t,i,e){function s(t,i,e){return{x:t.clientX,y:t.clientY,identifier:t.identifier,origin:i.origin,timestamp:c(),count:i.touches.length,history:e}}function o(t){for(var i=0;iMath.abs(h)?h=0:a=0);var c,p,l=Math.max(r-n,u),f=a/l,d=h/l,m=this.options.scale;this.options.direction===s.DIRECTION_X?(p=m*a,c=m*f,this._position+=p):this.options.direction===s.DIRECTION_Y?(p=m*h,c=m*d,this._position+=p):(p=[m*a,m*h],c=[m*f,m*d],this._position[0]+=p[0],this._position[1]+=p[1]);var y=this._payload;y.delta=p,y.velocity=c,y.position=this._position,y.clientX=t.x,y.clientY=t.y,y.count=t.count,y.touch=t.identifier,this._eventOutput.emit("update",y)}function r(t){this._payload.count=t.count,this._eventOutput.emit("end",this._payload)}var a=t("./TouchTracker"),h=t("famous/core/EventHandler");s.DEFAULT_OPTIONS={direction:void 0,rails:!1,scale:1},s.DIRECTION_X=0,s.DIRECTION_Y=1;var u=8;s.prototype.setOptions=function(t){void 0!==t.direction&&(this.options.direction=t.direction),void 0!==t.rails&&(this.options.rails=t.rails),void 0!==t.scale&&(this.options.scale=t.scale)},s.prototype.getOptions=function(){return this.options},e.exports=s}),define("famous/modifiers/Draggable",["require","exports","module","famous/core/Transform","famous/transitions/Transitionable","famous/core/EventHandler","famous/math/Utilities","famous/inputs/GenericSync","famous/inputs/MouseSync","famous/inputs/TouchSync"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),t&&this.setOptions(t),this._positionState=new c([0,0]),this._differential=[0,0],this._active=!0,this.sync=new f(["mouse","touch"],{scale:this.options.scale}),this.eventOutput=new p,p.setInputHandler(this,this.sync),p.setOutputHandler(this,this.eventOutput),h.call(this)}function o(t){var i=this.options,e=i.projection,s=i.snapX,o=i.snapY,n=e&y.x?t[0]:0,r=e&y.y?t[1]:0;return s>0&&(n-=n%s),o>0&&(r-=r%o),[n,r]}function n(){this._active&&(this._positionState.isActive()&&this._positionState.halt(),this.eventOutput.emit("start",{position:this.getPosition()}))}function r(t){if(this._active){var i=this.options;this._differential=t.position;var e=o.call(this,this._differential);this._differential[0]-=e[0],this._differential[1]-=e[1];var s=this.getPosition();if(s[0]+=e[0],s[1]+=e[1],i.xRange){var n=[i.xRange[0]+.5*i.snapX,i.xRange[1]-.5*i.snapX];s[0]=_(s[0],n)}if(i.yRange){var r=[i.yRange[0]+.5*i.snapY,i.yRange[1]-.5*i.snapY];s[1]=_(s[1],r)}this.eventOutput.emit("update",{position:s})}}function a(){this._active&&this.eventOutput.emit("end",{position:this.getPosition()})}function h(){this.sync.on("start",n.bind(this)),this.sync.on("update",r.bind(this)),this.sync.on("end",a.bind(this))}var u=t("famous/core/Transform"),c=t("famous/transitions/Transitionable"),p=t("famous/core/EventHandler"),l=t("famous/math/Utilities"),f=t("famous/inputs/GenericSync"),d=t("famous/inputs/MouseSync"),m=t("famous/inputs/TouchSync");f.register({mouse:d,touch:m});var y={x:1,y:2};s.DIRECTION_X=y.x,s.DIRECTION_Y=y.y;var _=l.clamp;s.DEFAULT_OPTIONS={projection:y.x|y.y,scale:1,xRange:null,yRange:null,snapX:0,snapY:0,transition:{duration:0}},s.prototype.setOptions=function(t){var i=this.options;if(void 0!==t.projection){var e=t.projection;this.options.projection=0,["x","y"].forEach(function(t){-1!==e.indexOf(t)&&(i.projection|=y[t])})}void 0!==t.scale&&(i.scale=t.scale,this.sync.setOptions({scale:t.scale})),void 0!==t.xRange&&(i.xRange=t.xRange),void 0!==t.yRange&&(i.yRange=t.yRange),void 0!==t.snapX&&(i.snapX=t.snapX),void 0!==t.snapY&&(i.snapY=t.snapY)},s.prototype.getPosition=function(){return this._positionState.get()},s.prototype.setRelativePosition=function(t,i,e){var s=this.getPosition(),o=[s[0]+t[0],s[1]+t[1]];this.setPosition(o,i,e)},s.prototype.setPosition=function(t,i,e){this._positionState.isActive()&&this._positionState.halt(),this._positionState.set(t,i,e)},s.prototype.activate=function(){this._active=!0},s.prototype.deactivate=function(){this._active=!1},s.prototype.toggle=function(){this._active=!this._active},s.prototype.modify=function(t){var i=this.getPosition();return{transform:u.translate(i[0],i[1]),target:t}},e.exports=s}),define("famous/modifiers/Fader",["require","exports","module","famous/transitions/Transitionable","famous/core/OptionsManager"],function(t,i,e){function s(t,i){this.options=Object.create(s.DEFAULT_OPTIONS),this._optionsManager=new n(this.options),t&&this.setOptions(t),i||(i=0),this.transitionHelper=new o(i)}var o=t("famous/transitions/Transitionable"),n=t("famous/core/OptionsManager");s.DEFAULT_OPTIONS={cull:!1,transition:!0,pulseInTransition:!0,pulseOutTransition:!0},s.prototype.setOptions=function(t){return this._optionsManager.setOptions(t)},s.prototype.show=function(t,i){t=t||this.options.transition,this.set(1,t,i)},s.prototype.hide=function(t,i){t=t||this.options.transition,this.set(0,t,i)},s.prototype.set=function(t,i,e){this.halt(),this.transitionHelper.set(t,i,e)},s.prototype.halt=function(){this.transitionHelper.halt()},s.prototype.isVisible=function(){return this.transitionHelper.get()>0},s.prototype.modify=function(t){var i=this.transitionHelper.get();return this.options.cull&&!i?void 0:{opacity:i,target:t}},e.exports=s}),define("famous/modifiers/ModifierChain",["require","exports","module"],function(t,i,e){function s(){this._chain=[],arguments.length&&this.addModifier.apply(this,arguments)}s.prototype.addModifier=function(){Array.prototype.push.apply(this._chain,arguments)},s.prototype.removeModifier=function(t){var i=this._chain.indexOf(t);0>i||this._chain.splice(i,1)},s.prototype.modify=function(t){for(var i=this._chain,e=t,s=0;s-1;t--)a.call(this,t)}function u(t,i){var e=this._agents[this._constraints[t]];return e.agent.applyConstraint(e.targets,e.source,i)}function c(t){for(var i=0;i-1;e--)u.call(this,e,t);i++}}function p(t,i){t.integrateVelocity(i)}function l(t,i){t.integrateAngularMomentum(i),t.updateAngularVelocity()}function f(t,i){t.integrateOrientation(i)}function d(t,i){t.integratePosition(i),t.emit("update",t)}function m(t){h.call(this,t),this.forEach(p,t),this.forEachBody(l,t),c.call(this,t),this.forEachBody(f,t),this.forEach(d,t)}function y(){var t=0,i=0;return this.forEach(function(e){i=e.getEnergy(),t+=i,i-1;i--)t+=this._forces[i].getEnergy()||0;return t}function g(){for(var t=0,i=this._constraints.length-1;i>-1;i--)t+=this._constraints[i].getEnergy()||0;return t}var v=t("famous/core/EventHandler"),O=17,T=1e3/120,S=17;s.DEFAULT_OPTIONS={constraintSteps:1,sleepTolerance:1e-7};var w=function(){return Date.now}();s.prototype.setOptions=function(t){for(var i in t)this.options[i]&&(this.options[i]=t[i])},s.prototype.addBody=function(t){return t._engine=this,t.isBody?(this._bodies.push(t),this._hasBodies=!0):this._particles.push(t),t},s.prototype.removeBody=function(t){var i=t.isBody?this._bodies:this._particles,e=i.indexOf(t);if(e>-1){for(var s=0;s-1&&s.splice(o,1)}},s.prototype.detachAll=function(){this._agents={},this._forces=[],this._constraints=[],this._currAgentId=0},s.prototype.getAgent=function(t){return r.call(this,t).agent},s.prototype.getParticles=function(){return this._particles},s.prototype.getBodies=function(){return this._bodies},s.prototype.getParticlesAndBodies=function(){return this.getParticles().concat(this.getBodies())},s.prototype.forEachParticle=function(t,i){for(var e=this.getParticles(),s=0,o=e.length;o>s;s++)t.call(this,e[s],i)},s.prototype.forEachBody=function(t,i){if(this._hasBodies)for(var e=this.getBodies(),s=0,o=e.length;o>s;s++)t.call(this,e[s],i)},s.prototype.forEach=function(t,i){this.forEachParticle(t,i),this.forEachBody(t,i)},s.prototype.getEnergy=function(){return y.call(this)+_.call(this)+g.call(this)},s.prototype.step=function(){var t=w(),i=t-this._prevTime;this._prevTime=t,T>i||(i>S&&(i=S),m.call(this,O))},s.prototype.isSleeping=function(){return this._isSleeping},s.prototype.sleep=function(){this.emit("end",this),this._isSleeping=!0},s.prototype.wake=function(){this._prevTime=w(),this.emit("start",this),this._isSleeping=!1},s.prototype.emit=function(t,i){null!==this._eventHandler&&this._eventHandler.emit(t,i)},s.prototype.on=function(t,i){null===this._eventHandler&&(this._eventHandler=new v),this._eventHandler.on(t,i)},e.exports=s}),define("famous/surfaces/CanvasSurface",["require","exports","module","famous/core/Surface"],function(t,i,e){function s(t){t&&t.canvasSize&&(this._canvasSize=t.canvasSize),o.apply(this,arguments),this._canvasSize||(this._canvasSize=this.getSize()),this._backBuffer=document.createElement("canvas"),this._canvasSize&&(this._backBuffer.width=this._canvasSize[0],this._backBuffer.height=this._canvasSize[1]),this._contextId=void 0}var o=t("famous/core/Surface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.elementType="canvas",s.prototype.elementClass="famous-surface",s.prototype.setContent=function(){},s.prototype.deploy=function(t){this._canvasSize&&(t.width=this._canvasSize[0],t.height=this._canvasSize[1]),"2d"===this._contextId&&(t.getContext(this._contextId).drawImage(this._backBuffer,0,0),this._backBuffer.width=0,this._backBuffer.height=0)},s.prototype.recall=function(t){this.getSize();this._backBuffer.width=t.width,this._backBuffer.height=t.height,"2d"===this._contextId&&(this._backBuffer.getContext(this._contextId).drawImage(t,0,0),t.width=0,t.height=0)},s.prototype.getContext=function(t){return this._contextId=t,this._currTarget?this._currTarget.getContext(t):this._backBuffer.getContext(t)},s.prototype.setSize=function(t,i){o.prototype.setSize.apply(this,arguments),i&&(this._canvasSize=[i[0],i[1]]),this._currTarget&&(this._currTarget.width=this._canvasSize[0],this._currTarget.height=this._canvasSize[1])},e.exports=s}),define("famous/surfaces/ContainerSurface",["require","exports","module","famous/core/Surface","famous/core/Context"],function(t,i,e){function s(t){o.call(this,t),this._container=document.createElement("div"),this._container.classList.add("famous-group"),this._container.classList.add("famous-container-group"),this._shouldRecalculateSize=!1,this.context=new n(this._container),this.setContent(this._container)}var o=t("famous/core/Surface"),n=t("famous/core/Context");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.elementType="div",s.prototype.elementClass="famous-surface",s.prototype.add=function(){return this.context.add.apply(this.context,arguments)},s.prototype.render=function(){return this._sizeDirty&&(this._shouldRecalculateSize=!0),o.prototype.render.apply(this,arguments)},s.prototype.deploy=function(){return this._shouldRecalculateSize=!0,o.prototype.deploy.apply(this,arguments)},s.prototype.commit=function(){var t=this._size?[this._size[0],this._size[1]]:null,i=o.prototype.commit.apply(this,arguments);return(this._shouldRecalculateSize||t&&(this._size[0]!==t[0]||this._size[1]!==t[1]))&&(this.context.setSize(),this._shouldRecalculateSize=!1),this.context.update(),i},e.exports=s}),define("famous/surfaces/FormContainerSurface",["require","exports","module","./ContainerSurface"],function(t,i,e){function s(t){t&&(this._method=t.method||""),o.apply(this,arguments)}var o=t("./ContainerSurface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.elementType="form",s.prototype.deploy=function(t){return this._method&&(t.method=this._method),o.prototype.deploy.apply(this,arguments)},e.exports=s}),define("famous/surfaces/ImageSurface",["require","exports","module","famous/core/Surface"],function(t,i,e){function s(){this._imageUrl=void 0,o.apply(this,arguments)}var o=t("famous/core/Surface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.elementType="img",s.prototype.elementClass="famous-surface",s.prototype.setContent=function(t){this._imageUrl=t,this._contentDirty=!0},s.prototype.deploy=function(t){t.src=this._imageUrl||""},s.prototype.recall=function(t){t.src=""},e.exports=s}),define("famous/surfaces/InputSurface",["require","exports","module","famous/core/Surface"],function(t,i,e){function s(t){this._placeholder=t.placeholder||"",this._value=t.value||"",this._type=t.type||"text",this._name=t.name||"",o.apply(this,arguments),this.on("click",this.focus.bind(this)),window.addEventListener("click",function(t){t.target!==this._currTarget&&this.blur()}.bind(this))}var o=t("famous/core/Surface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.elementType="input",s.prototype.elementClass="famous-surface",s.prototype.setPlaceholder=function(t){return this._placeholder=t,this._contentDirty=!0,this},s.prototype.focus=function(){return this._currTarget&&this._currTarget.focus(),this},s.prototype.blur=function(){return this._currTarget&&this._currTarget.blur(),this},s.prototype.setValue=function(t){return this._value=t,this._contentDirty=!0,this},s.prototype.setType=function(t){return this._type=t,this._contentDirty=!0,this},s.prototype.getValue=function(){return this._currTarget?this._currTarget.value:this._value},s.prototype.setName=function(t){return this._name=t,this._contentDirty=!0,this},s.prototype.getName=function(){return this._name},s.prototype.deploy=function(t){""!==this._placeholder&&(t.placeholder=this._placeholder),t.value=this._value,t.type=this._type,t.name=this._name},e.exports=s}),define("famous/surfaces/SubmitInputSurface",["require","exports","module","./InputSurface"],function(t,i,e){function s(t){o.apply(this,arguments),this._type="submit",t&&t.onClick&&this.setOnClick(t.onClick)}var o=t("./InputSurface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.setOnClick=function(t){this.onClick=t},s.prototype.deploy=function(t){this.onclick&&(t.onClick=this.onClick),o.prototype.deploy.apply(this,arguments)},e.exports=s}),define("famous/surfaces/TextareaSurface",["require","exports","module","famous/core/Surface"],function(t,i,e){function s(t){this._placeholder=t.placeholder||"",this._value=t.value||"",this._name=t.name||"",this._wrap=t.wrap||"",this._cols=t.cols||"",this._rows=t.rows||"",o.apply(this,arguments),this.on("click",this.focus.bind(this))}var o=t("famous/core/Surface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.prototype.elementType="textarea",s.prototype.elementClass="famous-surface",s.prototype.setPlaceholder=function(t){return this._placeholder=t,this._contentDirty=!0,this},s.prototype.focus=function(){return this._currTarget&&this._currTarget.focus(),this},s.prototype.blur=function(){return this._currTarget&&this._currTarget.blur(),this},s.prototype.setValue=function(t){return this._value=t,this._contentDirty=!0,this},s.prototype.getValue=function(){return this._currTarget?this._currTarget.value:this._value},s.prototype.setName=function(t){return this._name=t,this._contentDirty=!0,this},s.prototype.getName=function(){return this._name},s.prototype.setWrap=function(t){return this._wrap=t,this._contentDirty=!0,this},s.prototype.setColumns=function(t){return this._cols=t,this._contentDirty=!0,this},s.prototype.setRows=function(t){return this._rows=t,this._contentDirty=!0,this},s.prototype.deploy=function(t){""!==this._placeholder&&(t.placeholder=this._placeholder),""!==this._value&&(t.value=this._value),""!==this._name&&(t.name=this._name),""!==this._wrap&&(t.wrap=this._wrap),""!==this._cols&&(t.cols=this._cols),""!==this._rows&&(t.rows=this._rows)},e.exports=s}),define("famous/surfaces/VideoSurface",["require","exports","module","famous/core/Surface"],function(t,i,e){function s(t){this._videoUrl=void 0,this.options=Object.create(s.DEFAULT_OPTIONS),t&&this.setOptions(t),o.apply(this,arguments)}var o=t("famous/core/Surface");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS={autoplay:!1},s.prototype.elementType="video",s.prototype.elementClass="famous-surface",s.prototype.setOptions=function(t){for(var i in s.DEFAULT_OPTIONS)void 0!==t[i]&&(this.options[i]=t[i])},s.prototype.setContent=function(t){this._videoUrl=t,this._contentDirty=!0},s.prototype.deploy=function(t){t.src=this._videoUrl,t.autoplay=this.options.autoplay},s.prototype.recall=function(t){t.src=""},e.exports=s}),define("famous/transitions/CachedMap",["require","exports","module"],function(t,i,e){function s(t){this._map=t||null,this._cachedOutput=null,this._cachedInput=Number.NaN}s.create=function(t){var i=new s(t);return i.get.bind(i)},s.prototype.get=function(t){return t!==this._cachedInput&&(this._cachedInput=t,this._cachedOutput=this._map(t)),this._cachedOutput},e.exports=s}),define("famous/transitions/Easing",["require","exports","module"],function(t,i,e){var s={inQuad:function(t){return t*t},outQuad:function(t){return-(t-=1)*t+1},inOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},inCubic:function(t){return t*t*t},outCubic:function(t){return--t*t*t+1},inOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},inQuart:function(t){return t*t*t*t},outQuart:function(t){return-(--t*t*t*t-1)},inOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},inQuint:function(t){return t*t*t*t*t},outQuint:function(t){return--t*t*t*t*t+1},inOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},inSine:function(t){return-1*Math.cos(t*(Math.PI/2))+1},outSine:function(t){return Math.sin(t*(Math.PI/2))},inOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},inExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},outExpo:function(t){return 1===t?1:-Math.pow(2,-10*t)+1},inOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},inCirc:function(t){return-(Math.sqrt(1-t*t)-1)},outCirc:function(t){return Math.sqrt(1- --t*t)},inOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},inElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1===t?1:(e||(e=.3),i=e/(2*Math.PI)*Math.asin(1/s),-(s*Math.pow(2,10*(t-=1))*Math.sin(2*(t-i)*Math.PI/e)))},outElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1===t?1:(e||(e=.3),i=e/(2*Math.PI)*Math.asin(1/s),s*Math.pow(2,-10*t)*Math.sin(2*(t-i)*Math.PI/e)+1)},inOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:2===(t/=.5)?1:(e||(e=.3*1.5),i=e/(2*Math.PI)*Math.asin(1/s),1>t?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(t-i)*Math.PI/e)*.5+1)},inBack:function(t,i){return void 0===i&&(i=1.70158),t*t*((i+1)*t-i)},outBack:function(t,i){return void 0===i&&(i=1.70158),--t*t*((i+1)*t+i)+1},inOutBack:function(t,i){return void 0===i&&(i=1.70158),(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},inBounce:function(t){return 1-s.outBounce(1-t)},outBounce:function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},inOutBounce:function(t){return.5>t?.5*s.inBounce(2*t):.5*s.outBounce(2*t-1)+.5}};e.exports=s}),define("famous/physics/integrators/SymplecticEuler",["require","exports","module","famous/core/OptionsManager"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),this._optionsManager=new o(this.options),t&&this.setOptions(t)}var o=t("famous/core/OptionsManager");s.DEFAULT_OPTIONS={velocityCap:void 0,angularVelocityCap:void 0},s.prototype.setOptions=function(t){this._optionsManager.patch(t)},s.prototype.getOptions=function(){return this._optionsManager.value()},s.prototype.integrateVelocity=function(t,i){var e=t.velocity,s=t.inverseMass,o=t.force;o.isZero()||(e.add(o.mult(i*s)).put(e),o.clear())},s.prototype.integratePosition=function(t,i){var e=t.position,s=t.velocity;this.options.velocityCap&&s.cap(this.options.velocityCap).put(s),e.add(s.mult(i)).put(e)},s.prototype.integrateAngularMomentum=function(t,i){var e=t.angularMomentum,s=t.torque;s.isZero()||(this.options.angularVelocityCap&&s.cap(this.options.angularVelocityCap).put(s),e.add(s.mult(i)).put(e),s.clear())},s.prototype.integrateOrientation=function(t,i){var e=t.orientation,s=t.angularVelocity; s.isZero()||e.add(e.multiply(s).scalarMultiply(.5*i)).put(e)},e.exports=s}),define("famous/physics/bodies/Particle",["require","exports","module","famous/math/Vector","famous/core/Transform","famous/core/EventHandler","../integrators/SymplecticEuler"],function(t,i,e){function s(t){t=t||{},this.position=new n,this.velocity=new n,this.force=new n;var i=s.DEFAULT_OPTIONS;this.setPosition(t.position||i.position),this.setVelocity(t.velocity||i.velocity),this.force.set(t.force||[0,0,0]),this.mass=void 0!==t.mass?t.mass:i.mass,this.axis=void 0!==t.axis?t.axis:i.axis,this.inverseMass=1/this.mass,this._isSleeping=!1,this._engine=null,this._eventOutput=null,this._positionGetter=null,this.transform=r.identity.slice(),this._spec={transform:this.transform,target:null}}function o(){this._eventOutput=new a,this._eventOutput.bindThis(this),a.setOutputHandler(this,this._eventOutput)}var n=t("famous/math/Vector"),r=t("famous/core/Transform"),a=t("famous/core/EventHandler"),h=t("../integrators/SymplecticEuler");s.DEFAULT_OPTIONS={position:[0,0,0],velocity:[0,0,0],mass:1,axis:void 0},s.SLEEP_TOLERANCE=1e-7,s.AXES={X:0,Y:1,Z:2},s.INTEGRATOR=new h;var u={start:"start",update:"update",end:"end"},c=function(){return Date.now}();s.prototype.sleep=function(){this._isSleeping||(this.emit(u.end,this),this._isSleeping=!0)},s.prototype.wake=function(){this._isSleeping&&(this.emit(u.start,this),this._isSleeping=!1,this._prevTime=c())},s.prototype.isBody=!1,s.prototype.setPosition=function(t){this.position.set(t)},s.prototype.setPosition1D=function(t){this.position.x=t},s.prototype.getPosition=function(){return this._positionGetter instanceof Function&&this.setPosition(this._positionGetter()),this._engine.step(),this.position.get()},s.prototype.getPosition1D=function(){return this._engine.step(),this.position.x},s.prototype.positionFrom=function(t){this._positionGetter=t},s.prototype.setVelocity=function(t){this.velocity.set(t),this.wake()},s.prototype.setVelocity1D=function(t){this.velocity.x=t,this.wake()},s.prototype.getVelocity=function(){return this.velocity.get()},s.prototype.getVelocity1D=function(){return this.velocity.x},s.prototype.setMass=function(t){this.mass=t,this.inverseMass=1/t},s.prototype.getMass=function(){return this.mass},s.prototype.reset=function(t,i){this.setPosition(t||[0,0,0]),this.setVelocity(i||[0,0,0])},s.prototype.applyForce=function(t){t.isZero()||(this.force.add(t).put(this.force),this.wake())},s.prototype.applyImpulse=function(t){if(!t.isZero()){var i=this.velocity;i.add(t.mult(this.inverseMass)).put(i)}},s.prototype.integrateVelocity=function(t){s.INTEGRATOR.integrateVelocity(this,t)},s.prototype.integratePosition=function(t){s.INTEGRATOR.integratePosition(this,t)},s.prototype._integrate=function(t){this.integrateVelocity(t),this.integratePosition(t)},s.prototype.getEnergy=function(){return.5*this.mass*this.velocity.normSquared()},s.prototype.getTransform=function(){this._engine.step();var t=this.position,i=this.axis,e=this.transform;return void 0!==i&&(i&~s.AXES.X&&(t.x=0),i&~s.AXES.Y&&(t.y=0),i&~s.AXES.Z&&(t.z=0)),e[12]=t.x,e[13]=t.y,e[14]=t.z,e},s.prototype.modify=function(t){var i=this._spec;return i.transform=this.getTransform(),i.target=t,i},s.prototype.emit=function(t,i){this._eventOutput&&this._eventOutput.emit(t,i)},s.prototype.on=function(){return o.call(this),this.on.apply(this,arguments)},s.prototype.removeListener=function(){return o.call(this),this.removeListener.apply(this,arguments)},s.prototype.pipe=function(){return o.call(this),this.pipe.apply(this,arguments)},s.prototype.unpipe=function(){return o.call(this),this.unpipe.apply(this,arguments)},e.exports=s}),define("famous/physics/constraints/Constraint",["require","exports","module","famous/core/EventHandler"],function(t,i,e){function s(){this.options=this.options||{},this._energy=0,this._eventOutput=null}function o(){this._eventOutput=new n,this._eventOutput.bindThis(this),n.setOutputHandler(this,this._eventOutput)}var n=t("famous/core/EventHandler");s.prototype.setOptions=function(t){for(var i in t)this.options[i]=t[i]},s.prototype.applyConstraint=function(){},s.prototype.getEnergy=function(){return this._energy},s.prototype.setEnergy=function(t){this._energy=t},s.prototype.on=function(){return o.call(this),this.on.apply(this,arguments)},s.prototype.addListener=function(){return o.call(this),this.addListener.apply(this,arguments)},s.prototype.pipe=function(){return o.call(this),this.pipe.apply(this,arguments)},s.prototype.removeListener=function(){return this.removeListener.apply(this,arguments)},s.prototype.unpipe=function(){return this.unpipe.apply(this,arguments)},e.exports=s}),define("famous/physics/constraints/Snap",["require","exports","module","./Constraint","famous/math/Vector"],function(t,i,e){function s(t){this.options=Object.create(this.constructor.DEFAULT_OPTIONS),t&&this.setOptions(t),this.pDiff=new r,this.vDiff=new r,this.impulse1=new r,this.impulse2=new r,n.call(this)}function o(t,i,e){return Math.abs(t.dot(i)/e)}var n=t("./Constraint"),r=t("famous/math/Vector");s.prototype=Object.create(n.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS={period:300,dampingRatio:.1,length:0,anchor:void 0};var a=Math.PI;s.prototype.setOptions=function(t){void 0!==t.anchor&&(t.anchor instanceof r&&(this.options.anchor=t.anchor),t.anchor.position instanceof r&&(this.options.anchor=t.anchor.position),t.anchor instanceof Array&&(this.options.anchor=new r(t.anchor))),void 0!==t.length&&(this.options.length=t.length),void 0!==t.dampingRatio&&(this.options.dampingRatio=t.dampingRatio),void 0!==t.period&&(this.options.period=t.period)},s.prototype.setAnchor=function(t){void 0!==this.options.anchor&&(this.options.anchor=new r),this.options.anchor.set(t)},s.prototype.getEnergy=function(t,i){var e=this.options,s=e.length,o=e.anchor||i.position,n=Math.pow(2*a/e.period,2),r=o.sub(t.position).norm()-s;return.5*n*r*r},s.prototype.applyConstraint=function(t,i,e){for(var s=this.options,n=this.pDiff,r=this.vDiff,h=this.impulse1,u=this.impulse2,c=s.length,p=s.anchor||i.position,l=s.period,f=s.dampingRatio,d=0;di?-((1+u)*a.dot(n)+p/e*(i-l))/(r*e+f):-((1+u)*a.dot(n))/(r*e+f);c.set(a.mult(e*m)),t.applyImpulse(c),t.setPosition(o.add(a.mult(-i)))}this._eventOutput&&this._eventOutput.emit("postCollision",d)}function a(t,i){var e=this.options.onContact,o=t.position,n=this.options.normal;e===s.ON_CONTACT.REFLECT&&t.setPosition(o.add(n.mult(-i)))}var h=t("./Constraint"),u=t("famous/math/Vector");s.prototype=Object.create(h.prototype),s.prototype.constructor=s,s.ON_CONTACT={REFLECT:0,SILENT:1},s.DEFAULT_OPTIONS={restitution:.5,drift:.5,slop:0,normal:[1,0,0],distance:0,onContact:s.ON_CONTACT.REFLECT},s.prototype.setOptions=function(t){void 0!==t.normal&&(t.normal instanceof u&&(this.options.normal=t.normal.clone()),t.normal instanceof Array&&(this.options.normal=new u(t.normal))),void 0!==t.restitution&&(this.options.restitution=t.restitution),void 0!==t.drift&&(this.options.drift=t.drift),void 0!==t.slop&&(this.options.slop=t.slop),void 0!==t.distance&&(this.options.distance=t.distance),void 0!==t.onContact&&(this.options.onContact=t.onContact)},s.prototype.applyConstraint=function(t,i,e){for(var s=this.options.normal,h=0;h=f&&(0>d?r.call(this,u,f,e):a.call(this,u,f,e))}},e.exports=s}),define("famous/transitions/WallTransition",["require","exports","module","famous/physics/PhysicsEngine","famous/physics/bodies/Particle","famous/physics/forces/Spring","famous/physics/constraints/Wall","famous/math/Vector"],function(t,i,e){function s(t){t=t||0,this.endState=new O(t),this.initState=new O,this.spring=new g({anchor:this.endState}),this.wall=new v,this._restTolerance=1e-10,this._dimensions=1,this._absRestTolerance=this._restTolerance,this._callback=void 0,this.PE=new y,this.particle=new _,this.PE.addBody(this.particle),this.PE.attach([this.wall,this.spring],this.particle)}function o(){return this.particle.getEnergy()+this.spring.getEnergy(this.particle)}function n(){var t=this.endState.sub(this.initState).normSquared();this._absRestTolerance=0===t?this._restTolerance:this._restTolerance*t}function r(){this.PE.wake()}function a(){this.PE.sleep()}function h(t){this.endState.set(t);var i=this.endState.sub(this.initState).norm();this.wall.setOptions({distance:this.endState.norm(),normal:0===i?this.particle.velocity.normalize(-1):this.endState.sub(this.initState).normalize(-1)}),n.call(this)}function u(t){this.particle.position.set(t)}function c(t){this.particle.velocity.set(t)}function p(){return 0===this._dimensions?this.particle.getPosition1D():this.particle.getPosition()}function l(){return 0===this._dimensions?this.particle.getVelocity1D():this.particle.getVelocity()}function f(t){this._callback=t}function d(){if(this.PE.isSleeping()){if(this._callback){var t=this._callback;this._callback=void 0,t()}}else{var i=o.call(this);i=i&&(t.apply(this,arguments),c.removeListener(p,o))};return s(o)}function n(t,i){var e=l(),o=function(){var s=l();s-e>=i&&(t.apply(this,arguments),e=l())};return s(o)}function r(t,i){if(void 0===i)return void 0;var e=function(){i--,0>=i&&(t.apply(this,arguments),h(e))};return s(e)}function a(t,i){i=i||1;var e=i,o=function(){i--,0>=i&&(t.apply(this,arguments),i=e)};return s(o)}function h(t){c.removeListener(p,t)}function u(t,i){var e,s,n,r,a;return function(){s=this,a=arguments,n=l();var u=function(){var h=l-n;i>h?e=o(u,i-h):(e=null,r=t.apply(s,a))};return h(e),e=o(u,i),r}}var c=t("famous/core/Engine"),p="prerender",l=window.performance?function(){return window.performance.now()}:function(){return Date.now()};e.exports={setTimeout:o,setInterval:n,debounce:u,after:r,every:a,clear:h}}),define("famous/views/ContextualView",["require","exports","module","famous/core/Entity","famous/core/Transform","famous/core/EventHandler","famous/core/OptionsManager"],function(t,i,e){function s(t){this.options=Object.create(this.constructor.DEFAULT_OPTIONS||s.DEFAULT_OPTIONS),this._optionsManager=new r(this.options),t&&this.setOptions(t),this._eventInput=new n,this._eventOutput=new n,n.setInputHandler(this,this._eventInput),n.setOutputHandler(this,this._eventOutput),this._id=o.register(this)}var o=t("famous/core/Entity"),n=(t("famous/core/Transform"),t("famous/core/EventHandler")),r=t("famous/core/OptionsManager");s.DEFAULT_OPTIONS={},s.prototype.setOptions=function(t){return this._optionsManager.setOptions(t)},s.prototype.getOptions=function(){return this._optionsManager.getOptions()},s.prototype.render=function(){return this._id},s.prototype.commit=function(){},e.exports=s}),define("famous/views/SequentialLayout",["require","exports","module","famous/core/OptionsManager","famous/core/Transform","famous/core/ViewSequence","famous/utilities/Utility"],function(t,i,e){function s(t){this._items=null,this._size=null,this._outputFunction=s.DEFAULT_OUTPUT_FUNCTION,this.options=Object.create(this.constructor.DEFAULT_OPTIONS),this.optionsManager=new o(this.options),this._itemsCache=[],this._outputCache={size:null,target:this._itemsCache},t&&this.setOptions(t)}var o=t("famous/core/OptionsManager"),n=t("famous/core/Transform"),r=t("famous/core/ViewSequence"),a=t("famous/utilities/Utility");s.DEFAULT_OPTIONS={direction:a.Direction.Y,itemSpacing:0,defaultItemSize:[50,50]},s.DEFAULT_OUTPUT_FUNCTION=function(t,i){var e=this.options.direction===a.Direction.X?n.translate(i,0):n.translate(0,i);return{transform:e,target:t.render()}},s.prototype.getSize=function(){return this._size||this.render(),this._size},s.prototype.sequenceFrom=function(t){return t instanceof Array&&(t=new r(t)),this._items=t,this},s.prototype.setOptions=function(){return this.optionsManager.setOptions.apply(this.optionsManager,arguments),this},s.prototype.setOutputFunction=function(t){return this._outputFunction=t,this},s.prototype.render=function(){for(var t=0,i=0,e=this.options.direction===a.Direction.X?0:1,s=this.options.direction===a.Direction.X?1:0,o=this._items,n=this._itemsCache,r=0;o;){var h=o.get();if(!h)break;var u;h&&h.getSize&&(u=h.getSize()),u||(u=this.options.defaultItemSize),u[s]!==!0&&(i=Math.max(i,u[s]));var c=this._outputFunction.call(this,h,t,r);n[r]=c,u[e]&&u[e]!==!0&&(t+=u[e]+this.options.itemSpacing),o=o.getNext(),r++}return this._itemsCache.splice(r),i||(i=void 0),this._size||(this._size=[0,0]),this._size[e]=t-this.options.itemSpacing,this._size[s]=i,this._outputCache.size=this.getSize(),this._outputCache},e.exports=s}),define("famous/views/Deck",["require","exports","module","famous/core/Transform","famous/core/OptionsManager","famous/transitions/Transitionable","famous/utilities/Utility","./SequentialLayout"],function(t,i,e){function s(){c.apply(this,arguments),this.state=new h(0),this._isOpen=!1,this.setOutputFunction(function(t,i,e){var s=o.call(this),n=this.options.direction===u.Direction.X?r.translate(s*i,0,.001*(s-1)*i):r.translate(0,s*i,.001*(s-1)*i),a=t.render();if(this.options.stackRotation){var h=this.options.stackRotation*e*(1-s);a={transform:r.rotateZ(h),origin:[.5,.5],target:a}}return{transform:n,size:t.getSize(),target:a}})}function o(t){return t?this._isOpen?1:0:this.state.get()}function n(t,i,e){this.state.halt(),this.state.set(t,i,e)}var r=t("famous/core/Transform"),a=t("famous/core/OptionsManager"),h=t("famous/transitions/Transitionable"),u=t("famous/utilities/Utility"),c=t("./SequentialLayout");s.prototype=Object.create(c.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS=a.patch(c.DEFAULT_OPTIONS,{transition:{curve:"easeOutBounce",duration:500},stackRotation:0}),s.prototype.getSize=function(){var t=c.prototype.getSize.apply(this,arguments),i=this._items?this._items.get().getSize():[0,0];i||(i=[0,0]);var e=o.call(this),s=1-e;return[i[0]*s+t[0]*e,i[1]*s+t[1]*e]},s.prototype.isOpen=function(){return this._isOpen},s.prototype.open=function(t){this._isOpen=!0,n.call(this,1,this.options.transition,t)},s.prototype.close=function(t){this._isOpen=!1,n.call(this,0,this.options.transition,t)},s.prototype.toggle=function(t){this._isOpen?this.close(t):this.open(t)},e.exports=s}),define("famous/views/RenderController",["require","exports","module","famous/core/Modifier","famous/core/RenderNode","famous/core/Transform","famous/transitions/Transitionable","famous/core/View"],function(t,i,e){function s(){u.apply(this,arguments),this._showing=-1,this._outgoingRenderables=[],this._nextRenderable=null,this._renderables=[],this._nodes=[],this._modifiers=[],this._states=[],this.inTransformMap=s.DefaultMap.transform,this.inOpacityMap=s.DefaultMap.opacity,this.inOriginMap=s.DefaultMap.origin,this.outTransformMap=s.DefaultMap.transform,this.outOpacityMap=s.DefaultMap.opacity,this.outOriginMap=s.DefaultMap.origin,this._output=[]}function o(t,i){return t(i.get())}var n=t("famous/core/Modifier"),r=t("famous/core/RenderNode"),a=t("famous/core/Transform"),h=t("famous/transitions/Transitionable"),u=t("famous/core/View");s.prototype=Object.create(u.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS={inTransition:!0,outTransition:!0,overlap:!0},s.DefaultMap={transform:function(){return a.identity},opacity:function(t){return t},origin:null},s.prototype.inTransformFrom=function(t){if(t instanceof Function)this.inTransformMap=t;else{if(!t||!t.get)throw Error("inTransformFrom takes only function or getter object");this.inTransformMap=t.get.bind(t)}return this},s.prototype.inOpacityFrom=function(t){if(t instanceof Function)this.inOpacityMap=t;else{if(!t||!t.get)throw Error("inOpacityFrom takes only function or getter object");this.inOpacityMap=t.get.bind(t)}return this},s.prototype.inOriginFrom=function(t){if(t instanceof Function)this.inOriginMap=t;else{if(!t||!t.get)throw Error("inOriginFrom takes only function or getter object");this.inOriginMap=t.get.bind(t)}return this},s.prototype.outTransformFrom=function(t){if(t instanceof Function)this.outTransformMap=t;else{if(!t||!t.get)throw Error("inTransformFrom takes only function or getter object");this.outTransformMap=t.get.bind(t)}return this},s.prototype.outOpacityFrom=function(t){if(t instanceof Function)this.outOpacityMap=t;else{if(!t||!t.get)throw Error("inOpacityFrom takes only function or getter object");this.outOpacityMap=t.get.bind(t)}return this},s.prototype.outOriginFrom=function(t){if(t instanceof Function)this.outOriginMap=t;else{if(!t||!t.get)throw Error("inOriginFrom takes only function or getter object");this.outOriginMap=t.get.bind(t)}return this},s.prototype.show=function(t,i,e){if(!t)return this.hide(e);if(i instanceof Function&&(e=i,i=null),this._showing>=0){if(!this.options.overlap)return void(this._nextRenderable?this._nextRenderable=t:(this._nextRenderable=t,this.hide(function(){this._nextRenderable===t&&this.show(this._nextRenderable,e),this._nextRenderable=null})));this.hide()}var s=null,a=this._renderables.indexOf(t);if(a>=0){this._showing=a,s=this._states[a],s.halt();var u=this._outgoingRenderables.indexOf(t);u>=0&&this._outgoingRenderables.splice(u,1)}else{s=new h(0);var c=new n({transform:this.inTransformMap?o.bind(this,this.inTransformMap,s):null,opacity:this.inOpacityMap?o.bind(this,this.inOpacityMap,s):null,origin:this.inOriginMap?o.bind(this,this.inOriginMap,s):null}),p=new r;p.add(c).add(t),this._showing=this._nodes.length,this._nodes.push(p),this._modifiers.push(c),this._states.push(s),this._renderables.push(t)}i||(i=this.options.inTransition),s.set(1,i,e)},s.prototype.hide=function(t,i){if(!(this._showing<0)){var e=this._showing;this._showing=-1,t instanceof Function&&(i=t,t=void 0);var s=this._nodes[e],n=this._modifiers[e],r=this._states[e],a=this._renderables[e];n.transformFrom(this.outTransformMap?o.bind(this,this.outTransformMap,r):null),n.opacityFrom(this.outOpacityMap?o.bind(this,this.outOpacityMap,r):null),n.originFrom(this.outOriginMap?o.bind(this,this.outOriginMap,r):null),this._outgoingRenderables.indexOf(a)<0&&this._outgoingRenderables.push(a),t||(t=this.options.outTransition),r.halt(),r.set(0,t,function(t,e,s,o){if(this._outgoingRenderables.indexOf(o)>=0){var n=this._nodes.indexOf(t);this._nodes.splice(n,1),this._modifiers.splice(n,1),this._states.splice(n,1),this._renderables.splice(n,1),this._outgoingRenderables.splice(this._outgoingRenderables.indexOf(o),1),this._showing>=n&&this._showing--}i&&i.call(this)}.bind(this,s,n,r,a))}},s.prototype.render=function(){var t=this._output;t.length>this._nodes.length&&t.splice(this._nodes.length);for(var i=0;ip;p++){o=0;for(var l=0;i>l;l++)void 0===this._modifiers[c]?n.call(this,c,[h,a],[o,u,0],1):r.call(this,c,[h,a],[o,u,0],1),c++,o+=h+this.options.gutterSize[0];u+=a+this.options.gutterSize[1]}for(this._dimensionsCache=[this.options.dimensions[0],this.options.dimensions[1]],this._contextSizeCache=[t[0],t[1]],this._activeCount=e*i,p=this._activeCount;p=this._activeCount&&this._states[p].opacity.isActive()&&(this._modifiers.splice(p,1),this._states.splice(p,1)),l&&c.push(f.modify({origin:s,target:l.render()})),u=u.getNext(),p++}return n&&(i=h.moveThen([-n[0]*s[0],-n[1]*s[1],0],i)),{transform:i,opacity:e,size:n,target:c}},e.exports=s}),define("famous/views/HeaderFooterLayout",["require","exports","module","famous/core/Entity","famous/core/RenderNode","famous/core/Transform","famous/core/OptionsManager"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),this._optionsManager=new c(this.options),t&&this.setOptions(t),this._entityId=a.register(this),this.header=new h,this.footer=new h,this.content=new h}function o(t,i){var e=t.getSize();return e?e[this.options.direction]:i}function n(t){return this.options.direction===s.DIRECTION_X?u.translate(t,0,0):u.translate(0,t,0)}function r(t,i){return this.options.direction===s.DIRECTION_X?[t,i[1]]:[i[0],t]}var a=t("famous/core/Entity"),h=t("famous/core/RenderNode"),u=t("famous/core/Transform"),c=t("famous/core/OptionsManager");s.DIRECTION_X=0,s.DIRECTION_Y=1,s.DEFAULT_OPTIONS={direction:s.DIRECTION_Y,headerSize:void 0,footerSize:void 0,defaultHeaderSize:0,defaultFooterSize:0},s.prototype.render=function(){return this._entityId},s.prototype.setOptions=function(t){return this._optionsManager.setOptions(t)},s.prototype.commit=function(t){var i=t.transform,e=t.origin,s=t.size,a=t.opacity,h=void 0!==this.options.headerSize?this.options.headerSize:o.call(this,this.header,this.options.defaultHeaderSize),c=void 0!==this.options.footerSize?this.options.footerSize:o.call(this,this.footer,this.options.defaultFooterSize),p=s[this.options.direction]-h-c;s&&(i=u.moveThen([-s[0]*e[0],-s[1]*e[1],0],i));var l=[{size:r.call(this,h,s),target:this.header.render()},{transform:n.call(this,h),size:r.call(this,p,s),target:this.content.render()},{transform:n.call(this,h+p),size:r.call(this,c,s),target:this.footer.render()}];return{transform:i,opacity:a,size:s,target:l}},e.exports=s}),define("famous/views/Lightbox",["require","exports","module","famous/core/Transform","famous/core/Modifier","famous/core/RenderNode","famous/utilities/Utility","famous/core/OptionsManager","famous/transitions/Transitionable","famous/transitions/TransitionableTransform"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),this._optionsManager=new h(this.options),t&&this.setOptions(t),this._showing=!1,this.nodes=[],this.transforms=[],this.states=[]}var o=t("famous/core/Transform"),n=t("famous/core/Modifier"),r=t("famous/core/RenderNode"),a=t("famous/utilities/Utility"),h=t("famous/core/OptionsManager"),u=t("famous/transitions/Transitionable"),c=t("famous/transitions/TransitionableTransform");s.DEFAULT_OPTIONS={inTransform:o.scale(.001,.001,.001),inOpacity:0,inOrigin:[.5,.5],outTransform:o.scale(.001,.001,.001),outOpacity:0,outOrigin:[.5,.5],showTransform:o.identity,showOpacity:1,showOrigin:[.5,.5],inTransition:!0,outTransition:!0,overlap:!1},s.prototype.setOptions=function(t){return this._optionsManager.setOptions(t)},s.prototype.show=function(t,i,e){if(!t)return this.hide(e);if(i instanceof Function&&(e=i,i=void 0),this._showing){if(!this.options.overlap)return this.hide(this.show.bind(this,t,i,e));this.hide()}this._showing=!0;var s={transform:new c(this.options.inTransform),origin:new u(this.options.inOrigin),opacity:new u(this.options.inOpacity)},o=new n({transform:s.transform,opacity:s.opacity,origin:s.origin}),h=new r;h.add(o).add(t),this.nodes.push(h),this.states.push(s),this.transforms.push(o);var p=e?a.after(3,e):void 0;i||(i=this.options.inTransition),s.transform.set(this.options.showTransform,i,p),s.opacity.set(this.options.showOpacity,i,p),s.origin.set(this.options.showOrigin,i,p)},s.prototype.hide=function(t,i){if(this._showing){this._showing=!1,t instanceof Function&&(i=t,t=void 0);var e=this.nodes[this.nodes.length-1],s=this.transforms[this.transforms.length-1],o=this.states[this.states.length-1],n=a.after(3,function(){this.nodes.splice(this.nodes.indexOf(e),1),this.states.splice(this.states.indexOf(o),1),this.transforms.splice(this.transforms.indexOf(s),1),i&&i.call(this)}.bind(this));t||(t=this.options.outTransition),o.transform.set(this.options.outTransform,t,n),o.opacity.set(this.options.outOpacity,t,n),o.origin.set(this.options.outOrigin,t,n)}},s.prototype.render=function(){for(var t=[],i=0;i=t;)this._positionOffset-=t,this._node=i,t=o.call(this,this._node.getSize()),i=this._node&&this._node.getNext?this._node.getNext():null;for(var e=this._node&&this._node.getPrevious?this._node.getPrevious():null;e&&this._position+this._positionOffset<0;){var s=o.call(this,e.getSize());this._positionOffset+=s,this._node=e,e=this._node&&this._node.getPrevious?this._node.getPrevious():null}}function h(){var t=null,i=this._position,e=[];this._onEdge=0;for(var s=-this._positionOffset,h=r.call(this),u=this._node;u&&s-is){for(;c&&h>p;)c=c.getPrevious(),c&&(p+=o.call(this,c.getSize()));for(c=this._node;c&&h>p;)c=c.getNext(),c&&(p+=o.call(this,c.getSize()))}var l=void 0!==p&&h>p?p:h;for(!u&&l>=s-i?(this._onEdge=1,this._eventOutput.emit("edgeHit",{position:s-l})):!this._node.getPrevious()&&0>=i&&(this._onEdge=-1,this._eventOutput.emit("edgeHit",{position:0})),u=this._node&&this._node.getPrevious?this._node.getPrevious():null,s=-this._positionOffset,u&&(t=u.getSize?u.getSize():this._contextSize,s-=o.call(this,t));u&&s-i>-(r.call(this)+this.options.margin);)n.call(this,u,s,e),u=u.getPrevious?u.getPrevious():null,u&&(t=u.getSize?u.getSize():this._contextSize,s-=o.call(this,t));return a.call(this),e}var u=t("famous/core/Entity"),c=t("famous/core/Group"),p=t("famous/core/OptionsManager"),l=t("famous/core/Transform"),f=t("famous/utilities/Utility"),d=t("famous/core/ViewSequence"),m=t("famous/core/EventHandler");s.DEFAULT_OPTIONS={direction:f.Direction.Y,margin:0,clipSize:void 0,groupScroll:!1},s.prototype.setOptions=function(t){this._optionsManager.setOptions(t),this.options.groupScroll?this.group.pipe(this._eventOutput):this.group.unpipe(this._eventOutput)},s.prototype.onEdge=function(){return this._onEdge},s.prototype.outputFrom=function(t,i){t||(t=function(t){return this.options.direction===f.Direction.X?l.translate(t,0):l.translate(0,t)}.bind(this),i||(i=t)),this._outputFunction=t,this._masterOutputFunction=i?i:function(i){return l.inverse(t(-i))}},s.prototype.positionFrom=function(t){t instanceof Function?this._positionGetter=t:t&&t.get?this._positionGetter=t.get.bind(t):(this._positionGetter=null,this._position=t),this._positionGetter&&(this._position=this._positionGetter.call(this))},s.prototype.sequenceFrom=function(t){t instanceof Array&&(t=new d({array:t})),this._node=t,this._positionOffset=0},s.prototype.getSize=function(t){return t?this._contextSize:this._size},s.prototype.render=function(){return this._node?(this._positionGetter&&(this._position=this._positionGetter.call(this)),this._entityId):null},s.prototype.commit=function(t){var i=t.transform,e=t.opacity,s=t.origin,o=t.size;this.options.clipSize||o[0]===this._contextSize[0]&&o[1]===this._contextSize[1]||(this._onEdge=0,this._contextSize[0]=o[0],this._contextSize[1]=o[1],this.options.direction===f.Direction.X?(this._size[0]=r.call(this),this._size[1]=void 0):(this._size[0]=void 0,this._size[1]=r.call(this)));var n=this._masterOutputFunction(-this._position);return{transform:l.multiply(i,n),size:o,opacity:e,origin:s,target:this.group.render()}},e.exports=s}),define("famous/views/Scrollview",["require","exports","module","famous/physics/PhysicsEngine","famous/physics/bodies/Particle","famous/physics/forces/Drag","famous/physics/forces/Spring","famous/core/EventHandler","famous/core/OptionsManager","famous/core/ViewSequence","famous/views/Scroller","famous/utilities/Utility","famous/inputs/GenericSync","famous/inputs/ScrollSync","famous/inputs/TouchSync"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),this._optionsManager=new T(this.options),this._node=null,this._physicsEngine=new y,this._particle=new _,this._physicsEngine.addBody(this._particle),this.spring=new v({anchor:[0,0,0]}),this.drag=new g({forceFunction:g.FORCE_FUNCTIONS.QUADRATIC}),this.friction=new g({forceFunction:g.FORCE_FUNCTIONS.LINEAR}),this.sync=new x(["scroll","touch"],{direction:this.options.direction}),this._eventInput=new O,this._eventOutput=new O,this._eventInput.pipe(this.sync),this.sync.pipe(this._eventInput),O.setInputHandler(this,this._eventInput),O.setOutputHandler(this,this._eventOutput),this._touchCount=0,this._springState=0,this._onEdge=0,this._pageSpringPosition=0,this._edgeSpringPosition=0,this._touchVelocity=void 0,this._earlyEnd=!1,this._needsPaginationCheck=!1,this._scroller=new w,this._scroller.positionFrom(this.getPosition.bind(this)),this.setOptions(t),a.call(this)}function o(t){this._touchCount=t.count,void 0===t.count&&(this._touchCount=1),u.call(this),this.setVelocity(0),this._touchVelocity=0,this._earlyEnd=!1}function n(t){var i=-t.velocity,e=-t.delta;this._onEdge&&t.slip&&(0>i&&this._onEdge<0||i>0&&this._onEdge>0?this._earlyEnd||(r.call(this,t),this._earlyEnd=!0):this._earlyEnd&&Math.abs(i)>Math.abs(this.getVelocity())&&o.call(this,t)),this._earlyEnd||(this._touchVelocity=i,t.slip?this.setVelocity(i):this.setPosition(this.getPosition()+e))}function r(t){if(this._touchCount=t.count||0,!this._touchCount){u.call(this),this._onEdge&&f.call(this,this._edgeSpringPosition,C.EDGE),h.call(this);var i=-t.velocity,e=this.options.speedLimit;t.slip&&(e*=this.options.edgeGrip),-e>i?i=-e:i>e&&(i=e),this.setVelocity(i),this._touchVelocity=void 0,this._needsPaginationCheck=!0}}function a(){this._eventInput.bindThis(this),this._eventInput.on("start",o),this._eventInput.on("update",n),this._eventInput.on("end",r),this._scroller.on("edgeHit",function(t){this._edgeSpringPosition=t.position}.bind(this))}function h(){this._springState?this._physicsEngine.attach([this.spring],this._particle):this._physicsEngine.attach([this.drag,this.friction],this._particle)}function u(){this._springState=C.NONE,this._physicsEngine.detachAll()}function c(t){var i=this.options.direction,e=(t.getSize()||this._scroller.getSize())[i];return e||(e=this._scroller.getSize()[i]),e}function p(t){!this._onEdge&&t?(this.sync.setOptions({scale:this.options.edgeGrip}),this._touchCount||this._springState===C.EDGE||f.call(this,this._edgeSpringPosition,C.EDGE)):this._onEdge&&!t&&(this.sync.setOptions({scale:1}),this._springState&&Math.abs(this.getVelocity())<.001&&(u.call(this),h.call(this))),this._onEdge=t}function l(){if(this._needsPaginationCheck&&!this._touchCount&&this._springState!==C.EDGE){var t=this.getVelocity();if(!(Math.abs(t)>=this.options.pageStopSpeed)){var i=this.getPosition(),e=Math.abs(t)>this.options.pageSwitchSpeed,s=c.call(this,this._node),o=i>.5*s,n=t>0;o&&!e||e&&n?this.goToNextPage():f.call(this,0,C.PAGE),this._needsPaginationCheck=!1}}}function f(t,i){var e;i===C.EDGE?(this._edgeSpringPosition=t,e={anchor:[this._edgeSpringPosition,0,0],period:this.options.edgePeriod,dampingRatio:this.options.edgeDamp}):i===C.PAGE&&(this._pageSpringPosition=t,e={anchor:[this._pageSpringPosition,0,0],period:this.options.pagePeriod,dampingRatio:this.options.pageDamp}),this.spring.setOptions(e),i&&!this._springState&&(u.call(this),this._springState=i,h.call(this)),this._springState=i}function d(){for(var t=this.getPosition(),i=c.call(this,this._node),e=this._node.getNext();t>i+M&&e;)m.call(this,-i),t-=i,this._scroller.sequenceFrom(e),this._node=e,e=this._node.getNext(),i=c.call(this,this._node);for(var s,o=this._node.getPrevious();-M>t&&o;)s=c.call(this,o),this._scroller.sequenceFrom(o),this._node=o,m.call(this,s),t+=s,o=this._node.getPrevious()}function m(t){this._edgeSpringPosition+=t,this._pageSpringPosition+=t,this.setPosition(this.getPosition()+t),this._springState===C.EDGE?this.spring.setOptions({anchor:[this._edgeSpringPosition,0,0]}):this._springState===C.PAGE&&this.spring.setOptions({anchor:[this._pageSpringPosition,0,0]})}var y=t("famous/physics/PhysicsEngine"),_=t("famous/physics/bodies/Particle"),g=t("famous/physics/forces/Drag"),v=t("famous/physics/forces/Spring"),O=t("famous/core/EventHandler"),T=t("famous/core/OptionsManager"),S=t("famous/core/ViewSequence"),w=t("famous/views/Scroller"),b=t("famous/utilities/Utility"),x=t("famous/inputs/GenericSync"),E=t("famous/inputs/ScrollSync"),I=t("famous/inputs/TouchSync");x.register({scroll:E,touch:I});var M=.5;s.DEFAULT_OPTIONS={direction:b.Direction.Y,rails:!0,friction:.001,drag:1e-4,edgeGrip:.5,edgePeriod:300,edgeDamp:1,margin:1e3,paginated:!1,pagePeriod:500,pageDamp:.8,pageStopSpeed:10,pageSwitchSpeed:.5,speedLimit:10,groupScroll:!1};var C={NONE:0,EDGE:1,PAGE:2};s.prototype.outputFrom=function(){return this._scroller.outputFrom.apply(this._scroller,arguments)},s.prototype.getPosition=function(){return this._particle.getPosition1D()},s.prototype.setPosition=function(t){this._particle.setPosition1D(t)},s.prototype.getVelocity=function(){return this._touchCount?this._touchVelocity:this._particle.getVelocity1D()},s.prototype.setVelocity=function(t){this._particle.setVelocity1D(t)},s.prototype.setOptions=function(t){t&&(void 0!==t.direction&&("x"===t.direction?t.direction=b.Direction.X:"y"===t.direction&&(t.direction=b.Direction.Y)),this._scroller.setOptions(t),this._optionsManager.setOptions(t)),this._scroller.setOptions(this.options),this.options.groupScroll?this._scroller.pipe(this._eventInput):this._scroller.unpipe(this._eventInput),this.drag.setOptions({strength:this.options.drag}),this.friction.setOptions({strength:this.options.friction}),this.spring.setOptions({period:this.options.edgePeriod,dampingRatio:this.options.edgeDamp}),this.sync.setOptions({rails:this.options.rails,direction:this.options.direction===b.Direction.X?x.DIRECTION_X:x.DIRECTION_Y})},s.prototype.goToPreviousPage=function(){if(!this._node)return null;var t=this._node.getPrevious();if(t){var i=this.getPosition(),e=c.call(this,t);this._scroller.sequenceFrom(t),this._node=t;var s=M>i?-e:0;f.call(this,s,C.PAGE),m.call(this,e)}return this._eventOutput.emit("pageChange",{direction:-1}),t},s.prototype.goToNextPage=function(){if(!this._node)return null;var t=this._node.getNext();if(t){var i=this.getPosition(),e=c.call(this,this._node),s=c.call(this,t);this._scroller.sequenceFrom(t),this._node=t;var o=i>e-M?e+s:e;f.call(this,o,C.PAGE),m.call(this,-e)}return this._eventOutput.emit("pageChange",{direction:1}),t},s.prototype.sequenceFrom=function(t){return t instanceof Array&&(t=new S({array:t})),this._node=t,this._scroller.sequenceFrom(t)},s.prototype.getSize=function(){return this._scroller.getSize.apply(this._scroller,arguments)},s.prototype.render=function(){return this._node?(d.call(this),p.call(this,this._scroller.onEdge()),this.options.paginated&&l.call(this),this._scroller.render()):null},e.exports=s}),define("famous/views/ScrollContainer",["require","exports","module","famous/surfaces/ContainerSurface","famous/core/EventHandler","./Scrollview","famous/utilities/Utility","famous/core/OptionsManager"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),this._optionsManager=new h(this.options),t&&this.setOptions(t),this.container=new o(this.options.container),this.scrollview=new r(this.options.scrollview),this.container.add(this.scrollview),n.setInputHandler(this,this.scrollview),n.setOutputHandler(this,this.scrollview),this.scrollview.subscribe(this.container)}var o=t("famous/surfaces/ContainerSurface"),n=t("famous/core/EventHandler"),r=t("./Scrollview"),a=t("famous/utilities/Utility"),h=t("famous/core/OptionsManager");s.DEFAULT_OPTIONS={container:{properties:{overflow:"hidden"}},scrollview:{direction:a.Direction.X}},s.prototype.setOptions=function(t){return this._optionsManager.setOptions(t)},s.prototype.sequenceFrom=function(){return this.scrollview.sequenceFrom.apply(this.scrollview,arguments)},s.prototype.render=function(){return this.container.render.apply(this.container,arguments)},e.exports=s}),define("famous/widgets/NavigationBar",["require","exports","module","famous/core/Scene","famous/core/Surface","famous/core/Transform","famous/core/View"],function(t,i,e){function s(){a.apply(this,arguments),this.title=new n({classes:this.options.classes,content:this.options.content}),this.back=new n({size:[this.options.size[1],this.options.size[1]],classes:this.options.classes,content:this.options.backContent}),this.back.on("click",function(){this._eventOutput.emit("back",{})}.bind(this)),this.more=new n({size:[this.options.size[1],this.options.size[1]],classes:this.options.classes,content:this.options.moreContent}),this.more.on("click",function(){this._eventOutput.emit("more",{})}.bind(this)),this.layout=new o({id:"master",size:this.options.size,target:[{transform:r.inFront,origin:[0,.5],target:this.back},{origin:[.5,.5],target:this.title},{transform:r.inFront,origin:[1,.5],target:this.more}]}),this._add(this.layout),this._optionsManager.on("change",function(t){var i=t.id,e=t.value;"size"===i?(this.layout.id.master.setSize(e),this.title.setSize(e),this.back.setSize([e[1],e[1]]),this.more.setSize([e[1],e[1]])):"backClasses"===i?this.back.setOptions({classes:this.options.classes.concat(this.options.backClasses)}):"backContent"===i?this.back.setContent(this.options.backContent):"classes"===i?(this.title.setOptions({classes:this.options.classes}),this.back.setOptions({classes:this.options.classes.concat(this.options.backClasses)}),this.more.setOptions({classes:this.options.classes.concat(this.options.moreClasses)})):"content"===i?this.setContent(this.options.content):"moreClasses"===i?this.more.setOptions({classes:this.options.classes.concat(this.options.moreClasses)}):"moreContent"===i&&this.more.setContent(this.options.content)}.bind(this))}var o=t("famous/core/Scene"),n=t("famous/core/Surface"),r=t("famous/core/Transform"),a=t("famous/core/View");s.prototype=Object.create(a.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS={size:[void 0,50],backClasses:["back"],backContent:"◀",classes:["navigation"],content:"",moreClasses:["more"],moreContent:"✚"},s.prototype.setContent=function(t){return this.title.setContent(t)},e.exports=s}),define("famous/widgets/Slider",["require","exports","module","famous/core/Surface","famous/surfaces/CanvasSurface","famous/core/Transform","famous/core/EventHandler","famous/math/Utilities","famous/core/OptionsManager","famous/inputs/MouseSync","famous/inputs/TouchSync","famous/inputs/GenericSync"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),this.optionsManager=new c(this.options),t&&this.setOptions(t),this.indicator=new r({size:this.options.indicatorSize,classes:["slider-back"]}),this.label=new n({size:this.options.labelSize,content:this.options.label,properties:{pointerEvents:"none"},classes:["slider-label"]}),this.eventOutput=new h,this.eventInput=new h,h.setInputHandler(this,this.eventInput),h.setOutputHandler(this,this.eventOutput);var i=(this.options.range[1]-this.options.range[0])/this.options.indicatorSize[0];this.sync=new f(["mouse","touch"],{scale:i,direction:f.DIRECTION_X}),this.indicator.pipe(this.sync),this.sync.pipe(this),this.eventInput.on("update",function(t){this.set(t.position)}.bind(this)),this._drawPos=0,o.call(this)}function o(){this.label.setContent(this.options.label+''+this.get().toFixed(this.options.precision)+"")}var n=t("famous/core/Surface"),r=t("famous/surfaces/CanvasSurface"),a=t("famous/core/Transform"),h=t("famous/core/EventHandler"),u=t("famous/math/Utilities"),c=t("famous/core/OptionsManager"),p=t("famous/inputs/MouseSync"),l=t("famous/inputs/TouchSync"),f=t("famous/inputs/GenericSync");f.register({mouse:p,touch:l}),s.DEFAULT_OPTIONS={size:[200,60],indicatorSize:[200,30],labelSize:[200,30],range:[0,1],precision:2,value:0,label:"",fillColor:"rgba(170, 170, 170, 1)"},s.prototype.setOptions=function(t){return this.optionsManager.setOptions(t)},s.prototype.get=function(){return this.options.value},s.prototype.set=function(t){t!==this.options.value&&(this.options.value=u.clamp(t,this.options.range),o.call(this),this.eventOutput.emit("change",{value:t}))},s.prototype.getSize=function(){return this.options.size},s.prototype.render=function(){var t=this.options.range,i=Math.floor((this.get()-t[0])/(t[1]-t[0])*this.options.indicatorSize[0]);if(ithis._drawPos){var e=this.indicator.getContext("2d");e.fillStyle=this.options.fillColor,e.fillRect(this._drawPos-1,0,i-this._drawPos+1,this.options.indicatorSize[1])}return this._drawPos=i,{size:this.options.size,target:[{origin:[0,0],target:this.indicator.render()},{transform:a.translate(0,0,1),origin:[0,0],target:this.label.render()}]}},e.exports=s}),define("famous/widgets/ToggleButton",["require","exports","module","famous/core/Surface","famous/core/EventHandler","famous/views/RenderController"],function(t,i,e){function s(t){this.options={content:"",offClasses:["off"],onClasses:["on"],size:void 0,outTransition:{curve:"easeInOut",duration:300},inTransition:{curve:"easeInOut",duration:300},toggleMode:s.TOGGLE,crossfade:!0},this._eventOutput=new n,n.setOutputHandler(this,this._eventOutput),this.offSurface=new o,this.offSurface.on("click",function(){this.options.toggleMode!==s.OFF&&this.select()}.bind(this)),this.offSurface.pipe(this._eventOutput),this.onSurface=new o,this.onSurface.on("click",function(){this.options.toggleMode!==s.ON&&this.deselect()}.bind(this)),this.onSurface.pipe(this._eventOutput),this.arbiter=new r({overlap:this.options.crossfade}),this.deselect(),t&&this.setOptions(t)}var o=t("famous/core/Surface"),n=t("famous/core/EventHandler"),r=t("famous/views/RenderController");s.OFF=0,s.ON=1,s.TOGGLE=2,s.prototype.select=function(){this.selected=!0,this.arbiter.show(this.onSurface,this.options.inTransition),this._eventOutput.emit("select")},s.prototype.deselect=function(){this.selected=!1,this.arbiter.show(this.offSurface,this.options.outTransition),this._eventOutput.emit("deselect")},s.prototype.isSelected=function(){return this.selected},s.prototype.setOptions=function(t){void 0!==t.content&&(this.options.content=t.content,this.offSurface.setContent(this.options.content),this.onSurface.setContent(this.options.content)),t.offClasses&&(this.options.offClasses=t.offClasses,this.offSurface.setClasses(this.options.offClasses)),t.onClasses&&(this.options.onClasses=t.onClasses,this.onSurface.setClasses(this.options.onClasses)),void 0!==t.size&&(this.options.size=t.size,this.onSurface.setSize(this.options.size),this.offSurface.setSize(this.options.size)),void 0!==t.toggleMode&&(this.options.toggleMode=t.toggleMode),void 0!==t.outTransition&&(this.options.outTransition=t.outTransition),void 0!==t.inTransition&&(this.options.inTransition=t.inTransition),void 0!==t.crossfade&&(this.options.crossfade=t.crossfade,this.arbiter.setOptions({overlap:this.options.crossfade}))},s.prototype.getSize=function(){return this.options.size},s.prototype.render=function(){return this.arbiter.render()},e.exports=s}),define("famous/widgets/TabBar",["require","exports","module","famous/utilities/Utility","famous/core/View","famous/views/GridLayout","./ToggleButton"],function(t,i,e){function s(){a.apply(this,arguments),this.layout=new h,this.buttons=[],this._buttonIds={},this._buttonCallbacks={},this.layout.sequenceFrom(this.buttons),this._add(this.layout),this._optionsManager.on("change",o.bind(this))}function o(t){var i=t.id,e=t.value;if("direction"===i)this.layout.setOptions({dimensions:n.call(this.buttons.length,this.options.direction)});else if("buttons"===i)for(var s in this.buttons)this.buttons[s].setOptions(e);else if("sections"===i)for(var o in this.options.sections)this.defineSection(o,this.options.sections[o]) }function n(t,i){return i===r.Direction.X?[t,1]:[1,t]}var r=t("famous/utilities/Utility"),a=t("famous/core/View"),h=t("famous/views/GridLayout"),u=t("./ToggleButton");s.prototype=Object.create(a.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS={sections:[],widget:u,size:[void 0,50],direction:r.Direction.X,buttons:{toggleMode:u.ON}},s.prototype.defineSection=function(t,i){var e,s=this._buttonIds[t];if(void 0===s){s=this.buttons.length,this._buttonIds[t]=s;var o=this.options.widget;e=new o,this.buttons[s]=e,this.layout.setOptions({dimensions:n(this.buttons.length,this.options.direction)})}else e=this.buttons[s],e.unbind("select",this._buttonCallbacks[t]);this.options.buttons&&e.setOptions(this.options.buttons),e.setOptions(i),this._buttonCallbacks[t]=this.select.bind(this,t),e.on("select",this._buttonCallbacks[t])},s.prototype.select=function(t){var i=this._buttonIds[t];this.buttons[i]&&this.buttons[i].isSelected()?this._eventOutput.emit("select",{id:t}):this.buttons[i]&&this.buttons[i].select();for(var e=0;ey&&y>u&&(s.set(o.normalize(n*d*p(y,h)).cap(a)),f.applyForce(s))}}},e.exports=s}),define("famous/physics/forces/RotationalDrag",["require","exports","module","./Drag"],function(t,i,e){function s(t){o.call(this,t)}var o=t("./Drag");s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.DEFAULT_OPTIONS=o.DEFAULT_OPTIONS,s.FORCE_FUNCTIONS=o.FORCE_FUNCTIONS,s.FORCE_FUNCTIONS={LINEAR:function(t){return t},QUADRATIC:function(t){return t.mult(t.norm())}},s.prototype.applyForce=function(t){for(var i=this.options.strength,e=this.options.forceFunction,s=this.force,o=0;ow){if(p.set(l.normalize()),this._eventOutput){var E={target:_,source:i,overlap:w,normal:p};this._eventOutput.emit("preCollision",E),this._eventOutput.emit("collision",E)}var I=u>=w?((1+c)*p.dot(f)+h/e*(w-u))/(x+e/b):(1+c)*p.dot(f)/(x+e/b);p.mult(e*I).put(d),d.mult(-1).put(m),i.applyImpulse(d),_.applyImpulse(m),this._eventOutput&&this._eventOutput.emit("postCollision",E)}}}},e.exports=s}),define("famous/physics/constraints/Curve",["require","exports","module","./Constraint","famous/math/Vector"],function(t,i,e){function s(t){this.options=Object.create(s.DEFAULT_OPTIONS),t&&this.setOptions(t),this.J=new n,this.impulse=new n,o.call(this)}var o=t("./Constraint"),n=t("famous/math/Vector");s.prototype=Object.create(o.prototype),s.prototype.constructor=s;var r=1e-7,a=Math.PI;s.DEFAULT_OPTIONS={equation:function(){return 0},plane:function(t,i,e){return e},period:0,dampingRatio:0},s.prototype.setOptions=function(t){for(var i in t)this.options[i]=t[i]},s.prototype.applyConstraint=function(t,i,e){for(var s=this.options,o=this.impulse,n=this.J,h=s.equation,u=s.plane,c=s.dampingRatio,p=s.period,l=0;l