@raruto/leaflet-elevation 1.8.0 → 1.8.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","/**\n * Recursive deep merge objects.\n * Alternative to L.Util.setOptions(this, options).\n */\nexport function deepMerge(target, ...sources) {\n\tif (!sources.length) return target;\n\tconst source = sources.shift();\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) Object.assign(target, {\n\t\t\t\t\t[key]: {}\n\t\t\t\t});\n\t\t\t\tdeepMerge(target[key], source[key]);\n\t\t\t} else {\n\t\t\t\tObject.assign(target, {\n\t\t\t\t\t[key]: source[key]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn deepMerge(target, ...sources);\n}\n\nconst 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 * Simple GeoJSON data loader.\n */\nexport function GeoJSONLoader(data, control) {\n\tif (typeof data === \"string\") {\n\t\tdata = JSON.parse(data);\n\t}\n\tcontrol = control || this;\n\n\tlet distanceMarkers = (\n\t\t\tcontrol.options.distanceMarkers === true\n\t\t\t\t? { lazy: true }\n\t\t\t\t: L.extend({ lazy: true }, control.options.distanceMarkers)\n\t);\n\n\tlet { wptIcons, wptLabels } = control.options;\n\n\tlet layer = L.geoJson(data, {\n\t\tdistanceMarkers: distanceMarkers,\n\t\tstyle: (feature) => {\n\t\t\tlet style = L.extend({}, control.options.polyline);\n\t\t\tif (control.options.theme) {\n\t\t\t\tstyle.className += ' ' + control.options.theme;\n\t\t\t}\n\t\t\treturn style;\n\t\t},\n\t\tpointToLayer: (feature, latlng) => {\n\t\t\tif (!control.options.waypoints) return;\n\n\t\t\tlet prop = feature.properties;\n\t\t\tlet desc = prop.desc ?? '';\n\t\t\tlet name = prop.name ?? '';\n\t\t\tlet sym = (prop.sym ?? name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase();\n\n\t\t\t// Handle chart waypoints (dots)\n\t\t\tif ([true, 'dots'].includes(control.options.waypoints)) {\n\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\ttrue\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Handle map waypoints (markers)\n\t\t\tif ([true, 'markers'].includes(control.options.waypoints) && wptIcons != false) {\n\t\t\t\t// generate and cache appropriate icon symbol\n\t\t\t\tif (!wptIcons.hasOwnProperty(sym)) {\n\t\t\t\t\twptIcons[sym] = L.divIcon(\n\t\t\t\t\t\tL.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\n\t\t\t\tif ([true, 'markers'].includes(wptLabels) && (name || desc)) {\n\t\t\t\t\tmarker.bindPopup(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : '')).openPopup();\n\t\t\t\t}\n\t\t\t\tcontrol._addMarker(marker);\n\t\t\t\tcontrol.fire('waypoint_added', { point: marker, element: latlng, properties: prop });\n\t\t\t\treturn marker;\n\t\t\t}\n\t\t},\n\t\tonEachFeature: (feature, layer) => {\n\t\t\tif (feature.geometry && feature.geometry.type == 'Point') return;\n\n\t\t\t// Standard GeoJSON\n\t\t\t// control.addData(feature, layer); // NB uses \"_addGeoJSONData\"\n\n\t\t\t// Extended GeoJSON\n\t\t\tlayer._latlngs.forEach((point, i, data) => {\n\t\t\t\t// same properties as L.GPX layer\n\t\t\t\tpoint.meta = { time: null, ele: null, hr: null, cad: null, atemp: null };\n\t\t\t\tif(\"alt\" in point) point.meta.ele = point.alt;\n\t\t\t\tif(feature.properties) {\n\t\t\t\t\tlet prop = feature.properties;\n\t\t\t\t\tif(\"coordTimes\" in prop) point.meta.time = new Date(Date.parse(prop.coordTimes[i]));\n\t\t\t\t\telse if(\"times\" in prop) point.meta.time = new Date(Date.parse(prop.times[i]));\n\t\t\t\t\telse if(\"time\" in prop) point.meta.time = new Date(Date.parse((typeof prop.time === 'object' ? prop.time[i] : prop.time)));\n\t\t\t\t\tif(\"heartRates\" in prop) point.meta.hr = parseInt(prop.heartRates[i]);\n\t\t\t\t\telse if(\"heartRate\" in prop) point.meta.hr = parseInt((typeof prop.heartRate === 'object' ? prop.heartRate[i] : prop.heartRate));\n\t\t\t\t\t// TODO: cadence, temperature\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontrol.addData(layer); // NB uses \"_addGPXData\"\n\n\t\t\t// Postpone adding the distance markers (lazy: true)\n\t\t\tif(control.options.distanceMarkers && distanceMarkers.lazy) {\n\t\t\t\tlayer.on('add remove', (e) => {\n\t\t\t\t\tlet path = e.target;\n\t\t\t\t\tif (L.DistanceMarkers && path instanceof L.Polyline) {\n\t\t\t\t\t\tpath[e.type + 'DistanceMarkers']();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcontrol.track_info = L.extend({}, control.track_info, { type: \"geojson\", name: data.name });\n\t\t},\n\t});\n\n\tL.Control.Elevation._d3LazyLoader.then(() => {\n\t\tcontrol._fireEvt(\"eledata_loaded\", { data: data, layer: layer, name: control.track_info.name, track_info: control.track_info })\n\t});\n\n\treturn layer;\n}\n\n/**\n * Check object type.\n */\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\n/**\n * Check JSON object type.\n */\nexport function isJSONDoc(doc, lazy) {\n\tlazy = typeof lazy === \"undefined\" ? true : lazy;\n\tif (typeof doc === \"string\" && lazy) {\n\t\tdoc = doc.trim();\n\t\treturn doc.indexOf(\"{\") == 0 || doc.indexOf(\"[\") == 0;\n\t} else {\n\t\ttry {\n\t\t\tJSON.parse(doc.toString());\n\t\t} catch (e) {\n\t\t\tif (typeof doc === \"object\" && lazy) return true;\n\t\t\tconsole.warn(e);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n\n/**\n * Check XML object type.\n */\nexport function isXMLDoc(doc, lazy) {\n\tlazy = typeof lazy === \"undefined\" ? true : lazy;\n\tif (typeof doc === \"string\" && lazy) {\n\t\tdoc = doc.trim();\n\t\treturn doc.indexOf(\"<\") == 0;\n\t} else {\n\t\tlet documentElement = (doc ? doc.ownerDocument || doc : 0).documentElement;\n\t\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n\t}\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\nexport function lazyLoad(src, control) {\n\tif (!control.options.lazyLoadJS) return Promise.resolve();\n\n\tconst Elevation = L.Control.Elevation;\n\tlet loader = '';\n\tlet condition = false;\n\n\tswitch(src) {\n\t\tcase control.__D3:\n\t\t\tloader = '_d3LazyLoader';\n\t\t\tcondition = typeof d3 !== 'object';\n\t\tbreak;\n\t\tcase control.__TOGEOJSON:\n\t\t\tloader = '_togeojsonLazyLoader';\n\t\t\tcondition = typeof toGeoJSON !== 'object';\n\t\tbreak;\n\t\tcase control.__LGEOMUTIL:\n\t\t\tloader = '_geomutilLazyLoader';\n\t\t\tcondition = typeof L.GeometryUtil !== 'object';\n\t\tcase control.__LALMOSTOVER:\n\t\t\tloader = '_almostoverLazyLoader';\n\t\t\tcondition = typeof L.Handler.AlmostOver !== 'function ';\n\t\tbreak;\n\t\tcase control.__LDISTANCEM:\n\t\t\tloader = '_distanceMarkersLazyLoader';\n\t\t\tcondition = typeof L.DistanceMarkers !== 'function';\n\t\tbreak;\n\t}\n\treturn Elevation[loader] = lazyLoader(src, condition, Elevation[loader]);\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\tpoint : g.append('g').attr(\"class\", \"point\"),\n\t\taxis : g.append('g').attr(\"class\", \"axis\"),\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 clipPath = panes.area.append(\"svg:clipPath\").attr(\"id\", 'elevation-clipper');\n\tconst clipRect = clipPath.append(\"svg:rect\");\n\n\t// Canvas Paths\n\tconst foreignObject = panes.area.append('svg:foreignObject');\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\tclipPath,\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\tclipRect\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._clipPath = chart.get('clipPath');\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},\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\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}\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}\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\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 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},\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._clipPath) {\n\t\t\t\t\tpath.attr('clip-path', 'url(#' + this._clipPath.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.3.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.7.5/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\t\tthis.options = _.deepMerge({}, this.options, 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\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\t},\n\n\t/**\n\t * Javascript scripts downloader (lazy loader)\n\t */\n\tlazyLoad: function(src) {\n\t\treturn _.lazyLoad(src, this);\n\t},\n\n\t/**\n\t * Load elevation data (GPX, GeoJSON or KML).\n\t */\n\tload: function(data) {\n\t\tif (_.isXMLDoc(data)) {\n\t\t\tthis.loadXML(data);\n\t\t} else if (_.isJSONDoc(data)) {\n\t\t\tthis.loadGeoJSON(data);\n\t\t} else {\n\t\t\tthis.loadFile(data);\n\t\t}\n\t},\n\n\t/**\n\t * Load data from a remote url.\n\t */\n\tloadFile: 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.load(data);\n\t\t\t})\n\t\t\t.catch((err) => console.warn(err));\n\t},\n\n\t/**\n\t * Load raw GeoJSON data.\n\t */\n\tloadGeoJSON: function(data) {\n\t\t_.GeoJSONLoader(data, this);\n\t},\n\n\t/**\n\t * Load raw XML data.\n\t */\n\tloadXML: function(data) {\n\t\tthis.lazyLoad(this.__TOGEOJSON)\n\t\t\t.then(() => {\n\t\t\t\tlet xml = (new DOMParser()).parseFromString(data, \"text/xml\");\n\t\t\t\tlet type = xml.documentElement.tagName.toLowerCase(); // \"kml\" or \"gpx\"\n\t\t\t\tif (!(type in toGeoJSON)) {\n\t\t\t\t\ttype = xml.documentElement.tagName == \"TrainingCenterDatabase\" ? 'tcx' : 'gpx';\n\t\t\t\t}\n\t\t\t\tlet geojson = toGeoJSON[type](xml);\n\t\t\t\tlet name = xml.getElementsByTagName('name');\n\t\t\t\tif(name[0]) { geojson.name = name[0].innerHTML; }\n\t\t\t\telse if(this._downloadURL) { geojson.name = this._downloadURL.split('/').pop().split('#')[0].split('?')[0]; }\n\n\t\t\t\treturn this.loadGeoJSON(geojson, this);\n\t\t\t});\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);\n\n\t\tif (!this.options.detached) {\n\t\t\t_.addClass(container, '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\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\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\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\n\t\tif (d.type === \"FeatureCollection\") {\n\t\t\t_.each(d.features, feature => this._addData(feature));\n\t\t}\n\n\t\tif (d._latlngs) {\n\t\t\tthis._addGPXData(d._latlngs);\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) {\n\t\t_.each(coords, point => {\n\t\t\tthis._addPoint(point[1], point[0], point[2]);\n\t\t\tthis._fireEvt(\"elepoint_added\", { point: point, index: this._data.length - 1 });\n\t\t});\n\t\tthis._fireEvt(\"eletrack_added\", { coords: coords, index: this._data.length - 1 });\n\t},\n\n\t/*\n\t * Parsing function for GPX data and their elevation in z-coordinate\n\t */\n\t_addGPXData: function(coords) {\n\t\t_.each(coords, point => {\n\t\t\tthis._addPoint(point.lat, point.lng, point.alt ?? point.meta.ele);\n\t\t\tthis._fireEvt(\"elepoint_added\", { point: point, index: this._data.length - 1 });\n\t\t});\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},\n\n\t_addMarker: function(marker) {\n\t\tif (marker) this._markers.addLayer(marker)\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\tthis.eleDiv = eleDiv;\n\t\treturn this.eleDiv;\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 * 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\t\t//Makes this work on IE10 Touch devices by stopping it from firing a mouseout event when the touch is released\n\t\tcontainer.setAttribute('aria-haspopup', true);\n\n\t\tif (!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 (L.Browser.mobile) {\n\t\t\t_.on(container, 'click', L.DomEvent.stopPropagation);\n\t\t}\n\n\t\t_.on(container, 'mousewheel', this._mousewheelHandler, this);\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\t// TODO: keyboard accessibility\n\t\t\t}\n\t\t} else {\n\t\t\t// TODO: handle autohide when detached=true\n\t\t}\n\t},\n\n\t_initSummary: function(container) {\n\t\tlet summary = this._summary = new Summary({ summary: this.options.summary }, this);\n\n\t\td3\n\t\t\t.select(container)\n\t\t\t.call(summary.render());\n\n\t\tthis.summaryDiv = this._summary._container;\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 * Handles the mouesewheel over the chart.\n\t */\n\t_mousewheelHandler: function(e) {\n\t\tif (this._map.gestureHandling && this._map.gestureHandling._enabled) return;\n\t\tlet ll = this._marker.getLatLng() || this._map.getCenter();\n\t\tlet z = this._map.getZoom() + Math.sign(e.deltaY);\n\t\tthis._resetDrag();\n\t\tthis._map.flyTo(ll, z);\n\t},\n\n\t/**\n\t * Add a waypoint marker to 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 { path, 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 => {\n\t\t\tlet node = layer.getElement && layer.getElement();\n\t\t\t_.toggleClass(node, this.options.polyline.className + ' ' + this.options.theme, this._chartEnabled);\n\t\t\t}\n\t\t);\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.summaryDiv.innerHTML += '<span class=\"download\"><a href=\"#\">' + L._('Download') + '</a></span>'\n\t\t\t_.select('.download a', this.summaryDiv).onclick = (e) => {\n\t\t\t\te.preventDefault();\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});\n\n/**\n * Attach here some useful elevation hooks.\n */\nElevation.addInitHook(function() {\n\n\t// Alias deprecated functions\n\tthis.enableDragging = this.enableBrush;\n\tthis.disableDragging = this.disableBrush;\n\tthis.loadChart = this.addTo;\n\tthis.loadData = this.load;\n\tthis.loadGPX = this.loadXML;\n\n\tthis.on('waypoint_added', function(e) {\n\t\tlet p = e.point,\n\t\t\tpop = p._popup;\n\t\tif (pop) {\n\t\t\tpop.options.className = 'elevation-popup';\n\t\t}\n\t\tif (pop && pop._content) {\n\t\t\tpop._content = decodeURI(pop._content);\n\t\t\tp.bindTooltip(pop._content, { direction: 'auto', sticky: true, opacity: 1, className: 'elevation-tooltip' }).openTooltip();\n\t\t}\n\t});\n\n\tthis.on(\"eletrack_download\", function(e) {\n\t\tif (e.downloadLink == 'modal' && typeof CustomEvent === \"function\") {\n\t\t\tdocument.dispatchEvent(new CustomEvent(\"eletrack_download\", { detail: e }));\n\t\t} else if (e.downloadLink == 'link' || e.downloadLink === true) {\n\t\t\te.confirm();\n\t\t}\n\t});\n\n\tthis.on('eledata_loaded', function(e) {\n\t\tlet map = this._map;\n\t\tlet layer = e.layer;\n\t\tif (!map) {\n\t\t\tconsole.warn(\"Undefined elevation map object\");\n\t\t\treturn;\n\t\t}\n\t\tmap.once('layeradd', (e) => this.options.autofitBounds && this.fitBounds(layer.getBounds()));\n\n\t\tif (L.Browser.mobile) {\n\n\t\t\tif (this.options.polyline) layer.addTo(map);\n\n\t\t} else {\n\n\t\t\t// leaflet-geometryutil\n\t\t\tthis.lazyLoad(this.__LGEOMUTIL)\n\t\t\t\t.then(() => {\n\n\t\t\t\t\t// leaflet-almostover\n\t\t\t\t\tif (this.options.almostOver) {\n\t\t\t\t\t\tthis.lazyLoad(this.__LALMOSTOVER)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tmap.addHandler('almostOver', L.Handler.AlmostOver)\n\t\t\t\t\t\t\t\tif (L.GeometryUtil && map.almostOver && map.almostOver.enabled()) {\n\t\t\t\t\t\t\t\t\tmap.almostOver.addLayer(layer);\n\t\t\t\t\t\t\t\t\tmap\n\t\t\t\t\t\t\t\t\t\t.on('almost:move', (e) => this._mousemoveLayerHandler(e))\n\t\t\t\t\t\t\t\t\t\t.on('almost:out', (e) => this._mouseoutHandler(e));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// leaflet-distance-markers\n\t\t\t\t\tif (this.options.distanceMarkers) {\n\t\t\t\t\t\tthis.lazyLoad(this.__LDISTANCEM)\n\t\t\t\t\t\t\t.then(() => this.options.polyline && layer.addTo(map));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.options.polyline) layer.addTo(map);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t});\n\n\t// Basic canvas renderer support.\n\tlet oldProto = L.Canvas.prototype._fillStroke;\n\tlet control = this;\n\tL.Canvas.include({\n\t\t_fillStroke: function(ctx, layer) {\n\t\t\tif (control._layers.hasLayer(layer)) {\n\n\t\t\t\tlet theme = control.options.theme.replace('-theme', '');\n\t\t\t\tlet color = D3.Colors[theme] || {};\n\t\t\t\tlet options = layer.options;\n\n\t\t\t\toptions.color = color.line || color.area || theme;\n\t\t\t\toptions.stroke = !!options.color;\n\n\t\t\t\toldProto.call(this, ctx, layer);\n\n\t\t\t\tif (options.stroke && options.weight !== 0) {\n\t\t\t\t\tlet oldVal = ctx.globalCompositeOperation || 'source-over';\n\t\t\t\t\tctx.globalCompositeOperation = 'destination-over'\n\t\t\t\t\tctx.strokeStyle = color.outline || '#FFF';\n\t\t\t\t\tctx.lineWidth = options.weight * 1.75;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t\tctx.globalCompositeOperation = oldVal;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\toldProto.call(this, ctx, layer);\n\t\t\t}\n\t\t}\n\t});\n\n\t// Partially fix: https://github.com/Raruto/leaflet-elevation/issues/81#issuecomment-713477050\n\tthis.on('elechart_init', function() {\n\t\tthis.once('elechart_change elechart_hover', function(e) {\n\t\t\tif (this._chartEnabled) {\n\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t}\n\t\t\tthis._updateMarker(e.data);\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 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\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","deepMerge","target","sources","length","source","shift","isObject","key","Object","assign","SEC","MIN","HOUR","DAY","formatTime","t","d","Math","floor","h","m","s","round","toString","padStart","GeoJSONLoader","control","JSON","parse","distanceMarkers","options","lazy","wptIcons","wptLabels","layer","geoJson","style","feature","polyline","theme","className","pointToLayer","latlng","waypoints","prop","properties","desc","name","sym","replace","toLowerCase","includes","_registerCheckPoint","label","hasOwnProperty","divIcon","html","marker","icon","bindPopup","openPopup","_addMarker","fire","point","element","onEachFeature","geometry","type","_latlngs","forEach","i","meta","time","ele","hr","cad","atemp","alt","Date","coordTimes","times","parseInt","heartRates","heartRate","addData","on","e","path","DistanceMarkers","Polyline","track_info","Control","Elevation","_d3LazyLoader","then","_fireEvt","item","Array","isArray","isJSONDoc","doc","trim","indexOf","console","warn","isXMLDoc","documentElement","ownerDocument","nodeName","saveFile","dataURI","fileName","a","create","href","download","b","document","body","appendChild","click","removeChild","lazyLoader","url","skip","loader","Promise","resolve","reject","tag","createElement","addEventListener","once","src","head","lazyLoad","lazyLoadJS","condition","__D3","d3","__TOGEOJSON","toGeoJSON","__LGEOMUTIL","GeometryUtil","__LALMOSTOVER","Handler","AlmostOver","__LDISTANCEM","drawCanvas","ctx","classed","beginPath","moveTo","p","Path2D","attr","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","stroke","fill","closePath","clamp","val","range","addClass","targetNode","split","every","DomUtil","removeClass","toggleClass","conditional","call","replaceClass","removeClassName","addClassName","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","DomEvent","off","hasClass","randomId","random","substr","each","obj","fn","Colors","area","alpha","line","Area","width","height","xAttr","yAttr","scaleX","scaleY","interpolation","curve","x","xDiagCoord","y0","y1","Path","color","strokeColor","strokeOpacity","fillOpacity","Axis","tickSize","tickPadding","axis","scale","ticks","tickFormat","labelX","labelY","onAxisMount","g","w","axisScale","l","toUpperCase","axisGroup","join","text","Grid","props","PositionMarker","xCoord","yCoord","labels","circle","node","isNaN","size","selectAll","LegendItem","margins","ownerSVGElement","dispatch","detail","legend","enabled","bottom","Tooltip","box","rect","xAlign","yAlign","bbox","getBBox","max","Browser","webkit","Infinity","Ruler","y","symbol","symbolTriangle","exit","remove","enter","merge","angle","CheckPoint","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","clipPath","clipRect","foreignObject","canvas","getContext","brushX","opts","utils","chart","_resize","test","navigator","platform","userAgent","pane","get","Class","Evented","prototype","Mixin","Events","initialize","_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","_clipPath","_context","_brush","_zoom","zoom","_drag","drag","_initInteractions","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","render","container","clear","_resetDrag","_hideDiagramIndicator","clearRect","_drawPath","preferCanvas","_hasActiveLayers","_initBrush","selection","start","_findIndexForXCoord","end","dragstart","dragend","focus","sourceEvent","coords","pointers","filter","shiftKey","button","bind","_initClipper","margin","onStart","transform","onEnd","onZoom","distance","_x","rescaleX","scaleExtent","translateExtent","buttons","_initRuler","_initLegend","formatNum","format","yMax","z","_y","imperial","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_findIndexForLatLng","dist","_registerTooltip","gridOpts","axesOpts","n","substring","legends","items","nodes","v","map","sign","rev","slice","reverse","push","concat","xAxesB","marginB","marginR","tx","ty","list","reduce","array","index","next","curr","result","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","xCoordinate","Marker","getPane","_marker","markerIcon","zIndexOffset","interactive","_labels","addTo","_map","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","maxElevation","getElement","setLatLng","getLatLng","Summary","summary","reset","innerHTML","_registerSummary","Options","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","decimalsX","decimalsY","downloadLink","elevationDiv","followMarker","iconSize","iconAnchor","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","slope","speed","sLimit","undefined","timeFactor","timeFormat","timestamps","sDeltaMax","sInterpolation","sRange","xLabel","yLabel","zFollow","Mobile","__mileFactor","__footFactor","_addData","_addLayer","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","_setMapView","throttle","setStyle","colors","load","loadXML","loadGeoJSON","loadFile","fetch","response","_downloadURL","catch","xml","DOMParser","parseFromString","geojson","getElementsByTagName","pop","_initButton","_initChart","_initSummary","_initMarker","_initLayer","_hideMarker","_resetView","_resizeChart","_rotateMarker","_updateSummary","onRemove","redraw","setZFollow","show","geom","_addGeoJSONData","coordinates","features","_addGPXData","_addPoint","lat","lng","latLng","addLayer","id","_collapse","_expand","_findItemForLatLng","_findItemForX","propagate","_xTicks","_yTicks","offsetWidth","offsetHeight","clientWidth","_maxWidth","maxWidth","_dragendHandler","_mousemoveHandler","_mouseoutHandler","_rulerFilterHandler","_toggleChartHandler","_mousemoveLayerHandler","_pane","createPane","zIndex","pointerEvents","_renderer","disableClickPropagation","disableScrollPropagation","stopPropagation","_mousewheelHandler","link","_button","title","stop","_toggle","_summary","summaryDiv","_updateMarker","gestureHandling","_enabled","ll","getCenter","getZoom","deltaY","flyTo","_isFullscreen","newWidth","_updateMapSegments","setView","animate","duration","contains","elevation_max","setLatLngs","hasLayer","onclick","preventDefault","confirm","__xTicks","__yTicks","addInitHook","enableDragging","disableDragging","loadChart","loadData","loadGPX","_popup","_content","decodeURI","bindTooltip","direction","sticky","openTooltip","CustomEvent","dispatchEvent","almostOver","addHandler","oldProto","Canvas","_fillStroke","include","oldVal","outline","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","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","/**\n * Recursive deep merge objects.\n * Alternative to L.Util.setOptions(this, options).\n */\nexport function deepMerge(target, ...sources) {\n\tif (!sources.length) return target;\n\tconst source = sources.shift();\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) Object.assign(target, {\n\t\t\t\t\t[key]: {}\n\t\t\t\t});\n\t\t\t\tdeepMerge(target[key], source[key]);\n\t\t\t} else {\n\t\t\t\tObject.assign(target, {\n\t\t\t\t\t[key]: source[key]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn deepMerge(target, ...sources);\n}\n\nconst 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 * Simple GeoJSON data loader.\n */\nexport function GeoJSONLoader(data, control) {\n\tif (typeof data === \"string\") {\n\t\tdata = JSON.parse(data);\n\t}\n\tcontrol = control || this;\n\n\tlet distanceMarkers = (\n\t\t\tcontrol.options.distanceMarkers === true\n\t\t\t\t? { lazy: true }\n\t\t\t\t: L.extend({ lazy: true }, control.options.distanceMarkers)\n\t);\n\n\tlet { wptIcons, wptLabels } = control.options;\n\n\t// Partially fix MultiLineStrings (trk > trkseg + trkseg) splitting them into seperate LineStrings (trk > trkseg, trk > trkseg)\n\tdata.features.forEach(d => {\n\t\tif(d.type == 'Feature' && d.geometry.type == \"MultiLineString\") {\n\t\t\td.geometry.coordinates.forEach(coords => {\n\t\t\t\tdata.features.push({\n\t\t\t\t\ttype: 'Feature',\n\t\t\t\t\tgeometry: {\n\t\t\t\t\t\ttype: 'LineString',\n\t\t\t\t\t\tcoordinates: coords,\n\t\t\t\t\t},\n\t\t\t\t\tproperties: d.properties\n\t\t\t\t});\n\t\t\t});\n\t\t} \n\t});\n\tdata.features = data.features.filter(d=> d.type && d.geometry.type != \"MultiLineString\");\n\n\tlet layer = L.geoJson(data, {\n\t\tdistanceMarkers: distanceMarkers,\n\t\tstyle: (feature) => {\n\t\t\tlet style = L.extend({}, control.options.polyline);\n\t\t\tif (control.options.theme) {\n\t\t\t\tstyle.className += ' ' + control.options.theme;\n\t\t\t}\n\t\t\treturn style;\n\t\t},\n\t\tpointToLayer: (feature, latlng) => {\n\t\t\tif (!control.options.waypoints) return;\n\n\t\t\tlet prop = feature.properties;\n\t\t\tlet desc = prop.desc ?? '';\n\t\t\tlet name = prop.name ?? '';\n\t\t\tlet sym = (prop.sym ?? name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase();\n\n\t\t\t// Handle chart waypoints (dots)\n\t\t\tif ([true, 'dots'].includes(control.options.waypoints)) {\n\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\ttrue\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Handle map waypoints (markers)\n\t\t\tif ([true, 'markers'].includes(control.options.waypoints) && wptIcons != false) {\n\t\t\t\t// generate and cache appropriate icon symbol\n\t\t\t\tif (!wptIcons.hasOwnProperty(sym)) {\n\t\t\t\t\twptIcons[sym] = L.divIcon(\n\t\t\t\t\t\tL.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\n\t\t\t\tif ([true, 'markers'].includes(wptLabels) && (name || desc)) {\n\t\t\t\t\tmarker.bindPopup(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : '')).openPopup();\n\t\t\t\t}\n\t\t\t\tcontrol._addMarker(marker);\n\t\t\t\tcontrol.fire('waypoint_added', { point: marker, element: latlng, properties: prop });\n\t\t\t\treturn marker;\n\t\t\t}\n\t\t},\n\t\tonEachFeature: (feature, layer) => {\n\t\t\tif (feature.geometry && feature.geometry.type == 'Point') return;\n\n\t\t\t// Standard GeoJSON\n\t\t\t// control.addData(feature, layer); // NB uses \"_addGeoJSONData\"\n\n\t\t\t// Extended GeoJSON\n\t\t\tlayer._latlngs.forEach((point, i, data) => {\n\t\t\t\t// same properties as L.GPX layer\n\t\t\t\tpoint.meta = { time: null, ele: null, hr: null, cad: null, atemp: null };\n\t\t\t\tif(\"alt\" in point) point.meta.ele = point.alt;\n\t\t\t\tif(feature.properties) {\n\t\t\t\t\tlet prop = feature.properties;\n\t\t\t\t\tif(\"coordTimes\" in prop) point.meta.time = new Date(Date.parse(prop.coordTimes[i]));\n\t\t\t\t\telse if(\"times\" in prop) point.meta.time = new Date(Date.parse(prop.times[i]));\n\t\t\t\t\telse if(\"time\" in prop) point.meta.time = new Date(Date.parse((typeof prop.time === 'object' ? prop.time[i] : prop.time)));\n\t\t\t\t\tif(\"heartRates\" in prop) point.meta.hr = parseInt(prop.heartRates[i]);\n\t\t\t\t\telse if(\"heartRate\" in prop) point.meta.hr = parseInt((typeof prop.heartRate === 'object' ? prop.heartRate[i] : prop.heartRate));\n\t\t\t\t\t// TODO: cadence, temperature\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontrol.addData(layer); // NB uses \"_addGPXData\"\n\n\t\t\t// Postpone adding the distance markers (lazy: true)\n\t\t\tif(control.options.distanceMarkers && distanceMarkers.lazy) {\n\t\t\t\tlayer.on('add remove', (e) => {\n\t\t\t\t\tlet path = e.target;\n\t\t\t\t\tif (L.DistanceMarkers && path instanceof L.Polyline) {\n\t\t\t\t\t\tpath[e.type + 'DistanceMarkers']();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcontrol.track_info = L.extend({}, control.track_info, { type: \"geojson\", name: data.name });\n\t\t},\n\t});\n\n\tL.Control.Elevation._d3LazyLoader.then(() => {\n\t\tcontrol._fireEvt(\"eledata_loaded\", { data: data, layer: layer, name: control.track_info.name, track_info: control.track_info })\n\t});\n\n\treturn layer;\n}\n\n/**\n * Check object type.\n */\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\n/**\n * Check JSON object type.\n */\nexport function isJSONDoc(doc, lazy) {\n\tlazy = typeof lazy === \"undefined\" ? true : lazy;\n\tif (typeof doc === \"string\" && lazy) {\n\t\tdoc = doc.trim();\n\t\treturn doc.indexOf(\"{\") == 0 || doc.indexOf(\"[\") == 0;\n\t} else {\n\t\ttry {\n\t\t\tJSON.parse(doc.toString());\n\t\t} catch (e) {\n\t\t\tif (typeof doc === \"object\" && lazy) return true;\n\t\t\tconsole.warn(e);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n\n/**\n * Check XML object type.\n */\nexport function isXMLDoc(doc, lazy) {\n\tlazy = typeof lazy === \"undefined\" ? true : lazy;\n\tif (typeof doc === \"string\" && lazy) {\n\t\tdoc = doc.trim();\n\t\treturn doc.indexOf(\"<\") == 0;\n\t} else {\n\t\tlet documentElement = (doc ? doc.ownerDocument || doc : 0).documentElement;\n\t\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n\t}\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\nexport function lazyLoad(src, control) {\n\tif (!control.options.lazyLoadJS) return Promise.resolve();\n\n\tconst Elevation = L.Control.Elevation;\n\tlet loader = '';\n\tlet condition = false;\n\n\tswitch(src) {\n\t\tcase control.__D3:\n\t\t\tloader = '_d3LazyLoader';\n\t\t\tcondition = typeof d3 !== 'object';\n\t\tbreak;\n\t\tcase control.__TOGEOJSON:\n\t\t\tloader = '_togeojsonLazyLoader';\n\t\t\tcondition = typeof toGeoJSON !== 'object';\n\t\tbreak;\n\t\tcase control.__LGEOMUTIL:\n\t\t\tloader = '_geomutilLazyLoader';\n\t\t\tcondition = typeof L.GeometryUtil !== 'object';\n\t\tcase control.__LALMOSTOVER:\n\t\t\tloader = '_almostoverLazyLoader';\n\t\t\tcondition = typeof L.Handler.AlmostOver !== 'function ';\n\t\tbreak;\n\t\tcase control.__LDISTANCEM:\n\t\t\tloader = '_distanceMarkersLazyLoader';\n\t\t\tcondition = typeof L.DistanceMarkers !== 'function';\n\t\tbreak;\n\t}\n\treturn Elevation[loader] = lazyLoader(src, condition, Elevation[loader]);\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\tpoint : g.append('g').attr(\"class\", \"point\"),\n\t\taxis : g.append('g').attr(\"class\", \"axis\"),\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\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 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.3.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.8.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\t\tthis.options = _.deepMerge({}, this.options, 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\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\t},\n\n\t/**\n\t * Javascript scripts downloader (lazy loader)\n\t */\n\tlazyLoad: function(src) {\n\t\treturn _.lazyLoad(src, this);\n\t},\n\n\t/**\n\t * Load elevation data (GPX, GeoJSON or KML).\n\t */\n\tload: function(data) {\n\t\tif (_.isXMLDoc(data)) {\n\t\t\tthis.loadXML(data);\n\t\t} else if (_.isJSONDoc(data)) {\n\t\t\tthis.loadGeoJSON(data);\n\t\t} else {\n\t\t\tthis.loadFile(data);\n\t\t}\n\t},\n\n\t/**\n\t * Load data from a remote url.\n\t */\n\tloadFile: 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.load(data);\n\t\t\t})\n\t\t\t.catch((err) => console.warn(err));\n\t},\n\n\t/**\n\t * Load raw GeoJSON data.\n\t */\n\tloadGeoJSON: function(data) {\n\t\t_.GeoJSONLoader(data, this);\n\t},\n\n\t/**\n\t * Load raw XML data.\n\t */\n\tloadXML: function(data) {\n\t\tthis.lazyLoad(this.__TOGEOJSON)\n\t\t\t.then(() => {\n\t\t\t\tlet xml = (new DOMParser()).parseFromString(data, \"text/xml\");\n\t\t\t\tlet type = xml.documentElement.tagName.toLowerCase(); // \"kml\" or \"gpx\"\n\t\t\t\tif (!(type in toGeoJSON)) {\n\t\t\t\t\ttype = xml.documentElement.tagName == \"TrainingCenterDatabase\" ? 'tcx' : 'gpx';\n\t\t\t\t}\n\t\t\t\tlet geojson = toGeoJSON[type](xml);\n\t\t\t\tlet name = xml.getElementsByTagName('name');\n\t\t\t\tif(name[0]) { geojson.name = name[0].innerHTML; }\n\t\t\t\telse if(this._downloadURL) { geojson.name = this._downloadURL.split('/').pop().split('#')[0].split('?')[0]; }\n\n\t\t\t\treturn this.loadGeoJSON(geojson, this);\n\t\t\t});\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);\n\n\t\tif (!this.options.detached) {\n\t\t\t_.addClass(container, '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\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\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\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\n\t\tif (d.type === \"FeatureCollection\") {\n\t\t\t_.each(d.features, feature => this._addData(feature));\n\t\t}\n\n\t\tif (d._latlngs) {\n\t\t\tthis._addGPXData(d._latlngs);\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) {\n\t\t_.each(coords, point => {\n\t\t\tthis._addPoint(point[1], point[0], point[2]);\n\t\t\tthis._fireEvt(\"elepoint_added\", { point: point, index: this._data.length - 1 });\n\t\t});\n\t\tthis._fireEvt(\"eletrack_added\", { coords: coords, index: this._data.length - 1 });\n\t},\n\n\t/*\n\t * Parsing function for GPX data and their elevation in z-coordinate\n\t */\n\t_addGPXData: function(coords) {\n\t\t_.each(coords, point => {\n\t\t\tthis._addPoint(point.lat, point.lng, point.alt ?? point.meta.ele);\n\t\t\tthis._fireEvt(\"elepoint_added\", { point: point, index: this._data.length - 1 });\n\t\t});\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},\n\n\t_addMarker: function(marker) {\n\t\tif (marker) this._markers.addLayer(marker)\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\tthis.eleDiv = eleDiv;\n\t\treturn this.eleDiv;\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 * 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\t\t//Makes this work on IE10 Touch devices by stopping it from firing a mouseout event when the touch is released\n\t\tcontainer.setAttribute('aria-haspopup', true);\n\n\t\tif (!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 (L.Browser.mobile) {\n\t\t\t_.on(container, 'click', L.DomEvent.stopPropagation);\n\t\t}\n\n\t\t_.on(container, 'mousewheel', this._mousewheelHandler, this);\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\t// TODO: keyboard accessibility\n\t\t\t}\n\t\t} else {\n\t\t\t// TODO: handle autohide when detached=true\n\t\t}\n\t},\n\n\t_initSummary: function(container) {\n\t\tlet summary = this._summary = new Summary({ summary: this.options.summary }, this);\n\n\t\td3\n\t\t\t.select(container)\n\t\t\t.call(summary.render());\n\n\t\tthis.summaryDiv = this._summary._container;\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 * Handles the mouesewheel over the chart.\n\t */\n\t_mousewheelHandler: function(e) {\n\t\tif (this._map.gestureHandling && this._map.gestureHandling._enabled) return;\n\t\tlet ll = this._marker.getLatLng() || this._map.getCenter();\n\t\tlet z = this._map.getZoom() + Math.sign(e.deltaY);\n\t\tthis._resetDrag();\n\t\tthis._map.flyTo(ll, z);\n\t},\n\n\t/**\n\t * Add a waypoint marker to 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 { path, 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 => {\n\t\t\tlet node = layer.getElement && layer.getElement();\n\t\t\t_.toggleClass(node, this.options.polyline.className + ' ' + this.options.theme, this._chartEnabled);\n\t\t\t}\n\t\t);\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.summaryDiv.innerHTML += '<span class=\"download\"><a href=\"#\">' + L._('Download') + '</a></span>'\n\t\t\t_.select('.download a', this.summaryDiv).onclick = (e) => {\n\t\t\t\te.preventDefault();\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});\n\n/**\n * Attach here some useful elevation hooks.\n */\nElevation.addInitHook(function() {\n\n\t// Alias deprecated functions\n\tthis.enableDragging = this.enableBrush;\n\tthis.disableDragging = this.disableBrush;\n\tthis.loadChart = this.addTo;\n\tthis.loadData = this.load;\n\tthis.loadGPX = this.loadXML;\n\n\tthis.on('waypoint_added', function(e) {\n\t\tlet p = e.point,\n\t\t\tpop = p._popup;\n\t\tif (pop) {\n\t\t\tpop.options.className = 'elevation-popup';\n\t\t}\n\t\tif (pop && pop._content) {\n\t\t\tpop._content = decodeURI(pop._content);\n\t\t\tp.bindTooltip(pop._content, { direction: 'auto', sticky: true, opacity: 1, className: 'elevation-tooltip' }).openTooltip();\n\t\t}\n\t});\n\n\tthis.on(\"eletrack_download\", function(e) {\n\t\tif (e.downloadLink == 'modal' && typeof CustomEvent === \"function\") {\n\t\t\tdocument.dispatchEvent(new CustomEvent(\"eletrack_download\", { detail: e }));\n\t\t} else if (e.downloadLink == 'link' || e.downloadLink === true) {\n\t\t\te.confirm();\n\t\t}\n\t});\n\n\tthis.on('eledata_loaded', function(e) {\n\t\tlet map = this._map;\n\t\tlet layer = e.layer;\n\t\tif (!map) {\n\t\t\tconsole.warn(\"Undefined elevation map object\");\n\t\t\treturn;\n\t\t}\n\t\tmap.once('layeradd', (e) => this.options.autofitBounds && this.fitBounds(layer.getBounds()));\n\n\t\tif (L.Browser.mobile) {\n\n\t\t\tif (this.options.polyline) layer.addTo(map);\n\n\t\t} else {\n\n\t\t\t// leaflet-geometryutil\n\t\t\tthis.lazyLoad(this.__LGEOMUTIL)\n\t\t\t\t.then(() => {\n\n\t\t\t\t\t// leaflet-almostover\n\t\t\t\t\tif (this.options.almostOver) {\n\t\t\t\t\t\tthis.lazyLoad(this.__LALMOSTOVER)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tmap.addHandler('almostOver', L.Handler.AlmostOver)\n\t\t\t\t\t\t\t\tif (L.GeometryUtil && map.almostOver && map.almostOver.enabled()) {\n\t\t\t\t\t\t\t\t\tmap.almostOver.addLayer(layer);\n\t\t\t\t\t\t\t\t\tmap\n\t\t\t\t\t\t\t\t\t\t.on('almost:move', (e) => this._mousemoveLayerHandler(e))\n\t\t\t\t\t\t\t\t\t\t.on('almost:out', (e) => this._mouseoutHandler(e));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// leaflet-distance-markers\n\t\t\t\t\tif (this.options.distanceMarkers) {\n\t\t\t\t\t\tthis.lazyLoad(this.__LDISTANCEM)\n\t\t\t\t\t\t\t.then(() => this.options.polyline && layer.addTo(map));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.options.polyline) layer.addTo(map);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t});\n\n\t// Basic canvas renderer support.\n\tlet oldProto = L.Canvas.prototype._fillStroke;\n\tlet control = this;\n\tL.Canvas.include({\n\t\t_fillStroke: function(ctx, layer) {\n\t\t\tif (control._layers.hasLayer(layer)) {\n\n\t\t\t\tlet theme = control.options.theme.replace('-theme', '');\n\t\t\t\tlet color = D3.Colors[theme] || {};\n\t\t\t\tlet options = layer.options;\n\n\t\t\t\toptions.color = color.line || color.area || theme;\n\t\t\t\toptions.stroke = !!options.color;\n\n\t\t\t\toldProto.call(this, ctx, layer);\n\n\t\t\t\tif (options.stroke && options.weight !== 0) {\n\t\t\t\t\tlet oldVal = ctx.globalCompositeOperation || 'source-over';\n\t\t\t\t\tctx.globalCompositeOperation = 'destination-over'\n\t\t\t\t\tctx.strokeStyle = color.outline || '#FFF';\n\t\t\t\t\tctx.lineWidth = options.weight * 1.75;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t\tctx.globalCompositeOperation = oldVal;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\toldProto.call(this, ctx, layer);\n\t\t\t}\n\t\t}\n\t});\n\n\t// Partially fix: https://github.com/Raruto/leaflet-elevation/issues/81#issuecomment-713477050\n\tthis.on('elechart_init', function() {\n\t\tthis.once('elechart_change elechart_hover', function(e) {\n\t\t\tif (this._chartEnabled) {\n\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t\tthis._chart._showDiagramIndicator(e.data, e.xCoord);\n\t\t\t}\n\t\t\tthis._updateMarker(e.data);\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 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\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","deepMerge","target","sources","length","source","shift","isObject","key","Object","assign","SEC","MIN","HOUR","DAY","formatTime","t","d","Math","floor","h","m","s","round","toString","padStart","GeoJSONLoader","control","JSON","parse","distanceMarkers","options","lazy","wptIcons","wptLabels","features","forEach","type","geometry","coordinates","coords","push","properties","filter","layer","geoJson","style","feature","polyline","theme","className","pointToLayer","latlng","waypoints","prop","desc","name","sym","replace","toLowerCase","includes","_registerCheckPoint","label","hasOwnProperty","divIcon","html","marker","icon","bindPopup","openPopup","_addMarker","fire","point","element","onEachFeature","_latlngs","i","meta","time","ele","hr","cad","atemp","alt","Date","coordTimes","times","parseInt","heartRates","heartRate","addData","on","e","path","DistanceMarkers","Polyline","track_info","Control","Elevation","_d3LazyLoader","then","_fireEvt","item","Array","isArray","isJSONDoc","doc","trim","indexOf","console","warn","isXMLDoc","documentElement","ownerDocument","nodeName","saveFile","dataURI","fileName","a","create","href","download","b","document","body","appendChild","click","removeChild","lazyLoader","url","skip","loader","Promise","resolve","reject","tag","createElement","addEventListener","once","src","head","lazyLoad","lazyLoadJS","condition","__D3","d3","__TOGEOJSON","toGeoJSON","__LGEOMUTIL","GeometryUtil","__LALMOSTOVER","Handler","AlmostOver","__LDISTANCEM","drawCanvas","ctx","classed","beginPath","moveTo","p","Path2D","attr","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","stroke","fill","closePath","clamp","val","range","addClass","targetNode","split","every","DomUtil","removeClass","toggleClass","conditional","call","replaceClass","removeClassName","addClassName","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","DomEvent","off","hasClass","randomId","random","substr","each","obj","fn","Colors","area","alpha","line","Area","width","height","xAttr","yAttr","scaleX","scaleY","interpolation","curve","x","xDiagCoord","y0","y1","Path","color","strokeColor","strokeOpacity","fillOpacity","Axis","tickSize","tickPadding","axis","scale","ticks","tickFormat","labelX","labelY","onAxisMount","g","w","axisScale","l","toUpperCase","axisGroup","join","text","Grid","props","PositionMarker","xCoord","yCoord","labels","circle","node","isNaN","size","selectAll","LegendItem","margins","ownerSVGElement","dispatch","detail","legend","enabled","bottom","Tooltip","box","rect","xAlign","yAlign","bbox","getBBox","max","Browser","webkit","Infinity","Ruler","y","symbol","symbolTriangle","exit","remove","enter","merge","angle","CheckPoint","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","Evented","prototype","Mixin","Events","initialize","_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","index","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","render","container","clear","_resetDrag","_hideDiagramIndicator","clearRect","_drawPath","preferCanvas","_hasActiveLayers","_initBrush","selection","start","_findIndexForXCoord","end","dragstart","dragend","focus","sourceEvent","pointers","shiftKey","button","bind","_initClipper","margin","onStart","transform","onEnd","onZoom","distance","_x","rescaleX","scaleExtent","translateExtent","buttons","_initRuler","_initLegend","formatNum","format","yMax","z","_y","imperial","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_findIndexForLatLng","dist","_registerTooltip","gridOpts","axesOpts","n","substring","d1","d2","x1","legends","items","nodes","v","map","sign","rev","slice","reverse","concat","xAxesB","marginB","marginR","tx","ty","list","reduce","array","next","curr","result","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","xCoordinate","Marker","getPane","_marker","markerIcon","zIndexOffset","interactive","_labels","addTo","_map","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","maxElevation","getElement","setLatLng","getLatLng","Summary","summary","reset","innerHTML","_registerSummary","Options","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","decimalsX","decimalsY","downloadLink","elevationDiv","followMarker","iconSize","iconAnchor","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","slope","speed","sLimit","undefined","timeFactor","timeFormat","timestamps","sDeltaMax","sInterpolation","sRange","xLabel","yLabel","zFollow","Mobile","__mileFactor","__footFactor","_addData","_addLayer","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","_setMapView","throttle","setStyle","colors","load","loadXML","loadGeoJSON","loadFile","fetch","response","_downloadURL","catch","xml","DOMParser","parseFromString","geojson","getElementsByTagName","pop","_initButton","_initChart","_initSummary","_initMarker","_initLayer","_hideMarker","_resetView","_resizeChart","_rotateMarker","_updateSummary","onRemove","redraw","setZFollow","show","geom","_addGeoJSONData","_addGPXData","_addPoint","lat","lng","latLng","addLayer","id","_collapse","_expand","_findItemForLatLng","_findItemForX","propagate","_xTicks","_yTicks","offsetWidth","offsetHeight","clientWidth","_maxWidth","maxWidth","_dragendHandler","_mousemoveHandler","_mouseoutHandler","_rulerFilterHandler","_toggleChartHandler","_mousemoveLayerHandler","_pane","createPane","zIndex","pointerEvents","_renderer","disableClickPropagation","disableScrollPropagation","stopPropagation","_mousewheelHandler","link","_button","title","stop","_toggle","_summary","summaryDiv","_updateMarker","gestureHandling","_enabled","ll","getCenter","getZoom","deltaY","flyTo","_isFullscreen","newWidth","_updateMapSegments","setView","animate","duration","contains","elevation_max","setLatLngs","hasLayer","onclick","preventDefault","confirm","__xTicks","__yTicks","addInitHook","enableDragging","disableDragging","loadChart","loadData","loadGPX","_popup","_content","decodeURI","bindTooltip","direction","sticky","openTooltip","CustomEvent","dispatchEvent","almostOver","addHandler","oldProto","Canvas","_fillStroke","include","oldVal","outline","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","elevation"],"mappings":"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"}