From b250940fd359bec0a2b626b8a497c54d5f242c26 Mon Sep 17 00:00:00 2001
From: Patricio Gonzalez Vivo
Date: Wed, 13 Jun 2018 05:14:52 -0700
Subject: [PATCH] fixing mouse issue and new glslCanvas 0.1.3
---
build/glslEditor.js | 752 ++++++++++++++++++++--------------------
build/glslEditor.min.js | 10 +-
package-lock.json | 20 +-
package.json | 8 +-
src/js/GlslEditor.js | 3 +-
src/js/core/Shader.js | 8 +-
6 files changed, 409 insertions(+), 392 deletions(-)
diff --git a/build/glslEditor.js b/build/glslEditor.js
index 5c832e4..e877088 100644
--- a/build/glslEditor.js
+++ b/build/glslEditor.js
@@ -15453,6 +15453,287 @@ var toConsumableArray = function (arr) {
}
};
+var lastError = '';
+
+/**
+ * Creates the HTLM for a failure message
+ * @param {string} canvasContainerId id of container of th
+ * canvas.
+ * @return {string} The html.
+ */
+function makeFailHTML(msg) {
+ return '\n\n';
+}
+
+/**
+ * Message for getting a webgl browser
+ * @type {string}
+ */
+var GET_A_WEBGL_BROWSER = '\n\tThis page requires a browser that supports WebGL.
\n\tClick here to upgrade your browser.\n';
+
+/**
+ * Message for need better hardware
+ * @type {string}
+ */
+var OTHER_PROBLEM = '\n\tIt does not appear your computer can support WebGL.
\n\tClick here for more information.\n';
+
+/**
+ * Code to return in `onError` callback when the browser doesn't support webgl
+ * @type {number}
+ */
+var ERROR_BROWSER_SUPPORT = 1;
+
+/**
+ * Code to return in `onError` callback there's any other problem related to webgl
+ * @type {number}
+ */
+var ERROR_OTHER = 2;
+
+/**
+ * Creates a webgl context. If creation fails it will
+ * change the contents of the container of the
";n.activeModal=new v["default"]("ge_tooltip",{innerHTML:o}),n.activeModal.showAt(n.main.editor)}}})}return r(e,[{key:"getMatch",value:function(e){var t=["color","vec3","vec2","number"],n=void 0;for(var r in t)if(n=this.getTypeMatch(e,t[r]))return n}},{key:"getTypeMatch",value:function(e,t){if(t){var n=void 0;switch(t.toLowerCase()){case"color":n=/vec[3|4]\([\d|.|,\s]*\)/g;break;case"vec3":n=/vec3\([-|\d|.|,\s]*\)/g;break;case"vec2":n=/vec2\([-|\d|.|,\s]*\)/g;break;case"number":n=/[-]?\d+\.\d+|\d+\.|\.\d+/g;break;default:return void console.error("invalid match selection")}var r=this.main.editor.getLine(e.line),i=n.execAll(r);if(i)for(var o=0;o=l&&e.ch<=c)return{type:t,start:l,end:c,string:s}}}}}]),e}();n["default"]=y,t.exports=n["default"]},{"./modals/Modal":141,"./pickers/ColorPicker":142,"./pickers/FloatPicker":143,"./pickers/Vec2Picker":145,"./pickers/Vec3Picker":146,"./pickers/types/Color":147,"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11,"babel-runtime/helpers/interop-require-default":14}],137:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/class-call-check")["default"],i=e("babel-runtime/helpers/interop-require-default")["default"];Object.defineProperty(n,"__esModule",{value:!0});var o=e("./MenuItem"),s=i(o),a=e("./modals/ExportModal"),l=i(a),c=function u(e){var t=this;r(this,u),this.main=e,this.menus={},this.el=document.createElement("ul"),this.el.setAttribute("class","ge_menu_bar"),this.menus["new"]=new s["default"](this.el,"ge_menu",'add New',function(t){e["new"]()}),this.fileInput=document.createElement("input"),this.fileInput.setAttribute("type","file"),this.fileInput.setAttribute("accept","text/x-yaml"),this.fileInput.style.display="none",this.fileInput.addEventListener("change",function(t){e.open(t.target.files[0])}),this.menus.open=new s["default"](this.el,"ge_menu",'folder_open Open',function(e){t.fileInput.click()}),this.menus.test=new s["default"](this.el,"ge_menu",'timeline Test',function(t){e.visualDebugger.check()}),this.menus.share=new s["default"](this.el,"ge_menu",'arrow_upward Export',function(n){!e.change&&t.exportModal||(t.exportModal=new l["default"]("ge_export",{main:e,position:"fixed"}));var r=t.menus.share.el.getBoundingClientRect();t.exportModal.presentModal(r.left-5,r.top+r.height+5)}),this.menus.autoupdate=new s["default"](this.el,"ge_menu",' autorenew Update: ON',function(n){e.autoupdate?(e.autoupdate=!1,t.menus.autoupdate.name='autorenew Update: OFF'):(e.autoupdate=!0,e.update(),t.menus.autoupdate.name='autorenew Update: ON')}),e.container.appendChild(this.el)};n["default"]=c,t.exports=n["default"]},{"./MenuItem":138,"./modals/ExportModal":140,"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/interop-require-default":14}],138:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/create-class")["default"],i=e("babel-runtime/helpers/class-call-check")["default"];Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(t,n,r,o){i(this,e),this.el=document.createElement("li"),this.button=document.createElement("button"),this.button.className=n+"_button",this.el.appendChild(this.button),this.el.setAttribute("class",n),this.button.innerHTML=r,this.className=n,this.hiddenClass=n+"--hidden",this.button.addEventListener("click",o,!0),t&&t.appendChild(this.el)}return r(e,[{key:"hide",value:function(){this.el.setAttribute("class",this.className+" "+this.hiddenClass)}},{key:"show",value:function(){this.el.setAttribute("class",this.className)}},{key:"name",set:function(e){this.button.innerHTML=e}}]),e}();n["default"]=o,t.exports=n["default"]},{"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11}],139:[function(e,t,n){"use strict";function r(e,t){var n=document.createElement("div");return n.setAttribute("class","ge_assing_marker"),n.innerHTML=e,n}function i(e,t){return"string"==typeof e?e=new RegExp(e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),t?"gi":"g"):e.global||(e=new RegExp(e.source,e.ignoreCase?"gi":"g")),{token:function(t){e.lastIndex=t.pos;var n=e.exec(t.string);return n&&n.index===t.pos?(t.pos+=n[0].length||1,"searching"):void(n?t.pos=n.index:t.skipToEnd())}}}var o=e("babel-runtime/helpers/create-class")["default"],s=e("babel-runtime/helpers/class-call-check")["default"];Object.defineProperty(n,"__esModule",{value:!0
-});var a=e("../tools/debugging"),l=e("../core/Editor.js"),c={},u=30,h=function(){function e(t){var n=this;s(this,e),this.main=t,this.breakpoint=null,c=t,this.testing=!1,this.testingFrag="",this.testingLine=0,this.testingResults=[],this.testingSamples=[],this.main.editor.on("gutterClick",function(e,t){var r=e.lineInfo(t);if(r&&r.gutterMarkers&&r.gutterMarkers.breakpoints){var i=new RegExp("\\s*[float|vec2|vec3|vec4]?\\s+([\\w|\\_]*)[\\.\\w]*?\\s+[\\+|\\-|\\\\|\\*]?\\=","i"),o=i.exec(r.text);o&&(n.debug(o[1],r.line),n.breakpoint=r.line)}})}return o(e,[{key:"check",value:function(){this.testingResults=[];for(var e=this.main.editor,t=e.getDoc().size,n=0,r=0;r=t.getDoc().size){n.testingLine=0,n.testing=!1;var i=n.testingResults,o=(0,a.getResultRange)(i),s=(0,a.getDeltaSum)(i),u=(0,a.getHits)(i);console.log("Test: ",o.max.ms+"ms",i),t.clearGutter("breakpoints");for(var h in i){var f=i[h].delta/s*100,d=i[h].delta/s*30,p=""+i[h].ms.toFixed(2);i[h].delta>0&&(p+=''),t.setGutterMarker(i[h].line,"breakpoints",r(p+"
"))}}else if((0,a.isLineAfterMain)(t,e)){var g=c.shader.canvas,m=new RegExp("\\s*[float|vec2|vec3|vec4]?\\s+([\\w|\\_]*)[\\.\\w]*?\\s+[\\+|\\-|\\\\|\\*]?\\=","i"),v=m.exec(t.getLine(e));if(v){var y=v[1],b=(0,a.getVariableType)(t,y);if("none"===b)return void n.testLine(e+1);n.testing=!0,n.testingLine=e,n.testingFrag=(0,a.getShaderForTypeVarInLine)(t,b,y,e),n.testingSamples=[],(0,l.unfocusAll)(t),(0,l.focusLine)(t,e),c.debugging=!0,g.test(this.onTest,n.testingFrag)}else n.testLine(e+1)}else n.testLine(e+1)}},{key:"onTest",value:function(e){var t=c.editor,n=c.shader.canvas,i=c.visualDebugger;if(e.wasValid){var o=e.timeElapsedMs;if(i.testingSamples.length0;c-=r)e.beginPath(),360!==r&&e.moveTo(1,1),e.arc(1,1,1,(c-r/2-1)*u,(c+r/2+1)*u),i?i(e,c):(e.fillStyle="black",e.fill());e.restore()}function i(e,t,n,i,o){o=o||1,n=[(n[0]||n)-o/2,(n[1]||n)-o/2],r(e,t,n,1,function(e,t){e.restore(),e.lineWidth=o,e.strokeStyle=i||"#000",e.stroke()})}var o=e("babel-runtime/helpers/get")["default"],s=e("babel-runtime/helpers/inherits")["default"],a=e("babel-runtime/helpers/create-class")["default"],l=e("babel-runtime/helpers/class-call-check")["default"],c=e("babel-runtime/helpers/interop-require-default")["default"];Object.defineProperty(n,"__esModule",{value:!0});var u=e("./Picker"),h=c(u),f=e("./types/Color"),d=c(f),p=e("../../tools/common"),g=e("../../tools/interactiveDom"),m=void 0,v=0,y=void 0,b=function(e){function t(){var e=arguments.length<=0||void 0===arguments[0]?"vec3(1.0,0.0,0.0)":arguments[0],n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];l(this,t),o(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,"ge_colorpicker_",n),this.width=250,this.height=250,this.disc={width:200,height:200},this.barlum={width:25,height:200},this.setValue(e),this.init()}return s(t,e),a(t,[{key:"init",value:function(){var e=this;if(!y){var t=document.createElement("div"),n=document.createElement("div"),r=document.createElement("div"),i=document.createElement("canvas"),o=document.createElement("div"),s=document.createElement("div"),a=document.createElement("div"),l=document.createElement("div"),c=document.createElement("canvas"),u=document.createElement("div"),h=document.createElement("div"),f=document.createElement("div");t.className=this.CSS_PREFIX+"modal ge_picker_modal",t.style.backgroundColor=this.bgColor,n.className=this.CSS_PREFIX+"patch",n.style.backgroundColor=this.bgColor,r.className=this.CSS_PREFIX+"hsv-map",i.className=this.CSS_PREFIX+"disc",i.style.backgroundColor=this.bgColor,o.className=this.CSS_PREFIX+"disc-cover",s.className=this.CSS_PREFIX+"disc-cursor",a.className=this.CSS_PREFIX+"bar-bg",l.className=this.CSS_PREFIX+"bar-white",c.className=this.CSS_PREFIX+"bar-luminance",u.className=this.CSS_PREFIX+"bar-cursors",h.className=this.CSS_PREFIX+"bar-cursor-left",f.className=this.CSS_PREFIX+"bar-cursor-right",r.id="cp-map",u.id="cp-bar",t.appendChild(n),t.appendChild(r),r.appendChild(i),r.appendChild(o),r.appendChild(s),r.appendChild(a),r.appendChild(l),r.appendChild(c),r.appendChild(u),u.appendChild(h),u.appendChild(f),y=t}if(this.el=y.cloneNode(!0),(0,g.subscribeInteractiveDom)(this.el,{move:!0,resize:!1,snap:!1}),this.dom={},this.dom.hsvMap=this.el.querySelector(".ge_colorpicker_hsv-map"),this.dom.hsvMapCover=this.dom.hsvMap.children[1],this.dom.hsvMapCursor=this.dom.hsvMap.children[2],this.dom.hsvBarBGLayer=this.dom.hsvMap.children[3],this.dom.hsvBarWhiteLayer=this.dom.hsvMap.children[4],this.dom.hsvBarCursors=this.dom.hsvMap.children[6],this.dom.hsvLeftCursor=this.dom.hsvBarCursors.children[0],this.dom.hsvRightCursor=this.dom.hsvBarCursors.children[1],this.dom.colorDisc=this.el.querySelector(".ge_colorpicker_disc"),this.dom.luminanceBar=this.el.querySelector(".ge_colorpicker_bar-luminance"),this.linkButton){var d=document.createElement("div");d.innerHTML="+",d.className=this.CSS_PREFIX+"link-button",d.style.color=this.fgColor,this.el.appendChild(d),d.addEventListener("click",function(){e.trigger("linkButton",e.value),"function"==typeof e.linkButton&&e.linkButton(e.value),e.removeModal()})}}},{key:"draw",value:function(){var e=this.el.querySelector(".ge_colorpicker_patch");e.style.backgroundColor=this.value.getString("rgb");var t=this.value.colors,n=this.dom.colorDisc.offsetHeight/2,r=2*Math.PI,i=Math.cos(r-t.hsv.h*r),o=Math.sin(r-t.hsv.h*r),s=t.hsv.s*(n-5);this.dom.hsvMapCover.style.opacity=1-t.hsv.v/255,this.dom.hsvBarWhiteLayer.style.opacity=1-t.hsv.s,this.dom.hsvBarBGLayer.style.backgroundColor="rgb("+t.hueRGB.r+","+t.hueRGB.g+","+t.hueRGB.b+")",this.dom.hsvMapCursor.style.cssText="left: "+(i*s+n)+"px;top: "+(o*s+n)+"px;border-color: "+(t.luminance>.22?"#333;":"#ddd"),t.luminance>.22?this.dom.hsvBarCursors.classList.add("ge_colorpicker_dark"):this.dom.hsvBarCursors.classList.remove("ge_colorpicker_dark"),this.dom.hsvLeftCursor&&(this.dom.hsvLeftCursor.style.top=this.dom.hsvRightCursor.style.top=(1-t.hsv.v/255)*n*2+"px")}},{key:"presentModal",value:function(e,n){o(Object.getPrototypeOf(t.prototype),"presentModal",this).call(this,e,n),this.onHsvDownHandler=(0,u.addEvent)(this.dom.hsvMap,"mousedown",this.onHsvDown,this);var s=this.dom.colorDisc;if(s.getContext){var a=s.getContext("2d"),l=(0,p.getDevicePixelRatio)(a),c=this.disc.width/l,h=this.disc.height/l;this.dom.colorDisc.width=c*l,this.dom.colorDisc.height=h*l,a.scale(l,l),r(a,[c/2,h/2],[c/2-1,h/2-1],360,function(e,t){var n=e.createRadialGradient(1,1,1,1,1,0);n.addColorStop(0,"hsl("+(360-t+0)+", 100%, 50%)"),n.addColorStop(1,"#fff"),e.fillStyle=n,e.fill()}),i(a,[c/2,h/2],[c/2,h/2],this.bgColor,2/l);var f=this.dom.luminanceBar.getContext("2d");this.dom.luminanceBar.width=this.barlum.width,this.dom.luminanceBar.height=this.barlum.height*l,f.scale(l,l);var d=f.createLinearGradient(0,0,0,this.barlum.height/l);d.addColorStop(0,"transparent"),d.addColorStop(1,"black"),f.fillStyle=d,f.fillRect(0,0,30,200)}this.draw()}},{key:"setValue",value:function(e){this.value=new d["default"](e)}},{key:"onHsvDown",value:function(e){var t=e.target||e.srcElement;e.preventDefault(),m=t.id?t:t.parentNode,v=m.offsetHeight,this.onHsvMoveHandler=(0,u.addEvent)(this.el,"mousemove",this.onHsvMove,this),this.onHsvUpHandler=(0,u.addEvent)(window,"mouseup",this.onHsvUp,this),this.onHsvMove(e),this.dom.hsvMap.classList.add("ge_colorpicker_no-cursor"),this.renderer.start()}},{key:"onHsvMove",value:function(e){e.preventDefault(),e.stopPropagation();var t=void 0,n=void 0,r=void 0,i=void 0,o=void 0;if(e.target===this.dom.hsvMapCover&&m===this.dom.hsvMap)t=v/2,n=e.offsetX-t,r=e.offsetY-t,i=(360-(180*Math.atan2(r,n)/Math.PI+(r<0?360:0)))/360,o=Math.sqrt(n*n+r*r)/t,this.value.set({h:i,s:o},"hsv");else if(e.target===this.dom.hsvBarCursors&&m===this.dom.hsvBarCursors){var s=(v-e.offsetY)/v;s=255*Math.max(0,Math.min(1,s)),this.value.set({v:s},"hsv")}this.trigger("changed",this.value)}},{key:"onHsvUp",value:function(e){this.renderer.stop(),this.dom.hsvMap.classList.remove("ge_colorpicker_no-cursor"),this.destroyEvents()}},{key:"destroyEvents",value:function(){(0,u.removeEvent)(this.el,"mousemove",this.onHsvMoveHandler),this.onHsvMoveHandler=null,(0,u.removeEvent)(window,"mouseup",this.onHsvUpHandler),this.onHsvUpHandler=null}},{key:"close",value:function(){this.destroyEvents(),(0,u.removeEvent)(this.dom.hsvMap,"mousedown",this.onHsvDownHandler),this.onHsvDownHandler=null}}]),t}(h["default"]);n["default"]=b,t.exports=n["default"]},{"../../tools/common":128,"../../tools/interactiveDom":130,"./Picker":144,"./types/Color":147,"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11,"babel-runtime/helpers/get":12,"babel-runtime/helpers/inherits":13,"babel-runtime/helpers/interop-require-default":14}],143:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/get")["default"],i=e("babel-runtime/helpers/inherits")["default"],o=e("babel-runtime/helpers/create-class")["default"],s=e("babel-runtime/helpers/class-call-check")["default"],a=e("babel-runtime/helpers/interop-require-default")["default"];Object.defineProperty(n,"__esModule",{value:!0});var l=e("./Picker"),c=a(l),u=e("./types/Float"),h=a(u),f=function(e){function t(e,n){s(this,t),r(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,"ge_floatpicker_",n),this.width=this.width||250,this.height=this.height||40,this.prevOffset=0,this.scale=2,this.setValue(e||1),this.create()}return i(t,e),o(t,[{key:"draw",value:function(){this.ctx.clearRect(0,0,this.width,this.height),this.ctx.strokeStyle=this.dimColor,this.ctx.lineWidth=1,this.ctx.beginPath(),this.ctx.moveTo(0,.5+.5*this.height),this.ctx.lineTo(0+this.width,.5+.5*this.height),this.ctx.closePath(),this.ctx.stroke(),this.ctx.strokeStyle=this.fnColor,this.ctx.lineWidth=1,this.ctx.beginPath(),this.ctx.moveTo(.5*this.width,0),this.ctx.lineTo(.5*this.width,this.height),this.ctx.closePath(),this.ctx.stroke(),this.ctx.fillStyle=this.overPoint?this.selColor:this.fnColor,this.ctx.beginPath(),this.ctx.moveTo(.5*this.width,5),this.ctx.lineTo(.48*this.width,0),this.ctx.lineTo(.52*this.width,0),this.ctx.closePath(),this.ctx.fill();var e=3,t=40,n=this.width/t,r=t*e,i=this.offsetX;Math.abs(this.offsetX-.5*this.width)>.5*this.width&&(i=(this.offsetX-.5*this.width)%(.5*this.width)+this.width),this.ctx.strokeStyle=this.dimColor,this.ctx.beginPath();for(var o=0;othis.width-o&&(r=this.width-o),ithis.height-o&&(i=this.height-o),this.ctx.fillStyle=this.overPoint?this.selColor:this.fnColor,this.ctx.beginPath();var s=this.overPoint?4:2;this.ctx.arc(r,i,s,0,2*Math.PI,!1),this.ctx.fill(),this.ctx.restore(),this.overPoint=!1}},{key:"onMouseMove",value:function(e){var t=e.offsetX,n=e.offsetY;this.value.x=this.range/this.width*t-(this.range-this.max),this.value.y=(this.range/this.height*n-(this.range-this.max))*-1,this.trigger("changed",this.value),this.overPoint=!0}},{key:"setValue",value:function(e){this.value=new h["default"](e)}}]),t}(c["default"]);n["default"]=f,t.exports=n["default"]},{"./Picker":144,"./types/Vector":151,"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11,"babel-runtime/helpers/get":12,"babel-runtime/helpers/inherits":13,"babel-runtime/helpers/interop-require-default":14}],146:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/get")["default"],i=e("babel-runtime/helpers/inherits")["default"],o=e("babel-runtime/helpers/create-class")["default"],s=e("babel-runtime/helpers/class-call-check")["default"],a=e("babel-runtime/helpers/interop-require-default")["default"];Object.defineProperty(n,"__esModule",{value:!0});var l=e("./Picker"),c=a(l),u=e("./types/Vector"),h=a(u),f=e("./types/Matrix"),d=a(f),p=function(e){function t(e,n){s(this,t),r(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,"ge_vec3picker_",n),this.width=this.width||200,this.height=this.width||200,this.scale=50,this.setValue(e||[0,0,1]),this.create(),this.camera=new d["default"],this.shapes=[],this.center=[0,0,0],this.shapes.push({edgeColour:this.dimColor,nodes:[[this.width/2-50,this.height/2,100],[this.width/2+50,this.height/2,100],[this.width/2,this.height/2-50,100],[this.width/2,this.height/2+50,100],[this.width/2,this.height/2,50],[this.width/2,this.height/2,150]],edges:[[0,1],[2,3],[4,5]]}),this.shapes.push({textColour:this.fnColor,nodes:[[this.width/2+68,this.height/2,100],[this.width/2-68,this.height/2,100],[this.width/2,this.height/2+68,100],[this.width/2,this.height/2-68,100],[this.width/2,this.height/2,168],[this.width/2,this.height/2,32]],text:["x","-x","y","-y","z","-z"]}),this.setCenter(this.width/2,this.height/2,100),this.dragOffset=[0,0],this.overPoint=!1}return i(t,e),o(t,[{key:"setCenter",value:function(e,t,n){for(var r in this.shapes){var i=this.shapes[r];for(var o in i.nodes)i.nodes[o][0]-=e,i.nodes[o][1]-=t,i.nodes[o][2]-=n}this.center=[e,t,n]}},{key:"viewFromCamera",value:function(e){var t=this.camera.getMult(e);return t.add(this.center),[t.x,this.height-t.y]}},{key:"draw",value:function(){this.ctx.clearRect(0,0,this.width,this.height);for(var e in this.shapes){var t=this.shapes[e];t.edgeColour&&this.drawShapeEdges(t),t.nodeColour&&this.drawShapeNodes(t),t.text&&this.drawShapeText(t)}this.drawShapeEdges({edgeColour:this.fnColor,nodes:[[0,0,0],this.point],edges:[[0,1]]}),this.drawShapeNodes({nodeColour:this.overPoint?this.selColor:this.fnColor,nodeRadius:this.overPoint?4:2,nodes:[this.point]})}},{key:"drawShapeEdges",value:function(e){var t=e.nodes;this.ctx.strokeStyle=e.edgeColour;for(var n in e.edges){var r=this.viewFromCamera(t[e.edges[n][0]]);this.ctx.lineWidth=1,this.ctx.beginPath(),this.ctx.moveTo(r[0],r[1]),r=this.viewFromCamera(t[e.edges[n][1]]),this.ctx.lineTo(r[0],r[1]),this.ctx.stroke()}}},{key:"drawShapeNodes",value:function(e){var t=e.nodeRadius||4;this.ctx.fillStyle=e.nodeColour;for(var n in e.nodes){var r=this.viewFromCamera(e.nodes[n]);this.ctx.beginPath(),this.ctx.arc(r[0],r[1],t,0,2*Math.PI,!1),this.ctx.fill()}}},{key:"drawShapeText",value:function(e){this.ctx.fillStyle=e.textColour;for(var t in e.nodes){var n=this.viewFromCamera(e.nodes[t]);this.ctx.textBaseline="middle",this.ctx.fillText(e.text[t],n[0],n[1])}}},{key:"onMouseDown",value:function(e){var n=[e.offsetX,e.offsetY];this.dragOffset=n;var i=new h["default"](this.viewFromCamera(this.point)),o=i.getSub(n);this.overPoint=o.getLength()<10,r(Object.getPrototypeOf(t.prototype),"onMouseDown",this).call(this,e),this.onMouseUpHandler=(0,l.addEvent)(this.el,"dblclick",this.onDbClick,this)}},{key:"onMouseMove",value:function(e){var t=e.offsetX,n=e.offsetY,r=.01*(t-this.dragOffset[0]),i=.01*(n-this.dragOffset[1]);if(this.overPoint){var o=this.camera.getInv(),s=o.getMult([r,-i,0]);s.mult(2),this.value.add(s),this.point=[this.value.x*this.scale,this.value.y*this.scale,this.value.z*this.scale],this.trigger("changed",this.value)}else this.camera.rotateX(i),this.camera.rotateY(r);this.dragOffset=[t,n]}},{key:"onDbClick",value:function(e){var t=new h["default"]([e.offsetX,e.offsetY]),n={x:[68,0,0],negX:[-68,0,0],y:[0,68,100],negY:[0,-68,0]},r="";for(var i in n){var o=new h["default"](this.viewFromCamera(n[i])),s=o.getSub(t);if(s.getLength()<10){r=i;break}}this.camera=new d["default"],"x"===r?this.camera.rotateY(-1.57079632679):"negX"===r?this.camera.rotateY(1.57079632679):"y"===r?this.camera.rotateX(-1.57079632679):"negY"===r&&this.camera.rotateX(1.57079632679),this.draw()}},{key:"destroyEvents",value:function(){r(Object.getPrototypeOf(t.prototype),"destroyEvents",this).call(this),(0,l.removeEvent)(this.el,"dblclick",this.onDbClick),this.onMouseMoveHandler=null}},{key:"setValue",value:function(e){this.value=new h["default"](e),this.point=[this.value.x*this.scale,this.value.y*this.scale,this.value.z*this.scale]}}]),t}(c["default"]);n["default"]=p,t.exports=n["default"]},{"./Picker":144,"./types/Matrix":150,"./types/Vector":151,"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11,"babel-runtime/helpers/get":12,"babel-runtime/helpers/inherits":13,"babel-runtime/helpers/interop-require-default":14}],147:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/create-class")["default"],i=e("babel-runtime/helpers/class-call-check")["default"],o=e("babel-runtime/helpers/interop-require-default")["default"];Object.defineProperty(n,"__esModule",{value:!0});var s=e("./ColorConverter"),a=o(s),l=function(){function e(t){i(this,e),this.colors={},this.set(t)}return r(e,[{key:"set",value:function(e,t){if("number"==typeof e){t=t?t:"rgb",this.colors[t]={};for(var n=3;n--;){var r=t[n]||t.charAt(n);this.colors[t][r]=e}}else if("string"==typeof e){var i=e.replace(/(?:#|\)|%)/g,"").split("(");if(i[1]){var o=(i[1]||"").split(/,\s*/);t=t?t:i[1]?i[0].substr(0,3):"rgb",this.set(o,t)}else this.set((0,s.getColorAsRGB)(e),"rgb")}else if(e)if(Array.isArray(e)){var r="";t=t||"rgb",this.colors[t]=this.colors[t]||{};for(var l=3;l--;){r=t[l]||t.charAt(l);var c=e.length>=3?l:0;this.colors[t][r]=parseFloat(e[c])}4===e.length&&(this.colors.alpha=parseFloat(e[3]))}else if(t)for(var u in e)this.colors[t][u]=(0,s.limitValue)(e[u]/(0,s.getValueRanges)(t)[u][1],0,1)*(0,s.getValueRanges)(t)[u][1];if(t){if("rgb"!==t){var h=a["default"];this.colors.rgb=h[t+"2rgb"](this.colors[t])}this.convert(t),this.colors.hueRGB=a["default"].hue2RGB(this.colors.hsv.h),this.colors.luminance=(0,s.getLuminance)(this.colors.rgb)}}},{key:"convert",value:function t(e){var t=a["default"],n=(0,s.getValueRanges)(),r={hsl:"hsv",cmyk:"cmy",rgb:e};if("alpha"!==e)for(var i in n)if(!n[i][i]&&e!==i&&"XYZ"!==i){var o=r[i]||"rgb";this.colors[i]=t[o+"2"+i](this.colors[o])}}},{key:"get",value:function(e){if("rgb"!==e){var t=a["default"];return this.colors[e]=t["rgb2"+e](this.colors.rgb),this.colors[e]}return this.colors.rgb}},{key:"getString",value:function(e){if("HEX"===e){var t=a["default"];return t["rgb2"+e](this.colors.rgb)}var n=this.get(e),r=e,i="";"vec"===e&&(r+=this.colors.alpha?4:3),r+="(";for(var o=0;o<3;o++)i=e[o]||e.charAt(o),r+="vec"===e?n[i].toFixed(3):Math.floor(n[i]),2!==o&&(r+=",");return this.colors.alpha&&(r+=","+this.colors.alpha.toFixed(3)),r+=")"}},{key:"uniformType",value:function(){return this.colors.alpha?"vec4":"vec3"}},{key:"uniformValue",value:function(){var e=this.get("vec"),t=[e.v,e.e,e.c];return this.colors.alpha&&t.push(this.colors.alpha),t}},{key:"uniformMethod",value:function(e){return this.colors.alpha?"4f":"3f"}}]),e}();n["default"]=l,t.exports=n["default"]},{"./ColorConverter":148,"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11,"babel-runtime/helpers/interop-require-default":14}],148:[function(e,t,n){"use strict";function r(e,t,n){return e>n?n:et?1.055*Math.pow(s,c)-.055:12.92*s,a=a>t?1.055*Math.pow(a,c)-.055:12.92*a,l=l>t?1.055*Math.pow(l,c)-.055:12.92*l,{r:r(s,0,1),g:r(a,0,1),b:r(l,0,1)}}},{key:"rgb2XYZ",value:function(e){var t=h,n=e.r,r=e.g,i=e.b,o=.04045;return n=n>o?Math.pow((n+.055)/1.055,2.4):n/12.92,r=r>o?Math.pow((r+.055)/1.055,2.4):r/12.92,i=i>o?Math.pow((i+.055)/1.055,2.4):i/12.92,{X:n*t.X[0]+r*t.X[1]+i*t.X[2],Y:n*t.Y[0]+r*t.Y[1]+i*t.Y[2],Z:n*t.Z[0]+r*t.Z[1]+i*t.Z[2]}}},{key:"XYZ2Lab",value:function(e){var t=f,n=e.X/t.X,r=e.Y/t.Y,i=e.Z/t.Z,o=16/116,s=1/3,a=.008856,l=7.787037;return n=n>a?Math.pow(n,s):l*n+o,r=r>a?Math.pow(r,s):l*r+o,i=i>a?Math.pow(i,s):l*i+o,{L:116*r-16,a:500*(n-r),b:200*(r-i)}}},{key:"Lab2XYZ",value:function(e){var t=f,n=(e.L+16)/116,r=e.a/500+n,i=n-e.b/200,o=Math.pow(r,3),s=Math.pow(n,3),a=Math.pow(i,3),l=16/116,c=.008856,u=7.787037;return{X:(o>c?o:(r-l)/u)*t.X,Y:(s>c?s:(n-l)/u)*t.Y,Z:(a>c?a:(i-l)/u)*t.Z}}},{key:"rgb2Lab",value:function(t){var n=e.rgb2XYZ(t);return e.XYZ2Lab(n)}},{key:"Lab2rgb",value:function(t){var n=e.Lab2XYZ(t);return e.XYZ2rgb(n)}}]),e}();n["default"]=p},{"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11}],149:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/create-class")["default"],i=e("babel-runtime/helpers/class-call-check")["default"];Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(t){i(this,e),this.value=t}return r(e,[{key:"getString",value:function(){return this.value.toFixed(3)}},{key:"uniformType",value:function(){return"float"}},{key:"uniformValue",value:function(){return[this.value]}},{key:"uniformMethod",value:function(){return"1f"}}]),e}();n["default"]=o,t.exports=n["default"]},{"babel-runtime/helpers/class-call-check":10,"babel-runtime/helpers/create-class":11}],150:[function(e,t,n){"use strict";var r=e("babel-runtime/helpers/create-class")["default"],i=e("babel-runtime/helpers/class-call-check")["default"],o=e("babel-runtime/helpers/interop-require-default")["default"];Object.defineProperty(n,"__esModule",{value:!0});var s=e("./Vector"),a=o(s),l=function(){function e(t,n){i(this,e),this.dim=3,this.value=[[1,0,0],[0,1,0],[0,0,1]],t&&this.set(t,n)}return r(e,[{key:"set",value:function(e,t){e.value[0][0]?(this.value=e.value,this.dim=e.dim):e[0][0]&&(this.value=e)}},{key:"rotateX",value:function(e){var t=Math.cos(e),n=Math.sin(e),r=[[1,0,0],[0,t,-n],[0,n,t]];this.value=this.getTransform(r)}},{key:"rotateY",value:function(e){var t=Math.cos(e),n=Math.sin(e),r=[[t,0,n],[0,1,0],[-n,0,t]];this.value=this.getTransform(r)}},{key:"getMult",value:function(e){if(!(e[0][0]||e.value&&e.value[0][0])){for(var t=new a["default"](e),n=[],r=0;r1?n:n[0]},i._del=function(e){for(var t=0;t1)&&w(this)}}}),Ne(o,U,{value:function(e){-1>0),F="addEventListener",I="attached",j="Callback",$="detached",W="extends",U="attributeChanged"+j,B=I+j,z="connected"+j,X="disconnected"+j,q="created"+j,V=$+j,G="ADDITION",K="MODIFICATION",Y="REMOVAL",Z="DOMAttrModified",J="DOMContentLoaded",Q="DOMSubtreeModified",ee="<",te="=",ne=/^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/,re=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],ie=[],oe=[],se="",ae=k.documentElement,le=ie.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},ce=S.prototype,ue=ce.hasOwnProperty,he=ce.isPrototypeOf,fe=S.defineProperty,de=[],pe=S.getOwnPropertyDescriptor,ge=S.getOwnPropertyNames,me=S.getPrototypeOf,ve=S.setPrototypeOf,ye=!!S.__proto__,be=!1,we="__dreCEv1",xe=e.customElements,Ce=!/^force/.test(t.type)&&!!(xe&&xe.define&&xe.get&&xe.whenDefined),ke=S.create||S,Se=e.Map||function(){var e,t=[],n=[];return{get:function(e){return n[le.call(t,e)]},set:function(r,i){e=le.call(t,r),e<0?n[t.push(r)-1]=i:n[e]=i}}},Te=e.Promise||function(e){function t(e){for(r=!0;n.length;)n.shift()(e)}var n=[],r=!1,i={"catch":function(){return i},then:function(e){return n.push(e),r&&setTimeout(t,1),i}};return e(t),i},Le=!1,Me=ke(null),Ee=ke(null),_e=new Se,Ae=function(e){return e.toLowerCase()},Oe=S.create||function ot(e){return e?(ot.prototype=e,new ot):this},Re=ve||(ye?function(e,t){return e.__proto__=t,e}:ge&&pe?function(){function e(e,t){for(var n,r=ge(t),i=0,o=r.length;i",new Pe(function(e,t){if(e[0]&&"childList"==e[0].type&&!e[0].removedNodes[0].childNodes.length){D=pe(De,"innerHTML");var n=D&&D.set;n&&fe(De,"innerHTML",{set:function(e){for(;this.lastChild;)this.removeChild(this.lastChild);n.call(this,e)}})}t.disconnect(),D=null}).observe(D,{childList:!0,subtree:!0}),D.innerHTML=""),Ze||(ve||ye?(R=function(e,t){he.call(t,e)||f(e,t)},P=f):(R=function(e,t){e[N]||(e[N]=S(!0),f(e,t))},P=R),He?(et=!1,function(){var e=pe(De,F),t=e.value,n=function(e){var t=new CustomEvent(Z,{bubbles:!0});t.attrName=e,t.prevValue=Ue.call(this,e),t.newValue=null,t[Y]=t.attrChange=2,ze.call(this,e),We.call(this,t)},r=function(e,t){var n=Be.call(this,e),r=n&&Ue.call(this,e),i=new CustomEvent(Z,{bubbles:!0});Xe.call(this,e,t),i.attrName=e,i.prevValue=n?r:null,i.newValue=t,n?i[K]=i.attrChange=1:i[G]=i.attrChange=0,We.call(this,i)},i=function(e){var t,n=e.currentTarget,r=n[N],i=e.propertyName;r.hasOwnProperty(i)&&(r=r[i],t=new CustomEvent(Z,{bubbles:!0}),t.attrName=r.name,t.prevValue=r.value||null,t.newValue=r.value=n[i]||null,null==t.prevValue?t[G]=t.attrChange=0:t[K]=t.attrChange=1,We.call(n,t))};e.value=function(e,o,s){e===Z&&this[U]&&this.setAttribute!==r&&(this[N]={className:{name:"class",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,"propertychange",i)),t.call(this,e,o,s)},fe(De,F,e)}()):Pe||(ae[F](Z,Ke),ae.setAttribute(N,1),ae.removeAttribute(N),et&&(M=function(e){var t,n,r,i=this;if(i===e.target){t=i[N],i[N]=n=_(i);for(r in n){if(!(r in t))return E(0,i,r,t[r],n[r],G);if(n[r]!==t[r])return E(1,i,r,t[r],n[r],K)}for(r in t)if(!(r in n))return E(2,i,r,t[r],n[r],Y)}},E=function(e,t,n,r,i,o){var s={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:i};s[o]=e,l(s)},_=function(e){for(var t,n,r={},i=e.attributes,o=0,s=i.length;o$");if(n[W]="a",t.prototype=Oe(HTMLAnchorElement.prototype),t.prototype.constructor=t,e.customElements.define(r,t,n),!i.test(k.createElement("a",{is:r}).outerHTML)||!i.test((new t).outerHTML))throw n}(function st(){return Reflect.construct(HTMLAnchorElement,[],st)},{},"document-register-element-a")}catch(rt){C()}if(!t.noBuiltIn)try{qe.call(k,"a","a")}catch(it){Ae=function(e){return{is:e.toLowerCase()}}}}(window)},{}],111:[function(e,t,n){"use strict";var r=e("is-callable"),i=Object.prototype.toString,o=Object.prototype.hasOwnProperty,s=function(e,t,n){for(var r=0,i=e.length;r=3&&(o=n),"[object Array]"===i.call(e)?s(e,t,o):"string"==typeof e?a(e,t,o):l(e,t,o)};t.exports=c},{"is-callable":114}],112:[function(e,t,n){(function(e){var n;n="undefined"!=typeof window?window:"undefined"!=typeof e?e:"undefined"!=typeof self?self:{},t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],113:[function(e,t,n){(function(e){"use strict";function n(e,t){return t={exports:{}},e(t,t.exports),t.exports}function r(e){var t=R.call(e);return"[object Function]"===t||"function"==typeof e&&"[object RegExp]"!==t||"undefined"!=typeof window&&(e===window.setTimeout||e===window.alert||e===window.confirm||e===window.prompt)}function i(e,t,n){if(!O(t))throw new TypeError("iterator must be a function");arguments.length<3&&(n=this),"[object Array]"===H.call(e)?o(e,t,n):"string"==typeof e?s(e,t,n):a(e,t,n)}function o(e,t,n){for(var r=0,i=e.length;r0&&(h=setTimeout(function(){if(!c){c=!0,a.abort("timeout");var e=new Error("XMLHttpRequest timeout");e.code="ETIMEDOUT",r(e)}},e.timeout)),a.setRequestHeader)for(l in v)v.hasOwnProperty(l)&&a.setRequestHeader(l,v[l]);else if(e.headers&&!u(e.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in e&&(a.responseType=e.responseType),"beforeSend"in e&&"function"==typeof e.beforeSend&&e.beforeSend(a),a.send(m||null),a}function p(e){try{if("document"===e.responseType)return e.responseXML;var t=e.responseXML&&"parsererror"===e.responseXML.documentElement.nodeName;if(""===e.responseType&&!t)return e.responseXML}catch(n){}return null}function g(){}function m(e){return'\n\n"}function v(e,t,n){function r(t){var n=e.parentNode;n&&(n.innerHTML=m(t))}function i(e,t){"function"==typeof n?n(e):r(t)}if(!window.WebGLRenderingContext)return i(Y,G),null;var o=y(e,t);return o?o.getExtension("OES_standard_derivatives"):i(Z,K),o}function y(e,t){for(var n=["webgl","experimental-webgl"],r=null,i=0;i1&&void 0!==arguments[1]?arguments[1]:null,n=[];for(var r in e){var i=e[r],o=void 0;if(t&&(r=t+"."+r),"number"==typeof i)n.push({type:"float",method:"1f",name:r,value:i});else if(Array.isArray(i)){if("number"==typeof i[0])1===i.length?n.push({type:"float",method:"1f",name:r,value:i}):i.length>=2&&i.length<=4?n.push({type:"vec"+i.length,method:i.length+"fv",name:r,value:i}):i.length>4&&n.push({type:"float[]",method:"1fv",name:r+"[0]",value:i});else if("string"==typeof i[0])n.push({type:"sampler2D",method:"1i",name:r,value:i});else if(Array.isArray(i[0])&&"number"==typeof i[0][0]){if(i[0].length>=2&&i[0].length<=4)for(o=0;o0&&e.getBoundingClientRect().top<(window.innerHeight||document.documentElement.clientHeight)}function k(e){return 0===(e&e-1)}function S(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function T(e,t){return!(!e||!t)&&e.toString()!==t.toString()}function L(e){var t=new Set;return Object.assign(e,{on:function(e,n){var r={};r[e]=n,t.add(r)},off:function(e,n){if(n){var r={};r[e]=n,t["delete"](r)}else{var i=!0,o=!1,s=void 0;try{for(var a,l=t[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var c=a.value,u=!0,h=!1,f=void 0;try{for(var d,p=Object.keys(c)[Symbol.iterator]();!(u=(d=p.next()).done);u=!0){var g=d.value;if(g===e)return void t["delete"](c)}}catch(m){h=!0,f=m}finally{try{!u&&p["return"]&&p["return"]()}finally{if(h)throw f}}}}catch(m){o=!0,s=m}finally{try{!i&&l["return"]&&l["return"]()}finally{if(o)throw s}}}},listSubscriptions:function(){var e=!0,n=!1,r=void 0;try{for(var i,o=t[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var s=i.value;console.log(s)}}catch(a){n=!0,r=a}finally{try{!e&&o["return"]&&o["return"]()}finally{if(n)throw r}}},subscribe:function(e){t.add(e)},unsubscribe:function(e){t["delete"](e)},unsubscribeAll:function(){t.clear()},trigger:function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i0){window.glslCanvases=[];for(var t=0;t\n\tClick here to upgrade your browser.\n',K='\n\tIt does not appear your computer can support WebGL.
\n\tClick here for more information.\n',Y=1,Z=2,J=function(){function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};z(this,e),L(this),this.gl=t,this.texture=t.createTexture(),this.texture&&(this.valid=!0),this.bind(),this.name=n,this.source=null,this.sourceType=null,this.loading=null,this.setData(1,1,new Uint8Array([0,0,0,255]),{filtering:"linear"}),this.setFiltering(r.filtering),this.load(r)}return X(e,[{key:"destroy",value:function(){this.valid&&(this.gl.deleteTexture(this.texture),this.texture=null,delete this.data,this.data=null,this.valid=!1)}},{key:"bind",value:function(t){this.valid&&("number"==typeof t&&e.activeUnit!==t&&(this.gl.activeTexture(this.gl.TEXTURE0+t),e.activeUnit=t),e.activeTexture!==this.texture&&(this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),e.activeTexture=this.texture))}},{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.loading=null,"string"==typeof e.url?void 0!==this.url&&e.url===this.url||this.setUrl(e.url,e):e.element?this.setElement(e.element,e):e.data&&e.width&&e.height&&this.setData(e.width,e.height,e.data,e)}},{key:"setUrl",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.valid)return this.url=e,this.source=this.url,this.sourceType="url",this.loading=new Promise(function(r,i){var o=e.split(".").pop().toLowerCase(),s="ogv"===o||"webm"===o||"mp4"===o,a=void 0;s?(a=document.createElement("video"),a.autoplay=!0,n.filtering="nearest"):a=new Image,a.onload=function(){try{t.setElement(a,n)}catch(e){console.log("Texture '"+t.name+"': failed to load url: '"+t.source+"'",e,n)}r(t)},a.onerror=function(e){console.log("Texture '"+t.name+"': failed to load url: '"+t.source+"'",e,n),r(t)},S()&&"data:"===t.source.slice(0,5)||(a.crossOrigin="anonymous"),a.src=t.source,s&&t.setElement(a,n)}),this.loading}},{key:"setData",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.width=e,this.height=t,this.source=n,this.sourceType="data",this.update(r),this.setFiltering(r),this.loading=Promise.resolve(this),this.loading}},{key:"setElement",value:function(e,t){var n=this,r=e;if("string"==typeof e&&(e=document.querySelector(e)),e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof HTMLVideoElement)this.source=e,this.sourceType="element",e instanceof HTMLVideoElement?(e.addEventListener("canplaythrough",function(){n.intervalID=setInterval(function(){n.update(t)},15)},!0),e.addEventListener("ended",function(){e.currentTime=0,e.play()},!0)):this.update(t),this.setFiltering(t);else{var i="the 'element' parameter (`element: "+JSON.stringify(r)+"`) must be a CSS ";i+="selector string, or a , or