{"version":3,"names":["SVG","pt","rect","getPathVertices","p","getAttribute","split","map","ea","m","pos","c","x1","parseFloat","y1","toString","JSON","stringify","x2","y2","setPathVertices","vertices","s","join","setAttribute","resetBounds","svgElement","path","lively","getPosition","bounds","getBBox","v","pathPos","forEach","x","y","setPosition","addPt","setExtent","width","height","childBounds","result","childNodes","r","getBoundingClientRect","b","union"],"sources":["svg.js"],"sourcesContent":["import {pt, rect} from 'src/client/graphics.js';\n\n/*\n * Kitchensink for all SVG manipulation utilities\n */\n\nexport default class SVG {\n  \n   static getPathVertices(p) {\n    return p.getAttribute(\"d\").split(/(?=[A-Za-z] +)/).map( ea => {\n      var m = ea.split(/ +/)\n      var pos = {c: m[0], x1: parseFloat(m[1]), y1: parseFloat(m[2]), toString: function() { return JSON.stringify(this)}}\n      if (m[3]) {\n        pos.x1 = parseFloat(m[3]);\n        pos.y1 = parseFloat(m[4]);\n        pos.x2 = parseFloat(m[1]);\n        pos.y2 = parseFloat(m[2]);\n      }\n      return pos  \n    })\n  }\n  \n  static setPathVertices(p, vertices) {\n    var s = vertices.map(ea => {\n        var s = ea.c  \n        if (typeof ea.x2 !== 'undefined') \n          s +=  \" \" + ea.x2 + \" \" + ea.y2 // first the helper points\n        s += \" \" + ea.x1 + \" \" + ea.y1;\n        return s \n      }).join(\" \")\n    p.setAttribute(\"d\", s)\n    return s\n  }\n  \n  static resetBounds(svgElement, path) {\n    var pos = lively.getPosition(svgElement)\n    var bounds = svgElement.getBBox()\n    var v = this.getPathVertices(path) \n    var pathPos = lively.getPosition(path)\n    v.forEach(ea => {\n      ea.x1 -= bounds.x - pathPos.x\n      ea.y1 -= bounds.y - pathPos.y\n    })\n    lively.setPosition(svgElement, pos.addPt(pt(bounds.x, bounds.y)))\n    this.setPathVertices(path, v)\n    lively.setExtent(svgElement, pt(bounds.width + 1, bounds.height + 1))\n    lively.setPosition(path, pt(0,0))\n\n    // make sure the width is never 0\n\n  }\n  \n  /* \n   * ## Computes the bounds of the children of an svg element\n   * ``\n   * lively.showRect(SVG.childBounds(that.get(\"svg\")))\n   * ``\n   */ \n  static childBounds(svgElement) {\n    var result \n    svgElement.childNodes.forEach(ea => {\n        var r = ea.getBoundingClientRect()   \n        var b = rect(r.x, r.y, r.width, r.height)\n        result = (result || b).union(b)\n    })\n    return result\n  }\n\n}\n\n\n"],"mappings":"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"}