From cc1d4be1b02fe3f35b0c41b06f08660b537d06e4 Mon Sep 17 00:00:00 2001 From: Yisheng Jiang Date: Sun, 5 Sep 2021 22:10:32 -0700 Subject: [PATCH] resolve merge conflict --- dist/NexusUI.min.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/dist/NexusUI.min.js b/dist/NexusUI.min.js index e9f3466a..563971c2 100644 --- a/dist/NexusUI.min.js +++ b/dist/NexusUI.min.js @@ -1,16 +1,8 @@ -<<<<<<< HEAD !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 unlockAudioContext(audioContext){function unlock(){events.forEach(function(eventName){return document.body.removeEventListener(eventName,unlock)}),"suspended"===audioContext.state&&(console.log("Audio context - unlocked ..."),audioContext.resume())}var events=["touchstart","touchend","mousedown","keydown"];"suspended"===audioContext.state&&(console.log("Audio context - suspended until user interaction ..."),events.forEach(function(eventName){document.body.addEventListener(eventName,unlock,!1)}))}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__(29)),DefaultContext=window.AudioContext||window.webkitAudioContext,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];this._context=context,this.tune=new Tune,this.note=this.tune.note.bind(this.tune),this._clock=null,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("")}return _createClass(NexusUI,{context:{get:function(){return this._context||(this._context=new DefaultContext),this._context},set:function(ctx){this._clock&&(this._clock.stop(),this._clock=null),this._context=ctx,unlockAudioContext(ctx)}},clock:{get:function(){return this._clock||(this._clock=new WAAClock(this.context),this._clock.start()),this._clock}}}),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__(30),Tilt:__webpack_require__(31),Multislider:__webpack_require__(32),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=max&&(input=min),input},exports.average=function(data){for(var total=0,i=0;i=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},exports.setInputFilter=function(textbox,inputFilter){["input","keydown","keyup","mousedown","mouseup","select","contextmenu","drop"].forEach(function(event){textbox.addEventListener(event,function(){inputFilter(this.value)?(this.oldValue=this.value,this.oldSelectionStart=this.selectionStart,this.oldSelectionEnd=this.selectionEnd):this.hasOwnProperty("oldValue")?(this.value=this.oldValue,this.setSelectionRange(this.oldSelectionStart,this.oldSelectionEnd)):this.value=""})})}},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;i0&&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.widththis.height?"horizontal":"vertical";for(var buttonWidth=this.width/("vertical"===orientation?1:this._numberOfButtons),buttonHeight=this.height/("vertical"===orientation?this._numberOfButtons:1),i=0;i=0&&index=0;i--)this.element.remove(i);for(var i=0;i2&&(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+1,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?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;i2?this.pad.setAttribute("width",this.width-this.paddingColumn):this.pad.setAttribute("width",this.width),this.height>2?this.pad.setAttribute("height",this.height-this.paddingRow):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 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.paddingRow=this.settings.paddingRow,this.paddingColumn=this.settings.paddingColumn,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;i0?_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;rowthis.max&&(this.loop?this.value=this.min:this.value=this.max-this.increment),this.value=this.max&&(this.value=this.min),this.value}},down:{value:function(){return this.value--,this.valuethis._numberOfSliders?vs.slice(0,this._numberOfSliders):vs.concat(Array(this._numberOfSliders-vs.length).fill(0)),this.candycane=this.settings.candycane,this.sliderWidth=this.width/this.values.length,this.smoothing=this.settings.smoothing,this.init(),this.render()}return _inherits(Multislider,_Interface),_createClass(Multislider,{buildInterface:{value:function(){"line"==this._mode?(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),this.nodes=[],this.values.forEach(function(value,index){var node=svg.create("circle");node.setAttribute("cx",this.getX(index)),node.setAttribute("cy",this.getY(value)),this.element.appendChild(node),this.nodes.push(node)}.bind(this))):(this.bars=[],this.caps=[],this.values.forEach(function(value,index){var bar=svg.create("rect"),x=this.getBarX(index),y=this.getY(value);bar.setAttribute("x",x-.1),bar.setAttribute("y",y),bar.setAttribute("width",this.sliderWidth+.2),bar.setAttribute("height",this.height),bar.setAttribute("opacity",1-(index%this.candycane+1)/(this.candycane+1)),this.element.appendChild(bar),this.bars.push(bar);var cap=svg.create("rect");cap.setAttribute("x",x-.1),cap.setAttribute("y",y),cap.setAttribute("width",this.sliderWidth+.2),cap.setAttribute("height",5),this.element.appendChild(cap),this.caps.push(cap)}.bind(this)))}},getBarX:{value:function(index){return this.getX(index)-this.sliderWidth/2}},getX:{value:function(index){return index*this.sliderWidth+this.sliderWidth/2}},getY:{value:function(value){return math.scale(value,this._min,this._max,this.height,0)}},getValueFromY:{value:function(y){var scaleAdjusted=math.scale(y,this.height,0,this._min,this._max);return this.adjustValueToStep(scaleAdjusted)}},getIndexFromX:{value:function(x){return math.clip(Math.floor(x/this.width*this.values.length),0,this.values.length-1)}},adjustValueToStep:{value:function(value){if(!this._step)return value;var offset=value%this._step;return value-=value%this._step,offset>this._step/2&&(value+=this._step),value}},adjustAllValues:{value:function(){this.values.forEach(function(value,index){value=this.adjustValueToStep(value),this.values[index]=math.clip(value,this._min,this._max)}.bind(this))}},getNormalizedValues:{value:function(){this.normalizedValues=[],this.values.forEach(function(value){this.normalizedValues.push(math.scale(value,this._min,this._max,0,1))}.bind(this))}},colorInterface:{value:function(){var _this=this;this.element.style.backgroundColor=this.colors.fill,"line"==this._mode?(this.line.setAttribute("stroke",this.colors.accent),this.fill.setAttribute("fill",this.colors.accent),this.nodes.forEach(function(node){node.setAttribute("fill",_this.colors.accent)})):(this.bars.forEach(function(bar){bar.setAttribute("fill",_this.colors.accent)}),this.caps.forEach(function(cap){cap.setAttribute("fill",_this.colors.accent)}))}},sizeInterface:{value:function(){this.sliderWidth=this.width/this.values.length,"line"==this._mode&&this.nodes.forEach(function(node){var r=2+~~(Math.min(this.width,this.height)/50);r=Math.min(this.sliderWidth,r),node.setAttribute("r",r)}.bind(this)),this.render()}},render:{value:function(){var _this=this;"line"==this._mode?function(){var data="0 "+_this.getY(_this.values[0])+", ";_this.values.forEach(function(value,index){var x=_this.getX(index),y=_this.getY(value);data+=x+" "+y+", ",_this.nodes[index].setAttribute("cx",_this.getX(index)),_this.nodes[index].setAttribute("cy",_this.getY(value))}),data+=_this.width+" "+_this.getY(_this.values[_this.values.length-1]),_this.line.setAttribute("points",data),data+=", "+_this.width+" "+_this.height+", ",data+="0 "+_this.height,_this.fill.setAttribute("points",data)}():this.values.forEach(function(value,index){_this.bars[index].setAttribute("y",_this.getY(value)),_this.caps[index].setAttribute("y",_this.getY(value))})}},click:{value:function(){this.hasMoved=!1,this.previousSlider=!1,this.move()}},move:{value:function(){if(this.clicked){if(this.mouse.x=math.clip(this.mouse.x,0,this.width),this.mouse.y=math.clip(this.mouse.y,0,this.height),this.hasMoved=!0,this.selectedSlider=this.getIndexFromX(this.mouse.x),this.values[this.selectedSlider]=this.getValueFromY(this.mouse.y),!1!==this.previousSlider){var distance=Math.abs(this.previousSlider-this.selectedSlider);if(distance>1)for(var low=Math.min(this.previousSlider,this.selectedSlider),high=Math.max(this.previousSlider,this.selectedSlider),lowValue=this.values[low],highValue=this.values[high],_i=low;_i0)for(var i=1;i<=this.smoothing;i++){var downCenter=this.selectedSlider-i,upCenter=this.selectedSlider+i;if(downCenter>=1){var downLowerNeighbor=downCenter-1>=0?downCenter-1:0,downUpperNeighbor=downCenter+1;this.values[downCenter]=(this.values[downLowerNeighbor]+this.values[downUpperNeighbor])/2,this.values[downCenter]=this.adjustValueToStep(this.values[downCenter])}if(upCenter=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;lowX=lowXthis.xMax?this.xMax:highX,this.xhighX&&(this.x=highX),this.ythis.yMax&&(this.y=this.yMax)}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],noNewPoints:!1,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;inodes[i].x)}return!this.settings.noNewPoints&&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&&(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),Spectrogram=function(_Interface){function Spectrogram(){_classCallCheck(this,Spectrogram);var options=[],defaults={size:[300,150]};_get(Object.getPrototypeOf(Spectrogram.prototype),"constructor",this).call(this,arguments,options,defaults),this.analyser=null,this.bufferLength=0,this.dataArray=null,this.active=!1,this.source=null,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&&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-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(),this.channels=channels||node.channelCount||2,this.splitter=node.context.createChannelSplitter(this.channels),this.analysers=[];for(var i=0;i0;)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;i1?_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.currentTime1)for(var i=1;i=max&&(input=min),input},exports.average=function(data){for(var total=0,i=0;i=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},exports.setInputFilter=function(textbox,inputFilter){["input","keydown","keyup","mousedown","mouseup","select","contextmenu","drop"].forEach(function(event){textbox.addEventListener(event,function(){inputFilter(this.value)?(this.oldValue=this.value,this.oldSelectionStart=this.selectionStart,this.oldSelectionEnd=this.selectionEnd):this.hasOwnProperty("oldValue")?(this.value=this.oldValue,this.setSelectionRange(this.oldSelectionStart,this.oldSelectionEnd)):this.value=""})})}},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;i0&&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.widththis.height?"horizontal":"vertical";for(var buttonWidth=this.width/("vertical"===orientation?1:this._numberOfButtons),buttonHeight=this.height/("vertical"===orientation?this._numberOfButtons:1),i=0;i=0&&index=0;i--)this.element.remove(i);for(var i=0;i2&&(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+1,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?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;i2?this.pad.setAttribute("width",this.width-this.paddingColumn):this.pad.setAttribute("width",this.width),this.height>2?this.pad.setAttribute("height",this.height-this.paddingRow):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 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.paddingRow=this.settings.paddingRow,this.paddingColumn=this.settings.paddingColumn,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;i0?_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;rowthis.max&&(this.loop?this.value=this.min:this.value=this.max-this.increment),this.value=this.max&&(this.value=this.min),this.value}},down:{value:function(){return this.value--,this.valuethis._numberOfSliders?vs.slice(0,this._numberOfSliders):vs.concat(Array(this._numberOfSliders-vs.length).fill(0)),this.candycane=this.settings.candycane,this.sliderWidth=this.width/this.values.length,this.smoothing=this.settings.smoothing,this.init(),this.render()}return _inherits(Multislider,_Interface),_createClass(Multislider,{buildInterface:{value:function(){"line"==this._mode?(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),this.nodes=[],this.values.forEach(function(value,index){var node=svg.create("circle");node.setAttribute("cx",this.getX(index)),node.setAttribute("cy",this.getY(value)),this.element.appendChild(node),this.nodes.push(node)}.bind(this))):(this.bars=[],this.caps=[],this.values.forEach(function(value,index){var bar=svg.create("rect"),x=this.getBarX(index),y=this.getY(value);bar.setAttribute("x",x-.1),bar.setAttribute("y",y),bar.setAttribute("width",this.sliderWidth+.2),bar.setAttribute("height",this.height),bar.setAttribute("opacity",1-(index%this.candycane+1)/(this.candycane+1)),this.element.appendChild(bar),this.bars.push(bar);var cap=svg.create("rect");cap.setAttribute("x",x-.1),cap.setAttribute("y",y),cap.setAttribute("width",this.sliderWidth+.2),cap.setAttribute("height",5),this.element.appendChild(cap),this.caps.push(cap)}.bind(this)))}},getBarX:{value:function(index){return this.getX(index)-this.sliderWidth/2}},getX:{value:function(index){return index*this.sliderWidth+this.sliderWidth/2}},getY:{value:function(value){return math.scale(value,this._min,this._max,this.height,0)}},getValueFromY:{value:function(y){var scaleAdjusted=math.scale(y,this.height,0,this._min,this._max);return this.adjustValueToStep(scaleAdjusted)}},getIndexFromX:{value:function(x){return math.clip(Math.floor(x/this.width*this.values.length),0,this.values.length-1)}},adjustValueToStep:{value:function(value){if(!this._step)return value;var offset=value%this._step;return value-=value%this._step,offset>this._step/2&&(value+=this._step),value}},adjustAllValues:{value:function(){this.values.forEach(function(value,index){value=this.adjustValueToStep(value),this.values[index]=math.clip(value,this._min,this._max)}.bind(this))}},getNormalizedValues:{value:function(){this.normalizedValues=[],this.values.forEach(function(value){this.normalizedValues.push(math.scale(value,this._min,this._max,0,1))}.bind(this))}},colorInterface:{value:function(){var _this=this;this.element.style.backgroundColor=this.colors.fill,"line"==this._mode?(this.line.setAttribute("stroke",this.colors.accent),this.fill.setAttribute("fill",this.colors.accent),this.nodes.forEach(function(node){node.setAttribute("fill",_this.colors.accent)})):(this.bars.forEach(function(bar){bar.setAttribute("fill",_this.colors.accent)}),this.caps.forEach(function(cap){cap.setAttribute("fill",_this.colors.accent)}))}},sizeInterface:{value:function(){this.sliderWidth=this.width/this.values.length,"line"==this._mode&&this.nodes.forEach(function(node){var r=2+~~(Math.min(this.width,this.height)/50);r=Math.min(this.sliderWidth,r),node.setAttribute("r",r)}.bind(this)),this.render()}},render:{value:function(){var _this=this;"line"==this._mode?function(){var data="0 "+_this.getY(_this.values[0])+", ";_this.values.forEach(function(value,index){var x=_this.getX(index),y=_this.getY(value);data+=x+" "+y+", ",_this.nodes[index].setAttribute("cx",_this.getX(index)),_this.nodes[index].setAttribute("cy",_this.getY(value))}),data+=_this.width+" "+_this.getY(_this.values[_this.values.length-1]),_this.line.setAttribute("points",data),data+=", "+_this.width+" "+_this.height+", ",data+="0 "+_this.height,_this.fill.setAttribute("points",data)}():this.values.forEach(function(value,index){_this.bars[index].setAttribute("y",_this.getY(value)),_this.caps[index].setAttribute("y",_this.getY(value))})}},click:{value:function(){this.hasMoved=!1,this.previousSlider=!1,this.move()}},move:{value:function(){if(this.clicked){if(this.mouse.x=math.clip(this.mouse.x,0,this.width),this.mouse.y=math.clip(this.mouse.y,0,this.height),this.hasMoved=!0,this.selectedSlider=this.getIndexFromX(this.mouse.x),this.values[this.selectedSlider]=this.getValueFromY(this.mouse.y),!1!==this.previousSlider){var distance=Math.abs(this.previousSlider-this.selectedSlider);if(distance>1)for(var low=Math.min(this.previousSlider,this.selectedSlider),high=Math.max(this.previousSlider,this.selectedSlider),lowValue=this.values[low],highValue=this.values[high],_i=low;_i0)for(var i=1;i<=this.smoothing;i++){var downCenter=this.selectedSlider-i,upCenter=this.selectedSlider+i;if(downCenter>=1){var downLowerNeighbor=downCenter-1>=0?downCenter-1:0,downUpperNeighbor=downCenter+1;this.values[downCenter]=(this.values[downLowerNeighbor]+this.values[downUpperNeighbor])/2,this.values[downCenter]=this.adjustValueToStep(this.values[downCenter])}if(upCenter=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;lowX=lowXthis.xMax?this.xMax:highX,this.xhighX&&(this.x=highX),this.ythis.yMax&&(this.y=this.yMax)}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],noNewPoints:!1,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;inodes[i].x)}return!this.settings.noNewPoints&&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&&(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-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;i0;)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;i1?_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.currentTime1)for(var i=1;i>>>>>> a084520586c30673067b85df99f9dce47be5204c -//# sourceMappingURL=NexusUI.min.map \ No newline at end of file + +//# sourceMappingURL=NexusUI.min.map