{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-polygon-to-line/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACAA,wCAA+D;AAU/D,4CAAwB;AAmBxB,SAAS,aAAA,CAIP,IAAA,EACA,QAAA,EAAgC,CAAC,CAAA,EAGoB;AACrD,EAAA,MAAM,KAAA,EAAY,gCAAA,IAAY,CAAA;AAC9B,EAAA,GAAA,CAAI,CAAC,OAAA,CAAQ,WAAA,GAAc,IAAA,CAAK,KAAA,IAAS,SAAA,EAAW;AAClD,IAAA,OAAA,CAAQ,WAAA,EAAa,IAAA,CAAK,UAAA;AAAA,EAC5B;AACA,EAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM;AAAA,IACjB,KAAK,SAAA;AACH,MAAA,OAAO,mBAAA,CAAoB,IAAA,EAAM,OAAO,CAAA;AAAA,IAC1C,KAAK,cAAA;AACH,MAAA,OAAO,kBAAA,CAAmB,IAAA,EAAM,OAAO,CAAA;AAAA,IACzC,OAAA;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,cAAc,CAAA;AAAA,EAClC;AACF;AAKA,SAAS,mBAAA,CAIP,IAAA,EACA,QAAA,EAAgC,CAAC,CAAA,EACS;AAC1C,EAAA,MAAM,KAAA,EAAO,gCAAA,IAAY,CAAA;AACzB,EAAA,MAAM,OAAA,EAAgB,IAAA,CAAK,WAAA;AAC3B,EAAA,MAAM,WAAA,EAAkB,OAAA,CAAQ,WAAA,EAC5B,OAAA,CAAQ,WAAA,EACR,IAAA,CAAK,KAAA,IAAS,UAAA,EACZ,IAAA,CAAK,WAAA,EACL,CAAC,CAAA;AAEP,EAAA,OAAO,YAAA,CAAa,MAAA,EAAQ,UAAU,CAAA;AACxC;AAKA,SAAS,kBAAA,CAIP,SAAA,EACA,QAAA,EAA8B,CAAC,CAAA,EACqB;AACpD,EAAA,MAAM,KAAA,EAAO,gCAAA,SAAiB,CAAA;AAC9B,EAAA,MAAM,OAAA,EAAgB,IAAA,CAAK,WAAA;AAC3B,EAAA,MAAM,WAAA,EAAkB,OAAA,CAAQ,WAAA,EAC5B,OAAA,CAAQ,WAAA,EACR,SAAA,CAAU,KAAA,IAAS,UAAA,EACjB,SAAA,CAAU,WAAA,EACV,CAAC,CAAA;AAEP,EAAA,MAAM,MAAA,EAAyD,CAAC,CAAA;AAChE,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAA,GAAU;AACxB,IAAA,KAAA,CAAM,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,UAAU,CAAC,CAAA;AAAA,EAC5C,CAAC,CAAA;AACD,EAAA,OAAO,wCAAA,KAAuB,CAAA;AAChC;AAKA,SAAS,YAAA,CACP,MAAA,EACA,UAAA,EAC0C;AAC1C,EAAA,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG;AACrB,IAAA,OAAO,sCAAA,MAAgB,EAAQ,UAAU,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,iCAAA,MAAW,CAAO,CAAC,CAAA,EAAG,UAAU,CAAA;AACzC;AAGA,IAAO,cAAA,EAAQ,aAAA;ADxEf;AACE;AACA;AACA;AACA;AACA;AACF,gNAAC","file":"/home/runner/work/turf/turf/packages/turf-polygon-to-line/dist/cjs/index.cjs","sourcesContent":[null,"import { featureCollection, lineString, multiLineString } from \"@turf/helpers\";\nimport {\n  Feature,\n  FeatureCollection,\n  LineString,\n  MultiLineString,\n  MultiPolygon,\n  Polygon,\n  GeoJsonProperties,\n} from \"geojson\";\nimport { getGeom } from \"@turf/invariant\";\n\n/**\n * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a\n * {@link FeatureCollection} of {@link LineString|(Multi)LineString}.\n *\n * @function\n * @param {Feature<Polygon|MultiPolygon>} poly Feature to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @returns {FeatureCollection|Feature<LineString|MultiLinestring>} converted (Multi)Polygon to (Multi)LineString\n * @example\n * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]);\n *\n * var line = turf.polygonToLine(poly);\n *\n * //addToMap\n * var addToMap = [line];\n */\nfunction polygonToLine<\n  G extends Polygon | MultiPolygon,\n  P extends GeoJsonProperties = GeoJsonProperties,\n>(\n  poly: Feature<G, P> | G,\n  options: { properties?: any } = {}\n):\n  | Feature<LineString | MultiLineString, P>\n  | FeatureCollection<LineString | MultiLineString, P> {\n  const geom: any = getGeom(poly);\n  if (!options.properties && poly.type === \"Feature\") {\n    options.properties = poly.properties;\n  }\n  switch (geom.type) {\n    case \"Polygon\":\n      return singlePolygonToLine(geom, options);\n    case \"MultiPolygon\":\n      return multiPolygonToLine(geom, options);\n    default:\n      throw new Error(\"invalid poly\");\n  }\n}\n\n/**\n * @private\n */\nfunction singlePolygonToLine<\n  G extends Polygon,\n  P extends GeoJsonProperties = GeoJsonProperties,\n>(\n  poly: Feature<G, P> | G,\n  options: { properties?: any } = {}\n): Feature<LineString | MultiLineString, P> {\n  const geom = getGeom(poly);\n  const coords: any[] = geom.coordinates;\n  const properties: any = options.properties\n    ? options.properties\n    : poly.type === \"Feature\"\n      ? poly.properties\n      : {};\n\n  return coordsToLine(coords, properties);\n}\n\n/**\n * @private\n */\nfunction multiPolygonToLine<\n  G extends MultiPolygon,\n  P extends GeoJsonProperties = GeoJsonProperties,\n>(\n  multiPoly: Feature<G, P> | G,\n  options: { properties?: P } = {}\n): FeatureCollection<LineString | MultiLineString, P> {\n  const geom = getGeom(multiPoly);\n  const coords: any[] = geom.coordinates;\n  const properties: any = options.properties\n    ? options.properties\n    : multiPoly.type === \"Feature\"\n      ? multiPoly.properties\n      : {};\n\n  const lines: Array<Feature<LineString | MultiLineString, P>> = [];\n  coords.forEach((coord) => {\n    lines.push(coordsToLine(coord, properties));\n  });\n  return featureCollection(lines);\n}\n\n/**\n * @private\n */\nfunction coordsToLine<P extends GeoJsonProperties = GeoJsonProperties>(\n  coords: number[][][],\n  properties: P\n): Feature<LineString | MultiLineString, P> {\n  if (coords.length > 1) {\n    return multiLineString(coords, properties);\n  }\n  return lineString(coords[0], properties);\n}\n\nexport { polygonToLine, coordsToLine, multiPolygonToLine, singlePolygonToLine };\nexport default polygonToLine;\n"]}