{"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} poly the polygon to tesselate\n * @returns {FeatureCollection} 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\n): FeatureCollection {\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 = {\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 const dim = 2;\n const result = earcut(data.vertices, data.holes, dim);\n\n const features: Feature[] = [];\n const vertices: Position[] = [];\n\n result.forEach(function (vert: any, i: number) {\n const index = result[i];\n vertices.push([data.vertices[index * dim], data.vertices[index * dim + 1]]);\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 const dim: number = data[0][0].length,\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 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"]}