{"version":3,"sources":["jsdelivr-header.js","/npm/togpx@0.5.0/togpx.js"],"names":[],"mappings":"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","file":"/npm/togpx@0.5.0/togpx.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/togpx@0.5.0/togpx.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","!function(e){\"object\"==typeof exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):\"undefined\"!=typeof window?window.togpx=e():\"undefined\"!=typeof global?global.togpx=e():\"undefined\"!=typeof self&&(self.togpx=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error(\"Cannot find module '\"+o+\"'\")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\nvar JXON = require(\"jxon\");\n\nfunction togpx( geojson, options ) {\n  options = (function (defaults, options) {\n    for (var k in defaults) {\n      if (options.hasOwnProperty(k))\n        defaults[k] = options[k];\n    }\n    return defaults;\n  })({\n    creator: \"togpx\",\n    metadata: undefined,\n    featureTitle: get_feature_title,\n    featureDescription: get_feature_description,\n    featureLink: undefined\n  }, options || {});\n\n  function get_feature_title(props) {\n    // a simple default heuristic to determine a title for a given feature\n    // uses a nested `tags` object or the feature's `properties` if present\n    // and then searchs for the following properties to construct a title:\n    // `name`, `ref`, `id`\n    if (typeof props.tags === \"object\") {\n      var tags_title = get_feature_title(props.tags);\n      if (tags_title !== \"\")\n        return tags_title;\n    }\n    if (props.name)\n      return props.name;\n    if (props.ref)\n      return props.ref;\n    if (props.id)\n      return props.id;\n    return \"\";\n  }\n  function get_feature_description(props) {\n    // constructs a description for a given feature\n    // uses a nested `tags` object or the feature's `properties` if present\n    // and then concatenates all properties to construct a description.\n    if (typeof props.tags === \"object\")\n      return get_feature_description(props.tags);\n    var res = \"\";\n    for (var k in props) {\n      if (typeof props[k] === \"object\")\n        continue;\n      res += k+\"=\"+props[k]+\"\\n\";\n    }\n    return res.substr(0,res.length-1);\n  }\n  function add_feature_link(o, f) {\n    if (options.featureLink)\n      o.link = { \"@href\": options.featureLink(f.properties) }\n  }\n  // make gpx object\n  var gpx = {\"gpx\": {\n    \"@xmlns\":\"http://www.topografix.com/GPX/1/1\",\n    \"@xmlns:xsi\":\"http://www.w3.org/2001/XMLSchema-instance\",\n    \"@xsi:schemaLocation\":\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\",\n    \"@version\":\"1.1\",\n    \"wpt\": [],\n    \"trk\": [],\n  }};\n  if (options.creator)\n    gpx.gpx[\"@creator\"] = options.creator;\n  if (options.metadata)\n    gpx.gpx[\"metadata\"] = options.metadata;\n\n  var features;\n  if (geojson.type === \"FeatureCollection\")\n    features = geojson.features;\n  else if (geojson.type === \"Feature\")\n    features = [geojson];\n  else\n    features = [{type:\"Feature\", properties: {}, geometry: geojson}];\n  features.forEach(function mapFeature(f) {\n    switch (f.geometry.type) {\n    // POIs\n    case \"Point\":\n    case \"MultiPoint\":\n      var coords = f.geometry.coordinates;\n      if (f.geometry.type == \"Point\") coords = [coords];\n      coords.forEach(function (coordinates) {\n        o = {\n          \"@lat\": coordinates[1],\n          \"@lon\": coordinates[0],\n          \"name\": options.featureTitle(f.properties),\n          \"desc\": options.featureDescription(f.properties)\n        };\n        if (coordinates[2] !== undefined) {\n          o.ele = coordinates[2];\n        }\n        add_feature_link(o,f);\n        gpx.gpx.wpt.push(o);\n      });\n      break;\n    // LineStrings\n    case \"LineString\":\n    case \"MultiLineString\":\n      var coords = f.geometry.coordinates;\n      if (f.geometry.type == \"LineString\") coords = [coords];\n      o = {\n        \"name\": options.featureTitle(f.properties),\n        \"desc\": options.featureDescription(f.properties)\n      };\n      add_feature_link(o,f);\n      o.trkseg = [];\n      coords.forEach(function(coordinates) {\n        var seg = {trkpt: []};\n        coordinates.forEach(function(c) {\n          var o = {\n            \"@lat\": c[1],\n            \"@lon\":c[0]\n          };\n          if (c[2] !== undefined) {\n            o.ele = c[2];\n          }\n          seg.trkpt.push(o);\n        });\n        o.trkseg.push(seg);\n      });\n      gpx.gpx.trk.push(o);\n      break;\n    // Polygons / Multipolygons\n    case \"Polygon\":\n    case \"MultiPolygon\":\n      o = {\n        \"name\": options.featureTitle(f.properties),\n        \"desc\": options.featureDescription(f.properties)\n      };\n      add_feature_link(o,f);\n      o.trkseg = [];\n      var coords = f.geometry.coordinates;\n      if (f.geometry.type == \"Polygon\") coords = [coords];\n      coords.forEach(function(poly) {\n        poly.forEach(function(ring) {\n          var seg = {trkpt: []};\n          ring.forEach(function(c) {\n            var o = {\n              \"@lat\": c[1],\n              \"@lon\":c[0]\n            };\n            if (c[2] !== undefined) {\n              o.ele = c[2];\n            }\n            seg.trkpt.push(o);\n          });\n          o.trkseg.push(seg);\n        });\n      });\n      gpx.gpx.trk.push(o);\n      break;\n    case \"GeometryCollection\":\n      f.geometry.geometries.forEach(function (geometry) {\n        var pseudo_feature = {\n          \"properties\": f.properties,\n          \"geometry\": geometry\n        };\n        mapFeature(pseudo_feature);\n      });\n      break;\n    default:\n      console.log(\"warning: unsupported geometry type: \"+f.geometry.type);\n    }\n  });\n  gpx_str = JXON.stringify(gpx);\n  return gpx_str;\n};\n\nmodule.exports = togpx;\n\n},{\"jxon\":2}],2:[function(require,module,exports){\n/*\n * JXON framework - Copyleft 2011 by Mozilla Developer Network\n *\n * https://developer.mozilla.org/en-US/docs/JXON\n *\n * This framework is released under the GNU Public License, version 3 or later.\n * http://www.gnu.org/licenses/gpl-3.0-standalone.html\n *\n * small modifications performed by the iD project:\n * https://github.com/openstreetmap/iD/commits/18aa33ba97b52cacf454e95c65d154000e052a1f/js/lib/jxon.js\n *\n * adapted for nodejs and npm by Martin Raifer <tyr.asd@gmail.com>\n */\n\nif (typeof XMLSerializer === 'undefined') {\n  XMLSerializer = require(\"xmldom\").XMLSerializer;\n  document = {};\n  document.implementation = new (require(\"xmldom\").DOMImplementation)();\n}\n\nvar JXON = new (function () {\n  var\n    sValueProp = \"keyValue\", sAttributesProp = \"keyAttributes\", sAttrPref = \"@\", /* you can customize these values */\n    aCache = [], rIsNull = /^\\s*$/, rIsBool = /^(?:true|false)$/i;\n\n  function parseText (sValue) {\n    if (rIsNull.test(sValue)) { return null; }\n    if (rIsBool.test(sValue)) { return sValue.toLowerCase() === \"true\"; }\n    if (isFinite(sValue)) { return parseFloat(sValue); }\n    if (isFinite(Date.parse(sValue))) { return new Date(sValue); }\n    return sValue;\n  }\n\n  function EmptyTree () { }\n  EmptyTree.prototype.toString = function () { return \"null\"; };\n  EmptyTree.prototype.valueOf = function () { return null; };\n\n  function objectify (vValue) {\n    return vValue === null ? new EmptyTree() : vValue instanceof Object ? vValue : new vValue.constructor(vValue);\n  }\n\n  function createObjTree (oParentNode, nVerb, bFreeze, bNesteAttr) {\n    var\n      nLevelStart = aCache.length, bChildren = oParentNode.hasChildNodes(),\n      bAttributes = oParentNode.hasAttributes(), bHighVerb = Boolean(nVerb & 2);\n\n    var\n      sProp, vContent, nLength = 0, sCollectedTxt = \"\",\n      vResult = bHighVerb ? {} : /* put here the default value for empty nodes: */ true;\n\n    if (bChildren) {\n      for (var oNode, nItem = 0; nItem < oParentNode.childNodes.length; nItem++) {\n        oNode = oParentNode.childNodes.item(nItem);\n        if (oNode.nodeType === 4) { sCollectedTxt += oNode.nodeValue; } /* nodeType is \"CDATASection\" (4) */\n        else if (oNode.nodeType === 3) { sCollectedTxt += oNode.nodeValue.trim(); } /* nodeType is \"Text\" (3) */\n        else if (oNode.nodeType === 1 && !oNode.prefix) { aCache.push(oNode); } /* nodeType is \"Element\" (1) */\n      }\n    }\n\n    var nLevelEnd = aCache.length, vBuiltVal = parseText(sCollectedTxt);\n\n    if (!bHighVerb && (bChildren || bAttributes)) { vResult = nVerb === 0 ? objectify(vBuiltVal) : {}; }\n\n    for (var nElId = nLevelStart; nElId < nLevelEnd; nElId++) {\n      sProp = aCache[nElId].nodeName.toLowerCase();\n      vContent = createObjTree(aCache[nElId], nVerb, bFreeze, bNesteAttr);\n      if (vResult.hasOwnProperty(sProp)) {\n        if (vResult[sProp].constructor !== Array) { vResult[sProp] = [vResult[sProp]]; }\n        vResult[sProp].push(vContent);\n      } else {\n        vResult[sProp] = vContent;\n        nLength++;\n      }\n    }\n\n    if (bAttributes) {\n      var\n        nAttrLen = oParentNode.attributes.length,\n        sAPrefix = bNesteAttr ? \"\" : sAttrPref, oAttrParent = bNesteAttr ? {} : vResult;\n\n      for (var oAttrib, nAttrib = 0; nAttrib < nAttrLen; nLength++, nAttrib++) {\n        oAttrib = oParentNode.attributes.item(nAttrib);\n        oAttrParent[sAPrefix + oAttrib.name.toLowerCase()] = parseText(oAttrib.value.trim());\n      }\n\n      if (bNesteAttr) {\n        if (bFreeze) { Object.freeze(oAttrParent); }\n        vResult[sAttributesProp] = oAttrParent;\n        nLength -= nAttrLen - 1;\n      }\n    }\n\n    if (nVerb === 3 || (nVerb === 2 || nVerb === 1 && nLength > 0) && sCollectedTxt) {\n      vResult[sValueProp] = vBuiltVal;\n    } else if (!bHighVerb && nLength === 0 && sCollectedTxt) {\n      vResult = vBuiltVal;\n    }\n\n    if (bFreeze && (bHighVerb || nLength > 0)) { Object.freeze(vResult); }\n\n    aCache.length = nLevelStart;\n\n    return vResult;\n  }\n\n  function loadObjTree (oXMLDoc, oParentEl, oParentObj) {\n    var vValue, oChild;\n\n    if (oParentObj instanceof String || oParentObj instanceof Number || oParentObj instanceof Boolean) {\n      oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toString())); /* verbosity level is 0 */\n    } else if (oParentObj.constructor === Date) {\n      oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toGMTString()));\n    }\n\n    for (var sName in oParentObj) {\n      vValue = oParentObj[sName];\n      if (isFinite(sName) || vValue instanceof Function) { continue; } /* verbosity level is 0 */\n      if (sName === sValueProp) {\n        if (vValue !== null && vValue !== true) { oParentEl.appendChild(oXMLDoc.createTextNode(vValue.constructor === Date ? vValue.toGMTString() : String(vValue))); }\n      } else if (sName === sAttributesProp) { /* verbosity level is 3 */\n        for (var sAttrib in vValue) { oParentEl.setAttribute(sAttrib, vValue[sAttrib]); }\n      } else if (sName.charAt(0) === sAttrPref) {\n        oParentEl.setAttribute(sName.slice(1), vValue);\n      } else if (vValue.constructor === Array) {\n        for (var nItem = 0; nItem < vValue.length; nItem++) {\n          oChild = oXMLDoc.createElement(sName);\n          loadObjTree(oXMLDoc, oChild, vValue[nItem]);\n          oParentEl.appendChild(oChild);\n        }\n      } else {\n        oChild = oXMLDoc.createElement(sName);\n        if (vValue instanceof Object) {\n          loadObjTree(oXMLDoc, oChild, vValue);\n        } else if (vValue !== null && vValue !== true) {\n          oChild.appendChild(oXMLDoc.createTextNode(vValue.toString()));\n        }\n        oParentEl.appendChild(oChild);\n     }\n   }\n  }\n\n  this.build = function (oXMLParent, nVerbosity /* optional */, bFreeze /* optional */, bNesteAttributes /* optional */) {\n    var _nVerb = arguments.length > 1 && typeof nVerbosity === \"number\" ? nVerbosity & 3 : /* put here the default verbosity level: */ 1;\n    return createObjTree(oXMLParent, _nVerb, bFreeze || false, arguments.length > 3 ? bNesteAttributes : _nVerb === 3);\n  };\n\n  this.unbuild = function (oObjTree) {\n    var oNewDoc = document.implementation.createDocument(\"\", \"\", null);\n    loadObjTree(oNewDoc, oNewDoc, oObjTree);\n    return oNewDoc;\n  };\n\n  this.stringify = function (oObjTree) {\n    return (new XMLSerializer()).serializeToString(JXON.unbuild(oObjTree));\n  };\n})();\n\nmodule.exports = JXON;\n},{\"xmldom\":3}],3:[function(require,module,exports){\n\n},{}]},{},[1])\n(1)\n});\n;\n"]}