JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://d3js.org/d3.v2.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://d3js.org/d3.v2.js?2.9.1"></script>
<script src="bost.ocks.org/mike/simplify/simplify.js"></script>


<svg width="700" height="500">
    <g id="g-1"></g>
</svg>

CSS

path {
    fill: crimson;
    fill-opacity: 0.1;
    stroke: #000; 
}

JavaScript

function path_simplify_r(path, first, last, eps) {
    if (first >= last - 1) return [path[first]];

    var px = path[first][0];
    var py = path[first][1];

    var dx = path[last][0] - px;
    var dy = path[last][1] - py;

    var nn = Math.sqrt(dx*dx + dy*dy);
    var nx = -dy / nn;
    var ny = dx / nn;

    var ii = first;
    var max = -1;

    for (var i = first + 1; i < last; i++) {
        var p = path[i];

        var qx = p[0] - px;
        var qy = p[1] - py;

        var d = Math.abs(qx * nx + qy * ny);
        if (d > max) {
            max = d;
            ii = i;
        }
    }

    if (max < eps) return [path[first]];

    var p1 = path_simplify_r(path, first, ii, eps);
    var p2 = path_simplify_r(path, ii, last, eps);

    return p1.concat(p2);        
}

function path_simplify(path, eps) {
    var p = path_simplify_r(path, 0, path.length - 1, eps);
    return p.concat([path[path.length - 1]]);
}

function path_draw(path, cx, color) {
    cx.strokeStyle = color;
    cx.beginPath();
    cx.moveTo(2*path[0][0], 2*path[0][1]);

    for (var i = 1; i < path.length; i++) {
        var p = path[i];
        cx.lineTo(2*p[0], 2*p[1]);
    }
    cx.stroke();
}

function path_repr(path) {
    var repr = "";
    for (var i = 0; i < path.length; i++) {
        if (i) repr += ", ";
        repr += "(" + path[i][0] + ", " + path[i][1] + ")";
    }
    return repr;
}

function path_from_svg(svg) {
    var pts = svg.split(/[ML]/);
    var path = [];

    console.log(pts.length);
    for (var i = 1; i < pts.length; i++) {
        path.push(pts[i].split(","));
    }

    return path;
}

function svg_to_path(path) {
    return "M" + path.join("L");
}


var points =...