shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$graphics$shared$svg$buildSVGPath = function(global, require, module, exports) {
  function buildSVGPath(path, precision = 2, flatten = !1) {
    if (path.instructions.some(inst => COMPLEX_ACTIONS.has(inst.action))) {
      return buildFromShapePrimitives(path, precision, flatten);
    }
    const parts = [];
    let hasCurrent = !1;
    for (let i = 0; i < path.instructions.length; i++) {
      const inst = path.instructions[i], d = inst.data;
      switch(inst.action) {
        case "moveTo":
          parts.push(`M${pt(d[0], d[1], null, precision)}`);
          hasCurrent = !0;
          break;
        case "lineTo":
          parts.push(`L${pt(d[0], d[1], null, precision)}`);
          hasCurrent = !0;
          break;
        case "quadraticCurveTo":
          parts.push(`Q${pt(d[0], d[1], null, precision)} ${pt(d[2], d[3], null, precision)}`);
          hasCurrent = !0;
          break;
        case "bezierCurveTo":
          parts.push(`C${pt(d[0], d[1], null, precision)} ${pt(d[2], d[3], null, precision)} ${pt(d[4], d[5], null, precision)}`);
          hasCurrent = !0;
          break;
        case "arcToSvg":
          parts.push(`A${n(d[0], precision)} ${n(d[1], precision)} ${n(d[2], precision)} ${d[3]} ${d[4]} ${pt(d[5], d[6], null, precision)}`);
          hasCurrent = !0;
          break;
        case "closePath":
          parts.push("Z");
          hasCurrent = !1;
          break;
        case "arc":
          parts.push(buildArc(d[0], d[1], d[2], d[3], d[4], !!d[5], hasCurrent, precision, flatten));
          hasCurrent = !isFullCircle(d[3], d[4], !!d[5]);
          break;
        case "rect":
          parts.push(buildRect(d[0], d[1], d[2], d[3], d[4], precision));
          hasCurrent = !1;
          break;
        case "circle":
          parts.push(buildEllipseArc(d[0], d[1], d[2], d[2], d[3], precision, flatten));
          hasCurrent = !1;
          break;
        case "ellipse":
          parts.push(buildEllipseArc(d[0], d[1], d[2], d[3], d[4], precision, flatten));
          hasCurrent = !1;
          break;
        case "roundRect":
          parts.push(buildRoundRect(d[0], d[1], d[2], d[3], d[4] ?? 0, d[5], precision, flatten));
          hasCurrent = !1;
          break;
        case "poly":
          parts.push(buildPoly(d[0], d[1] ?? !0, d[2], precision));
          hasCurrent = !(d[1] ?? !0);
          break;
        case "addPath":
          parts.push(buildAddPath(d[0], d[1], precision, flatten)), hasCurrent = !0;
      }
    }
    return parts.join("");
  }
  function isFullCircle(startAngle, endAngle, ccw) {
    startAngle = endAngle - startAngle;
    ccw ? 0 < startAngle && (startAngle -= PI2) : 0 > startAngle && (startAngle += PI2);
    return Math.abs(startAngle) >= PI2 - 1e-6;
  }
  function n(value, precision) {
    return parseFloat(value.toFixed(precision)).toString();
  }
  function pt(x, y, matrix, precision) {
    if (matrix && !matrix.isIdentity()) {
      const ty = matrix.b * x + matrix.d * y + matrix.ty;
      return `${n(matrix.a * x + matrix.c * y + matrix.tx, precision)} ${n(ty, precision)}`;
    }
    return `${n(x, precision)} ${n(y, precision)}`;
  }
  function buildArc(cx, cy, radius, startAngle, endAngle, ccw, hasCurrent, precision, flatten = !1) {
    var sweep = endAngle - startAngle;
    ccw ? 0 < sweep && (sweep -= PI2) : 0 > sweep && (sweep += PI2);
    if (Math.abs(sweep) >= PI2 - 1e-6) {
      return buildEllipseArc(cx, cy, radius, radius, null, precision, flatten);
    }
    if (flatten) {
      ccw = [];
      for (flatten = 0; 32 >= flatten; flatten++) {
        var a = startAngle + flatten / 32 * sweep;
        endAngle = cy + radius * Math.sin(a);
        ccw.push(`${0 === flatten ? hasCurrent ? "L" : "M" : "L"}${n(cx + radius * Math.cos(a), precision)} ${n(endAngle, precision)}`);
      }
      return ccw.join("");
    }
    flatten = cy + radius * Math.sin(startAngle);
    a = cx + radius * Math.cos(endAngle);
    cy += radius * Math.sin(endAngle);
    sweep = Math.abs(sweep) > Math.PI ? 1 : 0;
    ccw = ccw ? 0 : 1;
    return `${hasCurrent ? "L" : "M"}${n(cx + radius * Math.cos(startAngle), precision)} ${n(flatten, precision)}A${n(radius, precision)} ${n(radius, precision)} 0 ${sweep} ${ccw} ${n(a, precision)} ${n(cy, precision)}`;
  }
  function buildEllipseArc(cx, cy, rx, ry, matrixArg, precision, flatten = !1) {
    matrixArg = matrixArg && !matrixArg.isIdentity() ? matrixArg : null;
    if (!matrixArg && !flatten) {
      return `M${n(cx - rx, precision)} ${n(cy, precision)}A${n(rx, precision)} ${n(ry, precision)} 0 1 1 ${n(cx + rx, precision)} ${n(cy, precision)}A${n(rx, precision)} ${n(ry, precision)} 0 1 1 ${n(cx - rx, precision)} ${n(cy, precision)}Z`;
    }
    flatten = [];
    for (let i = 0; 64 > i; i++) {
      const a = i / 64 * PI2;
      flatten.push(`${0 === i ? "M" : "L"}${pt(cx + rx * Math.cos(a), cy + ry * Math.sin(a), matrixArg, precision)}`);
    }
    flatten.push("Z");
    return flatten.join("");
  }
  function buildRect(x, y, w, h, matrix, precision) {
    return `M${pt(x, y, matrix, precision)}L${pt(x + w, y, matrix, precision)}L${pt(x + w, y + h, matrix, precision)}L${pt(x, y + h, matrix, precision)}Z`;
  }
  function buildRoundRect(x, y, w, h, r, matrixArg, precision, flatten = !1) {
    matrixArg = matrixArg && !matrixArg.isIdentity() ? matrixArg : null;
    if (0 >= r) {
      return buildRect(x, y, w, h, matrixArg, precision);
    }
    r = Math.min(r, Math.min(w, h) / 2);
    if (matrixArg || flatten) {
      flatten = [];
      x = [[x + w - r, y + r, -Math.PI / 2], [x + w - r, y + h - r, 0], [x + r, y + h - r, Math.PI / 2], [x + r, y + r, Math.PI]];
      y = !0;
      for (w = 0; w < x.length; w++) {
        const [cx, cy, start] = x[w];
        for (h = 0; 8 >= h; h++) {
          const a = start + h / 8 * (Math.PI / 2);
          flatten.push(`${y ? "M" : "L"}${pt(cx + r * Math.cos(a), cy + r * Math.sin(a), matrixArg, precision)}`);
          y = !1;
        }
      }
      flatten.push("Z");
      return flatten.join("");
    }
    return `M${n(x + r, precision)} ${n(y, precision)}L${n(x + w - r, precision)} ${n(y, precision)}A${n(r, precision)} ${n(r, precision)} 0 0 1 ${n(x + w, precision)} ${n(y + r, precision)}L${n(x + w, precision)} ${n(y + h - r, precision)}A${n(r, precision)} ${n(r, precision)} 0 0 1 ${n(x + w - r, precision)} ${n(y + h, precision)}L${n(x + r, precision)} ${n(y + h, precision)}A${n(r, precision)} ${n(r, precision)} 0 0 1 ${n(x, precision)} ${n(y + h - r, precision)}L${n(x, precision)} ${n(y + r, 
    precision)}A${n(r, precision)} ${n(r, precision)} 0 0 1 ${n(x + r, precision)} ${n(y, precision)}Z`;
  }
  function buildPoly(points, close, matrix, precision) {
    if (0 === points.length) {
      return "";
    }
    const parts = [];
    if ("number" === typeof points[0]) {
      parts.push(`M${pt(points[0], points[1], matrix, precision)}`);
      for (var i = 2; i < points.length; i += 2) {
        parts.push(`L${pt(points[i], points[i + 1], matrix, precision)}`);
      }
    } else {
      for (parts.push(`M${pt(points[0].x, points[0].y, matrix, precision)}`), i = 1; i < points.length; i++) {
        parts.push(`L${pt(points[i].x, points[i].y, matrix, precision)}`);
      }
    }
    close && parts.push("Z");
    return parts.join("");
  }
  function buildAddPath(inner, matrix, precision, flatten) {
    return !matrix || matrix.isIdentity() ? buildSVGPath(inner, precision, flatten) : buildSVGPath(inner.clone(!0).transform(matrix), precision, flatten);
  }
  function buildFromShapePrimitives(path, precision, flatten) {
    var shapePrimitives = path.shapePath.shapePrimitives;
    path = [];
    for (const primitive of shapePrimitives) {
      var shape = primitive.shape;
      shapePrimitives = primitive.transform;
      switch(shape.type) {
        case "polygon":
          path.push(buildPoly(shape.points, shape.closePath, shapePrimitives, precision));
          break;
        case "circle":
          path.push(buildEllipseArc(shape.x, shape.y, shape.radius, shape.radius, shapePrimitives, precision, flatten));
          break;
        case "ellipse":
          path.push(buildEllipseArc(shape.x, shape.y, shape.halfWidth, shape.halfHeight, shapePrimitives, precision, flatten));
          break;
        case "rectangle":
          path.push(buildRect(shape.x, shape.y, shape.width, shape.height, shapePrimitives, precision));
          break;
        case "roundedRectangle":
          path.push(buildRoundRect(shape.x, shape.y, shape.width, shape.height, shape.radius, shapePrimitives, precision, flatten));
      }
    }
    return path.join("");
  }
  const PI2 = 2 * Math.PI, COMPLEX_ACTIONS = new Set("regularPoly roundPoly roundShape filletRect chamferRect arcTo".split(" "));
  exports.buildSVGPath = buildSVGPath;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$graphics$shared$svg$buildSVGPath.js.map
