@raruto/leaflet-elevation 1.7.0 → 1.7.4
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.
- package/README.md +60 -1
- package/dist/leaflet-elevation.css +1 -0
- package/dist/leaflet-elevation.js +179 -117
- package/dist/leaflet-elevation.js.map +1 -1
- package/dist/leaflet-elevation.min.css +1 -1
- package/dist/leaflet-elevation.min.js +1 -1
- package/dist/leaflet-elevation.min.js.map +1 -1
- package/libs/leaflet-gpxgroup.js +48 -35
- package/libs/leaflet-gpxgroup.min.js +14 -13
- package/package.json +1 -1
- package/src/chart.js +4 -0
- package/src/components.js +6 -0
- package/src/control.js +40 -6
- package/src/index.css +1 -0
- package/src/options.js +9 -16
- package/src/utils.js +34 -20
|
@@ -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/distance.js","../src/altitude.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\n/**\n * Wait for document load before execute function.\n */\nexport function deferFunc(f) {\n\tif (document.readyState !== 'complete') window.addEventListener(\"load\", f, { once: true });\n\telse f();\n}\n/**\n * Debounce function to limit events are being fired.\n */\nexport function debounce(func, wait, context, immediate) {\n\tvar timeout;\n\treturn function() {\n\t\tvar args = arguments;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\tif (!immediate) func.apply(context, args);\n\t\t}, wait);\n\t\tif (immediate && !timeout) func.apply(context, args);\n\t};\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 let 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 let wptIcons = control.options.gpxOptions.marker_options.wptIcons;\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 if (!control.options.waypoints) return;\n\n\t\t\tlet prop = feature.properties;\n\t\t\tlet desc = prop.desc ? prop.desc : '';\n\t\t\tlet name = prop.name ? prop.name : '';\n\t\t\tlet sym = (prop.sym ? prop.sym : name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase();\n\n\t\t\t// generate appropriate icon symbol or retrieve it from cache\n\t\t\twptIcons[sym] = (wptIcons[sym] ? wptIcons[sym] : L.divIcon({\n\t\t\t\tclassName: 'elevation-waypoint-marker',\n\t\t\t\thtml: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>',\n\t\t\t\ticonSize: [30, 30],\n\t\t\t\ticonAnchor: [8, 30],\n\t\t\t}));\n\t\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\n\t\t\tif (name || desc) {\n\t\t\t\tmarker.bindPopup(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : '')).openPopup();\n\t\t\t}\n\t\t\tcontrol._registerCheckPoint({latlng: latlng, label: name}, true);\n\t\t\tcontrol.fire('waypoint_added', { point: marker, element: latlng, properties: prop });\n\t\t\treturn marker;\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 layer.on('add remove', (e) => {\n\t\t\t let path = e.target;\n\t\t\t if (L.DistanceMarkers && path instanceof L.Polyline) {\n\t\t\t\t\t\tpath[e.type + 'DistanceMarkers']();\n\t\t\t }\n\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 DOM element visibility.\n */\nexport function isDomVisible(elem) {\n\treturn !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\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 DOM element viewport visibility.\n */\nexport function isVisible(elem) {\n\tif (!elem) return false;\n\n\tlet styles = window.getComputedStyle(elem);\n\n\tfunction isVisibleByStyles(elem, styles) {\n\t\treturn styles.visibility !== 'hidden' && styles.display !== 'none';\n\t}\n\n\tfunction isAboveOtherElements(elem, styles) {\n\t\tlet boundingRect = elem.getBoundingClientRect();\n\t\tlet left = boundingRect.left + 1;\n\t\tlet right = boundingRect.right - 1;\n\t\tlet top = boundingRect.top + 1;\n\t\tlet bottom = boundingRect.bottom - 1;\n\t\tlet above = true;\n\n\t\tlet pointerEvents = elem.style.pointerEvents;\n\n\t\tif (styles['pointer-events'] == 'none') elem.style.pointerEvents = 'auto';\n\n\t\tif (document.elementFromPoint(left, top) !== elem) above = false;\n\t\tif (document.elementFromPoint(right, top) !== elem) above = false;\n\n\t\t// Only for completely visible elements\n\t\t// if (document.elementFromPoint(left, bottom) !== elem) above = false;\n\t\t// if (document.elementFromPoint(right, bottom) !== elem) above = false;\n\n\t\telem.style.pointerEvents = pointerEvents;\n\n\t\treturn above;\n\t}\n\n\tif (!isVisibleByStyles(elem, styles)) return false;\n\tif (!isAboveOtherElements(elem, styles)) return false;\n\treturn true;\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 * Async JS script download.\n */\nexport function lazyLoader(url, skip, loader) {\n\tif (skip === false) {\n\t\treturn Promise.resolve();\n\t}\n\tif (loader instanceof Promise) {\n\t\treturn loader;\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tlet tag = document.createElement(\"script\");\n\t\ttag.addEventListener('load', resolve, { once: true });\n\t\ttag.src = url;\n\t\tdocument.head.appendChild(tag);\n\t});\n}\n\n/**\n * Generate download data event.\n */\nexport 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 * Wait for element visible before execute function.\n */\nexport function waitHolder(elem) {\n\treturn new Promise((resolve, reject) => {\n\t\tlet ticking = false;\n\t\tlet scrollFn = () => {\n\t\t\tif (!ticking) {\n\t\t\t\tL.Util.requestAnimFrame(() => {\n\t\t\t\t\tif (isVisible(elem)) {\n\t\t\t\t\t\twindow.removeEventListener('scroll', scrollFn);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t\tticking = false;\n\t\t\t\t});\n\t\t\t\tticking = true;\n\t\t\t}\n\t\t};\n\t\twindow.addEventListener('scroll', scrollFn);\n\t\tif (elem) elem.addEventListener('mouseenter', scrollFn, { once: true });\n\t\tscrollFn();\n\t});\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 if (removeClassName) removeClass(targetNode, removeClassName);\n if (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 return 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\nexport function randomId() {\n\treturn Math.random().toString(36).substr(2, 9);\n}\n\nexport function each(obj, fn) {\n\tfor (let i in obj) fn(obj[i], i);\n}\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 HeightFocusLine = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n\tlength = 0,\n}) => {\n\treturn line => line\n\t\t.attr(\"class\", theme + \" height-focus line\")\n\t\t.attr(\"x1\", xCoord)\n\t\t.attr(\"x2\", xCoord)\n\t\t.attr(\"y1\", yCoord)\n\t\t.attr(\"y2\", length);\n};\n\nexport const HeightFocusLabel = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n\tlabel,\n}) => {\n\treturn text => {\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\", yCoord);\n\n\t\tlet y = text.select(\".height-focus-y\");\n\t\tif (!y.node()) y = text.append(\"svg:tspan\");\n\n\t\ty\n\t\t\t.attr(\"class\", \"height-focus-y\")\n\t\t\t.text(label);\n\n\t\ttext.selectAll('tspan').attr(\"x\", xCoord + 5);\n\n\t\treturn text;\n\t};\n};\n\nexport const HeightFocusMarker = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n}) => {\n\treturn circle => circle\n\t\t.attr(\"class\", theme + \" height-focus circle-lower\")\n\t\t.attr(\"transform\", \"translate(\" + xCoord + \",\" + yCoord + \")\")\n\t\t.attr(\"r\", 6)\n\t\t.attr(\"cx\", 0)\n\t\t.attr(\"cy\", 0);\n};\n\nexport const LegendItem = ({\n\tname,\n label,\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\tconst svg = d3.select(g.node().ownerSVGElement || g);\n\n\t\tg.on('click.legend', () => svg.dispatch(\"legend_clicked\", {\n\t\t\tdetail: {\n\t\t\t\tpath: path.node(),\n\t\t\t\tname: name,\n\t\t\t\tlegend: g.node(),\n\t\t\t\tenabled: !path.classed('leaflet-hidden'),\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 MouseFocusLine = ({\n\txCoord = 0,\n\theight,\n}) => {\n\treturn line => line\n\t\t.attr('class', 'mouse-focus-line')\n\t\t.attr('x2', xCoord)\n\t\t.attr('y2', 0)\n\t\t.attr('x1', xCoord)\n\t\t.attr('y1', height);\n};\n\nexport const MouseFocusLabel = ({\n\txCoord,\n\tyCoord,\n\tlabelX = \"\",\n\tlabelY = \"\",\n\twidth,\n}) => {\n\treturn g => {\n\n\t\tg.attr('class', 'mouse-focus-label');\n\n\t\tlet rect = g.select(\".mouse-focus-label-rect\");\n\t\tlet text = g.select(\".mouse-focus-label-text\");\n\t\tlet y = text.select(\".mouse-focus-label-y\");\n\t\tlet x = text.select(\".mouse-focus-label-x\");\n\n\t\tif (!rect.node()) rect = g.append(\"svg:rect\");\n\t\tif (!text.node()) text = g.append(\"svg:text\");\n\t\tif (!y.node()) y = text.append(\"svg:tspan\");\n\t\tif (!x.node()) x = text.append(\"svg:tspan\");\n\n\t\ty.text(labelY);\n\t\tx.text(labelX);\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\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\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\t\ty\n\t\t\t.attr(\"class\", \"mouse-focus-label-y\")\n\t\t\t.attr(\"dy\", \"1em\");\n\t\tx\n\t\t\t.attr(\"class\", \"mouse-focus-label-x\")\n\t\t\t.attr(\"dy\", \"2em\");\n\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 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// Mouse Focus\n\tconst dragG = panes.ruler;\n\tconst focusG = panes.tooltip;\n\tconst brushG = panes.brush;\n\n\tfocusG.append('svg:line')\n\t\t.call(\n\t\t\tMouseFocusLine({\n\t\t\t\txCoord: 0,\n\t\t\t\theight: _height\n\t\t\t})\n\t\t);\n\n\tfocusG.append(\"g\")\n\t\t.call(\n\t\t\tMouseFocusLabel({\n\t\t\t\txCoord: 0,\n\t\t\t\tyCoord: 0,\n\t\t\t\theight: _height,\n\t\t\t\twidth : _width,\n\t\t\t\tlabelX: \"\",\n\t\t\t\tlabelY: \"\",\n\t\t\t})\n\t\t);\n\n\n\t// Add the brushing\n\tlet brush = d3.brushX().on('start.cursor end.cursor brush.cursor', () => brushG.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\tdragG,\n\t\tfocusG,\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\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\tdragG .call(Ruler({ height: _height, width: _width }));\n\t\t}\n\n\t\tbrushG.call(brush.extent( [ [0,0], [_width, _height] ] ));\n\t\tbrushG.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\tfocusLabels: {},\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\tif (opts.imperial) {\n\t\t\tthis._xLabel = \"mi\";\n\t\t\tthis._yLabel = \"ft\";\n\t\t} else {\n\t\t\tthis._xLabel = opts.xLabel;\n\t\t\tthis._yLabel = opts.yLabel;\n\t\t}\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\n\t\t// Scales\n\t\tthis._initScale();\n\n\t\t// Helpers\n\t\tthis._clipPath = chart.get('clipPath');\n\t\tthis._canvas = chart.get('canvas');\n\t\tthis._context = chart.get('context');\n\t\tthis._dragG = chart.get('dragG');\n\t\tthis._focusG = chart.get('focusG');\n\t\tthis._brush = chart.get('brush');\n\n\t\t// Tooltip\n\t\tthis._focusline = this._focusG.select('.mouse-focus-line');\n\t\tthis._focuslabel = this._focusG.select('.mouse-focus-label');\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._area.selectAll('path').attr(\"d\", \"M0 0\");\n\t\tthis._context.clearRect(0, 0, this._width(), this._height());\n\t\tif (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 opts = this.options;\n\t\tlet ctx = this._context;\n\n\t\tlet path = this._paths[name];\n\t\tlet area = this._props.areas[name];\n\t\tlet node = path.node();\n\t\tlet scaleX = this._scales[area.scaleX];\n\t\tlet scaleY = this._scales[area.scaleY];\n\n\t\tarea = L.extend({}, area, {\n\t\t\twidth : this._width(),\n\t\t\theight : this._height(),\n\t\t\tscaleX : scaleX,\n\t\t\tscaleY : scaleY\n\t\t});\n\n\t\tif (!scaleY || !scaleY) {\n\t\t\treturn console.warn('Unable to render path:' + name);\n\t\t}\n\n\t\tpath.datum(this._data).attr(\"d\", D3.Area(area));\n\n\t\tif (path.classed('leaflet-hidden')) return;\n\n\t\tif (opts.preferCanvas) {\n\t\t\tpath.classed('canvas-path', true);\n\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(0, 0);\n\t\t\tlet p = new Path2D(path.attr('d'));\n\n\t\t\tctx.strokeStyle = path.attr('stroke');\n\t\t\tctx.fillStyle = path.attr('fill');\n\t\t\tctx.lineWidth = 1.25;\n\t\t\tctx.globalCompositeOperation = 'source-over';\n\n\t\t\t// stroke opacity\n\t\t\tctx.globalAlpha = path.attr('stroke-opacity') || 0.3;\n\t\t\tctx.stroke(p);\n\n\t\t\t// fill opacity\n\t\t\tctx.globalAlpha = path.attr('fill-opacity') || 0.45;\n\t\t\tctx.fill(p);\n\n\t\t\tctx.globalAlpha = 1;\n\n\t\t\tctx.closePath();\n\t\t} else {\n\t\t\tthis._area.append(() => 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\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 (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._dragG.data()[0].y;\n\t\t\tif (y >= yMax || y <= 0) this._dragG.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._dragG.data()[0], { y: y });\n\n\t\t\tthis._dragG\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._yLabel);\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._dragG.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 waypoint 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} else\n\n\t\tif (isNaN(x) || isNaN(y)) return;\n\n\t\tif (!point.item || !point.item.property('isConnected')) {\n\t\t\tpoint.position = point.position || \"bottom\";\n\n\t\t\tpoint.item = this._point.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': this._height() - y})[point.position],\n\t\t\t\tx2: ({'left': -x, 'right': this._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},\n\n\t_registerFocusLabel: function(props) {\n\t\tthis._props.focusLabels[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\tlet opts = this.options;\n\n\t\tlet scales = this._scales;\n\t\tlet d = this._domains;\n\t\tlet r = this._ranges;\n\n\t\tfor (let i in scales) {\n\t\t\tscales[i]\n\t\t\t.domain(d[i](this._data))\n\t\t\t.range(r[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\tlet opts = this.options;\n\t\tlet yCoordinate = this._y(item[opts.yAttr]);\n\n\t\tthis._focusG.attr(\"display\", null);\n\n\t\tthis._focusline.call(\n\t\t\tD3.MouseFocusLine({\n\t\t\t\txCoord: xCoordinate,\n\t\t\t\theight: this._height()\n\t\t\t})\n\t\t);\n\t\tthis._focuslabel.call(\n\t\t\tD3.MouseFocusLabel({\n\t\t\t\txCoord: xCoordinate,\n\t\t\t\tyCoord: yCoordinate,\n\t\t\t\theight: this._height(),\n\t\t\t\twidth : this._width(),\n\t\t\t\tlabelX: d3.format(\".\"+ opts.decimalsX +\"f\")(item[opts.xAttr]) + \" \" + this._xLabel,\n\t\t\t\tlabelY: d3.format(\".\"+ opts.decimalsY +\"f\")(item[opts.yAttr]) + \" \" + this._yLabel\n\t\t\t})\n\t\t);\n\n\t\t// this._focuslabel.selectAll('tspan').data(Object.values(this._focuslabels));\n\n\t\tlet labels = this._props.focusLabels;\n\t\tlet tooltip = this._focuslabel.select('text');\n\t\tlet label;\n\n\t\tfor (var i in labels) {\n\t\t\tlabel = tooltip.select(\".mouse-focus-label-\" + labels[i].name);\n\n\t\t\tif (!label.size()) {\n\t\t\t\tlabel = tooltip.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\n\t\t\tthis._focuslabel.select('.mouse-focus-label-x')\n\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t}\n\n\t},\n\n\t_hideDiagramIndicator: function() {\n\t\tthis._focusG.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\tif (this.options.imperial) {\n\t\t\tthis._xLabel = \"mi\";\n\t\t\tthis._yLabel = \"ft\";\n\t\t} else {\n\t\t\tthis._xLabel = this.options.xLabel;\n\t\t\tthis._yLabel = this.options.yLabel;\n\t\t}\n\n\t\tif (this.options.marker == 'elevation-line') {\n\t\t\t// this._container = d3.create(\"g\").attr(\"class\", \"height-focus-group\");\n\t\t\tthis._focusline = d3.create('svg:line');\n\t\t\tthis._focusmarker = d3.create(\"svg:circle\");\n\t\t\tthis._focuslabel = d3.create(\"svg:text\");\n\t\t} else if (this.options.marker == 'position-marker') {\n\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\tthis._marker = L.marker([0, 0], { icon: this.options.markerIcon, zIndexOffset: 1000000, interactive: false });\n\t\t}\n\n\t\tthis._focuslabels = {};\n\n\t\treturn this;\n\t},\n\n\taddTo: function(map) {\n\t\tthis._map = map;\n\t\tif (this.options.marker == 'elevation-line') {\n\t\t\tlet g = this._container = d3.select(map.getPane('elevationPane')).select(\"svg > g\")\n\t\t\t\t.attr(\"class\", \"height-focus-group\");\n\t\t\tg.append(() => this._focusline.node());\n\t\t\tg.append(() => this._focusmarker.node());\n\t\t\tg.append(() => this._focuslabel.node());\n\t\t} else if (this.options.marker == 'position-marker') {\n\t\t\tthis._marker.addTo(map, { pane: 'overlayPane' });\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\tlet opts = this.options;\n\t\tlet map = this._map;\n\n\t\tthis._latlng = props.item.latlng;\n\n\t\tlet pos = map.latLngToLayerPoint(this._latlng);\n\n\t\tif (map._rotate) {\n\t\t\tpos = map.rotatedPointToMapPanePoint(pos);\n\t\t}\n\n\t\tlet point = L.extend({}, props.item, pos);\n\n\t\tif (this.options.marker == 'elevation-line') {\n\n\t\t\tlet normalizedAlt = this._height() / props.maxElevation * point.z;\n\t\t\tlet normalizedY = point.y - normalizedAlt;\n\n\t\t\tthis._container.classed(\"leaflet-hidden\", false);\n\n\t\t\tthis._focusmarker\n\t\t\t\t.call(\n\t\t\t\t\tD3.HeightFocusMarker({\n\t\t\t\t\t\ttheme : opts.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: point.y,\n\t\t\t\t\t}));\n\n\t\t\tthis._focusline\n\t\t\t\t.call(\n\t\t\t\t\tD3.HeightFocusLine({\n\t\t\t\t\t\ttheme : opts.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: point.y,\n\t\t\t\t\t\tlength: normalizedY\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\tthis._focuslabel\n\t\t\t\t.call(\n\t\t\t\t\tD3.HeightFocusLabel({\n\t\t\t\t\t\ttheme : opts.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: normalizedY,\n\t\t\t\t\t\tlabel : d3.format(\".\" + opts.decimalsY + \"f\")(point[opts.yAttr]) + \" \" + this._yLabel\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\tlet labels = this._focuslabels;\n\t\t\tlet tooltip = this._focuslabel;\n\t\t\tlet label;\n\n\t\t\tfor (var i in labels) {\n\t\t\t\tlabel = tooltip.select(\".height-focus-\" + labels[i].name);\n\n\t\t\t\tif (!label.size()) {\n\t\t\t\t\tlabel = tooltip.append(\"svg:tspan\")\n\t\t\t\t\t\t.attr(\"class\", \"height-focus-\" + labels[i].name)\n\t\t\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t\t\t}\n\n\t\t\t\tlabel.text(typeof labels[i].value !== \"function\" ? labels[i].value : labels[i].value(props.item) );\n\n\t\t\t\tthis._focuslabel.select('.height-focus-y')\n\t\t\t\t\t.attr(\"dy\", \"-1.5em\");\n\t\t\t}\n\n\t\t} else if (this.options.marker == 'position-marker') {\n\t\t\t_.removeClass(this._marker.getElement(), 'leaflet-hidden');\n\t\t\tthis._marker.setLatLng(this._latlng);\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\tif (this.options.marker == 'elevation-line') {\n\t\t\tif (this._container) this._container.classed(\"leaflet-hidden\", true);\n\t\t} else if (this.options.marker == 'position-marker') {\n\t\t\t_.addClass(this._marker.getElement(), 'leaflet-hidden');\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_registerFocusLabel: function(props) {\n\t\tthis._focuslabels[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\tdistanceFactor: 1,\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\tgpxOptions: {\n\t\tasync: true,\n\t\tmarker_options: {\n\t\t\tstartIconUrl: null,\n\t\t\tendIconUrl: null,\n\t\t\tshadowUrl: null,\n\t\t\twptIcons: {\n\t\t\t\t'': L.divIcon({\n\t\t\t\t\tclassName: 'elevation-waypoint-marker',\n\t\t\t\t\thtml: '<i class=\"elevation-waypoint-icon\"></i>',\n\t\t\t\t\ticonSize: [30, 30],\n\t\t\t\t\ticonAnchor: [8, 30],\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t},\n\theight: 200,\n\theightFactor: 1,\n\timperial: false,\n\tinterpolation: \"curveLinear\",\n\tlazyLoadJS: true,\n\tlegend: true,\n\tloadData: {\n\t\tdefer: false,\n\t\tlazy: false,\n\t},\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\tplaceholder: false,\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\tresponsive: true,\n\tsummary: 'inline',\n\tslope: false,\n\tspeed: false,\n\tsLimit: undefined,\n\ttime: false,\n\ttimeFactor: 3600,\n\ttimeFormat: false,\n\tsDeltaMax: undefined,\n\tsInterpolation: \"curveStepAfter\",\n\tsRange: undefined,\n\twidth: 600,\n\twaypoints: 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.0/libs/leaflet-distance-marker.min.js',\n\n\t/*\n\t * Add data to the diagram either from GPX or GeoJSON and update the axis domain and data\n\t */\n\taddData: function(d, layer) {\n\t\tif ((typeof layer === \"undefined\" || layer === null) && d.on) {\n\t\t\tlayer = d;\n\t\t}\n\t\tElevation._d3LazyLoader = _.lazyLoader(\n\t\t\tthis.__D3,\n\t\t\ttypeof d3 !== 'object' || !this.options.lazyLoadJS,\n\t\t\tElevation._d3LazyLoader\n\t\t).then(() => {\n\t\t\tthis._addData(d);\n\t\t\tthis._addLayer(layer);\n\t\t\tthis._fireEvt(\"eledata_added\", { data: d, layer: layer, track_info: this.track_info });\n\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._chart.clear();\n\t\tif (this._layers) this._layers.clearLayers();\n\n\t\tthis._data = [];\n\t\tthis.track_info = {};\n\n\t\tthis._fireEvt(\"eledata_clear\");\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 * Alias for enableBrush\n\t */\n\tenableDragging: function() {\n\t\tthis.enableBrushing();\n\t},\n\n\t/**\n\t * Alias for disableBrush\n\t */\n\tdisableDragging: function() {\n\t\tthis.disableBrushing();\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._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._markedSegments = L.polyline([]);\n\t\tthis._chartEnabled = true,\n\n\t\tthis.track_info = {};\n\n\t\tthis.options = _.deepMerge({}, this.options, options);\n\n\t\tthis._zFollow = this.options.zFollow;\n\n\t\tif (this.options.followMarker) this._setMapView = L.Util.throttle(this._setMapView, 300, this);\n\t\tif (this.options.placeholder) this.options.loadData.lazy = this.options.loadData.defer = true;\n\n\t\tif (this.options.legend) this.options.margins.bottom += 30;\n\n\t\tif (this.options.theme) this.options.polylineSegments.className += ' ' + this.options.theme;\n\n\t\tthis._markedSegments.setStyle(this.options.polylineSegments);\n\n\t\t// this._resizeChart = _.debounce(this._resizeChart, 300, this);\n\t\t// this._resizeChart = L.Util.throttle(this._resizeChart, 300, this);\n\n\t\t// if (L.Browser.mobile) {\n\t\t// \tthis._updateChart = _.debounce(this._updateChart, 300, this);\n\t\t// \tthis._updateSummary = _.debounce(this._updateSummary, 300, this);\n\t\t// }\n\n\t\t// Leaflet canvas renderer colors\n\t\tL.extend(D3.Colors, this.options.colors || {});\n\t},\n\n\t/**\n\t * Alias for loadData\n\t */\n\tload: function(data, opts) {\n\t\tthis.loadData(data, opts);\n\t},\n\n\t/**\n\t * Alias for addTo\n\t */\n\tloadChart: function(map) {\n\t\tthis.addTo(map);\n\t},\n\n\t/**\n\t * Load elevation data (GPX, GeoJSON or KML).\n\t */\n\tloadData: function(data, opts) {\n\t\topts = L.extend({}, this.options.loadData, opts);\n\t\tif (opts.defer) {\n\t\t\tthis.loadDefer(data, opts);\n\t\t} else if (opts.lazy) {\n\t\t\tthis.loadLazy(data, opts);\n\t\t} else if (_.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 * Wait for document load before download data.\n\t */\n\tloadDefer: function(data, opts) {\n\t\topts = L.extend({}, this.options.loadData, opts);\n\t\topts.defer = false;\n\t\t_.deferFunc(L.bind(this.loadData, this, data, opts));\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.loadData(data, { lazy: false, defer: false });\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 * Alias for loadXML\n\t */\n\tloadGPX: function(data){\n\t\tthis.loadXML(data);\n\t},\n\n\t/**\n\t * Load raw XML data.\n\t */\n\tloadXML: function(data) {\n\t\tElevation._togeojsonLazyLoader = _.lazyLoader(\n\t\t\tthis.__TOGEOJSON,\n\t\t\ttypeof toGeoJSON !== 'function' || !this.options.lazyLoadJS,\n\t\t\tElevation._togeojsonLazyLoader\n\t\t).then(\n\t\t\t() => {\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\t);\n\t},\n\n\t/**\n\t * Wait for chart container visible before download data.\n\t */\n\tloadLazy: function(data, opts) {\n\t\topts = L.extend({}, this.options.loadData, opts);\n\t\tlet elem = opts.lazy.parentNode ? opts.lazy : this.placeholder;\n\t\t_.waitHolder(elem)\n\t\t\t.then(() => {\n\t\t\t\topts.lazy = false;\n\t\t\t\tthis.loadData(data, opts)\n\t\t\t\tthis.once('eledata_loaded', () => this.placeholder.parentNode.removeChild(elem));\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\n\t\tif (this.options.placeholder && !this._data.length) {\n\t\t\tthis.placeholder = _.create('img', 'elevation-placeholder', typeof this.options.placeholder === 'string' ? { src: this.options.placeholder, alt: '' } : this.options.placeholder);\n\t\t\t_.insert(container, this.placeholder, 'afterbegin');\n\t\t}\n\n\t\tElevation._d3LazyLoader = _.lazyLoader(\n\t\t\tthis.__D3,\n\t\t\ttypeof d3 !== 'object' || !this.options.lazyLoadJS,\n\t\t\tElevation._d3LazyLoader\n\t\t).then(() => {\n\t\t\tthis._initButton(container);\n\t\t\tthis._initChart(container);\n\t\t\tthis._initSummary(container);\n\t\t\tthis._initMarker(map);\n\t\t\tthis._initLayer(map);\n\n\t\t\tmap\n\t\t\t\t.on('zoom viewreset zoomanim', this._hideMarker, this)\n\t\t\t\t.on('resize', this._resetView, this)\n\t\t\t\t.on('resize', this._resizeChart, this)\n\t\t\t\t.on('rotate', this._rotateMarker, this)\n\t\t\t\t.on('mousedown', this._resetDrag, this);\n\n\t\t\t_.on(map.getContainer(), 'mousewheel', this._resetDrag, this);\n\t\t\t_.on(map.getContainer(), 'touchstart', this._resetDrag, this);\n\n\t\t\tthis\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateChart, this)\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateSummary, this);\n\n\t\t\tthis._updateChart();\n\t\t\tthis._updateSummary();\n\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._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.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/**\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.responsive) {\n\t\t\tif (opts.detached) {\n\t\t\t\tlet { offsetWidth, offsetHeight} = this.eleDiv;\n\t\t\t\tif (offsetWidth > 0) opts.width = offsetWidth;\n\t\t\t\tif (offsetHeight > 20) opts.height = offsetHeight - 20; // 20 = horizontal scrollbar size.\n\t\t\t} else {\n\t\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\t\topts._maxWidth = opts._maxWidth > opts.width ? opts._maxWidth : opts.width;\n\t\t\t\tthis._container.style.maxWidth = opts._maxWidth + 'px';\n\t\t\t\tif (opts._maxWidth > clientWidth) opts.width = clientWidth - 30;\n\t\t\t}\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//.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_registerFocusLabel: 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._registerFocusLabel(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._registerFocusLabel(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\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\tif (opts.responsive) {\n\t\t\tlet newWidth;\n\t\t\tif (opts.detached) {\n\t\t\t\tnewWidth = (this.eleDiv || this._container).offsetWidth;\n\t\t\t} else {\n\t\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\t\tnewWidth = opts._maxWidth > clientWidth ? clientWidth - 30 : opts._maxWidth;\n\t\t\t}\n\t\t\tif (newWidth) {\n\t\t\t\tlet chart = this._chart;\n\t\t\t\topts.width = newWidth;\n\t\t\t\tif (chart && chart._chart) {\n\t\t\t\t\tchart._chart._resize(opts);\n\t\t\t\t\topts.xTicks = this._xTicks();\n\t\t\t\t\topts.yTicks = this._yTicks();\n\t\t\t\t\tthis._updateChart();\n\t\t\t\t}\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\tif (\"number\" === typeof this._zFollow) {\n\t\t\tif (zoom < this._zFollow) zoom = this._zFollow;\n\t\t\tthis._map.setView(item.latlng, 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._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) return;\n\t\tthis._marker.update({\n\t\t\tmap : this._map,\n\t\t\titem : item,\n\t\t\tmaxElevation: this.track_info.elevation_max || 0,\n\t\t\toptions : this.options\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) return;\n\t\tthis._marker.update();\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\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\tElevation._geomutilLazyLoader = _.lazyLoader(\n\t\t\t\tthis.__LGEOMUTIL,\n\t\t\t\ttypeof L.GeometryUtil !== 'function' || !this.options.lazyLoadJS,\n\t\t\t\tElevation._geomutilLazyLoader\n\t\t\t).then(\n\t\t\t\t() => {\n\n\t\t\t\t\t// leaflet-almostover\n\t\t\t\t\tif (this.options.almostOver) {\n\t\t\t\t\t\tElevation._almostoverLazyLoader = _.lazyLoader(\n\t\t\t\t\t\t\tthis.__LALMOSTOVER,\n\t\t\t\t\t\t\ttypeof L.Handler.AlmostOver !== 'function' || !this.options.lazyLoadJS,\n\t\t\t\t\t\t\tElevation._almostoverLazyLoader\n\t\t\t\t\t\t).then(\n\t\t\t\t\t\t\t() => {\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\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\tElevation._distanceMarkersLazyLoader = _.lazyLoader(\n\t\t\t\t\t\t\tthis.__LDISTANCEM,\n\t\t\t\t\t\t\ttypeof L.DistanceMarkers !== 'function' || !this.options.lazyLoadJS,\n\t\t\t\t\t\t\tElevation._distanceMarkersLazyLoader\n\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\n\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 = '#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 distance = {};\n\n\tif (this.options.imperial) {\n\t\tthis._distanceFactor = this.__mileFactor;\n\t\tthis._xLabel = \"mi\";\n\t} else {\n\t\tthis._distanceFactor = opts.distanceFactor;\n\t\tthis._xLabel = 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) * this._distanceFactor;\n\n\t\tdist += Math.round(delta / 1000 * 100000) / 100000; // handles floating points calc\n\n\t\tdata[i].dist = dist;\n\n\t\ttrack.distance = 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\tdistance.x = this._chart._x;\n\t\t\tdistance.label = this._chart._xLabel;\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"x\",\n\t\t\t\tposition: \"bottom\",\n\t\t\t\tscale : distance.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._registerSummary({\n\t\t\"totlen\" : {\n\t\t\tlabel: \"Total Length: \",\n\t\t\tvalue: (track) => (track.distance || 0).toFixed(2) + ' ' + this._xLabel\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\tthis._heightFactor = this.__footFactor;\n\t\tthis._yLabel = \"ft\";\n\t} else {\n\t\tthis._heightFactor = opts.heightFactor;\n\t\tthis._yLabel = 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 * this._heightFactor;\n\n\t\tlet track = this.track_info;\n\t\tlet eleMax = track.elevation_max || -Infinity;\n\t\tlet eleMin = 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\teleMax = eleMax < z ? z : eleMax;\n\t\t\teleMin = eleMin > z ? z : eleMin;\n\t\t\tthis._lastValidZ = z;\n\t\t}\n\n\t\tdata[i].z = z;\n\n\t\ttrack.elevation_max = eleMax;\n\t\ttrack.elevation_min = eleMin;\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\taltitude.y = this._chart._y;\n\t\t\taltitude.label = this._yLabel;\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"y\",\n\t\t\t\tposition: \"left\",\n\t\t\t\tscale : altitude.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\t\t\tlet alpha = (this.options.detached ? (color.alpha || '0.8') : 1);\n\t\t\tlet stroke = (this.options.detached ? color.stroke : false);\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 : stroke || '#000',\n\t\t\t\tstrokeOpacity: \"1\",\n\t\t\t\tfillOpacity : alpha,\n\t\t\t\tpreferCanvas : this.options.preferCanvas,\n\t\t\t});\n\n\t\t});\n\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) + ' ' + this._yLabel\n\t\t},\n\t\t\"minele\" : {\n\t\t\tlabel: \"Min Elevation: \",\n\t\t\tvalue: (track) => (track.elevation_min || 0).toFixed(2) + ' ' + this._yLabel\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\tthis._timeFactor = opts.timeFactor;\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) * this._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\tdata[i].time = time;\n\t\tdata[i].duration = duration;\n\n\t\tthis.track_info.time = duration;\n\t});\n\n\tif (this.options.time) {\n\n\t\tthis._registerFocusLabel({\n\t\t\tname: 'time',\n\t\t\tchart: (item) => this.options.timeFormat(item.time)\n\t\t});\n\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\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\tif (this.options.sRange) {\n\t\t\tlet range = this.options.sRange;\n\t\t\tif (slope < range[0]) slope = range[0];\n\t\t\telse if (slope > range[1]) slope = range[1];\n\t\t}\n\n\t\tslope = L.Util.formatNum(slope, 2);\n\n\t\tif (slope > sMax) sMax = slope;\n\t\tif (slope < sMin) sMin = slope;\n\n\t\tdata[i].slope = slope;\n\n\t\ttrack.ascent = tAsc;\n\t\ttrack.descent = tDes;\n\t\ttrack.slope_max = sMax;\n\t\ttrack.slope_min = sMin;\n\t});\n\n\tthis._registerFocusLabel({\n\t\tname: 'slope',\n\t\tchart: (item) => 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) + ' ' + this._yLabel\n\t\t},\n\t\t\"descent\" : {\n\t\t\tlabel: \"Total Descent: \",\n\t\t\tvalue: (track) => Math.round(track.descent || 0) + ' ' + this._yLabel\n\t\t},\n\t\t\"minslope\": {\n\t\t\tlabel: \"Min Slope: \",\n\t\t\tvalue: (track) => Math.round(track.slope_min || 0) + ' ' + 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) + ' ' + 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._(this.options.imperial ? 'mph' : 'km/h');\n\tthis._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) * this._timeFactor) * this._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\tif (this.options.speedRange) {\n\t\t\tlet range = this.options.speedRange;\n\t\t\tif (speed < range[0]) speed = range[0];\n\t\t\telse if (speed > range[1]) speed = range[1];\n\t\t}\n\n\t\tspeed = L.Util.formatNum(speed, 2);\n\n\t\tsMax = speed > sMax ? speed : sMax;\n\t\tsMin = speed < sMin ? speed : sMin;\n\t\tsAvg = (speed + sAvg) / 2.0;\n\n\t\tdata[i].speed = speed;\n\n\t\ttrack.speed_max = sMax;\n\t\ttrack.speed_min = sMin;\n\t\ttrack.speed_avg = sAvg;\n\t});\n\n\tif (this.options.speed) {\n\n\t\tthis._registerFocusLabel({\n\t\t\tname: 'speed',\n\t\t\tchart: (item) => 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) + ' ' + 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) + ' ' + 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) + ' ' + 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._(this.options.imperial ? 'ft/s²' : 'm/s²');\n\tthis._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 / this._timeFactor);\n\t\t\tacceleration = Math.abs((delta / deltaT)) * this._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\tif (this.options.accelerationRange) {\n\t\t\tlet range = this.options.accelerationRange;\n\t\t\tif (acceleration < range[0]) acceleration = range[0];\n\t\t\telse if (acceleration > range[1]) acceleration = range[1];\n\t\t}\n\n\t\tacceleration = L.Util.formatNum(acceleration, 2);\n\n\t\tif (acceleration > sMax) sMax = acceleration;\n\t\tif (acceleration < sMin) sMin = acceleration;\n\t\tsAvg = (acceleration + sAvg) / 2.0;\n\n\t\tdata[i].acceleration = acceleration;\n\n\t\ttrack.acceleration_max = sMax;\n\t\ttrack.acceleration_min = sMin;\n\t\ttrack.acceleration_avg = sAvg;\n\t});\n\n\tthis._registerFocusLabel({\n\t\tname : 'acceleration',\n\t\tchart : (item) => 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) + ' ' + 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) + ' ' + 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) + ' ' + 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 './distance';\nimport './altitude';\nimport './time';\nimport './slope';\nimport './speed';\nimport './acceleration';\n\nElevation.Utils = _;\nElevation.Components = D3;\nElevation.Chart = Chart;\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","deferFunc","f","document","readyState","addEventListener","once","debounce","func","wait","context","immediate","timeout","args","arguments","clearTimeout","setTimeout","apply","SEC","MIN","HOUR","DAY","formatTime","t","d","Math","floor","h","m","s","round","toString","padStart","GeoJSONLoader","control","JSON","parse","distanceMarkers","options","lazy","wptIcons","gpxOptions","marker_options","layer","geoJson","style","feature","polyline","theme","className","pointToLayer","latlng","waypoints","prop","properties","desc","name","sym","replace","toLowerCase","divIcon","html","iconSize","iconAnchor","marker","icon","bindPopup","openPopup","_registerCheckPoint","label","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","isDomVisible","elem","offsetWidth","offsetHeight","getClientRects","item","Array","isArray","isVisible","styles","getComputedStyle","isVisibleByStyles","visibility","display","isAboveOtherElements","boundingRect","getBoundingClientRect","left","right","top","bottom","above","pointerEvents","elementFromPoint","isJSONDoc","doc","trim","indexOf","console","warn","isXMLDoc","documentElement","ownerDocument","nodeName","lazyLoader","url","skip","loader","Promise","resolve","reject","tag","createElement","src","head","appendChild","saveFile","dataURI","fileName","a","create","href","download","b","body","click","removeChild","waitHolder","ticking","scrollFn","requestAnimFrame","removeEventListener","addClass","targetNode","split","every","DomUtil","removeClass","toggleClass","conditional","call","replaceClass","removeClassName","addClassName","value","getStyle","setProperty","toggleStyle","toggleEvent","leafletElement","eventName","handler","tagName","attributes","parent","setAttributes","append","child","insert","position","insertAdjacentElement","attrs","k","setAttribute","select","selector","querySelector","DomEvent","off","hasClass","randomId","random","substr","each","obj","fn","Colors","area","alpha","stroke","line","Area","width","height","xAttr","yAttr","scaleX","scaleY","interpolation","d3","curve","x","xDiagCoord","y0","y1","Path","color","strokeColor","strokeOpacity","fillOpacity","classed","attr","Axis","tickSize","tickPadding","axis","scale","ticks","tickFormat","labelX","labelY","onAxisMount","g","w","axisScale","l","toUpperCase","axisGroup","join","text","Grid","props","HeightFocusLine","xCoord","yCoord","HeightFocusLabel","y","node","selectAll","HeightFocusMarker","circle","LegendItem","margins","svg","ownerSVGElement","dispatch","detail","legend","enabled","MouseFocusLine","MouseFocusLabel","rect","xAlign","yAlign","bbox","getBBox","max","Browser","webkit","Infinity","Ruler","symbol","symbolTriangle","exit","remove","enter","merge","size","angle","Domain","min","forceBounds","domain","extent","Range","Scale","range","scaleLinear","Bisect","bisector","invert","Chart","ruler","_width","_height","panes","grid","brush","tooltip","clipPath","clipRect","foreignObject","canvas","getContext","dragG","focusG","brushG","brushX","opts","utils","chart","_resize","pane","get","Class","includes","Evented","prototype","Mixin","Events","initialize","_data","_props","scales","paths","areas","grids","axes","legendItems","focusLabels","_scales","_domains","_ranges","_paths","_brushEnabled","dragging","_zoomEnabled","zooming","imperial","_xLabel","_yLabel","xLabel","yLabel","_chart","D3","_container","_grid","_area","_point","_axis","_legend","_initScale","_clipPath","_canvas","_context","_dragG","_focusG","_brush","_focusline","_focuslabel","_zoom","zoom","_drag","drag","_initInteractions","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","render","container","clear","_resetDrag","clearRect","_path","_drawPath","ctx","datum","preferCanvas","beginPath","moveTo","p","Path2D","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","fill","closePath","_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","_hideDiagramIndicator","scaleExtent","translateExtent","buttons","_initRuler","_initLegend","formatNum","format","yMax","z","_y","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_findIndexForLatLng","dist","isNaN","property","pos","y2","x2","_registerFocusLabel","gridOpts","axesOpts","n","substring","legends","items","nodes","v","map","sign","rev","slice","reverse","push","concat","xAxesB","marginB","marginR","tx","ty","r","list","reduce","array","index","next","curr","result","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","xCoordinate","yCoordinate","decimalsX","decimalsY","labels","Marker","_focusmarker","_marker","markerIcon","zIndexOffset","interactive","_focuslabels","addTo","_map","getPane","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","normalizedAlt","maxElevation","normalizedY","getElement","setLatLng","getLatLng","Summary","summary","reset","innerHTML","_registerSummary","Options","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","distanceFactor","downloadLink","elevationDiv","followMarker","async","startIconUrl","endIconUrl","shadowUrl","heightFactor","lazyLoadJS","loadData","defer","placeholder","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","responsive","slope","speed","sLimit","undefined","timeFactor","timeFormat","sDeltaMax","sInterpolation","sRange","zFollow","Mobile","__mileFactor","__footFactor","__D3","__TOGEOJSON","__LGEOMUTIL","__LALMOSTOVER","__LDISTANCEM","_addData","_addLayer","eleDiv","_initElevationDiv","isConnected","getContainer","onAdd","_layers","clearLayers","disableBrush","enableBrush","enableDragging","enableBrushing","disableDragging","disableBrushing","disableZoom","enableZoom","fitBounds","bounds","getBounds","isValid","latLngBounds","getZFollow","_zFollow","hide","featureGroup","_markedSegments","_chartEnabled","_setMapView","throttle","setStyle","colors","load","loadChart","loadDefer","loadLazy","loadXML","loadGeoJSON","loadFile","fetch","response","_downloadURL","catch","loadGPX","_togeojsonLazyLoader","toGeoJSON","xml","DOMParser","parseFromString","geojson","getElementsByTagName","pop","parentNode","_initButton","_initChart","_initSummary","_initMarker","_initLayer","_hideMarker","_resetView","_resizeChart","_rotateMarker","_updateChart","_updateSummary","onRemove","redraw","setZFollow","show","geom","_addGeoJSONData","coordinates","features","_addGPXData","_addPoint","lat","lng","latLng","addLayer","id","_collapse","_expand","_findItemForLatLng","_findItemForX","propagate","_xTicks","_yTicks","clientWidth","_maxWidth","maxWidth","_dragendHandler","_mousemoveHandler","_mouseoutHandler","_rulerFilterHandler","_toggleChartHandler","_mousemoveLayerHandler","_pane","createPane","zIndex","_renderer","disableClickPropagation","stopPropagation","_mousewheelHandler","link","_button","title","stop","_toggle","_summary","summaryDiv","_updateMarker","gestureHandling","_enabled","ll","getCenter","getZoom","deltaY","flyTo","_isFullscreen","newWidth","_updateMapSegments","setView","animate","duration","contains","eachLayer","elevation_max","setLatLngs","hasLayer","onclick","preventDefault","confirm","__xTicks","__yTicks","addInitHook","_popup","_content","decodeURI","bindTooltip","direction","sticky","openTooltip","CustomEvent","dispatchEvent","_geomutilLazyLoader","GeometryUtil","almostOver","_almostoverLazyLoader","Handler","AlmostOver","addHandler","_distanceMarkersLazyLoader","oldProto","Canvas","_fillStroke","include","oldVal","_distanceFactor","track","prev","delta","toFixed","_heightFactor","eleMax","eleMin","elevation_min","prevZ","lastZ","_lastValidZ","currZ","splice","timeLabel","_timeFactor","_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","_speedFactor","speed_max","speed_min","sAvg","speed_avg","speedDeltaMax","speedRange","accelerationLabel","_accelerationFactor","accelerationFactor","acceleration_max","acceleration_min","acceleration_avg","accelerationDeltaMax","deltaA","accelerationRange","Utils","Components","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/distance.js","../src/altitude.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\n/**\n * Wait for document load before execute function.\n */\nexport function deferFunc(f) {\n\tif (document.readyState !== 'complete') window.addEventListener(\"load\", f, { once: true });\n\telse f();\n}\n/**\n * Debounce function to limit events are being fired.\n */\nexport function debounce(func, wait, context, immediate) {\n\tvar timeout;\n\treturn function() {\n\t\tvar args = arguments;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\tif (!immediate) func.apply(context, args);\n\t\t}, wait);\n\t\tif (immediate && !timeout) func.apply(context, args);\n\t};\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 let 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 let wptIcons = control.options.wptIcons;\n let wptLabels = control.options.wptLabels;\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 // Handle waypoint lables (markers and dots)\n if (!wptLabels) {\n name = '';\n desc = '';\n }\n\n // Handle chart waypoints (dots)\n if ([true, \"dots\"].includes(control.options.waypoints)) {\n control._registerCheckPoint({latlng: latlng, label: name}, true);\n }\n\n // Handle map waypoints (markers)\n if ([true, \"markers\"].includes(control.options.waypoints) && wptIcons != false) {\n // generate and cache appropriate icon symbol\n if (!wptIcons.hasOwnProperty(sym)) {\n wptIcons[sym] = L.divIcon(\n L.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } )\n );\n }\n \t\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\n \t\t\tif (name || desc) {\n \t\t\t\tmarker.bindPopup(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : '')).openPopup();\n \t\t\t}\n control._addMarker(marker);\n \t\t\tcontrol.fire('waypoint_added', { point: marker, element: latlng, properties: prop });\n return marker;\n }\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 layer.on('add remove', (e) => {\n\t\t\t let path = e.target;\n\t\t\t if (L.DistanceMarkers && path instanceof L.Polyline) {\n\t\t\t\t\t\tpath[e.type + 'DistanceMarkers']();\n\t\t\t }\n\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 DOM element visibility.\n */\nexport function isDomVisible(elem) {\n\treturn !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\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 DOM element viewport visibility.\n */\nexport function isVisible(elem) {\n\tif (!elem) return false;\n\n\tlet styles = window.getComputedStyle(elem);\n\n\tfunction isVisibleByStyles(elem, styles) {\n\t\treturn styles.visibility !== 'hidden' && styles.display !== 'none';\n\t}\n\n\tfunction isAboveOtherElements(elem, styles) {\n\t\tlet boundingRect = elem.getBoundingClientRect();\n\t\tlet left = boundingRect.left + 1;\n\t\tlet right = boundingRect.right - 1;\n\t\tlet top = boundingRect.top + 1;\n\t\tlet bottom = boundingRect.bottom - 1;\n\t\tlet above = true;\n\n\t\tlet pointerEvents = elem.style.pointerEvents;\n\n\t\tif (styles['pointer-events'] == 'none') elem.style.pointerEvents = 'auto';\n\n\t\tif (document.elementFromPoint(left, top) !== elem) above = false;\n\t\tif (document.elementFromPoint(right, top) !== elem) above = false;\n\n\t\t// Only for completely visible elements\n\t\t// if (document.elementFromPoint(left, bottom) !== elem) above = false;\n\t\t// if (document.elementFromPoint(right, bottom) !== elem) above = false;\n\n\t\telem.style.pointerEvents = pointerEvents;\n\n\t\treturn above;\n\t}\n\n\tif (!isVisibleByStyles(elem, styles)) return false;\n\tif (!isAboveOtherElements(elem, styles)) return false;\n\treturn true;\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 * Async JS script download.\n */\nexport function lazyLoader(url, skip, loader) {\n\tif (skip === false) {\n\t\treturn Promise.resolve();\n\t}\n\tif (loader instanceof Promise) {\n\t\treturn loader;\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tlet tag = document.createElement(\"script\");\n\t\ttag.addEventListener('load', resolve, { once: true });\n\t\ttag.src = url;\n\t\tdocument.head.appendChild(tag);\n\t});\n}\n\n/**\n * Generate download data event.\n */\nexport 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 * Wait for element visible before execute function.\n */\nexport function waitHolder(elem) {\n\treturn new Promise((resolve, reject) => {\n\t\tlet ticking = false;\n\t\tlet scrollFn = () => {\n\t\t\tif (!ticking) {\n\t\t\t\tL.Util.requestAnimFrame(() => {\n\t\t\t\t\tif (isVisible(elem)) {\n\t\t\t\t\t\twindow.removeEventListener('scroll', scrollFn);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t\tticking = false;\n\t\t\t\t});\n\t\t\t\tticking = true;\n\t\t\t}\n\t\t};\n\t\twindow.addEventListener('scroll', scrollFn);\n\t\tif (elem) elem.addEventListener('mouseenter', scrollFn, { once: true });\n\t\tscrollFn();\n\t});\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 if (removeClassName) removeClass(targetNode, removeClassName);\n if (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 return 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\nexport function randomId() {\n\treturn Math.random().toString(36).substr(2, 9);\n}\n\nexport function each(obj, fn) {\n\tfor (let i in obj) fn(obj[i], i);\n}\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 HeightFocusLine = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n\tlength = 0,\n}) => {\n\treturn line => line\n\t\t.attr(\"class\", theme + \" height-focus line\")\n\t\t.attr(\"x1\", xCoord)\n\t\t.attr(\"x2\", xCoord)\n\t\t.attr(\"y1\", yCoord)\n\t\t.attr(\"y2\", length);\n};\n\nexport const HeightFocusLabel = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n\tlabel,\n}) => {\n\treturn text => {\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\", yCoord);\n\n\t\tlet y = text.select(\".height-focus-y\");\n\t\tif (!y.node()) y = text.append(\"svg:tspan\");\n\n\t\ty\n\t\t\t.attr(\"class\", \"height-focus-y\")\n\t\t\t.text(label);\n\n\t\ttext.selectAll('tspan').attr(\"x\", xCoord + 5);\n\n\t\treturn text;\n\t};\n};\n\nexport const HeightFocusMarker = ({\n\ttheme,\n\txCoord = 0,\n\tyCoord = 0,\n}) => {\n\treturn circle => circle\n\t\t.attr(\"class\", theme + \" height-focus circle-lower\")\n\t\t.attr(\"transform\", \"translate(\" + xCoord + \",\" + yCoord + \")\")\n\t\t.attr(\"r\", 6)\n\t\t.attr(\"cx\", 0)\n\t\t.attr(\"cy\", 0);\n};\n\nexport const LegendItem = ({\n\tname,\n label,\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\tconst svg = d3.select(g.node().ownerSVGElement || g);\n\n\t\tg.on('click.legend', () => svg.dispatch(\"legend_clicked\", {\n\t\t\tdetail: {\n\t\t\t\tpath: path.node(),\n\t\t\t\tname: name,\n\t\t\t\tlegend: g.node(),\n\t\t\t\tenabled: !path.classed('leaflet-hidden'),\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 MouseFocusLine = ({\n\txCoord = 0,\n\theight,\n}) => {\n\treturn line => line\n\t\t.attr('class', 'mouse-focus-line')\n\t\t.attr('x2', xCoord)\n\t\t.attr('y2', 0)\n\t\t.attr('x1', xCoord)\n\t\t.attr('y1', height);\n};\n\nexport const MouseFocusLabel = ({\n\txCoord,\n\tyCoord,\n\tlabelX = \"\",\n\tlabelY = \"\",\n\twidth,\n}) => {\n\treturn g => {\n\n\t\tg.attr('class', 'mouse-focus-label');\n\n\t\tlet rect = g.select(\".mouse-focus-label-rect\");\n\t\tlet text = g.select(\".mouse-focus-label-text\");\n\t\tlet y = text.select(\".mouse-focus-label-y\");\n\t\tlet x = text.select(\".mouse-focus-label-x\");\n\n\t\tif (!rect.node()) rect = g.append(\"svg:rect\");\n\t\tif (!text.node()) text = g.append(\"svg:text\");\n\t\tif (!y.node()) y = text.append(\"svg:tspan\");\n\t\tif (!x.node()) x = text.append(\"svg:tspan\");\n\n\t\ty.text(labelY);\n\t\tx.text(labelX);\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\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\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\t\ty\n\t\t\t.attr(\"class\", \"mouse-focus-label-y\")\n\t\t\t.attr(\"dy\", \"1em\");\n\t\tx\n\t\t\t.attr(\"class\", \"mouse-focus-label-x\")\n\t\t\t.attr(\"dy\", \"2em\");\n\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 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// Mouse Focus\n\tconst dragG = panes.ruler;\n\tconst focusG = panes.tooltip;\n\tconst brushG = panes.brush;\n\n\tfocusG.append('svg:line')\n\t\t.call(\n\t\t\tMouseFocusLine({\n\t\t\t\txCoord: 0,\n\t\t\t\theight: _height\n\t\t\t})\n\t\t);\n\n\tfocusG.append(\"g\")\n\t\t.call(\n\t\t\tMouseFocusLabel({\n\t\t\t\txCoord: 0,\n\t\t\t\tyCoord: 0,\n\t\t\t\theight: _height,\n\t\t\t\twidth : _width,\n\t\t\t\tlabelX: \"\",\n\t\t\t\tlabelY: \"\",\n\t\t\t})\n\t\t);\n\n\n\t// Add the brushing\n\tlet brush = d3.brushX().on('start.cursor end.cursor brush.cursor', () => brushG.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\tdragG,\n\t\tfocusG,\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\tdragG .call(Ruler({ height: _height, width: _width }));\n\t\t}\n\n\t\tbrushG.call(brush.extent( [ [0,0], [_width, _height] ] ));\n\t\tbrushG.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\tfocusLabels: {},\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\tif (opts.imperial) {\n\t\t\tthis._xLabel = \"mi\";\n\t\t\tthis._yLabel = \"ft\";\n\t\t} else {\n\t\t\tthis._xLabel = opts.xLabel;\n\t\t\tthis._yLabel = opts.yLabel;\n\t\t}\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\n\t\t// Scales\n\t\tthis._initScale();\n\n\t\t// Helpers\n\t\tthis._clipPath = chart.get('clipPath');\n\t\tthis._canvas = chart.get('canvas');\n\t\tthis._context = chart.get('context');\n\t\tthis._dragG = chart.get('dragG');\n\t\tthis._focusG = chart.get('focusG');\n\t\tthis._brush = chart.get('brush');\n\n\t\t// Tooltip\n\t\tthis._focusline = this._focusG.select('.mouse-focus-line');\n\t\tthis._focuslabel = this._focusG.select('.mouse-focus-label');\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\tif (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 opts = this.options;\n\t\tlet ctx = this._context;\n\n\t\tlet path = this._paths[name];\n\t\tlet area = this._props.areas[name];\n\t\tlet node = path.node();\n\t\tlet scaleX = this._scales[area.scaleX];\n\t\tlet scaleY = this._scales[area.scaleY];\n\n\t\tarea = L.extend({}, area, {\n\t\t\twidth : this._width(),\n\t\t\theight : this._height(),\n\t\t\tscaleX : scaleX,\n\t\t\tscaleY : scaleY\n\t\t});\n\n\t\tif (!scaleY || !scaleY) {\n\t\t\treturn console.warn('Unable to render path:' + name);\n\t\t}\n\n\t\tpath.datum(this._data).attr(\"d\", D3.Area(area));\n\n\t\tif (path.classed('leaflet-hidden')) return;\n\n\t\tif (opts.preferCanvas) {\n\t\t\tpath.classed('canvas-path', true);\n\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(0, 0);\n\t\t\tlet p = new Path2D(path.attr('d'));\n\n\t\t\tctx.strokeStyle = path.attr('stroke');\n\t\t\tctx.fillStyle = path.attr('fill');\n\t\t\tctx.lineWidth = 1.25;\n\t\t\tctx.globalCompositeOperation = 'source-over';\n\n\t\t\t// stroke opacity\n\t\t\tctx.globalAlpha = path.attr('stroke-opacity') || 0.3;\n\t\t\tctx.stroke(p);\n\n\t\t\t// fill opacity\n\t\t\tctx.globalAlpha = path.attr('fill-opacity') || 0.45;\n\t\t\tctx.fill(p);\n\n\t\t\tctx.globalAlpha = 1;\n\n\t\t\tctx.closePath();\n\t\t} else {\n\t\t\tthis._area.append(() => 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._dragG.data()[0].y;\n\t\t\tif (y >= yMax || y <= 0) this._dragG.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._dragG.data()[0], { y: y });\n\n\t\t\tthis._dragG\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._yLabel);\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._dragG.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 waypoint 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} else\n\n\t\tif (isNaN(x) || isNaN(y)) return;\n\n\t\tif (!point.item || !point.item.property('isConnected')) {\n\t\t\tpoint.position = point.position || \"bottom\";\n\n\t\t\tpoint.item = this._point.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': this._height() - y})[point.position],\n\t\t\t\tx2: ({'left': -x, 'right': this._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},\n\n\t_registerFocusLabel: function(props) {\n\t\tthis._props.focusLabels[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\tlet opts = this.options;\n\n\t\tlet scales = this._scales;\n\t\tlet d = this._domains;\n\t\tlet r = this._ranges;\n\n\t\tfor (let i in scales) {\n\t\t\tscales[i]\n\t\t\t.domain(d[i](this._data))\n\t\t\t.range(r[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\tlet opts = this.options;\n\t\tlet yCoordinate = this._y(item[opts.yAttr]);\n\n\t\tthis._focusG.attr(\"display\", null);\n\n\t\tthis._focusline.call(\n\t\t\tD3.MouseFocusLine({\n\t\t\t\txCoord: xCoordinate,\n\t\t\t\theight: this._height()\n\t\t\t})\n\t\t);\n\t\tthis._focuslabel.call(\n\t\t\tD3.MouseFocusLabel({\n\t\t\t\txCoord: xCoordinate,\n\t\t\t\tyCoord: yCoordinate,\n\t\t\t\theight: this._height(),\n\t\t\t\twidth : this._width(),\n\t\t\t\tlabelX: d3.format(\".\"+ opts.decimalsX +\"f\")(item[opts.xAttr]) + \" \" + this._xLabel,\n\t\t\t\tlabelY: d3.format(\".\"+ opts.decimalsY +\"f\")(item[opts.yAttr]) + \" \" + this._yLabel\n\t\t\t})\n\t\t);\n\n\t\t// this._focuslabel.selectAll('tspan').data(Object.values(this._focuslabels));\n\n\t\tlet labels = this._props.focusLabels;\n\t\tlet tooltip = this._focuslabel.select('text');\n\t\tlet label;\n\n\t\tfor (var i in labels) {\n\t\t\tlabel = tooltip.select(\".mouse-focus-label-\" + labels[i].name);\n\n\t\t\tif (!label.size()) {\n\t\t\t\tlabel = tooltip.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\n\t\t\tthis._focuslabel.select('.mouse-focus-label-x')\n\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t}\n\n\t},\n\n\t_hideDiagramIndicator: function() {\n\t\tthis._focusG.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\tif (this.options.imperial) {\n\t\t\tthis._xLabel = \"mi\";\n\t\t\tthis._yLabel = \"ft\";\n\t\t} else {\n\t\t\tthis._xLabel = this.options.xLabel;\n\t\t\tthis._yLabel = this.options.yLabel;\n\t\t}\n\n\t\tif (this.options.marker == 'elevation-line') {\n\t\t\t// this._container = d3.create(\"g\").attr(\"class\", \"height-focus-group\");\n\t\t\tthis._focusline = d3.create('svg:line');\n\t\t\tthis._focusmarker = d3.create(\"svg:circle\");\n\t\t\tthis._focuslabel = d3.create(\"svg:text\");\n\t\t} else if (this.options.marker == 'position-marker') {\n\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\tthis._marker = L.marker([0, 0], { icon: this.options.markerIcon, zIndexOffset: 1000000, interactive: false });\n\t\t}\n\n\t\tthis._focuslabels = {};\n\n\t\treturn this;\n\t},\n\n\taddTo: function(map) {\n\t\tthis._map = map;\n\t\tif (this.options.marker == 'elevation-line') {\n\t\t\tlet g = this._container = d3.select(map.getPane('elevationPane')).select(\"svg > g\")\n\t\t\t\t.attr(\"class\", \"height-focus-group\");\n\t\t\tg.append(() => this._focusline.node());\n\t\t\tg.append(() => this._focusmarker.node());\n\t\t\tg.append(() => this._focuslabel.node());\n\t\t} else if (this.options.marker == 'position-marker') {\n\t\t\tthis._marker.addTo(map, { pane: 'overlayPane' });\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\tlet opts = this.options;\n\t\tlet map = this._map;\n\n\t\tthis._latlng = props.item.latlng;\n\n\t\tlet pos = map.latLngToLayerPoint(this._latlng);\n\n\t\tif (map._rotate) {\n\t\t\tpos = map.rotatedPointToMapPanePoint(pos);\n\t\t}\n\n\t\tlet point = L.extend({}, props.item, pos);\n\n\t\tif (this.options.marker == 'elevation-line') {\n\n\t\t\tlet normalizedAlt = this._height() / props.maxElevation * point.z;\n\t\t\tlet normalizedY = point.y - normalizedAlt;\n\n\t\t\tthis._container.classed(\"leaflet-hidden\", false);\n\n\t\t\tthis._focusmarker\n\t\t\t\t.call(\n\t\t\t\t\tD3.HeightFocusMarker({\n\t\t\t\t\t\ttheme : opts.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: point.y,\n\t\t\t\t\t}));\n\n\t\t\tthis._focusline\n\t\t\t\t.call(\n\t\t\t\t\tD3.HeightFocusLine({\n\t\t\t\t\t\ttheme : opts.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: point.y,\n\t\t\t\t\t\tlength: normalizedY\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\tthis._focuslabel\n\t\t\t\t.call(\n\t\t\t\t\tD3.HeightFocusLabel({\n\t\t\t\t\t\ttheme : opts.theme,\n\t\t\t\t\t\txCoord: point.x,\n\t\t\t\t\t\tyCoord: normalizedY,\n\t\t\t\t\t\tlabel : d3.format(\".\" + opts.decimalsY + \"f\")(point[opts.yAttr]) + \" \" + this._yLabel\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\tlet labels = this._focuslabels;\n\t\t\tlet tooltip = this._focuslabel;\n\t\t\tlet label;\n\n\t\t\tfor (var i in labels) {\n\t\t\t\tlabel = tooltip.select(\".height-focus-\" + labels[i].name);\n\n\t\t\t\tif (!label.size()) {\n\t\t\t\t\tlabel = tooltip.append(\"svg:tspan\")\n\t\t\t\t\t\t.attr(\"class\", \"height-focus-\" + labels[i].name)\n\t\t\t\t\t\t.attr(\"dy\", \"1.5em\");\n\t\t\t\t}\n\n\t\t\t\tlabel.text(typeof labels[i].value !== \"function\" ? labels[i].value : labels[i].value(props.item) );\n\n\t\t\t\tthis._focuslabel.select('.height-focus-y')\n\t\t\t\t\t.attr(\"dy\", \"-1.5em\");\n\t\t\t}\n\n\t\t} else if (this.options.marker == 'position-marker') {\n\t\t\t_.removeClass(this._marker.getElement(), 'leaflet-hidden');\n\t\t\tthis._marker.setLatLng(this._latlng);\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\tif (this.options.marker == 'elevation-line') {\n\t\t\tif (this._container) this._container.classed(\"leaflet-hidden\", true);\n\t\t} else if (this.options.marker == 'position-marker') {\n\t\t\t_.addClass(this._marker.getElement(), 'leaflet-hidden');\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_registerFocusLabel: function(props) {\n\t\tthis._focuslabels[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\tdistanceFactor: 1,\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\theightFactor: 1,\n\timperial: false,\n\tinterpolation: \"curveLinear\",\n\tlazyLoadJS: true,\n\tlegend: true,\n\tloadData: {\n\t\tdefer: false,\n\t\tlazy: false,\n\t},\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\tplaceholder: false,\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\tresponsive: true,\n\tsummary: 'inline',\n\tslope: false,\n\tspeed: false,\n\tsLimit: undefined,\n\ttime: false,\n\ttimeFactor: 3600,\n\ttimeFormat: 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.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\tif (typeof layer === \"undefined\" && d.on) {\n\t\t\tlayer = d;\n\t\t}\n\t\tElevation._d3LazyLoader = _.lazyLoader(\n\t\t\tthis.__D3,\n\t\t\ttypeof d3 !== 'object' || !this.options.lazyLoadJS,\n\t\t\tElevation._d3LazyLoader\n\t\t).then(() => {\n\t\t\tthis._addData(d);\n\t\t\tthis._addLayer(layer);\n\t\t\tthis._fireEvt(\"eledata_added\", { data: d, layer: layer, track_info: this.track_info });\n\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 * Alias for enableBrush\n\t */\n\tenableDragging: function() {\n\t\tthis.enableBrushing();\n\t},\n\n\t/**\n\t * Alias for disableBrush\n\t */\n\tdisableDragging: function() {\n\t\tthis.disableBrushing();\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._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\n\t\tthis.track_info = {};\n\n\t\tthis.options = _.deepMerge({}, this.options, options);\n\n\t\tthis._zFollow = this.options.zFollow;\n\n\t\tif (this.options.followMarker) this._setMapView = L.Util.throttle(this._setMapView, 300, this);\n\t\tif (this.options.placeholder) this.options.loadData.lazy = this.options.loadData.defer = true;\n\n\t\tif (this.options.legend) this.options.margins.bottom += 30;\n\n\t\tif (this.options.theme) this.options.polylineSegments.className += ' ' + this.options.theme;\n\n\t\tthis._markedSegments.setStyle(this.options.polylineSegments);\n\n\t\t// this._resizeChart = _.debounce(this._resizeChart, 300, this);\n\t\t// this._resizeChart = L.Util.throttle(this._resizeChart, 300, this);\n\n\t\t// if (L.Browser.mobile) {\n\t\t// \tthis._updateChart = _.debounce(this._updateChart, 300, this);\n\t\t// \tthis._updateSummary = _.debounce(this._updateSummary, 300, this);\n\t\t// }\n\n\t\tif (this.options.wptIcons === true) this.options.wptIcons = Options.wptIcons;\n\n\t\t// Leaflet canvas renderer colors\n\t\tL.extend(D3.Colors, this.options.colors || {});\n\t},\n\n\t/**\n\t * Alias for loadData\n\t */\n\tload: function(data, opts) {\n\t\tthis.loadData(data, opts);\n\t},\n\n\t/**\n\t * Alias for addTo\n\t */\n\tloadChart: function(map) {\n\t\tthis.addTo(map);\n\t},\n\n\t/**\n\t * Load elevation data (GPX, GeoJSON or KML).\n\t */\n\tloadData: function(data, opts) {\n\t\topts = L.extend({}, this.options.loadData, opts);\n\t\tif (opts.defer) {\n\t\t\tthis.loadDefer(data, opts);\n\t\t} else if (opts.lazy) {\n\t\t\tthis.loadLazy(data, opts);\n\t\t} else if (_.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 * Wait for document load before download data.\n\t */\n\tloadDefer: function(data, opts) {\n\t\topts = L.extend({}, this.options.loadData, opts);\n\t\topts.defer = false;\n\t\t_.deferFunc(L.bind(this.loadData, this, data, opts));\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.loadData(data, { lazy: false, defer: false });\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 * Alias for loadXML\n\t */\n\tloadGPX: function(data){\n\t\tthis.loadXML(data);\n\t},\n\n\t/**\n\t * Load raw XML data.\n\t */\n\tloadXML: function(data) {\n\t\tElevation._togeojsonLazyLoader = _.lazyLoader(\n\t\t\tthis.__TOGEOJSON,\n\t\t\ttypeof toGeoJSON !== 'function' || !this.options.lazyLoadJS,\n\t\t\tElevation._togeojsonLazyLoader\n\t\t).then(\n\t\t\t() => {\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\t);\n\t},\n\n\t/**\n\t * Wait for chart container visible before download data.\n\t */\n\tloadLazy: function(data, opts) {\n\t\topts = L.extend({}, this.options.loadData, opts);\n\t\tlet elem = opts.lazy.parentNode ? opts.lazy : this.placeholder;\n\t\t_.waitHolder(elem)\n\t\t\t.then(() => {\n\t\t\t\topts.lazy = false;\n\t\t\t\tthis.loadData(data, opts)\n\t\t\t\tthis.once('eledata_loaded', () => this.placeholder.parentNode.removeChild(elem));\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\n\t\tif (this.options.placeholder && !this._data.length) {\n\t\t\tthis.placeholder = _.create('img', 'elevation-placeholder', typeof this.options.placeholder === 'string' ? { src: this.options.placeholder, alt: '' } : this.options.placeholder);\n\t\t\t_.insert(container, this.placeholder, 'afterbegin');\n\t\t}\n\n\t\tElevation._d3LazyLoader = _.lazyLoader(\n\t\t\tthis.__D3,\n\t\t\ttypeof d3 !== 'object' || !this.options.lazyLoadJS,\n\t\t\tElevation._d3LazyLoader\n\t\t).then(() => {\n\t\t\tthis._initButton(container);\n\t\t\tthis._initChart(container);\n\t\t\tthis._initSummary(container);\n\t\t\tthis._initMarker(map);\n\t\t\tthis._initLayer(map);\n\n\t\t\tmap\n\t\t\t\t.on('zoom viewreset zoomanim', this._hideMarker, this)\n\t\t\t\t.on('resize', this._resetView, this)\n\t\t\t\t.on('resize', this._resizeChart, this)\n\t\t\t\t.on('rotate', this._rotateMarker, this)\n\t\t\t\t.on('mousedown', this._resetDrag, this);\n\n\t\t\t_.on(map.getContainer(), 'mousewheel', this._resetDrag, this);\n\t\t\t_.on(map.getContainer(), 'touchstart', this._resetDrag, this);\n\n\t\t\tthis\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateChart, this)\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateSummary, this);\n\n\t\t\tthis._updateChart();\n\t\t\tthis._updateSummary();\n\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._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, typeof point.alt !== \"undefined\" ? 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.responsive) {\n\t\t\tif (opts.detached) {\n\t\t\t\tlet { offsetWidth, offsetHeight} = this.eleDiv;\n\t\t\t\tif (offsetWidth > 0) opts.width = offsetWidth;\n\t\t\t\tif (offsetHeight > 20) opts.height = offsetHeight - 20; // 20 = horizontal scrollbar size.\n\t\t\t} else {\n\t\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\t\topts._maxWidth = opts._maxWidth > opts.width ? opts._maxWidth : opts.width;\n\t\t\t\tthis._container.style.maxWidth = opts._maxWidth + 'px';\n\t\t\t\tif (opts._maxWidth > clientWidth) opts.width = clientWidth - 30;\n\t\t\t}\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//.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_registerFocusLabel: 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._registerFocusLabel(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._registerFocusLabel(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\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\tif (opts.responsive) {\n\t\t\tlet newWidth;\n\t\t\tif (opts.detached) {\n\t\t\t\tnewWidth = (this.eleDiv || this._container).offsetWidth;\n\t\t\t} else {\n\t\t\t\tlet { clientWidth } = this._map.getContainer();\n\t\t\t\tnewWidth = opts._maxWidth > clientWidth ? clientWidth - 30 : opts._maxWidth;\n\t\t\t}\n\t\t\tif (newWidth) {\n\t\t\t\tlet chart = this._chart;\n\t\t\t\topts.width = newWidth;\n\t\t\t\tif (chart && chart._chart) {\n\t\t\t\t\tchart._chart._resize(opts);\n\t\t\t\t\topts.xTicks = this._xTicks();\n\t\t\t\t\topts.yTicks = this._yTicks();\n\t\t\t\t\tthis._updateChart();\n\t\t\t\t}\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\tif (\"number\" === typeof this._zFollow) {\n\t\t\tif (zoom < this._zFollow) zoom = this._zFollow;\n\t\t\tthis._map.setView(item.latlng, 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._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) return;\n\t\tthis._marker.update({\n\t\t\tmap : this._map,\n\t\t\titem : item,\n\t\t\tmaxElevation: this.track_info.elevation_max || 0,\n\t\t\toptions : this.options\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) return;\n\t\tthis._marker.update();\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\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\tElevation._geomutilLazyLoader = _.lazyLoader(\n\t\t\t\tthis.__LGEOMUTIL,\n\t\t\t\ttypeof L.GeometryUtil !== 'function' || !this.options.lazyLoadJS,\n\t\t\t\tElevation._geomutilLazyLoader\n\t\t\t).then(\n\t\t\t\t() => {\n\n\t\t\t\t\t// leaflet-almostover\n\t\t\t\t\tif (this.options.almostOver) {\n\t\t\t\t\t\tElevation._almostoverLazyLoader = _.lazyLoader(\n\t\t\t\t\t\t\tthis.__LALMOSTOVER,\n\t\t\t\t\t\t\ttypeof L.Handler.AlmostOver !== 'function' || !this.options.lazyLoadJS,\n\t\t\t\t\t\t\tElevation._almostoverLazyLoader\n\t\t\t\t\t\t).then(\n\t\t\t\t\t\t\t() => {\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\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\tElevation._distanceMarkersLazyLoader = _.lazyLoader(\n\t\t\t\t\t\t\tthis.__LDISTANCEM,\n\t\t\t\t\t\t\ttypeof L.DistanceMarkers !== 'function' || !this.options.lazyLoadJS,\n\t\t\t\t\t\t\tElevation._distanceMarkersLazyLoader\n\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\n\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 = '#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 distance = {};\n\n\tif (this.options.imperial) {\n\t\tthis._distanceFactor = this.__mileFactor;\n\t\tthis._xLabel = \"mi\";\n\t} else {\n\t\tthis._distanceFactor = opts.distanceFactor;\n\t\tthis._xLabel = 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) * this._distanceFactor;\n\n\t\tdist += Math.round(delta / 1000 * 100000) / 100000; // handles floating points calc\n\n\t\tdata[i].dist = dist;\n\n\t\ttrack.distance = 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\tdistance.x = this._chart._x;\n\t\t\tdistance.label = this._chart._xLabel;\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"x\",\n\t\t\t\tposition: \"bottom\",\n\t\t\t\tscale : distance.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._registerSummary({\n\t\t\"totlen\" : {\n\t\t\tlabel: \"Total Length: \",\n\t\t\tvalue: (track) => (track.distance || 0).toFixed(2) + ' ' + this._xLabel\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\tthis._heightFactor = this.__footFactor;\n\t\tthis._yLabel = \"ft\";\n\t} else {\n\t\tthis._heightFactor = opts.heightFactor;\n\t\tthis._yLabel = 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 * this._heightFactor;\n\n\t\tlet track = this.track_info;\n\t\tlet eleMax = track.elevation_max || -Infinity;\n\t\tlet eleMin = 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\teleMax = eleMax < z ? z : eleMax;\n\t\t\teleMin = eleMin > z ? z : eleMin;\n\t\t\tthis._lastValidZ = z;\n\t\t}\n\n\t\tdata[i].z = z;\n\n\t\ttrack.elevation_max = eleMax;\n\t\ttrack.elevation_min = eleMin;\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\taltitude.y = this._chart._y;\n\t\t\taltitude.label = this._yLabel;\n\n\t\t\tthis._chart._registerAxisScale({\n\t\t\t\taxis : \"y\",\n\t\t\t\tposition: \"left\",\n\t\t\t\tscale : altitude.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\t\t\tlet alpha = (this.options.detached ? (color.alpha || '0.8') : 1);\n\t\t\tlet stroke = (this.options.detached ? color.stroke : false);\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 : stroke || '#000',\n\t\t\t\tstrokeOpacity: \"1\",\n\t\t\t\tfillOpacity : alpha,\n\t\t\t\tpreferCanvas : this.options.preferCanvas,\n\t\t\t});\n\n\t\t});\n\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) + ' ' + this._yLabel\n\t\t},\n\t\t\"minele\" : {\n\t\t\tlabel: \"Min Elevation: \",\n\t\t\tvalue: (track) => (track.elevation_min || 0).toFixed(2) + ' ' + this._yLabel\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\tthis._timeFactor = opts.timeFactor;\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) * this._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\tdata[i].time = time;\n\t\tdata[i].duration = duration;\n\n\t\tthis.track_info.time = duration;\n\t});\n\n\tif (this.options.time) {\n\n\t\tthis._registerFocusLabel({\n\t\t\tname: 'time',\n\t\t\tchart: (item) => this.options.timeFormat(item.time)\n\t\t});\n\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\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\tif (this.options.sRange) {\n\t\t\tlet range = this.options.sRange;\n\t\t\tif (slope < range[0]) slope = range[0];\n\t\t\telse if (slope > range[1]) slope = range[1];\n\t\t}\n\n\t\tslope = L.Util.formatNum(slope, 2);\n\n\t\tif (slope > sMax) sMax = slope;\n\t\tif (slope < sMin) sMin = slope;\n\n\t\tdata[i].slope = slope;\n\n\t\ttrack.ascent = tAsc;\n\t\ttrack.descent = tDes;\n\t\ttrack.slope_max = sMax;\n\t\ttrack.slope_min = sMin;\n\t});\n\n\tthis._registerFocusLabel({\n\t\tname: 'slope',\n\t\tchart: (item) => 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) + ' ' + this._yLabel\n\t\t},\n\t\t\"descent\" : {\n\t\t\tlabel: \"Total Descent: \",\n\t\t\tvalue: (track) => Math.round(track.descent || 0) + ' ' + this._yLabel\n\t\t},\n\t\t\"minslope\": {\n\t\t\tlabel: \"Min Slope: \",\n\t\t\tvalue: (track) => Math.round(track.slope_min || 0) + ' ' + 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) + ' ' + 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._(this.options.imperial ? 'mph' : 'km/h');\n\tthis._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) * this._timeFactor) * this._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\tif (this.options.speedRange) {\n\t\t\tlet range = this.options.speedRange;\n\t\t\tif (speed < range[0]) speed = range[0];\n\t\t\telse if (speed > range[1]) speed = range[1];\n\t\t}\n\n\t\tspeed = L.Util.formatNum(speed, 2);\n\n\t\tsMax = speed > sMax ? speed : sMax;\n\t\tsMin = speed < sMin ? speed : sMin;\n\t\tsAvg = (speed + sAvg) / 2.0;\n\n\t\tdata[i].speed = speed;\n\n\t\ttrack.speed_max = sMax;\n\t\ttrack.speed_min = sMin;\n\t\ttrack.speed_avg = sAvg;\n\t});\n\n\tif (this.options.speed) {\n\n\t\tthis._registerFocusLabel({\n\t\t\tname: 'speed',\n\t\t\tchart: (item) => 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) + ' ' + 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) + ' ' + 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) + ' ' + 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._(this.options.imperial ? 'ft/s²' : 'm/s²');\n\tthis._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 / this._timeFactor);\n\t\t\tacceleration = Math.abs((delta / deltaT)) * this._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\tif (this.options.accelerationRange) {\n\t\t\tlet range = this.options.accelerationRange;\n\t\t\tif (acceleration < range[0]) acceleration = range[0];\n\t\t\telse if (acceleration > range[1]) acceleration = range[1];\n\t\t}\n\n\t\tacceleration = L.Util.formatNum(acceleration, 2);\n\n\t\tif (acceleration > sMax) sMax = acceleration;\n\t\tif (acceleration < sMin) sMin = acceleration;\n\t\tsAvg = (acceleration + sAvg) / 2.0;\n\n\t\tdata[i].acceleration = acceleration;\n\n\t\ttrack.acceleration_max = sMax;\n\t\ttrack.acceleration_min = sMin;\n\t\ttrack.acceleration_avg = sAvg;\n\t});\n\n\tthis._registerFocusLabel({\n\t\tname : 'acceleration',\n\t\tchart : (item) => 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) + ' ' + 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) + ' ' + 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) + ' ' + 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 './distance';\nimport './altitude';\nimport './time';\nimport './slope';\nimport './speed';\nimport './acceleration';\n\nElevation.Utils = _;\nElevation.Components = D3;\nElevation.Chart = Chart;\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","deferFunc","f","document","readyState","addEventListener","once","debounce","func","wait","context","immediate","timeout","args","arguments","clearTimeout","setTimeout","apply","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","isDomVisible","elem","offsetWidth","offsetHeight","getClientRects","item","Array","isArray","isVisible","styles","getComputedStyle","isVisibleByStyles","visibility","display","isAboveOtherElements","boundingRect","getBoundingClientRect","left","right","top","bottom","above","pointerEvents","elementFromPoint","isJSONDoc","doc","trim","indexOf","console","warn","isXMLDoc","documentElement","ownerDocument","nodeName","lazyLoader","url","skip","loader","Promise","resolve","reject","tag","createElement","src","head","appendChild","saveFile","dataURI","fileName","a","create","href","download","b","body","click","removeChild","waitHolder","ticking","scrollFn","requestAnimFrame","removeEventListener","addClass","targetNode","split","every","DomUtil","removeClass","toggleClass","conditional","call","replaceClass","removeClassName","addClassName","value","getStyle","setProperty","toggleStyle","toggleEvent","leafletElement","eventName","handler","tagName","attributes","parent","setAttributes","append","child","insert","position","insertAdjacentElement","attrs","k","setAttribute","select","selector","querySelector","DomEvent","off","hasClass","randomId","random","substr","each","obj","fn","Colors","area","alpha","stroke","line","Area","width","height","xAttr","yAttr","scaleX","scaleY","interpolation","d3","curve","x","xDiagCoord","y0","y1","Path","color","strokeColor","strokeOpacity","fillOpacity","classed","attr","Axis","tickSize","tickPadding","axis","scale","ticks","tickFormat","labelX","labelY","onAxisMount","g","w","axisScale","l","toUpperCase","axisGroup","join","text","Grid","props","HeightFocusLine","xCoord","yCoord","HeightFocusLabel","y","node","selectAll","HeightFocusMarker","circle","LegendItem","margins","svg","ownerSVGElement","dispatch","detail","legend","enabled","MouseFocusLine","MouseFocusLabel","rect","xAlign","yAlign","bbox","getBBox","max","Browser","webkit","Infinity","Ruler","symbol","symbolTriangle","exit","remove","enter","merge","size","angle","Domain","min","forceBounds","domain","extent","Range","Scale","range","scaleLinear","Bisect","bisector","invert","Chart","ruler","_width","_height","panes","grid","brush","tooltip","clipPath","clipRect","foreignObject","canvas","getContext","dragG","focusG","brushG","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","focusLabels","_scales","_domains","_ranges","_paths","_brushEnabled","dragging","_zoomEnabled","zooming","imperial","_xLabel","_yLabel","xLabel","yLabel","_chart","D3","_container","_grid","_area","_point","_axis","_legend","_initScale","_clipPath","_canvas","_context","_dragG","_focusG","_brush","_focusline","_focuslabel","_zoom","zoom","_drag","drag","_initInteractions","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","render","container","clear","_resetDrag","_hideDiagramIndicator","clearRect","_path","_drawPath","ctx","datum","preferCanvas","beginPath","moveTo","p","Path2D","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","fill","closePath","_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","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_findIndexForLatLng","dist","isNaN","property","pos","y2","x2","_registerFocusLabel","gridOpts","axesOpts","n","substring","legends","items","nodes","v","map","sign","rev","slice","reverse","push","concat","xAxesB","marginB","marginR","tx","ty","r","list","reduce","array","index","next","curr","result","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","xCoordinate","yCoordinate","decimalsX","decimalsY","labels","Marker","_focusmarker","_marker","markerIcon","zIndexOffset","interactive","_focuslabels","addTo","_map","getPane","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","normalizedAlt","maxElevation","normalizedY","getElement","setLatLng","getLatLng","Summary","summary","reset","innerHTML","_registerSummary","Options","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","distanceFactor","downloadLink","elevationDiv","followMarker","heightFactor","lazyLoadJS","loadData","defer","iconSize","iconAnchor","placeholder","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","responsive","slope","speed","sLimit","undefined","timeFactor","timeFormat","sDeltaMax","sInterpolation","sRange","zFollow","Mobile","__mileFactor","__footFactor","__D3","__TOGEOJSON","__LGEOMUTIL","__LALMOSTOVER","__LDISTANCEM","_addData","_addLayer","eleDiv","_initElevationDiv","isConnected","getContainer","onAdd","_clearChart","_layers","_clearLayers","_markers","_clearMarkers","_updateChart","_events","elechart_updated","eachLayer","clearLayers","disableBrush","enableBrush","enableDragging","enableBrushing","disableDragging","disableBrushing","disableZoom","enableZoom","fitBounds","bounds","getBounds","isValid","latLngBounds","getZFollow","_zFollow","hide","featureGroup","_markedSegments","_chartEnabled","_setMapView","throttle","setStyle","colors","load","loadChart","loadDefer","loadLazy","loadXML","loadGeoJSON","loadFile","fetch","response","_downloadURL","catch","loadGPX","_togeojsonLazyLoader","toGeoJSON","xml","DOMParser","parseFromString","geojson","getElementsByTagName","pop","parentNode","_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","clientWidth","_maxWidth","maxWidth","_dragendHandler","_mousemoveHandler","_mouseoutHandler","_rulerFilterHandler","_toggleChartHandler","_mousemoveLayerHandler","_pane","createPane","zIndex","_renderer","disableClickPropagation","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","_popup","_content","decodeURI","bindTooltip","direction","sticky","openTooltip","CustomEvent","dispatchEvent","_geomutilLazyLoader","GeometryUtil","almostOver","_almostoverLazyLoader","Handler","AlmostOver","addHandler","_distanceMarkersLazyLoader","oldProto","Canvas","_fillStroke","include","oldVal","_distanceFactor","track","prev","delta","toFixed","_heightFactor","eleMax","eleMin","elevation_min","prevZ","lastZ","_lastValidZ","currZ","splice","timeLabel","_timeFactor","_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","_speedFactor","speed_max","speed_min","sAvg","speed_avg","speedDeltaMax","speedRange","accelerationLabel","_accelerationFactor","accelerationFactor","acceleration_max","acceleration_min","acceleration_avg","accelerationDeltaMax","deltaA","accelerationRange","Utils","Components","elevation"],"mappings":"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"}
|