@raruto/leaflet-elevation 1.9.0 → 1.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-elevation.js","sources":["../node_modules/leaflet-i18n/Leaflet.i18n.js","../src/utils.js","../src/components.js","../src/chart.js","../src/marker.js","../src/summary.js","../src/options.js","../src/control.js","../src/altitude.js","../src/distance.js","../src/time.js","../src/slope.js","../src/speed.js","../src/acceleration.js","../src/index.js"],"sourcesContent":["// Following https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md\n(function (factory, window) {\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n module.exports = factory(require('leaflet'));\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L) {\n factory(window.L);\n\n }\n}(function (L) {\n L.locales = {};\n L.locale = null;\n L.registerLocale = function registerLocale(code, locale) {\n L.locales[code] = L.Util.extend({}, L.locales[code], locale);\n };\n L.setLocale = function setLocale(code) {\n L.locale = code;\n };\n return L.i18n = L._ = function translate(string, data) {\n if (L.locale && L.locales[L.locale] && L.locales[L.locale][string]) {\n string = L.locales[L.locale][string];\n }\n try {\n // Do not fail if some data is missing\n // a bad translation should not break the app\n string = L.Util.template(string, data);\n }\n catch (err) {/*pass*/\n }\n\n return string;\n };\n}, window));\n","const SEC = 1000;\nconst MIN = SEC * 60;\nconst HOUR = MIN * 60;\nconst DAY = HOUR * 24;\n\n/**\n * Convert a duration time (millis) to a human readable string (%Dd %H:%M'%S\")\n */\nexport function formatTime(t) {\n\tlet d = Math.floor(t / DAY);\n\tlet h = Math.floor( (t - d * DAY) / HOUR);\n\tlet m = Math.floor( (t - d * DAY - h * HOUR) / MIN);\n\tlet s = Math.round( (t - d * DAY - h * HOUR - m * MIN) / SEC);\n\tif ( s === 60 ) { m++; s = 0; }\n\tif ( m === 60 ) { h++; m = 0; }\n\tif ( h === 24 ) { d++; h = 0; }\n\treturn (d ? d + \"d \" : '') + h.toString().padStart(2, 0) + ':' + m.toString().padStart(2, 0) + \"'\" + s.toString().padStart(2, 0) + '\"';\n}\n\n/**\n * Generate download data event.\n */\n export function saveFile(dataURI, fileName) {\n\tlet a = create('a', '', { href: dataURI, target: '_new', download: fileName || \"\", style: \"display:none;\" });\n\tlet b = document.body;\n\tb.appendChild(a);\n\ta.click();\n\tb.removeChild(a);\n}\n\n/**\n * Async JS script download.\n */\nexport function lazyLoader(url, skip, loader) {\n\tif (skip === false) {\n\t\treturn Promise.resolve();\n\t}\n\tif (loader instanceof Promise) {\n\t\treturn loader;\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tlet tag = document.createElement(\"script\");\n\t\ttag.addEventListener('load', resolve, { once: true });\n\t\ttag.src = url;\n\t\tdocument.head.appendChild(tag);\n\t});\n}\n\n/**\n * Convert SVG Path into Path2D and then update canvas\n */\n export function drawCanvas(ctx, path) {\n\tpath.classed('canvas-path', true);\n\n\tctx.beginPath();\n\tctx.moveTo(0, 0);\n\tlet p = new Path2D(path.attr('d'));\n\n\tctx.strokeStyle = path.attr('stroke');\n\tctx.fillStyle = path.attr('fill');\n\tctx.lineWidth = 1.25;\n\tctx.globalCompositeOperation = 'source-over';\n\n\t// stroke opacity\n\tctx.globalAlpha = path.attr('stroke-opacity') || 0.3;\n\tctx.stroke(p);\n\n\t// fill opacity\n\tctx.globalAlpha = path.attr('fill-opacity') || 0.45;\n\tctx.fill(p);\n\n\tctx.globalAlpha = 1;\n\n\tctx.closePath();\n}\n\n/**\n * Limit a number between min / max values\n */\n export function clamp(val, range) {\n\tif (range) return val < range[0] ? range[0] : val > range[1] ? range[1] : val;\n\treturn val;\n}\n\n/**\n * A little bit safier than L.DomUtil.addClass\n */\nexport function addClass(targetNode, className) {\n\tif (targetNode) className.split(\" \").every(s => s && L.DomUtil.addClass(targetNode, s));\n}\n\n/**\n * A little bit safier than L.DomUtil.removeClass()\n */\nexport function removeClass(targetNode, className) {\n\tif (targetNode) className.split(\" \").every(s => s && L.DomUtil.removeClass(targetNode, s));\n}\n\nexport function toggleClass(targetNode, className, conditional) {\n\treturn (conditional ? addClass : removeClass).call(null, targetNode, className)\n}\n\nexport function replaceClass(targetNode, removeClassName, addClassName) {\n\tif (removeClassName) removeClass(targetNode, removeClassName);\n\tif (addClassName) addClass(targetNode, addClassName);\n}\n\nexport function style(targetNode, name, value) {\n\tif (typeof value === \"undefined\") return L.DomUtil.getStyle(targetNode, name);\n\telse return targetNode.style.setProperty(name, value);\n}\n\nexport function toggleStyle(targetNode, name, value, conditional) {\n\treturn style(targetNode, name, conditional ? value : '');\n}\n\nexport function toggleEvent(leafletElement, eventName, handler, conditional) {\n\treturn leafletElement[conditional ? 'on' : 'off'](eventName, handler);\n}\n\n/**\n * A little bit shorter than L.DomUtil.create()\n */\nexport function create(tagName, className, attributes, parent) {\n\tlet elem = L.DomUtil.create(tagName, className || \"\");\n\tif (attributes) setAttributes(elem, attributes);\n\tif (parent) append(parent, elem);\n\treturn elem;\n}\n\n/**\n * Same as node.appendChild()\n */\nexport function append(parent, child) {\n\treturn parent.appendChild(child);\n}\n\n/**\n * Same as node.insertAdjacentElement()\n */\nexport function insert(parent, child, position) {\n\treturn parent.insertAdjacentElement(position, child);\n}\n\n/**\n * Loop for node.setAttribute()\n */\nexport function setAttributes(elem, attrs) {\n\tfor (let k in attrs) { elem.setAttribute(k, attrs[k]); }\n}\n\n/**\n * Same as node.querySelector().\n */\nexport function select(selector, context) {\n\treturn (context || document).querySelector(selector);\n}\n\n/**\n * Alias for L.DomEvent.on.\n */\nexport const on = L.DomEvent.on;\n\n/**\n * Alias for L.DomEvent.off.\n */\nexport const off = L.DomEvent.off;\n\n/**\n * Alias for L.DomUtil.hasClass.\n */\nexport const hasClass = L.DomUtil.hasClass;\n\n\n/**\n * Generate a random string\n */\nexport function randomId() {\n\treturn Math.random().toString(36).substr(2, 9);\n}\n\n/**\n * Execute a function foreach element in object\n */\nexport function each(obj, fn) {\n\tfor (let i in obj) fn(obj[i], i);\n}","export const Colors = {\n\t'lightblue': { area: '#3366CC', alpha: 0.45, stroke: '#3366CC' },\n\t'magenta' : { area: '#FF005E' },\n\t'yellow' : { area: '#FF0' },\n\t'purple' : { area: '#732C7B' },\n\t'steelblue': { area: '#4682B4' },\n\t'red' : { area: '#F00' },\n\t'lime' : { area: '#9CC222', line: '#566B13' }\n};\n\nexport const Area = ({\n\twidth,\n\theight,\n\txAttr,\n\tyAttr,\n\tscaleX,\n\tscaleY,\n\tinterpolation = \"curveLinear\"\n}) => {\n\treturn d3.area()\n\t\t.curve(typeof interpolation === 'string' ? d3[interpolation] : interpolation)\n\t\t.x(d => (d.xDiagCoord = scaleX(d[xAttr])))\n\t\t.y0(height)\n\t\t.y1(d => scaleY(d[yAttr]));\n};\n\nexport const Path = ({\n\tname,\n\tcolor,\n\tstrokeColor,\n\tstrokeOpacity,\n\tfillOpacity,\n}) => {\n\tlet path = d3.create('svg:path')\n\n\tif (name) path.classed(name, true);\n\n\tpath.style(\"pointer-events\", \"none\");\n\n\tpath\n\t.attr(\"fill\", color || '#3366CC')\n\t.attr(\"stroke\", strokeColor || '#000')\n\t.attr(\"stroke-opacity\", strokeOpacity || '1')\n\t.attr(\"fill-opacity\", fillOpacity || '0.8');\n\n\treturn path;\n};\n\nexport const Axis = ({\n\ttype = \"axis\",\n\ttickSize = 6,\n\ttickPadding = 3,\n\tposition,\n\theight,\n\twidth,\n\taxis,\n\tscale,\n\tticks,\n\ttickFormat,\n\tlabel,\n\tlabelX,\n\tlabelY,\n\tname = \"\",\n\tonAxisMount,\n}) => {\n\treturn g => {\n\t\tlet [w, h] = [0, 0];\n\t\tif (position == \"bottom\") h = height;\n\t\tif (position == \"right\") w = width;\n\n\t\tif (axis == \"x\" && type == \"grid\") {\n\t\t\ttickSize = -height;\n\t\t} else if (axis == \"y\" && type == \"grid\") {\n\t\t\ttickSize = -width;\n\t\t}\n\n\t\tlet axisScale = d3[\"axis\" + position.replace(/\\b\\w/g, l => l.toUpperCase())]()\n\t\t\t.scale(scale)\n\t\t\t.ticks(ticks)\n\t\t\t.tickPadding(tickPadding)\n\t\t\t.tickSize(tickSize)\n\t\t\t.tickFormat(tickFormat);\n\n\t\tlet axisGroup = g.append(\"g\")\n\t\t\t.attr(\"class\", [axis, type, position, name].join(\" \"))\n\t\t\t.attr(\"transform\", \"translate(\" + w + \",\" + h + \")\")\n\t\t\t.call(axisScale);\n\n\t\tif (label) {\n\t\t\taxisGroup.append(\"svg:text\")\n\t\t\t\t.attr(\"x\", labelX)\n\t\t\t\t.attr(\"y\", labelY)\n\t\t\t\t.text(label);\n\t\t}\n\n\t\tif (onAxisMount) {\n\t\t\taxisGroup.call(onAxisMount);\n\t\t}\n\n\t\treturn axisGroup;\n\t};\n};\n\nexport const Grid = (props) => {\n\tprops.type = \"grid\";\n\treturn Axis(props);\n};\n\nexport const PositionMarker = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n\tlabels = {},\n\titem = {},\n\tlength = 0,\n}) => {\n\treturn g => {\n\n\t\tlet line = g.select('.height-focus.line');\n\t\tlet circle = g.select('.height-focus.circle-lower');\n\t\tlet text = g.select('.height-focus-label');\n\n\t\tif (!line.node()) line = g.append('svg:line');\n\t\tif (!circle.node()) circle = g.append('svg:circle');\n\t\tif (!text.node()) text = g.append('svg:text');\n\n\t\tif (isNaN(xCoord) || isNaN(yCoord)) return g;\n\n\t\tcircle\n\t\t\t.attr(\"class\", theme + \" height-focus circle-lower\")\n\t\t\t.attr(\"transform\", \"translate(\" + xCoord + \",\" + yCoord + \")\")\n\t\t\t.attr(\"r\", 6)\n\t\t\t.attr(\"cx\", 0)\n\t\t\t.attr(\"cy\", 0);\n\n\t\tline\n\t\t\t.attr(\"class\", theme + \" height-focus line\")\n\t\t\t.attr(\"x1\", xCoord)\n\t\t\t.attr(\"x2\", xCoord)\n\t\t\t.attr(\"y1\", yCoord)\n\t\t\t.attr(\"y2\", length);\n\n\t\ttext\n\t\t\t.attr(\"class\", theme + \" height-focus-label\")\n\t\t\t.style(\"pointer-events\", \"none\")\n\t\t\t.attr(\"x\", xCoord + 5)\n\t\t\t.attr(\"y\", length);\n\n\t\tlet label;\n\n\t\tfor (var i in labels) {\n\t\t\tlabel = text.select(\".height-focus-\" + labels[i].name);\n\n\t\t\tif (!label.size()) {\n\t\t\t\tlabel = text.append(\"svg:tspan\")\n\t\t\t\t\t.attr(\"class\", \"height-focus-\" + labels[i].name)\n\t\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t\t}\n\n\t\t\tlabel.text(typeof labels[i].value !== \"function\" ? labels[i].value : labels[i].value(item));\n\t\t}\n\n\t\ttext.select('tspan').attr(\"dy\", text.selectAll('tspan').size() > 1 ? \"-1.5em\" : \"0em\" );\n\t\ttext.selectAll('tspan').attr(\"x\", xCoord + 5);\n\n\t\treturn g;\n\t}\n};\n\nexport const LegendItem = ({\n\tname,\n\tlabel,\n\twidth,\n\theight,\n\tmargins = {},\n\tcolor,\n\tpath\n}) => {\n\treturn g => {\n\t\tg\n\t\t\t.attr(\"class\", \"legend-item legend-\" + name.toLowerCase())\n\t\t\t.attr(\"data-name\", name);\n\n\t\tg.on('click.legend', () => d3.select(g.node().ownerSVGElement || g)\n\t\t\t.dispatch(\"legend_clicked\", {\n\t\t\t\tdetail: {\n\t\t\t\t\tpath: path.node(),\n\t\t\t\t\tname: name,\n\t\t\t\t\tlegend: g.node(),\n\t\t\t\t\tenabled: !path.classed('leaflet-hidden'),\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tg.append(\"svg:rect\")\n\t\t\t.attr(\"x\", (width / 2) - 50)\n\t\t\t.attr(\"y\", height + margins.bottom / 2)\n\t\t\t.attr(\"width\", 50)\n\t\t\t.attr(\"height\", 10)\n\t\t\t.attr(\"fill\", color)\n\t\t\t.attr(\"stroke\", \"#000\")\n\t\t\t.attr(\"stroke-opacity\", \"0.5\")\n\t\t\t.attr(\"fill-opacity\", \"0.25\");\n\n\t\tg.append('svg:text')\n\t\t\t.text(L._(label || name))\n\t\t\t.attr(\"x\", (width / 2) + 5)\n\t\t\t.attr(\"font-size\", 10)\n\t\t\t.style(\"text-decoration-thickness\", \"2px\")\n\t\t\t.style(\"font-weight\", \"700\")\n\t\t\t.attr('y', height + margins.bottom / 2)\n\t\t\t.attr('dy', \"0.75em\");\n\n\t\treturn g;\n\t}\n};\n\nexport const Tooltip = ({\n\txCoord,\n\tyCoord,\n\twidth,\n\theight,\n\tlabels = {},\n\titem = {},\n}) => {\n\treturn g => {\n\n\t\tlet line = g.select('.mouse-focus-line');\n\t\tlet box = g.select('.mouse-focus-label');\n\n\t\tif (!line.node()) line = g.append('svg:line');\n\t\tif (!box.node()) box = g.append(\"g\");\n\n\t\tlet rect = box.select(\".mouse-focus-label-rect\");\n\t\tlet text = box.select(\".mouse-focus-label-text\");\n\n\t\tif (!rect.node()) rect = box.append(\"svg:rect\");\n\t\tif (!text.node()) text = box.append(\"svg:text\");\n\n\t\t// Sets focus-label-text position to the left / right of the mouse-focus-line\n\t\tlet xAlign = 0;\n\t\tlet yAlign = 0;\n\t\tlet bbox = { width: 0, height: 0 };\n\t\ttry { bbox = text.node().getBBox(); } catch (e) { return g; }\n\n\t\tif (xCoord) xAlign = xCoord + (xCoord < width / 2 ? 10 : -bbox.width - 10);\n\t\tif (yCoord) yAlign = Math.max(yCoord - bbox.height, L.Browser.webkit ? 0 : -Infinity);\n\n\t\tline\n\t\t\t.attr('class', 'mouse-focus-line')\n\t\t\t.attr('x2', xCoord)\n\t\t\t.attr('y2', 0)\n\t\t\t.attr('x1', xCoord)\n\t\t\t.attr('y1', height);\n\n\t\tbox\n\t\t\t.attr('class', 'mouse-focus-label');\n\n\t\trect\n\t\t\t.attr(\"class\", \"mouse-focus-label-rect\")\n\t\t\t.attr(\"x\", xAlign - 5)\n\t\t\t.attr(\"y\", yAlign - 5)\n\t\t\t.attr(\"width\", bbox.width + 10)\n\t\t\t.attr(\"height\", bbox.height + 10)\n\t\t\t.attr(\"rx\", 3)\n\t\t\t.attr(\"ry\", 3);\n\n\t\ttext\n\t\t\t.attr(\"class\", \"mouse-focus-label-text\")\n\t\t\t.style(\"font-weight\", \"700\")\n\t\t\t.attr(\"y\", yAlign);\n\n\t\tlet label;\n\n\t\tfor (let i in labels) {\n\t\t\tlabel = text.select(\".mouse-focus-label-\" + labels[i].name);\n\n\t\t\tif (!label.size()) {\n\t\t\t\tlabel = text.append(\"svg:tspan\", \".mouse-focus-label-x\")\n\t\t\t\t\t.attr(\"class\", \"mouse-focus-label-\" + labels[i].name)\n\t\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t\t}\n\n\t\t\tlabel.text(typeof labels[i].value !== \"function\" ? labels[i].value : labels[i].value(item));\n\t\t}\n\n\t\ttext.select('tspan').attr(\"dy\", \"1em\");\n\t\ttext.selectAll('tspan').attr(\"x\", xAlign);\n\n\t\treturn g;\n\t};\n};\n\nexport const Ruler = ({\n\theight,\n\twidth,\n}) => {\n\treturn g => {\n\n\t\tg.data([{\n\t\t\t\t\"x\": 0,\n\t\t\t\t\"y\": height,\n\t\t\t}])\n\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \")\");\n\n\t\tlet rect = g.selectAll('.horizontal-drag-rect')\n\t\t\t.data([{ w: width }]);\n\n\t\tlet line = g.selectAll('.horizontal-drag-line')\n\t\t\t.data([{ w: width }]);\n\n\t\tlet label = g.selectAll('.horizontal-drag-label')\n\t\t\t.data([{ w: width - 8 }]);\n\n\t\tlet symbol = g.selectAll('.horizontal-drag-symbol')\n\t\t\t.data([{\n\t\t\t\t\"type\": d3.symbolTriangle,\n\t\t\t\t\"x\": width + 7,\n\t\t\t\t\"y\": 0,\n\t\t\t\t\"angle\": -90,\n\t\t\t\t\"size\": 50\n\t\t\t}]);\n\n\t\trect.exit().remove();\n\t\tline.exit().remove();\n\t\tlabel.exit().remove();\n\t\tsymbol.exit().remove();\n\n\t\trect.enter()\n\t\t\t.append(\"svg:rect\")\n\t\t\t.attr(\"class\", \"horizontal-drag-rect\")\n\t\t\t.attr(\"x\", 0)\n\t\t\t.attr(\"y\", -8)\n\t\t\t.attr(\"height\", 8)\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('pointer-events', 'all')\n\t\t\t.merge(rect)\n\t\t\t.attr(\"width\", d => d.w);\n\n\t\tline.enter()\n\t\t\t.append(\"svg:line\")\n\t\t\t.attr(\"class\", \"horizontal-drag-line\")\n\t\t\t.attr(\"x1\", 0)\n\t\t\t.merge(line)\n\t\t\t.attr(\"x2\", d => d.w);\n\n\t\tlabel.enter()\n\t\t\t.append(\"svg:text\")\n\t\t\t.attr(\"class\", \"horizontal-drag-label\")\n\t\t\t.attr(\"text-anchor\", \"end\")\n\t\t\t.attr(\"y\", -8)\n\t\t\t.merge(label)\n\t\t\t.attr(\"x\", d => d.w)\n\n\t\tsymbol\n\t\t\t.enter()\n\t\t\t.append(\"svg:path\")\n\t\t\t.attr(\"class\", \"horizontal-drag-symbol\")\n\t\t\t.merge(symbol)\n\t\t\t.attr(\"d\",\n\t\t\t\td3.symbol()\n\t\t\t\t.type(d => d.type)\n\t\t\t\t.size(d => d.size)\n\t\t\t)\n\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \") rotate(\" + d.angle + \")\");\n\n\t\treturn g;\n\t}\n};\n\nexport const CheckPoint = ({\n\tpoint,\n\theight,\n\twidth,\n\tx,\n\ty\n}) => {\n\treturn g => {\n\n\t\tif (isNaN(x) || isNaN(y)) return g;\n\n\t\tif (!point.item || !point.item.property('isConnected')) {\n\t\t\tpoint.position = point.position || \"bottom\";\n\n\t\t\tpoint.item = g.append('g');\n\n\t\t\tpoint.item.append(\"svg:line\")\n\t\t\t\t.attr(\"y1\", 0)\n\t\t\t\t.attr(\"x1\", 0)\n\t\t\t\t.attr(\"style\",\"stroke: rgb(51, 51, 51); stroke-width: 0.5; stroke-dasharray: 2, 2;\");\n\n\t\t\tpoint.item\n\t\t\t\t.append(\"svg:circle\")\n\t\t\t\t.attr(\"class\", \" height-focus circle-lower\")\n\t\t\t\t.attr(\"r\", 3);\n\n\t\t\tif (point.label) {\n\t\t\t\tpoint.item.append(\"svg:text\")\n\t\t\t\t\t.attr(\"dx\", \"4px\")\n\t\t\t\t\t.attr(\"dy\", \"-4px\");\n\t\t\t}\n\t\t}\n\n\t\tpoint.item\n\t\t\t.datum({\n\t\t\t\tpos: point.position,\n\t\t\t\tx: x,\n\t\t\t\ty: y\n\t\t\t})\n\t\t\t.attr(\"class\", d => \"point \" + d.pos)\n\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \")\");\n\n\t\tpoint.item.select('line')\n\t\t\t.datum({\n\t\t\t\ty2: ({'top': -y, 'bottom': height - y})[point.position],\n\t\t\t\tx2: ({'left': -x, 'right': width - x})[point.position] || 0\n\t\t\t})\n\t\t\t.attr(\"y2\", d => d.y2)\n\t\t\t.attr(\"x2\", d => d.x2)\n\n\t\tif (point.label) {\n\t\t\tpoint.item.select('text')\n\t\t\t\t.text(point.label);\n\t\t}\n\n\t\treturn g;\n\t}\n};\n\nexport const Domain = ({\n\tmin,\n\tmax,\n\tattr,\n\tname,\n\tforceBounds,\n\tscale\n}) => function(data) {\n\tattr = attr || name;\n\tif (scale && scale.attr) attr = scale.attr;\n\tlet domain = data && data.length ? d3.extent(data, d => d[attr]) : [0, 1];\n\tif (typeof min !== \"undefined\" && (min < domain[0] || forceBounds)) {\n\t\tdomain[0] = min;\n\t}\n\tif (typeof max !== \"undefined\" && (max > domain[1] || forceBounds)) {\n\t\tdomain[1] = max;\n\t}\n\treturn domain;\n};\n\nexport const Range = ({\n\taxis\n}) => function(width, height) {\n\tif (axis == 'x') return [0, width];\n\telse if (axis == 'y') return [height, 0];\n};\n\nexport const Scale = ({\n\tdata,\n\tattr,\n\tmin,\n\tmax,\n\tforceBounds,\n\trange,\n}) => {\n\treturn d3.scaleLinear()\n\t\t.range(range)\n\t\t.domain(Domain({min, max, attr, forceBounds})(data));\n};\n\nexport const Bisect = ({\n\tdata = [0, 1],\n\tscale,\n\tx,\n\tattr\n}) => {\n\treturn d3\n\t\t.bisector(d => d[attr])\n\t\t.left(data, scale.invert(x));\n};\n\nexport const Chart = ({\n\twidth,\n\theight,\n\tmargins = {},\n\truler,\n}) => {\n\n\tconst _width = width - margins.left - margins.right;\n\tconst _height = height - margins.top - margins.bottom;\n\n\t// SVG Container\n\tconst svg = d3.create(\"svg:svg\").attr(\"class\", \"background\");\n\n\t// SVG Groups\n\tconst g = svg.append(\"g\");\n\tconst panes = {\n\t\tgrid : g.append(\"g\").attr(\"class\", \"grid\"),\n\t\tarea : g.append('g').attr(\"class\", \"area\"),\n\t\taxis : g.append('g').attr(\"class\", \"axis\"),\n\t\tpoint : g.append('g').attr(\"class\", \"point\"),\n\t\tbrush : g.append(\"g\").attr(\"class\", \"brush\"),\n\t\ttooltip: g.append(\"g\").attr(\"class\", \"tooltip\").attr('display', 'none'),\n\t\truler : g.append('g').attr('class', 'ruler'),\n\t\tlegend : g.append('g').attr(\"class\", \"legend\"),\n\t};\n\n\t// SVG Paths\n\tconst mask = panes.area.append(\"svg:mask\").attr(\"id\", 'elevation-clipper').attr('fill-opacity', 1);\n\tconst maskRect = mask.append(\"svg:rect\").attr('class', 'zoom').attr('fill', 'white'); // white = transparent\n\n\t// Canvas Paths\n\tconst foreignObject = panes.area.append('svg:foreignObject').attr('mask', 'url(#' + mask.attr('id') + ')');\n\tconst canvas = foreignObject.append('xhtml:canvas').attr('class', 'canvas-plot');\n\tconst context = canvas.node().getContext('2d');\n\n\t// Add tooltip\n\tpanes.tooltip.call(Tooltip({ xCoord: 0, yCoord: 0, height: _height, width : _width, labels: {} }));\n\n\t// Add the brushing\n\tlet brush = d3.brushX().on('start.cursor end.cursor brush.cursor', () => panes.brush.select(\".overlay\").attr('cursor', null));\n\n\t// Scales\n\tconst scale = (opts) => ({ x: Scale(opts.x), y: Scale(opts.y)});\n\n\tlet utils = {\n\t\tmask,\n\t\tcanvas,\n\t\tcontext,\n\t\tbrush,\n\t};\n\n\tlet chart = {\n\t\tsvg,\n\t\tg,\n\t\tpanes,\n\t\tutils,\n\t\tscale,\n\t};\n\n\t// Resize\n\tchart._resize = ({\n\t\twidth,\n\t\theight,\n\t\tmargins = {},\n\t\truler,\n\t}) => {\n\n\t\tconst _width = width - margins.left - margins.right;\n\t\tconst _height = height - margins.top - margins.bottom;\n\n\t\tsvg.attr(\"viewBox\", `0 0 ${width} ${height}`)\n\t\t\t.attr(\"width\", width)\n\t\t\t.attr(\"height\", height);\n\n\t\tg.attr(\"transform\", \"translate(\" + margins.left + \",\" + margins.top + \")\");\n\n\t\t// Partially fix: https://github.com/Raruto/leaflet-elevation/issues/123\n\t\tif(/Mac|iPod|iPhone|iPad/.test(navigator.platform) && /AppleWebkit/i.test(navigator.userAgent)) {\n\t\t\tcanvas\n\t\t\t.style(\"transform\", \"translate(\" + margins.left + \"px,\" + margins.top + \"px)\");\n\t\t}\n\n\t\tmaskRect\n\t\t\t.attr(\"x\", 0)\n\t\t\t.attr(\"y\", 0)\n\t\t\t.attr(\"width\", _width)\n\t\t\t.attr(\"height\", _height);\n\n\t\tforeignObject\n\t\t\t.attr('width', _width)\n\t\t\t.attr('height', _height);\n\n\t\tcanvas\n\t\t\t.attr('width', _width)\n\t\t\t.attr('height', _height);\n\n\t\tif (ruler) {\n\t\t\tpanes.ruler.call(Ruler({ height: _height, width: _width }));\n\t\t}\n\n\t\tpanes.brush.call(brush.extent( [ [0,0], [_width, _height] ] ));\n\t\tpanes.brush.select(\".overlay\").attr('cursor', null);\n\n\t\tchart._width = _width;\n\t\tchart._height = _height;\n\n\t\tchart.svg.dispatch('resize', { detail: { width: _width, height: _height } } );\n\n\t};\n\n\tchart.pane = (name) => {\n\t\tif (!panes[name]) {\n\t\t\tpanes[name] = g.append('g').attr(\"class\", name);\n\t\t}\n\t\treturn panes[name];\n\t}\n\n\tchart.get = (name) => utils[name];\n\n\tchart._resize({ width, height, margins});\n\n\treturn chart;\n};\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\n\nexport var Chart = L.Class.extend({\n\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\n\n\tinitialize: function(opts, control) {\n\t\tthis.options = opts;\n\t\tthis.control = control;\n\n\t\tthis._data = [];\n\n\t\t// cache registered components\n\t\tthis._props = {\n\t\t\tscales : {},\n\t\t\tpaths : {},\n\t\t\tareas : {},\n\t\t\tgrids : {},\n\t\t\taxes : {},\n\t\t\tlegendItems : {},\n\t\t\ttooltipItems: {},\n\t\t};\n\n\t\tthis._scales = {};\n\t\tthis._domains = {};\n\t\tthis._ranges = {};\n\t\tthis._paths = {};\n\n\t\tthis._brushEnabled = opts.dragging;\n\t\tthis._zoomEnabled = opts.zooming;\n\n\t\tlet chart = this._chart = D3.Chart(opts);\n\n\t\t// SVG Container\n\t\tlet svg = this._container = chart.svg;\n\n\t\t// Panes\n\t\tthis._grid = chart.pane('grid');\n\t\tthis._area = chart.pane('area');\n\t\tthis._point = chart.pane('point');\n\t\tthis._axis = chart.pane('axis');\n\t\tthis._legend = chart.pane('legend');\n\t\tthis._tooltip = chart.pane('tooltip');\n\t\tthis._ruler = chart.pane('ruler');\n\n\t\t// Scales\n\t\tthis._initScale();\n\n\t\t// Helpers\n\t\tthis._mask = chart.get('mask');\n\t\tthis._context = chart.get('context');\n\t\tthis._brush = chart.get('brush');\n\n\t\tthis._zoom = d3.zoom();\n\t\tthis._drag = d3.drag();\n\n\t\t// Interactions\n\t\tthis._initInteractions();\n\n\t\t// svg.on('resize', (e)=>console.log(e.detail));\n\n\t\t// Handle multi-track segments (BETA)\n\t\tthis._maskGaps = [];\n\t\tcontrol.on('eletrack_added', (e) => {\n\t\t\tthis._maskGaps.push(e.index);\n\t\t\tcontrol.once('eledata_updated', (e) => this._maskGaps.push(e.index));\n\t\t});\n\n\t},\n\n\tupdate: function(props) {\n\t\tif (props) {\n\t\t\tif (props.data) this._data = props.data;\n\t\t\tif (props.options) this.options = props.options;\n\t\t}\n\n\t\tthis._updateScale();\n\t\tthis._updateArea();\n\t\tthis._updateAxis();\n\t\tthis._updateLegend();\n\t\tthis._updateClipper();\n\n\t\treturn this;\n\t},\n\n\trender: function() {\n\t\treturn container => container.append(() => this._container.node());\n\t},\n\n\tclear: function() {\n\t\tthis._resetDrag();\n\t\tthis._hideDiagramIndicator()\n\t\tthis._area.selectAll('path').attr(\"d\", \"M0 0\");\n\t\tthis._context.clearRect(0, 0, this._width(), this._height());\n\n\t\t// if (this._path) {\n\t\t\t// this._x.domain([0, 1]);\n\t\t\t// this._y.domain([0, 1]);\n\t\t// }\n\n\t\tthis._maskGaps = [];\n\t\tthis._mask.selectAll(\".gap\").remove();\n\t},\n\n\t_drawPath: function(name) {\n\t\tlet path = this._paths[name];\n\t\tlet area = this._props.areas[name];\n\n\t\tpath.datum(this._data).attr(\"d\",\n\t\t\tD3.Area(\n\t\t\t\tL.extend({}, area, {\n\t\t\t\t\twidth : this._width(),\n\t\t\t\t\theight : this._height(),\n\t\t\t\t\tscaleX : this._scales[area.scaleX],\n\t\t\t\t\tscaleY : this._scales[area.scaleY]\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\n\t\tif (path.classed('leaflet-hidden')) return;\n\n\t\tif (this.options.preferCanvas) {\n\t\t\t_.drawCanvas(this._context, path);\n\t\t} else {\n\t\t\tthis._area.append(() => path.node());\n\t\t}\n\t},\n\n\t_hasActiveLayers: function() {\n\t\tconst paths = this._paths;\n\t\tfor (var i in paths) {\n\t\t\tif (!paths[i].classed('leaflet-hidden')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Initialize \"d3-brush\".\n\t */\n\t_initBrush: function(e) {\n\t\tconst brush = (e) => {\n\t\t\tif (!this._data.length) return;\n\t\t\tlet extent = e.selection;\n\t\t\tif (extent) {\n\t\t\t\tlet start = this._findIndexForXCoord(extent[0]);\n\t\t\t\tlet end = this._findIndexForXCoord(extent[1]);\n\t\t\t\tthis.fire('dragged', { dragstart: this._data[start], dragend: this._data[end] });\n\t\t\t}\n\t\t}\n\n\t\tconst focus = (e) => {\n\t\t\tif (!this._data.length) return;\n\t\t\tif (e.type == 'brush' && !e.sourceEvent) return;\n\t\t\tlet rect = this._chart.panes.brush.select('.overlay').node();\n\t\t\tlet coords = d3.pointers(e, rect)[0];\n\t\t\tlet xCoord = coords[0];\n\t\t\tlet item = this._data[this._findIndexForXCoord(xCoord)];\n\n\t\t\tthis.fire(\"mouse_move\", { item: item, xCoord: xCoord });\n\t\t};\n\n\t\tthis._brush\n\t\t\t.filter((e) => this._brushEnabled && !e.shiftKey && !e.button)\n\t\t\t.on(\"end.update\", brush)\n\t\t\t.on(\"brush.update\", focus);\n\n\t\tthis._chart.panes.brush\n\t\t\t.on(\"mouseenter.focus touchstart.focus\", this.fire.bind(this, \"mouse_enter\"))\n\t\t\t.on(\"mouseout.focus touchend.focus\", this.fire.bind(this, \"mouse_out\") )\n\t\t\t.on(\"mousemove.focus touchmove.focus\", focus );\n\n\t},\n\n\t/**\n\t * Initialize \"d3-zoom\"\n\t */\n\t_initClipper: function() {\n\t\tlet svg = this._container;\n\t\tlet margin = this.options.margins;\n\n\t\tconst zoom = this._zoom;\n\n\t\tconst onStart = (e) => {\n\t\t\tif (e.sourceEvent && e.sourceEvent.type == \"mousedown\") svg.style('cursor', 'grabbing');\n\t\t\tif (e.transform.k == 1 && e.transform.x == 0) {\n\t\t\t\tthis._container.classed('zoomed', true);\n\t\t\t\t// Apply d3-zoom (bind <clipPath> mask)\n\t\t\t\tif (this._mask) {\n\t\t\t\t\tthis._point.attr('mask', 'url(#' + this._mask.attr('id') + ')');\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.zooming = true;\n\t\t};\n\n\t\tconst onEnd = (e) => {\n\t\t\tif (e.transform.k ==1 && e.transform.x == 0){\n\t\t\t\tthis._container.classed('zoomed', false);\n\t\t\t\t// Apply d3-zoom (bind <clipPath> mask)\n\t\t\t\tif (this._mask) {\n\t\t\t\t\tthis._point.attr('mask', null);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.zooming = false;\n\t\t\tsvg.style('cursor', '');\n\t\t};\n\n\t\tconst onZoom = (e) => {\n\t\t\t// TODO: find a faster way to redraw the chart.\n\t\t\tthis.zooming = false;\n\t\t\tthis._updateScale(); // hacky way for restoring x scale when zooming out\n\t\t\tthis.zooming = true;\n\t\t\tthis._scales.distance = this._x = e.transform.rescaleX(this._x); // calculate x scale at zoom level\n\t\t\tif (this._scales.time) this._scales.time = e.transform.rescaleX(this._scales.time); // calculate x scale at zoom level\n\t\t\tthis._resetDrag();\n\t\t\tif (e.sourceEvent && e.sourceEvent.type == \"mousemove\") {\n\t\t\t\tthis._hideDiagramIndicator();\n\t\t\t}\n\t\t\tthis.fire('zoom');\n\t\t};\n\n\t\tzoom\n\t\t\t.scaleExtent([1, 10])\n\t\t\t.extent([\n\t\t\t\t[margin.left, 0],\n\t\t\t\t[this._width() - margin.right, this._height()]\n\t\t\t])\n\t\t\t.translateExtent([\n\t\t\t\t[margin.left, -Infinity],\n\t\t\t\t[this._width() - margin.right, Infinity]\n\t\t\t])\n\t\t\t.filter((e) => this._zoomEnabled && (e.shiftKey || e.buttons == 4))\n\t\t\t.on(\"start\", onStart)\n\t\t\t.on(\"end\", onEnd)\n\t\t\t.on(\"zoom\", onZoom);\n\n\t\tsvg.call(zoom); // add zoom functionality to \"svg\" group\n\n\t\t// d3.select(\"body\").on(\"keydown.grabzoom keyup.grabzoom\", (e) => svg.style('cursor', e.shiftKey ? 'move' : ''));\n\n\t},\n\n\t_initInteractions: function() {\n\t\tthis._initBrush();\n\t\tthis._initRuler();\n\t\tthis._initClipper();\n\t\tthis._initLegend();\n\t},\n\n\t/**\n\t * Toggle chart data on legend click\n\t */\n\t_initLegend: function() {\n\t\tthis._container.on('legend_clicked', (e) => {\n\t\t\tlet { path, legend, name, enabled } = e.detail;\n\n\t\t\tif (!path) return;\n\n\t\t\tlet label = _.select('text', legend);\n\t\t\tlet rect = _.select('rect', legend);\n\n\t\t\t_.toggleStyle(label, 'text-decoration-line', 'line-through', enabled);\n\t\t\t_.toggleStyle(rect, 'fill-opacity', '0', enabled);\n\t\t\t_.toggleClass(path, 'leaflet-hidden', enabled);\n\n\t\t\tthis._updateArea();\n\n\t\t\tthis.fire(\"elepath_toggle\", { path, name, legend, enabled })\n\t\t});\n\t},\n\n\t/**\n\t * Initialize \"ruler\".\n\t */\n\t_initRuler: function() {\n\t\tif (!this.options.ruler) return;\n\n\t\t// const yMax = this._height();\n\t\tconst formatNum = d3.format(\".0f\");\n\t\tconst drag = this._drag;\n\n\t\tconst label = (e, d) => {\n\t\t\tlet yMax = this._height();\n\t\t\tlet y = this._ruler.data()[0].y;\n\t\t\tif (y >= yMax || y <= 0) this._ruler.select(\".horizontal-drag-label\").text('');\n\t\t\tthis._hideDiagramIndicator();\n\t\t};\n\n\t\tconst position = (e, d) => {\n\t\t\tlet yMax = this._height();\n\t\t\tlet yCoord = d3.pointers(e, this._area.node())[0][1];\n\t\t\tlet y = yCoord > 0 ? (yCoord < yMax ? yCoord : yMax) : 0;\n\t\t\tlet z = this._y.invert(y);\n\t\t\tlet data = L.extend(this._ruler.data()[0], { y: y });\n\n\t\t\tthis._ruler\n\t\t\t\t.data([data])\n\t\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \")\")\n\t\t\t\t.classed('active', y < yMax);\n\n\t\t\tthis._container.select(\".horizontal-drag-label\")\n\t\t\t\t.text(formatNum(z) + \" \" + (this.options.imperial ? 'ft' : 'm'));\n\n\t\t\tthis.fire('ruler_filter', { coords: yCoord < yMax && yCoord > 0 ? this._findCoordsForY(yCoord) : [] });\n\t\t}\n\n\t\tdrag\n\t\t.on(\"start end\", label)\n\t\t.on(\"drag\", position);\n\n\t\tthis._ruler.call(drag);\n\n\t},\n\n\t/**\n\t * Initialize x and y scales\n\t */\n\t_initScale: function() {\n\t\tlet opts = this.options;\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : 'x',\n\t\t\tposition: 'bottom',\n\t\t\tattr : opts.xAttr,\n\t\t\tmin : opts.xAxisMin,\n\t\t\tmax : opts.xAxisMax,\n\t\t\tname : 'distance'\n\t\t});\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : 'y',\n\t\t\tposition : 'left',\n\t\t\tattr : opts.yAttr,\n\t\t\tmin : opts.yAxisMin,\n\t\t\tmax : opts.yAxisMax,\n\t\t\tname : 'altitude'\n\t\t});\n\n\t\tthis._x = this._scales.distance;\n\t\tthis._y = this._scales.altitude;\n\t},\n\n\t_registerAreaPath: function(props) {\n\t\tlet opts = this.options;\n\n\t\tif (!props.xAttr) props.xAttr = opts.xAttr;\n\t\tif (!props.yAttr) props.yAttr = opts.yAttr;\n\t\tif (typeof props.preferCanvas === \"undefined\") props.preferCanvas = opts.preferCanvas;\n\n\t\tlet path = D3.Path(props);\n\n\t\t// Save paths in memory for latter usage\n\t\tthis._paths[props.name] = path;\n\t\tthis._props.areas[props.name] = props;\n\n\t\tif (opts.legend) {\n\t\t\tthis._props.legendItems[props.name] = {\n\t\t\t\tname : props.name,\n\t\t\t\tlabel : props.label,\n\t\t\t\tcolor : props.color,\n\t\t\t\tpath : path\n\t\t\t};\n\t\t}\n\n\t},\n\n\t_registerAxisGrid: function(props) {\n\t\tthis._props.grids[props.name || props.axis] = props;\n\t},\n\n\t_registerAxisScale: function(props) {\n\t\tlet opts = this.options;\n\t\tlet scale = props.scale;\n\n\t\tif (typeof this._scales[props.name] === 'function') {\n\t\t\tprops.scale = this._scales[props.name]; // retrieve cached scale\n\t\t} else if (typeof scale !== 'function') {\n\t\t\tscale = L.extend({\n\t\t\t\tdata : this._data,\n\t\t\t\tforceBounds: opts.forceAxisBounds\n\t\t\t}, scale);\n\n\t\t\tscale.attr = scale.attr || props.name;\n\n\t\t\tlet domain = this._domains[props.name] = D3.Domain(props);\n\t\t\tlet range = this._ranges[props.name] = D3.Range(props);\n\t\t\tscale.range = scale.range || range(this._width(),this._height());\n\t\t\tscale.domain = scale.domain || domain(this._data);\n\n\t\t\tthis._props.scales[props.name] = scale;\n\n\t\t\tprops.scale = this._scales[props.name] = D3.Scale(scale);\n\t\t}\n\n\t\tif (!props.ticks) {\n\t\t\tif (props.axis == 'x') props.ticks = opts.xTicks;\n\t\t\telse if (props.axis == 'y') props.ticks = opts.yTicks;\n\t\t}\n\n\t\tthis._props.axes[props.name] = props;\n\n\t\treturn scale;\n\t},\n\n\t/**\n\t * Add a point of interest over the chart\n\t */\n\t_registerCheckPoint: function(point) {\n\t\tif (!this._data.length) return;\n\n\t\tlet item, x, y;\n\n\t\tif (point.latlng) {\n\t\t\titem = this._data[this._findIndexForLatLng(point.latlng)];\n\t\t\tx = this._x(item.dist);\n\t\t\ty = this._y(item.z);\n\t\t} else if (!isNaN(point.dist)) {\n\t\t\tx = this._x(point.dist);\n\t\t\titem = this._data[this._findIndexForXCoord(x)]\n\t\t\ty = this._y(item.z);\n\t\t} \n\n\t\tthis._point.call(D3.CheckPoint({\n\t\t\tpoint: point,\n\t\t\twidth: this._width(),\n\t\t\theight: this._height(),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t}));\n\t},\n\n\t_registerTooltip: function(props) {\n\t\tthis._props.tooltipItems[props.name] = props;\n\t},\n\n\t_updateArea: function() {\n\t\tlet paths = this._paths;\n\t\t// Reset and update chart profiles\n\t\tthis._context.clearRect(0, 0, this._width(), this._height());\n\t\tfor (var i in paths) {\n\t\t\tif (!paths[i].classed('leaflet-hidden')) {\n\t\t\t\tthis._drawPath(i);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updateAxis: function() {\n\n\t\tlet opts = this.options;\n\n\t\t// Reset chart axis.\n\t\tthis._grid.selectAll('g').remove();\n\t\tthis._axis.selectAll('g').remove();\n\n\t\tlet grids = this._props.grids;\n\t\tlet axes = this._props.axes;\n\t\tlet props, axis, grid;\n\n\t\tlet gridOpts = {\n\t\t\twidth : this._width(),\n\t\t\theight : this._height(),\n\t\t\ttickFormat: \"\",\n\t\t};\n\t\tlet axesOpts = {\n\t\t\twidth : this._width(),\n\t\t\theight : this._height(),\n\t\t};\n\n\t\t// Render grids\n\t\tfor (let i in grids) {\n\t\t\tprops = L.extend({}, gridOpts, grids[i]);\n\t\t\tgrid = D3.Grid(props);\n\t\t\tthis._grid.call(grid);\n\t\t}\n\n\t\t// Render axis\n\t\tfor (let i in axes) {\n\t\t\tif (opts[i] === false || opts[i] === 'summary') continue;\n\t\t\tprops = L.extend({}, axesOpts, axes[i]);\n\t\t\taxis = D3.Axis(props);\n\t\t\tthis._axis.call(axis);\n\t\t}\n\n\t\t// Adjust axis scale positions\n\t\tthis._axis\n\t\t\t.selectAll('.y.axis.right')\n\t\t\t.each((d, i, n) => {\n\n\t\t\t\tlet axis = d3.select(n[i]);\n\t\t\t\tlet transform = axis.attr('transform');\n\t\t\t\tlet translate = transform.substring(transform.indexOf(\"(\") + 1, transform.indexOf(\")\")).split(\",\");\n\n\t\t\t\taxis.attr('transform', 'translate(' + (+translate[0] + (i * 40)) + ',' + translate[1] + ')')\n\n\t\t\t\tif (i > 0) {\n\t\t\t\t\taxis.select(':scope > path') .attr('opacity', 0.25);\n\t\t\t\t\taxis.selectAll(':scope > .tick line').attr('opacity', 0.75);\n\t\t\t\t}\n\n\t\t\t});\n\n\t},\n\n\t_updateClipper: function() {\n\t\tlet margin = this.options.margins;\n\n\t\tthis._zoom\n\t\t\t.scaleExtent([1, 10])\n\t\t\t.extent([\n\t\t\t\t[margin.left, 0],\n\t\t\t\t[this._width() - margin.right, this._height()]\n\t\t\t])\n\t\t\t.translateExtent([\n\t\t\t\t[margin.left, -Infinity],\n\t\t\t\t[this._width() - margin.right, Infinity]\n\t\t\t]);\n\n\t\t// Apply svg mask on multi-track segments (BETA)\n\t\tthis._mask.selectAll(\".gap\").remove()\n\t\tthis._maskGaps.forEach((d, i) => {\n\t\t\tif(i >= this._maskGaps.length - 2) return;\n\t\t\tlet d1 = this._data[this._maskGaps[i]];\n\t\t\tlet d2 = this._data[this._maskGaps[i + 1]];\n\t\t\tlet x1 = this._x(this._data[this._findIndexForLatLng(d1.latlng)].dist);\n\t\t\tlet x2 = this._x(this._data[this._findIndexForLatLng(d2.latlng)].dist);\n\t\t\tthis._mask\n\t\t\t\t.append(\"rect\")\n\t\t\t\t.attr(\"x\", x1)\n\t\t\t\t.attr(\"y\", 0)\n\t\t\t\t.attr(\"width\", x2 - x1 )\n\t\t\t\t.attr(\"height\", this._height())\n\t\t\t\t.attr('class', 'gap')\n\t\t\t\t.attr('fill-opacity', '0.8')\n\t\t\t\t.attr(\"fill\", 'black'); // black = hide\n\t\t});\n\t},\n\n\t_updateLegend: function () {\n\n\t\tif (this.options.legend === false) return;\n\n\t\tlet legends = this._props.legendItems;\n\t\tlet legend;\n\n\t\t// Reset legend items\n\t\tthis._legend.selectAll('g').remove();\n\t\tfor (var i in legends) {\n\t\t\tlegend = D3.LegendItem(\n\t\t\t\tL.extend({\n\t\t\t\t\twidth : this._width(),\n\t\t\t\t\theight : this._height(),\n\t\t\t\t\tmargins: this.options.margins,\n\t\t\t\t}, legends[i])\n\t\t\t)\n\t\t\tthis._legend.append(\"g\").call(legend);\n\t\t}\n\n\t\t// Get legend items\n\t\tlet items = this._legend.selectAll('.legend-item');\n\n\t\t// Calculate legend item positions\n\t\tlet n = items.nodes().length;\n\t\tlet v = Array(Math.floor(n / 2)).fill(null).map((d, i) => (i + 1) * 2 - (1 - Math.sign(n % 2)));\n\t\tlet rev = v.slice().reverse().map((d) => -(d));\n\n\t\tif (n % 2 !== 0) {\n\t\t\trev.push(0);\n\t\t}\n\t\tv = rev.concat(v);\n\n\t\t// Get chart margins\n\t\tlet xAxesB = this._axis.selectAll('.x.axis.bottom').nodes().length;\n\t\tlet marginB = 30 + (xAxesB * 2);\n\t\tlet marginR = n * 30;\n\n\t\t// Adjust chart right margins\n\t\tif (n && this.options.margins.right < marginR) {\n\t\t\tthis.options.margins.right = marginR;\n\t\t\tthis.fire('margins_updated');\n\t\t}\n\n\t\t// Adjust chart bottom margins\n\t\tif(xAxesB && this.options.margins.bottom < marginB) {\n\t\t\tthis.options.margins.bottom = marginB;\n\t\t\tthis.fire('margins_updated');\n\t\t}\n\n\t\titems\n\t\t\t.each((d, i, n) => {\n\n\t\t\t\tlet legend = d3.select(n[i]);\n\t\t\t\tlet rect = legend.select('rect');\n\t\t\t\tlet name = legend.attr('data-name');\n\t\t\t\tlet path = this._paths[name];\n\n\t\t\t\tlet tx = v[i] * 55;\n\t\t\t\tlet ty = xAxesB * 2;\n\n\t\t\t\tlegend\n\n\t\t\t\t// Adjust legend item positions\n\t\t\t\t.attr(\"transform\", \"translate(\" + tx + \", \" + ty + \")\");\n\n\t\t\t\t// Set initial state (disabled controls)\n\t\t\t\tif (name in this.options && this.options[name] == 'disabled') {\n\t\t\t\t\tpath.classed('leaflet-hidden', true);\n\t\t\t\t\tlegend.select('text').style('text-decoration-line', 'line-through');\n\t\t\t\t\tlegend.select('rect').style('fill-opacity', '0');\n\t\t\t\t}\n\n\t\t\t\t// Apply d3-zoom (bind <clipPath> mask)\n\t\t\t\tif (this._mask) {\n\t\t\t\t\tpath.attr('mask', 'url(#' + this._mask.attr('id') + ')');\n\t\t\t\t}\n\n\t\t\t});\n\t},\n\n\t_updateScale: function() {\n\t\tif (this.zooming) return { x: this._x, y: this._y };\n\n\t\tfor (let i in this._scales) {\n\t\t\tthis._scales[i]\n\t\t\t\t.domain(this._domains[i](this._data))\n\t\t\t\t.range(this._ranges[i](this._width(), this._height()))\n\t\t}\n\n\t\treturn { x: this._x, y: this._y };\n\t},\n\n\t/**\n\t * Calculates chart width.\n\t */\n\t_width: function() {\n\t\treturn this._chart._width;\n\t},\n\n\t/**\n\t * Calculates chart height.\n\t */\n\t_height: function() {\n\t\treturn this._chart._height;\n\t},\n\n\t/*\n\t * Finds data entries above a given y-elevation value and returns geo-coordinates\n\t */\n\t_findCoordsForY: function(y) {\n\t\tlet data = this._data;\n\t\tlet z = this._y.invert(y);\n\n\t\t// save indexes of elevation values above the horizontal line\n\t\tconst list = data.reduce((array, item, index) => {\n\t\t\tif (item.z >= z) array.push(index);\n\t\t\treturn array;\n\t\t}, []);\n\n\t\tlet start = 0;\n\t\tlet next;\n\n\t\t// split index list into blocks of coordinates\n\t\tconst coords = list.reduce((array, _, curr) => {\n\t\t\tnext = curr + 1;\n\t\t\tif (list[next] !== list[curr] + 1 || next === list.length) {\n\t\t\t\tarray.push(\n\t\t\t\t\tlist\n\t\t\t\t\t.slice(start, next)\n\t\t\t\t\t.map(i => data[i].latlng)\n\t\t\t\t);\n\t\t\t\tstart = next;\n\t\t\t}\n\t\t\treturn array;\n\t\t}, []);\n\n\t\treturn coords;\n\t},\n\n\t/*\n\t * Finds a data entry for a given x-coordinate of the diagram\n\t */\n\t_findIndexForXCoord: function(x) {\n\t\treturn d3\n\t\t\t.bisector(d => d[this.options.xAttr])\n\t\t\t.left(this._data || [0, 1], this._x.invert(x));\n\t},\n\n\t/*\n\t * Finds a data entry for a given latlng of the map\n\t */\n\t_findIndexForLatLng: function(latlng) {\n\t\tlet result = null;\n\t\tlet d = Infinity;\n\t\tthis._data.forEach((item, index) => {\n\t\t\tlet dist = latlng.distanceTo(item.latlng);\n\t\t\tif (dist < d) {\n\t\t\t\td = dist;\n\t\t\t\tresult = index;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t},\n\n\t/*\n\t * Removes the drag rectangle and zoms back to the total extent of the data.\n\t */\n\t_resetDrag: function() {\n\t\tif (this._chart.panes.brush.select(\".selection\").attr('width')) {\n\t\t\tthis._chart.panes.brush.call(this._brush.clear);\n\t\t\tthis._hideDiagramIndicator();\n\t\t\tthis.fire('reset_drag');\n\t\t}\n\t},\n\n\t_resetZoom: function() {\n\t\tif (this._zoom) {\n\t\t\tthis._zoom.transform(this._chart.svg, d3.zoomIdentity);\n\t\t}\n\t},\n\n\t/**\n\t * Display distance and altitude level (\"focus-rect\").\n\t */\n\t_showDiagramIndicator: function(item, xCoordinate) {\n\t\tthis._tooltip\n\t\t\t.attr(\"display\", null)\n\t\t\t.call(D3.Tooltip({\n\t\t\t\txCoord: xCoordinate,\n\t\t\t\tyCoord: this._y(item[this.options.yAttr]),\n\t\t\t\theight: this._height(),\n\t\t\t\twidth : this._width(),\n\t\t\t\tlabels: this._props.tooltipItems,\n\t\t\t\titem: item\n\t\t\t}));\n\t},\n\n\t_hideDiagramIndicator: function() {\n\t\tthis._tooltip.attr(\"display\", 'none');\n\t},\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\n\nexport var Marker = L.Class.extend({\n\n\tinitialize: function(options) {\n\t\tthis.options = options;\n\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line':\n\t\t\t\t// this._container = d3.create(\"g\").attr(\"class\", \"height-focus-group\");\n\t\t\t\tthis._container = d3.select(map.getPane('elevationPane')).select(\"svg > g\")\n\t\t\t\t\t.attr(\"class\", \"height-focus-group\");\n\t\t\tbreak;\n\t\t\tcase 'position-marker':\n\t\t\t\t// this._marker = L.circleMarker([0, 0], { pane: 'overlayPane', radius: 6, fillColor: '#fff', fillOpacity:1, color: '#000', weight:1, interactive: false });\n\t\t\t\tthis._marker = L.marker([0, 0], { icon: this.options.markerIcon, zIndexOffset: 1000000, interactive: false });\n\t\t\tbreak;\n\t\t}\n\n\t\tthis._labels = {};\n\n\t\treturn this;\n\t},\n\n\taddTo: function(map) {\n\t\tthis._map = map;\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line': this._container.call(D3.PositionMarker({})); break;\n\t\t\tcase 'position-marker': this._marker.addTo(map, { pane: 'overlayPane' }); break;\n\t\t}\n\t\treturn this;\n\t},\n\n\t/**\n\t * Update position marker (\"leaflet-marker\").\n\t */\n\tupdate: function(props) {\n\t\tif (props) this._props = props;\n\t\telse props = this._props;\n\n\t\tif(!props) return;\n\n\t\tif (props.options) this.options = props.options;\n\t\tif (!this._map) this.addTo(props.map);\n\n\t\tthis._latlng = props.item.latlng;\n\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line':\n\t\t\t\tlet point = this._map.latLngToLayerPoint(this._latlng);\n\t\t\t\tpoint = L.extend({}, props.item, this._map._rotate ? this._map.rotatedPointToMapPanePoint(point) : point);\n\t\t\n\t\t\t\tthis._container.classed(\"leaflet-hidden\", false);\n\t\t\t\tthis._container.call(D3.PositionMarker({\n\t\t\t\t\ttheme : this.options.theme,\n\t\t\t\t\txCoord: point.x,\n\t\t\t\t\tyCoord: point.y,\n\t\t\t\t\tlength: point.y - (this._height() / props.maxElevation * point.z), // normalized Y\n\t\t\t\t\tlabels: this._labels,\n\t\t\t\t\titem: point\n\t\t\t\t}));\n\t\t\tbreak;\n\t\t\tcase 'position-marker':\n\t\t\t\t_.removeClass(this._marker.getElement(), 'leaflet-hidden');\n\t\t\t\tthis._marker.setLatLng(this._latlng);\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t/*\n\t * Hides the position/height indicator marker drawn onto the map\n\t */\n\tremove: function() {\n\t\tthis._props = null;\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line': this._container && this._container.classed(\"leaflet-hidden\", true); break;\n\t\t\tcase 'position-marker': _.addClass(this._marker.getElement(), 'leaflet-hidden'); break;\n\t\t}\n\t},\n\n\tgetLatLng: function() {\n\t\treturn this._latlng;\n\t},\n\n\t/**\n\t * Calculates chart height.\n\t */\n\t_height: function() {\n\t\tlet opts = this.options;\n\t\treturn opts.height - opts.margins.top - opts.margins.bottom;\n\t},\n\n\t_registerTooltip: function(props) {\n\t\tthis._labels[props.name] = props;\n\t}\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\n\nexport var Summary = L.Class.extend({\n\tinitialize: function(opts, control) {\n\t\tthis.options = opts;\n\t\tthis.control = control;\n\n\t\tlet summary = this._container = _.create(\"div\", \"elevation-summary \" + (opts.summary ? opts.summary + \"-summary\" : ''));\n\t\t_.style(summary, 'max-width', opts.width ? opts.width + 'px' : '');\n\t},\n\n\trender: function() {\n\t\treturn container => container.append(() => this._container);\n\t},\n\n\treset: function() {\n\t\tthis._container.innerHTML = '';\n\t},\n\n\tappend: function(className, label, value) {\n\t\tthis._container.innerHTML += `<span class=\"${className}\"><span class=\"summarylabel\">${label}</span><span class=\"summaryvalue\">${value}</span></span>`;\n\t\treturn this;\n\t},\n\n\t_registerSummary: function(data) {\n\t\tfor (let i in data) {\n\t\t\tthis.append(i, L._(data[i].label), typeof data[i].value !== \"function\" ? data[i].value : data[i].value(this.control.track_info));\n\t\t}\n\t}\n\n});\n","import * as _ from './utils';\n\nexport var Options = {\n\tautofitBounds: true,\n\tautohide: !L.Browser.mobile,\n\tautohideMarker: true,\n\talmostover: true,\n\taltitude: true,\n\tcollapsed: false,\n\tdetached: true,\n\tdistance: true,\n\tdistanceMarkers: false,\n\tdecimalsX: 2,\n\tdecimalsY: 0,\n\tdragging: !L.Browser.mobile,\n\tdownloadLink: 'link',\n\televationDiv: \"#elevation-div\",\n\tfollowMarker: true,\n\tforceAxisBounds: false,\n\theight: 200,\n\timperial: false,\n\tinterpolation: \"curveLinear\",\n\tlazyLoadJS: true,\n\tlegend: true,\n\tmargins: {\n\t\ttop: 30,\n\t\tright: 30,\n\t\tbottom: 30,\n\t\tleft: 40\n\t},\n\tmarker: 'elevation-line',\n\tmarkerIcon: L.divIcon({\n\t\tclassName: 'elevation-position-marker',\n\t\thtml: '<i class=\"elevation-position-icon\"></i>',\n\t\ticonSize: [32, 32],\n\t\ticonAnchor: [16, 16],\n\t}),\n\tposition: \"topright\",\n\tpolyline: {\n\t\tclassName: 'elevation-polyline',\n\t\tcolor: '#000',\n\t\topacity: 0.75,\n\t\tweight: 5,\n\t\tlineCap: 'round'\n\t},\n\tpolylineSegments: {\n\t\tclassName: 'elevation-polyline-segments',\n\t\tcolor: '#F00',\n\t\tinteractive: false,\n\t},\n\tpreferCanvas: false,\n\treverseCoords: false,\n\truler: true,\n\tskipNullZCoords: false,\n\ttheme: \"lightblue-theme\",\n\tsummary: 'inline',\n\tslope: false,\n\tspeed: false,\n\tsLimit: undefined,\n\ttime: false,\n\ttimeFactor: 3600,\n\ttimeFormat: false,\n\ttimestamps: false,\n\tsDeltaMax: undefined,\n\tsInterpolation: \"curveStepAfter\",\n\tsRange: undefined,\n\twidth: 600,\n\twaypoints: true,\n\twptIcons: {\n\t\t'': L.divIcon({\n\t\t\tclassName: 'elevation-waypoint-marker',\n\t\t\thtml: '<i class=\"elevation-waypoint-icon\"></i>',\n\t\t\ticonSize: [30, 30],\n\t\t\ticonAnchor: [8, 30],\n\t\t}),\n\t},\n\twptLabels: true,\n\txAttr: \"dist\",\n\txLabel: \"km\",\n\txTicks: undefined,\n\tyAttr: \"z\",\n\tyAxisMax: undefined,\n\tyAxisMin: undefined,\n\tyLabel: \"m\",\n\tyTicks: undefined,\n\tzFollow: false,\n\tzooming: !L.Browser.Mobile,\n};\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Chart } from './chart';\nimport { Marker } from './marker';\nimport { Summary } from './summary';\nimport { Options } from './options';\n\nexport const Elevation = L.Control.Elevation = L.Control.extend({\n\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\n\n\toptions: Options,\n\t__mileFactor: 0.621371,\n\t__footFactor: 3.28084,\n\t__D3: 'https://unpkg.com/d3@6.5.0/dist/d3.min.js',\n\t__TOGEOJSON: 'https://unpkg.com/@tmcw/togeojson@4.5.0/dist/togeojson.umd.js',\n\t__LGEOMUTIL: 'https://unpkg.com/leaflet-geometryutil@0.9.3/src/leaflet.geometryutil.js',\n\t__LALMOSTOVER: 'https://unpkg.com/leaflet-almostover@1.0.1/src/leaflet.almostover.js',\n\t__LDISTANCEM: 'https://unpkg.com/@raruto/leaflet-elevation@1.9.0/libs/leaflet-distance-marker.min.js',\n\n\t/*\n\t * Add data to the diagram either from GPX or GeoJSON and update the axis domain and data\n\t */\n\taddData: function(d, layer) {\n\t\tthis.lazyLoad(this.__D3)\n\t\t\t.then(() => {\n\t\t\t\tif (typeof layer === \"undefined\" && d.on) {\n\t\t\t\t\tlayer = d;\n\t\t\t\t}\n\t\t\t\tthis._addData(d);\n\t\t\t\tthis._addLayer(layer);\n\t\t\t\tthis._fireEvt(\"eledata_added\", { data: d, layer: layer, track_info: this.track_info });\n\t\t\t});\n\t},\n\n\t/**\n\t * Adds the control to the given map.\n\t */\n\taddTo: function(map) {\n\t\tif (this.options.detached) {\n\t\t\tlet eleDiv = this._initElevationDiv();\n\t\t\tif (!eleDiv.isConnected) _.insert(map.getContainer(), eleDiv, 'afterend');\n\t\t\t_.append(eleDiv, this.onAdd(map));\n\t\t} else {\n\t\t\tL.Control.prototype.addTo.call(this, map);\n\t\t}\n\t\treturn this;\n\t},\n\n\t/*\n\t * Reset data and display\n\t */\n\tclear: function() {\n\t\tif (this._marker) this._marker.remove();\n\t\tif (this._chart) this._clearChart();\n\t\tif (this._layers) this._clearLayers();\n\t\tif (this._markers) this._clearMarkers();\n\n\t\tthis._data = [];\n\t\tthis.track_info = {};\n\n\t\tthis._fireEvt(\"eledata_clear\");\n\n\t\tthis._updateChart();\n\t},\n\n\t_clearChart: function() {\n\t\tif (this._events && this._events.elechart_updated) {\n\t\t\tthis._events.elechart_updated.forEach(e => this.off('elechart_updated', e.fn, e.ctx));\n\t\t}\n\t\tif (this._chart && this._chart._container) {\n\t\t\tthis._chart._container.selectAll('g.point .point').remove();\n\t\t\tthis._chart.clear();\n\t\t}\n\t},\n\n\t_clearLayers: function() {\n\t\tif (this._layers && this._layers.eachLayer) {\n\t\t\tthis._layers.eachLayer(l => l.remove())\n\t\t\tthis._layers.clearLayers();\n\t\t}\n\t},\n\n\t_clearMarkers: function() {\n\t\tif (this._markers && this._markers.eachLayer) {\n\t\t\tthis._markers.eachLayer(l => l.remove())\n\t\t\tthis._markers.clearLayers();\n\t\t}\n\t},\n\n\t/**\n\t * Disable chart brushing.\n\t */\n\tdisableBrush: function() {\n\t\tthis._chart._brushEnabled = false;\n\t\tthis._resetDrag();\n\t},\n\n\t/**\n\t * Enable chart brushing.\n\t */\n\tenableBrush: function() {\n\t\tthis._chart._brushEnabled = true;\n\t},\n\n\t/**\n\t * Disable chart zooming.\n\t */\n\tdisableZoom: function() {\n\t\tthis._chart._zoomEnabled = false;\n\t\tthis._chart._resetZoom();\n\t},\n\n\t/**\n\t * Enable chart zooming.\n\t */\n\tenableZoom: function() {\n\t\tthis._chart._zoomEnabled = true;\n\t},\n\n\t/**\n\t * Sets a map view that contains the given geographical bounds.\n\t */\n\tfitBounds: function(bounds) {\n\t\tbounds = bounds || this.getBounds();\n\t\tif (this._map && bounds.isValid()) this._map.fitBounds(bounds);\n\t},\n\n\tgetBounds: function(data) {\n\t\tdata = data || this._data;\n\t\treturn L.latLngBounds(data.map((d) => d.latlng));\n\t},\n\n\t/**\n\t * Get default zoom level when \"followMarker\" is true.\n\t */\n\tgetZFollow: function() {\n\t\treturn this.options.zFollow;\n\t},\n\n\t/**\n\t * Hide current elevation chart profile.\n\t */\n\thide: function() {\n\t\t_.style(this._container, \"display\", \"none\");\n\t},\n\n\t/**\n\t * Initialize chart control \"options\" and \"container\".\n\t */\n\tinitialize: function(options) {\n\t\tthis._data = [];\n\t\tthis._layers = L.featureGroup();\n\t\tthis._markers = L.featureGroup();\n\t\tthis._markedSegments = L.polyline([]);\n\t\tthis._chartEnabled = true,\n\t\tthis.track_info = {};\n\n\t\tL.setOptions(this, options);\n\n\t\tif (this.options.followMarker) this._setMapView = L.Util.throttle(this._setMapView, 300, this);\n\t\tif (this.options.legend) this.options.margins.bottom += 30;\n\t\tif (this.options.theme) this.options.polylineSegments.className += ' ' + this.options.theme;\n\t\tif (this.options.wptIcons === true) this.options.wptIcons = Options.wptIcons;\n\t\tif (this.options.distanceMarkers === true) this.options.distanceMarkers = { lazy: true };\n\n\t\tthis._markedSegments.setStyle(this.options.polylineSegments);\n\n\t\t// Leaflet canvas renderer colors\n\t\tL.extend(D3.Colors, this.options.colors || {});\n\n\t\t// Various stuff\n\t\tthis._fixCanvasPaths();\n\t\tthis._fixTooltipSize();\n\t},\n\n\t/**\n\t * Javascript scripts downloader (lazy loader)\n\t */\n\tlazyLoad: function(src, condition = false, loader = '') {\n\t\tif (!this.options.lazyLoadJS) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tswitch(src) {\n\t\t\tcase this.__D3:\n\t\t\t\tloader = '_d3LazyLoader';\n\t\t\t\tcondition = typeof d3 !== 'object';\n\t\t\tbreak;\n\t\t\tcase this.__TOGEOJSON:\n\t\t\t\tloader = '_togeojsonLazyLoader';\n\t\t\t\tcondition = typeof toGeoJSON !== 'object';\n\t\t\tbreak;\n\t\t\tcase this.__LGEOMUTIL:\n\t\t\t\tloader = '_geomutilLazyLoader';\n\t\t\t\tcondition = typeof L.GeometryUtil !== 'object';\n\t\t\tbreak;\n\t\t\tcase this.__LALMOSTOVER:\n\t\t\t\tloader = '_almostoverLazyLoader';\n\t\t\t\tcondition = typeof L.Handler.AlmostOver !== 'function';\n\t\t\tbreak;\n\t\t\tcase this.__LDISTANCEM:\n\t\t\t\tloader = '_distanceMarkersLazyLoader';\n\t\t\t\tcondition = typeof L.DistanceMarkers !== 'function';\n\t\t\tbreak;\n\t\t}\n\t\treturn L.Control.Elevation[loader] = _.lazyLoader(src, condition, L.Control.Elevation[loader]);\n\t},\n\n\t/**\n\t * Load elevation data (GPX, GeoJSON or KML).\n\t */\n\tload: function(data) {\n\t\tthis._parseFromString(data).then( geojson => geojson ? this._loadLayer(geojson) : this._loadFile(data));\n\t},\n\n\t/**\n\t * Create container DOM element and related event listeners.\n\t * Called on control.addTo(map).\n\t */\n\tonAdd: function(map) {\n\t\tthis._map = map;\n\n\t\tlet container = this._container = _.create(\"div\", \"elevation-control elevation \" + this.options.theme + \" \" + (this.options.detached ? '' : 'leaflet-control'));\n\t\t\n\t\tthis.lazyLoad(this.__D3)\n\t\t\t.then(() => {\n\t\t\t\tthis._initButton(container);\n\t\t\t\tthis._initChart(container);\n\t\t\t\tthis._initSummary(container);\n\t\t\t\tthis._initMarker(map);\n\t\t\t\tthis._initLayer(map);\n\n\t\t\t\tmap\n\t\t\t\t\t.on('zoom viewreset zoomanim', this._hideMarker, this)\n\t\t\t\t\t.on('resize', this._resetView, this)\n\t\t\t\t\t.on('resize', this._resizeChart, this)\n\t\t\t\t\t.on('rotate', this._rotateMarker, this)\n\t\t\t\t\t.on('mousedown', this._resetDrag, this);\n\n\t\t\t\t_.on(map.getContainer(), 'mousewheel', this._resetDrag, this);\n\t\t\t\t_.on(map.getContainer(), 'touchstart', this._resetDrag, this);\n\t\t\t\t_.on(document, 'keydown', this._keydownHandler, this);\n\n\t\t\t\tthis\n\t\t\t\t\t.on('eledata_added eledata_loaded', this._updateChart, this)\n\t\t\t\t\t.on('eledata_added eledata_loaded', this._updateSummary, this);\n\n\t\t\t\tthis._updateChart();\n\t\t\t\tthis._updateSummary();\n\t\t\t});\n\n\t\treturn container;\n\t},\n\n\t/**\n\t * Clean up control code and related event listeners.\n\t * Called on control.remove().\n\t */\n\tonRemove: function(map) {\n\t\tthis._container = null;\n\n\t\tmap\n\t\t\t.off('zoom viewreset zoomanim', this._hideMarker, this)\n\t\t\t.off('resize', this._resetView, this)\n\t\t\t.off('resize', this._resizeChart, this)\n\t\t\t.off('mousedown', this._resetDrag, this);\n\n\t\t_.off(map.getContainer(), 'mousewheel', this._resetDrag, this);\n\t\t_.off(map.getContainer(), 'touchstart', this._resetDrag, this);\n\t\t_.off(document, 'keydown', this._keydownHandler, this);\n\n\t\tthis\n\t\t\t.off('eledata_added eledata_loaded', this._updateChart, this)\n\t\t\t.off('eledata_added eledata_loaded', this._updateSummary, this);\n\t},\n\n\t/**\n\t * Redraws the chart control. Sometimes useful after screen resize.\n\t */\n\tredraw: function() {\n\t\tthis._resizeChart();\n\t},\n\n\t/**\n\t * Set default zoom level when \"followMarker\" is true.\n\t */\n\tsetZFollow: function(zoom) {\n\t\tthis.options.zFollow = zoom;\n\t},\n\n\t/**\n\t * Hide current elevation chart profile.\n\t */\n\tshow: function() {\n\t\t_.style(this._container, \"display\", \"block\");\n\t},\n\n\t/*\n\t * Parsing data either from GPX or GeoJSON and update the diagram data\n\t */\n\t_addData: function(d) {\n\t\tif (!d) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * Standard GeoJSON --> doesn't handle \"time\", \"heart\", …\n\t\t */\n\t\tlet geom = d.geometry;\n\t\tif (geom) {\n\t\t\tswitch (geom.type) {\n\t\t\t\tcase 'LineString':\n\t\t\t\t\tthis._addGeoJSONData(geom.coordinates);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'MultiLineString':\n\t\t\t\t\t_.each(geom.coordinates, coords => this._addGeoJSONData(coords));\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn('Unsopperted GeoJSON feature geometry type:' + geom.type);\n\t\t\t}\n\t\t}\n\t\tif (d.type === \"FeatureCollection\") {\n\t\t\t_.each(d.features, feature => this._addData(feature));\n\t\t}\n\n\t\t/**\n\t\t * Extended GeoJSON --> rely on leaflet implementation\n\t\t */\n\t\tif (d._latlngs) {\n\t\t\tthis._addGeoJSONData(d._latlngs, d.feature && d.feature.properties);\n\t\t}\n\t},\n\n\t/*\n\t * Parsing of GeoJSON data lines and their elevation in z-coordinate\n\t */\n\t_addGeoJSONData: function(coords, properties) {\n\t\tcoords.forEach((point, i) => {\n\n\t\t\t// Inspired by L.GPX layer properties\n\t\t\tpoint.meta = point.meta ?? { time: null, ele: null, hr: null, cad: null, atemp: null };\n\t\t\t\n\t\t\t// \"alt\" property is generated inside \"leaflet\"\n\t\t\tif (\"alt\" in point) point.meta.ele = point.alt;\n\n\t\t\t// \"coordinateProperties\" property is generated inside \"@tmcw/toGeoJSON\"\n\t\t\tlet props = (properties && properties.coordinateProperties) || properties;\n\t\t\tif (props) {\n\t\t\t\tif(\"coordTimes\" in props) point.meta.time = new Date(Date.parse(props.coordTimes[i]));\n\t\t\t\telse if(\"times\" in props) point.meta.time = new Date(Date.parse(props.times[i]));\n\t\t\t\telse if(\"time\" in props) point.meta.time = new Date(Date.parse((typeof props.time === 'object' ? props.time[i] : props.time)));\n\t\t\t\tif (\"heartRates\" in props) point.meta.hr = parseInt(props.heartRates[i]);\n\t\t\t\telse if(\"heartRate\" in props) point.meta.hr = parseInt((typeof props.heartRate === 'object' ? props.heartRate[i] : props.heartRate));\n\t\t\t\telse if(\"heart\" in props) point.meta.hr = parseInt((typeof props.heart === 'object' ? props.heart[i] : props.heart));\n\t\t\t\t// TODO: ask to \"@tmcw/toGeoJSON\" for \"cadence\" and \"temperature\" implementation\n\t\t\t}\n\n\t\t\tthis._addPoint(\n\t\t\t\tpoint.lat ?? point[1], \n\t\t\t\tpoint.lng ?? point[0],\n\t\t\t\tpoint.alt ?? point.meta.ele ?? point[2]\n\t\t\t);\n\n\t\t\tthis._fireEvt(\"elepoint_added\", { point: point, index: this._data.length - 1 });\n\t\t});\n\n\t\tthis._fireEvt(\"eletrack_added\", { coords: coords, index: this._data.length - 1 });\n\t},\n\n\t/*\n\t * Parse and push a single (x, y, z) point to current elevation profile.\n\t */\n\t_addPoint: function(x, y, z) {\n\t\tif (this.options.reverseCoords) {\n\t\t\t[x, y] = [y, x];\n\t\t}\n\n\t\tthis._data.push({\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tz: z,\n\t\t\tlatlng: L.latLng(x, y, z)\n\t\t});\n\n\t\tthis._fireEvt(\"eledata_updated\", { index: this._data.length - 1 });\n\t},\n\n\t_addLayer: function(layer) {\n\t\tif (layer) this._layers.addLayer(layer)\n\t\t// Postpone adding the distance markers (lazy: true)\n\t\tif (layer && this.options.distanceMarkers && this.options.distanceMarkers.lazy) {\n\t\t\tlayer.on('add remove', (e) => L.DistanceMarkers && e.target instanceof L.Polyline && e.target[e.type + 'DistanceMarkers']());\n\t\t}\n\t},\n\n\t_addMarker: function(marker) {\n\t\tif (marker) this._markers.addLayer(marker)\n\t},\n\n\t_bindPopup: function(marker) {\n\t\tlet popup = marker._popup;\n\t\tif (popup) {\n\t\t\tpopup.options.className = 'elevation-popup';\n\t\t\tif (popup._content) {\n\t\t\t\tpopup._content = decodeURI(popup._content);\n\t\t\t\tpopup.bindTooltip(popup._content, { direction: 'auto', sticky: true, opacity: 1, className: 'elevation-tooltip' }).openTooltip();\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Initialize \"L.AlmostOver\" integration\n\t */\n\t_initAlmostOverHandler: function(map, layer) {\n\t\tif(!map || !this.options.almostOver) return;\n\t\tthis.lazyLoad(this.__LGEOMUTIL)\n\t\t\t.then(() => this.lazyLoad(this.__LALMOSTOVER))\n\t\t\t.then(() => {\n\t\t\t\t\tmap.addHandler('almostOver', L.Handler.AlmostOver)\n\t\t\t\t\tif (L.GeometryUtil && map.almostOver && map.almostOver.enabled()) {\n\t\t\t\t\t\tmap.almostOver.addLayer(layer);\n\t\t\t\t\t\tmap\n\t\t\t\t\t\t\t.on('almost:move', (e) => this._mousemoveLayerHandler(e))\n\t\t\t\t\t\t\t.on('almost:out', (e) => this._mouseoutHandler(e));\n\t\t\t\t\t}\n\t\t\t});\n\t},\n\n\t/**\n\t * Initialize \"L.DistanceMarkers\" integration\n\t */\n\t_initDistanceMarkers: function(map, layer) {\n\t\tif (!map) return;\n\t\tif (this.options.distanceMarkers) {\n\t\t\tthis.lazyLoad(this.__LGEOMUTIL)\n\t\t\t\t.then(() => this.lazyLoad(this.__LDISTANCEM))\n\t\t\t\t.then(() => this.options.polyline && layer.addTo(map));\n\t\t} else if (this.options.polyline) {\n\t\t\tlayer.addTo(map);\n\t\t}\n\t},\n\n\t/**\n\t * Adds the control to the given \"detached\" div.\n\t */\n\t_initElevationDiv: function() {\n\t\tlet eleDiv = _.select(this.options.elevationDiv);\n\t\tif (!eleDiv) {\n\t\t\tthis.options.elevationDiv = '#elevation-div_' + _.randomId();\n\t\t\teleDiv = _.create('div', 'leaflet-control elevation elevation-div', { id: this.options.elevationDiv.substr(1) });\n\t\t}\n\t\tif (this.options.detached) {\n\t\t\t_.replaceClass(eleDiv, 'leaflet-control', 'elevation-detached');\n\t\t}\n\t\treturn this.eleDiv = eleDiv;\n\t},\n\n\t/**\n\t * Initialize \"L.AlmostOver\" and \"L.DistanceMarkers\"\n\t */\n\t_initMapIntegrations: function(control, layer) {\n\t\tlet map = control._map;\n\t\tif (control._map) {\n\t\t\tmap.once('layeradd', (e) => control.options.autofitBounds && control.fitBounds(layer.getBounds()));\n\t\t\tif (!L.Browser.mobile) {\n\t\t\t\tcontrol._initAlmostOverHandler(map, layer);\n\t\t\t\tcontrol._initDistanceMarkers(map, layer);\n\t\t\t} else if (control.options.polyline) {\n\t\t\t\tlayer.addTo(map);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Undefined elevation map object\");;\n\t\t}\n\t},\n\n\t/*\n\t * Collapse current chart control.\n\t */\n\t_collapse: function() {\n\t\t_.replaceClass(this._container, 'elevation-expanded', 'elevation-collapsed');\n\t},\n\n\t/*\n\t * Expand current chart control.\n\t */\n\t_expand: function() {\n\t\t_.replaceClass(this._container, 'elevation-collapsed', 'elevation-expanded');\n\t},\n\n\t/**\n\t * Add some basic colors to leaflet canvas renderer (preferCanvas: true).\n\t */\n\t_fixCanvasPaths: function() {\n\t\tlet oldProto = L.Canvas.prototype._fillStroke;\n\t\tlet control = this;\n\t\tL.Canvas.include({\n\t\t\t_fillStroke: function(ctx, layer) {\n\t\t\t\tif (control._layers.hasLayer(layer)) {\n\n\t\t\t\t\tlet theme = control.options.theme.replace('-theme', '');\n\t\t\t\t\tlet color = D3.Colors[theme] || {};\n\t\t\t\t\tlet options = layer.options;\n\n\t\t\t\t\toptions.color = color.line || color.area || theme;\n\t\t\t\t\toptions.stroke = !!options.color;\n\n\t\t\t\t\toldProto.call(this, ctx, layer);\n\n\t\t\t\t\tif (options.stroke && options.weight !== 0) {\n\t\t\t\t\t\tlet oldVal = ctx.globalCompositeOperation || 'source-over';\n\t\t\t\t\t\tctx.globalCompositeOperation = 'destination-over'\n\t\t\t\t\t\tctx.strokeStyle = color.outline || '#FFF';\n\t\t\t\t\t\tctx.lineWidth = options.weight * 1.75;\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\tctx.globalCompositeOperation = oldVal;\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\toldProto.call(this, ctx, layer);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n\t * Partial fix for initial tooltip size\n\t * \n\t * @link https://github.com/Raruto/leaflet-elevation/issues/81#issuecomment-713477050\n\t */\n\t_fixTooltipSize: function() {\n\t\tthis.on('elechart_init', () =>\n\t\t\tthis.once('elechart_change elechart_hover', e => {\n\t\t\t\tif (this._chartEnabled) {\n\t\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t\t}\n\t\t\t\tthis._updateMarker(e.data);\n\t\t\t})\n\t\t);\n\t},\n\n\t/*\n\t * Finds a data entry for the given LatLng\n\t */\n\t_findItemForLatLng: function(latlng) {\n\t\treturn this._data[this._chart._findIndexForLatLng(latlng)];\n\t},\n\n\t/*\n\t * Finds a data entry for the given xDiagCoord\n\t */\n\t_findItemForX: function(x) {\n\t\treturn this._data[this._chart._findIndexForXCoord(x)];\n\t},\n\n\t/**\n\t * Fires an event of the specified type.\n\t */\n\t_fireEvt: function(type, data, propagate) {\n\t\tif (this.fire) this.fire(type, data, propagate);\n\t\tif (this._map) this._map.fire(type, data, propagate);\n\t},\n\n\t/**\n\t * Calculates chart height.\n\t */\n\t_height: function() {\n\t\tif (this._chart) return this._chart._height();\n\t\tlet opts = this.options;\n\t\treturn opts.height - opts.margins.top - opts.margins.bottom;\n\t},\n\n\t/*\n\t * Hides the position/height indicator marker drawn onto the map\n\t */\n\t_hideMarker: function() {\n\t\tif (this.options.autohideMarker) {\n\t\t\tthis._marker.remove();\n\t\t}\n\t},\n\n\t/**\n\t * Generate \"svg\" chart DOM element.\n\t */\n\t_initChart: function(container) {\n\t\tlet opts = this.options;\n\n\t\topts.xTicks = this._xTicks();\n\t\topts.yTicks = this._yTicks();\n\n\t\tif (opts.detached) {\n\t\t\tlet { offsetWidth, offsetHeight} = this.eleDiv;\n\t\t\tif (offsetWidth > 0) opts.width = offsetWidth;\n\t\t\tif (offsetHeight > 20) opts.height = offsetHeight - 20; // 20 = horizontal scrollbar size.\n\t\t} else {\n\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\topts._maxWidth = opts._maxWidth > opts.width ? opts._maxWidth : opts.width;\n\t\t\tthis._container.style.maxWidth = opts._maxWidth + 'px';\n\t\t\tif (opts._maxWidth > clientWidth) opts.width = clientWidth - 30;\n\t\t}\n\n\t\tlet chart = this._chart = new Chart(opts, this);\n\n\t\tthis._x = this._chart._x;\n\t\tthis._y = this._chart._y;\n\n\t\td3\n\t\t\t.select(container)\n\t\t\t.call(chart.render())\n\n\t\tchart\n\t\t\t.on('reset_drag', this._hideMarker, this)\n\t\t\t.on('mouse_enter', this._fireEvt.bind('elechart_enter'), this)\n\t\t\t.on('dragged', this._dragendHandler, this)\n\t\t\t.on('mouse_move', this._mousemoveHandler, this)\n\t\t\t.on('mouse_out', this._mouseoutHandler, this)\n\t\t\t.on('ruler_filter', this._rulerFilterHandler, this)\n\t\t\t.on('zoom', this._updateChart, this)\n\t\t\t.on('elepath_toggle', this._toggleChartHandler, this)\n\t\t\t.on('margins_updated',this._resizeChart, this);\n\n\n\t\tthis._fireEvt(\"elechart_axis\");\n\t\tif (this.options.legend) this._fireEvt(\"elechart_legend\");\n\n\t\tthis._fireEvt(\"elechart_init\");\n\t},\n\n\t_initLayer: function() {\n\t\tthis._layers\n\t\t\t.on('layeradd layerremove', (e) => {\n\t\t\t\tlet layer = e.layer\n\t\t\t\tlet node = layer.getElement && layer.getElement();\n\t\t\t\t_.toggleClass(node, this.options.polyline.className + ' ' + this.options.theme, e.type == 'layeradd');\n\t\t\t\t_.toggleEvent(layer, \"mousemove\", this._mousemoveLayerHandler.bind(this), e.type == 'layeradd')\n\t\t\t\t_.toggleEvent(layer, \"mouseout\", this._mouseoutHandler.bind(this), e.type == 'layeradd');\n\t\t\t});\n\t},\n\n\t_initMarker: function(map) {\n\t\tlet pane = map.getPane('elevationPane');\n\t\tif (!pane) {\n\t\t\tpane = this._pane = map.createPane('elevationPane', map.getPane('norotatePane') || map.getPane('mapPane'));\n\t\t\tpane.style.zIndex = 625; // This pane is above markers but below popups.\n\t\t\tpane.style.pointerEvents = 'none';\n\t\t}\n\n\t\tif (this._renderer) this._renderer.remove()\n\t\tthis._renderer = L.svg({ pane: \"elevationPane\" }).addTo(this._map); // default leaflet svg renderer\n\t\tthis._marker = new Marker(this.options);\n\n\t\tthis._fireEvt(\"elechart_marker\");\n\t},\n\n\t/**\n\t * Inspired by L.Control.Layers\n\t */\n\t_initButton: function(container) {\n\n\t\tif (L.Browser.mobile || !this.options.detached) {\n\t\t\tL.DomEvent\n\t\t\t\t.disableClickPropagation(container)\n\t\t\t\t.disableScrollPropagation(container);\n\t\t}\n\n\t\tif (!this.options.detached) {\n\t\t\tlet link = this._button = _.create('a', \"elevation-toggle elevation-toggle-icon\" + (this.options.autohide ? \"\" : \" close-button\"), { href: '#', title: L._('Elevation') }, container);\n\n\t\t\tif (this.options.collapsed) {\n\t\t\t\tthis._collapse();\n\t\t\t\tif (this.options.autohide) {\n\t\t\t\t\t_.on(container, 'mouseover', this._expand, this);\n\t\t\t\t\t_.on(container, 'mouseout', this._collapse, this);\n\t\t\t\t} else {\n\t\t\t\t\t_.on(link, 'click', L.DomEvent.stop);\n\t\t\t\t\t_.on(link, 'click', this._toggle, this);\n\t\t\t\t}\n\n\t\t\t\t_.on(link, 'focus', this._toggle, this);\n\n\t\t\t\tthis._map.on('click', this._collapse, this);\n\t\t\t}\n\t\t}\n\t},\n\n\t_initSummary: function(container) {\n\t\tthis._summary = new Summary({ summary: this.options.summary }, this);\n\n\t\td3.select(container).call(this._summary.render());\n\t},\n\n\t_keydownHandler: function(e) {\n\t\tif(!this.options.detached && e.key === \"Escape\"){\n\t\t\tthis._collapse()\n\t\t};\n\t},\n\n\t/**\n\t * Retrieve data from a remote url (HTTP).\n\t */\n\t_loadFile: function(url) {\n\t\tfetch(url)\n\t\t\t.then((response) => response.text())\n\t\t\t.then((data) => {\n\t\t\t\tthis._downloadURL = url; // TODO: handle multiple urls?\n\t\t\t\tthis._parseFromString(data)\n\t\t\t\t\t.then( geojson => geojson && this._loadLayer(geojson));\n\t\t\t}).catch((err) => console.warn(err));\n\t},\n\n\t/**\n\t * Simple GeoJSON data loader (L.GeoJSON).\n\t */\n\t_loadLayer: function(geojson) {\n\t\tlet control = this;\n\n\t\tlet { wptIcons, wptLabels } = control.options;\n\n\t\tlet layer = L.geoJson(geojson, {\n\t\t\tdistanceMarkers: control.options.distanceMarkers,\n\t\t\tstyle: (feature) => {\n\t\t\t\tlet style = L.extend({}, control.options.polyline);\n\t\t\t\tif (control.options.theme) {\n\t\t\t\t\tstyle.className += ' ' + control.options.theme;\n\t\t\t\t}\n\t\t\t\treturn style;\n\t\t\t},\n\t\t\tpointToLayer: (feature, latlng) => {\n\t\t\t\tif (!control.options.waypoints) return;\n\n\t\t\t\tlet prop = feature.properties;\n\t\t\t\tlet desc = prop.desc ?? '';\n\t\t\t\tlet name = prop.name ?? '';\n\t\t\t\tlet sym = (prop.sym ?? name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase();\n\n\t\t\t\t// Handle chart waypoints (dots)\n\t\t\t\tif ([true, 'dots'].includes(control.options.waypoints)) {\n\t\t\t\t\tcontrol._registerCheckPoint({\n\t\t\t\t\t\tlatlng: latlng,\n\t\t\t\t\t\tlabel: ([true, 'dots'].includes(wptLabels) ? name : '')\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Handle map waypoints (markers)\n\t\t\t\tif ([true, 'markers'].includes(control.options.waypoints) && wptIcons != false) {\n\t\t\t\t\t// generate and cache appropriate icon symbol\n\t\t\t\t\tif (!wptIcons.hasOwnProperty(sym)) {\n\t\t\t\t\t\twptIcons[sym] = L.divIcon(\n\t\t\t\t\t\t\tL.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\n\t\t\t\t\tif ([true, 'markers'].includes(wptLabels) && (name || desc)) {\n\t\t\t\t\t\tmarker.bindPopup(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : '')).openPopup();\n\t\t\t\t\t}\n\t\t\t\t\tcontrol._addMarker(marker);\n\t\t\t\t\tcontrol._bindPopup(marker);\n\t\t\t\t\tcontrol.fire('waypoint_added', { point: marker, element: latlng, properties: prop });\n\t\t\t\t\treturn marker;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonEachFeature: (feature, layer) => {\n\t\t\t\tif (feature.geometry && feature.geometry.type != 'Point') {\n\t\t\t\t\tcontrol.addData(layer);\n\t\t\t\t\tcontrol.track_info = L.extend({}, control.track_info, { name: geojson.name });\n\t\t\t\t} \n\t\t\t},\n\t\t});\n\n\t\tcontrol.lazyLoad(control.__D3).then(() => {\n\t\t\tcontrol._initMapIntegrations(control, layer);\n\t\t\tcontrol._fireEvt(\"eledata_loaded\", { data: geojson, layer: layer, name: control.track_info.name, track_info: control.track_info })\n\t\t});\n\n\t\treturn layer;\n\t},\n\n\t_dragendHandler: function(e) {\n\t\tthis._hideMarker();\n\t\tthis.fitBounds(L.latLngBounds([e.dragstart.latlng, e.dragend.latlng]));\n\n\t\tthis._fireEvt(\"elechart_dragged\");\n\t},\n\n\t/*\n\t * Handles the moueseover the chart and displays distance and altitude level.\n\t */\n\t_mousemoveHandler: function(e) {\n\t\tif (!this._data.length || !this._chartEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tlet item = this._findItemForX(e.xCoord);\n\n\t\tif (item) {\n\t\t\tlet xCoord = e.xCoord;\n\n\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\n\n\t\t\tthis._updateMarker(item);\n\t\t\tthis._setMapView(item);\n\n\t\t\tif (this._map) {\n\t\t\t\t_.addClass(this._map.getContainer(), 'elechart-hover');\n\t\t\t}\n\n\t\t\tthis._fireEvt(\"elechart_change\", { data: item, xCoord: xCoord });\n\t\t\tthis._fireEvt(\"elechart_hover\", { data: item, xCoord: xCoord });\n\t\t}\n\t},\n\n\t/*\n\t * Handles mouseover events of the data layers on the map.\n\t */\n\t_mousemoveLayerHandler: function(e) {\n\t\tif (!this._data.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet item = this._findItemForLatLng(e.latlng);\n\t\tif (item) {\n\t\t\tlet xCoord = item.xDiagCoord;\n\n\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\n\n\t\t\tthis._updateMarker(item);\n\n\t\t\tthis._fireEvt(\"elechart_change\", { data: item, xCoord: xCoord });\n\t\t}\n\t},\n\n\t/*\n\t * Handles the moueseout over the chart.\n\t */\n\t_mouseoutHandler: function() {\n\t\tif (!this.options.detached) {\n\t\t\tthis._hideMarker();\n\t\t\tthis._chart._hideDiagramIndicator();\n\t\t}\n\n\t\tif (this._map) {\n\t\t\t_.removeClass(this._map.getContainer(), 'elechart-hover');\n\t\t}\n\n\t\tthis._fireEvt(\"elechart_leave\");\n\t},\n\n\t/**\n\t * Simple GeoJSON Parser\n\t */\n\t_parseFromGeoJSONString: function(data) {\n\t\ttry {\n\t\t\treturn JSON.parse(data);\n\t\t} catch (e) { }\n\t},\n\n\t/**\n\t * Attempt to parse raw response data (GeoJSON or XML > GeoJSON)\n\t */\n\t_parseFromString: function(data) {\n\t\treturn new Promise(resolve =>\n\t\t\tthis.lazyLoad(this.__TOGEOJSON).then(() => {\n\t\t\t\tlet geojson;\n\t\t\t\ttry {\n\t\t\t\t\tgeojson = this._parseFromXMLString(data.trim());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tgeojson = this._parseFromGeoJSONString(data.toString());\n\t\t\t\t}\n\t\t\t\tif (geojson) {\n\t\t\t\t\tgeojson = this._prepareMultiLineStrings(geojson);\n\t\t\t\t\tgeojson = this._prepareAdditionalProperties(geojson);\n\t\t\t\t}\n\t\t\t\tresolve(geojson);\n\t\t\t})\n\t\t);\n\t},\n\n\t/**\n\t * Simple XML Parser (GPX, KML, TCX)\n\t */\n\t_parseFromXMLString: function(data) {\n\t\tif (data.indexOf(\"<\") != 0) {\n\t\t\tthrow 'Invalid XML';\n\t\t}\n\t\tlet xml = (new DOMParser()).parseFromString(data, \"text/xml\");\n\t\tlet type = xml.documentElement.tagName.toLowerCase(); // \"kml\" or \"gpx\"\n\t\tlet name = xml.getElementsByTagName('name');\n\t\tif (xml.getElementsByTagName('parsererror').length) {\n\t\t\tthrow 'Invalid XML';\n\t\t}\n\t\tif (!(type in toGeoJSON)) {\n\t\t\ttype = xml.documentElement.tagName == \"TrainingCenterDatabase\" ? 'tcx' : 'gpx';\n\t\t}\n\t\tlet geojson = toGeoJSON[type](xml);\n\t\tgeojson.name = name.length > 0 ? (Array.from(name).find(tag => tag.parentElement.tagName == \"trk\") ?? name[0]).textContent : '';\n\t\treturn geojson;\n\t},\n\n\t/**\n\t * Extend GeoJSON properties (name, time, ...)\n\t */\n\t _prepareAdditionalProperties: function(geojson) {\n\t\tif (!geojson.name && this._downloadURL) {\n\t\t\tgeojson.name = this._downloadURL.split('/').pop().split('#')[0].split('?')[0];\n\t\t}\n\t\treturn geojson;\n\t},\n\n\t/**\n\t * Just a temporary fix for MultiLineString data (trk > trkseg + trkseg),\n\t * just split them into seperate LineStrings (trk > trkseg, trk > trkseg)\n\t * \n\t * @link https://github.com/Raruto/leaflet-elevation/issues/56\n\t */\n\t_prepareMultiLineStrings: function(geojson) {\n\t\tgeojson.features.forEach(feauture => {\n\t\t\tif (feauture.geometry.type == \"MultiLineString\") {\n\t\t\t\tfeauture.geometry.coordinates.forEach(coords => {\n\t\t\t\t\tgeojson.features.push({\n\t\t\t\t\t\tgeometry: { type: 'LineString', coordinates: coords },\n\t\t\t\t\t\tproperties: feauture.properties,\n\t\t\t\t\t\ttype: 'Feature'\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} \n\t\t});\n\t\treturn geojson.features.filter(feauture => feauture.geometry.type != \"MultiLineString\");\n\t},\n\n\t/**\n\t * Add a point of interest over the diagram\n\t */\n\t_registerCheckPoint: function(props) {\n\t\tthis.on(\"elechart_updated\", () => this._chart._registerCheckPoint(props));\n\t},\n\n\t/**\n\t * Add chart profile to diagram\n\t */\n\t_registerAreaPath: function(props) {\n\t\tthis.on(\"elechart_init\", () => this._chart._registerAreaPath(props));\n\t},\n\n\t/**\n\t * Add chart grid to diagram\n\t */\n\t_registerAxisGrid: function(props) {\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisGrid(props));\n\t},\n\n\t/**\n\t * Add chart axis to diagram\n\t */\n\t_registerAxisScale: function(props) {\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisScale(props));\n\t},\n\n\t/**\n\t * Add chart or marker tooltip info\n\t */\n\t_registerTooltip: function(props) {\n\t\tif (props.chart) {\n\t\t\tlet label = L.extend({}, props, { value: props.chart });\n\t\t\tthis.on(\"elechart_init\", () => this._chart._registerTooltip(label));\n\t\t}\n\t\tif (props.marker) {\n\t\t\tlet label = L.extend({}, props, { value: props.marker });\n\t\t\tthis.on(\"elechart_marker\", () => this._marker._registerTooltip(label));\n\t\t}\n\t},\n\n\t/**\n\t * Add summary info to diagram\n\t */\n\t_registerSummary: function(props) {\n\t\tthis.on('elechart_summary', () => this._summary._registerSummary(props));\n\t},\n\n\t/*\n\t * Removes the drag rectangle and zoms back to the total extent of the data.\n\t */\n\t_resetDrag: function() {\n\t\tthis._chart._resetDrag();\n\t\tthis._hideMarker();\n\t},\n\n\t/**\n\t * Resets drag, marker and bounds.\n\t */\n\t_resetView: function() {\n\t\tif (this._map && this._map._isFullscreen) return;\n\t\tthis._resetDrag();\n\t\tthis._hideMarker();\n\t\tif (this.options.autofitBounds) {\n\t\t\tthis.fitBounds();\n\t\t}\n\t},\n\n\t/**\n\t * Hacky way for handling chart resize. Deletes it and redraw chart.\n\t */\n\t_resizeChart: function() {\n\t\tif(!this._container) return;\n\n\t\t// prevent displaying chart on resize if hidden\n\t\tif (_.style(this._container, \"display\") == \"none\") return;\n\n\t\tlet opts = this.options;\n\n\t\tlet newWidth;\n\n\t\tif (opts.detached) {\n\t\t\tnewWidth = (this.eleDiv || this._container).offsetWidth;\n\t\t} else {\n\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\tnewWidth = opts._maxWidth > clientWidth ? clientWidth - 30 : opts._maxWidth;\n\t\t}\n\t\t\n\t\tif (newWidth) {\n\t\t\tlet chart = this._chart;\n\t\t\topts.width = newWidth;\n\t\t\tif (chart && chart._chart) {\n\t\t\t\tchart._chart._resize(opts);\n\t\t\t\topts.xTicks = this._xTicks();\n\t\t\t\topts.yTicks = this._yTicks();\n\t\t\t\tthis._updateChart();\n\t\t\t}\n\t\t}\n\n\t\tthis._updateMapSegments();\n\t},\n\n\t/**\n\t * Handles the drag event over the ruler filter.\n\t */\n\t_rulerFilterHandler: function(e) {\n\t\tthis._updateMapSegments(e.coords);\n\t},\n\n\t/**\n\t * Collapse or Expand current chart control.\n\t */\n\t_toggle: function() {\n\t\tif (_.hasClass(this._container, \"elevation-expanded\"))\n\t\t\tthis._collapse();\n\t\telse\n\t\t\tthis._expand();\n\t},\n\n\t/**\n\t * Sets the view of the map (center and zoom). Useful when \"followMarker\" is true.\n\t */\n\t_setMapView: function(item) {\n\t\tif (!this.options.followMarker || !this._map) return;\n\t\tlet zoom = this._map.getZoom();\n\t\tlet z = this.options.zFollow;\n\t\tif (typeof z === \"number\") {\n\t\t\tthis._map.setView(item.latlng, (zoom < z ? z : zoom), { animate: true, duration: 0.25 });\n\t\t} else if (!this._map.getBounds().contains(item.latlng)) {\n\t\t\tthis._map.setView(item.latlng, zoom, { animate: true, duration: 0.25 });\n\t\t}\n\t},\n\n\t/**\n\t * Toggle chart data on legend click\n\t */\n\t_toggleChartHandler: function(e) {\n\t\tlet { name, enabled } = e;\n\n\t\tthis._chartEnabled = this._chart._hasActiveLayers();\n\n\t\t// toggle layer visibility on empty chart\n\t\tthis._layers.eachLayer(layer => _.toggleClass(layer.getElement && layer.getElement(), this.options.polyline.className + ' ' + this.options.theme, this._chartEnabled));\n\n\t\t// toggle option value (eg. altitude = { 'disabled' || 'disabled' })\n\t\tthis.options[name] = !enabled && this.options[name] == 'disabled' ? 'enabled' : 'disabled';\n\n\t\t// remove marker on empty chart\n\t\tif (!this._chartEnabled) {\n\t\t\tthis._chart._hideDiagramIndicator();\n\t\t\tthis._marker.remove();\n\t\t}\n\t},\n\n\t/**\n\t * Calculates [x, y] domain and then update chart.\n\t */\n\t_updateChart: function() {\n\t\tif (/*!this._data.length ||*/ !this._chart || !this._container) return;\n\n\t\tthis._fireEvt(\"elechart_axis\");\n\t\tthis._fireEvt(\"elechart_area\");\n\n\t\tthis._chart.update({ data: this._data, options: this.options });\n\n\t\tthis._x = this._chart._x;\n\t\tthis._y = this._chart._y;\n\n\t\tthis._fireEvt('elechart_updated');\n\t},\n\n\t/*\n\t * Update the position/height indicator marker drawn onto the map\n\t */\n\t_updateMarker: function(item) {\n\t\tif (this._marker) {\n\t\t\tthis._marker.update({\n\t\t\t\tmap : this._map,\n\t\t\t\titem : item,\n\t\t\t\tmaxElevation: this.track_info.elevation_max || 0,\n\t\t\t\toptions : this.options\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Fix marker rotation on rotated maps\n\t */\n\t_rotateMarker: function() {\n\t\tif (this._marker) {\n\t\t\tthis._marker.update();\n\t\t}\n\t},\n\n\t/**\n\t * Highlight track segments on the map.\n\t */\n\t_updateMapSegments: function(coords) {\n\t\tthis._markedSegments.setLatLngs(coords || []);\n\t\tif (coords && this._map && !this._map.hasLayer(this._markedSegments)) {\n\t\t\tthis._markedSegments.addTo(this._map);\n\t\t}\n\t},\n\n\t/**\n\t * Update chart summary.\n\t */\n\t_updateSummary: function() {\n\t\tthis._summary.reset();\n\n\t\tif (this.options.summary) {\n\t\t\tthis._fireEvt(\"elechart_summary\");\n\t\t}\n\t\tif (this.options.downloadLink && this._downloadURL) { // TODO: generate dynamically file content instead of using static file urls.\n\t\t\tthis._summary._container.innerHTML += '<span class=\"download\"><a href=\"#\">' + L._('Download') + '</a></span>'\n\t\t\t_.select('.download a', this._summary._container).onclick = (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (e.downloadLink == 'modal' && typeof CustomEvent === \"function\") {\n\t\t\t\t\tdocument.dispatchEvent(new CustomEvent(\"eletrack_download\", { detail: e }));\n\t\t\t\t} else if (e.downloadLink == 'link' || e.downloadLink === true) {\n\t\t\t\t\te.confirm();\n\t\t\t\t}\n\t\t\t\tthis._fireEvt('eletrack_download', { downloadLink: this.options.downloadLink, confirm: _.saveFile.bind(this, this._downloadURL) });\n\t\t\t};\n\t\t};\n\t},\n\n\n\t/**\n\t * Calculates chart width.\n\t */\n\t_width: function() {\n\t\tif (this._chart) return this._chart._width();\n\t\tlet opts = this.options;\n\t\treturn opts.width - opts.margins.left - opts.margins.right;\n\t},\n\n\t/**\n\t * Calculate chart xTicks\n\t */\n\t_xTicks: function() {\n\t\tif (this.__xTicks) this.__xTicks = this.options.xTicks;\n\t\treturn this.__xTicks || Math.round(this._width() / 75);\n\t},\n\n\t/**\n\t * Calculate chart yTicks\n\t */\n\t_yTicks: function() {\n\t\tif (this.__yTicks) this.__yTicks = this.options.yTicks;\n\t\treturn this.__yTicks || Math.round(this._height() / 30);\n\t}\n\n});","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tlet opts = this.options;\n\tlet altitude = {};\n\n\tif (opts.imperial) {\n\t\topts.altitudeFactor = this.__footFactor;\n\t\taltitude.label = \"ft\";\n\t} else {\n\t\topts.altitudeFactor = opts.heightFactor || opts.altitudeFactor || 1;\n\t\taltitude.label = opts.yLabel;\n\t}\n\n\tthis.on(\"eledata_updated\", function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\t\tlet z = data[i].z * opts.altitudeFactor;\n\n\t\tlet track = this.track_info;\n\t\tlet zMax = track.elevation_max || -Infinity;\n\t\tlet zMin = track.elevation_min || +Infinity;\n\n\t\t// check and fix missing elevation data on last added point\n\t\tif (!this.options.skipNullZCoords && i > 0) {\n\t\t\tlet prevZ = data[i - 1].z;\n\t\t\tif (isNaN(prevZ)) {\n\t\t\t\tlet lastZ = this._lastValidZ;\n\t\t\t\tlet currZ = z;\n\t\t\t\tif (!isNaN(lastZ) && !isNaN(currZ)) {\n\t\t\t\t\tprevZ = (lastZ + currZ) / 2;\n\t\t\t\t} else if (!isNaN(lastZ)) {\n\t\t\t\t\tprevZ = lastZ;\n\t\t\t\t} else if (!isNaN(currZ)) {\n\t\t\t\t\tprevZ = currZ;\n\t\t\t\t}\n\t\t\t\tif (!isNaN(prevZ)) return data.splice(i - 1, 1);\n\t\t\t\tdata[i - 1].z = prevZ;\n\t\t\t}\n\t\t}\n\t\t// skip point if it has not elevation\n\t\tif (!isNaN(z)) {\n\t\t\tthis._lastValidZ = z;\n\t\t}\n\n\t\ttrack.elevation_max = z > zMax ? z : zMax;\n\t\ttrack.elevation_min = z < zMin ? z : zMin;\n\n\t\tdata[i].z = z;\n\t});\n\n\tthis.on(\"elechart_axis\", function() {\n\n\t\tthis._chart._registerAxisGrid({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"left\",\n\t\t\tscale : this._chart._y,\n\t\t});\n\n\t});\n\n\tif (this.options.altitude != \"summary\") {\n\n\t\tthis.on(\"elechart_axis\", function() {\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"y\",\n\t\t\t\tposition: \"left\",\n\t\t\t\tscale : this._chart._y,\n\t\t\t\tlabel : altitude.label,\n\t\t\t\tlabelX : -3,\n\t\t\t\tlabelY : -8,\n\t\t\t\tname : \"altitude\",\n\t\t\t});\n\n\t\t});\n\n\t\tthis.on(\"elechart_init\", function() {\n\n\t\t\tlet theme = this.options.theme.replace('-theme', '');\n\t\t\tlet color = D3.Colors[theme] || {};\n\n\t\t\tthis._chart._registerAreaPath({\n\t\t\t\tname : 'altitude',\n\t\t\t\tlabel : 'Altitude',\n\t\t\t\tscaleX : 'distance',\n\t\t\t\tscaleY : 'altitude',\n\t\t\t\tcolor : color.area || theme,\n\t\t\t\tstrokeColor : this.options.detached ? color.stroke : '#000',\n\t\t\t\tstrokeOpacity: \"1\",\n\t\t\t\tfillOpacity : this.options.detached ? (color.alpha || '0.8') : 1,\n\t\t\t\tpreferCanvas : this.options.preferCanvas,\n\t\t\t});\n\n\t\t});\n\n\t}\n\n\tthis._registerTooltip({\n\t\tname: 'y',\n\t\tchart: (item) => L._(\"y: \") + d3.format(\".\" + opts.decimalsY + \"f\")(item[opts.yAttr]) + \" \" + altitude.label,\n\t\tmarker: (item) => d3.format(\".\" + opts.decimalsY + \"f\")(item[opts.yAttr]) + \" \" + altitude.label,\n\t});\n\n\tthis._registerSummary({\n\t\t\"maxele\" : {\n\t\t\tlabel: \"Max Elevation: \",\n\t\t\tvalue: (track) => (track.elevation_max || 0).toFixed(2) + '&nbsp;' + altitude.label\n\t\t},\n\t\t\"minele\" : {\n\t\t\tlabel: \"Min Elevation: \",\n\t\t\tvalue: (track) => (track.elevation_min || 0).toFixed(2) + '&nbsp;' + altitude.label\n\t\t},\n\t});\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tlet opts = this.options;\n\tlet distance = {};\n\n\tif (opts.imperial) {\n\t\topts.distanceFactor = this.__mileFactor;\n\t\tdistance.label = \"mi\";\n\t} else {\n\t\topts.distanceFactor = opts.distanceFactor || 1;\n\t\tdistance.label = opts.xLabel;\n\t}\n\n\tthis.on(\"eledata_updated\", function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\tlet track = this.track_info;\n\t\tlet dist = track.distance || 0;\n\n\t\tlet curr = data[i].latlng;\n\t\tlet prev = i > 0 ? data[i - 1].latlng : curr;\n\n\t\tlet delta = curr.distanceTo(prev) * opts.distanceFactor;\n\n\t\tdist += Math.round(delta / 1000 * 100000) / 100000; // handles floating points calc\n\n\t\ttrack.distance = dist;\n\n\t\tdata[i].dist = dist;\n\t});\n\n\tthis.on(\"elechart_axis\", function() {\n\n\t\tthis._chart._registerAxisGrid({\n\t\t\taxis : \"x\",\n\t\t\tposition : \"bottom\",\n\t\t\tscale : this._chart._x,\n\t\t});\n\n\t});\n\n\tif (this.options.distance != \"summary\") {\n\n\t\tthis.on(\"elechart_axis\", function() {\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"x\",\n\t\t\t\tposition: \"bottom\",\n\t\t\t\tscale : this._chart._x,\n\t\t\t\tlabel : distance.label,\n\t\t\t\tlabelY : 25,\n\t\t\t\tlabelX : () => this._width() + 6,\n\t\t\t\tname : \"distance\",\n\t\t\t});\n\n\t\t});\n\n\t}\n\n\tthis._registerTooltip({\n\t\tname: 'x',\n\t\tchart: (item) => L._(\"x: \") + d3.format(\".\" + opts.decimalsX + \"f\")(item[opts.xAttr]) + \" \" + distance.label,\n\t});\n\n\tthis._registerSummary({\n\t\t\"totlen\" : {\n\t\t\tlabel: \"Total Length: \",\n\t\t\tvalue: (track) => (track.distance || 0).toFixed(2) + '&nbsp;' + distance.label\n\t\t}\n\t});\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tlet opts = this.options;\n\tlet time = {};\n\n\ttime.label = opts.timeLabel || 't';\n\topts.timeFactor = opts.timeFactor || 3600;\n\n\t/**\n\t * Common AVG speeds:\n\t * ----------------------\n\t * slow walk = 1.8 km/h\n\t * walking = 3.6 km/h\n\t * running = 10.8 km/h\n\t * cycling = 18 km/h\n\t * driving = 72 km/h\n\t * ----------------------\n\t */\n\tthis._timeAVGSpeed = (opts.timeAVGSpeed || 3.6) * (opts.speedFactor || 1);\n\n\tif (!opts.timeFormat) {\n\t\topts.timeFormat = (time) => (new Date(time)).toLocaleString().replaceAll('/', '-').replaceAll(',', ' ');\n\t} else if (opts.timeFormat == 'time') {\n\t\topts.timeFormat = (time) => (new Date(time)).toLocaleTimeString();\n\t} else if (opts.timeFormat == 'date') {\n\t\topts.timeFormat = (time) => (new Date(time)).toLocaleDateString();\n\t}\n\n\topts.xTimeFormat = opts.xTimeFormat || ((t) => _.formatTime(t).split(\"'\")[0]);\n\n\tif (opts.time && opts.time != \"summary\" && !L.Browser.mobile) {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"x\",\n\t\t\tposition : \"top\",\n\t\t\tscale : {\n\t\t\t\tattr : \"duration\",\n\t\t\t\tmin : 0,\n\t\t\t},\n\t\t\tlabel : time.label,\n\t\t\tlabelY : -10,\n\t\t\tlabelX : () => this._width(),\n\t\t\tname : \"time\",\n\t\t\ttickFormat : (d) => (d == 0 ? '' : opts.xTimeFormat(d)),\n\t\t\tonAxisMount: axis => {\n\t\t\t\taxis.select(\".domain\")\n\t\t\t\t\t.remove();\n\t\t\t\taxis.selectAll(\"text\")\n\t\t\t\t\t.attr('opacity', 0.65)\n\t\t\t\t\t.style('font-family', 'Monospace')\n\t\t\t\t\t.style('font-size', '110%');\n\t\t\t\taxis.selectAll(\".tick line\")\n\t\t\t\t\t.attr('y2', this._height())\n\t\t\t\t\t.attr('stroke-dasharray', 2)\n\t\t\t\t\t.attr('opacity', 0.75);\n\t\t\t\t}\n\t\t});\n\n\t}\n\n\tthis.on('elepoint_added', function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\t// Add missing timestamps (see: options.timeAVGSpeed)\n\t\tif (!e.point.meta || !e.point.meta.time) {\n\t\t\te.point.meta = e.point.meta || {};\n\t\t\tlet delta = (data[i].dist - data[i > 0 ? i - 1 : i].dist);\n\t\t\tlet speed = this._timeAVGSpeed;\n\t\t\te.point.meta.time = new Date(\n\t\t\t\t(\n\t\t\t\t\ti > 0\n\t\t\t\t\t\t? data[i - 1].time.getTime() + ((( delta / speed) * opts.timeFactor) * 1000)\n\t\t\t\t\t\t: Date.now()\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tlet time = e.point.meta.time;\n\n\t\t// Handle timezone offset\n\t\tif (time.getTime() - time.getTimezoneOffset() * 60 * 1000 === 0) {\n\t\t\ttime = 0;\n\t\t}\n\n\t\tlet currT = time;\n\t\tlet prevT = i > 0 ? data[i - 1].time : currT;\n\n\t\tlet deltaT = Math.abs(currT - prevT);\n\t\tlet duration = (this.track_info.time || 0) + deltaT;\n\n\t\tthis.track_info.time = duration;\n\n\t\tdata[i].time = time;\n\t\tdata[i].duration = duration;\n\t});\n\n\n\tif (this.options.timestamps) {\n\t\tthis._registerTooltip({\n\t\t\tname: 'date',\n\t\t\tchart: (item) => L._(\"t: \") + this.options.timeFormat(item.time)\n\t\t});\n\t}\n\n\tif (this.options.time) {\n\t\tthis._registerTooltip({\n\t\t\tname: 'time',\n\t\t\tchart: (item) => L._(\"T: \") + _.formatTime(item.duration || 0)\n\t\t});\n\t\tthis._registerSummary({\n\t\t\t\"tottime\" : {\n\t\t\t\tlabel: \"Total Time: \",\n\t\t\t\tvalue: (track) => _.formatTime(track.time || 0)\n\t\t\t}\n\t\t});\n\t}\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tif (!this.options.slope) return;\n\n\tlet opts = this.options;\n\tlet slope = {};\n\n\tslope.label = opts.slopeLabel || '%';\n\n\tif (this.options.slope != \"summary\") {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"right\",\n\t\t\tscale : {\n\t\t\t\tmin : -1,\n\t\t\t\tmax : +1,\n\t\t\t},\n\t\t\ttickPadding: 16,\n\t\t\tlabel : slope.label,\n\t\t\tlabelX : 25,\n\t\t\tlabelY : -8,\n\t\t\tname : 'slope'\n\t\t});\n\n\t\tthis._registerAreaPath({\n\t\t\tname : 'slope',\n\t\t\tlabel : 'Slope',\n\t\t\tyAttr : 'slope',\n\t\t\tscaleX : 'distance',\n\t\t\tscaleY : 'slope',\n\t\t\tcolor : '#F00',\n\t\t\tstrokeColor : '#000',\n\t\t\tstrokeOpacity: \"0.5\",\n\t\t\tfillOpacity : \"0.25\",\n\t\t});\n\n\t}\n\n\tthis.on(\"eledata_updated\", function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\t\tlet z = data[i].z;\n\t\tlet delta = (data[i].dist - data[i > 0 ? i - 1 : i].dist) * 1000;\n\n\t\t// Slope / Gain\n\t\tlet track = this.track_info;\n\t\tlet tAsc = track.ascent || 0; // Total Ascent\n\t\tlet tDes = track.descent || 0; // Total Descent\n\t\tlet sMax = track.slope_max || 0; // Slope Max\n\t\tlet sMin = track.slope_min || 0; // Slope Min\n\t\tlet slope = 0;\n\n\t\tif (!isNaN(z)) {\n\t\t\tlet deltaZ = i > 0 ? z - data[i - 1].z : 0;\n\t\t\tif (deltaZ > 0) tAsc += deltaZ;\n\t\t\telse if (deltaZ < 0) tDes -= deltaZ;\n\t\t\t// slope in % = ( height / length ) * 100\n\t\t\tif (delta !== 0) slope = (deltaZ / delta) * 100;\n\t\t}\n\n\t\t// Try to smooth \"crazy\" slope values.\n\t\tif (this.options.sDeltaMax) {\n\t\t\tlet deltaS = i > 0 ? slope - data[i - 1].slope : 0;\n\t\t\tlet maxDeltaS = this.options.sDeltaMax;\n\t\t\tif (Math.abs(deltaS) > maxDeltaS) {\n\t\t\t\tslope = data[i - 1].slope + maxDeltaS * Math.sign(deltaS);\n\t\t\t}\n\t\t}\n\n\t\t// Range of acceptable slope values.\n\t\tslope = _.clamp(slope, this.options.sRange);\n\n\t\ttrack.ascent = tAsc;\n\t\ttrack.descent = tDes;\n\t\ttrack.slope_max = slope > sMax ? slope : sMax;\n\t\ttrack.slope_min = slope < sMin ? slope : sMin;\n\n\t\tdata[i].slope = L.Util.formatNum(slope, 2);\n\t});\n\n\tthis._registerTooltip({\n\t\tname: 'slope',\n\t\tchart: (item) => L._(\"m: \") + item.slope + slope.label,\n\t\tmarker: (item) => Math.round(item.slope) + slope.label\n\t});\n\n\tthis._registerSummary({\n\t\t\"ascent\" : {\n\t\t\tlabel: \"Total Ascent: \",\n\t\t\tvalue: (track) => Math.round(track.ascent || 0) + '&nbsp;' + (this.options.imperial ? 'ft' : 'm')\n\t\t},\n\t\t\"descent\" : {\n\t\t\tlabel: \"Total Descent: \",\n\t\t\tvalue: (track) => Math.round(track.descent || 0) + '&nbsp;' + (this.options.imperial ? 'ft' : 'm')\n\t\t},\n\t\t\"minslope\": {\n\t\t\tlabel: \"Min Slope: \",\n\t\t\tvalue: (track) => Math.round(track.slope_min || 0) + '&nbsp;' + slope.label\n\t\t},\n\t\t\"maxslope\": {\n\t\t\tlabel: \"Max Slope: \",\n\t\t\tvalue: (track) => Math.round(track.slope_max || 0) + '&nbsp;' + slope.label\n\t\t}\n\t});\n\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tif (!this.options.speed && !this.options.acceleration) return;\n\n\tlet opts = this.options;\n\tlet speed = {};\n\n\tspeed.label = opts.speedLabel || L._(opts.imperial ? 'mph' : 'km/h');\n\topts.speedFactor = opts.speedFactor || 1;\n\n\tif (this.options.speed && this.options.speed != \"summary\") {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"right\",\n\t\t\tscale : {\n\t\t\t\tmin : 0,\n\t\t\t\tmax : +1,\n\t\t\t},\n\t\t\ttickPadding: 16,\n\t\t\tlabel : speed.label,\n\t\t\tlabelX : 25,\n\t\t\tlabelY : -8,\n\t\t\tname : \"speed\"\n\t\t});\n\n\t\tthis._registerAreaPath({\n\t\t\tname : 'speed',\n\t\t\tlabel : 'Speed',\n\t\t\tyAttr : \"speed\",\n\t\t\tscaleX : 'distance',\n\t\t\tscaleY : 'speed',\n\t\t\tcolor : '#03ffff',\n\t\t\tstrokeColor : '#000',\n\t\t\tstrokeOpacity: \"0.5\",\n\t\t\tfillOpacity : \"0.25\",\n\t\t});\n\n\t}\n\n\tthis.on('elepoint_added', function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\tlet currT = data[i].time;\n\t\tlet prevT = i > 0 ? data[i - 1].time : currT;\n\n\t\tlet deltaT = currT - prevT;\n\n\t\tlet track = this.track_info;\n\t\tlet sMax = track.speed_max || -Infinity; // Speed Max\n\t\tlet sMin = track.speed_min || +Infinity; // Speed Min\n\t\tlet sAvg = track.speed_avg || 0; // Speed Avg\n\t\tlet speed = 0;\n\n\t\tif (deltaT > 0) {\n\t\t\tlet delta = (data[i].dist - data[i > 0 ? i - 1 : i].dist) * 1000;\n\t\t\tspeed = Math.abs((delta / deltaT) * opts.timeFactor) * opts.speedFactor;\n\t\t}\n\n\t\t// Try to smooth \"crazy\" speed values.\n\t\tif (this.options.speedDeltaMax) {\n\t\t\tlet deltaS = i > 0 ? speed - data[i - 1].speed : 0;\n\t\t\tlet maxDeltaS = this.options.speedDeltaMax;\n\t\t\tif (Math.abs(deltaS) > maxDeltaS) {\n\t\t\t\tspeed = data[i - 1].speed + maxDeltaS * Math.sign(deltaS);\n\t\t\t}\n\t\t}\n\n\t\t// Range of acceptable speed values.\n\t\tspeed = _.clamp(speed, this.options.speedRange);\n\n\t\ttrack.speed_max = speed > sMax ? speed : sMax;\n\t\ttrack.speed_min = speed < sMin ? speed : sMin;\n\t\ttrack.speed_avg = (speed + sAvg) / 2.0;\n\n\t\tdata[i].speed = L.Util.formatNum(speed, 2);\n\t});\n\n\tif (this.options.speed) {\n\n\t\tthis._registerTooltip({\n\t\t\tname: 'speed',\n\t\t\tchart: (item) => L._('v: ') + item.speed + \" \" + speed.label,\n\t\t\tmarker: (item) => Math.round(item.speed) + \" \" + speed.label,\n\t\t});\n\n\t\tthis._registerSummary({\n\t\t\t\"minspeed\" : {\n\t\t\t\tlabel: \"Min Speed: \",\n\t\t\t\tvalue: (track) => Math.round(track.speed_min || 0) + '&nbsp;' + speed.label\n\t\t\t},\n\t\t\t\"maxspeed\" : {\n\t\t\t\tlabel: \"Max Speed: \",\n\t\t\t\tvalue: (track) => Math.round(track.speed_max || 0) + '&nbsp;' + speed.label\n\t\t\t},\n\t\t\t\"avgspeed\": {\n\t\t\t\tlabel: \"Avg Speed: \",\n\t\t\t\tvalue: (track) => Math.round(track.speed_avg || 0) + '&nbsp;' + speed.label\n\t\t\t}\n\t\t});\n\n\t}\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tif (!this.options.acceleration) return;\n\n\tlet opts = this.options;\n\tlet acceleration = {};\n\n\tacceleration.label = opts.accelerationLabel || L._(opts.imperial ? 'ft/s²' : 'm/s²');\n\topts.accelerationFactor = opts.accelerationFactor || 1;\n\n\tif (this.options.acceleration != \"summary\") {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"right\",\n\t\t\tscale : {\n\t\t\t\tmin : 0,\n\t\t\t\tmax : +1,\n\t\t\t},\n\t\t\ttickPadding: 16,\n\t\t\tlabel : acceleration.label,\n\t\t\tlabelX : 25,\n\t\t\tlabelY : -8,\n\t\t\tname : 'acceleration'\n\t\t});\n\n\t\tthis._registerAreaPath({\n\t\t\tname : 'acceleration',\n\t\t\tlabel : 'Acceleration',\n\t\t\tyAttr : 'acceleration',\n\t\t\tscaleX : 'distance',\n\t\t\tscaleY : 'acceleration',\n\t\t\tcolor : '#050402',\n\t\t\tstrokeColor : '#000',\n\t\t\tstrokeOpacity: \"0.5\",\n\t\t\tfillOpacity : \"0.25\",\n\t\t});\n\n\t}\n\n\tthis.on('elepoint_added', function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\tlet currT = data[i].time;\n\t\tlet prevT = i > 0 ? data[i - 1].time : currT;\n\n\t\tlet deltaT = (currT - prevT) / 1000;\n\n\t\tlet track = this.track_info;\n\t\tlet sMax = track.acceleration_max || -Infinity; // Acceleration Max\n\t\tlet sMin = track.acceleration_min || +Infinity; // Acceleration Min\n\t\tlet sAvg = track.acceleration_avg || 0; // Acceleration Avg\n\t\tlet acceleration = 0;\n\n\t\tif (deltaT > 0) {\n\t\t\tlet curr = data[i].speed;\n\t\t\tlet prev = i > 0 ? data[i - 1].speed : curr;\n\t\t\tlet delta = (curr - prev) * (1000 / opts.timeFactor);\n\t\t\tacceleration = Math.abs((delta / deltaT)) * opts.accelerationFactor;\n\t\t}\n\n\t\t// Try to smooth \"crazy\" acceleration values.\n\t\tif (this.options.accelerationDeltaMax) {\n\t\t\tlet deltaA = i > 0 ? acceleration - data[i - 1].acceleration : 0;\n\t\t\tlet maxDeltaS = this.options.accelerationDeltaMax;\n\t\t\tif (Math.abs(deltaA) > maxDeltaS) {\n\t\t\t\tacceleration = data[i - 1].acceleration + maxDeltaS * Math.sign(deltaA);\n\t\t\t}\n\t\t}\n\n\t\t// Range of acceptable acceleration values.\n\t\tacceleration = _.clamp(acceleration, this.options.accelerationRange);\n\n\t\ttrack.acceleration_max = acceleration > sMax ? acceleration : sMax;\n\t\ttrack.acceleration_min = acceleration < sMin ? acceleration : sMin;\n\t\ttrack.acceleration_avg = (acceleration + sAvg) / 2.0;\n\n\t\tdata[i].acceleration = L.Util.formatNum(acceleration, 2);\n\t});\n\n\tthis._registerTooltip({\n\t\tname : 'acceleration',\n\t\tchart: (item) => L._(\"a: \") + item.acceleration + \" \" + acceleration.label,\n\t\tmarker: (item) => Math.round(item.acceleration) + \" \" + acceleration.label,\n\t});\n\n\tthis._registerSummary({\n\t\t\"minacceleration\" : {\n\t\t\tlabel: \"Min Acceleration: \",\n\t\t\tvalue: (track) => Math.round(track.acceleration_min || 0) + '&nbsp;' + acceleration.label\n\t\t},\n\t\t\"maxacceleration\" : {\n\t\t\tlabel: \"Max Acceleration: \",\n\t\t\tvalue: (track) => Math.round(track.acceleration_max || 0) + '&nbsp;' + acceleration.label\n\t\t},\n\t\t\"avgacceleration\": {\n\t\t\tlabel: \"Avg Acceleration: \",\n\t\t\tvalue: (track) => Math.round(track.acceleration_avg || 0) + '&nbsp;' + acceleration.label\n\t\t}\n\t});\n\n});\n","/*\n * Copyright (c) 2019, GPL-3.0+ Project, Raruto\n *\n * This file is free software: you may copy, redistribute and/or modify it\n * under the terms of the GNU General Public License as published by the\n * Free Software Foundation, either version 2 of the License, or (at your\n * option) any later version.\n *\n * This file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n * This file incorporates work covered by the following copyright and\n * permission notice:\n *\n * Copyright (c) 2013-2016, MIT License, Felix “MrMufflon” Bache\n *\n * Permission to use, copy, modify, and/or distribute this software\n * for any purpose with or without fee is hereby granted, provided\n * that the above copyright notice and this permission notice appear\n * in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL\n * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE\n * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,\n * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN\n * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Chart } from './chart';\nimport { Elevation } from './control';\nimport './altitude';\nimport './distance';\nimport './time';\nimport './slope';\nimport './speed';\nimport './acceleration';\n\nElevation.Utils = _;\nElevation.Components = D3;\nElevation.Chart = Chart;\n\n/* Temporary fix for empty values evaluated as false (leaflet-i18n v0.3.1) */\n(function(){\n\tlet proto = L.i18n.bind({});\n\tL.i18n = L._ = (string, data) => {\n\t\tif (L.locale && L.locales[L.locale] && L.locales[L.locale][string] == \"\") {\n\t\t\tL.locales[L.locale][string] = \"\\u200B\";\n\t\t}\n\t\treturn proto.call(null, string, data);\n\t};\n})();\n\n// Alias deprecated functions\n Elevation.addInitHook(function() {\n\tthis.enableDragging = this.enableBrush;\n\tthis.disableDragging = this.disableBrush;\n\tthis.loadChart = this.addTo;\n\tthis.loadData = this.load;\n\tthis.loadGPX = this.load;\n\tthis.loadGeoJSON = this.load;\n\tthis.loadXML = this.load;\n\tthis.loadFile = this.load;\n\tthis._addGPXData = this._addGeoJSONData;\n\tthis._registerFocusLabel = this._registerTooltip;\n});\n\nL.control.elevation = (options) => new Elevation(options);\n"],"names":["factory","window","define","amd","exports","module","require","L","locales","locale","registerLocale","code","Util","extend","setLocale","i18n","_","translate","string","data","template","err","SEC","MIN","HOUR","DAY","formatTime","t","d","Math","floor","h","m","s","round","toString","padStart","saveFile","dataURI","fileName","a","create","href","target","download","style","b","document","body","appendChild","click","removeChild","lazyLoader","url","skip","loader","Promise","resolve","reject","tag","createElement","addEventListener","once","src","head","drawCanvas","ctx","path","classed","beginPath","moveTo","p","Path2D","attr","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","stroke","fill","closePath","clamp","val","range","addClass","targetNode","className","split","every","DomUtil","removeClass","toggleClass","conditional","call","replaceClass","removeClassName","addClassName","name","value","getStyle","setProperty","toggleStyle","toggleEvent","leafletElement","eventName","handler","tagName","attributes","parent","elem","setAttributes","append","child","insert","position","insertAdjacentElement","attrs","k","setAttribute","select","selector","context","querySelector","on","DomEvent","off","hasClass","randomId","random","substr","each","obj","fn","i","Colors","area","alpha","line","Area","width","height","xAttr","yAttr","scaleX","scaleY","interpolation","d3","curve","x","xDiagCoord","y0","y1","Path","color","strokeColor","strokeOpacity","fillOpacity","Axis","type","tickSize","tickPadding","axis","scale","ticks","tickFormat","label","labelX","labelY","onAxisMount","g","w","axisScale","replace","l","toUpperCase","axisGroup","join","text","Grid","props","PositionMarker","theme","xCoord","yCoord","labels","item","length","circle","node","isNaN","size","selectAll","LegendItem","margins","toLowerCase","ownerSVGElement","dispatch","detail","legend","enabled","bottom","Tooltip","box","rect","xAlign","yAlign","bbox","getBBox","e","max","Browser","webkit","Infinity","Ruler","y","symbol","symbolTriangle","exit","remove","enter","merge","angle","CheckPoint","point","property","datum","pos","y2","x2","Domain","min","forceBounds","domain","extent","Range","Scale","scaleLinear","Bisect","bisector","left","invert","Chart","ruler","_width","right","_height","top","svg","panes","grid","brush","tooltip","mask","maskRect","foreignObject","canvas","getContext","brushX","opts","utils","chart","_resize","test","navigator","platform","userAgent","pane","get","Class","includes","Evented","prototype","Mixin","Events","initialize","control","options","_data","_props","scales","paths","areas","grids","axes","legendItems","tooltipItems","_scales","_domains","_ranges","_paths","_brushEnabled","dragging","_zoomEnabled","zooming","_chart","D3","_container","_grid","_area","_point","_axis","_legend","_tooltip","_ruler","_initScale","_mask","_context","_brush","_zoom","zoom","_drag","drag","_initInteractions","_maskGaps","push","index","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","render","container","clear","_resetDrag","_hideDiagramIndicator","clearRect","_drawPath","preferCanvas","_hasActiveLayers","_initBrush","selection","start","_findIndexForXCoord","end","fire","dragstart","dragend","focus","sourceEvent","coords","pointers","filter","shiftKey","button","bind","_initClipper","margin","onStart","transform","onEnd","onZoom","distance","_x","rescaleX","time","scaleExtent","translateExtent","buttons","_initRuler","_initLegend","formatNum","format","yMax","z","_y","imperial","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_registerCheckPoint","latlng","_findIndexForLatLng","dist","_registerTooltip","gridOpts","axesOpts","n","substring","indexOf","forEach","d1","d2","x1","legends","items","nodes","v","Array","map","sign","rev","slice","reverse","concat","xAxesB","marginB","marginR","tx","ty","list","reduce","array","next","curr","result","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","xCoordinate","Marker","marker","getPane","_marker","icon","markerIcon","zIndexOffset","interactive","_labels","addTo","_map","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","maxElevation","getElement","setLatLng","getLatLng","Summary","summary","reset","innerHTML","_registerSummary","track_info","Options","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","distanceMarkers","decimalsX","decimalsY","downloadLink","elevationDiv","followMarker","lazyLoadJS","divIcon","html","iconSize","iconAnchor","polyline","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","slope","speed","sLimit","undefined","timeFactor","timeFormat","timestamps","sDeltaMax","sInterpolation","sRange","waypoints","wptIcons","wptLabels","xLabel","yLabel","zFollow","Mobile","Elevation","Control","__mileFactor","__footFactor","__D3","__TOGEOJSON","__LGEOMUTIL","__LALMOSTOVER","__LDISTANCEM","addData","layer","lazyLoad","then","_addData","_addLayer","_fireEvt","eleDiv","_initElevationDiv","isConnected","getContainer","onAdd","_clearChart","_layers","_clearLayers","_markers","_clearMarkers","_updateChart","_events","elechart_updated","eachLayer","clearLayers","disableBrush","enableBrush","disableZoom","enableZoom","fitBounds","bounds","getBounds","isValid","latLngBounds","getZFollow","hide","featureGroup","_markedSegments","_chartEnabled","setOptions","_setMapView","throttle","lazy","setStyle","colors","_fixCanvasPaths","_fixTooltipSize","condition","toGeoJSON","GeometryUtil","Handler","AlmostOver","DistanceMarkers","load","_parseFromString","geojson","_loadLayer","_loadFile","_initButton","_initChart","_initSummary","_initMarker","_initLayer","_hideMarker","_resetView","_resizeChart","_rotateMarker","_keydownHandler","_updateSummary","onRemove","redraw","setZFollow","show","geom","geometry","_addGeoJSONData","coordinates","console","warn","features","feature","_latlngs","properties","meta","ele","hr","cad","atemp","alt","coordinateProperties","Date","parse","coordTimes","times","parseInt","heartRates","heartRate","heart","_addPoint","lat","lng","latLng","addLayer","Polyline","_addMarker","_bindPopup","popup","_popup","_content","decodeURI","bindTooltip","direction","sticky","openTooltip","_initAlmostOverHandler","almostOver","addHandler","_mousemoveLayerHandler","_mouseoutHandler","_initDistanceMarkers","id","_initMapIntegrations","_collapse","_expand","oldProto","Canvas","_fillStroke","include","hasLayer","oldVal","outline","_updateMarker","_findItemForLatLng","_findItemForX","propagate","_xTicks","_yTicks","offsetWidth","offsetHeight","clientWidth","_maxWidth","maxWidth","_dragendHandler","_mousemoveHandler","_rulerFilterHandler","_toggleChartHandler","_pane","createPane","zIndex","pointerEvents","_renderer","disableClickPropagation","disableScrollPropagation","link","_button","title","stop","_toggle","_summary","key","fetch","response","_downloadURL","catch","geoJson","pointToLayer","prop","desc","sym","hasOwnProperty","bindPopup","openPopup","element","onEachFeature","_parseFromGeoJSONString","JSON","_parseFromXMLString","trim","_prepareMultiLineStrings","_prepareAdditionalProperties","xml","DOMParser","parseFromString","documentElement","getElementsByTagName","from","find","parentElement","textContent","pop","feauture","_isFullscreen","newWidth","_updateMapSegments","getZoom","setView","animate","duration","contains","elevation_max","setLatLngs","onclick","preventDefault","CustomEvent","dispatchEvent","confirm","__xTicks","__yTicks","addInitHook","altitudeFactor","heightFactor","track","zMax","zMin","elevation_min","prevZ","lastZ","_lastValidZ","currZ","splice","toFixed","distanceFactor","prev","delta","timeLabel","_timeAVGSpeed","timeAVGSpeed","speedFactor","toLocaleString","replaceAll","toLocaleTimeString","toLocaleDateString","xTimeFormat","getTime","now","getTimezoneOffset","currT","prevT","deltaT","abs","slopeLabel","tAsc","ascent","tDes","descent","sMax","slope_max","sMin","slope_min","deltaZ","deltaS","maxDeltaS","acceleration","speedLabel","speed_max","speed_min","sAvg","speed_avg","speedDeltaMax","speedRange","accelerationLabel","accelerationFactor","acceleration_max","acceleration_min","acceleration_avg","accelerationDeltaMax","deltaA","accelerationRange","Utils","Components","proto","enableDragging","disableDragging","loadChart","loadData","loadGPX","loadGeoJSON","loadXML","loadFile","_addGPXData","_registerFocusLabel","elevation"],"mappings":"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"}
1
+ {"version":3,"file":"leaflet-elevation.js","sources":["../node_modules/leaflet-i18n/Leaflet.i18n.js","../src/utils.js","../src/components.js","../src/chart.js","../src/marker.js","../src/summary.js","../src/options.js","../src/control.js","../src/altitude.js","../src/distance.js","../src/time.js","../src/slope.js","../src/speed.js","../src/acceleration.js","../src/index.js"],"sourcesContent":["// Following https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md\n(function (factory, window) {\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n module.exports = factory(require('leaflet'));\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L) {\n factory(window.L);\n\n }\n}(function (L) {\n L.locales = {};\n L.locale = null;\n L.registerLocale = function registerLocale(code, locale) {\n L.locales[code] = L.Util.extend({}, L.locales[code], locale);\n };\n L.setLocale = function setLocale(code) {\n L.locale = code;\n };\n return L.i18n = L._ = function translate(string, data) {\n if (L.locale && L.locales[L.locale] && L.locales[L.locale][string]) {\n string = L.locales[L.locale][string];\n }\n try {\n // Do not fail if some data is missing\n // a bad translation should not break the app\n string = L.Util.template(string, data);\n }\n catch (err) {/*pass*/\n }\n\n return string;\n };\n}, window));\n","const SEC = 1000;\nconst MIN = SEC * 60;\nconst HOUR = MIN * 60;\nconst DAY = HOUR * 24;\n\n/**\n * Convert a duration time (millis) to a human readable string (%Dd %H:%M'%S\")\n */\nexport function formatTime(t) {\n\tlet d = Math.floor(t / DAY);\n\tlet h = Math.floor( (t - d * DAY) / HOUR);\n\tlet m = Math.floor( (t - d * DAY - h * HOUR) / MIN);\n\tlet s = Math.round( (t - d * DAY - h * HOUR - m * MIN) / SEC);\n\tif ( s === 60 ) { m++; s = 0; }\n\tif ( m === 60 ) { h++; m = 0; }\n\tif ( h === 24 ) { d++; h = 0; }\n\treturn (d ? d + \"d \" : '') + h.toString().padStart(2, 0) + ':' + m.toString().padStart(2, 0) + \"'\" + s.toString().padStart(2, 0) + '\"';\n}\n\n/**\n * Generate download data event.\n */\n export function saveFile(dataURI, fileName) {\n\tlet a = create('a', '', { href: dataURI, target: '_new', download: fileName || \"\", style: \"display:none;\" });\n\tlet b = document.body;\n\tb.appendChild(a);\n\ta.click();\n\tb.removeChild(a);\n}\n\n/**\n * Async JS script download.\n */\nexport function lazyLoader(url, skip, loader) {\n\tif (skip === false) {\n\t\treturn Promise.resolve();\n\t}\n\tif (loader instanceof Promise) {\n\t\treturn loader;\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tlet tag = document.createElement(\"script\");\n\t\ttag.addEventListener('load', resolve, { once: true });\n\t\ttag.src = url;\n\t\tdocument.head.appendChild(tag);\n\t});\n}\n\n/**\n * Convert SVG Path into Path2D and then update canvas\n */\n export function drawCanvas(ctx, path) {\n\tpath.classed('canvas-path', true);\n\n\tctx.beginPath();\n\tctx.moveTo(0, 0);\n\tlet p = new Path2D(path.attr('d'));\n\n\tctx.strokeStyle = path.attr('stroke');\n\tctx.fillStyle = path.attr('fill');\n\tctx.lineWidth = 1.25;\n\tctx.globalCompositeOperation = 'source-over';\n\n\t// stroke opacity\n\tctx.globalAlpha = path.attr('stroke-opacity') || 0.3;\n\tctx.stroke(p);\n\n\t// fill opacity\n\tctx.globalAlpha = path.attr('fill-opacity') || 0.45;\n\tctx.fill(p);\n\n\tctx.globalAlpha = 1;\n\n\tctx.closePath();\n}\n\n/**\n * Limit a number between min / max values\n */\n export function clamp(val, range) {\n\tif (range) return val < range[0] ? range[0] : val > range[1] ? range[1] : val;\n\treturn val;\n}\n\n/**\n * A little bit safier than L.DomUtil.addClass\n */\nexport function addClass(targetNode, className) {\n\tif (targetNode) className.split(\" \").every(s => s && L.DomUtil.addClass(targetNode, s));\n}\n\n/**\n * A little bit safier than L.DomUtil.removeClass()\n */\nexport function removeClass(targetNode, className) {\n\tif (targetNode) className.split(\" \").every(s => s && L.DomUtil.removeClass(targetNode, s));\n}\n\nexport function toggleClass(targetNode, className, conditional) {\n\treturn (conditional ? addClass : removeClass).call(null, targetNode, className)\n}\n\nexport function replaceClass(targetNode, removeClassName, addClassName) {\n\tif (removeClassName) removeClass(targetNode, removeClassName);\n\tif (addClassName) addClass(targetNode, addClassName);\n}\n\nexport function style(targetNode, name, value) {\n\tif (typeof value === \"undefined\") return L.DomUtil.getStyle(targetNode, name);\n\telse return targetNode.style.setProperty(name, value);\n}\n\nexport function toggleStyle(targetNode, name, value, conditional) {\n\treturn style(targetNode, name, conditional ? value : '');\n}\n\nexport function toggleEvent(leafletElement, eventName, handler, conditional) {\n\treturn leafletElement[conditional ? 'on' : 'off'](eventName, handler);\n}\n\n/**\n * A little bit shorter than L.DomUtil.create()\n */\nexport function create(tagName, className, attributes, parent) {\n\tlet elem = L.DomUtil.create(tagName, className || \"\");\n\tif (attributes) setAttributes(elem, attributes);\n\tif (parent) append(parent, elem);\n\treturn elem;\n}\n\n/**\n * Same as node.appendChild()\n */\nexport function append(parent, child) {\n\treturn parent.appendChild(child);\n}\n\n/**\n * Same as node.insertAdjacentElement()\n */\nexport function insert(parent, child, position) {\n\treturn parent.insertAdjacentElement(position, child);\n}\n\n/**\n * Loop for node.setAttribute()\n */\nexport function setAttributes(elem, attrs) {\n\tfor (let k in attrs) { elem.setAttribute(k, attrs[k]); }\n}\n\n/**\n * Same as node.querySelector().\n */\nexport function select(selector, context) {\n\treturn (context || document).querySelector(selector);\n}\n\n/**\n * Alias for L.DomEvent.on.\n */\nexport const on = L.DomEvent.on;\n\n/**\n * Alias for L.DomEvent.off.\n */\nexport const off = L.DomEvent.off;\n\n/**\n * Alias for L.DomUtil.hasClass.\n */\nexport const hasClass = L.DomUtil.hasClass;\n\n\n/**\n * Generate a random string\n */\nexport function randomId() {\n\treturn Math.random().toString(36).substr(2, 9);\n}\n\n/**\n * Execute a function foreach element in object\n */\nexport function each(obj, fn) {\n\tfor (let i in obj) fn(obj[i], i);\n}","export const Colors = {\n\t'lightblue': { area: '#3366CC', alpha: 0.45, stroke: '#3366CC' },\n\t'magenta' : { area: '#FF005E' },\n\t'yellow' : { area: '#FF0' },\n\t'purple' : { area: '#732C7B' },\n\t'steelblue': { area: '#4682B4' },\n\t'red' : { area: '#F00' },\n\t'lime' : { area: '#9CC222', line: '#566B13' }\n};\n\nexport const Area = ({\n\twidth,\n\theight,\n\txAttr,\n\tyAttr,\n\tscaleX,\n\tscaleY,\n\tinterpolation = \"curveLinear\"\n}) => {\n\treturn d3.area()\n\t\t.curve(typeof interpolation === 'string' ? d3[interpolation] : interpolation)\n\t\t.x(d => (d.xDiagCoord = scaleX(d[xAttr])))\n\t\t.y0(height)\n\t\t.y1(d => scaleY(d[yAttr]));\n};\n\nexport const Path = ({\n\tname,\n\tcolor,\n\tstrokeColor,\n\tstrokeOpacity,\n\tfillOpacity,\n}) => {\n\tlet path = d3.create('svg:path')\n\n\tif (name) path.classed(name, true);\n\n\tpath.style(\"pointer-events\", \"none\");\n\n\tpath\n\t.attr(\"fill\", color || '#3366CC')\n\t.attr(\"stroke\", strokeColor || '#000')\n\t.attr(\"stroke-opacity\", strokeOpacity || '1')\n\t.attr(\"fill-opacity\", fillOpacity || '0.8');\n\n\treturn path;\n};\n\nexport const Axis = ({\n\ttype = \"axis\",\n\ttickSize = 6,\n\ttickPadding = 3,\n\tposition,\n\theight,\n\twidth,\n\taxis,\n\tscale,\n\tticks,\n\ttickFormat,\n\tlabel,\n\tlabelX,\n\tlabelY,\n\tname = \"\",\n\tonAxisMount,\n}) => {\n\treturn g => {\n\t\tlet [w, h] = [0, 0];\n\t\tif (position == \"bottom\") h = height;\n\t\tif (position == \"right\") w = width;\n\n\t\tif (axis == \"x\" && type == \"grid\") {\n\t\t\ttickSize = -height;\n\t\t} else if (axis == \"y\" && type == \"grid\") {\n\t\t\ttickSize = -width;\n\t\t}\n\n\t\tlet axisScale = d3[\"axis\" + position.replace(/\\b\\w/g, l => l.toUpperCase())]()\n\t\t\t.scale(scale)\n\t\t\t.ticks(ticks)\n\t\t\t.tickPadding(tickPadding)\n\t\t\t.tickSize(tickSize)\n\t\t\t.tickFormat(tickFormat);\n\n\t\tlet axisGroup = g.append(\"g\")\n\t\t\t.attr(\"class\", [axis, type, position, name].join(\" \"))\n\t\t\t.attr(\"transform\", \"translate(\" + w + \",\" + h + \")\")\n\t\t\t.call(axisScale);\n\n\t\tif (label) {\n\t\t\taxisGroup.append(\"svg:text\")\n\t\t\t\t.attr(\"x\", labelX)\n\t\t\t\t.attr(\"y\", labelY)\n\t\t\t\t.text(label);\n\t\t}\n\n\t\tif (onAxisMount) {\n\t\t\taxisGroup.call(onAxisMount);\n\t\t}\n\n\t\treturn axisGroup;\n\t};\n};\n\nexport const Grid = (props) => {\n\tprops.type = \"grid\";\n\treturn Axis(props);\n};\n\nexport const PositionMarker = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n\tlabels = {},\n\titem = {},\n\tlength = 0,\n}) => {\n\treturn g => {\n\n\t\tg.attr(\"class\", \"height-focus-group\");\n\n\t\tlet line = g.select('.height-focus.line');\n\t\tlet circle = g.select('.height-focus.circle-lower');\n\t\tlet text = g.select('.height-focus-label');\n\n\t\tif (!line.node()) line = g.append('svg:line');\n\t\tif (!circle.node()) circle = g.append('svg:circle');\n\t\tif (!text.node()) text = g.append('svg:text');\n\n\t\tif (isNaN(xCoord) || isNaN(yCoord)) return g;\n\n\t\tcircle\n\t\t\t.attr(\"class\", theme + \" height-focus circle-lower\")\n\t\t\t.attr(\"transform\", \"translate(\" + xCoord + \",\" + yCoord + \")\")\n\t\t\t.attr(\"r\", 6)\n\t\t\t.attr(\"cx\", 0)\n\t\t\t.attr(\"cy\", 0);\n\n\t\tline\n\t\t\t.attr(\"class\", theme + \" height-focus line\")\n\t\t\t.attr(\"x1\", xCoord)\n\t\t\t.attr(\"x2\", xCoord)\n\t\t\t.attr(\"y1\", yCoord)\n\t\t\t.attr(\"y2\", length);\n\n\t\ttext\n\t\t\t.attr(\"class\", theme + \" height-focus-label\")\n\t\t\t.style(\"pointer-events\", \"none\")\n\t\t\t.attr(\"x\", xCoord + 5)\n\t\t\t.attr(\"y\", length);\n\n\t\tlet label;\n\n\t\tfor (var i in labels) {\n\t\t\tlabel = text.select(\".height-focus-\" + labels[i].name);\n\n\t\t\tif (!label.size()) {\n\t\t\t\tlabel = text.append(\"svg:tspan\")\n\t\t\t\t\t.attr(\"class\", \"height-focus-\" + labels[i].name)\n\t\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t\t}\n\n\t\t\tlabel.text(typeof labels[i].value !== \"function\" ? labels[i].value : labels[i].value(item));\n\t\t}\n\n\t\ttext.select('tspan').attr(\"dy\", text.selectAll('tspan').size() > 1 ? \"-1.5em\" : \"0em\" );\n\t\ttext.selectAll('tspan').attr(\"x\", xCoord + 5);\n\n\t\treturn g;\n\t}\n};\n\nexport const LegendItem = ({\n\tname,\n\tlabel,\n\twidth,\n\theight,\n\tmargins = {},\n\tcolor,\n\tpath\n}) => {\n\treturn g => {\n\t\tg\n\t\t\t.attr(\"class\", \"legend-item legend-\" + name.toLowerCase())\n\t\t\t.attr(\"data-name\", name);\n\n\t\tg.on('click.legend', () => d3.select(g.node().ownerSVGElement || g)\n\t\t\t.dispatch(\"legend_clicked\", {\n\t\t\t\tdetail: {\n\t\t\t\t\tpath: path.node(),\n\t\t\t\t\tname: name,\n\t\t\t\t\tlegend: g.node(),\n\t\t\t\t\tenabled: !path.classed('leaflet-hidden'),\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tg.append(\"svg:rect\")\n\t\t\t.attr(\"x\", (width / 2) - 50)\n\t\t\t.attr(\"y\", height + margins.bottom / 2)\n\t\t\t.attr(\"width\", 50)\n\t\t\t.attr(\"height\", 10)\n\t\t\t.attr(\"fill\", color)\n\t\t\t.attr(\"stroke\", \"#000\")\n\t\t\t.attr(\"stroke-opacity\", \"0.5\")\n\t\t\t.attr(\"fill-opacity\", \"0.25\");\n\n\t\tg.append('svg:text')\n\t\t\t.text(L._(label || name))\n\t\t\t.attr(\"x\", (width / 2) + 5)\n\t\t\t.attr(\"font-size\", 10)\n\t\t\t.style(\"text-decoration-thickness\", \"2px\")\n\t\t\t.style(\"font-weight\", \"700\")\n\t\t\t.attr('y', height + margins.bottom / 2)\n\t\t\t.attr('dy', \"0.75em\");\n\n\t\treturn g;\n\t}\n};\n\nexport const Tooltip = ({\n\txCoord,\n\tyCoord,\n\twidth,\n\theight,\n\tlabels = {},\n\titem = {},\n}) => {\n\treturn g => {\n\n\t\tlet line = g.select('.mouse-focus-line');\n\t\tlet box = g.select('.mouse-focus-label');\n\n\t\tif (!line.node()) line = g.append('svg:line');\n\t\tif (!box.node()) box = g.append(\"g\");\n\n\t\tlet rect = box.select(\".mouse-focus-label-rect\");\n\t\tlet text = box.select(\".mouse-focus-label-text\");\n\n\t\tif (!rect.node()) rect = box.append(\"svg:rect\");\n\t\tif (!text.node()) text = box.append(\"svg:text\");\n\n\t\t// Sets focus-label-text position to the left / right of the mouse-focus-line\n\t\tlet xAlign = 0;\n\t\tlet yAlign = 0;\n\t\tlet bbox = { width: 0, height: 0 };\n\t\ttry { bbox = text.node().getBBox(); } catch (e) { return g; }\n\n\t\tif (xCoord) xAlign = xCoord + (xCoord < width / 2 ? 10 : -bbox.width - 10);\n\t\tif (yCoord) yAlign = Math.max(yCoord - bbox.height, L.Browser.webkit ? 0 : -Infinity);\n\n\t\tline\n\t\t\t.attr('class', 'mouse-focus-line')\n\t\t\t.attr('x2', xCoord)\n\t\t\t.attr('y2', 0)\n\t\t\t.attr('x1', xCoord)\n\t\t\t.attr('y1', height);\n\n\t\tbox\n\t\t\t.attr('class', 'mouse-focus-label');\n\n\t\trect\n\t\t\t.attr(\"class\", \"mouse-focus-label-rect\")\n\t\t\t.attr(\"x\", xAlign - 5)\n\t\t\t.attr(\"y\", yAlign - 5)\n\t\t\t.attr(\"width\", bbox.width + 10)\n\t\t\t.attr(\"height\", bbox.height + 10)\n\t\t\t.attr(\"rx\", 3)\n\t\t\t.attr(\"ry\", 3);\n\n\t\ttext\n\t\t\t.attr(\"class\", \"mouse-focus-label-text\")\n\t\t\t.style(\"font-weight\", \"700\")\n\t\t\t.attr(\"y\", yAlign);\n\n\t\tlet label;\n\n\t\tfor (let i in labels) {\n\t\t\tlabel = text.select(\".mouse-focus-label-\" + labels[i].name);\n\n\t\t\tif (!label.size()) {\n\t\t\t\tlabel = text.append(\"svg:tspan\", \".mouse-focus-label-x\")\n\t\t\t\t\t.attr(\"class\", \"mouse-focus-label-\" + labels[i].name)\n\t\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t\t}\n\n\t\t\tlabel.text(typeof labels[i].value !== \"function\" ? labels[i].value : labels[i].value(item));\n\t\t}\n\n\t\ttext.select('tspan').attr(\"dy\", \"1em\");\n\t\ttext.selectAll('tspan').attr(\"x\", xAlign);\n\n\t\treturn g;\n\t};\n};\n\nexport const Ruler = ({\n\theight,\n\twidth,\n}) => {\n\treturn g => {\n\n\t\tg.data([{\n\t\t\t\t\"x\": 0,\n\t\t\t\t\"y\": height,\n\t\t\t}])\n\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \")\");\n\n\t\tlet rect = g.selectAll('.horizontal-drag-rect')\n\t\t\t.data([{ w: width }]);\n\n\t\tlet line = g.selectAll('.horizontal-drag-line')\n\t\t\t.data([{ w: width }]);\n\n\t\tlet label = g.selectAll('.horizontal-drag-label')\n\t\t\t.data([{ w: width - 8 }]);\n\n\t\tlet symbol = g.selectAll('.horizontal-drag-symbol')\n\t\t\t.data([{\n\t\t\t\t\"type\": d3.symbolTriangle,\n\t\t\t\t\"x\": width + 7,\n\t\t\t\t\"y\": 0,\n\t\t\t\t\"angle\": -90,\n\t\t\t\t\"size\": 50\n\t\t\t}]);\n\n\t\trect.exit().remove();\n\t\tline.exit().remove();\n\t\tlabel.exit().remove();\n\t\tsymbol.exit().remove();\n\n\t\trect.enter()\n\t\t\t.append(\"svg:rect\")\n\t\t\t.attr(\"class\", \"horizontal-drag-rect\")\n\t\t\t.attr(\"x\", 0)\n\t\t\t.attr(\"y\", -8)\n\t\t\t.attr(\"height\", 8)\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('pointer-events', 'all')\n\t\t\t.merge(rect)\n\t\t\t.attr(\"width\", d => d.w);\n\n\t\tline.enter()\n\t\t\t.append(\"svg:line\")\n\t\t\t.attr(\"class\", \"horizontal-drag-line\")\n\t\t\t.attr(\"x1\", 0)\n\t\t\t.merge(line)\n\t\t\t.attr(\"x2\", d => d.w);\n\n\t\tlabel.enter()\n\t\t\t.append(\"svg:text\")\n\t\t\t.attr(\"class\", \"horizontal-drag-label\")\n\t\t\t.attr(\"text-anchor\", \"end\")\n\t\t\t.attr(\"y\", -8)\n\t\t\t.merge(label)\n\t\t\t.attr(\"x\", d => d.w)\n\n\t\tsymbol\n\t\t\t.enter()\n\t\t\t.append(\"svg:path\")\n\t\t\t.attr(\"class\", \"horizontal-drag-symbol\")\n\t\t\t.merge(symbol)\n\t\t\t.attr(\"d\",\n\t\t\t\td3.symbol()\n\t\t\t\t.type(d => d.type)\n\t\t\t\t.size(d => d.size)\n\t\t\t)\n\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \") rotate(\" + d.angle + \")\");\n\n\t\treturn g;\n\t}\n};\n\nexport const CheckPoint = ({\n\tpoint,\n\theight,\n\twidth,\n\tx,\n\ty\n}) => {\n\treturn g => {\n\n\t\tif (isNaN(x) || isNaN(y)) return g;\n\n\t\tif (!point.item || !point.item.property('isConnected')) {\n\t\t\tpoint.position = point.position || \"bottom\";\n\n\t\t\tpoint.item = g.append('g');\n\n\t\t\tpoint.item.append(\"svg:line\")\n\t\t\t\t.attr(\"y1\", 0)\n\t\t\t\t.attr(\"x1\", 0)\n\t\t\t\t.attr(\"style\",\"stroke: rgb(51, 51, 51); stroke-width: 0.5; stroke-dasharray: 2, 2;\");\n\n\t\t\tpoint.item\n\t\t\t\t.append(\"svg:circle\")\n\t\t\t\t.attr(\"class\", \" height-focus circle-lower\")\n\t\t\t\t.attr(\"r\", 3);\n\n\t\t\tif (point.label) {\n\t\t\t\tpoint.item.append(\"svg:text\")\n\t\t\t\t\t.attr(\"dx\", \"4px\")\n\t\t\t\t\t.attr(\"dy\", \"-4px\");\n\t\t\t}\n\t\t}\n\n\t\tpoint.item\n\t\t\t.datum({\n\t\t\t\tpos: point.position,\n\t\t\t\tx: x,\n\t\t\t\ty: y\n\t\t\t})\n\t\t\t.attr(\"class\", d => \"point \" + d.pos)\n\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \")\");\n\n\t\tpoint.item.select('line')\n\t\t\t.datum({\n\t\t\t\ty2: ({'top': -y, 'bottom': height - y})[point.position],\n\t\t\t\tx2: ({'left': -x, 'right': width - x})[point.position] || 0\n\t\t\t})\n\t\t\t.attr(\"y2\", d => d.y2)\n\t\t\t.attr(\"x2\", d => d.x2)\n\n\t\tif (point.label) {\n\t\t\tpoint.item.select('text')\n\t\t\t\t.text(point.label);\n\t\t}\n\n\t\treturn g;\n\t}\n};\n\nexport const Domain = ({\n\tmin,\n\tmax,\n\tattr,\n\tname,\n\tforceBounds,\n\tscale\n}) => function(data) {\n\tattr = attr || name;\n\tif (scale && scale.attr) attr = scale.attr;\n\tlet domain = data && data.length ? d3.extent(data, d => d[attr]) : [0, 1];\n\tif (typeof min !== \"undefined\" && (min < domain[0] || forceBounds)) {\n\t\tdomain[0] = min;\n\t}\n\tif (typeof max !== \"undefined\" && (max > domain[1] || forceBounds)) {\n\t\tdomain[1] = max;\n\t}\n\treturn domain;\n};\n\nexport const Range = ({\n\taxis\n}) => function(width, height) {\n\tif (axis == 'x') return [0, width];\n\telse if (axis == 'y') return [height, 0];\n};\n\nexport const Scale = ({\n\tdata,\n\tattr,\n\tmin,\n\tmax,\n\tforceBounds,\n\trange,\n}) => {\n\treturn d3.scaleLinear()\n\t\t.range(range)\n\t\t.domain(Domain({min, max, attr, forceBounds})(data));\n};\n\nexport const Bisect = ({\n\tdata = [0, 1],\n\tscale,\n\tx,\n\tattr\n}) => {\n\treturn d3\n\t\t.bisector(d => d[attr])\n\t\t.left(data, scale.invert(x));\n};\n\nexport const Chart = ({\n\twidth,\n\theight,\n\tmargins = {},\n\truler,\n}) => {\n\n\tconst _width = width - margins.left - margins.right;\n\tconst _height = height - margins.top - margins.bottom;\n\n\t// SVG Container\n\tconst svg = d3.create(\"svg:svg\").attr(\"class\", \"background\");\n\n\t// SVG Groups\n\tconst g = svg.append(\"g\");\n\tconst panes = {\n\t\tgrid : g.append(\"g\").attr(\"class\", \"grid\"),\n\t\tarea : g.append('g').attr(\"class\", \"area\"),\n\t\taxis : g.append('g').attr(\"class\", \"axis\"),\n\t\tpoint : g.append('g').attr(\"class\", \"point\"),\n\t\tbrush : g.append(\"g\").attr(\"class\", \"brush\"),\n\t\ttooltip: g.append(\"g\").attr(\"class\", \"tooltip\").attr('display', 'none'),\n\t\truler : g.append('g').attr('class', 'ruler'),\n\t\tlegend : g.append('g').attr(\"class\", \"legend\"),\n\t};\n\n\t// SVG Paths\n\tconst mask = panes.area.append(\"svg:mask\").attr(\"id\", 'elevation-clipper').attr('fill-opacity', 1);\n\tconst maskRect = mask.append(\"svg:rect\").attr('class', 'zoom').attr('fill', 'white'); // white = transparent\n\n\t// Canvas Paths\n\tconst foreignObject = panes.area.append('svg:foreignObject').attr('mask', 'url(#' + mask.attr('id') + ')');\n\tconst canvas = foreignObject.append('xhtml:canvas').attr('class', 'canvas-plot');\n\tconst context = canvas.node().getContext('2d');\n\n\t// Add tooltip\n\tpanes.tooltip.call(Tooltip({ xCoord: 0, yCoord: 0, height: _height, width : _width, labels: {} }));\n\n\t// Add the brushing\n\tlet brush = d3.brushX().on('start.cursor end.cursor brush.cursor', () => panes.brush.select(\".overlay\").attr('cursor', null));\n\n\t// Scales\n\tconst scale = (opts) => ({ x: Scale(opts.x), y: Scale(opts.y)});\n\n\tlet utils = {\n\t\tmask,\n\t\tcanvas,\n\t\tcontext,\n\t\tbrush,\n\t};\n\n\tlet chart = {\n\t\tsvg,\n\t\tg,\n\t\tpanes,\n\t\tutils,\n\t\tscale,\n\t};\n\n\t// Resize\n\tchart._resize = ({\n\t\twidth,\n\t\theight,\n\t\tmargins = {},\n\t\truler,\n\t}) => {\n\n\t\tconst _width = width - margins.left - margins.right;\n\t\tconst _height = height - margins.top - margins.bottom;\n\n\t\tsvg.attr(\"viewBox\", `0 0 ${width} ${height}`)\n\t\t\t.attr(\"width\", width)\n\t\t\t.attr(\"height\", height);\n\n\t\tg.attr(\"transform\", \"translate(\" + margins.left + \",\" + margins.top + \")\");\n\n\t\t// Partially fix: https://github.com/Raruto/leaflet-elevation/issues/123\n\t\tif(/Mac|iPod|iPhone|iPad/.test(navigator.platform) && /AppleWebkit/i.test(navigator.userAgent)) {\n\t\t\tcanvas\n\t\t\t.style(\"transform\", \"translate(\" + margins.left + \"px,\" + margins.top + \"px)\");\n\t\t}\n\n\t\tmaskRect\n\t\t\t.attr(\"x\", 0)\n\t\t\t.attr(\"y\", 0)\n\t\t\t.attr(\"width\", _width)\n\t\t\t.attr(\"height\", _height);\n\n\t\tforeignObject\n\t\t\t.attr('width', _width)\n\t\t\t.attr('height', _height);\n\n\t\tcanvas\n\t\t\t.attr('width', _width)\n\t\t\t.attr('height', _height);\n\n\t\tif (ruler) {\n\t\t\tpanes.ruler.call(Ruler({ height: _height, width: _width }));\n\t\t}\n\n\t\tpanes.brush.call(brush.extent( [ [0,0], [_width, _height] ] ));\n\t\tpanes.brush.select(\".overlay\").attr('cursor', null);\n\n\t\tchart._width = _width;\n\t\tchart._height = _height;\n\n\t\tchart.svg.dispatch('resize', { detail: { width: _width, height: _height } } );\n\n\t};\n\n\tchart.pane = (name) => {\n\t\tif (!panes[name]) {\n\t\t\tpanes[name] = g.append('g').attr(\"class\", name);\n\t\t}\n\t\treturn panes[name];\n\t}\n\n\tchart.get = (name) => utils[name];\n\n\tchart._resize({ width, height, margins});\n\n\treturn chart;\n};\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\n\nexport var Chart = L.Class.extend({\n\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\n\n\tinitialize: function(opts, control) {\n\t\tthis.options = opts;\n\t\tthis.control = control;\n\n\t\tthis._data = [];\n\n\t\t// cache registered components\n\t\tthis._props = {\n\t\t\tscales : {},\n\t\t\tpaths : {},\n\t\t\tareas : {},\n\t\t\tgrids : {},\n\t\t\taxes : {},\n\t\t\tlegendItems : {},\n\t\t\ttooltipItems: {},\n\t\t};\n\n\t\tthis._scales = {};\n\t\tthis._domains = {};\n\t\tthis._ranges = {};\n\t\tthis._paths = {};\n\n\t\tthis._brushEnabled = opts.dragging;\n\t\tthis._zoomEnabled = opts.zooming;\n\n\t\tlet chart = this._chart = D3.Chart(opts);\n\n\t\t// SVG Container\n\t\tlet svg = this._container = chart.svg;\n\n\t\t// Panes\n\t\tthis._grid = chart.pane('grid');\n\t\tthis._area = chart.pane('area');\n\t\tthis._point = chart.pane('point');\n\t\tthis._axis = chart.pane('axis');\n\t\tthis._legend = chart.pane('legend');\n\t\tthis._tooltip = chart.pane('tooltip');\n\t\tthis._ruler = chart.pane('ruler');\n\n\t\t// Scales\n\t\tthis._initScale();\n\n\t\t// Helpers\n\t\tthis._mask = chart.get('mask');\n\t\tthis._context = chart.get('context');\n\t\tthis._brush = chart.get('brush');\n\n\t\tthis._zoom = d3.zoom();\n\t\tthis._drag = d3.drag();\n\n\t\t// Interactions\n\t\tthis._initInteractions();\n\n\t\t// svg.on('resize', (e)=>console.log(e.detail));\n\n\t\t// Handle multi-track segments (BETA)\n\t\tthis._maskGaps = [];\n\t\tcontrol.on('eletrack_added', (e) => {\n\t\t\tthis._maskGaps.push(e.index);\n\t\t\tcontrol.once('eledata_updated', (e) => this._maskGaps.push(e.index));\n\t\t});\n\n\t},\n\n\tupdate: function(props) {\n\t\tif (props) {\n\t\t\tif (props.data) this._data = props.data;\n\t\t\tif (props.options) this.options = props.options;\n\t\t}\n\n\t\tthis._updateScale();\n\t\tthis._updateArea();\n\t\tthis._updateAxis();\n\t\tthis._updateLegend();\n\t\tthis._updateClipper();\n\n\t\treturn this;\n\t},\n\n\trender: function() {\n\t\treturn container => container.append(() => this._container.node());\n\t},\n\n\tclear: function() {\n\t\tthis._resetDrag();\n\t\tthis._hideDiagramIndicator()\n\t\tthis._area.selectAll('path').attr(\"d\", \"M0 0\");\n\t\tthis._context.clearRect(0, 0, this._width(), this._height());\n\n\t\t// if (this._path) {\n\t\t\t// this._x.domain([0, 1]);\n\t\t\t// this._y.domain([0, 1]);\n\t\t// }\n\n\t\tthis._maskGaps = [];\n\t\tthis._mask.selectAll(\".gap\").remove();\n\t},\n\n\t_drawPath: function(name) {\n\t\tlet path = this._paths[name];\n\t\tlet area = this._props.areas[name];\n\n\t\tpath.datum(this._data).attr(\"d\",\n\t\t\tD3.Area(\n\t\t\t\tL.extend({}, area, {\n\t\t\t\t\twidth : this._width(),\n\t\t\t\t\theight : this._height(),\n\t\t\t\t\tscaleX : this._scales[area.scaleX],\n\t\t\t\t\tscaleY : this._scales[area.scaleY]\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\n\t\tif (path.classed('leaflet-hidden')) return;\n\n\t\tif (this.options.preferCanvas) {\n\t\t\t_.drawCanvas(this._context, path);\n\t\t} else {\n\t\t\tthis._area.append(() => path.node());\n\t\t}\n\t},\n\n\t_hasActiveLayers: function() {\n\t\tconst paths = this._paths;\n\t\tfor (var i in paths) {\n\t\t\tif (!paths[i].classed('leaflet-hidden')) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Initialize \"d3-brush\".\n\t */\n\t_initBrush: function(e) {\n\t\tconst brush = (e) => {\n\t\t\tif (!this._data.length) return;\n\t\t\tlet extent = e.selection;\n\t\t\tif (extent) {\n\t\t\t\tlet start = this._findIndexForXCoord(extent[0]);\n\t\t\t\tlet end = this._findIndexForXCoord(extent[1]);\n\t\t\t\tthis.fire('dragged', { dragstart: this._data[start], dragend: this._data[end] });\n\t\t\t}\n\t\t}\n\n\t\tconst focus = (e) => {\n\t\t\tif (!this._data.length) return;\n\t\t\tif (e.type == 'brush' && !e.sourceEvent) return;\n\t\t\tlet rect = this._chart.panes.brush.select('.overlay').node();\n\t\t\tlet coords = d3.pointers(e, rect)[0];\n\t\t\tlet xCoord = coords[0];\n\t\t\tlet item = this._data[this._findIndexForXCoord(xCoord)];\n\n\t\t\tthis.fire(\"mouse_move\", { item: item, xCoord: xCoord });\n\t\t};\n\n\t\tthis._brush\n\t\t\t.filter((e) => this._brushEnabled && !e.shiftKey && !e.button)\n\t\t\t.on(\"end.update\", brush)\n\t\t\t.on(\"brush.update\", focus);\n\n\t\tthis._chart.panes.brush\n\t\t\t.on(\"mouseenter.focus touchstart.focus\", this.fire.bind(this, \"mouse_enter\"))\n\t\t\t.on(\"mouseout.focus touchend.focus\", this.fire.bind(this, \"mouse_out\") )\n\t\t\t.on(\"mousemove.focus touchmove.focus\", focus );\n\n\t},\n\n\t/**\n\t * Initialize \"d3-zoom\"\n\t */\n\t_initClipper: function() {\n\t\tlet svg = this._container;\n\t\tlet margin = this.options.margins;\n\n\t\tconst zoom = this._zoom;\n\n\t\tconst onStart = (e) => {\n\t\t\tif (e.sourceEvent && e.sourceEvent.type == \"mousedown\") svg.style('cursor', 'grabbing');\n\t\t\tif (e.transform.k == 1 && e.transform.x == 0) {\n\t\t\t\tthis._container.classed('zoomed', true);\n\t\t\t\t// Apply d3-zoom (bind <clipPath> mask)\n\t\t\t\tif (this._mask) {\n\t\t\t\t\tthis._point.attr('mask', 'url(#' + this._mask.attr('id') + ')');\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.zooming = true;\n\t\t};\n\n\t\tconst onEnd = (e) => {\n\t\t\tif (e.transform.k ==1 && e.transform.x == 0){\n\t\t\t\tthis._container.classed('zoomed', false);\n\t\t\t\t// Apply d3-zoom (bind <clipPath> mask)\n\t\t\t\tif (this._mask) {\n\t\t\t\t\tthis._point.attr('mask', null);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.zooming = false;\n\t\t\tsvg.style('cursor', '');\n\t\t};\n\n\t\tconst onZoom = (e) => {\n\t\t\t// TODO: find a faster way to redraw the chart.\n\t\t\tthis.zooming = false;\n\t\t\tthis._updateScale(); // hacky way for restoring x scale when zooming out\n\t\t\tthis.zooming = true;\n\t\t\tthis._scales.distance = this._x = e.transform.rescaleX(this._x); // calculate x scale at zoom level\n\t\t\tif (this._scales.time) this._scales.time = e.transform.rescaleX(this._scales.time); // calculate x scale at zoom level\n\t\t\tthis._resetDrag();\n\t\t\tif (e.sourceEvent && e.sourceEvent.type == \"mousemove\") {\n\t\t\t\tthis._hideDiagramIndicator();\n\t\t\t}\n\t\t\tthis.fire('zoom');\n\t\t};\n\n\t\tzoom\n\t\t\t.scaleExtent([1, 10])\n\t\t\t.extent([\n\t\t\t\t[margin.left, 0],\n\t\t\t\t[this._width() - margin.right, this._height()]\n\t\t\t])\n\t\t\t.translateExtent([\n\t\t\t\t[margin.left, -Infinity],\n\t\t\t\t[this._width() - margin.right, Infinity]\n\t\t\t])\n\t\t\t.filter((e) => this._zoomEnabled && (e.shiftKey || e.buttons == 4))\n\t\t\t.on(\"start\", onStart)\n\t\t\t.on(\"end\", onEnd)\n\t\t\t.on(\"zoom\", onZoom);\n\n\t\tsvg.call(zoom); // add zoom functionality to \"svg\" group\n\n\t\t// d3.select(\"body\").on(\"keydown.grabzoom keyup.grabzoom\", (e) => svg.style('cursor', e.shiftKey ? 'move' : ''));\n\n\t},\n\n\t_initInteractions: function() {\n\t\tthis._initBrush();\n\t\tthis._initRuler();\n\t\tthis._initClipper();\n\t\tthis._initLegend();\n\t},\n\n\t/**\n\t * Toggle chart data on legend click\n\t */\n\t_initLegend: function() {\n\t\tthis._container.on('legend_clicked', (e) => {\n\t\t\tlet { path, legend, name, enabled } = e.detail;\n\n\t\t\tif (!path) return;\n\n\t\t\tlet label = _.select('text', legend);\n\t\t\tlet rect = _.select('rect', legend);\n\n\t\t\t_.toggleStyle(label, 'text-decoration-line', 'line-through', enabled);\n\t\t\t_.toggleStyle(rect, 'fill-opacity', '0', enabled);\n\t\t\t_.toggleClass(path, 'leaflet-hidden', enabled);\n\n\t\t\tthis._updateArea();\n\n\t\t\tthis.fire(\"elepath_toggle\", { path, name, legend, enabled })\n\t\t});\n\t},\n\n\t/**\n\t * Initialize \"ruler\".\n\t */\n\t_initRuler: function() {\n\t\tif (!this.options.ruler) return;\n\n\t\t// const yMax = this._height();\n\t\tconst formatNum = d3.format(\".0f\");\n\t\tconst drag = this._drag;\n\n\t\tconst label = (e, d) => {\n\t\t\tlet yMax = this._height();\n\t\t\tlet y = this._ruler.data()[0].y;\n\t\t\tif (y >= yMax || y <= 0) this._ruler.select(\".horizontal-drag-label\").text('');\n\t\t\tthis._hideDiagramIndicator();\n\t\t};\n\n\t\tconst position = (e, d) => {\n\t\t\tlet yMax = this._height();\n\t\t\tlet yCoord = d3.pointers(e, this._area.node())[0][1];\n\t\t\tlet y = yCoord > 0 ? (yCoord < yMax ? yCoord : yMax) : 0;\n\t\t\tlet z = this._y.invert(y);\n\t\t\tlet data = L.extend(this._ruler.data()[0], { y: y });\n\n\t\t\tthis._ruler\n\t\t\t\t.data([data])\n\t\t\t\t.attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \")\")\n\t\t\t\t.classed('active', y < yMax);\n\n\t\t\tthis._container.select(\".horizontal-drag-label\")\n\t\t\t\t.text(formatNum(z) + \" \" + (this.options.imperial ? 'ft' : 'm'));\n\n\t\t\tthis.fire('ruler_filter', { coords: yCoord < yMax && yCoord > 0 ? this._findCoordsForY(yCoord) : [] });\n\t\t}\n\n\t\tdrag\n\t\t.on(\"start end\", label)\n\t\t.on(\"drag\", position);\n\n\t\tthis._ruler.call(drag);\n\n\t},\n\n\t/**\n\t * Initialize x and y scales\n\t */\n\t_initScale: function() {\n\t\tlet opts = this.options;\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : 'x',\n\t\t\tposition: 'bottom',\n\t\t\tattr : opts.xAttr,\n\t\t\tmin : opts.xAxisMin,\n\t\t\tmax : opts.xAxisMax,\n\t\t\tname : 'distance'\n\t\t});\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : 'y',\n\t\t\tposition : 'left',\n\t\t\tattr : opts.yAttr,\n\t\t\tmin : opts.yAxisMin,\n\t\t\tmax : opts.yAxisMax,\n\t\t\tname : 'altitude'\n\t\t});\n\n\t\tthis._x = this._scales.distance;\n\t\tthis._y = this._scales.altitude;\n\t},\n\n\t_registerAreaPath: function(props) {\n\t\tlet opts = this.options;\n\n\t\tif (!props.xAttr) props.xAttr = opts.xAttr;\n\t\tif (!props.yAttr) props.yAttr = opts.yAttr;\n\t\tif (typeof props.preferCanvas === \"undefined\") props.preferCanvas = opts.preferCanvas;\n\n\t\tlet path = D3.Path(props);\n\n\t\t// Save paths in memory for latter usage\n\t\tthis._paths[props.name] = path;\n\t\tthis._props.areas[props.name] = props;\n\n\t\tif (opts.legend) {\n\t\t\tthis._props.legendItems[props.name] = {\n\t\t\t\tname : props.name,\n\t\t\t\tlabel : props.label,\n\t\t\t\tcolor : props.color,\n\t\t\t\tpath : path\n\t\t\t};\n\t\t}\n\n\t},\n\n\t_registerAxisGrid: function(props) {\n\t\tthis._props.grids[props.name || props.axis] = props;\n\t},\n\n\t_registerAxisScale: function(props) {\n\t\tlet opts = this.options;\n\t\tlet scale = props.scale;\n\n\t\tif (typeof this._scales[props.name] === 'function') {\n\t\t\tprops.scale = this._scales[props.name]; // retrieve cached scale\n\t\t} else if (typeof scale !== 'function') {\n\t\t\tscale = L.extend({\n\t\t\t\tdata : this._data,\n\t\t\t\tforceBounds: opts.forceAxisBounds\n\t\t\t}, scale);\n\n\t\t\tscale.attr = scale.attr || props.name;\n\n\t\t\tlet domain = this._domains[props.name] = D3.Domain(props);\n\t\t\tlet range = this._ranges[props.name] = D3.Range(props);\n\t\t\tscale.range = scale.range || range(this._width(),this._height());\n\t\t\tscale.domain = scale.domain || domain(this._data);\n\n\t\t\tthis._props.scales[props.name] = scale;\n\n\t\t\tprops.scale = this._scales[props.name] = D3.Scale(scale);\n\t\t}\n\n\t\tif (!props.ticks) {\n\t\t\tif (props.axis == 'x') props.ticks = opts.xTicks;\n\t\t\telse if (props.axis == 'y') props.ticks = opts.yTicks;\n\t\t}\n\n\t\tthis._props.axes[props.name] = props;\n\n\t\treturn scale;\n\t},\n\n\t/**\n\t * Add a point of interest over the chart\n\t */\n\t_registerCheckPoint: function(point) {\n\t\tif (!this._data.length) return;\n\n\t\tlet item, x, y;\n\n\t\tif (point.latlng) {\n\t\t\titem = this._data[this._findIndexForLatLng(point.latlng)];\n\t\t\tx = this._x(item.dist);\n\t\t\ty = this._y(item.z);\n\t\t} else if (!isNaN(point.dist)) {\n\t\t\tx = this._x(point.dist);\n\t\t\titem = this._data[this._findIndexForXCoord(x)]\n\t\t\ty = this._y(item.z);\n\t\t} \n\n\t\tthis._point.call(D3.CheckPoint({\n\t\t\tpoint: point,\n\t\t\twidth: this._width(),\n\t\t\theight: this._height(),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t}));\n\t},\n\n\t_registerTooltip: function(props) {\n\t\tthis._props.tooltipItems[props.name] = props;\n\t},\n\n\t_updateArea: function() {\n\t\tlet paths = this._paths;\n\t\t// Reset and update chart profiles\n\t\tthis._context.clearRect(0, 0, this._width(), this._height());\n\t\tfor (var i in paths) {\n\t\t\tif (!paths[i].classed('leaflet-hidden')) {\n\t\t\t\tthis._drawPath(i);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updateAxis: function() {\n\n\t\tlet opts = this.options;\n\n\t\t// Reset chart axis.\n\t\tthis._grid.selectAll('g').remove();\n\t\tthis._axis.selectAll('g').remove();\n\n\t\tlet grids = this._props.grids;\n\t\tlet axes = this._props.axes;\n\t\tlet props, axis, grid;\n\n\t\tlet gridOpts = {\n\t\t\twidth : this._width(),\n\t\t\theight : this._height(),\n\t\t\ttickFormat: \"\",\n\t\t};\n\t\tlet axesOpts = {\n\t\t\twidth : this._width(),\n\t\t\theight : this._height(),\n\t\t};\n\n\t\t// Render grids\n\t\tfor (let i in grids) {\n\t\t\tprops = L.extend({}, gridOpts, grids[i]);\n\t\t\tgrid = D3.Grid(props);\n\t\t\tthis._grid.call(grid);\n\t\t}\n\n\t\t// Render axis\n\t\tfor (let i in axes) {\n\t\t\tif (opts[i] === false || opts[i] === 'summary') continue;\n\t\t\tprops = L.extend({}, axesOpts, axes[i]);\n\t\t\taxis = D3.Axis(props);\n\t\t\tthis._axis.call(axis);\n\t\t}\n\n\t\t// Adjust axis scale positions\n\t\tthis._axis\n\t\t\t.selectAll('.y.axis.right')\n\t\t\t.each((d, i, n) => {\n\n\t\t\t\tlet axis = d3.select(n[i]);\n\t\t\t\tlet transform = axis.attr('transform');\n\t\t\t\tlet translate = transform.substring(transform.indexOf(\"(\") + 1, transform.indexOf(\")\")).split(\",\");\n\n\t\t\t\taxis.attr('transform', 'translate(' + (+translate[0] + (i * 40)) + ',' + translate[1] + ')')\n\n\t\t\t\tif (i > 0) {\n\t\t\t\t\taxis.select(':scope > path') .attr('opacity', 0.25);\n\t\t\t\t\taxis.selectAll(':scope > .tick line').attr('opacity', 0.75);\n\t\t\t\t}\n\n\t\t\t});\n\n\t},\n\n\t_updateClipper: function() {\n\t\tlet margin = this.options.margins;\n\n\t\tthis._zoom\n\t\t\t.scaleExtent([1, 10])\n\t\t\t.extent([\n\t\t\t\t[margin.left, 0],\n\t\t\t\t[this._width() - margin.right, this._height()]\n\t\t\t])\n\t\t\t.translateExtent([\n\t\t\t\t[margin.left, -Infinity],\n\t\t\t\t[this._width() - margin.right, Infinity]\n\t\t\t]);\n\n\t\t// Apply svg mask on multi-track segments (BETA)\n\t\tthis._mask.selectAll(\".gap\").remove()\n\t\tthis._maskGaps.forEach((d, i) => {\n\t\t\tif(i >= this._maskGaps.length - 2) return;\n\t\t\tlet d1 = this._data[this._maskGaps[i]];\n\t\t\tlet d2 = this._data[this._maskGaps[i + 1]];\n\t\t\tlet x1 = this._x(this._data[this._findIndexForLatLng(d1.latlng)].dist);\n\t\t\tlet x2 = this._x(this._data[this._findIndexForLatLng(d2.latlng)].dist);\n\t\t\tthis._mask\n\t\t\t\t.append(\"rect\")\n\t\t\t\t.attr(\"x\", x1)\n\t\t\t\t.attr(\"y\", 0)\n\t\t\t\t.attr(\"width\", x2 - x1 )\n\t\t\t\t.attr(\"height\", this._height())\n\t\t\t\t.attr('class', 'gap')\n\t\t\t\t.attr('fill-opacity', '0.8')\n\t\t\t\t.attr(\"fill\", 'black'); // black = hide\n\t\t});\n\t},\n\n\t_updateLegend: function () {\n\n\t\tif (this.options.legend === false) return;\n\n\t\tlet legends = this._props.legendItems;\n\t\tlet legend;\n\n\t\t// Reset legend items\n\t\tthis._legend.selectAll('g').remove();\n\t\tfor (var i in legends) {\n\t\t\tlegend = D3.LegendItem(\n\t\t\t\tL.extend({\n\t\t\t\t\twidth : this._width(),\n\t\t\t\t\theight : this._height(),\n\t\t\t\t\tmargins: this.options.margins,\n\t\t\t\t}, legends[i])\n\t\t\t)\n\t\t\tthis._legend.append(\"g\").call(legend);\n\t\t}\n\n\t\t// Get legend items\n\t\tlet items = this._legend.selectAll('.legend-item');\n\n\t\t// Calculate legend item positions\n\t\tlet n = items.nodes().length;\n\t\tlet v = Array(Math.floor(n / 2)).fill(null).map((d, i) => (i + 1) * 2 - (1 - Math.sign(n % 2)));\n\t\tlet rev = v.slice().reverse().map((d) => -(d));\n\n\t\tif (n % 2 !== 0) {\n\t\t\trev.push(0);\n\t\t}\n\t\tv = rev.concat(v);\n\n\t\t// Get chart margins\n\t\tlet xAxesB = this._axis.selectAll('.x.axis.bottom').nodes().length;\n\t\tlet marginB = 30 + (xAxesB * 2);\n\t\tlet marginR = n * 30;\n\n\t\t// Adjust chart right margins\n\t\tif (n && this.options.margins.right < marginR) {\n\t\t\tthis.options.margins.right = marginR;\n\t\t\tthis.fire('margins_updated');\n\t\t}\n\n\t\t// Adjust chart bottom margins\n\t\tif(xAxesB && this.options.margins.bottom < marginB) {\n\t\t\tthis.options.margins.bottom = marginB;\n\t\t\tthis.fire('margins_updated');\n\t\t}\n\n\t\titems\n\t\t\t.each((d, i, n) => {\n\n\t\t\t\tlet legend = d3.select(n[i]);\n\t\t\t\tlet rect = legend.select('rect');\n\t\t\t\tlet name = legend.attr('data-name');\n\t\t\t\tlet path = this._paths[name];\n\n\t\t\t\tlet tx = v[i] * 55;\n\t\t\t\tlet ty = xAxesB * 2;\n\n\t\t\t\tlegend\n\n\t\t\t\t// Adjust legend item positions\n\t\t\t\t.attr(\"transform\", \"translate(\" + tx + \", \" + ty + \")\");\n\n\t\t\t\t// Set initial state (disabled controls)\n\t\t\t\tif (name in this.options && this.options[name] == 'disabled') {\n\t\t\t\t\tpath.classed('leaflet-hidden', true);\n\t\t\t\t\tlegend.select('text').style('text-decoration-line', 'line-through');\n\t\t\t\t\tlegend.select('rect').style('fill-opacity', '0');\n\t\t\t\t}\n\n\t\t\t\t// Apply d3-zoom (bind <clipPath> mask)\n\t\t\t\tif (this._mask) {\n\t\t\t\t\tpath.attr('mask', 'url(#' + this._mask.attr('id') + ')');\n\t\t\t\t}\n\n\t\t\t});\n\t},\n\n\t_updateScale: function() {\n\t\tif (this.zooming) return { x: this._x, y: this._y };\n\n\t\tfor (let i in this._scales) {\n\t\t\tthis._scales[i]\n\t\t\t\t.domain(this._domains[i](this._data))\n\t\t\t\t.range(this._ranges[i](this._width(), this._height()))\n\t\t}\n\n\t\treturn { x: this._x, y: this._y };\n\t},\n\n\t/**\n\t * Calculates chart width.\n\t */\n\t_width: function() {\n\t\treturn this._chart._width;\n\t},\n\n\t/**\n\t * Calculates chart height.\n\t */\n\t_height: function() {\n\t\treturn this._chart._height;\n\t},\n\n\t/*\n\t * Finds data entries above a given y-elevation value and returns geo-coordinates\n\t */\n\t_findCoordsForY: function(y) {\n\t\tlet data = this._data;\n\t\tlet z = this._y.invert(y);\n\n\t\t// save indexes of elevation values above the horizontal line\n\t\tconst list = data.reduce((array, item, index) => {\n\t\t\tif (item.z >= z) array.push(index);\n\t\t\treturn array;\n\t\t}, []);\n\n\t\tlet start = 0;\n\t\tlet next;\n\n\t\t// split index list into blocks of coordinates\n\t\tconst coords = list.reduce((array, _, curr) => {\n\t\t\tnext = curr + 1;\n\t\t\tif (list[next] !== list[curr] + 1 || next === list.length) {\n\t\t\t\tarray.push(\n\t\t\t\t\tlist\n\t\t\t\t\t.slice(start, next)\n\t\t\t\t\t.map(i => data[i].latlng)\n\t\t\t\t);\n\t\t\t\tstart = next;\n\t\t\t}\n\t\t\treturn array;\n\t\t}, []);\n\n\t\treturn coords;\n\t},\n\n\t/*\n\t * Finds a data entry for a given x-coordinate of the diagram\n\t */\n\t_findIndexForXCoord: function(x) {\n\t\treturn d3\n\t\t\t.bisector(d => d[this.options.xAttr])\n\t\t\t.left(this._data || [0, 1], this._x.invert(x));\n\t},\n\n\t/*\n\t * Finds a data entry for a given latlng of the map\n\t */\n\t_findIndexForLatLng: function(latlng) {\n\t\tlet result = null;\n\t\tlet d = Infinity;\n\t\tthis._data.forEach((item, index) => {\n\t\t\tlet dist = latlng.distanceTo(item.latlng);\n\t\t\tif (dist < d) {\n\t\t\t\td = dist;\n\t\t\t\tresult = index;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t},\n\n\t/*\n\t * Removes the drag rectangle and zoms back to the total extent of the data.\n\t */\n\t_resetDrag: function() {\n\t\tif (this._chart.panes.brush.select(\".selection\").attr('width')) {\n\t\t\tthis._chart.panes.brush.call(this._brush.clear);\n\t\t\tthis._hideDiagramIndicator();\n\t\t\tthis.fire('reset_drag');\n\t\t}\n\t},\n\n\t_resetZoom: function() {\n\t\tif (this._zoom) {\n\t\t\tthis._zoom.transform(this._chart.svg, d3.zoomIdentity);\n\t\t}\n\t},\n\n\t/**\n\t * Display distance and altitude level (\"focus-rect\").\n\t */\n\t_showDiagramIndicator: function(item, xCoordinate) {\n\t\tthis._tooltip\n\t\t\t.attr(\"display\", null)\n\t\t\t.call(D3.Tooltip({\n\t\t\t\txCoord: xCoordinate,\n\t\t\t\tyCoord: this._y(item[this.options.yAttr]),\n\t\t\t\theight: this._height(),\n\t\t\t\twidth : this._width(),\n\t\t\t\tlabels: this._props.tooltipItems,\n\t\t\t\titem: item\n\t\t\t}));\n\t},\n\n\t_hideDiagramIndicator: function() {\n\t\tthis._tooltip.attr(\"display\", 'none');\n\t},\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\n\nexport var Marker = L.Class.extend({\n\n\tinitialize: function(options) {\n\t\tthis.options = options;\n\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line':\n\t\t\t\t// this._container = d3.create(\"g\").attr(\"class\", \"height-focus-group\");\n\t\t\tbreak;\n\t\t\tcase 'position-marker':\n\t\t\t\t// this._marker = L.circleMarker([0, 0], { pane: 'overlayPane', radius: 6, fillColor: '#fff', fillOpacity:1, color: '#000', weight:1, interactive: false });\n\t\t\t\tthis._marker = L.marker([0, 0], { icon: this.options.markerIcon, zIndexOffset: 1000000, interactive: false });\n\t\t\tbreak;\n\t\t}\n\n\t\tthis._labels = {};\n\n\t\treturn this;\n\t},\n\n\taddTo: function(map) {\n\t\tthis._map = map;\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line': this._container = d3.select(map.getPane('elevationPane')).select(\"svg > g\").call(D3.PositionMarker({})); break;\n\t\t\tcase 'position-marker': this._marker.addTo(map, { pane: 'overlayPane' }); break;\n\t\t}\n\t\treturn this;\n\t},\n\n\t/**\n\t * Update position marker (\"leaflet-marker\").\n\t */\n\tupdate: function(props) {\n\t\tif (props) this._props = props;\n\t\telse props = this._props;\n\n\t\tif(!props) return;\n\n\t\tif (props.options) this.options = props.options;\n\t\tif (!this._map) this.addTo(props.map);\n\n\t\tthis._latlng = props.item.latlng;\n\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line':\n\t\t\t\tif (this._container) {\n\t\t\t\t\tlet point = this._map.latLngToLayerPoint(this._latlng);\n\t\t\t\t\tpoint = L.extend({}, props.item, this._map._rotate ? this._map.rotatedPointToMapPanePoint(point) : point);\n\n\t\t\t\t\tthis._container.classed(\"leaflet-hidden\", false);\n\t\t\t\t\tthis._container.call(D3.PositionMarker({\n\t\t\t\t\t\ttheme : this.options.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: point.y,\n\t\t\t\t\t\tlength: point.y - (this._height() / props.maxElevation * point.z), // normalized Y\n\t\t\t\t\t\tlabels: this._labels,\n\t\t\t\t\t\titem: point\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'position-marker':\n\t\t\t\t_.removeClass(this._marker.getElement(), 'leaflet-hidden');\n\t\t\t\tthis._marker.setLatLng(this._latlng);\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t/*\n\t * Hides the position/height indicator marker drawn onto the map\n\t */\n\tremove: function() {\n\t\tthis._props = null;\n\t\tswitch(this.options.marker) {\n\t\t\tcase 'elevation-line': this._container && this._container.classed(\"leaflet-hidden\", true); break;\n\t\t\tcase 'position-marker': _.addClass(this._marker.getElement(), 'leaflet-hidden'); break;\n\t\t}\n\t},\n\n\tgetLatLng: function() {\n\t\treturn this._latlng;\n\t},\n\n\t/**\n\t * Calculates chart height.\n\t */\n\t_height: function() {\n\t\tlet opts = this.options;\n\t\treturn opts.height - opts.margins.top - opts.margins.bottom;\n\t},\n\n\t_registerTooltip: function(props) {\n\t\tthis._labels[props.name] = props;\n\t}\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\n\nexport var Summary = L.Class.extend({\n\tinitialize: function(opts, control) {\n\t\tthis.options = opts;\n\t\tthis.control = control;\n\n\t\tlet summary = this._container = _.create(\"div\", \"elevation-summary \" + (opts.summary ? opts.summary + \"-summary\" : ''));\n\t\t_.style(summary, 'max-width', opts.width ? opts.width + 'px' : '');\n\t},\n\n\trender: function() {\n\t\treturn container => container.append(() => this._container);\n\t},\n\n\treset: function() {\n\t\tthis._container.innerHTML = '';\n\t},\n\n\tappend: function(className, label, value) {\n\t\tthis._container.innerHTML += `<span class=\"${className}\"><span class=\"summarylabel\">${label}</span><span class=\"summaryvalue\">${value}</span></span>`;\n\t\treturn this;\n\t},\n\n\t_registerSummary: function(data) {\n\t\tfor (let i in data) {\n\t\t\tthis.append(i, L._(data[i].label), typeof data[i].value !== \"function\" ? data[i].value : data[i].value(this.control.track_info));\n\t\t}\n\t}\n\n});\n","import * as _ from './utils';\n\nexport var Options = {\n\tautofitBounds: true,\n\tautohide: !L.Browser.mobile,\n\tautohideMarker: true,\n\talmostover: true,\n\taltitude: true,\n\tcollapsed: false,\n\tdetached: true,\n\tdistance: true,\n\tdistanceMarkers: false,\n\tdecimalsX: 2,\n\tdecimalsY: 0,\n\tdragging: !L.Browser.mobile,\n\tdownloadLink: 'link',\n\televationDiv: \"#elevation-div\",\n\tfollowMarker: true,\n\tforceAxisBounds: false,\n\theight: 200,\n\timperial: false,\n\tinterpolation: \"curveLinear\",\n\tlazyLoadJS: true,\n\tlegend: true,\n\tmargins: {\n\t\ttop: 30,\n\t\tright: 30,\n\t\tbottom: 30,\n\t\tleft: 40\n\t},\n\tmarker: 'elevation-line',\n\tmarkerIcon: L.divIcon({\n\t\tclassName: 'elevation-position-marker',\n\t\thtml: '<i class=\"elevation-position-icon\"></i>',\n\t\ticonSize: [32, 32],\n\t\ticonAnchor: [16, 16],\n\t}),\n\tposition: \"topright\",\n\tpolyline: {\n\t\tclassName: 'elevation-polyline',\n\t\tcolor: '#000',\n\t\topacity: 0.75,\n\t\tweight: 5,\n\t\tlineCap: 'round'\n\t},\n\tpolylineSegments: {\n\t\tclassName: 'elevation-polyline-segments',\n\t\tcolor: '#F00',\n\t\tinteractive: false,\n\t},\n\tpreferCanvas: false,\n\treverseCoords: false,\n\truler: true,\n\tskipNullZCoords: false,\n\ttheme: \"lightblue-theme\",\n\tsummary: 'inline',\n\tslope: false,\n\tspeed: false,\n\tsLimit: undefined,\n\ttime: false,\n\ttimeFactor: 3600,\n\ttimeFormat: false,\n\ttimestamps: false,\n\tsDeltaMax: undefined,\n\tsInterpolation: \"curveStepAfter\",\n\tsRange: undefined,\n\twidth: 600,\n\twaypoints: true,\n\twptIcons: {\n\t\t'': L.divIcon({\n\t\t\tclassName: 'elevation-waypoint-marker',\n\t\t\thtml: '<i class=\"elevation-waypoint-icon default\"></i>',\n\t\t\ticonSize: [30, 30],\n\t\t\ticonAnchor: [8, 30],\n\t\t}),\n\t},\n\twptLabels: true,\n\txAttr: \"dist\",\n\txLabel: \"km\",\n\txTicks: undefined,\n\tyAttr: \"z\",\n\tyAxisMax: undefined,\n\tyAxisMin: undefined,\n\tyLabel: \"m\",\n\tyTicks: undefined,\n\tzFollow: false,\n\tzooming: !L.Browser.Mobile,\n};\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Chart } from './chart';\nimport { Marker } from './marker';\nimport { Summary } from './summary';\nimport { Options } from './options';\n\nexport const Elevation = L.Control.Elevation = L.Control.extend({\n\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\n\n\toptions: Options,\n\t__mileFactor: 0.621371,\n\t__footFactor: 3.28084,\n\t__D3: 'https://unpkg.com/d3@6.5.0/dist/d3.min.js',\n\t__TOGEOJSON: 'https://unpkg.com/@tmcw/togeojson@4.5.0/dist/togeojson.umd.js',\n\t__LGEOMUTIL: 'https://unpkg.com/leaflet-geometryutil@0.9.3/src/leaflet.geometryutil.js',\n\t__LALMOSTOVER: 'https://unpkg.com/leaflet-almostover@1.0.1/src/leaflet.almostover.js',\n\t__LDISTANCEM: 'https://unpkg.com/@raruto/leaflet-elevation@1.9.3/libs/leaflet-distance-marker.min.js',\n\n\t/*\n\t * Add data to the diagram either from GPX or GeoJSON and update the axis domain and data\n\t */\n\taddData: function(d, layer) {\n\t\tthis.lazyLoad(this.__D3)\n\t\t\t.then(() => {\n\t\t\t\tif (typeof layer === \"undefined\" && d.on) {\n\t\t\t\t\tlayer = d;\n\t\t\t\t}\n\t\t\t\tthis._addData(d);\n\t\t\t\tthis._addLayer(layer);\n\t\t\t\tthis._fireEvt(\"eledata_added\", { data: d, layer: layer, track_info: this.track_info });\n\t\t\t});\n\t},\n\n\t/**\n\t * Adds the control to the given map.\n\t */\n\taddTo: function(map) {\n\t\tif (this.options.detached) {\n\t\t\tlet eleDiv = this._initElevationDiv();\n\t\t\tif (!eleDiv.isConnected) _.insert(map.getContainer(), eleDiv, 'afterend');\n\t\t\t_.append(eleDiv, this.onAdd(map));\n\t\t} else {\n\t\t\tL.Control.prototype.addTo.call(this, map);\n\t\t}\n\t\treturn this;\n\t},\n\n\t/*\n\t * Reset data and display\n\t */\n\tclear: function() {\n\t\tif (this._marker) this._marker.remove();\n\t\tif (this._chart) this._clearChart();\n\t\tif (this._layers) this._clearLayers();\n\t\tif (this._markers) this._clearMarkers();\n\n\t\tthis._data = [];\n\t\tthis.track_info = {};\n\n\t\tthis._fireEvt(\"eledata_clear\");\n\n\t\tthis._updateChart();\n\t},\n\n\t_clearChart: function() {\n\t\tif (this._events && this._events.elechart_updated) {\n\t\t\tthis._events.elechart_updated.forEach(e => this.off('elechart_updated', e.fn, e.ctx));\n\t\t}\n\t\tif (this._chart && this._chart._container) {\n\t\t\tthis._chart._container.selectAll('g.point .point').remove();\n\t\t\tthis._chart.clear();\n\t\t}\n\t},\n\n\t_clearLayers: function() {\n\t\tif (this._layers && this._layers.eachLayer) {\n\t\t\tthis._layers.eachLayer(l => l.remove())\n\t\t\tthis._layers.clearLayers();\n\t\t}\n\t},\n\n\t_clearMarkers: function() {\n\t\tif (this._markers && this._markers.eachLayer) {\n\t\t\tthis._markers.eachLayer(l => l.remove())\n\t\t\tthis._markers.clearLayers();\n\t\t}\n\t},\n\n\t/**\n\t * Disable chart brushing.\n\t */\n\tdisableBrush: function() {\n\t\tthis._chart._brushEnabled = false;\n\t\tthis._resetDrag();\n\t},\n\n\t/**\n\t * Enable chart brushing.\n\t */\n\tenableBrush: function() {\n\t\tthis._chart._brushEnabled = true;\n\t},\n\n\t/**\n\t * Disable chart zooming.\n\t */\n\tdisableZoom: function() {\n\t\tthis._chart._zoomEnabled = false;\n\t\tthis._chart._resetZoom();\n\t},\n\n\t/**\n\t * Enable chart zooming.\n\t */\n\tenableZoom: function() {\n\t\tthis._chart._zoomEnabled = true;\n\t},\n\n\t/**\n\t * Sets a map view that contains the given geographical bounds.\n\t */\n\tfitBounds: function(bounds) {\n\t\tbounds = bounds || this.getBounds();\n\t\tif (this._map && bounds.isValid()) this._map.fitBounds(bounds);\n\t},\n\n\tgetBounds: function(data) {\n\t\tdata = data || this._data;\n\t\treturn L.latLngBounds(data.map((d) => d.latlng));\n\t},\n\n\t/**\n\t * Get default zoom level when \"followMarker\" is true.\n\t */\n\tgetZFollow: function() {\n\t\treturn this.options.zFollow;\n\t},\n\n\t/**\n\t * Hide current elevation chart profile.\n\t */\n\thide: function() {\n\t\t_.style(this._container, \"display\", \"none\");\n\t},\n\n\t/**\n\t * Initialize chart control \"options\" and \"container\".\n\t */\n\tinitialize: function(options) {\n\t\tthis._data = [];\n\t\tthis._layers = L.featureGroup();\n\t\tthis._markers = L.featureGroup();\n\t\tthis._markedSegments = L.polyline([]);\n\t\tthis._chartEnabled = true,\n\t\tthis.track_info = {};\n\n\t\tL.setOptions(this, options);\n\n\t\tif (this.options.followMarker) this._setMapView = L.Util.throttle(this._setMapView, 300, this);\n\t\tif (this.options.legend) this.options.margins.bottom += 30;\n\t\tif (this.options.theme) this.options.polylineSegments.className += ' ' + this.options.theme;\n\t\tif (this.options.wptIcons === true) this.options.wptIcons = Options.wptIcons;\n\t\tif (this.options.distanceMarkers === true) this.options.distanceMarkers = { lazy: true };\n\n\t\tthis._markedSegments.setStyle(this.options.polylineSegments);\n\n\t\t// Leaflet canvas renderer colors\n\t\tL.extend(D3.Colors, this.options.colors || {});\n\n\t\t// Various stuff\n\t\tthis._fixCanvasPaths();\n\t\tthis._fixTooltipSize();\n\t},\n\n\t/**\n\t * Javascript scripts downloader (lazy loader)\n\t */\n\tlazyLoad: function(src, condition = false, loader = '') {\n\t\tif (!this.options.lazyLoadJS) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tswitch(src) {\n\t\t\tcase this.__D3:\n\t\t\t\tloader = '_d3LazyLoader';\n\t\t\t\tcondition = typeof d3 !== 'object';\n\t\t\tbreak;\n\t\t\tcase this.__TOGEOJSON:\n\t\t\t\tloader = '_togeojsonLazyLoader';\n\t\t\t\tcondition = typeof toGeoJSON !== 'object';\n\t\t\tbreak;\n\t\t\tcase this.__LGEOMUTIL:\n\t\t\t\tloader = '_geomutilLazyLoader';\n\t\t\t\tcondition = typeof L.GeometryUtil !== 'object';\n\t\t\tbreak;\n\t\t\tcase this.__LALMOSTOVER:\n\t\t\t\tloader = '_almostoverLazyLoader';\n\t\t\t\tcondition = typeof L.Handler.AlmostOver !== 'function';\n\t\t\tbreak;\n\t\t\tcase this.__LDISTANCEM:\n\t\t\t\tloader = '_distanceMarkersLazyLoader';\n\t\t\t\tcondition = typeof L.DistanceMarkers !== 'function';\n\t\t\tbreak;\n\t\t}\n\t\treturn L.Control.Elevation[loader] = _.lazyLoader(src, condition, L.Control.Elevation[loader]);\n\t},\n\n\t/**\n\t * Load elevation data (GPX, GeoJSON or KML).\n\t */\n\tload: function(data) {\n\t\tthis._parseFromString(data).then( geojson => geojson ? this._loadLayer(geojson) : this._loadFile(data));\n\t},\n\n\t/**\n\t * Create container DOM element and related event listeners.\n\t * Called on control.addTo(map).\n\t */\n\tonAdd: function(map) {\n\t\tthis._map = map;\n\n\t\tlet container = this._container = _.create(\"div\", \"elevation-control elevation \" + this.options.theme + \" \" + (this.options.detached ? '' : 'leaflet-control'));\n\t\t\n\t\tthis.lazyLoad(this.__D3)\n\t\t\t.then(() => {\n\t\t\t\tthis._initButton(container);\n\t\t\t\tthis._initChart(container);\n\t\t\t\tthis._initSummary(container);\n\t\t\t\tthis._initMarker(map);\n\t\t\t\tthis._initLayer(map);\n\n\t\t\t\tmap\n\t\t\t\t\t.on('zoom viewreset zoomanim', this._hideMarker, this)\n\t\t\t\t\t.on('resize', this._resetView, this)\n\t\t\t\t\t.on('resize', this._resizeChart, this)\n\t\t\t\t\t.on('rotate', this._rotateMarker, this)\n\t\t\t\t\t.on('mousedown', this._resetDrag, this);\n\n\t\t\t\t_.on(map.getContainer(), 'mousewheel', this._resetDrag, this);\n\t\t\t\t_.on(map.getContainer(), 'touchstart', this._resetDrag, this);\n\t\t\t\t_.on(document, 'keydown', this._keydownHandler, this);\n\n\t\t\t\tthis\n\t\t\t\t\t.on('eledata_added eledata_loaded', this._updateChart, this)\n\t\t\t\t\t.on('eledata_added eledata_loaded', this._updateSummary, this);\n\n\t\t\t\tthis._updateChart();\n\t\t\t\tthis._updateSummary();\n\t\t\t});\n\n\t\treturn container;\n\t},\n\n\t/**\n\t * Clean up control code and related event listeners.\n\t * Called on control.remove().\n\t */\n\tonRemove: function(map) {\n\t\tthis._container = null;\n\n\t\tmap\n\t\t\t.off('zoom viewreset zoomanim', this._hideMarker, this)\n\t\t\t.off('resize', this._resetView, this)\n\t\t\t.off('resize', this._resizeChart, this)\n\t\t\t.off('mousedown', this._resetDrag, this);\n\n\t\t_.off(map.getContainer(), 'mousewheel', this._resetDrag, this);\n\t\t_.off(map.getContainer(), 'touchstart', this._resetDrag, this);\n\t\t_.off(document, 'keydown', this._keydownHandler, this);\n\n\t\tthis\n\t\t\t.off('eledata_added eledata_loaded', this._updateChart, this)\n\t\t\t.off('eledata_added eledata_loaded', this._updateSummary, this);\n\t},\n\n\t/**\n\t * Redraws the chart control. Sometimes useful after screen resize.\n\t */\n\tredraw: function() {\n\t\tthis._resizeChart();\n\t},\n\n\t/**\n\t * Set default zoom level when \"followMarker\" is true.\n\t */\n\tsetZFollow: function(zoom) {\n\t\tthis.options.zFollow = zoom;\n\t},\n\n\t/**\n\t * Hide current elevation chart profile.\n\t */\n\tshow: function() {\n\t\t_.style(this._container, \"display\", \"block\");\n\t},\n\n\t/*\n\t * Parsing data either from GPX or GeoJSON and update the diagram data\n\t */\n\t_addData: function(d) {\n\t\tif (!d) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * Standard GeoJSON --> doesn't handle \"time\", \"heart\", …\n\t\t */\n\t\tlet geom = d.geometry;\n\t\tif (geom) {\n\t\t\tswitch (geom.type) {\n\t\t\t\tcase 'LineString':\n\t\t\t\t\tthis._addGeoJSONData(geom.coordinates);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'MultiLineString':\n\t\t\t\t\t_.each(geom.coordinates, coords => this._addGeoJSONData(coords));\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn('Unsopperted GeoJSON feature geometry type:' + geom.type);\n\t\t\t}\n\t\t}\n\t\tif (d.type === \"FeatureCollection\") {\n\t\t\t_.each(d.features, feature => this._addData(feature));\n\t\t}\n\n\t\t/**\n\t\t * Extended GeoJSON --> rely on leaflet implementation\n\t\t */\n\t\tif (d._latlngs) {\n\t\t\tthis._addGeoJSONData(d._latlngs, d.feature && d.feature.properties);\n\t\t}\n\t},\n\n\t/*\n\t * Parsing of GeoJSON data lines and their elevation in z-coordinate\n\t */\n\t_addGeoJSONData: function(coords, properties) {\n\t\tcoords.forEach((point, i) => {\n\n\t\t\t// Inspired by L.GPX layer properties\n\t\t\tpoint.meta = point.meta ?? { time: null, ele: null, hr: null, cad: null, atemp: null };\n\t\t\t\n\t\t\t// \"alt\" property is generated inside \"leaflet\"\n\t\t\tif (\"alt\" in point) point.meta.ele = point.alt;\n\n\t\t\t// \"coordinateProperties\" property is generated inside \"@tmcw/toGeoJSON\"\n\t\t\tlet props = (properties && properties.coordinateProperties) || properties;\n\t\t\tif (props) {\n\t\t\t\tif(\"coordTimes\" in props) point.meta.time = new Date(Date.parse(props.coordTimes[i]));\n\t\t\t\telse if(\"times\" in props) point.meta.time = new Date(Date.parse(props.times[i]));\n\t\t\t\telse if(\"time\" in props) point.meta.time = new Date(Date.parse((typeof props.time === 'object' ? props.time[i] : props.time)));\n\t\t\t\tif (\"heartRates\" in props) point.meta.hr = parseInt(props.heartRates[i]);\n\t\t\t\telse if(\"heartRate\" in props) point.meta.hr = parseInt((typeof props.heartRate === 'object' ? props.heartRate[i] : props.heartRate));\n\t\t\t\telse if(\"heart\" in props) point.meta.hr = parseInt((typeof props.heart === 'object' ? props.heart[i] : props.heart));\n\t\t\t\t// TODO: ask to \"@tmcw/toGeoJSON\" for \"cadence\" and \"temperature\" implementation\n\t\t\t}\n\n\t\t\tthis._addPoint(\n\t\t\t\tpoint.lat ?? point[1], \n\t\t\t\tpoint.lng ?? point[0],\n\t\t\t\tpoint.alt ?? point.meta.ele ?? point[2]\n\t\t\t);\n\n\t\t\tthis._fireEvt(\"elepoint_added\", { point: point, index: this._data.length - 1 });\n\t\t});\n\n\t\tthis._fireEvt(\"eletrack_added\", { coords: coords, index: this._data.length - 1 });\n\t},\n\n\t/*\n\t * Parse and push a single (x, y, z) point to current elevation profile.\n\t */\n\t_addPoint: function(x, y, z) {\n\t\tif (this.options.reverseCoords) {\n\t\t\t[x, y] = [y, x];\n\t\t}\n\n\t\tthis._data.push({\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tz: z,\n\t\t\tlatlng: L.latLng(x, y, z)\n\t\t});\n\n\t\tthis._fireEvt(\"eledata_updated\", { index: this._data.length - 1 });\n\t},\n\n\t_addLayer: function(layer) {\n\t\tif (layer) this._layers.addLayer(layer)\n\t\t// Postpone adding the distance markers (lazy: true)\n\t\tif (layer && this.options.distanceMarkers && this.options.distanceMarkers.lazy) {\n\t\t\tlayer.on('add remove', (e) => L.DistanceMarkers && e.target instanceof L.Polyline && e.target[e.type + 'DistanceMarkers']());\n\t\t}\n\t},\n\n\t_addMarker: function(marker) {\n\t\tif (marker) this._markers.addLayer(marker)\n\t},\n\n\t/**\n\t * Initialize \"L.AlmostOver\" integration\n\t */\n\t_initAlmostOverHandler: function(map, layer) {\n\t\tif(!map || !this.options.almostOver) return;\n\t\tthis.lazyLoad(this.__LGEOMUTIL)\n\t\t\t.then(() => this.lazyLoad(this.__LALMOSTOVER))\n\t\t\t.then(() => {\n\t\t\t\t\tmap.addHandler('almostOver', L.Handler.AlmostOver)\n\t\t\t\t\tif (L.GeometryUtil && map.almostOver && map.almostOver.enabled()) {\n\t\t\t\t\t\tmap.almostOver.addLayer(layer);\n\t\t\t\t\t\tmap\n\t\t\t\t\t\t\t.on('almost:move', (e) => this._mousemoveLayerHandler(e))\n\t\t\t\t\t\t\t.on('almost:out', (e) => this._mouseoutHandler(e));\n\t\t\t\t\t}\n\t\t\t});\n\t},\n\n\t/**\n\t * Initialize \"L.DistanceMarkers\" integration\n\t */\n\t_initDistanceMarkers: function(map, layer) {\n\t\tif (!map) return;\n\t\tif (this.options.distanceMarkers) {\n\t\t\tthis.lazyLoad(this.__LGEOMUTIL)\n\t\t\t\t.then(() => this.lazyLoad(this.__LDISTANCEM))\n\t\t\t\t.then(() => this.options.polyline && layer.addTo(map));\n\t\t} else if (this.options.polyline) {\n\t\t\tlayer.addTo(map);\n\t\t}\n\t},\n\n\t/**\n\t * Adds the control to the given \"detached\" div.\n\t */\n\t_initElevationDiv: function() {\n\t\tlet eleDiv = _.select(this.options.elevationDiv);\n\t\tif (!eleDiv) {\n\t\t\tthis.options.elevationDiv = '#elevation-div_' + _.randomId();\n\t\t\teleDiv = _.create('div', 'leaflet-control elevation elevation-div', { id: this.options.elevationDiv.substr(1) });\n\t\t}\n\t\tif (this.options.detached) {\n\t\t\t_.replaceClass(eleDiv, 'leaflet-control', 'elevation-detached');\n\t\t}\n\t\treturn this.eleDiv = eleDiv;\n\t},\n\n\t/**\n\t * Initialize \"L.AlmostOver\" and \"L.DistanceMarkers\"\n\t */\n\t_initMapIntegrations: function(control, layer) {\n\t\tlet map = control._map;\n\t\tif (control._map) {\n\t\t\tmap.once('layeradd', (e) => control.options.autofitBounds && control.fitBounds(layer.getBounds()));\n\t\t\tif (!L.Browser.mobile) {\n\t\t\t\tcontrol._initAlmostOverHandler(map, layer);\n\t\t\t\tcontrol._initDistanceMarkers(map, layer);\n\t\t\t} else if (control.options.polyline) {\n\t\t\t\tlayer.addTo(map);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Undefined elevation map object\");;\n\t\t}\n\t},\n\n\t/*\n\t * Collapse current chart control.\n\t */\n\t_collapse: function() {\n\t\t_.replaceClass(this._container, 'elevation-expanded', 'elevation-collapsed');\n\t},\n\n\t/*\n\t * Expand current chart control.\n\t */\n\t_expand: function() {\n\t\t_.replaceClass(this._container, 'elevation-collapsed', 'elevation-expanded');\n\t},\n\n\t/**\n\t * Add some basic colors to leaflet canvas renderer (preferCanvas: true).\n\t */\n\t_fixCanvasPaths: function() {\n\t\tlet oldProto = L.Canvas.prototype._fillStroke;\n\t\tlet control = this;\n\t\tL.Canvas.include({\n\t\t\t_fillStroke: function(ctx, layer) {\n\t\t\t\tif (control._layers.hasLayer(layer)) {\n\n\t\t\t\t\tlet theme = control.options.theme.replace('-theme', '');\n\t\t\t\t\tlet color = D3.Colors[theme] || {};\n\t\t\t\t\tlet options = layer.options;\n\n\t\t\t\t\toptions.color = color.line || color.area || theme;\n\t\t\t\t\toptions.stroke = !!options.color;\n\n\t\t\t\t\toldProto.call(this, ctx, layer);\n\n\t\t\t\t\tif (options.stroke && options.weight !== 0) {\n\t\t\t\t\t\tlet oldVal = ctx.globalCompositeOperation || 'source-over';\n\t\t\t\t\t\tctx.globalCompositeOperation = 'destination-over'\n\t\t\t\t\t\tctx.strokeStyle = color.outline || '#FFF';\n\t\t\t\t\t\tctx.lineWidth = options.weight * 1.75;\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\tctx.globalCompositeOperation = oldVal;\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\toldProto.call(this, ctx, layer);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n\t * Partial fix for initial tooltip size\n\t * \n\t * @link https://github.com/Raruto/leaflet-elevation/issues/81#issuecomment-713477050\n\t */\n\t_fixTooltipSize: function() {\n\t\tthis.on('elechart_init', () =>\n\t\t\tthis.once('elechart_change elechart_hover', e => {\n\t\t\t\tif (this._chartEnabled) {\n\t\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t\t}\n\t\t\t\tthis._updateMarker(e.data);\n\t\t\t})\n\t\t);\n\t},\n\n\t/*\n\t * Finds a data entry for the given LatLng\n\t */\n\t_findItemForLatLng: function(latlng) {\n\t\treturn this._data[this._chart._findIndexForLatLng(latlng)];\n\t},\n\n\t/*\n\t * Finds a data entry for the given xDiagCoord\n\t */\n\t_findItemForX: function(x) {\n\t\treturn this._data[this._chart._findIndexForXCoord(x)];\n\t},\n\n\t/**\n\t * Fires an event of the specified type.\n\t */\n\t_fireEvt: function(type, data, propagate) {\n\t\tif (this.fire) this.fire(type, data, propagate);\n\t\tif (this._map) this._map.fire(type, data, propagate);\n\t},\n\n\t/**\n\t * Calculates chart height.\n\t */\n\t_height: function() {\n\t\tif (this._chart) return this._chart._height();\n\t\tlet opts = this.options;\n\t\treturn opts.height - opts.margins.top - opts.margins.bottom;\n\t},\n\n\t/*\n\t * Hides the position/height indicator marker drawn onto the map\n\t */\n\t_hideMarker: function() {\n\t\tif (this.options.autohideMarker) {\n\t\t\tthis._marker.remove();\n\t\t}\n\t},\n\n\t/**\n\t * Generate \"svg\" chart DOM element.\n\t */\n\t_initChart: function(container) {\n\t\tlet opts = this.options;\n\n\t\topts.xTicks = this._xTicks();\n\t\topts.yTicks = this._yTicks();\n\n\t\tif (opts.detached) {\n\t\t\tlet { offsetWidth, offsetHeight} = this.eleDiv;\n\t\t\tif (offsetWidth > 0) opts.width = offsetWidth;\n\t\t\tif (offsetHeight > 20) opts.height = offsetHeight - 20; // 20 = horizontal scrollbar size.\n\t\t} else {\n\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\topts._maxWidth = opts._maxWidth > opts.width ? opts._maxWidth : opts.width;\n\t\t\tthis._container.style.maxWidth = opts._maxWidth + 'px';\n\t\t\tif (opts._maxWidth > clientWidth) opts.width = clientWidth - 30;\n\t\t}\n\n\t\tlet chart = this._chart = new Chart(opts, this);\n\n\t\tthis._x = this._chart._x;\n\t\tthis._y = this._chart._y;\n\n\t\td3\n\t\t\t.select(container)\n\t\t\t.call(chart.render())\n\n\t\tchart\n\t\t\t.on('reset_drag', this._hideMarker, this)\n\t\t\t.on('mouse_enter', this._fireEvt.bind('elechart_enter'), this)\n\t\t\t.on('dragged', this._dragendHandler, this)\n\t\t\t.on('mouse_move', this._mousemoveHandler, this)\n\t\t\t.on('mouse_out', this._mouseoutHandler, this)\n\t\t\t.on('ruler_filter', this._rulerFilterHandler, this)\n\t\t\t.on('zoom', this._updateChart, this)\n\t\t\t.on('elepath_toggle', this._toggleChartHandler, this)\n\t\t\t.on('margins_updated',this._resizeChart, this);\n\n\n\t\tthis._fireEvt(\"elechart_axis\");\n\t\tif (this.options.legend) this._fireEvt(\"elechart_legend\");\n\n\t\tthis._fireEvt(\"elechart_init\");\n\t},\n\n\t_initLayer: function() {\n\t\tthis._layers\n\t\t\t.on('layeradd layerremove', (e) => {\n\t\t\t\tlet layer = e.layer\n\t\t\t\tlet node = layer.getElement && layer.getElement();\n\t\t\t\t_.toggleClass(node, this.options.polyline.className + ' ' + this.options.theme, e.type == 'layeradd');\n\t\t\t\t_.toggleEvent(layer, \"mousemove\", this._mousemoveLayerHandler.bind(this), e.type == 'layeradd')\n\t\t\t\t_.toggleEvent(layer, \"mouseout\", this._mouseoutHandler.bind(this), e.type == 'layeradd');\n\t\t\t});\n\t},\n\n\t_initMarker: function(map) {\n\t\tlet pane = map.getPane('elevationPane');\n\t\tif (!pane) {\n\t\t\tpane = this._pane = map.createPane('elevationPane', map.getPane('norotatePane') || map.getPane('mapPane'));\n\t\t\tpane.style.zIndex = 625; // This pane is above markers but below popups.\n\t\t\tpane.style.pointerEvents = 'none';\n\t\t}\n\n\t\tif (this._renderer) this._renderer.remove()\n\t\tthis._renderer = L.svg({ pane: \"elevationPane\" }).addTo(this._map); // default leaflet svg renderer\n\t\tthis._marker = new Marker(this.options);\n\n\t\tthis._fireEvt(\"elechart_marker\");\n\t},\n\n\t/**\n\t * Inspired by L.Control.Layers\n\t */\n\t_initButton: function(container) {\n\n\t\tif (L.Browser.mobile || !this.options.detached) {\n\t\t\tL.DomEvent\n\t\t\t\t.disableClickPropagation(container)\n\t\t\t\t.disableScrollPropagation(container);\n\t\t}\n\n\t\tif (!this.options.detached) {\n\t\t\tlet link = this._button = _.create('a', \"elevation-toggle elevation-toggle-icon\" + (this.options.autohide ? \"\" : \" close-button\"), { href: '#', title: L._('Elevation') }, container);\n\n\t\t\tif (this.options.collapsed) {\n\t\t\t\tthis._collapse();\n\t\t\t\tif (this.options.autohide) {\n\t\t\t\t\t_.on(container, 'mouseover', this._expand, this);\n\t\t\t\t\t_.on(container, 'mouseout', this._collapse, this);\n\t\t\t\t} else {\n\t\t\t\t\t_.on(link, 'click', L.DomEvent.stop);\n\t\t\t\t\t_.on(link, 'click', this._toggle, this);\n\t\t\t\t}\n\n\t\t\t\t_.on(link, 'focus', this._toggle, this);\n\n\t\t\t\tthis._map.on('click', this._collapse, this);\n\t\t\t}\n\t\t}\n\t},\n\n\t_initSummary: function(container) {\n\t\tthis._summary = new Summary({ summary: this.options.summary }, this);\n\n\t\td3.select(container).call(this._summary.render());\n\t},\n\n\t_keydownHandler: function(e) {\n\t\tif(!this.options.detached && e.key === \"Escape\"){\n\t\t\tthis._collapse()\n\t\t};\n\t},\n\n\t/**\n\t * Retrieve data from a remote url (HTTP).\n\t */\n\t_loadFile: function(url) {\n\t\tfetch(url)\n\t\t\t.then((response) => response.text())\n\t\t\t.then((data) => {\n\t\t\t\tthis._downloadURL = url; // TODO: handle multiple urls?\n\t\t\t\tthis._parseFromString(data)\n\t\t\t\t\t.then( geojson => geojson && this._loadLayer(geojson));\n\t\t\t}).catch((err) => console.warn(err));\n\t},\n\n\t/**\n\t * Simple GeoJSON data loader (L.GeoJSON).\n\t */\n\t_loadLayer: function(geojson) {\n\t\tlet control = this;\n\n\t\tlet { wptIcons, wptLabels } = control.options;\n\n\t\tlet layer = L.geoJson(geojson, {\n\t\t\tdistanceMarkers: control.options.distanceMarkers,\n\t\t\tstyle: (feature) => {\n\t\t\t\tlet style = L.extend({}, control.options.polyline);\n\t\t\t\tif (control.options.theme) {\n\t\t\t\t\tstyle.className += ' ' + control.options.theme;\n\t\t\t\t}\n\t\t\t\treturn style;\n\t\t\t},\n\t\t\tpointToLayer: (feature, latlng) => {\n\t\t\t\tif (!control.options.waypoints) return;\n\n\t\t\t\tlet prop = feature.properties;\n\t\t\t\tlet desc = prop.desc ?? '';\n\t\t\t\tlet name = prop.name ?? '';\n\t\t\t\tlet sym = (prop.sym ?? name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase();\n\n\t\t\t\t// Handle chart waypoints (dots)\n\t\t\t\tif ([true, 'dots'].includes(control.options.waypoints)) {\n\t\t\t\t\tcontrol._registerCheckPoint({\n\t\t\t\t\t\tlatlng: latlng,\n\t\t\t\t\t\tlabel: ([true, 'dots'].includes(wptLabels) ? name : '')\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Handle map waypoints (markers)\n\t\t\t\tif ([true, 'markers'].includes(control.options.waypoints) && wptIcons != false) {\n\t\t\t\t\t// generate and cache appropriate icon symbol\n\t\t\t\t\tif (!wptIcons.hasOwnProperty(sym)) {\n\t\t\t\t\t\twptIcons[sym] = L.divIcon(\n\t\t\t\t\t\t\tL.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\n\t\t\t\t\tif ([true, 'markers'].includes(wptLabels) && (name || desc)) {\n\t\t\t\t\t\tlet content = decodeURI(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : ''));\n\t\t\t\t\t\tmarker.bindPopup(content, { className: 'elevation-popup', keepInView: true }).openPopup();\n\t\t\t\t\t\tmarker.bindTooltip(content, { className: 'elevation-tooltip', direction: 'auto', sticky: true, opacity: 1 }).openTooltip();\n\t\t\t\t\t}\n\t\t\t\t\tcontrol._addMarker(marker);\n\t\t\t\t\tcontrol.fire('waypoint_added', { point: marker, element: latlng, properties: prop });\n\t\t\t\t\treturn marker;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonEachFeature: (feature, layer) => {\n\t\t\t\tif (feature.geometry && feature.geometry.type != 'Point') {\n\t\t\t\t\tcontrol.addData(layer);\n\t\t\t\t\tcontrol.track_info = L.extend({}, control.track_info, { name: geojson.name });\n\t\t\t\t} \n\t\t\t},\n\t\t});\n\n\t\tcontrol.lazyLoad(control.__D3).then(() => {\n\t\t\tcontrol._initMapIntegrations(control, layer);\n\t\t\tcontrol._fireEvt(\"eledata_loaded\", { data: geojson, layer: layer, name: control.track_info.name, track_info: control.track_info })\n\t\t});\n\n\t\treturn layer;\n\t},\n\n\t_dragendHandler: function(e) {\n\t\tthis._hideMarker();\n\t\tthis.fitBounds(L.latLngBounds([e.dragstart.latlng, e.dragend.latlng]));\n\n\t\tthis._fireEvt(\"elechart_dragged\");\n\t},\n\n\t/*\n\t * Handles the moueseover the chart and displays distance and altitude level.\n\t */\n\t_mousemoveHandler: function(e) {\n\t\tif (!this._data.length || !this._chartEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tlet item = this._findItemForX(e.xCoord);\n\n\t\tif (item) {\n\t\t\tlet xCoord = e.xCoord;\n\n\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\n\n\t\t\tthis._updateMarker(item);\n\t\t\tthis._setMapView(item);\n\n\t\t\tif (this._map) {\n\t\t\t\t_.addClass(this._map.getContainer(), 'elechart-hover');\n\t\t\t}\n\n\t\t\tthis._fireEvt(\"elechart_change\", { data: item, xCoord: xCoord });\n\t\t\tthis._fireEvt(\"elechart_hover\", { data: item, xCoord: xCoord });\n\t\t}\n\t},\n\n\t/*\n\t * Handles mouseover events of the data layers on the map.\n\t */\n\t_mousemoveLayerHandler: function(e) {\n\t\tif (!this._data.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet item = this._findItemForLatLng(e.latlng);\n\t\tif (item) {\n\t\t\tlet xCoord = item.xDiagCoord;\n\n\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\n\n\t\t\tthis._updateMarker(item);\n\n\t\t\tthis._fireEvt(\"elechart_change\", { data: item, xCoord: xCoord });\n\t\t}\n\t},\n\n\t/*\n\t * Handles the moueseout over the chart.\n\t */\n\t_mouseoutHandler: function() {\n\t\tif (!this.options.detached) {\n\t\t\tthis._hideMarker();\n\t\t\tthis._chart._hideDiagramIndicator();\n\t\t}\n\n\t\tif (this._map) {\n\t\t\t_.removeClass(this._map.getContainer(), 'elechart-hover');\n\t\t}\n\n\t\tthis._fireEvt(\"elechart_leave\");\n\t},\n\n\t/**\n\t * Simple GeoJSON Parser\n\t */\n\t_parseFromGeoJSONString: function(data) {\n\t\ttry {\n\t\t\treturn JSON.parse(data);\n\t\t} catch (e) { }\n\t},\n\n\t/**\n\t * Attempt to parse raw response data (GeoJSON or XML > GeoJSON)\n\t */\n\t_parseFromString: function(data) {\n\t\treturn new Promise(resolve =>\n\t\t\tthis.lazyLoad(this.__TOGEOJSON).then(() => {\n\t\t\t\tlet geojson;\n\t\t\t\ttry {\n\t\t\t\t\tgeojson = this._parseFromXMLString(data.trim());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tgeojson = this._parseFromGeoJSONString(data.toString());\n\t\t\t\t}\n\t\t\t\tif (geojson) {\n\t\t\t\t\tgeojson = this._prepareMultiLineStrings(geojson);\n\t\t\t\t\tgeojson = this._prepareAdditionalProperties(geojson);\n\t\t\t\t}\n\t\t\t\tresolve(geojson);\n\t\t\t})\n\t\t);\n\t},\n\n\t/**\n\t * Simple XML Parser (GPX, KML, TCX)\n\t */\n\t_parseFromXMLString: function(data) {\n\t\tif (data.indexOf(\"<\") != 0) {\n\t\t\tthrow 'Invalid XML';\n\t\t}\n\t\tlet xml = (new DOMParser()).parseFromString(data, \"text/xml\");\n\t\tlet type = xml.documentElement.tagName.toLowerCase(); // \"kml\" or \"gpx\"\n\t\tlet name = xml.getElementsByTagName('name');\n\t\tif (xml.getElementsByTagName('parsererror').length) {\n\t\t\tthrow 'Invalid XML';\n\t\t}\n\t\tif (!(type in toGeoJSON)) {\n\t\t\ttype = xml.documentElement.tagName == \"TrainingCenterDatabase\" ? 'tcx' : 'gpx';\n\t\t}\n\t\tlet geojson = toGeoJSON[type](xml);\n\t\tgeojson.name = name.length > 0 ? (Array.from(name).find(tag => tag.parentElement.tagName == \"trk\") ?? name[0]).textContent : '';\n\t\treturn geojson;\n\t},\n\n\t/**\n\t * Extend GeoJSON properties (name, time, ...)\n\t */\n\t _prepareAdditionalProperties: function(geojson) {\n\t\tif (!geojson.name && this._downloadURL) {\n\t\t\tgeojson.name = this._downloadURL.split('/').pop().split('#')[0].split('?')[0];\n\t\t}\n\t\treturn geojson;\n\t},\n\n\t/**\n\t * Just a temporary fix for MultiLineString data (trk > trkseg + trkseg),\n\t * just split them into seperate LineStrings (trk > trkseg, trk > trkseg)\n\t * \n\t * @link https://github.com/Raruto/leaflet-elevation/issues/56\n\t */\n\t_prepareMultiLineStrings: function(geojson) {\n\t\tgeojson.features.forEach(feauture => {\n\t\t\tif (feauture.geometry.type == \"MultiLineString\") {\n\t\t\t\tfeauture.geometry.coordinates.forEach(coords => {\n\t\t\t\t\tgeojson.features.push({\n\t\t\t\t\t\tgeometry: { type: 'LineString', coordinates: coords },\n\t\t\t\t\t\tproperties: feauture.properties,\n\t\t\t\t\t\ttype: 'Feature'\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} \n\t\t});\n\t\treturn geojson.features.filter(feauture => feauture.geometry.type != \"MultiLineString\");\n\t},\n\n\t/**\n\t * Add a point of interest over the diagram\n\t */\n\t_registerCheckPoint: function(props) {\n\t\tthis.on(\"elechart_updated\", () => this._chart._registerCheckPoint(props));\n\t},\n\n\t/**\n\t * Add chart profile to diagram\n\t */\n\t_registerAreaPath: function(props) {\n\t\tthis.on(\"elechart_init\", () => this._chart._registerAreaPath(props));\n\t},\n\n\t/**\n\t * Add chart grid to diagram\n\t */\n\t_registerAxisGrid: function(props) {\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisGrid(props));\n\t},\n\n\t/**\n\t * Add chart axis to diagram\n\t */\n\t_registerAxisScale: function(props) {\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisScale(props));\n\t},\n\n\t/**\n\t * Add chart or marker tooltip info\n\t */\n\t_registerTooltip: function(props) {\n\t\tif (props.chart) {\n\t\t\tlet label = L.extend({}, props, { value: props.chart });\n\t\t\tthis.on(\"elechart_init\", () => this._chart._registerTooltip(label));\n\t\t}\n\t\tif (props.marker) {\n\t\t\tlet label = L.extend({}, props, { value: props.marker });\n\t\t\tthis.on(\"elechart_marker\", () => this._marker._registerTooltip(label));\n\t\t}\n\t},\n\n\t/**\n\t * Add summary info to diagram\n\t */\n\t_registerSummary: function(props) {\n\t\tthis.on('elechart_summary', () => this._summary._registerSummary(props));\n\t},\n\n\t/*\n\t * Removes the drag rectangle and zoms back to the total extent of the data.\n\t */\n\t_resetDrag: function() {\n\t\tthis._chart._resetDrag();\n\t\tthis._hideMarker();\n\t},\n\n\t/**\n\t * Resets drag, marker and bounds.\n\t */\n\t_resetView: function() {\n\t\tif (this._map && this._map._isFullscreen) return;\n\t\tthis._resetDrag();\n\t\tthis._hideMarker();\n\t\tif (this.options.autofitBounds) {\n\t\t\tthis.fitBounds();\n\t\t}\n\t},\n\n\t/**\n\t * Hacky way for handling chart resize. Deletes it and redraw chart.\n\t */\n\t_resizeChart: function() {\n\t\tif(!this._container) return;\n\n\t\t// prevent displaying chart on resize if hidden\n\t\tif (_.style(this._container, \"display\") == \"none\") return;\n\n\t\tlet opts = this.options;\n\n\t\tlet newWidth;\n\n\t\tif (opts.detached) {\n\t\t\tnewWidth = (this.eleDiv || this._container).offsetWidth;\n\t\t} else {\n\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\tnewWidth = opts._maxWidth > clientWidth ? clientWidth - 30 : opts._maxWidth;\n\t\t}\n\t\t\n\t\tif (newWidth) {\n\t\t\tlet chart = this._chart;\n\t\t\topts.width = newWidth;\n\t\t\tif (chart && chart._chart) {\n\t\t\t\tchart._chart._resize(opts);\n\t\t\t\topts.xTicks = this._xTicks();\n\t\t\t\topts.yTicks = this._yTicks();\n\t\t\t\tthis._updateChart();\n\t\t\t}\n\t\t}\n\n\t\tthis._updateMapSegments();\n\t},\n\n\t/**\n\t * Handles the drag event over the ruler filter.\n\t */\n\t_rulerFilterHandler: function(e) {\n\t\tthis._updateMapSegments(e.coords);\n\t},\n\n\t/**\n\t * Collapse or Expand current chart control.\n\t */\n\t_toggle: function() {\n\t\tif (_.hasClass(this._container, \"elevation-expanded\"))\n\t\t\tthis._collapse();\n\t\telse\n\t\t\tthis._expand();\n\t},\n\n\t/**\n\t * Sets the view of the map (center and zoom). Useful when \"followMarker\" is true.\n\t */\n\t_setMapView: function(item) {\n\t\tif (!this.options.followMarker || !this._map) return;\n\t\tlet zoom = this._map.getZoom();\n\t\tlet z = this.options.zFollow;\n\t\tif (typeof z === \"number\") {\n\t\t\tthis._map.setView(item.latlng, (zoom < z ? z : zoom), { animate: true, duration: 0.25 });\n\t\t} else if (!this._map.getBounds().contains(item.latlng)) {\n\t\t\tthis._map.setView(item.latlng, zoom, { animate: true, duration: 0.25 });\n\t\t}\n\t},\n\n\t/**\n\t * Toggle chart data on legend click\n\t */\n\t_toggleChartHandler: function(e) {\n\t\tlet { name, enabled } = e;\n\n\t\tthis._chartEnabled = this._chart._hasActiveLayers();\n\n\t\t// toggle layer visibility on empty chart\n\t\tthis._layers.eachLayer(layer => _.toggleClass(layer.getElement && layer.getElement(), this.options.polyline.className + ' ' + this.options.theme, this._chartEnabled));\n\n\t\t// toggle option value (eg. altitude = { 'disabled' || 'disabled' })\n\t\tthis.options[name] = !enabled && this.options[name] == 'disabled' ? 'enabled' : 'disabled';\n\n\t\t// remove marker on empty chart\n\t\tif (!this._chartEnabled) {\n\t\t\tthis._chart._hideDiagramIndicator();\n\t\t\tthis._marker.remove();\n\t\t}\n\t},\n\n\t/**\n\t * Calculates [x, y] domain and then update chart.\n\t */\n\t_updateChart: function() {\n\t\tif (/*!this._data.length ||*/ !this._chart || !this._container) return;\n\n\t\tthis._fireEvt(\"elechart_axis\");\n\t\tthis._fireEvt(\"elechart_area\");\n\n\t\tthis._chart.update({ data: this._data, options: this.options });\n\n\t\tthis._x = this._chart._x;\n\t\tthis._y = this._chart._y;\n\n\t\tthis._fireEvt('elechart_updated');\n\t},\n\n\t/*\n\t * Update the position/height indicator marker drawn onto the map\n\t */\n\t_updateMarker: function(item) {\n\t\tif (this._marker) {\n\t\t\tthis._marker.update({\n\t\t\t\tmap : this._map,\n\t\t\t\titem : item,\n\t\t\t\tmaxElevation: this.track_info.elevation_max || 0,\n\t\t\t\toptions : this.options\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Fix marker rotation on rotated maps\n\t */\n\t_rotateMarker: function() {\n\t\tif (this._marker) {\n\t\t\tthis._marker.update();\n\t\t}\n\t},\n\n\t/**\n\t * Highlight track segments on the map.\n\t */\n\t_updateMapSegments: function(coords) {\n\t\tthis._markedSegments.setLatLngs(coords || []);\n\t\tif (coords && this._map && !this._map.hasLayer(this._markedSegments)) {\n\t\t\tthis._markedSegments.addTo(this._map);\n\t\t}\n\t},\n\n\t/**\n\t * Update chart summary.\n\t */\n\t_updateSummary: function() {\n\t\tthis._summary.reset();\n\n\t\tif (this.options.summary) {\n\t\t\tthis._fireEvt(\"elechart_summary\");\n\t\t}\n\t\tif (this.options.downloadLink && this._downloadURL) { // TODO: generate dynamically file content instead of using static file urls.\n\t\t\tthis._summary._container.innerHTML += '<span class=\"download\"><a href=\"#\">' + L._('Download') + '</a></span>'\n\t\t\t_.select('.download a', this._summary._container).onclick = (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tlet event = { downloadLink: this.options.downloadLink, confirm: _.saveFile.bind(this, this._downloadURL) };\n\t\t\t\tif (this.options.downloadLink == 'modal' && typeof CustomEvent === \"function\") {\n\t\t\t\t\tdocument.dispatchEvent(new CustomEvent(\"eletrack_download\", { detail: event }));\n\t\t\t\t} else if (this.options.downloadLink == 'link' || this.options.downloadLink === true) {\n\t\t\t\t\tevent.confirm();\n\t\t\t\t}\n\t\t\t\tthis._fireEvt('eletrack_download', event);\n\t\t\t};\n\t\t};\n\t},\n\n\n\t/**\n\t * Calculates chart width.\n\t */\n\t_width: function() {\n\t\tif (this._chart) return this._chart._width();\n\t\tlet opts = this.options;\n\t\treturn opts.width - opts.margins.left - opts.margins.right;\n\t},\n\n\t/**\n\t * Calculate chart xTicks\n\t */\n\t_xTicks: function() {\n\t\tif (this.__xTicks) this.__xTicks = this.options.xTicks;\n\t\treturn this.__xTicks || Math.round(this._width() / 75);\n\t},\n\n\t/**\n\t * Calculate chart yTicks\n\t */\n\t_yTicks: function() {\n\t\tif (this.__yTicks) this.__yTicks = this.options.yTicks;\n\t\treturn this.__yTicks || Math.round(this._height() / 30);\n\t}\n\n});","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tlet opts = this.options;\n\tlet altitude = {};\n\n\tif (opts.imperial) {\n\t\topts.altitudeFactor = this.__footFactor;\n\t\taltitude.label = \"ft\";\n\t} else {\n\t\topts.altitudeFactor = opts.heightFactor || opts.altitudeFactor || 1;\n\t\taltitude.label = opts.yLabel;\n\t}\n\n\tthis.on(\"eledata_updated\", function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\t\tlet z = data[i].z * opts.altitudeFactor;\n\n\t\tlet track = this.track_info;\n\t\tlet zMax = track.elevation_max || -Infinity;\n\t\tlet zMin = track.elevation_min || +Infinity;\n\n\t\t// check and fix missing elevation data on last added point\n\t\tif (!this.options.skipNullZCoords && i > 0) {\n\t\t\tlet prevZ = data[i - 1].z;\n\t\t\tif (isNaN(prevZ)) {\n\t\t\t\tlet lastZ = this._lastValidZ;\n\t\t\t\tlet currZ = z;\n\t\t\t\tif (!isNaN(lastZ) && !isNaN(currZ)) {\n\t\t\t\t\tprevZ = (lastZ + currZ) / 2;\n\t\t\t\t} else if (!isNaN(lastZ)) {\n\t\t\t\t\tprevZ = lastZ;\n\t\t\t\t} else if (!isNaN(currZ)) {\n\t\t\t\t\tprevZ = currZ;\n\t\t\t\t}\n\t\t\t\tif (!isNaN(prevZ)) return data.splice(i - 1, 1);\n\t\t\t\tdata[i - 1].z = prevZ;\n\t\t\t}\n\t\t}\n\t\t// skip point if it has not elevation\n\t\tif (!isNaN(z)) {\n\t\t\tthis._lastValidZ = z;\n\t\t}\n\n\t\ttrack.elevation_max = z > zMax ? z : zMax;\n\t\ttrack.elevation_min = z < zMin ? z : zMin;\n\n\t\tdata[i].z = z;\n\t});\n\n\tthis.on(\"elechart_axis\", function() {\n\n\t\tthis._chart._registerAxisGrid({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"left\",\n\t\t\tscale : this._chart._y,\n\t\t});\n\n\t});\n\n\tif (this.options.altitude != \"summary\") {\n\n\t\tthis.on(\"elechart_axis\", function() {\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"y\",\n\t\t\t\tposition: \"left\",\n\t\t\t\tscale : this._chart._y,\n\t\t\t\tlabel : altitude.label,\n\t\t\t\tlabelX : -3,\n\t\t\t\tlabelY : -8,\n\t\t\t\tname : \"altitude\",\n\t\t\t});\n\n\t\t});\n\n\t\tthis.on(\"elechart_init\", function() {\n\n\t\t\tlet theme = this.options.theme.replace('-theme', '');\n\t\t\tlet color = D3.Colors[theme] || {};\n\n\t\t\tthis._chart._registerAreaPath({\n\t\t\t\tname : 'altitude',\n\t\t\t\tlabel : 'Altitude',\n\t\t\t\tscaleX : 'distance',\n\t\t\t\tscaleY : 'altitude',\n\t\t\t\tcolor : color.area || theme,\n\t\t\t\tstrokeColor : this.options.detached ? color.stroke : '#000',\n\t\t\t\tstrokeOpacity: \"1\",\n\t\t\t\tfillOpacity : this.options.detached ? (color.alpha || '0.8') : 1,\n\t\t\t\tpreferCanvas : this.options.preferCanvas,\n\t\t\t});\n\n\t\t});\n\n\t}\n\n\tthis._registerTooltip({\n\t\tname: 'y',\n\t\tchart: (item) => L._(\"y: \") + d3.format(\".\" + opts.decimalsY + \"f\")(item[opts.yAttr]) + \" \" + altitude.label,\n\t\tmarker: (item) => d3.format(\".\" + opts.decimalsY + \"f\")(item[opts.yAttr]) + \" \" + altitude.label,\n\t});\n\n\tthis._registerSummary({\n\t\t\"maxele\" : {\n\t\t\tlabel: \"Max Elevation: \",\n\t\t\tvalue: (track) => (track.elevation_max || 0).toFixed(2) + '&nbsp;' + altitude.label\n\t\t},\n\t\t\"minele\" : {\n\t\t\tlabel: \"Min Elevation: \",\n\t\t\tvalue: (track) => (track.elevation_min || 0).toFixed(2) + '&nbsp;' + altitude.label\n\t\t},\n\t});\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tlet opts = this.options;\n\tlet distance = {};\n\n\tif (opts.imperial) {\n\t\topts.distanceFactor = this.__mileFactor;\n\t\tdistance.label = \"mi\";\n\t} else {\n\t\topts.distanceFactor = opts.distanceFactor || 1;\n\t\tdistance.label = opts.xLabel;\n\t}\n\n\tthis.on(\"eledata_updated\", function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\tlet track = this.track_info;\n\t\tlet dist = track.distance || 0;\n\n\t\tlet curr = data[i].latlng;\n\t\tlet prev = i > 0 ? data[i - 1].latlng : curr;\n\n\t\tlet delta = curr.distanceTo(prev) * opts.distanceFactor;\n\n\t\tdist += Math.round(delta / 1000 * 100000) / 100000; // handles floating points calc\n\n\t\ttrack.distance = dist;\n\n\t\tdata[i].dist = dist;\n\t});\n\n\tthis.on(\"elechart_axis\", function() {\n\n\t\tthis._chart._registerAxisGrid({\n\t\t\taxis : \"x\",\n\t\t\tposition : \"bottom\",\n\t\t\tscale : this._chart._x,\n\t\t});\n\n\t});\n\n\tif (this.options.distance != \"summary\") {\n\n\t\tthis.on(\"elechart_axis\", function() {\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"x\",\n\t\t\t\tposition: \"bottom\",\n\t\t\t\tscale : this._chart._x,\n\t\t\t\tlabel : distance.label,\n\t\t\t\tlabelY : 25,\n\t\t\t\tlabelX : () => this._width() + 6,\n\t\t\t\tname : \"distance\",\n\t\t\t});\n\n\t\t});\n\n\t}\n\n\tthis._registerTooltip({\n\t\tname: 'x',\n\t\tchart: (item) => L._(\"x: \") + d3.format(\".\" + opts.decimalsX + \"f\")(item[opts.xAttr]) + \" \" + distance.label,\n\t});\n\n\tthis._registerSummary({\n\t\t\"totlen\" : {\n\t\t\tlabel: \"Total Length: \",\n\t\t\tvalue: (track) => (track.distance || 0).toFixed(2) + '&nbsp;' + distance.label\n\t\t}\n\t});\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tlet opts = this.options;\n\tlet time = {};\n\n\ttime.label = opts.timeLabel || 't';\n\topts.timeFactor = opts.timeFactor || 3600;\n\n\t/**\n\t * Common AVG speeds:\n\t * ----------------------\n\t * slow walk = 1.8 km/h\n\t * walking = 3.6 km/h\n\t * running = 10.8 km/h\n\t * cycling = 18 km/h\n\t * driving = 72 km/h\n\t * ----------------------\n\t */\n\tthis._timeAVGSpeed = (opts.timeAVGSpeed || 3.6) * (opts.speedFactor || 1);\n\n\tif (!opts.timeFormat) {\n\t\topts.timeFormat = (time) => (new Date(time)).toLocaleString().replaceAll('/', '-').replaceAll(',', ' ');\n\t} else if (opts.timeFormat == 'time') {\n\t\topts.timeFormat = (time) => (new Date(time)).toLocaleTimeString();\n\t} else if (opts.timeFormat == 'date') {\n\t\topts.timeFormat = (time) => (new Date(time)).toLocaleDateString();\n\t}\n\n\topts.xTimeFormat = opts.xTimeFormat || ((t) => _.formatTime(t).split(\"'\")[0]);\n\n\tif (opts.time && opts.time != \"summary\" && !L.Browser.mobile) {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"x\",\n\t\t\tposition : \"top\",\n\t\t\tscale : {\n\t\t\t\tattr : \"duration\",\n\t\t\t\tmin : 0,\n\t\t\t},\n\t\t\tlabel : time.label,\n\t\t\tlabelY : -10,\n\t\t\tlabelX : () => this._width(),\n\t\t\tname : \"time\",\n\t\t\ttickFormat : (d) => (d == 0 ? '' : opts.xTimeFormat(d)),\n\t\t\tonAxisMount: axis => {\n\t\t\t\taxis.select(\".domain\")\n\t\t\t\t\t.remove();\n\t\t\t\taxis.selectAll(\"text\")\n\t\t\t\t\t.attr('opacity', 0.65)\n\t\t\t\t\t.style('font-family', 'Monospace')\n\t\t\t\t\t.style('font-size', '110%');\n\t\t\t\taxis.selectAll(\".tick line\")\n\t\t\t\t\t.attr('y2', this._height())\n\t\t\t\t\t.attr('stroke-dasharray', 2)\n\t\t\t\t\t.attr('opacity', 0.75);\n\t\t\t\t}\n\t\t});\n\n\t}\n\n\tthis.on('elepoint_added', function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\t// Add missing timestamps (see: options.timeAVGSpeed)\n\t\tif (!e.point.meta || !e.point.meta.time) {\n\t\t\te.point.meta = e.point.meta || {};\n\t\t\tlet delta = (data[i].dist - data[i > 0 ? i - 1 : i].dist);\n\t\t\tlet speed = this._timeAVGSpeed;\n\t\t\te.point.meta.time = new Date(\n\t\t\t\t(\n\t\t\t\t\ti > 0\n\t\t\t\t\t\t? data[i - 1].time.getTime() + ((( delta / speed) * opts.timeFactor) * 1000)\n\t\t\t\t\t\t: Date.now()\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tlet time = e.point.meta.time;\n\n\t\t// Handle timezone offset\n\t\tif (time.getTime() - time.getTimezoneOffset() * 60 * 1000 === 0) {\n\t\t\ttime = 0;\n\t\t}\n\n\t\tlet currT = time;\n\t\tlet prevT = i > 0 ? data[i - 1].time : currT;\n\n\t\tlet deltaT = Math.abs(currT - prevT);\n\t\tlet duration = (this.track_info.time || 0) + deltaT;\n\n\t\tthis.track_info.time = duration;\n\n\t\tdata[i].time = time;\n\t\tdata[i].duration = duration;\n\t});\n\n\n\tif (this.options.timestamps) {\n\t\tthis._registerTooltip({\n\t\t\tname: 'date',\n\t\t\tchart: (item) => L._(\"t: \") + this.options.timeFormat(item.time)\n\t\t});\n\t}\n\n\tif (this.options.time) {\n\t\tthis._registerTooltip({\n\t\t\tname: 'time',\n\t\t\tchart: (item) => L._(\"T: \") + _.formatTime(item.duration || 0)\n\t\t});\n\t\tthis._registerSummary({\n\t\t\t\"tottime\" : {\n\t\t\t\tlabel: \"Total Time: \",\n\t\t\t\tvalue: (track) => _.formatTime(track.time || 0)\n\t\t\t}\n\t\t});\n\t}\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tif (!this.options.slope) return;\n\n\tlet opts = this.options;\n\tlet slope = {};\n\n\tslope.label = opts.slopeLabel || '%';\n\n\tif (this.options.slope != \"summary\") {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"right\",\n\t\t\tscale : {\n\t\t\t\tmin : -1,\n\t\t\t\tmax : +1,\n\t\t\t},\n\t\t\ttickPadding: 16,\n\t\t\tlabel : slope.label,\n\t\t\tlabelX : 25,\n\t\t\tlabelY : -8,\n\t\t\tname : 'slope'\n\t\t});\n\n\t\tthis._registerAreaPath({\n\t\t\tname : 'slope',\n\t\t\tlabel : 'Slope',\n\t\t\tyAttr : 'slope',\n\t\t\tscaleX : 'distance',\n\t\t\tscaleY : 'slope',\n\t\t\tcolor : '#F00',\n\t\t\tstrokeColor : '#000',\n\t\t\tstrokeOpacity: \"0.5\",\n\t\t\tfillOpacity : \"0.25\",\n\t\t});\n\n\t}\n\n\tthis.on(\"eledata_updated\", function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\t\tlet z = data[i].z;\n\t\tlet delta = (data[i].dist - data[i > 0 ? i - 1 : i].dist) * 1000;\n\n\t\t// Slope / Gain\n\t\tlet track = this.track_info;\n\t\tlet tAsc = track.ascent || 0; // Total Ascent\n\t\tlet tDes = track.descent || 0; // Total Descent\n\t\tlet sMax = track.slope_max || 0; // Slope Max\n\t\tlet sMin = track.slope_min || 0; // Slope Min\n\t\tlet slope = 0;\n\n\t\tif (!isNaN(z)) {\n\t\t\tlet deltaZ = i > 0 ? z - data[i - 1].z : 0;\n\t\t\tif (deltaZ > 0) tAsc += deltaZ;\n\t\t\telse if (deltaZ < 0) tDes -= deltaZ;\n\t\t\t// slope in % = ( height / length ) * 100\n\t\t\tif (delta !== 0) slope = (deltaZ / delta) * 100;\n\t\t}\n\n\t\t// Try to smooth \"crazy\" slope values.\n\t\tif (this.options.sDeltaMax) {\n\t\t\tlet deltaS = i > 0 ? slope - data[i - 1].slope : 0;\n\t\t\tlet maxDeltaS = this.options.sDeltaMax;\n\t\t\tif (Math.abs(deltaS) > maxDeltaS) {\n\t\t\t\tslope = data[i - 1].slope + maxDeltaS * Math.sign(deltaS);\n\t\t\t}\n\t\t}\n\n\t\t// Range of acceptable slope values.\n\t\tslope = _.clamp(slope, this.options.sRange);\n\n\t\ttrack.ascent = tAsc;\n\t\ttrack.descent = tDes;\n\t\ttrack.slope_max = slope > sMax ? slope : sMax;\n\t\ttrack.slope_min = slope < sMin ? slope : sMin;\n\n\t\tdata[i].slope = L.Util.formatNum(slope, 2);\n\t});\n\n\tthis._registerTooltip({\n\t\tname: 'slope',\n\t\tchart: (item) => L._(\"m: \") + item.slope + slope.label,\n\t\tmarker: (item) => Math.round(item.slope) + slope.label\n\t});\n\n\tthis._registerSummary({\n\t\t\"ascent\" : {\n\t\t\tlabel: \"Total Ascent: \",\n\t\t\tvalue: (track) => Math.round(track.ascent || 0) + '&nbsp;' + (this.options.imperial ? 'ft' : 'm')\n\t\t},\n\t\t\"descent\" : {\n\t\t\tlabel: \"Total Descent: \",\n\t\t\tvalue: (track) => Math.round(track.descent || 0) + '&nbsp;' + (this.options.imperial ? 'ft' : 'm')\n\t\t},\n\t\t\"minslope\": {\n\t\t\tlabel: \"Min Slope: \",\n\t\t\tvalue: (track) => Math.round(track.slope_min || 0) + '&nbsp;' + slope.label\n\t\t},\n\t\t\"maxslope\": {\n\t\t\tlabel: \"Max Slope: \",\n\t\t\tvalue: (track) => Math.round(track.slope_max || 0) + '&nbsp;' + slope.label\n\t\t}\n\t});\n\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tif (!this.options.speed && !this.options.acceleration) return;\n\n\tlet opts = this.options;\n\tlet speed = {};\n\n\tspeed.label = opts.speedLabel || L._(opts.imperial ? 'mph' : 'km/h');\n\topts.speedFactor = opts.speedFactor || 1;\n\n\tif (this.options.speed && this.options.speed != \"summary\") {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"right\",\n\t\t\tscale : {\n\t\t\t\tmin : 0,\n\t\t\t\tmax : +1,\n\t\t\t},\n\t\t\ttickPadding: 16,\n\t\t\tlabel : speed.label,\n\t\t\tlabelX : 25,\n\t\t\tlabelY : -8,\n\t\t\tname : \"speed\"\n\t\t});\n\n\t\tthis._registerAreaPath({\n\t\t\tname : 'speed',\n\t\t\tlabel : 'Speed',\n\t\t\tyAttr : \"speed\",\n\t\t\tscaleX : 'distance',\n\t\t\tscaleY : 'speed',\n\t\t\tcolor : '#03ffff',\n\t\t\tstrokeColor : '#000',\n\t\t\tstrokeOpacity: \"0.5\",\n\t\t\tfillOpacity : \"0.25\",\n\t\t});\n\n\t}\n\n\tthis.on('elepoint_added', function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\tlet currT = data[i].time;\n\t\tlet prevT = i > 0 ? data[i - 1].time : currT;\n\n\t\tlet deltaT = currT - prevT;\n\n\t\tlet track = this.track_info;\n\t\tlet sMax = track.speed_max || -Infinity; // Speed Max\n\t\tlet sMin = track.speed_min || +Infinity; // Speed Min\n\t\tlet sAvg = track.speed_avg || 0; // Speed Avg\n\t\tlet speed = 0;\n\n\t\tif (deltaT > 0) {\n\t\t\tlet delta = (data[i].dist - data[i > 0 ? i - 1 : i].dist) * 1000;\n\t\t\tspeed = Math.abs((delta / deltaT) * opts.timeFactor) * opts.speedFactor;\n\t\t}\n\n\t\t// Try to smooth \"crazy\" speed values.\n\t\tif (this.options.speedDeltaMax) {\n\t\t\tlet deltaS = i > 0 ? speed - data[i - 1].speed : 0;\n\t\t\tlet maxDeltaS = this.options.speedDeltaMax;\n\t\t\tif (Math.abs(deltaS) > maxDeltaS) {\n\t\t\t\tspeed = data[i - 1].speed + maxDeltaS * Math.sign(deltaS);\n\t\t\t}\n\t\t}\n\n\t\t// Range of acceptable speed values.\n\t\tspeed = _.clamp(speed, this.options.speedRange);\n\n\t\ttrack.speed_max = speed > sMax ? speed : sMax;\n\t\ttrack.speed_min = speed < sMin ? speed : sMin;\n\t\ttrack.speed_avg = (speed + sAvg) / 2.0;\n\n\t\tdata[i].speed = L.Util.formatNum(speed, 2);\n\t});\n\n\tif (this.options.speed) {\n\n\t\tthis._registerTooltip({\n\t\t\tname: 'speed',\n\t\t\tchart: (item) => L._('v: ') + item.speed + \" \" + speed.label,\n\t\t\tmarker: (item) => Math.round(item.speed) + \" \" + speed.label,\n\t\t});\n\n\t\tthis._registerSummary({\n\t\t\t\"minspeed\" : {\n\t\t\t\tlabel: \"Min Speed: \",\n\t\t\t\tvalue: (track) => Math.round(track.speed_min || 0) + '&nbsp;' + speed.label\n\t\t\t},\n\t\t\t\"maxspeed\" : {\n\t\t\t\tlabel: \"Max Speed: \",\n\t\t\t\tvalue: (track) => Math.round(track.speed_max || 0) + '&nbsp;' + speed.label\n\t\t\t},\n\t\t\t\"avgspeed\": {\n\t\t\t\tlabel: \"Avg Speed: \",\n\t\t\t\tvalue: (track) => Math.round(track.speed_avg || 0) + '&nbsp;' + speed.label\n\t\t\t}\n\t\t});\n\n\t}\n\n});\n","import 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Elevation } from './control';\n\nElevation.addInitHook(function() {\n\n\tif (!this.options.acceleration) return;\n\n\tlet opts = this.options;\n\tlet acceleration = {};\n\n\tacceleration.label = opts.accelerationLabel || L._(opts.imperial ? 'ft/s²' : 'm/s²');\n\topts.accelerationFactor = opts.accelerationFactor || 1;\n\n\tif (this.options.acceleration != \"summary\") {\n\n\t\tthis._registerAxisScale({\n\t\t\taxis : \"y\",\n\t\t\tposition : \"right\",\n\t\t\tscale : {\n\t\t\t\tmin : 0,\n\t\t\t\tmax : +1,\n\t\t\t},\n\t\t\ttickPadding: 16,\n\t\t\tlabel : acceleration.label,\n\t\t\tlabelX : 25,\n\t\t\tlabelY : -8,\n\t\t\tname : 'acceleration'\n\t\t});\n\n\t\tthis._registerAreaPath({\n\t\t\tname : 'acceleration',\n\t\t\tlabel : 'Acceleration',\n\t\t\tyAttr : 'acceleration',\n\t\t\tscaleX : 'distance',\n\t\t\tscaleY : 'acceleration',\n\t\t\tcolor : '#050402',\n\t\t\tstrokeColor : '#000',\n\t\t\tstrokeOpacity: \"0.5\",\n\t\t\tfillOpacity : \"0.25\",\n\t\t});\n\n\t}\n\n\tthis.on('elepoint_added', function(e) {\n\t\tlet data = this._data;\n\t\tlet i = e.index;\n\n\t\tlet currT = data[i].time;\n\t\tlet prevT = i > 0 ? data[i - 1].time : currT;\n\n\t\tlet deltaT = (currT - prevT) / 1000;\n\n\t\tlet track = this.track_info;\n\t\tlet sMax = track.acceleration_max || -Infinity; // Acceleration Max\n\t\tlet sMin = track.acceleration_min || +Infinity; // Acceleration Min\n\t\tlet sAvg = track.acceleration_avg || 0; // Acceleration Avg\n\t\tlet acceleration = 0;\n\n\t\tif (deltaT > 0) {\n\t\t\tlet curr = data[i].speed;\n\t\t\tlet prev = i > 0 ? data[i - 1].speed : curr;\n\t\t\tlet delta = (curr - prev) * (1000 / opts.timeFactor);\n\t\t\tacceleration = Math.abs((delta / deltaT)) * opts.accelerationFactor;\n\t\t}\n\n\t\t// Try to smooth \"crazy\" acceleration values.\n\t\tif (this.options.accelerationDeltaMax) {\n\t\t\tlet deltaA = i > 0 ? acceleration - data[i - 1].acceleration : 0;\n\t\t\tlet maxDeltaS = this.options.accelerationDeltaMax;\n\t\t\tif (Math.abs(deltaA) > maxDeltaS) {\n\t\t\t\tacceleration = data[i - 1].acceleration + maxDeltaS * Math.sign(deltaA);\n\t\t\t}\n\t\t}\n\n\t\t// Range of acceptable acceleration values.\n\t\tacceleration = _.clamp(acceleration, this.options.accelerationRange);\n\n\t\ttrack.acceleration_max = acceleration > sMax ? acceleration : sMax;\n\t\ttrack.acceleration_min = acceleration < sMin ? acceleration : sMin;\n\t\ttrack.acceleration_avg = (acceleration + sAvg) / 2.0;\n\n\t\tdata[i].acceleration = L.Util.formatNum(acceleration, 2);\n\t});\n\n\tthis._registerTooltip({\n\t\tname : 'acceleration',\n\t\tchart: (item) => L._(\"a: \") + item.acceleration + \" \" + acceleration.label,\n\t\tmarker: (item) => Math.round(item.acceleration) + \" \" + acceleration.label,\n\t});\n\n\tthis._registerSummary({\n\t\t\"minacceleration\" : {\n\t\t\tlabel: \"Min Acceleration: \",\n\t\t\tvalue: (track) => Math.round(track.acceleration_min || 0) + '&nbsp;' + acceleration.label\n\t\t},\n\t\t\"maxacceleration\" : {\n\t\t\tlabel: \"Max Acceleration: \",\n\t\t\tvalue: (track) => Math.round(track.acceleration_max || 0) + '&nbsp;' + acceleration.label\n\t\t},\n\t\t\"avgacceleration\": {\n\t\t\tlabel: \"Avg Acceleration: \",\n\t\t\tvalue: (track) => Math.round(track.acceleration_avg || 0) + '&nbsp;' + acceleration.label\n\t\t}\n\t});\n\n});\n","/*\n * Copyright (c) 2019, GPL-3.0+ Project, Raruto\n *\n * This file is free software: you may copy, redistribute and/or modify it\n * under the terms of the GNU General Public License as published by the\n * Free Software Foundation, either version 2 of the License, or (at your\n * option) any later version.\n *\n * This file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n *\n * This file incorporates work covered by the following copyright and\n * permission notice:\n *\n * Copyright (c) 2013-2016, MIT License, Felix “MrMufflon” Bache\n *\n * Permission to use, copy, modify, and/or distribute this software\n * for any purpose with or without fee is hereby granted, provided\n * that the above copyright notice and this permission notice appear\n * in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL\n * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE\n * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,\n * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN\n * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport 'leaflet-i18n';\nimport * as _ from './utils';\nimport * as D3 from './components';\nimport { Chart } from './chart';\nimport { Elevation } from './control';\nimport './altitude';\nimport './distance';\nimport './time';\nimport './slope';\nimport './speed';\nimport './acceleration';\n\nElevation.Utils = _;\nElevation.Components = D3;\nElevation.Chart = Chart;\n\n/* Temporary fix for empty values evaluated as false (leaflet-i18n v0.3.1) */\n(function(){\n\tlet proto = L.i18n.bind({});\n\tL.i18n = L._ = (string, data) => {\n\t\tif (L.locale && L.locales[L.locale] && L.locales[L.locale][string] == \"\") {\n\t\t\tL.locales[L.locale][string] = \"\\u200B\";\n\t\t}\n\t\treturn proto.call(null, string, data);\n\t};\n})();\n\n// Alias deprecated functions\n Elevation.addInitHook(function() {\n\tthis.enableDragging = this.enableBrush;\n\tthis.disableDragging = this.disableBrush;\n\tthis.loadChart = this.addTo;\n\tthis.loadData = this.load;\n\tthis.loadGPX = this.load;\n\tthis.loadGeoJSON = this.load;\n\tthis.loadXML = this.load;\n\tthis.loadFile = this.load;\n\tthis._addGPXData = this._addGeoJSONData;\n\tthis._registerFocusLabel = this._registerTooltip;\n});\n\nL.control.elevation = (options) => new Elevation(options);\n"],"names":["factory","window","define","amd","exports","module","require","L","locales","locale","registerLocale","code","Util","extend","setLocale","i18n","_","translate","string","data","template","err","SEC","MIN","HOUR","DAY","formatTime","t","d","Math","floor","h","m","s","round","toString","padStart","saveFile","dataURI","fileName","a","create","href","target","download","style","b","document","body","appendChild","click","removeChild","lazyLoader","url","skip","loader","Promise","resolve","reject","tag","createElement","addEventListener","once","src","head","drawCanvas","ctx","path","classed","beginPath","moveTo","p","Path2D","attr","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","stroke","fill","closePath","clamp","val","range","addClass","targetNode","className","split","every","DomUtil","removeClass","toggleClass","conditional","call","replaceClass","removeClassName","addClassName","name","value","getStyle","setProperty","toggleStyle","toggleEvent","leafletElement","eventName","handler","tagName","attributes","parent","elem","setAttributes","append","child","insert","position","insertAdjacentElement","attrs","k","setAttribute","select","selector","context","querySelector","on","DomEvent","off","hasClass","randomId","random","substr","each","obj","fn","i","Colors","area","alpha","line","Area","width","height","xAttr","yAttr","scaleX","scaleY","interpolation","d3","curve","x","xDiagCoord","y0","y1","Path","color","strokeColor","strokeOpacity","fillOpacity","Axis","type","tickSize","tickPadding","axis","scale","ticks","tickFormat","label","labelX","labelY","onAxisMount","g","w","axisScale","replace","l","toUpperCase","axisGroup","join","text","Grid","props","PositionMarker","theme","xCoord","yCoord","labels","item","length","circle","node","isNaN","size","selectAll","LegendItem","margins","toLowerCase","ownerSVGElement","dispatch","detail","legend","enabled","bottom","Tooltip","box","rect","xAlign","yAlign","bbox","getBBox","e","max","Browser","webkit","Infinity","Ruler","y","symbol","symbolTriangle","exit","remove","enter","merge","angle","CheckPoint","point","property","datum","pos","y2","x2","Domain","min","forceBounds","domain","extent","Range","Scale","scaleLinear","Bisect","bisector","left","invert","Chart","ruler","_width","right","_height","top","svg","panes","grid","brush","tooltip","mask","maskRect","foreignObject","canvas","getContext","brushX","opts","utils","chart","_resize","test","navigator","platform","userAgent","pane","get","Class","includes","Evented","prototype","Mixin","Events","initialize","control","options","_data","_props","scales","paths","areas","grids","axes","legendItems","tooltipItems","_scales","_domains","_ranges","_paths","_brushEnabled","dragging","_zoomEnabled","zooming","_chart","D3","_container","_grid","_area","_point","_axis","_legend","_tooltip","_ruler","_initScale","_mask","_context","_brush","_zoom","zoom","_drag","drag","_initInteractions","_maskGaps","push","index","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","render","container","clear","_resetDrag","_hideDiagramIndicator","clearRect","_drawPath","preferCanvas","_hasActiveLayers","_initBrush","selection","start","_findIndexForXCoord","end","fire","dragstart","dragend","focus","sourceEvent","coords","pointers","filter","shiftKey","button","bind","_initClipper","margin","onStart","transform","onEnd","onZoom","distance","_x","rescaleX","time","scaleExtent","translateExtent","buttons","_initRuler","_initLegend","formatNum","format","yMax","z","_y","imperial","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_registerCheckPoint","latlng","_findIndexForLatLng","dist","_registerTooltip","gridOpts","axesOpts","n","substring","indexOf","forEach","d1","d2","x1","legends","items","nodes","v","Array","map","sign","rev","slice","reverse","concat","xAxesB","marginB","marginR","tx","ty","list","reduce","array","next","curr","result","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","xCoordinate","Marker","marker","_marker","icon","markerIcon","zIndexOffset","interactive","_labels","addTo","_map","getPane","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","maxElevation","getElement","setLatLng","getLatLng","Summary","summary","reset","innerHTML","_registerSummary","track_info","Options","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","distanceMarkers","decimalsX","decimalsY","downloadLink","elevationDiv","followMarker","lazyLoadJS","divIcon","html","iconSize","iconAnchor","polyline","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","slope","speed","sLimit","undefined","timeFactor","timeFormat","timestamps","sDeltaMax","sInterpolation","sRange","waypoints","wptIcons","wptLabels","xLabel","yLabel","zFollow","Mobile","Elevation","Control","__mileFactor","__footFactor","__D3","__TOGEOJSON","__LGEOMUTIL","__LALMOSTOVER","__LDISTANCEM","addData","layer","lazyLoad","then","_addData","_addLayer","_fireEvt","eleDiv","_initElevationDiv","isConnected","getContainer","onAdd","_clearChart","_layers","_clearLayers","_markers","_clearMarkers","_updateChart","_events","elechart_updated","eachLayer","clearLayers","disableBrush","enableBrush","disableZoom","enableZoom","fitBounds","bounds","getBounds","isValid","latLngBounds","getZFollow","hide","featureGroup","_markedSegments","_chartEnabled","setOptions","_setMapView","throttle","lazy","setStyle","colors","_fixCanvasPaths","_fixTooltipSize","condition","toGeoJSON","GeometryUtil","Handler","AlmostOver","DistanceMarkers","load","_parseFromString","geojson","_loadLayer","_loadFile","_initButton","_initChart","_initSummary","_initMarker","_initLayer","_hideMarker","_resetView","_resizeChart","_rotateMarker","_keydownHandler","_updateSummary","onRemove","redraw","setZFollow","show","geom","geometry","_addGeoJSONData","coordinates","console","warn","features","feature","_latlngs","properties","meta","ele","hr","cad","atemp","alt","coordinateProperties","Date","parse","coordTimes","times","parseInt","heartRates","heartRate","heart","_addPoint","lat","lng","latLng","addLayer","Polyline","_addMarker","_initAlmostOverHandler","almostOver","addHandler","_mousemoveLayerHandler","_mouseoutHandler","_initDistanceMarkers","id","_initMapIntegrations","_collapse","_expand","oldProto","Canvas","_fillStroke","include","hasLayer","oldVal","outline","_updateMarker","_findItemForLatLng","_findItemForX","propagate","_xTicks","_yTicks","offsetWidth","offsetHeight","clientWidth","_maxWidth","maxWidth","_dragendHandler","_mousemoveHandler","_rulerFilterHandler","_toggleChartHandler","_pane","createPane","zIndex","pointerEvents","_renderer","disableClickPropagation","disableScrollPropagation","link","_button","title","stop","_toggle","_summary","key","fetch","response","_downloadURL","catch","geoJson","pointToLayer","prop","desc","sym","hasOwnProperty","content","decodeURI","bindPopup","keepInView","openPopup","bindTooltip","direction","sticky","openTooltip","element","onEachFeature","_parseFromGeoJSONString","JSON","_parseFromXMLString","trim","_prepareMultiLineStrings","_prepareAdditionalProperties","xml","DOMParser","parseFromString","documentElement","getElementsByTagName","from","find","parentElement","textContent","pop","feauture","_isFullscreen","newWidth","_updateMapSegments","getZoom","setView","animate","duration","contains","elevation_max","setLatLngs","onclick","preventDefault","event","confirm","CustomEvent","dispatchEvent","__xTicks","__yTicks","addInitHook","altitudeFactor","heightFactor","track","zMax","zMin","elevation_min","prevZ","lastZ","_lastValidZ","currZ","splice","toFixed","distanceFactor","prev","delta","timeLabel","_timeAVGSpeed","timeAVGSpeed","speedFactor","toLocaleString","replaceAll","toLocaleTimeString","toLocaleDateString","xTimeFormat","getTime","now","getTimezoneOffset","currT","prevT","deltaT","abs","slopeLabel","tAsc","ascent","tDes","descent","sMax","slope_max","sMin","slope_min","deltaZ","deltaS","maxDeltaS","acceleration","speedLabel","speed_max","speed_min","sAvg","speed_avg","speedDeltaMax","speedRange","accelerationLabel","accelerationFactor","acceleration_max","acceleration_min","acceleration_avg","accelerationDeltaMax","deltaA","accelerationRange","Utils","Components","proto","enableDragging","disableDragging","loadChart","loadData","loadGPX","loadGeoJSON","loadXML","loadFile","_addGPXData","_registerFocusLabel","elevation"],"mappings":"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"}