leaflet-rotate 0.2.7 → 0.2.8

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.
@@ -455,12 +455,12 @@
455
455
  if (this.dragging && this.dragging.enabled() && this._map && this._map._rotate) {
456
456
  // L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable
457
457
  markerDragProto = markerDragProto || Object.getPrototypeOf(this.dragging);
458
+ this.dragging.disable();
458
459
  Object.assign(this.dragging, {
459
460
  // _onDragStart: MarkerDrag._onDragStart.bind(this.dragging),
460
461
  _onDrag: MarkerDrag._onDrag.bind(this.dragging),
461
462
  _onDragEnd: MarkerDrag._onDragEnd.bind(this.dragging),
462
463
  });
463
- this.dragging.disable();
464
464
  this.dragging.enable();
465
465
  }
466
466
  return ret;
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-rotate-src.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/Renderer.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 /**\n * Resets the 3D CSS transform of `el` so it is\n * translated by `offset` pixels and optionally\n * scaled by `scale`. Does not have an effect if\n * the browser doesn't support 3D CSS transforms.\n * \n * @param {HTMLElement} el \n * @param {L.Point} offset \n * @param {Number} scale\n * @param {Number} bearing \n * @param {L.Point} pivot \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 /**\n * Sets the position of `el` to coordinates specified by\n * `position`, using CSS translate or top/left positioning\n * depending on the browser (used by Leaflet internally\n * to position its layers).\n * \n * @param {HTMLElement} el \n * @param {L.Point} point \n * @param {Number} bearing\n * @param {L.Point} pivot \n * @param {Number} scale \n */\n setPosition: function(el, point, bearing, pivot, scale) {\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 /**\n * @constant radians = degrees × π/180°\n */\n DEG_TO_RAD: Math.PI / 180,\n\n /**\n * @constant degrees = radians × 180°/π\n */\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\n/**\n * A class for making DOM elements draggable (including touch support).\n * Used internally for map and marker dragging. Only works for elements\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\n */\n\nL.Draggable.include({\n\n /** @TODO */\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 * @param {Number} theta \n * @param {L.Point} pivot \n * \n * @returns {L.Point}\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 /**\n * Update L.Popup and L.Tooltip anchor positions after\n * the map is moved by calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\n */\n getEvents: function() {\n return L.extend(divOverlayProto.getEvents.apply(this, arguments), { rotate: this._updatePosition });\n },\n\n /**\n * 0. update element anchor point (divOverlayProto v1.9.3)\n * 1. rotate around anchor point (subtract anchor -> rotate point -> add anchor)\n */\n _updatePosition: function() {\n if (!this._map) { return; }\n divOverlayProto._updatePosition.apply(this, arguments);\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 /**\n * 0. update element anchor point (popupProto v1.9.3)\n * 1. rotate around anchor point (subtract anchor -> rotate point -> add anchor)\n */\n _animateZoom: function(e) {\n popupProto._animateZoom.apply(this, arguments);\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 * Fix for L.popup({ 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 /** @TODO use popupProto._adjustPan */\n // var containerPos = map.layerPointToContainerPoint(layerPos);\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 * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/marker/Marker.Drag.js\n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/dom/Draggable.js\n */\n\nconst markerProto = L.extend({}, L.Marker.prototype);\n\nL.Marker.mergeOptions({\n\n /**\n * Rotation of this marker in rad\n * \n * @type {Number}\n */\n rotation: 0,\n\n /**\n * Rotate this marker when map rotates\n * \n * @type {Boolean}\n */\n rotateWithView: false,\n\n /**\n * Scale of the marker icon\n * \n * @type {Number}\n */\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 /**\n * Update L.Marker anchor position after the map\n * is moved by calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\n */\n getEvents: function() {\n return L.extend(markerProto.getEvents.apply(this, arguments), { rotate: this.update });\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 /**\n * Redraw L.TileLayer bounds after the map is\n * moved by just calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\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.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 /**\n * Redraw L.Canvas and L.SVG renderer bounds after the\n * map is moved by just calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\n */\n getEvents: function() {\n return L.extend(rendererProto.getEvents.apply(this, arguments), { rotate: this._update });\n },\n\n /**\n * Fix for `map.flyTo()` when `false === map.options.zoomAnimation`\n * \n * @see https://github.com/Leaflet/Leaflet/pull/8794\n */\n onAdd: function() {\n rendererProto.onAdd.apply(this, arguments);\n if (L.version <= \"1.9.3\") {\n // always keep transform-origin as 0 0\n this._container.classList.add('leaflet-zoom-animated');\n }\n },\n\n /**\n * @FIXME layer drifts on `map.setZoom()` (eg. zoom during animation)\n * \n * the main cause seems to be related to `this._updateTransform(path._center, path._zoom))`\n * and `this._topLeft = this._map.layerPointToLatLng(this._bounds.min);`\n * \n * @example\n * map.setZoom(2);\n * path._renderer._update();\n * path._renderer._updateTransform(path._renderer._center, path._renderer._zoom);\n * \n * @see https://github.com/Leaflet/Leaflet/pull/8794\n * @see https://github.com/Leaflet/Leaflet/pull/8103\n * @see https://github.com/Leaflet/Leaflet/issues/7466\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 /**\n * @FIXME see path._renderer._reset();\n */\n var scale = this._map.getZoomScale(zoom, this._zoom),\n offset = this._map._latLngToNewLayerPoint(this._topLeft, zoom, center);\n\n L.DomUtil.setTransform(this._container, offset, scale);\n \n },\n\n // getEvents() {\n // const events = {\n // viewreset: this._reset,\n // zoom: this._onZoom,\n // moveend: this._update,\n // zoomend: this._onZoomEnd\n // };\n // if (this._zoomAnimated) {\n // events.zoomanim = this._onAnimZoom;\n // }\n // return events;\n // },\n\n // _onAnimZoom(ev) {\n // this._updateTransform(ev.center, ev.zoom);\n // },\n\n\t// _onZoom() {\n // this._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t// },\n\n // _onZoomEnd() {\n // for (const id in this._layers) {\n // this._layers[id]._project();\n // }\n // },\n\n // _reset() {\n // this._update();\n // this._updateTransform(this._center, this._zoom);\n\n // for (const id in this._layers) {\n // this._layers[id]._reset();\n // }\n // },\n\n // _updatePaths() {\n // for (const id in this._layers) {\n // this._layers[id]._update();\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.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 // latLngToLayerPoint: function (latlng) {\n // var projectedPoint = this.project(L.latLng(latlng))._round();\n // return projectedPoint._subtract(this.getPixelOrigin());\n // },\n\n // latLngToContainerPoint: function (latlng) {\n\t// \treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\n\t// },\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\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\n // same as `this.latLngToContainerPoint(latlng)` but with floating point precision\n const origin = this.getPixelOrigin();\n const nw = this.layerPointToContainerPoint(this.project(bounds.getNorthWest())._subtract(origin)),\n ne = this.layerPointToContainerPoint(this.project(bounds.getNorthEast())._subtract(origin)),\n sw = this.layerPointToContainerPoint(this.project(bounds.getSouthWest())._subtract(origin)),\n se = this.layerPointToContainerPoint(this.project(bounds.getSouthEast())._subtract(origin));\n\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 if (!this._rotate || Math.abs(this._bearing).toFixed(1) < 0.1) {\n return mapProto.panInside.apply(this, arguments);\n }\n\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 // _latLngToNewLayerPoint(latlng, zoom, center) {\n // const topLeft = this._getNewPixelOrigin(center, zoom);\n // return this.project(latlng, zoom)._subtract(topLeft);\n //},\n\n _getNewPixelOrigin: function(center, zoom) {\n if (!this._rotate) {\n return mapProto._getNewPixelOrigin.apply(this, arguments);\n }\n var viewHalf = this.getSize()._divideBy(2);\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 /** @see https://caniuse.com/?search=DeviceOrientation */\n if ('ondeviceorientationabsolute' in window) {\n this.__deviceOrientationEvent = 'deviceorientationabsolute';\n } else if('ondeviceorientation' in window) {\n this.__deviceOrientationEvent = 'deviceorientation';\n }\n this._throttled = L.Util.throttle(this._onDeviceOrientation, 100, this);\n },\n\n addHooks: function() {\n if (this._map._rotate && this.__deviceOrientationEvent) {\n L.DomEvent.on(window, this.__deviceOrientationEvent, this._throttled, this);\n } else {\n // L.Map.CompassBearing handler will be automatically\n // disabled if device orientation is not supported.\n this.disable();\n }\n },\n\n removeHooks: function() {\n if (this._map._rotate && this.__deviceOrientationEvent) {\n L.DomEvent.off(window, this.__deviceOrientationEvent, this._throttled, this);\n }\n },\n\n /**\n * `DeviceOrientationEvent.absolute` - Indicates whether the device is providing absolute\n * orientation values (relatives to Magnetic North) or\n * using some arbitrary frame determined by the device.\n * \n * `DeviceOrientationEvent.alpha` - Returns the rotation of the device around the Z axis;\n * that is, the number of degrees by which the device is\n * being twisted around the center of the screen.\n * \n * `window.orientation` - Returns the screen orientation in degrees (in 90-degree increments)\n * of the viewport relative to the device's natural orientation.\n * Its only possible values are -90, 0, 90, and 180. Positive\n * values are counterclockwise; negative values are clockwise.\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/absolute\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/alpha\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/orientation\n */\n _onDeviceOrientation: function(e) {\n var angle = e.webkitCompassHeading || e.alpha;\n var deviceOrientation = 0;\n\n // Safari iOS\n if (!e.absolute && e.webkitCompassHeading) {\n angle = 360 - angle;\n }\n\n // Older browsers\n if (!e.absolute && 'undefined' !== typeof window.orientation) {\n deviceOrientation = window.orientation;\n }\n\n this._map.setBearing(angle - deviceOrientation);\n },\n\n});\n\n/**\n * Add Compass bearing handler to L.Map (disabled unless `window.DeviceOrientationEvent` is set).\n * \n * @property {L.Map.CompassBearing} compassBearing\n */\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/**\n * @TODO check again this file after leaflet v1.9.3 (eg. L.Browser.mutation).\n * Mutation Observer support will likely be added by default in next releases.\n */\n\nL.Map.mergeOptions({\n\n /**\n * Whether the map uses mutation observers to\n * detect changes in its container and trigger\n * `invalidateSize`. Disabled by default due to\n * support not being available in all web browsers.\n *\n * @type {Boolean}\n * \n * @see https://developer.mozilla.org/docs/Web/API/MutationObserver\n */\n trackContainerMutation: false\n\n});\n\nL.Map.ContainerMutation = L.Handler.extend({\n\n addHooks: function() {\n // if (!L.Browser.mutation) { return; }\n if (!this._observer) {\n this._observer = new MutationObserver(L.Util.bind(this._map.invalidateSize, this._map));\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) { return; }\n this._observer.disconnect();\n },\n\n});\n\n/**\n * Add Container mutation handler to L.Map (disabled unless `trackContainerMutation` is set).\n * \n * @property {L.Map.ContainerMutation} trackContainerMutation\n */\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\nL.Map.mergeOptions({\n\n /**\n * Set it to false if you don't want the map to\n * zoom beyond min/max zoom and then bounce back\n * when pinch-zooming.\n * \n * @type {Boolean}\n */\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 /**\n * @TODO the pivot should be the last touch point,\n * but zoomAnimation manages to overwrite the rotate\n * pane position. Maybe related to #3529.\n * \n * @see https://github.com/Leaflet/Leaflet/pull/3529\n * @see https://github.com/fnicollet/Leaflet/commit/a77af51a6b10f308d1b9a16552091d1d0aee8834\n */\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/**\n * Add Touch Gestures handler (enabled unless `touchGestures` is unset).\n * \n * @property {L.Map.TouchGestures} touchGestures\n */\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\nL.Map.mergeOptions({\n\n /**\n * Whether the map can be rotated with a two-finger rotation gesture\n * \n * @type {Boolean}\n */\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/**\n * Add Touch Rotate handler (disabled unless `touchGestures` is set).\n * \n * @property {L.Map.TouchGestures} touchGestures\n */\nL.Map.addInitHook('addHandler', 'touchRotate', L.Map.TouchRotate);\n","\n/**\n * Rotates the map on shift key + mousewheel scrolling (desktop).\n * \n * @typedef L.Map.ShiftKeyRotate\n */\n\nL.Map.mergeOptions({\n\n /**\n * Whether the map can be rotated with shift + wheel scroll\n * @type {Boolean}\n */\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/**\n * Add ShiftKey handler to L.Map (enabled unless `shiftKeyRotate` is unset).\n * \n * @property {L.Map.ShiftKeyRotate} shiftKeyRotate\n */\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\nL.Map.mergeOptions({\n\n /**\n * Whether the map can be zoomed by touch-dragging\n * with two fingers. If passed `'center'`, it will\n * zoom to the center of the view regardless of\n * where the touch events (fingers) were. Enabled\n * for touch-capable web browsers.\n * \n * @type {(Boolean|String)}\n */\n touchZoom: L.Browser.touch,\n\n /**\n * @TODO check if this is a duplicate of `L.Map.TouchGestures::bounceAtZoomLimits`\n * \n * Set it to false if you don't want the map to\n * zoom beyond min/max zoom and then bounce back\n * when pinch-zooming.\n * \n * @type {Boolean}\n */\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/**\n * Add Touch Zoom handler (disabled unless `L.Browser.touch` is set).\n * \n * @property {L.Map.TouchGestures} touchGestures\n */\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 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, 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 onRemove: function(map) {\n map.off('rotate', this._restyle, this);\n },\n\n _handleMouseDown: function(e) {\n L.DomEvent.stop(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);\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 if (!this._map) {\n return;\n }\n\n var map = this._map;\n\n // Touch mode\n if (!map.touchRotate.enabled() && !map.compassBearing.enabled()) {\n map.touchRotate.enable();\n }\n \n // Compass mode\n else if (!map.compassBearing.enabled()) {\n map.touchRotate.disable();\n map.compassBearing.enable();\n }\n\n // Locked mode\n else {\n map.compassBearing.disable();\n map.setBearing(0);\n if (this.options.closeOnZeroBearing) {\n map.touchRotate.enable();\n }\n }\n this._restyle();\n },\n\n _restyle: function() {\n if (!this._map.options.rotate) {\n L.DomUtil.addClass(this._link, 'leaflet-disabled');\n } else {\n var map = this._map;\n var bearing = map.getBearing();\n\n this._arrow.style.transform = 'rotate(' + bearing + 'deg)';\n\n if (bearing && this.options.closeOnZeroBearing) {\n this._container.style.display = 'block';\n }\n\n // Compass mode\n if (map.compassBearing.enabled()) {\n this._link.style.backgroundColor = 'orange';\n }\n \n // Touch mode\n else if (map.touchRotate.enabled()) {\n this._link.style.backgroundColor = null;\n }\n\n // Locked mode\n else {\n this._link.style.backgroundColor = 'grey';\n if (0 === bearing && this.options.closeOnZeroBearing) {\n this._container.style.display = 'none';\n }\n }\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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"}
1
+ {"version":3,"file":"leaflet-rotate-src.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/Renderer.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 /**\n * Resets the 3D CSS transform of `el` so it is\n * translated by `offset` pixels and optionally\n * scaled by `scale`. Does not have an effect if\n * the browser doesn't support 3D CSS transforms.\n * \n * @param {HTMLElement} el \n * @param {L.Point} offset \n * @param {Number} scale\n * @param {Number} bearing \n * @param {L.Point} pivot \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 /**\n * Sets the position of `el` to coordinates specified by\n * `position`, using CSS translate or top/left positioning\n * depending on the browser (used by Leaflet internally\n * to position its layers).\n * \n * @param {HTMLElement} el \n * @param {L.Point} point \n * @param {Number} bearing\n * @param {L.Point} pivot \n * @param {Number} scale \n */\n setPosition: function(el, point, bearing, pivot, scale) {\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 /**\n * @constant radians = degrees × π/180°\n */\n DEG_TO_RAD: Math.PI / 180,\n\n /**\n * @constant degrees = radians × 180°/π\n */\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\n/**\n * A class for making DOM elements draggable (including touch support).\n * Used internally for map and marker dragging. Only works for elements\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\n */\n\nL.Draggable.include({\n\n /** @TODO */\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 * @param {Number} theta \n * @param {L.Point} pivot \n * \n * @returns {L.Point}\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 /**\n * Update L.Popup and L.Tooltip anchor positions after\n * the map is moved by calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\n */\n getEvents: function() {\n return L.extend(divOverlayProto.getEvents.apply(this, arguments), { rotate: this._updatePosition });\n },\n\n /**\n * 0. update element anchor point (divOverlayProto v1.9.3)\n * 1. rotate around anchor point (subtract anchor -> rotate point -> add anchor)\n */\n _updatePosition: function() {\n if (!this._map) { return; }\n divOverlayProto._updatePosition.apply(this, arguments);\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 /**\n * 0. update element anchor point (popupProto v1.9.3)\n * 1. rotate around anchor point (subtract anchor -> rotate point -> add anchor)\n */\n _animateZoom: function(e) {\n popupProto._animateZoom.apply(this, arguments);\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 * Fix for L.popup({ 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 /** @TODO use popupProto._adjustPan */\n // var containerPos = map.layerPointToContainerPoint(layerPos);\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 * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/layer/marker/Marker.Drag.js\n * @see https://github.com/Leaflet/Leaflet/tree/v1.9.3/src/dom/Draggable.js\n */\n\nconst markerProto = L.extend({}, L.Marker.prototype);\n\nL.Marker.mergeOptions({\n\n /**\n * Rotation of this marker in rad\n * \n * @type {Number}\n */\n rotation: 0,\n\n /**\n * Rotate this marker when map rotates\n * \n * @type {Boolean}\n */\n rotateWithView: false,\n\n /**\n * Scale of the marker icon\n * \n * @type {Number}\n */\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 /**\n * Update L.Marker anchor position after the map\n * is moved by calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\n */\n getEvents: function() {\n return L.extend(markerProto.getEvents.apply(this, arguments), { rotate: this.update });\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 this.dragging.disable();\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.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 /**\n * Redraw L.TileLayer bounds after the map is\n * moved by just calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\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.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 /**\n * Redraw L.Canvas and L.SVG renderer bounds after the\n * map is moved by just calling `map.setBearing(theta)`\n * \n * @listens L.Map~rotate\n */\n getEvents: function() {\n return L.extend(rendererProto.getEvents.apply(this, arguments), { rotate: this._update });\n },\n\n /**\n * Fix for `map.flyTo()` when `false === map.options.zoomAnimation`\n * \n * @see https://github.com/Leaflet/Leaflet/pull/8794\n */\n onAdd: function() {\n rendererProto.onAdd.apply(this, arguments);\n if (L.version <= \"1.9.3\") {\n // always keep transform-origin as 0 0\n this._container.classList.add('leaflet-zoom-animated');\n }\n },\n\n /**\n * @FIXME layer drifts on `map.setZoom()` (eg. zoom during animation)\n * \n * the main cause seems to be related to `this._updateTransform(path._center, path._zoom))`\n * and `this._topLeft = this._map.layerPointToLatLng(this._bounds.min);`\n * \n * @example\n * map.setZoom(2);\n * path._renderer._update();\n * path._renderer._updateTransform(path._renderer._center, path._renderer._zoom);\n * \n * @see https://github.com/Leaflet/Leaflet/pull/8794\n * @see https://github.com/Leaflet/Leaflet/pull/8103\n * @see https://github.com/Leaflet/Leaflet/issues/7466\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 /**\n * @FIXME see path._renderer._reset();\n */\n var scale = this._map.getZoomScale(zoom, this._zoom),\n offset = this._map._latLngToNewLayerPoint(this._topLeft, zoom, center);\n\n L.DomUtil.setTransform(this._container, offset, scale);\n \n },\n\n // getEvents() {\n // const events = {\n // viewreset: this._reset,\n // zoom: this._onZoom,\n // moveend: this._update,\n // zoomend: this._onZoomEnd\n // };\n // if (this._zoomAnimated) {\n // events.zoomanim = this._onAnimZoom;\n // }\n // return events;\n // },\n\n // _onAnimZoom(ev) {\n // this._updateTransform(ev.center, ev.zoom);\n // },\n\n\t// _onZoom() {\n // this._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t// },\n\n // _onZoomEnd() {\n // for (const id in this._layers) {\n // this._layers[id]._project();\n // }\n // },\n\n // _reset() {\n // this._update();\n // this._updateTransform(this._center, this._zoom);\n\n // for (const id in this._layers) {\n // this._layers[id]._reset();\n // }\n // },\n\n // _updatePaths() {\n // for (const id in this._layers) {\n // this._layers[id]._update();\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.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 // latLngToLayerPoint: function (latlng) {\n // var projectedPoint = this.project(L.latLng(latlng))._round();\n // return projectedPoint._subtract(this.getPixelOrigin());\n // },\n\n // latLngToContainerPoint: function (latlng) {\n\t// \treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\n\t// },\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\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\n // same as `this.latLngToContainerPoint(latlng)` but with floating point precision\n const origin = this.getPixelOrigin();\n const nw = this.layerPointToContainerPoint(this.project(bounds.getNorthWest())._subtract(origin)),\n ne = this.layerPointToContainerPoint(this.project(bounds.getNorthEast())._subtract(origin)),\n sw = this.layerPointToContainerPoint(this.project(bounds.getSouthWest())._subtract(origin)),\n se = this.layerPointToContainerPoint(this.project(bounds.getSouthEast())._subtract(origin));\n\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 if (!this._rotate || Math.abs(this._bearing).toFixed(1) < 0.1) {\n return mapProto.panInside.apply(this, arguments);\n }\n\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 // _latLngToNewLayerPoint(latlng, zoom, center) {\n // const topLeft = this._getNewPixelOrigin(center, zoom);\n // return this.project(latlng, zoom)._subtract(topLeft);\n //},\n\n _getNewPixelOrigin: function(center, zoom) {\n if (!this._rotate) {\n return mapProto._getNewPixelOrigin.apply(this, arguments);\n }\n var viewHalf = this.getSize()._divideBy(2);\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 /** @see https://caniuse.com/?search=DeviceOrientation */\n if ('ondeviceorientationabsolute' in window) {\n this.__deviceOrientationEvent = 'deviceorientationabsolute';\n } else if('ondeviceorientation' in window) {\n this.__deviceOrientationEvent = 'deviceorientation';\n }\n this._throttled = L.Util.throttle(this._onDeviceOrientation, 100, this);\n },\n\n addHooks: function() {\n if (this._map._rotate && this.__deviceOrientationEvent) {\n L.DomEvent.on(window, this.__deviceOrientationEvent, this._throttled, this);\n } else {\n // L.Map.CompassBearing handler will be automatically\n // disabled if device orientation is not supported.\n this.disable();\n }\n },\n\n removeHooks: function() {\n if (this._map._rotate && this.__deviceOrientationEvent) {\n L.DomEvent.off(window, this.__deviceOrientationEvent, this._throttled, this);\n }\n },\n\n /**\n * `DeviceOrientationEvent.absolute` - Indicates whether the device is providing absolute\n * orientation values (relatives to Magnetic North) or\n * using some arbitrary frame determined by the device.\n * \n * `DeviceOrientationEvent.alpha` - Returns the rotation of the device around the Z axis;\n * that is, the number of degrees by which the device is\n * being twisted around the center of the screen.\n * \n * `window.orientation` - Returns the screen orientation in degrees (in 90-degree increments)\n * of the viewport relative to the device's natural orientation.\n * Its only possible values are -90, 0, 90, and 180. Positive\n * values are counterclockwise; negative values are clockwise.\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/absolute\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/alpha\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/orientation\n */\n _onDeviceOrientation: function(e) {\n var angle = e.webkitCompassHeading || e.alpha;\n var deviceOrientation = 0;\n\n // Safari iOS\n if (!e.absolute && e.webkitCompassHeading) {\n angle = 360 - angle;\n }\n\n // Older browsers\n if (!e.absolute && 'undefined' !== typeof window.orientation) {\n deviceOrientation = window.orientation;\n }\n\n this._map.setBearing(angle - deviceOrientation);\n },\n\n});\n\n/**\n * Add Compass bearing handler to L.Map (disabled unless `window.DeviceOrientationEvent` is set).\n * \n * @property {L.Map.CompassBearing} compassBearing\n */\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/**\n * @TODO check again this file after leaflet v1.9.3 (eg. L.Browser.mutation).\n * Mutation Observer support will likely be added by default in next releases.\n */\n\nL.Map.mergeOptions({\n\n /**\n * Whether the map uses mutation observers to\n * detect changes in its container and trigger\n * `invalidateSize`. Disabled by default due to\n * support not being available in all web browsers.\n *\n * @type {Boolean}\n * \n * @see https://developer.mozilla.org/docs/Web/API/MutationObserver\n */\n trackContainerMutation: false\n\n});\n\nL.Map.ContainerMutation = L.Handler.extend({\n\n addHooks: function() {\n // if (!L.Browser.mutation) { return; }\n if (!this._observer) {\n this._observer = new MutationObserver(L.Util.bind(this._map.invalidateSize, this._map));\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) { return; }\n this._observer.disconnect();\n },\n\n});\n\n/**\n * Add Container mutation handler to L.Map (disabled unless `trackContainerMutation` is set).\n * \n * @property {L.Map.ContainerMutation} trackContainerMutation\n */\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\nL.Map.mergeOptions({\n\n /**\n * Set it to false if you don't want the map to\n * zoom beyond min/max zoom and then bounce back\n * when pinch-zooming.\n * \n * @type {Boolean}\n */\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 /**\n * @TODO the pivot should be the last touch point,\n * but zoomAnimation manages to overwrite the rotate\n * pane position. Maybe related to #3529.\n * \n * @see https://github.com/Leaflet/Leaflet/pull/3529\n * @see https://github.com/fnicollet/Leaflet/commit/a77af51a6b10f308d1b9a16552091d1d0aee8834\n */\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/**\n * Add Touch Gestures handler (enabled unless `touchGestures` is unset).\n * \n * @property {L.Map.TouchGestures} touchGestures\n */\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\nL.Map.mergeOptions({\n\n /**\n * Whether the map can be rotated with a two-finger rotation gesture\n * \n * @type {Boolean}\n */\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/**\n * Add Touch Rotate handler (disabled unless `touchGestures` is set).\n * \n * @property {L.Map.TouchGestures} touchGestures\n */\nL.Map.addInitHook('addHandler', 'touchRotate', L.Map.TouchRotate);\n","\n/**\n * Rotates the map on shift key + mousewheel scrolling (desktop).\n * \n * @typedef L.Map.ShiftKeyRotate\n */\n\nL.Map.mergeOptions({\n\n /**\n * Whether the map can be rotated with shift + wheel scroll\n * @type {Boolean}\n */\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/**\n * Add ShiftKey handler to L.Map (enabled unless `shiftKeyRotate` is unset).\n * \n * @property {L.Map.ShiftKeyRotate} shiftKeyRotate\n */\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\nL.Map.mergeOptions({\n\n /**\n * Whether the map can be zoomed by touch-dragging\n * with two fingers. If passed `'center'`, it will\n * zoom to the center of the view regardless of\n * where the touch events (fingers) were. Enabled\n * for touch-capable web browsers.\n * \n * @type {(Boolean|String)}\n */\n touchZoom: L.Browser.touch,\n\n /**\n * @TODO check if this is a duplicate of `L.Map.TouchGestures::bounceAtZoomLimits`\n * \n * Set it to false if you don't want the map to\n * zoom beyond min/max zoom and then bounce back\n * when pinch-zooming.\n * \n * @type {Boolean}\n */\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/**\n * Add Touch Zoom handler (disabled unless `L.Browser.touch` is set).\n * \n * @property {L.Map.TouchGestures} touchGestures\n */\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 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, 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 onRemove: function(map) {\n map.off('rotate', this._restyle, this);\n },\n\n _handleMouseDown: function(e) {\n L.DomEvent.stop(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);\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 if (!this._map) {\n return;\n }\n\n var map = this._map;\n\n // Touch mode\n if (!map.touchRotate.enabled() && !map.compassBearing.enabled()) {\n map.touchRotate.enable();\n }\n \n // Compass mode\n else if (!map.compassBearing.enabled()) {\n map.touchRotate.disable();\n map.compassBearing.enable();\n }\n\n // Locked mode\n else {\n map.compassBearing.disable();\n map.setBearing(0);\n if (this.options.closeOnZeroBearing) {\n map.touchRotate.enable();\n }\n }\n this._restyle();\n },\n\n _restyle: function() {\n if (!this._map.options.rotate) {\n L.DomUtil.addClass(this._link, 'leaflet-disabled');\n } else {\n var map = this._map;\n var bearing = map.getBearing();\n\n this._arrow.style.transform = 'rotate(' + bearing + 'deg)';\n\n if (bearing && this.options.closeOnZeroBearing) {\n this._container.style.display = 'block';\n }\n\n // Compass mode\n if (map.compassBearing.enabled()) {\n this._link.style.backgroundColor = 'orange';\n }\n \n // Touch mode\n else if (map.touchRotate.enabled()) {\n this._link.style.backgroundColor = null;\n }\n\n // Locked mode\n else {\n this._link.style.backgroundColor = 'grey';\n if (0 === bearing && this.options.closeOnZeroBearing) {\n this._container.style.display = 'none';\n }\n }\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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"}