{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-sector/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACCA,sCAAuB;AACvB,yCAAwB;AACxB,kCAA0B;AAC1B,wCAAgD;AAChD,4CAA0B;AA2B1B,SAAS,MAAA,CACP,MAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,EACA,QAAA,EAII,CAAC,CAAA,EACa;AAElB,EAAA,QAAA,EAAU,QAAA,GAAW,CAAC,CAAA;AACtB,EAAA,GAAA,CAAI,CAAC,+BAAA,OAAgB,CAAA,EAAG,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA;AAE5D,EAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,UAAA;AAG3B,EAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA;AACjD,EAAA,GAAA,CAAI,SAAA,IAAa,KAAA,EAAA,GAAa,SAAA,IAAa,IAAA;AACzC,IAAA,MAAM,IAAI,KAAA,CAAM,sBAAsB,CAAA;AACxC,EAAA,GAAA,CAAI,SAAA,IAAa,KAAA,EAAA,GAAa,SAAA,IAAa,IAAA;AACzC,IAAA,MAAM,IAAI,KAAA,CAAM,sBAAsB,CAAA;AACxC,EAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA;AACjD,EAAA,GAAA,CAAI,OAAO,QAAA,IAAY,QAAA,EAAU,MAAM,IAAI,KAAA,CAAM,2BAA2B,CAAA;AAE5E,EAAA,GAAA,CAAI,iBAAA,CAAkB,QAAQ,EAAA,IAAM,iBAAA,CAAkB,QAAQ,CAAA,EAAG;AAC/D,IAAA,OAAO,4BAAA,MAAO,EAAQ,MAAA,EAAQ,OAAO,CAAA;AAAA,EACvC;AACA,EAAA,MAAM,OAAA,EAAS,kCAAA,MAAgB,CAAA;AAC/B,EAAA,MAAM,IAAA,EAAM,8BAAA,MAAQ,EAAQ,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA;AAC/D,EAAA,MAAM,YAAA,EAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7B,EAAA,6BAAA,GAAU,EAAK,QAAA,CAAU,aAAA,EAAe;AACtC,IAAA,WAAA,CAAY,CAAC,CAAA,CAAE,IAAA,CAAK,aAAa,CAAA;AAAA,EACnC,CAAC,CAAA;AACD,EAAA,WAAA,CAAY,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAE1B,EAAA,OAAO,8BAAA,WAAQ,EAAa,UAAU,CAAA;AACxC;AAUA,SAAS,iBAAA,CAAkB,KAAA,EAAe;AACxC,EAAA,IAAI,KAAA,EAAO,MAAA,EAAQ,GAAA;AACnB,EAAA,GAAA,CAAI,KAAA,EAAO,CAAA,EAAG;AACZ,IAAA,KAAA,GAAQ,GAAA;AAAA,EACV;AACA,EAAA,OAAO,IAAA;AACT;AAGA,IAAO,oBAAA,EAAQ,MAAA;ADpDf;AACE;AACA;AACF,+DAAC","file":"/home/runner/work/turf/turf/packages/turf-sector/dist/cjs/index.cjs","sourcesContent":[null,"import { Feature, Polygon, GeoJsonProperties } from \"geojson\";\nimport { circle } from \"@turf/circle\";\nimport { lineArc } from \"@turf/line-arc\";\nimport { coordEach } from \"@turf/meta\";\nimport { Units, Coord, isObject, polygon } from \"@turf/helpers\";\nimport { getCoords } from \"@turf/invariant\";\n\n/**\n * Creates a circular sector of a circle of given radius and center {@link Point},\n * between (clockwise) bearing1 and bearing2; 0 bearing is North of center point, positive clockwise.\n *\n * @function\n * @param {Coord} center center point\n * @param {number} radius radius of the circle\n * @param {number} bearing1 angle, in decimal degrees, of the first radius of the sector\n * @param {number} bearing2 angle, in decimal degrees, of the second radius of the sector\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {number} [options.steps=64] number of steps\n * @param {Properties} [options.properties={}] Translate properties to Feature Polygon\n * @returns {Feature} sector polygon\n * @example\n * var center = turf.point([-75, 40]);\n * var radius = 5;\n * var bearing1 = 25;\n * var bearing2 = 45;\n *\n * var sector = turf.sector(center, radius, bearing1, bearing2);\n *\n * //addToMap\n * var addToMap = [center, sector];\n */\nfunction sector(\n center: Coord,\n radius: number,\n bearing1: number,\n bearing2: number,\n options: {\n steps?: number;\n units?: Units;\n properties?: GeoJsonProperties;\n } = {}\n): Feature {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n // Most options only for passing through to circle()\n const properties = options.properties;\n\n // validation\n if (!center) throw new Error(\"center is required\");\n if (bearing1 === undefined || bearing1 === null)\n throw new Error(\"bearing1 is required\");\n if (bearing2 === undefined || bearing2 === null)\n throw new Error(\"bearing2 is required\");\n if (!radius) throw new Error(\"radius is required\");\n if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n\n if (convertAngleTo360(bearing1) === convertAngleTo360(bearing2)) {\n return circle(center, radius, options);\n }\n const coords = getCoords(center);\n const arc = lineArc(center, radius, bearing1, bearing2, options);\n const sliceCoords = [[coords]];\n coordEach(arc, function (currentCoords) {\n sliceCoords[0].push(currentCoords);\n });\n sliceCoords[0].push(coords);\n\n return polygon(sliceCoords, properties);\n}\n\n/**\n * Takes any angle in degrees\n * and returns a valid angle between 0-360 degrees\n *\n * @private\n * @param {number} alpha angle between -180-180 degrees\n * @returns {number} angle between 0-360 degrees\n */\nfunction convertAngleTo360(alpha: number) {\n let beta = alpha % 360;\n if (beta < 0) {\n beta += 360;\n }\n return beta;\n}\n\nexport { sector };\nexport default sector;\n"]}