This repository was archived by the owner on Aug 11, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNexusUI.js
7 lines (7 loc) · 166 KB
/
NexusUI.js
1
2
3
4
5
6
7
!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.Nexus=factory():root.Nexus=factory()}(this,function(){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:!1};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.p="",__webpack_require__(0)}([function(module,exports,__webpack_require__){"use strict";var NexusUI=function(obj){return obj&&obj.__esModule?obj.default:obj}(__webpack_require__(1));module.exports=NexusUI},function(module,exports,__webpack_require__){"use strict";function colors(){return Nexus.colors}function context(){return Nexus.context}function clock(){return Nexus.clock}var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")};exports.colors=colors,exports.context=context,exports.clock=clock,Object.defineProperty(exports,"__esModule",{value:!0});var Interfaces=_interopRequire(__webpack_require__(2)),math=_interopRequire(__webpack_require__(5)),Rack=_interopRequire(__webpack_require__(38)),Tune=_interopRequire(__webpack_require__(40)),Transform=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(39)),Counter=__webpack_require__(28),Radio=__webpack_require__(41),Drunk=__webpack_require__(27),Sequence=__webpack_require__(26),Matrix=__webpack_require__(25),WAAClock=_interopRequire(__webpack_require__(42)),Interval=_interopRequire(__webpack_require__(45)),NexusUI=function(){function NexusUI(context){_classCallCheck(this,NexusUI);for(var key in Interfaces)this[key]=Interfaces[key];for(var key in math)this[key]=math[key];var Core={Rack:Rack},Models={Counter:Counter,Radio:Radio,Drunk:Drunk,Sequence:Sequence,Matrix:Matrix};for(var key in Models)this[key]=Models[key];for(var key in Core)this[key]=Core[key];var DefaultContext=window.AudioContext||window.webkitAudioContext;this._context=context||new DefaultContext,this.tune=new Tune,this.note=this.tune.note.bind(this.tune),this.clock=new WAAClock(this._context),this.clock.start(),this.Interval=Interval,this.colors={accent:"#2bb",fill:"#eee",light:"#fff",dark:"#333",mediumLight:"#ccc",mediumDark:"#666"},this.transform=Transform,this.add=Transform.add,this.Add={};for(var key in Interfaces)this.Add[key]=Transform.add.bind(this,key);var existingStylesheets=document.getElementsByTagName("style"),defaultStyleNode=document.createElement("style");if(defaultStyleNode.type="text/css",defaultStyleNode.innerHTML="[nexus-ui]{height:5000px;width:5000px}",existingStylesheets.length>0){existingStylesheets[0].parentNode.insertBefore(defaultStyleNode,existingStylesheets[0])}else document.write("<style>[nexus-ui]{height:5000px;width:5000px}</style>")}return _createClass(NexusUI,{context:{get:function(){return this._context},set:function(ctx){this.clock.stop(),this._context=ctx,this.clock=new WAAClock(this.context),this.clock.start()}}}),NexusUI}(),Nexus=new NexusUI;exports.default=Nexus},function(module,exports,__webpack_require__){"use strict";module.exports={Position:__webpack_require__(3),Slider:__webpack_require__(14),Toggle:__webpack_require__(15),Button:__webpack_require__(16),TextButton:__webpack_require__(18),RadioButton:__webpack_require__(19),Number:__webpack_require__(20),Select:__webpack_require__(21),Dial:__webpack_require__(22),Piano:__webpack_require__(23),Sequencer:__webpack_require__(24),Pan2D:__webpack_require__(29),Tilt:__webpack_require__(30),Multislider:__webpack_require__(31),Pan:__webpack_require__(33),Envelope:__webpack_require__(34),Spectrogram:__webpack_require__(35),Meter:__webpack_require__(36),Oscilloscope:__webpack_require__(37)}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Position=function(_Interface){function Position(){_classCallCheck(this,Position);var options=["value"],defaults={size:[200,200],mode:"absolute",minX:0,maxX:1,stepX:0,x:.5,minY:0,maxY:1,stepY:0,y:.5};_get(Object.getPrototypeOf(Position.prototype),"constructor",this).call(this,arguments,options,defaults),this._x=new Step(this.settings.minX,this.settings.maxX,this.settings.stepX,this.settings.x),this._y=new Step(this.settings.minY,this.settings.maxY,this.settings.stepY,this.settings.y),this.position={x:new Interaction.Handle(this.settings.mode,"horizontal",[0,this.width],[this.height,0]),y:new Interaction.Handle(this.settings.mode,"vertical",[0,this.width],[this.height,0])},this.position.x.value=this._x.normalized,this.position.y.value=this._y.normalized,this.init(),this.render()}return _inherits(Position,_Interface),_createClass(Position,{buildInterface:{value:function(){this.knob=svg.create("circle"),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.position.x.resize([0,this.width],[this.height,0]),this.position.y.resize([0,this.width],[this.height,0]),this._minDimension=Math.min(this.width,this.height),this.knobRadius={off:5*~~(this._minDimension/100)+5},this.knobRadius.on=2*this.knobRadius.off,this.knob.setAttribute("cx",this.width/2),this.knob.setAttribute("cy",this.height/2),this.knob.setAttribute("r",this.knobRadius.off)}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.fill,this.knob.setAttribute("fill",this.colors.accent)}},render:{value:function(){this.clicked?this.knob.setAttribute("r",this.knobRadius.on):this.knob.setAttribute("r",this.knobRadius.off),this.knobCoordinates={x:this._x.normalized*this.width,y:this.height-this._y.normalized*this.height},this.knob.setAttribute("cx",this.knobCoordinates.x),this.knob.setAttribute("cy",this.knobCoordinates.y)}},click:{value:function(){this.position.x.anchor=this.mouse,this.position.y.anchor=this.mouse,this.move()}},move:{value:function(){this.clicked&&(this.position.x.update(this.mouse),this.position.y.update(this.mouse),this._x.updateNormal(this.position.x.value),this._y.updateNormal(this.position.y.value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render())}},release:{value:function(){this.render()}},x:{get:function(){return this._x.value},set:function(value){this._x.update(value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render()}},y:{get:function(){return this._y.value},set:function(value){this._y.update(value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render()}},normalized:{get:function(){return{x:this._x.normalized,y:this._y.normalized}}},minX:{get:function(){return this._x.min},set:function(v){this._x.min=v,this.render()}},minY:{get:function(){return this._y.min},set:function(v){this._y.min=v,this.render()}},maxX:{get:function(){return this._x.max},set:function(v){this._x.max=v,this.render()}},maxY:{get:function(){return this._y.max},set:function(v){this._y.max=v,this.render()}},stepX:{get:function(){return this._x.step},set:function(v){this._x.step=v,this.render()}},stepY:{get:function(){return this._y.step},set:function(v){this._y.step=v,this.render()}},mode:{get:function(){return this.position.x.mode},set:function(v){this.position.x.mode=v,this.position.y.mode=v}}}),Position}(Interface);module.exports=Position},function(module,exports,__webpack_require__){"use strict";var math=__webpack_require__(5);module.exports={create:function(type){return document.createElementNS("http://www.w3.org/2000/svg",type)},arc:function(x,y,radius,startAngle,endAngle){var start=math.toCartesian(radius,endAngle),end=math.toCartesian(radius,startAngle),largeArcFlag=endAngle-startAngle<=180?"0":"1";return["M",start.x+x,start.y+y,"A",radius,radius,0,largeArcFlag,0,end.x+x,end.y+y].join(" ")},radialGradient:function(defs,numberOfStops){var id="gradient"+math.ri(1e11),stops=[],gradient=document.createElementNS("http://www.w3.org/2000/svg","radialGradient");gradient.setAttribute("id",id),gradient.setAttribute("cx","50%"),gradient.setAttribute("cy","50%"),gradient.setAttribute("r","50%"),defs.appendChild(gradient);for(var i=0;i<numberOfStops;i++){var _stop=document.createElementNS("http://www.w3.org/2000/svg","stop");_stop.setAttribute("id","stop"+i),gradient.appendChild(_stop),stops.push(_stop)}return{id:id,stops:stops,element:gradient}}}},function(module,exports){"use strict";exports.clip=function(value,min,max){return Math.min(Math.max(value,min),max)},exports.normalize=function(value,min,max){return(value-min)/(max-min)},exports.scale=function(inNum,inMin,inMax,outMin,outMax){return inMin===inMax?outMin:(inNum-inMin)*(outMax-outMin)/(inMax-inMin)+outMin},exports.toPolar=function(x,y){var r=Math.sqrt(x*x+y*y),theta=Math.atan2(y,x);return theta<0&&(theta+=2*Math.PI),{radius:r,angle:theta}},exports.toCartesian=function(radius,angle){return{x:radius*Math.cos(angle),y:radius*Math.sin(angle)*-1}},exports.prune=function(data,scale){return parseFloat(data.toFixed(scale))},exports.invert=function(inNum){return exports.scale(inNum,1,0,0,1)},exports.mtof=function(midi){return 440*Math.pow(2,(midi-69)/12)},exports.interp=function(loc,min,max){return loc*(max-min)+min},exports.pick=function(){return arguments[~~(Math.random()*arguments.length)]},exports.octave=function(num){return Math.pow(2,num)},exports.ri=function(bound1,bound2){bound2||(bound2=bound1,bound1=0);var low=Math.min(bound1,bound2),high=Math.max(bound1,bound2);return Math.floor(Math.random()*(high-low)+low)},exports.rf=function(bound1,bound2){bound2||(bound2=bound1,bound1=0);var low=Math.min(bound1,bound2),high=Math.max(bound1,bound2);return Math.random()*(high-low)+low},exports.cycle=function(input,min,max){return input++,input>=max&&(input=min),input},exports.average=function(data){for(var total=0,i=0;i<data.length;i++)total+=data[i];return total/data.length},exports.distance=function(x1,y1,x2,y2){var a=x1-x2,b=y1-y2;return Math.sqrt(a*a+b*b)},exports.gainToDB=function(gain){return 20*Math.log10(gain)},exports.coin=function(){var odds=void 0===arguments[0]?.5:arguments[0];return exports.rf(0,1)<odds?1:0}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),dom=__webpack_require__(7),util=__webpack_require__(8),touch=__webpack_require__(9),EventEmitter=__webpack_require__(10),colors=__webpack_require__(1).colors,Interface=function(_EventEmitter){function Interface(args,options,defaults){_classCallCheck(this,Interface),_get(Object.getPrototypeOf(Interface.prototype),"constructor",this).call(this),this.type=this.constructor.name,this.settings=this.parseSettings(args,options,defaults),this.mouse={},this.wait=!1,this.colors={};var defaultColors=colors();this.colors.accent=defaultColors.accent,this.colors.fill=defaultColors.fill,this.colors.light=defaultColors.light,this.colors.dark=defaultColors.dark,this.colors.mediumLight=defaultColors.mediumLight,this.colors.mediumDark=defaultColors.mediumDark}return _inherits(Interface,_EventEmitter),_createClass(Interface,{parseSettings:{value:function(args,options,defaults){options.unshift("target"),defaults.defaultSize=defaults.size.splice(0,2),defaults.size=!1;var settings={target:document.body,colors:{},snapWithParent:!0,event:function(){},component:!1};for(var key in defaults)settings[key]=defaults[key];for(var i=0;i<args.length;i++){var setting=args[i];if(util.isObject(setting))for(var key in setting)settings[key]=setting[key];else if("function"==typeof setting)settings.event=setting;else if(options.length>=1){var key=options.splice(0,1)[0];settings[key]=setting}}return this.parent=dom.parseElement(settings.target),this.parent&&this.parent instanceof HTMLElement&&!settings.component&&(this.parent.hasAttribute("nexus-ui")||this.parent.setAttribute("nexus-ui","")),settings.size&&Array.isArray(settings.size)&&settings.snapWithParent?(this.width=settings.size[0],this.height=settings.size[1],this.parent.style.width=this.width+"px",this.parent.style.height=this.height+"px"):settings.snapWithParent&&!settings.component?(this.width=parseFloat(window.getComputedStyle(this.parent,null).getPropertyValue("width").replace("px","")),this.height=parseFloat(window.getComputedStyle(this.parent,null).getPropertyValue("height").replace("px","")),5e3==this.width&&(this.width=settings.defaultSize[0],this.parent.style.width=this.parent.width=this.width+"px"),5e3==this.height&&(this.height=settings.defaultSize[1],this.parent.style.height=this.parent.height=this.height+"px")):(settings.size=settings.defaultSize,this.width=settings.size[0],this.height=settings.size[1]),settings.event?this.event=this.on("change",settings.event):this.event=!1,settings}},init:{value:function(){this.buildFrame(),this.buildInterface(),this.sizeInterface(),this.attachListeners(),this.colorInterface(),this.finalTouches()}},buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){}},sizeInterface:{value:function(){}},colorInterface:{value:function(){}},attachListeners:{value:function(){var _this=this;this.interactionTarget=this.interactionTarget||this.element,touch.exists&&(this.interactionTarget.addEventListener("touchstart",function(evt){return _this.preTouch(evt)}),this.interactionTarget.addEventListener("touchmove",function(evt){return _this.preTouchMove(evt)}),this.interactionTarget.addEventListener("touchend",function(evt){return _this.preTouchRelease(evt)})),this.boundPreMove=function(evt){return _this.preMove(evt)},this.boundPreRelease=function(evt){return _this.preRelease(evt)},this.interactionTarget.addEventListener("mousedown",function(evt){return _this.preClick(evt)})}},finalTouches:{value:function(){this.element.style.cursor="pointer"}},preClick:{value:function(e){this.element instanceof HTMLElement&&(this.width=window.getComputedStyle(this.element,null).getPropertyValue("width").replace("px","")),this.offset=dom.findPosition(this.element),this.mouse=dom.locateMouse(e,this.offset),this.clicked=!0,this.click(),this.moveEvent=document.addEventListener("mousemove",this.boundPreMove),this.releaseEvent=document.addEventListener("mouseup",this.boundPreRelease),this.emit("click"),e.preventDefault(),e.stopPropagation()}},preMove:{value:function(e){var _this=this;this.wait||(this.mouse=dom.locateMouse(e,this.offset),this.move(),this.wait=!0,setTimeout(function(){_this.wait=!1},25)),e.preventDefault(),e.stopPropagation()}},preRelease:{value:function(e){this.mouse=dom.locateMouse(e,this.offset),this.clicked=!1,this.release(),this.emit("release"),document.removeEventListener("mousemove",this.boundPreMove),document.removeEventListener("mouseup",this.boundPreRelease),e.preventDefault(),e.stopPropagation()}},click:{value:function(){}},move:{value:function(){}},release:{value:function(){}},preTouch:{value:function(e){this.element instanceof HTMLElement&&(this.width=window.getComputedStyle(this.element,null).getPropertyValue("width").replace("px","")),this.offset=dom.findPosition(this.element),this.mouse=dom.locateTouch(e,this.offset),this.clicked=!0,this.touch(e),this.emit("click"),e.preventDefault(),e.stopPropagation()}},preTouchMove:{value:function(e){this.clicked&&(this.mouse=dom.locateTouch(e,this.offset),this.touchMove(),e.preventDefault(),e.stopPropagation())}},preTouchRelease:{value:function(e){this.mouse=dom.locateTouch(e,this.offset),this.clicked=!1,this.touchRelease(),this.emit("release"),e.preventDefault(),e.stopPropagation()}},touch:{value:function(){this.click()}},touchMove:{value:function(){this.move()}},touchRelease:{value:function(){this.release()}},resize:{value:function(width,height){this.width=width,this.height=height,this.parent.style.width=this.width+"px",this.parent.style.height=this.height+"px",this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.sizeInterface()}},empty:{value:function(){for(;this.element.lastChild;)this.element.removeChild(this.element.lastChild)}},destroy:{value:function(){this.empty(),this.parent.removeChild(this.element),this.removeAllListeners(),this.instrument&&delete this.instrument[this.id],this.customDestroy()}},customDestroy:{value:function(){}},colorize:{value:function(type,color){this.colors[type]=color,this.colorInterface()}}}),Interface}(EventEmitter);module.exports=Interface},function(module,exports){"use strict";exports.findPosition=function(el){var viewportOffset=el.getBoundingClientRect();return{top:viewportOffset.top+window.scrollY,left:viewportOffset.left+window.scrollX}},exports.parseElement=function(parent){return"string"==typeof parent&&(parent=document.getElementById(parent.replace("#",""))),parent instanceof HTMLElement||parent instanceof SVGElement?parent:"No valid parent argument"},exports.locateMouse=function(e,offset){return{x:e.pageX-offset.left,y:e.pageY-offset.top}},exports.locateTouch=function(e,offset){return{x:!!e.targetTouches.length&&e.targetTouches[0].pageX-offset.left,y:!!e.targetTouches.length&&e.targetTouches[0].pageY-offset.top}},exports.SmartCanvas=function(parent){var _this=this;this.element=document.createElement("canvas"),this.context=this.element.getContext("2d"),parent.appendChild(this.element),this.resize=function(w,h){_this.element.width=2*w,_this.element.height=2*h,_this.element.style.width=w+"px",_this.element.style.height=h+"px"}}},function(module,exports){"use strict";exports.isObject=function(obj){return"object"==typeof obj&&!Array.isArray(obj)&&null!==obj&&obj instanceof SVGElement==!1&&obj instanceof HTMLElement==!1}},function(module,exports){"use strict";exports.exists="ontouchstart"in document.documentElement},function(module,exports){function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(arg){return"function"==typeof arg}function isNumber(arg){return"number"==typeof arg}function isObject(arg){return"object"==typeof arg&&null!==arg}function isUndefined(arg){return void 0===arg}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");return this._maxListeners=n,this},EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(this._events||(this._events={}),"error"===type&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if((er=arguments[1])instanceof Error)throw er;var err=new Error('Uncaught, unspecified "error" event. ('+er+")");throw err.context=er,err}if(handler=this._events[type],isUndefined(handler))return!1;if(isFunction(handler))switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1),handler.apply(this,args)}else if(isObject(handler))for(args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),len=listeners.length,i=0;i<len;i++)listeners[i].apply(this,args);return!0},EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener),this._events[type]?isObject(this._events[type])?this._events[type].push(listener):this._events[type]=[this._events[type],listener]:this._events[type]=listener,isObject(this._events[type])&&!this._events[type].warned&&(m=isUndefined(this._maxListeners)?EventEmitter.defaultMaxListeners:this._maxListeners)&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[type].length),"function"==typeof console.trace&&console.trace()),this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){function g(){this.removeListener(type,g),fired||(fired=!0,listener.apply(this,arguments))}if(!isFunction(listener))throw TypeError("listener must be a function");var fired=!1;return g.listener=listener,this.on(type,g),this},EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;if(list=this._events[type],length=list.length,position=-1,list===listener||isFunction(list.listener)&&list.listener===listener)delete this._events[type],this._events.removeListener&&this.emit("removeListener",type,listener);else if(isObject(list)){for(i=length;i-- >0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(position<0)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit("removeListener",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)"removeListener"!==key&&this.removeAllListeners(key);return this.removeAllListeners("removeListener"),this._events={},this}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else if(listeners)for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){return this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;if(evlistener)return evlistener.length}return 0},EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=__webpack_require__(5),Step=function(){function Step(){var min=void 0===arguments[0]?0:arguments[0],max=void 0===arguments[1]?1:arguments[1],step=void 0===arguments[2]?0:arguments[2],value=void 0===arguments[3]?0:arguments[3];_classCallCheck(this,Step),this.min=min,this.max=max,this.step=step,this.value=value,this.changed=!1,this.oldValue=!1,this.update(this.value)}return _createClass(Step,{update:{value:function(value){return this.step?this.value=math.clip(Math.round((value-this.min)/this.step)*this.step+this.min,this.min,this.max):this.value=math.clip(value,this.min,this.max),this.oldValue!==this.value?(this.oldValue=this.value,this.changed=!0):this.changed=!1,this.value}},updateNormal:{value:function(value){return this.value=math.scale(value,0,1,this.min,this.max),this.update(this.value)}},normalized:{get:function(){return math.normalize(this.value,this.min,this.max)}}}),Step}();module.exports=Step},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")};Object.defineProperty(exports,"__esModule",{value:!0});var math=_interopRequire(__webpack_require__(5)),ToggleModel=_interopRequire(__webpack_require__(13));exports.Handle=function(){function Handle(){var mode=void 0===arguments[0]?"absolute":arguments[0],direction=void 0===arguments[1]?"vertical":arguments[1],xbound=void 0===arguments[2]?[0,100]:arguments[2],ybound=void 0===arguments[3]?[0,100]:arguments[3];_classCallCheck(this,Handle),this.mode=mode,this.direction=direction,this.previous=0,this.value=0,this.sensitivity=1,this.resize(xbound,ybound)}return _createClass(Handle,{resize:{value:function(xbound,ybound){this.boundary={min:{x:xbound[0],y:ybound[0]},max:{x:xbound[1],y:ybound[1]},center:{x:(xbound[1]-xbound[0])/2+xbound[0],y:(ybound[1]-ybound[0])/2+ybound[0]}}}},anchor:{set:function(mouse){this._anchor=this.convertPositionToValue(mouse)},get:function(){return this._anchor}},update:{value:function(mouse){if("relative"===this.mode){var increment=this.convertPositionToValue(mouse)-this.anchor;Math.abs(increment)>.5&&(increment=0),this.anchor=mouse,this.value=this.value+increment*this.sensitivity}else this.value=this.convertPositionToValue(mouse);this.value=math.clip(this.value,0,1)}},convertPositionToValue:{value:function(current){switch(this.direction){case"radial":var position=math.toPolar(current.x-this.boundary.center.x,current.y-this.boundary.center.y);return position=position.angle/(2*Math.PI),position=(position-.25+1)%1;case"vertical":return math.scale(current.y,this.boundary.min.y,this.boundary.max.y,0,1);case"horizontal":return math.scale(current.x,this.boundary.min.x,this.boundary.max.x,0,1)}}}}),Handle}(),exports.Button=function(){function Button(){var mode=void 0===arguments[0]?"button":arguments[0];_classCallCheck(this,Button),this.mode=mode,this.state=new ToggleModel,this.paintbrush=!1}return _createClass(Button,{click:{value:function(){switch(this.mode){case"impulse":this.state.on(),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.state.off.bind(this),30),this.emit("change",this.state);break;case"button":this.turnOn(),this.emit("change",this.state);break;case"aftertouch":this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.turnOn(),this.emit("change",{state:this.state,x:this.position.x,y:this.position.y});break;case"toggle":this.flip(),this.emit("change",this.state)}}},move:{value:function(){"aftertouch"===this.mode&&(this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}),this.render())}},release:{value:function(){switch(this.mode){case"button":this.turnOff(),this.emit("change",this.state);break;case"aftertouch":this.turnOff(),this.position={x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y})}}}}),Button}()},function(module,exports){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Toggle=function(){function Toggle(state){_classCallCheck(this,Toggle),this.state=state||!1}return _createClass(Toggle,{flip:{value:function(state){this.state=state||!1===state?state:!this.state}},on:{value:function(){this.state=!0}},off:{value:function(){this.state=!1}}}),Toggle}();module.exports=Toggle},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),
Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Slider=function(_Interface){function Slider(){_classCallCheck(this,Slider);var options=["min","max","value"],defaults={size:[120,20],mode:"relative",min:0,max:1,step:0,value:0};_get(Object.getPrototypeOf(Slider.prototype),"constructor",this).call(this,arguments,options,defaults),this.orientation="vertical",this._value=new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value),this.position=new Interaction.Handle(this.settings.mode,this.orientation,[0,this.width],[this.height,0]),this.position.value=this._value.normalized,this.init(),this.position.direction=this.orientation,this.emit("change",this.value)}return _inherits(Slider,_Interface),_createClass(Slider,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.fillbar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.fillbar),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.width<this.height?this.orientation="vertical":this.orientation="horizontal",this.position&&this.position.resize([0,this.width],[this.height,0]);var x=void 0,y=void 0,w=void 0,h=void 0,barOffset=void 0,cornerRadius=void 0;this.knobData={level:0,r:0},"vertical"===this.orientation?(this.thickness=this.width/2,x=this.width/2,y=0,w=this.thickness,h=this.height,this.knobData.r=.8*this.thickness,this.knobData.level=h-this.knobData.r-this.normalized*(h-2*this.knobData.r),barOffset="translate("+-1*this.thickness/2+",0)",cornerRadius=w/2):(this.thickness=this.height/2,x=0,y=this.height/2,w=this.width,h=this.thickness,this.knobData.r=.8*this.thickness,this.knobData.level=this.normalized*(w-2*this.knobData.r)+this.knobData.r,barOffset="translate(0,"+-1*this.thickness/2+")",cornerRadius=h/2),this.bar.setAttribute("x",x),this.bar.setAttribute("y",y),this.bar.setAttribute("transform",barOffset),this.bar.setAttribute("rx",cornerRadius),this.bar.setAttribute("ry",cornerRadius),this.bar.setAttribute("width",w),this.bar.setAttribute("height",h),"vertical"===this.orientation?(this.fillbar.setAttribute("x",x),this.fillbar.setAttribute("y",this.knobData.level),this.fillbar.setAttribute("width",w),this.fillbar.setAttribute("height",h-this.knobData.level)):(this.fillbar.setAttribute("x",0),this.fillbar.setAttribute("y",y),this.fillbar.setAttribute("width",this.knobData.level),this.fillbar.setAttribute("height",h)),this.fillbar.setAttribute("transform",barOffset),this.fillbar.setAttribute("rx",cornerRadius),this.fillbar.setAttribute("ry",cornerRadius),"vertical"===this.orientation?(this.knob.setAttribute("cx",x),this.knob.setAttribute("cy",this.knobData.level)):(this.knob.setAttribute("cx",this.knobData.level),this.knob.setAttribute("cy",y)),this.knob.setAttribute("r",this.knobData.r)}},colorInterface:{value:function(){this.bar.setAttribute("fill",this.colors.fill),this.fillbar.setAttribute("fill",this.colors.accent),this.knob.setAttribute("fill",this.colors.accent)}},render:{value:function(){this.clicked||(this.knobData.r=.75*this.thickness),this.knob.setAttribute("r",this.knobData.r),"vertical"===this.orientation?(this.knobData.level=this.knobData.r+this._value.normalized*(this.height-2*this.knobData.r),this.knob.setAttribute("cy",this.height-this.knobData.level),this.fillbar.setAttribute("y",this.height-this.knobData.level),this.fillbar.setAttribute("height",this.knobData.level)):(this.knobData.level=this._value.normalized*(this.width-2*this.knobData.r)+this.knobData.r,this.knob.setAttribute("cx",this.knobData.level),this.fillbar.setAttribute("x",0),this.fillbar.setAttribute("width",this.knobData.level))}},click:{value:function(){this.knobData.r=.9*this.thickness,this.position.anchor=this.mouse,this.move()}},move:{value:function(){this.clicked&&(this.position.update(this.mouse),this._value.updateNormal(this.position.value),this.emit("change",this._value.value),this.render())}},release:{value:function(){this.render()}},normalized:{get:function(){return this._value.normalized}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.position.value=this._value.normalized,this.emit("change",this._value.value),this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}},mode:{get:function(){return this.position.mode},set:function(v){this.position.mode=v}}}),Slider}(Interface);module.exports=Slider},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),ToggleModel=__webpack_require__(13),Interface=__webpack_require__(6),Toggle=function(_Interface){function Toggle(){_classCallCheck(this,Toggle);var options=["value"],defaults={size:[40,20],target:!1,state:!1};_get(Object.getPrototypeOf(Toggle.prototype),"constructor",this).call(this,arguments,options,defaults),this._state=new ToggleModel(this.settings.state),this.init()}return _inherits(Toggle,_Interface),_createClass(Toggle,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.height<this.width/2?this.knobSize=this.height/2:this.knobSize=this.width/4,this.bar.setAttribute("x",this.width/2-1.5*this.knobSize),this.bar.setAttribute("y",this.height/2-this.knobSize/2),this.bar.setAttribute("rx",this.knobSize/2),this.bar.setAttribute("ry",this.knobSize/2),this.bar.setAttribute("width",3*this.knobSize),this.bar.setAttribute("height",this.knobSize),this.knob.setAttribute("cx",this.width/2-this.knobSize),this.knob.setAttribute("cy",this.height/2),this.knob.setAttribute("r",this.knobSize)}},colorInterface:{value:function(){this.knob.setAttribute("fill",this.colors.accent),this.render()}},render:{value:function(){this.state?(this.knob.setAttribute("cx",this.width/2+this.knobSize),this.bar.setAttribute("fill",this.colors.accent)):(this.knob.setAttribute("cx",this.width/2-this.knobSize),this.bar.setAttribute("fill",this.colors.fill))}},click:{value:function(){this.flip(),this.render(),this.emit("change",this.state)}},state:{get:function(){return this._state.state},set:function(value){this._state.flip(value),this.emit("change",this.state),this.render()}},flip:{value:function(){this._state.flip(),this.render()}}}),Toggle}(Interface);module.exports=Toggle},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),ButtonTemplate=__webpack_require__(17),Button=function(_ButtonTemplate){function Button(){_classCallCheck(this,Button);var options=["mode"],defaults={size:[80,80],mode:"aftertouch",state:!1};_get(Object.getPrototypeOf(Button.prototype),"constructor",this).call(this,arguments,options,defaults),this.mode=this.settings.mode,this.init(),this.render()}return _inherits(Button,_ButtonTemplate),_createClass(Button,{buildInterface:{value:function(){this.pad=svg.create("circle"),this.element.appendChild(this.pad),this.interactionTarget=this.pad,this.defs=svg.create("defs"),this.element.appendChild(this.defs),this.gradient=svg.radialGradient(this.defs,2),this.gradient.stops[0].setAttribute("offset","30%"),this.gradient.stops[1].setAttribute("offset","100%")}},sizeInterface:{value:function(){this.pad.setAttribute("cx",this.width/2),this.pad.setAttribute("cy",this.height/2),this.pad.setAttribute("r",Math.min(this.width,this.height)/2-this.width/40),this.pad.setAttribute("stroke-width",this.width/20)}},colorInterface:{value:function(){this.gradient.stops[0].setAttribute("stop-color",this.colors.accent),this.gradient.stops[1].setAttribute("stop-color",this.colors.fill),this.render()}},render:{value:function(){this.state?("aftertouch"===this.mode?(this.pad.setAttribute("stroke","url(#"+this.gradient.id+")"),this.gradient.element.setAttribute("cx",100*this.position.x+"%"),this.gradient.element.setAttribute("cy",100*(1-this.position.y)+"%")):this.pad.setAttribute("stroke",this.colors.accent),this.pad.setAttribute("fill",this.colors.accent)):(this.pad.setAttribute("fill",this.colors.fill),this.pad.setAttribute("stroke",this.colors.mediumLight))}}}),Button}(ButtonTemplate);module.exports=Button},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),math=__webpack_require__(5),ToggleModel=__webpack_require__(13),Interface=__webpack_require__(6),ButtonTemplate=function(_Interface){function ButtonTemplate(args,options,defaults){_classCallCheck(this,ButtonTemplate),_get(Object.getPrototypeOf(ButtonTemplate.prototype),"constructor",this).call(this,args,options,defaults),this.mode=this.settings.mode||"button",this.position={x:0,y:0},this._state=new ToggleModel(this.settings.state)}return _inherits(ButtonTemplate,_Interface),_createClass(ButtonTemplate,{buildInterface:{value:function(){this.pad=svg.create("circle"),this.pad.setAttribute("fill","#d18"),this.pad.setAttribute("stroke","#d18"),this.pad.setAttribute("stroke-width",4),this.element.appendChild(this.pad),this.interactionTarget=this.pad,this.sizeInterface()}},sizeInterface:{value:function(){this.pad.setAttribute("cx",this.width/2),this.pad.setAttribute("cy",this.height/2),this.pad.setAttribute("r",Math.min(this.width,this.height)/2-2)}},render:{value:function(){this.state?(this.pad.setAttribute("fill",this.colors.accent),this.pad.setAttribute("stroke",this.colors.accent)):(this.pad.setAttribute("fill",this.colors.fill),this.pad.setAttribute("stroke",this.colors.mediumLight))}},down:{value:function(paintbrush){switch(this.mode){case"impulse":this.turnOn(),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.turnOff.bind(this),30);break;case"button":this.turnOn();break;case"aftertouch":this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.turnOn();break;case"toggle":this.flip(paintbrush)}}},bend:{value:function(mouse){"aftertouch"===this.mode&&(this.mouse=mouse||this.mouse,this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}),this.render())}},up:{value:function(){switch(this.mode){case"button":this.turnOff();break;case"aftertouch":this.turnOff(),this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)}}}},click:{value:function(){this.down()}},move:{value:function(){this.bend()}},release:{value:function(){this.up()}},state:{get:function(){return this._state.state},set:function(value){this._state.flip(value),"aftertouch"===this.mode?this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}):this.emit("change",this.state),this.render()}},flip:{value:function(value){this._state.flip(value),"aftertouch"===this.mode?this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}):this.emit("change",this.state),this.render()}},turnOn:{value:function(emitting){this._state.on(),!1!==emitting&&("aftertouch"===this.mode?this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}):this.emit("change",this.state)),this.render()}},turnOff:{value:function(emitting){this._state.off(),!1!==emitting&&("aftertouch"===this.mode?this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}):this.emit("change",this.state)),this.render()}}}),ButtonTemplate}(Interface);module.exports=ButtonTemplate},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},ButtonTemplate=__webpack_require__(17),TextButton=function(_ButtonTemplate){function TextButton(){_classCallCheck(this,TextButton);var options=["value"],defaults={size:[150,50],state:!1,text:"Play"};_get(Object.getPrototypeOf(TextButton.prototype),"constructor",this).call(this,arguments,options,defaults),this._text=this.settings.text,this.settings.alternate&&(this.settings.alternateText=this.settings.alternate,console.warn("'alternate' initiator is deprecated. Use 'alternateText' instead.")),this._alternateText=this.settings.alternateText,this.mode=this.settings.alternateText?"toggle":"button",this.init(),this.render(),this.state=this.settings.state}return _inherits(TextButton,_ButtonTemplate),_createClass(TextButton,{buildFrame:{value:function(){this.element=document.createElement("div"),this.parent.appendChild(this.element),this.textElement=document.createElement("div"),this.textElement.innerHTML=this._text,this.element.appendChild(this.textElement)}},buildInterface:{value:function(){}},colorInterface:{value:function(){this.element.style.color=this.colors.dark,this.render()}},sizeInterface:{value:function(){var textsize=this.height/3,textsize2=this.width/(this._text.length+2);if(textsize=Math.min(textsize,textsize2),this.alternateText){var textsize3=this.width/(this.alternateText.length+2);textsize=Math.min(textsize,textsize3)}var styles="width: "+this.width+"px;";styles+="height: "+this.height+"px;",styles+="padding: "+(this.height-textsize)/2+"px 0px;",styles+="box-sizing: border-box;",styles+="text-align: center;",styles+="font-family: inherit;",styles+="font-weight: 700;",styles+="opacity: 1;",styles+="font-size:"+textsize+"px;",this.textElement.style.cssText=styles,this.render()}},render:{value:function(){this.state?(this.element.style.backgroundColor=this.colors.accent,this.textElement.style.color=this.colors.fill,this.alternateText?this.textElement.innerHTML=this._alternateText:this.textElement.innerHTML=this._text):(this.element.style.backgroundColor=this.colors.fill,this.textElement.style.color=this.colors.dark,this.textElement.innerHTML=this._text)}},alternateText:{get:function(){return this._alternateText},set:function(text){this.mode=text?"toggle":"button",this._alternateText=text,this.render()}},text:{get:function(){return this._text},set:function(text){this._text=text,this.sizeInterface(),this.render()}}}),TextButton}(ButtonTemplate);module.exports=TextButton},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Interface=__webpack_require__(6),Button=__webpack_require__(16),RadioButton=function(_Interface){function RadioButton(){_classCallCheck(this,RadioButton);var options=["value"],defaults={size:[120,25],numberOfButtons:4,active:-1};_get(Object.getPrototypeOf(RadioButton.prototype),"constructor",this).call(this,arguments,options,defaults),this.buttons=[],this._numberOfButtons=this.settings.numberOfButtons,this.active=this.settings.active,this.init(),this.render()}return _inherits(RadioButton,_Interface),_createClass(RadioButton,{buildFrame:{value:function(){this.element=document.createElement("div"),this.parent.appendChild(this.element)}},buildInterface:{value:function(){for(var i=0;i<this._numberOfButtons;i++){var container=document.createElement("span"),button=new Button(container,{mode:"toggle",component:!0},this.update.bind(this,i));this.buttons.push(button),this.element.appendChild(container)}}},sizeInterface:{value:function(){for(var buttonWidth=this.width/this._numberOfButtons,buttonHeight=this.height,i=0;i<this._numberOfButtons;i++)this.buttons[i].resize(buttonWidth,buttonHeight)}},colorInterface:{value:function(){for(var i=0;i<this._numberOfButtons;i++)this.buttons[i].colors=this.colors,this.buttons[i].render()}},update:{value:function(index){this.buttons[index].state?this.select(index):this.deselect()}},render:{value:function(){for(var i=0;i<this.buttons.length;i++)i===this.active?this.buttons[i].turnOn(!1):this.buttons[i].turnOff(!1)}},select:{value:function(index){index>=0&&index<this.buttons.length&&(this.active=index,this.emit("change",this.active),this.render())}},deselect:{value:function(){this.active=-1,this.emit("change",this.active),this.render()}},numberOfButtons:{get:function(){return this._numberOfButtons},set:function(buttons){this._numberOfButtons=buttons;for(var i=0;i<this.buttons.length;i++)this.buttons[i].destroy();this.buttons=[],this.empty(),this.buildInterface()}}}),RadioButton}(Interface);module.exports=RadioButton},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Interface=__webpack_require__(6),Step=__webpack_require__(11),math=__webpack_require__(5),Number=function(_Interface){function Number(){_classCallCheck(this,Number);var options=["value"],defaults={size:[60,30],value:0,min:0,max:2e4,step:1};_get(Object.getPrototypeOf(Number.prototype),"constructor",this).call(this,arguments,options,defaults),this._value=new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value),this.decimalPlaces=2,this.actual=0,this.max=this._value.max,this.min=this._value.min,this.step=this._value.step,this.init(),this.render()}return _inherits(Number,_Interface),_createClass(Number,{buildFrame:{value:function(){this.element=document.createElement("input"),this.element.type="text",this.element.addEventListener("blur",function(){this.element.style.backgroundColor=this.colors.fill,this.element.style.color=this.colors.dark,this.element.value!==this.value&&(this.value=parseFloat(this.element.value),this.render())}.bind(this)),this.element.addEventListener("keydown",function(e){(e.which<48||e.which>57)&&189!==e.which&&190!==e.which&&8!==e.which&&e.preventDefault(),13===e.which&&(this.element.blur(),this.value=this.element.value,this.emit("change",this.value),this.render())}.bind(this)),this.parent.appendChild(this.element)}},sizeInterface:{value:function(){this._minDimension=Math.min(this.width,this.height);var styles="width: "+this.width+"px;";styles+="height: "+this.height+"px;",styles+="background-color: #e7e7e7;",styles+="color: #333;",styles+="font-family: arial;",styles+="font-weight: 500;",styles+="font-size:"+this._minDimension/2+"px;",styles+="border: none;",styles+="outline: none;",styles+="padding: "+this._minDimension/4+"px "+this._minDimension/4+"px;",styles+="box-sizing: border-box;",styles+="userSelect: text;",styles+="mozUserSelect: text;",styles+="webkitUserSelect: text;",this.element.style.cssText+=styles,this.element.value=this.value}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.fill,this.element.style.color=this.colors.dark}},render:{value:function(){this.element.value=math.prune(this.value,this.decimalPlaces)}},click:{value:function(){this.hasMoved=!1,this.element.readOnly=!0,this.actual=this.value,this.initial={y:this.mouse.y},this.changeFactor=math.invert(this.mouse.x/this.width),console.log(this.changeFactor)}},move:{value:function(){if(this.hasMoved=!0,this.clicked){var newvalue=this.actual-(this.mouse.y-this.initial.y)*(math.clip(this.max-this.min,0,1e3)/200)*Math.pow(this.changeFactor,2);this.value=newvalue,this.render(),this._value.changed&&this.emit("change",this.value)}}},release:{value:function(){this.hasMoved?document.body.focus():(this.element.readOnly=!1,this.element.focus(),this.element.setSelectionRange(0,this.element.value.length),this.element.style.backgroundColor=this.colors.accent,this.element.style.color=this.colors.light)}},link:{value:function(destination){var _this=this;this.min=destination.min,this.max=destination.max,this.step=destination.step,destination.on("change",function(v){_this.passiveUpdate(v)}),this.on("change",function(v){destination.value=v}),this.value=destination.value}},passiveUpdate:{value:function(v){this._value.update(v),this.render()}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.emit("change",this.value),this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}}}),Number}(Interface);module.exports=Number},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Interface=__webpack_require__(6),Select=function(_Interface){function Select(){_classCallCheck(this,Select);var options=["value"],defaults={size:[100,30],options:["default","options"]};_get(Object.getPrototypeOf(Select.prototype),"constructor",this).call(this,arguments,options,defaults),this._selectedIndex=-1,this._value=!1,this._options=this.settings.options,this.init(),this.render()}return _inherits(Select,_Interface),_createClass(Select,{buildFrame:{value:function(){this.element=document.createElement("select"),this.element.style.fontSize=this.height/2+"px",this.element.style.outline="none",this.element.style.highlight="none",this.element.style.width=this.width+"px",this.element.style.height=this.height+"px",this.boundRender=this.render.bind(this),this.element.addEventListener("change",this.boundRender),this.parent.appendChild(this.element)}},attachListeners:{value:function(){}},buildInterface:{value:function(){this.defineOptions()}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.fill,this.element.style.color=this.colors.dark,this.element.style.border="solid 0px "+this.colors.mediumLight}},render:{value:function(){this._value=this.element.options[this.element.selectedIndex].text,this._selectedIndex=this.element.selectedIndex,this.emit("change",{value:this._value,index:this._selectedIndex})}},click:{value:function(){}},move:{value:function(){}},release:{value:function(){}},defineOptions:{value:function(options){options&&(this._options=options);for(var i=0;i<this.element.options.length;i++)this.element.remove(i);for(var i=0;i<this._options.length;i++)this.element.options.add(new Option(this._options[i],i))}},value:{get:function(){return this._value},set:function(v){this._value=v;for(var i=0;i<this.element.options.length;i++)if(v===this.element.options[i].text){this.selectedIndex=i;break}}},selectedIndex:{get:function(){return this._selectedIndex},set:function(v){this._selectedIndex=v,this.element.selectedIndex=v,this.render()}},customDestroy:{value:function(){this.element.removeEventListener("change",this.boundRender)}}}),Select}(Interface);module.exports=Select},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){
return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),math=__webpack_require__(5),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Dial=function(_Interface){function Dial(){_classCallCheck(this,Dial);var options=["min","max","value"],defaults={size:[75,75],interaction:"radial",mode:"relative",min:0,max:1,step:0,value:0};_get(Object.getPrototypeOf(Dial.prototype),"constructor",this).call(this,arguments,options,defaults),this.interaction=this.settings.interaction,this._value=new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value),this.position=new Interaction.Handle(this.settings.mode,this.interaction,[0,this.width],[this.height,0]),this.init(),this.value=this._value.value,this.position.value=this._value.normalized,this.previousAngle=!1,this.emit("change",this.value)}return _inherits(Dial,_Interface),_createClass(Dial,{buildInterface:{value:function(){this.background=svg.create("circle"),this.screw=svg.create("circle"),this.handle=svg.create("path"),this.handle2=svg.create("path"),this.handleFill=svg.create("path"),this.handle2Fill=svg.create("path"),this.handleLine=svg.create("path"),this.element.appendChild(this.background),this.element.appendChild(this.handle),this.element.appendChild(this.handle2),this.element.appendChild(this.handleFill),this.element.appendChild(this.handle2Fill),this.element.appendChild(this.handleLine),this.element.appendChild(this.screw)}},sizeInterface:{value:function(){this.position.resize([0,this.width],[this.height,0]);var center={x:this.width/2,y:this.height/2},diameter=Math.min(this.width,this.height);this.background.setAttribute("cx",center.x),this.background.setAttribute("cy",center.y),this.background.setAttribute("r",diameter/2-diameter/40),this.screw.setAttribute("cx",center.x),this.screw.setAttribute("cy",center.y),this.screw.setAttribute("r",diameter/12);var value=this.value,handlePoints={start:1.5*Math.PI,end:math.clip(math.scale(value,0,.5,1.5*Math.PI,.5*Math.PI),.5*Math.PI,1.5*Math.PI)},handle2Points={start:2.5*Math.PI,end:math.clip(math.scale(value,.5,1,2.5*Math.PI,1.5*Math.PI),1.5*Math.PI,2.5*Math.PI)},handlePath=svg.arc(center.x,center.y,diameter/2-diameter/40,handlePoints.start,handlePoints.end),handle2Path=svg.arc(center.x,center.y,diameter/2-diameter/40,handle2Points.start,handle2Points.end);this.handle.setAttribute("d",handlePath),this.handle.setAttribute("stroke-width",diameter/20),this.handle.setAttribute("fill","none"),this.handle2.setAttribute("d",handle2Path),this.handle2.setAttribute("stroke-width",diameter/20),this.handle2.setAttribute("fill","none"),handlePath+=" L "+center.x+" "+center.y,this.handleFill.setAttribute("d",handlePath),this.handleFill.setAttribute("fill-opacity","0.3"),handle2Path+=" L "+center.x+" "+center.y,this.handle2Fill.setAttribute("d",handle2Path),this.handle2Fill.setAttribute("fill-opacity","0.3");var arcEndingA=void 0;arcEndingA=value<.5?handlePoints.end:handle2Points.end;var arcEndingX=center.x+Math.cos(arcEndingA)*(diameter/2),arcEndingY=center.y+Math.sin(arcEndingA)*(diameter/2)*-1;this.handleLine.setAttribute("d","M "+center.x+" "+center.y+" L "+arcEndingX+" "+arcEndingY),this.handleLine.setAttribute("stroke-width",diameter/20)}},colorInterface:{value:function(){this.background.setAttribute("fill",this.colors.fill),this.screw.setAttribute("fill",this.colors.accent),this.handle.setAttribute("stroke",this.colors.accent),this.handle2.setAttribute("stroke",this.colors.accent),this.handleFill.setAttribute("fill",this.colors.accent),this.handle2Fill.setAttribute("fill",this.colors.accent),this.handleLine.setAttribute("stroke",this.colors.accent)}},render:{value:function(){var value=this._value.normalized,center={x:this.width/2,y:this.height/2},diameter=Math.min(this.width,this.height),handlePoints={start:1.5*Math.PI,end:math.clip(math.scale(value,0,.5,1.5*Math.PI,.5*Math.PI),.5*Math.PI,1.5*Math.PI)},handle2Points={start:2.5*Math.PI,end:math.clip(math.scale(value,.5,1,2.5*Math.PI,1.5*Math.PI),1.5*Math.PI,2.5*Math.PI)},handlePath=svg.arc(center.x,center.y,diameter/2-diameter/40,handlePoints.start,handlePoints.end),handle2Path=svg.arc(center.x,center.y,diameter/2-diameter/40,handle2Points.start,handle2Points.end);this.handle.setAttribute("d",handlePath),this.handle2.setAttribute("d",handle2Path),handlePath+=" L "+center.x+" "+center.y,this.handleFill.setAttribute("d",handlePath),handle2Path+=" L "+center.x+" "+center.y,this.handle2Fill.setAttribute("d",handle2Path);var arcEndingA=void 0;arcEndingA=value<=.5?handlePoints.end:handle2Points.end;var arcEndingX=center.x+Math.cos(arcEndingA)*(diameter/2),arcEndingY=center.y+Math.sin(arcEndingA)*(diameter/2)*-1;this.handleLine.setAttribute("d","M "+center.x+" "+center.y+" L "+arcEndingX+" "+arcEndingY)}},click:{value:function(){"relative"===this.mode&&(this.previousAngle=!1),this.position.anchor=this.mouse,this.position.value=this._value.normalized,this.move()}},move:{value:function(){if(this.clicked){this.position.update(this.mouse);var angle=this.position.value*Math.PI*2;angle<0&&(angle+=2*Math.PI),"relative"===this.mode&&!1!==this.previousAngle&&Math.abs(this.previousAngle-angle)>2&&(angle=this.previousAngle>3?2*Math.PI:0),this.previousAngle=angle;var realValue=angle/(2*Math.PI);this.value=this._value.updateNormal(realValue),"relative"===this.mode&&(this.position.value=realValue),this.emit("change",this._value.value),this.render()}}},release:{value:function(){}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.position.value=this._value.normalized,this.emit("change",this._value.value),this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}},mode:{get:function(){return this.position.mode},set:function(v){this.position.mode=v}},normalized:{get:function(){return this._value.normalized},set:function(v){this._value.updateNormal(v),this.emit("change",this.value)}}}),Dial}(Interface);module.exports=Dial},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),ButtonTemplate=__webpack_require__(17),touch=__webpack_require__(9),PianoKey=function(_ButtonTemplate){function PianoKey(){_classCallCheck(this,PianoKey);var options=["value","note","color"],defaults={size:[80,80],target:!1,mode:"button",value:0};_get(Object.getPrototypeOf(PianoKey.prototype),"constructor",this).call(this,arguments,options,defaults),this.note=this.settings.note,this.color=this.settings.color,this.colors={w:"#fff",b:"#666"},this.init(),this.render()}return _inherits(PianoKey,_ButtonTemplate),_createClass(PianoKey,{buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){var _this=this;this.pad=svg.create("rect"),this.element.appendChild(this.pad),this.interactionTarget=this.pad,touch.exists||(this.click=function(){_this.piano.interacting=!0,_this.piano.paintbrush=!_this.state,_this.down(_this.piano.paintbrush)},this.pad.addEventListener("mouseover",function(){_this.piano.interacting&&_this.down(_this.piano.paintbrush)}),this.move=function(){_this.piano.interacting&&_this.bend()},this.release=function(){_this.piano.interacting=!1},this.pad.addEventListener("mouseup",function(){_this.piano.interacting&&_this.up()}),this.pad.addEventListener("mouseout",function(){_this.piano.interacting&&_this.up()}))}},sizeInterface:{value:function(){this.pad.setAttribute("x",.5),this.pad.setAttribute("y",.5),this.width>2?this.pad.setAttribute("width",this.width-1):this.pad.setAttribute("width",this.width),this.height,this.pad.setAttribute("height",this.height),this.pad.setAttribute("rx",0),this.pad.setAttribute("ry",0)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.colors.accent):this.pad.setAttribute("fill",this.colors[this.color])}}}),PianoKey}(ButtonTemplate),Piano=function(_Interface){function Piano(){_classCallCheck(this,Piano);var options=["value"],defaults={size:[500,125],lowNote:24,highNote:60,mode:"button"};_get(Object.getPrototypeOf(Piano.prototype),"constructor",this).call(this,arguments,options,defaults),this.keyPattern=["w","b","w","b","w","w","b","w","b","w","b","w"],this.paintbrush=!1,this.mode=this.settings.mode,this.range={low:this.settings.lowNote,high:this.settings.highNote},this.range.size=this.range.high-this.range.low,this.keys=[],this.toggleTo=!1,this.init(),this.render()}return _inherits(Piano,_Interface),_createClass(Piano,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.borderRadius="0px",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element)}},buildInterface:{value:function(){this.keys=[];for(var i=0;i<this.range.high-this.range.low;i++){var container=document.createElement("span"),scaleIndex=(i+this.range.low)%this.keyPattern.length,key=new PianoKey(container,{component:!0,note:i+this.range.low,color:this.keyPattern[scaleIndex],mode:this.mode},this.keyChange.bind(this,i+this.range.low));key.piano=this,touch.exists&&(key.pad.index=i,key.preClick=key.preMove=key.preRelease=function(){},key.click=key.move=key.release=function(){},key.preTouch=key.preTouchMove=key.preTouchRelease=function(){},key.touch=key.touchMove=key.touchRelease=function(){}),this.keys.push(key),this.element.appendChild(container)}touch.exists&&this.addTouchListeners()}},sizeInterface:{value:function(){for(var keyX=0,keyPositions=[],i=0;i<this.range.high-this.range.low;i++){keyPositions.push(keyX);var scaleIndex=(i+this.range.low)%this.keyPattern.length,nextScaleIndex=(i+1+this.range.low)%this.keyPattern.length;i+1+this.range.low>=this.range.high?keyX+=1:"w"===this.keyPattern[scaleIndex]&&"w"===this.keyPattern[nextScaleIndex]?keyX+=1:keyX+=.5}for(var keysWide=keyX,buttonWidth=(this.width-2)/keysWide,buttonHeight=(this.height-2)/2,i=0;i<this.keys.length;i++){var container=this.keys[i].parent;container.style.position="absolute",container.style.left=keyPositions[i]*buttonWidth+1+"px","w"===this.keys[i].color?(container.style.top="1px",this.keys[i].resize(buttonWidth,2*buttonHeight)):(container.style.zIndex=1,container.style.top="1px",this.keys[i].resize(buttonWidth,1.1*buttonHeight))}}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.mediumLight;for(var i=0;i<this.keys.length;i++)this.keys[i].colors={w:this.colors.light,b:this.colors.dark,accent:this.colors.accent,border:this.colors.mediumLight},this.keys[i].colorInterface(),this.keys[i].render()}},keyChange:{value:function(note,on){var data={note:note};data.state="object"==typeof on?on.state:on,this.emit("change",data)}},render:{value:function(){}},addTouchListeners:{value:function(){var _this=this;this.preClick=this.preMove=this.preRelease=function(){},this.click=this.move=this.release=function(){},this.preTouch=this.preTouchMove=this.preTouchRelease=function(){},this.touch=this.touchMove=this.touchRelease=function(){},this.currentElement=!1,this.element.addEventListener("touchstart",function(e){console.log("touchstart");var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),key=_this.keys[element.index];_this.paintbrush=!key.state,key.down(_this.paintbrush),_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchmove",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),key=_this.keys[element.index];if(element.index!==_this.currentElement){if(_this.currentElement){_this.keys[_this.currentElement].up()}key.down(_this.paintbrush)}else key.bend();_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchend",function(e){_this.keys[_this.currentElement].up(),_this.interacting=!1,_this.currentElement=!1,e.preventDefault(),e.stopPropagation()})}},setRange:{value:function(low,high){this.range.low=low,this.range.high=high,this.empty(),this.buildInterface()}},toggleKey:{value:function(note,on){this.keys[note-this.range.low].flip(on)}},toggleIndex:{value:function(index,on){this.keys[index].flip(on)}}}),Piano}(Interface);module.exports=Piano},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),dom=__webpack_require__(7),Interface=__webpack_require__(6),ButtonTemplate=__webpack_require__(17),MatrixModel=__webpack_require__(25),CounterModel=__webpack_require__(28),touch=__webpack_require__(9),MatrixCell=function(_ButtonTemplate){function MatrixCell(){_classCallCheck(this,MatrixCell);var options=["value"],defaults={size:[80,80],target:!1,mode:"toggle",value:0};_get(Object.getPrototypeOf(MatrixCell.prototype),"constructor",this).call(this,arguments,options,defaults),this.index=this.settings.index,this.row=this.settings.row,this.column=this.settings.column,this.matrix=this.settings.matrix,this.interacting=!1,this.paintbrush=!1,this.init(),this.render()}return _inherits(MatrixCell,_ButtonTemplate),_createClass(MatrixCell,{buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.element.style.top="0px",this.element.style.left="0px",this.element.style.position="absolute",this.parent.appendChild(this.element)}},buildInterface:{value:function(){var _this=this;this.pad=svg.create("rect"),this.element.appendChild(this.pad),this.interactionTarget=this.pad,touch.exists||(this.click=function(){_this.matrix.interacting=!0,_this.matrix.paintbrush=!_this.state,_this.down(_this.matrix.paintbrush)},this.pad.addEventListener("mouseover",function(){_this.matrix.interacting&&_this.down(_this.matrix.paintbrush)}),this.move=function(){},this.pad.addEventListener("mousemove",function(e){_this.matrix.interacting&&(_this.offset||(_this.offset=dom.findPosition(_this.element)),_this.mouse=dom.locateMouse(e,_this.offset),_this.bend())}),this.release=function(){_this.matrix.interacting=!1},this.pad.addEventListener("mouseup",function(){_this.matrix.interacting&&_this.up()}),this.pad.addEventListener("mouseout",function(){_this.matrix.interacting&&_this.up()}))}},sizeInterface:{value:function(){this.pad.setAttribute("x",1),this.pad.setAttribute("y",1),this.width>2?this.pad.setAttribute("width",this.width-2):this.pad.setAttribute("width",this.width),this.height>2?this.pad.setAttribute("height",this.height-2):this.pad.setAttribute("height",this.height),this.pad.setAttribute("fill",this.matrix.colors.fill)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.matrix.colors.accent):this.pad.setAttribute("fill",this.matrix.colors.fill)}}}),MatrixCell}(ButtonTemplate),Sequencer=function(_Interface){function Sequencer(){_classCallCheck(this,Sequencer);var options=["value"],defaults={size:[400,200],mode:"toggle",rows:5,columns:10};_get(Object.getPrototypeOf(Sequencer.prototype),"constructor",this).call(this,arguments,options,defaults),this.active=-1,this.mode=this.settings.mode,this.interval=new Nexus.Interval(200,function(){},!1),this.matrix=new MatrixModel(this.settings.rows,this.settings.columns),this.matrix.ui=this,this.stepper=new CounterModel(0,this.columns),this.init()}return _inherits(Sequencer,_Interface),_createClass(Sequencer,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element),touch.exists&&this.addTouchListeners()}},buildInterface:{value:function(){this.cells=[];for(var i=0;i<this.matrix.length;i++){var _location=this.matrix.locate(i),container=document.createElement("span");container.style.position="absolute";var cell=new MatrixCell(container,{component:!0,index:i,row:_location.row,column:_location.column,mode:this.mode,matrix:this},this.keyChange.bind(this,i));touch.exists&&(cell.pad.index=i,cell.preClick=cell.preMove=cell.preRelease=function(){},cell.click=cell.move=cell.release=function(){},cell.preTouch=cell.preTouchMove=cell.preTouchRelease=function(){},cell.touch=cell.touchMove=cell.touchRelease=function(){}),this.cells.push(cell),this.element.appendChild(container)}this.sizeInterface()}},sizeInterface:{value:function(){for(var cellWidth=this.width/this.columns,cellHeight=this.height/this.rows,i=0;i<this.cells.length;i++){var container=this.cells[i].parent;container.style.left=this.cells[i].column*cellWidth+"px",container.style.top=this.cells[i].row*cellHeight+"px",this.cells[i].resize(cellWidth,cellHeight)}}},colorInterface:{value:function(){for(var i=0;i<this.cells.length;i++)this.cells[i].render()}},update:{value:function(){var _this=this;this.matrix.iterate(function(r,c,i){_this.matrix.pattern[r][c]!==_this.cells[i].state&&(_this.matrix.pattern[r][c]>0?_this.cells[i].turnOn():_this.cells[i].turnOff())})}},keyChange:{value:function(note,on){var cell=this.matrix.locate(note);this.matrix.pattern[cell.row][cell.column]=on;var data={row:cell.row,column:cell.column,state:on};this.emit("change",data)}},render:{value:function(){var _this=this;this.stepper.value>=0&&this.matrix.iterate(function(r,c,i){c===_this.stepper.value?(_this.cells[i].pad.setAttribute("stroke",_this.colors.mediumLight),_this.cells[i].pad.setAttribute("stroke-width","1"),_this.cells[i].pad.setAttribute("stroke-opacity","1")):_this.cells[i].pad.setAttribute("stroke","none")})}},start:{value:function(ms){this.interval.event=this.next.bind(this),ms&&this.interval.ms(ms),this.interval.start()}},stop:{value:function(){this.interval.stop()}},next:{value:function(){this.stepper.next(),this.emit("step",this.matrix.column(this.stepper.value).reverse()),this.render()}},addTouchListeners:{value:function(){var _this=this;this.preClick=this.preMove=this.preRelease=function(){},this.click=this.move=this.release=function(){},this.preTouch=this.preTouchMove=this.preTouchRelease=function(){},this.touch=this.touchMove=this.touchRelease=function(){},this.currentElement=!1,this.element.addEventListener("touchstart",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];_this.paintbrush=!cell.state,cell.down(_this.paintbrush),_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchmove",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];if(element.index!==_this.currentElement){if(_this.currentElement>=0){_this.cells[_this.currentElement].up()}cell.down(_this.paintbrush)}else cell.bend();_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchend",function(e){_this.cells[_this.currentElement].up(),_this.interacting=!1,_this.currentElement=!1,e.preventDefault(),e.stopPropagation()})}},rows:{get:function(){return this.matrix.rows},set:function(v){this.matrix.rows=v,this.empty(),this.buildInterface(),this.update()}},columns:{get:function(){return this.matrix.columns},set:function(v){this.matrix.columns=v,this.stepper.max=v,this.empty(),this.buildInterface(),this.update()}}}),Sequencer}(Interface);module.exports=Sequencer},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=_interopRequire(__webpack_require__(5)),Sequence=_interopRequire(__webpack_require__(26)),Matrix=function(){function Matrix(rows,columns){var _this=this;_classCallCheck(this,Matrix),this.pattern=[],this.create(rows,columns),this.toggle={cell:function(column,row){return _this.pattern[row][column]=!_this.pattern[row][column],_this.ui&&_this.ui.update(),_this.pattern[row][column]},all:function(){_this.iterate(function(r,c){_this.toggle.cell(c,r)}),_this.ui&&_this.ui.update()},row:function(row){for(var i=0;i<_this.columns;i++)_this.toggle.cell(i,row);_this.ui&&_this.ui.update()},column:function(column){for(var i=0;i<_this.rows;i++)_this.toggle.cell(column,i);_this.ui&&_this.ui.update()}},this.set={cell:function(column,row,value){_this.pattern[row][column]=value,_this.ui&&_this.ui.update()},all:function(values){_this.pattern=values,_this.ui&&_this.ui.update()},row:function(row,values){_this.pattern[row]=values,_this.ui&&_this.ui.update()},column:function(column,values){_this.pattern.forEach(function(row,i){_this.pattern[i][column]=values[i]}),_this.ui&&_this.ui.update()}},this.rotate={all:function(amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);for(var i=0;i<_this.rows;i++){var cut=_this.pattern[i].splice(_this.pattern[i].length-amount,amount);_this.pattern[i]=cut.concat(_this.pattern[i])}_this.ui&&_this.ui.update()},row:function(row,amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);var cut=_this.pattern[row].splice(_this.pattern[row].length-amount,amount);_this.pattern[row]=cut.concat(_this.pattern[row]),_this.ui&&_this.ui.update()},column:function(column,amount){amount||0===amount||(amount=1),(amount%=_this.pattern.length)<0&&(amount=_this.pattern.length+amount);var proxy=[];_this.pattern.forEach(function(row){proxy.push(row[column])});var cut=proxy.splice(proxy.length-amount,amount);proxy=cut.concat(proxy),_this.pattern.forEach(function(row,i){row[column]=proxy[i]}),_this.ui&&_this.ui.update()}},this.populate={all:function(odds){var oddsSequence=new Sequence(odds);_this.iterate(function(r,c){_this.pattern[r][c]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},row:function(){var row=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern[row].forEach(function(cell,i){_this.pattern[row][i]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},column:function(){var column=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern.forEach(function(row,i){_this.pattern[i][column]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()}},this.erase={all:function(){_this.set.all(0)},row:function(row){_this.set.row(row,0)},column:function(column){_this.set.column(column,0)}}}return _createClass(Matrix,{create:{value:function(rows,columns){var _this=this;this.pattern=[];for(var row=0;row<rows;row++){var arr=new Array(columns);this.pattern.push(arr)}this.iterate(function(r,c){_this.pattern[r][c]=!1})}},iterate:{value:function(f,f2){for(var i=0,row=0;row<this.rows;row++){f2&&f2(row);for(var column=0;column<this.columns;column++)f(row,column,i),i++}}},formatAsText:{value:function(){var _this=this,patternString="";return this.iterate(function(r,c){patternString+=(_this.pattern[r][c]?1:0)+" "},function(){patternString+="\n"}),patternString}},log:{value:function(){console.log(this.formatAsText())}},update:{value:function(pattern){this.pattern=pattern||this.pattern}},length:{get:function(){return this.rows*this.columns}},locate:{value:function(index){return{row:~~(index/this.columns),column:index%this.columns}}},indexOf:{value:function(row,column){return column+row*this.columns}},row:{value:function(_row){var _rowWrapper=function(_x){return _row.apply(this,arguments)};return _rowWrapper.toString=function(){return _row.toString()},_rowWrapper}(function(row){for(var data=[],i=0;i<this.columns;i++)data.push(this.pattern[row]?1:0);return data})},column:{value:function(_column){var _columnWrapper=function(_x2){return _column.apply(this,arguments)};return _columnWrapper.toString=function(){return _column.toString()},_columnWrapper}(function(column){for(var data=[],i=0;i<this.rows;i++)data.push(this.pattern[i][column]?1:0);return data})},rows:{get:function(){return this.pattern.length},set:function(v){var _this=this,previous=this.pattern.slice(0);this.create(v,this.columns),this.iterate(function(r,c){previous[r]&&previous[r][c]&&(_this.pattern[r][c]=previous[r][c])})}},columns:{get:function(){return this.pattern[0].length},set:function(v){var _this=this,previous=this.pattern.slice(0);this.create(this.rows,v),this.iterate(function(r,c){previous[r]&&previous[r][c]&&(_this.pattern[r][c]=previous[r][c])})}}}),Matrix}();module.exports=Matrix},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=_interopRequire(__webpack_require__(5)),Drunk=_interopRequire(__webpack_require__(27)),Sequence=function(){function Sequence(){var sequence=void 0===arguments[0]?[0,10,20,30]:arguments[0],mode=void 0===arguments[1]?"up":arguments[1],position=void 0!==arguments[2]&&arguments[2];_classCallCheck(this,Sequence),this.values=sequence,Array.isArray(this.values)||(this.values=[this.values]),this._mode=mode,this.position=position,this.drunkWalk=new Drunk(0,this.values.length-1),this.startValues={up:0,down:this.values.length-1,drunk:~~(this.values.length/2),random:math.ri(this.values.length)},!1!==this.position?this.next=this[this._mode]:this.next=this.first}return _createClass(Sequence,{mode:{get:function(){return this._mode},set:function(mode){if("up"!==mode&&"down"!==mode&&"random"!==mode&&"drunk"!==mode)return void console.error("The only modes currently allowed are: up, down, random, drunk");this._mode=mode,this.position&&(this.next=this[this._mode])}},value:{get:function(){return this.values[this.position]},set:function(v){this.position=this.values.indexOf(v)}},first:{value:function(){return!1!==this.position?(this.next=this[this._mode],this.next()):(this.position=this.startValues[this._mode],this.next=this[this._mode],this.value)}},up:{value:function(){return this.position++,this.position%=this.values.length,this.value}},down:{value:function(){return this.position--,this.position<0&&(this.position=(this.position+this.values.length)%this.values.length),this.value}},random:{value:function(){return this.position=math.ri(0,this.values.length),this.value}},drunk:{value:function(){return this.drunkWalk.max=this.values.length,this.drunkWalk.value=this.position,this.position=this.drunkWalk.next(),this.value}}}),Sequence}();module.exports=Sequence},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=function(obj){return obj&&obj.__esModule?obj.default:obj}(__webpack_require__(5)),Drunk=function(){function Drunk(){
var min=void 0===arguments[0]?0:arguments[0],max=void 0===arguments[1]?9:arguments[1],value=void 0===arguments[2]?0:arguments[2],increment=void 0===arguments[3]?1:arguments[3],loop=void 0!==arguments[4]&&arguments[4];_classCallCheck(this,Drunk),this.min=min,this.max=max,this.value=value,this.increment=increment,this.loop=loop}return _createClass(Drunk,{next:{value:function(){return this.value+=math.pick(-1*this.increment,this.increment),this.value>this.max&&(this.loop?this.value=this.min:this.value=this.max-this.increment),this.value<this.min&&(this.loop?this.value=this.max:this.value=this.min+this.increment),this.value}}}),Drunk}();module.exports=Drunk},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=_interopRequire(__webpack_require__(5)),Drunk=_interopRequire(__webpack_require__(27)),Counter=function(){function Counter(){var min=void 0===arguments[0]?0:arguments[0],max=void 0===arguments[1]?10:arguments[1],mode=void 0===arguments[2]?"up":arguments[2],value=void 0!==arguments[3]&&arguments[3];_classCallCheck(this,Counter),this.min=min,this.max=max,this.value=value,this.mode=mode,this.drunkWalk=new Drunk(this.min,this.max),!1!==this.value?this.next=this[this._mode]:this.next=this.first}return _createClass(Counter,{mode:{set:function(mode){if("up"!==mode&&"down"!==mode&&"random"!==mode&&"drunk"!==mode)return void console.error("The only modes currently allowed are: up, down, random, drunk");this._mode=mode,this.value&&(this.next=this[this._mode])},get:function(){return this._mode}},first:{value:function(){return!1!==this.value?(this.next=this[this._mode],this.next()):(this.startValues={up:this.min,down:this.max,drunk:~~math.average(this.min,this.max),random:math.ri(this.min,this.max)},this.value=this.startValues[this._mode],this.next=this[this._mode],this.value)}},up:{value:function(){return this.value++,this.value>=this.max&&(this.value=this.min),this.value}},down:{value:function(){return this.value--,this.value<this.min&&(this.value=this.max),this.value}},random:{value:function(){return this.value=math.ri(this.min,this.max),this.value}},drunk:{value:function(){return this.drunkWalk.min=this.min,this.drunkWalk.max=this.max,this.drunkWalk.value=this.value,this.value=this.drunkWalk.next(),this.value}}}),Counter}();module.exports=Counter},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),math=__webpack_require__(5),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Pan2D=function(_Interface){function Pan2D(){_classCallCheck(this,Pan2D);var options=["range"],defaults={size:[200,200],range:.5,mode:"absolute",speakers:[[.5,.2],[.75,.25],[.8,.5],[.75,.75],[.5,.8],[.25,.75],[.2,.5],[.25,.25]]};_get(Object.getPrototypeOf(Pan2D.prototype),"constructor",this).call(this,arguments,options,defaults),this.value={x:new Step(0,1,0,.5),y:new Step(0,1,0,.5)},this.mode=this.settings.mode,this.position={x:new Interaction.Handle(this.mode,"horizontal",[0,this.width],[this.height,0]),y:new Interaction.Handle(this.mode,"vertical",[0,this.width],[this.height,0])},this.position.x.value=this.value.x.normalized,this.position.y.value=this.value.y.normalized,this.speakers=this.settings.speakers,this.range=this.settings.range,this.levels=[],this.init(),this.calculateLevels(),this.render()}return _inherits(Pan2D,_Interface),_createClass(Pan2D,{buildInterface:{value:function(){this.knob=svg.create("circle"),this.element.appendChild(this.knob),this.speakerElements=[];for(var i=0;i<this.speakers.length;i++){var speakerElement=svg.create("circle");this.element.appendChild(speakerElement),this.speakerElements.push(speakerElement)}}},sizeInterface:{value:function(){this._minDimension=Math.min(this.width,this.height),this.knobRadius={off:3*~~(this._minDimension/100)+5},this.knobRadius.on=2*this.knobRadius.off,this.knob.setAttribute("cx",this.width/2),this.knob.setAttribute("cy",this.height/2),this.knob.setAttribute("r",this.knobRadius.off);for(var i=0;i<this.speakers.length;i++){var speakerElement=this.speakerElements[i],speaker=this.speakers[i];speakerElement.setAttribute("cx",speaker[0]*this.width),speakerElement.setAttribute("cy",speaker[1]*this.height),speakerElement.setAttribute("r",this._minDimension/20+5),speakerElement.setAttribute("fill-opacity","0")}this.position.x.resize([0,this.width],[this.height,0]),this.position.y.resize([0,this.width],[this.height,0]),this.calculateLevels(),this.render()}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.fill,this.knob.setAttribute("fill",this.colors.mediumLight);for(var i=0;i<this.speakers.length;i++){var speakerElement=this.speakerElements[i];speakerElement.setAttribute("fill",this.colors.accent),speakerElement.setAttribute("stroke",this.colors.accent)}}},render:{value:function(){this.knobCoordinates={x:this.value.x.normalized*this.width,y:this.height-this.value.y.normalized*this.height},this.knob.setAttribute("cx",this.knobCoordinates.x),this.knob.setAttribute("cy",this.knobCoordinates.y)}},click:{value:function(){this.position.x.anchor=this.mouse,this.position.y.anchor=this.mouse,this.move()}},move:{value:function(){this.clicked&&(this.position.x.update(this.mouse),this.position.y.update(this.mouse),this.calculateLevels(),this.emit("change",this.levels),this.render())}},release:{value:function(){this.render()}},normalized:{get:function(){return{x:this.value.x.normalized,y:this.value.y.normalized}}},calculateLevels:{value:function(){var _this=this;this.value.x.updateNormal(this.position.x.value),this.value.y.updateNormal(this.position.y.value),this.levels=[],this.speakers.forEach(function(s,i){var distance=math.distance(s[0]*_this.width,s[1]*_this.height,_this.position.x.value*_this.width,(1-_this.position.y.value)*_this.height),level=math.clip(1-distance/(_this.range*_this.width),0,1);_this.levels.push(level),_this.speakerElements[i].setAttribute("fill-opacity",level)})}},moveSource:{value:function(x,y){var location={x:x*this.width,y:y*this.height};this.position.x.update(location),this.position.y.update(location),this.calculateLevels(),this.emit("change",this.levels),this.render()}},moveSpeaker:{value:function(index,x,y){this.speakers[index]=[x,y],this.speakerElements[index].setAttribute("cx",x*this.width),this.speakerElements[index].setAttribute("cy",y*this.height),this.calculateLevels(),this.emit("change",this.levels),this.render()}}}),Pan2D}(Interface);module.exports=Pan2D},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=__webpack_require__(5),svg=__webpack_require__(4),Interface=__webpack_require__(6),Tilt=function(_Interface){function Tilt(){_classCallCheck(this,Tilt);var options=["value"],defaults={size:[80,80]};_get(Object.getPrototypeOf(Tilt.prototype),"constructor",this).call(this,arguments,options,defaults),this._active=!0,this.init(),this.boundUpdate=this.update.bind(this),window.DeviceOrientationEvent?this.orientationListener=window.addEventListener("deviceorientation",this.boundUpdate,!1):(this._active=!1,this.colorInterface())}return _inherits(Tilt,_Interface),_createClass(Tilt,{buildInterface:{value:function(){this.title=svg.create("text"),this.circleX=svg.create("circle"),this.circleY=svg.create("circle"),this.circleZ=svg.create("circle"),this.barX=svg.create("path"),this.barY=svg.create("path"),this.barZ=svg.create("path"),this.barX2=svg.create("path"),this.barY2=svg.create("path"),this.barZ2=svg.create("path"),this.barX.setAttribute("opacity","0.8"),this.barY.setAttribute("opacity","0.8"),this.barZ.setAttribute("opacity","0.8"),this.barX2.setAttribute("opacity","0.8"),this.barY2.setAttribute("opacity","0.8"),this.barZ2.setAttribute("opacity","0.8"),this.circleX.setAttribute("cx",3*this.width/12),this.circleX.setAttribute("cy",3*this.height/4),this.circleX.setAttribute("r",this.height/10),this.circleX.setAttribute("opacity","0.4"),this.circleY.setAttribute("cx",6*this.width/12),this.circleY.setAttribute("cy",3*this.height/4),this.circleY.setAttribute("r",this.height/10),this.circleY.setAttribute("opacity","0.4"),this.circleZ.setAttribute("cx",9*this.width/12),this.circleZ.setAttribute("cy",3*this.height/4),this.circleZ.setAttribute("r",this.height/10),this.circleZ.setAttribute("opacity","0.4"),this.barX.setAttribute("stroke-width",Math.round(this.height/30)),this.barY.setAttribute("stroke-width",Math.round(this.height/30)),this.barZ.setAttribute("stroke-width",Math.round(this.height/30)),this.barX.setAttribute("fill","none"),this.barY.setAttribute("fill","none"),this.barZ.setAttribute("fill","none"),this.barX2.setAttribute("stroke-width",Math.round(this.height/30)),this.barY2.setAttribute("stroke-width",Math.round(this.height/30)),this.barZ2.setAttribute("stroke-width",Math.round(this.height/30)),this.barX2.setAttribute("fill","none"),this.barY2.setAttribute("fill","none"),this.barZ2.setAttribute("fill","none"),this.title.setAttribute("x",this.width/2),this.title.setAttribute("y",this.height/3+7),this.title.setAttribute("font-size","15px"),this.title.setAttribute("font-weight","bold"),this.title.setAttribute("letter-spacing","2px"),this.title.setAttribute("opacity","0.7"),this.title.setAttribute("text-anchor","middle"),this.title.textContent="TILT",this.element.appendChild(this.circleX),this.element.appendChild(this.circleY),this.element.appendChild(this.circleZ),this.element.appendChild(this.barX),this.element.appendChild(this.barY),this.element.appendChild(this.barZ),this.element.appendChild(this.barX2),this.element.appendChild(this.barY2),this.element.appendChild(this.barZ2),this.element.appendChild(this.title)}},colorInterface:{value:function(){this._active?(this.element.style.backgroundColor=this.colors.accent,this.circleX.setAttribute("fill",this.colors.light),this.circleY.setAttribute("fill",this.colors.light),this.circleZ.setAttribute("fill",this.colors.light),this.circleX.setAttribute("stroke",this.colors.light),this.circleY.setAttribute("stroke",this.colors.light),this.circleZ.setAttribute("stroke",this.colors.light),this.barX.setAttribute("stroke",this.colors.light),this.barY.setAttribute("stroke",this.colors.light),this.barZ.setAttribute("stroke",this.colors.light),this.barX2.setAttribute("stroke",this.colors.light),this.barY2.setAttribute("stroke",this.colors.light),this.barZ2.setAttribute("stroke",this.colors.light),this.title.setAttribute("fill",this.colors.light)):(this.element.style.backgroundColor=this.colors.fill,this.circleX.setAttribute("fill",this.colors.mediumLight),this.circleY.setAttribute("fill",this.colors.mediumLight),this.circleZ.setAttribute("fill",this.colors.mediumLight),this.circleX.setAttribute("stroke",this.colors.mediumLight),this.circleY.setAttribute("stroke",this.colors.mediumLight),this.circleZ.setAttribute("stroke",this.colors.mediumLight),this.barX.setAttribute("stroke",this.colors.mediumLight),this.barY.setAttribute("stroke",this.colors.mediumLight),this.barZ.setAttribute("stroke",this.colors.mediumLight),this.barX2.setAttribute("stroke",this.colors.mediumLight),this.barY2.setAttribute("stroke",this.colors.mediumLight),this.barZ2.setAttribute("stroke",this.colors.mediumLight),this.title.setAttribute("fill",this.colors.mediumLight))}},update:{value:function(v){if(this._active){var y=v.beta,x=v.gamma,z=v.alpha;x=math.scale(x,-90,90,0,1),y=math.scale(y,-90,90,0,1),z=math.scale(z,0,360,0,1);var handlePoints={start:1.5*Math.PI,end:math.clip(math.scale(x,0,.5,1.5*Math.PI,.5*Math.PI),.5*Math.PI,1.5*Math.PI)},handle2Points={start:2.5*Math.PI,end:math.clip(math.scale(x,.5,1,2.5*Math.PI,1.5*Math.PI),1.5*Math.PI,2.5*Math.PI)},handlePath=svg.arc(this.circleX.cx.baseVal.value,this.circleX.cy.baseVal.value,this.circleX.r.baseVal.value,handlePoints.start,handlePoints.end),handle2Path=svg.arc(this.circleX.cx.baseVal.value,this.circleX.cy.baseVal.value,this.circleX.r.baseVal.value,handle2Points.start,handle2Points.end);this.barX.setAttribute("d",handlePath),this.barX2.setAttribute("d",handle2Path),handlePoints={start:1.5*Math.PI,end:math.clip(math.scale(y,0,.5,1.5*Math.PI,.5*Math.PI),.5*Math.PI,1.5*Math.PI)},handle2Points={start:2.5*Math.PI,end:math.clip(math.scale(y,.5,1,2.5*Math.PI,1.5*Math.PI),1.5*Math.PI,2.5*Math.PI)},handlePath=svg.arc(this.circleY.cx.baseVal.value,this.circleY.cy.baseVal.value,this.circleY.r.baseVal.value,handlePoints.start,handlePoints.end),handle2Path=svg.arc(this.circleY.cx.baseVal.value,this.circleY.cy.baseVal.value,this.circleY.r.baseVal.value,handle2Points.start,handle2Points.end),this.barY.setAttribute("d",handlePath),this.barY2.setAttribute("d",handle2Path),handlePoints={start:1.5*Math.PI,end:math.clip(math.scale(z,0,.5,1.5*Math.PI,.5*Math.PI),.5*Math.PI,1.5*Math.PI)},handle2Points={start:2.5*Math.PI,end:math.clip(math.scale(z,.5,1,2.5*Math.PI,1.5*Math.PI),1.5*Math.PI,2.5*Math.PI)},handlePath=svg.arc(this.circleZ.cx.baseVal.value,this.circleZ.cy.baseVal.value,this.circleZ.r.baseVal.value,handlePoints.start,handlePoints.end),handle2Path=svg.arc(this.circleZ.cx.baseVal.value,this.circleZ.cy.baseVal.value,this.circleZ.r.baseVal.value,handle2Points.start,handle2Points.end),this.barZ.setAttribute("d",handlePath),this.barZ2.setAttribute("d",handle2Path),this.emit("change",{x:x,y:y,z:z})}}},click:{value:function(){window.DeviceOrientationEvent&&(this.active=!this.active)}},active:{get:function(){return this._active},set:function(on){this._active=on,this.colorInterface()}},customDestroy:{value:function(){window.removeEventListener("deviceorientation",this.boundUpdate,!1)}}}),Tilt}(Interface);module.exports=Tilt},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),math=__webpack_require__(5),Interface=__webpack_require__(6),SliderTemplate=__webpack_require__(32),touch=__webpack_require__(9),SingleSlider=function(_SliderTemplate){function SingleSlider(){var _this=this;_classCallCheck(this,SingleSlider);var options=["scale","value"],defaults={size:[120,20],orientation:"vertical",mode:"absolute",scale:[0,1],step:0,value:0,hasKnob:!0};_get(Object.getPrototypeOf(SingleSlider.prototype),"constructor",this).call(this,arguments,options,defaults),touch.exists||(this.click=function(){_this.multislider.interacting=!0,_this.multislider.interpolation={index:_this.index,value:_this.value},_this.down(),_this.multislider.values[_this.index]=_this.value},this.element.addEventListener("mouseover",function(e){if(_this.multislider.interacting){if(_this.offset||(_this.offset=dom.findPosition(_this.element)),_this.mouse=dom.locateMouse(e,_this.offset),_this.down(),_this.multislider.values[_this.index]=_this.value,_this.multislider.interpolation){var distance=Math.abs(_this.multislider.interpolation.index-_this.index);if(distance>1)for(var low=Math.min(_this.multislider.interpolation.index,_this.index),high=Math.max(_this.multislider.interpolation.index,_this.index),lowValue=_this.multislider.sliders[low].value,highValue=_this.multislider.sliders[high].value,i=low;i<high;i++)_this.multislider.sliders[i].value=math.interp((i-low)/distance,lowValue,highValue)}_this.multislider.interpolation={index:_this.index,value:_this.value}}}),this.move=function(){},this.element.addEventListener("mousemove",function(e){_this.multislider.interacting&&(_this.offset||(_this.offset=dom.findPosition(_this.element)),_this.mouse=dom.locateMouse(e,_this.offset),_this.slide(),_this.multislider.values[_this.index]=_this.value)}),this.release=function(){_this.multislider.interacting=!1,_this.multislider.interpolation=!1},this.element.addEventListener("mouseup",function(){_this.multislider.interacting&&(_this.up(),_this.multislider.interpolation=!1,_this.multislider.values[_this.index]=_this.value)}),this.element.addEventListener("mouseout",function(){_this.multislider.interacting&&(_this.up(),_this.multislider.values[_this.index]=_this.value)})),this.customStyle()}return _inherits(SingleSlider,_SliderTemplate),_createClass(SingleSlider,{customStyle:{value:function(){this.bar.setAttribute("x",0),this.bar.setAttribute("transform","translate(0,0)"),this.bar.setAttribute("rx",0),this.bar.setAttribute("ry",0),this.bar.setAttribute("width",this.width),this.bar.setAttribute("height",this.height),this.fillbar.setAttribute("x",0),this.fillbar.setAttribute("transform","translate(0,0)"),this.fillbar.setAttribute("rx",0),this.fillbar.setAttribute("ry",0),this.fillbar.setAttribute("width",this.width),this.fillbar.setAttribute("height",this.height)}}}),SingleSlider}(SliderTemplate),Multislider=function(_Interface){function Multislider(){_classCallCheck(this,Multislider);var options=["value"],defaults={size:[200,100],numberOfSliders:5,min:0,max:1,step:0,values:[.7,.7,.7,.7,.7]};_get(Object.getPrototypeOf(Multislider.prototype),"constructor",this).call(this,arguments,options,defaults),this._numberOfSliders=this.settings.numberOfSliders,this.values=this.settings.values,this.sliders=[],this.interacting=!1,this.init()}return _inherits(Multislider,_Interface),_createClass(Multislider,{buildFrame:{value:function(){this.element=document.createElement("div"),this.parent.appendChild(this.element)}},buildInterface:{value:function(){var min=this.settings.min,max=this.settings.max,step=this.settings.step;this.sliders.length&&(min=this.sliders[0].min,max=this.sliders[0].max,step=this.sliders[0].step),this.sliders=[];for(var i=0;i<this._numberOfSliders;i++){var container=document.createElement("span"),slider=new SingleSlider(container,{scale:[min,max],step:step,mode:"absolute",orientation:"vertical",value:this.values[i],hasKnob:!1,component:!0},this.update.bind(this,i));slider.multislider=this,slider.index=i,touch.exists&&(slider.bar.index=i,slider.fillbar.index=i,slider.preClick=slider.preMove=slider.preRelease=function(){},slider.click=slider.move=slider.release=function(){},slider.preTouch=slider.preTouchMove=slider.preTouchRelease=function(){},slider.touch=slider.touchMove=slider.touchRelease=function(){}),this.sliders.push(slider),this.element.appendChild(container)}touch.exists&&this.addTouchListeners()}},colorInterface:{value:function(){for(var i=0;i<this.sliders.length;i++)this.sliders[i].colors=this.colors,this.sliders[i].colorInterface()}},sizeInterface:{value:function(){for(var sliderWidth=this.width/this.sliders.length,sliderHeight=this.height,i=0;i<this.sliders.length;i++)this.sliders[i].resize(sliderWidth,sliderHeight),this.sliders[i].customStyle()}},update:{value:function(index,value){this.emit("change",{index:index,value:value})}},addTouchListeners:{value:function(){var _this=this;this.preClick=this.preMove=this.preRelease=function(){},this.click=this.move=this.release=function(){},this.preTouch=this.preTouchMove=this.preTouchRelease=function(){},this.touch=this.touchMove=this.touchRelease=function(){},this.currentElement=!1,this.element.addEventListener("touchstart",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),slider=_this.sliders[element.index];slider.offset||(slider.offset=dom.findPosition(slider.element)),slider.mouse=dom.locateMouse(e,slider.offset),slider.down(),_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchmove",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),slider=_this.sliders[element.index];if(slider.offset||(slider.offset=dom.findPosition(slider.element)),slider.mouse=dom.locateMouse(e,slider.offset),element.index!==_this.currentElement){if(_this.currentElement>=0){_this.sliders[_this.currentElement].up()}slider.down()}else slider.slide();_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchend",function(e){_this.sliders[_this.currentElement].up(),_this.interacting=!1,_this.currentElement=!1,e.preventDefault(),e.stopPropagation()})}},numberOfSliders:{get:function(){return this.sliders.length},set:function(v){v!==this.sliders.length&&(this.sliders.forEach(function(slider){slider.destroy()}),this.empty(),this._numberOfSliders=v,this.buildInterface())}},min:{get:function(){return this.sliders[0].min},set:function(v){this.sliders.forEach(function(slider){slider.min=v})}},max:{get:function(){return this.sliders[0].max},set:function(v){this.sliders.forEach(function(slider){slider.max=v})}},step:{get:function(){return this.sliders[0].step},set:function(v){this.sliders.forEach(function(slider){slider.step=v})}},setSlider:{value:function(index,value){this.sliders[index].value=value,this.emit("change",{index:index,value:value})}},setAllSliders:{value:function(values){var _this=this;this.values=values,this.sliders.forEach(function(slider,i){slider.value=values[i%values.length],_this.emit("change",{index:i,value:slider.value})})}}}),Multislider}(Interface);module.exports=Multislider},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),SliderTemplate=function(_Interface){function SliderTemplate(args,options,defaults){_classCallCheck(this,SliderTemplate),_get(Object.getPrototypeOf(SliderTemplate.prototype),"constructor",this).call(this,args,options,defaults),this.orientation=this.settings.orientation,this.hasKnob=this.settings.hasKnob,this._value=new Step(this.settings.scale[0],this.settings.scale[1],this.settings.step,this.settings.value),this.init(),this.position=new Interaction.Handle(this.settings.mode,this.orientation,[0,this.width],[this.height,0]),this.position.value=this._value.normalized,this.value=this._value.value,this.emit("change",this.value)}return _inherits(SliderTemplate,_Interface),_createClass(SliderTemplate,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.fillbar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.fillbar),this.element.appendChild(this.knob),this.sizeInterface()}},sizeInterface:{value:function(){this.settings.orientation||(this.width<this.height?this.orientation="vertical":this.orientation="horizontal");var x=void 0,y=void 0,w=void 0,h=void 0,barOffset=void 0,cornerRadius=void 0;this.knobData={level:0,r:0},"vertical"===this.orientation?(this.thickness=this.width/2,x=this.width/2,y=0,w=this.thickness,h=this.height,this.knobData.r=.8*this.thickness,this.knobData.level=h-this.normalized*h,barOffset="translate("+-1*this.thickness/2+",0)",cornerRadius=w/2):(this.thickness=this.height/2,x=0,y=this.height/2,w=this.width,h=this.thickness,this.knobData.r=.8*this.thickness,this.knobData.level=this.normalized*w,barOffset="translate(0,"+-1*this.thickness/2+")",cornerRadius=h/2),this.bar.setAttribute("x",x),this.bar.setAttribute("y",y),this.bar.setAttribute("transform",barOffset),this.bar.setAttribute("rx",cornerRadius),this.bar.setAttribute("ry",cornerRadius),this.bar.setAttribute("width",w),this.bar.setAttribute("height",h),"vertical"===this.orientation?(this.fillbar.setAttribute("x",x),this.fillbar.setAttribute("y",this.knobData.level),this.fillbar.setAttribute("width",w),this.fillbar.setAttribute("height",h-this.knobData.level)):(this.fillbar.setAttribute("x",0),this.fillbar.setAttribute("y",y),this.fillbar.setAttribute("width",this.knobData.level),this.fillbar.setAttribute("height",h)),this.fillbar.setAttribute("transform",barOffset),this.fillbar.setAttribute("rx",cornerRadius),this.fillbar.setAttribute("ry",cornerRadius),"vertical"===this.orientation?(this.knob.setAttribute("cx",x),this.knob.setAttribute("cy",this.knobData.level)):(this.knob.setAttribute("cx",this.knobData.level),this.knob.setAttribute("cy",y)),this.knob.setAttribute("r",this.knobData.r),this.position&&this.position.resize([0,this.width],[this.height,0])}},colorInterface:{value:function(){this.bar.setAttribute("fill",this.colors.fill),this.fillbar.setAttribute("fill",this.colors.accent),this.knob.setAttribute("fill",this.colors.accent),this.hasKnob||this.knob.setAttribute("fill","none")}},render:{value:function(){this.clicked||(this.knobData.r=.75*this.thickness),this.knob.setAttribute("r",this.knobData.r),"vertical"===this.orientation?(this.knobData.level=this._value.normalized*this.height,this.knob.setAttribute("cy",this.height-this.knobData.level),this.fillbar.setAttribute("y",this.height-this.knobData.level),this.fillbar.setAttribute("height",this.knobData.level)):(this.knobData.level=this._value.normalized*this.width,this.knob.setAttribute("cx",this.knobData.level),this.fillbar.setAttribute("x",0),this.fillbar.setAttribute("width",this.knobData.level))}},down:{value:function(){this.clicked=!0,this.knobData.r=.9*this.thickness,this.position.anchor=this.mouse,this.slide()}},slide:{value:function(){this.clicked&&(this.position.update(this.mouse),this.value=this._value.updateNormal(this.position.value),this.emit("change",this.value))}},up:{value:function(){this.clicked=!1,this.render()}},normalized:{get:function(){return this._value.normalized}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.position.value=this._value.normalized,this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}},mode:{get:function(){return this.position.mode},set:function(v){this.position.mode=v}}}),SliderTemplate}(Interface);module.exports=SliderTemplate},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){
if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),math=__webpack_require__(5),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Pan=function(_Interface){function Pan(){_classCallCheck(this,Pan);var options=["scale","value"],defaults={size:[120,20],orientation:"horizontal",mode:"relative",scale:[-1,1],step:0,value:0,hasKnob:!0};_get(Object.getPrototypeOf(Pan.prototype),"constructor",this).call(this,arguments,options,defaults),this.orientation=this.settings.orientation,this.mode=this.settings.mode,this.hasKnob=this.settings.hasKnob,this.step=this.settings.step,this._value=new Step(this.settings.scale[0],this.settings.scale[1],this.settings.step,this.settings.value),this.init(),this.position=new Interaction.Handle(this.mode,this.orientation,[0,this.width],[this.height,0]),this.position.value=this._value.normalized,this.value=this._value.value,this.emit("change",this.value)}return _inherits(Pan,_Interface),_createClass(Pan,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.position&&this.position.resize([0,this.width],[this.height,0]),this.width<this.height?this.orientation="vertical":this.orientation="horizontal";var x=void 0,y=void 0,w=void 0,h=void 0,barOffset=void 0,cornerRadius=void 0;this.knobData={level:0,r:0},"vertical"===this.orientation?(this.thickness=this.width/2,x=this.width/2,y=0,w=this.thickness,h=this.height,this.knobData.r=.8*this.thickness,this.knobData.level=h-this.knobData.r-this.normalized*(h-2*this.knobData.r),barOffset="translate("+-1*this.thickness/2+",0)",cornerRadius=w/2):(this.thickness=this.height/2,x=0,y=this.height/2,w=this.width,h=this.thickness,this.knobData.r=.8*this.thickness,this.knobData.level=this.normalized*(w-2*this.knobData.r)+this.knobData.r,barOffset="translate(0,"+-1*this.thickness/2+")",cornerRadius=h/2),this.bar.setAttribute("x",x),this.bar.setAttribute("y",y),this.bar.setAttribute("transform",barOffset),this.bar.setAttribute("rx",cornerRadius),this.bar.setAttribute("ry",cornerRadius),this.bar.setAttribute("width",w),this.bar.setAttribute("height",h),"vertical"===this.orientation?(this.knob.setAttribute("cx",x),this.knob.setAttribute("cy",this.knobData.level)):(this.knob.setAttribute("cx",this.knobData.level),this.knob.setAttribute("cy",y)),this.knob.setAttribute("r",this.knobData.r)}},colorInterface:{value:function(){this.bar.setAttribute("fill",this.colors.fill),this.knob.setAttribute("fill",this.colors.accent),this.hasKnob||this.knob.setAttribute("fill","transparent")}},render:{value:function(){this.clicked||(this.knobData.r=.75*this.thickness),this.knob.setAttribute("r",this.knobData.r),"vertical"===this.orientation?(this.knobData.level=this.knobData.r+this._value.normalized*(this.height-2*this.knobData.r),this.knob.setAttribute("cy",this.height-this.knobData.level)):(this.knobData.level=this._value.normalized*(this.width-2*this.knobData.r)+this.knobData.r,this.knob.setAttribute("cx",this.knobData.level))}},click:{value:function(){this.knobData.r=.9*this.thickness,this.position.anchor=this.mouse,this.move()}},move:{value:function(){this.clicked&&(this.position.update(this.mouse),this.value=this._value.updateNormal(this.position.value),this.emit("change",{value:this.value,L:Math.pow(math.scale(this.value,-1,1,1,0),2),R:Math.pow(math.scale(this.value,-1,1,0,1),2)}))}},release:{value:function(){this.render()}},value:{get:function(){return this._value.value},set:function(value){this._value.update(value),this.position.value=this._value.normalized,this.emit("change",{value:this.value,L:Math.pow(math.scale(this.value,-1,1,1,0),2),R:Math.pow(math.scale(this.value,-1,1,0,1),2)}),this.render()}},normalized:{get:function(){return this._value.normalized}}}),Pan}(Interface);module.exports=Pan},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=__webpack_require__(5),svg=__webpack_require__(4),Interface=__webpack_require__(6),Point=function(point,envelope){this.x=point.x,this.y=point.y,this.envelope=envelope,this.element=svg.create("circle"),this.element.setAttribute("fill",this.envelope.colors.accent),this.envelope.element.appendChild(this.element),this.resize=function(){var r=2+~~(Math.min(this.envelope.width,this.envelope.height)/50);this.element.setAttribute("r",r)},this.move=function(x,y){if(this.x=x||0===x?x:this.x,this.y=y||0===y?y:this.y,this.envelope.nodes.indexOf(this)>=0){var prevIndex=this.envelope.nodes.indexOf(this)-1,nextIndex=this.envelope.nodes.indexOf(this)+1,prevNode=this.envelope.nodes[prevIndex],nextNode=this.envelope.nodes[nextIndex],lowX=prevIndex>=0?prevNode.x:0,highX=nextIndex<this.envelope.nodes.length?nextNode.x:1;this.x<lowX&&(this.x=lowX),this.x>highX&&(this.x=highX)}this.location=this.getCoordinates(),this.element.setAttribute("cx",this.location.x),this.element.setAttribute("cy",this.location.y)},this.getCoordinates=function(){return{x:this.x*this.envelope.width,y:(1-this.y)*this.envelope.height}},this.move(this.x,this.y,!0),this.resize(),this.destroy=function(){this.envelope.element.removeChild(this.element),this.envelope.nodes.splice(this.envelope.nodes.indexOf(this),1)}},Envelope=function(_Interface){function Envelope(){_classCallCheck(this,Envelope);var options=["value"],defaults={size:[300,150],points:[{x:.1,y:.4},{x:.35,y:.6},{x:.65,y:.2},{x:.9,y:.4}]};_get(Object.getPrototypeOf(Envelope.prototype),"constructor",this).call(this,arguments,options,defaults),this.points=this.settings.points,this.nodes=[],this.selected=!1,this.init()}return _inherits(Envelope,_Interface),_createClass(Envelope,{buildInterface:{value:function(){var _this=this;this.points.forEach(function(point){var node=new Point(point,_this);_this.nodes.push(node)}),this.sortPoints(),this.line=svg.create("polyline"),this.line.setAttribute("stroke-width",2),this.line.setAttribute("fill","none"),this.element.appendChild(this.line),this.fill=svg.create("polyline"),this.fill.setAttribute("fill-opacity","0.2"),this.element.appendChild(this.fill)}},sizeInterface:{value:function(){for(var i=0;i<this.nodes.length;i++)this.nodes[i].resize(),this.nodes[i].move();this.render()}},colorInterface:{value:function(){var _this=this;this.element.style.backgroundColor=this.colors.fill,this.line.setAttribute("stroke",this.colors.accent),this.fill.setAttribute("fill",this.colors.accent),this.nodes.forEach(function(node){node.element.setAttribute("fill",_this.colors.accent)})}},render:{value:function(){this.calculatePath()}},calculatePoints:{value:function(){var _this=this;this.points=[],this.nodes.forEach(function(node){_this.points.push({x:node.x,y:node.y})})}},calculatePath:{value:function(){var data="0 "+this.nodes[0].location.y+", ";this.nodes.forEach(function(node){data+=node.location.x+" "+node.location.y+", "}),data+=this.width+" "+this.nodes[this.nodes.length-1].location.y,this.line.setAttribute("points",data),data+=", "+this.width+" "+this.height+", ",data+="0 "+this.height,this.fill.setAttribute("points",data)}},click:{value:function(){this.hasMoved=!1,this.selected=this.findNearestNode(),this.nodes[this.selected].move(this.mouse.x/this.width,1-this.mouse.y/this.height),this.scaleNode(this.selected),this.calculatePoints(),this.emit("change",this.points),this.render()}},move:{value:function(){this.clicked&&(this.mouse.x=math.clip(this.mouse.x,0,this.width),this.hasMoved=!0,this.nodes[this.selected].move(this.mouse.x/this.width,1-this.mouse.y/this.height),this.scaleNode(this.selected),this.calculatePoints(),this.emit("change",this.points),this.render())}},release:{value:function(){this.hasMoved||this.nodes[this.selected].destroy(),this.calculatePoints(),this.emit("change",this.points),this.render(),this.selected=null}},findNearestNode:{value:function(){for(var nearestIndex=null,nearestDist=1e4,x=this.mouse.x/this.width,y=1-this.mouse.y/this.height,nodes=this.nodes,i=0;i<nodes.length;i++){var distance=Math.sqrt(Math.pow(nodes[i].x-x,2)+Math.pow(nodes[i].y-y,2));distance<nearestDist&&(nearestDist=distance,nearestIndex=i,x>nodes[i].x)}return nearestDist>.07&&(nearestIndex=this.getIndexFromX(this.mouse.x/this.width),this.nodes.splice(nearestIndex,0,new Point({x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this)),this.hasMoved=!0),nearestIndex}},getIndexFromX:{value:function(x){var _this=this,index=0;return this.nodes.forEach(function(node,i){_this.nodes[i].x<=x&&(index=i+1)}),index}},scaleNode:{value:function(i){var clippedX=math.clip(this.nodes[i].x,0,1),clippedY=math.clip(this.nodes[i].y,0,1);this.nodes[i].move(clippedX,clippedY)}},sortPoints:{value:function(){this.nodes.sort(function(a,b){return a.x>b.x})}},addPoint:{value:function(x,y){var index=this.nodes.length;this.sortPoints();for(var i=0;i<this.nodes.length;i++)if(x<this.nodes[i].x){index=i;break}this.nodes.splice(index,0,new Point({x:x,y:y},this)),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},scan:{value:function(x){var nextIndex=this.getIndexFromX(x),priorIndex=nextIndex-1;priorIndex<0&&(priorIndex=0),nextIndex>=this.nodes.length&&(nextIndex=this.nodes.length-1);var priorPoint=this.nodes[priorIndex],nextPoint=this.nodes[nextIndex],loc=math.scale(x,priorPoint.x,nextPoint.x,0,1),value=math.interp(loc,priorPoint.y,nextPoint.y);return this.emit("scan",value),value}},movePoint:{value:function(index,x,y){this.nodes[index].move(x,y),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},adjustPoint:{value:function(index,xOffset,yOffset){this.nodes[index].move(this.nodes[index].x+xOffset,this.nodes[index].y+yOffset),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},destroyPoint:{value:function(index){this.nodes[index].destroy(),this.calculatePoints(),this.emit("change",this.points),this.render()}},setPoints:{value:function(allPoints){for(var _this=this;this.nodes.length;)this.nodes[0].destroy();allPoints.forEach(function(point){_this.addPoint(point.x,point.y)}),this.calculatePoints(),this.emit("change",this.points),this.render()}}}),Envelope}(Interface);module.exports=Envelope},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Spectrogram=function(_Interface){function Spectrogram(){_classCallCheck(this,Spectrogram);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Spectrogram.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.active=!0,this.source=!1,this.init()}return _inherits(Spectrogram,_Interface),_createClass(Spectrogram,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteFrequencyData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.source&&this.dataArray)for(var barWidth=this.canvas.element.width/this.bufferLength,barHeight=void 0,x=0,definition=this.canvas.element.width/50,i=0;i<this.bufferLength;i+=definition)barHeight=Math.max.apply(null,this.dataArray.subarray(i,i+definition)),barHeight/=255,barHeight*=this.canvas.element.height,this.canvas.context.fillStyle=this.colors.accent,this.canvas.context.fillRect(x,this.canvas.element.height-barHeight,barWidth*definition,barHeight),x+=barWidth*definition}},connect:{value:function(node){this.source&&this.disconnect(),this.source=node,this.source.connect(this.analyser),this.render()}},disconnect:{value:function(){this.source.disconnect(this.analyser),this.source=null}},click:{value:function(){this.active=!this.active,this.render()}},customDestroy:{value:function(){this.active=!1}}}),Spectrogram}(Interface);module.exports=Spectrogram},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),math=__webpack_require__(5),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Meter=function(_Interface){function Meter(){_classCallCheck(this,Meter);var options=["scale","value"],defaults={size:[30,100]};_get(Object.getPrototypeOf(Meter.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.channels=2,this.splitter=this.context.createChannelSplitter(this.channels),this.analysers=[];for(var i=0;i<this.channels;i++){var analyser=this.context.createAnalyser();this.splitter.connect(analyser,i),analyser.fftSize=1024,analyser.smoothingTimeConstant=1,this.analysers.push(analyser)}this.bufferLength=this.analysers[0].frequencyBinCount,this.dataArray=new Float32Array(this.bufferLength),this.active=!0,this.db=-1/0,this.init(),this.meterWidth=this.canvas.element.width/this.channels,this.render()}return _inherits(Meter,_Interface),_createClass(Meter,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){this.active&&requestAnimationFrame(this.render.bind(this)),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height);for(var i=0;i<this.analysers.length;i++){if(this.source){this.analysers[i].getFloatTimeDomainData(this.dataArray);for(var rms=0,_i=0;_i<this.dataArray.length;_i++)rms+=this.dataArray[_i]*this.dataArray[_i];rms=Math.sqrt(rms/this.dataArray.length),this.db=20*Math.log10(rms)}else this.db>-200&&this.db!==-1/0?this.db-=1:this.db=-1/0;if(this.db>-70){var linear=math.normalize(this.db,-70,5),exp=linear*linear,y=math.scale(exp,0,1,this.element.height,0);this.canvas.context.fillStyle=this.colors.accent,this.canvas.context.fillRect(this.meterWidth*i,y,this.meterWidth,this.canvas.element.height-y)}}}},connect:{value:function(node,channels){this.source&&this.disconnect(),channels?this.channels=channels:node.channelCount?this.channels=node.channelCount:this.channels=2,this.meterWidth=this.canvas.element.width/this.channels,this.source=node,this.source.connect(this.splitter)}},disconnect:{value:function(){this.source.disconnect(this.splitter),this.source=!1,this.meterWidth=this.canvas.element.width/this.channels}},click:{value:function(){this.active=!this.active,this.render()}},customDestroy:{value:function(){this.active=!1}}}),Meter}(Interface);module.exports=Meter},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Oscilloscope=function(_Interface){function Oscilloscope(){_classCallCheck(this,Oscilloscope);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Oscilloscope.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.active=!0,this.source=!1,this.init(),this.render()}return _inherits(Oscilloscope,_Interface),_createClass(Oscilloscope,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteTimeDomainData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.canvas.context.lineWidth=~~(this.height/100+2),this.canvas.context.strokeStyle=this.colors.accent,this.canvas.context.beginPath(),this.source)for(var sliceWidth=1*this.canvas.element.width/this.bufferLength,x=0,i=0;i<this.bufferLength;i++){var v=this.dataArray[i]/128,y=v*this.canvas.element.height/2;0===i?this.canvas.context.moveTo(x,y):this.canvas.context.lineTo(x,y),x+=sliceWidth}else this.canvas.context.moveTo(0,this.canvas.element.height/2),this.canvas.context.lineTo(this.canvas.element.width,this.canvas.element.height/2);this.canvas.context.stroke()}},connect:{value:function(node){this.source&&this.disconnect(),this.source=node,this.source.connect(this.analyser),this.render()}},disconnect:{value:function(){this.source&&(this.source.disconnect(this.analyser),this.source=null)}},click:{value:function(){this.active=!this.active,this.render()}},customDestroy:{value:function(){this.active=!1}}}),Oscilloscope}(Interface);module.exports=Oscilloscope},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},transform=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(39)),dom=function(obj){return obj&&obj.__esModule?obj.default:obj}(__webpack_require__(7)),colors=__webpack_require__(1).colors,Rack=function(){function Rack(target,settings){_classCallCheck(this,Rack),this.meta={},this.meta.target=target,this.meta.parent=dom.parseElement(target),this.meta.colors={},settings?(this.meta.attribute=settings.attribute||"nexus-ui",this.meta.title=settings.name||!1,this.meta.open=settings.open||!1):(this.meta.attribute="nexus-ui",this.meta.title=!1,this.meta.open=!1);var defaultColors=colors();this.meta.colors.accent=defaultColors.accent,this.meta.colors.fill=defaultColors.fill,this.meta.colors.light=defaultColors.light,this.meta.colors.dark=defaultColors.dark,this.meta.colors.mediumLight=defaultColors.mediumLight,this.meta.colors.mediumDark=defaultColors.mediumDark,this.buildInterface(),this.colorInterface()}return _createClass(Rack,{buildInterface:{value:function(){var _this=this;for(this.meta.parent.style.boxSizing="border-box",this.meta.parent.style.userSelect="none",this.meta.parent.style.mozUserSelect="none",this.meta.parent.style.webkitUserSelect="none",this.meta.contents=document.createElement("div");this.meta.parent.childNodes.length>0;)this.meta.contents.appendChild(this.meta.parent.childNodes[0]);this.meta.contents.style.padding="0px",this.meta.contents.style.boxSizing="border-box",this.meta.title&&(this.meta.titleBar=document.createElement("div"),this.meta.titleBar.innerHTML=this.meta.title,this.meta.titleBar.style.fontFamily="arial",this.meta.titleBar.style.position="relative",this.meta.titleBar.style.color="#888",this.meta.titleBar.style.padding="7px",this.meta.titleBar.style.fontSize="12px",this.meta.button=document.createElement("div"),this.meta.button.style.position="absolute",this.meta.button.style.top="5px",this.meta.button.style.right="5px",this.meta.button.innerHTML="-",this.meta.button.style.padding="0px 5px 2px",this.meta.button.style.lineHeight="12px",this.meta.button.style.fontSize="15px",this.meta.button.style.cursor="pointer",this.meta.button.addEventListener("mouseover",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumDark}),this.meta.button.addEventListener("mouseleave",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumLight}),this.meta.button.addEventListener("click",function(){_this.meta.open?_this.hide():_this.show()}),this.meta.titleBar.appendChild(this.meta.button),this.meta.parent.appendChild(this.meta.titleBar)),this.meta.parent.appendChild(this.meta.contents);var ui=transform.section(this.meta.target,this.meta.attribute);for(var key in ui)this[key]=ui[key]}},colorInterface:{value:function(){this.meta.title&&(this.meta.button.style.backgroundColor=this.meta.colors.mediumLight,this.meta.button.style.border="solid 0px "+this.meta.colors.fill,this.meta.parent.style.border="solid 1px "+this.meta.colors.mediumLight,this.meta.parent.style.backgroundColor=this.meta.colors.light,this.meta.titleBar.style.backgroundColor=this.meta.colors.fill)}},show:{value:function(){this.meta.contents.style.display="block",this.meta.open=!0}},hide:{value:function(){this.meta.contents.style.display="none",this.meta.open=!1}},colorize:{value:function(type,color){for(var key in this)this[key].colorize&&this[key].colorize(type,color);this.meta.colors[type]=color,this.colorInterface()}},empty:{value:function(){for(var key in this)this[key].destroy&&this[key].destroy()}}}),Rack}();module.exports=Rack},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj};Object.defineProperty(exports,"__esModule",{value:!0});var dom=_interopRequire(__webpack_require__(7)),Interfaces=_interopRequire(__webpack_require__(2)),createInterfaceID=function(widget,interfaceIDs){var type=widget.type;return interfaceIDs[type]?interfaceIDs[type]++:interfaceIDs[type]=1,type+interfaceIDs[type]},element=function(element,type,options){options=options||{};for(var i=0;i<element.attributes.length;i++){var att=element.attributes[i];options[att.nodeName]=att.nodeValue}type=type[0].toUpperCase()+type.slice(1);var widget=new Interfaces[type](element,options);return widget.id=element.id,widget},section=function(parent,keyword){keyword=keyword||"nexus-ui";for(var interfaceIDs={},container=dom.parseElement(parent),ui={},htmlElements=container.getElementsByTagName("*"),elements=[],i=0;i<htmlElements.length;i++)elements.push(htmlElements[i]);for(var i=0;i<elements.length;i++){var type=elements[i].getAttribute(keyword);if(type){var formattedType=!1;for(var key in Interfaces)type.toLowerCase()===key.toLowerCase()&&(formattedType=key);console.log(formattedType);var widget=element(elements[i],formattedType);if(widget.id)ui[widget.id]=widget;else{ui[createInterfaceID(widget,interfaceIDs)]=widget}}}return ui},add=function(type,parent,options){var target=document.createElement("div");return options=options||{},parent=parent?dom.parseElement(parent):document.body,parent.appendChild(target),options.target=target,options.size&&(target.style.width=options.size[0]+"px",target.style.height=options.size[1]+"px"),element(target,type,options)};exports.element=element,exports.section=section,exports.add=add},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=function(obj){return obj&&obj.__esModule?obj.default:obj}(__webpack_require__(5)),Tune=function(){function Tune(){_classCallCheck(this,Tune),this.scale=[],this.mode={output:"frequency",input:"step"},this.etmajor=[261.62558,293.664764,329.627563,349.228241,391.995422,440,493.883301,523.25116],this.root=math.mtof(60),this.createScale(0,2,4,5,7,9,11)}return _createClass(Tune,{note:{value:function(input,octave){return"frequency"===this.mode.output?this.frequency(input,octave):"ratio"===this.mode.output?this.ratio(input,octave):"MIDI"===this.mode.output?this.MIDI(input,octave):this.frequency(input,octave)}},frequency:{value:function(stepIn,octaveIn){"midi"!==this.mode.input&&"MIDI"!==this.mode.input||(this.stepIn+=60);var octave=Math.floor(stepIn/this.scale.length);octaveIn&&(octave+=octaveIn);for(var scaleDegree=stepIn%this.scale.length;scaleDegree<0;)scaleDegree+=this.scale.length;var ratio=this.scale[scaleDegree],freq=this.root*ratio;return freq*=Math.pow(2,octave),freq=Math.floor(1e11*freq)/1e11}},ratio:{value:function(stepIn,octaveIn){"midi"!==this.mode.input&&"MIDI"!==this.mode.input||(this.stepIn+=60);var octave=Math.floor(stepIn/this.scale.length);octaveIn&&(octave+=octaveIn);var scaleDegree=stepIn%this.scale.length,ratio=Math.pow(2,octave)*this.scale[scaleDegree];return ratio=Math.floor(1e11*ratio)/1e11,ratio}},MIDI:{value:function(stepIn,octaveIn){var newvalue=this.frequency(stepIn,octaveIn),n=69+12*Math.log(newvalue/440)/Math.log(2);return n=Math.floor(1e9*n)/1e9}},createScale:{value:function(){for(var newScale=[],i=0;i<arguments.length;i++)newScale.push(math.mtof(60+arguments[i]));this.loadScaleFromFrequencies(newScale)}},createJIScale:{value:function(){this.scale=[];for(var i=0;i<arguments.length;i++)this.scale.push(arguments[i])}},loadScaleFromFrequencies:{value:function(freqs){this.scale=[];for(var i=0;i<freqs.length-1;i++)this.scale.push(freqs[i]/freqs[0])}},loadScale:{value:function(name){var freqs=this.scales[name].frequencies;this.loadScaleFromFrequencies(freqs)}},search:{value:function(letters){var possible=[];for(var key in this.scales)-1!==key.toLowerCase().indexOf(letters.toLowerCase())&&possible.push(key);return possible}},chord:{value:function(midis){for(var output=[],i=0;i<midis.length;i++)output.push(this.note(midis[i]));return output}}}),Tune}();module.exports=Tune},function(module,exports){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),
staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Radio=function(){function Radio(){for(var _len=arguments.length,onVals=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)onVals[_key-1]=arguments[_key];var length=void 0===arguments[0]?3:arguments[0];_classCallCheck(this,Radio),length<0&&(length=1),this.length=length,this.onVals=onVals,this.array=new Array(length).fill(0),onVals.length>0&&this.on.apply(this,onVals)}return _createClass(Radio,{select:{value:function(value){return this.array.fill(0),this.array[value]=1,this.array}},flip:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] does not exist"):a[v]=a[v]?0:1}):a.forEach(function(v,i,arr){arr[i]=v?0:1}),a}},on:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] exceeds size of object"):(1===a[v]&&console.warn("Warning: AnonRadio["+v+"] was already on."),a[v]=1)}):a.fill(1),a}},off:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){a[v]=0}):a.fill(0),a}}}),Radio}();module.exports=Radio},function(module,exports,__webpack_require__){var WAAClock=__webpack_require__(43);module.exports=WAAClock,"undefined"!=typeof window&&(window.WAAClock=WAAClock)},function(module,exports,__webpack_require__){(function(process){var CLOCK_DEFAULTS={toleranceLate:.1,toleranceEarly:.001},Event=function(clock,deadline,func){this.clock=clock,this.func=func,this._cleared=!1,this.toleranceLate=clock.toleranceLate,this.toleranceEarly=clock.toleranceEarly,this._latestTime=null,this._earliestTime=null,this.deadline=null,this.repeatTime=null,this.schedule(deadline)};Event.prototype.clear=function(){return this.clock._removeEvent(this),this._cleared=!0,this},Event.prototype.repeat=function(time){if(0===time)throw new Error("delay cannot be 0");return this.repeatTime=time,this.clock._hasEvent(this)||this.schedule(this.deadline+this.repeatTime),this},Event.prototype.tolerance=function(values){return"number"==typeof values.late&&(this.toleranceLate=values.late),"number"==typeof values.early&&(this.toleranceEarly=values.early),this._refreshEarlyLateDates(),this.clock._hasEvent(this)&&(this.clock._removeEvent(this),this.clock._insertEvent(this)),this},Event.prototype.isRepeated=function(){return null!==this.repeatTime},Event.prototype.schedule=function(deadline){this._cleared=!1,this.deadline=deadline,this._refreshEarlyLateDates(),this.clock.context.currentTime>=this._earliestTime?this._execute():this.clock._hasEvent(this)?(this.clock._removeEvent(this),this.clock._insertEvent(this)):this.clock._insertEvent(this)},Event.prototype.timeStretch=function(tRef,ratio){this.isRepeated()&&(this.repeatTime=this.repeatTime*ratio);var deadline=tRef+ratio*(this.deadline-tRef);if(this.isRepeated())for(;this.clock.context.currentTime>=deadline-this.toleranceEarly;)deadline+=this.repeatTime;this.schedule(deadline)},Event.prototype._execute=function(){!1!==this.clock._started&&(this.clock._removeEvent(this),this.clock.context.currentTime<this._latestTime?this.func(this):(this.onexpired&&this.onexpired(this),console.warn("event expired")),this.clock._hasEvent(this)||!this.isRepeated()||this._cleared||this.schedule(this.deadline+this.repeatTime))},Event.prototype._refreshEarlyLateDates=function(){this._latestTime=this.deadline+this.toleranceLate,this._earliestTime=this.deadline-this.toleranceEarly};var WAAClock=module.exports=function(context,opts){opts=opts||{},this.tickMethod=opts.tickMethod||"ScriptProcessorNode",this.toleranceEarly=opts.toleranceEarly||CLOCK_DEFAULTS.toleranceEarly,this.toleranceLate=opts.toleranceLate||CLOCK_DEFAULTS.toleranceLate,this.context=context,this._events=[],this._started=!1};WAAClock.prototype.setTimeout=function(func,delay){return this._createEvent(func,this._absTime(delay))},WAAClock.prototype.callbackAtTime=function(func,deadline){return this._createEvent(func,deadline)},WAAClock.prototype.timeStretch=function(tRef,events,ratio){return events.forEach(function(event){event.timeStretch(tRef,ratio)}),events},WAAClock.prototype.start=function(){if(!1===this._started){var self=this;if(this._started=!0,this._events=[],"ScriptProcessorNode"===this.tickMethod){this._clockNode=this.context.createScriptProcessor(256,1,1),this._clockNode.connect(this.context.destination),this._clockNode.onaudioprocess=function(){process.nextTick(function(){self._tick()})}}else if("manual"!==this.tickMethod)throw new Error("invalid tickMethod "+this.tickMethod)}},WAAClock.prototype.stop=function(){!0===this._started&&(this._started=!1,this._clockNode.disconnect())},WAAClock.prototype._tick=function(){for(var event=this._events.shift();event&&event._earliestTime<=this.context.currentTime;)event._execute(),event=this._events.shift();event&&this._events.unshift(event)},WAAClock.prototype._createEvent=function(func,deadline){return new Event(this,deadline,func)},WAAClock.prototype._insertEvent=function(event){this._events.splice(this._indexByTime(event._earliestTime),0,event)},WAAClock.prototype._removeEvent=function(event){var ind=this._events.indexOf(event);-1!==ind&&this._events.splice(ind,1)},WAAClock.prototype._hasEvent=function(event){return-1!==this._events.indexOf(event)},WAAClock.prototype._indexByTime=function(deadline){for(var mid,low=0,high=this._events.length;low<high;)mid=Math.floor((low+high)/2),this._events[mid]._earliestTime<deadline?low=mid+1:high=mid;return low},WAAClock.prototype._absTime=function(relTime){return relTime+this.context.currentTime},WAAClock.prototype._relTime=function(absTime){return absTime-this.context.currentTime}}).call(exports,__webpack_require__(44))},function(module,exports){function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(fun){if(cachedSetTimeout===setTimeout)return setTimeout(fun,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(fun,0);try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout)return clearTimeout(marker);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(marker);try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}function cleanUpNextTick(){draining&¤tQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var timeout=runTimeout(cleanUpNextTick);draining=!0;for(var len=queue.length;len;){for(currentQueue=queue,queue=[];++queueIndex<len;)currentQueue&¤tQueue[queueIndex].run();queueIndex=-1,len=queue.length}currentQueue=null,draining=!1,runClearTimeout(timeout)}}function Item(fun,array){this.fun=fun,this.array=array}function noop(){}var cachedSetTimeout,cachedClearTimeout,process=module.exports={};!function(){try{cachedSetTimeout="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var currentQueue,queue=[],draining=!1,queueIndex=-1;process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)args[i-1]=arguments[i];queue.push(new Item(fun,args)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(name){return[]},process.binding=function(name){throw new Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(dir){throw new Error("process.chdir is not supported")},process.umask=function(){return 0}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},clock=__webpack_require__(1).clock,Interval=function(){function Interval(rate,func,on){_classCallCheck(this,Interval),this.rate=rate,this.on=on,this.clock=clock(),this.pattern=[1],this.index=0,this.event=func||function(){},this.on&&this.start()}return _createClass(Interval,{_event:{value:function(e){this.event(e),this.index++}},stop:{value:function(){this.on=!1,this.interval.clear()}},start:{value:function(){this.on=!0,this.interval=this.clock.callbackAtTime(this._event.bind(this),this.clock.context.currentTime).repeat(this.rate/1e3).tolerance({early:.1,late:1})}},ms:{value:function(newrate){if(this.on){var ratio=newrate/this.rate;this.rate=newrate,this.clock.timeStretch(this.clock.context.currentTime,[this.interval],ratio)}else this.rate=newrate}}}),Interval}();module.exports=Interval}])});
//# sourceMappingURL=NexusUI.min.map