Deltacms/core/vendor/geolocation/leaflet/leaflet-ui.js.map

1 line
388 KiB
Plaintext

{"version":3,"file":"leaflet-ui.js","sources":["../node_modules/leaflet-i18n/Leaflet.i18n.js","../node_modules/leaflet-rotate/src/dom/DomUtil.js","../node_modules/leaflet-rotate/src/dom/Draggable.js","../node_modules/leaflet-rotate/src/geometry/Point.js","../node_modules/leaflet-rotate/src/layer/DivOverlay.js","../node_modules/leaflet-rotate/src/layer/Popup.js","../node_modules/leaflet-rotate/src/layer/Tooltip.js","../node_modules/leaflet-rotate/src/layer/marker/Icon.js","../node_modules/leaflet-rotate/src/layer/marker/Marker.js","../node_modules/leaflet-rotate/src/layer/tile/GridLayer.js","../node_modules/leaflet-rotate/src/layer/vector/Canvas.js","../node_modules/leaflet-rotate/src/layer/vector/Renderer.js","../node_modules/leaflet-rotate/src/layer/vector/SVG.js","../node_modules/leaflet-rotate/src/map/Map.js","../node_modules/leaflet.fullscreen/Control.FullScreen.js","../node_modules/leaflet-rotate/src/map/handler/CompassBearing.js","../node_modules/leaflet-rotate/src/map/handler/ContainerMutation.js","../node_modules/leaflet-rotate/src/map/handler/TouchGestures.js","../node_modules/leaflet-rotate/src/map/handler/TouchRotate.js","../node_modules/leaflet-rotate/src/map/handler/ShiftKeyRotate.js","../node_modules/leaflet-rotate/src/map/handler/TouchZoom.js","../node_modules/leaflet-rotate/src/control/Rotate.js","../node_modules/leaflet.locatecontrol/src/L.Control.Locate.js","../node_modules/leaflet-pegman/leaflet-pegman.js","../node_modules/@raruto/leaflet-gesture-handling/src/locales/en.js","../node_modules/@raruto/leaflet-gesture-handling/src/index.js","../node_modules/leaflet-control-layers-inline/leaflet-control-layers-inline.js","../node_modules/leaflet-easyprint/dist/bundle.js","../node_modules/@raruto/leaflet-edit-osm/leaflet-edit-osm.js","../node_modules/leaflet-minimap/dist/Control.MiniMap.min.js","../node_modules/leaflet-loading/src/Control.Loading.js","../node_modules/leaflet-search/dist/leaflet-search.src.js","../node_modules/leaflet.control.resizer/L.Control.Resizer.js","../node_modules/leaflet.visualclick/dist/L.VisualClick.js","../src/leaflet-ui.js"],"sourcesContent":["// Following https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md\n(function (factory, window) {\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n module.exports = factory(require('leaflet'));\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L) {\n factory(window.L);\n\n }\n}(function (L) {\n L.locales = {};\n L.locale = null;\n L.registerLocale = function registerLocale(code, locale) {\n L.locales[code] = L.Util.extend({}, L.locales[code], locale);\n };\n L.setLocale = function setLocale(code) {\n L.locale = code;\n };\n return L.i18n = L._ = function translate(string, data) {\n if (L.locale && L.locales[L.locale] && L.locales[L.locale][string]) {\n string = L.locales[L.locale][string];\n }\n try {\n // Do not fail if some data is missing\n // a bad translation should not break the app\n string = L.Util.template(string, data);\n }\n catch (err) {/*pass*/\n }\n\n return string;\n };\n}, window));\n","/**\n * L.DomUtil\n */\nconst domUtilProto = L.extend({}, L.DomUtil);\n\nL.extend(L.DomUtil, {\n\n setTransform: function(el, offset, scale, bearing, pivot) {\n var pos = offset || new L.Point(0, 0);\n\n if (!bearing) {\n offset = pos._round();\n return domUtilProto.setTransform.call(this, el, offset, scale);\n }\n\n pos = pos.rotateFrom(bearing, pivot);\n\n el.style[L.DomUtil.TRANSFORM] =\n 'translate3d(' + pos.x + 'px,' + pos.y + 'px' + ',0)' +\n (scale ? ' scale(' + scale + ')' : '') +\n ' rotate(' + bearing + 'rad)';\n },\n\n setPosition: function(el, point, bearing, pivot) { // (HTMLElement, Point[, Boolean])\n if (!bearing) {\n return domUtilProto.setPosition.call(this, el, point);\n }\n\n /*eslint-disable */\n el._leaflet_pos = point;\n /*eslint-enable */\n\n if (L.Browser.any3d) {\n L.DomUtil.setTransform(el, point, undefined, bearing, pivot);\n } else {\n el.style.left = point.x + 'px';\n el.style.top = point.y + 'px';\n }\n },\n\n // Constants for rotation\n DEG_TO_RAD: Math.PI / 180,\n RAD_TO_DEG: 180 / Math.PI,\n\n});\n","/**\n * L.Draggable\n */\nL.Draggable.include({\n\n updateMapBearing: function(mapBearing) {\n this._mapBearing = mapBearing;\n },\n\n});\n","/**\n * L.Point\n */\nL.extend(L.Point.prototype, {\n\n // Rotate around (0,0) by applying the 2D rotation matrix:\n // ⎡ x' ⎤ = ⎡ cos θ -sin θ ⎤ ⎡ x ⎤\n // ⎣ y' ⎦ ⎣ sin θ cos θ ⎦ ⎣ y ⎦\n // Theta must be given in radians.\n rotate: function(theta) {\n if (!theta) { return this; }\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n\n return new L.Point(\n this.x * cosTheta - this.y * sinTheta,\n this.x * sinTheta + this.y * cosTheta\n );\n },\n\n // Rotate around (pivot.x, pivot.y) by:\n // 1. subtract (pivot.x, pivot.y)\n // 2. rotate around (0, 0)\n // 3. add (pivot.x, pivot.y) back\n // same as `this.subtract(pivot).rotate(theta).add(pivot)`\n rotateFrom: function(theta, pivot) {\n if (!theta) { return this; }\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n var cx = pivot.x,\n cy = pivot.y;\n var x = this.x - cx,\n y = this.y - cy;\n\n return new L.Point(\n x * cosTheta - y * sinTheta + cx,\n x * sinTheta + y * cosTheta + cy\n );\n },\n\n});\n","/**\n * L.DivOverlay\n */\nconst divOverlayProto = L.extend({}, L.DivOverlay.prototype);\n\nL.DivOverlay.include({\n\n getEvents: function() {\n return L.extend(divOverlayProto.getEvents.call(this), { rotate: this._updatePosition });\n },\n\n _updatePosition: function() {\n if (!this._map) { return; }\n\n var pos = this._map.latLngToLayerPoint(this._latlng),\n offset = L.point(this.options.offset),\n anchor = this._getAnchor();\n\n if (this._zoomAnimated) {\n // TODO: use divOverlayProto._updatePosition\n if (this._map._rotate) {\n pos = this._map.rotatedPointToMapPanePoint(pos);\n }\n L.DomUtil.setPosition(this._container, pos.add(anchor));\n } else {\n offset = offset.add(pos).add(anchor);\n }\n\n var bottom = this._containerBottom = -offset.y,\n left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\n\n // bottom position the popup in case the height of the popup changes (images loading etc)\n this._container.style.bottom = bottom + 'px';\n this._container.style.left = left + 'px';\n },\n\n});\n","/**\n * L.Popup\n */\nconst popupProto = L.extend({}, L.Popup.prototype);\n\nL.Popup.include({\n\n _animateZoom: function(e) {\n if (!this._map._rotate) {\n popupProto._animateZoom.call(this, e);\n }\n var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\n anchor = this._getAnchor();\n\n pos = this._map.rotatedPointToMapPanePoint(pos);\n\n L.DomUtil.setPosition(this._container, pos.add(anchor));\n },\n\n _adjustPan: function() {\n if (!this.options.autoPan || (this._map._panAnim && this._map._panAnim._inProgress)) { return; }\n\n var map = this._map,\n marginBottom = parseInt(L.DomUtil.getStyle(this._container, 'marginBottom'), 10) || 0,\n containerHeight = this._container.offsetHeight + marginBottom,\n containerWidth = this._containerWidth,\n layerPos = new L.Point(this._containerLeft, -containerHeight - this._containerBottom);\n\n layerPos._add(L.DomUtil.getPosition(this._container));\n\n // var containerPos = map.layerPointToContainerPoint(layerPos);\n // TODO: use popupProto._adjustPan\n var containerPos = layerPos._add(this._map._getMapPanePos()),\n padding = L.point(this.options.autoPanPadding),\n paddingTL = L.point(this.options.autoPanPaddingTopLeft || padding),\n paddingBR = L.point(this.options.autoPanPaddingBottomRight || padding),\n size = map.getSize(),\n dx = 0,\n dy = 0;\n\n if (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\n dx = containerPos.x + containerWidth - size.x + paddingBR.x;\n }\n if (containerPos.x - dx - paddingTL.x < 0) { // left\n dx = containerPos.x - paddingTL.x;\n }\n if (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\n dy = containerPos.y + containerHeight - size.y + paddingBR.y;\n }\n if (containerPos.y - dy - paddingTL.y < 0) { // top\n dy = containerPos.y - paddingTL.y;\n }\n\n // @namespace Map\n // @section Popup events\n // @event autopanstart: Event\n // Fired when the map starts autopanning when opening a popup.\n if (dx || dy) {\n map\n .fire('autopanstart')\n .panBy([dx, dy]);\n }\n },\n\n});\n","/**\n * L.Tooltip\n */\nconst tooltipProto = L.extend({}, L.Tooltip.prototype);\n\nL.Tooltip.include({\n\n _updatePosition: function() {\n if (!this._map._rotate) {\n return tooltipProto._updatePosition.call(this);\n }\n var pos = this._map.latLngToLayerPoint(this._latlng);\n\n pos = this._map.rotatedPointToMapPanePoint(pos);\n this._setPosition(pos);\n },\n\n _animateZoom: function(e) {\n if (!this._map._rotate) {\n return tooltipProto._animateZoom.call(this, e);\n }\n var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n\n pos = this._map.rotatedPointToMapPanePoint(pos);\n this._setPosition(pos);\n },\n\n});\n","/**\n * L.Icon\n */\nconst iconProto = L.extend({}, L.Icon.prototype);\n\nL.Icon.include({\n\n _setIconStyles: function(img, name) {\n var options = this.options;\n var sizeOption = options[name + 'Size'];\n\n if (typeof sizeOption === 'number') {\n sizeOption = [sizeOption, sizeOption];\n }\n\n var size = L.point(sizeOption),\n anchor = L.point(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\n size && size.divideBy(2, true));\n\n img.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\n\n if (anchor) {\n img.style.marginLeft = (-anchor.x) + 'px';\n img.style.marginTop = (-anchor.y) + 'px';\n // TODO: use iconProto._setIconStyles\n img.style[L.DomUtil.TRANSFORM + \"Origin\"] = anchor.x + \"px \" + anchor.y + \"px 0px\";\n }\n\n if (size) {\n img.style.width = size.x + 'px';\n img.style.height = size.y + 'px';\n }\n },\n\n});\n","/**\n * L.Handler.MarkerDrag\n */\nvar markerDragProto;\n\nvar MarkerDrag = {\n\n _onDragStart: function() {\n if (!this._marker._map._rotate) {\n return markerDragProto._onDragStart.call(this)\n }\n this._draggable.updateMapBearing(this._marker._map._bearing);\n },\n\n _onDrag: function(e) {\n var marker = this._marker,\n // TODO: use markerDragProto._onDrag\n rotated_marker = marker.options.rotation || marker.options.rotateWithView,\n shadow = marker._shadow,\n iconPos = L.DomUtil.getPosition(marker._icon);\n\n // TODO: use markerDragProto._onDrag\n // update shadow position\n if (!rotated_marker && shadow) {\n L.DomUtil.setPosition(shadow, iconPos);\n }\n\n // TODO: use markerDragProto._onDrag\n if (marker._map._rotate) {\n // Reverse calculation from mapPane coordinates to rotatePane coordinates\n iconPos = marker._map.mapPanePointToRotatedPoint(iconPos);\n }\n var latlng = marker._map.layerPointToLatLng(iconPos);\n\n marker._latlng = latlng;\n e.latlng = latlng;\n e.oldLatLng = this._oldLatLng;\n\n // TODO: use markerDragProto._onDrag\n if (rotated_marker) marker.setLatLng(latlng); // use `setLatLng` to presisit rotation. low efficiency\n else marker.fire('move', e); // `setLatLng` will trig 'move' event. we imitate here.\n\n // @event drag: Event\n // Fired repeatedly while the user drags the marker.\n marker\n .fire('drag', e);\n },\n\n _onDragEnd: function(e) {\n if (this._marker._map._rotate) {\n this._marker.update();\n }\n markerDragProto._onDragEnd.call(this, e);\n },\n\n};\n\n/**\n * L.Marker\n */\nconst markerProto = L.extend({}, L.Marker.prototype);\n\nL.Marker.mergeOptions({\n\n // @option rotation: Number = 0\n // Rotation of this marker in rad\n rotation: 0,\n\n // @option rotateWithView: Boolean = false\n // Rotate this marker when map rotates\n rotateWithView: false,\n\n});\n\nL.Marker.include({\n\n getEvents: function() {\n return L.extend(markerProto.getEvents.call(this), { rotate: this.update });\n },\n\n onAdd: function(map) {\n markerProto.onAdd.call(this, map);\n map.on('rotate', this.update, this);\n },\n\n _initInteraction: function() {\n var ret = markerProto._initInteraction.call(this);\n if (this.dragging && this.dragging.enabled() && this._map && this._map._rotate) {\n // L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable\n markerDragProto = markerDragProto || Object.getPrototypeOf(this.dragging);\n this.dragging._onDragStart = MarkerDrag._onDragStart.bind(this.dragging);\n this.dragging._onDrag = MarkerDrag._onDrag.bind(this.dragging);\n this.dragging._onDragEnd = MarkerDrag._onDragEnd.bind(this.dragging);\n this.dragging.disable();\n this.dragging.enable();\n }\n return ret;\n },\n\n _setPos: function(pos) {\n\n // TODO: use markerProto._setPos\n if (this._map._rotate) {\n pos = this._map.rotatedPointToMapPanePoint(pos);\n }\n\n // TODO: use markerProto._setPos\n var bearing = this.options.rotation || 0;\n if (this.options.rotateWithView) {\n bearing += this._map._bearing;\n }\n\n // TODO: use markerProto._setPos\n L.DomUtil.setPosition(this._icon, pos, bearing, pos);\n\n // TODO: use markerProto._setPos\n if (this._shadow) {\n L.DomUtil.setPosition(this._shadow, pos, bearing, pos);\n }\n\n this._zIndex = pos.y + this.options.zIndexOffset;\n\n this._resetZIndex();\n },\n\n _updateZIndex: function(offset) {\n if (!this._map._rotate) {\n return markerProto._updateZIndex.call(this, offset)\n }\n this._icon.style.zIndex = Math.round(this._zIndex + offset);\n },\n\n setRotation: function(rotation) {\n this.options.rotation = rotation;\n this.update();\n },\n\n});\n","/**\n * L.GridLayer\n */\nconst gridLayerProto = L.extend({}, L.GridLayer.prototype);\n\nL.GridLayer.include({\n\n getEvents: function() {\n var events = gridLayerProto.getEvents.call(this);\n if (this._map._rotate && !this.options.updateWhenIdle) {\n if (!this._onRotate) {\n this._onRotate = L.Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n }\n events.rotate = this._onRotate;\n }\n return events;\n },\n\n _getTiledPixelBounds: function(center) {\n if (!this._map._rotate) {\n return gridLayerProto._getTiledPixelBounds.call(this, center);\n }\n\n var map = this._map,\n mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n scale = map.getZoomScale(mapZoom, this._tileZoom),\n pixelCenter = map.project(center, this._tileZoom).floor(),\n size = map.getSize(),\n halfSize = new L.Bounds([\n map.containerPointToLayerPoint([0, 0]).floor(),\n map.containerPointToLayerPoint([size.x, 0]).floor(),\n map.containerPointToLayerPoint([0, size.y]).floor(),\n map.containerPointToLayerPoint([size.x, size.y]).floor()\n ]).getSize().divideBy(scale * 2);\n\n return new L.Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n },\n\n});\n","/**\n * L.Canvas\n */\nconst canvasProto = L.extend({}, L.Canvas.prototype);\n\nL.Canvas.include({\n\n onAdd: function() {\n canvasProto.onAdd.call(this);\n // When rotating the canvas itself, it is cleared by some weird reason, so redraw.\n this._map.on('rotate', this._redraw, this);\n },\n\n onRemove: function() {\n canvasProto.onRemove.call(this);\n this._map.off('rotate', this._redraw, this);\n },\n\n _update: function() {\n canvasProto._update.call(this);\n // Tell paths to redraw themselves\n this.fire('update')\n },\n\n});\n","/**\n * L.Renderer\n */\nconst rendererProto = L.extend({}, L.Renderer.prototype);\n\nL.Renderer.include({\n\n onAdd: function() {\n rendererProto.onAdd.call(this);\n // this._map.on('rotate', this._update, this);\n },\n\n onRemove: function() {\n rendererProto.onRemove.call(this);\n // this._map.off('rotate', this._update, this);\n },\n\n _updateTransform: function(center, zoom) {\n if (!this._map._rotate) {\n return rendererProto._updateTransform.call(this, center, zoom);\n }\n var scale = this._map.getZoomScale(zoom, this._zoom),\n offset = this._map._latLngToNewLayerPoint(this._topLeft, zoom, center);\n if (L.Browser.any3d) {\n L.DomUtil.setTransform(this._container, offset, scale);\n } else {\n L.DomUtil.setPosition(this._container, offset);\n }\n },\n\n _update: function() {\n if (!this._map._rotate) {\n return rendererProto._update.call(this);\n }\n // Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n // Subclasses are responsible of firing the 'update' event.\n var p = this.options.padding,\n map = this._map,\n size = this._map.getSize(),\n padMin = size.multiplyBy(-p),\n padMax = size.multiplyBy(1 + p),\n //// TODO: Somehow refactor this out into map.something() - the code is\n //// pretty much the same as in GridLayer.\n clip = new L.Bounds([\n map.containerPointToLayerPoint([padMin.x, padMin.y]).floor(),\n map.containerPointToLayerPoint([padMin.x, padMax.y]).floor(),\n map.containerPointToLayerPoint([padMax.x, padMin.y]).floor(),\n map.containerPointToLayerPoint([padMax.x, padMax.y]).floor()\n ]);\n //min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n this._bounds = clip;\n // this._topLeft = clip.min;\n this._topLeft = this._map.layerPointToLatLng(clip.min);\n\n this._center = this._map.getCenter();\n this._zoom = this._map.getZoom();\n },\n\n});\n","/**\n * L.SVG\n */\nconst svgProto = L.extend({}, L.SVG.prototype);\n\nL.SVG.include({\n\n _update: function() {\n svgProto._update.call(this);\n if (this._map._rotate) {\n this.fire('update');\n }\n },\n\n});\n","/**\n * L.Map\n */\nconst mapProto = L.extend({}, L.Map.prototype);\n\nL.Map.mergeOptions({ rotate: false, bearing: 0, });\n\nL.Map.include({\n\n initialize: function(id, options) { // (HTMLElement or String, Object)\n if (options.rotate) {\n this._rotate = true;\n this._bearing = 0;\n }\n mapProto.initialize.call(this, id, options);\n if(this.options.rotate){\n this.setBearing(this.options.bearing);\n }\n },\n\n // createPane: function(name, container) {\n // if (!this._rotate || name == 'mapPane') {\n // return mapProto.createPane.call(this, name, container);\n // }\n // // init \"rotatePane\"\n // if (!this._rotatePane) {\n // // this._pivot = this.getSize().divideBy(2);\n // this._rotatePane = mapProto.createPane.call(this, 'rotatePane', this._mapPane);\n // L.DomUtil.setPosition(this._rotatePane, new L.Point(0, 0), this._bearing, this._pivot);\n // }\n // return mapProto.createPane.call(this, name, container || this._rotatePane);\n // },\n\n containerPointToLayerPoint: function(point) { // (Point)\n if (!this._rotate) {\n return mapProto.containerPointToLayerPoint.call(this, point);\n }\n return L.point(point)\n .subtract(this._getMapPanePos())\n .rotateFrom(-this._bearing, this._getRotatePanePos())\n .subtract(this._getRotatePanePos());\n },\n\n getBounds: function() {\n if (!this._rotate) {\n return mapProto.getBounds.call(this);\n }\n var size = this.getSize();\n var topleft = this.layerPointToLatLng(this.containerPointToLayerPoint([0, 0])),\n topright = this.layerPointToLatLng(this.containerPointToLayerPoint([size.x, 0])),\n bottomright = this.layerPointToLatLng(this.containerPointToLayerPoint([size.x, size.y])),\n bottomleft = this.layerPointToLatLng(this.containerPointToLayerPoint([0, size.y]));\n\n // Use LatLngBounds' build-in constructor that automatically extends the bounds to fit the passed points\n return new L.LatLngBounds([topleft, topright, bottomright, bottomleft]);\n },\n\n layerPointToContainerPoint: function(point) { // (Point)\n if (!this._rotate) {\n return mapProto.layerPointToContainerPoint.call(this, point);\n }\n return L.point(point)\n .add(this._getRotatePanePos())\n .rotateFrom(this._bearing, this._getRotatePanePos())\n .add(this._getMapPanePos());\n },\n\n // Rotation methods\n // setBearing will work with just the 'theta' parameter.\n setBearing: function(theta) {\n if (!L.Browser.any3d || !this._rotate) { return; }\n\n var rotatePanePos = this._getRotatePanePos();\n var halfSize = this.getSize().divideBy(2);\n this._pivot = this._getMapPanePos().clone().multiplyBy(-1).add(halfSize);\n\n rotatePanePos = rotatePanePos.rotateFrom(-this._bearing, this._pivot);\n\n this._bearing = theta * L.DomUtil.DEG_TO_RAD; // TODO: mod 360\n this._rotatePanePos = rotatePanePos.rotateFrom(this._bearing, this._pivot);\n\n L.DomUtil.setPosition(this._rotatePane, rotatePanePos, this._bearing, this._pivot);\n\n this.fire('rotate');\n },\n\n getBearing: function() {\n return this._bearing * L.DomUtil.RAD_TO_DEG;\n },\n\n _initPanes: function() {\n var panes = this._panes = {};\n this._paneRenderers = {};\n\n // @section\n //\n // Panes are DOM elements used to control the ordering of layers on the map. You\n // can access panes with [`map.getPane`](#map-getpane) or\n // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\n // [`map.createPane`](#map-createpane) method.\n //\n // Every map has the following default panes that differ only in zIndex.\n //\n // @pane mapPane: HTMLElement = 'auto'\n // Pane that contains all other map panes\n\n this._mapPane = this.createPane('mapPane', this._container);\n L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0));\n\n if (this._rotate) {\n this._rotatePane = this.createPane('rotatePane', this._mapPane);\n this._norotatePane = this.createPane('norotatePane', this._mapPane);\n\n // @pane tilePane: HTMLElement = 2\n // Pane for tile layers\n this.createPane('tilePane', this._rotatePane);\n // @pane overlayPane: HTMLElement = 4\n // Pane for overlays like polylines and polygons\n this.createPane('overlayPane', this._rotatePane);\n\n // @pane shadowPane: HTMLElement = 5\n // Pane for overlay shadows (e.g. marker shadows)\n this.createPane('shadowPane', this._norotatePane);\n // @pane markerPane: HTMLElement = 6\n // Pane for marker icons\n this.createPane('markerPane', this._norotatePane);\n // @pane tooltipPane: HTMLElement = 650\n // Pane for tooltips.\n this.createPane('tooltipPane', this._norotatePane);\n // @pane popupPane: HTMLElement = 700\n // Pane for popups.\n this.createPane('popupPane', this._norotatePane);\n } else {\n // @pane tilePane: HTMLElement = 2\n // Pane for tile layers\n this.createPane('tilePane');\n // @pane overlayPane: HTMLElement = 4\n // Pane for overlays like polylines and polygons\n this.createPane('overlayPane');\n // @pane shadowPane: HTMLElement = 5\n // Pane for overlay shadows (e.g. marker shadows)\n this.createPane('shadowPane');\n // @pane markerPane: HTMLElement = 6\n // Pane for marker icons\n this.createPane('markerPane');\n // @pane tooltipPane: HTMLElement = 650\n // Pane for tooltips.\n this.createPane('tooltipPane');\n // @pane popupPane: HTMLElement = 700\n // Pane for popups.\n this.createPane('popupPane');\n }\n\n if (!this.options.markerZoomAnimation) {\n L.DomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\n L.DomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\n }\n },\n\n // @method rotatedPointToMapPanePoint(point: Point): Point\n // Converts a coordinate from the rotated pane reference system\n // to the reference system of the not rotated map pane.\n rotatedPointToMapPanePoint: function(point) {\n return L.point(point).rotate(this._bearing)._add(this._getRotatePanePos());\n },\n\n // @method mapPanePointToRotatedPoint(point: Point): Point\n // Converts a coordinate from the not rotated map pane reference system\n // to the reference system of the rotated pane.\n mapPanePointToRotatedPoint: function(point) {\n return L.point(point)._subtract(this._getRotatePanePos()).rotate(-this._bearing);\n },\n\n // offset of the specified place to the current center in pixels\n _getCenterOffset: function(latlng) {\n var centerOffset = mapProto._getCenterOffset.call(this, latlng);\n if (this._rotate) {\n centerOffset = centerOffset.rotate(this._bearing);\n }\n return centerOffset;\n },\n\n _getRotatePanePos: function() {\n return this._rotatePanePos || new L.Point(0, 0);\n },\n\n _getNewPixelOrigin: function(center, zoom) {\n var viewHalf = this.getSize()._divideBy(2);\n if (!this._rotate) {\n mapProto._getNewPixelOrigin.call(this, center, zoom);\n }\n return this.project(center, zoom)\n .rotate(this._bearing)\n ._subtract(viewHalf)\n ._add(this._getMapPanePos())\n ._add(this._getRotatePanePos())\n .rotate(-this._bearing)\n ._round();\n },\n\n _handleGeolocationResponse: function(pos) {\n var lat = pos.coords.latitude,\n lng = pos.coords.longitude,\n // TODO: use mapProto._handleGeolocationResponse\n hdg = pos.coords.heading,\n latlng = new L.LatLng(lat, lng),\n bounds = latlng.toBounds(pos.coords.accuracy),\n options = this._locateOptions;\n\n if (options.setView) {\n var zoom = this.getBoundsZoom(bounds);\n this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\n }\n\n var data = {\n latlng: latlng,\n bounds: bounds,\n timestamp: pos.timestamp,\n // TODO: use mapProto._handleGeolocationResponse\n heading: hdg\n };\n\n for (var i in pos.coords) {\n if (typeof pos.coords[i] === 'number') {\n data[i] = pos.coords[i];\n }\n }\n\n // @event locationfound: LocationEvent\n // Fired when geolocation (using the [`locate`](#map-locate) method)\n // went successfully.\n this.fire('locationfound', data);\n },\n\n});\n","/*!\n* Based on package 'screenfull'\n* v5.2.0 - 2021-11-03\n* (c) Sindre Sorhus; MIT License\n* Added definition for using screenfull as an amd module\n* Must be placed before the definition of leaflet.fullscreen\n* as it is required by that\n*/\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine('screenfull', factory);\n } else if (typeof module === 'object' && module.exports) {\n\t\tmodule.exports.screenfull = factory();\n } else {\n\t\t// Save 'screenfull' into global window variable\n\t\troot.screenfull = factory();\n\t}\n}(typeof self !== 'undefined' ? self : this, function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\treturn {isEnabled: false};\n\t} else {\n\t\tObject.defineProperties(screenfull, {\n\t\t\tisFullscreen: {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t\t}\n\t\t\t},\n\t\t\telement: {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function () {\n\t\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t\t}\n\t\t\t},\n\t\t\tisEnabled: {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function () {\n\t\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn screenfull;\n\t}\n}));\n\n/*!\n* leaflet.fullscreen\n*/\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n\t\t// define an AMD module that requires 'leaflet' and 'screenfull'\n\t\t// and resolve to an object containing leaflet and screenfull\n\t\tdefine('leafletFullScreen', ['leaflet', 'screenfull'], factory);\n } else if (typeof module === 'object' && module.exports) {\n\t\t// define a CommonJS module that requires 'leaflet' and 'screenfull'\n\t\tmodule.exports = factory(require('leaflet'), require('screenfull'));\n } else {\n\t\t// Assume 'leaflet' and 'screenfull' are loaded into global variable already\n\t\tfactory(root.L, root.screenfull);\n\t}\n}(typeof self !== 'undefined' ? self : this, function (leaflet, screenfull) {\n\t'use strict';\n\n\tleaflet.Control.FullScreen = leaflet.Control.extend({\n\t\toptions: {\n\t\t\tposition: 'topleft',\n\t\t\ttitle: 'Full Screen',\n\t\t\ttitleCancel: 'Exit Full Screen',\n\t\t\tforceSeparateButton: false,\n\t\t\tforcePseudoFullscreen: false,\n\t\t\tfullscreenElement: false\n\t\t},\n\n\t\t_screenfull: screenfull,\n\n\t\tonAdd: function (map) {\n\t\t\tvar className = 'leaflet-control-zoom-fullscreen', container, content = '';\n\n\t\t\tif (map.zoomControl && !this.options.forceSeparateButton) {\n\t\t\t\tcontainer = map.zoomControl._container;\n\t\t\t} else {\n\t\t\t\tcontainer = leaflet.DomUtil.create('div', 'leaflet-bar');\n\t\t\t}\n\n\t\t\tif (this.options.content) {\n\t\t\t\tcontent = this.options.content;\n\t\t\t} else {\n\t\t\t\tclassName += ' fullscreen-icon';\n\t\t\t}\n\n\t\t\tthis._createButton(this.options.title, className, content, container, this.toggleFullScreen, this);\n\t\t\tthis._map.fullscreenControl = this;\n\n\t\t\tthis._map.on('enterFullscreen exitFullscreen', this._toggleState, this);\n\n\t\t\treturn container;\n\t\t},\n\n\t\tonRemove: function () {\n\t\t\tleaflet.DomEvent\n\t\t\t\t.off(this.link, 'click', leaflet.DomEvent.stop)\n\t\t\t\t.off(this.link, 'click', this.toggleFullScreen, this);\n\n\t\t\tif (this._screenfull.isEnabled) {\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.off(this._container, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.off(this._container, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, this);\n\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.off(document, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.off(document, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, this);\n\t\t\t}\n\t\t},\n\n\t\t_createButton: function (title, className, content, container, fn, context) {\n\t\t\tthis.link = leaflet.DomUtil.create('a', className, container);\n\t\t\tthis.link.href = '#';\n\t\t\tthis.link.title = title;\n\t\t\tthis.link.innerHTML = content;\n\n\t\t\tthis.link.setAttribute('role', 'button');\n\t\t\tthis.link.setAttribute('aria-label', title);\n\n\t\t\tL.DomEvent.disableClickPropagation(container);\n\n\t\t\tleaflet.DomEvent\n\t\t\t\t.on(this.link, 'click', leaflet.DomEvent.stop)\n\t\t\t\t.on(this.link, 'click', fn, context);\n\n\t\t\tif (this._screenfull.isEnabled) {\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.on(container, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.on(container, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, context);\n\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.on(document, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.on(document, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, context);\n\t\t\t}\n\n\t\t\treturn this.link;\n\t\t},\n\n\t\ttoggleFullScreen: function () {\n\t\t\tvar map = this._map;\n\t\t\tmap._exitFired = false;\n\t\t\tif (map._isFullscreen) {\n\t\t\t\tif (this._screenfull.isEnabled && !this.options.forcePseudoFullscreen) {\n\t\t\t\t\tthis._screenfull.exit();\n\t\t\t\t} else {\n\t\t\t\t\tleaflet.DomUtil.removeClass(this.options.fullscreenElement ? this.options.fullscreenElement : map._container, 'leaflet-pseudo-fullscreen');\n\t\t\t\t\tmap.invalidateSize();\n\t\t\t\t}\n\t\t\t\tmap.fire('exitFullscreen');\n\t\t\t\tmap._exitFired = true;\n\t\t\t\tmap._isFullscreen = false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (this._screenfull.isEnabled && !this.options.forcePseudoFullscreen) {\n\t\t\t\t\tthis._screenfull.request(this.options.fullscreenElement ? this.options.fullscreenElement : map._container);\n\t\t\t\t} else {\n\t\t\t\t\tleaflet.DomUtil.addClass(this.options.fullscreenElement ? this.options.fullscreenElement : map._container, 'leaflet-pseudo-fullscreen');\n\t\t\t\t\tmap.invalidateSize();\n\t\t\t\t}\n\t\t\t\tmap.fire('enterFullscreen');\n\t\t\t\tmap._isFullscreen = true;\n\t\t\t}\n\t\t},\n\n\t\t_toggleState: function () {\n\t\t\tthis.link.title = this._map._isFullscreen ? this.options.title : this.options.titleCancel;\n\t\t\tthis._map._isFullscreen ? L.DomUtil.removeClass(this.link, 'leaflet-fullscreen-on') : L.DomUtil.addClass(this.link, 'leaflet-fullscreen-on');\n\t\t},\n\n\t\t_handleFullscreenChange: function () {\n\t\t\tvar map = this._map;\n\t\t\tmap.invalidateSize();\n\t\t\tif (!this._screenfull.isFullscreen && !map._exitFired) {\n\t\t\t\tmap.fire('exitFullscreen');\n\t\t\t\tmap._exitFired = true;\n\t\t\t\tmap._isFullscreen = false;\n\t\t\t}\n\t\t}\n\t});\n\n\tleaflet.Map.include({\n\t\ttoggleFullscreen: function () {\n\t\t\tthis.fullscreenControl.toggleFullScreen();\n\t\t}\n\t});\n\n\tleaflet.Map.addInitHook(function () {\n\t\tif (this.options.fullscreenControl) {\n\t\t\tthis.addControl(leaflet.control.fullscreen(this.options.fullscreenControlOptions));\n\t\t}\n\t});\n\n\tleaflet.control.fullscreen = function (options) {\n\t\treturn new leaflet.Control.FullScreen(options);\n\t};\n\n\t// must return an object containing also screenfull to make screenfull\n\t// available outside of this package, if used as an amd module,\n\t// as webpack cannot handle amd define with moduleid\n\treturn {leaflet: leaflet, screenfull: screenfull};\n}));\n","/*\n * L.Map.CompassBearing will rotate the map according to a smartphone's compass.\n */\n\nL.Map.CompassBearing = L.Handler.extend({\n\n initialize: function(map) {\n if (!window.DeviceOrientationEvent) {\n this._capable = false;\n return;\n }\n this._capable = true;\n this._map = map;\n\n this._throttled = L.Util.throttle(this._onDeviceOrientation, 1000, this);\n },\n\n addHooks: function() {\n if (this._capable && this._map._rotate) {\n L.DomEvent.on(window, 'deviceorientation', this._throttled, this);\n }\n },\n\n removeHooks: function() {\n if (this._capable && this._map._rotate) {\n L.DomEvent.off(window, 'deviceorientation', this._throttled, this);\n }\n },\n\n _onDeviceOrientation: function(event) {\n if (event.alpha !== null) {\n this._map.setBearing(event.alpha - window.orientation);\n }\n },\n\n});\n\n// @section Handlers\n// @property compassBearing: Handler\n// Compass bearing handler.\nL.Map.addInitHook('addHandler', 'compassBearing', L.Map.CompassBearing);\n","/*\n * L.Handler.ContainerMutation triggers `invalidateResize` when the map's DOM container mutates.\n */\n\n// @namespace Map\n// @section Interaction Options\nL.Map.mergeOptions({\n\n // @option trackContainerMutation: Boolean = false\n // Whether the map uses [mutation observers](https://developer.mozilla.org/docs/Web/API/MutationObserver)\n // to detect changes in its container and trigger `invalidateSize`. Disabled\n // by default due to support not being available in all web browsers.\n trackContainerMutation: false\n\n});\n\nL.Map.ContainerMutation = L.Handler.extend({\n\n addHooks: function() {\n if (!L.Browser.mutation) {\n return;\n }\n\n if (!this._observer) {\n this._observer = new MutationObserver(L.Util.bind(this._onMutation, this));\n }\n\n this._observer.observe(this._map.getContainer(), {\n childList: false,\n attributes: true,\n characterData: false,\n subtree: false,\n attributeFilter: ['style']\n });\n },\n\n removeHooks: function() {\n if (!L.Browser.mutation) {\n return;\n }\n this._observer.disconnect();\n },\n\n _onMutation: function() {\n this._map.invalidateSize();\n },\n\n});\n\n// @section Handlers\n// @property containerMutation: Handler\n// Container mutation handler (disabled unless [`trackContainerMutation`](#map-trackcontainermutation) is set).\nL.Map.addInitHook('addHandler', 'trackContainerMutation', L.Map.ContainerMutation);\n","/*\n * L.Handler.TouchGestures is both TouchZoom plus TouchRotate.\n */\n\n// @namespace Map\n// @section Interaction Options\nL.Map.mergeOptions({\n\n // @option bounceAtZoomLimits: Boolean = true\n // Set it to false if you don't want the map to zoom beyond min/max zoom\n // and then bounce back when pinch-zooming.\n bounceAtZoomLimits: true,\n\n});\n\nL.Map.TouchGestures = L.Handler.extend({\n\n initialize: function(map) {\n this._map = map;\n this.rotate = !!this._map.options.touchRotate;\n this.zoom = !!this._map.options.touchZoom;\n },\n\n addHooks: function() {\n L.DomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);\n },\n\n removeHooks: function() {\n L.DomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);\n },\n\n _onTouchStart: function(e) {\n var map = this._map;\n\n if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming || this._rotating) { return; }\n\n var p1 = map.mouseEventToContainerPoint(e.touches[0]),\n p2 = map.mouseEventToContainerPoint(e.touches[1]),\n vector = p1.subtract(p2);\n\n this._centerPoint = map.getSize()._divideBy(2);\n this._startLatLng = map.containerPointToLatLng(this._centerPoint);\n\n if (this.zoom) {\n if (map.options.touchZoom !== 'center') {\n this._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n }\n this._startDist = p1.distanceTo(p2);\n this._startZoom = map.getZoom();\n this._zooming = true;\n } else {\n this._zooming = false;\n }\n\n if (this.rotate) {\n this._startTheta = Math.atan(vector.x / vector.y);\n this._startBearing = map.getBearing();\n if (vector.y < 0) { this._startBearing += 180; }\n this._rotating = true;\n } else {\n this._rotating = false;\n }\n\n this._moved = false;\n\n map.stop();\n\n L.DomEvent\n .on(document, 'touchmove', this._onTouchMove, this)\n .on(document, 'touchend', this._onTouchEnd, this);\n\n L.DomEvent.preventDefault(e);\n },\n\n _onTouchMove: function(e) {\n if (!e.touches || e.touches.length !== 2 || !(this._zooming || this._rotating)) { return; }\n\n var map = this._map,\n p1 = map.mouseEventToContainerPoint(e.touches[0]),\n p2 = map.mouseEventToContainerPoint(e.touches[1]),\n vector = p1.subtract(p2),\n scale = p1.distanceTo(p2) / this._startDist,\n delta;\n\n if (this._rotating) {\n var theta = Math.atan(vector.x / vector.y);\n var bearingDelta = (theta - this._startTheta) * L.DomUtil.RAD_TO_DEG;\n if (vector.y < 0) { bearingDelta += 180; }\n if (bearingDelta) {\n /// TODO: The pivot should be the last touch point, but zoomAnimation manages to\n /// overwrite the rotate pane position. Maybe related to #3529.\n map.setBearing(this._startBearing - bearingDelta);\n }\n }\n\n if (this._zooming) {\n this._zoom = map.getScaleZoom(scale, this._startZoom);\n\n if (!map.options.bounceAtZoomLimits && (\n (this._zoom < map.getMinZoom() && scale < 1) ||\n (this._zoom > map.getMaxZoom() && scale > 1))) {\n this._zoom = map._limitZoom(this._zoom);\n }\n\n if (map.options.touchZoom === 'center') {\n this._center = this._startLatLng;\n if (scale === 1) { return; }\n } else {\n // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n if (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n\n var alpha = -map.getBearing() * L.DomUtil.DEG_TO_RAD;\n\n this._center = map.unproject(map.project(this._pinchStartLatLng).subtract(delta.rotate(alpha)));\n }\n\n }\n\n if (!this._moved) {\n map._moveStart(true);\n this._moved = true;\n }\n\n L.Util.cancelAnimFrame(this._animRequest);\n\n var moveFn = L.bind(map._move, map, this._center, this._zoom, { pinch: true, round: false });\n this._animRequest = L.Util.requestAnimFrame(moveFn, this, true);\n\n L.DomEvent.preventDefault(e);\n },\n\n _onTouchEnd: function() {\n if (!this._moved || !this._zooming) {\n this._zooming = false;\n return;\n }\n\n this._zooming = false;\n this._rotating = false;\n L.Util.cancelAnimFrame(this._animRequest);\n\n L.DomEvent\n .off(document, 'touchmove', this._onTouchMove)\n .off(document, 'touchend', this._onTouchEnd);\n\n if (this.zoom) {\n // Pinch updates GridLayers' levels only when snapZoom is off, so snapZoom becomes noUpdate.\n if (this._map.options.zoomAnimation) {\n this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.snapZoom);\n } else {\n this._map._resetView(this._center, this._map._limitZoom(this._zoom));\n }\n }\n },\n\n});\n\n// @section Handlers\n// @property touchGestures: Handler\n// Touch gestures handler.\nL.Map.addInitHook('addHandler', 'touchGestures', L.Map.TouchGestures);\n","/*\n * L.Handler.TouchRotate is used by L.Map to add two-finger rotation gestures.\n */\n\n// @namespace Map\n// @section Interaction Options\nL.Map.mergeOptions({\n\n // @section Touch interaction options\n // @option touchRotate: Boolean|String = *\n // Whether the map can be rotated with a two-finger rotation gesture\n touchRotate: false,\n\n});\n\nL.Map.TouchRotate = L.Handler.extend({\n\n addHooks: function() {\n this._map.touchGestures.enable();\n this._map.touchGestures.rotate = true;\n },\n\n removeHooks: function() {\n this._map.touchGestures.rotate = false;\n },\n\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch rotate handler.\nL.Map.addInitHook('addHandler', 'touchRotate', L.Map.TouchRotate);\n","/*\n * L.Handler.ShiftKeyRotate is used by L.Map to add shift-wheel rotation.\n */\n\n// @namespace Map\n// @section Interaction Options\nL.Map.mergeOptions({\n\n // @section ShiftKey interaction options\n // @option shiftKeyRotate: Boolean|String = *\n // Whether the map can be rotated with a shit-wheel rotation\n shiftKeyRotate: true,\n\n});\n\nL.Map.ShiftKeyRotate = L.Handler.extend({\n\n addHooks: function() {\n L.DomEvent.on(this._map._container, \"wheel\", this._handleShiftScroll, this);\n // this._map.shiftKeyRotate.enable();\n this._map.shiftKeyRotate.rotate = true;\n },\n\n removeHooks: function() {\n L.DomEvent.off(this._map._container, \"wheel\", this._handleShiftScroll, this);\n this._map.shiftKeyRotate.rotate = false;\n },\n\n _handleShiftScroll: function(e) {\n if (e.shiftKey) {\n e.preventDefault();\n this._map.scrollWheelZoom.disable();\n this._map.setBearing((this._map._bearing * L.DomUtil.RAD_TO_DEG) + Math.sign(e.deltaY) * 5);\n } else {\n this._map.scrollWheelZoom.enable();\n }\n },\n\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch rotate handler.\nL.Map.addInitHook('addHandler', 'shiftKeyRotate', L.Map.ShiftKeyRotate);\n\n// decrease \"scrollWheelZoom\" handler priority over \"shiftKeyRotate\" handler\nL.Map.addInitHook(function() {\n if (this.scrollWheelZoom.enabled() && this.shiftKeyRotate.enabled()) {\n this.scrollWheelZoom.disable();\n this.scrollWheelZoom.enable();\n }\n});\n","/*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n// @namespace Map\n// @section Interaction Options\nL.Map.mergeOptions({\n\n // @section Touch interaction options\n // @option touchZoom: Boolean|String = *\n // Whether the map can be zoomed by touch-dragging with two fingers. If\n // passed `'center'`, it will zoom to the center of the view regardless of\n // where the touch events (fingers) were. Enabled for touch-capable web\n // browsers except for old Androids.\n touchZoom: L.Browser.touch && !L.Browser.android23,\n\n bounceAtZoomLimits: false,\n});\n\nL.Map.TouchZoom = L.Handler.extend({\n\n addHooks: function() {\n L.DomUtil.addClass(this._map._container, 'leaflet-touch-zoom');\n this._map.touchGestures.enable();\n this._map.touchGestures.zoom = true;\n },\n\n removeHooks: function() {\n L.DomUtil.removeClass(this._map._container, 'leaflet-touch-zoom');\n this._map.touchGestures.zoom = false;\n },\n\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch zoom handler.\nL.Map.addInitHook('addHandler', 'touchZoom', L.Map.TouchZoom);\n","/**\n * L.Control.Rotate\n */\n\n// A tri-state control for map rotation. States are:\n// Locked (default)\n// Unlocked (user can pinch-rotate)\n// Follow (rotation follows device orientation, if available)\nL.Control.Rotate = L.Control.extend({\n\n options: {\n position: 'topleft',\n closeOnZeroBearing: true\n },\n\n onAdd: function(map) {\n this._onDeviceOrientation = L.Util.throttle(this._unthrottledOnDeviceOrientation, 100, this);\n\n var container = this._container = L.DomUtil.create('div', 'leaflet-control-rotate leaflet-bar');\n\n // this.button = L.Control.Zoom.prototype._createButton.call(this, 'R', 'leaflet-control-rotate', 'leaflet-control-rotate', container, this._toggleLock);\n\n var arrow = this._arrow = L.DomUtil.create('span', 'leaflet-control-rotate-arrow');\n\n arrow.style.backgroundImage = `url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E\")`;\n arrow.style.cursor = 'grab';\n arrow.style.display = 'block';\n arrow.style.width = '100%';\n arrow.style.height = '100%';\n arrow.style.backgroundRepeat = 'no-repeat';\n arrow.style.backgroundPosition = '50%';\n\n // Copy-pasted from L.Control.Zoom\n var link = this._link = L.DomUtil.create('a', 'leaflet-control-rotate-toggle', container);\n link.appendChild(arrow);\n link.href = '#';\n link.title = 'Rotate map';\n\n L.DomEvent\n .on(link, 'dblclick', L.DomEvent.stopPropagation)\n .on(link, 'mousedown', this._handleMouseDown, this)\n .on(link, 'click', L.DomEvent.stop)\n .on(link, 'click', this._cycleState, this)\n .on(link, 'click', this._refocusOnMap, this);\n\n if (!L.Browser.any3d) {\n L.DomUtil.addClass(link, 'leaflet-disabled');\n }\n\n this._restyle();\n\n map.on('rotate', this._restyle.bind(this));\n\n // State flag\n this._follow = false;\n this._canFollow = false;\n\n if (this.options.closeOnZeroBearing && map.getBearing() === 0) {\n container.style.display = 'none';\n }\n\n return container;\n },\n\n _handleMouseDown: function(e) {\n L.DomEvent.stopPropagation(e);\n this.dragging = true;\n this.dragstartX = e.pageX;\n this.dragstartY = e.pageY;\n L.DomEvent\n .on(document, 'mousemove', this._handleMouseDrag, this)\n .on(document, 'mouseup', this._handleMouseUp, this);\n },\n\n _handleMouseUp: function(e) {\n L.DomEvent.stopPropagation(e);\n this.dragging = false;\n\n L.DomEvent\n .off(document, 'mousemove', this._handleMouseDrag, this)\n .off(document, 'mouseup', this._handleMouseUp, this);\n },\n\n _handleMouseDrag: function(e) {\n if (!this.dragging) { return; }\n var deltaX = e.clientX - this.dragstartX;\n this._map.setBearing(deltaX);\n },\n\n _cycleState: function(ev) {\n var map = this._map;\n\n if (!map) { return; }\n\n if (!map.touchRotate.enabled() && !map.compassBearing.enabled()) {\n // Go from disabled to touch\n map.touchRotate.enable();\n\n // console.log('state is now: touch rotate');\n } else {\n\n if (!map.compassBearing.enabled()) {\n // Go from touch to compass\n map.touchRotate.disable();\n map.compassBearing.enable();\n\n // console.log('state is now: compass');\n\n // It is possible that compass is not supported. If so,\n // the hangler will automatically go from compass to disabled.\n } else {\n // Go from compass to disabled\n map.compassBearing.disable();\n\n // console.log('state is now: locked');\n\n map.setBearing(0);\n if (this.options.closeOnZeroBearing) {\n map.touchRotate.enable();\n }\n }\n }\n this._restyle();\n },\n\n _restyle: function() {\n if (this._map.options.rotate) {\n var map = this._map;\n var bearing = map.getBearing();\n if (this.options.closeOnZeroBearing && bearing) {\n this._container.style.display = 'block';\n }\n\n var cssTransform = 'rotate(' + bearing + 'deg)';\n this._arrow.style.transform = cssTransform;\n\n if (map.compassBearing.enabled()) {\n this._link.style.backgroundColor = 'orange';\n } else if (map.touchRotate.enabled()) {\n this._link.style.backgroundColor = null;\n } else {\n this._link.style.backgroundColor = 'grey';\n if (this.options.closeOnZeroBearing && map.getBearing() === 0) {\n this._container.style.display = 'none';\n }\n }\n } else {\n L.DomUtil.addClass(this._link, 'leaflet-disabled');\n }\n },\n\n});\n\nL.control.rotate = function(options) {\n return new L.Control.Rotate(options);\n};\n\nL.Map.mergeOptions({\n rotateControl: true,\n});\n\nL.Map.addInitHook(function() {\n if (this.options.rotateControl) {\n var options = typeof this.options.rotateControl === 'object' ? this.options.rotateControl : {};\n this.rotateControl = L.control.rotate(options);\n this.addControl(this.rotateControl);\n }\n});\n","/*!\nCopyright (c) 2016 Dominik Moritz\n\nThis file is part of the leaflet locate control. It is licensed under the MIT license.\nYou can find the project at: https://github.com/domoritz/leaflet-locatecontrol\n*/\n(function (factory, window) {\n // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders\n // for details on how to structure a leaflet plugin.\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n if (typeof window !== 'undefined' && window.L) {\n module.exports = factory(L);\n } else {\n module.exports = factory(require('leaflet'));\n }\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L){\n window.L.Control.Locate = factory(L);\n }\n} (function (L) {\n const LDomUtilApplyClassesMethod = (method, element, classNames) => {\n classNames = classNames.split(' ');\n classNames.forEach(function(className) {\n L.DomUtil[method].call(this, element, className);\n });\n };\n\n const addClasses = (el, names) => LDomUtilApplyClassesMethod('addClass', el, names);\n const removeClasses = (el, names) => LDomUtilApplyClassesMethod('removeClass', el, names);\n\n /**\n * Compatible with L.Circle but a true marker instead of a path\n */\n const LocationMarker = L.Marker.extend({\n initialize(latlng, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this.createIcon();\n },\n\n /**\n * Create a styled circle location marker\n */\n createIcon() {\n const opt = this.options;\n\n let style = '';\n\n if (opt.color !== undefined) {\n style += `stroke:${opt.color};`;\n }\n if (opt.weight !== undefined) {\n style += `stroke-width:${opt.weight};`;\n }\n if (opt.fillColor !== undefined) {\n style += `fill:${opt.fillColor};`;\n }\n if (opt.fillOpacity !== undefined) {\n style += `fill-opacity:${opt.fillOpacity};`;\n }\n if (opt.opacity !== undefined) {\n style += `opacity:${opt.opacity};`;\n }\n\n const icon = this._getIconSVG(opt, style);\n\n this._locationIcon = L.divIcon({\n className: icon.className,\n html: icon.svg,\n iconSize: [icon.w,icon.h],\n });\n\n this.setIcon(this._locationIcon);\n },\n\n /**\n * Return the raw svg for the shape\n *\n * Split so can be easily overridden\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = options.weight;\n const s = r + w;\n const s2 = s * 2;\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${s2}\" height=\"${s2}\" version=\"1.1\" viewBox=\"-${s} -${s} ${s2} ${s2}\">` +\n '<circle r=\"'+r+'\" style=\"'+style+'\" />' +\n '</svg>';\n return {\n className: 'leaflet-control-locate-location',\n svg,\n w: s2,\n h: s2\n };\n },\n\n setStyle(style) {\n L.Util.setOptions(this, style);\n this.createIcon();\n }\n });\n\n const CompassMarker = LocationMarker.extend({\n initialize(latlng, heading, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this._heading = heading;\n this.createIcon();\n },\n\n setHeading(heading) {\n this._heading = heading;\n },\n\n /**\n * Create a styled arrow compass marker\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = (options.width + options.weight);\n const h = (r+options.depth + options.weight)*2;\n const path = `M0,0 l${options.width/2},${options.depth} l-${w},0 z`;\n const svgstyle = `transform: rotate(${this._heading}deg)`;\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${w}\" height=\"${h}\" version=\"1.1\" viewBox=\"-${w/2} 0 ${w} ${h}\" style=\"${svgstyle}\">`+\n '<path d=\"'+path+'\" style=\"'+style+'\" />'+\n '</svg>';\n return {\n className: 'leaflet-control-locate-heading',\n svg,\n w,\n h\n };\n },\n });\n\n\n const LocateControl = L.Control.extend({\n options: {\n /** Position of the control */\n position: 'topleft',\n /** The layer that the user's location should be drawn on. By default creates a new layer. */\n layer: undefined,\n /**\n * Automatically sets the map view (zoom and pan) to the user's location as it updates.\n * While the map is following the user's location, the control is in the `following` state,\n * which changes the style of the control and the circle marker.\n *\n * Possible values:\n * - false: never updates the map view when location changes.\n * - 'once': set the view when the location is first determined\n * - 'always': always updates the map view when location changes.\n * The map view follows the user's location.\n * - 'untilPan': like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n * - 'untilPanOrZoom': (default) like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n */\n setView: 'untilPanOrZoom',\n /** Keep the current map zoom level when setting the view and only pan. */\n keepCurrentZoomLevel: false,\n /** After activating the plugin by clicking on the icon, zoom to the selected zoom level, even when keepCurrentZoomLevel is true. Set to 'false' to disable this feature. */\n initialZoomLevel: false,\n /**\n * This callback can be used to override the viewport tracking\n * This function should return a LatLngBounds object.\n *\n * For example to extend the viewport to ensure that a particular LatLng is visible:\n *\n * getLocationBounds: function(locationEvent) {\n * return locationEvent.bounds.extend([-33.873085, 151.219273]);\n * },\n */\n getLocationBounds(locationEvent) {\n return locationEvent.bounds;\n },\n /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */\n flyTo: false,\n /**\n * The user location can be inside and outside the current view when the user clicks on the\n * control that is already active. Both cases can be configures separately.\n * Possible values are:\n * - 'setView': zoom and pan to the current location\n * - 'stop': stop locating and remove the location marker\n */\n clickBehavior: {\n /** What should happen if the user clicks on the control while the location is within the current view. */\n inView: 'stop',\n /** What should happen if the user clicks on the control while the location is outside the current view. */\n outOfView: 'setView',\n /**\n * What should happen if the user clicks on the control while the location is within the current view\n * and we could be following but are not. Defaults to a special value which inherits from 'inView';\n */\n inViewNotFollowing: 'inView',\n },\n /**\n * If set, save the map bounds just before centering to the user's\n * location. When control is disabled, set the view back to the\n * bounds that were saved.\n */\n returnToPrevBounds: false,\n /**\n * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait\n * until the locate API returns a new location before they see where they are again.\n */\n cacheLocation: true,\n /** If set, a circle that shows the location accuracy is drawn. */\n drawCircle: true,\n /** If set, the marker at the users' location is drawn. */\n drawMarker: true,\n /** If set and supported then show the compass heading */\n showCompass: true,\n /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */\n markerClass: LocationMarker,\n /** The class us be used to create the compass bearing arrow */\n compassClass: CompassMarker,\n /** Accuracy circle style properties. NOTE these styles should match the css animations styles */\n circleStyle: {\n className: 'leaflet-control-locate-circle',\n color: '#136AEC',\n fillColor: '#136AEC',\n fillOpacity: 0.15,\n weight: 0\n },\n /** Inner marker style properties. Only works if your marker class supports `setStyle`. */\n markerStyle: {\n className: 'leaflet-control-locate-marker',\n color: '#fff',\n fillColor: '#2A93EE',\n fillOpacity: 1,\n weight: 3,\n opacity: 1,\n radius: 9\n },\n /** Compass */\n compassStyle: {\n fillColor: '#2A93EE',\n fillOpacity: 1,\n weight: 0,\n color: '#fff',\n opacity: 1,\n radius: 9, // How far is the arrow is from the center of of the marker\n width: 9, // Width of the arrow\n depth: 6 // Length of the arrow\n },\n /**\n * Changes to accuracy circle and inner marker while following.\n * It is only necessary to provide the properties that should change.\n */\n followCircleStyle: {},\n followMarkerStyle: {\n // color: '#FFA500',\n // fillColor: '#FFB000'\n },\n followCompassStyle: {},\n /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */\n icon: 'leaflet-control-locate-location-arrow',\n iconLoading: 'leaflet-control-locate-spinner',\n /** The element to be created for icons. For example span or i */\n iconElementTag: 'span',\n /** The element to be created for the text. For example small or span */\n textElementTag: 'small',\n /** Padding around the accuracy circle. */\n circlePadding: [0, 0],\n /** Use metric units. */\n metric: true,\n /**\n * This callback can be used in case you would like to override button creation behavior.\n * This is useful for DOM manipulation frameworks such as angular etc.\n * This function should return an object with HtmlElement for the button (link property) and the icon (icon property).\n */\n createButtonCallback(container, options) {\n const link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container);\n link.title = options.strings.title;\n link.href = '#';\n link.setAttribute('role', 'button');\n const icon = L.DomUtil.create(options.iconElementTag, options.icon, link);\n\n if (options.strings.text !== undefined) {\n const text = L.DomUtil.create(options.textElementTag, 'leaflet-locate-text', link);\n text.textContent = options.strings.text;\n link.classList.add('leaflet-locate-text-active');\n link.parentNode.style.display = \"flex\";\n if (options.icon.length > 0) {\n icon.classList.add('leaflet-locate-icon');\n }\n }\n\n return { link, icon };\n },\n /** This event is called in case of any location error that is not a time out error. */\n onLocationError(err, control) {\n alert(err.message);\n },\n /**\n * This event is called when the user's location is outside the bounds set on the map.\n * The event is called repeatedly when the location changes.\n */\n onLocationOutsideMapBounds(control) {\n control.stop();\n alert(control.options.strings.outsideMapBoundsMsg);\n },\n /** Display a pop-up when the user click on the inner marker. */\n showPopup: true,\n strings: {\n title: \"Show me where I am\",\n metersUnit: \"meters\",\n feetUnit: \"feet\",\n popup: \"You are within {distance} {unit} from this point\",\n outsideMapBoundsMsg: \"You seem located outside the boundaries of the map\"\n },\n /** The default options passed to leaflets locate method. */\n locateOptions: {\n maxZoom: Infinity,\n watch: true, // if you overwrite this, visualization cannot be updated\n setView: false // have to set this to false because we have to\n // do setView manually\n }\n },\n\n initialize(options) {\n // set default options if nothing is set (merge one step deep)\n for (const i in options) {\n if (typeof this.options[i] === 'object') {\n L.extend(this.options[i], options[i]);\n } else {\n this.options[i] = options[i];\n }\n }\n\n // extend the follow marker style and circle from the normal style\n this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle);\n this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle);\n this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle);\n },\n\n /**\n * Add control to map. Returns the container for the control.\n */\n onAdd(map) {\n const container = L.DomUtil.create('div',\n 'leaflet-control-locate leaflet-bar leaflet-control');\n this._container = container;\n this._map = map;\n this._layer = this.options.layer || new L.LayerGroup();\n this._layer.addTo(map);\n this._event = undefined;\n this._compassHeading = null;\n this._prevBounds = null;\n\n const linkAndIcon = this.options.createButtonCallback(container, this.options);\n this._link = linkAndIcon.link;\n this._icon = linkAndIcon.icon;\n\n L.DomEvent.on(\n this._link,\n \"click\",\n function (ev) {\n L.DomEvent.stopPropagation(ev);\n L.DomEvent.preventDefault(ev);\n this._onClick();\n },\n this\n ).on(this._link, \"dblclick\", L.DomEvent.stopPropagation);\n\n this._resetVariables();\n\n this._map.on('unload', this._unload, this);\n\n return container;\n },\n\n /**\n * This method is called when the user clicks on the control.\n */\n _onClick() {\n this._justClicked = true;\n const wasFollowing = this._isFollowing();\n this._userPanned = false;\n this._userZoomed = false;\n\n if (this._active && !this._event) {\n // click while requesting\n this.stop();\n } else if (this._active) {\n const behaviors = this.options.clickBehavior;\n let behavior = behaviors.outOfView;\n if (this._map.getBounds().contains(this._event.latlng)) {\n behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing;\n }\n\n // Allow inheriting from another behavior\n if (behaviors[behavior]) {\n behavior = behaviors[behavior];\n }\n\n switch (behavior) {\n case 'setView':\n this.setView();\n break;\n case 'stop':\n this.stop();\n if (this.options.returnToPrevBounds) {\n const f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n f.bind(this._map)(this._prevBounds);\n }\n break;\n }\n } else {\n if (this.options.returnToPrevBounds) {\n this._prevBounds = this._map.getBounds();\n }\n this.start();\n }\n\n this._updateContainerStyle();\n },\n\n /**\n * Starts the plugin:\n * - activates the engine\n * - draws the marker (if coordinates available)\n */\n start() {\n this._activate();\n\n if (this._event) {\n this._drawMarker(this._map);\n\n // if we already have a location but the user clicked on the control\n if (this.options.setView) {\n this.setView();\n }\n }\n this._updateContainerStyle();\n },\n\n /**\n * Stops the plugin:\n * - deactivates the engine\n * - reinitializes the button\n * - removes the marker\n */\n stop() {\n this._deactivate();\n\n this._cleanClasses();\n this._resetVariables();\n\n this._removeMarker();\n },\n\n /**\n * Keep the control active but stop following the location\n */\n stopFollowing() {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n },\n\n /**\n * This method launches the location engine.\n * It is called before the marker is updated,\n * event if it does not mean that the event will be ready.\n *\n * Override it if you want to add more functionalities.\n * It should set the this._active to true and do nothing if\n * this._active is true.\n */\n _activate() {\n if (!this._active) {\n this._map.locate(this.options.locateOptions);\n this._map.fire('locateactivate', this);\n this._active = true;\n\n // bind event listeners\n this._map.on('locationfound', this._onLocationFound, this);\n this._map.on('locationerror', this._onLocationError, this);\n this._map.on('dragstart', this._onDrag, this);\n this._map.on('zoomstart', this._onZoom, this);\n this._map.on('zoomend', this._onZoomEnd, this);\n if (this.options.showCompass) {\n const oriAbs = 'ondeviceorientationabsolute' in window;\n if (oriAbs || ('ondeviceorientation' in window)) {\n const _this = this;\n const deviceorientation = function () {\n L.DomEvent.on(window, oriAbs ? 'deviceorientationabsolute' : 'deviceorientation', _this._onDeviceOrientation, _this);\n };\n if (DeviceOrientationEvent && typeof DeviceOrientationEvent.requestPermission === 'function') {\n DeviceOrientationEvent.requestPermission().then(function (permissionState) {\n if (permissionState === 'granted') {\n deviceorientation();\n }\n });\n } else {\n deviceorientation();\n }\n }\n }\n }\n },\n\n /**\n * Called to stop the location engine.\n *\n * Override it to shutdown any functionalities you added on start.\n */\n _deactivate() {\n this._map.stopLocate();\n this._map.fire('locatedeactivate', this);\n this._active = false;\n\n if (!this.options.cacheLocation) {\n this._event = undefined;\n }\n\n // unbind event listeners\n this._map.off('locationfound', this._onLocationFound, this);\n this._map.off('locationerror', this._onLocationError, this);\n this._map.off('dragstart', this._onDrag, this);\n this._map.off('zoomstart', this._onZoom, this);\n this._map.off('zoomend', this._onZoomEnd, this);\n if (this.options.showCompass) {\n this._compassHeading = null;\n if ('ondeviceorientationabsolute' in window) {\n L.DomEvent.off(window, 'deviceorientationabsolute', this._onDeviceOrientation, this);\n } else if ('ondeviceorientation' in window) {\n L.DomEvent.off(window, 'deviceorientation', this._onDeviceOrientation, this);\n }\n }\n },\n\n /**\n * Zoom (unless we should keep the zoom level) and an to the current view.\n */\n setView() {\n this._drawMarker();\n if (this._isOutsideMapBounds()) {\n this._event = undefined; // clear the current location so we can get back into the bounds\n this.options.onLocationOutsideMapBounds(this);\n } else {\n if (this._justClicked && this.options.initialZoomLevel !== false) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.setView;\n f.bind(this._map)([this._event.latitude, this._event.longitude], this.options.initialZoomLevel);\n } else if (this.options.keepCurrentZoomLevel) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;\n f.bind(this._map)([this._event.latitude, this._event.longitude]);\n } else {\n var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n // Ignore zoom events while setting the viewport as these would stop following\n this._ignoreEvent = true;\n f.bind(this._map)(this.options.getLocationBounds(this._event), {\n padding: this.options.circlePadding,\n maxZoom: this.options.initialZoomLevel || this.options.locateOptions.maxZoom\n });\n L.Util.requestAnimFrame(function(){\n // Wait until after the next animFrame because the flyTo can be async\n this._ignoreEvent = false;\n }, this);\n\n }\n }\n },\n\n /**\n *\n */\n _drawCompass() {\n if (!this._event) {\n return;\n }\n\n const latlng = this._event.latlng;\n\n if (this.options.showCompass && latlng && this._compassHeading !== null) {\n const cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle;\n if (!this._compass) {\n this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer);\n } else {\n this._compass.setLatLng(latlng);\n this._compass.setHeading(this._compassHeading);\n // If the compassClass can be updated with setStyle, update it.\n if (this._compass.setStyle) {\n this._compass.setStyle(cStyle);\n }\n }\n //\n }\n if (this._compass && (!this.options.showCompass || this._compassHeading === null)) {\n this._compass.removeFrom(this._layer);\n this._compass = null;\n }\n },\n\n /**\n * Draw the marker and accuracy circle on the map.\n *\n * Uses the event retrieved from onLocationFound from the map.\n */\n _drawMarker() {\n if (this._event.accuracy === undefined) {\n this._event.accuracy = 0;\n }\n\n const radius = this._event.accuracy;\n const latlng = this._event.latlng;\n\n // circle with the radius of the location's accuracy\n if (this.options.drawCircle) {\n const style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle;\n\n if (!this._circle) {\n this._circle = L.circle(latlng, radius, style).addTo(this._layer);\n } else {\n this._circle.setLatLng(latlng).setRadius(radius).setStyle(style);\n }\n }\n\n let distance;\n let unit;\n if (this.options.metric) {\n distance = radius.toFixed(0);\n unit = this.options.strings.metersUnit;\n } else {\n distance = (radius * 3.2808399).toFixed(0);\n unit = this.options.strings.feetUnit;\n }\n\n // small inner marker\n if (this.options.drawMarker) {\n const mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;\n if (!this._marker) {\n this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);\n } else {\n this._marker.setLatLng(latlng);\n // If the markerClass can be updated with setStyle, update it.\n if (this._marker.setStyle) {\n this._marker.setStyle(mStyle);\n }\n }\n }\n\n this._drawCompass();\n\n const t = this.options.strings.popup;\n function getPopupText() {\n if (typeof t === 'string') {\n return L.Util.template(t, {distance, unit});\n } else if (typeof t === 'function') {\n return t({distance, unit});\n } else {\n return t;\n }\n }\n if (this.options.showPopup && t && this._marker) {\n this._marker\n .bindPopup(getPopupText())\n ._popup.setLatLng(latlng);\n }\n if (this.options.showPopup && t && this._compass) {\n this._compass\n .bindPopup(getPopupText())\n ._popup.setLatLng(latlng);\n }\n },\n\n /**\n * Remove the marker from map.\n */\n _removeMarker() {\n this._layer.clearLayers();\n this._marker = undefined;\n this._circle = undefined;\n },\n\n /**\n * Unload the plugin and all event listeners.\n * Kind of the opposite of onAdd.\n */\n _unload() {\n this.stop();\n this._map.off('unload', this._unload, this);\n },\n\n /**\n * Sets the compass heading\n */\n _setCompassHeading(angle) {\n if (!isNaN(parseFloat(angle)) && isFinite(angle)) {\n angle = Math.round(angle);\n\n this._compassHeading = angle;\n L.Util.requestAnimFrame(this._drawCompass, this);\n } else {\n this._compassHeading = null;\n }\n },\n\n /**\n * If the compass fails calibration just fail safely and remove the compass\n */\n _onCompassNeedsCalibration() {\n this._setCompassHeading();\n },\n\n /**\n * Process and normalise compass events\n */\n _onDeviceOrientation(e) {\n if (!this._active) {\n return;\n }\n\n if (e.webkitCompassHeading) {\n // iOS\n this._setCompassHeading(e.webkitCompassHeading);\n } else if (e.absolute && e.alpha) {\n // Android\n this._setCompassHeading(360 - e.alpha)\n }\n },\n\n /**\n * Calls deactivate and dispatches an error.\n */\n _onLocationError(err) {\n // ignore time out error if the location is watched\n if (err.code == 3 && this.options.locateOptions.watch) {\n return;\n }\n\n this.stop();\n this.options.onLocationError(err, this);\n },\n\n /**\n * Stores the received event and updates the marker.\n */\n _onLocationFound(e) {\n // no need to do anything if the location has not changed\n if (this._event &&\n (this._event.latlng.lat === e.latlng.lat &&\n this._event.latlng.lng === e.latlng.lng &&\n this._event.accuracy === e.accuracy)) {\n return;\n }\n\n if (!this._active) {\n // we may have a stray event\n return;\n }\n\n this._event = e;\n\n this._drawMarker();\n this._updateContainerStyle();\n\n switch (this.options.setView) {\n case 'once':\n if (this._justClicked) {\n this.setView();\n }\n break;\n case 'untilPan':\n if (!this._userPanned) {\n this.setView();\n }\n break;\n case 'untilPanOrZoom':\n if (!this._userPanned && !this._userZoomed) {\n this.setView();\n }\n break;\n case 'always':\n this.setView();\n break;\n case false:\n // don't set the view\n break;\n }\n\n this._justClicked = false;\n },\n\n /**\n * When the user drags. Need a separate event so we can bind and unbind event listeners.\n */\n _onDrag() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * When the user zooms. Need a separate event so we can bind and unbind event listeners.\n */\n _onZoom() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userZoomed = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * After a zoom ends update the compass and handle sideways zooms\n */\n _onZoomEnd() {\n if (this._event) {\n this._drawCompass();\n }\n\n if (this._event && !this._ignoreEvent) {\n // If we have zoomed in and out and ended up sideways treat it as a pan\n if (this._marker && !this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n }\n },\n\n /**\n * Compute whether the map is following the user location with pan and zoom.\n */\n _isFollowing() {\n if (!this._active) {\n return false;\n }\n\n if (this.options.setView === 'always') {\n return true;\n } else if (this.options.setView === 'untilPan') {\n return !this._userPanned;\n } else if (this.options.setView === 'untilPanOrZoom') {\n return !this._userPanned && !this._userZoomed;\n }\n },\n\n /**\n * Check if location is in map bounds\n */\n _isOutsideMapBounds() {\n if (this._event === undefined) {\n return false;\n }\n return this._map.options.maxBounds &&\n !this._map.options.maxBounds.contains(this._event.latlng);\n },\n\n /**\n * Toggles button class between following and active.\n */\n _updateContainerStyle() {\n if (!this._container) {\n return;\n }\n\n if (this._active && !this._event) {\n // active but don't have a location yet\n this._setClasses('requesting');\n } else if (this._isFollowing()) {\n this._setClasses('following');\n } else if (this._active) {\n this._setClasses('active');\n } else {\n this._cleanClasses();\n }\n },\n\n /**\n * Sets the CSS classes for the state.\n */\n _setClasses(state) {\n if (state == 'requesting') {\n removeClasses(this._container, \"active following\");\n addClasses(this._container, \"requesting\");\n\n removeClasses(this._icon, this.options.icon);\n addClasses(this._icon, this.options.iconLoading);\n } else if (state == 'active') {\n removeClasses(this._container, \"requesting following\");\n addClasses(this._container, \"active\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n } else if (state == 'following') {\n removeClasses(this._container, \"requesting\");\n addClasses(this._container, \"active following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n }\n },\n\n /**\n * Removes all classes from button.\n */\n _cleanClasses() {\n L.DomUtil.removeClass(this._container, \"requesting\");\n L.DomUtil.removeClass(this._container, \"active\");\n L.DomUtil.removeClass(this._container, \"following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n },\n\n /**\n * Reinitializes state variables.\n */\n _resetVariables() {\n // whether locate is active or not\n this._active = false;\n\n // true if the control was clicked for the first time\n // we need this so we can pan and zoom once we have the location\n this._justClicked = false;\n\n // true if the user has panned the map after clicking the control\n this._userPanned = false;\n\n // true if the user has zoomed the map after clicking the control\n this._userZoomed = false;\n }\n });\n\n L.control.locate = (options) => new L.Control.Locate(options);\n\n return LocateControl;\n}, window));\n","/**\r\n * leaflet-pegman\r\n *\r\n * @author Raruto\r\n * @license GPL-3.0+\r\n * @link https://github.com/Raruto/leaflet-pegman\r\n * @desc Leaflet plugin that allows an easy integration with the Google StreetView Service API\r\n */\r\nL.Control.Pegman = L.Control.extend({\r\n\tincludes: L.Evented ? L.Evented.prototype : L.Mixin.Events,\r\n\toptions: {\r\n\t\tposition: 'bottomright',\r\n\t\ttheme: \"leaflet-pegman-v3-default\", // or \"leaflet-pegman-v3-small\"\r\n\t\tdebug: false,\r\n\t\tapiKey: '',\r\n\t\tlibraries: '',\r\n\t\tmutant: {\r\n\t\t\tattribution: 'Map data: &copy; <a href=\"https://www.google.com/intl/en/help/terms_maps.html\">Google</a>',\r\n\t\t\tpane: \"overlayPane\",\r\n\t\t\ttype: null, // Non-image map type (used to force a transparent background)\r\n\t\t},\r\n\t\tpano: {\r\n\t\t\tenableCloseButton: true,\r\n\t\t\tfullscreenControl: false,\r\n\t\t\timageDateControl: true\r\n\t\t},\r\n\t\tmarker: {\r\n\t\t\tdraggable: true,\r\n\t\t\ticon: L.icon({\r\n\t\t\t\tclassName: \"pegman-marker\",\r\n\t\t\t\ticonSize: [52, 52],\r\n\t\t\t\ticonAnchor: [24, 33],\r\n\t\t\t\ticonUrl: 'data:image/png;base64,' + \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAFElEQVR4XgXAAQ0AAABAMP1L30IDCPwC/o5WcS4AAAAASUVORK5CYII=\",\r\n\t\t\t}),\r\n\t\t}\r\n\t},\r\n\r\n\t__interactURL: 'https://unpkg.com/interactjs@1.2.9/dist/interact.min.js',\r\n\t__gmapsURL: 'https://maps.googleapis.com/maps/api/js?v=3',\r\n\t__mutantURL: 'https://unpkg.com/leaflet.gridlayer.googlemutant@0.10.0/Leaflet.GoogleMutant.js',\r\n\r\n\tinitialize: function(options) {\r\n\r\n\t\tif (typeof options.logging !== \"undefined\") options.debug = options.logging;\r\n\r\n\t\tL.Util.setOptions(this, options);\r\n\r\n\t\t// Grab Left/Right/Up/Down Direction of Mouse for Pegman Image\r\n\t\tthis._mousePos = {\r\n\t\t\tdirection: {},\r\n\t\t\told: {},\r\n\t\t};\r\n\r\n\t\tthis._pegmanMarkerCoords = null;\r\n\t\tthis._streetViewCoords = null;\r\n\t\tthis._streetViewLayerEnabled = false;\r\n\r\n\t\tthis._dropzoneMapOpts = {\r\n\t\t\taccept: '.draggable', // Only Accept Elements Matching this CSS Selector\r\n\t\t\toverlap: 0.75, // Require a 75% Element Overlap for a Drop to be Possible\r\n\t\t\tondropactivate: L.bind(this.onDropZoneActivated, this),\r\n\t\t\tondragenter: L.bind(this.onDropZoneDragEntered, this),\r\n\t\t\tondragleave: L.bind(this.onDropZoneDragLeaved, this),\r\n\t\t\tondrop: L.bind(this.onDropZoneDropped, this),\r\n\t\t\tondropdeactivate: L.bind(this.onDropZoneDeactivated, this),\r\n\t\t};\r\n\t\tthis._draggableMarkerOpts = {\r\n\t\t\tinertia: false,\r\n\t\t\tonmove: L.bind(this.onDraggableMove, this),\r\n\t\t\tonend: L.bind(this.onDraggableEnd, this),\r\n\t\t};\r\n\r\n\t\tthis._lazyLoaderAdded = false;\r\n\t},\r\n\r\n\tonAdd: function(map) {\r\n\t\tthis._map = map;\r\n\r\n\t\tthis._container = L.DomUtil.create('div', 'leaflet-pegman pegman-control leaflet-bar');\r\n\t\tthis._pegman = L.DomUtil.create('div', 'pegman draggable drag-drop', this._container);\r\n\t\tthis._pegmanButton = L.DomUtil.create('div', 'pegman-button', this._container);\r\n\t\tthis._pegmanMarker = L.marker([0, 0], this.options.marker);\r\n\t\tthis._panoDiv = this.options.panoDiv ? document.querySelector(this.options.panoDiv) : L.DomUtil.create('div', '', this._map._container);\r\n\r\n\t\tL.DomUtil.addClass(this._panoDiv, 'pano-canvas');\r\n\t\tL.DomUtil.addClass(this._map._container, this.options.theme);\r\n\r\n\t\tL.DomEvent.disableClickPropagation(this._panoDiv);\r\n\t\t// L.DomEvent.on(this._container, 'click mousedown touchstart dblclick', this._disableClickPropagation, this);\r\n\t\tL.DomEvent.on(this._container, 'click mousedown dblclick', this._disableClickPropagation, this);\r\n\r\n\t\tthis._container.addEventListener('touchstart', this._loadScripts.bind(this, !L.Browser.touch), { once: true });\r\n\t\tthis._container.addEventListener('mousedown', this._loadScripts.bind(this, true), { once: true });\r\n\t\tthis._container.addEventListener('mouseover', this._loadScripts.bind(this, false), { once: true });\r\n\r\n\t\tthis._loadInteractHandlers();\r\n\t\tthis._loadGoogleHandlers();\r\n\r\n\t\tL.DomEvent.on(document, 'mousemove', this.mouseMoveTracking, this);\r\n\t\tL.DomEvent.on(document, 'keyup', this.keyUpTracking, this);\r\n\r\n\t\tthis._pegmanMarker.on(\"dragend\", this.onPegmanMarkerDragged, this);\r\n\t\tthis._map.on(\"click\", this.onMapClick, this);\r\n\t\tthis._map.on(\"layeradd\", this.onMapLayerAdd, this);\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\tonRemove: function(map) {\r\n\t\tif (this._googleStreetViewLayer) this._googleStreetViewLayer.remove();\r\n\t\tif (this._pegmanMarker) this._pegmanMarker.remove();\r\n\r\n\t\tL.DomUtil.remove(this._panoDiv);\r\n\r\n\t\tL.DomEvent.off(document, 'mousemove', this.mouseMoveTracking, this);\r\n\t\tL.DomEvent.off(document, 'keyup', this.keyUpTracking, this);\r\n\r\n\t\tmap.off(\"mousemove\", this._setMouseCursor, this);\r\n\t},\r\n\r\n\t_log: function(args) {\r\n\t\tif (this.options.debug) {\r\n\t\t\tconsole.log(args);\r\n\t\t}\r\n\t},\r\n\r\n\t_addClasses: function(el, classNames) {\r\n\t\tclassNames = classNames.split(\" \");\r\n\t\tfor (var s in classNames) {\r\n\t\t\tL.DomUtil.addClass(el, classNames[s]);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeClasses: function(el, classNames) {\r\n\t\tclassNames = classNames.split(\" \");\r\n\t\tfor (var s in classNames) {\r\n\t\t\tL.DomUtil.removeClass(el, classNames[s]);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeAttributes: function(el, attrNames) {\r\n\t\tfor (var a in attrNames) {\r\n\t\t\tel.removeAttribute(attrNames[a]);\r\n\t\t}\r\n\t},\r\n\r\n\t_insertAfter: function(targetNode, newNode) {\r\n\t\ttargetNode.parentNode.insertBefore(newNode, targetNode.nextSibling);\r\n\t},\r\n\r\n\t_translateElement: function(el, dx, dy) {\r\n\t\tif (dx === false && dy === false) {\r\n\t\t\tthis._removeAttributes(this._pegman, [\"style\", \"data-x\", \"data-y\"]);\r\n\t\t}\r\n\t\t// Element's position is preserved within the data-x/data-y attributes\r\n\t\tvar x = (parseFloat(el.getAttribute('data-x')) || 0) + dx;\r\n\t\tvar y = (parseFloat(el.getAttribute('data-y')) || 0) + dy;\r\n\r\n\t\t// Translate element\r\n\t\tel.style.webkitTransform = el.style.transform = 'translate(' + x + 'px, ' + y + 'px)';\r\n\r\n\t\t// Update position attributes\r\n\t\tel.setAttribute('data-x', x);\r\n\t\tel.setAttribute('data-y', y);\r\n\t},\r\n\r\n\t_updateClasses: function(action) {\r\n\t\tswitch (action) {\r\n\t\t\tcase \"pegman-dragging\":\r\n\t\t\t\tthis._removeClasses(this._pegman, \"dropped\");\r\n\t\t\t\tthis._addClasses(this._container, \"dragging\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pegman-dragged\":\r\n\t\t\t\tthis._removeClasses(this._pegman, \"can-drop dragged left right active dropped\");\r\n\t\t\t\tthis._removeAttributes(this._pegman, [\"style\", \"data-x\", \"data-y\"]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dropzone-actived\":\r\n\t\t\t\tthis._addClasses(this._map._container, \"drop-active\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dropzone-drag-entered\":\r\n\t\t\t\tthis._addClasses(this._pegman, \"active can-drop\");\r\n\t\t\t\tthis._addClasses(this._map._container, \"drop-target\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dropzone-drag-leaved\":\r\n\t\t\t\tthis._removeClasses(this._map._container, \"drop-target\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"can-drop\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dropzone-drop\":\r\n\t\t\t\tthis._removeClasses(this._container, \"dragging\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"active left right\");\r\n\t\t\t\tthis._addClasses(this._pegman, \"dropped\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"can-drop dragged left right active dropped\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dropzone-deactivated\":\r\n\t\t\t\tthis._removeClasses(this._pegman, \"active left right\");\r\n\t\t\t\tthis._removeClasses(this._map._container, \"drop-active drop-target\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"mousemove-top\":\r\n\t\t\t\tthis._addClasses(this._pegman, \"top\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"bottom right left\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"mousemove-bottom\":\r\n\t\t\t\tthis._addClasses(this._pegman, \"bottom\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"top right left\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"mousemove-left\":\r\n\t\t\t\tthis._addClasses(this._pegman, \"left\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"right top bottom\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"mousemove-right\":\r\n\t\t\t\tthis._addClasses(this._pegman, \"right\");\r\n\t\t\t\tthis._removeClasses(this._pegman, \"left top bottom\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pegman-added\":\r\n\t\t\t\tthis._addClasses(this._container, \"active\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pegman-removed\":\r\n\t\t\t\tthis._removeClasses(this._container, \"active\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"streetview-shown\":\r\n\t\t\t\tthis._addClasses(this._container, \"streetview-layer-active\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"streetview-hidden\":\r\n\t\t\t\tthis._removeClasses(this._container, \"streetview-layer-active\");\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow \"Unhandled event:\" + action;\r\n\t\t}\r\n\t\tthis.fire(\"svpc_\" + action);\r\n\t},\r\n\r\n\tonDraggableMove: function(e) {\r\n\t\tthis.mouseMoveTracking(e);\r\n\t\tthis.pegmanRemove();\r\n\t\tthis._updateClasses(\"pegman-dragging\");\r\n\t\tthis._translateElement(this._pegman, e.dx, e.dy);\r\n\t},\r\n\r\n\tonDraggableEnd: function(e) {\r\n\t\tthis._pegmanMarkerCoords = this._map.mouseEventToLatLng(e);\r\n\t\tthis.pegmanAdd();\r\n\t\tthis.findStreetViewData(this._pegmanMarkerCoords.lat, this._pegmanMarkerCoords.lng);\r\n\t\tthis._updateClasses(\"pegman-dragged\");\r\n\t},\r\n\r\n\tonDropZoneActivated: function(e) {\r\n\t\tthis._updateClasses(\"dropzone-actived\");\r\n\t},\r\n\r\n\tonDropZoneDragEntered: function(e) {\r\n\t\tthis.showStreetViewLayer();\r\n\t\tthis._updateClasses(\"dropzone-drag-entered\");\r\n\t},\r\n\r\n\tonDropZoneDragLeaved: function(e) {\r\n\t\tthis._updateClasses(\"dropzone-drag-leaved\");\r\n\t},\r\n\r\n\tonDropZoneDropped: function(e) {\r\n\t\tthis._updateClasses(\"dropzone-drop\");\r\n\t\tthis._translateElement(this._pegman, false, false);\r\n\t},\r\n\r\n\tonDropZoneDeactivated: function(e) {\r\n\t\tthis._updateClasses(\"dropzone-deactivated\");\r\n\t},\r\n\r\n\tonPegmanMarkerDragged: function(e) {\r\n\t\tthis._pegmanMarkerCoords = this._pegmanMarker.getLatLng();\r\n\t\tthis.findStreetViewData(this._pegmanMarkerCoords.lat, this._pegmanMarkerCoords.lng);\r\n\t},\r\n\r\n\tonMapClick: function(e) {\r\n\t\tif (this._streetViewLayerEnabled) {\r\n\t\t\tthis.findStreetViewData(e.latlng.lat, e.latlng.lng);\r\n\t\t}\r\n\t},\r\n\r\n\tonMapLayerAdd: function(e) {\r\n\t\tif (this._googleStreetViewLayer)\r\n\t\t\tthis._googleStreetViewLayer.bringToFront();\r\n\t},\r\n\r\n\tonStreetViewPanoramaClose: function() {\r\n\t\tthis.clear();\r\n\t},\r\n\r\n\tonPanoramaPositionChanged: function() {\r\n\t\tvar pos = this._panorama.getPosition();\r\n\t\tpos = L.latLng(pos.lat(), pos.lng());\r\n\t\tif (this._map && !this._map.getBounds().pad(-0.05).contains(pos)) {\r\n\t\t\tthis._map.panTo(pos);\r\n\t\t}\r\n\t\tthis._pegmanMarker.setLatLng(pos);\r\n\t},\r\n\r\n\tonPanoramaPovChanged: function() {\r\n\t\tvar pov = this._panorama.getPov();\r\n\t\tthis._pegmanMarker.getElement().style.backgroundPosition = \"0 \" + -Math.abs((Math.round(pov.heading / (360 / 16)) % 16) * Math.round(835 / 16)) + 'px'; // sprite_height = 835px; num_rows = 16; pegman_angle = [0, 360] deg\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\tthis.pegmanRemove();\r\n\t\tthis.hideStreetViewLayer();\r\n\t\tthis.closeStreetViewPanorama();\r\n\t},\r\n\r\n\ttoggleStreetViewLayer: function(e) {\r\n\t\tif (this._streetViewLayerEnabled) this.clear();\r\n\t\telse this.showStreetViewLayer();\r\n\t\tthis._log(\"streetview-layer-toggled\");\r\n\t},\r\n\r\n\tpegmanAdd: function() {\r\n\t\tthis._pegmanMarker.addTo(this._map);\r\n\t\tthis._pegmanMarker.setLatLng(this._pegmanMarkerCoords);\r\n\t\tthis.findStreetViewData(this._pegmanMarkerCoords.lat, this._pegmanMarkerCoords.lng);\r\n\t\tthis._updateClasses(\"pegman-added\");\r\n\t},\r\n\r\n\tpegmanRemove: function() {\r\n\t\tthis._pegmanMarker.removeFrom(this._map);\r\n\t\tthis._updateClasses(\"pegman-removed\");\r\n\t},\r\n\r\n\tcloseStreetViewPanorama: function() {\r\n\t\tthis._panoDiv.style.display = \"none\";\r\n\t},\r\n\r\n\topenStreetViewPanorama: function() {\r\n\t\tthis._panoDiv.style.display = \"block\";\r\n\t},\r\n\r\n\thideStreetViewLayer: function() {\r\n\t\tif (this._googleStreetViewLayer) {\r\n\t\t\tthis._googleStreetViewLayer.removeFrom(this._map);\r\n\t\t\tthis._streetViewLayerEnabled = false;\r\n\t\t\tthis._updateClasses(\"streetview-hidden\");\r\n\t\t}\r\n\t},\r\n\r\n\tshowStreetViewLayer: function() {\r\n\t\tif (this._googleStreetViewLayer) {\r\n\t\t\tthis._googleStreetViewLayer.addTo(this._map);\r\n\t\t\tthis._streetViewLayerEnabled = true;\r\n\t\t\tthis._updateClasses(\"streetview-shown\");\r\n\t\t}\r\n\t},\r\n\r\n\tfindStreetViewData: function(lat, lng) {\r\n\t\tif (typeof google === 'undefined') {\r\n\t\t\tthis._loadScripts(true)\r\n\t\t\treturn this.once('svpc_streetview-shown', L.bind(this.findStreetViewData, this, lat, lng));\r\n\t\t}\r\n\r\n\t\tif (!this._pegmanMarker._map && this._map) {\r\n\t\t\tthis._pegmanMarkerCoords = L.latLng(lat, lng);\r\n\t\t\treturn this.pegmanAdd();\r\n\t\t}\r\n\r\n\t\t// var searchRadiusPx = 24,\r\n\t\t// \tlatlng = L.latLng(lat, lng),\r\n\t\t// \tp = this._map.project(latlng).add([searchRadiusPx, 0]),\r\n\t\t// \tsearchRadius = latlng.distanceTo(this._map.unproject(p));\r\n\r\n\t\tthis._streetViewCoords = new google.maps.LatLng(lat, lng);\r\n\r\n\t\tvar zoom = this._map.getZoom();\r\n\t\tvar searchRadius = 100;\r\n\r\n\t\tif (zoom < 6) searchRadius = 5000;\r\n\t\telse if (zoom < 10) searchRadius = 500;\r\n\t\telse if (zoom < 15) searchRadius = 250;\r\n\t\telse if (zoom >= 17) searchRadius = 50;\r\n\t\telse searchRadius = 100;\r\n\r\n\t\tthis._streetViewService.getPanoramaByLocation(this._streetViewCoords, searchRadius, L.bind(this.processStreetViewServiceData, this));\r\n\t},\r\n\r\n\tprocessStreetViewServiceData: function(data, status) {\r\n\t\tif (status == google.maps.StreetViewStatus.OK) {\r\n\t\t\tthis.openStreetViewPanorama();\r\n\t\t\tthis._panorama.setPano(data.location.pano);\r\n\t\t\tthis._panorama.setPov({\r\n\t\t\t\theading: google.maps.geometry.spherical.computeHeading(data.location.latLng, this._streetViewCoords),\r\n\t\t\t\tpitch: 0,\r\n\t\t\t\tzoom: 0\r\n\t\t\t});\r\n\t\t\tthis._panorama.setVisible(true);\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Street View data not found for this location.\");\r\n\t\t\t// this.clear(); // TODO: add a visual feedback when no SV data available\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * mouseMoveTracking\r\n\t * @desc internal function used to style pegman while dragging\r\n\t */\r\n\tmouseMoveTracking: function(e) {\r\n\t\tvar mousePos = this._mousePos;\r\n\r\n\t\t// Top <--> Bottom\r\n\t\tif (e.pageY < mousePos.old.y) {\r\n\t\t\tmousePos.direction.y = 'top';\r\n\t\t\tthis._updateClasses(\"mousemove-top\");\r\n\t\t} else if (e.pageY > mousePos.old.y) {\r\n\t\t\tmousePos.direction.y = 'bottom';\r\n\t\t\tthis._updateClasses(\"mousemove-bottom\");\r\n\t\t}\r\n\t\t// Left <--> Right\r\n\t\tif (e.pageX < mousePos.old.x) {\r\n\t\t\tmousePos.direction.x = 'left';\r\n\t\t\tthis._updateClasses(\"mousemove-left\");\r\n\t\t} else if (e.pageX > mousePos.old.x) {\r\n\t\t\tmousePos.direction.x = 'right';\r\n\t\t\tthis._updateClasses(\"mousemove-right\");\r\n\t\t}\r\n\r\n\t\tmousePos.old.x = e.pageX;\r\n\t\tmousePos.old.y = e.pageY;\r\n\t},\r\n\r\n\t/**\r\n\t * keyUpTracking\r\n\t * @desc internal function used to track keyup events\r\n\t */\r\n\tkeyUpTracking: function(e) {\r\n\t\tif (e.keyCode == 27) {\r\n\t\t\tthis._log('escape pressed');\r\n\t\t\tthis.clear();\r\n\t\t}\r\n\t},\r\n\r\n\t_disableClickPropagation: function(e) {\r\n\t\tL.DomEvent.stopPropagation(e);\r\n\t\tL.DomEvent.preventDefault(e);\r\n\t},\r\n\r\n\t_loadGoogleHandlers: function(toggleStreetView) {\r\n\t\tif (typeof google !== 'object' || typeof google.maps !== 'object' || typeof L.GridLayer.GoogleMutant !== 'function') return;\r\n\t\tthis._initGoogleMaps(toggleStreetView);\r\n\t\tthis._initMouseTracker();\r\n\t},\r\n\r\n\t_initGoogleMaps: function(toggleStreetView) {\r\n\t\tthis._googleStreetViewLayer = L.gridLayer.googleMutant(this.options.mutant);\r\n\t\tthis._googleStreetViewLayer.addGoogleLayer('StreetViewCoverageLayer');\r\n\r\n\t\tthis._panorama = new google.maps.StreetViewPanorama(this._panoDiv, this.options.pano);\r\n\t\tthis._streetViewService = new google.maps.StreetViewService();\r\n\r\n\t\tthis._panorama.addListener('closeclick', L.bind(this.onStreetViewPanoramaClose, this));\r\n\t\tthis._panorama.addListener('position_changed', L.bind(this.onPanoramaPositionChanged, this));\r\n\t\tthis._panorama.addListener('pov_changed', L.bind(this.onPanoramaPovChanged, this));\r\n\r\n\t\tif (toggleStreetView) {\r\n\t\t\tthis.showStreetViewLayer();\r\n\t\t}\r\n\t},\r\n\r\n\t_initMouseTracker: function() {\r\n\t\tif (!this._googleStreetViewLayer) return;\r\n\r\n\t\tvar tileSize = this._googleStreetViewLayer.getTileSize();\r\n\r\n\t\tthis.tileWidth = tileSize.x;\r\n\t\tthis.tileHeight = tileSize.y;\r\n\r\n\t\tthis.defaultDraggableCursor = this._map._container.style.cursor;\r\n\r\n\t\tthis._map.on(\"mousemove\", this._setMouseCursor, this);\r\n\t},\r\n\r\n\t_setMouseCursor: function(e) {\r\n\t\tvar coords = this._getTileCoords(e.latlng.lat, e.latlng.lng, this._map.getZoom());\r\n\t\tvar img = this._getTileImage(coords);\r\n\t\tvar pixel = this._getTilePixelPoint(img, e.originalEvent);\r\n\t\tvar hasTileData = this._hasTileData(img, pixel);\r\n\t\tthis._map._container.style.cursor = hasTileData ? 'pointer' : this.defaultDraggableCursor;\r\n\t},\r\n\r\n\t_getTileCoords: function(lat, lon, zoom) {\r\n\t\tvar xtile = parseInt(Math.floor((lon + 180) / 360 * (1 << zoom)));\r\n\t\tvar ytile = parseInt(Math.floor((1 - Math.log(Math.tan(this._toRad(lat)) + 1 / Math.cos(this._toRad(lat))) / Math.PI) / 2 * (1 << zoom)));\r\n\t\treturn {\r\n\t\t\tx: xtile,\r\n\t\t\ty: ytile,\r\n\t\t\tz: zoom,\r\n\t\t};\r\n\t},\r\n\r\n\t_getTileImage: function(coords) {\r\n\t\tif (!this._googleStreetViewLayer || !this._googleStreetViewLayer._tiles) return;\r\n\t\tvar key = this._googleStreetViewLayer._tileCoordsToKey(coords);\r\n\t\tvar tile = this._googleStreetViewLayer._tiles[key];\r\n\t\tif (!tile) return;\r\n\t\tvar img = tile.el.querySelector('img');\r\n\t\tif (!img) return;\r\n\t\tthis._downloadTile(img.src, this._tileLoaded); // crossOrigin = \"Anonymous\"\r\n\t\treturn img;\r\n\t},\r\n\r\n\t_getTilePixelPoint: function(img, e) {\r\n\t\tif (!img) return;\r\n\t\tvar imgRect = img.getBoundingClientRect();\r\n\t\tvar imgPos = {\r\n\t\t\tpageY: (imgRect.top + window.scrollY).toFixed(0),\r\n\t\t\tpageX: (imgRect.left + window.scrollX).toFixed(0)\r\n\t\t};\r\n\t\tvar mousePos = {\r\n\t\t\tx: e.pageX - imgPos.pageX,\r\n\t\t\ty: e.pageY - imgPos.pageY\r\n\t\t};\r\n\t\treturn mousePos;\r\n\t},\r\n\r\n\t_hasTileData: function(img, pixelPoint) {\r\n\t\tif (!this.tileContext || !pixelPoint) return;\r\n\t\tvar pixelData = this.tileContext.getImageData(pixelPoint.x, pixelPoint.y, 1, 1).data;\r\n\t\tvar alpha = pixelData[3];\r\n\t\tvar hasTileData = (alpha != 0);\r\n\t\treturn hasTileData;\r\n\t},\r\n\r\n\t_toRad: function(number) {\r\n\t\treturn number * Math.PI / 180;\r\n\t},\r\n\r\n\t_downloadTile: function(imageSrc, callback) {\r\n\t\tif (!imageSrc) return;\r\n\t\tvar img = new Image();\r\n\t\timg.crossOrigin = \"Anonymous\";\r\n\t\timg.addEventListener(\"load\", callback.bind(this, img), false);\r\n\t\timg.src = imageSrc;\r\n\t},\r\n\r\n\t_tileLoaded: function(img) {\r\n\t\tthis.tileCanvas = document.createElement(\"canvas\");\r\n\t\tthis.tileContext = this.tileCanvas.getContext(\"2d\");\r\n\r\n\t\tthis.tileCanvas.width = this.tileWidth;\r\n\t\tthis.tileCanvas.height = this.tileHeight;\r\n\r\n\t\tthis.tileContext.drawImage(img, 0, 0);\r\n\t},\r\n\r\n\t_loadInteractHandlers: function() {\r\n\t\t// TODO: trying to replace \"interact.js\" with default \"L.Draggable\" object\r\n\t\t// var draggable = new L.Draggable(this._container);\r\n\t\t// draggable.enable();\r\n\t\t// draggable.on('drag', function(e) { console.log(e); });\r\n\t\tif (typeof interact !== 'function') return;\r\n\r\n\t\t// Enable Draggable Element to be Dropped into Map Container\r\n\t\tthis._draggable = interact(this._pegman).draggable(this._draggableMarkerOpts);\r\n\t\tthis._dropzone = interact(this._map._container).dropzone(this._dropzoneMapOpts);\r\n\r\n\t\tthis._draggable.styleCursor(false);\r\n\r\n\t\t// Toggle on/off SV Layer on Pegman's Container single clicks\r\n\t\tinteract(this._container).on(\"tap\", L.bind(this.toggleStreetViewLayer, this));\r\n\r\n\t\t// Prevent map drags (Desktop / Mobile) while dragging pegman control\r\n\t\tL.DomEvent.on(this._container, \"touchstart\", function(e) { this._map.dragging.disable(); }, this);\r\n\t\tL.DomEvent.on(this._container, \"touchend\", function(e) { this._map.dragging.enable(); }, this);\r\n\t},\r\n\r\n\t_loadScripts: function(toggleStreetView) {\r\n\t\tif (this._lazyLoaderAdded) return;\r\n\t\tthis._lazyLoaderAdded = true;\r\n\r\n\t\tthis._loadJS(this.__interactURL, this._loadInteractHandlers.bind(this), typeof interact !== 'function');\r\n\t\tthis._loadJS(this.__gmapsURL + '&key=' + this.options.apiKey + '&libraries=' + this.options.libraries + '&callback=?', this._loadGoogleHandlers.bind(this, toggleStreetView), typeof google !== 'object' || typeof google.maps !== 'object');\r\n\t\tthis._loadJS(this.__mutantURL, this._loadGoogleHandlers.bind(this, toggleStreetView), typeof L.GridLayer.GoogleMutant !== 'function');\r\n\r\n\t},\r\n\r\n\t_loadJS: function(url, callback, condition) {\r\n\t\tif (!condition) {\r\n\t\t\tcallback();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (url.indexOf('callback=?') !== -1) {\r\n\t\t\tthis._jsonp(url, callback);\r\n\t\t} else {\r\n\t\t\tvar script = document.createElement('script');\r\n\t\t\tscript.src = url;\r\n\t\t\tvar loaded = function() {\r\n\t\t\t\tscript.onload = script.onreadystatechange = null;\r\n\t\t\t\tthis._log(url + \" loaded\");\r\n\t\t\t\tcallback();\r\n\t\t\t}.bind(this);\r\n\t\t\tscript.onload = script.onreadystatechange = loaded;\r\n\r\n\t\t\tvar head = document.head || document.getElementsByTagName('head')[0] || document.documentElement;\r\n\t\t\thead.insertBefore(script, head.firstChild);\r\n\t\t}\r\n\t},\r\n\r\n\t_jsonp: function(url, callback, params) {\r\n\t\tvar query = url.indexOf('?') === -1 ? '?' : '&';\r\n\t\tparams = params || {};\r\n\t\tfor (var key in params) {\r\n\t\t\tif (params.hasOwnProperty(key)) {\r\n\t\t\t\tquery += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar timestamp = new Date().getUTCMilliseconds();\r\n\t\tvar jsonp = \"json_call_\" + timestamp; // uniqueId('json_call');\r\n\t\twindow[jsonp] = function(data) {\r\n\t\t\tcallback(data);\r\n\t\t\twindow[jsonp] = undefined;\r\n\t\t};\r\n\r\n\t\tvar script = document.createElement('script');\r\n\t\tif (url.indexOf('callback=?') !== -1) {\r\n\t\t\tscript.src = url.replace('callback=?', 'callback=' + jsonp) + query.slice(0, -1);\r\n\t\t} else {\r\n\t\t\tscript.src = url + query + 'callback=' + jsonp;\r\n\t\t}\r\n\t\tvar loaded = function() {\r\n\t\t\tif (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {\r\n\t\t\t\tscript.onload = script.onreadystatechange = null;\r\n\t\t\t\tif (script && script.parentNode) {\r\n\t\t\t\t\tscript.parentNode.removeChild(script);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tscript.async = true;\r\n\t\tscript.onload = script.onreadystatechange = loaded;\r\n\t\tvar head = document.head || document.getElementsByTagName('head')[0] || document.documentElement;\r\n\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\r\n\t\t// This arises when a base node is used.\r\n\t\thead.insertBefore(script, head.firstChild);\r\n\t},\r\n\r\n});\r\n\r\nL.control.pegman = function(options) {\r\n\treturn new L.Control.Pegman(options);\r\n};\r\n","//English\nexport default {\n\ttouch: \"Use two fingers to move the map\",\n\tscroll: \"Use ctrl + scroll to zoom the map\",\n\tscrollMac: \"Use \\u2318 + scroll to zoom the map\"\n};\n","import defaultLocale from \"./locales/en.js\";\n\n// Prevent CORS issues for relative locations (dynamic import)\nconst baseURL = ((document.currentScript && document.currentScript.src) || (import.meta && import.meta.url)).split(\"/\").slice(0,-1).join(\"/\") + '/';\n\nvar draggingMap = false;\nvar gestureHandlingOptions = {\n\ttext: {},\n\tduration: 1700\n};\n\nexport var GestureHandling = L.Handler.extend({\n\n\t_isScrolling: false,\n\t_isTouching: false,\n\t_isFading: false,\n\n\taddHooks: function() {\n\t\tthis._handleTouch = L.bind(this._handleTouch, this);\n\n\t\tthis._setGestureHandlingOptions();\n\t\tthis._disableInteractions();\n\n\t\t//Uses native event listeners instead of L.DomEvent due to issues with Android touch events turning into pointer events\n\t\tthis._map._container.addEventListener(\"touchstart\", this._handleTouch);\n\t\tthis._map._container.addEventListener(\"touchmove\", this._handleTouch);\n\t\tthis._map._container.addEventListener(\"touchend\", this._handleTouch);\n\t\tthis._map._container.addEventListener(\"touchcancel\", this._handleTouch);\n\t\tthis._map._container.addEventListener(\"click\", this._handleTouch);\n\n\t\tL.DomEvent.on(this._map._container, \"wheel\", this._handleScroll, this);\n\t\tL.DomEvent.on(this._map._container, \"mouseenter\", this._handleMouseOver, this);\n\t\tL.DomEvent.on(this._map._container, \"mouseleave\", this._handleMouseOut, this);\n\n\t\t// Listen to these events so will not disable dragging if the user moves the mouse out the boundary of the map container whilst actively dragging the map.\n\t\tL.DomEvent.on(this._map, \"movestart\", this._handleDragging, this);\n\t\tL.DomEvent.on(this._map, \"move\", this._handleDragging, this);\n\t\tL.DomEvent.on(this._map, \"moveend\", this._handleDragging, this);\n\n\t\t// Prevent page scroll on \"leaflet-popup-content\"\n\t\tthis._map.on(\"popupopen\", this._handleScrollOnPopup, this);\n\t\tthis._map.on(\"popupclose\", this._handleScrollOnPopup, this);\n\n\t\t// Reset any previously added fullscreen events\n\t\tL.DomEvent.off(this._map, \"enterFullscreen\", this._onEnterFullscreen, this);\n\t\tL.DomEvent.off(this._map, \"exitFullscreen\", this._onExitFullscreen, this);\n\t\tL.DomEvent.on(this._map, \"enterFullscreen\", this._onEnterFullscreen, this);\n\t\tL.DomEvent.on(this._map, \"exitFullscreen\", this._onExitFullscreen, this);\n\n\t\tL.DomUtil.addClass(this._map._container, \"leaflet-gesture-handling\");\n\t},\n\n\tremoveHooks: function() {\n\t\tthis._enableInteractions();\n\n\t\tthis._map._container.removeEventListener(\"touchstart\", this._handleTouch);\n\t\tthis._map._container.removeEventListener(\"touchmove\", this._handleTouch);\n\t\tthis._map._container.removeEventListener(\"touchend\", this._handleTouch);\n\t\tthis._map._container.removeEventListener(\"touchcancel\", this._handleTouch);\n\t\tthis._map._container.removeEventListener(\"click\", this._handleTouch);\n\n\t\tL.DomEvent.off(this._map._container, \"wheel\", this._handleScroll, this);\n\t\tL.DomEvent.off(this._map._container, \"mouseenter\", this._handleMouseOver, this);\n\t\tL.DomEvent.off(this._map._container, \"mouseleave\", this._handleMouseOut, this);\n\n\t\tL.DomEvent.off(this._map, \"movestart\", this._handleDragging, this);\n\t\tL.DomEvent.off(this._map, \"move\", this._handleDragging, this);\n\t\tL.DomEvent.off(this._map, \"moveend\", this._handleDragging, this);\n\n\t\tthis._map.off(\"popupopen\", this._handleScrollOnPopup, this);\n\t\tthis._map.off(\"popupclose\", this._handleScrollOnPopup, this);\n\n\t\tL.DomUtil.removeClass(this._map._container, \"leaflet-gesture-handling\");\n\t},\n\n\t_handleDragging: function(e) {\n\t\tif (e.type == \"movestart\" || e.type == \"move\") {\n\t\t\tdraggingMap = true;\n\t\t} else if (e.type == \"moveend\") {\n\t\t\tdraggingMap = false;\n\t\t}\n\t},\n\n\t_disableInteraction: function(name) {\n\t\t// disable the handler only if related option is true\n\t\tif (this._map.options[name] && this._map[name]) {\n\t\t\tthis._map[name].disable();\n\t\t}\n\t},\n\n\t_enableInteraction: function(name) {\n\t\t// enable the handler only if related option is true\n\t\tif (this._map.options[name] && this._map[name]) {\n\t\t\tthis._map[name].enable();\n\t\t}\n\t},\n\n\t_disableInteractions: function() {\n\t\tthis._disableInteraction('dragging');\n\t\tthis._disableInteraction('scrollWheelZoom');\n\t\tthis._disableInteraction('tap');\n\t},\n\n\t_enableInteractions: function() {\n\t\tthis._enableInteraction('dragging');\n\t\tthis._enableInteraction('scrollWheelZoom');\n\t\tthis._enableInteraction('tap');\n\t},\n\n\t_enableWarning: function(gesture) {\n\t\tclearTimeout(this._isFading);\n\t\tL.DomUtil.addClass(this._map._container, \"leaflet-gesture-handling-\" + gesture);\n\t\tL.DomUtil.addClass(this._map._container, \"leaflet-gesture-handling-warning\");\n\t},\n\n\t_disableWarning: function(gesture, delay) {\n\t\tclearTimeout(this._isFading);\n\t\tthis._isFading = setTimeout(\n\t\t\tL.bind(function(gesture) {\n\t\t\t\tL.DomUtil.removeClass(this._map._container, \"leaflet-gesture-handling-\" + gesture);\n\t\t\t}, this, gesture),\n\t\t\tdelay || this._map.options.gestureHandlingOptions.duration\n\t\t);\n\t\tL.DomUtil.removeClass(this._map._container, \"leaflet-gesture-handling-warning\");\n\t},\n\n\t_isLanguageContent: function(text) {\n\t\treturn text && text.touch && text.scroll && text.scrollMac;\n\t},\n\n\t_isMacUser: function() {\n\t\treturn navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\n\t},\n\n\t_parseGestureHandlingOptions: function() {\n\t\tvar text = this._map.options.gestureHandlingOptions.text || this._map.options.gestureHandlingText || gestureHandlingOptions.text;\n\t\tvar duration = this._map.options.gestureHandlingOptions.duration || this._map.options.gestureHandlingDuration || gestureHandlingOptions.duration;\n\t\tvar options = L.extend(this._map.options.gestureHandlingOptions, gestureHandlingOptions);\n\t\t// Merge default gestureHandlingOptions into the new options object\n\t\toptions.text = text;\n\t\toptions.duration = duration;\n\t\treturn options;\n\t},\n\n\t_setGestureHandlingOptions: function() {\n\t\tvar opts = this._parseGestureHandlingOptions();\n\n\t\t//If user has supplied custom language, use that, otherwise auto set it from the language files\n\t\t(this._isLanguageContent(opts.text) ? Promise.resolve(opts.text) : this._getLanguageContent(opts.locale)).then((content) => {\n\t\t\tthis._map._container.setAttribute(\"data-gesture-handling-touch-content\", content.touch);\n\t\t\tthis._map._container.setAttribute(\"data-gesture-handling-scroll-content\", content.scroll);\n\t\t\tthis._touchWarning = content.touch;\n\t\t\tthis._scrollWarning = content.scroll;\n\t\t});\n\n\t},\n\n\t_getUserLanguage: function() {\n\t\treturn navigator.languages ? navigator.languages[0] : navigator.language || navigator.userLanguage;\n\t},\n\n\t_getLanguageContent: function(lang) {\n\t\t//Determine user language (eg. fr or en-US)\n\t\tlang = lang || this._getUserLanguage() || \"en\";\n\t\tvar resolve, promise = new Promise(_resolve => { resolve = _resolve });\n\t\tvar consume = (m) => {\n\t\t\tvar content = m.default || {};\n\t\t\t//Check if they're on a mac for displaying appropriate command control (⌘ instead of Ctrl)\n\t\t\tcontent.scroll = this._isMacUser() ? content.scrollMac : content.scroll\n\t\t\tresolve(content);\n\t\t};\n\n\t\t//Lookup the appropriate language content\n\t\timport(baseURL + './locales/' + lang + '.js').then(consume)\n\t\t//If no result, try searching by the first part only (eg. en-US, just use en).\n\t\t.catch((e) => import(baseURL + './locales/' + lang.split(\"-\")[0] + '.js').then(consume)\n\t\t\t// If still nothing, default to English.\n\t\t\t.catch((e) => Promise.resolve({default:defaultLocale}).then(consume))\n\t\t);\n\n\t\treturn promise;\n\t},\n\n\t_handleTouch: function(e) {\n\t\t//Disregard touch events on the controls and popups if present\n\t\tvar ignore = L.DomUtil.hasClass(e.target, \"leaflet-interactive\") || e.target.closest('.leaflet-control-container') || e.target.closest('.leaflet-popup-pane');\n\n\t\tif (ignore) {\n\t\t\tif (L.DomUtil.hasClass(e.target, \"leaflet-interactive\") && e.type === \"touchmove\" && e.touches.length === 1) {\n\t\t\t\tthis._enableTouchWarning();\n\t\t\t} else {\n\t\t\t\tthis._disableTouchWarning();\n\t\t\t}\n\t\t} else if (e.type !== \"touchmove\" && e.type !== \"touchstart\") {\n\t\t\tthis._disableTouchWarning();\n\t\t} else if (e.touches.length === 1) {\n\t\t\tthis._enableTouchWarning();\n\t\t} else {\n\t\t\te.preventDefault();\n\t\t\tthis._disableTouchWarning();\n\t\t\tthis._enableInteractions();\n\t\t}\n\t},\n\n\t_enableTouchWarning: function() {\n\t\tthis._enableWarning('touch');\n\t\tthis._disableInteractions();\n\t},\n\n\t_disableTouchWarning: function(delay) {\n\t\tclearTimeout(this._isTouching);\n\t\t// Set a timeout to run after touching ends\n\t\tthis._isTouching = setTimeout(\n\t\t\tL.bind(\n\t\t\t\tfunction() {\n\t\t\t\t\tthis._disableWarning('touch');\n\t\t\t\t\t// this._enableInteractions();\n\t\t\t\t}, this),\n\t\t\tdelay || 0\n\t\t);\n\t},\n\n\t_enableScrollWarning: function() {\n\t\tthis._enableWarning('scroll');\n\t\tthis._disableInteraction('scrollWheelZoom');\n\t},\n\n\t_disableScrollWarning: function(delay) {\n\t\tclearTimeout(this._isScrolling);\n\t\t// Set a timeout to run after scrolling ends\n\t\tthis._isScrolling = setTimeout(\n\t\t\tL.bind(\n\t\t\t\tfunction() {\n\t\t\t\t\tthis._disableWarning('scroll');\n\t\t\t\t\tthis._enableInteraction('scrollWheelZoom');\n\t\t\t\t}, this),\n\t\t\tdelay || 0\n\t\t);\n\t},\n\n\t_handleScroll: function(e) {\n\t\tif (this._map.scrollWheelZoom && this._map.scrollWheelZoom.enabled()) {\n\t\t\tif (e.metaKey || e.ctrlKey || (e.shiftKey && this._map._rotate)) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._disableScrollWarning();\n\t\t\t} else {\n\t\t\t\tthis._enableScrollWarning();\n\t\t\t\tthis._disableScrollWarning(this._map.options.gestureHandlingOptions.duration);\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleScrollOnPopup: function(e) {\n\t\tL.DomEvent[e.type == 'popupopen' ? 'on' : 'off']\n\t\t(e.popup._contentNode, \"wheel\", this._handleScroll, this);\n\t},\n\n\t_handleMouseOver: function(e) {\n\t\tthis._enableInteractions();\n\t},\n\n\t_handleMouseOut: function(e) {\n\t\tif (!draggingMap) this._disableInteractions();\n\t},\n\n\t_onExitFullscreen: function() {\n\t\tif (this._map.options.gestureHandling)\n\t\t\tthis._map.gestureHandling.enable();\n\t},\n\n\t_onEnterFullscreen: function() {\n\t\tif (this._map.options.gestureHandling)\n\t\t\tthis._map.gestureHandling.disable();\n\t},\n\n});\n\nL.Map.mergeOptions({\n\tgestureHandlingOptions: gestureHandlingOptions\n});\n\nL.Map.addInitHook(\"addHandler\", \"gestureHandling\", GestureHandling);\n","/**\r\n * leaflet-control-layers-inline\r\n *\r\n * @author Raruto\r\n * @license GPL-3.0+\r\n * @link https://github.com/Raruto/leaflet-control-layers-inline\r\n * @desc Leaflet plugin that allows to display inline layers control\r\n */\r\n(function() {\r\n\r\n var layersProto = L.Control.Layers.prototype;\r\n var initializeLayersProto = layersProto.initialize;\r\n var onAddLayersProto = layersProto.onAdd;\r\n\r\n layersProto.options.inline = false;\r\n\r\n L.Control.Layers.include({\r\n\r\n initialize: function(baseLayers, overlays, options) {\r\n if (options.inline) {\r\n options.collapsed = false;\r\n }\r\n initializeLayersProto.call(this, baseLayers, overlays, options);\r\n },\r\n\r\n onAdd: function(map) {\r\n onAddLayersProto.call(this, map);\r\n if (this.options.inline) {\r\n this.options.collapsed = false;\r\n L.DomUtil.addClass(this._container, \"leaflet-control-layers-inline\");\r\n }\r\n if (this.options.className) {\r\n L.DomUtil.addClass(this._container, this.options.className);\r\n }\r\n return this._container;\r\n },\r\n\r\n });\r\n\r\n})();\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e():\"function\"==typeof define&&define.amd?define(e):e()}(0,function(){\"use strict\";function t(t,e){return e={exports:{}},t(e,e.exports),e.exports}var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},n=t(function(t){!function(e){function n(t,e){function n(t){return e.bgcolor&&(t.style.backgroundColor=e.bgcolor),e.width&&(t.style.width=e.width+\"px\"),e.height&&(t.style.height=e.height+\"px\"),e.style&&Object.keys(e.style).forEach(function(n){t.style[n]=e.style[n]}),t}return e=e||{},s(e),Promise.resolve(t).then(function(t){return u(t,e.filter,!0)}).then(c).then(d).then(n).then(function(n){return g(n,e.width||h.width(t),e.height||h.height(t))})}function i(t,e){return l(t,e||{}).then(function(e){return e.getContext(\"2d\").getImageData(0,0,h.width(t),h.height(t)).data})}function o(t,e){return l(t,e||{}).then(function(t){return t.toDataURL()})}function r(t,e){return e=e||{},l(t,e).then(function(t){return t.toDataURL(\"image/jpeg\",e.quality||1)})}function a(t,e){return l(t,e||{}).then(h.canvasToBlob)}function s(t){void 0===t.imagePlaceholder?w.impl.options.imagePlaceholder=M.imagePlaceholder:w.impl.options.imagePlaceholder=t.imagePlaceholder,void 0===t.cacheBust?w.impl.options.cacheBust=M.cacheBust:w.impl.options.cacheBust=t.cacheBust}function l(t,e){function i(t){var n=document.createElement(\"canvas\");if(n.width=e.width||h.width(t),n.height=e.height||h.height(t),e.bgcolor){var i=n.getContext(\"2d\");i.fillStyle=e.bgcolor,i.fillRect(0,0,n.width,n.height)}return n}return n(t,e).then(h.makeImage).then(h.delay(100)).then(function(e){var n=i(t);return n.getContext(\"2d\").drawImage(e,0,0),n})}function u(t,e,n){function i(t){return t instanceof HTMLCanvasElement?h.makeImage(t.toDataURL()):t.cloneNode(!1)}function o(t,e,n){var i=t.childNodes;return 0===i.length?Promise.resolve(e):function(t,e,n){var i=Promise.resolve();return e.forEach(function(e){i=i.then(function(){return u(e,n)}).then(function(e){e&&t.appendChild(e)})}),i}(e,h.asArray(i),n).then(function(){return e})}function r(t,e){function n(){!function(t,e){t.cssText?e.cssText=t.cssText:function(t,e){h.asArray(t).forEach(function(n){e.setProperty(n,t.getPropertyValue(n),t.getPropertyPriority(n))})}(t,e)}(window.getComputedStyle(t),e.style)}function i(){function n(n){var i=window.getComputedStyle(t,n),o=i.getPropertyValue(\"content\");if(\"\"!==o&&\"none\"!==o){var r=h.uid();e.className=e.className+\" \"+r;var a=document.createElement(\"style\");a.appendChild(function(t,e,n){var i=\".\"+t+\":\"+e,o=n.cssText?function(t){var e=t.getPropertyValue(\"content\");return t.cssText+\" content: \"+e+\";\"}(n):function(t){function e(e){return e+\": \"+t.getPropertyValue(e)+(t.getPropertyPriority(e)?\" !important\":\"\")}return h.asArray(t).map(e).join(\"; \")+\";\"}(n);return document.createTextNode(i+\"{\"+o+\"}\")}(r,n,i)),e.appendChild(a)}}[\":before\",\":after\"].forEach(function(t){n(t)})}function o(){t instanceof HTMLTextAreaElement&&(e.innerHTML=t.value),t instanceof HTMLInputElement&&e.setAttribute(\"value\",t.value)}function r(){e instanceof SVGElement&&(e.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\"),e instanceof SVGRectElement&&[\"width\",\"height\"].forEach(function(t){var n=e.getAttribute(t);n&&e.style.setProperty(t,n)}))}return e instanceof Element?Promise.resolve().then(n).then(i).then(o).then(r).then(function(){return e}):e}return n||!e||e(t)?Promise.resolve(t).then(i).then(function(n){return o(t,n,e)}).then(function(e){return r(t,e)}):Promise.resolve()}function c(t){return p.resolveAll().then(function(e){var n=document.createElement(\"style\");return t.appendChild(n),n.appendChild(document.createTextNode(e)),t})}function d(t){return f.inlineAll(t).then(function(){return t})}function g(t,e,n){return Promise.resolve(t).then(function(t){return t.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),(new XMLSerializer).serializeToString(t)}).then(h.escapeXhtml).then(function(t){return'<foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">'+t+\"</foreignObject>\"}).then(function(t){return'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"'+e+'\" height=\"'+n+'\">'+t+\"</svg>\"}).then(function(t){return\"data:image/svg+xml;charset=utf-8,\"+t})}var h=function(){function t(){var t=\"application/font-woff\",e=\"image/jpeg\";return{woff:t,woff2:t,ttf:\"application/font-truetype\",eot:\"application/vnd.ms-fontobject\",png:\"image/png\",jpg:e,jpeg:e,gif:\"image/gif\",tiff:\"image/tiff\",svg:\"image/svg+xml\"}}function e(t){var e=/\\.([^\\.\\/]*?)$/g.exec(t);return e?e[1]:\"\"}function n(n){var i=e(n).toLowerCase();return t()[i]||\"\"}function i(t){return-1!==t.search(/^(data:)/)}function o(t){return new Promise(function(e){for(var n=window.atob(t.toDataURL().split(\",\")[1]),i=n.length,o=new Uint8Array(i),r=0;r<i;r++)o[r]=n.charCodeAt(r);e(new Blob([o],{type:\"image/png\"}))})}function r(t){return t.toBlob?new Promise(function(e){t.toBlob(e)}):o(t)}function a(t,e){var n=document.implementation.createHTMLDocument(),i=n.createElement(\"base\");n.head.appendChild(i);var o=n.createElement(\"a\");return n.body.appendChild(o),i.href=e,o.href=t,o.href}function s(t){return new Promise(function(e,n){var i=new Image;i.onload=function(){e(i)},i.onerror=n,i.src=t})}function l(t){var e=3e4;return w.impl.options.cacheBust&&(t+=(/\\?/.test(t)?\"&\":\"?\")+(new Date).getTime()),new Promise(function(n){function i(){if(4===a.readyState){if(200!==a.status)return void(s?n(s):r(\"cannot fetch resource: \"+t+\", status: \"+a.status));var e=new FileReader;e.onloadend=function(){var t=e.result.split(/,/)[1];n(t)},e.readAsDataURL(a.response)}}function o(){s?n(s):r(\"timeout of \"+e+\"ms occured while fetching resource: \"+t)}function r(t){console.error(t),n(\"\")}var a=new XMLHttpRequest;a.onreadystatechange=i,a.ontimeout=o,a.responseType=\"blob\",a.timeout=e,a.open(\"GET\",t,!0),a.send();var s;if(w.impl.options.imagePlaceholder){var l=w.impl.options.imagePlaceholder.split(/,/);l&&l[1]&&(s=l[1])}})}function u(t,e){return\"data:\"+e+\";base64,\"+t}function c(t){return t.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\")}function d(t){return function(e){return new Promise(function(n){setTimeout(function(){n(e)},t)})}}function g(t){for(var e=[],n=t.length,i=0;i<n;i++)e.push(t[i]);return e}function h(t){return t.replace(/#/g,\"%23\").replace(/\\n/g,\"%0A\")}function m(t){var e=f(t,\"border-left-width\"),n=f(t,\"border-right-width\");return t.scrollWidth+e+n}function p(t){var e=f(t,\"border-top-width\"),n=f(t,\"border-bottom-width\");return t.scrollHeight+e+n}function f(t,e){var n=window.getComputedStyle(t).getPropertyValue(e);return parseFloat(n.replace(\"px\",\"\"))}return{escape:c,parseExtension:e,mimeType:n,dataAsUrl:u,isDataUrl:i,canvasToBlob:r,resolveUrl:a,getAndEncode:l,uid:function(){var t=0;return function(){return\"u\"+function(){return(\"0000\"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}()+t++}}(),delay:d,asArray:g,escapeXhtml:h,makeImage:s,width:m,height:p}}(),m=function(){function t(t){return-1!==t.search(o)}function e(t){for(var e,n=[];null!==(e=o.exec(t));)n.push(e[1]);return n.filter(function(t){return!h.isDataUrl(t)})}function n(t,e,n,i){function o(t){return new RegExp(\"(url\\\\(['\\\"]?)(\"+h.escape(t)+\")(['\\\"]?\\\\))\",\"g\")}return Promise.resolve(e).then(function(t){return n?h.resolveUrl(t,n):t}).then(i||h.getAndEncode).then(function(t){return h.dataAsUrl(t,h.mimeType(e))}).then(function(n){return t.replace(o(e),\"$1\"+n+\"$3\")})}function i(i,o,r){return function(){return!t(i)}()?Promise.resolve(i):Promise.resolve(i).then(e).then(function(t){var e=Promise.resolve(i);return t.forEach(function(t){e=e.then(function(e){return n(e,t,o,r)})}),e})}var o=/url\\(['\"]?([^'\"]+?)['\"]?\\)/g;return{inlineAll:i,shouldProcess:t,impl:{readUrls:e,inline:n}}}(),p=function(){function t(){return e(document).then(function(t){return Promise.all(t.map(function(t){return t.resolve()}))}).then(function(t){return t.join(\"\\n\")})}function e(){function t(t){return t.filter(function(t){return t.type===CSSRule.FONT_FACE_RULE}).filter(function(t){return m.shouldProcess(t.style.getPropertyValue(\"src\"))})}function e(t){var e=[];return t.forEach(function(t){try{h.asArray(t.cssRules||[]).forEach(e.push.bind(e))}catch(e){console.log(\"Error while reading CSS rules from \"+t.href,e.toString())}}),e}function n(t){return{resolve:function(){var e=(t.parentStyleSheet||{}).href;return m.inlineAll(t.cssText,e)},src:function(){return t.style.getPropertyValue(\"src\")}}}return Promise.resolve(h.asArray(document.styleSheets)).then(e).then(t).then(function(t){return t.map(n)})}return{resolveAll:t,impl:{readAll:e}}}(),f=function(){function t(t){function e(e){return h.isDataUrl(t.src)?Promise.resolve():Promise.resolve(t.src).then(e||h.getAndEncode).then(function(e){return h.dataAsUrl(e,h.mimeType(t.src))}).then(function(e){return new Promise(function(n,i){t.onload=n,t.onerror=i,t.src=e})})}return{inline:e}}function e(n){return n instanceof Element?function(t){var e=t.style.getPropertyValue(\"background\");return e?m.inlineAll(e).then(function(e){t.style.setProperty(\"background\",e,t.style.getPropertyPriority(\"background\"))}).then(function(){return t}):Promise.resolve(t)}(n).then(function(){return n instanceof HTMLImageElement?t(n).inline():Promise.all(h.asArray(n.childNodes).map(function(t){return e(t)}))}):Promise.resolve(n)}return{inlineAll:e,impl:{newImage:t}}}(),M={imagePlaceholder:void 0,cacheBust:!1},w={toSvg:n,toPng:o,toJpeg:r,toBlob:a,toPixelData:i,impl:{fontFaces:p,images:f,util:h,inliner:m,options:{}}};t.exports=w}()}),i=t(function(t){var n=n||function(t){if(!(void 0===t||\"undefined\"!=typeof navigator&&/MSIE [1-9]\\./.test(navigator.userAgent))){var e=t.document,n=function(){return t.URL||t.webkitURL||t},i=e.createElementNS(\"http://www.w3.org/1999/xhtml\",\"a\"),o=\"download\"in i,r=function(t){var e=new MouseEvent(\"click\");t.dispatchEvent(e)},a=/constructor/i.test(t.HTMLElement)||t.safari,s=/CriOS\\/[\\d]+/.test(navigator.userAgent),l=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},u=function(t){var e=function(){\"string\"==typeof t?n().revokeObjectURL(t):t.remove()};setTimeout(e,4e4)},c=function(t,e,n){e=[].concat(e);for(var i=e.length;i--;){var o=t[\"on\"+e[i]];if(\"function\"==typeof o)try{o.call(t,n||t)}catch(t){l(t)}}},d=function(t){return/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},g=function(e,l,g){g||(e=d(e));var h,m=this,p=e.type,f=\"application/octet-stream\"===p,M=function(){c(m,\"writestart progress write writeend\".split(\" \"))};if(m.readyState=m.INIT,o)return h=n().createObjectURL(e),void setTimeout(function(){i.href=h,i.download=l,r(i),M(),u(h),m.readyState=m.DONE});!function(){if((s||f&&a)&&t.FileReader){var i=new FileReader;return i.onloadend=function(){var e=s?i.result:i.result.replace(/^data:[^;]*;/,\"data:attachment/file;\");t.open(e,\"_blank\")||(t.location.href=e),e=void 0,m.readyState=m.DONE,M()},i.readAsDataURL(e),void(m.readyState=m.INIT)}if(h||(h=n().createObjectURL(e)),f)t.location.href=h;else{t.open(h,\"_blank\")||(t.location.href=h)}m.readyState=m.DONE,M(),u(h)}()},h=g.prototype,m=function(t,e,n){return new g(t,e||t.name||\"download\",n)};return\"undefined\"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||\"download\",n||(t=d(t)),navigator.msSaveOrOpenBlob(t,e)}:(h.abort=function(){},h.readyState=h.INIT=0,h.WRITING=1,h.DONE=2,h.error=h.onwritestart=h.onprogress=h.onwrite=h.onabort=h.onerror=h.onwriteend=null,m)}}(\"undefined\"!=typeof self&&self||\"undefined\"!=typeof window&&window||e.content);t.exports&&(t.exports.saveAs=n)});L.Control.EasyPrint=L.Control.extend({options:{title:\"Print map\",position:\"topleft\",sizeModes:[\"Current\"],filename:\"map\",exportOnly:!1,hidden:!1,tileWait:500,hideControlContainer:!0,hideClasses:[],customWindowTitle:window.document.title,spinnerBgCOlor:\"#0DC5C1\",customSpinnerClass:\"epLoader\",defaultSizeTitles:{Current:\"Current Size\",A4Landscape:\"A4 Landscape\",A4Portrait:\"A4 Portrait\"}},onAdd:function(){this.mapContainer=this._map.getContainer(),this.options.sizeModes=this.options.sizeModes.map(function(t){return\"Current\"===t?{name:this.options.defaultSizeTitles.Current,className:\"CurrentSize\"}:\"A4Landscape\"===t?{height:this._a4PageSize.height,width:this._a4PageSize.width,name:this.options.defaultSizeTitles.A4Landscape,className:\"A4Landscape page\"}:\"A4Portrait\"===t?{height:this._a4PageSize.width,width:this._a4PageSize.height,name:this.options.defaultSizeTitles.A4Portrait,className:\"A4Portrait page\"}:t},this);var t=L.DomUtil.create(\"div\",\"leaflet-control-easyPrint leaflet-bar leaflet-control\");if(!this.options.hidden){this._addCss(),L.DomEvent.addListener(t,\"mouseover\",this._togglePageSizeButtons,this),L.DomEvent.addListener(t,\"mouseout\",this._togglePageSizeButtons,this);var e=\"leaflet-control-easyPrint-button\";this.options.exportOnly&&(e+=\"-export\"),this.link=L.DomUtil.create(\"a\",e,t),this.link.id=\"leafletEasyPrint\",this.link.title=this.options.title,this.holder=L.DomUtil.create(\"ul\",\"easyPrintHolder\",t),this.options.sizeModes.forEach(function(t){var e=L.DomUtil.create(\"li\",\"easyPrintSizeMode\",this.holder);e.title=t.name;L.DomUtil.create(\"a\",t.className,e);L.DomEvent.addListener(e,\"click\",this.printMap,this)},this),L.DomEvent.disableClickPropagation(t)}return t},printMap:function(t,e){e&&(this.options.filename=e),this.options.exportOnly||(this._page=window.open(\"\",\"_blank\",\"toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,left=10, top=10, width=200, height=250, visible=none\"),this._page.document.write(this._createSpinner(this.options.customWindowTitle,this.options.customSpinnerClass,this.options.spinnerBgCOlor))),this.originalState={mapWidth:this.mapContainer.style.width,widthWasAuto:!1,widthWasPercentage:!1,mapHeight:this.mapContainer.style.height,zoom:this._map.getZoom(),center:this._map.getCenter()},\"auto\"===this.originalState.mapWidth?(this.originalState.mapWidth=this._map.getSize().x+\"px\",this.originalState.widthWasAuto=!0):this.originalState.mapWidth.includes(\"%\")&&(this.originalState.percentageWidth=this.originalState.mapWidth,this.originalState.widthWasPercentage=!0,this.originalState.mapWidth=this._map.getSize().x+\"px\"),this._map.fire(\"easyPrint-start\",{event:t}),this.options.hidden||this._togglePageSizeButtons({type:null}),this.options.hideControlContainer&&this._toggleControls(),this.options.hideClasses.length>0&&this._toggleClasses(this.options.hideClasses);var n=\"string\"!=typeof t?t.target.className:t;if(\"CurrentSize\"===n)return this._printOpertion(n);this.outerContainer=this._createOuterContainer(this.mapContainer),this.originalState.widthWasAuto&&(this.outerContainer.style.width=this.originalState.mapWidth),this._createImagePlaceholder(n)},_createImagePlaceholder:function(t){var e=this;n.toPng(this.mapContainer,{width:parseInt(this.originalState.mapWidth.replace(\"px\")),height:parseInt(this.originalState.mapHeight.replace(\"px\"))}).then(function(n){e.blankDiv=document.createElement(\"div\");var i=e.blankDiv;e.outerContainer.parentElement.insertBefore(i,e.outerContainer),i.className=\"epHolder\",i.style.backgroundImage='url(\"'+n+'\")',i.style.position=\"absolute\",i.style.zIndex=1011,i.style.display=\"initial\",i.style.width=e.originalState.mapWidth,i.style.height=e.originalState.mapHeight,e._resizeAndPrintMap(t)}).catch(function(t){console.error(\"oops, something went wrong!\",t)})},_resizeAndPrintMap:function(t){this.outerContainer.style.opacity=0;var e=this.options.sizeModes.filter(function(e){return e.className===t});e=e[0],this.mapContainer.style.width=e.width+\"px\",this.mapContainer.style.height=e.height+\"px\",this.mapContainer.style.width>this.mapContainer.style.height?this.orientation=\"portrait\":this.orientation=\"landscape\",this._map.setView(this.originalState.center),this._map.setZoom(this.originalState.zoom),this._map.invalidateSize(),this.options.tileLayer?this._pausePrint(t):this._printOpertion(t)},_pausePrint:function(t){var e=this,n=setInterval(function(){e.options.tileLayer.isLoading()||(clearInterval(n),e._printOpertion(t))},e.options.tileWait)},_printOpertion:function(t){var e=this,o=this.mapContainer.style.width;(this.originalState.widthWasAuto&&\"CurrentSize\"===t||this.originalState.widthWasPercentage&&\"CurrentSize\"===t)&&(o=this.originalState.mapWidth),n.toPng(e.mapContainer,{width:parseInt(o),height:parseInt(e.mapContainer.style.height.replace(\"px\"))}).then(function(t){var n=e._dataURItoBlob(t);e.options.exportOnly?i.saveAs(n,e.options.filename+\".png\"):e._sendToBrowserPrint(t,e.orientation),e._toggleControls(!0),e._toggleClasses(e.options.hideClasses,!0),e.outerContainer&&(e.originalState.widthWasAuto?e.mapContainer.style.width=\"auto\":e.originalState.widthWasPercentage?e.mapContainer.style.width=e.originalState.percentageWidth:e.mapContainer.style.width=e.originalState.mapWidth,e.mapContainer.style.height=e.originalState.mapHeight,e._removeOuterContainer(e.mapContainer,e.outerContainer,e.blankDiv),e._map.invalidateSize(),e._map.setView(e.originalState.center),e._map.setZoom(e.originalState.zoom)),e._map.fire(\"easyPrint-finished\")}).catch(function(t){console.error(\"Print operation failed\",t)})},_sendToBrowserPrint:function(t,e){this._page.resizeTo(600,800);var n=this._createNewWindow(t,e,this);this._page.document.body.innerHTML=\"\",this._page.document.write(n),this._page.document.close()},_createSpinner:function(t,e,n){return\"<html><head><title>\"+t+\"</title></head><body><style>\\n body{\\n background: \"+n+\";\\n }\\n .epLoader,\\n .epLoader:before,\\n .epLoader:after {\\n border-radius: 50%;\\n }\\n .epLoader {\\n color: #ffffff;\\n font-size: 11px;\\n text-indent: -99999em;\\n margin: 55px auto;\\n position: relative;\\n width: 10em;\\n height: 10em;\\n box-shadow: inset 0 0 0 1em;\\n -webkit-transform: translateZ(0);\\n -ms-transform: translateZ(0);\\n transform: translateZ(0);\\n }\\n .epLoader:before,\\n .epLoader:after {\\n position: absolute;\\n content: '';\\n }\\n .epLoader:before {\\n width: 5.2em;\\n height: 10.2em;\\n background: #0dc5c1;\\n border-radius: 10.2em 0 0 10.2em;\\n top: -0.1em;\\n left: -0.1em;\\n -webkit-transform-origin: 5.2em 5.1em;\\n transform-origin: 5.2em 5.1em;\\n -webkit-animation: load2 2s infinite ease 1.5s;\\n animation: load2 2s infinite ease 1.5s;\\n }\\n .epLoader:after {\\n width: 5.2em;\\n height: 10.2em;\\n background: #0dc5c1;\\n border-radius: 0 10.2em 10.2em 0;\\n top: -0.1em;\\n left: 5.1em;\\n -webkit-transform-origin: 0px 5.1em;\\n transform-origin: 0px 5.1em;\\n -webkit-animation: load2 2s infinite ease;\\n animation: load2 2s infinite ease;\\n }\\n @-webkit-keyframes load2 {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n }\\n @keyframes load2 {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n }\\n </style>\\n <div class=\\\"\"+e+'\">Loading...</div></body></html>'},_createNewWindow:function(t,e,n){return\"<html><head>\\n <style>@media print {\\n img { max-width: 98%!important; max-height: 98%!important; }\\n @page { size: \"+e+\";}}\\n </style>\\n <script>function step1(){\\n setTimeout('step2()', 10);}\\n function step2(){window.print();window.close()}\\n <\\/script></head><body onload='step1()'>\\n <img src=\\\"\"+t+'\" style=\"display:block; margin:auto;\"></body></html>'},_createOuterContainer:function(t){var e=document.createElement(\"div\");return t.parentNode.insertBefore(e,t),t.parentNode.removeChild(t),e.appendChild(t),e.style.width=t.style.width,e.style.height=t.style.height,e.style.display=\"inline-block\",e.style.overflow=\"hidden\",e},_removeOuterContainer:function(t,e,n){e.parentNode&&(e.parentNode.insertBefore(t,e),e.parentNode.removeChild(n),e.parentNode.removeChild(e))},_addCss:function(){var t=document.createElement(\"style\");t.type=\"text/css\",t.innerHTML=\".leaflet-control-easyPrint-button { \\n background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8cGF0aCBkPSJNMTI4LDMyaDI1NnY2NEgxMjhWMzJ6IE00ODAsMTI4SDMyYy0xNy42LDAtMzIsMTQuNC0zMiwzMnYxNjBjMCwxNy42LDE0LjM5OCwzMiwzMiwzMmg5NnYxMjhoMjU2VjM1Mmg5NiAgIGMxNy42LDAsMzItMTQuNCwzMi0zMlYxNjBDNTEyLDE0Mi40LDQ5Ny42LDEyOCw0ODAsMTI4eiBNMzUyLDQ0OEgxNjBWMjg4aDE5MlY0NDh6IE00ODcuMTk5LDE3NmMwLDEyLjgxMy0xMC4zODcsMjMuMi0yMy4xOTcsMjMuMiAgIGMtMTIuODEyLDAtMjMuMjAxLTEwLjM4Ny0yMy4yMDEtMjMuMnMxMC4zODktMjMuMiwyMy4xOTktMjMuMkM0NzYuODE0LDE1Mi44LDQ4Ny4xOTksMTYzLjE4Nyw0ODcuMTk5LDE3NnoiIGZpbGw9IiMwMDAwMDAiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K);\\n background-size: 16px 16px; \\n cursor: pointer; \\n }\\n .leaflet-control-easyPrint-button-export { \\n background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDQzMy41IDQzMy41IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MzMuNSA0MzMuNTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnIGlkPSJmaWxlLWRvd25sb2FkIj4KCQk8cGF0aCBkPSJNMzk1LjI1LDE1M2gtMTAyVjBoLTE1M3YxNTNoLTEwMmwxNzguNSwxNzguNUwzOTUuMjUsMTUzeiBNMzguMjUsMzgyLjV2NTFoMzU3di01MUgzOC4yNXoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K);\\n background-size: 16px 16px; \\n cursor: pointer; \\n }\\n .easyPrintHolder a {\\n background-size: 16px 16px;\\n cursor: pointer;\\n }\\n .easyPrintHolder .CurrentSize{\\n background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgdmVyc2lvbj0iMS4xIiBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiPgogIDxnPgogICAgPGcgZmlsbD0iIzFEMUQxQiI+CiAgICAgIDxwYXRoIGQ9Ik0yNS4yNTUsMzUuOTA1TDQuMDE2LDU3LjE0NVY0Ni41OWMwLTEuMTA4LTAuODk3LTIuMDA4LTIuMDA4LTIuMDA4QzAuODk4LDQ0LjU4MiwwLDQ1LjQ4MSwwLDQ2LjU5djE1LjQwMiAgICBjMCwwLjI2MSwwLjA1MywwLjUyMSwwLjE1NSwwLjc2N2MwLjIwMywwLjQ5MiwwLjU5NCwwLjg4MiwxLjA4NiwxLjA4N0MxLjQ4Niw2My45NDcsMS43NDcsNjQsMi4wMDgsNjRoMTUuNDAzICAgIGMxLjEwOSwwLDIuMDA4LTAuODk4LDIuMDA4LTIuMDA4cy0wLjg5OC0yLjAwOC0yLjAwOC0yLjAwOEg2Ljg1NWwyMS4yMzgtMjEuMjRjMC43ODQtMC43ODQsMC43ODQtMi4wNTUsMC0yLjgzOSAgICBTMjYuMDM5LDM1LjEyMSwyNS4yNTUsMzUuOTA1eiIgZmlsbD0iIzAwMDAwMCIvPgogICAgICA8cGF0aCBkPSJtNjMuODQ1LDEuMjQxYy0wLjIwMy0wLjQ5MS0wLjU5NC0wLjg4Mi0xLjA4Ni0xLjA4Ny0wLjI0NS0wLjEwMS0wLjUwNi0wLjE1NC0wLjc2Ny0wLjE1NGgtMTUuNDAzYy0xLjEwOSwwLTIuMDA4LDAuODk4LTIuMDA4LDIuMDA4czAuODk4LDIuMDA4IDIuMDA4LDIuMDA4aDEwLjU1NmwtMjEuMjM4LDIxLjI0Yy0wLjc4NCwwLjc4NC0wLjc4NCwyLjA1NSAwLDIuODM5IDAuMzkyLDAuMzkyIDAuOTA2LDAuNTg5IDEuNDIsMC41ODlzMS4wMjctMC4xOTcgMS40MTktMC41ODlsMjEuMjM4LTIxLjI0djEwLjU1NWMwLDEuMTA4IDAuODk3LDIuMDA4IDIuMDA4LDIuMDA4IDEuMTA5LDAgMi4wMDgtMC44OTkgMi4wMDgtMi4wMDh2LTE1LjQwMmMwLTAuMjYxLTAuMDUzLTAuNTIyLTAuMTU1LTAuNzY3eiIgZmlsbD0iIzAwMDAwMCIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==)\\n }\\n .easyPrintHolder .page {\\n background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ0NC44MzMgNDQ0LjgzMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDQ0LjgzMyA0NDQuODMzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNNTUuMjUsNDQ0LjgzM2gzMzQuMzMzYzkuMzUsMCwxNy03LjY1LDE3LTE3VjEzOS4xMTdjMC00LjgxNy0xLjk4My05LjM1LTUuMzgzLTEyLjQ2N0wyNjkuNzMzLDQuNTMzICAgIEMyNjYuNjE3LDEuNywyNjIuMzY3LDAsMjU4LjExNywwSDU1LjI1Yy05LjM1LDAtMTcsNy42NS0xNywxN3Y0MTAuODMzQzM4LjI1LDQzNy4xODMsNDUuOSw0NDQuODMzLDU1LjI1LDQ0NC44MzN6ICAgICBNMzcyLjU4MywxNDYuNDgzdjAuODVIMjU2LjQxN3YtMTA4LjhMMzcyLjU4MywxNDYuNDgzeiBNNzIuMjUsMzRoMTUwLjE2N3YxMzAuMzMzYzAsOS4zNSw3LjY1LDE3LDE3LDE3aDEzMy4xNjd2MjI5LjVINzIuMjVWMzR6ICAgICIgZmlsbD0iIzAwMDAwMCIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=);\\n }\\n .easyPrintHolder .A4Landscape { \\n transform: rotate(-90deg);\\n }\\n\\n .leaflet-control-easyPrint-button{\\n display: inline-block;\\n }\\n .easyPrintHolder{\\n margin-top:-31px;\\n margin-bottom: -5px;\\n margin-left: 30px;\\n padding-left: 0px;\\n display: none;\\n }\\n\\n .easyPrintSizeMode {\\n display: inline-block;\\n }\\n .easyPrintHolder .easyPrintSizeMode a {\\n border-radius: 0px;\\n }\\n\\n .easyPrintHolder .easyPrintSizeMode:last-child a{\\n border-top-right-radius: 2px;\\n border-bottom-right-radius: 2px;\\n margin-left: -1px;\\n }\\n\\n .easyPrintPortrait:hover, .easyPrintLandscape:hover{\\n background-color: #757570;\\n cursor: pointer;\\n }\",document.body.appendChild(t)},_dataURItoBlob:function(t){for(var e=atob(t.split(\",\")[1]),n=t.split(\",\")[0].split(\":\")[1].split(\";\")[0],i=new ArrayBuffer(e.length),o=new DataView(i),r=0;r<e.length;r++)o.setUint8(r,e.charCodeAt(r));return new Blob([i],{type:n})},_togglePageSizeButtons:function(t){var e=this.holder.style,n=this.link.style;\"mouseover\"===t.type?(e.display=\"block\",n.borderTopRightRadius=\"0\",n.borderBottomRightRadius=\"0\"):(e.display=\"none\",n.borderTopRightRadius=\"2px\",n.borderBottomRightRadius=\"2px\")},_toggleControls:function(t){var e=document.getElementsByClassName(\"leaflet-control-container\")[0];if(t)return e.style.display=\"block\";e.style.display=\"none\"},_toggleClasses:function(t,e){t.forEach(function(t){var n=document.getElementsByClassName(t)[0];if(e)return n.style.display=\"block\";n.style.display=\"none\"})},_a4PageSize:{height:715,width:1045}}),L.easyPrint=function(t){return new L.Control.EasyPrint(t)}});\n//# sourceMappingURL=bundle.js.map\n","L.Control.EditInOSM = L.Control.extend({\r\n\toptions: {\r\n\t\tposition: \"bottomright\",\r\n\t\teditor: false, // eg: \"id\", \"potlatch2\" or \"remote\"\r\n\t},\r\n\t_edit: function() {\r\n\t\tvar center = this._map.getCenter();\r\n\t\tvar z = this._map.getZoom();\r\n\t\tvar editor = this.options.editor ? '&editor=' + this.options.editor : '';\r\n\t\twindow.open('http://www.openstreetmap.org/edit?' + 'zoom=' + z + editor + '&lat=' + center.lat + '&lon=' + center.lng);\r\n\t},\r\n\tonAdd: function(map) {\r\n\t\tvar container = L.DomUtil.create('div', 'leaflet-control-attribution leaflet-edit-osm'),\r\n\t\t\tlink = L.DomUtil.create('a', '', container);\r\n\r\n\t\tlink.href = '#';\r\n\t\tlink.innerHTML = '✎ Edit';\r\n\t\tlink.title = 'Edit in OpenStreetMap';\r\n\r\n\t\tL.DomEvent\r\n\t\t\t.on(link, 'click', L.DomEvent.stopPropagation)\r\n\t\t\t.on(link, 'mousedown', L.DomEvent.stopPropagation)\r\n\t\t\t.on(link, 'dblclick', L.DomEvent.stopPropagation)\r\n\t\t\t.on(link, 'click', L.DomEvent.preventDefault)\r\n\t\t\t.on(link, 'click', L.bind(this._edit, this), this);\r\n\r\n\t\treturn container;\r\n\t}\r\n});\r\n\r\nL.control.editInOSM = function(options) {\r\n\treturn new L.Control.EditInOSM(options);\r\n};\r\n","(function(factory,window){if(typeof define===\"function\"&&define.amd){define([\"leaflet\"],factory)}else if(typeof exports===\"object\"){module.exports=factory(require(\"leaflet\"))}if(typeof window!==\"undefined\"&&window.L){window.L.Control.MiniMap=factory(L);window.L.control.minimap=function(layer,options){return new window.L.Control.MiniMap(layer,options)}}})(function(L){var MiniMap=L.Control.extend({includes:L.Evented?L.Evented.prototype:L.Mixin.Events,options:{position:\"bottomright\",toggleDisplay:false,zoomLevelOffset:-5,zoomLevelFixed:false,centerFixed:false,zoomAnimation:false,autoToggleDisplay:false,minimized:false,width:150,height:150,collapsedWidth:19,collapsedHeight:19,aimingRectOptions:{color:\"#ff7800\",weight:1,clickable:false},shadowRectOptions:{color:\"#000000\",weight:1,clickable:false,opacity:0,fillOpacity:0},strings:{hideText:\"Hide MiniMap\",showText:\"Show MiniMap\"},mapOptions:{}},initialize:function(layer,options){L.Util.setOptions(this,options);this.options.aimingRectOptions.clickable=false;this.options.shadowRectOptions.clickable=false;this._layer=layer},onAdd:function(map){this._mainMap=map;this._container=L.DomUtil.create(\"div\",\"leaflet-control-minimap\");this._container.style.width=this.options.width+\"px\";this._container.style.height=this.options.height+\"px\";L.DomEvent.disableClickPropagation(this._container);L.DomEvent.on(this._container,\"mousewheel\",L.DomEvent.stopPropagation);var mapOptions={attributionControl:false,dragging:!this.options.centerFixed,zoomControl:false,zoomAnimation:this.options.zoomAnimation,autoToggleDisplay:this.options.autoToggleDisplay,touchZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),scrollWheelZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),doubleClickZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),boxZoom:!this._isZoomLevelFixed(),crs:map.options.crs};mapOptions=L.Util.extend(this.options.mapOptions,mapOptions);this._miniMap=new L.Map(this._container,mapOptions);this._miniMap.addLayer(this._layer);this._mainMapMoving=false;this._miniMapMoving=false;this._userToggledDisplay=false;this._minimized=false;if(this.options.toggleDisplay){this._addToggleButton()}this._miniMap.whenReady(L.Util.bind(function(){this._aimingRect=L.rectangle(this._mainMap.getBounds(),this.options.aimingRectOptions).addTo(this._miniMap);this._shadowRect=L.rectangle(this._mainMap.getBounds(),this.options.shadowRectOptions).addTo(this._miniMap);this._mainMap.on(\"moveend\",this._onMainMapMoved,this);this._mainMap.on(\"move\",this._onMainMapMoving,this);this._miniMap.on(\"movestart\",this._onMiniMapMoveStarted,this);this._miniMap.on(\"move\",this._onMiniMapMoving,this);this._miniMap.on(\"moveend\",this._onMiniMapMoved,this)},this));return this._container},addTo:function(map){L.Control.prototype.addTo.call(this,map);var center=this.options.centerFixed||this._mainMap.getCenter();this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this.options.minimized);return this},onRemove:function(map){this._mainMap.off(\"moveend\",this._onMainMapMoved,this);this._mainMap.off(\"move\",this._onMainMapMoving,this);this._miniMap.off(\"moveend\",this._onMiniMapMoved,this);this._miniMap.removeLayer(this._layer)},changeLayer:function(layer){this._miniMap.removeLayer(this._layer);this._layer=layer;this._miniMap.addLayer(this._layer)},_addToggleButton:function(){this._toggleDisplayButton=this.options.toggleDisplay?this._createButton(\"\",this._toggleButtonInitialTitleText(),\"leaflet-control-minimap-toggle-display leaflet-control-minimap-toggle-display-\"+this.options.position,this._container,this._toggleDisplayButtonClicked,this):undefined;this._toggleDisplayButton.style.width=this.options.collapsedWidth+\"px\";this._toggleDisplayButton.style.height=this.options.collapsedHeight+\"px\"},_toggleButtonInitialTitleText:function(){if(this.options.minimized){return this.options.strings.showText}else{return this.options.strings.hideText}},_createButton:function(html,title,className,container,fn,context){var link=L.DomUtil.create(\"a\",className,container);link.innerHTML=html;link.href=\"#\";link.title=title;var stop=L.DomEvent.stopPropagation;L.DomEvent.on(link,\"click\",stop).on(link,\"mousedown\",stop).on(link,\"dblclick\",stop).on(link,\"click\",L.DomEvent.preventDefault).on(link,\"click\",fn,context);return link},_toggleDisplayButtonClicked:function(){this._userToggledDisplay=true;if(!this._minimized){this._minimize()}else{this._restore()}},_setDisplay:function(minimize){if(minimize!==this._minimized){if(!this._minimized){this._minimize()}else{this._restore()}}},_minimize:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.collapsedWidth+\"px\";this._container.style.height=this.options.collapsedHeight+\"px\";this._toggleDisplayButton.className+=\" minimized-\"+this.options.position;this._toggleDisplayButton.title=this.options.strings.showText}else{this._container.style.display=\"none\"}this._minimized=true;this._onToggle()},_restore:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.width+\"px\";this._container.style.height=this.options.height+\"px\";this._toggleDisplayButton.className=this._toggleDisplayButton.className.replace(\"minimized-\"+this.options.position,\"\");this._toggleDisplayButton.title=this.options.strings.hideText}else{this._container.style.display=\"block\"}this._minimized=false;this._onToggle()},_onMainMapMoved:function(e){if(!this._miniMapMoving){var center=this.options.centerFixed||this._mainMap.getCenter();this._mainMapMoving=true;this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this._decideMinimized())}else{this._miniMapMoving=false}this._aimingRect.setBounds(this._mainMap.getBounds())},_onMainMapMoving:function(e){this._aimingRect.setBounds(this._mainMap.getBounds())},_onMiniMapMoveStarted:function(e){if(!this.options.centerFixed){var lastAimingRect=this._aimingRect.getBounds();var sw=this._miniMap.latLngToContainerPoint(lastAimingRect.getSouthWest());var ne=this._miniMap.latLngToContainerPoint(lastAimingRect.getNorthEast());this._lastAimingRectPosition={sw:sw,ne:ne}}},_onMiniMapMoving:function(e){if(!this.options.centerFixed){if(!this._mainMapMoving&&this._lastAimingRectPosition){this._shadowRect.setBounds(new L.LatLngBounds(this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.sw),this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.ne)));this._shadowRect.setStyle({opacity:1,fillOpacity:.3})}}},_onMiniMapMoved:function(e){if(!this._mainMapMoving){this._miniMapMoving=true;this._mainMap.setView(this._miniMap.getCenter(),this._decideZoom(false));this._shadowRect.setStyle({opacity:0,fillOpacity:0})}else{this._mainMapMoving=false}},_isZoomLevelFixed:function(){var zoomLevelFixed=this.options.zoomLevelFixed;return this._isDefined(zoomLevelFixed)&&this._isInteger(zoomLevelFixed)},_decideZoom:function(fromMaintoMini){if(!this._isZoomLevelFixed()){if(fromMaintoMini){return this._mainMap.getZoom()+this.options.zoomLevelOffset}else{var currentDiff=this._miniMap.getZoom()-this._mainMap.getZoom();var proposedZoom=this._miniMap.getZoom()-this.options.zoomLevelOffset;var toRet;if(currentDiff>this.options.zoomLevelOffset&&this._mainMap.getZoom()<this._miniMap.getMinZoom()-this.options.zoomLevelOffset){if(this._miniMap.getZoom()>this._lastMiniMapZoom){toRet=this._mainMap.getZoom()+1;this._miniMap.setZoom(this._miniMap.getZoom()-1)}else{toRet=this._mainMap.getZoom()}}else{toRet=proposedZoom}this._lastMiniMapZoom=this._miniMap.getZoom();return toRet}}else{if(fromMaintoMini){return this.options.zoomLevelFixed}else{return this._mainMap.getZoom()}}},_decideMinimized:function(){if(this._userToggledDisplay){return this._minimized}if(this.options.autoToggleDisplay){if(this._mainMap.getBounds().contains(this._miniMap.getBounds())){return true}return false}return this._minimized},_isInteger:function(value){return typeof value===\"number\"},_isDefined:function(value){return typeof value!==\"undefined\"},_onToggle:function(){L.Util.requestAnimFrame(function(){L.DomEvent.on(this._container,\"transitionend\",this._fireToggleEvents,this);if(!L.Browser.any3d){L.Util.requestAnimFrame(this._fireToggleEvents,this)}},this)},_fireToggleEvents:function(){L.DomEvent.off(this._container,\"transitionend\",this._fireToggleEvents,this);var data={minimized:this._minimized};this.fire(this._minimized?\"minimize\":\"restore\",data);this.fire(\"toggle\",data)}});L.Map.mergeOptions({miniMapControl:false});L.Map.addInitHook(function(){if(this.options.miniMapControl){this.miniMapControl=(new MiniMap).addTo(this)}});return MiniMap},window);","/*\n * L.Control.Loading is a control that shows a loading indicator when tiles are\n * loading or when map-related AJAX requests are taking place.\n */\n\n(function () {\n\n var console = window.console || {\n error: function () {},\n warn: function () {}\n };\n\n function defineLeafletLoading(L) {\n L.Control.Loading = L.Control.extend({\n options: {\n delayIndicator: null,\n position: 'topleft',\n separate: false,\n zoomControl: null,\n spinjs: false,\n spin: { \n lines: 7, \n length: 3, \n width: 3, \n radius: 5, \n rotate: 13, \n top: \"83%\"\n }\n },\n\n initialize: function(options) {\n L.setOptions(this, options);\n this._dataLoaders = {};\n\n // Try to set the zoom control this control is attached to from the \n // options\n if (this.options.zoomControl !== null) {\n this.zoomControl = this.options.zoomControl;\n }\n },\n\n onAdd: function(map) {\n if (this.options.spinjs && (typeof Spinner !== 'function')) {\n return console.error(\"Leaflet.loading cannot load because you didn't load spin.js (http://fgnass.github.io/spin.js/), even though you set it in options.\");\n }\n this._addLayerListeners(map);\n this._addMapListeners(map);\n\n // Try to set the zoom control this control is attached to from the map\n // the control is being added to\n if (!this.options.separate && !this.zoomControl) {\n if (map.zoomControl) {\n this.zoomControl = map.zoomControl;\n } else if (map.zoomsliderControl) {\n this.zoomControl = map.zoomsliderControl;\n }\n }\n\n // Create the loading indicator\n var classes = 'leaflet-control-loading';\n var container;\n if (this.zoomControl && !this.options.separate) {\n // If there is a zoom control, hook into the bottom of it\n container = this.zoomControl._container;\n // These classes are no longer used as of Leaflet 0.6\n classes += ' leaflet-bar-part-bottom leaflet-bar-part last';\n\n // Loading control will be added to the zoom control. So the visible last element is not the\n // last dom element anymore. So add the part-bottom class.\n L.DomUtil.addClass(this._getLastControlButton(), 'leaflet-bar-part-bottom');\n }\n else {\n // Otherwise, create a container for the indicator\n container = L.DomUtil.create('div', 'leaflet-control-zoom leaflet-control-layer-container leaflet-bar');\n }\n this._indicatorContainer = container;\n this._indicator = L.DomUtil.create('a', classes, container);\n if (this.options.spinjs) {\n this._spinner = new Spinner(this.options.spin).spin();\n this._indicator.appendChild(this._spinner.el);\n }\n return container;\n },\n\n onRemove: function(map) {\n this._removeLayerListeners(map);\n this._removeMapListeners(map);\n },\n\n removeFrom: function (map) {\n if (this.zoomControl && !this.options.separate) {\n // Override Control.removeFrom() to avoid clobbering the entire\n // _container, which is the same as zoomControl's\n this._container.removeChild(this._indicator);\n this._map = null;\n this.onRemove(map);\n return this;\n }\n else {\n // If this control is separate from the zoomControl, call the\n // parent method so we don't leave behind an empty container\n return L.Control.prototype.removeFrom.call(this, map);\n }\n },\n\n addLoader: function(id) {\n this._dataLoaders[id] = true;\n if (this.options.delayIndicator && !this.delayIndicatorTimeout) {\n // If we are delaying showing the indicator and we're not\n // already waiting for that delay, set up a timeout.\n var that = this;\n this.delayIndicatorTimeout = setTimeout(function () {\n that.updateIndicator();\n that.delayIndicatorTimeout = null;\n }, this.options.delayIndicator);\n }\n else {\n // Otherwise show the indicator immediately\n this.updateIndicator();\n }\n },\n\n removeLoader: function(id) {\n delete this._dataLoaders[id];\n this.updateIndicator();\n\n // If removing this loader means we're in no danger of loading,\n // clear the timeout. This prevents old delays from instantly \n // triggering the indicator.\n if (this.options.delayIndicator && this.delayIndicatorTimeout && !this.isLoading()) {\n clearTimeout(this.delayIndicatorTimeout);\n this.delayIndicatorTimeout = null;\n }\n },\n\n updateIndicator: function() {\n if (this.isLoading()) {\n this._showIndicator();\n }\n else {\n this._hideIndicator();\n }\n },\n\n isLoading: function() {\n return this._countLoaders() > 0;\n },\n\n _countLoaders: function() {\n var size = 0, key;\n for (key in this._dataLoaders) {\n if (this._dataLoaders.hasOwnProperty(key)) size++;\n }\n return size;\n },\n\n _showIndicator: function() {\n // Show loading indicator\n L.DomUtil.addClass(this._indicator, 'is-loading');\n L.DomUtil.addClass(this._indicatorContainer, 'is-loading');\n\n // If zoomControl exists, make the zoom-out button not last\n if (!this.options.separate) {\n if (this.zoomControl instanceof L.Control.Zoom) {\n L.DomUtil.removeClass(this._getLastControlButton(), 'leaflet-bar-part-bottom');\n }\n else if (typeof L.Control.Zoomslider === 'function' && this.zoomControl instanceof L.Control.Zoomslider) {\n L.DomUtil.removeClass(this.zoomControl._ui.zoomOut, 'leaflet-bar-part-bottom');\n }\n }\n },\n\n _hideIndicator: function() {\n // Hide loading indicator\n L.DomUtil.removeClass(this._indicator, 'is-loading');\n L.DomUtil.removeClass(this._indicatorContainer, 'is-loading');\n\n // If zoomControl exists, make the zoom-out button last\n if (!this.options.separate) {\n if (this.zoomControl instanceof L.Control.Zoom) {\n L.DomUtil.addClass(this._getLastControlButton(), 'leaflet-bar-part-bottom');\n }\n else if (typeof L.Control.Zoomslider === 'function' && this.zoomControl instanceof L.Control.Zoomslider) {\n L.DomUtil.addClass(this.zoomControl._ui.zoomOut, 'leaflet-bar-part-bottom');\n }\n }\n },\n\n _getLastControlButton: function() {\n var container = this.zoomControl._container,\n index = container.children.length - 1;\n\n // Find the last visible control button that is not our loading\n // indicator\n while (index > 0) {\n var button = container.children[index];\n if (!(this._indicator === button || button.offsetWidth === 0 || button.offsetHeight === 0)) {\n break;\n }\n index--;\n }\n\n return container.children[index];\n },\n\n _handleLoading: function(e) {\n this.addLoader(this.getEventId(e));\n },\n\n _handleBaseLayerChange: function (e) {\n var that = this;\n\n // Check for a target 'layer' that contains multiple layers, such as\n // L.LayerGroup. This will happen if you have an L.LayerGroup in an\n // L.Control.Layers.\n if (e.layer && e.layer.eachLayer && typeof e.layer.eachLayer === 'function') {\n e.layer.eachLayer(function (layer) {\n that._handleBaseLayerChange({ layer: layer });\n });\n }\n else {\n // If we're changing to a canvas layer, don't handle loading\n // as canvas layers will not fire load events.\n if (!(L.TileLayer.Canvas && e.layer instanceof L.TileLayer.Canvas)) {\n that._handleLoading(e);\n }\n }\n },\n\n _handleLoad: function(e) {\n this.removeLoader(this.getEventId(e));\n },\n\n getEventId: function(e) {\n if (e.id) {\n return e.id;\n }\n else if (e.layer) {\n return e.layer._leaflet_id;\n }\n return e.target._leaflet_id;\n },\n\n _layerAdd: function(e) {\n if (!e.layer || !e.layer.on) return\n try {\n e.layer.on({\n loading: this._handleLoading,\n load: this._handleLoad\n }, this);\n }\n catch (exception) {\n console.warn('L.Control.Loading: Tried and failed to add ' +\n ' event handlers to layer', e.layer);\n console.warn('L.Control.Loading: Full details', exception);\n }\n },\n\n _layerRemove: function(e) {\n if (!e.layer || !e.layer.off) return;\n try {\n e.layer.off({\n loading: this._handleLoading,\n load: this._handleLoad\n }, this);\n }\n catch (exception) {\n console.warn('L.Control.Loading: Tried and failed to remove ' +\n 'event handlers from layer', e.layer);\n console.warn('L.Control.Loading: Full details', exception);\n }\n },\n\n _addLayerListeners: function(map) {\n // Add listeners for begin and end of load to any layers already on the \n // map\n map.eachLayer(function(layer) {\n if (!layer.on) return;\n layer.on({\n loading: this._handleLoading,\n load: this._handleLoad\n }, this);\n }, this);\n\n // When a layer is added to the map, add listeners for begin and end\n // of load\n map.on('layeradd', this._layerAdd, this);\n map.on('layerremove', this._layerRemove, this);\n },\n\n _removeLayerListeners: function(map) {\n // Remove listeners for begin and end of load from all layers\n map.eachLayer(function(layer) {\n if (!layer.off) return;\n layer.off({\n loading: this._handleLoading,\n load: this._handleLoad\n }, this);\n }, this);\n\n // Remove layeradd/layerremove listener from map\n map.off('layeradd', this._layerAdd, this);\n map.off('layerremove', this._layerRemove, this);\n },\n\n _addMapListeners: function(map) {\n // Add listeners to the map for (custom) dataloading and dataload\n // events, eg, for AJAX calls that affect the map but will not be\n // reflected in the above layer events.\n map.on({\n baselayerchange: this._handleBaseLayerChange,\n dataloading: this._handleLoading,\n dataload: this._handleLoad,\n layerremove: this._handleLoad\n }, this);\n },\n\n _removeMapListeners: function(map) {\n map.off({\n baselayerchange: this._handleBaseLayerChange,\n dataloading: this._handleLoading,\n dataload: this._handleLoad,\n layerremove: this._handleLoad\n }, this);\n }\n });\n\n L.Map.addInitHook(function () {\n if (this.options.loadingControl) {\n this.loadingControl = new L.Control.Loading();\n this.addControl(this.loadingControl);\n }\n });\n\n L.Control.loading = function(options) {\n return new L.Control.Loading(options);\n };\n }\n\n if (typeof define === 'function' && define.amd) {\n // Try to add leaflet.loading to Leaflet using AMD\n define(['leaflet'], function (L) {\n defineLeafletLoading(L);\n });\n }\n else {\n // Else use the global L\n defineLeafletLoading(L);\n }\n\n})();\n","/* \n * Leaflet Control Search v3.0.0 - 2021-08-18 \n * \n * Copyright 2021 Stefano Cudini \n * stefano.cudini@gmail.com \n * https://opengeo.tech/ \n * \n * Licensed under the MIT license. \n * \n * Demo: \n * https://opengeo.tech/maps/leaflet-search/ \n * \n * Source: \n * git@github.com:stefanocudini/leaflet-search.git \n * \n */\n/*\n\tName\t\t\t\t\tData passed\t\t\t Description\n\n\tManaged Events:\n\t search:locationfound\t{latlng, title, layer} fired after moved and show markerLocation\n\t search:expanded\t\t{}\t\t\t\t\t fired after control was expanded\n\t search:collapsed\t\t{}\t\t\t\t\t fired after control was collapsed\n \t search:cancel\t\t\t{}\t\t\t\t\t fired after cancel button clicked\n\n\tPublic methods:\n\t setLayer()\t\t\t\tL.LayerGroup() set layer search at runtime\n\t showAlert() 'Text message' show alert message\n\t searchText()\t\t\t'Text searched' search text by external code\n*/\n\n//TODO implement can do research on multiple sources layers and remote\t\t\n//TODO history: false,\t\t//show latest searches in tooltip\t\t\n//FIXME option condition problem {autoCollapse: true, markerLocation: true} not show location\n//FIXME option condition problem {autoCollapse: false }\n//\n//TODO here insert function search inputText FIRST in _recordsCache keys and if not find results.. \n// run one of callbacks search(sourceData,jsonpUrl or options.layer) and run this.showTooltip\n//\n//TODO change structure of _recordsCache\n//\tlike this: _recordsCache = {\"text-key1\": {loc:[lat,lng], ..other attributes.. }, {\"text-key2\": {loc:[lat,lng]}...}, ...}\n//\tin this mode every record can have a free structure of attributes, only 'loc' is required\n//TODO important optimization!!! always append data in this._recordsCache\n// now _recordsCache content is emptied and replaced with new data founded\n// always appending data on _recordsCache give the possibility of caching ajax, jsonp and layersearch!\n//\n//TODO here insert function search inputText FIRST in _recordsCache keys and if not find results.. \n// run one of callbacks search(sourceData,jsonpUrl or options.layer) and run this.showTooltip\n//\n//TODO change structure of _recordsCache\n//\tlike this: _recordsCache = {\"text-key1\": {loc:[lat,lng], ..other attributes.. }, {\"text-key2\": {loc:[lat,lng]}...}, ...}\n//\tin this way every record can have a free structure of attributes, only 'loc' is required\n\n(function (factory) {\n if(typeof define === 'function' && define.amd) {\n //AMD\n define(['leaflet'], factory);\n } else if(typeof module !== 'undefined') {\n // Node/CommonJS\n module.exports = factory(require('leaflet'));\n } else {\n // Browser globals\n if(typeof window.L === 'undefined')\n throw 'Leaflet must be loaded first';\n factory(window.L);\n }\n})(function (L) {\n\n\nL.Control.Search = L.Control.extend({\n\t\n\tincludes: L.version[0]==='1' ? L.Evented.prototype : L.Mixin.Events,\n\n\toptions: {\n\t\turl: '',\t\t\t\t\t\t//url for search by ajax request, ex: \"search.php?q={s}\". Can be function to returns string for dynamic parameter setting\n\t\tlayer: null,\t\t\t\t\t//layer where search markers(is a L.LayerGroup)\t\t\t\t\n\t\tsourceData: null,\t\t\t\t//function to fill _recordsCache, passed searching text by first param and callback in second\t\t\t\t\n\t\t//TODO implements uniq option 'sourceData' to recognizes source type: url,array,callback or layer\t\t\t\t\n\t\tjsonpParam: null,\t\t\t\t//jsonp param name for search by jsonp service, ex: \"callback\"\n\t\tpropertyLoc: 'loc',\t\t\t\t//field for remapping location, using array: ['latname','lonname'] for select double fields(ex. ['lat','lon'] ) support dotted format: 'prop.subprop.title'\n\t\tpropertyName: 'title',\t\t\t//property in marker.options(or feature.properties for vector layer) trough filter elements in layer,\n\t\tformatData: null,\t\t\t\t//callback for reformat all data from source to indexed data object\n\t\tfilterData: null,\t\t\t\t//callback for filtering data from text searched, params: textSearch, allRecords\n\t\tmoveToLocation: null,\t\t\t//callback run on location found, params: latlng, title, map\n\t\tbuildTip: null,\t\t\t\t\t//function to return row tip html node(or html string), receive text tooltip in first param\n\t\tcontainer: '',\t\t\t\t\t//container id to insert Search Control\t\t\n\t\tzoom: null,\t\t\t\t\t\t//default zoom level for move to location\n\t\tminLength: 1,\t\t\t\t\t//minimal text length for autocomplete\n\t\tinitial: true,\t\t\t\t\t//search elements only by initial text\n\t\tcasesensitive: false,\t\t\t//search elements in case sensitive text\n\t\tautoType: true,\t\t\t\t\t//complete input with first suggested result and select this filled-in text.\n\t\tdelayType: 400,\t\t\t\t\t//delay while typing for show tooltip\n\t\ttooltipLimit: -1,\t\t\t\t//limit max results to show in tooltip. -1 for no limit, 0 for no results\n\t\ttipAutoSubmit: true,\t\t\t//auto map panTo when click on tooltip\n\t\tfirstTipSubmit: false,\t\t\t//auto select first result con enter click\n\t\tautoResize: true,\t\t\t\t//autoresize on input change\n\t\tcollapsed: true,\t\t\t\t//collapse search control at startup\n\t\tautoCollapse: false,\t\t\t//collapse search control after submit(on button or on tips if enabled tipAutoSubmit)\n\t\tautoCollapseTime: 1200,\t\t\t//delay for autoclosing alert and collapse after blur\n\t\ttextErr: 'Location not found',\t//error message\n\t\ttextCancel: 'Cancel',\t\t //title in cancel button\t\t\n\t\ttextPlaceholder: 'Search...', //placeholder value\t\t\t\n\t\thideMarkerOnCollapse: false, //remove circle and marker on search control collapsed\t\t\n\t\tposition: 'topleft',\t\t\n\t\tmarker: {\t\t\t\t\t\t//custom L.Marker or false for hide\n\t\t\ticon: false,\t\t\t\t//custom L.Icon for maker location or false for hide\n\t\t\tanimate: true,\t\t\t\t//animate a circle over location found\n\t\t\tcircle: {\t\t\t\t\t//draw a circle in location found\n\t\t\t\tradius: 10,\n\t\t\t\tweight: 3,\n\t\t\t\tcolor: '#e03',\n\t\t\t\tstroke: true,\n\t\t\t\tfill: false\n\t\t\t}\n\t\t}\n\t},\n\n\t_getPath: function(obj, prop) {\n\t\tvar parts = prop.split('.'),\n\t\t\tlast = parts.pop(),\n\t\t\tlen = parts.length,\n\t\t\tcur = parts[0],\n\t\t\ti = 1;\n\n\t\tif(len > 0)\n\t\t\twhile((obj = obj[cur]) && i < len)\n\t\t\t\tcur = parts[i++];\n\n\t\tif(obj)\n\t\t\treturn obj[last];\n\t},\n\n\t_isObject: function(obj) {\n\t\treturn Object.prototype.toString.call(obj) === \"[object Object]\";\n\t},\n\n\tinitialize: function(options) {\n\t\tL.Util.setOptions(this, options || {});\n\t\tthis._inputMinSize = this.options.textPlaceholder ? this.options.textPlaceholder.length : 10;\n\t\tthis._layer = this.options.layer || new L.LayerGroup();\n\t\tthis._filterData = this.options.filterData || this._defaultFilterData;\n\t\tthis._formatData = this.options.formatData || this._defaultFormatData;\n\t\tthis._moveToLocation = this.options.moveToLocation || this._defaultMoveToLocation;\n\t\tthis._autoTypeTmp = this.options.autoType;\t//useful for disable autoType temporarily in delete/backspace keydown\n\t\tthis._countertips = 0;\t\t//number of tips items\n\t\tthis._recordsCache = {};\t//key,value table! to store locations! format: key,latlng\n\t\tthis._curReq = null;\n\t},\n\n\tonAdd: function (map) {\n\t\tthis._map = map;\n\t\tthis._container = L.DomUtil.create('div', 'leaflet-control-search');\n\t\tthis._input = this._createInput(this.options.textPlaceholder, 'search-input');\n\t\tthis._tooltip = this._createTooltip('search-tooltip');\n\t\tthis._cancel = this._createCancel(this.options.textCancel, 'search-cancel');\n\t\tthis._button = this._createButton(this.options.textPlaceholder, 'search-button');\n\t\tthis._alert = this._createAlert('search-alert');\n\n\t\tif(this.options.collapsed===false)\n\t\t\tthis.expand(this.options.collapsed);\n\n\t\tif(this.options.marker) {\n\t\t\t\n\t\t\tif(this.options.marker instanceof L.Marker || this.options.marker instanceof L.CircleMarker)\n\t\t\t\tthis._markerSearch = this.options.marker;\n\n\t\t\telse if(this._isObject(this.options.marker))\n\t\t\t\tthis._markerSearch = new L.Control.Search.Marker([0,0], this.options.marker);\n\n\t\t\tthis._markerSearch._isMarkerSearch = true;\n\t\t}\n\n\t\tthis.setLayer( this._layer );\n\n\t\tmap.on({\n\t\t\t// \t\t'layeradd': this._onLayerAddRemove,\n\t\t\t// \t\t'layerremove': this._onLayerAddRemove\n\t\t\t'resize': this._handleAutoresize\n\t\t\t}, this);\n\t\treturn this._container;\n\t},\n\taddTo: function (map) {\n\n\t\tif(this.options.container) {\n\t\t\tthis._container = this.onAdd(map);\n\t\t\tthis._wrapper = L.DomUtil.get(this.options.container);\n\t\t\tthis._wrapper.style.position = 'relative';\n\t\t\tthis._wrapper.appendChild(this._container);\n\t\t}\n\t\telse\n\t\t\tL.Control.prototype.addTo.call(this, map);\n\n\t\treturn this;\n\t},\n\n\tonRemove: function(map) {\n\t\tthis._recordsCache = {};\n\t\t// map.off({\n\t\t// \t\t'layeradd': this._onLayerAddRemove,\n\t\t// \t\t'layerremove': this._onLayerAddRemove\n\t\t// \t}, this);\n\t\tmap.off({\n\t\t\t// \t\t'layeradd': this._onLayerAddRemove,\n\t\t\t// \t\t'layerremove': this._onLayerAddRemove\n\t\t\t'resize': this._handleAutoresize\n\t\t\t}, this);\n\t},\n\n\t// _onLayerAddRemove: function(e) {\n\t// \t//without this, run setLayer also for each Markers!! to optimize!\n\t// \tif(e.layer instanceof L.LayerGroup)\n\t// \t\tif( L.stamp(e.layer) != L.stamp(this._layer) )\n\t// \t\t\tthis.setLayer(e.layer);\n\t// },\n\n\tsetLayer: function(layer) {\t//set search layer at runtime\n\t\t//this.options.layer = layer; //setting this, run only this._recordsFromLayer()\n\t\tthis._layer = layer;\n\t\tthis._layer.addTo(this._map);\n\t\treturn this;\n\t},\n\t\n\tshowAlert: function(text) {\n\t\tvar self = this;\n\t\ttext = text || this.options.textErr;\n\t\tthis._alert.style.display = 'block';\n\t\tthis._alert.innerHTML = text;\n\t\tclearTimeout(this.timerAlert);\n\t\t\n\t\tthis.timerAlert = setTimeout(function() {\n\t\t\tself.hideAlert();\n\t\t},this.options.autoCollapseTime);\n\t\treturn this;\n\t},\n\t\n\thideAlert: function() {\n\t\tthis._alert.style.display = 'none';\n\t\treturn this;\n\t},\n\t\t\n\tcancel: function() {\n\t\tthis._input.value = '';\n\t\tthis._handleKeypress({ keyCode: 8 });//simulate backspace keypress\n\t\tthis._input.size = this._inputMinSize;\n\t\tthis._input.focus();\n\t\tthis._cancel.style.display = 'none';\n\t\tthis._hideTooltip();\n\t\tthis.fire('search:cancel');\n\t\treturn this;\n\t},\n\t\n\texpand: function(toggle) {\n\t\ttoggle = typeof toggle === 'boolean' ? toggle : true;\n\t\tthis._input.style.display = 'block';\n\t\tL.DomUtil.addClass(this._container, 'search-exp');\n\t\tif ( toggle !== false ) {\n\t\t\tthis._input.focus();\n\t\t\tthis._map.on('dragstart click', this.collapse, this);\n\t\t}\n\t\tthis.fire('search:expanded');\n\t\treturn this;\t\n\t},\n\n\tcollapse: function() {\n\t\tthis._hideTooltip();\n\t\tthis.cancel();\n\t\tthis._alert.style.display = 'none';\n\t\tthis._input.blur();\n\t\tif(this.options.collapsed)\n\t\t{\n\t\t\tthis._input.style.display = 'none';\n\t\t\tthis._cancel.style.display = 'none';\t\t\t\n\t\t\tL.DomUtil.removeClass(this._container, 'search-exp');\t\t\n\t\t\tif (this.options.hideMarkerOnCollapse) {\n\t\t\t\tthis._map.removeLayer(this._markerSearch);\n\t\t\t}\n\t\t\tthis._map.off('dragstart click', this.collapse, this);\n\t\t}\n\t\tthis.fire('search:collapsed');\n\t\treturn this;\n\t},\n\t\n\tcollapseDelayed: function() {\t//collapse after delay, used on_input blur\n\t\tvar self = this;\n\t\tif (!this.options.autoCollapse) return this;\n\t\tclearTimeout(this.timerCollapse);\n\t\tthis.timerCollapse = setTimeout(function() {\n\t\t\tself.collapse();\n\t\t}, this.options.autoCollapseTime);\n\t\treturn this;\t\t\n\t},\n\n\tcollapseDelayedStop: function() {\n\t\tclearTimeout(this.timerCollapse);\n\t\treturn this;\t\t\n\t},\n\n\t////start DOM creations\n\t_createAlert: function(className) {\n\t\tvar alert = L.DomUtil.create('div', className, this._container);\n\t\talert.style.display = 'none';\n\n\t\tL.DomEvent\n\t\t\t.on(alert, 'click', L.DomEvent.stop, this)\n\t\t\t.on(alert, 'click', this.hideAlert, this);\n\n\t\treturn alert;\n\t},\n\n\t_createInput: function (text, className) {\n\t\tvar self = this;\n\t\tvar label = L.DomUtil.create('label', className, this._container);\n\t\tvar input = L.DomUtil.create('input', className, this._container);\n\t\tinput.type = 'text';\n\t\tinput.size = this._inputMinSize;\n\t\tinput.value = '';\n\t\tinput.autocomplete = 'off';\n\t\tinput.autocorrect = 'off';\n\t\tinput.autocapitalize = 'off';\n\t\tinput.placeholder = text;\n\t\tinput.style.display = 'none';\n\t\tinput.role = 'search';\n\t\tinput.id = input.role + input.type + input.size;\n\t\t\n\t\tlabel.htmlFor = input.id;\n\t\tlabel.style.display = 'none';\n\t\tlabel.value = text;\n\n\t\tL.DomEvent\n\t\t\t.disableClickPropagation(input)\n\t\t\t.on(input, 'keyup', this._handleKeypress, this)\n\t\t\t.on(input, 'paste', function(e) {\n\t\t\t\tsetTimeout(function(e) {\n\t\t\t\t\tself._handleKeypress(e);\n\t\t\t\t},10,e);\n\t\t\t}, this)\n\t\t\t.on(input, 'blur', this.collapseDelayed, this)\n\t\t\t.on(input, 'focus', this.collapseDelayedStop, this);\n\t\t\n\t\treturn input;\n\t},\n\n\t_createCancel: function (title, className) {\n\t\tvar cancel = L.DomUtil.create('a', className, this._container);\n\t\tcancel.href = '#';\n\t\tcancel.title = title;\n\t\tcancel.style.display = 'none';\n\t\tcancel.innerHTML = \"<span>&otimes;</span>\";//imageless(see css)\n\n\t\tL.DomEvent\n\t\t\t.on(cancel, 'click', L.DomEvent.stop, this)\n\t\t\t.on(cancel, 'click', this.cancel, this);\n\n\t\treturn cancel;\n\t},\n\t\n\t_createButton: function (title, className) {\n\t\tvar button = L.DomUtil.create('a', className, this._container);\n\t\tbutton.href = '#';\n\t\tbutton.title = title;\n\n\t\tL.DomEvent\n\t\t\t.on(button, 'click', L.DomEvent.stop, this)\n\t\t\t.on(button, 'click', this._handleSubmit, this)\t\t\t\n\t\t\t.on(button, 'focus', this.collapseDelayedStop, this)\n\t\t\t.on(button, 'blur', this.collapseDelayed, this);\n\n\t\treturn button;\n\t},\n\n\t_createTooltip: function(className) {\n\t\tvar self = this;\t\t\n\t\tvar tool = L.DomUtil.create('ul', className, this._container);\n\t\ttool.style.display = 'none';\n\t\tL.DomEvent\n\t\t\t.disableClickPropagation(tool)\n\t\t\t.on(tool, 'blur', this.collapseDelayed, this)\n\t\t\t.on(tool, 'mousewheel', function(e) {\n\t\t\t\tself.collapseDelayedStop();\n\t\t\t\tL.DomEvent.stopPropagation(e);//disable zoom map\n\t\t\t}, this)\n\t\t\t.on(tool, 'mouseover', function(e) {\n\t\t\t\tself.collapseDelayedStop();\n\t\t\t}, this);\n\t\treturn tool;\n\t},\n\n\t_createTip: function(text, val) {//val is object in recordCache, usually is Latlng\n\t\tvar tip;\n\t\t\n\t\tif(this.options.buildTip)\n\t\t{\n\t\t\ttip = this.options.buildTip.call(this, text, val); //custom tip node or html string\n\t\t\tif(typeof tip === 'string')\n\t\t\t{\n\t\t\t\tvar tmpNode = L.DomUtil.create('div');\n\t\t\t\ttmpNode.innerHTML = tip;\n\t\t\t\ttip = tmpNode.firstChild;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttip = L.DomUtil.create('li', '');\n\t\t\ttip.innerHTML = text;\n\t\t}\n\t\t\n\t\tL.DomUtil.addClass(tip, 'search-tip');\n\t\ttip._text = text; //value replaced in this._input and used by _autoType\n\n\t\tif(this.options.tipAutoSubmit)\n\t\t\tL.DomEvent\n\t\t\t\t.disableClickPropagation(tip)\t\t\n\t\t\t\t.on(tip, 'click', L.DomEvent.stop, this)\n\t\t\t\t.on(tip, 'click', function(e) {\n\t\t\t\t\tthis._input.value = text;\n\t\t\t\t\tthis._handleAutoresize();\n\t\t\t\t\tthis._input.focus();\n\t\t\t\t\tthis._hideTooltip();\t\n\t\t\t\t\tthis._handleSubmit();\n\t\t\t\t}, this);\n\n\t\treturn tip;\n\t},\n\n\t//////end DOM creations\n\n\t_getUrl: function(text) {\n\t\treturn (typeof this.options.url === 'function') ? this.options.url(text) : this.options.url;\n\t},\n\n\t_defaultFilterData: function(text, records) {\n\t\n\t\tvar I, icase, regSearch, frecords = {};\n\n\t\ttext = text.replace(/[.*+?^${}()|[\\]\\\\]/g, ''); //sanitize remove all special characters\n\t\tif(text==='')\n\t\t\treturn [];\n\n\t\tI = this.options.initial ? '^' : ''; //search only initial text\n\t\ticase = !this.options.casesensitive ? 'i' : undefined;\n\n\t\tregSearch = new RegExp(I + text, icase);\n\n\t\t//TODO use .filter or .map\n\t\tfor(var key in records) {\n\t\t\tif( regSearch.test(key) )\n\t\t\t\tfrecords[key]= records[key];\n\t\t}\n\t\t\n\t\treturn frecords;\n\t},\n\n\tshowTooltip: function(records) {\n\t\t\n\n\t\tthis._countertips = 0;\n\t\tthis._tooltip.innerHTML = '';\n\t\tthis._tooltip.currentSelection = -1; //inizialized for _handleArrowSelect()\n\n\t\tif(this.options.tooltipLimit)\n\t\t{\n\t\t\tfor(var key in records)//fill tooltip\n\t\t\t{\n\t\t\t\tif(this._countertips === this.options.tooltipLimit)\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tthis._countertips++;\n\n\t\t\t\tthis._tooltip.appendChild( this._createTip(key, records[key]) );\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this._countertips > 0)\n\t\t{\n\t\t\tthis._tooltip.style.display = 'block';\n\t\t\t\n\t\t\tif(this._autoTypeTmp)\n\t\t\t\tthis._autoType();\n\n\t\t\tthis._autoTypeTmp = this.options.autoType;//reset default value\n\t\t}\n\t\telse\n\t\t\tthis._hideTooltip();\n\n\t\tthis._tooltip.scrollTop = 0;\n\n\t\treturn this._countertips;\n\t},\n\n\t_hideTooltip: function() {\n\t\tthis._tooltip.style.display = 'none';\n\t\tthis._tooltip.innerHTML = '';\n\t\treturn 0;\n\t},\n\n\t_defaultFormatData: function(json) {\t//default callback for format data to indexed data\n\t\tvar self = this,\n\t\t\tpropName = this.options.propertyName,\n\t\t\tpropLoc = this.options.propertyLoc,\n\t\t\ti, jsonret = {};\n\n\t\tif( L.Util.isArray(propLoc) )\n\t\t\tfor(i in json)\n\t\t\t\tjsonret[ self._getPath(json[i],propName) ]= L.latLng( json[i][ propLoc[0] ], json[i][ propLoc[1] ] );\n\t\telse\n\t\t\tfor(i in json)\n\t\t\t\tjsonret[ self._getPath(json[i],propName) ]= L.latLng( self._getPath(json[i],propLoc) );\n\t\t//TODO throw new Error(\"propertyName '\"+propName+\"' not found in JSON data\");\n\t\treturn jsonret;\n\t},\n\n\t_recordsFromJsonp: function(text, callAfter) { //extract searched records from remote jsonp service\n\t\tL.Control.Search.callJsonp = callAfter;\n\t\tvar script = L.DomUtil.create('script','leaflet-search-jsonp', document.getElementsByTagName('body')[0] ),\t\t\t\n\t\t\turl = L.Util.template(this._getUrl(text)+'&'+this.options.jsonpParam+'=L.Control.Search.callJsonp', {s: text}); //parsing url\n\t\t\t//rnd = '&_='+Math.floor(Math.random()*10000);\n\t\t\t//TODO add rnd param or randomize callback name! in recordsFromJsonp\n\t\tscript.type = 'text/javascript';\n\t\tscript.src = url;\n\t\treturn { abort: function() { script.parentNode.removeChild(script); } };\n\t},\n\n\t_recordsFromAjax: function(text, callAfter) {\t//Ajax request\n\t\tif (window.XMLHttpRequest === undefined) {\n\t\t\twindow.XMLHttpRequest = function() {\n\t\t\t\ttry { return new ActiveXObject(\"Microsoft.XMLHTTP.6.0\"); }\n\t\t\t\tcatch (e1) {\n\t\t\t\t\ttry { return new ActiveXObject(\"Microsoft.XMLHTTP.3.0\"); }\n\t\t\t\t\tcatch (e2) { throw new Error(\"XMLHttpRequest is not supported\"); }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tvar IE8or9 = ( L.Browser.ie && !window.atob && document.querySelector ),\n\t\t\trequest = IE8or9 ? new XDomainRequest() : new XMLHttpRequest(),\n\t\t\turl = L.Util.template(this._getUrl(text), {s: text});\n\n\t\t//rnd = '&_='+Math.floor(Math.random()*10000);\n\t\t//TODO add rnd param or randomize callback name! in recordsFromAjax\t\t\t\n\t\t\n\t\trequest.open(\"GET\", url);\n\t\t\n\n\t\trequest.onload = function() {\n\t\t\tcallAfter( JSON.parse(request.responseText) );\n\t\t};\n\t\trequest.onreadystatechange = function() {\n\t\t if(request.readyState === 4 && request.status === 200) {\n\t\t \tthis.onload();\n\t\t }\n\t\t};\n\n\t\trequest.send();\n\t\treturn request; \n\t},\n\n _searchInLayer: function(layer, retRecords, propName) {\n var self = this, loc;\n\n if(layer instanceof L.Control.Search.Marker) return;\n\n if(layer instanceof L.Marker || layer instanceof L.CircleMarker)\n {\n if(self._getPath(layer.options,propName))\n {\n loc = layer.getLatLng();\n loc.layer = layer;\n retRecords[ self._getPath(layer.options,propName) ] = loc;\n }\n else if(self._getPath(layer.feature.properties,propName))\n {\n loc = layer.getLatLng();\n loc.layer = layer;\n retRecords[ self._getPath(layer.feature.properties,propName) ] = loc;\n }\n else {\n //throw new Error(\"propertyName '\"+propName+\"' not found in marker\"); \n \n }\n }\n else if(layer instanceof L.Path || layer instanceof L.Polyline || layer instanceof L.Polygon)\n {\n if(self._getPath(layer.options,propName))\n {\n loc = layer.getBounds().getCenter();\n loc.layer = layer;\n retRecords[ self._getPath(layer.options,propName) ] = loc;\n }\n else if(self._getPath(layer.feature.properties,propName))\n {\n loc = layer.getBounds().getCenter();\n loc.layer = layer;\n retRecords[ self._getPath(layer.feature.properties,propName) ] = loc;\n }\n else {\n //throw new Error(\"propertyName '\"+propName+\"' not found in shape\"); \n \n }\n }\n else if(layer.hasOwnProperty('feature'))//GeoJSON\n {\n if(layer.feature.properties.hasOwnProperty(propName))\n {\n if(layer.getLatLng && typeof layer.getLatLng === 'function') {\n loc = layer.getLatLng();\n loc.layer = layer;\t\t\t\n retRecords[ layer.feature.properties[propName] ] = loc;\n } else if(layer.getBounds && typeof layer.getBounds === 'function') {\n loc = layer.getBounds().getCenter();\n loc.layer = layer;\t\t\t\n retRecords[ layer.feature.properties[propName] ] = loc;\n } else {\n \n }\n }\n else {\n //throw new Error(\"propertyName '\"+propName+\"' not found in feature\");\n \n }\n }\n else if(layer instanceof L.LayerGroup)\n {\n layer.eachLayer(function (layer) {\n self._searchInLayer(layer, retRecords, propName);\n });\n }\n },\n\t\n\t_recordsFromLayer: function() {\t//return table: key,value from layer\n\t\tvar self = this,\n\t\t\tretRecords = {},\n\t\t\tpropName = this.options.propertyName;\n\t\t\n\t\tthis._layer.eachLayer(function (layer) {\n\t\t\tself._searchInLayer(layer, retRecords, propName);\n\t\t});\n\t\t\n\t\treturn retRecords;\n\t},\n\t\n\t_autoType: function() {\n\t\t\n\t\t//TODO implements autype without selection(useful for mobile device)\n\t\t\n\t\tvar start = this._input.value.length,\n\t\t\tfirstRecord = this._tooltip.firstChild ? this._tooltip.firstChild._text : '',\n\t\t\tend = firstRecord.length;\n\n\t\tif (firstRecord.indexOf(this._input.value) === 0) { // If prefix match\n\t\t\tthis._input.value = firstRecord;\n\t\t\tthis._handleAutoresize();\n\n\t\t\tif (this._input.createTextRange) {\n\t\t\t\tvar selRange = this._input.createTextRange();\n\t\t\t\tselRange.collapse(true);\n\t\t\t\tselRange.moveStart('character', start);\n\t\t\t\tselRange.moveEnd('character', end);\n\t\t\t\tselRange.select();\n\t\t\t}\n\t\t\telse if(this._input.setSelectionRange) {\n\t\t\t\tthis._input.setSelectionRange(start, end);\n\t\t\t}\n\t\t\telse if(this._input.selectionStart) {\n\t\t\t\tthis._input.selectionStart = start;\n\t\t\t\tthis._input.selectionEnd = end;\n\t\t\t}\n\t\t}\n\t},\n\n\t_hideAutoType: function() {\t// deselect text:\n\n\t\tvar sel;\n\t\tif ((sel = this._input.selection) && sel.empty) {\n\t\t\tsel.empty();\n\t\t}\n\t\telse if (this._input.createTextRange) {\n\t\t\tsel = this._input.createTextRange();\n\t\t\tsel.collapse(true);\n\t\t\tvar end = this._input.value.length;\n\t\t\tsel.moveStart('character', end);\n\t\t\tsel.moveEnd('character', end);\n\t\t\tsel.select();\n\t\t}\n\t\telse {\n\t\t\tif (this._input.getSelection) {\n\t\t\t\tthis._input.getSelection().removeAllRanges();\n\t\t\t}\n\t\t\tthis._input.selectionStart = this._input.selectionEnd;\n\t\t}\n\t},\n\t\n\t_handleKeypress: function (e) {\t//run _input keyup event\n\t\tvar self = this;\n\n\t\tswitch(e.keyCode)\n\t\t{\n\t\t\tcase 27://Esc\n\t\t\t\tthis.collapse();\n\t\t\tbreak;\n\t\t\tcase 13://Enter\n\t\t\t\tif(this._countertips == 1 || (this.options.firstTipSubmit && this._countertips > 0)) {\n \t\t\tif(this._tooltip.currentSelection == -1) {\n\t\t\t\t\t\tthis._handleArrowSelect(1);\n \t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._handleSubmit();\t//do search\n\t\t\tbreak;\n\t\t\tcase 38://Up\n\t\t\t\tthis._handleArrowSelect(-1);\n\t\t\tbreak;\n\t\t\tcase 40://Down\n\t\t\t\tthis._handleArrowSelect(1);\n\t\t\tbreak;\n\t\t\tcase 8://Backspace\n\t\t\tcase 45://Insert\n\t\t\tcase 46://Delete\n\t\t\t\tthis._autoTypeTmp = false;//disable temporarily autoType\n\t\t\tbreak;\n\t\t\tcase 37://Left\n\t\t\tcase 39://Right\n\t\t\tcase 16://Shift\n\t\t\tcase 17://Ctrl\n\t\t\tcase 35://End\n\t\t\tcase 36://Home\n\t\t\tbreak;\n\t\t\tdefault://All keys\n\t\t\t\tif(this._input.value.length)\n\t\t\t\t\tthis._cancel.style.display = 'block';\n\t\t\t\telse\n\t\t\t\t\tthis._cancel.style.display = 'none';\n\n\t\t\t\tif(this._input.value.length >= this.options.minLength)\n\t\t\t\t{\n\t\t\t\t\tclearTimeout(this.timerKeypress);\t//cancel last search request while type in\t\t\t\t\n\t\t\t\t\tthis.timerKeypress = setTimeout(function() {\t//delay before request, for limit jsonp/ajax request\n\n\t\t\t\t\t\tself._fillRecordsCache();\n\t\t\t\t\t\n\t\t\t\t\t}, this.options.delayType);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tthis._hideTooltip();\n\t\t}\n\n\t\tthis._handleAutoresize();\n\t},\n\n\tsearchText: function(text) {\n\t\tvar code = text.charCodeAt(text.length);\n\n\t\tthis._input.value = text;\n\n\t\tthis._input.style.display = 'block';\n\t\tL.DomUtil.addClass(this._container, 'search-exp');\n\n\t\tthis._autoTypeTmp = false;\n\n\t\tthis._handleKeypress({keyCode: code});\n\t},\n\t\n\t_fillRecordsCache: function() {\n\n\t\tvar self = this,\n\t\t\tinputText = this._input.value, records;\n\n\t\tif(this._curReq && this._curReq.abort)\n\t\t\tthis._curReq.abort();\n\t\t//abort previous requests\n\n\t\tL.DomUtil.addClass(this._container, 'search-load');\t\n\n\t\tif(this.options.layer)\n\t\t{\n\t\t\t//TODO _recordsFromLayer must return array of objects, formatted from _formatData\n\t\t\tthis._recordsCache = this._recordsFromLayer();\n\t\t\t\n\t\t\trecords = this._filterData( this._input.value, this._recordsCache );\n\n\t\t\tthis.showTooltip( records );\n\n\t\t\tL.DomUtil.removeClass(this._container, 'search-load');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(this.options.sourceData)\n\t\t\t\tthis._retrieveData = this.options.sourceData;\n\n\t\t\telse if(this.options.url)\t//jsonp or ajax\n\t\t\t\tthis._retrieveData = this.options.jsonpParam ? this._recordsFromJsonp : this._recordsFromAjax;\n\n\t\t\tthis._curReq = this._retrieveData.call(this, inputText, function(data) {\n\t\t\t\t\n\t\t\t\tself._recordsCache = self._formatData.call(self, data);\n\n\t\t\t\t//TODO refact!\n\t\t\t\tif(self.options.sourceData)\n\t\t\t\t\trecords = self._filterData( self._input.value, self._recordsCache );\n\t\t\t\telse\n\t\t\t\t\trecords = self._recordsCache;\n\n\t\t\t\tself.showTooltip( records );\n \n\t\t\t\tL.DomUtil.removeClass(self._container, 'search-load');\n\t\t\t});\n\t\t}\n\t},\n\t\n\t_handleAutoresize: function() {\n\t var maxWidth;\n\n\t\tif (this._input.style.maxWidth !== this._map._container.offsetWidth) {\n\t\t\tmaxWidth = this._map._container.clientWidth;\n\n\t\t\t// other side margin + padding + width border + width search-button + width search-cancel\n\t\t\tmaxWidth -= 10 + 20 + 1 + 30 + 22; \n\n\t\t\tthis._input.style.maxWidth = maxWidth.toString() + 'px';\n\t\t}\n\n\t\tif (this.options.autoResize && (this._container.offsetWidth + 20 < this._map._container.offsetWidth)) {\n\t\t\tthis._input.size = this._input.value.length < this._inputMinSize ? this._inputMinSize : this._input.value.length;\n\t\t}\n\t},\n\n\t_handleArrowSelect: function(velocity) {\n\t\n\t\tvar searchTips = this._tooltip.hasChildNodes() ? this._tooltip.childNodes : [];\n\t\t\t\n\t\tfor (var i=0; i<searchTips.length; i++)\n\t\t\tL.DomUtil.removeClass(searchTips[i], 'search-tip-select');\n\t\t\n\t\tif ((velocity == 1 ) && (this._tooltip.currentSelection >= (searchTips.length - 1))) {// If at end of list.\n\t\t\tL.DomUtil.addClass(searchTips[this._tooltip.currentSelection], 'search-tip-select');\n\t\t}\n\t\telse if ((velocity == -1 ) && (this._tooltip.currentSelection <= 0)) { // Going back up to the search box.\n\t\t\tthis._tooltip.currentSelection = -1;\n\t\t}\n\t\telse if (this._tooltip.style.display != 'none') {\n\t\t\tthis._tooltip.currentSelection += velocity;\n\t\t\t\n\t\t\tL.DomUtil.addClass(searchTips[this._tooltip.currentSelection], 'search-tip-select');\n\t\t\t\n\t\t\tthis._input.value = searchTips[this._tooltip.currentSelection]._text;\n\n\t\t\t// scroll:\n\t\t\tvar tipOffsetTop = searchTips[this._tooltip.currentSelection].offsetTop;\n\t\t\t\n\t\t\tif (tipOffsetTop + searchTips[this._tooltip.currentSelection].clientHeight >= this._tooltip.scrollTop + this._tooltip.clientHeight) {\n\t\t\t\tthis._tooltip.scrollTop = tipOffsetTop - this._tooltip.clientHeight + searchTips[this._tooltip.currentSelection].clientHeight;\n\t\t\t}\n\t\t\telse if (tipOffsetTop <= this._tooltip.scrollTop) {\n\t\t\t\tthis._tooltip.scrollTop = tipOffsetTop;\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleSubmit: function() {\t//button and tooltip click and enter submit\n\n\t\tthis._hideAutoType();\n\t\t\n\t\tthis.hideAlert();\n\t\tthis._hideTooltip();\n\n\t\tif(this._input.style.display == 'none')\t//on first click show _input only\n\t\t\tthis.expand();\n\t\telse\n\t\t{\n\t\t\tif(this._input.value === '')\t//hide _input only\n\t\t\t\tthis.collapse();\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar loc = this._getLocation(this._input.value);\n\t\t\t\t\n\t\t\t\tif(loc===false)\n\t\t\t\t\tthis.showAlert();\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.showLocation(loc, this._input.value);\n\t\t\t\t\tthis.fire('search:locationfound', {\n\t\t\t\t\t\t\tlatlng: loc,\n\t\t\t\t\t\t\ttext: this._input.value,\n\t\t\t\t\t\t\tlayer: loc.layer ? loc.layer : null\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_getLocation: function(key) {\t//extract latlng from _recordsCache\n\n\t\tif( this._recordsCache.hasOwnProperty(key) )\n\t\t\treturn this._recordsCache[key];//then after use .loc attribute\n\t\telse\n\t\t\treturn false;\n\t},\n\n\t_defaultMoveToLocation: function(latlng, title, map) {\n\t\tif(this.options.zoom)\n \t\t\tthis._map.setView(latlng, this.options.zoom);\n \t\telse\n\t\t\tthis._map.panTo(latlng);\n\t},\n\n\tshowLocation: function(latlng, title) {\t//set location on map from _recordsCache\n\t\tvar self = this;\n\n\t\tself._map.once('moveend zoomend', function(e) {\n\n\t\t\tif(self._markerSearch) {\n\t\t\t\tself._markerSearch.addTo(self._map).setLatLng(latlng);\n\t\t\t}\n\t\t\t\n\t\t});\n\n\t\tself._moveToLocation(latlng, title, self._map);\n\t\t//FIXME autoCollapse option hide self._markerSearch before visualized!!\n\t\tif(self.options.autoCollapse)\n\t\t\tself.collapse();\n\n\t\treturn self;\n\t}\n});\n\nL.Control.Search.Marker = L.Marker.extend({\n\n\tincludes: L.version[0]==='1' ? L.Evented.prototype : L.Mixin.Events,\n\t\n\toptions: {\n\t\ticon: new L.Icon.Default(),\n\t\tanimate: true,\n\t\tcircle: {\n\t\t\tradius: 10,\n\t\t\tweight: 3,\n\t\t\tcolor: '#e03',\n\t\t\tstroke: true,\n\t\t\tfill: false\n\t\t}\n\t},\n\t\n\tinitialize: function (latlng, options) {\n\t\tL.setOptions(this, options);\n\n\t\tif(options.icon === true)\n\t\t\toptions.icon = new L.Icon.Default();\n\n\t\tL.Marker.prototype.initialize.call(this, latlng, options);\n\t\t\n\t\tif( L.Control.Search.prototype._isObject(this.options.circle) )\n\t\t\tthis._circleLoc = new L.CircleMarker(latlng, this.options.circle);\n\t},\n\n\tonAdd: function (map) {\n\t\tL.Marker.prototype.onAdd.call(this, map);\n\t\tif(this._circleLoc) {\n\t\t\tmap.addLayer(this._circleLoc);\n\t\t\tif(this.options.animate)\n\t\t\t\tthis.animate();\n\t\t}\n\t},\n\n\tonRemove: function (map) {\n\t\tL.Marker.prototype.onRemove.call(this, map);\n\t\tif(this._circleLoc)\n\t\t\tmap.removeLayer(this._circleLoc);\n\t},\n\t\n\tsetLatLng: function (latlng) {\n\t\tL.Marker.prototype.setLatLng.call(this, latlng);\n\t\tif(this._circleLoc)\n\t\t\tthis._circleLoc.setLatLng(latlng);\n\t\treturn this;\n\t},\n\t\n\t_initIcon: function () {\n\t\tif(this.options.icon)\n\t\t\tL.Marker.prototype._initIcon.call(this);\n\t},\n\n\t_removeIcon: function () {\n\t\tif(this.options.icon)\n\t\t\tL.Marker.prototype._removeIcon.call(this);\n\t},\n\n\tanimate: function() {\n\t//TODO refact animate() more smooth! like this: http://goo.gl/DDlRs\n\t\tif(this._circleLoc)\n\t\t{\n\t\t\tvar circle = this._circleLoc,\n\t\t\t\ttInt = 200,\t//time interval\n\t\t\t\tss = 5,\t//frames\n\t\t\t\tmr = parseInt(circle._radius/ss),\n\t\t\t\toldrad = this.options.circle.radius,\n\t\t\t\tnewrad = circle._radius * 2,\n\t\t\t\tacc = 0;\n\n\t\t\tcircle._timerAnimLoc = setInterval(function() {\n\t\t\t\tacc += 0.5;\n\t\t\t\tmr += acc;\t//adding acceleration\n\t\t\t\tnewrad -= mr;\n\t\t\t\t\n\t\t\t\tcircle.setRadius(newrad);\n\n\t\t\t\tif(newrad<oldrad)\n\t\t\t\t{\n\t\t\t\t\tclearInterval(circle._timerAnimLoc);\n\t\t\t\t\tcircle.setRadius(oldrad);//reset radius\n\t\t\t\t\t//if(typeof afterAnimCall == 'function')\n\t\t\t\t\t\t//afterAnimCall();\n\t\t\t\t\t\t//TODO use create event 'animateEnd' in L.Control.Search.Marker \n\t\t\t\t}\n\t\t\t}, tInt);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n});\n\nL.Map.addInitHook(function () {\n if (this.options.searchControl) {\n this.searchControl = L.control.search(this.options.searchControl);\n this.addControl(this.searchControl);\n }\n});\n\nL.control.search = function (options) {\n return new L.Control.Search(options);\n};\n\nreturn L.Control.Search;\n\n});\n\n\n","'use strict';\n\n(function(L) {\n if (typeof L === 'undefined') {\n throw new Error('Leaflet must be included first');\n }\n\n L.Control.Resizer = L.Control.extend({\n options: {\n direction: 'e', // valid values e, s, se\n onlyOnHover: false,\n updateAlways: true,\n pan:false,\n },\n\n _END: {\n mousedown: 'mouseup',\n touchstart: 'touchend',\n pointerdown: 'touchend',\n MSPointerDown: 'touchend'\n },\n\n _MOVE: {\n mousedown: 'mousemove',\n touchstart: 'touchmove',\n pointerdown: 'touchmove',\n MSPointerDown: 'touchmove'\n },\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n this._initialOffsetX = 0;\n this._initialOffsetY = 0;\n this.options.position = 'leaflet-control-resizer-corner-' + this.options.direction;\n this.enable();\n },\n\n enable: function() {\n this._enabled = true;\n return this;\n },\n\n disable: function() {\n this._enabled = false;\n return this;\n },\n\n onAdd: function (map) {\n this._prepareLocation(map);\n\n var className = 'leaflet-control-resizer';\n var classNameTransp = className + (this.options.onlyOnHover ? '-transparent' : '-opaque');\n var classNameLoc = className + '-' + this.options.direction;\n this._container = L.DomUtil.create('div',\n className + ' ' + classNameTransp + ' ' + classNameLoc,\n map.getContainer());\n var container = this._container;\n\n L.DomEvent.on(container, 'mousedown mouseup click touchstart drag', L.DomEvent.stopPropagation);\n\n /* IE11 seems to process events in the wrong order, so the only way to prevent map movement while dragging the\n * slider is to disable map dragging when the cursor enters the slider (by the time the mousedown event fires\n * it's too late becuase the event seems to go to the map first, which results in any subsequent motion\n * resulting in map movement even after map.dragging.disable() is called.\n */\n /*\n L.DomEvent.on(container, 'mouseenter', function (e) { map.dragging.disable(); });\n L.DomEvent.on(container, 'mouseleave', function (e) { map.dragging.enable(); });\n */\n\n L.DomEvent.on(container, 'mousedown touchstart', this._initResize, this);\n\n return this._container;\n },\n\n onRemove: function(map) {\n L.DomEvent.off(this._container, 'mousedown touchstart', this._initResize, this);\n L.DomEvent.off(this._container, 'mousedown mouseup click touchstart drag', L.DomEvent.stopPropagation);\n },\n\n fakeHover: function(ms) {\n var className = 'leaflet-control-resizer-transparent-fakedhover';\n var cont = this._container;\n L.DomUtil.addClass(cont, className);\n setTimeout(function() { L.DomUtil.removeClass(cont, className); }, ms | 1000);\n },\n\n _prepareLocation: function(map) {\n var corners = map._controlCorners;\n var l = 'leaflet-control-resizer-corner-' + this.options.direction;\n var container = map._controlContainer;\n\n corners[l] = L.DomUtil.create('div', l, container);\n },\n\n _initResize: function (e) {\n if (e._simulated || !this._enabled) { return; }\n\n if (this._started) return;\n this._started = true;\n this._moved = false;\n\n var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e)\n\n L.DomUtil.disableImageDrag();\n L.DomUtil.disableTextSelection();\n\n this.fire('down', e);\n\n var mapCont = this._map.getContainer();\n this._initialOffsetX = mapCont.offsetWidth + mapCont.offsetLeft - first.clientX;\n this._initialOffsetY = mapCont.offsetHeight + mapCont.offsetTop - first.clientY;\n\n L.DomEvent.on(document, this._END[e.type], this._stopResizing, this);\n L.DomEvent.on(this._container, this._END[e.type], this._stopResizing, this);\n\n L.DomEvent.on(document, this._MOVE[e.type], this._duringResizing, this);\n },\n\n _duringResizing: function (e) {\n if (e._simulated) { return; }\n\n var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e)\n\n L.DomEvent.preventDefault(e);\n\n if (!this._moved) {\n this.fire('dragstart', e);\n }\n this.fire('predrag', e);\n\n var mapCont = this._map.getContainer();\n if (this.options.direction.indexOf('e') >=0) {\n mapCont.style.width = (first.clientX - mapCont.offsetLeft + this._initialOffsetX) + 'px';\n this._moved = true;\n }\n if (this.options.direction.indexOf('s') >=0) {\n mapCont.style.height = (first.clientY - mapCont.offsetTop + this._initialOffsetY) + 'px';\n this._moved = true;\n }\n this._moved = true;\n\n if (this.options.updateAlways) {\n this._map.invalidateSize({ pan: this.options.pan });\n }\n\n this.fire('drag', e);\n },\n\n _stopResizing: function(e) {\n if (e._simulated) { return; }\n\n for (var i in this._MOVE)\n {\n L.DomEvent.off(document, this._MOVE[i], this._duringResizing, this);\n\n L.DomEvent.off(document, this._END[i], this._stopResizing, this);\n L.DomEvent.off(this._container, this._END[i], this._stopResizing, this);\n }\n\n this._map.invalidateSize({ pan: this.options.pan });\n\n L.DomUtil.enableImageDrag();\n L.DomUtil.enableTextSelection();\n this._started = false;\n this.fire('dragend', e);\n }\n\n });\n\n L.Control.Resizer.include(L.Evented.prototype);\n\n L.control.resizer = function (options) {\n return new L.Control.Resizer(options);\n };\n})(L);\n","/*\n* L.VisualClick\n* Description: A plugin that adds visual feedback when user clicks/taps the map. Useful for when you have a delay on the clickEvents for async fetching of data, or implmentation of Leaflet.singleclick\n* Example: L.visualClick({map: leafletMap}); //Just works\n* Author: Dag Jomar Mersland (twitter: @dagjomar)\n*/\n\n\nL.Map.VisualClick = L.Handler.extend({\n\n _makeVisualIcon: function(){\n\n var touchMode = this._map.options.visualClickMode === 'touch' ? true : false;\n\n return L.divIcon({\n className: \"leaflet-visualclick-icon\" + (touchMode ? '-touch' : ''), // See L.VisualClick.css\n iconSize: [0, 0],\n clickable: false\n });\n },\n\n _visualIcon: null,\n\n _onClick: function(e) {\n\n var map = this._map;\n\n var latlng = e.latlng;\n var marker = L.marker(latlng, {\n pane: this._map.options.visualClickPane,\n icon: this._visualIcon,\n interactive: false\n }).addTo(map);\n\n window.setTimeout(function(){\n if(map){\n map.removeLayer(marker);\n }\n }.bind(this), map.options.visualClick.removeTimeout || 450); // Should somewhat match the css animation to prevent loops\n\n return true;\n },\n\n addHooks: function () {\n if(this._visualIcon === null){\n this._visualIcon = this._makeVisualIcon();\n }\n\n if (this._map.options.visualClickPane === 'ie10-visual-click-pane') {\n this._map.createPane('ie10-visual-click-pane');\n }\n\n this._map.on(this._map.options.visualClickEvents, this._onClick, this);\n },\n\n removeHooks: function () {\n this._map.off(this._map.options.visualClickEvents, this._onClick, this);\n },\n\n});\n\n\nL.Map.mergeOptions({\n visualClick: L.Browser.any3d ? true : false, //Can be true, desktop, touch, false. Not straight forward to use L.Browser.touch flag because true on IE10\n visualClickMode: L.Browser.touch && L.Browser.mobile ? 'touch' : 'desktop', //Not straight forward to use only L.Browser.touch flag because true on IE10 - so this is slightly better\n visualClickEvents: 'click contextmenu', //Standard leaflety way of defining which events to hook on to\n visualClickPane: (L.Browser.ie && document.documentMode === 10) ?\n 'ie10-visual-click-pane' :\n 'shadowPane'\t// Map pane where the pulse markers will be showh\n});\n\nL.Map.addInitHook('addHandler', 'visualClick', L.Map.VisualClick);\n\n","import { version } from '../package.json';\nimport 'leaflet-i18n';\nimport 'leaflet-rotate';\nimport 'leaflet.locatecontrol';\nimport 'leaflet.fullscreen';\nimport 'leaflet-pegman';\nimport '@raruto/leaflet-gesture-handling';\nimport '@raruto/leaflet-edit-osm';\nimport 'leaflet-control-layers-inline';\nimport 'leaflet-minimap';\nimport 'leaflet-loading';\nimport 'leaflet-search';\nimport 'leaflet-easyprint';\nimport 'leaflet.control.resizer';\nimport 'leaflet.visualclick';\n\n/* Temporary fix for empty values evaluated as false (leaflet-i18n v0.3.1) */\n(function(){\n\tlet proto = L.i18n.bind({});\n\tL.i18n = L._ = (string, data) => {\n\t\tif (L.locale && L.locales[L.locale] && L.locales[L.locale][string] == \"\") {\n\t\t\tL.locales[L.locale][string] = \"\\u200B\";\n\t\t}\n\t\treturn proto.call(null, string, data);\n\t};\n})();\n\n(function() {\n\n\tconst currentScript = document.currentScript;\n\tconst currentVersion = version.split(\"+\")[0].trim();\n\n\tlet lazyLoader = {\n\n\t\tbaseURL: 'https://unpkg.com/',\n\n\t\t// Save a reference to any lazy loaded scripts to prevent multiple loading (multiple-maps)\n\t\tscripts: {},\n\n\t\t// Sequentially download multiple scripts.\n\t\tloadSyncScripts: function(urls) {\n\t\t\treturn urls.reduce((prev, curr) => prev.then(() => lazyLoader.loadAsyncScripts(curr)), Promise.resolve());\n\t\t},\n\n\t\t// Parallel download multiple scripts.\n\t\tloadAsyncScripts: function(urls) {\n\t\t\treturn Promise.all(urls.map((url) => lazyLoader.loadScript(url)));\n\t\t},\n\n\t\t// Dynamically load a single script.\n\t\tloadScript: function(url) {\n\t\t\tlazyLoader.scripts[url] =\n\t\t\t\tlazyLoader.scripts[url]\n\t\t\t\t? lazyLoader.scripts[url]\n\t\t\t\t: new Promise((resolve, reject) => {\n\n\t\t\t\t\tlet type = url.split('.').pop().split('?')[0];\n\t\t\t\t\tlet tag = type == 'css' ? 'link' : 'script';\n\t\t\t\t\tlet script = document.createElement(tag);\n\t\t\t\t\tlet head = document.head;\n\t\t\t\t\tlet root_script = (head.contains(currentScript) ? currentScript : head.lastChild) || head;\n\t\t\t\t\tlet prev_tag = lazyLoader[\"prev_\" + tag] || (tag == 'script' && lazyLoader.prev_link ? lazyLoader.prev_link : root_script);\n\t\t\t\t\tlet base_url = (url.indexOf(\".\") === 0 || url.indexOf(\"/\") === 0 || url.indexOf('http://') === 0 || url.indexOf('https://') === 0) ? '' : lazyLoader.baseURL;\n\n\t\t\t\t\tif (type == 'css') {\n\t\t\t\t\t\tscript.rel = 'stylesheet';\n\t\t\t\t\t}\n\n\t\t\t\t\tscript.addEventListener('load', resolve, { once: true });\n\t\t\t\t\tscript.setAttribute(type == 'css' ? 'href' : 'src', base_url + url);\n\n\t\t\t\t\tif (prev_tag.parentNode && prev_tag.nextSibling)\n\t\t\t\t\t\tprev_tag.parentNode.insertBefore(script, prev_tag.nextSibling);\n\t\t\t\t\telse\n\t\t\t\t\t\thead.appendChild(script);\n\n\t\t\t\t\tlazyLoader[\"prev_\" + tag] = script;\n\n\t\t\t\t});\n\t\t\treturn lazyLoader.scripts[url];\n\t\t},\n\n\t};\n\n\t// You can ovveride them by passing one of the following to leaflet map constructor.\n\tlet default_options = {\n\t\tmapTypes: {\n\t\t\tatlas: {\n\t\t\t\tname: 'Atlas',\n\t\t\t\turl: 'https://{s}.tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png',\n\t\t\t\toptions: {\n\t\t\t\t\tmaxZoom: 24,\n\t\t\t\t\tmaxNativeZoom: 22,\n\t\t\t\t\tattribution: 'Map data: &copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | Map style: &copy; <a href=\"http://www.thunderforest.com/\">Thunderforest</a>',\n\t\t\t\t\t// apikey: '<your apikey>',\n\t\t\t\t},\n\t\t\t},\n\t\t\tstreets: {\n\t\t\t\tname: 'Streets',\n\t\t\t\turl: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n\t\t\t\toptions: {\n\t\t\t\t\tmaxZoom: 24,\n\t\t\t\t\tmaxNativeZoom: 19,\n\t\t\t\t\tattribution: 'Map data: &copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a>',\n\t\t\t\t},\n\t\t\t},\n\t\t\tcycle: {\n\t\t\t\tname: 'Cycle',\n\t\t\t\turl: 'https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png',\n\t\t\t\toptions: {\n\t\t\t\t\tmaxZoom: 24,\n\t\t\t\t\tmaxNativeZoom: 22,\n\t\t\t\t\tattribution: 'Map data: &copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | Map style: &copy; <a href=\"http://www.thunderforest.com/\">Thunderforest</a>',\n\t\t\t\t\t// apikey: '<your apikey>',\n\t\t\t\t},\n\t\t\t},\n\t\t\tterrain: {\n\t\t\t\tname: 'Terrain',\n\t\t\t\turl: 'https://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png',\n\t\t\t\toptions: {\n\t\t\t\t\tmaxZoom: 24,\n\t\t\t\t\tmaxNativeZoom: 22,\n\t\t\t\t\tattribution: 'Map data: &copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | Map style: &copy; <a href=\"http://www.thunderforest.com/\">Thunderforest</a>',\n\t\t\t\t\t// apikey: '<your apikey>',\n\t\t\t\t},\n\t\t\t},\n\t\t\tsatellite: {\n\t\t\t\tname: 'Satellite',\n\t\t\t\turl: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\n\t\t\t\toptions: {\n\t\t\t\t\tmaxZoom: 24,\n\t\t\t\t\tmaxNativeZoom: 18,\n\t\t\t\t\tattribution: 'Map data: &copy; <a href=\"http://www.esri.com/\">Esri</a> &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'\n\t\t\t\t},\n\t\t\t},\n\t\t\ttopo: {\n\t\t\t\tname: 'Topo',\n\t\t\t\turl: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png',\n\t\t\t\toptions: {\n\t\t\t\t\tmaxZoom: 24,\n\t\t\t\t\tmaxNativeZoom: 17,\n\t\t\t\t\tattribution: 'Map data: &copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a>, <a href=\"http://viewfinderpanoramas.org\">SRTM</a> | Map style: &copy; <a href=\"https://opentopomap.org\">OpenTopoMap</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tzoomControl: {\n\t\t\tposition: 'bottomright'\n\t\t},\n\t\trotateControl: {\n\t\t\tposition: 'bottomright',\n\t\t},\n\t\tscaleControl: {\n\t\t\twidth: 200,\n\t\t\tposition: 'bottomright',\n\t\t\timperial: false,\n\t\t},\n\t\tpegmanControl: {\n\t\t\tposition: 'bottomright',\n\t\t\ttheme: \"leaflet-pegman-v3-small\",\n\t\t},\n\t\tlocateControl: {\n\t\t\tposition: \"bottomright\"\n\t\t},\n\t\tfullscreenControl: {\n\t\t\tposition: 'topright',\n\t\t\ttitle: 'Enter Fullscreen',\n\t\t\ttitleCancel: 'Exit Fullscreen',\n\t\t\tforceSeparateButton: true,\n\t\t},\n\t\tlayersControl: {\n\t\t\tinline: true,\n\t\t\tposition: 'topleft'\n\t\t},\n\t\tminimapControl: {\n\t\t\tposition: 'bottomleft',\n\t\t\ttoggleDisplay: false,\n\t\t\ttoggleMapTypes: true, // Automatically switch between \"satellite\" and \"roads\" layers.\n\t\t\twidth: 75,\n\t\t\theight: 75,\n\t\t\taimingRectOptions: {\n\t\t\t\tcolor: '#000000',\n\t\t\t\tweight: 1,\n\t\t\t\topacity: 0,\n\t\t\t\tfillOpacity: 0,\n\t\t\t},\n\t\t\tshadowRectOptions: {\n\t\t\t\tcolor: '#000000',\n\t\t\t\tweight: 1,\n\t\t\t\topacity: 0,\n\t\t\t\tfillOpacity: 0,\n\t\t\t},\n\t\t\tmapOptions: {\n\t\t\t\tmapTypeId: 'satellite',\n\t\t\t\tgestureHandling: false,\n\t\t\t\tsearchControl: false,\n\t\t\t\tloadingControl: false,\n\t\t\t\t_isMiniMap: true,\n\t\t\t\trotateControl: false\n\t\t\t}\n\t\t},\n\t\teditInOSMControl: {\n\t\t\tposition: \"bottomright\"\n\t\t},\n\t\tloadingControl: {\n\t\t\tseparate: true,\n\t\t\tposition: 'bottomright'\n\t\t},\n\t\tsearchControl: {\n\t\t\turl: 'https://nominatim.openstreetmap.org/search?format=json&accept-language={querylang}&q={s}',\n\t\t\tquerylang: 'en-US',\n\t\t\tdetectUserLang: true,\n\t\t\tjsonpParam: 'json_callback',\n\t\t\tpropertyName: 'display_name',\n\t\t\tpropertyLoc: ['lat', 'lon'],\n\t\t\tmarkerLocation: true,\n\t\t\tautoType: false,\n\t\t\tautoCollapse: true,\n\t\t\tfirstTipSubmit: true,\n\t\t\tminLength: 1,\n\t\t\tzoom: 10,\n\t\t\tposition: \"bottomright\",\n\t\t},\n\t\tprintControl: {\n\t\t\tposition: 'bottomright',\n\t\t\thideControlContainer: true,\n\t\t\texportOnly: true,\n\t\t\tsizeModes: [ /*'Current',*/ 'A4Portrait', 'A4Landscape'],\n\t\t\t//tileWait: 1200,\n\t\t},\n\t\tresizerControl: {\n\t\t\tdirection: 's'\n\t\t},\n\t\tdisableDefaultUI: false,\n\t\t// TODO: pluginsBaseURL: 'https://unpkg.com/',\n\t\tplugins: [\n\t\t\t// \"@raruto/leaflet-elevation@0.4.5/leaflet-elevation.css\",\n\t\t\t// \"@raruto/leaflet-elevation@0.4.5/leaflet-elevation.js\",\n\t\t\t// \"leaflet-kmz@0.3.1/dist/leaflet-kmz.js\",\n\t\t\t// \"leaflet-transparency@0.0.5/leaflet-transparency.min.js\"\n\t\t],\n\t\t_isMiniMap: false, // used to prevent infinite loops when loading the minimap control.\n\t};\n\n\t// See \"default_options\" for a complete list of allowed values.\n\tL.Map.mergeOptions({\n\t\tmapTypeId: 'streets',\n\t\tmapTypeIds: ['streets', 'terrain', 'satellite', 'topo'],\n\t\tmapTypes: undefined,\n\t\tgestureHandling: true,\n\t\tvisualClick: true,\n\t\tzoomControl: true,\n\t\tscaleControl: true,\n\t\tpegmanControl: true,\n\t\tlocateControl: true,\n\t\tfullscreenControl: true,\n\t\tlayersControl: true,\n\t\tminimapControl: true,\n\t\teditInOSMControl: true,\n\t\tloadingControl: true,\n\t\tsearchControl: true,\n\t\tprintControl: false,\n\t\tresizerControl: false,\n\t\tdisableDefaultUI: false,\n\t\tincludeLeafletCSS: true,\n\t\tincludeLeafletUICSS: true,\n\t\tapiKeys: undefined, // eg. { thunderforest: \"\", google: \"\", ... }\n\t\t_isMiniMap: false, // used to prevent infinite loops when loading the minimap control.\n\t});\n\n\t// Customize leaflet Map default aspect.\n\tL.Map.addInitHook(function() {\n\t\tdisableDefaultUI.call(this);\n\t\tif (this.options._isMiniMap) {\n\t\t\treturn; // prevent infinite loops when loading the minimap control.\n\t\t}\n\t\tif (!this.options.disableDefaultUI) {\n\t\t\tsetDefaultOptions.call(this);\n\t\t\tinitMap.call(this);\n\t\t}\n\t});\n\n\t// Disable leaflet map default controls.\n\tfunction disableDefaultUI() {\n\t\tif (this.zoomControl) this.zoomControl.remove();\n\t\tif (this.rotateControl) this.rotateControl.remove();\n\t\tif (this.fullscreenControl && this.options.fullscreenControl && !this.options.zoomControl) this.fullscreenControl.remove();\n\t\tif (this.searchControl && this.options.searchControl) this.searchControl.remove();\n\t\tif (this.attributionControl) this.attributionControl.remove();\n\t}\n\n\t// Deep merge \"default_options\" and do some sanity check.\n\tfunction setDefaultOptions() {\n\t\tlet opts = this.options;\n\n\t\t// Recursive merge leaflet map options.\n\t\tfor (let i in default_options) {\n\t\t\tif (opts[i] === true || typeof opts[i] === \"undefined\") {\n\t\t\t\topts[i] = default_options[i];\n\t\t\t} else if (typeof this.options[i] === \"object\" && opts[i] instanceof Array === false) {\n\t\t\t\topts[i] = deepMerge(default_options[i], opts[i]);\n\t\t\t}\n\t\t}\n\n\t\t// Set deafult tile providers Api Keys (if any).\n\t\tif (opts.apiKeys) {\n\t\t\tif (opts.apiKeys.thunderforest) {\n\t\t\t\topts.mapTypes.atlas.options.apikey = opts.apiKeys.thunderforest;\n\t\t\t\topts.mapTypes.terrain.options.apikey = opts.apiKeys.thunderforest;\n\t\t\t\topts.mapTypes.cycle.options.apikey = opts.apiKeys.thunderforest;\n\t\t\t}\n\t\t\tif (opts.apiKeys.google) {\n\t\t\t\topts.pegmanControl.apiKey = opts.apiKeys.google;\n\t\t\t}\n\t\t}\n\t\t// Append Api Keys (query string).\n\t\tfor (let k of ['atlas', 'terrain', 'cycle']) {\n\t\t\tif (opts.mapTypes[k].options.apikey && opts.mapTypes[k].url.indexOf('apikey=') === -1) {\n\t\t\t\topts.mapTypes[k].url += (opts.mapTypes[k].url.indexOf('?') === -1 ? '?' : '&') + 'apikey={apikey}';\n\t\t\t}\n\t\t}\n\t\t// Fix default mapTypeId if missing in mapTypeIds array.\n\t\tif (opts.mapTypeIds.includes(opts.mapTypeId) === false && opts.mapTypeIds.length > 0) {\n\t\t\topts.mapTypeId = opts.mapTypeIds[0];\n\t\t}\n\t\t// Auto detect user \"querylang\" value when using search control.\n\t\tif (opts.searchControl && opts.searchControl.detectUserLang) {\n\t\t\topts.searchControl.querylang = window.navigator.languages ? window.navigator.languages[0] : (window.navigator.userLanguage || window.navigator.language);\n\t\t}\n\t\t// Replace default \"querylang\" value when using search control.\n\t\tif (opts.searchControl && opts.searchControl.querylang) {\n\t\t\topts.searchControl.url = opts.searchControl.url.replace('{querylang}', opts.searchControl.querylang);\n\t\t}\n\t\t// Avoid missing center/zoom values when using minimap control.\n\t\tif (opts.minimapControl && !opts.center && !opts.zoom) {\n\t\t\tthis.setView([0, 0], 0);\n\t\t}\n\t}\n\t// Initialize default leaflet map controls and layers.\n\tfunction initMap() {\n\t\tlet controls = {},\n\t\t\tlayers = {},\n\t\t\tbaseMaps = {},\n\t\t\topts = this.options;\n\n\t\t// Gesture Handling.\n\t\tif (opts.gestureHandling) {\n\t\t\tthis.gestureHandling.enable();\n\t\t}\n\n\t\t// Load all user selected layers.\n\t\tfor (let i in opts.mapTypeIds) {\n\t\t\tlet id = opts.mapTypeIds[i];\n\t\t\tif (opts.mapTypes[id]) {\n\t\t\t\tbaseMaps[opts.mapTypes[id].name] = layers[id] = new L.TileLayer(opts.mapTypes[id].url, opts.mapTypes[id].options);\n\t\t\t\tlayers[id].mapTypeId = id; // save mapTypeId for easy access.\n\t\t\t}\n\t\t}\n\n\t\t// Keep a reference of previous mapTypeId\n\t\tthis._lastMapTypeId = opts.mapTypeId;\n\t\tthis._prevMapTypeId = opts.mapTypeId;\n\t\tthis.on('baselayerchange', function(e) {\n\t\t\tif (e && e.layer && e.layer.mapTypeId) {\n\t\t\t\tthis._prevMapTypeId = this._lastMapTypeId;\n\t\t\t\tthis._lastMapTypeId = e.layer.mapTypeId;\n\t\t\t}\n\t\t});\n\n\t\t// Keep default baselayers to the lower level\n\t\tthis.on('baselayerchange', function(e) {\n\t\t\tif (e && e.layer && e.layer.mapTypeId && e.layer.bringToBack) e.layer.bringToBack();\n\t\t});\n\n\t\t// Layers Control.\n\t\tif (opts.layersControl) {\n\t\t\tcontrols.layers = new L.Control.Layers(baseMaps, null, opts.layersControl);\n\t\t\tthis.on('zoomend', autoToggleSatelliteLayer, this);\n\t\t}\n\n\t\t// Attribution Control.\n\t\tif (opts.attributionControl && this.attributionControl) {\n\t\t\tthis.attributionControl.addTo(this);\n\t\t\tcontrols.attribution = this.attributionControl;\n\t\t\tthis.on('baselayerchange', L.bind(updateLeafletAttribution, this, this.attributionControl.options.prefix));\n\t\t}\n\n\t\t// Edit in OSM link.\n\t\tif (opts.editInOSMControl) {\n\t\t\tcontrols.editInOSM = new L.Control.EditInOSM(opts.editInOSMControl);\n\t\t}\n\n\t\t// Scale Control.\n\t\tif (opts.scaleControl) {\n\t\t\tcontrols.scale = new L.Control.Scale(opts.scaleControl);\n\t\t}\n\n\t\t// Zoom Control.\n\t\tif (opts.zoomControl && this.zoomControl) {\n\t\t\tthis.zoomControl.setPosition(opts.zoomControl.position);\n\t\t\tthis.zoomControl.addTo(this);\n\t\t\tcontrols.zoom = this.zoomControl;\n\t\t}\n\n\t\t// Rotate Control.\n\t\tif (opts.rotateControl && this.rotateControl) {\n\t\t\tthis.rotateControl.setPosition(opts.rotateControl.position);\n\t\t\tthis.rotateControl.addTo(this);\n\t\t\tcontrols.rotate = this.rotateControl;\n\t\t}\n\n\t\t// Pegman Control.\n\t\tif (opts.pegmanControl) {\n\t\t\tcontrols.pegman = new L.Control.Pegman(opts.pegmanControl);\n\t\t}\n\n\t\t// Locate Control.\n\t\tif (opts.locateControl) {\n\t\t\tcontrols.locate = new L.Control.Locate(opts.locateControl);\n\t\t}\n\n\t\t// Search Control.\n\t\tif (opts.searchControl) {\n\t\t\tcontrols.search = this.searchControl = new L.Control.Search(opts.searchControl);\n\t\t}\n\n\t\t// Print Control.\n\t\tif (opts.printControl) {\n\t\t\tcontrols.print = new L.Control.EasyPrint(opts.printControl);\n\t\t}\n\n\t\t// Loading Control.\n\t\tif (opts.loadingControl) {\n\t\t\tcontrols.loading = new L.Control.Loading(opts.loadingControl);\n\t\t}\n\n\t\t// Fullscreen Control.\n\t\tif (opts.fullscreenControl) {\n\t\t\tcontrols.fullscreen = this.fullscreenControl = new L.Control.FullScreen(opts.fullscreenControl);\n\t\t}\n\n\t\t// Minimap Control.\n\t\tif (opts.minimapControl) {\n\t\t\tlet miniMapTypeId = opts.minimapControl.mapOptions.mapTypeId;\n\t\t\tlet miniMapLayer = opts.mapTypes[miniMapTypeId];\n\t\t\tif (miniMapLayer) {\n\t\t\t\tminiMapLayer = new L.TileLayer(miniMapLayer.url, miniMapLayer.options);\n\t\t\t\tminiMapLayer.mapTypeId = miniMapTypeId; // save mapTypeId for easy access.\n\t\t\t\tcontrols.minimap = new L.Control.MiniMap(miniMapLayer, opts.minimapControl);\n\t\t\t\tcontrols.minimap._mainMapBaseLayers = baseMaps; // save baseMaps for easy access.\n\t\t\t}\n\t\t}\n\n\t\t// Resizer Control.\n\t\tif (opts.resizerControl) {\n\t\t\tcontrols.resizer = new L.Control.Resizer(opts.resizerControl);\n\t\t}\n\n\t\t// Load all user selected controls.\n\t\tfor (let i in controls) {\n\t\t\tif (controls[i].addTo) {\n\t\t\t\tcontrols[i].addTo(this);\n\t\t\t}\n\t\t}\n\t\tthis.controls = controls; // save controls for easy access.\n\n\t\t// Fire idle event.\n\t\tthis.whenReady(function() {\n\t\t\tthis.fire('idle');\n\t\t\t// Prevent adding multiple default base layers when using multiple maps.\n\t\t\tif (opts.mapTypeId) {\n\t\t\t\tlet baseLayer = opts.mapTypes[opts.mapTypeId];\n\t\t\t\tif (baseLayer && baseMaps[baseLayer.name]) {\n\t\t\t\t\topts.layers = opts.layers.filter(item => item._leaflet_id !== baseMaps[baseLayer.name]._leaflet_id);\n\t\t\t\t\tlet layer = baseMaps[baseLayer.name];\n\t\t\t\t\tif (layer.setZIndex) layer.setZIndex(0);\n\t\t\t\t\telse if (layer.bringToBack) layer.bringToBack();\n\t\t\t\t}\n\t\t\t}\n\t\t}, this);\n\n\t\t// Set default base layer.\n\t\tif (opts.mapTypeId) {\n\t\t\tlet baseLayer = opts.mapTypes[opts.mapTypeId];\n\t\t\tif (baseLayer && baseMaps[baseLayer.name]) {\n\t\t\t\topts.layers.unshift(baseMaps[baseLayer.name]); // Add to the array of layers that will be automatically loaded within the map initially.\n\t\t\t}\n\t\t}\n\n\t\t// Load custom plugins.\n\t\tif (opts.plugins) {\n\t\t\tlet core_plugins = [];\n\n\t\t\tif (opts.includeLeafletUICSS) {\n\t\t\t\tcore_plugins.unshift(\"leaflet-ui@\" + currentVersion + \"/dist/leaflet-ui.css\");\n\t\t\t}\n\t\t\tif (!window.L) {\n\t\t\t\tcore_plugins.unshift(\"leaflet@1.3.4/dist/leaflet.css\");\n\t\t\t\tcore_plugins.unshift(\"leaflet@1.3.4/dist/leaflet.js\");\n\t\t\t} else if (opts.includeLeafletCSS && L.version) {\n\t\t\t\tlet core_css_url = \"leaflet@\" + L.version + \"/dist/leaflet.css\";\n\t\t\t\tlet core_css_exists = false;\n\t\t\t\tfor (let i = 0; i < document.styleSheets.length; i++) {\n\t\t\t\t\tif (document.styleSheets[i].href && document.styleSheets[i].href.indexOf(core_css_url) > 0) {\n\t\t\t\t\t\tcore_css_exists = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!core_css_exists) {\n\t\t\t\t\tcore_plugins.unshift(core_css_url);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Lazy load initHooks\n\t\t\tif (this._initHooks) {\n\t\t\t\tlet initHooks = this._initHooks.length;\n\t\t\t\tthis.once('plugins_loaded', function() {\n\t\t\t\t\tif (initHooks < this._initHooks.length)\n\t\t\t\t\t\tfor (let i = initHooks, len = this._initHooks.length; i < len; i++) {\n\t\t\t\t\t\t\tthis._initHooks[i].call(this);\n\t\t\t\t\t\t}\n\t\t\t\t\tthis.fire('initHooks_called');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlazyLoader.loadSyncScripts([core_plugins, opts.plugins]).then(() => this.fire('plugins_loaded'));\n\t\t}\n\t}\n\n\t// Conditionally show leaflet attribution when showing GoogleMutant tiles\n\tfunction updateLeafletAttribution(defaultAttribution, e) {\n\t\tif (e && e.layer) {\n\t\t\tthis.attributionControl.setPrefix((L.GridLayer.GoogleMutant && e.layer instanceof L.GridLayer.GoogleMutant) ? false : defaultAttribution);\n\t\t}\n\t}\n\n\t// Automatically show satellite layer at higher zoom levels\n\tfunction autoToggleSatelliteLayer(e) {\n\t\tlet zoom = this.getZoom();\n\t\tlet control = this.controls.layers;\n\t\tlet inputs = control._layerControlInputs;\n\n\t\tfor (let i in inputs) {\n\t\t\tlet input = inputs[i];\n\t\t\tlet layer = control._getLayer(input.layerId).layer;\n\t\t\tlet mapTypeId = layer.mapTypeId;\n\t\t\tif (mapTypeId == \"satellite\") {\n\t\t\t\tif (zoom >= 18 && !layer._map && !layer._isAutoToggled) {\n\t\t\t\t\tlayer._isAutoToggled = true;\n\t\t\t\t\tinput.click();\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (zoom < 18 && layer._map && layer._isAutoToggled) {\n\t\t\t\t\tfor (let j in inputs) {\n\t\t\t\t\t\tlet input = inputs[j];\n\t\t\t\t\t\tlet layer = control._getLayer(input.layerId).layer;\n\t\t\t\t\t\tlet mapTypeId = layer.mapTypeId;\n\t\t\t\t\t\tif (mapTypeId == this._prevMapTypeId) {\n\t\t\t\t\t\t\tinput.click();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlayer._isAutoToggled = false;\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (zoom < 18 && !layer._map && layer._isAutoToggled) {\n\t\t\t\t\tlayer._isAutoToggled = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tlet minimapProto = L.Control.MiniMap.prototype;\n\tlet onAddMinimapProto = minimapProto.onAdd;\n\n\t// Customize MiniMap default core behavior.\n\tL.Control.MiniMap.include({\n\t\tonAdd: function(map) {\n\t\t\tlet container = onAddMinimapProto.call(this, map);\n\n\t\t\t// Disable mouse handlers\n\t\t\tif (this._miniMap) {\n\t\t\t\tthis._miniMap.doubleClickZoom.disable();\n\t\t\t\tthis._miniMap.touchZoom.disable();\n\t\t\t\tthis._miniMap.scrollWheelZoom.disable();\n\t\t\t}\n\t\t\t// Automatically switch between \"satellite\" and \"roads\" layers.\n\t\t\tif (this.options.toggleMapTypes) {\n\t\t\t\tL.DomEvent.on(map, 'baselayerchange', this._handleMainMapTypeChange, this);\n\t\t\t\tL.DomEvent.on(this._container, 'click', this._handleMiniMapTypeToggle, this);\n\t\t\t}\n\t\t\treturn container;\n\t\t},\n\t\t_handleMainMapTypeChange: function(e) {\n\t\t\tif (!this._handligMiniMapTypeToggle) {\n\t\t\t\tif (e && e.layer) {\n\t\t\t\t\tlet minimap = this,\n\t\t\t\t\t\tmainmap = this._mainMap,\n\t\t\t\t\t\tminiMapTypeId = minimap._layer.mapTypeId,\n\t\t\t\t\t\tmainMapTypeId = e.layer.mapTypeId;\n\n\n\t\t\t\t\tif (mainmap.options.mapTypeIds.length > 0 && inArray(mainmap.options.mapTypeIds, mainMapTypeId)) {\n\t\t\t\t\t\tif (mainMapTypeId != miniMapTypeId) {\n\t\t\t\t\t\t\tminimap._lastMapTypeId = mainMapTypeId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mapTypeId,\n\t\t\t\t\t\t\tminiMapLayer;\n\n\t\t\t\t\t\tif (mainMapTypeId == \"satellite\" && miniMapTypeId == \"satellite\") {\n\t\t\t\t\t\t\tmapTypeId = minimap._lastMapTypeId;\n\t\t\t\t\t\t} else if (mainMapTypeId != \"satellite\" && miniMapTypeId != \"satellite\") {\n\t\t\t\t\t\t\tmapTypeId = \"satellite\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminiMapLayer = mainmap.options.mapTypes[mapTypeId];\n\n\t\t\t\t\t\tif (miniMapLayer) {\n\t\t\t\t\t\t\tminiMapLayer = new L.TileLayer(miniMapLayer.url, miniMapLayer.options);\n\t\t\t\t\t\t\tminiMapLayer.mapTypeId = mapTypeId; // save mapTypeId for easy access.\n\t\t\t\t\t\t\tminimap._lastMapTypeId = miniMapTypeId;\n\t\t\t\t\t\t\tminimap.changeLayer(miniMapLayer);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_handleMiniMapTypeToggle: function() {\n\t\t\tthis._handligMiniMapTypeToggle = true;\n\t\t\tif (this._layer && this._mainMapBaseLayers) {\n\t\t\t\tlet minimap = this,\n\t\t\t\t\tmainmap = this._mainMap,\n\t\t\t\t\tminiMapTypeId = this._layer.mapTypeId,\n\t\t\t\t\tmainMapTypeId;\n\t\t\t\tfor (let i in this._mainMapBaseLayers) {\n\t\t\t\t\tif (mainmap.hasLayer(this._mainMapBaseLayers[i]) && miniMapTypeId != this._mainMapBaseLayers[i].mapTypeId) {\n\t\t\t\t\t\tmainMapTypeId = this._mainMapBaseLayers[i].mapTypeId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (mainmap.options.mapTypeIds.length > 0 && inArray(mainmap.options.mapTypeIds, miniMapTypeId)) {\n\t\t\t\t\tlet mapTypeId,\n\t\t\t\t\t\tminiMapLayer;\n\n\t\t\t\t\tmapTypeId = minimap._lastMapTypeId || mainmap.options.mapTypeId;\n\n\t\t\t\t\tif (minimap._lastMapTypeId != \"satellite\" && miniMapTypeId != \"satellite\") {\n\t\t\t\t\t\tmapTypeId = \"satellite\";\n\t\t\t\t\t}\n\n\t\t\t\t\tminiMapLayer = mainmap.options.mapTypes[mapTypeId];\n\n\t\t\t\t\tif (miniMapLayer) {\n\t\t\t\t\t\tminiMapLayer = new L.TileLayer(miniMapLayer.url, miniMapLayer.options);\n\t\t\t\t\t\tminiMapLayer.mapTypeId = mapTypeId; // save mapTypeId for easy access.\n\t\t\t\t\t\tminimap._lastMapTypeId = miniMapTypeId;\n\n\t\t\t\t\t\tminimap.changeLayer(miniMapLayer);\n\n\t\t\t\t\t\tfor (let i in this._mainMapBaseLayers) {\n\t\t\t\t\t\t\tthis._mainMapBaseLayers[i].remove();\n\t\t\t\t\t\t\tif (minimap._lastMapTypeId == this._mainMapBaseLayers[i].mapTypeId) {\n\t\t\t\t\t\t\t\tthis._mainMapBaseLayers[i].addTo(mainmap);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._handligMiniMapTypeToggle = false;\n\t\t\t}\n\t\t},\n\t});\n\n\t// Check if an array contains any element from another one.\n\tfunction inArray(array, items) {\n\t\treturn array.some(r => items.includes(r));\n\t}\n\n\t// Simple object check.\n\tfunction isObject(item) {\n\t\treturn (item && typeof item === 'object' && !Array.isArray(item));\n\t}\n\n\t// Deep merge two objects (note: circular references not supported).\n\tfunction deepMerge(target, ...sources) {\n\t\tif (!sources.length) return target;\n\t\tconst source = sources.shift();\n\t\tif (isObject(target) && isObject(source)) {\n\t\t\tfor (const key in source) {\n\t\t\t\tif (isObject(source[key])) {\n\t\t\t\t\tif (!target[key]) Object.assign(target, {\n\t\t\t\t\t\t[key]: {}\n\t\t\t\t\t});\n\t\t\t\t\tdeepMerge(target[key], source[key]);\n\t\t\t\t} else {\n\t\t\t\t\tObject.assign(target, {\n\t\t\t\t\t\t[key]: source[key]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn deepMerge(target, ...sources);\n\t}\n\n})();\n"],"names":["factory","window","define","amd","exports","module","require","L","locales","locale","registerLocale","code","Util","extend","setLocale","i18n","_","string","data","template","err","domUtilProto","DomUtil","setTransform","el","offset","scale","bearing","pivot","pos","Point","_round","call","this","rotateFrom","style","TRANSFORM","x","y","setPosition","point","_leaflet_pos","Browser","any3d","undefined","left","top","DEG_TO_RAD","Math","PI","RAD_TO_DEG","Draggable","include","updateMapBearing","mapBearing","_mapBearing","prototype","rotate","theta","sinTheta","sin","cosTheta","cos","cx","cy","divOverlayProto","DivOverlay","getEvents","_updatePosition","_map","latLngToLayerPoint","_latlng","options","anchor","_getAnchor","_zoomAnimated","_rotate","rotatedPointToMapPanePoint","_container","add","bottom","_containerBottom","_containerLeft","round","_containerWidth","popupProto","Popup","_animateZoom","e","_latLngToNewLayerPoint","zoom","center","_adjustPan","autoPan","_panAnim","_inProgress","map","marginBottom","parseInt","getStyle","containerHeight","offsetHeight","containerWidth","layerPos","_add","getPosition","containerPos","_getMapPanePos","padding","autoPanPadding","paddingTL","autoPanPaddingTopLeft","paddingBR","autoPanPaddingBottomRight","size","getSize","dx","dy","fire","panBy","tooltipProto","Tooltip","_setPosition","Icon","markerDragProto","_setIconStyles","img","name","sizeOption","shadowAnchor","iconAnchor","divideBy","className","marginLeft","marginTop","width","height","MarkerDrag","_onDragStart","_marker","_draggable","_bearing","_onDrag","marker","rotated_marker","rotation","rotateWithView","shadow","_shadow","iconPos","_icon","mapPanePointToRotatedPoint","latlng","layerPointToLatLng","oldLatLng","_oldLatLng","setLatLng","_onDragEnd","update","markerProto","Marker","mergeOptions","onAdd","on","_initInteraction","ret","dragging","enabled","Object","getPrototypeOf","bind","disable","enable","_setPos","_zIndex","zIndexOffset","_resetZIndex","_updateZIndex","zIndex","setRotation","gridLayerProto","GridLayer","events","updateWhenIdle","_onRotate","throttle","_onMoveEnd","updateInterval","_getTiledPixelBounds","mapZoom","_animatingZoom","max","_animateToZoom","getZoom","getZoomScale","_tileZoom","pixelCenter","project","floor","halfSize","Bounds","containerPointToLayerPoint","subtract","canvasProto","Canvas","_redraw","onRemove","off","_update","rendererProto","Renderer","_updateTransform","_zoom","_topLeft","p","padMin","multiplyBy","padMax","clip","_bounds","min","_center","getCenter","svgProto","SVG","mapProto","Map","root","initialize","id","setBearing","_getRotatePanePos","getBounds","topleft","topright","bottomright","bottomleft","LatLngBounds","layerPointToContainerPoint","rotatePanePos","_pivot","clone","_rotatePanePos","_rotatePane","getBearing","_initPanes","panes","_panes","_paneRenderers","_mapPane","createPane","_norotatePane","markerZoomAnimation","addClass","markerPane","shadowPane","_subtract","_getCenterOffset","centerOffset","_getNewPixelOrigin","viewHalf","_divideBy","_handleGeolocationResponse","lat","coords","latitude","lng","longitude","hdg","heading","LatLng","bounds","toBounds","accuracy","_locateOptions","setView","getBoundsZoom","maxZoom","timestamp","i","CompassBearing","Handler","DeviceOrientationEvent","_capable","_throttled","_onDeviceOrientation","addHooks","DomEvent","removeHooks","event","alpha","orientation","addInitHook","trackContainerMutation","ContainerMutation","mutation","_observer","MutationObserver","_onMutation","observe","getContainer","childList","attributes","characterData","subtree","attributeFilter","disconnect","invalidateSize","bounceAtZoomLimits","TouchGestures","touchRotate","touchZoom","_onTouchStart","touches","length","_zooming","_rotating","p1","mouseEventToContainerPoint","p2","vector","_centerPoint","_startLatLng","containerPointToLatLng","_pinchStartLatLng","_startDist","distanceTo","_startZoom","_startTheta","atan","_startBearing","_moved","stop","document","_onTouchMove","_onTouchEnd","preventDefault","delta","bearingDelta","getScaleZoom","getMinZoom","getMaxZoom","_limitZoom","unproject","_moveStart","cancelAnimFrame","_animRequest","moveFn","_move","pinch","requestAnimFrame","zoomAnimation","snapZoom","_resetView","TouchRotate","touchGestures","shiftKeyRotate","ShiftKeyRotate","_handleShiftScroll","shiftKey","scrollWheelZoom","sign","deltaY","touch","android23","TouchZoom","removeClass","Control","Rotate","position","closeOnZeroBearing","_unthrottledOnDeviceOrientation","container","create","arrow","_arrow","backgroundImage","cursor","display","backgroundRepeat","backgroundPosition","link","_link","appendChild","href","title","stopPropagation","_handleMouseDown","_cycleState","_refocusOnMap","_restyle","_follow","_canFollow","dragstartX","pageX","dragstartY","pageY","_handleMouseDrag","_handleMouseUp","deltaX","clientX","ev","compassBearing","cssTransform","transform","backgroundColor","control","rotateControl","addControl","Locate","LDomUtilApplyClassesMethod","method","element","classNames","split","forEach","addClasses","names","removeClasses","LocationMarker","[object Object]","setOptions","createIcon","opt","color","weight","fillColor","fillOpacity","opacity","icon","_getIconSVG","_locationIcon","divIcon","html","svg","iconSize","w","h","setIcon","r","radius","s","s2","CompassMarker","_heading","depth","path","LocateControl","layer","keepCurrentZoomLevel","initialZoomLevel","getLocationBounds","locationEvent","flyTo","clickBehavior","inView","outOfView","inViewNotFollowing","returnToPrevBounds","cacheLocation","drawCircle","drawMarker","showCompass","markerClass","compassClass","circleStyle","markerStyle","compassStyle","followCircleStyle","followMarkerStyle","followCompassStyle","iconLoading","iconElementTag","textElementTag","circlePadding","metric","strings","setAttribute","text","textContent","classList","parentNode","alert","message","outsideMapBoundsMsg","showPopup","metersUnit","feetUnit","popup","locateOptions","Infinity","watch","_layer","LayerGroup","addTo","_event","_compassHeading","_prevBounds","linkAndIcon","createButtonCallback","_onClick","_resetVariables","_unload","_justClicked","wasFollowing","_isFollowing","_userPanned","_userZoomed","_active","behaviors","behavior","contains","flyToBounds","fitBounds","f","start","_updateContainerStyle","_activate","_drawMarker","_deactivate","_cleanClasses","_removeMarker","locate","_onLocationFound","_onLocationError","_onZoom","_onZoomEnd","oriAbs","_this","deviceorientation","requestPermission","then","permissionState","stopLocate","_isOutsideMapBounds","onLocationOutsideMapBounds","panTo","_ignoreEvent","cStyle","_compass","setHeading","setStyle","removeFrom","_circle","setRadius","circle","distance","unit","toFixed","mStyle","_drawCompass","t","getPopupText","bindPopup","_popup","clearLayers","angle","isNaN","parseFloat","isFinite","_setCompassHeading","webkitCompassHeading","absolute","onLocationError","pad","getLatLng","maxBounds","_setClasses","state","self","fn","val","fnMap","l","eventNameMap","change","fullscreenchange","error","fullscreenerror","screenfull","request","Promise","resolve","reject","onFullScreenEntered","returnPromise","documentElement","requestFullscreen","catch","exit","isFullscreen","onFullScreenExit","exitFullscreen","toggle","onchange","callback","onerror","eventName","addEventListener","removeEventListener","raw","defineProperties","get","Boolean","fullscreenElement","enumerable","isEnabled","fullscreenEnabled","leaflet","FullScreen","titleCancel","forceSeparateButton","forcePseudoFullscreen","_screenfull","content","zoomControl","_createButton","toggleFullScreen","fullscreenControl","_toggleState","_handleFullscreenChange","context","innerHTML","disableClickPropagation","_exitFired","_isFullscreen","toggleFullscreen","fullscreen","fullscreenControlOptions","Pegman","includes","Evented","Mixin","Events","theme","debug","apiKey","libraries","mutant","attribution","pane","type","pano","enableCloseButton","imageDateControl","draggable","iconUrl","__interactURL","__gmapsURL","__mutantURL","logging","_mousePos","direction","old","_pegmanMarkerCoords","_streetViewCoords","_streetViewLayerEnabled","_dropzoneMapOpts","accept","overlap","ondropactivate","onDropZoneActivated","ondragenter","onDropZoneDragEntered","ondragleave","onDropZoneDragLeaved","ondrop","onDropZoneDropped","ondropdeactivate","onDropZoneDeactivated","_draggableMarkerOpts","inertia","onmove","onDraggableMove","onend","onDraggableEnd","_lazyLoaderAdded","_pegman","_pegmanButton","_pegmanMarker","_panoDiv","panoDiv","querySelector","_disableClickPropagation","_loadScripts","once","_loadInteractHandlers","_loadGoogleHandlers","mouseMoveTracking","keyUpTracking","onPegmanMarkerDragged","onMapClick","onMapLayerAdd","_googleStreetViewLayer","remove","_setMouseCursor","_log","args","console","log","_addClasses","_removeClasses","_removeAttributes","attrNames","a","removeAttribute","_insertAfter","targetNode","newNode","insertBefore","nextSibling","_translateElement","getAttribute","webkitTransform","_updateClasses","action","pegmanRemove","mouseEventToLatLng","pegmanAdd","findStreetViewData","showStreetViewLayer","bringToFront","onStreetViewPanoramaClose","clear","onPanoramaPositionChanged","_panorama","latLng","onPanoramaPovChanged","pov","getPov","getElement","abs","hideStreetViewLayer","closeStreetViewPanorama","toggleStreetViewLayer","openStreetViewPanorama","google","maps","searchRadius","_streetViewService","getPanoramaByLocation","processStreetViewServiceData","status","StreetViewStatus","OK","setPano","location","setPov","geometry","spherical","computeHeading","pitch","setVisible","warn","mousePos","keyCode","toggleStreetView","GoogleMutant","_initGoogleMaps","_initMouseTracker","gridLayer","googleMutant","addGoogleLayer","StreetViewPanorama","StreetViewService","addListener","tileSize","getTileSize","tileWidth","tileHeight","defaultDraggableCursor","_getTileCoords","_getTileImage","pixel","_getTilePixelPoint","originalEvent","hasTileData","_hasTileData","lon","tan","_toRad","z","_tiles","key","_tileCoordsToKey","tile","_downloadTile","src","_tileLoaded","imgRect","getBoundingClientRect","imgPos","scrollY","scrollX","pixelPoint","tileContext","getImageData","number","imageSrc","Image","crossOrigin","tileCanvas","createElement","getContext","drawImage","interact","_dropzone","dropzone","styleCursor","_loadJS","url","condition","indexOf","_jsonp","script","loaded","onload","onreadystatechange","head","getElementsByTagName","firstChild","params","query","hasOwnProperty","encodeURIComponent","jsonp","Date","getUTCMilliseconds","replace","slice","async","readyState","removeChild","pegman","scroll","scrollMac","baseURL","currentScript","join","layersProto","initializeLayersProto","onAddLayersProto","draggingMap","gestureHandlingOptions","duration","GestureHandling","_isScrolling","_isTouching","_isFading","_handleTouch","_setGestureHandlingOptions","_disableInteractions","_handleScroll","_handleMouseOver","_handleMouseOut","_handleDragging","_handleScrollOnPopup","_onEnterFullscreen","_onExitFullscreen","_enableInteractions","_disableInteraction","_enableInteraction","_enableWarning","gesture","clearTimeout","_disableWarning","delay","setTimeout","_isLanguageContent","_isMacUser","navigator","platform","toUpperCase","_parseGestureHandlingOptions","gestureHandlingText","gestureHandlingDuration","opts","_getLanguageContent","_touchWarning","_scrollWarning","_getUserLanguage","languages","language","userLanguage","lang","promise","_resolve","consume","m","default","import","defaultLocale","hasClass","target","closest","_enableTouchWarning","_disableTouchWarning","_enableScrollWarning","_disableScrollWarning","metaKey","ctrlKey","_contentNode","gestureHandling","EditInOSM","editor","_edit","open","editInOSM","Layers","inline","baseLayers","overlays","collapsed","MiniMap","minimap","toggleDisplay","zoomLevelOffset","zoomLevelFixed","centerFixed","autoToggleDisplay","minimized","collapsedWidth","collapsedHeight","aimingRectOptions","clickable","shadowRectOptions","hideText","showText","mapOptions","_mainMap","attributionControl","_isZoomLevelFixed","doubleClickZoom","boxZoom","crs","_miniMap","addLayer","_mainMapMoving","_miniMapMoving","_userToggledDisplay","_minimized","_addToggleButton","whenReady","_aimingRect","rectangle","_shadowRect","_onMainMapMoved","_onMainMapMoving","_onMiniMapMoveStarted","_onMiniMapMoving","_onMiniMapMoved","_decideZoom","_setDisplay","removeLayer","changeLayer","_toggleDisplayButton","_toggleButtonInitialTitleText","_toggleDisplayButtonClicked","_restore","_minimize","minimize","_onToggle","_decideMinimized","setBounds","lastAimingRect","sw","latLngToContainerPoint","getSouthWest","ne","getNorthEast","_lastAimingRectPosition","_isDefined","_isInteger","fromMaintoMini","toRet","currentDiff","proposedZoom","_lastMiniMapZoom","setZoom","value","_fireToggleEvents","miniMapControl","defineLeafletLoading","Loading","delayIndicator","separate","spinjs","spin","lines","_dataLoaders","Spinner","_addLayerListeners","_addMapListeners","zoomsliderControl","classes","_getLastControlButton","_indicatorContainer","_indicator","_spinner","_removeLayerListeners","_removeMapListeners","addLoader","delayIndicatorTimeout","that","updateIndicator","removeLoader","isLoading","_showIndicator","_hideIndicator","_countLoaders","Zoom","Zoomslider","_ui","zoomOut","index","children","button","offsetWidth","_handleLoading","getEventId","_handleBaseLayerChange","eachLayer","TileLayer","_handleLoad","_leaflet_id","_layerAdd","loading","load","exception","_layerRemove","baselayerchange","dataloading","dataload","layerremove","loadingControl","Search","version","sourceData","jsonpParam","propertyLoc","propertyName","formatData","filterData","moveToLocation","buildTip","minLength","initial","casesensitive","autoType","delayType","tooltipLimit","tipAutoSubmit","firstTipSubmit","autoResize","autoCollapse","autoCollapseTime","textErr","textCancel","textPlaceholder","hideMarkerOnCollapse","animate","stroke","fill","_getPath","obj","prop","parts","last","pop","len","cur","_isObject","toString","_inputMinSize","_filterData","_defaultFilterData","_formatData","_defaultFormatData","_moveToLocation","_defaultMoveToLocation","_autoTypeTmp","_countertips","_recordsCache","_curReq","_input","_createInput","_tooltip","_createTooltip","_cancel","_createCancel","_button","_alert","_createAlert","expand","CircleMarker","_markerSearch","_isMarkerSearch","setLayer","resize","_handleAutoresize","_wrapper","showAlert","timerAlert","hideAlert","cancel","_handleKeypress","focus","_hideTooltip","collapse","blur","collapseDelayed","timerCollapse","collapseDelayedStop","label","input","autocomplete","autocorrect","autocapitalize","placeholder","role","htmlFor","_handleSubmit","tool","_createTip","tip","tmpNode","_text","_getUrl","records","I","icase","regSearch","frecords","RegExp","test","showTooltip","currentSelection","_autoType","scrollTop","json","propName","propLoc","jsonret","isArray","_recordsFromJsonp","callAfter","callJsonp","abort","_recordsFromAjax","XMLHttpRequest","ActiveXObject","e1","e2","Error","ie","atob","XDomainRequest","JSON","parse","responseText","send","_searchInLayer","retRecords","loc","feature","properties","Path","Polyline","Polygon","_recordsFromLayer","firstRecord","end","createTextRange","selRange","moveStart","moveEnd","select","setSelectionRange","selectionStart","selectionEnd","_hideAutoType","sel","selection","empty","getSelection","removeAllRanges","_handleArrowSelect","timerKeypress","_fillRecordsCache","searchText","charCodeAt","inputText","_retrieveData","maxWidth","clientWidth","velocity","searchTips","hasChildNodes","childNodes","tipOffsetTop","offsetTop","clientHeight","_getLocation","showLocation","Default","_circleLoc","_initIcon","_removeIcon","mr","_radius","oldrad","newrad","acc","_timerAnimLoc","setInterval","clearInterval","searchControl","search","global","n","imagePlaceholder","impl","M","cacheBust","u","filter","c","d","bgcolor","keys","XMLSerializer","serializeToString","escapeXhtml","g","fillStyle","fillRect","makeImage","HTMLCanvasElement","toDataURL","cloneNode","asArray","o","Element","cssText","setProperty","getPropertyValue","getPropertyPriority","getComputedStyle","uid","createTextNode","HTMLTextAreaElement","HTMLInputElement","SVGElement","SVGRectElement","resolveAll","inlineAll","exec","escape","parseExtension","mimeType","toLowerCase","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","dataAsUrl","isDataUrl","canvasToBlob","toBlob","Uint8Array","Blob","resolveUrl","implementation","createHTMLDocument","body","getAndEncode","getTime","FileReader","onloadend","result","readAsDataURL","response","ontimeout","responseType","timeout","random","pow","push","scrollWidth","scrollHeight","shouldProcess","readUrls","parentStyleSheet","styleSheets","cssRules","CSSRule","FONT_FACE_RULE","all","readAll","HTMLImageElement","newImage","toSvg","toPng","toJpeg","quality","toPixelData","fontFaces","images","util","inliner","userAgent","URL","webkitURL","createElementNS","HTMLElement","safari","setImmediate","revokeObjectURL","concat","String","fromCharCode","INIT","createObjectURL","download","MouseEvent","dispatchEvent","DONE","msSaveOrOpenBlob","WRITING","onwritestart","onprogress","onwrite","onabort","onwriteend","saveAs","EasyPrint","sizeModes","filename","exportOnly","hidden","tileWait","hideControlContainer","hideClasses","customWindowTitle","spinnerBgCOlor","customSpinnerClass","defaultSizeTitles","Current","A4Landscape","A4Portrait","mapContainer","_a4PageSize","_addCss","_togglePageSizeButtons","holder","printMap","_page","write","_createSpinner","originalState","mapWidth","widthWasAuto","widthWasPercentage","mapHeight","percentageWidth","_toggleControls","_toggleClasses","_printOpertion","outerContainer","_createOuterContainer","_createImagePlaceholder","blankDiv","parentElement","_resizeAndPrintMap","tileLayer","_pausePrint","_dataURItoBlob","_sendToBrowserPrint","_removeOuterContainer","resizeTo","_createNewWindow","close","overflow","ArrayBuffer","DataView","setUint8","borderTopRightRadius","borderBottomRightRadius","getElementsByClassName","easyPrint","Resizer","onlyOnHover","updateAlways","pan","_END","mousedown","touchstart","pointerdown","MSPointerDown","_MOVE","_initialOffsetX","_initialOffsetY","_enabled","_prepareLocation","classNameTransp","classNameLoc","_initResize","fakeHover","ms","cont","corners","_controlCorners","_controlContainer","_simulated","_started","first","disableImageDrag","disableTextSelection","mapCont","offsetLeft","clientY","_stopResizing","_duringResizing","enableImageDrag","enableTextSelection","resizer","VisualClick","_makeVisualIcon","touchMode","visualClickMode","_visualIcon","visualClickPane","interactive","visualClick","removeTimeout","visualClickEvents","mobile","documentMode","proto","currentVersion","trim","lazyLoader","scripts","loadSyncScripts","urls","reduce","prev","curr","loadAsyncScripts","loadScript","tag","root_script","lastChild","prev_tag","prev_link","base_url","rel","default_options","mapTypes","atlas","maxNativeZoom","streets","cycle","terrain","satellite","topo","scaleControl","imperial","pegmanControl","locateControl","layersControl","minimapControl","toggleMapTypes","mapTypeId","_isMiniMap","editInOSMControl","querylang","detectUserLang","markerLocation","printControl","resizerControl","disableDefaultUI","plugins","setDefaultOptions","Array","deepMerge","apiKeys","thunderforest","apikey","k","mapTypeIds","initMap","controls","layers","baseMaps","_lastMapTypeId","_prevMapTypeId","bringToBack","autoToggleSatelliteLayer","updateLeafletAttribution","prefix","Scale","print","miniMapTypeId","miniMapLayer","_mainMapBaseLayers","baseLayer","item","setZIndex","unshift","core_plugins","includeLeafletUICSS","includeLeafletCSS","core_css_url","core_css_exists","_initHooks","initHooks","defaultAttribution","setPrefix","inputs","_layerControlInputs","_getLayer","layerId","_isAutoToggled","click","j","onAddMinimapProto","inArray","array","items","some","isObject","sources","source","shift","assign","_handleMainMapTypeChange","_handleMiniMapTypeToggle","_handligMiniMapTypeToggle","mainmap","mainMapTypeId","hasLayer"],"mappings":"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"}