{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-point-grid/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACSA,qDAAwC;AACxC,0CAAyB;AACzB,wCAAgD;AAuBhD,SAAS,SAAA,CACP,IAAA,EACA,QAAA,EACA,QAAA,EAII,CAAC,CAAA,EACwB;AAE7B,EAAA,GAAA,CAAI,OAAA,CAAQ,KAAA,GAAQ,CAAC,OAAA,CAAQ,KAAA,EAAO,OAAA,CAAQ,MAAA,EAAQ,YAAA;AAGpD,EAAA,IAAI,QAAA,EAAU,CAAC,CAAA;AAUf,EAAA,IAAI,KAAA,EAAO,IAAA,CAAK,CAAC,CAAA;AACjB,EAAA,IAAI,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA;AAClB,EAAA,IAAI,KAAA,EAAO,IAAA,CAAK,CAAC,CAAA;AACjB,EAAA,IAAI,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA;AAElB,EAAA,IAAI,UAAA,EAAY,SAAA,EAAW,gCAAA,CAAU,IAAA,EAAM,KAAK,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAA,EAAG,OAAO,CAAA;AACzE,EAAA,IAAI,UAAA,EAAY,UAAA,EAAA,CAAa,KAAA,EAAO,IAAA,CAAA;AACpC,EAAA,IAAI,UAAA,EAAY,SAAA,EAAW,gCAAA,CAAU,IAAA,EAAM,KAAK,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAA,EAAG,OAAO,CAAA;AACzE,EAAA,IAAI,WAAA,EAAa,UAAA,EAAA,CAAa,MAAA,EAAQ,KAAA,CAAA;AAEtC,EAAA,IAAI,UAAA,EAAY,KAAA,EAAO,IAAA;AACvB,EAAA,IAAI,WAAA,EAAa,MAAA,EAAQ,KAAA;AACzB,EAAA,IAAI,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,UAAA,EAAY,SAAS,CAAA;AAC9C,EAAA,IAAI,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,WAAA,EAAa,UAAU,CAAA;AAG7C,EAAA,IAAI,OAAA,EAAA,CAAU,UAAA,EAAY,QAAA,EAAU,SAAA,EAAA,EAAa,CAAA;AACjD,EAAA,IAAI,OAAA,EAAA,CAAU,WAAA,EAAa,KAAA,EAAO,UAAA,EAAA,EAAc,CAAA;AAEhD,EAAA,IAAI,SAAA,EAAW,KAAA,EAAO,MAAA;AACtB,EAAA,MAAA,CAAO,SAAA,GAAY,IAAA,EAAM;AACvB,IAAA,IAAI,SAAA,EAAW,MAAA,EAAQ,MAAA;AACvB,IAAA,MAAA,CAAO,SAAA,GAAY,KAAA,EAAO;AACxB,MAAA,IAAI,OAAA,EAAS,4BAAA,CAAO,QAAA,EAAU,QAAQ,CAAA,EAAG,OAAA,CAAQ,UAAU,CAAA;AAC3D,MAAA,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM;AAChB,QAAA,GAAA,CAAI,0CAAA,MAAO,EAAQ,OAAA,CAAQ,IAAI,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,MACvD,EAAA,KAAO;AACL,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,MACrB;AACA,MAAA,SAAA,GAAY,UAAA;AAAA,IACd;AACA,IAAA,SAAA,GAAY,SAAA;AAAA,EACd;AAEA,EAAA,OAAO,wCAAA,OAAyB,CAAA;AAClC;AAGA,IAAO,wBAAA,EAAQ,SAAA;ADzDf;AACE;AACA;AACF,yEAAC","file":"/home/runner/work/turf/turf/packages/turf-point-grid/dist/cjs/index.cjs","sourcesContent":[null,"import {\n  BBox,\n  Feature,\n  Polygon,\n  MultiPolygon,\n  FeatureCollection,\n  Point,\n  GeoJsonProperties,\n} from \"geojson\";\nimport { booleanWithin as within } from \"@turf/boolean-within\";\nimport { distance } from \"@turf/distance\";\nimport { point, featureCollection, Units } from \"@turf/helpers\";\n\n/**\n * Creates a grid of points\n *\n * @function\n * @param {BBox} bbox extent of grid in [minX, minY, maxX, maxY] order\n * @param {number} cellSide the distance between points\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units='kilometers'] the units of the cellSide value.  Supports all valid Turf {@link https://github.com/Turfjs/turf/blob/master/packages/turf-helpers/README_UNITS.md Units}\n * @param {Feature<Polygon|MultiPolygon>} [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<Point>} grid of points\n * @example\n * var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n * var cellSide = 3;\n * var options = {units: 'miles'};\n *\n * var grid = turf.pointGrid(extent, cellSide, options);\n *\n * //addToMap\n * var addToMap = [grid];\n */\nfunction pointGrid<P extends GeoJsonProperties = GeoJsonProperties>(\n  bbox: BBox,\n  cellSide: number,\n  options: {\n    units?: Units;\n    mask?: Feature<Polygon | MultiPolygon>;\n    properties?: P;\n  } = {}\n): FeatureCollection<Point, P> {\n  // Default parameters\n  if (options.mask && !options.units) options.units = \"kilometers\";\n\n  // Containers\n  var results = [];\n\n  // Typescript handles the Type Validation\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  var west = bbox[0];\n  var south = bbox[1];\n  var east = bbox[2];\n  var north = bbox[3];\n\n  var xFraction = cellSide / distance([west, south], [east, south], options);\n  var cellWidth = xFraction * (east - west);\n  var yFraction = cellSide / distance([west, south], [west, north], options);\n  var cellHeight = yFraction * (north - south);\n\n  var bboxWidth = east - west;\n  var bboxHeight = north - south;\n  var columns = Math.floor(bboxWidth / cellWidth);\n  var rows = Math.floor(bboxHeight / cellHeight);\n\n  // adjust origin of the grid\n  var deltaX = (bboxWidth - columns * cellWidth) / 2;\n  var deltaY = (bboxHeight - rows * cellHeight) / 2;\n\n  var currentX = west + deltaX;\n  while (currentX <= east) {\n    var currentY = south + deltaY;\n    while (currentY <= north) {\n      var cellPt = point([currentX, currentY], options.properties);\n      if (options.mask) {\n        if (within(cellPt, options.mask)) results.push(cellPt);\n      } else {\n        results.push(cellPt);\n      }\n      currentY += cellHeight;\n    }\n    currentX += cellWidth;\n  }\n\n  return featureCollection(results);\n}\n\nexport { pointGrid };\nexport default pointGrid;\n"]}