{"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,sBAAA,EAAQ,QAAA;AD5Df;AACE;AACA;AACF,qEAAC","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(\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(\" is required\");\n if (typeof precision !== \"number\")\n throw new Error(\" must be a number\");\n if (typeof coordinates !== \"number\")\n throw new Error(\" 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} 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} 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"]}