{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-tesselate/dist/cjs/index.cjs","../../index.ts"],"names":["i"],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-tesselate/dist/cjs/index.cjs","sourcesContent":[null,"import {\n  Feature,\n  FeatureCollection,\n  MultiPolygon,\n  Polygon,\n  Position,\n} from \"geojson\";\nimport earcut from \"earcut\";\nimport { polygon } from \"@turf/helpers\";\n\n/**\n * Tesselates a polygon or multipolygon into a collection of triangle polygons\n * using [earcut](https://github.com/mapbox/earcut).\n *\n * @function\n * @param {Feature<Polygon|MultiPolygon>} poly the polygon to tesselate\n * @returns {FeatureCollection<Polygon>} collection of polygon tesselations\n * @example\n * const poly = turf.polygon([[[11, 0], [22, 4], [31, 0], [31, 11], [21, 15], [11, 11], [11, 0]]]);\n * const triangles = turf.tesselate(poly);\n *\n * //addToMap\n * const addToMap = [poly, triangles]\n */\nfunction tesselate(\n  poly: Feature<Polygon | MultiPolygon>\n): FeatureCollection<Polygon> {\n  if (\n    !poly.geometry ||\n    (poly.geometry.type !== \"Polygon\" && poly.geometry.type !== \"MultiPolygon\")\n  ) {\n    throw new Error(\"input must be a Polygon or MultiPolygon\");\n  }\n\n  const fc: FeatureCollection<Polygon> = {\n    type: \"FeatureCollection\",\n    features: [],\n  };\n\n  if (poly.geometry.type === \"Polygon\") {\n    fc.features = processPolygon(poly.geometry.coordinates);\n  } else {\n    poly.geometry.coordinates.forEach(function (coordinates) {\n      fc.features = fc.features.concat(processPolygon(coordinates));\n    });\n  }\n\n  return fc;\n}\n\nfunction processPolygon(coordinates: Position[][]) {\n  const data = flattenCoords(coordinates);\n  // coordinates are normalized to 3 dimensions by passing through original elevation value, or padding with undefined\n  const dim = 3;\n  const result = earcut(data.vertices, data.holes, dim);\n\n  const features: Feature<Polygon>[] = [];\n  const vertices: Position[] = [];\n\n  result.forEach(function (vert: any, i: number) {\n    const index = result[i];\n    // if elevation component is included in the original coordinate, include it in the output coordinate\n    if (data.vertices[index * dim + 2] !== undefined) {\n      vertices.push([\n        data.vertices[index * dim],\n        data.vertices[index * dim + 1],\n        data.vertices[index * dim + 2],\n      ]);\n    } else {\n      vertices.push([\n        data.vertices[index * dim],\n        data.vertices[index * dim + 1],\n      ]);\n    }\n  });\n\n  for (var i = 0; i < vertices.length; i += 3) {\n    const coords = vertices.slice(i, i + 3);\n    coords.push(vertices[i]);\n    features.push(polygon([coords]));\n  }\n\n  return features;\n}\n\nfunction flattenCoords(data: Position[][]) {\n  // coordinates are normalized to 3 dimensions by passing through original elevation value, or padding with undefined\n  const dim = 3,\n    result: { vertices: number[]; holes: number[]; dimensions: number } = {\n      vertices: [],\n      holes: [],\n      dimensions: dim,\n    };\n  let holeIndex = 0;\n\n  for (let i = 0; i < data.length; i++) {\n    for (let j = 0; j < data[i].length; j++) {\n      // elevation member is either included, or undefined is put in its place\n      for (let d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n    }\n    if (i > 0) {\n      holeIndex += data[i - 1].length;\n      result.holes.push(holeIndex);\n    }\n  }\n\n  return result;\n}\n\nexport { tesselate };\nexport default tesselate;\n"]}