{"version":3,"sources":["../../index.ts"],"sourcesContent":["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} poly Feature to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @returns {FeatureCollection|Feature} 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,\n options: { properties?: any } = {}\n):\n | Feature\n | FeatureCollection {\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,\n options: { properties?: any } = {}\n): Feature {\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,\n options: { properties?: P } = {}\n): FeatureCollection {\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> = [];\n coords.forEach((coord) => {\n lines.push(coordsToLine(coord, properties));\n });\n return featureCollection(lines);\n}\n\n/**\n * @private\n */\nfunction coordsToLine

(\n coords: number[][][],\n properties: P\n): Feature {\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"],"mappings":";AAAA,SAAS,mBAAmB,YAAY,uBAAuB;AAU/D,SAAS,eAAe;AAmBxB,SAAS,cAIP,MACA,UAAgC,CAAC,GAGoB;AACrD,QAAM,OAAY,QAAQ,IAAI;AAC9B,MAAI,CAAC,QAAQ,cAAc,KAAK,SAAS,WAAW;AAClD,YAAQ,aAAa,KAAK;AAAA,EAC5B;AACA,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,oBAAoB,MAAM,OAAO;AAAA,IAC1C,KAAK;AACH,aAAO,mBAAmB,MAAM,OAAO;AAAA,IACzC;AACE,YAAM,IAAI,MAAM,cAAc;AAAA,EAClC;AACF;AAKA,SAAS,oBAIP,MACA,UAAgC,CAAC,GACS;AAC1C,QAAM,OAAO,QAAQ,IAAI;AACzB,QAAM,SAAgB,KAAK;AAC3B,QAAM,aAAkB,QAAQ,aAC5B,QAAQ,aACR,KAAK,SAAS,YACZ,KAAK,aACL,CAAC;AAEP,SAAO,aAAa,QAAQ,UAAU;AACxC;AAKA,SAAS,mBAIP,WACA,UAA8B,CAAC,GACqB;AACpD,QAAM,OAAO,QAAQ,SAAS;AAC9B,QAAM,SAAgB,KAAK;AAC3B,QAAM,aAAkB,QAAQ,aAC5B,QAAQ,aACR,UAAU,SAAS,YACjB,UAAU,aACV,CAAC;AAEP,QAAM,QAAyD,CAAC;AAChE,SAAO,QAAQ,CAAC,UAAU;AACxB,UAAM,KAAK,aAAa,OAAO,UAAU,CAAC;AAAA,EAC5C,CAAC;AACD,SAAO,kBAAkB,KAAK;AAChC;AAKA,SAAS,aACP,QACA,YAC0C;AAC1C,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO,gBAAgB,QAAQ,UAAU;AAAA,EAC3C;AACA,SAAO,WAAW,OAAO,CAAC,GAAG,UAAU;AACzC;AAGA,IAAO,+BAAQ;","names":[]}