leaflet-rotate 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-rotate.js","sources":["../src/dom/DomUtil.js","../src/dom/Draggable.js","../src/geometry/Point.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/Icon.js","../src/layer/marker/Marker.js","../src/layer/tile/GridLayer.js","../src/layer/vector/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 * @TODO rechek this changes from leaflet@v1.9.3\n * \n * @see https://github.com/Leaflet/Leaflet/compare/v1.7.0...v1.9.3\n */\n _updateTransform: function(center, zoom) {\n if (!this._map._rotate) {\n return rendererProto._updateTransform.apply(this, arguments);\n }\n var scale = this._map.getZoomScale(zoom, this._zoom),\n offset = this._map._latLngToNewLayerPoint(this._topLeft, zoom, center);\n if (L.Browser.any3d) {\n L.DomUtil.setTransform(this._container, offset, scale);\n } else {\n L.DomUtil.setPosition(this._container, offset);\n }\n },\n\n _update: function() {\n if (!this._map._rotate) {\n return rendererProto._update.apply(this, arguments);\n }\n // Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n // Subclasses are responsible of firing the 'update' event.\n this._bounds = this._map._getPaddedPixelBounds(this.options.padding);\n this._topLeft = this._map.layerPointToLatLng(this._bounds.min);\n this._center = this._map.getCenter();\n this._zoom = this._map.getZoom();\n },\n\n});\n","/**\n * @external L.Map\n * \n * @see https://github.com/Leaflet/Leaflet/blob/v1.9.3/src/map/Map.js\n */\n\nconst mapProto = L.extend({}, L.Map.prototype);\n\nL.Map.mergeOptions({ rotate: false, bearing: 0, });\n\nL.Map.include({\n\n /**\n * @param {(HTMLElement|String)} id html selector\n * @param {Object} [options={}] leaflet map options\n */\n initialize: function(id, options) {\n if (options.rotate) {\n this._rotate = true;\n this._bearing = 0;\n }\n mapProto.initialize.apply(this, arguments);\n if(this.options.rotate){\n this.setBearing(this.options.bearing);\n }\n },\n\n /**\n * Given a pixel coordinate relative to the map container,\n * returns the corresponding pixel coordinate relative to\n * the [origin pixel](#map-getpixelorigin).\n * \n * @param {L.Point} point pixel screen coordinates\n * @returns {L.Point} transformed pixel point\n */\n containerPointToLayerPoint: function(point) {\n if (!this._rotate) {\n return mapProto.containerPointToLayerPoint.apply(this, arguments);\n }\n return L.point(point)\n .subtract(this._getMapPanePos())\n .rotateFrom(-this._bearing, this._getRotatePanePos())\n .subtract(this._getRotatePanePos());\n },\n\n /**\n * Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\n * returns the corresponding pixel coordinate relative to the map container.\n * \n * @param {L.Point} point pixel screen coordinates\n * @returns {L.Point} transformed pixel point\n */\n layerPointToContainerPoint: function(point) {\n if (!this._rotate) {\n return mapProto.layerPointToContainerPoint.apply(this, arguments);\n }\n return L.point(point)\n .add(this._getRotatePanePos())\n .rotateFrom(this._bearing, this._getRotatePanePos())\n .add(this._getMapPanePos());\n },\n\n /**\n * Converts a coordinate from the rotated pane reference system\n * to the reference system of the not rotated map pane.\n * \n * (rotatePane) --> (mapPane)\n * (rotatePane) --> (norotatePane)\n * \n * @param {L.Point} point pixel screen coordinates\n * @returns {L.Point}\n * \n * @since leaflet-rotate (v0.1)\n */\n rotatedPointToMapPanePoint: function(point) {\n return L.point(point)\n .rotate(this._bearing)\n ._add(this._getRotatePanePos());\n },\n\n /**\n * Converts a coordinate from the not rotated map pane reference system\n * to the reference system of the rotated pane.\n * \n * (mapPane) --> (rotatePane)\n * (norotatePane) --> (rotatePane)\n * \n * @param {L.Point} point pixel screen coordinates\n * \n * @since leaflet-rotate (v0.1)\n */\n mapPanePointToRotatedPoint: function(point) {\n return L.point(point)\n ._subtract(this._getRotatePanePos())\n .rotate(-this._bearing);\n },\n\n /**\n * Given latlng bounds, returns the bounds in projected pixel\n * relative to the map container.\n * \n * @see https://github.com/ronikar/Leaflet/blob/5c480ef959b947c3beed7065425a5a36c486262b/src/map/Map.js#L1114-L1135\n * \n * @param {L.LatLngBounds} bounds \n * @returns {L.Bounds}\n * \n * @since leaflet-rotate (v0.2)\n */\n mapBoundsToContainerBounds: function (bounds) {\n if (!this._rotate && mapProto.mapBoundsToContainerBounds) {\n return mapProto.mapBoundsToContainerBounds.apply(this, arguments);\n }\n const nw = this.latLngToContainerPoint(bounds.getNorthWest()),\n ne = this.latLngToContainerPoint(bounds.getNorthEast()),\n sw = this.latLngToContainerPoint(bounds.getSouthWest()),\n se = this.latLngToContainerPoint(bounds.getSouthEast());\n return L.bounds([\n L.point(Math.min(nw.x, ne.x, se.x, sw.x), Math.min(nw.y, ne.y, se.y, sw.y)), // [ minX, minY ]\n L.point(Math.max(nw.x, ne.x, se.x, sw.x), Math.max(nw.y, ne.y, se.y, sw.y)) // [ maxX, maxY ]\n ]);\n },\n\n /**\n * Returns geographical bounds visible in the current map view\n * \n * @TODO find out if map bounds calculated by `L.Map::getBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n * \n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @returns {L.LatLngBounds}\n */\n getBounds: function() {\n if (!this._rotate) {\n return mapProto.getBounds.apply(this, arguments);\n }\n\n // SEE: https://github.com/fnicollet/Leaflet/pull/22\n //\n // var bounds = this.getPixelBounds(),\n // sw = this.unproject(bounds.getBottomLeft()),\n // ne = this.unproject(bounds.getTopRight());\n // return new LatLngBounds(sw, ne);\n //\n\n // LatLngBounds' constructor automatically\n // extends the bounds to fit the passed points\n var size = this.getSize();\n return new L.LatLngBounds([\n this.containerPointToLatLng([0, 0]), // topleft\n this.containerPointToLatLng([size.x, 0]), // topright \n this.containerPointToLatLng([size.x, size.y]), // bottomright\n this.containerPointToLatLng([0, size.y]), // bottomleft\n ]);\n },\n\n /**\n * Returns the bounds of the current map view in projected pixel\n * coordinates (sometimes useful in layer and overlay implementations).\n * \n * @TODO find out if map bounds calculated by `L.Map::getPixelBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n *\n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @returns {L.Bounds}\n */\n // getPixelBounds(center, zoom) {\n // // const topLeftPoint = map.containerPointToLayerPoint(this._getTopLeftPoint());\n // const topLeftPoint = this._getTopLeftPoint(center, zoom);\n // return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\n // },\n\n /**\n * Change map rotation\n * \n * @param {number} theta map degrees\n * \n * @since leaflet-rotate (v0.1)\n */\n setBearing: function(theta) {\n if (!L.Browser.any3d || !this._rotate) { return; }\n\n var bearing = L.Util.wrapNum(theta, [0, 360]) * L.DomUtil.DEG_TO_RAD,\n center = this._getPixelCenter(),\n oldPos = this._getRotatePanePos().rotateFrom(-this._bearing, center),\n newPos = oldPos.rotateFrom(bearing, center);\n\n // CSS transform\n L.DomUtil.setPosition(this._rotatePane, oldPos, bearing, center);\n\n this._pivot = center;\n this._bearing = bearing;\n this._rotatePanePos = newPos;\n\n this.fire('rotate');\n },\n\n /**\n * Get current map rotation\n * \n * @returns {number} theta map degrees\n * \n * @since leaflet-rotate (v0.1)\n */\n getBearing: function() {\n return this._bearing * L.DomUtil.RAD_TO_DEG;\n },\n\n /**\n * Creates a new [map pane](#map-pane) with the given name if it doesn't\n * exist already, then returns it. The pane is created as a child of\n * `container`, or as a child of the main map pane if not set.\n * \n * @param {String} name leaflet pane\n * @param {HTMLElement} [container] parent element\n * @returns {HTMLElement} pane container\n */\n // createPane: function(name, container) {\n // if (!this._rotate || name == 'mapPane') {\n // return mapProto.createPane.apply(this, arguments);\n // }\n // // init \"rotatePane\"\n // if (!this._rotatePane) {\n // // this._pivot = this.getSize().divideBy(2);\n // this._rotatePane = mapProto.createPane.call(this, 'rotatePane', this._mapPane);\n // L.DomUtil.setPosition(this._rotatePane, new L.Point(0, 0), this._bearing, this._pivot);\n // }\n // return mapProto.createPane.call(this, name, container || this._rotatePane);\n // },\n\n /**\n * Panes are DOM elements used to control the ordering of layers on\n * the map. You can access panes with [`map.getPane`](#map-getpane)\n * or [`map.getPanes`](#map-getpanes) methods. New panes can be created\n * with the [`map.createPane`](#map-createpane) method.\n * \n * Every map has the following default panes that differ only in zIndex:\n * \n * - mapPane [HTMLElement = 'auto'] - Pane that contains all other map panes\n * - tilePane [HTMLElement = 2] - Pane for tile layers\n * - overlayPane [HTMLElement = 4] - Pane for overlays like polylines and polygons\n * - shadowPane [HTMLElement = 5] - Pane for overlay shadows (e.g. marker shadows)\n * - markerPane [HTMLElement = 6] - Pane for marker icons\n * - tooltipPane [HTMLElement = 650] - Pane for tooltips.\n * - popupPane [HTMLElement = 700] - Pane for popups.\n */\n _initPanes: function() {\n var panes = this._panes = {};\n this._paneRenderers = {};\n\n this._mapPane = this.createPane('mapPane', this._container);\n L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0));\n\n if (this._rotate) {\n this._rotatePane = this.createPane('rotatePane', this._mapPane);\n this._norotatePane = this.createPane('norotatePane', this._mapPane);\n // rotatePane\n this.createPane('tilePane', this._rotatePane);\n this.createPane('overlayPane', this._rotatePane);\n // norotatePane\n this.createPane('shadowPane', this._norotatePane);\n this.createPane('markerPane', this._norotatePane);\n this.createPane('tooltipPane', this._norotatePane);\n this.createPane('popupPane', this._norotatePane);\n } else {\n this.createPane('tilePane');\n this.createPane('overlayPane');\n this.createPane('shadowPane');\n this.createPane('markerPane');\n this.createPane('tooltipPane');\n this.createPane('popupPane');\n }\n\n if (!this.options.markerZoomAnimation) {\n L.DomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\n L.DomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\n }\n },\n\n /**\n * Pans the map the minimum amount to make the `latlng` visible. Use\n * padding options to fit the display to more restricted bounds.\n * If `latlng` is already within the (optionally padded) display bounds,\n * the map will not be panned.\n * \n * @see https://github.com/Raruto/leaflet-rotate/issues/18\n * \n * @param {L.LatLng} latlng coordinates\n * @param {Object} [options={}] padding options\n * \n * @returns {L.Map} current map instance\n */\n panInside(latlng, options) {\n options = options || {};\n\n const paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),\n paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]),\n /** @TODO use mapProto.panInside */\n // pixelPoint = this.project(latlng),\n // pixelBounds = this.getPixelBounds(),\n // pixelCenter = this.project(this.getCenter()),\n rect = this._container.getBoundingClientRect(),\n pixelPoint = this.latLngToContainerPoint(latlng),\n pixelBounds = L.bounds([ L.point(rect), L.point(rect).add(this.getSize()) ]),\n pixelCenter = pixelBounds.getCenter(),\n //\n paddedBounds = L.bounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\n paddedSize = paddedBounds.getSize();\n \n if (!paddedBounds.contains(pixelPoint)) {\n this._enforcingBounds = true;\n const centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\n const offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\n pixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\n pixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\n /** @TODO use mapProto.panInside */\n // this.panTo(this.unproject(pixelCenter), options);\n this.panTo(this.containerPointToLatLng(pixelCenter), options);\n //\n this._enforcingBounds = false;\n }\n return this;\n },\n\n /**\n * Pans the map to the closest view that would lie inside the given bounds\n * (if it's not already), controlling the animation using the options specific,\n * if any.\n * \n * @TODO check if map bounds calculated by `L.Map::panInsideBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n *\n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @param {L.LatLngBounds} bounds coordinates\n * @param {Object} [options] pan options\n * @returns {L.Map} current map instance\n */\n // panInsideBounds: function (bounds, options) {\n // this._enforcingBounds = true;\n // var center = this.getCenter(),\n // newCenter = this._limitCenter(center, this._zoom, L.latLngBounds(bounds));\n //\n // if (!center.equals(newCenter)) {\n // this.panTo(newCenter, options);\n // }\n //\n // this._enforcingBounds = false;\n // return this;\n // },\n\n // adjust center for view to get inside bounds\n // _limitCenter(center, zoom, bounds) {\n //\n // if (!bounds) { return center; }\n //\n // const centerPoint = this.project(center, zoom),\n // viewHalf = this.getSize().divideBy(2),\n // viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\n // offset = this._getBoundsOffset(viewBounds, bounds, zoom);\n //\n // // If offset is less than a pixel, ignore.\n // // This prevents unstable projections from getting into\n // // an infinite loop of tiny offsets.\n // if (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\n // return center;\n // }\n //\n // return this.unproject(centerPoint.add(offset), zoom);\n // },\n\n // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\n // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\n // but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\n // flyToBounds(bounds, options) {\n // const target = this._getBoundsCenterZoom(bounds, options);\n // return this.flyTo(target.center, target.zoom, options);\n // },\n\n // _getBoundsCenterZoom(bounds, options) {\n //\n // options = options || {};\n // bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\n //\n // const paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),\n // paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]);\n //\n // let zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\n //\n // zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\n //\n // if (zoom === Infinity) {\n // return { center: bounds.getCenter(), zoom };\n // }\n //\n // return { center, zoom };\n //\n // },\n\n /**\n * Returns the maximum zoom level on which the given bounds fit to the map\n * view in its entirety. If `inside` (optional) is set to `true`, the method\n * instead returns the minimum zoom level on which the map view fits into\n * the given bounds in its entirety.\n * \n * @param {L.LatLngBounds} bounds\n * @param {Boolean} [inside=false]\n * @param {L.Point} [padding=[0,0]]\n * \n * @returns {Number} zoom level\n */\n getBoundsZoom(bounds, inside, padding) {\n if (!this._rotate || Math.abs(this._bearing).toFixed(1) < 0.1) {\n return mapProto.getBoundsZoom.apply(this, arguments);\n }\n\n bounds = L.latLngBounds(bounds);\n padding = L.point(padding || [0, 0]);\n\n let zoom = this.getZoom() || 0;\n const min = this.getMinZoom(),\n max = this.getMaxZoom(),\n /** @TODO use mapProto.getBoundsZoom */\n // nw = bounds.getNorthWest(),\n // se = bounds.getSouthEast(),\n // size = this.getSize().subtract(padding),\n // boundsSize = L.bounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\n size = this.getSize().subtract(padding),\n boundsSize = this.mapBoundsToContainerBounds(bounds).getSize(),\n snap = this.options.zoomSnap,\n scalex = size.x / boundsSize.x,\n scaley = size.y / boundsSize.y,\n scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\n\n zoom = this.getScaleZoom(scale, zoom);\n\n if (snap) {\n zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\n zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\n }\n\n return Math.max(min, Math.min(max, zoom));\n },\n\n /**\n * Layer point of the current center\n * \n * @returns {L.Point} layer center\n */\n // _getCenterLayerPoint: function () {\n // return this.containerPointToLayerPoint(this.getSize()._divideBy(2));\n // },\n\n /**\n * Offset of the specified place to the current center in pixels\n * \n * @param {L.LatLng} latlng map coordinates\n */\n _getCenterOffset: function(latlng) {\n var centerOffset = mapProto._getCenterOffset.apply(this, arguments);\n if (this._rotate) {\n centerOffset = centerOffset.rotate(this._bearing);\n }\n return centerOffset;\n },\n\n /**\n * @since leaflet-rotate (v0.1)\n */\n _getRotatePanePos: function() {\n return this._rotatePanePos || new L.Point(0, 0);\n // return L.DomUtil.getPosition(this._rotatePane) || new L.Point(0, 0);\n },\n\n _getNewPixelOrigin: function(center, zoom) {\n var viewHalf = this.getSize()._divideBy(2);\n if (!this._rotate) {\n return mapProto._getNewPixelOrigin.apply(this, arguments);\n }\n return this.project(center, zoom)\n .rotate(this._bearing)\n ._subtract(viewHalf)\n ._add(this._getMapPanePos())\n ._add(this._getRotatePanePos())\n .rotate(-this._bearing)\n ._round();\n },\n\n /**\n * @since leaflet-rotate (v0.2)\n * \n * @see src\\layer\\tile\\GridLayer::_getTiledPixelBounds()\n */\n _getNewPixelBounds: function(center, zoom) {\n center = center || this.getCenter();\n zoom = zoom || this.getZoom();\n if (!this._rotate && mapProto._getNewPixelBounds) {\n return mapProto._getNewPixelBounds.apply(this, arguments);\n }\n var mapZoom = this._animatingZoom ? Math.max(this._animateToZoom, this.getZoom()) : this.getZoom(),\n scale = this.getZoomScale(mapZoom, zoom),\n pixelCenter = this.project(center, zoom).floor(),\n size = this.getSize(),\n halfSize = new L.Bounds([\n this.containerPointToLayerPoint([0, 0]).floor(),\n this.containerPointToLayerPoint([size.x, 0]).floor(),\n this.containerPointToLayerPoint([0, size.y]).floor(),\n this.containerPointToLayerPoint([size.x, size.y]).floor()\n ]).getSize().divideBy(scale * 2);\n\n return new L.Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n },\n\n /**\n * @since leaflet-rotate (v0.2)\n * \n * @return {L.Point} map pivot point (center)\n */\n _getPixelCenter: function() {\n if (!this._rotate && mapProto._getPixelCenter) {\n return mapProto._getPixelCenter.apply(this, arguments);\n }\n return this.getSize()._divideBy(2)._subtract(this._getMapPanePos());\n },\n\n /**\n * @since leaflet-rotate (v0.2)\n * \n * @see src\\layer\\vector\\Renderer::_update()\n */\n _getPaddedPixelBounds: function(padding) {\n if (!this._rotate && mapProto._getPaddedPixelBounds) {\n return mapProto._getPaddedPixelBounds.apply(this, arguments);\n }\n var p = padding,\n size = this.getSize(),\n padMin = size.multiplyBy(-p),\n padMax = size.multiplyBy(1 + p);\n //min = this.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n return new L.Bounds([\n this.containerPointToLayerPoint([padMin.x, padMin.y]).floor(),\n this.containerPointToLayerPoint([padMin.x, padMax.y]).floor(),\n this.containerPointToLayerPoint([padMax.x, padMin.y]).floor(),\n this.containerPointToLayerPoint([padMax.x, padMax.y]).floor()\n ]);\n },\n\n _handleGeolocationResponse: function(pos) {\n if (!this._container._leaflet_id) { return; }\n\n var lat = pos.coords.latitude,\n lng = pos.coords.longitude,\n /** @TODO use mapProto._handleGeolocationResponse */\n hdg = pos.coords.heading,\n latlng = new L.LatLng(lat, lng),\n bounds = latlng.toBounds(pos.coords.accuracy),\n options = this._locateOptions;\n\n if (options.setView) {\n var zoom = this.getBoundsZoom(bounds);\n this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\n }\n\n var data = {\n latlng: latlng,\n bounds: bounds,\n timestamp: pos.timestamp,\n /** @TODO use mapProto._handleGeolocationResponse */\n heading: hdg\n };\n\n for (var i in pos.coords) {\n if (typeof pos.coords[i] === 'number') {\n data[i] = pos.coords[i];\n }\n }\n\n // @event locationfound: LocationEvent\n // Fired when geolocation (using the [`locate`](#map-locate) method)\n // went successfully.\n this.fire('locationfound', data);\n },\n\n /**\n * @see https://github.com/ronikar/Leaflet/blob/5c480ef959b947c3beed7065425a5a36c486262b/src/geo/LatLngBounds.js#L253-L264\n * \n * @param {L.Bounds} points \n * @returns {L.Bounds}\n */\n // toCircumscribedBounds(points) {\n // var minX = points.reduce(function (pv, v) { return Math.min(pv, v.x); }, points[0].x),\n // maxX = points.reduce(function (pv, v) { return Math.max(pv, v.x); }, points[0].x),\n // minY = points.reduce(function (pv, v) { return Math.min(pv, v.y); }, points[0].y),\n // maxY = points.reduce(function (pv, v) { return Math.max(pv, v.y); }, points[0].y);\n //\n // return L.bounds(L.point(minX, minY), L.point(maxX, maxY));\n // },\n\n});\n","/**\n * Rotates the map according to a smartphone's compass.\n * \n * @typedef L.Map.CompassBearing\n */\n\nL.Map.CompassBearing = L.Handler.extend({\n\n initialize: function(map) {\n this._map = map;\n this._throttled = L.Util.throttle(this._onDeviceOrientation, 1000, this);\n },\n\n addHooks: function() {\n if (this._map._rotate && window.DeviceOrientationEvent) {\n L.DomEvent.on(window, 'deviceorientation', this._throttled, this);\n }\n },\n\n removeHooks: function() {\n if (this._map._rotate && window.DeviceOrientationEvent) {\n L.DomEvent.off(window, 'deviceorientation', this._throttled, this);\n }\n },\n\n _onDeviceOrientation: function(event) {\n if (event.alpha !== null && window.orientation !== undefined) {\n this._map.setBearing(event.alpha - window.orientation);\n }\n },\n\n});\n\n/**\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 * \n */\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 this._onDeviceOrientation = L.Util.throttle(this._unthrottledOnDeviceOrientation, 100, this);\n\n var container = this._container = L.DomUtil.create('div', 'leaflet-control-rotate leaflet-bar');\n\n // this.button = L.Control.Zoom.prototype._createButton.call(this, 'R', 'leaflet-control-rotate', 'leaflet-control-rotate', container, this._toggleLock);\n\n var arrow = this._arrow = L.DomUtil.create('span', 'leaflet-control-rotate-arrow');\n\n arrow.style.backgroundImage = `url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E\")`;\n arrow.style.cursor = 'grab';\n arrow.style.display = 'block';\n arrow.style.width = '100%';\n arrow.style.height = '100%';\n arrow.style.backgroundRepeat = 'no-repeat';\n arrow.style.backgroundPosition = '50%';\n\n // Copy-pasted from L.Control.Zoom\n var link = this._link = L.DomUtil.create('a', 'leaflet-control-rotate-toggle', container);\n link.appendChild(arrow);\n link.href = '#';\n link.title = 'Rotate map';\n // link.draggable = false;\n\n L.DomEvent\n .on(link, 'dblclick', L.DomEvent.stopPropagation)\n .on(link, 'mousedown', this._handleMouseDown, this)\n .on(link, 'click', L.DomEvent.stop)\n .on(link, 'click', this._cycleState, this)\n .on(link, 'click', this._refocusOnMap, this);\n\n if (!L.Browser.any3d) {\n L.DomUtil.addClass(link, 'leaflet-disabled');\n }\n\n this._restyle();\n\n map.on('rotate', this._restyle.bind(this));\n\n // State flag\n this._follow = false;\n this._canFollow = false;\n\n if (this.options.closeOnZeroBearing && map.getBearing() === 0) {\n container.style.display = 'none';\n }\n\n return container;\n },\n\n _handleMouseDown: function(e) {\n L.DomEvent.stop(e); // L.DomEvent.stopPropagation(e);\n this.dragging = true;\n this.dragstartX = e.pageX;\n this.dragstartY = e.pageY;\n L.DomEvent\n .on(document, 'mousemove', this._handleMouseDrag, this)\n .on(document, 'mouseup', this._handleMouseUp, this);\n },\n\n _handleMouseUp: function(e) {\n L.DomEvent.stop(e); // L.DomEvent.stopPropagation(e);\n this.dragging = false;\n\n L.DomEvent\n .off(document, 'mousemove', this._handleMouseDrag, this)\n .off(document, 'mouseup', this._handleMouseUp, this);\n },\n\n _handleMouseDrag: function(e) {\n if (!this.dragging) { return; }\n var deltaX = e.clientX - this.dragstartX;\n this._map.setBearing(deltaX);\n },\n\n _cycleState: function(ev) {\n var map = this._map;\n\n if (!map) { return; }\n\n if (!map.touchRotate.enabled() && !map.compassBearing.enabled()) {\n // Go from disabled to touch\n map.touchRotate.enable();\n\n // console.log('state is now: touch rotate');\n } else {\n\n if (!map.compassBearing.enabled()) {\n // Go from touch to compass\n map.touchRotate.disable();\n map.compassBearing.enable();\n\n // console.log('state is now: compass');\n\n // It is possible that compass is not supported. If so,\n // the hangler will automatically go from compass to disabled.\n } else {\n // Go from compass to disabled\n map.compassBearing.disable();\n\n // console.log('state is now: locked');\n\n map.setBearing(0);\n if (this.options.closeOnZeroBearing) {\n map.touchRotate.enable();\n }\n }\n }\n this._restyle();\n },\n\n _restyle: function() {\n if (this._map.options.rotate) {\n var map = this._map;\n var bearing = map.getBearing();\n if (this.options.closeOnZeroBearing && bearing) {\n this._container.style.display = 'block';\n }\n\n var cssTransform = 'rotate(' + bearing + 'deg)';\n this._arrow.style.transform = cssTransform;\n\n if (map.compassBearing.enabled()) {\n this._link.style.backgroundColor = 'orange';\n } else if (map.touchRotate.enabled()) {\n this._link.style.backgroundColor = null;\n } else {\n this._link.style.backgroundColor = 'grey';\n if (this.options.closeOnZeroBearing && map.getBearing() === 0) {\n this._container.style.display = 'none';\n }\n }\n } else {\n L.DomUtil.addClass(this._link, 'leaflet-disabled');\n }\n },\n\n});\n\nL.control.rotate = function(options) {\n return new L.Control.Rotate(options);\n};\n\nL.Map.mergeOptions({\n rotateControl: true,\n});\n\nL.Map.addInitHook(function() {\n if (this.options.rotateControl) {\n var options = typeof this.options.rotateControl === 'object' ? this.options.rotateControl : {};\n this.rotateControl = L.control.rotate(options);\n this.addControl(this.rotateControl);\n }\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"leaflet-rotate.js","sources":["../src/dom/DomUtil.js","../src/dom/Draggable.js","../src/geometry/Point.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/Icon.js","../src/layer/marker/Marker.js","../src/layer/tile/GridLayer.js","../src/layer/vector/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 // same as `this.latLngToContainerPoint(latlng)` but with floating point precision\n const origin = this.getPixelOrigin().add(this._getMapPanePos());\n const nw = this.project(bounds.getNorthWest())._subtract(origin),\n ne = this.project(bounds.getNorthEast())._subtract(origin),\n sw = this.project(bounds.getSouthWest())._subtract(origin),\n se = this.project(bounds.getSouthEast())._subtract(origin);\n return L.bounds([\n L.point(Math.min(nw.x, ne.x, se.x, sw.x), Math.min(nw.y, ne.y, se.y, sw.y)), // [ minX, minY ]\n L.point(Math.max(nw.x, ne.x, se.x, sw.x), Math.max(nw.y, ne.y, se.y, sw.y)) // [ maxX, maxY ]\n ]);\n },\n\n /**\n * Returns geographical bounds visible in the current map view\n * \n * @TODO find out if map bounds calculated by `L.Map::getBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n * \n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @returns {L.LatLngBounds}\n */\n getBounds: function() {\n if (!this._rotate) {\n return mapProto.getBounds.apply(this, arguments);\n }\n\n // SEE: https://github.com/fnicollet/Leaflet/pull/22\n //\n // var bounds = this.getPixelBounds(),\n // sw = this.unproject(bounds.getBottomLeft()),\n // ne = this.unproject(bounds.getTopRight());\n // return new LatLngBounds(sw, ne);\n //\n\n // LatLngBounds' constructor automatically\n // extends the bounds to fit the passed points\n var size = this.getSize();\n return new L.LatLngBounds([\n this.containerPointToLatLng([0, 0]), // topleft\n this.containerPointToLatLng([size.x, 0]), // topright \n this.containerPointToLatLng([size.x, size.y]), // bottomright\n this.containerPointToLatLng([0, size.y]), // bottomleft\n ]);\n },\n\n /**\n * Returns the bounds of the current map view in projected pixel\n * coordinates (sometimes useful in layer and overlay implementations).\n * \n * @TODO find out if map bounds calculated by `L.Map::getPixelBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n *\n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @returns {L.Bounds}\n */\n // getPixelBounds(center, zoom) {\n // // const topLeftPoint = map.containerPointToLayerPoint(this._getTopLeftPoint());\n // const topLeftPoint = this._getTopLeftPoint(center, zoom);\n // return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\n // },\n\n /**\n * Change map rotation\n * \n * @param {number} theta map degrees\n * \n * @since leaflet-rotate (v0.1)\n */\n setBearing: function(theta) {\n if (!L.Browser.any3d || !this._rotate) { return; }\n\n var bearing = L.Util.wrapNum(theta, [0, 360]) * L.DomUtil.DEG_TO_RAD,\n center = this._getPixelCenter(),\n oldPos = this._getRotatePanePos().rotateFrom(-this._bearing, center),\n newPos = oldPos.rotateFrom(bearing, center);\n\n // CSS transform\n L.DomUtil.setPosition(this._rotatePane, oldPos, bearing, center);\n\n this._pivot = center;\n this._bearing = bearing;\n this._rotatePanePos = newPos;\n\n this.fire('rotate');\n },\n\n /**\n * Get current map rotation\n * \n * @returns {number} theta map degrees\n * \n * @since leaflet-rotate (v0.1)\n */\n getBearing: function() {\n return this._bearing * L.DomUtil.RAD_TO_DEG;\n },\n\n /**\n * Creates a new [map pane](#map-pane) with the given name if it doesn't\n * exist already, then returns it. The pane is created as a child of\n * `container`, or as a child of the main map pane if not set.\n * \n * @param {String} name leaflet pane\n * @param {HTMLElement} [container] parent element\n * @returns {HTMLElement} pane container\n */\n // createPane: function(name, container) {\n // if (!this._rotate || name == 'mapPane') {\n // return mapProto.createPane.apply(this, arguments);\n // }\n // // init \"rotatePane\"\n // if (!this._rotatePane) {\n // // this._pivot = this.getSize().divideBy(2);\n // this._rotatePane = mapProto.createPane.call(this, 'rotatePane', this._mapPane);\n // L.DomUtil.setPosition(this._rotatePane, new L.Point(0, 0), this._bearing, this._pivot);\n // }\n // return mapProto.createPane.call(this, name, container || this._rotatePane);\n // },\n\n /**\n * Panes are DOM elements used to control the ordering of layers on\n * the map. You can access panes with [`map.getPane`](#map-getpane)\n * or [`map.getPanes`](#map-getpanes) methods. New panes can be created\n * with the [`map.createPane`](#map-createpane) method.\n * \n * Every map has the following default panes that differ only in zIndex:\n * \n * - mapPane [HTMLElement = 'auto'] - Pane that contains all other map panes\n * - tilePane [HTMLElement = 2] - Pane for tile layers\n * - overlayPane [HTMLElement = 4] - Pane for overlays like polylines and polygons\n * - shadowPane [HTMLElement = 5] - Pane for overlay shadows (e.g. marker shadows)\n * - markerPane [HTMLElement = 6] - Pane for marker icons\n * - tooltipPane [HTMLElement = 650] - Pane for tooltips.\n * - popupPane [HTMLElement = 700] - Pane for popups.\n */\n _initPanes: function() {\n var panes = this._panes = {};\n this._paneRenderers = {};\n\n this._mapPane = this.createPane('mapPane', this._container);\n L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0));\n\n if (this._rotate) {\n this._rotatePane = this.createPane('rotatePane', this._mapPane);\n this._norotatePane = this.createPane('norotatePane', this._mapPane);\n // rotatePane\n this.createPane('tilePane', this._rotatePane);\n this.createPane('overlayPane', this._rotatePane);\n // norotatePane\n this.createPane('shadowPane', this._norotatePane);\n this.createPane('markerPane', this._norotatePane);\n this.createPane('tooltipPane', this._norotatePane);\n this.createPane('popupPane', this._norotatePane);\n } else {\n this.createPane('tilePane');\n this.createPane('overlayPane');\n this.createPane('shadowPane');\n this.createPane('markerPane');\n this.createPane('tooltipPane');\n this.createPane('popupPane');\n }\n\n if (!this.options.markerZoomAnimation) {\n L.DomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\n L.DomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\n }\n },\n\n /**\n * Pans the map the minimum amount to make the `latlng` visible. Use\n * padding options to fit the display to more restricted bounds.\n * If `latlng` is already within the (optionally padded) display bounds,\n * the map will not be panned.\n * \n * @see https://github.com/Raruto/leaflet-rotate/issues/18\n * \n * @param {L.LatLng} latlng coordinates\n * @param {Object} [options={}] padding options\n * \n * @returns {L.Map} current map instance\n */\n panInside(latlng, options) {\n options = options || {};\n\n const paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),\n paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]),\n /** @TODO use mapProto.panInside */\n // pixelPoint = this.project(latlng),\n // pixelBounds = this.getPixelBounds(),\n // pixelCenter = this.project(this.getCenter()),\n rect = this._container.getBoundingClientRect(),\n pixelPoint = this.latLngToContainerPoint(latlng),\n pixelBounds = L.bounds([ L.point(rect), L.point(rect).add(this.getSize()) ]),\n pixelCenter = pixelBounds.getCenter(),\n //\n paddedBounds = L.bounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\n paddedSize = paddedBounds.getSize();\n \n if (!paddedBounds.contains(pixelPoint)) {\n this._enforcingBounds = true;\n const centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\n const offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\n pixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\n pixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\n /** @TODO use mapProto.panInside */\n // this.panTo(this.unproject(pixelCenter), options);\n this.panTo(this.containerPointToLatLng(pixelCenter), options);\n //\n this._enforcingBounds = false;\n }\n return this;\n },\n\n /**\n * Pans the map to the closest view that would lie inside the given bounds\n * (if it's not already), controlling the animation using the options specific,\n * if any.\n * \n * @TODO check if map bounds calculated by `L.Map::panInsideBounds()`\n * function should match the `rotatePane` or `norotatePane` bounds\n *\n * @see https://github.com/fnicollet/Leaflet/issues/7\n * \n * @param {L.LatLngBounds} bounds coordinates\n * @param {Object} [options] pan options\n * @returns {L.Map} current map instance\n */\n // panInsideBounds: function (bounds, options) {\n // this._enforcingBounds = true;\n // var center = this.getCenter(),\n // newCenter = this._limitCenter(center, this._zoom, L.latLngBounds(bounds));\n //\n // if (!center.equals(newCenter)) {\n // this.panTo(newCenter, options);\n // }\n //\n // this._enforcingBounds = false;\n // return this;\n // },\n\n // adjust center for view to get inside bounds\n // _limitCenter(center, zoom, bounds) {\n //\n // if (!bounds) { return center; }\n //\n // const centerPoint = this.project(center, zoom),\n // viewHalf = this.getSize().divideBy(2),\n // viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\n // offset = this._getBoundsOffset(viewBounds, bounds, zoom);\n //\n // // If offset is less than a pixel, ignore.\n // // This prevents unstable projections from getting into\n // // an infinite loop of tiny offsets.\n // if (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\n // return center;\n // }\n //\n // return this.unproject(centerPoint.add(offset), zoom);\n // },\n\n // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\n // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\n // but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\n // flyToBounds(bounds, options) {\n // const target = this._getBoundsCenterZoom(bounds, options);\n // return this.flyTo(target.center, target.zoom, options);\n // },\n\n // _getBoundsCenterZoom(bounds, options) {\n //\n // options = options || {};\n // bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\n //\n // const paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]),\n // paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]);\n //\n // let zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\n //\n // zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\n //\n // if (zoom === Infinity) {\n // return { center: bounds.getCenter(), zoom };\n // }\n //\n // return { center, zoom };\n //\n // },\n\n /**\n * Returns the maximum zoom level on which the given bounds fit to the map\n * view in its entirety. If `inside` (optional) is set to `true`, the method\n * instead returns the minimum zoom level on which the map view fits into\n * the given bounds in its entirety.\n * \n * @param {L.LatLngBounds} bounds\n * @param {Boolean} [inside=false]\n * @param {L.Point} [padding=[0,0]]\n * \n * @returns {Number} zoom level\n */\n getBoundsZoom(bounds, inside, padding) {\n if (!this._rotate || Math.abs(this._bearing).toFixed(1) < 0.1) {\n return mapProto.getBoundsZoom.apply(this, arguments);\n }\n\n bounds = L.latLngBounds(bounds);\n padding = L.point(padding || [0, 0]);\n\n let zoom = this.getZoom() || 0;\n const min = this.getMinZoom(),\n max = this.getMaxZoom(),\n /** @TODO use mapProto.getBoundsZoom */\n // nw = bounds.getNorthWest(),\n // se = bounds.getSouthEast(),\n // size = this.getSize().subtract(padding),\n // boundsSize = L.bounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\n size = this.getSize().subtract(padding),\n boundsSize = this.mapBoundsToContainerBounds(bounds).getSize(),\n snap = this.options.zoomSnap,\n scalex = size.x / boundsSize.x,\n scaley = size.y / boundsSize.y,\n scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\n\n zoom = this.getScaleZoom(scale, zoom);\n\n if (snap) {\n zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\n zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\n }\n\n return Math.max(min, Math.min(max, zoom));\n },\n\n /**\n * Layer point of the current center\n * \n * @returns {L.Point} layer center\n */\n // _getCenterLayerPoint: function () {\n // return this.containerPointToLayerPoint(this.getSize()._divideBy(2));\n // },\n\n /**\n * Offset of the specified place to the current center in pixels\n * \n * @param {L.LatLng} latlng map coordinates\n */\n _getCenterOffset: function(latlng) {\n var centerOffset = mapProto._getCenterOffset.apply(this, arguments);\n if (this._rotate) {\n centerOffset = centerOffset.rotate(this._bearing);\n }\n return centerOffset;\n },\n\n /**\n * @since leaflet-rotate (v0.1)\n */\n _getRotatePanePos: function() {\n return this._rotatePanePos || new L.Point(0, 0);\n // return L.DomUtil.getPosition(this._rotatePane) || new L.Point(0, 0);\n },\n\n // _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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leaflet-rotate",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "A Leaflet plugin that allows to add rotation functionality to map tiles",
5
5
  "type": "module",
6
6
  "main": "dist/leaflet-rotate.js",