{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-line-to-polygon/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-line-to-polygon/dist/cjs/index.cjs","sourcesContent":[null,"import {\n Feature,\n FeatureCollection,\n MultiLineString,\n LineString,\n GeoJsonProperties,\n BBox,\n Position,\n} from \"geojson\";\nimport { bbox as turfBBox } from \"@turf/bbox\";\nimport { getCoords, getGeom } from \"@turf/invariant\";\nimport { polygon, multiPolygon, lineString } from \"@turf/helpers\";\nimport { clone } from \"@turf/clone\";\n\n/**\n * Converts (Multi)LineString(s) to Polygon(s).\n *\n * @function\n * @param {FeatureCollection|Feature} lines Features to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @param {boolean} [options.autoComplete=true] auto complete linestrings (matches first & last coordinates)\n * @param {boolean} [options.orderCoords=true] sorts linestrings to place outer ring at the first position of the coordinates\n * @param {boolean} [options.mutate=false] mutate the original linestring using autoComplete (matches first & last coordinates)\n * @returns {Feature} converted to Polygons\n * @example\n * var line = turf.lineString([[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]);\n *\n * var polygon = turf.lineToPolygon(line);\n *\n * //addToMap\n * var addToMap = [polygon];\n */\nfunction lineToPolygon(\n lines: Feature | FeatureCollection | G,\n options: {\n properties?: GeoJsonProperties;\n autoComplete?: boolean;\n orderCoords?: boolean;\n mutate?: boolean;\n } = {}\n) {\n // Optional parameters\n var properties = options.properties;\n var autoComplete = options.autoComplete ?? true;\n var orderCoords = options.orderCoords ?? true;\n var mutate = options.mutate ?? false;\n\n if (!mutate) {\n lines = clone(lines);\n }\n\n switch (lines.type) {\n case \"FeatureCollection\":\n var coords: number[][][][] = [];\n lines.features.forEach(function (line) {\n coords.push(\n getCoords(lineStringToPolygon(line, {}, autoComplete, orderCoords))\n );\n });\n return multiPolygon(coords, properties);\n default:\n return lineStringToPolygon(lines, properties, autoComplete, orderCoords);\n }\n}\n\n/**\n * LineString to Polygon\n *\n * @private\n * @param {Feature} line line\n * @param {Object} [properties] translates GeoJSON properties to Feature\n * @param {boolean} [autoComplete=true] auto complete linestrings\n * @param {boolean} [orderCoords=true] sorts linestrings to place outer ring at the first position of the coordinates\n * @returns {Feature} line converted to Polygon\n */\nfunction lineStringToPolygon(\n line: Feature | G,\n properties: GeoJsonProperties | undefined,\n autoComplete: boolean,\n orderCoords: boolean\n) {\n properties = properties\n ? properties\n : line.type === \"Feature\"\n ? line.properties\n : {};\n var geom = getGeom(line);\n var coords: Position[] | Position[][] = geom.coordinates;\n var type = geom.type;\n\n if (!coords.length) throw new Error(\"line must contain coordinates\");\n\n switch (type) {\n case \"LineString\":\n if (autoComplete) coords = autoCompleteCoords(coords as Position[]);\n return polygon([coords as Position[]], properties);\n case \"MultiLineString\":\n var multiCoords: number[][][] = [];\n var largestArea = 0;\n\n (coords as Position[][]).forEach(function (coord) {\n if (autoComplete) coord = autoCompleteCoords(coord);\n\n // Largest LineString to be placed in the first position of the coordinates array\n if (orderCoords) {\n var area = calculateArea(turfBBox(lineString(coord)));\n if (area > largestArea) {\n multiCoords.unshift(coord);\n largestArea = area;\n } else multiCoords.push(coord);\n } else {\n multiCoords.push(coord);\n }\n });\n return polygon(multiCoords, properties);\n default:\n throw new Error(\"geometry type \" + type + \" is not supported\");\n }\n}\n\n/**\n * Auto Complete Coords - matches first & last coordinates\n *\n * @private\n * @param {Array>} coords Coordinates\n * @returns {Array>} auto completed coordinates\n */\nfunction autoCompleteCoords(coords: Position[]) {\n var first = coords[0];\n var x1 = first[0];\n var y1 = first[1];\n var last = coords[coords.length - 1];\n var x2 = last[0];\n var y2 = last[1];\n if (x1 !== x2 || y1 !== y2) {\n coords.push(first);\n }\n return coords;\n}\n\n/**\n * area - quick approximate area calculation (used to sort)\n *\n * @private\n * @param {Array} bbox BBox [west, south, east, north]\n * @returns {number} very quick area calculation\n */\nfunction calculateArea(bbox: BBox) {\n var west = bbox[0];\n var south = bbox[1];\n var east = bbox[2];\n var north = bbox[3];\n return Math.abs(west - east) * Math.abs(south - north);\n}\n\nexport { lineToPolygon };\nexport default lineToPolygon;\n"]}