From 1428c59d4c68860a5d7d00ce1893ef5a6fd0b8ed Mon Sep 17 00:00:00 2001 From: James Date: Wed, 27 Nov 2019 23:32:49 +0000 Subject: [PATCH] Updates --- asset-manifest.json | 8 ++++---- index.html | 2 +- ... precache-manifest.b086c7cf615176b0e077e4a8a122477e.js | 8 ++++---- service-worker.js | 2 +- .../js/{main.e4f764b4.chunk.js => main.a4966831.chunk.js} | 4 ++-- static/js/main.a4966831.chunk.js.map | 1 + static/js/main.e4f764b4.chunk.js.map | 1 - 7 files changed, 13 insertions(+), 13 deletions(-) rename precache-manifest.d4a693f316ec2c27354f36f43238b550.js => precache-manifest.b086c7cf615176b0e077e4a8a122477e.js (77%) rename static/js/{main.e4f764b4.chunk.js => main.a4966831.chunk.js} (93%) create mode 100644 static/js/main.a4966831.chunk.js.map delete mode 100644 static/js/main.e4f764b4.chunk.js.map diff --git a/asset-manifest.json b/asset-manifest.json index f9b6ed9..c3c79da 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { "main.css": "/murvRenderer/static/css/main.dfb04c0c.chunk.css", - "main.js": "/murvRenderer/static/js/main.e4f764b4.chunk.js", - "main.js.map": "/murvRenderer/static/js/main.e4f764b4.chunk.js.map", + "main.js": "/murvRenderer/static/js/main.a4966831.chunk.js", + "main.js.map": "/murvRenderer/static/js/main.a4966831.chunk.js.map", "runtime-main.js": "/murvRenderer/static/js/runtime-main.bf15c1d9.js", "runtime-main.js.map": "/murvRenderer/static/js/runtime-main.bf15c1d9.js.map", "static/js/2.f8ab9d8c.chunk.js": "/murvRenderer/static/js/2.f8ab9d8c.chunk.js", "static/js/2.f8ab9d8c.chunk.js.map": "/murvRenderer/static/js/2.f8ab9d8c.chunk.js.map", "index.html": "/murvRenderer/index.html", - "precache-manifest.d4a693f316ec2c27354f36f43238b550.js": "/murvRenderer/precache-manifest.d4a693f316ec2c27354f36f43238b550.js", + "precache-manifest.b086c7cf615176b0e077e4a8a122477e.js": "/murvRenderer/precache-manifest.b086c7cf615176b0e077e4a8a122477e.js", "service-worker.js": "/murvRenderer/service-worker.js", "static/css/main.dfb04c0c.chunk.css.map": "/murvRenderer/static/css/main.dfb04c0c.chunk.css.map", "static/media/logo.svg": "/murvRenderer/static/media/logo.25bf045c.svg", @@ -18,6 +18,6 @@ "static/js/runtime-main.bf15c1d9.js", "static/js/2.f8ab9d8c.chunk.js", "static/css/main.dfb04c0c.chunk.css", - "static/js/main.e4f764b4.chunk.js" + "static/js/main.a4966831.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 66eceda..3ee3515 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -React App
\ No newline at end of file +React App
\ No newline at end of file diff --git a/precache-manifest.d4a693f316ec2c27354f36f43238b550.js b/precache-manifest.b086c7cf615176b0e077e4a8a122477e.js similarity index 77% rename from precache-manifest.d4a693f316ec2c27354f36f43238b550.js rename to precache-manifest.b086c7cf615176b0e077e4a8a122477e.js index 4a3c3a0..6c03030 100644 --- a/precache-manifest.d4a693f316ec2c27354f36f43238b550.js +++ b/precache-manifest.b086c7cf615176b0e077e4a8a122477e.js @@ -1,10 +1,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "b7856e64633cdb04541eba80aab0da8c", + "revision": "18bc171366ef3d24844354e3c9b4d078", "url": "/murvRenderer/index.html" }, { - "revision": "e04898ddea891b8a6007", + "revision": "3f11f9e446725ca70c56", "url": "/murvRenderer/static/css/main.dfb04c0c.chunk.css" }, { @@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/murvRenderer/static/js/2.f8ab9d8c.chunk.js" }, { - "revision": "e04898ddea891b8a6007", - "url": "/murvRenderer/static/js/main.e4f764b4.chunk.js" + "revision": "3f11f9e446725ca70c56", + "url": "/murvRenderer/static/js/main.a4966831.chunk.js" }, { "revision": "f0e07b99de575adf8c3d", diff --git a/service-worker.js b/service-worker.js index d742ce7..3dc85ec 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/murvRenderer/precache-manifest.d4a693f316ec2c27354f36f43238b550.js" + "/murvRenderer/precache-manifest.b086c7cf615176b0e077e4a8a122477e.js" ); self.addEventListener('message', (event) => { diff --git a/static/js/main.e4f764b4.chunk.js b/static/js/main.a4966831.chunk.js similarity index 93% rename from static/js/main.e4f764b4.chunk.js rename to static/js/main.a4966831.chunk.js index 9077e16..df8d1f7 100644 --- a/static/js/main.e4f764b4.chunk.js +++ b/static/js/main.a4966831.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonpmurv_renderer=this.webpackJsonpmurv_renderer||[]).push([[0],{19:function(e){e.exports=JSON.parse('{"object":{"size":{"width":300,"height":300,"padding":10},"name":"Student","groups":[0,1,2],"values":[{"key":1,"name":"ICP1002","value":1,"group":0,"color":"#6FD1FF"},{"key":2,"name":"ICP1015","value":0.7,"group":0,"color":"#CDC978"},{"key":3,"name":"ICP1016","value":0.75,"group":1,"color":"#95D95B"},{"key":4,"name":"ICP1002","value":0.8,"group":0,"color":"#FDB67B"},{"key":5,"name":"ICP1015","value":0.5,"group":0,"color":"#6FD1FF"},{"key":6,"name":"ICP1016","value":0.3,"group":1,"color":"#CDC978"},{"key":7,"name":"ICP1015","value":0.5,"group":0,"color":"#6FD1FF"},{"key":8,"name":"ICP1016","value":0.7,"group":1,"color":"#CDC978"}]},"views":[4,42]}')},22:function(e,t,n){e.exports=n.p+"static/media/watch.c0f5684c.png"},28:function(e,t,n){e.exports=n(57)},33:function(e,t,n){},34:function(e,t,n){e.exports=n.p+"static/media/logo.25bf045c.svg"},51:function(e,t,n){},57:function(e,t,n){"use strict";n.r(t);var o,a,r=n(1),i=n.n(r),s=n(15),p=n.n(s),h=(n(33),n(34),n(16)),c=n(17),l=n(26),u=n(18),g=n(27),f=n(0),d=n.n(f);var y=(a=o=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.shape=t.shape||e.shape.CIRCLE,this.color=t.color||e.shape.BLACK,this.color_key=t.color_key||e.color_key.OFF,this.path_points=t.path_points||e.path_points.EVEN,this.path_mode=t.path_mode||e.path_mode.INLINE,this.path_rotation=t.path_rotation||e.path_rotation.NONE,this.path_grouping=t.path_grouping||e.path_grouping.NONE,this.object_rotation=t.object_rotation||e.object_rotation.NONE,this.object_size=t.object_size||e.object_size.FULL,this.filter=t.filter||e.filter.OFF,this.debugging=t.debugging||e.debugging.OFF},o.shape={CIRCLE:1,SQUARE:2,ELLIPSE:3,TRIANGLE:4,HUMP:5,DONUT:6,RADIAL:7,STAR:8,I_RADIAL:9,SPARKLINE:10,BAR:11,RADIAL_BAR:12},o.color={BLACK:1,MONOTONE:2,RANDOM:3,VALUE_DEPENDANT:4,WHITE:5,FROM_DATA:6,GRADIENT:7},o.color_key={OFF:1,ON:2},o.path_points={EVEN:1,VALUE_DEPENDANT:2},o.path_mode={INLINE:1,RANDOM:2,MEAN_DEVIATION:3,RING:4,CUBE_SPIRAL:5,INLINE_HALF:6},o.path_rotation={NONE:1,MEAN_DEPENDANT:2,RANDOM:3},o.path_grouping={NONE:1,DATA_GROUP:2},o.object_rotation={NONE:1,VALUE_DEPENDANT:2,RANDOM:3,RADIAL:4},o.object_size={FULL:1,VALUE_DEPENDANT:2,WIN_LOSS:3},o.filter={NONE:1,GOO:2},o.debugging={OFF:1,ON:2},a);var m,b,v=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.x=t,this.y=n}return e.distance=function(e,t){var n=e.x-t.x,o=e.y-t.y;return Math.hypot(n,o)},e}(),_=v;var A=(b=m=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.num=t.dataLength,this.size=t.size,this.random=t.random,this.padding=t.size.padding,this.data=t.data,this.groups=this.data.reduce((function(e,t){return"undefined"==typeof e[t.group]?e[t.group]=1:e[t.group]+=1,e}),{});var n=Math.max.apply(Math,Object.values(this.groups)),o=Object.values(this.groups).length;this.groups.max=n,this.groups.total=o,this.gene=t.gene,this.gene.path_mode===y.path_mode.RING?this.path=this.generateRingPath():this.gene.path_mode===y.path_mode.CUBE_SPIRAL?this.path=this.generateCubeSpiralPath():this.path=this.generateLinePath(this.gene.path_mode===y.path_mode.INLINE_HALF)}return e.centerPoint=function(e,t){return new _((t.x-e.x)/2+e.x,(t.y-e.y)/2+e.y)},e.prototype.generateCubeSpiralPath=function(){for(var e=Math.ceil(Math.sqrt(this.data.length+1)),t=(Math.min(this.size.width,this.size.height)-2*this.padding)/(e+2),n=void 0,o=void 0,a=void 0,r=void 0,i=[],s=1,p=1,h=2,c=1,l=0;l=this.groups[h]&&this.gene.path_grouping===y.path_grouping.DATA_GROUP?(c=this.padding,h++,p=0):c=n[l-1].b.x,i=new _(c,o*u)),s=new _(i.x+a,o*u);var g=_.distance(i,s);n.push({a:i,b:s,dist:g})}return n},e.prototype.adjustPath=function(e){for(var t=this.getMean(e.data).mean,n=0;n0?n-1:n;e.path[n].b.y=e.path[r].b.y+o*a}else e.path[n].b.y=this.random.random()*this.size.height,e.path[n].b.x=this.random.random()*this.size.width;e.path[n].dist=_.distance(e.path[n].a,e.path[n].b)}return e.path},e.prototype.adjustPoint=function(e){switch(this.path_mode){case y.path_mode.RANDOM:e.x+=this.random.random()*this.size.width,e.y+=this.random.random()*this.size.height,console.log(e);break;case 2:e.y=e.x}return e},e.prototype.rotatePath=function(e){var t=new _(this.areaSize/2,this.areaSize/2),n=0;if(this.gene.path_rotation===y.path_rotation.MEAN_DEPENDANT){for(var o=0,a=0;ae.maxHeight?e.maxHeight-6:e.path[p].dist;var h=A.orthogonalCenterPoint(e.path[p].a,e.path[p].b,r*s.value-r/2);s.value=t&&(o=h,t=s.value),i+=(0==p?"M":"L")+h.x+" "+h.y})),d.a.createElement("g",null,d.a.createElement("path",{d:i,strokeWidth:"2",fill:"none",stroke:O.getColor(s/this.shapes.length,this.gene.color)}),d.a.createElement("circle",{cx:o.x,cy:o.y,fill:"chartreuse",r:"3",key:"max"}),d.a.createElement("circle",{cx:a.x,cy:a.y,fill:"red",r:"3",key:"min"}))):this.shapes.map((function(t,n){var o=A.centerPoint(e.path[n].a,e.path[n].b),a=e.path[n].dist;return d.a.createElement("g",{key:"square"+n},d.a.createElement(C,{x:o.x,y:t.value>=s/e.shapes.length?o.y:o.y+a,pointA:e.path[n].a,pointB:e.path[n].b,fullSize:e.size,padding:e.padding,size:a,key:n,fill:t.value>=s/e.shapes.length?"chartreuse":"red",gene:e.gene,value:t.value}))}))},t}(f.Component);var L=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o={circle:E,square:C,triangle:P,ellipse:z,hump:k,donut:M,spark:S},a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}(this,e.call(this,n));switch(a.props=n,n.gene.shape){case y.shape.CIRCLE:a.component=o.circle;break;case y.shape.SQUARE:case y.shape.BAR:a.component=o.square;break;case y.shape.TRIANGLE:a.component=o.triangle;break;case y.shape.ELLIPSE:a.component=o.ellipse;break;case y.shape.HUMP:a.component=o.hump;break;case y.shape.DONUT:case y.shape.RADIAL:case y.shape.I_RADIAL:case y.shape.STAR:case y.shape.RADIAL_BAR:a.component=o.donut;break;case y.shape.SPARKLINE:a.component=o.spark;break;default:a.component=o.circle}return a}return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){return d.a.createElement(this.component,this.props)},t}(f.Component);var T=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.seed="number"===typeof t?t:this.hashString(t)}return e.prototype.random=function(){var e=1e4*Math.sin(this.seed++);return e-Math.floor(e)},e.prototype.hashString=function(e){var t,n,o=0;if(0===e.length)return o;for(t=0,n=e.length;t=this.groups[h]&&this.gene.path_grouping===y.path_grouping.DATA_GROUP?(c=this.padding,h++,p=0):c=n[l-1].b.x,i=new _(c,o*u)),s=new _(i.x+a,o*u);var g=_.distance(i,s);n.push({a:i,b:s,dist:g})}return n},e.prototype.adjustPath=function(e){for(var t=this.getMean(e.data).mean,n=0;n0?n-1:n;e.path[n].b.y=e.path[r].b.y+o*a}else e.path[n].b.y=this.random.random()*this.size.height,e.path[n].b.x=this.random.random()*this.size.width;e.path[n].dist=_.distance(e.path[n].a,e.path[n].b)}return e.path},e.prototype.adjustPoint=function(e){switch(this.path_mode){case y.path_mode.RANDOM:e.x+=this.random.random()*this.size.width,e.y+=this.random.random()*this.size.height,console.log(e);break;case 2:e.y=e.x}return e},e.prototype.rotatePath=function(e){var t=new _(this.areaSize/2,this.areaSize/2),n=0;if(this.gene.path_rotation===y.path_rotation.MEAN_DEPENDANT){for(var o=0,a=0;ae.maxHeight?e.maxHeight-6:e.path[p].dist;var h=A.orthogonalCenterPoint(e.path[p].a,e.path[p].b,r*s.value-r/2);s.value=t&&(o=h,t=s.value),i+=(0==p?"M":"L")+h.x+" "+h.y})),d.a.createElement("g",null,d.a.createElement("path",{d:i,strokeWidth:"2",fill:"none",stroke:O.getColor(s/this.shapes.length,this.gene.color)}),d.a.createElement("circle",{cx:o.x,cy:o.y,fill:"chartreuse",r:"3",key:"max"}),d.a.createElement("circle",{cx:a.x,cy:a.y,fill:"red",r:"3",key:"min"}))):this.shapes.map((function(t,n){var o=A.centerPoint(e.path[n].a,e.path[n].b),a=e.path[n].dist;return d.a.createElement("g",{key:"square"+n},d.a.createElement(C,{x:o.x,y:t.value>=s/e.shapes.length?o.y:o.y+a,pointA:e.path[n].a,pointB:e.path[n].b,fullSize:e.size,padding:e.padding,size:a,key:n,fill:t.value>=s/e.shapes.length?"chartreuse":"red",gene:e.gene,value:t.value}))}))},t}(f.Component);var L=function(e){function t(n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o={circle:E,square:C,triangle:P,ellipse:z,hump:k,donut:M,spark:S},a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}(this,e.call(this,n));switch(a.props=n,n.gene.shape){case y.shape.CIRCLE:a.component=o.circle;break;case y.shape.SQUARE:case y.shape.BAR:a.component=o.square;break;case y.shape.TRIANGLE:a.component=o.triangle;break;case y.shape.ELLIPSE:a.component=o.ellipse;break;case y.shape.HUMP:a.component=o.hump;break;case y.shape.DONUT:case y.shape.RADIAL:case y.shape.I_RADIAL:case y.shape.STAR:case y.shape.RADIAL_BAR:a.component=o.donut;break;case y.shape.SPARKLINE:a.component=o.spark;break;default:a.component=o.circle}return a}return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){return d.a.createElement(this.component,this.props)},t}(f.Component);var T=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.seed="number"===typeof t?t:this.hashString(t)}return e.prototype.random=function(){var e=1e4*Math.sin(this.seed++);return e-Math.floor(e)},e.prototype.hashString=function(e){var t,n,o=0;if(0===e.length)return o;for(t=0,n=e.length;t= this.groups[group] && this.gene.path_grouping === Gene.path_grouping.DATA_GROUP) {\n xVal = this.padding;\n group++;\n count = 0;\n } else {\n xVal = returner[i - 1].b.x;\n }\n\n p1 = new Point(xVal, b * bMult);\n }\n p2 = new Point(p1.x + aVal, b * bMult);\n var dist = Point.distance(p1, p2);\n returner.push({\n a: p1,\n b: p2,\n dist: dist\n });\n }\n\n return returner;\n };\n\n Path.prototype.adjustPath = function adjustPath(prefs) {\n var adjustment = 10;\n var mean = this.getMean(prefs.data).mean;\n\n for (var i = 0; i < prefs.path.length; i++) {\n if (i === 0) {\n if (!prefs.mode) {\n prefs.path[i].a.y += this.random.random() * this.size.height / adjustment - this.areaSize / (adjustment * 2);\n }\n } else {\n prefs.path[i].a.y = prefs.path[i - 1].b.y;\n }\n\n if (prefs.mode === Gene.path_mode.MEAN_DEVIATION) {\n var adj = this.size.height / (adjustment * 2);\n var meanDeviation = Math.abs(prefs.data[i].value - mean);\n adj = prefs.data[i].value < mean ? adj : -adj;\n var sel = i > 0 ? i - 1 : i;\n prefs.path[i].b.y = prefs.path[sel].b.y + adj * meanDeviation;\n } else {\n prefs.path[i].b.y = this.random.random() * this.size.height;\n prefs.path[i].b.x = this.random.random() * this.size.width;\n }\n\n prefs.path[i].dist = Point.distance(prefs.path[i].a, prefs.path[i].b);\n }\n\n return prefs.path;\n };\n\n Path.prototype.adjustPoint = function adjustPoint(p) {\n switch (this.path_mode) {\n case Gene.path_mode.RANDOM:\n p.x += this.random.random() * this.size.width;\n p.y += this.random.random() * this.size.height;\n console.log(p);\n break;\n\n case 2:\n p.y = p.x;\n break;\n\n default:\n }\n\n return p;\n };\n\n Path.prototype.rotatePath = function rotatePath(path) {\n var center = new Point(this.areaSize / 2, this.areaSize / 2);\n var rotation = 0;\n\n if (this.gene.path_rotation === Gene.path_rotation.MEAN_DEPENDANT) {\n var mean = 0;\n\n for (var i = 0; i < this.data.length; i++) {\n mean += this.data[i].value;\n }\n\n mean /= this.data.length;\n rotation = 360 * mean;\n } else {\n rotation = 360 * this.random.random();\n }\n\n for (i = 0; i < path.length; i++) {\n path[i] = this.rotateSegment(path[i], center, rotation);\n }\n\n return path;\n };\n\n Path.prototype.rotateSegment = function rotateSegment(seg, center, angle) {\n seg.a = this.rotatePoint(seg.a, center, angle);\n seg.b = this.rotatePoint(seg.b, center, angle);\n seg.dist = Point.distance(seg.a, seg.b);\n return seg;\n };\n\n Path.prototype.rotatePoint = function rotatePoint(point, center, angle) {\n var radians = Math.PI / 180 * angle,\n cos = Math.cos(radians),\n sin = Math.sin(radians);\n return new Point(cos * (point.x - center.x) + sin * (point.y - center.y) + center.x, cos * (point.y - center.y) + sin * (point.x - center.x) + center.y);\n };\n\n Path.prototype.getMean = function getMean(data) {\n var total = data.reduce(function (a, c) {\n return a + c.value;\n }, 0);\n var mean = total / data.length;\n return {\n mean: mean,\n total: total\n };\n };\n\n Path.getAngle = function getAngle(p1, p2) {\n return Math.atan2(p2.y - p1.y, p2.x - p1.x);\n };\n\n Path.orthogonalCenterPoint = function orthogonalCenterPoint(p1, p2, dist) {\n var center = new Point((p2.x - p1.x) / 2 + p1.x, (p2.y - p1.y) / 2 + p1.y);\n var angle = this.getAngle(p1, p2);\n return new Point(Math.sin(angle) * dist + center.x, -Math.cos(angle) * dist + center.y);\n };\n\n Path.renderDebugInfo = function renderDebugInfo(pointA, pointB, debug) {\n if (debug === Gene.debugging.ON) {\n return React.createElement('g', {\n id: 'debug'\n }, React.createElement('circle', {\n r: '3',\n cx: pointA.x,\n cy: pointA.y,\n fill: 'black'\n }), React.createElement('circle', {\n r: '3',\n cx: pointB.x,\n cy: pointB.y,\n fill: 'black'\n }), React.createElement('line', {\n x1: pointA.x,\n y1: pointA.y,\n x2: pointB.x,\n y2: pointB.y,\n stroke: 'black',\n strokeWidth: '1',\n strokeDasharray: '4'\n }));\n } else {\n return;\n }\n };\n\n return Path;\n}(), _class.AdjustMode = {\n \"RANDOM\": 1,\n \"EQUAL\": 2\n}, _temp);\nexport default Path;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Gene from '../Gene';\nimport Path from '../Path';\n\nvar Circle = function (_Component) {\n _inherits(Circle, _Component);\n\n function Circle(props) {\n _classCallCheck(this, Circle);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.elementAtts = {\n cx: props.x,\n cy: props.y,\n key: props.key,\n r: props.gene.filter === Gene.filter.GOO ? props.size : props.size / 2,\n fill: props.fill\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debugging = props.gene.debugging;\n return _this;\n }\n\n Circle.prototype.render = function render() {\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('circle', this.elementAtts), Path.renderDebugInfo(this.pointA, this.pointB, this.debugging));\n };\n\n return Circle;\n}(Component);\n\nexport default Circle;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nimport Chroma from 'chroma-js';\nimport Gene from './Gene';\n\nvar Color = function () {\n function Color() {\n _classCallCheck(this, Color);\n }\n\n Color.getColor = function getColor(params) {\n if (params.type === Gene.color.FROM_DATA && typeof params.itemColor !== \"undefined\") {\n return params.itemColor;\n } else {\n var COLOR_BREWER = ['#edf8b1', '#7fcdbb', '#2c7fb8'];\n var RANDOM = [\"#009688\", \"#E91E63\", \"#9C27B0\", \"#FFC107\", \"#3F51B5\", \"#4CAF50\", \"#FFEB3B\", \"#673AB7\", \"#CDDC39\", \"#FF5722\", \"#00BCD4\", \"#f44336\", \"#FF9800\", \"#2196F3\"];\n var MONOTONE = ['#dddddd', '#000000'];\n var BLACK = ['#000000', '#000000'];\n var WHITE = ['#FFFFFF', '#FFFFFF'];\n var color;\n\n switch (params.type) {\n case Gene.color.MONOTONE:\n color = MONOTONE;\n break;\n\n case Gene.color.RANDOM:\n color = RANDOM;\n break;\n\n case Gene.color.VALUE_DEPENDANT:\n case Gene.color.FROM_DATA:\n color = COLOR_BREWER;\n break;\n\n case Gene.color.WHITE:\n color = WHITE;\n break;\n\n case Gene.color.BLACK:\n default:\n color = BLACK;\n }\n\n if (params.type === Gene.color.RANDOM) {\n var rand = Math.floor(params.random.random() * (color.length - 1));\n return color[rand];\n } else {\n var chroma = Chroma.scale(color);\n return chroma(params.val).hex();\n }\n }\n };\n\n return Color;\n}();\n\nexport default Color;\nexport var GradientColor = function GradientColor(colors, value) {\n var chroma = Chroma.scale(colors);\n return chroma(value).hex();\n};","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Point, { getAngle } from '../Point';\nimport Gene from '../Gene';\nimport { GradientColor } from '../Color';\n\nvar Square = function (_Component) {\n _inherits(Square, _Component);\n\n function Square(props) {\n _classCallCheck(this, Square);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n var angle = Path.getAngle(props.pointA, props.pointB);\n var degrees = 180 * angle / Math.PI;\n angle = (360 + Math.round(degrees)) % 360;\n _this.angle = angle;\n var dist = Point.distance(props.pointA, props.pointB) * (typeof props.value === \"array\" ? 0.6 : 0.9);\n var x = void 0,\n y = void 0,\n height = void 0;\n var fullSize = props.fullSize - props.padding * 2;\n\n if (props.gene.shape === Gene.shape.BAR || props.gene.object_size === Gene.object_size.WIN_LOSS) {\n x = props.x - dist / 2.0;\n } else {\n x = props.x - props.size / 2;\n }\n\n var hMult = _typeof(props.value === \"array\") ? fullSize : fullSize / 2;\n\n if (props.gene.shape === Gene.shape.BAR && props.gene.object_size !== Gene.object_size.WIN_LOSS) {\n height = typeof props.value === \"array\" ? (props.value[1] - props.value[0]) / (props.range.max - props.range.min) : props.value * hMult;\n } else {\n height = props.size;\n }\n\n if (props.gene.object_size === Gene.object_size.WIN_LOSS) {\n y = props.y - height;\n }\n\n if (props.gene.shape === Gene.shape.BAR) {\n if (typeof props.range.min !== \"undefined\") {\n y = (props.range.max - props.value[1]) / (props.range.max - props.range.min) * fullSize + props.padding;\n } else {\n y = props.y - height + fullSize / 2;\n }\n } else {\n y = props.y - height / 2;\n }\n\n if (props.gene.path_mode === Gene.path_mode.RING) {\n x = props.pointB.x + (props.pointB.x - props.pointA.x) / 2 - dist / 2;\n y = props.pointB.y + (props.pointB.y - props.pointA.y) / 2;\n }\n\n _this.center = new Point(props.pointB.x + (props.pointB.x - props.pointA.x) / 2, props.pointB.y + (props.pointB.y - props.pointA.y) / 2);\n\n if (props.gene.path_mode === Gene.path_mode.RING && props.gene.object_rotation === Gene.object_rotation.RADIAL) {\n x = (props.pointB.x + (props.pointB.x - props.pointA.x) / 2 + props.fullSize / 2) / 2 - dist / 2;\n y = (props.pointB.y + (props.pointB.y - props.pointA.y) / 2 + props.fullSize / 2) / 2;\n _this.center.x = x + dist / 2;\n _this.center.y = y;\n var midDist = Point.distance(_this.center, {\n x: props.fullSize / 2,\n y: props.fullSize / 2\n });\n var availDist = props.fullSize / 2 - midDist;\n console.log((props.value[0] - props.range.min) / (props.range.max - props.range.min), availDist, props.fullSize, midDist);\n y += (props.value[0] - props.range.min) / (props.range.max - props.range.min) * availDist;\n height = (props.value[1] - props.value[0]) / (props.range.max - props.range.min) * availDist;\n }\n\n if (_typeof(props.avg) === \"object\") {\n if (props.gene.object_rotation === Gene.object_rotation.RADIAL) {\n console.log(\"here\");\n\n var _midDist = Point.distance(_this.center, {\n x: props.fullSize / 2,\n y: props.fullSize / 2\n });\n\n var _availDist = props.fullSize / 2 - _midDist;\n\n _this.avgAtts = {\n x: (props.pointB.x + (props.pointB.x - props.pointA.x) / 2 + props.fullSize / 2) / 2 - Point.distance(props.pointA, props.pointB) * 0.9 / 2,\n y: (props.pointB.y + (props.pointB.y - props.pointA.y) / 2 + props.fullSize / 2) / 2,\n width: Point.distance(props.pointA, props.pointB) * 0.9,\n height: (props.avg[1] - props.avg[0]) / (props.range.max - props.range.min) * _availDist\n };\n _this.avgAtts.y += (props.avg[0] - props.range.min) / (props.range.max - props.range.min) * _availDist;\n } else {\n _this.avgAtts = {\n x: props.x - Point.distance(props.pointA, props.pointB) * 0.9 / 2,\n y: props.range.max - props.avg[1] + props.padding,\n width: Point.distance(props.pointA, props.pointB) * 0.9,\n height: (props.avg[1] - props.avg[0]) / (props.range.max - props.range.min) * fullSize\n };\n }\n\n _this.avgAtts.fill = \"rgba(255,255,255,0.3)\";\n _this.avgAtts.stroke = \"rgba(50,50,50,0.5)\";\n _this.avgAtts.strokeWidth = \"1\";\n }\n\n _this.elementAtts = {\n x: x,\n y: y,\n width: props.gene.shape == Gene.shape.BAR ? dist : props.size,\n height: height,\n fill: props.gene.color === Gene.color.GRADIENT ? \"url(#gradient\" + props.index + \"\" + _this.props.gene.object_rotation + \")\" : props.fill\n };\n _this.maxCol = (props.value[0] - props.range.min) / (props.range.max - props.range.min);\n _this.minCol = (props.value[1] - props.range.min) / (props.range.max - props.range.min);\n _this.midCol = _this.minCol + (_this.maxCol - _this.minCol) / 2;\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debugging = props.gene.debugging;\n _this.colors = [\"rgba(0,179,255,1)\", \"rgba(255,249,144,1)\", \"rgba(255,145,31,1)\"];\n return _this;\n }\n\n Square.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n\n if (this.props.gene.object_rotation === Gene.object_rotation.RADIAL) {\n amnt = getAngle(new Point(this.center.x, this.center.y), new Point(this.props.fullSize / 2, this.props.fullSize / 2)) % 360;\n }\n\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.center.x + \" \" + this.center.y + \")\" : \"\";\n var rnd = _typeof(this.props.avg) === \"object\" ? \"5px\" : \"0px\";\n return React.createElement('g', {\n key: this.props.key\n }, this.props.gene.color === Gene.color.GRADIENT ? React.createElement('linearGradient', {\n id: \"gradient\" + this.props.index + \"\" + this.props.gene.object_rotation,\n x1: '0',\n x2: '0',\n y1: '0',\n y2: '1'\n }, React.createElement('stop', {\n offset: \"0\",\n stopColor: GradientColor(this.colors, this.props.gene.path_mode === Gene.path_mode.RING ? this.maxCol : this.minCol)\n }), React.createElement('stop', {\n offset: '0.5',\n stopColor: GradientColor(this.colors, this.midCol)\n }), React.createElement('stop', {\n offset: \"1\",\n stopColor: GradientColor(this.colors, this.props.gene.path_mode === Gene.path_mode.RING ? this.minCol : this.maxCol)\n })) : \"\", React.createElement('rect', _extends({}, this.elementAtts, {\n transform: rot,\n rx: rnd,\n ry: rnd\n })), typeof this.avgAtts !== \"undefined\" ? React.createElement('rect', _extends({}, this.avgAtts, {\n transform: rot,\n className: this.props.gene.color === Gene.color.GRADIENT ? \"gradient1\" : \"\",\n rx: rnd,\n ry: rnd\n })) : \"\", Path.renderDebugInfo(this.pointA, this.pointB, this.debugging));\n };\n\n return Square;\n}(Component);\n\nexport default Square;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Gene from '../Gene';\n\nvar Triangle = function (_Component) {\n _inherits(Triangle, _Component);\n\n function Triangle(props) {\n _classCallCheck(this, Triangle);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.elementAtts = {\n d: _this.constructTrianglePath(props),\n key: props.key,\n fill: props.fill\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debug = props.gene.debugging;\n return _this;\n }\n\n Triangle.prototype.constructTrianglePath = function constructTrianglePath(props) {\n var centerPoint = Path.orthogonalCenterPoint(props.pointA, props.pointB, props.size);\n var p1 = \"M\" + props.pointA.x + \" \" + props.pointA.y;\n var p2 = \"L\" + props.pointB.x + \" \" + props.pointB.y + \"Z\";\n var peak = \" L\" + centerPoint.x + \" \" + centerPoint.y;\n return p1 + peak + p2;\n };\n\n Triangle.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('path', _extends({}, this.elementAtts, {\n transform: rot\n })), Path.renderDebugInfo(this.pointA, this.pointB, this.debug));\n };\n\n return Triangle;\n}(Component);\n\nexport default Triangle;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Point from '../Point';\nimport Path from '../Path';\nimport Gene from '../Gene';\n\nvar Ellipse = function (_Component) {\n _inherits(Ellipse, _Component);\n\n function Ellipse(props) {\n _classCallCheck(this, Ellipse);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n var angle = Path.getAngle(props.pointA, props.pointB);\n var degrees = 180 * angle / Math.PI;\n _this.angle = (360 + Math.round(degrees)) % 360;\n _this.elementAtts = {\n cx: props.x,\n cy: props.y,\n ry: props.size / 2,\n rx: Point.distance(props.pointA, props.pointB) / 2,\n fill: props.fill,\n transform: \"rotate(\" + _this.angle + \" \" + props.x + \" \" + props.y + \")\"\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debug = props.gene.debugging;\n return _this;\n }\n\n Ellipse.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key,\n transform: rot\n }, React.createElement('ellipse', this.elementAtts), Path.renderDebugInfo(this.pointA, this.pointB, this.debug));\n };\n\n return Ellipse;\n}(Component);\n\nexport default Ellipse;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Point from '../Point';\nimport Path from '../Path';\nimport Gene from '../Gene';\n\nvar Hump = function (_Component) {\n _inherits(Hump, _Component);\n\n function Hump(props) {\n _classCallCheck(this, Hump);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.debug = props.gene.debugging;\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.elementAtts = {\n d: _this.constructHumpPath(props),\n key: props.key,\n fill: props.fill\n };\n _this.key = props.key;\n _this.fill = props.fill;\n return _this;\n }\n\n Hump.prototype.constructHumpPath = function constructHumpPath(props) {\n var center = new Point(props.x, props.y);\n this.control1 = Path.orthogonalCenterPoint(props.pointA, center, props.size * 1.33);\n this.control2 = Path.orthogonalCenterPoint(center, props.pointB, props.size * 1.33);\n var p1 = \"M\" + props.pointA.x + \" \" + props.pointA.y;\n var p2 = \" \" + props.pointB.x + \" \" + props.pointB.y + \"Z\";\n var c1 = \" C\" + this.control1.x + \" \" + this.control1.y;\n var c2 = \" \" + this.control2.x + \" \" + this.control2.y;\n return p1 + c1 + c2 + p2;\n };\n\n Hump.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('path', _extends({}, this.elementAtts, {\n transform: rot\n })), Path.renderDebugInfo(this.pointA, this.pointB, this.debug));\n };\n\n return Hump;\n}(Component);\n\nexport default Hump;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Gene from '../Gene';\nimport Point from '../Point';\n\nvar Donut = function (_Component) {\n _inherits(Donut, _Component);\n\n function Donut(props) {\n _classCallCheck(this, Donut);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n var diff1 = {\n x: props.pointA.x - props.fullSize / 2,\n y: props.pointA.y - props.fullSize / 2\n };\n var diff2 = {\n x: props.pointB.x - props.fullSize / 2,\n y: props.pointB.y - props.fullSize / 2\n };\n var startAngle = Math.atan2(diff1.y, diff1.x);\n var endAngle = Math.atan2(diff2.y, diff2.x);\n var radius = (props.fullSize - props.padding * 4) / 2;\n var arc = void 0,\n fill = \"none\",\n stroke = props.fill,\n strokeWidth = radius * props.value;\n var centerP = props.fullSize / 2;\n\n switch (props.gene.shape) {\n case Gene.shape.STAR:\n var start = _this.polarToCartesian(centerP, centerP, props.value * radius, startAngle);\n\n var end = _this.polarToCartesian(centerP, centerP, props.value * radius, endAngle);\n\n arc = \"M\" + centerP + \" \" + centerP + \"L\" + start.x + \" \" + start.y + \"L\" + end.x + \" \" + end.y + \"Z\";\n fill = props.fill;\n stroke = \"none\";\n break;\n\n case Gene.shape.RADIAL:\n arc = _this.describeArc(centerP, centerP, props.value * radius / 2, startAngle, endAngle);\n strokeWidth = props.value * radius;\n break;\n\n case Gene.shape.DONUT:\n arc = _this.describeArc(centerP, centerP, radius, startAngle, endAngle);\n strokeWidth = props.fullSize / 10;\n break;\n\n case Gene.shape.RADIAL_BAR:\n startAngle = 0;\n endAngle = 360 * Math.PI / 180 * props.value;\n var centerPoint = new Point(props.pointA.x + props.pointB.x - props.pointA.x, props.pointA.y + props.pointB.y - props.pointA.y);\n arc = _this.describeArc(centerP, centerP, Point.distance(new Point(centerP, centerP), centerPoint), 0, Math.PI * 2 * props.value);\n strokeWidth = Point.distance(props.pointA, props.pointB) * 0.90;\n break;\n\n case Gene.shape.I_RADIAL:\n default:\n arc = _this.describeArc(centerP, centerP, radius - strokeWidth / 2, startAngle, endAngle);\n break;\n }\n\n _this.elementAtts = {\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n d: arc,\n key: props.key\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debugging = props.gene.debugging;\n return _this;\n }\n\n Donut.prototype.polarToCartesian = function polarToCartesian(centerX, centerY, radius, angle) {\n return {\n x: centerX + radius * Math.cos(angle),\n y: centerY + radius * Math.sin(angle)\n };\n };\n\n Donut.prototype.describeArc = function describeArc(x, y, radius, startAngle, endAngle) {\n var start = this.polarToCartesian(x, y, radius, endAngle);\n var end = this.polarToCartesian(x, y, radius, startAngle);\n var largeArcFlag = endAngle - startAngle <= Math.PI ? \"0\" : \"1\";\n var d = [\"M\", start.x, start.y, \"A\", radius, radius, 0, largeArcFlag, 0, end.x, end.y].join(\" \");\n return d;\n };\n\n Donut.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('path', _extends({}, this.elementAtts, {\n transform: rot\n })), Path.renderDebugInfo(this.pointA, this.pointB, this.debugging));\n };\n\n return Donut;\n}(Component);\n\nexport default Donut;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Color from '../Color';\nimport Gene from '../Gene';\nimport Square from './Square';\n\nvar Spark = function (_Component) {\n _inherits(Spark, _Component);\n\n function Spark(props) {\n _classCallCheck(this, Spark);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.path = props.path;\n _this.shapes = props.shapes;\n _this.size = props.size;\n _this.placement = props.placement;\n _this.goo = props.goo;\n _this.color = props.color;\n _this.gene = props.gene;\n _this.padding = props.padding;\n _this.maxHeight = props.maxHeight;\n return _this;\n }\n\n Spark.prototype.render = function render() {\n var _this2 = this;\n\n var shapeComponents = \"\";\n var maxPV = 0,\n minPV = 1.1,\n maxP = void 0,\n minP = void 0,\n dist = void 0;\n var points = \"\";\n var total = 0;\n\n for (var i = 0; i < this.shapes.length; i++) {\n total += this.shapes[i].value;\n }\n\n if (this.gene.object_size !== Gene.object_size.WIN_LOSS) {\n this.shapes.map(function (item, i) {\n dist = _this2.path[i].dist > _this2.maxHeight ? _this2.maxHeight - 6 : _this2.path[i].dist;\n var p = Path.orthogonalCenterPoint(_this2.path[i].a, _this2.path[i].b, dist * item.value - dist / 2);\n\n if (item.value < minPV) {\n minP = p;\n minPV = item.value;\n }\n\n if (item.value >= maxPV) {\n maxP = p;\n maxPV = item.value;\n }\n\n var s = i == 0 ? \"M\" : \"L\";\n points += s + p.x + \" \" + p.y;\n });\n return React.createElement('g', null, React.createElement('path', {\n d: points,\n strokeWidth: '2',\n fill: 'none',\n stroke: Color.getColor(total / this.shapes.length, this.gene.color)\n }), React.createElement('circle', {\n cx: maxP.x,\n cy: maxP.y,\n fill: 'chartreuse',\n r: '3',\n key: 'max'\n }), React.createElement('circle', {\n cx: minP.x,\n cy: minP.y,\n fill: 'red',\n r: '3',\n key: 'min'\n }));\n } else {\n shapeComponents = this.shapes.map(function (item, i) {\n var center = Path.centerPoint(_this2.path[i].a, _this2.path[i].b);\n var minimum = 0;\n var max = _this2.path[i].dist;\n return React.createElement('g', {\n key: \"square\" + i\n }, React.createElement(Square, {\n x: center.x,\n y: item.value >= total / _this2.shapes.length ? center.y : center.y + max,\n pointA: _this2.path[i].a,\n pointB: _this2.path[i].b,\n fullSize: _this2.size,\n padding: _this2.padding,\n size: max,\n key: i,\n fill: item.value >= total / _this2.shapes.length ? \"chartreuse\" : \"red\",\n gene: _this2.gene,\n value: item.value\n }));\n });\n }\n\n return shapeComponents;\n };\n\n return Spark;\n}(Component);\n\nexport default Spark;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport Circle from './Circle';\nimport Square from './Square';\nimport Triangle from './Triangle';\nimport Ellipse from './Ellipse';\nimport Hump from './Hump';\nimport Donut from './Donut';\nimport Spark from './Spark';\nimport React, { Component } from 'react';\nimport Gene from '../Gene';\n\nvar Shape = function (_Component) {\n _inherits(Shape, _Component);\n\n function Shape(props) {\n _classCallCheck(this, Shape);\n\n var components = {\n circle: Circle,\n square: Square,\n triangle: Triangle,\n ellipse: Ellipse,\n hump: Hump,\n donut: Donut,\n spark: Spark\n };\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.props = props;\n\n switch (props.gene.shape) {\n case Gene.shape.CIRCLE:\n _this.component = components.circle;\n break;\n\n case Gene.shape.SQUARE:\n case Gene.shape.BAR:\n _this.component = components.square;\n break;\n\n case Gene.shape.TRIANGLE:\n _this.component = components.triangle;\n break;\n\n case Gene.shape.ELLIPSE:\n _this.component = components.ellipse;\n break;\n\n case Gene.shape.HUMP:\n _this.component = components.hump;\n break;\n\n case Gene.shape.DONUT:\n case Gene.shape.RADIAL:\n case Gene.shape.I_RADIAL:\n case Gene.shape.STAR:\n case Gene.shape.RADIAL_BAR:\n _this.component = components.donut;\n break;\n\n case Gene.shape.SPARKLINE:\n _this.component = components.spark;\n break;\n\n default:\n _this.component = components.circle;\n }\n\n return _this;\n }\n\n Shape.prototype.render = function render() {\n return React.createElement(this.component, this.props);\n };\n\n return Shape;\n}(Component);\n\nexport default Shape;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Random = function () {\n function Random(seed) {\n _classCallCheck(this, Random);\n\n if (typeof seed === \"number\") this.seed = seed;else this.seed = this.hashString(seed);\n }\n\n Random.prototype.random = function random() {\n var x = Math.sin(this.seed++) * 10000;\n return x - Math.floor(x);\n };\n\n Random.prototype.hashString = function hashString(seed) {\n var hash = 0,\n i,\n chr,\n len;\n if (seed.length === 0) return hash;\n\n for (i = 0, len = seed.length; i < len; i++) {\n chr = seed.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n return hash;\n };\n\n return Random;\n}();\n\nexport default Random;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nimport Gene from './Gene';\n\nvar ErrorHandler = function () {\n function ErrorHandler() {\n _classCallCheck(this, ErrorHandler);\n }\n\n ErrorHandler.checkGene = function checkGene(gene) {\n var warn = [];\n var error = [];\n\n if (gene.filter === Gene.filter.GOO && gene.shape !== Gene.shape.CIRCLE) {\n warn.push(\"\\\"Gene.filter.GOO\\\" filter should only be used in conjunction with \\\"Gene.shape.CIRCLE\\\"\");\n }\n\n if (gene.object_rotaion !== Gene.object_rotation.NONE && gene.shape === Gene.shape.CIRCLE) {\n warn.push(\"\\\"Gene.shape.CIRCLE\\\" should not have a \\\"Gene.object_rotation\\\" applied as it will have no visual effect \");\n }\n\n if ((gene.shape === Gene.shape.DONUT || gene.shape === Gene.shape.RADIAL || gene.shape === Gene.shape.I_RADIAL || gene.shape === Gene.shape.STAR) && gene.path_mode !== Gene.path_mode.RING) {\n error.push(\"\\\"Gene.shape.DONUT\\\", \\\"Gene.shape.RADIAL\\\", \\\"Gene.shape.I_RADIAL\\\" and \\\"Gene.shape.STAR\\\" must only be used in conjuntion with \\\"Gene.path_mode.RING\\\". Please either change the shape or the path mode.\");\n }\n\n if (gene.path_mode === Gene.path_mode.RING && gene.path_grouping !== Gene.path_grouping.NONE) {\n error.push(\"\\\"Gene.path_grouping.DATA_GROUP\\\" must not be used in conjuntion with \\\"Gene.path_mode.RING\\\". Please either change the grouping or the path mode.\");\n }\n\n if (gene.path_grouping === Gene.path_grouping.DATA_GROUP && gene.path_mode !== Gene.path_mode.INLINE) {\n error.push(\"\\\"Gene.path_grouping.DATA_GROUP\\\" must be used in conjuntion with \\\"Gene.path_mode.INLINE\\\". Please either change the grouping or the path mode.\");\n }\n\n for (var i = 0; i < warn.length; i++) {\n console.warn(warn[i]);\n }\n\n for (i = 0; i < error.length; i++) {\n throw new Error(error[i]);\n }\n };\n\n return ErrorHandler;\n}();\n\nexport default ErrorHandler;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\n\nvar SVGFilter = function (_Component) {\n _inherits(SVGFilter, _Component);\n\n function SVGFilter() {\n _classCallCheck(this, SVGFilter);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n SVGFilter.prototype.render = function render() {\n return React.createElement(\"filter\", {\n id: \"goo\",\n colorInterpolationFilters: \"sRGB\"\n }, React.createElement(\"feGaussianBlur\", {\n \"in\": \"SourceGraphic\",\n stdDeviation: \"18\",\n result: \"blur\"\n }), React.createElement(\"feColorMatrix\", {\n \"in\": \"blur\",\n mode: \"matrix\",\n values: \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -8\",\n result: \"cm\"\n }));\n };\n\n return SVGFilter;\n}(Component);\n\nexport default SVGFilter;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Shape from './Shapes/';\nimport Spark from './Shapes/Spark';\nimport Color from './Color';\nimport Path from './Path';\nimport Random from './Random';\nimport _Gene from './Gene';\nimport ErrorHandler from './ErrorHandler';\nimport SVGFilter from './SVGFilter';\n\nvar MURV = function (_Component) {\n _inherits(MURV, _Component);\n\n function MURV(props) {\n _classCallCheck(this, MURV);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.gene = props.gene; // ErrorHandler.checkGene(this.gene);\n\n _this.data = props.config.data.dataset.object.values;\n _this.height = props.config.data.dataset.object.size.height;\n _this.width = props.config.data.dataset.object.size.width;\n _this.size = Math.min(_this.width, _this.height);\n if (_this.gene.path_mode !== Gene.path_mode.RING && _this.gene.path_mode !== Gene.path_mode.CUBE_SPIRAL && _this.gene.path_grouping !== Gene.path_grouping.DATA_GROUP) _this.size = _this.width;\n _this.padding = props.config.data.dataset.object.size.padding;\n _this.random = new Random(props.config.data.dataset.object.name);\n _this.maxPV = 0;\n _this.minPV = 1.1;\n _this.maxP = {};\n _this.minP = {};\n _this.path = new Path({\n size: {\n width: _this.width,\n height: _this.height,\n padding: _this.padding\n },\n dataLength: _this.data.length,\n random: _this.random,\n padding: _this.padding,\n data: _this.data,\n gene: _this.gene\n });\n return _this;\n }\n\n MURV.prototype.renderShapes = function renderShapes(path, shapes, size, placement, goo) {\n var _this2 = this;\n\n var shapeComponents = void 0;\n\n if (this.gene.shape === Gene.shape.SPARKLINE) {\n shapeComponents = React.createElement(Spark, {\n path: path,\n shapes: shapes,\n size: size,\n placement: placement,\n goo: goo,\n gene: this.gene,\n padding: this.padding,\n maxHeight: this.height\n });\n } else {\n shapeComponents = shapes.map(function (item, i) {\n var center = Path.centerPoint(path[i].a, path[i].b);\n console.log(path[i].a, path[i].b, _this2.gene.path_mode);\n var minimum = 0;\n var max = path[i].dist;\n\n if (_this2.gene.path_grouping === _Gene.path_grouping.DATA_GROUP) {\n _this2.groups = _this2.data.reduce(function (acc, curr) {\n if (typeof acc[curr.group] == 'undefined') {\n acc[curr.group] = 1;\n } else {\n acc[curr.group] += 1;\n }\n\n return acc;\n }, {});\n var m = Object.values(_this2.groups).length;\n max = Math.min((_this2.size - _this2.padding * m) / m, max);\n }\n\n return React.createElement(Shape, {\n x: center.x,\n y: center.y,\n pointA: path[i].a,\n pointB: path[i].b,\n fullSize: size,\n range: {\n min: _this2.props.config.data.dataset.object.min,\n max: _this2.props.config.data.dataset.object.max\n },\n padding: _this2.padding,\n size: (max - minimum) * item.value + minimum,\n id: item.key,\n fill: Color.getColor({\n val: item.value,\n type: _this2.gene.color,\n random: _this2.random,\n itemColor: item.color\n }),\n gene: _this2.gene,\n value: item.value,\n avg: item.avg,\n color: item.color,\n key: i,\n index: i,\n random: _this2.random\n });\n });\n }\n\n return React.createElement('g', {\n filter: this.gene.filter === _Gene.filter.GOO ? \"url(#goo)\" : \"\"\n }, shapeComponents);\n };\n\n MURV.prototype.renderColorKey = function renderColorKey(num) {\n if (this.gene.color === _Gene.color.VALUE_DEPENDANT && this.gene.color_key === _Gene.color_key.ON) {\n var width = void 0,\n height = this.size / 40,\n elems = [];\n width = this.size / num;\n this.size -= height;\n this.padding += height / 2;\n\n for (var i = 0; i < num; i++) {\n elems.push(React.createElement('rect', {\n x: width * i,\n y: this.size - height,\n width: width,\n height: height,\n fill: Color.getColor((i + 1) / num, this.gene.color, this.random),\n key: i\n }));\n }\n\n return elems;\n }\n };\n\n MURV.prototype.render = function render() {\n return React.createElement('svg', {\n className: 'icon',\n width: this.width,\n height: this.height\n }, React.createElement(SVGFilter, null), this.renderColorKey(1000), this.renderShapes(this.path.path, this.data, this.size, 1, true));\n };\n\n return MURV;\n}(Component);\n\nexport default MURV;\nexport var Gene = _Gene;","import dataset from './example.json';\n\nexport default{\n data: { dataset }\n}","import React, { Component } from 'react';\nimport MURV, { Gene } from 'murv-component';\nimport Config from '../data/Config';\nimport queryString from 'query-string';\nimport canvg from 'canvg';\nimport image from '../images/watch.png';\n\nclass Renderer extends Component {\n constructor(props) {\n super(props)\n let params = {\n shape: Gene.shape.BAR,\n color: Gene.color.FROM_DATA,\n color_key: Gene.color_key.OFF,\n path_points: Gene.path_points.EVEN,\n path_mode: Gene.path_mode.INLINE,\n path_rotation: Gene.path_rotation.NONE,\n path_grouping: Gene.path_grouping.NONE,\n object_rotation: Gene.object_rotation.NONE,\n object_size: Gene.object_size.FULL,\n filter: Gene.filter.OFF,\n debugging: Gene.debugging.OFF\n }\n this.gene = new Gene(params);\n }\n\n componentDidMount() {\n const values = queryString.parse(this.props.location.search)\n for (let index = 0; index < Object.keys(values).length; index++) {\n const key = Object.keys(values)[index];\n let value;\n if (!isNaN(key)) {\n value = parseInt(values[key]);\n this.gene[key] = value\n } else {\n value = values[key]\n this.gene[key] = Gene[key][value.toUpperCase()]\n }\n }\n this.setState({\n gene: this.gene,\n })\n }\n\n componentDidUpdate() {\n const svg = document.querySelector('.renderer svg');\n const canvas = document.createElement(\"canvas\");\n const div = document.createElement(\"div\");\n canvas.width = svg.clientWidth;\n canvas.height = svg.clientHeight;\n svg.parentNode.insertBefore(canvas, svg);\n svg.parentNode.removeChild(svg);\n div.appendChild(svg);\n canvg(canvas, div.innerHTML);\n var dataURL = canvas.toDataURL();\n console.log(dataURL.split(',').length)\n window.webViewBridge.send('handleDataReceived', dataURL.split(',')[1]);\n }\n\n render() {\n return (\n
\n {this.state === null ? \"\" : (\n
\n \n
\n )\n }\n
\n )\n }\n}\n\nexport default Renderer;\n\n\n\nvar promiseChain = Promise.resolve();\nvar callbacks = {};\nvar init = function () {\n const guid = function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n return s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + s4() + s4();\n }\n window.webViewBridge = {\n /**\n * send message to the React-Native WebView onMessage handler\n * @param targetFunc - name of the function to invoke on the React-Native side\n * @param data - data to pass\n * @param success - success callback\n * @param error - error callback\n */\n send: function (targetFunc, data, success, error) {\n var msgObj = {\n targetFunc: targetFunc,\n data: data || {}\n };\n if (success || error) {\n msgObj.msgId = guid();\n }\n var msg = JSON.stringify(msgObj);\n promiseChain = promiseChain.then(function () {\n return new Promise(function (resolve, reject) {\n console.log(\"sending message \" + msgObj.targetFunc);\n if (msgObj.msgId) {\n callbacks[msgObj.msgId] = {\n onsuccess: success,\n onerror: error\n };\n }\n window.ReactNativeWebView.postMessage(msg);\n resolve();\n })\n }).catch(function (e) {\n console.error('rnBridge send failed ' + e.message);\n });\n },\n };\n window.addEventListener('message', function (e) {\n console.log(\"message received from react native\");\n var message;\n try {\n message = JSON.parse(e.data)\n }\n catch (err) {\n console.error(\"failed to parse message from react-native \" + err);\n return;\n }\n //trigger callback\n if (message.args && callbacks[message.msgId]) {\n if (message.isSuccessfull) {\n callbacks[message.msgId].onsuccess.apply(null, message.args);\n }\n else {\n callbacks[message.msgId].onerror.apply(null, message.args);\n }\n delete callbacks[message.msgId];\n }\n });\n};\ninit();\n\nconst divStyle = {\n width: \"385px\",\n height: \"400px\",\n backgroundImage: `url(${image})`,\n backgroundSize: \"auto 550px\",\n padding: \"125px 55px 35px 8px\",\n backgroundRepeat: \"no-repeat\",\n margin: \"0 auto\"\n}","import React from 'react';\nimport logo from './logo.svg';\nimport Renderer from './components/Renderer';\nimport './App.css';\nimport {\n BrowserRouter,\n Route,\n NavLink\n} from 'react-router-dom'\n\nfunction App() {\n return (\n
\n \n } />\n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.e4f764b4.chunk.js.map b/static/js/main.e4f764b4.chunk.js.map deleted file mode 100644 index c8c28e1..0000000 --- a/static/js/main.e4f764b4.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["images/watch.png","logo.svg","../../murv-component/es/Gene.js","../../murv-component/es/Point.js","../../murv-component/es/Path.js","../../murv-component/es/Shapes/Circle.js","../../murv-component/es/Color.js","../../murv-component/es/Shapes/Square.js","../../murv-component/es/Shapes/Triangle.js","../../murv-component/es/Shapes/Ellipse.js","../../murv-component/es/Shapes/Hump.js","../../murv-component/es/Shapes/Donut.js","../../murv-component/es/Shapes/Spark.js","../../murv-component/es/Shapes/index.js","../../murv-component/es/Random.js","../../murv-component/es/ErrorHandler.js","../../murv-component/es/SVGFilter.js","../../murv-component/es/index.js","data/Config.js","components/Renderer.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","_class","_temp","Gene","params","instance","Constructor","TypeError","_classCallCheck","this","shape","CIRCLE","color","BLACK","color_key","OFF","path_points","EVEN","path_mode","INLINE","path_rotation","NONE","path_grouping","object_rotation","object_size","FULL","filter","debugging","SQUARE","ELLIPSE","TRIANGLE","HUMP","DONUT","RADIAL","STAR","I_RADIAL","SPARKLINE","BAR","RADIAL_BAR","MONOTONE","RANDOM","VALUE_DEPENDANT","WHITE","FROM_DATA","GRADIENT","ON","MEAN_DEVIATION","RING","CUBE_SPIRAL","INLINE_HALF","MEAN_DEPENDANT","DATA_GROUP","WIN_LOSS","GOO","Point","x","y","distance","a","b","dx","dy","Math","hypot","Path","prefs","num","dataLength","size","random","padding","data","groups","reduce","acc","curr","group","max","apply","Object","values","total","length","gene","path","generateRingPath","generateCubeSpiralPath","generateLinePath","centerPoint","prototype","longestSide","ceil","sqrt","segSize","min","width","height","p1","p2","curCount","curCounter","steps","mult","i","push","dist","smallestSize","radius","center","angle","PI","getMean","centerMarginx","centerMarginy","cos","sin","portion","value","atan2","half","generatePath","adjustPath","mode","rotatePath","returner","aVal","count","xVal","bMult","mean","areaSize","adj","meanDeviation","abs","sel","adjustPoint","p","console","log","rotation","rotateSegment","seg","rotatePoint","point","radians","c","getAngle","orthogonalCenterPoint","renderDebugInfo","pointA","pointB","debug","createElement","id","r","cx","cy","fill","x1","y1","x2","y2","stroke","strokeWidth","strokeDasharray","AdjustMode","_Component","Circle","props","_this","self","call","ReferenceError","_possibleConstructorReturn","elementAtts","key","subClass","superClass","create","constructor","enumerable","writable","configurable","setPrototypeOf","__proto__","_inherits","render","Color","getColor","type","itemColor","floor","scale","chroma","val","hex","colors","_extends","assign","target","arguments","source","hasOwnProperty","_typeof","Symbol","iterator","obj","Square","degrees","round","fullSize","hMult","range","midDist","availDist","avg","_midDist","_availDist","avgAtts","index","maxCol","minCol","midCol","amnt","screenPoint","inRads","rot","rnd","offset","stopColor","transform","rx","ry","className","Triangle","d","constructTrianglePath","Ellipse","Hump","constructHumpPath","control1","control2","Donut","diff1","diff2","startAngle","endAngle","arc","centerP","start","polarToCartesian","end","describeArc","centerX","centerY","largeArcFlag","join","Spark","shapes","placement","goo","maxHeight","_this2","maxPV","minPV","maxP","minP","points","map","item","Shape","components","circle","square","triangle","ellipse","hump","donut","spark","component","Random","seed","hashString","len","hash","charCodeAt","ErrorHandler","checkGene","warn","error","object_rotaion","Error","SVGFilter","colorInterpolationFilters","stdDeviation","result","MURV","config","dataset","object","name","renderShapes","shapeComponents","m","renderColorKey","elems","Renderer","queryString","parse","location","search","keys","isNaN","toUpperCase","parseInt","setState","svg","document","querySelector","canvas","div","clientWidth","clientHeight","parentNode","insertBefore","removeChild","appendChild","canvg","innerHTML","dataURL","toDataURL","window","webViewBridge","send","split","state","style","divStyle","Config","Component","promiseChain","Promise","resolve","callbacks","targetFunc","success","msgObj","msgId","s4","toString","substring","guid","msg","JSON","stringify","then","reject","onsuccess","onerror","ReactNativeWebView","postMessage","catch","e","message","addEventListener","err","args","isSuccessfull","backgroundImage","image","backgroundSize","backgroundRepeat","margin","App","basename","process","exact","Boolean","hostname","match","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e4f764b4.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/watch.c0f5684c.png\";","module.exports = __webpack_public_path__ + \"static/media/logo.25bf045c.svg\";","var _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Gene = (_temp = _class = // static DEF_BAR = {\n// \tshape: this.shape.BAR,\n// \tcolor: this.color.FROM_DATA,\n// \tcolor_key: this.color_key.OFF,\n// \tpath_points: this.path_points.EVEN,\n// \tpath_mode: this.path_mode.INLINE,\n// \tpath_rotation: this.path_rotation.NONE,\n// \tpath_grouping: this.path_grouping.NONE,\n// \tobject_rotation: this.object_rotation.NONE,\n// \tobject_size: this.object_size.FULL,\n// \tfilter: this.filter.OFF,\n// \tdebugging: this.debugging.OFF\n// };\n//\n// static DEF_DONUT = {\n// \tshape: this.shape.DONUT,\n// \tcolor: this.color.FROM_DATA,\n// \tcolor_key: this.color_key.OFF,\n// \tpath_points: this.path_points.EVEN,\n// \tpath_mode: this.path_mode.RING,\n// \tpath_rotation: this.path_rotation.NONE,\n// \tpath_grouping: this.path_grouping.NONE,\n// \tobject_rotation: this.object_rotation.NONE,\n// \tobject_size: this.object_size.FULL,\n// \tfilter: this.filter.OFF,\n// \tdebugging: this.debugging.OFF\n// };\nfunction Gene(params) {\n _classCallCheck(this, Gene);\n\n this.shape = params.shape || Gene.shape.CIRCLE;\n this.color = params.color || Gene.shape.BLACK;\n this.color_key = params.color_key || Gene.color_key.OFF;\n this.path_points = params.path_points || Gene.path_points.EVEN;\n this.path_mode = params.path_mode || Gene.path_mode.INLINE;\n this.path_rotation = params.path_rotation || Gene.path_rotation.NONE;\n this.path_grouping = params.path_grouping || Gene.path_grouping.NONE;\n this.object_rotation = params.object_rotation || Gene.object_rotation.NONE;\n this.object_size = params.object_size || Gene.object_size.FULL;\n this.filter = params.filter || Gene.filter.OFF;\n this.debugging = params.debugging || Gene.debugging.OFF;\n}, _class.shape = {\n CIRCLE: 1,\n SQUARE: 2,\n ELLIPSE: 3,\n TRIANGLE: 4,\n HUMP: 5,\n DONUT: 6,\n RADIAL: 7,\n STAR: 8,\n I_RADIAL: 9,\n SPARKLINE: 10,\n BAR: 11,\n RADIAL_BAR: 12\n}, _class.color = {\n BLACK: 1,\n MONOTONE: 2,\n RANDOM: 3,\n VALUE_DEPENDANT: 4,\n WHITE: 5,\n FROM_DATA: 6,\n GRADIENT: 7\n}, _class.color_key = {\n OFF: 1,\n ON: 2\n}, _class.path_points = {\n EVEN: 1,\n VALUE_DEPENDANT: 2\n}, _class.path_mode = {\n INLINE: 1,\n RANDOM: 2,\n MEAN_DEVIATION: 3,\n RING: 4,\n CUBE_SPIRAL: 5,\n INLINE_HALF: 6\n}, _class.path_rotation = {\n NONE: 1,\n MEAN_DEPENDANT: 2,\n RANDOM: 3\n}, _class.path_grouping = {\n NONE: 1,\n DATA_GROUP: 2\n}, _class.object_rotation = {\n NONE: 1,\n VALUE_DEPENDANT: 2,\n RANDOM: 3,\n RADIAL: 4\n}, _class.object_size = {\n FULL: 1,\n VALUE_DEPENDANT: 2,\n WIN_LOSS: 3\n}, _class.filter = {\n NONE: 1,\n GOO: 2\n}, _class.debugging = {\n OFF: 1,\n ON: 2\n}, _temp);\nexport default Gene;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Point = function () {\n function Point(x, y) {\n _classCallCheck(this, Point);\n\n this.x = x;\n this.y = y;\n }\n\n Point.distance = function distance(a, b) {\n var dx = a.x - b.x;\n var dy = a.y - b.y;\n return Math.hypot(dx, dy);\n };\n\n return Point;\n}();\n\nexport var getAngle = function getAngle(screenPoint, center) {\n var dx = screenPoint.x - center.x; // Minus to correct for coord re-mapping\n\n var dy = -(screenPoint.y - center.y);\n var inRads = Math.atan2(dy, dx); // We need to map to coord system when 0 degree is at 3 O'clock, 270 at 12 O'clock\n\n if (inRads < 0) inRads = Math.abs(inRads);else inRads = 2 * Math.PI - inRads;\n return inRads * (180 / Math.PI) - 90;\n};\nexport default Point;","var _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nimport React from 'react';\nimport Point from './Point';\nimport Gene from './Gene';\nvar Path = (_temp = _class = function () {\n Path.centerPoint = function centerPoint(a, b) {\n return new Point((b.x - a.x) / 2 + a.x, (b.y - a.y) / 2 + a.y);\n };\n\n function Path(prefs) {\n _classCallCheck(this, Path);\n\n this.num = prefs.dataLength;\n this.size = prefs.size;\n this.random = prefs.random;\n this.padding = prefs.size.padding;\n this.data = prefs.data;\n this.groups = this.data.reduce(function (acc, curr) {\n if (typeof acc[curr.group] == 'undefined') {\n acc[curr.group] = 1;\n } else {\n acc[curr.group] += 1;\n }\n\n return acc;\n }, {});\n var max = Math.max.apply(Math, Object.values(this.groups));\n var total = Object.values(this.groups).length;\n this.groups.max = max;\n this.groups.total = total;\n this.gene = prefs.gene;\n\n if (this.gene.path_mode === Gene.path_mode.RING) {\n this.path = this.generateRingPath();\n } else if (this.gene.path_mode === Gene.path_mode.CUBE_SPIRAL) {\n this.path = this.generateCubeSpiralPath();\n } else {\n this.path = this.generateLinePath(this.gene.path_mode === Gene.path_mode.INLINE_HALF);\n }\n }\n\n Path.prototype.generateCubeSpiralPath = function generateCubeSpiralPath() {\n var longestSide = Math.ceil(Math.sqrt(this.data.length + 1));\n var smallestSize = Math.min(this.size.width, this.size.height);\n var segSize = (smallestSize - this.padding * 2) / (longestSide + 2);\n var p1 = void 0,\n p2 = void 0,\n a = void 0,\n b = void 0,\n path = [],\n curCount = 1,\n curCounter = 1,\n steps = 2,\n mult = 1;\n\n for (var i = 0; i < this.data.length; i++) {\n if (i === 0) {\n p1 = new Point(this.size.width / 2, this.size.height / 2);\n p2 = new Point(this.size.width / 2, this.size.height / 2);\n } else {\n if (steps === 1) {\n a = path[i - 1].b.x + segSize * mult;\n b = path[i - 1].b.y;\n\n if (curCounter < curCount) {\n curCounter++;\n } else {\n curCounter = 1;\n steps++;\n }\n } else {\n a = path[i - 1].b.x;\n b = path[i - 1].b.y + segSize * mult;\n\n if (curCounter < curCount) {\n curCounter++;\n } else {\n steps = 1;\n curCount++;\n mult *= -1;\n curCounter = 1;\n }\n }\n\n p1 = path[i - 1].b;\n p2 = new Point(a, b);\n }\n\n path.push({\n a: p1,\n b: p2,\n dist: Point.distance(p1, p2)\n });\n }\n\n return path;\n };\n\n Path.prototype.generateRingPath = function generateRingPath() {\n var smallestSize = Math.min(this.size.width, this.size.height);\n var radius = (smallestSize - this.padding * 6) / 2;\n var center = smallestSize / 2;\n var angle = 360 / this.num * (Math.PI / 180);\n var total = this.getMean(this.data).total;\n var path = [];\n var centerMarginx = this.size.width / 2;\n var centerMarginy = this.size.height / 2;\n var p1 = void 0,\n p2 = void 0,\n dist = void 0;\n\n for (var i = 0; i < this.num; i++) {\n if (this.gene.path_points === Gene.path_points.EVEN) {\n p1 = new Point(Math.cos(angle * i) * radius + centerMarginx, Math.sin(angle * i) * radius + centerMarginy);\n p2 = new Point(Math.cos(angle * (i + 1)) * radius + centerMarginx, Math.sin(angle * (i + 1)) * radius + centerMarginy);\n } else {\n if (i === 0) {\n p1 = new Point(Math.cos(angle * i) * radius + centerMarginx, Math.sin(angle * i) * radius + centerMarginy);\n } else {\n p1 = path[i - 1].b;\n }\n\n var portion = 360 * (this.data[i].value / total) * (Math.PI / 180);\n var addition = Math.atan2(p1.y - center, p1.x - center);\n angle = addition + portion;\n p2 = new Point(Math.cos(angle) * radius + centerMarginx, Math.sin(angle) * radius + centerMarginy);\n }\n\n dist = Point.distance(p1, p2);\n path.push({\n a: p1,\n b: p2,\n dist: dist\n });\n }\n\n return path;\n };\n\n Path.prototype.generateLinePath = function generateLinePath(half) {\n var path = this.generatePath(half);\n\n if (this.gene.path_mode !== Gene.path_mode.INLINE && this.gene.path_mode !== Gene.path_mode.INLINE_HALF) {\n path = this.adjustPath({\n path: path,\n mode: this.gene.path_mode,\n data: this.data\n });\n }\n\n if (this.gene.path_rotation !== Gene.path_rotation.NONE) {\n path = this.rotatePath(path);\n }\n\n return path;\n };\n /**\n * Use a and b instead of x and y as the dimensions may be flipped\n */\n\n\n Path.prototype.generatePath = function generatePath(half) {\n var smallestSize = Math.min(this.size.width, this.size.height);\n var mult = half ? 0.5 : 1;\n var returner = [],\n b = void 0,\n aVal = void 0;\n\n if (this.gene.path_grouping === Gene.path_grouping.DATA_GROUP) {\n b = (this.size.height - this.padding * this.groups.total) / this.groups.total;\n aVal = (this.size.width * mult - this.padding * 2) / this.groups.max;\n } else {\n b = (this.size.height - this.padding * 2) / 2 + this.padding;\n aVal = (this.size.width * mult - this.padding * (2 * mult)) / this.num;\n }\n\n var total = this.getMean(this.data).total,\n p1 = void 0,\n p2 = void 0;\n var count = 0,\n group = 0,\n xVal = void 0;\n\n for (var i = 0; i < this.num; i++, count++) {\n var bMult = this.gene.path_grouping === Gene.path_grouping.DATA_GROUP ? this.data[i].group + 1 : 1;\n if (this.gene.path_points === Gene.path_points.VALUE_DEPENDANT) aVal = (this.size.width * mult - this.padding * 2) * (this.data[i].value / total);\n if (i === 0) p1 = new Point(i * aVal + this.padding + (half ? (this.size.width - this.padding * 2) * 0.5 : 0), b * bMult);else {\n if (count >= this.groups[group] && this.gene.path_grouping === Gene.path_grouping.DATA_GROUP) {\n xVal = this.padding;\n group++;\n count = 0;\n } else {\n xVal = returner[i - 1].b.x;\n }\n\n p1 = new Point(xVal, b * bMult);\n }\n p2 = new Point(p1.x + aVal, b * bMult);\n var dist = Point.distance(p1, p2);\n returner.push({\n a: p1,\n b: p2,\n dist: dist\n });\n }\n\n return returner;\n };\n\n Path.prototype.adjustPath = function adjustPath(prefs) {\n var adjustment = 10;\n var mean = this.getMean(prefs.data).mean;\n\n for (var i = 0; i < prefs.path.length; i++) {\n if (i === 0) {\n if (!prefs.mode) {\n prefs.path[i].a.y += this.random.random() * this.size.height / adjustment - this.areaSize / (adjustment * 2);\n }\n } else {\n prefs.path[i].a.y = prefs.path[i - 1].b.y;\n }\n\n if (prefs.mode === Gene.path_mode.MEAN_DEVIATION) {\n var adj = this.size.height / (adjustment * 2);\n var meanDeviation = Math.abs(prefs.data[i].value - mean);\n adj = prefs.data[i].value < mean ? adj : -adj;\n var sel = i > 0 ? i - 1 : i;\n prefs.path[i].b.y = prefs.path[sel].b.y + adj * meanDeviation;\n } else {\n prefs.path[i].b.y = this.random.random() * this.size.height;\n prefs.path[i].b.x = this.random.random() * this.size.width;\n }\n\n prefs.path[i].dist = Point.distance(prefs.path[i].a, prefs.path[i].b);\n }\n\n return prefs.path;\n };\n\n Path.prototype.adjustPoint = function adjustPoint(p) {\n switch (this.path_mode) {\n case Gene.path_mode.RANDOM:\n p.x += this.random.random() * this.size.width;\n p.y += this.random.random() * this.size.height;\n console.log(p);\n break;\n\n case 2:\n p.y = p.x;\n break;\n\n default:\n }\n\n return p;\n };\n\n Path.prototype.rotatePath = function rotatePath(path) {\n var center = new Point(this.areaSize / 2, this.areaSize / 2);\n var rotation = 0;\n\n if (this.gene.path_rotation === Gene.path_rotation.MEAN_DEPENDANT) {\n var mean = 0;\n\n for (var i = 0; i < this.data.length; i++) {\n mean += this.data[i].value;\n }\n\n mean /= this.data.length;\n rotation = 360 * mean;\n } else {\n rotation = 360 * this.random.random();\n }\n\n for (i = 0; i < path.length; i++) {\n path[i] = this.rotateSegment(path[i], center, rotation);\n }\n\n return path;\n };\n\n Path.prototype.rotateSegment = function rotateSegment(seg, center, angle) {\n seg.a = this.rotatePoint(seg.a, center, angle);\n seg.b = this.rotatePoint(seg.b, center, angle);\n seg.dist = Point.distance(seg.a, seg.b);\n return seg;\n };\n\n Path.prototype.rotatePoint = function rotatePoint(point, center, angle) {\n var radians = Math.PI / 180 * angle,\n cos = Math.cos(radians),\n sin = Math.sin(radians);\n return new Point(cos * (point.x - center.x) + sin * (point.y - center.y) + center.x, cos * (point.y - center.y) + sin * (point.x - center.x) + center.y);\n };\n\n Path.prototype.getMean = function getMean(data) {\n var total = data.reduce(function (a, c) {\n return a + c.value;\n }, 0);\n var mean = total / data.length;\n return {\n mean: mean,\n total: total\n };\n };\n\n Path.getAngle = function getAngle(p1, p2) {\n return Math.atan2(p2.y - p1.y, p2.x - p1.x);\n };\n\n Path.orthogonalCenterPoint = function orthogonalCenterPoint(p1, p2, dist) {\n var center = new Point((p2.x - p1.x) / 2 + p1.x, (p2.y - p1.y) / 2 + p1.y);\n var angle = this.getAngle(p1, p2);\n return new Point(Math.sin(angle) * dist + center.x, -Math.cos(angle) * dist + center.y);\n };\n\n Path.renderDebugInfo = function renderDebugInfo(pointA, pointB, debug) {\n if (debug === Gene.debugging.ON) {\n return React.createElement('g', {\n id: 'debug'\n }, React.createElement('circle', {\n r: '3',\n cx: pointA.x,\n cy: pointA.y,\n fill: 'black'\n }), React.createElement('circle', {\n r: '3',\n cx: pointB.x,\n cy: pointB.y,\n fill: 'black'\n }), React.createElement('line', {\n x1: pointA.x,\n y1: pointA.y,\n x2: pointB.x,\n y2: pointB.y,\n stroke: 'black',\n strokeWidth: '1',\n strokeDasharray: '4'\n }));\n } else {\n return;\n }\n };\n\n return Path;\n}(), _class.AdjustMode = {\n \"RANDOM\": 1,\n \"EQUAL\": 2\n}, _temp);\nexport default Path;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Gene from '../Gene';\nimport Path from '../Path';\n\nvar Circle = function (_Component) {\n _inherits(Circle, _Component);\n\n function Circle(props) {\n _classCallCheck(this, Circle);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.elementAtts = {\n cx: props.x,\n cy: props.y,\n key: props.key,\n r: props.gene.filter === Gene.filter.GOO ? props.size : props.size / 2,\n fill: props.fill\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debugging = props.gene.debugging;\n return _this;\n }\n\n Circle.prototype.render = function render() {\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('circle', this.elementAtts), Path.renderDebugInfo(this.pointA, this.pointB, this.debugging));\n };\n\n return Circle;\n}(Component);\n\nexport default Circle;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nimport Chroma from 'chroma-js';\nimport Gene from './Gene';\n\nvar Color = function () {\n function Color() {\n _classCallCheck(this, Color);\n }\n\n Color.getColor = function getColor(params) {\n if (params.type === Gene.color.FROM_DATA && typeof params.itemColor !== \"undefined\") {\n return params.itemColor;\n } else {\n var COLOR_BREWER = ['#edf8b1', '#7fcdbb', '#2c7fb8'];\n var RANDOM = [\"#009688\", \"#E91E63\", \"#9C27B0\", \"#FFC107\", \"#3F51B5\", \"#4CAF50\", \"#FFEB3B\", \"#673AB7\", \"#CDDC39\", \"#FF5722\", \"#00BCD4\", \"#f44336\", \"#FF9800\", \"#2196F3\"];\n var MONOTONE = ['#dddddd', '#000000'];\n var BLACK = ['#000000', '#000000'];\n var WHITE = ['#FFFFFF', '#FFFFFF'];\n var color;\n\n switch (params.type) {\n case Gene.color.MONOTONE:\n color = MONOTONE;\n break;\n\n case Gene.color.RANDOM:\n color = RANDOM;\n break;\n\n case Gene.color.VALUE_DEPENDANT:\n case Gene.color.FROM_DATA:\n color = COLOR_BREWER;\n break;\n\n case Gene.color.WHITE:\n color = WHITE;\n break;\n\n case Gene.color.BLACK:\n default:\n color = BLACK;\n }\n\n if (params.type === Gene.color.RANDOM) {\n var rand = Math.floor(params.random.random() * (color.length - 1));\n return color[rand];\n } else {\n var chroma = Chroma.scale(color);\n return chroma(params.val).hex();\n }\n }\n };\n\n return Color;\n}();\n\nexport default Color;\nexport var GradientColor = function GradientColor(colors, value) {\n var chroma = Chroma.scale(colors);\n return chroma(value).hex();\n};","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Point, { getAngle } from '../Point';\nimport Gene from '../Gene';\nimport { GradientColor } from '../Color';\n\nvar Square = function (_Component) {\n _inherits(Square, _Component);\n\n function Square(props) {\n _classCallCheck(this, Square);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n var angle = Path.getAngle(props.pointA, props.pointB);\n var degrees = 180 * angle / Math.PI;\n angle = (360 + Math.round(degrees)) % 360;\n _this.angle = angle;\n var dist = Point.distance(props.pointA, props.pointB) * (typeof props.value === \"array\" ? 0.6 : 0.9);\n var x = void 0,\n y = void 0,\n height = void 0;\n var fullSize = props.fullSize - props.padding * 2;\n\n if (props.gene.shape === Gene.shape.BAR || props.gene.object_size === Gene.object_size.WIN_LOSS) {\n x = props.x - dist / 2.0;\n } else {\n x = props.x - props.size / 2;\n }\n\n var hMult = _typeof(props.value === \"array\") ? fullSize : fullSize / 2;\n\n if (props.gene.shape === Gene.shape.BAR && props.gene.object_size !== Gene.object_size.WIN_LOSS) {\n height = typeof props.value === \"array\" ? (props.value[1] - props.value[0]) / (props.range.max - props.range.min) : props.value * hMult;\n } else {\n height = props.size;\n }\n\n if (props.gene.object_size === Gene.object_size.WIN_LOSS) {\n y = props.y - height;\n }\n\n if (props.gene.shape === Gene.shape.BAR) {\n if (typeof props.range.min !== \"undefined\") {\n y = (props.range.max - props.value[1]) / (props.range.max - props.range.min) * fullSize + props.padding;\n } else {\n y = props.y - height + fullSize / 2;\n }\n } else {\n y = props.y - height / 2;\n }\n\n if (props.gene.path_mode === Gene.path_mode.RING) {\n x = props.pointB.x + (props.pointB.x - props.pointA.x) / 2 - dist / 2;\n y = props.pointB.y + (props.pointB.y - props.pointA.y) / 2;\n }\n\n _this.center = new Point(props.pointB.x + (props.pointB.x - props.pointA.x) / 2, props.pointB.y + (props.pointB.y - props.pointA.y) / 2);\n\n if (props.gene.path_mode === Gene.path_mode.RING && props.gene.object_rotation === Gene.object_rotation.RADIAL) {\n x = (props.pointB.x + (props.pointB.x - props.pointA.x) / 2 + props.fullSize / 2) / 2 - dist / 2;\n y = (props.pointB.y + (props.pointB.y - props.pointA.y) / 2 + props.fullSize / 2) / 2;\n _this.center.x = x + dist / 2;\n _this.center.y = y;\n var midDist = Point.distance(_this.center, {\n x: props.fullSize / 2,\n y: props.fullSize / 2\n });\n var availDist = props.fullSize / 2 - midDist;\n console.log((props.value[0] - props.range.min) / (props.range.max - props.range.min), availDist, props.fullSize, midDist);\n y += (props.value[0] - props.range.min) / (props.range.max - props.range.min) * availDist;\n height = (props.value[1] - props.value[0]) / (props.range.max - props.range.min) * availDist;\n }\n\n if (_typeof(props.avg) === \"object\") {\n if (props.gene.object_rotation === Gene.object_rotation.RADIAL) {\n console.log(\"here\");\n\n var _midDist = Point.distance(_this.center, {\n x: props.fullSize / 2,\n y: props.fullSize / 2\n });\n\n var _availDist = props.fullSize / 2 - _midDist;\n\n _this.avgAtts = {\n x: (props.pointB.x + (props.pointB.x - props.pointA.x) / 2 + props.fullSize / 2) / 2 - Point.distance(props.pointA, props.pointB) * 0.9 / 2,\n y: (props.pointB.y + (props.pointB.y - props.pointA.y) / 2 + props.fullSize / 2) / 2,\n width: Point.distance(props.pointA, props.pointB) * 0.9,\n height: (props.avg[1] - props.avg[0]) / (props.range.max - props.range.min) * _availDist\n };\n _this.avgAtts.y += (props.avg[0] - props.range.min) / (props.range.max - props.range.min) * _availDist;\n } else {\n _this.avgAtts = {\n x: props.x - Point.distance(props.pointA, props.pointB) * 0.9 / 2,\n y: props.range.max - props.avg[1] + props.padding,\n width: Point.distance(props.pointA, props.pointB) * 0.9,\n height: (props.avg[1] - props.avg[0]) / (props.range.max - props.range.min) * fullSize\n };\n }\n\n _this.avgAtts.fill = \"rgba(255,255,255,0.3)\";\n _this.avgAtts.stroke = \"rgba(50,50,50,0.5)\";\n _this.avgAtts.strokeWidth = \"1\";\n }\n\n _this.elementAtts = {\n x: x,\n y: y,\n width: props.gene.shape == Gene.shape.BAR ? dist : props.size,\n height: height,\n fill: props.gene.color === Gene.color.GRADIENT ? \"url(#gradient\" + props.index + \"\" + _this.props.gene.object_rotation + \")\" : props.fill\n };\n _this.maxCol = (props.value[0] - props.range.min) / (props.range.max - props.range.min);\n _this.minCol = (props.value[1] - props.range.min) / (props.range.max - props.range.min);\n _this.midCol = _this.minCol + (_this.maxCol - _this.minCol) / 2;\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debugging = props.gene.debugging;\n _this.colors = [\"rgba(0,179,255,1)\", \"rgba(255,249,144,1)\", \"rgba(255,145,31,1)\"];\n return _this;\n }\n\n Square.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n\n if (this.props.gene.object_rotation === Gene.object_rotation.RADIAL) {\n amnt = getAngle(new Point(this.center.x, this.center.y), new Point(this.props.fullSize / 2, this.props.fullSize / 2)) % 360;\n }\n\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.center.x + \" \" + this.center.y + \")\" : \"\";\n var rnd = _typeof(this.props.avg) === \"object\" ? \"5px\" : \"0px\";\n return React.createElement('g', {\n key: this.props.key\n }, this.props.gene.color === Gene.color.GRADIENT ? React.createElement('linearGradient', {\n id: \"gradient\" + this.props.index + \"\" + this.props.gene.object_rotation,\n x1: '0',\n x2: '0',\n y1: '0',\n y2: '1'\n }, React.createElement('stop', {\n offset: \"0\",\n stopColor: GradientColor(this.colors, this.props.gene.path_mode === Gene.path_mode.RING ? this.maxCol : this.minCol)\n }), React.createElement('stop', {\n offset: '0.5',\n stopColor: GradientColor(this.colors, this.midCol)\n }), React.createElement('stop', {\n offset: \"1\",\n stopColor: GradientColor(this.colors, this.props.gene.path_mode === Gene.path_mode.RING ? this.minCol : this.maxCol)\n })) : \"\", React.createElement('rect', _extends({}, this.elementAtts, {\n transform: rot,\n rx: rnd,\n ry: rnd\n })), typeof this.avgAtts !== \"undefined\" ? React.createElement('rect', _extends({}, this.avgAtts, {\n transform: rot,\n className: this.props.gene.color === Gene.color.GRADIENT ? \"gradient1\" : \"\",\n rx: rnd,\n ry: rnd\n })) : \"\", Path.renderDebugInfo(this.pointA, this.pointB, this.debugging));\n };\n\n return Square;\n}(Component);\n\nexport default Square;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Gene from '../Gene';\n\nvar Triangle = function (_Component) {\n _inherits(Triangle, _Component);\n\n function Triangle(props) {\n _classCallCheck(this, Triangle);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.elementAtts = {\n d: _this.constructTrianglePath(props),\n key: props.key,\n fill: props.fill\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debug = props.gene.debugging;\n return _this;\n }\n\n Triangle.prototype.constructTrianglePath = function constructTrianglePath(props) {\n var centerPoint = Path.orthogonalCenterPoint(props.pointA, props.pointB, props.size);\n var p1 = \"M\" + props.pointA.x + \" \" + props.pointA.y;\n var p2 = \"L\" + props.pointB.x + \" \" + props.pointB.y + \"Z\";\n var peak = \" L\" + centerPoint.x + \" \" + centerPoint.y;\n return p1 + peak + p2;\n };\n\n Triangle.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('path', _extends({}, this.elementAtts, {\n transform: rot\n })), Path.renderDebugInfo(this.pointA, this.pointB, this.debug));\n };\n\n return Triangle;\n}(Component);\n\nexport default Triangle;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Point from '../Point';\nimport Path from '../Path';\nimport Gene from '../Gene';\n\nvar Ellipse = function (_Component) {\n _inherits(Ellipse, _Component);\n\n function Ellipse(props) {\n _classCallCheck(this, Ellipse);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n var angle = Path.getAngle(props.pointA, props.pointB);\n var degrees = 180 * angle / Math.PI;\n _this.angle = (360 + Math.round(degrees)) % 360;\n _this.elementAtts = {\n cx: props.x,\n cy: props.y,\n ry: props.size / 2,\n rx: Point.distance(props.pointA, props.pointB) / 2,\n fill: props.fill,\n transform: \"rotate(\" + _this.angle + \" \" + props.x + \" \" + props.y + \")\"\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debug = props.gene.debugging;\n return _this;\n }\n\n Ellipse.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key,\n transform: rot\n }, React.createElement('ellipse', this.elementAtts), Path.renderDebugInfo(this.pointA, this.pointB, this.debug));\n };\n\n return Ellipse;\n}(Component);\n\nexport default Ellipse;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Point from '../Point';\nimport Path from '../Path';\nimport Gene from '../Gene';\n\nvar Hump = function (_Component) {\n _inherits(Hump, _Component);\n\n function Hump(props) {\n _classCallCheck(this, Hump);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.debug = props.gene.debugging;\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.elementAtts = {\n d: _this.constructHumpPath(props),\n key: props.key,\n fill: props.fill\n };\n _this.key = props.key;\n _this.fill = props.fill;\n return _this;\n }\n\n Hump.prototype.constructHumpPath = function constructHumpPath(props) {\n var center = new Point(props.x, props.y);\n this.control1 = Path.orthogonalCenterPoint(props.pointA, center, props.size * 1.33);\n this.control2 = Path.orthogonalCenterPoint(center, props.pointB, props.size * 1.33);\n var p1 = \"M\" + props.pointA.x + \" \" + props.pointA.y;\n var p2 = \" \" + props.pointB.x + \" \" + props.pointB.y + \"Z\";\n var c1 = \" C\" + this.control1.x + \" \" + this.control1.y;\n var c2 = \" \" + this.control2.x + \" \" + this.control2.y;\n return p1 + c1 + c2 + p2;\n };\n\n Hump.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('path', _extends({}, this.elementAtts, {\n transform: rot\n })), Path.renderDebugInfo(this.pointA, this.pointB, this.debug));\n };\n\n return Hump;\n}(Component);\n\nexport default Hump;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Gene from '../Gene';\nimport Point from '../Point';\n\nvar Donut = function (_Component) {\n _inherits(Donut, _Component);\n\n function Donut(props) {\n _classCallCheck(this, Donut);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n var diff1 = {\n x: props.pointA.x - props.fullSize / 2,\n y: props.pointA.y - props.fullSize / 2\n };\n var diff2 = {\n x: props.pointB.x - props.fullSize / 2,\n y: props.pointB.y - props.fullSize / 2\n };\n var startAngle = Math.atan2(diff1.y, diff1.x);\n var endAngle = Math.atan2(diff2.y, diff2.x);\n var radius = (props.fullSize - props.padding * 4) / 2;\n var arc = void 0,\n fill = \"none\",\n stroke = props.fill,\n strokeWidth = radius * props.value;\n var centerP = props.fullSize / 2;\n\n switch (props.gene.shape) {\n case Gene.shape.STAR:\n var start = _this.polarToCartesian(centerP, centerP, props.value * radius, startAngle);\n\n var end = _this.polarToCartesian(centerP, centerP, props.value * radius, endAngle);\n\n arc = \"M\" + centerP + \" \" + centerP + \"L\" + start.x + \" \" + start.y + \"L\" + end.x + \" \" + end.y + \"Z\";\n fill = props.fill;\n stroke = \"none\";\n break;\n\n case Gene.shape.RADIAL:\n arc = _this.describeArc(centerP, centerP, props.value * radius / 2, startAngle, endAngle);\n strokeWidth = props.value * radius;\n break;\n\n case Gene.shape.DONUT:\n arc = _this.describeArc(centerP, centerP, radius, startAngle, endAngle);\n strokeWidth = props.fullSize / 10;\n break;\n\n case Gene.shape.RADIAL_BAR:\n startAngle = 0;\n endAngle = 360 * Math.PI / 180 * props.value;\n var centerPoint = new Point(props.pointA.x + props.pointB.x - props.pointA.x, props.pointA.y + props.pointB.y - props.pointA.y);\n arc = _this.describeArc(centerP, centerP, Point.distance(new Point(centerP, centerP), centerPoint), 0, Math.PI * 2 * props.value);\n strokeWidth = Point.distance(props.pointA, props.pointB) * 0.90;\n break;\n\n case Gene.shape.I_RADIAL:\n default:\n arc = _this.describeArc(centerP, centerP, radius - strokeWidth / 2, startAngle, endAngle);\n break;\n }\n\n _this.elementAtts = {\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n d: arc,\n key: props.key\n };\n _this.pointA = props.pointA;\n _this.pointB = props.pointB;\n _this.debugging = props.gene.debugging;\n return _this;\n }\n\n Donut.prototype.polarToCartesian = function polarToCartesian(centerX, centerY, radius, angle) {\n return {\n x: centerX + radius * Math.cos(angle),\n y: centerY + radius * Math.sin(angle)\n };\n };\n\n Donut.prototype.describeArc = function describeArc(x, y, radius, startAngle, endAngle) {\n var start = this.polarToCartesian(x, y, radius, endAngle);\n var end = this.polarToCartesian(x, y, radius, startAngle);\n var largeArcFlag = endAngle - startAngle <= Math.PI ? \"0\" : \"1\";\n var d = [\"M\", start.x, start.y, \"A\", radius, radius, 0, largeArcFlag, 0, end.x, end.y].join(\" \");\n return d;\n };\n\n Donut.prototype.render = function render() {\n var amnt = this.props.gene.object_rotation === Gene.object_rotation.RANDOM ? this.props.random.random() * 360 - 180 : 180 * this.props.value;\n var rot = this.props.gene.object_rotation !== Gene.object_rotation.NONE ? \"rotate(\" + amnt + \" \" + this.props.x + \" \" + this.props.y + \")\" : \"\";\n return React.createElement('g', {\n key: this.props.key\n }, React.createElement('path', _extends({}, this.elementAtts, {\n transform: rot\n })), Path.renderDebugInfo(this.pointA, this.pointB, this.debugging));\n };\n\n return Donut;\n}(Component);\n\nexport default Donut;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Path from '../Path';\nimport Color from '../Color';\nimport Gene from '../Gene';\nimport Square from './Square';\n\nvar Spark = function (_Component) {\n _inherits(Spark, _Component);\n\n function Spark(props) {\n _classCallCheck(this, Spark);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.path = props.path;\n _this.shapes = props.shapes;\n _this.size = props.size;\n _this.placement = props.placement;\n _this.goo = props.goo;\n _this.color = props.color;\n _this.gene = props.gene;\n _this.padding = props.padding;\n _this.maxHeight = props.maxHeight;\n return _this;\n }\n\n Spark.prototype.render = function render() {\n var _this2 = this;\n\n var shapeComponents = \"\";\n var maxPV = 0,\n minPV = 1.1,\n maxP = void 0,\n minP = void 0,\n dist = void 0;\n var points = \"\";\n var total = 0;\n\n for (var i = 0; i < this.shapes.length; i++) {\n total += this.shapes[i].value;\n }\n\n if (this.gene.object_size !== Gene.object_size.WIN_LOSS) {\n this.shapes.map(function (item, i) {\n dist = _this2.path[i].dist > _this2.maxHeight ? _this2.maxHeight - 6 : _this2.path[i].dist;\n var p = Path.orthogonalCenterPoint(_this2.path[i].a, _this2.path[i].b, dist * item.value - dist / 2);\n\n if (item.value < minPV) {\n minP = p;\n minPV = item.value;\n }\n\n if (item.value >= maxPV) {\n maxP = p;\n maxPV = item.value;\n }\n\n var s = i == 0 ? \"M\" : \"L\";\n points += s + p.x + \" \" + p.y;\n });\n return React.createElement('g', null, React.createElement('path', {\n d: points,\n strokeWidth: '2',\n fill: 'none',\n stroke: Color.getColor(total / this.shapes.length, this.gene.color)\n }), React.createElement('circle', {\n cx: maxP.x,\n cy: maxP.y,\n fill: 'chartreuse',\n r: '3',\n key: 'max'\n }), React.createElement('circle', {\n cx: minP.x,\n cy: minP.y,\n fill: 'red',\n r: '3',\n key: 'min'\n }));\n } else {\n shapeComponents = this.shapes.map(function (item, i) {\n var center = Path.centerPoint(_this2.path[i].a, _this2.path[i].b);\n var minimum = 0;\n var max = _this2.path[i].dist;\n return React.createElement('g', {\n key: \"square\" + i\n }, React.createElement(Square, {\n x: center.x,\n y: item.value >= total / _this2.shapes.length ? center.y : center.y + max,\n pointA: _this2.path[i].a,\n pointB: _this2.path[i].b,\n fullSize: _this2.size,\n padding: _this2.padding,\n size: max,\n key: i,\n fill: item.value >= total / _this2.shapes.length ? \"chartreuse\" : \"red\",\n gene: _this2.gene,\n value: item.value\n }));\n });\n }\n\n return shapeComponents;\n };\n\n return Spark;\n}(Component);\n\nexport default Spark;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport Circle from './Circle';\nimport Square from './Square';\nimport Triangle from './Triangle';\nimport Ellipse from './Ellipse';\nimport Hump from './Hump';\nimport Donut from './Donut';\nimport Spark from './Spark';\nimport React, { Component } from 'react';\nimport Gene from '../Gene';\n\nvar Shape = function (_Component) {\n _inherits(Shape, _Component);\n\n function Shape(props) {\n _classCallCheck(this, Shape);\n\n var components = {\n circle: Circle,\n square: Square,\n triangle: Triangle,\n ellipse: Ellipse,\n hump: Hump,\n donut: Donut,\n spark: Spark\n };\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.props = props;\n\n switch (props.gene.shape) {\n case Gene.shape.CIRCLE:\n _this.component = components.circle;\n break;\n\n case Gene.shape.SQUARE:\n case Gene.shape.BAR:\n _this.component = components.square;\n break;\n\n case Gene.shape.TRIANGLE:\n _this.component = components.triangle;\n break;\n\n case Gene.shape.ELLIPSE:\n _this.component = components.ellipse;\n break;\n\n case Gene.shape.HUMP:\n _this.component = components.hump;\n break;\n\n case Gene.shape.DONUT:\n case Gene.shape.RADIAL:\n case Gene.shape.I_RADIAL:\n case Gene.shape.STAR:\n case Gene.shape.RADIAL_BAR:\n _this.component = components.donut;\n break;\n\n case Gene.shape.SPARKLINE:\n _this.component = components.spark;\n break;\n\n default:\n _this.component = components.circle;\n }\n\n return _this;\n }\n\n Shape.prototype.render = function render() {\n return React.createElement(this.component, this.props);\n };\n\n return Shape;\n}(Component);\n\nexport default Shape;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Random = function () {\n function Random(seed) {\n _classCallCheck(this, Random);\n\n if (typeof seed === \"number\") this.seed = seed;else this.seed = this.hashString(seed);\n }\n\n Random.prototype.random = function random() {\n var x = Math.sin(this.seed++) * 10000;\n return x - Math.floor(x);\n };\n\n Random.prototype.hashString = function hashString(seed) {\n var hash = 0,\n i,\n chr,\n len;\n if (seed.length === 0) return hash;\n\n for (i = 0, len = seed.length; i < len; i++) {\n chr = seed.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n return hash;\n };\n\n return Random;\n}();\n\nexport default Random;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nimport Gene from './Gene';\n\nvar ErrorHandler = function () {\n function ErrorHandler() {\n _classCallCheck(this, ErrorHandler);\n }\n\n ErrorHandler.checkGene = function checkGene(gene) {\n var warn = [];\n var error = [];\n\n if (gene.filter === Gene.filter.GOO && gene.shape !== Gene.shape.CIRCLE) {\n warn.push(\"\\\"Gene.filter.GOO\\\" filter should only be used in conjunction with \\\"Gene.shape.CIRCLE\\\"\");\n }\n\n if (gene.object_rotaion !== Gene.object_rotation.NONE && gene.shape === Gene.shape.CIRCLE) {\n warn.push(\"\\\"Gene.shape.CIRCLE\\\" should not have a \\\"Gene.object_rotation\\\" applied as it will have no visual effect \");\n }\n\n if ((gene.shape === Gene.shape.DONUT || gene.shape === Gene.shape.RADIAL || gene.shape === Gene.shape.I_RADIAL || gene.shape === Gene.shape.STAR) && gene.path_mode !== Gene.path_mode.RING) {\n error.push(\"\\\"Gene.shape.DONUT\\\", \\\"Gene.shape.RADIAL\\\", \\\"Gene.shape.I_RADIAL\\\" and \\\"Gene.shape.STAR\\\" must only be used in conjuntion with \\\"Gene.path_mode.RING\\\". Please either change the shape or the path mode.\");\n }\n\n if (gene.path_mode === Gene.path_mode.RING && gene.path_grouping !== Gene.path_grouping.NONE) {\n error.push(\"\\\"Gene.path_grouping.DATA_GROUP\\\" must not be used in conjuntion with \\\"Gene.path_mode.RING\\\". Please either change the grouping or the path mode.\");\n }\n\n if (gene.path_grouping === Gene.path_grouping.DATA_GROUP && gene.path_mode !== Gene.path_mode.INLINE) {\n error.push(\"\\\"Gene.path_grouping.DATA_GROUP\\\" must be used in conjuntion with \\\"Gene.path_mode.INLINE\\\". Please either change the grouping or the path mode.\");\n }\n\n for (var i = 0; i < warn.length; i++) {\n console.warn(warn[i]);\n }\n\n for (i = 0; i < error.length; i++) {\n throw new Error(error[i]);\n }\n };\n\n return ErrorHandler;\n}();\n\nexport default ErrorHandler;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\n\nvar SVGFilter = function (_Component) {\n _inherits(SVGFilter, _Component);\n\n function SVGFilter() {\n _classCallCheck(this, SVGFilter);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n SVGFilter.prototype.render = function render() {\n return React.createElement(\"filter\", {\n id: \"goo\",\n colorInterpolationFilters: \"sRGB\"\n }, React.createElement(\"feGaussianBlur\", {\n \"in\": \"SourceGraphic\",\n stdDeviation: \"18\",\n result: \"blur\"\n }), React.createElement(\"feColorMatrix\", {\n \"in\": \"blur\",\n mode: \"matrix\",\n values: \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -8\",\n result: \"cm\"\n }));\n };\n\n return SVGFilter;\n}(Component);\n\nexport default SVGFilter;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nimport React, { Component } from 'react';\nimport Shape from './Shapes/';\nimport Spark from './Shapes/Spark';\nimport Color from './Color';\nimport Path from './Path';\nimport Random from './Random';\nimport _Gene from './Gene';\nimport ErrorHandler from './ErrorHandler';\nimport SVGFilter from './SVGFilter';\n\nvar MURV = function (_Component) {\n _inherits(MURV, _Component);\n\n function MURV(props) {\n _classCallCheck(this, MURV);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.gene = props.gene; // ErrorHandler.checkGene(this.gene);\n\n _this.data = props.config.data.dataset.object.values;\n _this.height = props.config.data.dataset.object.size.height;\n _this.width = props.config.data.dataset.object.size.width;\n _this.size = Math.min(_this.width, _this.height);\n if (_this.gene.path_mode !== Gene.path_mode.RING && _this.gene.path_mode !== Gene.path_mode.CUBE_SPIRAL && _this.gene.path_grouping !== Gene.path_grouping.DATA_GROUP) _this.size = _this.width;\n _this.padding = props.config.data.dataset.object.size.padding;\n _this.random = new Random(props.config.data.dataset.object.name);\n _this.maxPV = 0;\n _this.minPV = 1.1;\n _this.maxP = {};\n _this.minP = {};\n _this.path = new Path({\n size: {\n width: _this.width,\n height: _this.height,\n padding: _this.padding\n },\n dataLength: _this.data.length,\n random: _this.random,\n padding: _this.padding,\n data: _this.data,\n gene: _this.gene\n });\n return _this;\n }\n\n MURV.prototype.renderShapes = function renderShapes(path, shapes, size, placement, goo) {\n var _this2 = this;\n\n var shapeComponents = void 0;\n\n if (this.gene.shape === Gene.shape.SPARKLINE) {\n shapeComponents = React.createElement(Spark, {\n path: path,\n shapes: shapes,\n size: size,\n placement: placement,\n goo: goo,\n gene: this.gene,\n padding: this.padding,\n maxHeight: this.height\n });\n } else {\n shapeComponents = shapes.map(function (item, i) {\n var center = Path.centerPoint(path[i].a, path[i].b);\n console.log(path[i].a, path[i].b, _this2.gene.path_mode);\n var minimum = 0;\n var max = path[i].dist;\n\n if (_this2.gene.path_grouping === _Gene.path_grouping.DATA_GROUP) {\n _this2.groups = _this2.data.reduce(function (acc, curr) {\n if (typeof acc[curr.group] == 'undefined') {\n acc[curr.group] = 1;\n } else {\n acc[curr.group] += 1;\n }\n\n return acc;\n }, {});\n var m = Object.values(_this2.groups).length;\n max = Math.min((_this2.size - _this2.padding * m) / m, max);\n }\n\n return React.createElement(Shape, {\n x: center.x,\n y: center.y,\n pointA: path[i].a,\n pointB: path[i].b,\n fullSize: size,\n range: {\n min: _this2.props.config.data.dataset.object.min,\n max: _this2.props.config.data.dataset.object.max\n },\n padding: _this2.padding,\n size: (max - minimum) * item.value + minimum,\n id: item.key,\n fill: Color.getColor({\n val: item.value,\n type: _this2.gene.color,\n random: _this2.random,\n itemColor: item.color\n }),\n gene: _this2.gene,\n value: item.value,\n avg: item.avg,\n color: item.color,\n key: i,\n index: i,\n random: _this2.random\n });\n });\n }\n\n return React.createElement('g', {\n filter: this.gene.filter === _Gene.filter.GOO ? \"url(#goo)\" : \"\"\n }, shapeComponents);\n };\n\n MURV.prototype.renderColorKey = function renderColorKey(num) {\n if (this.gene.color === _Gene.color.VALUE_DEPENDANT && this.gene.color_key === _Gene.color_key.ON) {\n var width = void 0,\n height = this.size / 40,\n elems = [];\n width = this.size / num;\n this.size -= height;\n this.padding += height / 2;\n\n for (var i = 0; i < num; i++) {\n elems.push(React.createElement('rect', {\n x: width * i,\n y: this.size - height,\n width: width,\n height: height,\n fill: Color.getColor((i + 1) / num, this.gene.color, this.random),\n key: i\n }));\n }\n\n return elems;\n }\n };\n\n MURV.prototype.render = function render() {\n return React.createElement('svg', {\n className: 'icon',\n width: this.width,\n height: this.height\n }, React.createElement(SVGFilter, null), this.renderColorKey(1000), this.renderShapes(this.path.path, this.data, this.size, 1, true));\n };\n\n return MURV;\n}(Component);\n\nexport default MURV;\nexport var Gene = _Gene;","import dataset from './example.json';\n\nexport default{\n data: { dataset }\n}","import React, { Component } from 'react';\nimport MURV, { Gene } from 'murv-component';\nimport Config from '../data/Config';\nimport queryString from 'query-string';\nimport canvg from 'canvg';\nimport image from '../images/watch.png';\n\nclass Renderer extends Component {\n constructor(props) {\n super(props)\n let params = {\n shape: Gene.shape.BAR,\n color: Gene.color.FROM_DATA,\n color_key: Gene.color_key.OFF,\n path_points: Gene.path_points.EVEN,\n path_mode: Gene.path_mode.INLINE,\n path_rotation: Gene.path_rotation.NONE,\n path_grouping: Gene.path_grouping.NONE,\n object_rotation: Gene.object_rotation.NONE,\n object_size: Gene.object_size.FULL,\n filter: Gene.filter.OFF,\n debugging: Gene.debugging.OFF\n }\n this.gene = new Gene(params);\n }\n\n componentDidMount() {\n const values = queryString.parse(this.props.location.search)\n for (let index = 0; index < Object.keys(values).length; index++) {\n const key = Object.keys(values)[index];\n let value;\n if (!isNaN(key)) {\n value = parseInt(values[key]);\n this.gene[key] = value\n } else {\n value = values[key]\n this.gene[key] = Gene[key][value.toUpperCase()]\n }\n }\n this.setState({\n gene: this.gene,\n })\n }\n\n componentDidUpdate() {\n const svg = document.querySelector('.renderer svg');\n const canvas = document.createElement(\"canvas\");\n const div = document.createElement(\"div\");\n canvas.width = svg.clientWidth;\n canvas.height = svg.clientHeight;\n svg.parentNode.insertBefore(canvas, svg);\n svg.parentNode.removeChild(svg);\n div.appendChild(svg);\n canvg(canvas, div.innerHTML);\n var dataURL = canvas.toDataURL();\n\n window.webViewBridge.send('handleDataReceived', dataURL.split(',')[1]);\n }\n\n render() {\n return (\n
\n {this.state === null ? \"\" : (\n
\n \n
\n )\n }\n
\n )\n }\n}\n\nexport default Renderer;\n\n\n\nvar promiseChain = Promise.resolve();\nvar callbacks = {};\nvar init = function () {\n const guid = function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n return s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + s4() + s4();\n }\n window.webViewBridge = {\n /**\n * send message to the React-Native WebView onMessage handler\n * @param targetFunc - name of the function to invoke on the React-Native side\n * @param data - data to pass\n * @param success - success callback\n * @param error - error callback\n */\n send: function (targetFunc, data, success, error) {\n var msgObj = {\n targetFunc: targetFunc,\n data: data || {}\n };\n if (success || error) {\n msgObj.msgId = guid();\n }\n var msg = JSON.stringify(msgObj);\n promiseChain = promiseChain.then(function () {\n return new Promise(function (resolve, reject) {\n console.log(\"sending message \" + msgObj.targetFunc);\n if (msgObj.msgId) {\n callbacks[msgObj.msgId] = {\n onsuccess: success,\n onerror: error\n };\n }\n window.ReactNativeWebView.postMessage(msg);\n resolve();\n })\n }).catch(function (e) {\n console.error('rnBridge send failed ' + e.message);\n });\n },\n };\n window.addEventListener('message', function (e) {\n console.log(\"message received from react native\");\n var message;\n try {\n message = JSON.parse(e.data)\n }\n catch (err) {\n console.error(\"failed to parse message from react-native \" + err);\n return;\n }\n //trigger callback\n if (message.args && callbacks[message.msgId]) {\n if (message.isSuccessfull) {\n callbacks[message.msgId].onsuccess.apply(null, message.args);\n }\n else {\n callbacks[message.msgId].onerror.apply(null, message.args);\n }\n delete callbacks[message.msgId];\n }\n });\n};\ninit();\n\nconst divStyle = {\n width: \"385px\",\n height: \"400px\",\n backgroundImage: `url(${image})`,\n backgroundSize: \"auto 550px\",\n padding: \"125px 55px 35px 8px\",\n backgroundRepeat: \"no-repeat\",\n margin: \"0 auto\"\n}","import React from 'react';\nimport logo from './logo.svg';\nimport Renderer from './components/Renderer';\nimport './App.css';\nimport {\n BrowserRouter,\n Route,\n NavLink\n} from 'react-router-dom'\n\nfunction App() {\n return (\n
\n \n } />\n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file