{
  "version": 3,
  "sources": ["../src/applyTransforms.ts"],
  "sourcesContent": ["/**\n * Apply the transforms to the polyline.\n *\n * @param polyline the polyline\n * @param transforms the transforms array\n * @returns the transformed polyline\n */\n\nimport type { PointTuple, Transform } from './types'\n\ntype Point = PointTuple\n\nexport default function applyTransforms(\n  polyline: Point[],\n  transforms?: Transform[],\n): Point[] {\n  if (!transforms) {\n    return polyline\n  }\n\n  let result = polyline\n  for (const transform of transforms) {\n    result = result.map((p) => {\n      // Use a copy to avoid side effects\n      let p2: Point = [p[0], p[1]]\n      if (transform.scaleX) {\n        p2[0] = p2[0] * transform.scaleX\n      }\n      if (transform.scaleY) {\n        p2[1] = p2[1] * transform.scaleY\n      }\n      if (transform.rotation) {\n        const angle = (transform.rotation / 180) * Math.PI\n        p2 = [\n          p2[0] * Math.cos(angle) - p2[1] * Math.sin(angle),\n          p2[1] * Math.cos(angle) + p2[0] * Math.sin(angle),\n        ]\n      }\n      if (transform.x) {\n        p2[0] = p2[0] + transform.x\n      }\n      if (transform.y) {\n        p2[1] = p2[1] + transform.y\n      }\n      // Observed once in a sample DXF - some cad applications\n      // use negative extruxion Z for flipping\n      if (transform.extrusionZ === -1) {\n        p2[0] = -p2[0]\n      }\n      return p2\n    })\n  }\n  return result\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYe,SAAR,gBACL,UACA,YACS;AACT,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,MAAI,SAAS;AACb,aAAW,aAAa,YAAY;AAClC,aAAS,OAAO,IAAI,CAAC,MAAM;AAEzB,UAAI,KAAY,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3B,UAAI,UAAU,QAAQ;AACpB,WAAG,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU;AAAA,MAC5B;AACA,UAAI,UAAU,QAAQ;AACpB,WAAG,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU;AAAA,MAC5B;AACA,UAAI,UAAU,UAAU;AACtB,cAAM,QAAS,UAAU,WAAW,MAAO,KAAK;AAChD,aAAK;AAAA,UACH,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK;AAAA,UAChD,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK;AAAA,QAClD;AAAA,MACF;AACA,UAAI,UAAU,GAAG;AACf,WAAG,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU;AAAA,MAC5B;AACA,UAAI,UAAU,GAAG;AACf,WAAG,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU;AAAA,MAC5B;AAGA,UAAI,UAAU,eAAe,IAAI;AAC/B,WAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,SAAO;AACT;",
  "names": []
}
