UNPKG

canvas-compositor

Version:
1 lines 113 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.CanvasCompositor=f()}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r}()({1:[function(require,module,exports){function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}module.exports=_assertThisInitialized},{}],2:[function(require,module,exports){function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}module.exports=_classCallCheck},{}],3:[function(require,module,exports){var setPrototypeOf=require("./setPrototypeOf");function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Date.prototype.toString.call(Reflect.construct(Date,[],function(){}));return true}catch(e){return false}}function _construct(Parent,args,Class){if(isNativeReflectConstruct()){module.exports=_construct=Reflect.construct}else{module.exports=_construct=function _construct(Parent,args,Class){var a=[null];a.push.apply(a,args);var Constructor=Function.bind.apply(Parent,a);var instance=new Constructor;if(Class)setPrototypeOf(instance,Class.prototype);return instance}}return _construct.apply(null,arguments)}module.exports=_construct},{"./setPrototypeOf":11}],4:[function(require,module,exports){function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}module.exports=_createClass},{}],5:[function(require,module,exports){function _getPrototypeOf(o){module.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _getPrototypeOf(o)}module.exports=_getPrototypeOf},{}],6:[function(require,module,exports){var setPrototypeOf=require("./setPrototypeOf");function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)setPrototypeOf(subClass,superClass)}module.exports=_inherits},{"./setPrototypeOf":11}],7:[function(require,module,exports){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}module.exports=_interopRequireDefault},{}],8:[function(require,module,exports){var _typeof=require("../helpers/typeof");function _getRequireWildcardCache(){if(typeof WeakMap!=="function")return null;var cache=new WeakMap;_getRequireWildcardCache=function _getRequireWildcardCache(){return cache};return cache}function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache();if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj)}return newObj}module.exports=_interopRequireWildcard},{"../helpers/typeof":12}],9:[function(require,module,exports){function _isNativeFunction(fn){return Function.toString.call(fn).indexOf("[native code]")!==-1}module.exports=_isNativeFunction},{}],10:[function(require,module,exports){var _typeof=require("../helpers/typeof");var assertThisInitialized=require("./assertThisInitialized");function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call}return assertThisInitialized(self)}module.exports=_possibleConstructorReturn},{"../helpers/typeof":12,"./assertThisInitialized":1}],11:[function(require,module,exports){function _setPrototypeOf(o,p){module.exports=_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o};return _setPrototypeOf(o,p)}module.exports=_setPrototypeOf},{}],12:[function(require,module,exports){function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){module.exports=_typeof=function _typeof(obj){return typeof obj}}else{module.exports=_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}module.exports=_typeof},{}],13:[function(require,module,exports){var getPrototypeOf=require("./getPrototypeOf");var setPrototypeOf=require("./setPrototypeOf");var isNativeFunction=require("./isNativeFunction");var construct=require("./construct");function _wrapNativeSuper(Class){var _cache=typeof Map==="function"?new Map:undefined;module.exports=_wrapNativeSuper=function _wrapNativeSuper(Class){if(Class===null||!isNativeFunction(Class))return Class;if(typeof Class!=="function"){throw new TypeError("Super expression must either be null or a function")}if(typeof _cache!=="undefined"){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return construct(Class,arguments,getPrototypeOf(this).constructor)}Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:false,writable:true,configurable:true}});return setPrototypeOf(Wrapper,Class)};return _wrapNativeSuper(Class)}module.exports=_wrapNativeSuper},{"./construct":3,"./getPrototypeOf":5,"./isNativeFunction":9,"./setPrototypeOf":11}],14:[function(require,module,exports){},{}],15:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.MVC_VIEW_ELEMENT=exports.MVC_INPUT_CHANGED=exports.MVC_PROPERTY_CHANGED=exports.MVC_MODEL_MODIFIED=exports.MVC_CHECK_GROUP=exports.MVC_RADIO_GROUP=exports.MVC_CONTROLS=exports.MVC_OBSERVES=void 0;var APP_PREFIX="mvc";var MVC_OBSERVES="".concat(APP_PREFIX,"-observes");exports.MVC_OBSERVES=MVC_OBSERVES;var MVC_CONTROLS="".concat(APP_PREFIX,"-controls");exports.MVC_CONTROLS=MVC_CONTROLS;var MVC_RADIO_GROUP="".concat(APP_PREFIX,"-radio-group");exports.MVC_RADIO_GROUP=MVC_RADIO_GROUP;var MVC_CHECK_GROUP="".concat(APP_PREFIX,"-check-group");exports.MVC_CHECK_GROUP=MVC_CHECK_GROUP;var MVC_MODEL_MODIFIED="".concat(APP_PREFIX,"-model-modified");exports.MVC_MODEL_MODIFIED=MVC_MODEL_MODIFIED;var MVC_PROPERTY_CHANGED="".concat(APP_PREFIX,"-property-changed");exports.MVC_PROPERTY_CHANGED=MVC_PROPERTY_CHANGED;var MVC_INPUT_CHANGED="".concat(APP_PREFIX,"-input-changed");exports.MVC_INPUT_CHANGED=MVC_INPUT_CHANGED;var MVC_VIEW_ELEMENT="".concat(APP_PREFIX,"-view");exports.MVC_VIEW_ELEMENT=MVC_VIEW_ELEMENT},{}],16:[function(require,module,exports){"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _wrapNativeSuper2=_interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));var _view=_interopRequireDefault(require("../view"));var _model=_interopRequireDefault(require("../model"));var MVCView=function(_HTMLElement){(0,_inherits2["default"])(MVCView,_HTMLElement);function MVCView(){(0,_classCallCheck2["default"])(this,MVCView);return(0,_possibleConstructorReturn2["default"])(this,(0,_getPrototypeOf2["default"])(MVCView).call(this))}(0,_createClass2["default"])(MVCView,[{key:"connectedCallback",value:function connectedCallback(){this._shadow=this.attachShadow({mode:"open"});var formNode=document.createElement("form");var slot=document.createElement("slot");formNode.append(slot);this._shadow.appendChild(formNode)}},{key:"model",get:function get(){return this._model},set:function set(model){if(this._model){throw new Error("The model may only be set once.")}this._model=new _model["default"](model);this._view=new _view["default"](this,this._model)}}]);return MVCView}((0,_wrapNativeSuper2["default"])(HTMLElement));exports["default"]=MVCView},{"../model":19,"../view":20,"@babel/runtime/helpers/classCallCheck":2,"@babel/runtime/helpers/createClass":4,"@babel/runtime/helpers/getPrototypeOf":5,"@babel/runtime/helpers/inherits":6,"@babel/runtime/helpers/interopRequireDefault":7,"@babel/runtime/helpers/possibleConstructorReturn":10,"@babel/runtime/helpers/wrapNativeSuper":13}],17:[function(require,module,exports){"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var EventEmitter=function(){function EventEmitter(){(0,_classCallCheck2["default"])(this,EventEmitter);this.listeners={}}(0,_createClass2["default"])(EventEmitter,[{key:"addEventListener",value:function addEventListener(type,callback){if(!(type in this.listeners)){this.listeners[type]=[]}this.listeners[type].push(callback)}},{key:"removeEventListener",value:function removeEventListener(type,callback){if(!(type in this.listeners)){return}var stack=this.listeners[type];for(var i=0,l=stack.length;i<l;i++){if(stack[i]===callback){stack.splice(i,1);return}}}},{key:"dispatchEvent",value:function dispatchEvent(event){if(!(event.type in this.listeners)){return true}var stack=this.listeners[event.type].slice();for(var i=0,l=stack.length;i<l;i++){stack[i].call(this,event)}return!event.defaultPrevented}},{key:"listensFor",value:function listensFor(type){return!!this.listeners[type]}},{key:"hasListener",value:function hasListener(type,callback){return!!this.listeners[type]?this.listeners[type].indexOf(callback)>=0:false}}]);return EventEmitter}();exports["default"]=EventEmitter},{"@babel/runtime/helpers/classCallCheck":2,"@babel/runtime/helpers/createClass":4,"@babel/runtime/helpers/interopRequireDefault":7}],18:[function(require,module,exports){"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Model",{enumerable:true,get:function get(){return _model["default"]}});Object.defineProperty(exports,"View",{enumerable:true,get:function get(){return _view["default"]}});Object.defineProperty(exports,"EventEmitter",{enumerable:true,get:function get(){return _eventEmitter["default"]}});var _model=_interopRequireDefault(require("./model"));var _view=_interopRequireDefault(require("./view"));var _eventEmitter=_interopRequireDefault(require("./event-emitter"));var _mvcView=_interopRequireDefault(require("./custom-elements/mvc-view"));var _config=require("./config");window.customElements.define(_config.MVC_VIEW_ELEMENT,_mvcView["default"])},{"./config":15,"./custom-elements/mvc-view":16,"./event-emitter":17,"./model":19,"./view":20,"@babel/runtime/helpers/interopRequireDefault":7}],19:[function(require,module,exports){"use strict";var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _eventEmitter=_interopRequireDefault(require("./event-emitter"));var config=_interopRequireWildcard(require("./config"));var Model=function(_EventEmitter){(0,_inherits2["default"])(Model,_EventEmitter);function Model(dataModel){var _this;(0,_classCallCheck2["default"])(this,Model);_this=(0,_possibleConstructorReturn2["default"])(this,(0,_getPrototypeOf2["default"])(Model).call(this));_this._dataModel=dataModel;var _loop=function _loop(){var k=_Object$keys[_i];Object.defineProperty((0,_assertThisInitialized2["default"])(_this),k,{innumerable:true,get:function get(){return _this._dataModel[k]},set:function set(val){dataModel[k]=val;var e=new CustomEvent(config.MVC_PROPERTY_CHANGED,{detail:{model:_this._dataModel,property:k,value:val}});_this.dispatchEvent(e)}})};for(var _i=0,_Object$keys=Object.keys(_this._dataModel);_i<_Object$keys.length;_i++){_loop()}return _this}(0,_createClass2["default"])(Model,[{key:"modify",value:function modify(val){Object.assign(this._dataModel,val);var e=new CustomEvent(config.MVC_MODEL_MODIFIED,{detail:{updates:val,model:this._dataModel,properties:[Object.keys(val)],values:[Object.values(val)]}});this.dispatchEvent(e)}},{key:"model",get:function get(){return this._dataModel}},{key:"dataModel",get:function get(){return this._dataModel}}]);return Model}(_eventEmitter["default"]);exports["default"]=Model},{"./config":15,"./event-emitter":17,"@babel/runtime/helpers/assertThisInitialized":1,"@babel/runtime/helpers/classCallCheck":2,"@babel/runtime/helpers/createClass":4,"@babel/runtime/helpers/getPrototypeOf":5,"@babel/runtime/helpers/inherits":6,"@babel/runtime/helpers/interopRequireDefault":7,"@babel/runtime/helpers/interopRequireWildcard":8,"@babel/runtime/helpers/possibleConstructorReturn":10}],20:[function(require,module,exports){"use strict";var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var config=_interopRequireWildcard(require("./config"));var _eventEmitter=_interopRequireDefault(require("./event-emitter"));var View=function(_EventEmitter){(0,_inherits2["default"])(View,_EventEmitter);function View(viewDOM,model){var _this;(0,_classCallCheck2["default"])(this,View);_this=(0,_possibleConstructorReturn2["default"])(this,(0,_getPrototypeOf2["default"])(View).call(this));var observers=viewDOM.querySelectorAll("[".concat(config.MVC_OBSERVES,"]"));var controls=viewDOM.querySelectorAll("[".concat(config.MVC_CONTROLS,"]"));var radioGroupObservers=viewDOM.querySelectorAll("[".concat(config.MVC_OBSERVES,"][").concat(config.MVC_RADIO_GROUP,"]"));var radioGroupControls=viewDOM.querySelectorAll("[".concat(config.MVC_CONTROLS,"][").concat(config.MVC_RADIO_GROUP,"]"));var checkGroupObservers=viewDOM.querySelectorAll("[".concat(config.MVC_OBSERVES,"][").concat(config.MVC_CHECK_GROUP,"]"));var checkGroupControls=viewDOM.querySelectorAll("[".concat(config.MVC_CONTROLS,"][").concat(config.MVC_CHECK_GROUP,"]"));radioGroupObservers=Array.prototype.map.call(radioGroupObservers,function(o){return o});radioGroupControls=Array.prototype.map.call(radioGroupControls,function(c){return c});checkGroupObservers=Array.prototype.map.call(checkGroupObservers,function(o){return o});checkGroupControls=Array.prototype.map.call(checkGroupControls,function(c){return c});var fieldsetGetAdapter=new Map;var fieldsetOptionsMap=new Map;var selectOptionsMap=new Map;var fieldsetSetAdapter=new Map;function getInputValue(control){var inputType=control.getAttribute("type");switch(inputType){case"button":case"file":case"image":case"password":case"reset":case"submit":throw new TypeError("Inputs of type ".concat(inputType," cannot observe models"));case"checkbox":return control.checked;default:return control.value}}function getControlValue(control){switch(control.tagName){case"INPUT":return getInputValue(control);case"FIELDSET":return fieldsetGetAdapter.get(control)();case"SELECT":return control.value;default:return control.innerHTML}}function updateInputValue(observer,value){var inputType=observer.getAttribute("type");switch(inputType){case"button":case"file":case"image":case"reset":case"submit":throw new TypeError("Inputs of type ".concat(inputType," do not have values"));case"password":throw new TypeError("Inputs of type ".concat(inputType," may not be modified by controllers"));case"checkbox":observer.checked=value;break;default:observer.value=value;break}}function updateObserver(observer,value){switch(observer.tagName){case"INPUT":updateInputValue(observer,value);break;case"FIELDSET":if(observer.hasAttribute(config.MVC_RADIO_GROUP)&&!fieldsetOptionsMap.get(observer).includes(value)){throw new RangeError("The value supplied, ".concat(value,", is not a valid option"))}else if(observer.hasAttribute(config.MVC_CHECK_GROUP)&&Object.keys(value).filter(function(v){return!fieldsetOptionsMap.get(observer).includes(v)}).length){throw new RangeError("At least one of the values supplied, ".concat(value,", is not a valid option"))}fieldsetSetAdapter.get(observer)(value);break;case"SELECT":if(!selectOptionsMap.get(observer).includes(value)){throw new RangeError("The value supplied, ".concat(value,", is not a valid option"))}observer.value=value;break;default:observer.innerHTML=value;break}}var _loop=function _loop(i){var controlledValues=controls[i].getAttribute(config.MVC_CONTROLS).split(",");var addEventListeners=function addEventListeners(c){var _loop3=function _loop3(val){c.addEventListener("change",function(e){var ce=new CustomEvent(config.MVC_INPUT_CHANGED,{target:e.target,detail:{property:controlledValues[val],value:getControlValue(controls[i])}});model[controlledValues[val]]=getControlValue(controls[i]);_this.dispatchEvent(ce)})};for(var val in controlledValues){_loop3(val)}};if(radioGroupControls.includes(controls[i])){var radioGroupName=controls[i].getAttribute(config.MVC_RADIO_GROUP);var radioForm=controls[i].closest("form");var nodeList=radioForm?radioForm.elements[radioGroupName]:document.getElementsByName(radioGroupName);fieldsetGetAdapter.set(controls[i],radioForm?function(){return nodeList.value}:function(){return controls[i].querySelector(":checked").value});nodeList.forEach(function(n){addEventListeners(n)})}else if(checkGroupControls.includes(controls[i])){var _nodeList=controls[i].querySelectorAll('[type="checkbox"]');fieldsetGetAdapter.set(controls[i],function(){var result={};_nodeList.forEach(function(n){result[n.value]=n.checked});return result});_nodeList.forEach(function(n){addEventListeners(n)})}else{addEventListeners(controls[i])}};for(var i=0;i<controls.length;i++){_loop(i)}var _loop2=function _loop2(i){if(radioGroupObservers.includes(observers[i])){var radioGroupName=observers[i].getAttribute(config.MVC_RADIO_GROUP);var radioForm=observers[i].closest("form");var nodeList=radioForm?radioForm.elements[radioGroupName]:document.getElementsByName(radioGroupName);fieldsetSetAdapter.set(observers[i],radioForm?function(val){return nodeList.value=val}:function(val){return nodeList.forEach(function(n){n.checked=false;if(n.value===val){n.checked=true}})});var options=[];nodeList.forEach(function(o){options.push(o.value)});fieldsetOptionsMap.set(observers[i],options)}else if(checkGroupObservers.includes(observers[i])){var _nodeList2=observers[i].querySelectorAll('[type="checkbox"]');fieldsetSetAdapter.set(observers[i],function(val){_nodeList2.forEach(function(n){n.checked=val[n.value]})});var _options=[];_nodeList2.forEach(function(o){_options.push(o.value)});fieldsetOptionsMap.set(observers[i],_options)}else if(observers[i].tagName==="SELECT"){var _options2=[];observers[i].querySelectorAll("option").forEach(function(o){_options2.push(o.value)});selectOptionsMap.set(observers[i],_options2)}var observedValues=observers[i].getAttribute(config.MVC_OBSERVES).split(",");var _loop4=function _loop4(val){model.addEventListener(config.MVC_PROPERTY_CHANGED,function(e){if(observedValues[val]===e.detail.property&&e.target!==observers[i]){updateObserver(observers[i],e.detail.value)}})};for(var val in observedValues){_loop4(val)}};for(var i=0;i<observers.length;i++){_loop2(i)}model.addEventListener(config.MVC_MODEL_MODIFIED,function(e){for(var i=0;i<observers.length;i++){var observedValues=observers[i].getAttribute(config.MVC_OBSERVES).split(",");for(var val in observedValues){var updatedVal=e.detail.updates[observedValues[val]];if(updatedVal){updateObserver(observers[i],updatedVal)}}}});model.modify(model.dataModel);return _this}return View}(_eventEmitter["default"]);exports["default"]=View},{"./config":15,"./event-emitter":17,"@babel/runtime/helpers/classCallCheck":2,"@babel/runtime/helpers/getPrototypeOf":5,"@babel/runtime/helpers/inherits":6,"@babel/runtime/helpers/interopRequireDefault":7,"@babel/runtime/helpers/interopRequireWildcard":8,"@babel/runtime/helpers/possibleConstructorReturn":10}],21:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});var NDArray_1=require("./NDArray");var Vector_1=require("./Vector");var nblas;try{nblas=require("nblas")}catch(err){}var magicHelper=function(n,x,y){return(x+y*2+1)%n};var Matrix=function(_super){__extends(Matrix,_super);function Matrix(data,options){var _this=this;if(typeof data==="number"&&typeof options==="number"){_this=_super.call(this,new Float32Array(data*options),{shape:[data,options]})||this}else{_this=_super.call(this,data,options)||this}return _this}Matrix.add=function(a,b){return a.copy().add(b)};Matrix.augment=function(a,b){return a.copy().augment(b)};Matrix.binOp=function(a,b,op){return a.copy().binOp(b,op)};Matrix.equals=function(a,b){return a.equals(b)};Matrix.fill=function(r,c,value,type){if(value===void 0){value=0}if(type===void 0){type=Float32Array}if(r<=0||c<=0){throw new Error("invalid size")}var size=r*c;var data=new type(size);return new Matrix(data,{shape:[r,c]}).fill(value)};Matrix.identity=function(size,type){if(type===void 0){type=Float32Array}return Matrix.fill(size,size,function(i){return i%size===Math.floor(i/size)?1:0},type)};Matrix.magic=function(size,type){if(type===void 0){type=Float32Array}if(size<0){throw new Error("invalid size")}var data=new type(size*size);var i;var j;for(i=0;i<size;i+=1){for(j=0;j<size;j+=1){data[(size-i-1)*size+(size-j-1)]=magicHelper(size,size-j-1,i)*size+magicHelper(size,j,i)+1}}return new Matrix(data,{shape:[size,size]})};Matrix.multiply=function(a,b){return a.multiply(b)};Matrix.ones=function(r,c,type){if(type===void 0){type=Float32Array}return Matrix.fill(r,c,1,type)};Matrix.plu=function(matrix){return matrix.copy().plu()};Matrix.product=function(a,b){return a.copy().product(b)};Matrix.random=function(r,c,min,max,type){if(min===void 0){min=0}if(max===void 0){max=1}if(type===void 0){type=Float32Array}return Matrix.fill(r,c,min,type).map(function(value){return value+Math.random()*(max-min)})};Matrix.rank=function(matrix){return matrix.copy().rank()};Matrix.scale=function(a,scalar){return a.copy().scale(scalar)};Matrix.subtract=function(a,b){return a.copy().subtract(b)};Matrix.zeros=function(r,c,type){if(type===void 0){type=Float32Array}return Matrix.fill(r,c,0,type)};Matrix.prototype.augment=function(matrix){var _a=this.shape,r1=_a[0],c1=_a[1];var _b=matrix.shape,r2=_b[0],c2=_b[1];if(r2===0||c2===0){return this}if(r1!==r2){throw new Error("rows do not match")}var d1=this.data;var d2=matrix.data;var length=c1+c2;var data=new this.type(length*r1);var i;var j;for(i=0;i<r1;i+=1){for(j=0;j<c1;j+=1){data[i*length+j]=d1[i*c1+j]}}for(i=0;i<r2;i+=1){for(j=0;j<c2;j+=1){data[i*length+j+c1]=d2[i*c2+j]}}this.shape=[r1,length];this.length=data.length;this.data=data;return this};Matrix.prototype.binOp=function(matrix,op){var _a=this.shape,r1=_a[0],c1=_a[1];var _b=matrix.shape,r2=_b[0],c2=_b[1];if(r1!==r2||c1!==c2){throw new Error("sizes do not match!")}var _c=this,d1=_c.data,length=_c.length;var d2=matrix.data;var i;for(i=0;i<length;i+=1){d1[i]=op(d1[i],d2[i],i)}return this};Matrix.prototype.check=function(i,j){var _a=this.shape,r=_a[0],c=_a[1];if(isNaN(i)||isNaN(j)){throw new Error("one of the indices is not a number")}if(i<0||j<0||i>r-1||j>c-1){throw new Error("index out of bounds")}};Matrix.prototype.determinant=function(){var _a=this.shape,r=_a[0],c=_a[1];if(r!==c){throw new Error("matrix is not square")}var _b=Matrix.plu(this),lu=_b[0],ipiv=_b[1];var product=1;var sign=1;var i;for(i=0;i<r;i+=1){if(i!==ipiv[i]){sign*=-1}}for(i=0;i<r;i+=1){product*=lu.data[i*c+i]}return sign*product};Matrix.prototype.diag=function(){var data=this.data;var _a=this.shape,r=_a[0],c=_a[1];var diag=new this.type(Math.min(r,c));var i;for(i=0;i<r&&i<c;i+=1){diag[i]=data[i*c+i]}return new Vector_1.Vector(diag)};Matrix.prototype.each=function(callback){var c=this.shape[1];var _a=this,data=_a.data,length=_a.length;var i;for(i=0;i<length;i+=1){callback.call(this,data[i],c===0?0:Math.floor(i/c),i%c)}return this};Matrix.prototype.gauss=function(){var _a=this.shape,r=_a[0],c=_a[1];var copy=this.copy();var lead=0;var pivot;var leadValue;var i;var j;var k;for(i=0;i<r;i+=1){if(c<=lead){throw new Error("matrix is singular")}j=i;while(copy.data[j*c+lead]===0){j+=1;if(r===j){j=i;lead+=1;if(c===lead){throw new Error("matrix is singular")}}}copy.swap(i,j);pivot=copy.data[i*c+lead];if(pivot!==0){for(k=0;k<c;k+=1){copy.data[i*c+k]=copy.data[i*c+k]/pivot}}for(j=0;j<r;j+=1){leadValue=copy.data[j*c+lead];if(j!==i){for(k=0;k<c;k+=1){copy.data[j*c+k]=copy.data[j*c+k]-copy.data[i*c+k]*leadValue}}}lead+=1}for(i=0;i<r;i+=1){pivot=0;for(j=0;j<c;j+=1){if(pivot===0){pivot=copy.data[i*c+j]}}if(pivot===0){for(k=0;k<c;k+=1){copy.data[i*c+k]=copy.data[i*c+k]/pivot}}}return copy};Matrix.prototype.get=function(i,j){this.check(i,j);return this.data[i*this.shape[1]+j]};Matrix.prototype.inverse=function(){var _a=this.shape,r=_a[0],c=_a[1];if(r!==c){throw new Error("invalid dimensions")}var identity=Matrix.identity(r);var augmented=Matrix.augment(this,identity);var gauss=augmented.gauss();var left=Matrix.zeros(r,c);var right=Matrix.zeros(r,c);var n=gauss.shape[1];var i;var j;for(i=0;i<r;i+=1){for(j=0;j<n;j+=1){if(j<c){left.set(i,j,gauss.get(i,j))}else{right.set(i,j-r,gauss.get(i,j))}}}if(!left.equals(Matrix.identity(r))){throw new Error("matrix is not invertible")}return right};Matrix.prototype.lu=function(){var _a=this.shape,r=_a[0],c=_a[1];var _b=Matrix.plu(this),plu=_b[0],ipiv=_b[1];var lower=plu.copy();var upper=plu.copy();var i;var j;for(i=0;i<r;i+=1){for(j=i;j<c;j+=1){lower.data[i*c+j]=i===j?1:0}}for(i=0;i<r;i+=1){for(j=0;j<i&&j<c;j+=1){upper.data[i*c+j]=0}}return[lower,upper,ipiv]};Matrix.prototype.lusolve=function(rhs,ipiv){var data=this.data;var _a=rhs.shape,n=_a[0],nrhs=_a[1];var x=rhs.data;var i;var j;var k;for(i=0;i<ipiv.length;i+=1){if(i!==ipiv[i]){rhs.swap(i,ipiv[i])}}for(k=0;k<nrhs;k+=1){for(i=0;i<n;i+=1){for(j=0;j<i;j+=1){x[i*nrhs+k]-=data[i*n+j]*x[j*nrhs+k]}}for(i=n-1;i>=0;i-=1){for(j=i+1;j<n;j+=1){x[i*nrhs+k]-=data[i*n+j]*x[j*nrhs+k]}x[i*nrhs+k]/=data[i*n+i]}}return rhs};Matrix.prototype.map=function(callback){var c=this.shape[1];var length=this.length;var mapped=this.copy();var data=mapped.data;var i;for(i=0;i<length;i+=1){data[i]=callback.call(mapped,data[i],c===0?0:Math.floor(i/c),i%c,data)}return mapped};Matrix.prototype.multiply=function(matrix){var _a=this.shape,r1=_a[0],c1=_a[1];var _b=matrix.shape,r2=_b[0],c2=_b[1];if(c1!==r2){throw new Error("sizes do not match")}var d1=this.data;var d2=matrix.data;var data=new this.type(r1*c2);try{nblas.gemm(d1,d2,data,r1,c2,c1)}catch(err){var i=void 0;var j=void 0;var k=void 0;var sum=void 0;for(i=0;i<r1;i+=1){for(j=0;j<c2;j+=1){sum=0;for(k=0;k<c1;k+=1){sum+=d1[i*c1+k]*d2[j+k*c2]}data[i*c2+j]=sum}}}return new Matrix(data,{shape:[r1,c2]})};Object.defineProperty(Matrix.prototype,"T",{get:function(){return this.transpose()},enumerable:true,configurable:true});Matrix.prototype.plu=function(){var data=this.data;var n=this.shape[0];var ipiv=new Int32Array(n);var max;var abs;var diag;var p;var i;var j;var k;for(k=0;k<n;k+=1){p=k;max=Math.abs(data[k*n+k]);for(j=k+1;j<n;j+=1){abs=Math.abs(data[j*n+k]);if(max<abs){max=abs;p=j}}ipiv[k]=p;if(p!==k){this.swap(k,p)}diag=data[k*n+k];for(i=k+1;i<n;i+=1){data[i*n+k]/=diag}for(i=k+1;i<n;i+=1){for(j=k+1;j<n-1;j+=1){data[i*n+j]-=data[i*n+k]*data[k*n+j];j+=1;data[i*n+j]-=data[i*n+k]*data[k*n+j]}if(j===n-1){data[i*n+j]-=data[i*n+k]*data[k*n+j]}}}return[this,ipiv]};Matrix.prototype.rank=function(){var vectors=this.toArray().map(function(row){return new Vector_1.Vector(row)});var _a=this.shape,r=_a[0],c=_a[1];var counter=0;var tmp;var pivot;var target;var scalar;var i;var j;for(i=0;i<r-1;i+=1){pivot=undefined;for(j=i;j<r;j+=1){if(vectors[i].get(i)!==0){if(i!==j){tmp=vectors[i];vectors[i]=vectors[j];vectors[j]=tmp}pivot=vectors[i];break}}if(pivot===undefined){continue}for(j=i+1;j<r;j+=1){target=vectors[j];scalar=target.get(i)/pivot.get(i);vectors[j]=target.subtract(pivot.scale(scalar))}}for(i=0;i<r;i+=1){for(j=0;j<c;j+=1){if(vectors[i].get(j)!==0){counter+=1;break}}}return counter};Matrix.prototype.reduce=function(callback,initialValue){var c=this.shape[1];var length=this.length;if(length===0&&initialValue===undefined){throw new Error("reduce of empty matrix with no initial value.")}var data=this.data;var i;var value;if(initialValue===undefined){value=data[0];i=1}else{value=initialValue;i=0}for(;i<length;i+=1){value=callback.call(this,value,data[i],c===0?0:Math.floor(i/c),i%c)}return value};Matrix.prototype.rowAdd=function(dest,source,scalar){if(scalar===void 0){scalar=1}this.check(dest,0);this.check(source,0);var c=this.shape[1];var i;for(i=0;i<c;i+=1){this.set(dest,i,this.get(dest,i)+this.get(source,i)*scalar)}return this};Matrix.prototype.set=function(i,j,value){this.check(i,j);this.data[i*this.shape[1]+j]=value;return this};Matrix.prototype.solve=function(rhs){var _a=Matrix.plu(this),lu=_a[0],ipiv=_a[1];return lu.lusolve(rhs.copy(),ipiv)};Matrix.prototype.swap=function(i,j){var _a=this.shape,r=_a[0],c=_a[1];if(i<0||j<0||i>r-1||j>r-1){throw new Error("index out of bounds")}var copy=this.data.slice(i*c,(i+1)*c);this.data.copyWithin(i*c,j*c,(j+1)*c);this.data.set(copy,j*c);return this};Matrix.prototype.toArray=function(){var _a=this.shape,r=_a[0],c=_a[1];var result=[];var i;for(i=0;i<r;i+=1){result.push(Array.prototype.slice.call(this.data.subarray(i*c,(i+1)*c)))}return result};Matrix.prototype.toString=function(){var _a=this.shape,r=_a[0],c=_a[1];var result=[];var i;for(i=0;i<r;i+=1){result.push("["+this.data.subarray(i*c,(i+1)*c)+"]")}return"["+result.join(", \n")+"]"};Matrix.prototype.trace=function(){var diag=this.diag();var length=diag.length;var result=0;var i;for(i=0;i<length;i+=1){result+=diag.get(i)}return result};Matrix.prototype.transpose=function(){var _a=this.shape,r=_a[0],c=_a[1];var data=new this.type(c*r);var i;var j;for(i=0;i<r;i+=1){for(j=0;j<c;j+=1){data[j*r+i]=this.data[i*c+j]}}return new Matrix(data,{shape:[c,r]})};return Matrix}(NDArray_1.NDArray);exports.Matrix=Matrix;try{window.Matrix=Matrix}catch(err){}},{"./NDArray":22,"./Vector":23,nblas:14}],22:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var util_1=require("./util");var nblas;try{nblas=require("nblas")}catch(err){}var abs=Math.abs,acos=Math.acos,acosh=Math.acosh,asin=Math.asin,asinh=Math.asinh,atan=Math.atan,atanh=Math.atanh,cbrt=Math.cbrt,ceil=Math.ceil,cos=Math.cos,cosh=Math.cosh,exp=Math.exp,expm1=Math.expm1,floor=Math.floor,fround=Math.fround,log=Math.log,log1p=Math.log1p,log10=Math.log10,log2=Math.log2,pow=Math.pow,round=Math.round,sign=Math.sign,sin=Math.sin,sinh=Math.sinh,sqrt=Math.sqrt,tan=Math.tan,tanh=Math.tanh,trunc=Math.trunc;var NDArray=function(){function NDArray(data,options){this.data=new Float32Array(0);this.length=0;this.shape=[0];this.type=Float32Array;if(util_1.isTypedArray(data)){this.data=data;this.shape=typeof options==="object"?options.shape:[this.data.length];this.length=this.data.length;this.type=util_1.type(data)}else if(data instanceof Array){this.data=new Float32Array(util_1.flatten(data));this.shape=util_1.shape(data);this.length=this.data.length}else if(data instanceof NDArray){return data.copy()}}NDArray.prototype.abs=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=abs(this.data[i])}return this};NDArray.prototype.acos=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=acos(this.data[i])}return this};NDArray.prototype.acosh=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=acosh(this.data[i])}return this};NDArray.prototype.add=function(x,alpha){if(alpha===void 0){alpha=1}this.equilateral(x);this.equidimensional(x);try{nblas.axpy(x.data,this.data,alpha)}catch(err){var _a=this,d1=_a.data,l1=_a.length;var d2=x.data;var i=void 0;for(i=0;i<l1;i+=1){d1[i]+=alpha*d2[i]}}return this};NDArray.prototype.asin=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=asin(this.data[i])}return this};NDArray.prototype.asinh=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=asinh(this.data[i])}return this};NDArray.prototype.atan=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=atan(this.data[i])}return this};NDArray.prototype.atanh=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=atanh(this.data[i])}return this};NDArray.prototype.cbrt=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=cbrt(this.data[i])}return this};NDArray.prototype.ceil=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=ceil(this.data[i])}return this};NDArray.prototype.copy=function(){var copy=Object.assign(Object.create(Object.getPrototypeOf(this)),this);copy.data=new this.type(this.data);copy.shape=this.shape;copy.length=this.length;copy.type=this.type;return copy};NDArray.prototype.cos=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=cos(this.data[i])}return this};NDArray.prototype.cosh=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=cosh(this.data[i])}return this};NDArray.prototype.dot=function(x){this.equilateral(x);this.equidimensional(x);var _a=this,d1=_a.data,l1=_a.length;var d2=x.data;try{return nblas.dot(d1,d2)}catch(err){var result=0;var i=void 0;for(i=0;i<l1;i+=1){result+=d1[i]*d2[i]}return result}};NDArray.prototype.equals=function(x){this.equilateral(x);this.equidimensional(x);var _a=this,d1=_a.data,l1=_a.length;var d2=x.data;var i;for(i=0;i<l1;i+=1){if(d1[i]!==d2[i]){return false}}return true};NDArray.prototype.equidimensional=function(x){var s1=this.shape;var s2=x.shape;if(!s1.every(function(dim,i){return dim===s2[i]})){throw new Error("shapes "+s1+" and "+s2+" do not match")}};NDArray.prototype.equilateral=function(x){var l1=this.length;var l2=x.length;if(l1!==l2){throw new Error("lengths "+l1+" and "+l2+" do not match")}};NDArray.prototype.exp=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=exp(this.data[i])}return this};NDArray.prototype.expm1=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=expm1(this.data[i])}return this};NDArray.prototype.fill=function(value){if(value===void 0){value=0}var _a=this,data=_a.data,length=_a.length;var i;for(i=0;i<length;i+=1){data[i]=value instanceof Function?value(i):value}return this};NDArray.prototype.floor=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=floor(this.data[i])}return this};NDArray.prototype.fround=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=fround(this.data[i])}return this};NDArray.prototype.log=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=log(this.data[i])}return this};NDArray.prototype.log10=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=log10(this.data[i])}return this};NDArray.prototype.log1p=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=log1p(this.data[i])}return this};NDArray.prototype.log2=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=log2(this.data[i])}return this};NDArray.prototype.magnitude=function(){var length=this.length;if(length===0){return 0}var data=this.data;try{return nblas.nrm2(data)}catch(err){var result=0;var i=void 0;for(i=0;i<length;i+=1){result+=data[i]*data[i]}return Math.sqrt(result)}};NDArray.prototype.max=function(){var data=this.data;try{return data[nblas.iamax(data)]}catch(err){var length_1=this.length;var result=Number.NEGATIVE_INFINITY;var i=void 0;for(i=0;i<length_1;i+=1){result=result<data[i]?data[i]:result}return result}};NDArray.prototype.min=function(){var _a=this,data=_a.data,length=_a.length;var result=Number.POSITIVE_INFINITY;var i;for(i=0;i<length;i+=1){result=result<data[i]?result:data[i]}return result};NDArray.prototype.pow=function(exponent){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=pow(this.data[i],exponent)}return this};NDArray.prototype.product=function(x){this.equilateral(x);this.equidimensional(x);var _a=this,d1=_a.data,l1=_a.length;var d2=x.data;var i;for(i=0;i<l1;i+=1){d1[i]*=d2[i]}return this};NDArray.prototype.reshape=function(s){var length=this.length;if(s.reduce(function(sum,dim){return sum*dim},1)!==length){throw new Error("shape "+util_1.shape+" does not match length "+length)}this.shape=s;return this};NDArray.prototype.round=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=round(this.data[i])}return this};NDArray.prototype.scale=function(scalar){var data=this.data;try{nblas.scal(data,scalar)}catch(err){var length_2=this.length;var i=void 0;for(i=0;i<length_2;i+=1){data[i]*=scalar}}return this};NDArray.prototype.sign=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=sign(this.data[i])}return this};NDArray.prototype.sin=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=sin(this.data[i])}return this};NDArray.prototype.sinh=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=sinh(this.data[i])}return this};NDArray.prototype.sqrt=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=sqrt(this.data[i])}return this};NDArray.prototype.subtract=function(x){return this.add(x,-1)};NDArray.prototype.tan=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=tan(this.data[i])}return this};NDArray.prototype.tanh=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=tanh(this.data[i])}return this};NDArray.prototype.trunc=function(){var l1=this.length;var i;for(i=0;i<l1;i+=1){this.data[i]=trunc(this.data[i])}return this};return NDArray}();exports.NDArray=NDArray;try{window.NDArray=NDArray}catch(error){}},{"./util":25,nblas:14}],23:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});var NDArray_1=require("./NDArray");var Vector=function(_super){__extends(Vector,_super);function Vector(data){return _super.call(this,typeof data==="number"?new Float32Array(data):data)||this}Vector.add=function(a,b){return a.copy().add(b)};Vector.angle=function(a,b){return a.angle(b)};Vector.binOp=function(a,b,op){return a.copy().binOp(b,op)};Vector.combine=function(a,b){return a.copy().combine(b)};Vector.dot=function(a,b){return a.dot(b)};Vector.equals=function(a,b){return a.equals(b)};Vector.fill=function(count,value,type){if(value===void 0){value=0}if(type===void 0){type=Float32Array}if(count<0){throw new Error("invalid size")}var data=new type(count);return new Vector(data).fill(value)};Vector.normalize=function(vector){return vector.copy().normalize()};Vector.ones=function(count,type){if(type===void 0){type=Float32Array}return Vector.fill(count,1,type)};Vector.project=function(a,b){return a.project(b.copy())};Vector.random=function(count,min,max,type){if(min===void 0){min=0}if(max===void 0){max=1}if(type===void 0){type=Float32Array}return Vector.fill(count,min,type).map(function(value){return value+Math.random()*(max-min)})};Vector.range=function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}var type=Float32Array;var backwards=false;var start;var step;var end;if(typeof args[args.length-1]==="function"){type=args.pop()}switch(args.length){case 2:end=args.pop();step=1;start=args.pop();break;case 3:end=args.pop();step=args.pop();start=args.pop();break;default:throw new Error("invalid range")}if(end-start<0){var copy=end;end=start;start=copy;backwards=true}if(step>end-start){throw new Error("invalid range")}var data=new type(Math.ceil((end-start)/step));var i=start;var j=0;if(backwards){for(;i<end;i+=step,j+=1){data[j]=end-i+start}}else{for(;i<end;i+=step,j+=1){data[j]=i}}return new Vector(data)};Vector.scale=function(vector,scalar){return vector.copy().scale(scalar)};Vector.subtract=function(a,b){return a.copy().subtract(b)};Vector.zeros=function(count,type){if(type===void 0){type=Float32Array}return Vector.fill(count,0,type)};Vector.prototype.angle=function(vector){return Math.acos(this.dot(vector)/this.magnitude()/vector.magnitude())};Vector.prototype.binOp=function(vector,op){var l1=this.length;var l2=vector.length;if(l1!==l2){throw new Error("sizes do not match!")}var i;for(i=0;i<l1;i+=1){this.data[i]=op(this.data[i],vector.data[i],i)}return this};Vector.prototype.check=function(index){if(!isFinite(index)||index<0||index>this.length-1){throw new Error("index out of bounds")}};Vector.prototype.combine=function(vector){var l1=this.length;var l2=vector.length;if(l2===0){return this}if(l1===0){this.data=new vector.type(vector.data);this.length=l2;this.type=vector.type;return this}var d1=this.data;var d2=vector.data;var data=new this.type(l1+l2);data.set(d1);data.set(d2,l1);this.data=data;this.length=l1+l2;this.shape=[l1+l2];return this};Vector.prototype.cross=function(vector){if(this.length!==3||vector.length!==3){throw new Error("cross(...) : vectors must have three components.")}var c1=this.y*vector.z-this.z*vector.y;var c2=this.z*vector.x-this.x*vector.z;var c3=this.x*vector.y-this.y*vector.x;return new Vector([c1,c2,c3])};Vector.prototype.each=function(callback){var i;for(i=0;i<this.length;i+=1){callback.call(this,this.data[i],i,this.data)}return this};Vector.prototype.get=function(index){this.check(index);return this.data[index]};Vector.prototype.map=function(callback){var l=this.length;var mapped=this.copy();var data=mapped.data;var i;for(i=0;i<l;i+=1){data[i]=callback.call(mapped,data[i],i,data)}return mapped};Vector.prototype.normalize=function(){return this.scale(1/this.magnitude())};Vector.prototype.project=function(vector){return vector.scale(this.dot(vector)/vector.dot(vector))};Vector.prototype.push=function(value){return this.combine(new Vector([value]))};Vector.prototype.reduce=function(callback,initialValue){var l=this.length;if(l===0&&initialValue===undefined){throw new Error("Reduce of empty matrix with no initial value.")}var i;var value;if(initialValue===undefined){value=this.data[0];i=1}else{value=initialValue;i=0}for(;i<l;i+=1){value=callback.call(this,value,this.data[i],i,this.data)}return value};Vector.prototype.set=function(index,value){this.check(index);this.data[index]=value;return this};Object.defineProperty(Vector.prototype,"x",{get:function(){return this.get(0)},set:function(value){this.set(0,value)},enumerable:true,configurable:true});Object.defineProperty(Vector.prototype,"y",{get:function(){return this.get(1)},set:function(value){this.set(1,value)},enumerable:true,configurable:true});Object.defineProperty(Vector.prototype,"z",{get:function(){return this.get(2)},set:function(value){this.set(2,value)},enumerable:true,configurable:true});Object.defineProperty(Vector.prototype,"w",{get:function(){return this.get(3)},set:function(value){this.set(3,value)},enumerable:true,configurable:true});Vector.prototype.toArray=function(){return[].slice.call(this.data)};Vector.prototype.toString=function(){var l=this.length;var result=["["];var i=0;if(i<l){result.push(String(this.data[i]));i+=1}while(i<l){result.push(", "+this.data[i]);i+=1}result.push("]");return result.join("")};return Vector}(NDArray_1.NDArray);exports.Vector=Vector;try{window.Vector=Vector}catch(error){}},{"./NDArray":22}],24:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var Vector_1=require("./Vector");exports.Vector=Vector_1.Vector;var Matrix_1=require("./Matrix");exports.Matrix=Matrix_1.Matrix;var NDArray_1=require("./NDArray");exports.NDArray=NDArray_1.NDArray},{"./Matrix":21,"./NDArray":22,"./Vector":23}],25:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.flatten=function(input){return input.reduce(function(acc,next){return acc.concat(Array.isArray(next)?exports.flatten(next):next)},[])};exports.shape=function(input){return Array.isArray(input)?[input.length].concat(exports.shape(input[0])):[]};exports.type=function(input){switch(input.constructor.name){case"Int8Array":return Int8Array;case"Uint8Array":return Uint8Array;case"Int16Array":return Int16Array;case"Uint16Array":return Uint16Array;case"Int32Array":return Int32Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float64Array":return Float64Array;default:return Float32Array}};exports.isTypedArray=function(input){return!!(input&&input.buffer instanceof ArrayBuffer&&input.BYTES_PER_ELEMENT)}},{}],26:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Bezier=void 0;var _Renderer=require("./Renderer");var _PrimitiveComponent2=require("./PrimitiveComponent");var _vectorious=require("vectorious");function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call}return _assertThisInitialized(self)}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass)}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _se