{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-triangle-grid/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACOA,0CAAyB;AACzB,4CAA0B;AAC1B,wCAAkD;AAuBlD,SAAS,YAAA,CACP,IAAA,EACA,QAAA,EACA,QAAA,EAII,CAAC,CAAA,EAC0B;AAE/B,EAAA,IAAI,QAAA,EAAiC,CAAC,CAAA;AAYtC,EAAA,IAAI,UAAA,EACF,SAAA,EAAW,gCAAA,CAAU,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAO,CAAA;AACrE,EAAA,IAAI,UAAA,EAAY,UAAA,EAAA,CAAa,IAAA,CAAK,CAAC,EAAA,EAAI,IAAA,CAAK,CAAC,CAAA,CAAA;AAC7C,EAAA,IAAI,UAAA,EACF,SAAA,EAAW,gCAAA,CAAU,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAO,CAAA;AACrE,EAAA,IAAI,WAAA,EAAa,UAAA,EAAA,CAAa,IAAA,CAAK,CAAC,EAAA,EAAI,IAAA,CAAK,CAAC,CAAA,CAAA;AAE9C,EAAA,IAAI,GAAA,EAAK,CAAA;AACT,EAAA,IAAI,SAAA,EAAW,IAAA,CAAK,CAAC,CAAA;AACrB,EAAA,MAAA,CAAO,SAAA,GAAY,IAAA,CAAK,CAAC,CAAA,EAAG;AAC1B,IAAA,IAAI,GAAA,EAAK,CAAA;AACT,IAAA,IAAI,SAAA,EAAW,IAAA,CAAK,CAAC,CAAA;AACrB,IAAA,MAAA,CAAO,SAAA,GAAY,IAAA,CAAK,CAAC,CAAA,EAAG;AAC1B,MAAA,IAAI,cAAA,EAAgB,IAAA;AACpB,MAAA,IAAI,cAAA,EAAgB,IAAA;AAEpB,MAAA,GAAA,CAAI,GAAA,EAAK,EAAA,IAAM,EAAA,GAAK,GAAA,EAAK,EAAA,IAAM,CAAA,EAAG;AAChC,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,cACnB,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA;AAAA,cAChC,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AAAA,cAC/B,CAAC,QAAA,EAAU,QAAQ;AAAA,YACrB;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AACA,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA;AAAA,cAChC,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAAA,cAC5C,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AAAA,cAC/B,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU;AAAA,YAClC;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AAAA,MACF,EAAA,KAAA,GAAA,CAAW,GAAA,EAAK,EAAA,IAAM,EAAA,GAAK,GAAA,EAAK,EAAA,IAAM,CAAA,EAAG;AACvC,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,cACnB,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAAA,cAC5C,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AAAA,cAC/B,CAAC,QAAA,EAAU,QAAQ;AAAA,YACrB;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AACA,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,cACnB,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA;AAAA,cAChC,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAAA,cAC5C,CAAC,QAAA,EAAU,QAAQ;AAAA,YACrB;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AAAA,MACF,EAAA,KAAA,GAAA,CAAW,GAAA,EAAK,EAAA,IAAM,EAAA,GAAK,GAAA,EAAK,EAAA,IAAM,CAAA,EAAG;AACvC,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,cACnB,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA;AAAA,cAChC,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAAA,cAC5C,CAAC,QAAA,EAAU,QAAQ;AAAA,YACrB;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AACA,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,cACnB,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAAA,cAC5C,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AAAA,cAC/B,CAAC,QAAA,EAAU,QAAQ;AAAA,YACrB;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AAAA,MACF,EAAA,KAAA,GAAA,CAAW,GAAA,EAAK,EAAA,IAAM,EAAA,GAAK,GAAA,EAAK,EAAA,IAAM,CAAA,EAAG;AACvC,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,cACnB,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA;AAAA,cAChC,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AAAA,cAC/B,CAAC,QAAA,EAAU,QAAQ;AAAA,YACrB;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AACA,QAAA,cAAA,EAAgB,8BAAA;AAAA,UACd;AAAA,YACE;AAAA,cACE,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,CAAA;AAAA,cAChC,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAAA,cAC5C,CAAC,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAA;AAAA,cAC/B,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU;AAAA,YAClC;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ;AAAA,QACV,CAAA;AAAA,MACF;AACA,MAAA,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM;AAChB,QAAA,GAAA,CAAI,kCAAA,wCAAU,CAAmB,OAAA,CAAQ,IAAA,EAAM,aAAc,CAAC,CAAC,CAAA;AAC7D,UAAA,OAAA,CAAQ,IAAA,CAAK,aAAc,CAAA;AAC7B,QAAA,GAAA,CAAI,kCAAA,wCAAU,CAAmB,OAAA,CAAQ,IAAA,EAAM,aAAc,CAAC,CAAC,CAAA;AAC7D,UAAA,OAAA,CAAQ,IAAA,CAAK,aAAc,CAAA;AAAA,MAC/B,EAAA,KAAO;AACL,QAAA,OAAA,CAAQ,IAAA,CAAK,aAAc,CAAA;AAC3B,QAAA,OAAA,CAAQ,IAAA,CAAK,aAAc,CAAA;AAAA,MAC7B;AAEA,MAAA,SAAA,GAAY,UAAA;AACZ,MAAA,EAAA,EAAA;AAAA,IACF;AACA,IAAA,EAAA,EAAA;AACA,IAAA,SAAA,GAAY,SAAA;AAAA,EACd;AACA,EAAA,OAAO,wCAAA,OAAyB,CAAA;AAClC;AAGA,IAAO,cAAA,EAAQ,YAAA;ADtDf;AACE;AACA;AACF,qEAAC","file":"/home/runner/work/turf/turf/packages/turf-triangle-grid/dist/cjs/index.cjs","sourcesContent":[null,"import {\n  BBox,\n  Feature,\n  Polygon,\n  FeatureCollection,\n  GeoJsonProperties,\n} from \"geojson\";\nimport { distance } from \"@turf/distance\";\nimport { intersect } from \"@turf/intersect\";\nimport { polygon, featureCollection, Units } from \"@turf/helpers\";\n\n/**\n * Creates a grid of triangular polygons.\n *\n * @function\n * @param {BBox} bbox extent of grid in [minX, minY, maxX, maxY] order\n * @param {number} cellSide dimension of each grid cell.  Two triangles are created in each cell.\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units='kilometers'] used in calculating cellSide.  Supports all valid Turf {@link https://github.com/Turfjs/turf/blob/master/packages/turf-helpers/README_UNITS.md Units}\n * @param {Feature<Polygon>} [options.mask] if passed a Polygon or MultiPolygon, the grid Points will be created only inside it\n * @param {Object} [options.properties={}] passed to each point of the grid\n * @returns {FeatureCollection<Polygon>} grid of polygons\n * @example\n * var bbox = [-95, 30 ,-85, 40];\n * var cellSide = 50;\n * var options = {units: 'miles'};\n *\n * var triangleGrid = turf.triangleGrid(bbox, cellSide, options);\n *\n * //addToMap\n * var addToMap = [triangleGrid];\n */\nfunction triangleGrid<P extends GeoJsonProperties = GeoJsonProperties>(\n  bbox: BBox,\n  cellSide: number,\n  options: {\n    units?: Units;\n    properties?: P;\n    mask?: Feature<Polygon>;\n  } = {}\n): FeatureCollection<Polygon, P> {\n  // Containers\n  var results: Feature<Polygon, P>[] = [];\n\n  // Input Validation is being handled by Typescript\n\n  // if (cellSide === null || cellSide === undefined) throw new Error('cellSide is required');\n  // if (!isNumber(cellSide)) throw new Error('cellSide is invalid');\n  // if (!bbox) throw new Error('bbox is required');\n  // if (!Array.isArray(bbox)) throw new Error('bbox must be array');\n  // if (bbox.length !== 4) throw new Error('bbox must contain 4 numbers');\n  // if (mask && ['Polygon', 'MultiPolygon'].indexOf(getType(mask)) === -1) throw new Error('options.mask must be a (Multi)Polygon');\n\n  // Main\n  var xFraction =\n    cellSide / distance([bbox[0], bbox[1]], [bbox[2], bbox[1]], options);\n  var cellWidth = xFraction * (bbox[2] - bbox[0]);\n  var yFraction =\n    cellSide / distance([bbox[0], bbox[1]], [bbox[0], bbox[3]], options);\n  var cellHeight = yFraction * (bbox[3] - bbox[1]);\n\n  var xi = 0;\n  var currentX = bbox[0];\n  while (currentX <= bbox[2]) {\n    var yi = 0;\n    var currentY = bbox[1];\n    while (currentY <= bbox[3]) {\n      var cellTriangle1 = null;\n      var cellTriangle2 = null;\n\n      if (xi % 2 === 0 && yi % 2 === 0) {\n        cellTriangle1 = polygon(\n          [\n            [\n              [currentX, currentY],\n              [currentX, currentY + cellHeight],\n              [currentX + cellWidth, currentY],\n              [currentX, currentY],\n            ],\n          ],\n          options.properties\n        );\n        cellTriangle2 = polygon(\n          [\n            [\n              [currentX, currentY + cellHeight],\n              [currentX + cellWidth, currentY + cellHeight],\n              [currentX + cellWidth, currentY],\n              [currentX, currentY + cellHeight],\n            ],\n          ],\n          options.properties\n        );\n      } else if (xi % 2 === 0 && yi % 2 === 1) {\n        cellTriangle1 = polygon(\n          [\n            [\n              [currentX, currentY],\n              [currentX + cellWidth, currentY + cellHeight],\n              [currentX + cellWidth, currentY],\n              [currentX, currentY],\n            ],\n          ],\n          options.properties\n        );\n        cellTriangle2 = polygon(\n          [\n            [\n              [currentX, currentY],\n              [currentX, currentY + cellHeight],\n              [currentX + cellWidth, currentY + cellHeight],\n              [currentX, currentY],\n            ],\n          ],\n          options.properties\n        );\n      } else if (yi % 2 === 0 && xi % 2 === 1) {\n        cellTriangle1 = polygon(\n          [\n            [\n              [currentX, currentY],\n              [currentX, currentY + cellHeight],\n              [currentX + cellWidth, currentY + cellHeight],\n              [currentX, currentY],\n            ],\n          ],\n          options.properties\n        );\n        cellTriangle2 = polygon(\n          [\n            [\n              [currentX, currentY],\n              [currentX + cellWidth, currentY + cellHeight],\n              [currentX + cellWidth, currentY],\n              [currentX, currentY],\n            ],\n          ],\n          options.properties\n        );\n      } else if (yi % 2 === 1 && xi % 2 === 1) {\n        cellTriangle1 = polygon(\n          [\n            [\n              [currentX, currentY],\n              [currentX, currentY + cellHeight],\n              [currentX + cellWidth, currentY],\n              [currentX, currentY],\n            ],\n          ],\n          options.properties\n        );\n        cellTriangle2 = polygon(\n          [\n            [\n              [currentX, currentY + cellHeight],\n              [currentX + cellWidth, currentY + cellHeight],\n              [currentX + cellWidth, currentY],\n              [currentX, currentY + cellHeight],\n            ],\n          ],\n          options.properties\n        );\n      }\n      if (options.mask) {\n        if (intersect(featureCollection([options.mask, cellTriangle1!])))\n          results.push(cellTriangle1!);\n        if (intersect(featureCollection([options.mask, cellTriangle2!])))\n          results.push(cellTriangle2!);\n      } else {\n        results.push(cellTriangle1!);\n        results.push(cellTriangle2!);\n      }\n\n      currentY += cellHeight;\n      yi++;\n    }\n    xi++;\n    currentX += cellWidth;\n  }\n  return featureCollection(results);\n}\n\nexport { triangleGrid };\nexport default triangleGrid;\n"]}