leaflet-rotate 0.1.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/rollup.config.js +4 -4
- package/dist/leaflet-rotate-src.js +744 -329
- package/dist/leaflet-rotate-src.js.map +1 -1
- package/dist/leaflet-rotate.js +1760 -1
- package/dist/leaflet-rotate.js.map +1 -1
- package/lib/debug.js +253 -21
- package/lib/debug.min.js +1 -9
- package/package.json +10 -7
- package/src/control/Rotate.js +10 -7
- package/src/dom/DomUtil.js +8 -5
- package/src/dom/Draggable.js +8 -5
- package/src/geometry/Point.js +22 -18
- package/src/index.js +5 -3
- package/src/layer/DivOverlay.js +14 -22
- package/src/layer/Popup.js +30 -10
- package/src/layer/Tooltip.js +10 -7
- package/src/layer/marker/Icon.js +5 -2
- package/src/layer/marker/Marker.js +52 -43
- package/src/layer/tile/GridLayer.js +7 -16
- package/src/layer/vector/Canvas.js +18 -15
- package/src/layer/vector/Renderer.js +23 -32
- package/src/layer/vector/SVG.js +10 -7
- package/src/map/Map.js +462 -96
- package/src/map/handler/CompassBearing.js +7 -11
- package/src/map/handler/ContainerMutation.js +12 -8
- package/src/map/handler/ShiftKeyRotate.js +5 -2
- package/src/map/handler/TouchGestures.js +16 -11
- package/src/map/handler/TouchRotate.js +4 -2
- package/src/map/handler/TouchZoom.js +16 -4
- package/test/index.html +30 -6
- package/build/rollup.config.min.js +0 -2
- package/src/map/handler/ShiftKeyRotate.min.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-rotate.js","sources":["../src/dom/DomUtil.js","../src/dom/Draggable.js","../src/geometry/Point.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/Icon.js","../src/layer/marker/Marker.js","../src/layer/tile/GridLayer.js","../src/layer/vector/Canvas.js","../src/layer/vector/Renderer.js","../src/layer/vector/SVG.js","../src/map/Map.js","../src/map/handler/CompassBearing.js","../src/map/handler/ContainerMutation.js","../src/map/handler/TouchGestures.js","../src/map/handler/TouchRotate.js","../src/map/handler/ShiftKeyRotate.js","../src/map/handler/TouchZoom.js","../src/control/Rotate.js"],"sourcesContent":["/**\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 * 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"],"names":["domUtilProto","L","extend","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","Util","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","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","data","timestamp","i","CompassBearing","Handler","window","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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-rotate.js","sources":["../src/dom/DomUtil.js","../src/dom/Draggable.js","../src/geometry/Point.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/Icon.js","../src/layer/marker/Marker.js","../src/layer/tile/GridLayer.js","../src/layer/vector/Canvas.js","../src/layer/vector/Renderer.js","../src/layer/vector/SVG.js","../src/map/Map.js","../src/map/handler/CompassBearing.js","../src/map/handler/ContainerMutation.js","../src/map/handler/TouchGestures.js","../src/map/handler/TouchRotate.js","../src/map/handler/ShiftKeyRotate.js","../src/map/handler/TouchZoom.js","../src/control/Rotate.js"],"sourcesContent":["/**\n * @external L.DomUtil\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/dom/DomUtil.js\n */\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.apply(this, arguments);\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, scale) { // (HTMLElement, Point[, Boolean])\n if (!bearing) {\n return domUtilProto.setPosition.apply(this, arguments);\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, scale, 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 * @external L.Draggable\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/dom/Draggable.js\n */\n\nL.Draggable.include({\n\n // updateMapBearing: function(mapBearing) {\n // this._mapBearing = mapBearing;\n // },\n\n});","/**\n * @external L.Point\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/geometry/Point.js\n */\n\nL.extend(L.Point.prototype, {\n\n /**\n * Rotate around (0,0) by applying the 2D rotation matrix:\n * \n * ⎡ x' ⎤ = ⎡ cos θ -sin θ ⎤ ⎡ x ⎤\n * ⎣ y' ⎦ ⎣ sin θ cos θ ⎦ ⎣ y ⎦\n * \n * @param theta must be given in radians.\n */\n rotate: function(theta) {\n return this.rotateFrom(theta, new L.Point(0,0))\n },\n\n /**\n * Rotate around (pivot.x, pivot.y) by:\n * \n * 1. subtract (pivot.x, pivot.y)\n * 2. rotate around (0, 0)\n * 3. add (pivot.x, pivot.y) back\n * \n * same as `this.subtract(pivot).rotate(theta).add(pivot)`\n */\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 * @external L.DivOverlay\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/DivOverlay.js\n */\n\nconst divOverlayProto = L.extend({}, L.DivOverlay.prototype);\n\nL.DivOverlay.include({\n\n getEvents: function() {\n return L.extend(divOverlayProto.getEvents.apply(this, arguments), { rotate: this._updatePosition });\n },\n\n _updatePosition: function() {\n // 0. update anchor (leaflet v1.9.3)\n divOverlayProto._updatePosition.apply(this, arguments);\n // 1. subtract anchor\n // 2. rotate element\n // 3. restore anchor\n if (this._map && this._map._rotate && this._zoomAnimated) {\n var anchor = this._getAnchor();\n var pos = L.DomUtil.getPosition(this._container).subtract(anchor);\n L.DomUtil.setPosition(this._container, this._map.rotatedPointToMapPanePoint(pos).add(anchor));\n }\n\n },\n\n});\n","/**\n * @external L.Popup\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/Popup.js\n */\n\nconst popupProto = L.extend({}, L.Popup.prototype);\n\nL.Popup.include({\n\n _animateZoom: function(e) {\n // 0. update anchor (leaflet v1.9.3)\n popupProto._animateZoom.apply(this, arguments);\n // 1. subtract anchor\n // 2. rotate element\n // 3. restore anchor\n if (this._map && this._map._rotate) {\n var anchor = this._getAnchor();\n var pos = L.DomUtil.getPosition(this._container).subtract(anchor);\n L.DomUtil.setPosition(this._container, this._map.rotatedPointToMapPanePoint(pos).add(anchor));\n }\n },\n\n /**\n * Hot fix for L.Popup.mergeOptions({ keepInView: true, });\n * \n * @see https://github.com/fnicollet/Leaflet/pull/21\n */\n _adjustPan: function() {\n if (!this.options.autoPan || (this._map._panAnim && this._map._panAnim._inProgress)) { return; }\n\n // We can endlessly recurse if keepInView is set and the view resets.\n // Let's guard against that by exiting early if we're responding to our own autopan.\n if (this._autopanning) {\n this._autopanning = false;\n return;\n }\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 // Track that we're autopanning, as this function will be re-ran on moveend\n if (this.options.keepInView) {\n this._autopanning = true;\n }\n map\n .fire('autopanstart')\n .panBy([dx, dy]);\n }\n },\n\n});\n","/**\n * @external L.Tooltip\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/Tooltip.js\n */\n\nconst tooltipProto = L.extend({}, L.Tooltip.prototype);\n\nL.Tooltip.include({\n\n _animateZoom: function(e) {\n if (!this._map._rotate) {\n return tooltipProto._animateZoom.apply(this, arguments);\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 _updatePosition: function() {\n if (!this._map._rotate) {\n return tooltipProto._updatePosition.apply(this, arguments);\n }\n var pos = this._map.latLngToLayerPoint(this._latlng);\n\n pos = this._map.rotatedPointToMapPanePoint(pos);\n this._setPosition(pos);\n },\n\n});\n","/**\n * @external L.Icon\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/marker/Icon.js\n */\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 * @external L.Marker\n * @external L.Handler.MarkerDrag\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/marker/Marker.js\n */\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 // @option scale: Number = undefined\n // Scale of the marker icon\n scale: undefined,\n\n});\n\nvar markerDragProto; // retrived at runtime (see below: L.Marker::_initInteraction())\n\nvar MarkerDrag = {\n\n // _onDragStart: function() {\n // if (!this._marker._map._rotate) {\n // return markerDragProto._onDragStart.apply(this, arguments);\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.apply(this, arguments);\n },\n\n};\n\nL.Marker.include({\n\n getEvents: function() {\n return L.extend(markerProto.getEvents.apply(this, arguments), { rotate: this.update });\n },\n\n onAdd: function(map) {\n markerProto.onAdd.apply(this, arguments);\n map.on('rotate', this.update, this);\n },\n\n _initInteraction: function() {\n var ret = markerProto._initInteraction.apply(this, arguments);\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 Object.assign(this.dragging, {\n // _onDragStart: MarkerDrag._onDragStart.bind(this.dragging),\n _onDrag: MarkerDrag._onDrag.bind(this.dragging),\n _onDragEnd: MarkerDrag._onDragEnd.bind(this.dragging),\n })\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 if (this._icon) {\n L.DomUtil.setPosition(this._icon, pos, bearing, pos, this.options.scale);\n }\n\n /** @TODO use markerProto._setPos */\n if (this._shadow) {\n L.DomUtil.setPosition(this._shadow, pos, bearing, pos, this.options.scale);\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.apply(this, arguments);\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 * @external L.GridLayer\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/tile/GridLayer.js\n */\n\nconst gridLayerProto = L.extend({}, L.GridLayer.prototype);\n\nL.GridLayer.include({\n\n getEvents: function() {\n var events = gridLayerProto.getEvents.apply(this, arguments);\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.apply(this, arguments);\n }\n\n return this._map._getNewPixelBounds(center, this._tileZoom);\n },\n\n});\n","/**\n * @external L.Canvas\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/vector/Canvas.js\n */\n\nconst canvasProto = L.extend({}, L.Canvas.prototype);\n\nL.Canvas.include({\n\n // onAdd: function() {\n // canvasProto.onAdd.apply(this, arguments);\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.apply(this, arguments);\n // this._map.off('rotate', this._redraw, this);\n // },\n\n // _update: function() {\n // canvasProto._update.apply(this, arguments);\n // // Tell paths to redraw themselves\n // this.fire('update')\n // },\n\n});\n","/**\n * @external L.Renderer\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/vector/Renderer.js\n */\n\nconst rendererProto = L.extend({}, L.Renderer.prototype);\n\nL.Renderer.include({\n\n // onAdd: function() {\n // rendererProto.onAdd.apply(this, arguments);\n // // this._map.on('rotate', this._update, this);\n // },\n\n // onRemove: function() {\n // rendererProto.onRemove.apply(this, arguments);\n // // this._map.off('rotate', this._update, this);\n // },\n\n /**\n * @TODO rechek this changes from leaflet@v1.9.3\n * \n * @see https://github.com/Leaflet/Leaflet/compare/v1.7.0...v1.9.3\n */\n _updateTransform: function(center, zoom) {\n if (!this._map._rotate) {\n return rendererProto._updateTransform.apply(this, arguments);\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.apply(this, arguments);\n }\n // Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n // Subclasses are responsible of firing the 'update' event.\n this._bounds = this._map._getPaddedPixelBounds(this.options.padding);\n this._topLeft = this._map.layerPointToLatLng(this._bounds.min);\n this._center = this._map.getCenter();\n this._zoom = this._map.getZoom();\n },\n\n});\n","/**\n * @external L.SVG\n * \n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/vector/SVG.js\n */\n\nconst svgProto = L.extend({}, L.SVG.prototype);\n\nL.SVG.include({\n\n // _update: function() {\n // svgProto._update.apply(this, arguments);\n // if (this._map._rotate) {\n // this.fire('update');\n // }\n // },\n\n});\n","/**\n * @external L.Map\n * \n * @see https://github.com/Leaflet/Leaflet/blob/v1.9.3/src/map/Map.js\n */\n\nconst mapProto = L.extend({}, L.Map.prototype);\n\nL.Map.mergeOptions({ rotate: false, bearing: 0, });\n\nL.Map.include({\n\n /**\n * @param {(HTMLElement|String)} id html selector\n * @param {Object} [options={}] leaflet map options\n */\n initialize: function(id, options) {\n if (options.rotate) {\n this._rotate = true;\n this._bearing = 0;\n }\n mapProto.initialize.apply(this, arguments);\n if(this.options.rotate){\n this.setBearing(this.options.bearing);\n }\n },\n\n /**\n * Given a pixel coordinate relative to the map container,\n * returns the corresponding pixel coordinate relative to\n * the [origin pixel](#map-getpixelorigin).\n * \n * @param {L.Point} point pixel screen coordinates\n * @returns {L.Point} transformed pixel point\n */\n containerPointToLayerPoint: function(point) {\n if (!this._rotate) {\n return mapProto.containerPointToLayerPoint.apply(this, arguments);\n }\n return L.point(point)\n .subtract(this._getMapPanePos())\n .rotateFrom(-this._bearing, this._getRotatePanePos())\n .subtract(this._getRotatePanePos());\n },\n\n /**\n * Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\n * returns the corresponding pixel coordinate relative to the map container.\n * \n * @param {L.Point} point pixel screen coordinates\n * @returns {L.Point} transformed pixel point\n */\n layerPointToContainerPoint: function(point) {\n if (!this._rotate) {\n return mapProto.layerPointToContainerPoint.apply(this, arguments);\n }\n return L.point(point)\n .add(this._getRotatePanePos())\n .rotateFrom(this._bearing, this._getRotatePanePos())\n .add(this._getMapPanePos());\n },\n\n /**\n * Converts a coordinate from the rotated pane reference system\n * to the reference system of the not rotated map pane.\n * \n * (rotatePane) --> (mapPane)\n * (rotatePane) --> (norotatePane)\n * \n * @param {L.Point} point pixel screen coordinates\n * @returns {L.Point}\n * \n * @since leaflet-rotate (v0.1)\n */\n rotatedPointToMapPanePoint: function(point) {\n return L.point(point)\n .rotate(this._bearing)\n ._add(this._getRotatePanePos());\n },\n\n /**\n * Converts a coordinate from the not rotated map pane reference system\n * to the reference system of the rotated pane.\n * \n * (mapPane) --> (rotatePane)\n * (norotatePane) --> (rotatePane)\n * \n * @param {L.Point} point pixel screen coordinates\n * \n * @since leaflet-rotate (v0.1)\n */\n mapPanePointToRotatedPoint: function(point) {\n return L.point(point)\n ._subtract(this._getRotatePanePos())\n .rotate(-this._bearing);\n },\n\n /**\n * Given latlng bounds, returns the bounds in projected pixel\n * relative to the map container.\n * \n * @see https://github.com/ronikar/Leaflet/blob/5c480ef959b947c3beed7065425a5a36c486262b/src/map/Map.js#L1114-L1135\n * \n * @param {L.LatLngBounds} bounds \n * @returns {L.Bounds}\n * \n * @since leaflet-rotate (v0.2)\n */\n mapBoundsToContainerBounds: function (bounds) {\n if (!this._rotate && mapProto.mapBoundsToContainerBounds) {\n return mapProto.mapBoundsToContainerBounds.apply(this, arguments);\n }\n const nw = this.latLngToContainerPoint(bounds.getNorthWest()),\n ne = this.latLngToContainerPoint(bounds.getNorthEast()),\n sw = this.latLngToContainerPoint(bounds.getSouthWest()),\n se = this.latLngToContainerPoint(bounds.getSouthEast());\n return L.bounds([\n L.point(Math.min(nw.x, ne.x, se.x, sw.x), Math.min(nw.y, ne.y, se.y, sw.y)), // [ minX, minY ]\n L.point(Math.max(nw.x, ne.x, se.x, sw.x), Math.max(nw.y, ne.y, se.y, sw.y)) // [ maxX, maxY ]\n ]);\n },\n\n /**\n * Returns geographical bounds visible in the current map view\n * \n * @TODO find out if map bounds calculated by `L.Map::getBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n * \n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @returns {L.LatLngBounds}\n */\n getBounds: function() {\n if (!this._rotate) {\n return mapProto.getBounds.apply(this, arguments);\n }\n\n // SEE: https://github.com/fnicollet/Leaflet/pull/22\n //\n // var bounds = this.getPixelBounds(),\n // sw = this.unproject(bounds.getBottomLeft()),\n // ne = this.unproject(bounds.getTopRight());\n // return new LatLngBounds(sw, ne);\n //\n\n // LatLngBounds' constructor automatically\n // extends the bounds to fit the passed points\n var size = this.getSize();\n return new L.LatLngBounds([\n this.containerPointToLatLng([0, 0]), // topleft\n this.containerPointToLatLng([size.x, 0]), // topright \n this.containerPointToLatLng([size.x, size.y]), // bottomright\n this.containerPointToLatLng([0, size.y]), // bottomleft\n ]);\n },\n\n /**\n * Returns the bounds of the current map view in projected pixel\n * coordinates (sometimes useful in layer and overlay implementations).\n * \n * @TODO find out if map bounds calculated by `L.Map::getPixelBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n *\n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @returns {L.Bounds}\n */\n // getPixelBounds(center, zoom) {\n // // const topLeftPoint = map.containerPointToLayerPoint(this._getTopLeftPoint());\n // const topLeftPoint = this._getTopLeftPoint(center, zoom);\n // return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\n // },\n\n /**\n * Change map rotation\n * \n * @param {number} theta map degrees\n * \n * @since leaflet-rotate (v0.1)\n */\n setBearing: function(theta) {\n if (!L.Browser.any3d || !this._rotate) { return; }\n\n var bearing = L.Util.wrapNum(theta, [0, 360]) * L.DomUtil.DEG_TO_RAD,\n center = this._getPixelCenter(),\n oldPos = this._getRotatePanePos().rotateFrom(-this._bearing, center),\n newPos = oldPos.rotateFrom(bearing, center);\n\n // CSS transform\n L.DomUtil.setPosition(this._rotatePane, oldPos, bearing, center);\n\n this._pivot = center;\n this._bearing = bearing;\n this._rotatePanePos = newPos;\n\n this.fire('rotate');\n },\n\n /**\n * Get current map rotation\n * \n * @returns {number} theta map degrees\n * \n * @since leaflet-rotate (v0.1)\n */\n getBearing: function() {\n return this._bearing * L.DomUtil.RAD_TO_DEG;\n },\n\n /**\n * Creates a new [map pane](#map-pane) with the given name if it doesn't\n * exist already, then returns it. The pane is created as a child of\n * `container`, or as a child of the main map pane if not set.\n * \n * @param {String} name leaflet pane\n * @param {HTMLElement} [container] parent element\n * @returns {HTMLElement} pane container\n */\n // createPane: function(name, container) {\n // if (!this._rotate || name == 'mapPane') {\n // return mapProto.createPane.apply(this, arguments);\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 /**\n * Panes are DOM elements used to control the ordering of layers on\n * the map. You can access panes with [`map.getPane`](#map-getpane)\n * or [`map.getPanes`](#map-getpanes) methods. New panes can be created\n * with the [`map.createPane`](#map-createpane) method.\n * \n * Every map has the following default panes that differ only in zIndex:\n * \n * - mapPane [HTMLElement = 'auto'] - Pane that contains all other map panes\n * - tilePane [HTMLElement = 2] - Pane for tile layers\n * - overlayPane [HTMLElement = 4] - Pane for overlays like polylines and polygons\n * - shadowPane [HTMLElement = 5] - Pane for overlay shadows (e.g. marker shadows)\n * - markerPane [HTMLElement = 6] - Pane for marker icons\n * - tooltipPane [HTMLElement = 650] - Pane for tooltips.\n * - popupPane [HTMLElement = 700] - Pane for popups.\n */\n _initPanes: function() {\n var panes = this._panes = {};\n this._paneRenderers = {};\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 // rotatePane\n this.createPane('tilePane', this._rotatePane);\n this.createPane('overlayPane', this._rotatePane);\n // norotatePane\n this.createPane('shadowPane', this._norotatePane);\n this.createPane('markerPane', this._norotatePane);\n this.createPane('tooltipPane', this._norotatePane);\n this.createPane('popupPane', this._norotatePane);\n } else {\n this.createPane('tilePane');\n this.createPane('overlayPane');\n this.createPane('shadowPane');\n this.createPane('markerPane');\n this.createPane('tooltipPane');\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 /**\n * Pans the map the minimum amount to make the `latlng` visible. Use\n * padding options to fit the display to more restricted bounds.\n * If `latlng` is already within the (optionally padded) display bounds,\n * the map will not be panned.\n * \n * @see https://github.com/Raruto/leaflet-rotate/issues/18\n * \n * @param {L.LatLng} latlng coordinates\n * @param {Object} [options={}] padding options\n * \n * @returns {L.Map} current map instance\n */\n panInside(latlng, options) {\n options = options || {};\n\n const paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),\n paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]),\n /** @TODO use mapProto.panInside */\n // pixelPoint = this.project(latlng),\n // pixelBounds = this.getPixelBounds(),\n // pixelCenter = this.project(this.getCenter()),\n rect = this._container.getBoundingClientRect(),\n pixelPoint = this.latLngToContainerPoint(latlng),\n pixelBounds = L.bounds([ L.point(rect), L.point(rect).add(this.getSize()) ]),\n pixelCenter = pixelBounds.getCenter(),\n //\n paddedBounds = L.bounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\n paddedSize = paddedBounds.getSize();\n \n if (!paddedBounds.contains(pixelPoint)) {\n this._enforcingBounds = true;\n const centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\n const offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\n pixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\n pixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\n /** @TODO use mapProto.panInside */\n // this.panTo(this.unproject(pixelCenter), options);\n this.panTo(this.containerPointToLatLng(pixelCenter), options);\n //\n this._enforcingBounds = false;\n }\n return this;\n },\n\n /**\n * Pans the map to the closest view that would lie inside the given bounds\n * (if it's not already), controlling the animation using the options specific,\n * if any.\n * \n * @TODO check if map bounds calculated by `L.Map::panInsideBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n *\n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @param {L.LatLngBounds} bounds coordinates\n * @param {Object} [options] pan options\n * @returns {L.Map} current map instance\n */\n // panInsideBounds: function (bounds, options) {\n // this._enforcingBounds = true;\n // var center = this.getCenter(),\n // newCenter = this._limitCenter(center, this._zoom, L.latLngBounds(bounds));\n //\n // if (!center.equals(newCenter)) {\n // this.panTo(newCenter, options);\n // }\n //\n // this._enforcingBounds = false;\n // return this;\n // },\n\n // adjust center for view to get inside bounds\n // _limitCenter(center, zoom, bounds) {\n //\n // if (!bounds) { return center; }\n //\n // const centerPoint = this.project(center, zoom),\n // viewHalf = this.getSize().divideBy(2),\n // viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\n // offset = this._getBoundsOffset(viewBounds, bounds, zoom);\n //\n // // If offset is less than a pixel, ignore.\n // // This prevents unstable projections from getting into\n // // an infinite loop of tiny offsets.\n // if (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\n // return center;\n // }\n //\n // return this.unproject(centerPoint.add(offset), zoom);\n // },\n\n // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\n // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\n // but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\n // flyToBounds(bounds, options) {\n // const target = this._getBoundsCenterZoom(bounds, options);\n // return this.flyTo(target.center, target.zoom, options);\n // },\n\n // _getBoundsCenterZoom(bounds, options) {\n //\n // options = options || {};\n // bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\n //\n // const paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),\n // paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]);\n //\n // let zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\n //\n // zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\n //\n // if (zoom === Infinity) {\n // return { center: bounds.getCenter(), zoom };\n // }\n //\n // return { center, zoom };\n //\n // },\n\n /**\n * Returns the maximum zoom level on which the given bounds fit to the map\n * view in its entirety. If `inside` (optional) is set to `true`, the method\n * instead returns the minimum zoom level on which the map view fits into\n * the given bounds in its entirety.\n * \n * @param {L.LatLngBounds} bounds\n * @param {Boolean} [inside=false]\n * @param {L.Point} [padding=[0,0]]\n * \n * @returns {Number} zoom level\n */\n getBoundsZoom(bounds, inside, padding) {\n if (!this._rotate || Math.abs(this._bearing).toFixed(1) < 0.1) {\n return mapProto.getBoundsZoom.apply(this, arguments);\n }\n\n bounds = L.latLngBounds(bounds);\n padding = L.point(padding || [0, 0]);\n\n let zoom = this.getZoom() || 0;\n const min = this.getMinZoom(),\n max = this.getMaxZoom(),\n /** @TODO use mapProto.getBoundsZoom */\n // nw = bounds.getNorthWest(),\n // se = bounds.getSouthEast(),\n // size = this.getSize().subtract(padding),\n // boundsSize = L.bounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\n size = this.getSize().subtract(padding),\n boundsSize = this.mapBoundsToContainerBounds(bounds).getSize(),\n snap = this.options.zoomSnap,\n scalex = size.x / boundsSize.x,\n scaley = size.y / boundsSize.y,\n scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\n\n zoom = this.getScaleZoom(scale, zoom);\n\n if (snap) {\n zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\n zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\n }\n\n return Math.max(min, Math.min(max, zoom));\n },\n\n /**\n * Layer point of the current center\n * \n * @returns {L.Point} layer center\n */\n // _getCenterLayerPoint: function () {\n // return this.containerPointToLayerPoint(this.getSize()._divideBy(2));\n // },\n\n /**\n * Offset of the specified place to the current center in pixels\n * \n * @param {L.LatLng} latlng map coordinates\n */\n _getCenterOffset: function(latlng) {\n var centerOffset = mapProto._getCenterOffset.apply(this, arguments);\n if (this._rotate) {\n centerOffset = centerOffset.rotate(this._bearing);\n }\n return centerOffset;\n },\n\n /**\n * @since leaflet-rotate (v0.1)\n */\n _getRotatePanePos: function() {\n return this._rotatePanePos || new L.Point(0, 0);\n // return L.DomUtil.getPosition(this._rotatePane) || new L.Point(0, 0);\n },\n\n _getNewPixelOrigin: function(center, zoom) {\n var viewHalf = this.getSize()._divideBy(2);\n if (!this._rotate) {\n return mapProto._getNewPixelOrigin.apply(this, arguments);\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 /**\n * @since leaflet-rotate (v0.2)\n * \n * @see src\\layer\\tile\\GridLayer::_getTiledPixelBounds()\n */\n _getNewPixelBounds: function(center, zoom) {\n center = center || this.getCenter();\n zoom = zoom || this.getZoom();\n if (!this._rotate && mapProto._getNewPixelBounds) {\n return mapProto._getNewPixelBounds.apply(this, arguments);\n }\n var mapZoom = this._animatingZoom ? Math.max(this._animateToZoom, this.getZoom()) : this.getZoom(),\n scale = this.getZoomScale(mapZoom, zoom),\n pixelCenter = this.project(center, zoom).floor(),\n size = this.getSize(),\n halfSize = new L.Bounds([\n this.containerPointToLayerPoint([0, 0]).floor(),\n this.containerPointToLayerPoint([size.x, 0]).floor(),\n this.containerPointToLayerPoint([0, size.y]).floor(),\n this.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 * @since leaflet-rotate (v0.2)\n * \n * @return {L.Point} map pivot point (center)\n */\n _getPixelCenter: function() {\n if (!this._rotate && mapProto._getPixelCenter) {\n return mapProto._getPixelCenter.apply(this, arguments);\n }\n return this.getSize()._divideBy(2)._subtract(this._getMapPanePos());\n },\n\n /**\n * @since leaflet-rotate (v0.2)\n * \n * @see src\\layer\\vector\\Renderer::_update()\n */\n _getPaddedPixelBounds: function(padding) {\n if (!this._rotate && mapProto._getPaddedPixelBounds) {\n return mapProto._getPaddedPixelBounds.apply(this, arguments);\n }\n var p = padding,\n size = this.getSize(),\n padMin = size.multiplyBy(-p),\n padMax = size.multiplyBy(1 + p);\n //min = this.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n return new L.Bounds([\n this.containerPointToLayerPoint([padMin.x, padMin.y]).floor(),\n this.containerPointToLayerPoint([padMin.x, padMax.y]).floor(),\n this.containerPointToLayerPoint([padMax.x, padMin.y]).floor(),\n this.containerPointToLayerPoint([padMax.x, padMax.y]).floor()\n ]);\n },\n\n _handleGeolocationResponse: function(pos) {\n if (!this._container._leaflet_id) { return; }\n\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 * @see https://github.com/ronikar/Leaflet/blob/5c480ef959b947c3beed7065425a5a36c486262b/src/geo/LatLngBounds.js#L253-L264\n * \n * @param {L.Bounds} points \n * @returns {L.Bounds}\n */\n // toCircumscribedBounds(points) {\n // var minX = points.reduce(function (pv, v) { return Math.min(pv, v.x); }, points[0].x),\n // maxX = points.reduce(function (pv, v) { return Math.max(pv, v.x); }, points[0].x),\n // minY = points.reduce(function (pv, v) { return Math.min(pv, v.y); }, points[0].y),\n // maxY = points.reduce(function (pv, v) { return Math.max(pv, v.y); }, points[0].y);\n //\n // return L.bounds(L.point(minX, minY), L.point(maxX, maxY));\n // },\n\n});\n","/**\n * Rotates the map according to a smartphone's compass.\n * \n * @typedef L.Map.CompassBearing\n */\n\nL.Map.CompassBearing = L.Handler.extend({\n\n initialize: function(map) {\n this._map = map;\n this._throttled = L.Util.throttle(this._onDeviceOrientation, 1000, this);\n },\n\n addHooks: function() {\n if (this._map._rotate && window.DeviceOrientationEvent) {\n L.DomEvent.on(window, 'deviceorientation', this._throttled, this);\n }\n },\n\n removeHooks: function() {\n if (this._map._rotate && window.DeviceOrientationEvent) {\n L.DomEvent.off(window, 'deviceorientation', this._throttled, this);\n }\n },\n\n _onDeviceOrientation: function(event) {\n if (event.alpha !== null && window.orientation !== undefined) {\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 * Triggers `invalidateResize` when the map's DOM container mutates.\n * \n * @typedef L.Map.ContainerMutation\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 /** @TODO check again this property. Will likely be added in future releases (leaflet > v1.9.3) */\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 /** @TODO check again this property. Will likely be added in future releases (leaflet > v1.9.3) */\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 * TouchGestures is both TouchZoom plus TouchRotate\n * \n * @see https://github.com/fnicollet/Leaflet/commit/a77af51a6b10f308d1b9a16552091d1d0aee8834\n * @see https://github.com/Leaflet/Leaflet/blob/v1.9.3/src/map/handler/Map.TouchZoom.js\n * \n * @typedef L.Map.TouchGestures\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 touchcancel', 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, false);\n this._moved = true;\n }\n\n L.Util.cancelAnimFrame(this._animRequest);\n\n var moveFn = map._move.bind(map, this._center, this._zoom, { pinch: true, round: false }, undefined);\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 || this._rotating)) {\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, this)\n .off(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n if (this.zoom) {\n // Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n if (this._map.options.zoomAnimation) {\n this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\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 * Rotates the map on two-finger (touch devices).\n * \n * @typedef L.Map.TouchRotate\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/**\n * Rotates the map on shift key + mouseheel scrolling (desktop).\n * \n * @typedef L.Map.ShiftKeyRotate\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 * Adds pinch zoom rotation on mobile browsers\n * \n * @see https://github.com/Leaflet/Leaflet/blob/v1.9.3/src/map/handler/Map.TouchZoom.js\n * \n * @external L.Map.TouchZoom\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.\n touchZoom: L.Browser.touch,\n\n /**\n * @TODO check if this is a duplicate of `L.Map.TouchGestures::bounceAtZoomLimits`\n */\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: false,\n\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 * A tri-state control for map rotation, states are:\n * \n * - Locked (default)\n * - Unlocked (user can pinch-rotate)\n * - Follow (rotation follows device orientation, if available)\n * \n * @typedef L.Control.Rotate\n */\n\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 // link.draggable = false;\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.stop(e); // 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.stop(e); // 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"],"names":[],"mappings":"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"}
|