{"version":3,"file":"togeojson.cjs","sources":["../lib/shared.js","../lib/gpx.js","../lib/tcx.js","../lib/kml.js"],"sourcesContent":["// cast array x into numbers\n// get the content of a text node, if any\nexport function nodeVal(x) {\n if (x && x.normalize) {\n x.normalize();\n }\n return (x && x.textContent) || \"\";\n}\n\n// one Y child of X, if any, otherwise null\nexport function get1(x, y) {\n const n = x.getElementsByTagName(y);\n return n.length ? n[0] : null;\n}","import { nodeVal, get1 } from \"./shared.js\";\n\nfunction getLineStyle(extensions) {\n const style = {};\n if (extensions) {\n const lineStyle = get1(extensions, \"line\");\n if (lineStyle) {\n const color = nodeVal(get1(lineStyle, \"color\")),\n opacity = parseFloat(nodeVal(get1(lineStyle, \"opacity\"))),\n width = parseFloat(nodeVal(get1(lineStyle, \"width\")));\n if (color) style.stroke = color;\n if (!isNaN(opacity)) style[\"stroke-opacity\"] = opacity;\n // GPX width is in mm, convert to px with 96 px per inch\n if (!isNaN(width)) style[\"stroke-width\"] = (width * 96) / 25.4;\n }\n }\n return style;\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node !== null) {\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes[i];\n if (child.nodeType !== 1) continue;\n const name = [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(child.nodeName)\n ? \"heart\"\n : child.nodeName;\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n } else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, isNaN(val) ? val : parseFloat(val)]);\n }\n }\n }\n return values;\n}\n\nfunction getMulti(x, ys) {\n const o = {};\n let n;\n let k;\n for (k = 0; k < ys.length; k++) {\n n = get1(x, ys[k]);\n if (n) o[ys[k]] = nodeVal(n);\n }\n return o;\n}\nfunction getProperties(node) {\n const prop = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n // Parse additional data from our Garmin extension(s)\n const extensions = node.getElementsByTagNameNS(\n \"http://www.garmin.com/xmlschemas/GpxExtensions/v3\",\n \"*\"\n );\n for (let i = 0; i < extensions.length; i++) {\n const extension = extensions[i];\n // Ignore nested extensions, like those on routepoints or trackpoints\n if (extension.parentNode.parentNode === node) {\n prop[extension.tagName.replace(\":\", \"_\")] = nodeVal(extension);\n }\n }\n const links = node.getElementsByTagName(\"link\");\n if (links.length) prop.links = [];\n for (let i = 0; i < links.length; i++) {\n prop.links.push(\n Object.assign(\n { href: links[i].getAttribute(\"href\") },\n getMulti(links[i], [\"text\", \"type\"])\n )\n );\n }\n return prop;\n}\n\nfunction coordPair(x) {\n const ll = [\n parseFloat(x.getAttribute(\"lon\")),\n parseFloat(x.getAttribute(\"lat\")),\n ];\n const ele = get1(x, \"ele\");\n const time = get1(x, \"time\");\n if (ele) {\n const e = parseFloat(nodeVal(ele));\n if (!isNaN(e)) {\n ll.push(e);\n }\n }\n\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(x, \"extensions\")),\n };\n}\nfunction getRoute(node) {\n const line = getPoints(node, \"rtept\");\n if (!line) return;\n return {\n type: \"Feature\",\n properties: Object.assign(\n getProperties(node),\n getLineStyle(get1(node, \"extensions\")),\n { _gpxType: \"rte\" }\n ),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\n\nfunction getPoints(node, pointname) {\n const pts = node.getElementsByTagName(pointname);\n if (pts.length < 2) return; // Invalid line in GeoJSON\n\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n line.push(c.coordinates);\n if (c.time) times.push(c.time);\n for (let j = 0; j < c.extendedValues.length; j++) {\n const [name, val] = c.extendedValues[j];\n const plural =\n name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n\nfunction getTrack(node) {\n const segments = node.getElementsByTagName(\"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n\n for (let i = 0; i < segments.length; i++) {\n const line = getPoints(segments[i], \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length) times.push(line.times);\n }\n }\n\n if (extractedLines.length === 0) return;\n\n const multi = extractedLines.length > 1;\n\n const properties = Object.assign(\n getProperties(node),\n getLineStyle(get1(node, \"extensions\")),\n { _gpxType: \"trk\" },\n times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {}\n );\n\n for (let i = 0; i < extractedLines.length; i++) {\n const line = extractedLines[i];\n track.push(line.line);\n for (const [name, val] of Object.entries(line.extendedValues)) {\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n if (multi) {\n if (!props[name])\n props[name] = extractedLines.map((line) =>\n new Array(line.line.length).fill(null)\n );\n props[name][i] = val;\n } else {\n props[name] = val;\n }\n }\n }\n\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n\nfunction getPoint(node) {\n return {\n type: \"Feature\",\n properties: Object.assign(getProperties(node), getMulti(node, [\"sym\"])),\n geometry: {\n type: \"Point\",\n coordinates: coordPair(node).coordinates,\n },\n };\n}\n\nexport function* gpxGen(doc) {\n const tracks = doc.getElementsByTagName(\"trk\");\n const routes = doc.getElementsByTagName(\"rte\");\n const waypoints = doc.getElementsByTagName(\"wpt\");\n\n for (let i = 0; i < tracks.length; i++) {\n const feature = getTrack(tracks[i]);\n if (feature) yield feature;\n }\n for (let i = 0; i < routes.length; i++) {\n const feature = getRoute(routes[i]);\n if (feature) yield feature;\n }\n for (let i = 0; i < waypoints.length; i++) {\n yield getPoint(waypoints[i]);\n }\n}\n\nexport function gpx(doc) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(doc)),\n };\n}\n","import { nodeVal, get1 } from \"./shared.js\";\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\n\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\n\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\n\nfunction fromEntries(arr) {\n const obj = {};\n for (const [key, value] of arr) {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction getProperties(node, attributeNames) {\n const properties = [];\n\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n\n return properties;\n}\n\nfunction coordPair(x) {\n const lon = nodeVal(get1(x, \"LongitudeDegrees\"));\n const lat = nodeVal(get1(x, \"LatitudeDegrees\"));\n if (!lon.length || !lat.length) {\n return null;\n }\n const ll = [parseFloat(lon), parseFloat(lat)];\n const alt = get1(x, \"AltitudeMeters\");\n const heartRate = get1(x, \"HeartRateBpm\");\n const time = get1(x, \"Time\");\n let a;\n if (alt) {\n a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n }\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(x, TRACKPOINT_ATTRIBUTES),\n };\n}\n\nfunction getPoints(node, pointname) {\n const pts = node.getElementsByTagName(pointname);\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2) return null; // Invalid line in GeoJSON\n const result = { extendedProperties: {} };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null) continue;\n line.push(c.coordinates);\n if (c.time) times.push(c.time);\n if (c.heartRate) heartRates.push(c.heartRate);\n for (const [alias, value] of c.extensions) {\n if (!result.extendedProperties[alias]) {\n result.extendedProperties[alias] = Array(pts.length).fill(null);\n }\n result.extendedProperties[alias][i] = value;\n }\n }\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\n\nfunction getLap(node) {\n const segments = node.getElementsByTagName(\"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = fromEntries(getProperties(node, LAP_ATTRIBUTES));\n\n const nameElement = get1(node, \"Name\");\n if (nameElement) {\n properties.name = nodeVal(nameElement);\n }\n\n for (let i = 0; i < segments.length; i++) {\n line = getPoints(segments[i], \"Trackpoint\");\n if (line) {\n track.push(line.line);\n if (line.times.length) times.push(line.times);\n if (line.heartRates.length) heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n properties[property] = line.extendedProperties[property];\n } else {\n if (!properties[property]) {\n properties[property] = track.map((track) =>\n Array(track.length).fill(null)\n );\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0) return;\n\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(\n times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {},\n heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {}\n );\n }\n\n return {\n type: \"Feature\",\n properties: properties,\n geometry: {\n type: track.length === 1 ? \"LineString\" : \"MultiLineString\",\n coordinates: track.length === 1 ? track[0] : track,\n },\n };\n}\n\nexport function* tcxGen(doc) {\n const laps = doc.getElementsByTagName(\"Lap\");\n\n for (let i = 0; i < laps.length; i++) {\n const feature = getLap(laps[i]);\n if (feature) yield feature;\n }\n\n const courses = doc.getElementsByTagName(\"Courses\");\n\n for (let i = 0; i < courses.length; i++) {\n const feature = getLap(courses[i]);\n if (feature) yield feature;\n }\n}\n\nexport function tcx(doc) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(doc)),\n };\n}\n","import { nodeVal, get1 } from \"./shared.js\";\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n\n// generate a short, numeric hash of a string\nfunction okhash(x) {\n if (!x || !x.length) return 0;\n let h = 0;\n for (let i = 0; i < x.length; i++) {\n h = ((h << 5) - h + x.charCodeAt(i)) | 0;\n }\n return h;\n}\n\n// get one coordinate from a coordinate array, if any\nfunction coord1(v) {\n return v.replace(removeSpace, \"\").split(\",\").map(parseFloat);\n}\n\n// get all coordinates from a coordinate array as [[],[]]\nfunction coord(v) {\n return v.replace(trimSpace, \"\").split(splitSpace).map(coord1);\n}\n\nfunction xml2str(node) {\n if (node.xml !== undefined) return node.xml;\n if (node.tagName) {\n let output = node.tagName;\n for (let i = 0; i < node.attributes.length; i++) {\n output += node.attributes[i].name + node.attributes[i].value;\n }\n for (let i = 0; i < node.childNodes.length; i++) {\n output += xml2str(node.childNodes[i]);\n }\n return output;\n }\n if (node.nodeName === \"#text\") {\n return (node.nodeValue || node.value || \"\").trim();\n }\n if (node.nodeName === \"#cdata-section\") {\n return node.nodeValue;\n }\n return \"\";\n}\n\nconst geotypes = [\"Polygon\", \"LineString\", \"Point\", \"Track\", \"gx:Track\"];\n\nfunction kmlColor(properties, elem, prefix) {\n let v = nodeVal(get1(elem, \"color\")) || \"\";\n const colorProp =\n prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v.substr(0, 1) === \"#\") {\n v = v.substr(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = v;\n } else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substr(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substr(6, 2) + v.substr(4, 2) + v.substr(2, 2);\n }\n}\n\nfunction numericProperty(properties, elem, source, target) {\n const val = parseFloat(nodeVal(get1(elem, source)));\n if (!isNaN(val)) properties[target] = val;\n}\n\nfunction gxCoords(root) {\n let elems = root.getElementsByTagName(\"coord\");\n const coords = [];\n const times = [];\n if (elems.length === 0) elems = root.getElementsByTagName(\"gx:coord\");\n for (let i = 0; i < elems.length; i++) {\n coords.push(nodeVal(elems[i]).split(\" \").map(parseFloat));\n }\n const timeElems = root.getElementsByTagName(\"when\");\n for (let j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j]));\n return {\n coords: coords,\n times: times,\n };\n}\n\nfunction getGeometry(root) {\n let geomNode;\n let geomNodes;\n let i;\n let j;\n let k;\n const geoms = [];\n const coordTimes = [];\n if (get1(root, \"MultiGeometry\")) {\n return getGeometry(get1(root, \"MultiGeometry\"));\n }\n if (get1(root, \"MultiTrack\")) {\n return getGeometry(get1(root, \"MultiTrack\"));\n }\n if (get1(root, \"gx:MultiTrack\")) {\n return getGeometry(get1(root, \"gx:MultiTrack\"));\n }\n for (i = 0; i < geotypes.length; i++) {\n geomNodes = root.getElementsByTagName(geotypes[i]);\n if (geomNodes) {\n for (j = 0; j < geomNodes.length; j++) {\n geomNode = geomNodes[j];\n if (geotypes[i] === \"Point\") {\n geoms.push({\n type: \"Point\",\n coordinates: coord1(nodeVal(get1(geomNode, \"coordinates\"))),\n });\n } else if (geotypes[i] === \"LineString\") {\n geoms.push({\n type: \"LineString\",\n coordinates: coord(nodeVal(get1(geomNode, \"coordinates\"))),\n });\n } else if (geotypes[i] === \"Polygon\") {\n const rings = geomNode.getElementsByTagName(\"LinearRing\"),\n coords = [];\n for (k = 0; k < rings.length; k++) {\n coords.push(coord(nodeVal(get1(rings[k], \"coordinates\"))));\n }\n geoms.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n } else if (geotypes[i] === \"Track\" || geotypes[i] === \"gx:Track\") {\n const track = gxCoords(geomNode);\n geoms.push({\n type: \"LineString\",\n coordinates: track.coords,\n });\n if (track.times.length) coordTimes.push(track.times);\n }\n }\n }\n }\n return {\n geoms: geoms,\n coordTimes: coordTimes,\n };\n}\n\nfunction getPlacemark(root, styleIndex, styleMapIndex, styleByHash) {\n const geomsAndTimes = getGeometry(root);\n let i;\n const properties = {};\n const name = nodeVal(get1(root, \"name\"));\n const address = nodeVal(get1(root, \"address\"));\n let styleUrl = nodeVal(get1(root, \"styleUrl\"));\n const description = nodeVal(get1(root, \"description\"));\n const timeSpan = get1(root, \"TimeSpan\");\n const timeStamp = get1(root, \"TimeStamp\");\n const extendedData = get1(root, \"ExtendedData\");\n let iconStyle = get1(root, \"IconStyle\");\n let labelStyle = get1(root, \"LabelStyle\");\n let lineStyle = get1(root, \"LineStyle\");\n let polyStyle = get1(root, \"PolyStyle\");\n const visibility = get1(root, \"visibility\");\n\n if (name) properties.name = name;\n if (address) properties.address = address;\n if (styleUrl) {\n if (styleUrl[0] !== \"#\") {\n styleUrl = \"#\" + styleUrl;\n }\n\n properties.styleUrl = styleUrl;\n if (styleIndex[styleUrl]) {\n properties.styleHash = styleIndex[styleUrl];\n }\n if (styleMapIndex[styleUrl]) {\n properties.styleMapHash = styleMapIndex[styleUrl];\n properties.styleHash = styleIndex[styleMapIndex[styleUrl].normal];\n }\n // Try to populate the lineStyle or polyStyle since we got the style hash\n const style = styleByHash[properties.styleHash];\n if (style) {\n if (!iconStyle) iconStyle = get1(style, \"IconStyle\");\n if (!labelStyle) labelStyle = get1(style, \"LabelStyle\");\n if (!lineStyle) lineStyle = get1(style, \"LineStyle\");\n if (!polyStyle) polyStyle = get1(style, \"PolyStyle\");\n }\n }\n if (description) properties.description = description;\n if (timeSpan) {\n const begin = nodeVal(get1(timeSpan, \"begin\"));\n const end = nodeVal(get1(timeSpan, \"end\"));\n properties.timespan = { begin: begin, end: end };\n }\n if (timeStamp) {\n properties.timestamp = nodeVal(get1(timeStamp, \"when\"));\n }\n if (iconStyle) {\n kmlColor(properties, iconStyle, \"icon\");\n numericProperty(properties, iconStyle, \"scale\", \"icon-scale\");\n numericProperty(properties, iconStyle, \"heading\", \"icon-heading\");\n\n const hotspot = get1(iconStyle, \"hotSpot\");\n if (hotspot) {\n const left = parseFloat(hotspot.getAttribute(\"x\"));\n const top = parseFloat(hotspot.getAttribute(\"y\"));\n if (!isNaN(left) && !isNaN(top)) properties[\"icon-offset\"] = [left, top];\n }\n const icon = get1(iconStyle, \"Icon\");\n if (icon) {\n const href = nodeVal(get1(icon, \"href\"));\n if (href) properties.icon = href;\n }\n }\n if (labelStyle) {\n kmlColor(properties, labelStyle, \"label\");\n numericProperty(properties, labelStyle, \"scale\", \"label-scale\");\n }\n if (lineStyle) {\n kmlColor(properties, lineStyle, \"stroke\");\n numericProperty(properties, lineStyle, \"width\", \"stroke-width\");\n }\n if (polyStyle) {\n kmlColor(properties, polyStyle, \"fill\");\n const fill = nodeVal(get1(polyStyle, \"fill\"));\n const outline = nodeVal(get1(polyStyle, \"outline\"));\n if (fill)\n properties[\"fill-opacity\"] =\n fill === \"1\" ? properties[\"fill-opacity\"] || 1 : 0;\n if (outline)\n properties[\"stroke-opacity\"] =\n outline === \"1\" ? properties[\"stroke-opacity\"] || 1 : 0;\n }\n if (extendedData) {\n const datas = extendedData.getElementsByTagName(\"Data\"),\n simpleDatas = extendedData.getElementsByTagName(\"SimpleData\");\n\n for (i = 0; i < datas.length; i++) {\n properties[datas[i].getAttribute(\"name\")] = nodeVal(\n get1(datas[i], \"value\")\n );\n }\n for (i = 0; i < simpleDatas.length; i++) {\n properties[simpleDatas[i].getAttribute(\"name\")] = nodeVal(simpleDatas[i]);\n }\n }\n if (visibility) {\n properties.visibility = nodeVal(visibility);\n }\n if (geomsAndTimes.coordTimes.length) {\n properties.coordinateProperties = {\n times:\n geomsAndTimes.coordTimes.length === 1\n ? geomsAndTimes.coordTimes[0]\n : geomsAndTimes.coordTimes,\n };\n }\n const feature = {\n type: \"Feature\",\n geometry:\n geomsAndTimes.geoms.length === 0\n ? null\n : geomsAndTimes.geoms.length === 1\n ? geomsAndTimes.geoms[0]\n : {\n type: \"GeometryCollection\",\n geometries: geomsAndTimes.geoms,\n },\n properties: properties,\n };\n if (root.getAttribute(\"id\")) feature.id = root.getAttribute(\"id\");\n return feature;\n}\n\nexport function* kmlGen(doc) {\n // styleindex keeps track of hashed styles in order to match feature\n const styleIndex = {};\n const styleByHash = {};\n // stylemapindex keeps track of style maps to expose in properties\n const styleMapIndex = {};\n // atomic geospatial types supported by KML - MultiGeometry is\n // handled separately\n // all root placemarks in the file\n const placemarks = doc.getElementsByTagName(\"Placemark\");\n const styles = doc.getElementsByTagName(\"Style\");\n const styleMaps = doc.getElementsByTagName(\"StyleMap\");\n\n for (let k = 0; k < styles.length; k++) {\n const style = styles[k];\n const hash = okhash(xml2str(style)).toString(16);\n let id = style.getAttribute(\"id\");\n if (\n !id &&\n style.parentNode.tagName.replace(\"gx:\", \"\") === \"CascadingStyle\"\n ) {\n id =\n style.parentNode.getAttribute(\"kml:id\") ||\n style.parentNode.getAttribute(\"id\");\n }\n styleIndex[\"#\" + id] = hash;\n styleByHash[hash] = style;\n }\n for (let l = 0; l < styleMaps.length; l++) {\n styleIndex[\"#\" + styleMaps[l].getAttribute(\"id\")] = okhash(\n xml2str(styleMaps[l])\n ).toString(16);\n const pairs = styleMaps[l].getElementsByTagName(\"Pair\");\n const pairsMap = {};\n for (let m = 0; m < pairs.length; m++) {\n pairsMap[nodeVal(get1(pairs[m], \"key\"))] = nodeVal(\n get1(pairs[m], \"styleUrl\")\n );\n }\n styleMapIndex[\"#\" + styleMaps[l].getAttribute(\"id\")] = pairsMap;\n }\n for (let j = 0; j < placemarks.length; j++) {\n const feature = getPlacemark(\n placemarks[j],\n styleIndex,\n styleMapIndex,\n styleByHash\n );\n if (feature) yield feature;\n }\n}\n\nexport function kml(doc) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(doc)),\n };\n}\n"],"names":["getProperties","coordPair","getPoints"],"mappings":"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"}