@raruto/leaflet-elevation 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-elevation.js","sources":["../src/utils.js","../src/options.js","../src/control.js","../src/index.js"],"sourcesContent":["/**\r\n * TODO: exget computed styles of theese values from actual \"CSS vars\"\r\n **/\r\nexport const Colors = {\r\n\t'lightblue': { area: '#3366CC', alpha: 0.45, stroke: '#3366CC' },\r\n\t'magenta' : { area: '#FF005E' },\r\n\t'yellow' : { area: '#FF0' },\r\n\t'purple' : { area: '#732C7B' },\r\n\t'steelblue': { area: '#4682B4' },\r\n\t'red' : { area: '#F00' },\r\n\t'lime' : { area: '#9CC222', line: '#566B13' }\r\n};\r\n\r\nconst SEC = 1000;\r\nconst MIN = SEC * 60;\r\nconst HOUR = MIN * 60;\r\nconst DAY = HOUR * 24;\r\n\r\nexport function resolveURL(src, baseUrl) {\r\n\treturn (new URL(src, (src.startsWith('../') || src.startsWith('./')) ? baseUrl : undefined)).toString()\r\n};\r\n\r\n/**\r\n * Convert a time (millis) to a human readable duration string (%Dd %H:%M'%S\")\r\n */\r\nexport function formatTime(t) {\r\n\tlet d = Math.floor(t / DAY);\r\n\tlet h = Math.floor( (t - d * DAY) / HOUR);\r\n\tlet m = Math.floor( (t - d * DAY - h * HOUR) / MIN);\r\n\tlet s = Math.round( (t - d * DAY - h * HOUR - m * MIN) / SEC);\r\n\tif ( s === 60 ) { m++; s = 0; }\r\n\tif ( m === 60 ) { h++; m = 0; }\r\n\tif ( h === 24 ) { d++; h = 0; }\r\n\treturn (d ? d + \"d \" : '') + h.toString().padStart(2, 0) + ':' + m.toString().padStart(2, 0) + \"'\" + s.toString().padStart(2, 0) + '\"';\r\n}\r\n\r\n/**\r\n * Convert a time (millis) to human readable date string (dd-mm-yyyy hh:mm:ss)\r\n */\r\n export function formatDate(format) {\r\n\tif (!format) {\r\n\t\treturn (time) => (new Date(time)).toLocaleString().replaceAll('/', '-').replaceAll(',', ' ');\r\n\t} else if (format == 'time') {\r\n\t\treturn (time) => (new Date(time)).toLocaleTimeString();\r\n\t} else if (format == 'date') {\r\n\t\treturn (time) => (new Date(time)).toLocaleDateString();\r\n\t}\r\n\treturn (time) => format(time);\r\n}\r\n\r\n/**\r\n * Generate download data event.\r\n */\r\n export function saveFile(dataURI, fileName) {\r\n\tlet a = create('a', '', { href: dataURI, target: '_new', download: fileName || \"\", style: \"display:none;\" });\r\n\tlet b = document.body;\r\n\tb.appendChild(a);\r\n\ta.click();\r\n\tb.removeChild(a);\r\n}\r\n\r\n\r\n/**\r\n * Convert SVG Path into Path2D and then update canvas\r\n */\r\n export function drawCanvas(ctx, path) {\r\n\tpath.classed('canvas-path', true);\r\n\r\n\tctx.beginPath();\r\n\tctx.moveTo(0, 0);\r\n\tlet p = new Path2D(path.attr('d'));\r\n\r\n\tctx.strokeStyle = path.attr('stroke');\r\n\tctx.fillStyle = path.attr('fill');\r\n\tctx.lineWidth = 1.25;\r\n\tctx.globalCompositeOperation = 'source-over';\r\n\r\n\t// stroke opacity\r\n\tctx.globalAlpha = path.attr('stroke-opacity') || 0.3;\r\n\tctx.stroke(p);\r\n\r\n\t// fill opacity\r\n\tctx.globalAlpha = path.attr('fill-opacity') || 0.45;\r\n\tctx.fill(p);\r\n\r\n\tctx.globalAlpha = 1;\r\n\r\n\tctx.closePath();\r\n}\r\n\r\n/**\r\n * Loop and extract GPX Extensions handled by \"@tmcw/toGeoJSON\" (eg. \"coordinateProperties\" > \"times\")\r\n */\r\nexport function coordPropsToMeta(coordProps, name, parser) {\r\n\treturn coordProps && (({props, point, id, isMulti }) => {\r\n\t\tif (props) {\r\n\t\t\tfor (const key of coordProps) {\r\n\t\t\t\tif (key in props) {\r\n\t\t\t\t\tpoint.meta[name] = (parser || parseNumeric).call(this, (isMulti ? props[key][isMulti] : props[key]), id);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Extract numeric property (id) from GeoJSON object\r\n */\r\nexport const parseNumeric = (property, id) => parseInt((typeof property === 'object' ? property[id] : property));\r\n\r\n/**\r\n * Extract datetime property (id) from GeoJSON object\r\n */\r\nexport const parseDate = (property, id) => new Date(Date.parse((typeof property === 'object' ? property[id] : property)));\r\n\r\n/**\r\n * A little bit shorter than L.DomUtil\r\n */\r\nexport const addClass = (n, str) => n && str.split(\" \").every(s => s && L.DomUtil.addClass(n, s));\r\nexport const removeClass = (n, str) => n && str.split(\" \").every(s => s && L.DomUtil.removeClass(n, s));\r\nexport const toggleClass = (n, str, cond) => (cond ? addClass : removeClass)(n, str);\r\nexport const replaceClass = (n, rem, add) => (rem && removeClass(n, rem)) || (add && addClass(n, add));\r\nexport const style = (n, k, v) => (typeof v === \"undefined\" && L.DomUtil.getStyle(n, k)) || n.style.setProperty(k, v);\r\nexport const toggleStyle = (n, k, v, cond) => style(n, k, cond ? v : '');\r\nexport const setAttributes = (n, attrs) => { for (let k in attrs) { n.setAttribute(k, attrs[k]); } };\r\nexport const toggleEvent = (el, e, fn, cond) => el[cond ? 'on' : 'off'](e, fn);\r\nexport const create = (tag, str, attrs, n) => { let elem = L.DomUtil.create(tag, str || \"\"); if (attrs) setAttributes(elem, attrs); if (n) append(n, elem); return elem; };\r\nexport const append = (n, c) => n.appendChild(c);\r\nexport const insert = (n, c, pos) => n.insertAdjacentElement(pos, c);\r\nexport const select = (str, n) => (n || document).querySelector(str);\r\nexport const each = (obj, fn) => { for (let i in obj) fn(obj[i], i); };\r\nexport const randomId = () => Math.random().toString(36).substr(2, 9);\r\n\r\n/**\r\n * TODO: use generators instead? (ie. \"yield\")\r\n */\r\nexport const iMax = (iVal, max = -Infinity) => (iVal > max ? iVal : max); \r\nexport const iMin = (iVal, min = +Infinity) => (iVal < min ? iVal : min);\r\nexport const iAvg = (iVal, avg = 0, idx = 1) => (iVal + avg * (idx - 1)) / idx;\r\nexport const iSum = (iVal, sum = 0) => iVal + sum;\r\n\r\n/**\r\n * Alias for some leaflet core functions\r\n */\r\nexport const { on, off } = L.DomEvent;\r\nexport const { throttle, wrapNum } = L.Util;\r\nexport const { hasClass } = L.DomUtil;\r\n\r\n/**\r\n * Limit floating point precision\r\n */\r\nexport const round = L.Util.formatNum;\r\n\r\n/**\r\n * Limit a number between min / max values\r\n */\r\nexport const clamp = (val, range) => range ? (val < range[0] ? range[0] : val > range[1] ? range[1] : val) : val;\r\n\r\n/**\r\n * Limit a delta difference between two values\r\n */\r\nexport const wrapDelta = (curr, prev, deltaMax) => Math.abs(curr - prev) > deltaMax ? prev + deltaMax * Math.sign(curr - prev) : curr;","import * as _ from './utils';\r\n\r\nexport var Options = {\r\n\tautofitBounds: true,\r\n\tautohide: false,\r\n\tautohideMarker: true,\r\n\talmostover: true,\r\n\taltitude: true,\r\n\tcloseBtn: true,\r\n\tcollapsed: false,\r\n\tdetached: true,\r\n\tdistance: true,\r\n\tdistanceMarkers: { lazy: true, distance: true, direction: true },\r\n\tdragging: !L.Browser.mobile,\r\n\tdownloadLink: 'link',\r\n\televationDiv: \"#elevation-div\",\r\n\tedgeScale: { bar: true, icon: false, coords: false },\r\n\tfollowMarker: true,\r\n\timperial: false,\r\n\tlegend: true,\r\n\thandlers: [\"Distance\", \"Time\", \"Altitude\", \"Slope\", \"Speed\", \"Acceleration\"],\r\n\thotline: 'elevation',\r\n\tmarker: 'elevation-line',\r\n\tmarkerIcon: L.divIcon({\r\n\t\tclassName: 'elevation-position-marker',\r\n\t\thtml: '<i class=\"elevation-position-icon\"></i>',\r\n\t\ticonSize: [32, 32],\r\n\t\ticonAnchor: [16, 16],\r\n\t}),\r\n\tposition: \"topright\",\r\n\tpolyline: {\r\n\t\tclassName: 'elevation-polyline',\r\n\t\tcolor: '#000',\r\n\t\topacity: 0.75,\r\n\t\tweight: 5,\r\n\t\tlineCap: 'round'\r\n\t},\r\n\tpolylineSegments: {\r\n\t\tclassName: 'elevation-polyline-segments',\r\n\t\tcolor: '#F00',\r\n\t\tinteractive: false,\r\n\t},\r\n\tpreferCanvas: false,\r\n\treverseCoords: false,\r\n\truler: true,\r\n\ttheme: \"lightblue-theme\",\r\n\tsummary: 'inline',\r\n\tslope: false,\r\n\tspeed: false,\r\n\ttime: true,\r\n\ttimeFactor: 3600,\r\n\ttimestamps: false,\r\n\ttrkStart: { className: 'start-marker', radius: 6, weight: 2, color: '#fff', fillColor: '#00d800', fillOpacity: 1, interactive: false },\r\n\ttrkEnd: { className: 'end-marker', radius: 6, weight: 2, color: '#fff', fillColor: '#ff0606', fillOpacity: 1, interactive: false },\r\n\twaypoints: true,\r\n\twptIcons: {\r\n\t\t'': L.divIcon({\r\n\t\t\tclassName: 'elevation-waypoint-marker',\r\n\t\t\thtml: '<i class=\"elevation-waypoint-icon default\"></i>',\r\n\t\t\ticonSize: [30, 30],\r\n\t\t\ticonAnchor: [8, 30],\r\n\t\t}),\r\n\t},\r\n\twptLabels: true,\r\n\txAttr: \"dist\",\r\n\txLabel: \"km\",\r\n\tyAttr: \"z\",\r\n\tyLabel: \"m\",\r\n\tzFollow: false,\r\n\tzooming: !L.Browser.Mobile,\r\n\r\n\t// Quite uncommon and undocumented options\r\n\tmargins: { top: 30, right: 30, bottom: 30, left: 40 },\r\n\theight: (screen.height * 0.3) || 200,\r\n\twidth: (screen.width * 0.6) || 600,\r\n\txTicks: undefined,\r\n\tyTicks: undefined,\r\n\r\n\tdecimalsX: 2,\r\n\tdecimalsY: 0,\r\n\tforceAxisBounds: false,\r\n\tinterpolation: \"curveLinear\",\r\n\tyAxisMax: undefined,\r\n\tyAxisMin: undefined,\r\n\r\n\t// Prevent CORS issues for relative locations (dynamic import)\r\n\tsrcFolder: ((document.currentScript && document.currentScript.src) || (import.meta && import.meta.url)).split(\"/\").slice(0,-1).join(\"/\") + '/',\r\n};\r\n","import * as _ from './utils';\r\nimport { Options } from './options';\r\n\r\n// \"leaflet-i18n\" fallback\r\nif (!L._ || !L.i18n) {\r\n\tL._ = L.i18n = (string, data) => string;\r\n}\r\n\r\nexport const Elevation = L.Control.Elevation = L.Control.extend({\r\n\r\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\r\n\r\n\toptions: Options,\r\n\t__mileFactor: 0.621371, // 1 km = (0.621371 mi)\r\n\t__footFactor: 3.28084, // 1 m = (3.28084 ft)\r\n\t__D3: 'https://unpkg.com/d3@6.5.0/dist/d3.min.js',\r\n\t__TOGEOJSON: 'https://unpkg.com/@tmcw/togeojson@4.6.0/dist/togeojson.umd.js',\r\n\t__LGEOMUTIL: 'https://unpkg.com/leaflet-geometryutil@0.9.3/src/leaflet.geometryutil.js',\r\n\t__LALMOSTOVER: 'https://unpkg.com/leaflet-almostover@1.0.1/src/leaflet.almostover.js',\r\n\t__LHOTLINE: '../libs/leaflet-hotline.min.js',\r\n\t__LDISTANCEM: '../libs/leaflet-distance-marker.min.js',\r\n\t__LEDGESCALE: '../libs/leaflet-edgescale.min.js',\r\n\t__LCHART: '../src/components/chart.js',\r\n\t__LMARKER: '../src/components/marker.js',\r\n\t__LSUMMARY: '../src/components/summary.js',\r\n\t__modulesFolder: '../src/handlers/',\r\n\t__btnIcon: '../images/elevation.svg',\r\n\r\n\t/*\r\n\t * Add data to the diagram either from GPX or GeoJSON and update the axis domain and data\r\n\t */\r\n\taddData: function(d, layer) {\r\n\t\tthis.import(this.__D3)\r\n\t\t\t.then(() => {\r\n\t\t\t\tif (this._modulesLoaded) {\r\n\t\t\t\t\tlayer = layer ?? (d.on && d);\r\n\t\t\t\t\tthis._addData(d);\r\n\t\t\t\t\tthis._addLayer(layer);\r\n\t\t\t\t\tthis._fireEvt(\"eledata_added\", { data: d, layer: layer, track_info: this.track_info });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.once('modules_loaded', () => this.addData(d,layer));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Adds the control to the given map.\r\n\t */\r\n\taddTo: function(map) {\r\n\t\tif (this.options.detached) {\r\n\t\t\tlet parent = _.select(this.options.elevationDiv);\r\n\t\t\tlet eleDiv = this.onAdd(map);\r\n\t\t\tparent ? _.append(parent, eleDiv) : _.insert(map.getContainer(), eleDiv, 'afterend');\r\n\t\t} else {\r\n\t\t\tL.Control.prototype.addTo.call(this, map);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/*\r\n\t * Reset data and display\r\n\t */\r\n\tclear: function() {\r\n\t\tif (this._marker) this._marker.remove();\r\n\t\tif (this._chart) this._clearChart();\r\n\t\tif (this._layers) this._clearLayers(this._layers);\r\n\t\tif (this._markers) this._clearLayers(this._markers);\r\n\t\tif (this._circleMarkers) this._circleMarkers.remove();\r\n\t\tif (this._hotline) this._clearLayers(this._hotline);\r\n\r\n\t\tthis._data = [];\r\n\t\tthis.track_info = {};\r\n\r\n\t\tthis._fireEvt(\"eledata_clear\");\r\n\r\n\t\tthis._updateChart();\r\n\t},\r\n\r\n\t_clearChart: function() {\r\n\t\tif (this._events && this._events.elechart_updated) {\r\n\t\t\tthis._events.elechart_updated.forEach(({fn, ctx}) => this.off('elechart_updated', fn, ctx));\r\n\t\t}\r\n\t\tif (this._chart && this._chart._container) {\r\n\t\t\tthis._chart._container.selectAll('g.point .point').remove();\r\n\t\t\tthis._chart.clear();\r\n\t\t}\r\n\t},\r\n\r\n\t_clearLayers: function(l) {\r\n\t\tl = l || this._layers;\r\n\t\tif (l && l.eachLayer) {\r\n\t\t\tl.eachLayer(f => f.remove())\r\n\t\t\tl.clearLayers();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * TODO: Create a base class to handle custom data attributes (heart rate, cadence, temperature, ...)\r\n\t * \r\n\t * @link https://leafletjs.com/examples/extending/extending-3-controls.html#handlers\r\n\t */\r\n\t// addHandler: function (name, HandlerClass) {\r\n\t// \tif (HandlerClass) {\r\n\t// \t\tlet handler = this[name] = new HandlerClass(this);\r\n\t// \t\tthis.handlers.push(handler);\r\n\t// \t\tif (this.options[name]) {\r\n\t// \t\t\thandler.enable();\r\n\t// \t\t}\r\n\t// \t}\r\n\t// \treturn this;\r\n\t// },\r\n\r\n\t/**\r\n\t * Disable chart brushing.\r\n\t */\r\n\tdisableBrush: function() {\r\n\t\tthis._chart._brushEnabled = false;\r\n\t\tthis._resetDrag();\r\n\t},\r\n\r\n\t/**\r\n\t * Enable chart brushing.\r\n\t */\r\n\tenableBrush: function() {\r\n\t\tthis._chart._brushEnabled = true;\r\n\t},\r\n\r\n\t/**\r\n\t * Disable chart zooming.\r\n\t */\r\n\tdisableZoom: function() {\r\n\t\tthis._chart._zoomEnabled = false;\r\n\t\tthis._chart._resetZoom();\r\n\t},\r\n\r\n\t/**\r\n\t * Enable chart zooming.\r\n\t */\r\n\tenableZoom: function() {\r\n\t\tthis._chart._zoomEnabled = true;\r\n\t},\r\n\r\n\t/**\r\n\t * Sets a map view that contains the given geographical bounds.\r\n\t */\r\n\tfitBounds: function(bounds) {\r\n\t\tbounds = bounds || this.getBounds();\r\n\t\tif (this._map && bounds.isValid()) this._map.fitBounds(bounds);\r\n\t},\r\n\r\n\tgetBounds: function(data) {\r\n\t\treturn L.latLngBounds((data || this._data).map((d) => d.latlng));\r\n\t},\r\n\r\n\t/**\r\n\t * Get default zoom level (followMarker: true).\r\n\t */\r\n\tgetZFollow: function() {\r\n\t\treturn this.options.zFollow;\r\n\t},\r\n\r\n\t/**\r\n\t * Hide current elevation chart profile.\r\n\t */\r\n\thide: function() {\r\n\t\t_.style(this._container, \"display\", \"none\");\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize chart control \"options\" and \"container\".\r\n\t */\r\n\tinitialize: function(opts) {\r\n\r\n\t\t// opts = L.setOptions(this, opts);\r\n\r\n\t\t// Fixes: https://github.com/Raruto/leaflet-elevation/pull/240\r\n\t\topts = L.setOptions(this, L.extend({}, structuredClone(Options), opts)); // \"deep copy\" nested objects (multiple charts)\r\n\r\n\t\tthis._data = [];\r\n\t\tthis._layers = L.featureGroup();\r\n\t\tthis._markers = L.featureGroup();\r\n\t\tthis._hotline = L.featureGroup();\r\n\t\tthis._circleMarkers = L.featureGroup();\r\n\t\tthis._markedSegments = L.polyline([]);\r\n\t\tthis._start = L.circleMarker([0,0], (opts.trkStart || Options.trkStart));\r\n\t\tthis._end = L.circleMarker([0,0], (opts.trkEnd || Options.trkEnd));\r\n\t\tthis._chartEnabled = true;\r\n\t\tthis._yCoordMax = -Infinity;\r\n\t\tthis.track_info = {};\r\n\t\t// this.handlers = [];\r\n\r\n\t\tif (opts.followMarker) this._setMapView = _.throttle(this._setMapView, 300, this);\r\n\t\tif (opts.legend) opts.margins.bottom += 30;\r\n\t\tif (opts.theme) opts.polylineSegments.className += ' ' + opts.theme;\r\n\t\tif (opts.wptIcons === true) opts.wptIcons = Options.wptIcons;\r\n\t\tif (opts.distanceMarkers === true) opts.distanceMarkers = Options.distanceMarkers;\r\n\t\tif (opts.trkStart) this._start.addTo(this._circleMarkers);\r\n\t\tif (opts.trkEnd) this._end.addTo(this._circleMarkers);\r\n\r\n\r\n\t\tthis._markedSegments.setStyle(opts.polylineSegments);\r\n\r\n\t\t// Leaflet canvas renderer colors\r\n\t\tL.extend(_.Colors, opts.colors || {});\r\n\r\n\t\t// Various stuff\r\n\t\tthis._fixCanvasPaths();\r\n\t\tthis._fixTooltipSize();\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Javascript scripts downloader (lazy loader)\r\n\t */\r\n\timport: function(src, condition) {\r\n\t\tswitch(src) {\r\n\t\t\tcase this.__D3: condition = typeof d3 !== 'object'; break;\r\n\t\t\tcase this.__TOGEOJSON: condition = typeof toGeoJSON !== 'object'; break;\r\n\t\t\tcase this.__LGEOMUTIL: condition = typeof L.GeometryUtil !== 'object'; break;\r\n\t\t\tcase this.__LALMOSTOVER: condition = typeof L.Handler.AlmostOver !== 'function'; break;\r\n\t\t\tcase this.__LDISTANCEM: condition = typeof L.DistanceMarkers !== 'function'; break;\r\n\t\t\tcase this.__LEDGESCALE: condition = typeof L.Control.EdgeScale !== 'function'; break;\r\n\t\t\tcase this.__LHOTLINE: condition = typeof L.Hotline !== 'function'; break;\r\n\t\t}\r\n\t\treturn condition !== false ? import(_.resolveURL(src, this.options.srcFolder)) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Load elevation data (GPX, GeoJSON, KML or TCX).\r\n\t */\r\n\tload: function(data) {\r\n\t\tthis._parseFromString(data).then( geojson => geojson ? this._loadLayer(geojson) : this._loadFile(data));\r\n\t},\r\n\r\n\t/**\r\n\t * Create container DOM element and related event listeners.\r\n\t * Called on control.addTo(map).\r\n\t */\r\n\tonAdd: function(map) {\r\n\t\tthis._map = map;\r\n\r\n\t\tlet container = this._container = _.create(\"div\", \"elevation-control \" + this.options.theme + \" \" + (this.options.detached ? 'elevation-detached' : 'leaflet-control'), this.options.detached ? { id: 'elevation-' + _.randomId() } : {});\r\n\r\n\t\tif (!this.eleDiv) this.eleDiv = container;\r\n\r\n\t\tthis._loadModules(this.options.handlers).then(() => { // Inject here required modules (data handlers)\r\n\t\t\tthis._initChart(container);\r\n\t\t\tthis._initButton(container);\r\n\t\t\tthis._initSummary(container);\r\n\t\t\tthis._initMarker(map);\r\n\t\t\tthis._initLayer(map);\r\n\t\t\tthis._modulesLoaded = true;\r\n\t\t\tthis.fire('modules_loaded');\r\n\t\t});\r\n\r\n\t\tthis.fire('add');\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\t/**\r\n\t * Clean up control code and related event listeners.\r\n\t * Called on control.remove().\r\n\t */\r\n\tonRemove: function(map) {\r\n\t\tthis._container = null;\r\n\r\n\t\tmap\r\n\t\t\t.off('zoom viewreset zoomanim', this._hideMarker, this)\r\n\t\t\t.off('resize', this._resetView, this)\r\n\t\t\t.off('resize', this._resizeChart, this)\r\n\t\t\t.off('mousedown', this._resetDrag, this);\r\n\r\n\t\t_.off(map.getContainer(), 'mousewheel', this._resetDrag, this);\r\n\t\t_.off(map.getContainer(), 'touchstart', this._resetDrag, this);\r\n\t\t_.off(document, 'keydown', this._onKeyDown, this);\r\n\r\n\t\tthis\r\n\t\t\t.off('eledata_added eledata_loaded', this._updateChart, this)\r\n\t\t\t.off('eledata_added eledata_loaded', this._updateSummary, this);\r\n\r\n\t\tthis.fire('remove');\r\n\t},\r\n\r\n\t/**\r\n\t * Redraws the chart control. Sometimes useful after screen resize.\r\n\t */\r\n\tredraw: function() {\r\n\t\tthis._resizeChart();\r\n\t},\r\n\r\n\t/**\r\n\t * Set default zoom level (followMarker: true).\r\n\t */\r\n\tsetZFollow: function(zoom) {\r\n\t\tthis.options.zFollow = zoom;\r\n\t},\r\n\r\n\t/**\r\n\t * Hide current elevation chart profile.\r\n\t */\r\n\tshow: function() {\r\n\t\t_.style(this._container, \"display\", \"block\");\r\n\t},\r\n\r\n\t/*\r\n\t * Parsing data either from GPX or GeoJSON and update the diagram data\r\n\t */\r\n\t_addData: function(d) {\r\n\t\tif (!d) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Standard GeoJSON\r\n\t\tif (d.type === \"FeatureCollection\" ) {\r\n\t\t\treturn _.each(d.features, feature => this._addData(feature));\r\n\t\t} else if (d.type === \"Feature\") {\r\n\t\t\tlet geom = d.geometry;\r\n\t\t\tif (geom) {\r\n\t\t\t\tswitch (geom.type) {\r\n\t\t\t\t\tcase 'LineString':\t\treturn this._addGeoJSONData(geom.coordinates, d.properties);\r\n\t\t\t\t\tcase 'MultiLineString':\treturn _.each(geom.coordinates, (coords, i) => this._addGeoJSONData(coords, d.properties, i));\r\n\t\t\t\t\tcase 'Point':\r\n\t\t\t\t\tdefault:\t\t\t\treturn console.warn('Unsopperted GeoJSON feature geometry type:' + geom.type);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fallback for leaflet layers (eg. L.Gpx)\r\n\t\tif (d._latlngs) {\r\n\t\t\treturn this._addGeoJSONData(d._latlngs, d.feature && d.feature.properties);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t/*\r\n\t * Parsing of GeoJSON data lines and their elevation in z-coordinate\r\n\t */\r\n\t_addGeoJSONData: function(coords, properties, nestingLevel) {\r\n\r\n\t\t// \"coordinateProperties\" property is generated inside \"@tmcw/toGeoJSON\"\r\n\t\tlet props = (properties && properties.coordinateProperties) || properties;\r\n\r\n\t\tcoords.forEach((point, i) => {\r\n\r\n\t\t\t// GARMIN_EXTENSIONS = [\"hr\", \"cad\", \"atemp\", \"wtemp\", \"depth\", \"course\", \"bearing\"];\r\n\t\t\tpoint.meta = point.meta ?? { time: null, ele: null };\r\n\t\t\t\r\n\t\t\tpoint.prev = (attr) => (attr ? this._data[i > 0 ? i - 1 : 0][attr] : this._data[i > 0 ? i - 1 : 0]);\r\n\r\n\t\t\tthis.fire(\"elepoint_init\", { point: point, props: props, id: i, isMulti: nestingLevel });\r\n\r\n\t\t\tthis._addPoint(\r\n\t\t\t\tpoint.lat ?? point[1], \r\n\t\t\t\tpoint.lng ?? point[0],\r\n\t\t\t\tpoint.alt ?? point.meta.ele ?? point[2]\r\n\t\t\t);\r\n\r\n\t\t\tthis.fire(\"elepoint_added\", { point: point, index: this._data.length - 1 });\r\n\r\n\t\t\tif (this._yCoordMax < this._data[this._data.length - 1][this.options.yAttr]) this._yCoordMax = this._data[this._data.length - 1][this.options.yAttr];\r\n\t\t});\r\n\r\n\t\tthis.fire(\"eletrack_added\", { coords: coords, index: this._data.length - 1 });\r\n\t},\r\n\r\n\t/*\r\n\t * Parse and push a single (x, y, z) point to current elevation profile.\r\n\t */\r\n\t_addPoint: function(x, y, z) {\r\n\t\tif (this.options.reverseCoords) {\r\n\t\t\t[x, y] = [y, x];\r\n\t\t}\r\n\r\n\t\tthis._data.push({\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tz: z,\r\n\t\t\tlatlng: L.latLng(x, y, z)\r\n\t\t});\r\n\r\n\t\tthis.fire(\"eledata_updated\", { index: this._data.length - 1 });\r\n\t},\r\n\r\n\t_addLayer: function(layer) {\r\n\t\tif (layer) this._layers.addLayer(layer)\r\n\t\t// Postpone adding the distance markers (lazy: true)\r\n\t\tif (layer && this.options.distanceMarkers && this.options.distanceMarkers.lazy) {\r\n\t\t\tlayer.on('add remove', ({target, type}) => L.DistanceMarkers && target instanceof L.Polyline && target[type + 'DistanceMarkers']());\r\n\t\t}\r\n\t\treturn layer;\r\n\t},\r\n\r\n\t_addMarker: function(marker) {\r\n\t\tif (marker) this._markers.addLayer(marker)\r\n\t\treturn marker;\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.AlmostOver\" integration\r\n\t */\r\n\t_initAlmostOverHandler: function(map, layer) {\r\n\t\treturn (map && this.options.almostOver && !L.Browser.mobile) ? Promise.all([\r\n\t\t\tthis.import(this.__LGEOMUTIL),\r\n\t\t\tthis.import(this.__LALMOSTOVER)\r\n\t\t]).then(() => {\r\n\t\t\tmap.addHandler('almostOver', L.Handler.AlmostOver)\r\n\t\t\tif (L.GeometryUtil && map.almostOver && map.almostOver.enabled()) {\r\n\t\t\t\tmap.almostOver.addLayer(layer);\r\n\t\t\t\tmap\r\n\t\t\t\t\t.on('almost:move', (e) => this._onMouseMoveLayer(e))\r\n\t\t\t\t\t.on('almost:out', (e) => this._onMouseOut(e));\r\n\t\t\t}\r\n\t\t}) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.DistanceMarkers\" integration\r\n\t */\r\n\t_initDistanceMarkers: function() {\r\n\t\treturn this.options.distanceMarkers ? Promise.all([this.import(this.__LGEOMUTIL), this.import(this.__LDISTANCEM)]) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.Control.EdgeScale\" integration\r\n\t */\r\n\t_initEdgeScale: function(map) {\r\n\t\treturn this.options.edgeScale ? Promise.all([this.import(this.__LEDGESCALE)])\r\n\t\t\t.then(() => {\r\n\t\t\t\tmap.edgeScaleControl = map.edgeScaleControl || L.control.edgeScale('boolean' !== typeof this.options.edgeScale ? this.options.edgeScale : {}).addTo(map);\r\n\t\t\t}) : Promise.resolve();\r\n\t},\r\n\r\n\t_initHotLine: function(layer) {\r\n\t\tlet prop = typeof this.options.hotline == 'string' ? this.options.hotline : 'elevation';\r\n\t\treturn this.options.hotline ? this.import(this.__LHOTLINE)\r\n\t\t\t.then(() => {\r\n\t\t\t\tlayer.eachLayer((trkseg) => {\r\n\t\t\t\t\tif(trkseg.feature.geometry.type != \"Point\") {\r\n\t\t\t\t\t\tlet geo = L.geoJson(trkseg.toGeoJSON(), { coordsToLatLng: (coords) => L.latLng(coords[0], coords[1], coords[2] * (this.options.altitudeFactor || 1))});\r\n\t\t\t\t\t\tlet line = L.hotline(geo.toGeoJSON().features[0].geometry.coordinates, {\r\n\t\t\t\t\t\t\trenderer: L.Hotline.renderer(),\r\n\t\t\t\t\t\t\tmin: isFinite(this.track_info[prop + '_min']) ? this.track_info[prop + '_min'] : 0,\r\n\t\t\t\t\t\t\tmax: isFinite(this.track_info[prop + '_max']) ? this.track_info[prop + '_max'] : 1,\r\n\t\t\t\t\t\t\tpalette: {\r\n\t\t\t\t\t\t\t\t0.0: '#008800',\r\n\t\t\t\t\t\t\t\t0.5: '#ffff00',\r\n\t\t\t\t\t\t\t\t1.0: '#ff0000'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tweight: 5,\r\n\t\t\t\t\t\t\toutlineColor: '#000000',\r\n\t\t\t\t\t\t\toutlineWidth: 1\r\n\t\t\t\t\t\t}).addTo(this._hotline);\r\n\t\t\t\t\t\tlet alpha = trkseg.options.style && trkseg.options.style.opacity || 1;\r\n\t\t\t\t\t\ttrkseg.on('add remove', ({type}) => {\r\n\t\t\t\t\t\t\ttrkseg.setStyle({opacity: (type == 'add' ? 0 : alpha)});\r\n\t\t\t\t\t\t\tline[(type == 'add' ? 'addTo' : 'removeFrom')](trkseg._map);\r\n\t\t\t\t\t\t\tif (line._renderer) line._renderer._container.parentElement.insertBefore(line._renderer._container, line._renderer._container.parentElement.firstChild);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.AlmostOver\" and \"L.DistanceMarkers\"\r\n\t */\r\n\t_initMapIntegrations: function(layer) {\r\n\t\tlet map = this._map;\r\n\t\tif (map) {\r\n\t\t\tif (this._data.length) {\r\n\t\t\t\tthis._start.setLatLng(this._data[0].latlng);\r\n\t\t\t\tthis._end.setLatLng(this._data[this._data.length -1].latlng);\r\n\t\t\t}\r\n\t\t\tPromise.all([\r\n\t\t\t\tthis._initHotLine(layer),\r\n\t\t\t\tthis._initAlmostOverHandler(map, layer),\r\n\t\t\t\tthis._initDistanceMarkers(),\r\n\t\t\t\tthis._initEdgeScale(map),\r\n\t\t\t]).then(() => {\r\n\t\t\t\tif\t(this.options.polyline) {\r\n\t\t\t\t\tlayer.addTo(map);\r\n\t\t\t\t\tthis._circleMarkers.addTo(map);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.options.autofitBounds) {\r\n\t\t\t\t\tthis.fitBounds(layer.getBounds());\r\n\t\t\t\t}\r\n\t\t\t\tmap.invalidateSize();\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.once('add', () => this._initMapIntegrations(layer));\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Collapse current chart control.\r\n\t */\r\n\t_collapse: function() {\r\n\t\t_.replaceClass(this._container, 'elevation-expanded', 'elevation-collapsed');\r\n\t\tif (this._map) this._map.invalidateSize();\r\n\t},\r\n\r\n\t/*\r\n\t * Expand current chart control.\r\n\t */\r\n\t_expand: function() {\r\n\t\t_.replaceClass(this._container, 'elevation-collapsed', 'elevation-expanded');\r\n\t\tif (this._map) this._map.invalidateSize();\r\n\t},\r\n\r\n\t/**\r\n\t * Add some basic colors to leaflet canvas renderer (preferCanvas: true).\r\n\t */\r\n\t_fixCanvasPaths: function() {\r\n\t\tlet oldProto = L.Canvas.prototype._fillStroke;\r\n\t\tlet control = this;\r\n\r\n\t\tlet theme = this.options.theme.split(' ')[0].replace('-theme', '');\r\n\t\tlet color = _.Colors[theme] || {};\r\n\r\n\t\tL.Canvas.include({\r\n\t\t\t_fillStroke: function(ctx, layer) {\r\n\t\t\t\tif (control._layers.hasLayer(layer)) {\r\n\r\n\t\t\t\t\tlet options = layer.options;\r\n\r\n\t\t\t\t\toptions.color = color.line || color.area || theme;\r\n\t\t\t\t\toptions.stroke = !!options.color;\r\n\r\n\t\t\t\t\toldProto.call(this, ctx, layer);\r\n\r\n\t\t\t\t\tif (options.stroke && options.weight !== 0) {\r\n\t\t\t\t\t\tlet oldVal = ctx.globalCompositeOperation || 'source-over';\r\n\t\t\t\t\t\tctx.globalCompositeOperation = 'destination-over'\r\n\t\t\t\t\t\tctx.strokeStyle = color.outline || '#FFF';\r\n\t\t\t\t\t\tctx.lineWidth = options.weight * 1.75;\r\n\t\t\t\t\t\tctx.stroke();\r\n\t\t\t\t\t\tctx.globalCompositeOperation = oldVal;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\toldProto.call(this, ctx, layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Partial fix for initial tooltip size\r\n\t * \r\n\t * @link https://github.com/Raruto/leaflet-elevation/issues/81#issuecomment-713477050\r\n\t */\r\n\t_fixTooltipSize: function() {\r\n\t\tthis.on('elechart_init', () =>\r\n\t\t\tthis.once('elechart_change elechart_hover', ({data, xCoord}) => {\r\n\t\t\t\tif (this._chartEnabled) {\r\n\t\t\t\t\tthis._chart._showDiagramIndicator(data, xCoord);\r\n\t\t\t\t\tthis._chart._showDiagramIndicator(data, xCoord);\r\n\t\t\t\t}\r\n\t\t\t\tthis._updateMarker(data);\r\n\t\t\t})\r\n\t\t);\r\n\t},\r\n\r\n\t/*\r\n\t * Finds a data entry for the given LatLng\r\n\t */\r\n\t_findItemForLatLng: function(latlng) {\r\n\t\treturn this._data[this._chart._findIndexForLatLng(latlng)];\r\n\t},\r\n\r\n\t/*\r\n\t * Finds a data entry for the given xDiagCoord\r\n\t */\r\n\t_findItemForX: function(x) {\r\n\t\treturn this._data[this._chart._findIndexForXCoord(x)];\r\n\t},\r\n\r\n\t/**\r\n\t * Fires an event of the specified type.\r\n\t */\r\n\t_fireEvt: function(type, data, propagate) {\r\n\t\tif (this.fire) this.fire(type, data, propagate);\r\n\t\tif (this._map) this._map.fire(type, data, propagate);\r\n\t},\r\n\r\n\t/*\r\n\t * Hides the position/height indicator marker drawn onto the map\r\n\t */\r\n\t_hideMarker: function() {\r\n\t\tif (this.options.autohideMarker) {\r\n\t\t\tthis._marker.remove();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Generate \"svg\" chart (DOM element).\r\n\t */\r\n\t_initChart: function(container) {\r\n\t\tlet opts = this.options;\r\n\t\tlet map = this._map;\r\n\r\n\t\tif (opts.detached) {\r\n\t\t\tlet { offsetWidth, offsetHeight} = this.eleDiv;\r\n\t\t\tif (offsetWidth > 0) opts.width = offsetWidth;\r\n\t\t\tif (offsetHeight > 20) opts.height = offsetHeight - 20; // 20 = horizontal scrollbar size.\r\n\t\t} else {\r\n\t\t\tlet { clientWidth } = map.getContainer();\r\n\t\t\topts._maxWidth = opts._maxWidth > opts.width ? opts._maxWidth : opts.width;\r\n\t\t\tthis._container.style.maxWidth = opts._maxWidth + 'px';\r\n\t\t\tif (opts._maxWidth > clientWidth) opts.width = clientWidth - 30;\r\n\t\t}\r\n\r\n\t\tPromise.all([\r\n\t\t\tthis.import(this.__D3),\r\n\t\t\tthis.import(this.__LCHART)\r\n\t\t]).then((m) => {\r\n\r\n\t\t\tlet chart = this._chart = new (m[1] || Elevation).Chart(opts, this);\r\n\t\r\n\t\t\tthis._x = this._chart._x;\r\n\t\t\tthis._y = this._chart._y;\r\n\t\r\n\t\t\td3\r\n\t\t\t\t.select(container)\r\n\t\t\t\t.call(chart.render())\r\n\t\r\n\t\t\tchart\r\n\t\t\t\t.on('reset_drag', this._hideMarker, this)\r\n\t\t\t\t.on('mouse_enter', this._onMouseEnter, this)\r\n\t\t\t\t.on('dragged', this._onDragEnd, this)\r\n\t\t\t\t.on('mouse_move', this._onMouseMove, this)\r\n\t\t\t\t.on('mouse_out', this._onMouseOut, this)\r\n\t\t\t\t.on('ruler_filter', this._onRulerFilter, this)\r\n\t\t\t\t.on('zoom', this._updateChart, this)\r\n\t\t\t\t.on('elepath_toggle', this._onToggleChart, this)\r\n\t\t\t\t.on('margins_updated', this._resizeChart, this);\r\n\t\r\n\t\r\n\t\t\tthis.fire(\"elechart_init\");\r\n\r\n\t\t\tmap\r\n\t\t\t\t.on('zoom viewreset zoomanim', this._hideMarker, this)\r\n\t\t\t\t.on('resize', this._resetView, this)\r\n\t\t\t\t.on('resize', this._resizeChart, this)\r\n\t\t\t\t.on('rotate', this._rotateMarker, this)\r\n\t\t\t\t.on('mousedown', this._resetDrag, this);\r\n\r\n\t\t\t_.on(map.getContainer(), 'mousewheel', this._resetDrag, this);\r\n\t\t\t_.on(map.getContainer(), 'touchstart', this._resetDrag, this);\r\n\t\t\t_.on(document, 'keydown', this._onKeyDown, this);\r\n\r\n\t\t\tthis\r\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateChart, this)\r\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateSummary, this);\r\n\r\n\t\t\tthis._updateChart();\r\n\t\t\tthis._updateSummary();\r\n\t\t});\r\n\r\n\r\n\t},\r\n\r\n\t_initLayer: function() {\r\n\t\tthis._layers\r\n\t\t\t.on('layeradd layerremove', ({layer, type}) => {\r\n\t\t\t\tlet node = layer.getElement && layer.getElement();\r\n\t\t\t\t_.toggleClass(node, this.options.polyline.className + ' ' + this.options.theme, type == 'layeradd');\r\n\t\t\t\t_.toggleEvent(layer, \"mousemove\", this._onMouseMoveLayer.bind(this), type == 'layeradd')\r\n\t\t\t\t_.toggleEvent(layer, \"mouseout\", this._onMouseOut.bind(this), type == 'layeradd');\r\n\t\t\t});\r\n\t},\r\n\r\n\t_initMarker: function(map) {\r\n\t\tlet pane = map.getPane('elevationPane');\r\n\t\tif (!pane) {\r\n\t\t\tpane = this._pane = map.createPane('elevationPane', map.getPane('norotatePane') || map.getPane('mapPane'));\r\n\t\t\tpane.style.zIndex = 625; // This pane is above markers but below popups.\r\n\t\t\tpane.style.pointerEvents = 'none';\r\n\t\t}\r\n\r\n\t\tif (this._renderer) this._renderer.remove()\r\n\t\tthis._renderer = L.svg({ pane: \"elevationPane\" }).addTo(this._map); // default leaflet svg renderer\r\n\r\n\t\tPromise.all([\r\n\t\t\tthis.import(this.__D3),\r\n\t\t\tthis.import(this.__LMARKER)\r\n\t\t]).then((m) => {\r\n\t\t\tthis._marker = new (m[1] || Elevation).Marker(this.options, this);\r\n\t\t\tthis.fire(\"elechart_marker\");\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Inspired by L.Control.Layers\r\n\t */\r\n\t_initButton: function(container) {\r\n\t\tL.DomEvent\r\n\t\t\t.disableClickPropagation(container)\r\n\t\t\t.disableScrollPropagation(container);\r\n\r\n\t\tthis.options.collapsed ? this._collapse() : this._expand();\r\n\r\n\t\tif (this.options.autohide) {\r\n\t\t\t_.on(container, 'mouseover', this._expand, this);\r\n\t\t\t_.on(container, 'mouseout', this._collapse, this);\r\n\t\t\tthis._map.on('click', this._collapse, this);\r\n\t\t}\r\n\r\n\t\tif (this.options.closeBtn) {\r\n\t\t\tlet link = this._button = _.create('a', \"elevation-toggle-icon\", { href: '#', title: L._('Elevation'), }, container);\r\n\t\t\t_.on(link, 'click', L.DomEvent.stop);\r\n\t\t\t_.on(link, 'click', this._toggle, this);\r\n\t\t\t_.on(link, 'focus', this._toggle, this);\r\n\t\t\tfetch(_.resolveURL(this.__btnIcon, this.options.srcFolder)).then(r => r.ok && r.text().then(img => link.innerHTML = img));\r\n\t\t}\r\n\t},\r\n\r\n\t_initSummary: function(container) {\r\n\t\tthis.import(this.__LSUMMARY).then((m)=>{\r\n\t\t\tthis._summary = new (m || Elevation).Summary({ summary: this.options.summary }, this);\r\n\r\n\t\t\tthis.on('elechart_init', () => {\r\n\t\t\t\td3.select(container).call(this._summary.render());\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Retrieve data from a remote url (HTTP).\r\n\t */\r\n\t_loadFile: function(url) {\r\n\t\tfetch(url)\r\n\t\t\t.then((response) => response.text())\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._downloadURL = url; // TODO: handle multiple urls?\r\n\t\t\t\tthis._parseFromString(data)\r\n\t\t\t\t\t.then( geojson => geojson && this._loadLayer(geojson));\r\n\t\t\t}).catch((err) => console.warn(err));\r\n\t},\r\n\r\n\t/**\r\n\t * Dynamically import only required javascript modules (code splitting)\r\n\t */\r\n\t_loadModules: function(handlers) {\r\n\t\t// First map known classnames (eg. \"Altitude\" --> L.Control.Elevation.Altitude)\r\n\t\thandlers = handlers.map((h) => typeof h === 'string' && typeof Elevation[h] !== \"undefined\" ? Elevation[h] : h);\r\n\t\t// Then load optional classes and custom imports (eg. \"Cadence\" --> import('../src/handlers/cadence.js'))\r\n\t\tlet modules = handlers.map(file => (typeof file === 'string' && this.import(this.__modulesFolder + file.toLowerCase() + '.js')) || (file instanceof Promise && file) || Promise.resolve());\r\n\t\treturn Promise.all(modules).then((m) => {\r\n\t\t\t_.each(m, (exported, i) => {\r\n\t\t\t\tlet fn = exported && Object.keys(exported)[0];\r\n\t\t\t\tif (fn) {\r\n\t\t\t\t\thandlers[i] = Elevation[fn] = (Elevation[fn] ?? exported[fn]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t_.each(handlers, h => [\"function\", \"object\"].includes(typeof h) && this._registerHandler(h));\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Simple GeoJSON data loader (L.GeoJSON).\r\n\t */\r\n\t_loadLayer: function(geojson) {\r\n\t\tlet { polyline, theme, waypoints, wptIcons, wptLabels, distanceMarkers } = this.options;\r\n\t\tlet style = L.extend({}, polyline);\r\n\r\n\t\tif (theme) {\r\n\t\t\tstyle.className += ' ' + theme;\r\n\t\t}\r\n\r\n\t\tif (geojson.name) {\r\n\t\t\tthis.track_info.name = geojson.name;\r\n\t\t}\r\n\r\n\t\tlet layer = L.geoJson(geojson, {\r\n\t\t\tdistanceMarkers: distanceMarkers,\r\n\t\t\tstyle: style,\r\n\t\t\tpointToLayer: (feature, latlng) => {\r\n\t\t\t\tif (waypoints) {\r\n\t\t\t\t\tlet { desc, name, sym } = feature.properties;\r\n\t\t\t\t\tdesc = desc || '';\r\n\t\t\t\t\tname = name || '';\r\n\t\t\t\t\t// Handle chart waypoints (dots)\r\n\t\t\t\t\tif ([true, 'dots'].includes(waypoints)) {\r\n\t\t\t\t\t\tthis._registerCheckPoint({\r\n\t\t\t\t\t\t\tlatlng: latlng,\r\n\t\t\t\t\t\t\tlabel : ([true, 'dots'].includes(wptLabels) ? name : '')\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Handle map waypoints (markers)\r\n\t\t\t\t\tif ([true, 'markers'].includes(waypoints) && wptIcons != false) {\r\n\t\t\t\t\t\treturn this._registerMarker({\r\n\t\t\t\t\t\t\tlatlng : latlng,\r\n\t\t\t\t\t\t\tsym : (sym ?? name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase(),\r\n\t\t\t\t\t\t\tcontent: [true, 'markers'].includes(wptLabels) && (name || desc) && decodeURI(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : ''))\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonEachFeature: (feature, layer) => feature.geometry && feature.geometry.type != 'Point' && this.addData(feature, layer),\r\n\t\t});\r\n\r\n\t\tthis.import(this.__D3).then(() => {\r\n\t\t\tthis._initMapIntegrations(layer);\r\n\t\t\tthis._fireEvt(\"eledata_loaded\", { data: geojson, layer: layer, name: this.track_info.name, track_info: this.track_info });\r\n\t\t});\r\n\r\n\t\treturn layer;\r\n\t},\r\n\r\n\t_onDragEnd: function({ dragstart, dragend}) {\r\n\t\tthis._hideMarker();\r\n\t\tthis.fitBounds(L.latLngBounds([dragstart.latlng, dragend.latlng]));\r\n\r\n\t\tthis.fire(\"elechart_dragged\");\r\n\t},\r\n\r\n\t_onKeyDown: function({key}) {\r\n\t\tif(!this.options.detached && key === \"Escape\"){\r\n\t\t\tthis._collapse()\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Trigger mouseenter event.\r\n\t */\r\n\t_onMouseEnter: function() {\r\n\t\tthis.fire('elechart_enter');\r\n\t},\r\n\r\n\t/*\r\n\t * Handles the moueseover the chart and displays distance and altitude level.\r\n\t */\r\n\t_onMouseMove: function({xCoord}) {\r\n\t\tif (this._chartEnabled && this._data.length) {\r\n\t\t\tlet item = this._findItemForX(xCoord);\r\n\t\t\tif (item) {\r\n\t\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\r\n\r\n\t\t\t\tthis._updateMarker(item);\r\n\t\t\t\tthis._setMapView(item);\r\n\r\n\t\t\t\tif (this._map) {\r\n\t\t\t\t\t_.addClass(this._map.getContainer(), 'elechart-hover');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.fire(\"elechart_change\", { data: item, xCoord: xCoord });\r\n\t\t\t\tthis.fire(\"elechart_hover\", { data: item, xCoord: xCoord });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Handles mouseover events of the data layers on the map.\r\n\t */\r\n\t_onMouseMoveLayer: function({latlng}) {\r\n\t\tif (this._data.length) {\r\n\t\t\tlet item = this._findItemForLatLng(latlng);\r\n\t\t\tif (item) {\r\n\t\t\t\tlet xCoord = item.xDiagCoord;\r\n\t\r\n\t\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\r\n\t\r\n\t\t\t\tthis._updateMarker(item);\r\n\t\r\n\t\t\t\tthis.fire(\"elechart_change\", { data: item, xCoord: xCoord });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Handles the moueseout over the chart.\r\n\t */\r\n\t_onMouseOut: function() {\r\n\t\tif (!this.options.detached) {\r\n\t\t\tthis._hideMarker();\r\n\t\t\tthis._chart._hideDiagramIndicator();\r\n\t\t}\r\n\r\n\t\tif (this._map) {\r\n\t\t\t_.removeClass(this._map.getContainer(), 'elechart-hover');\r\n\t\t}\r\n\r\n\t\tthis.fire(\"elechart_leave\");\r\n\t},\r\n\r\n\t/**\r\n\t * Handles the drag event over the ruler filter.\r\n\t */\r\n\t_onRulerFilter: function({coords}) {\r\n\t\tthis._updateMapSegments(coords);\r\n\t},\r\n\r\n\t/**\r\n\t * Toggle chart data on legend click\r\n\t */\r\n\t_onToggleChart: function({ name, enabled }) {\r\n\r\n\t\tthis._chartEnabled = this._chart._hasActiveLayers();\r\n\r\n\t\t// toggle layer visibility on empty chart\r\n\t\tthis._layers.eachLayer(layer => _.toggleClass(layer.getElement && layer.getElement(), this.options.polyline.className + ' ' + this.options.theme, this._chartEnabled));\r\n\r\n\t\t// toggle option value (eg. altitude = { 'disabled' || 'enabled' })\r\n\t\tthis.options[name] = !enabled && this.options[name] == 'disabled' ? 'enabled' : 'disabled';\r\n\r\n\t\t// remove marker on empty chart\r\n\t\tif (!this._chartEnabled) {\r\n\t\t\tthis._chart._hideDiagramIndicator();\r\n\t\t\tthis._marker.remove();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Simple GeoJSON Parser\r\n\t */\r\n\t_parseFromGeoJSONString: function(data) {\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(data);\r\n\t\t} catch (e) { }\r\n\t},\r\n\r\n\t/**\r\n\t * Attempt to parse raw response data (GeoJSON or XML > GeoJSON)\r\n\t */\r\n\t_parseFromString: function(data) {\r\n\t\treturn new Promise(resolve =>\r\n\t\t\tthis.import(this.__TOGEOJSON).then(() => {\r\n\t\t\t\tlet geojson;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tgeojson = this._parseFromXMLString(data.trim());\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tgeojson = this._parseFromGeoJSONString(data.toString());\r\n\t\t\t\t}\r\n\t\t\t\tif (geojson) {\r\n\t\t\t\t\tgeojson.name = geojson.name || (this._downloadURL || '').split('/').pop().split('#')[0].split('?')[0];\r\n\t\t\t\t}\r\n\t\t\t\tresolve(geojson);\r\n\t\t\t})\r\n\t\t);\r\n\t},\r\n\r\n\t/**\r\n\t * Simple XML Parser (GPX, KML, TCX)\r\n\t */\r\n\t_parseFromXMLString: function(data) {\r\n\t\tif (data.indexOf(\"<\") != 0) {\r\n\t\t\tthrow 'Invalid XML';\r\n\t\t}\r\n\t\tlet xml = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\tlet type = xml.documentElement.tagName.toLowerCase(); // \"kml\" or \"gpx\"\r\n\t\tlet name = xml.getElementsByTagName('name');\r\n\t\tif (xml.getElementsByTagName('parsererror').length) {\r\n\t\t\tthrow 'Invalid XML';\r\n\t\t}\r\n\t\tif (!(type in toGeoJSON)) {\r\n\t\t\ttype = xml.documentElement.tagName == \"TrainingCenterDatabase\" ? 'tcx' : 'gpx';\r\n\t\t}\r\n\t\tlet geojson = toGeoJSON[type](xml);\r\n\t\tgeojson.name = name.length > 0 ? (Array.from(name).find(tag => tag.parentElement.tagName == \"trk\") ?? name[0]).textContent : '';\r\n\t\treturn geojson;\r\n\t},\r\n\r\n\t/**\r\n\t * Add chart profile to diagram\r\n\t */\r\n\t_registerAreaPath: function(props) {\r\n\t\tthis.on(\"elechart_init\", () => this._chart._registerAreaPath(props));\r\n\t},\r\n\r\n\t/**\r\n\t * Add chart grid to diagram\r\n\t */\r\n\t_registerAxisGrid: function(props) {\r\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisGrid(props));\r\n\t},\r\n\r\n\t/**\r\n\t * Add chart axis to diagram\r\n\t */\r\n\t_registerAxisScale: function(props) {\r\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisScale(props));\r\n\t},\r\n\r\n\t/**\r\n\t * Add a point of interest over the diagram\r\n\t */\r\n\t_registerCheckPoint: function(props) {\r\n\t\tthis.on(\"elechart_updated\", () => this._chart._registerCheckPoint(props));\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Base handler for iterative track statistics (dist, time, z, slope, speed, acceleration, ...)\r\n\t */\r\n\t _registerDataAttribute: function(props) {\r\n\r\n\t\t// parse of \"coordinateProperties\" for later usage\r\n\t\tif (props.coordPropsToMeta) {\r\n\t\t\tthis.on(\"elepoint_init\", (e) => props.coordPropsToMeta.call(this, e));\r\n\t\t}\r\n\r\n\t\t// prevent excessive variabile instanstations\r\n\t\tlet i, curr, prev, attr = props.attr || props.name;\r\n\r\n\t\t// save here a reference to last used point\r\n\t\tlet lastValid = {};\r\n\r\n\t\t// iteration\r\n\t\tthis.on(\"elepoint_added\", ({index, point}) => {\r\n\t\t\ti = index;\r\n\r\n\t\t\tprev = curr ?? this._data[i]; // same as: this._data[i > 0 ? i - 1 : i]\r\n\t\t\tcurr = this._data[i];\r\n\r\n\t\t\t// retrieve point value\r\n\t\t\tcurr[attr] = props.pointToAttr.call(this, point, i);\r\n\r\n\t\t\t// check and fix missing data on last added point\r\n\t\t\tif (i > 0 && isNaN(prev[attr])) {\r\n\t\t\t\tif (!isNaN(lastValid[attr]) && !isNaN(curr[attr])) {\r\n\t\t\t\t\tprev[attr] = (lastValid[attr] + curr[attr]) / 2;\r\n\t\t\t\t} else if (!isNaN(lastValid[attr])) {\r\n\t\t\t\t\tprev[attr] = lastValid[attr];\r\n\t\t\t\t} else if (!isNaN(curr[attr])) {\r\n\t\t\t\t\tprev[attr] = curr[attr];\r\n\t\t\t\t}\r\n\t\t\t\t// update \"yAttr\" and \"xAttr\"\r\n\t\t\t\tif (props.meta) {\r\n\t\t\t\t\tprev[props.meta] = prev[attr];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// skip to next iteration for invalid or missing data (eg. i == 0)\r\n\t\t\tif (isNaN(curr[attr])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// update reference to last used point\r\n\t\t\tlastValid[attr] = curr[attr];\r\n\r\n\t\t\t// Limit \"crazy\" delta values.\r\n\t\t\tif (props.deltaMax) {\r\n\t\t\t\tcurr[attr] =_.wrapDelta(curr[attr], prev[attr], props.deltaMax);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Range of acceptable values.\r\n\t\t\tif (props.clampRange) {\r\n\t\t\t\tcurr[attr] = _.clamp(curr[attr], props.clampRange);\r\n\t\t\t}\r\n\r\n\t\t\t// Limit floating point precision.\r\n\t\t\tif (!isNaN(props.decimals)) {\r\n\t\t\t\tcurr[attr] = _.round(curr[attr], props.decimals);\r\n\t\t\t}\r\n\r\n\t\t\t// update \"track_info\" stats (min, max, avg, ...)\r\n\t\t\tif (props.stats) {\r\n\t\t\t\tfor (const key in props.stats) {\r\n\t\t\t\t\tlet sname = (props.statsName || attr) + (key != '' ? '_' : '');\r\n\t\t\t\t\tthis.track_info[sname + key] = props.stats[key].call(this, curr[attr], this.track_info[sname + key], this._data.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// update here some mixins (eg. complex \"track_info\" stuff)\r\n\t\t\tif (props.onPointAdded) props.onPointAdded.call(this, curr[attr], i, point);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Parse a module definition and attach related function listeners\r\n\t */\r\n\t_registerHandler: function(props) {\r\n\r\n\t\t// eg. L.Control.Altitude\r\n\t\tif (typeof props === \"function\") {\r\n\t\t\treturn this._registerHandler(props.call(this));\r\n\t\t}\r\n\r\n\t\tlet {\r\n\t\t\tname,\r\n\t\t\tattr,\r\n\t\t\trequired,\r\n\t\t\tdeltaMax,\r\n\t\t\tclampRange,\r\n\t\t\tdecimals,\r\n\t\t\tmeta,\r\n\t\t\tunit,\r\n\t\t\tcoordinateProperties,\r\n\t\t\tcoordPropsToMeta,\r\n\t\t\tpointToAttr,\r\n\t\t\tonPointAdded,\r\n\t\t\tstats,\r\n\t\t\tstatsName,\r\n\t\t\tgrid,\r\n\t\t\tscale,\r\n\t\t\tpath,\r\n\t\t\ttooltip,\r\n\t\t\tsummary\r\n\t\t} = props;\r\n\r\n\t\t// eg. \"altitude\" == true\r\n\t\tif (this.options[name] || required) {\r\n\r\n\t\t\tthis._registerDataAttribute({\r\n\t\t\t\tname,\r\n\t\t\t\tattr,\r\n\t\t\t\tmeta,\r\n\t\t\t\tdeltaMax,\r\n\t\t\t\tclampRange,\r\n\t\t\t\tdecimals,\r\n\t\t\t\tcoordPropsToMeta: _.coordPropsToMeta(coordinateProperties, meta || name, coordPropsToMeta),\r\n\t\t\t\tpointToAttr,\r\n\t\t\t\tonPointAdded,\r\n\t\t\t\tstats,\r\n\t\t\t\tstatsName,\r\n\t\t\t});\r\n\r\n\t\t\tif (grid) {\r\n\t\t\t\tthis._registerAxisGrid(L.extend({ name }, grid));\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options[name] !== \"summary\") {\r\n\t\t\t\tif (scale) this._registerAxisScale(L.extend({ name, label: unit }, scale));\r\n\t\t\t\tif (path) this._registerAreaPath(L.extend({ name }, path));\r\n\t\t\t}\r\n\r\n\t\t\tif (tooltip || props.tooltips) {\r\n\t\t\t\t_.each([tooltip, ...(props.tooltips || [])], t => t && this._registerTooltip(L.extend({ name }, t)));\r\n\t\t\t}\r\n\r\n\t\t\tif (summary) {\r\n\t\t\t\t_.each(summary, (s, k) => summary[k] = L.extend({ unit }, s));\r\n\t\t\t\tthis._registerSummary(summary);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_registerMarker({latlng, sym, content}) {\r\n\t\tlet { wptIcons } = this.options;\r\n\t\t// generate and cache appropriate icon symbol\r\n\t\tif (!wptIcons.hasOwnProperty(sym)) {\r\n\t\t\twptIcons[sym] = L.divIcon(L.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } ));\r\n\t\t}\r\n\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\r\n\t\tif (content) {\r\n\t\t\tmarker.bindPopup(content, { className: 'elevation-popup', keepInView: true }).openPopup();\r\n\t\t\tmarker.bindTooltip(content, { className: 'elevation-tooltip', direction: 'auto', sticky: true, opacity: 1 }).openTooltip();\r\n\t\t}\r\n\t\treturn this._addMarker(marker)\r\n\t},\r\n\t\r\n\t/**\r\n\t * Add chart or marker tooltip info\r\n\t */\r\n\t_registerTooltip: function(props) {\r\n\t\tprops.chart && this.on(\"elechart_init\", () => this._chart._registerTooltip(L.extend({}, props, { value: props.chart })));\r\n\t\tprops.marker && this.on(\"elechart_marker\", () => this._marker._registerTooltip(L.extend({}, props, { value: props.marker })));\r\n\t},\r\n\r\n\t/**\r\n\t * Add summary info to diagram\r\n\t */\r\n\t_registerSummary: function(props) {\r\n\t\tthis.on('elechart_summary', () => this._summary._registerSummary(props));\r\n\t},\r\n\r\n\t/*\r\n\t * Removes the drag rectangle and zoms back to the total extent of the data.\r\n\t */\r\n\t_resetDrag: function() {\r\n\t\tthis._chart._resetDrag();\r\n\t\tthis._hideMarker();\r\n\t},\r\n\r\n\t/**\r\n\t * Resets drag, marker and bounds.\r\n\t */\r\n\t_resetView: function() {\r\n\t\tif (this._map && this._map._isFullscreen) return;\r\n\t\tthis._resetDrag();\r\n\t\tthis._hideMarker();\r\n\t\tif (this.options.autofitBounds) {\r\n\t\t\tthis.fitBounds();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Hacky way for handling chart resize. Deletes it and redraw chart.\r\n\t */\r\n\t_resizeChart: function() {\r\n\t\tif (this._container && _.style(this._container, \"display\") != \"none\") {\r\n\t\t\tlet opts = this.options;\r\n\t\t\tlet newWidth = opts.detached ? (this.eleDiv || this._container).offsetWidth : _.clamp(opts._maxWidth, [0, this._map.getContainer().clientWidth - 30]);\r\n\t\t\tif (newWidth) {\r\n\t\t\t\topts.width = newWidth;\r\n\t\t\t\tif (this._chart && this._chart._chart) {\r\n\t\t\t\t\tthis._chart._chart._resize(opts);\r\n\t\t\t\t\tthis._updateChart();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._updateMapSegments();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Collapse or Expand chart control.\r\n\t */\r\n\t_toggle: function() {\r\n\t\t_.hasClass(this._container, \"elevation-expanded\") ? this._collapse() : this._expand();\r\n\t},\r\n\r\n\t/**\r\n\t * Update map center and zoom (followMarker: true)\r\n\t */\r\n\t_setMapView: function(item) {\r\n\t\tif (this._map && this.options.followMarker) {\r\n\t\t\tlet zoom = this._map.getZoom();\r\n\t\t\tlet z = this.options.zFollow;\r\n\t\t\tif (typeof z === \"number\") {\r\n\t\t\t\tthis._map.setView(item.latlng, (zoom < z ? z : zoom), { animate: true, duration: 0.25 });\r\n\t\t\t} else if (!this._map.getBounds().contains(item.latlng)) {\r\n\t\t\t\tthis._map.setView(item.latlng, zoom, { animate: true, duration: 0.25 });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Calculates [x, y] domain and then update chart.\r\n\t */\r\n\t_updateChart: function() {\r\n\t\tif (this._chart && this._container) {\r\n\t\t\tthis.fire(\"elechart_axis\");\r\n\t\r\n\t\t\tthis._chart.update({ data: this._data, options: this.options });\r\n\t\r\n\t\t\tthis._x = this._chart._x;\r\n\t\t\tthis._y = this._chart._y;\r\n\t\r\n\t\t\tthis.fire('elechart_updated');\t\t\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Update the position/height indicator marker drawn onto the map\r\n\t */\r\n\t_updateMarker: function(item) {\r\n\t\tif (this._marker) {\r\n\t\t\tthis._marker.update({\r\n\t\t\t\tmap : this._map,\r\n\t\t\t\titem : item,\r\n\t\t\t\tyCoordMax : this._yCoordMax || 0,\r\n\t\t\t\toptions : this.options\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fix marker rotation on rotated maps\r\n\t */\r\n\t_rotateMarker: function() {\r\n\t\tif (this._marker) {\r\n\t\t\tthis._marker.update();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Highlight track segments on the map.\r\n\t */\r\n\t_updateMapSegments: function(coords) {\r\n\t\tthis._markedSegments.setLatLngs(coords || []);\r\n\t\tif (coords && this._map && !this._map.hasLayer(this._markedSegments)) {\r\n\t\t\tthis._markedSegments.addTo(this._map);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Update chart summary.\r\n\t */\r\n\t_updateSummary: function() {\r\n\t\tif (this._summary) {\r\n\t\t\tthis._summary.reset();\r\n\t\t\tif (this.options.summary) {\r\n\t\t\t\tthis.fire(\"elechart_summary\");\r\n\t\t\t\tthis._summary.update();\r\n\t\t\t}\r\n\t\t\tif (this.options.downloadLink && this._downloadURL) { // TODO: generate dynamically file content instead of using static file urls.\r\n\t\t\t\tthis._summary._container.innerHTML += '<span class=\"download\"><a href=\"#\">' + L._('Download') + '</a></span>'\r\n\t\t\t\t_.select('.download a', this._summary._container).onclick = (e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tlet event = { downloadLink: this.options.downloadLink, confirm: _.saveFile.bind(this, this._downloadURL) };\r\n\t\t\t\t\tif (this.options.downloadLink == 'modal' && typeof CustomEvent === \"function\") {\r\n\t\t\t\t\t\tdocument.dispatchEvent(new CustomEvent(\"eletrack_download\", { detail: event }));\r\n\t\t\t\t\t} else if (this.options.downloadLink == 'link' || this.options.downloadLink === true) {\r\n\t\t\t\t\t\tevent.confirm();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.fire('eletrack_download', event);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Calculates chart width.\r\n\t */\r\n\t_width: function() {\r\n\t\tif (this._chart) return this._chart._width();\r\n\t\tconst { width, margins } = this.options;\r\n\t\treturn width - margins.left - margins.right;\r\n\t},\r\n\r\n\t/**\r\n\t * Calculates chart height.\r\n\t */\r\n\t_height: function() {\r\n\t\tif (this._chart) return this._chart._height();\r\n\t\tconst { height, margins } = this.options;\r\n\t\treturn height - margins.top - margins.bottom;\r\n\t},\r\n\r\n});\r\n","/*\r\n * Copyright (c) 2019, GPL-3.0+ Project, Raruto\r\n *\r\n * This file is free software: you may copy, redistribute and/or modify it\r\n * under the terms of the GNU General Public License as published by the\r\n * Free Software Foundation, either version 2 of the License, or (at your\r\n * option) any later version.\r\n *\r\n * This file is distributed in the hope that it will be useful, but\r\n * WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r\n * General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n *\r\n * This file incorporates work covered by the following copyright and\r\n * permission notice:\r\n *\r\n * Copyright (c) 2013-2016, MIT License, Felix “MrMufflon” Bache\r\n *\r\n * Permission to use, copy, modify, and/or distribute this software\r\n * for any purpose with or without fee is hereby granted, provided\r\n * that the above copyright notice and this permission notice appear\r\n * in all copies.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL\r\n * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE\r\n * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR\r\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\r\n * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,\r\n * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN\r\n * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n */\r\n\r\nimport * as _ from './utils';\r\nimport { Elevation } from './control';\r\n\r\nElevation.Utils = _;\r\n\r\nL.control.elevation = (options) => new Elevation(options);\r\n"],"names":["_.select","_.append","_.insert","_.style","_.throttle","_.Colors","_.resolveURL","_.create","_.randomId","_.off","_.each","_.replaceClass","_.on","_.toggleClass","_.toggleEvent","_.addClass","_.removeClass","_.wrapDelta","_.clamp","_.round","coordPropsToMeta","_.coordPropsToMeta","_.hasClass","_.saveFile"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-elevation.js","sources":["../src/utils.js","../src/options.js","../src/control.js","../src/index.js"],"sourcesContent":["/**\r\n * TODO: exget computed styles of theese values from actual \"CSS vars\"\r\n **/\r\nexport const Colors = {\r\n\t'lightblue': { area: '#3366CC', alpha: 0.45, stroke: '#3366CC' },\r\n\t'magenta' : { area: '#FF005E' },\r\n\t'yellow' : { area: '#FF0' },\r\n\t'purple' : { area: '#732C7B' },\r\n\t'steelblue': { area: '#4682B4' },\r\n\t'red' : { area: '#F00' },\r\n\t'lime' : { area: '#9CC222', line: '#566B13' }\r\n};\r\n\r\nconst SEC = 1000;\r\nconst MIN = SEC * 60;\r\nconst HOUR = MIN * 60;\r\nconst DAY = HOUR * 24;\r\n\r\nexport function resolveURL(src, baseUrl) {\r\n\treturn (new URL(src, (src.startsWith('../') || src.startsWith('./')) ? baseUrl : undefined)).toString()\r\n};\r\n\r\n/**\r\n * Convert a time (millis) to a human readable duration string (%Dd %H:%M'%S\")\r\n */\r\nexport function formatTime(t) {\r\n\tlet d = Math.floor(t / DAY);\r\n\tlet h = Math.floor( (t - d * DAY) / HOUR);\r\n\tlet m = Math.floor( (t - d * DAY - h * HOUR) / MIN);\r\n\tlet s = Math.round( (t - d * DAY - h * HOUR - m * MIN) / SEC);\r\n\tif ( s === 60 ) { m++; s = 0; }\r\n\tif ( m === 60 ) { h++; m = 0; }\r\n\tif ( h === 24 ) { d++; h = 0; }\r\n\treturn (d ? d + \"d \" : '') + h.toString().padStart(2, 0) + ':' + m.toString().padStart(2, 0) + \"'\" + s.toString().padStart(2, 0) + '\"';\r\n}\r\n\r\n/**\r\n * Convert a time (millis) to human readable date string (dd-mm-yyyy hh:mm:ss)\r\n */\r\n export function formatDate(format) {\r\n\tif (!format) {\r\n\t\treturn (time) => (new Date(time)).toLocaleString().replaceAll('/', '-').replaceAll(',', ' ');\r\n\t} else if (format == 'time') {\r\n\t\treturn (time) => (new Date(time)).toLocaleTimeString();\r\n\t} else if (format == 'date') {\r\n\t\treturn (time) => (new Date(time)).toLocaleDateString();\r\n\t}\r\n\treturn (time) => format(time);\r\n}\r\n\r\n/**\r\n * Generate download data event.\r\n */\r\n export function saveFile(dataURI, fileName) {\r\n\tlet a = create('a', '', { href: dataURI, target: '_new', download: fileName || \"\", style: \"display:none;\" });\r\n\tlet b = document.body;\r\n\tb.appendChild(a);\r\n\ta.click();\r\n\tb.removeChild(a);\r\n}\r\n\r\n\r\n/**\r\n * Convert SVG Path into Path2D and then update canvas\r\n */\r\n export function drawCanvas(ctx, path) {\r\n\tpath.classed('canvas-path', true);\r\n\r\n\tctx.beginPath();\r\n\tctx.moveTo(0, 0);\r\n\tlet p = new Path2D(path.attr('d'));\r\n\r\n\tctx.strokeStyle = path.attr('stroke');\r\n\tctx.fillStyle = path.attr('fill');\r\n\tctx.lineWidth = 1.25;\r\n\tctx.globalCompositeOperation = 'source-over';\r\n\r\n\t// stroke opacity\r\n\tctx.globalAlpha = path.attr('stroke-opacity') || 0.3;\r\n\tctx.stroke(p);\r\n\r\n\t// fill opacity\r\n\tctx.globalAlpha = path.attr('fill-opacity') || 0.45;\r\n\tctx.fill(p);\r\n\r\n\tctx.globalAlpha = 1;\r\n\r\n\tctx.closePath();\r\n}\r\n\r\n/**\r\n * Loop and extract GPX Extensions handled by \"@tmcw/toGeoJSON\" (eg. \"coordinateProperties\" > \"times\")\r\n */\r\nexport function coordPropsToMeta(coordProps, name, parser) {\r\n\treturn coordProps && (({props, point, id, isMulti }) => {\r\n\t\tif (props) {\r\n\t\t\tfor (const key of coordProps) {\r\n\t\t\t\tif (key in props) {\r\n\t\t\t\t\tpoint.meta[name] = (parser || parseNumeric).call(this, (isMulti ? props[key][isMulti] : props[key]), id);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Extract numeric property (id) from GeoJSON object\r\n */\r\nexport const parseNumeric = (property, id) => parseInt((typeof property === 'object' ? property[id] : property));\r\n\r\n/**\r\n * Extract datetime property (id) from GeoJSON object\r\n */\r\nexport const parseDate = (property, id) => new Date(Date.parse((typeof property === 'object' ? property[id] : property)));\r\n\r\n/**\r\n * A little bit shorter than L.DomUtil\r\n */\r\nexport const addClass = (n, str) => n && str.split(\" \").every(s => s && L.DomUtil.addClass(n, s));\r\nexport const removeClass = (n, str) => n && str.split(\" \").every(s => s && L.DomUtil.removeClass(n, s));\r\nexport const toggleClass = (n, str, cond) => (cond ? addClass : removeClass)(n, str);\r\nexport const replaceClass = (n, rem, add) => (rem && removeClass(n, rem)) || (add && addClass(n, add));\r\nexport const style = (n, k, v) => (typeof v === \"undefined\" && L.DomUtil.getStyle(n, k)) || n.style.setProperty(k, v);\r\nexport const toggleStyle = (n, k, v, cond) => style(n, k, cond ? v : '');\r\nexport const setAttributes = (n, attrs) => { for (let k in attrs) { n.setAttribute(k, attrs[k]); } };\r\nexport const toggleEvent = (el, e, fn, cond) => el[cond ? 'on' : 'off'](e, fn);\r\nexport const create = (tag, str, attrs, n) => { let elem = L.DomUtil.create(tag, str || \"\"); if (attrs) setAttributes(elem, attrs); if (n) append(n, elem); return elem; };\r\nexport const append = (n, c) => n.appendChild(c);\r\nexport const insert = (n, c, pos) => n.insertAdjacentElement(pos, c);\r\nexport const select = (str, n) => (n || document).querySelector(str);\r\nexport const each = (obj, fn) => { for (let i in obj) fn(obj[i], i); };\r\nexport const randomId = () => Math.random().toString(36).substr(2, 9);\r\n\r\n/**\r\n * TODO: use generators instead? (ie. \"yield\")\r\n */\r\nexport const iMax = (iVal, max = -Infinity) => (iVal > max ? iVal : max); \r\nexport const iMin = (iVal, min = +Infinity) => (iVal < min ? iVal : min);\r\nexport const iAvg = (iVal, avg = 0, idx = 1) => (iVal + avg * (idx - 1)) / idx;\r\nexport const iSum = (iVal, sum = 0) => iVal + sum;\r\n\r\n/**\r\n * Alias for some leaflet core functions\r\n */\r\nexport const { on, off } = L.DomEvent;\r\nexport const { throttle, wrapNum } = L.Util;\r\nexport const { hasClass } = L.DomUtil;\r\n\r\n/**\r\n * Limit floating point precision\r\n */\r\nexport const round = L.Util.formatNum;\r\n\r\n/**\r\n * Limit a number between min / max values\r\n */\r\nexport const clamp = (val, range) => range ? (val < range[0] ? range[0] : val > range[1] ? range[1] : val) : val;\r\n\r\n/**\r\n * Limit a delta difference between two values\r\n */\r\nexport const wrapDelta = (curr, prev, deltaMax) => Math.abs(curr - prev) > deltaMax ? prev + deltaMax * Math.sign(curr - prev) : curr;","import * as _ from './utils';\r\n\r\nexport var Options = {\r\n\tautofitBounds: true,\r\n\tautohide: false,\r\n\tautohideMarker: true,\r\n\talmostover: true,\r\n\taltitude: true,\r\n\tcloseBtn: true,\r\n\tcollapsed: false,\r\n\tdetached: true,\r\n\tdistance: true,\r\n\tdistanceMarkers: { lazy: true, distance: true, direction: true },\r\n\tdragging: !L.Browser.mobile,\r\n\tdownloadLink: 'link',\r\n\televationDiv: \"#elevation-div\",\r\n\tedgeScale: { bar: true, icon: false, coords: false },\r\n\tfollowMarker: true,\r\n\timperial: false,\r\n\tlegend: true,\r\n\thandlers: [\"Distance\", \"Time\", \"Altitude\", \"Slope\", \"Speed\", \"Acceleration\"],\r\n\thotline: 'elevation',\r\n\tmarker: 'elevation-line',\r\n\tmarkerIcon: L.divIcon({\r\n\t\tclassName: 'elevation-position-marker',\r\n\t\thtml: '<i class=\"elevation-position-icon\"></i>',\r\n\t\ticonSize: [32, 32],\r\n\t\ticonAnchor: [16, 16],\r\n\t}),\r\n\tposition: \"topright\",\r\n\tpolyline: {\r\n\t\tclassName: 'elevation-polyline',\r\n\t\tcolor: '#000',\r\n\t\topacity: 0.75,\r\n\t\tweight: 5,\r\n\t\tlineCap: 'round'\r\n\t},\r\n\tpolylineSegments: {\r\n\t\tclassName: 'elevation-polyline-segments',\r\n\t\tcolor: '#F00',\r\n\t\tinteractive: false,\r\n\t},\r\n\tpreferCanvas: false,\r\n\treverseCoords: false,\r\n\truler: true,\r\n\ttheme: \"lightblue-theme\",\r\n\tsummary: 'inline',\r\n\tslope: false,\r\n\tspeed: false,\r\n\ttime: true,\r\n\ttimeFactor: 3600,\r\n\ttimestamps: false,\r\n\ttrkStart: { className: 'start-marker', radius: 6, weight: 2, color: '#fff', fillColor: '#00d800', fillOpacity: 1, interactive: false },\r\n\ttrkEnd: { className: 'end-marker', radius: 6, weight: 2, color: '#fff', fillColor: '#ff0606', fillOpacity: 1, interactive: false },\r\n\twaypoints: true,\r\n\twptIcons: {\r\n\t\t'': L.divIcon({\r\n\t\t\tclassName: 'elevation-waypoint-marker',\r\n\t\t\thtml: '<i class=\"elevation-waypoint-icon default\"></i>',\r\n\t\t\ticonSize: [30, 30],\r\n\t\t\ticonAnchor: [8, 30],\r\n\t\t}),\r\n\t},\r\n\twptLabels: true,\r\n\txAttr: \"dist\",\r\n\txLabel: \"km\",\r\n\tyAttr: \"z\",\r\n\tyLabel: \"m\",\r\n\tzFollow: false,\r\n\tzooming: !L.Browser.Mobile,\r\n\r\n\t// Quite uncommon and undocumented options\r\n\tmargins: { top: 30, right: 30, bottom: 30, left: 40 },\r\n\theight: (screen.height * 0.3) || 200,\r\n\twidth: (screen.width * 0.6) || 600,\r\n\txTicks: undefined,\r\n\tyTicks: undefined,\r\n\r\n\tdecimalsX: 2,\r\n\tdecimalsY: 0,\r\n\tforceAxisBounds: false,\r\n\tinterpolation: \"curveLinear\",\r\n\tyAxisMax: undefined,\r\n\tyAxisMin: undefined,\r\n\r\n\t// Prevent CORS issues for relative locations (dynamic import)\r\n\tsrcFolder: ((document.currentScript && document.currentScript.src) || (import.meta && import.meta.url)).split(\"/\").slice(0,-1).join(\"/\") + '/',\r\n};\r\n","import * as _ from './utils';\r\nimport { Options } from './options';\r\n\r\n// \"leaflet-i18n\" fallback\r\nif (!L._ || !L.i18n) {\r\n\tL._ = L.i18n = (string, data) => string;\r\n}\r\n\r\nexport const Elevation = L.Control.Elevation = L.Control.extend({\r\n\r\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\r\n\r\n\toptions: Options,\r\n\t__mileFactor: 0.621371, // 1 km = (0.621371 mi)\r\n\t__footFactor: 3.28084, // 1 m = (3.28084 ft)\r\n\t__D3: 'https://unpkg.com/d3@7.8.4/dist/d3.min.js',\r\n\t__TOGEOJSON: 'https://unpkg.com/@tmcw/togeojson@5.6.0/dist/togeojson.umd.js',\r\n\t__LGEOMUTIL: 'https://unpkg.com/leaflet-geometryutil@0.10.1/src/leaflet.geometryutil.js',\r\n\t__LALMOSTOVER: 'https://unpkg.com/leaflet-almostover@1.0.1/src/leaflet.almostover.js',\r\n\t__LHOTLINE: '../libs/leaflet-hotline.min.js',\r\n\t__LDISTANCEM: '../libs/leaflet-distance-marker.min.js',\r\n\t__LEDGESCALE: '../libs/leaflet-edgescale.min.js',\r\n\t__LCHART: '../src/components/chart.js',\r\n\t__LMARKER: '../src/components/marker.js',\r\n\t__LSUMMARY: '../src/components/summary.js',\r\n\t__modulesFolder: '../src/handlers/',\r\n\t__btnIcon: '../images/elevation.svg',\r\n\r\n\t/*\r\n\t * Add data to the diagram either from GPX or GeoJSON and update the axis domain and data\r\n\t */\r\n\taddData: function(d, layer) {\r\n\t\tthis.import(this.__D3)\r\n\t\t\t.then(() => {\r\n\t\t\t\tif (this._modulesLoaded) {\r\n\t\t\t\t\tlayer = layer ?? (d.on && d);\r\n\t\t\t\t\tthis._addData(d);\r\n\t\t\t\t\tthis._addLayer(layer);\r\n\t\t\t\t\tthis._fireEvt(\"eledata_added\", { data: d, layer: layer, track_info: this.track_info });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.once('modules_loaded', () => this.addData(d,layer));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Adds the control to the given map.\r\n\t */\r\n\taddTo: function(map) {\r\n\t\tif (this.options.detached) {\r\n\t\t\tlet parent = _.select(this.options.elevationDiv);\r\n\t\t\tlet eleDiv = this.onAdd(map);\r\n\t\t\tparent ? _.append(parent, eleDiv) : _.insert(map.getContainer(), eleDiv, 'afterend');\r\n\t\t} else {\r\n\t\t\tL.Control.prototype.addTo.call(this, map);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/*\r\n\t * Reset data and display\r\n\t */\r\n\tclear: function() {\r\n\t\tif (this._marker) this._marker.remove();\r\n\t\tif (this._chart) this._clearChart();\r\n\t\tif (this._layers) this._clearLayers(this._layers);\r\n\t\tif (this._markers) this._clearLayers(this._markers);\r\n\t\tif (this._circleMarkers) this._circleMarkers.remove();\r\n\t\tif (this._hotline) this._clearLayers(this._hotline);\r\n\r\n\t\tthis._data = [];\r\n\t\tthis.track_info = {};\r\n\r\n\t\tthis._fireEvt(\"eledata_clear\");\r\n\r\n\t\tthis._updateChart();\r\n\t},\r\n\r\n\t_clearChart: function() {\r\n\t\tif (this._events && this._events.elechart_updated) {\r\n\t\t\tthis._events.elechart_updated.forEach(({fn, ctx}) => this.off('elechart_updated', fn, ctx));\r\n\t\t}\r\n\t\tif (this._chart && this._chart._container) {\r\n\t\t\tthis._chart._container.selectAll('g.point .point').remove();\r\n\t\t\tthis._chart.clear();\r\n\t\t}\r\n\t},\r\n\r\n\t_clearLayers: function(l) {\r\n\t\tl = l || this._layers;\r\n\t\tif (l && l.eachLayer) {\r\n\t\t\tl.eachLayer(f => f.remove())\r\n\t\t\tl.clearLayers();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * TODO: Create a base class to handle custom data attributes (heart rate, cadence, temperature, ...)\r\n\t * \r\n\t * @link https://leafletjs.com/examples/extending/extending-3-controls.html#handlers\r\n\t */\r\n\t// addHandler: function (name, HandlerClass) {\r\n\t// \tif (HandlerClass) {\r\n\t// \t\tlet handler = this[name] = new HandlerClass(this);\r\n\t// \t\tthis.handlers.push(handler);\r\n\t// \t\tif (this.options[name]) {\r\n\t// \t\t\thandler.enable();\r\n\t// \t\t}\r\n\t// \t}\r\n\t// \treturn this;\r\n\t// },\r\n\r\n\t/**\r\n\t * Disable chart brushing.\r\n\t */\r\n\tdisableBrush: function() {\r\n\t\tthis._chart._brushEnabled = false;\r\n\t\tthis._resetDrag();\r\n\t},\r\n\r\n\t/**\r\n\t * Enable chart brushing.\r\n\t */\r\n\tenableBrush: function() {\r\n\t\tthis._chart._brushEnabled = true;\r\n\t},\r\n\r\n\t/**\r\n\t * Disable chart zooming.\r\n\t */\r\n\tdisableZoom: function() {\r\n\t\tthis._chart._zoomEnabled = false;\r\n\t\tthis._chart._resetZoom();\r\n\t},\r\n\r\n\t/**\r\n\t * Enable chart zooming.\r\n\t */\r\n\tenableZoom: function() {\r\n\t\tthis._chart._zoomEnabled = true;\r\n\t},\r\n\r\n\t/**\r\n\t * Sets a map view that contains the given geographical bounds.\r\n\t */\r\n\tfitBounds: function(bounds) {\r\n\t\tbounds = bounds || this.getBounds();\r\n\t\tif (this._map && bounds.isValid()) this._map.fitBounds(bounds);\r\n\t},\r\n\r\n\tgetBounds: function(data) {\r\n\t\treturn L.latLngBounds((data || this._data).map((d) => d.latlng));\r\n\t},\r\n\r\n\t/**\r\n\t * Get default zoom level (followMarker: true).\r\n\t */\r\n\tgetZFollow: function() {\r\n\t\treturn this.options.zFollow;\r\n\t},\r\n\r\n\t/**\r\n\t * Hide current elevation chart profile.\r\n\t */\r\n\thide: function() {\r\n\t\t_.style(this._container, \"display\", \"none\");\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize chart control \"options\" and \"container\".\r\n\t */\r\n\tinitialize: function(opts) {\r\n\r\n\t\t// opts = L.setOptions(this, opts);\r\n\r\n\t\t// Fixes: https://github.com/Raruto/leaflet-elevation/pull/240\r\n\t\topts = L.setOptions(this, L.extend({}, structuredClone(Options), opts)); // \"deep copy\" nested objects (multiple charts)\r\n\r\n\t\tthis._data = [];\r\n\t\tthis._layers = L.featureGroup();\r\n\t\tthis._markers = L.featureGroup();\r\n\t\tthis._hotline = L.featureGroup();\r\n\t\tthis._circleMarkers = L.featureGroup();\r\n\t\tthis._markedSegments = L.polyline([]);\r\n\t\tthis._start = L.circleMarker([0,0], (opts.trkStart || Options.trkStart));\r\n\t\tthis._end = L.circleMarker([0,0], (opts.trkEnd || Options.trkEnd));\r\n\t\tthis._chartEnabled = true;\r\n\t\tthis._yCoordMax = -Infinity;\r\n\t\tthis.track_info = {};\r\n\t\t// this.handlers = [];\r\n\r\n\t\tif (opts.followMarker) this._setMapView = _.throttle(this._setMapView, 300, this);\r\n\t\tif (opts.legend) opts.margins.bottom += 30;\r\n\t\tif (opts.theme) opts.polylineSegments.className += ' ' + opts.theme;\r\n\t\tif (opts.wptIcons === true) opts.wptIcons = Options.wptIcons;\r\n\t\tif (opts.distanceMarkers === true) opts.distanceMarkers = Options.distanceMarkers;\r\n\t\tif (opts.trkStart) this._start.addTo(this._circleMarkers);\r\n\t\tif (opts.trkEnd) this._end.addTo(this._circleMarkers);\r\n\r\n\r\n\t\tthis._markedSegments.setStyle(opts.polylineSegments);\r\n\r\n\t\t// Leaflet canvas renderer colors\r\n\t\tL.extend(_.Colors, opts.colors || {});\r\n\r\n\t\t// Various stuff\r\n\t\tthis._fixCanvasPaths();\r\n\t\tthis._fixTooltipSize();\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Javascript scripts downloader (lazy loader)\r\n\t */\r\n\timport: function(src, condition) {\r\n\t\tswitch(src) {\r\n\t\t\tcase this.__D3: condition = typeof d3 !== 'object'; break;\r\n\t\t\tcase this.__TOGEOJSON: condition = typeof toGeoJSON !== 'object'; break;\r\n\t\t\tcase this.__LGEOMUTIL: condition = typeof L.GeometryUtil !== 'object'; break;\r\n\t\t\tcase this.__LALMOSTOVER: condition = typeof L.Handler.AlmostOver !== 'function'; break;\r\n\t\t\tcase this.__LDISTANCEM: condition = typeof L.DistanceMarkers !== 'function'; break;\r\n\t\t\tcase this.__LEDGESCALE: condition = typeof L.Control.EdgeScale !== 'function'; break;\r\n\t\t\tcase this.__LHOTLINE: condition = typeof L.Hotline !== 'function'; break;\r\n\t\t}\r\n\t\treturn condition !== false ? import(_.resolveURL(src, this.options.srcFolder)) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Load elevation data (GPX, GeoJSON, KML or TCX).\r\n\t */\r\n\tload: function(data) {\r\n\t\tthis._parseFromString(data).then( geojson => geojson ? this._loadLayer(geojson) : this._loadFile(data));\r\n\t},\r\n\r\n\t/**\r\n\t * Create container DOM element and related event listeners.\r\n\t * Called on control.addTo(map).\r\n\t */\r\n\tonAdd: function(map) {\r\n\t\tthis._map = map;\r\n\r\n\t\tlet container = this._container = _.create(\"div\", \"elevation-control \" + this.options.theme + \" \" + (this.options.detached ? 'elevation-detached' : 'leaflet-control'), this.options.detached ? { id: 'elevation-' + _.randomId() } : {});\r\n\r\n\t\tif (!this.eleDiv) this.eleDiv = container;\r\n\r\n\t\tthis._loadModules(this.options.handlers).then(() => { // Inject here required modules (data handlers)\r\n\t\t\tthis._initChart(container);\r\n\t\t\tthis._initButton(container);\r\n\t\t\tthis._initSummary(container);\r\n\t\t\tthis._initMarker(map);\r\n\t\t\tthis._initLayer(map);\r\n\t\t\tthis._modulesLoaded = true;\r\n\t\t\tthis.fire('modules_loaded');\r\n\t\t});\r\n\r\n\t\tthis.fire('add');\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\t/**\r\n\t * Clean up control code and related event listeners.\r\n\t * Called on control.remove().\r\n\t */\r\n\tonRemove: function(map) {\r\n\t\tthis._container = null;\r\n\r\n\t\tmap\r\n\t\t\t.off('zoom viewreset zoomanim', this._hideMarker, this)\r\n\t\t\t.off('resize', this._resetView, this)\r\n\t\t\t.off('resize', this._resizeChart, this)\r\n\t\t\t.off('mousedown', this._resetDrag, this);\r\n\r\n\t\t_.off(map.getContainer(), 'mousewheel', this._resetDrag, this);\r\n\t\t_.off(map.getContainer(), 'touchstart', this._resetDrag, this);\r\n\t\t_.off(document, 'keydown', this._onKeyDown, this);\r\n\r\n\t\tthis\r\n\t\t\t.off('eledata_added eledata_loaded', this._updateChart, this)\r\n\t\t\t.off('eledata_added eledata_loaded', this._updateSummary, this);\r\n\r\n\t\tthis.fire('remove');\r\n\t},\r\n\r\n\t/**\r\n\t * Redraws the chart control. Sometimes useful after screen resize.\r\n\t */\r\n\tredraw: function() {\r\n\t\tthis._resizeChart();\r\n\t},\r\n\r\n\t/**\r\n\t * Set default zoom level (followMarker: true).\r\n\t */\r\n\tsetZFollow: function(zoom) {\r\n\t\tthis.options.zFollow = zoom;\r\n\t},\r\n\r\n\t/**\r\n\t * Hide current elevation chart profile.\r\n\t */\r\n\tshow: function() {\r\n\t\t_.style(this._container, \"display\", \"block\");\r\n\t},\r\n\r\n\t/*\r\n\t * Parsing data either from GPX or GeoJSON and update the diagram data\r\n\t */\r\n\t_addData: function(d) {\r\n\t\tif (!d) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Standard GeoJSON\r\n\t\tif (d.type === \"FeatureCollection\" ) {\r\n\t\t\treturn _.each(d.features, feature => this._addData(feature));\r\n\t\t} else if (d.type === \"Feature\") {\r\n\t\t\tlet geom = d.geometry;\r\n\t\t\tif (geom) {\r\n\t\t\t\tswitch (geom.type) {\r\n\t\t\t\t\tcase 'LineString':\t\treturn this._addGeoJSONData(geom.coordinates, d.properties);\r\n\t\t\t\t\tcase 'MultiLineString':\treturn _.each(geom.coordinates, (coords, i) => this._addGeoJSONData(coords, d.properties, i));\r\n\t\t\t\t\tcase 'Point':\r\n\t\t\t\t\tdefault:\t\t\t\treturn console.warn('Unsopperted GeoJSON feature geometry type:' + geom.type);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fallback for leaflet layers (eg. L.Gpx)\r\n\t\tif (d._latlngs) {\r\n\t\t\treturn this._addGeoJSONData(d._latlngs, d.feature && d.feature.properties);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t/*\r\n\t * Parsing of GeoJSON data lines and their elevation in z-coordinate\r\n\t */\r\n\t_addGeoJSONData: function(coords, properties, nestingLevel) {\r\n\r\n\t\t// \"coordinateProperties\" property is generated inside \"@tmcw/toGeoJSON\"\r\n\t\tlet props = (properties && properties.coordinateProperties) || properties;\r\n\r\n\t\tcoords.forEach((point, i) => {\r\n\r\n\t\t\t// GARMIN_EXTENSIONS = [\"hr\", \"cad\", \"atemp\", \"wtemp\", \"depth\", \"course\", \"bearing\"];\r\n\t\t\tpoint.meta = point.meta ?? { time: null, ele: null };\r\n\t\t\t\r\n\t\t\tpoint.prev = (attr) => (attr ? this._data[i > 0 ? i - 1 : 0][attr] : this._data[i > 0 ? i - 1 : 0]);\r\n\r\n\t\t\tthis.fire(\"elepoint_init\", { point: point, props: props, id: i, isMulti: nestingLevel });\r\n\r\n\t\t\tthis._addPoint(\r\n\t\t\t\tpoint.lat ?? point[1], \r\n\t\t\t\tpoint.lng ?? point[0],\r\n\t\t\t\tpoint.alt ?? point.meta.ele ?? point[2]\r\n\t\t\t);\r\n\r\n\t\t\tthis.fire(\"elepoint_added\", { point: point, index: this._data.length - 1 });\r\n\r\n\t\t\tif (this._yCoordMax < this._data[this._data.length - 1][this.options.yAttr]) this._yCoordMax = this._data[this._data.length - 1][this.options.yAttr];\r\n\t\t});\r\n\r\n\t\tthis.fire(\"eletrack_added\", { coords: coords, index: this._data.length - 1 });\r\n\t},\r\n\r\n\t/*\r\n\t * Parse and push a single (x, y, z) point to current elevation profile.\r\n\t */\r\n\t_addPoint: function(x, y, z) {\r\n\t\tif (this.options.reverseCoords) {\r\n\t\t\t[x, y] = [y, x];\r\n\t\t}\r\n\r\n\t\tthis._data.push({\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tz: z,\r\n\t\t\tlatlng: L.latLng(x, y, z)\r\n\t\t});\r\n\r\n\t\tthis.fire(\"eledata_updated\", { index: this._data.length - 1 });\r\n\t},\r\n\r\n\t_addLayer: function(layer) {\r\n\t\tif (layer) this._layers.addLayer(layer)\r\n\t\t// Postpone adding the distance markers (lazy: true)\r\n\t\tif (layer && this.options.distanceMarkers && this.options.distanceMarkers.lazy) {\r\n\t\t\tlayer.on('add remove', ({target, type}) => L.DistanceMarkers && target instanceof L.Polyline && target[type + 'DistanceMarkers']());\r\n\t\t}\r\n\t\treturn layer;\r\n\t},\r\n\r\n\t_addMarker: function(marker) {\r\n\t\tif (marker) this._markers.addLayer(marker)\r\n\t\treturn marker;\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.AlmostOver\" integration\r\n\t */\r\n\t_initAlmostOverHandler: function(map, layer) {\r\n\t\treturn (map && this.options.almostOver && !L.Browser.mobile) ? Promise.all([\r\n\t\t\tthis.import(this.__LGEOMUTIL),\r\n\t\t\tthis.import(this.__LALMOSTOVER)\r\n\t\t]).then(() => {\r\n\t\t\tmap.addHandler('almostOver', L.Handler.AlmostOver)\r\n\t\t\tif (L.GeometryUtil && map.almostOver && map.almostOver.enabled()) {\r\n\t\t\t\tmap.almostOver.addLayer(layer);\r\n\t\t\t\tmap\r\n\t\t\t\t\t.on('almost:move', (e) => this._onMouseMoveLayer(e))\r\n\t\t\t\t\t.on('almost:out', (e) => this._onMouseOut(e));\r\n\t\t\t}\r\n\t\t}) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.DistanceMarkers\" integration\r\n\t */\r\n\t_initDistanceMarkers: function() {\r\n\t\treturn this.options.distanceMarkers ? Promise.all([this.import(this.__LGEOMUTIL), this.import(this.__LDISTANCEM)]) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.Control.EdgeScale\" integration\r\n\t */\r\n\t_initEdgeScale: function(map) {\r\n\t\treturn this.options.edgeScale ? Promise.all([this.import(this.__LEDGESCALE)])\r\n\t\t\t.then(() => {\r\n\t\t\t\tmap.edgeScaleControl = map.edgeScaleControl || L.control.edgeScale('boolean' !== typeof this.options.edgeScale ? this.options.edgeScale : {}).addTo(map);\r\n\t\t\t}) : Promise.resolve();\r\n\t},\r\n\r\n\t_initHotLine: function(layer) {\r\n\t\tlet prop = typeof this.options.hotline == 'string' ? this.options.hotline : 'elevation';\r\n\t\treturn this.options.hotline ? this.import(this.__LHOTLINE)\r\n\t\t\t.then(() => {\r\n\t\t\t\tlayer.eachLayer((trkseg) => {\r\n\t\t\t\t\tif(trkseg.feature.geometry.type != \"Point\") {\r\n\t\t\t\t\t\tlet geo = L.geoJson(trkseg.toGeoJSON(), { coordsToLatLng: (coords) => L.latLng(coords[0], coords[1], coords[2] * (this.options.altitudeFactor || 1))});\r\n\t\t\t\t\t\tlet line = L.hotline(geo.toGeoJSON().features[0].geometry.coordinates, {\r\n\t\t\t\t\t\t\trenderer: L.Hotline.renderer(),\r\n\t\t\t\t\t\t\tmin: isFinite(this.track_info[prop + '_min']) ? this.track_info[prop + '_min'] : 0,\r\n\t\t\t\t\t\t\tmax: isFinite(this.track_info[prop + '_max']) ? this.track_info[prop + '_max'] : 1,\r\n\t\t\t\t\t\t\tpalette: {\r\n\t\t\t\t\t\t\t\t0.0: '#008800',\r\n\t\t\t\t\t\t\t\t0.5: '#ffff00',\r\n\t\t\t\t\t\t\t\t1.0: '#ff0000'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tweight: 5,\r\n\t\t\t\t\t\t\toutlineColor: '#000000',\r\n\t\t\t\t\t\t\toutlineWidth: 1\r\n\t\t\t\t\t\t}).addTo(this._hotline);\r\n\t\t\t\t\t\tlet alpha = trkseg.options.style && trkseg.options.style.opacity || 1;\r\n\t\t\t\t\t\ttrkseg.on('add remove', ({type}) => {\r\n\t\t\t\t\t\t\ttrkseg.setStyle({opacity: (type == 'add' ? 0 : alpha)});\r\n\t\t\t\t\t\t\tline[(type == 'add' ? 'addTo' : 'removeFrom')](trkseg._map);\r\n\t\t\t\t\t\t\tif (line._renderer) line._renderer._container.parentElement.insertBefore(line._renderer._container, line._renderer._container.parentElement.firstChild);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}) : Promise.resolve();\r\n\t},\r\n\r\n\t/**\r\n\t * Initialize \"L.AlmostOver\" and \"L.DistanceMarkers\"\r\n\t */\r\n\t_initMapIntegrations: function(layer) {\r\n\t\tlet map = this._map;\r\n\t\tif (map) {\r\n\t\t\tif (this._data.length) {\r\n\t\t\t\tthis._start.setLatLng(this._data[0].latlng);\r\n\t\t\t\tthis._end.setLatLng(this._data[this._data.length -1].latlng);\r\n\t\t\t}\r\n\t\t\tPromise.all([\r\n\t\t\t\tthis._initHotLine(layer),\r\n\t\t\t\tthis._initAlmostOverHandler(map, layer),\r\n\t\t\t\tthis._initDistanceMarkers(),\r\n\t\t\t\tthis._initEdgeScale(map),\r\n\t\t\t]).then(() => {\r\n\t\t\t\tif\t(this.options.polyline) {\r\n\t\t\t\t\tlayer.addTo(map);\r\n\t\t\t\t\tthis._circleMarkers.addTo(map);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.options.autofitBounds) {\r\n\t\t\t\t\tthis.fitBounds(layer.getBounds());\r\n\t\t\t\t}\r\n\t\t\t\tmap.invalidateSize();\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.once('add', () => this._initMapIntegrations(layer));\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Collapse current chart control.\r\n\t */\r\n\t_collapse: function() {\r\n\t\t_.replaceClass(this._container, 'elevation-expanded', 'elevation-collapsed');\r\n\t\tif (this._map) this._map.invalidateSize();\r\n\t},\r\n\r\n\t/*\r\n\t * Expand current chart control.\r\n\t */\r\n\t_expand: function() {\r\n\t\t_.replaceClass(this._container, 'elevation-collapsed', 'elevation-expanded');\r\n\t\tif (this._map) this._map.invalidateSize();\r\n\t},\r\n\r\n\t/**\r\n\t * Add some basic colors to leaflet canvas renderer (preferCanvas: true).\r\n\t */\r\n\t_fixCanvasPaths: function() {\r\n\t\tlet oldProto = L.Canvas.prototype._fillStroke;\r\n\t\tlet control = this;\r\n\r\n\t\tlet theme = this.options.theme.split(' ')[0].replace('-theme', '');\r\n\t\tlet color = _.Colors[theme] || {};\r\n\r\n\t\tL.Canvas.include({\r\n\t\t\t_fillStroke: function(ctx, layer) {\r\n\t\t\t\tif (control._layers.hasLayer(layer)) {\r\n\r\n\t\t\t\t\tlet options = layer.options;\r\n\r\n\t\t\t\t\toptions.color = color.line || color.area || theme;\r\n\t\t\t\t\toptions.stroke = !!options.color;\r\n\r\n\t\t\t\t\toldProto.call(this, ctx, layer);\r\n\r\n\t\t\t\t\tif (options.stroke && options.weight !== 0) {\r\n\t\t\t\t\t\tlet oldVal = ctx.globalCompositeOperation || 'source-over';\r\n\t\t\t\t\t\tctx.globalCompositeOperation = 'destination-over'\r\n\t\t\t\t\t\tctx.strokeStyle = color.outline || '#FFF';\r\n\t\t\t\t\t\tctx.lineWidth = options.weight * 1.75;\r\n\t\t\t\t\t\tctx.stroke();\r\n\t\t\t\t\t\tctx.globalCompositeOperation = oldVal;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\toldProto.call(this, ctx, layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Partial fix for initial tooltip size\r\n\t * \r\n\t * @link https://github.com/Raruto/leaflet-elevation/issues/81#issuecomment-713477050\r\n\t */\r\n\t_fixTooltipSize: function() {\r\n\t\tthis.on('elechart_init', () =>\r\n\t\t\tthis.once('elechart_change elechart_hover', ({data, xCoord}) => {\r\n\t\t\t\tif (this._chartEnabled) {\r\n\t\t\t\t\tthis._chart._showDiagramIndicator(data, xCoord);\r\n\t\t\t\t\tthis._chart._showDiagramIndicator(data, xCoord);\r\n\t\t\t\t}\r\n\t\t\t\tthis._updateMarker(data);\r\n\t\t\t})\r\n\t\t);\r\n\t},\r\n\r\n\t/*\r\n\t * Finds a data entry for the given LatLng\r\n\t */\r\n\t_findItemForLatLng: function(latlng) {\r\n\t\treturn this._data[this._chart._findIndexForLatLng(latlng)];\r\n\t},\r\n\r\n\t/*\r\n\t * Finds a data entry for the given xDiagCoord\r\n\t */\r\n\t_findItemForX: function(x) {\r\n\t\treturn this._data[this._chart._findIndexForXCoord(x)];\r\n\t},\r\n\r\n\t/**\r\n\t * Fires an event of the specified type.\r\n\t */\r\n\t_fireEvt: function(type, data, propagate) {\r\n\t\tif (this.fire) this.fire(type, data, propagate);\r\n\t\tif (this._map) this._map.fire(type, data, propagate);\r\n\t},\r\n\r\n\t/*\r\n\t * Hides the position/height indicator marker drawn onto the map\r\n\t */\r\n\t_hideMarker: function() {\r\n\t\tif (this.options.autohideMarker) {\r\n\t\t\tthis._marker.remove();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Generate \"svg\" chart (DOM element).\r\n\t */\r\n\t_initChart: function(container) {\r\n\t\tlet opts = this.options;\r\n\t\tlet map = this._map;\r\n\r\n\t\tif (opts.detached) {\r\n\t\t\tlet { offsetWidth, offsetHeight} = this.eleDiv;\r\n\t\t\tif (offsetWidth > 0) opts.width = offsetWidth;\r\n\t\t\tif (offsetHeight > 20) opts.height = offsetHeight - 20; // 20 = horizontal scrollbar size.\r\n\t\t} else {\r\n\t\t\tlet { clientWidth } = map.getContainer();\r\n\t\t\topts._maxWidth = opts._maxWidth > opts.width ? opts._maxWidth : opts.width;\r\n\t\t\tthis._container.style.maxWidth = opts._maxWidth + 'px';\r\n\t\t\tif (opts._maxWidth > clientWidth) opts.width = clientWidth - 30;\r\n\t\t}\r\n\r\n\t\tPromise.all([\r\n\t\t\tthis.import(this.__D3),\r\n\t\t\tthis.import(this.__LCHART)\r\n\t\t]).then((m) => {\r\n\r\n\t\t\tlet chart = this._chart = new (m[1] || Elevation).Chart(opts, this);\r\n\t\r\n\t\t\tthis._x = this._chart._x;\r\n\t\t\tthis._y = this._chart._y;\r\n\t\r\n\t\t\td3\r\n\t\t\t\t.select(container)\r\n\t\t\t\t.call(chart.render())\r\n\t\r\n\t\t\tchart\r\n\t\t\t\t.on('reset_drag', this._hideMarker, this)\r\n\t\t\t\t.on('mouse_enter', this._onMouseEnter, this)\r\n\t\t\t\t.on('dragged', this._onDragEnd, this)\r\n\t\t\t\t.on('mouse_move', this._onMouseMove, this)\r\n\t\t\t\t.on('mouse_out', this._onMouseOut, this)\r\n\t\t\t\t.on('ruler_filter', this._onRulerFilter, this)\r\n\t\t\t\t.on('zoom', this._updateChart, this)\r\n\t\t\t\t.on('elepath_toggle', this._onToggleChart, this)\r\n\t\t\t\t.on('margins_updated', this._resizeChart, this);\r\n\t\r\n\t\r\n\t\t\tthis.fire(\"elechart_init\");\r\n\r\n\t\t\tmap\r\n\t\t\t\t.on('zoom viewreset zoomanim', this._hideMarker, this)\r\n\t\t\t\t.on('resize', this._resetView, this)\r\n\t\t\t\t.on('resize', this._resizeChart, this)\r\n\t\t\t\t.on('rotate', this._rotateMarker, this)\r\n\t\t\t\t.on('mousedown', this._resetDrag, this);\r\n\r\n\t\t\t_.on(map.getContainer(), 'mousewheel', this._resetDrag, this);\r\n\t\t\t_.on(map.getContainer(), 'touchstart', this._resetDrag, this);\r\n\t\t\t_.on(document, 'keydown', this._onKeyDown, this);\r\n\r\n\t\t\tthis\r\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateChart, this)\r\n\t\t\t\t.on('eledata_added eledata_loaded', this._updateSummary, this);\r\n\r\n\t\t\tthis._updateChart();\r\n\t\t\tthis._updateSummary();\r\n\t\t});\r\n\r\n\r\n\t},\r\n\r\n\t_initLayer: function() {\r\n\t\tthis._layers\r\n\t\t\t.on('layeradd layerremove', ({layer, type}) => {\r\n\t\t\t\tlet node = layer.getElement && layer.getElement();\r\n\t\t\t\t_.toggleClass(node, this.options.polyline.className + ' ' + this.options.theme, type == 'layeradd');\r\n\t\t\t\t_.toggleEvent(layer, \"mousemove\", this._onMouseMoveLayer.bind(this), type == 'layeradd')\r\n\t\t\t\t_.toggleEvent(layer, \"mouseout\", this._onMouseOut.bind(this), type == 'layeradd');\r\n\t\t\t});\r\n\t},\r\n\r\n\t_initMarker: function(map) {\r\n\t\tlet pane = map.getPane('elevationPane');\r\n\t\tif (!pane) {\r\n\t\t\tpane = this._pane = map.createPane('elevationPane', map.getPane('norotatePane') || map.getPane('mapPane'));\r\n\t\t\tpane.style.zIndex = 625; // This pane is above markers but below popups.\r\n\t\t\tpane.style.pointerEvents = 'none';\r\n\t\t}\r\n\r\n\t\tif (this._renderer) this._renderer.remove()\r\n\t\tthis._renderer = L.svg({ pane: \"elevationPane\" }).addTo(this._map); // default leaflet svg renderer\r\n\r\n\t\tPromise.all([\r\n\t\t\tthis.import(this.__D3),\r\n\t\t\tthis.import(this.__LMARKER)\r\n\t\t]).then((m) => {\r\n\t\t\tthis._marker = new (m[1] || Elevation).Marker(this.options, this);\r\n\t\t\tthis.fire(\"elechart_marker\");\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Inspired by L.Control.Layers\r\n\t */\r\n\t_initButton: function(container) {\r\n\t\tL.DomEvent\r\n\t\t\t.disableClickPropagation(container)\r\n\t\t\t.disableScrollPropagation(container);\r\n\r\n\t\tthis.options.collapsed ? this._collapse() : this._expand();\r\n\r\n\t\tif (this.options.autohide) {\r\n\t\t\t_.on(container, 'mouseover', this._expand, this);\r\n\t\t\t_.on(container, 'mouseout', this._collapse, this);\r\n\t\t\tthis._map.on('click', this._collapse, this);\r\n\t\t}\r\n\r\n\t\tif (this.options.closeBtn) {\r\n\t\t\tlet link = this._button = _.create('a', \"elevation-toggle-icon\", { href: '#', title: L._('Elevation'), }, container);\r\n\t\t\t_.on(link, 'click', L.DomEvent.stop);\r\n\t\t\t_.on(link, 'click', this._toggle, this);\r\n\t\t\t_.on(link, 'focus', this._toggle, this);\r\n\t\t\tfetch(_.resolveURL(this.__btnIcon, this.options.srcFolder)).then(r => r.ok && r.text().then(img => link.innerHTML = img));\r\n\t\t}\r\n\t},\r\n\r\n\t_initSummary: function(container) {\r\n\t\tthis.import(this.__LSUMMARY).then((m)=>{\r\n\t\t\tthis._summary = new (m || Elevation).Summary({ summary: this.options.summary }, this);\r\n\r\n\t\t\tthis.on('elechart_init', () => {\r\n\t\t\t\td3.select(container).call(this._summary.render());\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Retrieve data from a remote url (HTTP).\r\n\t */\r\n\t_loadFile: function(url) {\r\n\t\tfetch(url)\r\n\t\t\t.then((response) => response.text())\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._downloadURL = url; // TODO: handle multiple urls?\r\n\t\t\t\tthis._parseFromString(data)\r\n\t\t\t\t\t.then( geojson => geojson && this._loadLayer(geojson));\r\n\t\t\t}).catch((err) => console.warn(err));\r\n\t},\r\n\r\n\t/**\r\n\t * Dynamically import only required javascript modules (code splitting)\r\n\t */\r\n\t_loadModules: function(handlers) {\r\n\t\t// First map known classnames (eg. \"Altitude\" --> L.Control.Elevation.Altitude)\r\n\t\thandlers = handlers.map((h) => typeof h === 'string' && typeof Elevation[h] !== \"undefined\" ? Elevation[h] : h);\r\n\t\t// Then load optional classes and custom imports (eg. \"Cadence\" --> import('../src/handlers/cadence.js'))\r\n\t\tlet modules = handlers.map(file => (typeof file === 'string' && this.import(this.__modulesFolder + file.toLowerCase() + '.js')) || (file instanceof Promise && file) || Promise.resolve());\r\n\t\treturn Promise.all(modules).then((m) => {\r\n\t\t\t_.each(m, (exported, i) => {\r\n\t\t\t\tlet fn = exported && Object.keys(exported)[0];\r\n\t\t\t\tif (fn) {\r\n\t\t\t\t\thandlers[i] = Elevation[fn] = (Elevation[fn] ?? exported[fn]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t_.each(handlers, h => [\"function\", \"object\"].includes(typeof h) && this._registerHandler(h));\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Simple GeoJSON data loader (L.GeoJSON).\r\n\t */\r\n\t_loadLayer: function(geojson) {\r\n\t\tlet { polyline, theme, waypoints, wptIcons, wptLabels, distanceMarkers } = this.options;\r\n\t\tlet style = L.extend({}, polyline);\r\n\r\n\t\tif (theme) {\r\n\t\t\tstyle.className += ' ' + theme;\r\n\t\t}\r\n\r\n\t\tif (geojson.name) {\r\n\t\t\tthis.track_info.name = geojson.name;\r\n\t\t}\r\n\r\n\t\tlet layer = L.geoJson(geojson, {\r\n\t\t\tdistanceMarkers: distanceMarkers,\r\n\t\t\tstyle: style,\r\n\t\t\tpointToLayer: (feature, latlng) => {\r\n\t\t\t\tif (waypoints) {\r\n\t\t\t\t\tlet { desc, name, sym } = feature.properties;\r\n\t\t\t\t\tdesc = desc || '';\r\n\t\t\t\t\tname = name || '';\r\n\t\t\t\t\t// Handle chart waypoints (dots)\r\n\t\t\t\t\tif ([true, 'dots'].includes(waypoints)) {\r\n\t\t\t\t\t\tthis._registerCheckPoint({\r\n\t\t\t\t\t\t\tlatlng: latlng,\r\n\t\t\t\t\t\t\tlabel : ([true, 'dots'].includes(wptLabels) ? name : '')\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Handle map waypoints (markers)\r\n\t\t\t\t\tif ([true, 'markers'].includes(waypoints) && wptIcons != false) {\r\n\t\t\t\t\t\treturn this._registerMarker({\r\n\t\t\t\t\t\t\tlatlng : latlng,\r\n\t\t\t\t\t\t\tsym : (sym ?? name).replace(' ', '-').replace('\"', '').replace(\"'\", '').toLowerCase(),\r\n\t\t\t\t\t\t\tcontent: [true, 'markers'].includes(wptLabels) && (name || desc) && decodeURI(\"<b>\" + name + \"</b>\" + (desc.length > 0 ? '<br>' + desc : ''))\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonEachFeature: (feature, layer) => feature.geometry && feature.geometry.type != 'Point' && this.addData(feature, layer),\r\n\t\t});\r\n\r\n\t\tthis.import(this.__D3).then(() => {\r\n\t\t\tthis._initMapIntegrations(layer);\r\n\t\t\tthis._fireEvt(\"eledata_loaded\", { data: geojson, layer: layer, name: this.track_info.name, track_info: this.track_info });\r\n\t\t});\r\n\r\n\t\treturn layer;\r\n\t},\r\n\r\n\t_onDragEnd: function({ dragstart, dragend}) {\r\n\t\tthis._hideMarker();\r\n\t\tthis.fitBounds(L.latLngBounds([dragstart.latlng, dragend.latlng]));\r\n\r\n\t\tthis.fire(\"elechart_dragged\");\r\n\t},\r\n\r\n\t_onKeyDown: function({key}) {\r\n\t\tif(!this.options.detached && key === \"Escape\"){\r\n\t\t\tthis._collapse()\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Trigger mouseenter event.\r\n\t */\r\n\t_onMouseEnter: function() {\r\n\t\tthis.fire('elechart_enter');\r\n\t},\r\n\r\n\t/*\r\n\t * Handles the moueseover the chart and displays distance and altitude level.\r\n\t */\r\n\t_onMouseMove: function({xCoord}) {\r\n\t\tif (this._chartEnabled && this._data.length) {\r\n\t\t\tlet item = this._findItemForX(xCoord);\r\n\t\t\tif (item) {\r\n\t\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\r\n\r\n\t\t\t\tthis._updateMarker(item);\r\n\t\t\t\tthis._setMapView(item);\r\n\r\n\t\t\t\tif (this._map) {\r\n\t\t\t\t\t_.addClass(this._map.getContainer(), 'elechart-hover');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.fire(\"elechart_change\", { data: item, xCoord: xCoord });\r\n\t\t\t\tthis.fire(\"elechart_hover\", { data: item, xCoord: xCoord });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Handles mouseover events of the data layers on the map.\r\n\t */\r\n\t_onMouseMoveLayer: function({latlng}) {\r\n\t\tif (this._data.length) {\r\n\t\t\tlet item = this._findItemForLatLng(latlng);\r\n\t\t\tif (item) {\r\n\t\t\t\tlet xCoord = item.xDiagCoord;\r\n\t\r\n\t\t\t\tif (this._chartEnabled) this._chart._showDiagramIndicator(item, xCoord);\r\n\t\r\n\t\t\t\tthis._updateMarker(item);\r\n\t\r\n\t\t\t\tthis.fire(\"elechart_change\", { data: item, xCoord: xCoord });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Handles the moueseout over the chart.\r\n\t */\r\n\t_onMouseOut: function() {\r\n\t\tif (!this.options.detached) {\r\n\t\t\tthis._hideMarker();\r\n\t\t\tthis._chart._hideDiagramIndicator();\r\n\t\t}\r\n\r\n\t\tif (this._map) {\r\n\t\t\t_.removeClass(this._map.getContainer(), 'elechart-hover');\r\n\t\t}\r\n\r\n\t\tthis.fire(\"elechart_leave\");\r\n\t},\r\n\r\n\t/**\r\n\t * Handles the drag event over the ruler filter.\r\n\t */\r\n\t_onRulerFilter: function({coords}) {\r\n\t\tthis._updateMapSegments(coords);\r\n\t},\r\n\r\n\t/**\r\n\t * Toggle chart data on legend click\r\n\t */\r\n\t_onToggleChart: function({ name, enabled }) {\r\n\r\n\t\tthis._chartEnabled = this._chart._hasActiveLayers();\r\n\r\n\t\t// toggle layer visibility on empty chart\r\n\t\tthis._layers.eachLayer(layer => _.toggleClass(layer.getElement && layer.getElement(), this.options.polyline.className + ' ' + this.options.theme, this._chartEnabled));\r\n\r\n\t\t// toggle option value (eg. altitude = { 'disabled' || 'enabled' })\r\n\t\tthis.options[name] = !enabled && this.options[name] == 'disabled' ? 'enabled' : 'disabled';\r\n\r\n\t\t// remove marker on empty chart\r\n\t\tif (!this._chartEnabled) {\r\n\t\t\tthis._chart._hideDiagramIndicator();\r\n\t\t\tthis._marker.remove();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Simple GeoJSON Parser\r\n\t */\r\n\t_parseFromGeoJSONString: function(data) {\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(data);\r\n\t\t} catch (e) { }\r\n\t},\r\n\r\n\t/**\r\n\t * Attempt to parse raw response data (GeoJSON or XML > GeoJSON)\r\n\t */\r\n\t_parseFromString: function(data) {\r\n\t\treturn new Promise(resolve =>\r\n\t\t\tthis.import(this.__TOGEOJSON).then(() => {\r\n\t\t\t\tlet geojson;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tgeojson = this._parseFromXMLString(data.trim());\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tgeojson = this._parseFromGeoJSONString(data.toString());\r\n\t\t\t\t}\r\n\t\t\t\tif (geojson) {\r\n\t\t\t\t\tgeojson.name = geojson.name || (this._downloadURL || '').split('/').pop().split('#')[0].split('?')[0];\r\n\t\t\t\t}\r\n\t\t\t\tresolve(geojson);\r\n\t\t\t})\r\n\t\t);\r\n\t},\r\n\r\n\t/**\r\n\t * Simple XML Parser (GPX, KML, TCX)\r\n\t */\r\n\t_parseFromXMLString: function(data) {\r\n\t\tif (data.indexOf(\"<\") != 0) {\r\n\t\t\tthrow 'Invalid XML';\r\n\t\t}\r\n\t\tlet xml = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\tlet type = xml.documentElement.tagName.toLowerCase(); // \"kml\" or \"gpx\"\r\n\t\tlet name = xml.getElementsByTagName('name');\r\n\t\tif (xml.getElementsByTagName('parsererror').length) {\r\n\t\t\tthrow 'Invalid XML';\r\n\t\t}\r\n\t\tif (!(type in toGeoJSON)) {\r\n\t\t\ttype = xml.documentElement.tagName == \"TrainingCenterDatabase\" ? 'tcx' : 'gpx';\r\n\t\t}\r\n\t\tlet geojson = toGeoJSON[type](xml);\r\n\t\tgeojson.name = name.length > 0 ? (Array.from(name).find(tag => tag.parentElement.tagName == \"trk\") ?? name[0]).textContent : '';\r\n\t\treturn geojson;\r\n\t},\r\n\r\n\t/**\r\n\t * Add chart profile to diagram\r\n\t */\r\n\t_registerAreaPath: function(props) {\r\n\t\tthis.on(\"elechart_init\", () => this._chart._registerAreaPath(props));\r\n\t},\r\n\r\n\t/**\r\n\t * Add chart grid to diagram\r\n\t */\r\n\t_registerAxisGrid: function(props) {\r\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisGrid(props));\r\n\t},\r\n\r\n\t/**\r\n\t * Add chart axis to diagram\r\n\t */\r\n\t_registerAxisScale: function(props) {\r\n\t\tthis.on(\"elechart_axis\", () => this._chart._registerAxisScale(props));\r\n\t},\r\n\r\n\t/**\r\n\t * Add a point of interest over the diagram\r\n\t */\r\n\t_registerCheckPoint: function(props) {\r\n\t\tthis.on(\"elechart_updated\", () => this._chart._registerCheckPoint(props));\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Base handler for iterative track statistics (dist, time, z, slope, speed, acceleration, ...)\r\n\t */\r\n\t _registerDataAttribute: function(props) {\r\n\r\n\t\t// parse of \"coordinateProperties\" for later usage\r\n\t\tif (props.coordPropsToMeta) {\r\n\t\t\tthis.on(\"elepoint_init\", (e) => props.coordPropsToMeta.call(this, e));\r\n\t\t}\r\n\r\n\t\t// prevent excessive variabile instanstations\r\n\t\tlet i, curr, prev, attr = props.attr || props.name;\r\n\r\n\t\t// save here a reference to last used point\r\n\t\tlet lastValid = {};\r\n\r\n\t\t// iteration\r\n\t\tthis.on(\"elepoint_added\", ({index, point}) => {\r\n\t\t\ti = index;\r\n\r\n\t\t\tprev = curr ?? this._data[i]; // same as: this._data[i > 0 ? i - 1 : i]\r\n\t\t\tcurr = this._data[i];\r\n\r\n\t\t\t// retrieve point value\r\n\t\t\tcurr[attr] = props.pointToAttr.call(this, point, i);\r\n\r\n\t\t\t// check and fix missing data on last added point\r\n\t\t\tif (i > 0 && isNaN(prev[attr])) {\r\n\t\t\t\tif (!isNaN(lastValid[attr]) && !isNaN(curr[attr])) {\r\n\t\t\t\t\tprev[attr] = (lastValid[attr] + curr[attr]) / 2;\r\n\t\t\t\t} else if (!isNaN(lastValid[attr])) {\r\n\t\t\t\t\tprev[attr] = lastValid[attr];\r\n\t\t\t\t} else if (!isNaN(curr[attr])) {\r\n\t\t\t\t\tprev[attr] = curr[attr];\r\n\t\t\t\t}\r\n\t\t\t\t// update \"yAttr\" and \"xAttr\"\r\n\t\t\t\tif (props.meta) {\r\n\t\t\t\t\tprev[props.meta] = prev[attr];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// skip to next iteration for invalid or missing data (eg. i == 0)\r\n\t\t\tif (isNaN(curr[attr])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// update reference to last used point\r\n\t\t\tlastValid[attr] = curr[attr];\r\n\r\n\t\t\t// Limit \"crazy\" delta values.\r\n\t\t\tif (props.deltaMax) {\r\n\t\t\t\tcurr[attr] =_.wrapDelta(curr[attr], prev[attr], props.deltaMax);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Range of acceptable values.\r\n\t\t\tif (props.clampRange) {\r\n\t\t\t\tcurr[attr] = _.clamp(curr[attr], props.clampRange);\r\n\t\t\t}\r\n\r\n\t\t\t// Limit floating point precision.\r\n\t\t\tif (!isNaN(props.decimals)) {\r\n\t\t\t\tcurr[attr] = _.round(curr[attr], props.decimals);\r\n\t\t\t}\r\n\r\n\t\t\t// update \"track_info\" stats (min, max, avg, ...)\r\n\t\t\tif (props.stats) {\r\n\t\t\t\tfor (const key in props.stats) {\r\n\t\t\t\t\tlet sname = (props.statsName || attr) + (key != '' ? '_' : '');\r\n\t\t\t\t\tthis.track_info[sname + key] = props.stats[key].call(this, curr[attr], this.track_info[sname + key], this._data.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// update here some mixins (eg. complex \"track_info\" stuff)\r\n\t\t\tif (props.onPointAdded) props.onPointAdded.call(this, curr[attr], i, point);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Parse a module definition and attach related function listeners\r\n\t */\r\n\t_registerHandler: function(props) {\r\n\r\n\t\t// eg. L.Control.Altitude\r\n\t\tif (typeof props === \"function\") {\r\n\t\t\treturn this._registerHandler(props.call(this));\r\n\t\t}\r\n\r\n\t\tlet {\r\n\t\t\tname,\r\n\t\t\tattr,\r\n\t\t\trequired,\r\n\t\t\tdeltaMax,\r\n\t\t\tclampRange,\r\n\t\t\tdecimals,\r\n\t\t\tmeta,\r\n\t\t\tunit,\r\n\t\t\tcoordinateProperties,\r\n\t\t\tcoordPropsToMeta,\r\n\t\t\tpointToAttr,\r\n\t\t\tonPointAdded,\r\n\t\t\tstats,\r\n\t\t\tstatsName,\r\n\t\t\tgrid,\r\n\t\t\tscale,\r\n\t\t\tpath,\r\n\t\t\ttooltip,\r\n\t\t\tsummary\r\n\t\t} = props;\r\n\r\n\t\t// eg. \"altitude\" == true\r\n\t\tif (this.options[name] || required) {\r\n\r\n\t\t\tthis._registerDataAttribute({\r\n\t\t\t\tname,\r\n\t\t\t\tattr,\r\n\t\t\t\tmeta,\r\n\t\t\t\tdeltaMax,\r\n\t\t\t\tclampRange,\r\n\t\t\t\tdecimals,\r\n\t\t\t\tcoordPropsToMeta: _.coordPropsToMeta(coordinateProperties, meta || name, coordPropsToMeta),\r\n\t\t\t\tpointToAttr,\r\n\t\t\t\tonPointAdded,\r\n\t\t\t\tstats,\r\n\t\t\t\tstatsName,\r\n\t\t\t});\r\n\r\n\t\t\tif (grid) {\r\n\t\t\t\tthis._registerAxisGrid(L.extend({ name }, grid));\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options[name] !== \"summary\") {\r\n\t\t\t\tif (scale) this._registerAxisScale(L.extend({ name, label: unit }, scale));\r\n\t\t\t\tif (path) this._registerAreaPath(L.extend({ name }, path));\r\n\t\t\t}\r\n\r\n\t\t\tif (tooltip || props.tooltips) {\r\n\t\t\t\t_.each([tooltip, ...(props.tooltips || [])], t => t && this._registerTooltip(L.extend({ name }, t)));\r\n\t\t\t}\r\n\r\n\t\t\tif (summary) {\r\n\t\t\t\t_.each(summary, (s, k) => summary[k] = L.extend({ unit }, s));\r\n\t\t\t\tthis._registerSummary(summary);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_registerMarker({latlng, sym, content}) {\r\n\t\tlet { wptIcons } = this.options;\r\n\t\t// generate and cache appropriate icon symbol\r\n\t\tif (!wptIcons.hasOwnProperty(sym)) {\r\n\t\t\twptIcons[sym] = L.divIcon(L.extend({}, wptIcons[\"\"].options, { html: '<i class=\"elevation-waypoint-icon ' + sym + '\"></i>' } ));\r\n\t\t}\r\n\t\tlet marker = L.marker(latlng, { icon: wptIcons[sym] });\r\n\t\tif (content) {\r\n\t\t\tmarker.bindPopup(content, { className: 'elevation-popup', keepInView: true }).openPopup();\r\n\t\t\tmarker.bindTooltip(content, { className: 'elevation-tooltip', direction: 'auto', sticky: true, opacity: 1 }).openTooltip();\r\n\t\t}\r\n\t\treturn this._addMarker(marker)\r\n\t},\r\n\t\r\n\t/**\r\n\t * Add chart or marker tooltip info\r\n\t */\r\n\t_registerTooltip: function(props) {\r\n\t\tprops.chart && this.on(\"elechart_init\", () => this._chart._registerTooltip(L.extend({}, props, { value: props.chart })));\r\n\t\tprops.marker && this.on(\"elechart_marker\", () => this._marker._registerTooltip(L.extend({}, props, { value: props.marker })));\r\n\t},\r\n\r\n\t/**\r\n\t * Add summary info to diagram\r\n\t */\r\n\t_registerSummary: function(props) {\r\n\t\tthis.on('elechart_summary', () => this._summary._registerSummary(props));\r\n\t},\r\n\r\n\t/*\r\n\t * Removes the drag rectangle and zoms back to the total extent of the data.\r\n\t */\r\n\t_resetDrag: function() {\r\n\t\tthis._chart._resetDrag();\r\n\t\tthis._hideMarker();\r\n\t},\r\n\r\n\t/**\r\n\t * Resets drag, marker and bounds.\r\n\t */\r\n\t_resetView: function() {\r\n\t\tif (this._map && this._map._isFullscreen) return;\r\n\t\tthis._resetDrag();\r\n\t\tthis._hideMarker();\r\n\t\tif (this.options.autofitBounds) {\r\n\t\t\tthis.fitBounds();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Hacky way for handling chart resize. Deletes it and redraw chart.\r\n\t */\r\n\t_resizeChart: function() {\r\n\t\tif (this._container && _.style(this._container, \"display\") != \"none\") {\r\n\t\t\tlet opts = this.options;\r\n\t\t\tlet newWidth = opts.detached ? (this.eleDiv || this._container).offsetWidth : _.clamp(opts._maxWidth, [0, this._map.getContainer().clientWidth - 30]);\r\n\t\t\tif (newWidth) {\r\n\t\t\t\topts.width = newWidth;\r\n\t\t\t\tif (this._chart && this._chart._chart) {\r\n\t\t\t\t\tthis._chart._chart._resize(opts);\r\n\t\t\t\t\tthis._updateChart();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._updateMapSegments();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Collapse or Expand chart control.\r\n\t */\r\n\t_toggle: function() {\r\n\t\t_.hasClass(this._container, \"elevation-expanded\") ? this._collapse() : this._expand();\r\n\t},\r\n\r\n\t/**\r\n\t * Update map center and zoom (followMarker: true)\r\n\t */\r\n\t_setMapView: function(item) {\r\n\t\tif (this._map && this.options.followMarker) {\r\n\t\t\tlet zoom = this._map.getZoom();\r\n\t\t\tlet z = this.options.zFollow;\r\n\t\t\tif (typeof z === \"number\") {\r\n\t\t\t\tthis._map.setView(item.latlng, (zoom < z ? z : zoom), { animate: true, duration: 0.25 });\r\n\t\t\t} else if (!this._map.getBounds().contains(item.latlng)) {\r\n\t\t\t\tthis._map.setView(item.latlng, zoom, { animate: true, duration: 0.25 });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Calculates [x, y] domain and then update chart.\r\n\t */\r\n\t_updateChart: function() {\r\n\t\tif (this._chart && this._container) {\r\n\t\t\tthis.fire(\"elechart_axis\");\r\n\t\r\n\t\t\tthis._chart.update({ data: this._data, options: this.options });\r\n\t\r\n\t\t\tthis._x = this._chart._x;\r\n\t\t\tthis._y = this._chart._y;\r\n\t\r\n\t\t\tthis.fire('elechart_updated');\t\t\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Update the position/height indicator marker drawn onto the map\r\n\t */\r\n\t_updateMarker: function(item) {\r\n\t\tif (this._marker) {\r\n\t\t\tthis._marker.update({\r\n\t\t\t\tmap : this._map,\r\n\t\t\t\titem : item,\r\n\t\t\t\tyCoordMax : this._yCoordMax || 0,\r\n\t\t\t\toptions : this.options\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fix marker rotation on rotated maps\r\n\t */\r\n\t_rotateMarker: function() {\r\n\t\tif (this._marker) {\r\n\t\t\tthis._marker.update();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Highlight track segments on the map.\r\n\t */\r\n\t_updateMapSegments: function(coords) {\r\n\t\tthis._markedSegments.setLatLngs(coords || []);\r\n\t\tif (coords && this._map && !this._map.hasLayer(this._markedSegments)) {\r\n\t\t\tthis._markedSegments.addTo(this._map);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Update chart summary.\r\n\t */\r\n\t_updateSummary: function() {\r\n\t\tif (this._summary) {\r\n\t\t\tthis._summary.reset();\r\n\t\t\tif (this.options.summary) {\r\n\t\t\t\tthis.fire(\"elechart_summary\");\r\n\t\t\t\tthis._summary.update();\r\n\t\t\t}\r\n\t\t\tif (this.options.downloadLink && this._downloadURL) { // TODO: generate dynamically file content instead of using static file urls.\r\n\t\t\t\tthis._summary._container.innerHTML += '<span class=\"download\"><a href=\"#\">' + L._('Download') + '</a></span>'\r\n\t\t\t\t_.select('.download a', this._summary._container).onclick = (e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tlet event = { downloadLink: this.options.downloadLink, confirm: _.saveFile.bind(this, this._downloadURL) };\r\n\t\t\t\t\tif (this.options.downloadLink == 'modal' && typeof CustomEvent === \"function\") {\r\n\t\t\t\t\t\tdocument.dispatchEvent(new CustomEvent(\"eletrack_download\", { detail: event }));\r\n\t\t\t\t\t} else if (this.options.downloadLink == 'link' || this.options.downloadLink === true) {\r\n\t\t\t\t\t\tevent.confirm();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.fire('eletrack_download', event);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * Calculates chart width.\r\n\t */\r\n\t_width: function() {\r\n\t\tif (this._chart) return this._chart._width();\r\n\t\tconst { width, margins } = this.options;\r\n\t\treturn width - margins.left - margins.right;\r\n\t},\r\n\r\n\t/**\r\n\t * Calculates chart height.\r\n\t */\r\n\t_height: function() {\r\n\t\tif (this._chart) return this._chart._height();\r\n\t\tconst { height, margins } = this.options;\r\n\t\treturn height - margins.top - margins.bottom;\r\n\t},\r\n\r\n});\r\n","/*\r\n * Copyright (c) 2019, GPL-3.0+ Project, Raruto\r\n *\r\n * This file is free software: you may copy, redistribute and/or modify it\r\n * under the terms of the GNU General Public License as published by the\r\n * Free Software Foundation, either version 2 of the License, or (at your\r\n * option) any later version.\r\n *\r\n * This file is distributed in the hope that it will be useful, but\r\n * WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r\n * General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n *\r\n * This file incorporates work covered by the following copyright and\r\n * permission notice:\r\n *\r\n * Copyright (c) 2013-2016, MIT License, Felix “MrMufflon” Bache\r\n *\r\n * Permission to use, copy, modify, and/or distribute this software\r\n * for any purpose with or without fee is hereby granted, provided\r\n * that the above copyright notice and this permission notice appear\r\n * in all copies.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL\r\n * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE\r\n * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR\r\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\r\n * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,\r\n * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN\r\n * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n */\r\n\r\nimport * as _ from './utils';\r\nimport { Elevation } from './control';\r\n\r\nElevation.Utils = _;\r\n\r\nL.control.elevation = (options) => new Elevation(options);\r\n"],"names":["_.select","_.append","_.insert","_.style","_.throttle","_.Colors","_.resolveURL","_.create","_.randomId","_.off","_.each","_.replaceClass","_.on","_.toggleClass","_.toggleEvent","_.addClass","_.removeClass","_.wrapDelta","_.clamp","_.round","coordPropsToMeta","_.coordPropsToMeta","_.hasClass","_.saveFile"],"mappings":"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"}
|