{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-transform-rotate/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACCA,0CAAyB;AACzB,mDAA6B;AAC7B,qDAA8B;AAC9B,2DAAiC;AACjC,oCAAsB;AACtB,kCAA0B;AAC1B,4CAA0B;AAC1B,wCAAgC;AAqBhC,SAAS,eAAA,CACP,OAAA,EACA,KAAA,EACA,OAAA,EAIG;AAEH,EAAA,QAAA,EAAU,QAAA,GAAW,CAAC,CAAA;AACtB,EAAA,GAAA,CAAI,CAAC,+BAAA,OAAgB,CAAA,EAAG,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA;AAC5D,EAAA,MAAM,MAAA,EAAQ,OAAA,CAAQ,KAAA;AACtB,EAAA,MAAM,OAAA,EAAS,OAAA,CAAQ,MAAA;AAGvB,EAAA,GAAA,CAAI,CAAC,OAAA,EAAS,MAAM,IAAI,KAAA,CAAM,qBAAqB,CAAA;AACnD,EAAA,GAAA,CAAI,MAAA,IAAU,KAAA,EAAA,GAAa,MAAA,IAAU,KAAA,GAAQ,KAAA,CAAM,KAAK,CAAA;AACtD,IAAA,MAAM,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAGrC,EAAA,GAAA,CAAI,MAAA,IAAU,CAAA,EAAG,OAAO,OAAA;AAGxB,EAAA,MAAM,WAAA,EAAa,MAAA,GAAA,KAAA,EAAA,MAAA,EAAS,gCAAA,OAAgB,CAAA;AAG5C,EAAA,GAAA,CAAI,OAAA,IAAW,MAAA,GAAS,OAAA,IAAW,KAAA,CAAA,EAAW,QAAA,EAAU,0BAAA,OAAa,CAAA;AAGrE,EAAA,6BAAA,OAAU,EAAS,QAAA,CAAU,WAAA,EAAa;AACxC,IAAA,MAAM,aAAA,EAAe,wCAAA,UAAa,EAAY,WAAW,CAAA;AACzD,IAAA,MAAM,WAAA,EAAa,aAAA,EAAe,KAAA;AAClC,IAAA,MAAM,SAAA,EAAW,0CAAA,UAAc,EAAY,WAAW,CAAA;AACtD,IAAA,MAAM,UAAA,EAAY,kCAAA;AAAA,MAChB,gDAAA,UAAiB,EAAY,QAAA,EAAU,UAAU;AAAA,IACnD,CAAA;AACA,IAAA,WAAA,CAAY,CAAC,EAAA,EAAI,SAAA,CAAU,CAAC,CAAA;AAC5B,IAAA,WAAA,CAAY,CAAC,EAAA,EAAI,SAAA,CAAU,CAAC,CAAA;AAAA,EAC9B,CAAC,CAAA;AACD,EAAA,OAAO,OAAA;AACT;AAGA,IAAO,8BAAA,EAAQ,eAAA;ADvCf;AACE;AACA;AACF,2FAAC","file":"/home/runner/work/turf/turf/packages/turf-transform-rotate/dist/cjs/index.cjs","sourcesContent":[null,"import { GeoJSON, GeometryCollection } from \"geojson\";\nimport { centroid } from \"@turf/centroid\";\nimport { rhumbBearing } from \"@turf/rhumb-bearing\";\nimport { rhumbDistance } from \"@turf/rhumb-distance\";\nimport { rhumbDestination } from \"@turf/rhumb-destination\";\nimport { clone } from \"@turf/clone\";\nimport { coordEach } from \"@turf/meta\";\nimport { getCoords } from \"@turf/invariant\";\nimport { isObject, Coord } from \"@turf/helpers\";\n\n/**\n * Rotates any geojson Feature or Geometry of a specified angle, around its `centroid` or a given `pivot` point.\n *\n * @function\n * @param {GeoJSON} geojson object to be rotated\n * @param {number} angle of rotation in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {Coord} [options.pivot='centroid'] point around which the rotation will be performed\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the rotated GeoJSON feature\n * @example\n * const poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * const options = {pivot: [0, 25]};\n * const rotatedPoly = turf.transformRotate(poly, 10, options);\n *\n * //addToMap\n * const addToMap = [poly, rotatedPoly];\n * rotatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformRotate(\n geojson: T,\n angle: number,\n options?: {\n pivot?: Coord;\n mutate?: boolean;\n }\n): T {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const pivot = options.pivot;\n const mutate = options.mutate;\n\n // Input validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (angle === undefined || angle === null || isNaN(angle))\n throw new Error(\"angle is required\");\n\n // Shortcut no-rotation\n if (angle === 0) return geojson;\n\n // Use centroid of GeoJSON if pivot is not provided\n const pivotCoord = pivot ?? centroid(geojson);\n\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = clone(geojson);\n\n // Rotate each coordinate\n coordEach(geojson, function (pointCoords) {\n const initialAngle = rhumbBearing(pivotCoord, pointCoords);\n const finalAngle = initialAngle + angle;\n const distance = rhumbDistance(pivotCoord, pointCoords);\n const newCoords = getCoords(\n rhumbDestination(pivotCoord, distance, finalAngle)\n );\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n });\n return geojson;\n}\n\nexport { transformRotate };\nexport default transformRotate;\n"]}