{"version":3,"file":"d3-path.min.cjs","sources":["../src/path.js"],"sourcesContent":["const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n"],"names":["pi","Math","PI","tau","tauEpsilon","Path","this","_x0","_y0","_x1","_y1","_","path","prototype","constructor","moveTo","x","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","r","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString"],"mappings":"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"}