{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-truncate/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACAA,kCAA0B;AAC1B,wCAAqC;AAyBrC,SAAS,QAAA,CACP,OAAA,EACA,OAAA,EAKG;AAEH,EAAA,QAAA,EAAU,QAAA,GAAA,KAAA,EAAA,QAAA,EAAW,CAAC,CAAA;AACtB,EAAA,GAAA,CAAI,CAAC,+BAAA,OAAgB,CAAA,EAAG,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA;AAC5D,EAAA,IAAI,UAAA,EAAY,OAAA,CAAQ,SAAA;AACxB,EAAA,IAAI,YAAA,EAAc,OAAA,CAAQ,WAAA;AAC1B,EAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,MAAA;AAGrB,EAAA,UAAA,EACE,UAAA,IAAc,KAAA,EAAA,GAAa,UAAA,IAAc,KAAA,GAAQ,KAAA,CAAM,SAAS,EAAA,EAC5D,EAAA,EACA,SAAA;AACN,EAAA,YAAA,EACE,YAAA,IAAgB,KAAA,EAAA,GAAa,YAAA,IAAgB,KAAA,GAAQ,KAAA,CAAM,WAAW,EAAA,EAClE,EAAA,EACA,WAAA;AAGN,EAAA,GAAA,CAAI,CAAC,OAAA,EAAS,MAAM,IAAI,KAAA,CAAM,uBAAuB,CAAA;AACrD,EAAA,GAAA,CAAI,OAAO,UAAA,IAAc,QAAA;AACvB,IAAA,MAAM,IAAI,KAAA,CAAM,8BAA8B,CAAA;AAChD,EAAA,GAAA,CAAI,OAAO,YAAA,IAAgB,QAAA;AACzB,IAAA,MAAM,IAAI,KAAA,CAAM,gCAAgC,CAAA;AAGlD,EAAA,GAAA,CAAI,OAAA,IAAW,MAAA,GAAS,OAAA,IAAW,KAAA,CAAA;AACjC,IAAA,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAE9C,EAAA,IAAI,OAAA,EAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,SAAS,CAAA;AAGnC,EAAA,6BAAA,OAAU,EAAS,QAAA,CAAU,MAAA,EAAQ;AACnC,IAAA,cAAA,CAAe,MAAA,EAAQ,MAAA,EAAQ,WAAY,CAAA;AAAA,EAC7C,CAAC,CAAA;AACD,EAAA,OAAO,OAAA;AACT;AAWA,SAAS,cAAA,CAAe,MAAA,EAAkB,MAAA,EAAgB,WAAA,EAAqB;AAE7E,EAAA,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa,MAAA,CAAO,MAAM,CAAA;AAGzE,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,MAAA,CAAO,MAAA,EAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAA,CAAO,CAAC,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,EAAA,EAAI,MAAM,EAAA,EAAI,MAAA;AAAA,EAC/C;AACA,EAAA,OAAO,MAAA;AACT;AAGA,IAAO,cAAA,EAAQ,QAAA;AD5Df;AACE;AACA;AACF,6DAAC","file":"/home/runner/work/turf/turf/packages/turf-truncate/dist/cjs/index.cjs","sourcesContent":[null,"import { coordEach } from \"@turf/meta\";\nimport { AllGeoJSON, isObject } from \"@turf/helpers\";\n\n/**\n * Takes a GeoJSON Feature or FeatureCollection and truncates the precision of the geometry.\n *\n * @function\n * @param {GeoJSON} geojson any GeoJSON Feature, FeatureCollection, Geometry or GeometryCollection.\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.precision=6] coordinate decimal precision\n * @param {number} [options.coordinates=3] maximum number of coordinates (primarly used to remove z coordinates)\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} layer with truncated geometry\n * @example\n * var point = turf.point([\n *     70.46923055566859,\n *     58.11088890802906,\n *     1508\n * ]);\n * var options = {precision: 3, coordinates: 2};\n * var truncated = turf.truncate(point, options);\n * //=truncated.geometry.coordinates => [70.469, 58.111]\n *\n * //addToMap\n * var addToMap = [truncated];\n */\nfunction truncate<T extends AllGeoJSON>(\n  geojson: T,\n  options?: {\n    precision?: number;\n    coordinates?: number;\n    mutate?: boolean;\n  }\n): T {\n  // Optional parameters\n  options = options ?? {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var precision = options.precision;\n  var coordinates = options.coordinates;\n  var mutate = options.mutate;\n\n  // default params\n  precision =\n    precision === undefined || precision === null || isNaN(precision)\n      ? 6\n      : precision;\n  coordinates =\n    coordinates === undefined || coordinates === null || isNaN(coordinates)\n      ? 3\n      : coordinates;\n\n  // validation\n  if (!geojson) throw new Error(\"<geojson> is required\");\n  if (typeof precision !== \"number\")\n    throw new Error(\"<precision> must be a number\");\n  if (typeof coordinates !== \"number\")\n    throw new Error(\"<coordinates> must be a number\");\n\n  // prevent input mutation\n  if (mutate === false || mutate === undefined)\n    geojson = JSON.parse(JSON.stringify(geojson));\n\n  var factor = Math.pow(10, precision);\n\n  // Truncate Coordinates\n  coordEach(geojson, function (coords) {\n    truncateCoords(coords, factor, coordinates!);\n  });\n  return geojson;\n}\n\n/**\n * Truncate Coordinates - Mutates coordinates in place\n *\n * @private\n * @param {Array<any>} coords Geometry Coordinates\n * @param {number} factor rounding factor for coordinate decimal precision\n * @param {number} coordinates maximum number of coordinates (primarly used to remove z coordinates)\n * @returns {Array<any>} mutated coordinates\n */\nfunction truncateCoords(coords: number[], factor: number, coordinates: number) {\n  // Remove extra coordinates (usually elevation coordinates and more)\n  if (coords.length > coordinates) coords.splice(coordinates, coords.length);\n\n  // Truncate coordinate decimals\n  for (var i = 0; i < coords.length; i++) {\n    coords[i] = Math.round(coords[i] * factor) / factor;\n  }\n  return coords;\n}\n\nexport { truncate };\nexport default truncate;\n"]}