@hpcc-js/map 2.77.0 → 2.77.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -20,8 +20,8 @@
20
20
  }
21
21
 
22
22
  var PKG_NAME = "@hpcc-js/map";
23
- var PKG_VERSION = "2.77.0";
24
- var BUILD_VERSION = "2.104.11";
23
+ var PKG_VERSION = "2.77.1";
24
+ var BUILD_VERSION = "2.104.13";
25
25
 
26
26
  /******************************************************************************
27
27
  Copyright (c) Microsoft Corporation.
@@ -7885,7 +7885,7 @@
7885
7885
  var ___CSS_LOADER_URL_REPLACEMENT_1___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
7886
7886
  var ___CSS_LOADER_URL_REPLACEMENT_2___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);
7887
7887
  // Module
7888
- ___CSS_LOADER_EXPORT___.push([module.id, "/* required styles */\r\n\r\n.leaflet-pane,\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-tile-container,\r\n.leaflet-pane > svg,\r\n.leaflet-pane > canvas,\r\n.leaflet-zoom-box,\r\n.leaflet-image-layer,\r\n.leaflet-layer {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\t}\r\n.leaflet-container {\r\n\toverflow: hidden;\r\n\t}\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\t-webkit-user-select: none;\r\n\t -moz-user-select: none;\r\n\t user-select: none;\r\n\t -webkit-user-drag: none;\r\n\t}\r\n/* Prevents IE11 from highlighting tiles in blue */\r\n.leaflet-tile::selection {\r\n\tbackground: transparent;\r\n}\r\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r\n.leaflet-safari .leaflet-tile {\r\n\timage-rendering: -webkit-optimize-contrast;\r\n\t}\r\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\r\n.leaflet-safari .leaflet-tile-container {\r\n\twidth: 1600px;\r\n\theight: 1600px;\r\n\t-webkit-transform-origin: 0 0;\r\n\t}\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\tdisplay: block;\r\n\t}\r\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\r\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\r\n.leaflet-container .leaflet-overlay-pane svg {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\t}\r\n.leaflet-container .leaflet-marker-pane img,\r\n.leaflet-container .leaflet-shadow-pane img,\r\n.leaflet-container .leaflet-tile-pane img,\r\n.leaflet-container img.leaflet-image-layer,\r\n.leaflet-container .leaflet-tile {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\twidth: auto;\r\n\tpadding: 0;\r\n\t}\r\n\r\n.leaflet-container.leaflet-touch-zoom {\r\n\t-ms-touch-action: pan-x pan-y;\r\n\ttouch-action: pan-x pan-y;\r\n\t}\r\n.leaflet-container.leaflet-touch-drag {\r\n\t-ms-touch-action: pinch-zoom;\r\n\t/* Fallback for FF which doesn't support pinch-zoom */\r\n\ttouch-action: none;\r\n\ttouch-action: pinch-zoom;\r\n}\r\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\r\n\t-ms-touch-action: none;\r\n\ttouch-action: none;\r\n}\r\n.leaflet-container {\r\n\t-webkit-tap-highlight-color: transparent;\r\n}\r\n.leaflet-container a {\r\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\r\n}\r\n.leaflet-tile {\r\n\tfilter: inherit;\r\n\tvisibility: hidden;\r\n\t}\r\n.leaflet-tile-loaded {\r\n\tvisibility: inherit;\r\n\t}\r\n.leaflet-zoom-box {\r\n\twidth: 0;\r\n\theight: 0;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\tz-index: 800;\r\n\t}\r\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\r\n.leaflet-overlay-pane svg {\r\n\t-moz-user-select: none;\r\n\t}\r\n\r\n.leaflet-pane { z-index: 400; }\r\n\r\n.leaflet-tile-pane { z-index: 200; }\r\n.leaflet-overlay-pane { z-index: 400; }\r\n.leaflet-shadow-pane { z-index: 500; }\r\n.leaflet-marker-pane { z-index: 600; }\r\n.leaflet-tooltip-pane { z-index: 650; }\r\n.leaflet-popup-pane { z-index: 700; }\r\n\r\n.leaflet-map-pane canvas { z-index: 100; }\r\n.leaflet-map-pane svg { z-index: 200; }\r\n\r\n.leaflet-vml-shape {\r\n\twidth: 1px;\r\n\theight: 1px;\r\n\t}\r\n.lvml {\r\n\tbehavior: url(#default#VML);\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\t}\r\n\r\n\r\n/* control positioning */\r\n\r\n.leaflet-control {\r\n\tposition: relative;\r\n\tz-index: 800;\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-top,\r\n.leaflet-bottom {\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-top {\r\n\ttop: 0;\r\n\t}\r\n.leaflet-right {\r\n\tright: 0;\r\n\t}\r\n.leaflet-bottom {\r\n\tbottom: 0;\r\n\t}\r\n.leaflet-left {\r\n\tleft: 0;\r\n\t}\r\n.leaflet-control {\r\n\tfloat: left;\r\n\tclear: both;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tfloat: right;\r\n\t}\r\n.leaflet-top .leaflet-control {\r\n\tmargin-top: 10px;\r\n\t}\r\n.leaflet-bottom .leaflet-control {\r\n\tmargin-bottom: 10px;\r\n\t}\r\n.leaflet-left .leaflet-control {\r\n\tmargin-left: 10px;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tmargin-right: 10px;\r\n\t}\r\n\r\n\r\n/* zoom and fade animations */\r\n\r\n.leaflet-fade-anim .leaflet-popup {\r\n\topacity: 0;\r\n\t-webkit-transition: opacity 0.2s linear;\r\n\t -moz-transition: opacity 0.2s linear;\r\n\t transition: opacity 0.2s linear;\r\n\t}\r\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r\n\topacity: 1;\r\n\t}\r\n.leaflet-zoom-animated {\r\n\t-webkit-transform-origin: 0 0;\r\n\t -ms-transform-origin: 0 0;\r\n\t transform-origin: 0 0;\r\n\t}\r\nsvg.leaflet-zoom-animated {\r\n\twill-change: transform;\r\n}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t transition: transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t}\r\n.leaflet-zoom-anim .leaflet-tile,\r\n.leaflet-pan-anim .leaflet-tile {\r\n\t-webkit-transition: none;\r\n\t -moz-transition: none;\r\n\t transition: none;\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-hide {\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n\r\n/* cursors */\r\n\r\n.leaflet-interactive {\r\n\tcursor: pointer;\r\n\t}\r\n.leaflet-grab {\r\n\tcursor: -webkit-grab;\r\n\tcursor: -moz-grab;\r\n\tcursor: grab;\r\n\t}\r\n.leaflet-crosshair,\r\n.leaflet-crosshair .leaflet-interactive {\r\n\tcursor: crosshair;\r\n\t}\r\n.leaflet-popup-pane,\r\n.leaflet-control {\r\n\tcursor: auto;\r\n\t}\r\n.leaflet-dragging .leaflet-grab,\r\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\r\n.leaflet-dragging .leaflet-marker-draggable {\r\n\tcursor: move;\r\n\tcursor: -webkit-grabbing;\r\n\tcursor: -moz-grabbing;\r\n\tcursor: grabbing;\r\n\t}\r\n\r\n/* marker & overlays interactivity */\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-image-layer,\r\n.leaflet-pane > svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive,\r\nsvg.leaflet-image-layer.leaflet-interactive path {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline-offset: 1px;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\tfont-size: 12px;\r\n\tfont-size: 0.75rem;\r\n\tline-height: 1.5;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover,\r\n.leaflet-bar a:focus {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ");\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.8);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover,\r\n.leaflet-control-attribution a:focus {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-control-attribution svg {\r\n\tdisplay: inline !important;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.5);\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 24px 13px 20px;\r\n\tline-height: 1.3;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\tmin-height: 1px;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 17px 0;\r\n\tmargin: 1.3em 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-top: -1px;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\tpointer-events: auto;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tfont: 16px/24px Tahoma, Verdana, sans-serif;\r\n\tcolor: #757575;\r\n\ttext-decoration: none;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover,\r\n.leaflet-container a.leaflet-popup-close-button:focus {\r\n\tcolor: #585858;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\tborder-bottom: 1px solid #ddd;\r\n\tborder-top: 1px solid #ddd;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\t-ms-zoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-interactive {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: \"\";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n\r\n/* Printing */\r\n\t\r\n@media print {\r\n\t/* Prevent printers from removing background-images of controls. */\r\n\t.leaflet-control {\r\n\t\t-webkit-print-color-adjust: exact;\r\n\t\tcolor-adjust: exact;\r\n\t\t}\r\n\t}\r\n", ""]);
7888
+ ___CSS_LOADER_EXPORT___.push([module.id, "/* required styles */\r\n\r\n.leaflet-pane,\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-tile-container,\r\n.leaflet-pane > svg,\r\n.leaflet-pane > canvas,\r\n.leaflet-zoom-box,\r\n.leaflet-image-layer,\r\n.leaflet-layer {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\t}\r\n.leaflet-container {\r\n\toverflow: hidden;\r\n\t}\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\t-webkit-user-select: none;\r\n\t -moz-user-select: none;\r\n\t user-select: none;\r\n\t -webkit-user-drag: none;\r\n\t}\r\n/* Prevents IE11 from highlighting tiles in blue */\r\n.leaflet-tile::selection {\r\n\tbackground: transparent;\r\n}\r\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r\n.leaflet-safari .leaflet-tile {\r\n\timage-rendering: -webkit-optimize-contrast;\r\n\t}\r\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\r\n.leaflet-safari .leaflet-tile-container {\r\n\twidth: 1600px;\r\n\theight: 1600px;\r\n\t-webkit-transform-origin: 0 0;\r\n\t}\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\tdisplay: block;\r\n\t}\r\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\r\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\r\n.leaflet-container .leaflet-overlay-pane svg {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\t}\r\n.leaflet-container .leaflet-marker-pane img,\r\n.leaflet-container .leaflet-shadow-pane img,\r\n.leaflet-container .leaflet-tile-pane img,\r\n.leaflet-container img.leaflet-image-layer,\r\n.leaflet-container .leaflet-tile {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\twidth: auto;\r\n\tpadding: 0;\r\n\t}\r\n\r\n.leaflet-container.leaflet-touch-zoom {\r\n\t-ms-touch-action: pan-x pan-y;\r\n\ttouch-action: pan-x pan-y;\r\n\t}\r\n.leaflet-container.leaflet-touch-drag {\r\n\t-ms-touch-action: pinch-zoom;\r\n\t/* Fallback for FF which doesn't support pinch-zoom */\r\n\ttouch-action: none;\r\n\ttouch-action: pinch-zoom;\r\n}\r\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\r\n\t-ms-touch-action: none;\r\n\ttouch-action: none;\r\n}\r\n.leaflet-container {\r\n\t-webkit-tap-highlight-color: transparent;\r\n}\r\n.leaflet-container a {\r\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\r\n}\r\n.leaflet-tile {\r\n\tfilter: inherit;\r\n\tvisibility: hidden;\r\n\t}\r\n.leaflet-tile-loaded {\r\n\tvisibility: inherit;\r\n\t}\r\n.leaflet-zoom-box {\r\n\twidth: 0;\r\n\theight: 0;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\tz-index: 800;\r\n\t}\r\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\r\n.leaflet-overlay-pane svg {\r\n\t-moz-user-select: none;\r\n\t}\r\n\r\n.leaflet-pane { z-index: 400; }\r\n\r\n.leaflet-tile-pane { z-index: 200; }\r\n.leaflet-overlay-pane { z-index: 400; }\r\n.leaflet-shadow-pane { z-index: 500; }\r\n.leaflet-marker-pane { z-index: 600; }\r\n.leaflet-tooltip-pane { z-index: 650; }\r\n.leaflet-popup-pane { z-index: 700; }\r\n\r\n.leaflet-map-pane canvas { z-index: 100; }\r\n.leaflet-map-pane svg { z-index: 200; }\r\n\r\n.leaflet-vml-shape {\r\n\twidth: 1px;\r\n\theight: 1px;\r\n\t}\r\n.lvml {\r\n\tbehavior: url(#default#VML);\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\t}\r\n\r\n\r\n/* control positioning */\r\n\r\n.leaflet-control {\r\n\tposition: relative;\r\n\tz-index: 800;\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-top,\r\n.leaflet-bottom {\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-top {\r\n\ttop: 0;\r\n\t}\r\n.leaflet-right {\r\n\tright: 0;\r\n\t}\r\n.leaflet-bottom {\r\n\tbottom: 0;\r\n\t}\r\n.leaflet-left {\r\n\tleft: 0;\r\n\t}\r\n.leaflet-control {\r\n\tfloat: left;\r\n\tclear: both;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tfloat: right;\r\n\t}\r\n.leaflet-top .leaflet-control {\r\n\tmargin-top: 10px;\r\n\t}\r\n.leaflet-bottom .leaflet-control {\r\n\tmargin-bottom: 10px;\r\n\t}\r\n.leaflet-left .leaflet-control {\r\n\tmargin-left: 10px;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tmargin-right: 10px;\r\n\t}\r\n\r\n\r\n/* zoom and fade animations */\r\n\r\n.leaflet-fade-anim .leaflet-popup {\r\n\topacity: 0;\r\n\t-webkit-transition: opacity 0.2s linear;\r\n\t -moz-transition: opacity 0.2s linear;\r\n\t transition: opacity 0.2s linear;\r\n\t}\r\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r\n\topacity: 1;\r\n\t}\r\n.leaflet-zoom-animated {\r\n\t-webkit-transform-origin: 0 0;\r\n\t -ms-transform-origin: 0 0;\r\n\t transform-origin: 0 0;\r\n\t}\r\nsvg.leaflet-zoom-animated {\r\n\twill-change: transform;\r\n}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t transition: transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t}\r\n.leaflet-zoom-anim .leaflet-tile,\r\n.leaflet-pan-anim .leaflet-tile {\r\n\t-webkit-transition: none;\r\n\t -moz-transition: none;\r\n\t transition: none;\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-hide {\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n\r\n/* cursors */\r\n\r\n.leaflet-interactive {\r\n\tcursor: pointer;\r\n\t}\r\n.leaflet-grab {\r\n\tcursor: -webkit-grab;\r\n\tcursor: -moz-grab;\r\n\tcursor: grab;\r\n\t}\r\n.leaflet-crosshair,\r\n.leaflet-crosshair .leaflet-interactive {\r\n\tcursor: crosshair;\r\n\t}\r\n.leaflet-popup-pane,\r\n.leaflet-control {\r\n\tcursor: auto;\r\n\t}\r\n.leaflet-dragging .leaflet-grab,\r\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\r\n.leaflet-dragging .leaflet-marker-draggable {\r\n\tcursor: move;\r\n\tcursor: -webkit-grabbing;\r\n\tcursor: -moz-grabbing;\r\n\tcursor: grabbing;\r\n\t}\r\n\r\n/* marker & overlays interactivity */\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-image-layer,\r\n.leaflet-pane > svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive,\r\nsvg.leaflet-image-layer.leaflet-interactive path {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline-offset: 1px;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\tfont-size: 12px;\r\n\tfont-size: 0.75rem;\r\n\tline-height: 1.5;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover,\r\n.leaflet-bar a:focus {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ");\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.8);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover,\r\n.leaflet-control-attribution a:focus {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-attribution-flag {\r\n\tdisplay: inline !important;\r\n\tvertical-align: baseline !important;\r\n\twidth: 1em;\r\n\theight: 0.6669em;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.5);\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 24px 13px 20px;\r\n\tline-height: 1.3;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\tmin-height: 1px;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 17px 0;\r\n\tmargin: 1.3em 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-top: -1px;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\tpointer-events: auto;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tfont: 16px/24px Tahoma, Verdana, sans-serif;\r\n\tcolor: #757575;\r\n\ttext-decoration: none;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover,\r\n.leaflet-container a.leaflet-popup-close-button:focus {\r\n\tcolor: #585858;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\t-ms-zoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-interactive {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: \"\";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n\r\n/* Printing */\r\n\t\r\n@media print {\r\n\t/* Prevent printers from removing background-images of controls. */\r\n\t.leaflet-control {\r\n\t\t-webkit-print-color-adjust: exact;\r\n\t\tprint-color-adjust: exact;\r\n\t\t}\r\n\t}\r\n", ""]);
7889
7889
  // Exports
7890
7890
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
7891
7891
 
@@ -11273,14 +11273,14 @@
11273
11273
  /***/ (function(__unused_webpack_module, exports) {
11274
11274
 
11275
11275
  /* @preserve
11276
- * Leaflet 1.8.0, a JS library for interactive maps. https://leafletjs.com
11276
+ * Leaflet 1.9.2, a JS library for interactive maps. https://leafletjs.com
11277
11277
  * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade
11278
11278
  */
11279
11279
 
11280
11280
  (function (global, factory) {
11281
11281
  factory(exports) ;
11282
11282
  })(this, (function (exports) {
11283
- var version = "1.8.0";
11283
+ var version = "1.9.2";
11284
11284
 
11285
11285
  /*
11286
11286
  * @namespace Util
@@ -11776,35 +11776,30 @@
11776
11776
  },
11777
11777
 
11778
11778
  // attach listener (without syntactic sugar now)
11779
- _on: function (type, fn, context) {
11779
+ _on: function (type, fn, context, _once) {
11780
11780
  if (typeof fn !== 'function') {
11781
11781
  console.warn('wrong listener type: ' + typeof fn);
11782
11782
  return;
11783
11783
  }
11784
- this._events = this._events || {};
11785
11784
 
11786
- /* get/init listeners for type */
11787
- var typeListeners = this._events[type];
11788
- if (!typeListeners) {
11789
- typeListeners = [];
11790
- this._events[type] = typeListeners;
11785
+ // check if fn already there
11786
+ if (this._listens(type, fn, context) !== false) {
11787
+ return;
11791
11788
  }
11792
11789
 
11793
11790
  if (context === this) {
11794
11791
  // Less memory footprint.
11795
11792
  context = undefined;
11796
11793
  }
11797
- var newListener = {fn: fn, ctx: context},
11798
- listeners = typeListeners;
11799
11794
 
11800
- // check if fn already there
11801
- for (var i = 0, len = listeners.length; i < len; i++) {
11802
- if (listeners[i].fn === fn && listeners[i].ctx === context) {
11803
- return;
11804
- }
11795
+ var newListener = {fn: fn, ctx: context};
11796
+ if (_once) {
11797
+ newListener.once = true;
11805
11798
  }
11806
11799
 
11807
- listeners.push(newListener);
11800
+ this._events = this._events || {};
11801
+ this._events[type] = this._events[type] || [];
11802
+ this._events[type].push(newListener);
11808
11803
  },
11809
11804
 
11810
11805
  _off: function (type, fn, context) {
@@ -11812,10 +11807,11 @@
11812
11807
  i,
11813
11808
  len;
11814
11809
 
11815
- if (!this._events) { return; }
11810
+ if (!this._events) {
11811
+ return;
11812
+ }
11816
11813
 
11817
11814
  listeners = this._events[type];
11818
-
11819
11815
  if (!listeners) {
11820
11816
  return;
11821
11817
  }
@@ -11833,32 +11829,24 @@
11833
11829
  return;
11834
11830
  }
11835
11831
 
11836
- if (context === this) {
11837
- context = undefined;
11838
- }
11839
-
11840
11832
  if (typeof fn !== 'function') {
11841
11833
  console.warn('wrong listener type: ' + typeof fn);
11842
11834
  return;
11843
11835
  }
11836
+
11844
11837
  // find fn and remove it
11845
- for (i = 0, len = listeners.length; i < len; i++) {
11846
- var l = listeners[i];
11847
- if (l.ctx !== context) { continue; }
11848
- if (l.fn === fn) {
11849
- if (this._firingCount) {
11850
- // set the removed listener to noop so that's not called if remove happens in fire
11851
- l.fn = falseFn;
11852
-
11853
- /* copy array in case events are being fired */
11854
- this._events[type] = listeners = listeners.slice();
11855
- }
11856
- listeners.splice(i, 1);
11838
+ var index = this._listens(type, fn, context);
11839
+ if (index !== false) {
11840
+ var listener = listeners[index];
11841
+ if (this._firingCount) {
11842
+ // set the removed listener to noop so that's not called if remove happens in fire
11843
+ listener.fn = falseFn;
11857
11844
 
11858
- return;
11845
+ /* copy array in case events are being fired */
11846
+ this._events[type] = listeners = listeners.slice();
11859
11847
  }
11848
+ listeners.splice(index, 1);
11860
11849
  }
11861
- console.warn('listener not found');
11862
11850
  },
11863
11851
 
11864
11852
  // @method fire(type: String, data?: Object, propagate?: Boolean): this
@@ -11876,12 +11864,16 @@
11876
11864
 
11877
11865
  if (this._events) {
11878
11866
  var listeners = this._events[type];
11879
-
11880
11867
  if (listeners) {
11881
11868
  this._firingCount = (this._firingCount + 1) || 1;
11882
11869
  for (var i = 0, len = listeners.length; i < len; i++) {
11883
11870
  var l = listeners[i];
11884
- l.fn.call(l.ctx || this, event);
11871
+ // off overwrites l.fn, so we need to copy fn to a var
11872
+ var fn = l.fn;
11873
+ if (l.once) {
11874
+ this.off(type, fn, l.ctx);
11875
+ }
11876
+ fn.call(l.ctx || this, event);
11885
11877
  }
11886
11878
 
11887
11879
  this._firingCount--;
@@ -11897,45 +11889,85 @@
11897
11889
  },
11898
11890
 
11899
11891
  // @method listens(type: String, propagate?: Boolean): Boolean
11892
+ // @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean
11900
11893
  // Returns `true` if a particular event type has any listeners attached to it.
11901
11894
  // The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.
11902
- listens: function (type, propagate) {
11895
+ listens: function (type, fn, context, propagate) {
11903
11896
  if (typeof type !== 'string') {
11904
11897
  console.warn('"string" type argument expected');
11905
11898
  }
11899
+
11900
+ // we don't overwrite the input `fn` value, because we need to use it for propagation
11901
+ var _fn = fn;
11902
+ if (typeof fn !== 'function') {
11903
+ propagate = !!fn;
11904
+ _fn = undefined;
11905
+ context = undefined;
11906
+ }
11907
+
11906
11908
  var listeners = this._events && this._events[type];
11907
- if (listeners && listeners.length) { return true; }
11909
+ if (listeners && listeners.length) {
11910
+ if (this._listens(type, _fn, context) !== false) {
11911
+ return true;
11912
+ }
11913
+ }
11908
11914
 
11909
11915
  if (propagate) {
11910
11916
  // also check parents for listeners if event propagates
11911
11917
  for (var id in this._eventParents) {
11912
- if (this._eventParents[id].listens(type, propagate)) { return true; }
11918
+ if (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }
11919
+ }
11920
+ }
11921
+ return false;
11922
+ },
11923
+
11924
+ // returns the index (number) or false
11925
+ _listens: function (type, fn, context) {
11926
+ if (!this._events) {
11927
+ return false;
11928
+ }
11929
+
11930
+ var listeners = this._events[type] || [];
11931
+ if (!fn) {
11932
+ return !!listeners.length;
11933
+ }
11934
+
11935
+ if (context === this) {
11936
+ // Less memory footprint.
11937
+ context = undefined;
11938
+ }
11939
+
11940
+ for (var i = 0, len = listeners.length; i < len; i++) {
11941
+ if (listeners[i].fn === fn && listeners[i].ctx === context) {
11942
+ return i;
11913
11943
  }
11914
11944
  }
11915
11945
  return false;
11946
+
11916
11947
  },
11917
11948
 
11918
11949
  // @method once(…): this
11919
11950
  // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.
11920
11951
  once: function (types, fn, context) {
11921
11952
 
11953
+ // types can be a map of types/handlers
11922
11954
  if (typeof types === 'object') {
11923
11955
  for (var type in types) {
11924
- this.once(type, types[type], fn);
11956
+ // we don't process space-separated events here for performance;
11957
+ // it's a hot path since Layer uses the on(obj) syntax
11958
+ this._on(type, types[type], fn, true);
11925
11959
  }
11926
- return this;
11927
- }
11928
11960
 
11929
- var handler = bind(function () {
11930
- this
11931
- .off(types, fn, context)
11932
- .off(types, handler, context);
11933
- }, this);
11961
+ } else {
11962
+ // types can be a string of space-separated words
11963
+ types = splitWords(types);
11934
11964
 
11935
- // add a listener that's executed once and removed after that
11936
- return this
11937
- .on(types, fn, context)
11938
- .on(types, handler, context);
11965
+ for (var i = 0, len = types.length; i < len; i++) {
11966
+ this._on(types[i], fn, context, true);
11967
+ }
11968
+ }
11969
+
11970
+ return this;
11939
11971
  },
11940
11972
 
11941
11973
  // @method addEventParent(obj: Evented): this
@@ -12251,21 +12283,36 @@
12251
12283
  Bounds.prototype = {
12252
12284
  // @method extend(point: Point): this
12253
12285
  // Extends the bounds to contain the given point.
12254
- extend: function (point) { // (Point)
12255
- point = toPoint(point);
12286
+
12287
+ // @alternative
12288
+ // @method extend(otherBounds: Bounds): this
12289
+ // Extend the bounds to contain the given bounds
12290
+ extend: function (obj) {
12291
+ var min2, max2;
12292
+ if (!obj) { return this; }
12293
+
12294
+ if (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {
12295
+ min2 = max2 = toPoint(obj);
12296
+ } else {
12297
+ obj = toBounds(obj);
12298
+ min2 = obj.min;
12299
+ max2 = obj.max;
12300
+
12301
+ if (!min2 || !max2) { return this; }
12302
+ }
12256
12303
 
12257
12304
  // @property min: Point
12258
12305
  // The top left corner of the rectangle.
12259
12306
  // @property max: Point
12260
12307
  // The bottom right corner of the rectangle.
12261
12308
  if (!this.min && !this.max) {
12262
- this.min = point.clone();
12263
- this.max = point.clone();
12309
+ this.min = min2.clone();
12310
+ this.max = max2.clone();
12264
12311
  } else {
12265
- this.min.x = Math.min(point.x, this.min.x);
12266
- this.max.x = Math.max(point.x, this.max.x);
12267
- this.min.y = Math.min(point.y, this.min.y);
12268
- this.max.y = Math.max(point.y, this.max.y);
12312
+ this.min.x = Math.min(min2.x, this.min.x);
12313
+ this.max.x = Math.max(max2.x, this.max.x);
12314
+ this.min.y = Math.min(min2.y, this.min.y);
12315
+ this.max.y = Math.max(max2.y, this.max.y);
12269
12316
  }
12270
12317
  return this;
12271
12318
  },
@@ -12273,7 +12320,7 @@
12273
12320
  // @method getCenter(round?: Boolean): Point
12274
12321
  // Returns the center point of the bounds.
12275
12322
  getCenter: function (round) {
12276
- return new Point(
12323
+ return toPoint(
12277
12324
  (this.min.x + this.max.x) / 2,
12278
12325
  (this.min.y + this.max.y) / 2, round);
12279
12326
  },
@@ -12281,13 +12328,13 @@
12281
12328
  // @method getBottomLeft(): Point
12282
12329
  // Returns the bottom-left point of the bounds.
12283
12330
  getBottomLeft: function () {
12284
- return new Point(this.min.x, this.max.y);
12331
+ return toPoint(this.min.x, this.max.y);
12285
12332
  },
12286
12333
 
12287
12334
  // @method getTopRight(): Point
12288
12335
  // Returns the top-right point of the bounds.
12289
12336
  getTopRight: function () { // -> Point
12290
- return new Point(this.max.x, this.min.y);
12337
+ return toPoint(this.max.x, this.min.y);
12291
12338
  },
12292
12339
 
12293
12340
  // @method getTopLeft(): Point
@@ -12367,9 +12414,40 @@
12367
12414
  return xOverlaps && yOverlaps;
12368
12415
  },
12369
12416
 
12417
+ // @method isValid(): Boolean
12418
+ // Returns `true` if the bounds are properly initialized.
12370
12419
  isValid: function () {
12371
12420
  return !!(this.min && this.max);
12372
- }
12421
+ },
12422
+
12423
+
12424
+ // @method pad(bufferRatio: Number): Bounds
12425
+ // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.
12426
+ // For example, a ratio of 0.5 extends the bounds by 50% in each direction.
12427
+ // Negative values will retract the bounds.
12428
+ pad: function (bufferRatio) {
12429
+ var min = this.min,
12430
+ max = this.max,
12431
+ heightBuffer = Math.abs(min.x - max.x) * bufferRatio,
12432
+ widthBuffer = Math.abs(min.y - max.y) * bufferRatio;
12433
+
12434
+
12435
+ return toBounds(
12436
+ toPoint(min.x - heightBuffer, min.y - widthBuffer),
12437
+ toPoint(max.x + heightBuffer, max.y + widthBuffer));
12438
+ },
12439
+
12440
+
12441
+ // @method equals(otherBounds: Bounds): Boolean
12442
+ // Returns `true` if the rectangle is equivalent to the given bounds.
12443
+ equals: function (bounds) {
12444
+ if (!bounds) { return false; }
12445
+
12446
+ bounds = toBounds(bounds);
12447
+
12448
+ return this.min.equals(bounds.getTopLeft()) &&
12449
+ this.max.equals(bounds.getBottomRight());
12450
+ },
12373
12451
  };
12374
12452
 
12375
12453
 
@@ -13277,6 +13355,13 @@
13277
13355
  }
13278
13356
  }());
13279
13357
 
13358
+
13359
+ // @property mac: Boolean; `true` when the browser is running in a Mac platform
13360
+ var mac = navigator.platform.indexOf('Mac') === 0;
13361
+
13362
+ // @property mac: Boolean; `true` when the browser is running in a Linux platform
13363
+ var linux = navigator.platform.indexOf('Linux') === 0;
13364
+
13280
13365
  function userAgentContains(str) {
13281
13366
  return navigator.userAgent.toLowerCase().indexOf(str) >= 0;
13282
13367
  }
@@ -13315,7 +13400,9 @@
13315
13400
  canvas: canvas$1,
13316
13401
  svg: svg$1,
13317
13402
  vml: vml,
13318
- inlineSvg: inlineSvg
13403
+ inlineSvg: inlineSvg,
13404
+ mac: mac,
13405
+ linux: linux
13319
13406
  };
13320
13407
 
13321
13408
  /*
@@ -13458,6 +13545,25 @@
13458
13545
  return;
13459
13546
  }
13460
13547
 
13548
+ // When clicking on an <input>, the browser generates a click on its
13549
+ // <label> (and vice versa) triggering two clicks in quick succession.
13550
+ // This ignores clicks on elements which are a label with a 'for'
13551
+ // attribute (or children of such a label), but not children of
13552
+ // a <input>.
13553
+ var path = getPropagationPath(e);
13554
+ if (path.some(function (el) {
13555
+ return el instanceof HTMLLabelElement && el.attributes.for;
13556
+ }) &&
13557
+ !path.some(function (el) {
13558
+ return (
13559
+ el instanceof HTMLInputElement ||
13560
+ el instanceof HTMLSelectElement
13561
+ );
13562
+ })
13563
+ ) {
13564
+ return;
13565
+ }
13566
+
13461
13567
  var now = Date.now();
13462
13568
  if (now - last <= delay) {
13463
13569
  detail++;
@@ -14079,6 +14185,26 @@
14079
14185
  return this;
14080
14186
  }
14081
14187
 
14188
+ // @function getPropagationPath(ev: DOMEvent): Array
14189
+ // Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).
14190
+ // Returns an array containing the `HTMLElement`s that the given DOM event
14191
+ // should propagate to (if not stopped).
14192
+ function getPropagationPath(ev) {
14193
+ if (ev.composedPath) {
14194
+ return ev.composedPath();
14195
+ }
14196
+
14197
+ var path = [];
14198
+ var el = ev.target;
14199
+
14200
+ while (el) {
14201
+ path.push(el);
14202
+ el = el.parentNode;
14203
+ }
14204
+ return path;
14205
+ }
14206
+
14207
+
14082
14208
  // @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point
14083
14209
  // Gets normalized mouse position from a DOM event relative to the
14084
14210
  // `container` (border excluded) or to the whole page if not specified.
@@ -14098,12 +14224,15 @@
14098
14224
  );
14099
14225
  }
14100
14226
 
14101
- // Chrome on Win scrolls double the pixels as in other platforms (see #4538),
14102
- // and Firefox scrolls device pixels, not CSS pixels
14103
- var wheelPxFactor =
14104
- (Browser.win && Browser.chrome) ? 2 * window.devicePixelRatio :
14105
- Browser.gecko ? window.devicePixelRatio : 1;
14106
14227
 
14228
+ // except , Safari and
14229
+ // We need double the scroll pixels (see #7403 and #4538) for all Browsers
14230
+ // except OSX (Mac) -> 3x, Chrome running on Linux 1x
14231
+
14232
+ var wheelPxFactor =
14233
+ (Browser.linux && Browser.chrome) ? window.devicePixelRatio :
14234
+ Browser.mac ? window.devicePixelRatio * 3 :
14235
+ window.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;
14107
14236
  // @function getWheelDelta(ev: DOMEvent): Number
14108
14237
  // Gets normalized wheel delta from a wheel DOM event, in vertical
14109
14238
  // pixels scrolled (negative if scrolling down).
@@ -14147,6 +14276,7 @@
14147
14276
  disableClickPropagation: disableClickPropagation,
14148
14277
  preventDefault: preventDefault,
14149
14278
  stop: stop,
14279
+ getPropagationPath: getPropagationPath,
14150
14280
  getMousePosition: getMousePosition,
14151
14281
  getWheelDelta: getWheelDelta,
14152
14282
  isExternalTarget: isExternalTarget,
@@ -14162,8 +14292,21 @@
14162
14292
  *
14163
14293
  * @example
14164
14294
  * ```js
14165
- * var fx = new L.PosAnimation();
14166
- * fx.run(el, [300, 500], 0.5);
14295
+ * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);
14296
+ *
14297
+ * myPositionMarker.on("click", function() {
14298
+ * var pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());
14299
+ * pos.y -= 25;
14300
+ * var fx = new L.PosAnimation();
14301
+ *
14302
+ * fx.once('end',function() {
14303
+ * pos.y += 25;
14304
+ * fx.run(myPositionMarker._icon, pos, 0.8);
14305
+ * });
14306
+ *
14307
+ * fx.run(myPositionMarker._icon, pos, 0.3);
14308
+ * });
14309
+ *
14167
14310
  * ```
14168
14311
  *
14169
14312
  * @constructor L.PosAnimation()
@@ -14443,7 +14586,7 @@
14443
14586
  }
14444
14587
 
14445
14588
  // animation didn't start, just reset the map view
14446
- this._resetView(center, zoom);
14589
+ this._resetView(center, zoom, options.pan && options.pan.noMoveStart);
14447
14590
 
14448
14591
  return this;
14449
14592
  },
@@ -14686,11 +14829,13 @@
14686
14829
  setMaxBounds: function (bounds) {
14687
14830
  bounds = toLatLngBounds(bounds);
14688
14831
 
14832
+ if (this.listens('moveend', this._panInsideMaxBounds)) {
14833
+ this.off('moveend', this._panInsideMaxBounds);
14834
+ }
14835
+
14689
14836
  if (!bounds.isValid()) {
14690
14837
  this.options.maxBounds = null;
14691
- return this.off('moveend', this._panInsideMaxBounds);
14692
- } else if (this.options.maxBounds) {
14693
- this.off('moveend', this._panInsideMaxBounds);
14838
+ return this;
14694
14839
  }
14695
14840
 
14696
14841
  this.options.maxBounds = bounds;
@@ -15060,7 +15205,7 @@
15060
15205
  this._checkIfLoaded();
15061
15206
 
15062
15207
  if (this._lastCenter && !this._moved()) {
15063
- return this._lastCenter;
15208
+ return this._lastCenter.clone();
15064
15209
  }
15065
15210
  return this.layerPointToLatLng(this._getCenterLayerPoint());
15066
15211
  },
@@ -15409,7 +15554,7 @@
15409
15554
  // private methods that modify map state
15410
15555
 
15411
15556
  // @section Map state change events
15412
- _resetView: function (center, zoom) {
15557
+ _resetView: function (center, zoom, noMoveStart) {
15413
15558
  setPosition(this._mapPane, new Point(0, 0));
15414
15559
 
15415
15560
  var loading = !this._loaded;
@@ -15420,7 +15565,7 @@
15420
15565
 
15421
15566
  var zoomChanged = this._zoom !== zoom;
15422
15567
  this
15423
- ._moveStart(zoomChanged, false)
15568
+ ._moveStart(zoomChanged, noMoveStart)
15424
15569
  ._move(center, zoom)
15425
15570
  ._moveEnd(zoomChanged);
15426
15571
 
@@ -15617,7 +15762,7 @@
15617
15762
  },
15618
15763
 
15619
15764
  _isClickDisabled: function (el) {
15620
- while (el !== this._container) {
15765
+ while (el && el !== this._container) {
15621
15766
  if (el['_leaflet_disable_click']) { return true; }
15622
15767
  el = el.parentNode;
15623
15768
  }
@@ -16843,7 +16988,7 @@
16843
16988
  return new Scale(options);
16844
16989
  };
16845
16990
 
16846
- var ukrainianFlag = '<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>';
16991
+ var ukrainianFlag = '<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>';
16847
16992
 
16848
16993
 
16849
16994
  /*
@@ -16912,7 +17057,7 @@
16912
17057
  },
16913
17058
 
16914
17059
  // @method addAttribution(text: String): this
16915
- // Adds an attribution text (e.g. `'Vector data &copy; Mapbox'`).
17060
+ // Adds an attribution text (e.g. `'&copy; OpenStreetMap contributors'`).
16916
17061
  addAttribution: function (text) {
16917
17062
  if (!text) { return this; }
16918
17063
 
@@ -17502,6 +17647,55 @@
17502
17647
  function _flat(latlngs) {
17503
17648
  console.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');
17504
17649
  return isFlat(latlngs);
17650
+ }
17651
+
17652
+ /* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng
17653
+ * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.
17654
+ */
17655
+ function polylineCenter(latlngs, crs) {
17656
+ var i, halfDist, segDist, dist, p1, p2, ratio, center;
17657
+
17658
+ if (!latlngs || latlngs.length === 0) {
17659
+ throw new Error('latlngs not passed');
17660
+ }
17661
+
17662
+ if (!isFlat(latlngs)) {
17663
+ console.warn('latlngs are not flat! Only the first ring will be used');
17664
+ latlngs = latlngs[0];
17665
+ }
17666
+
17667
+ var points = [];
17668
+ for (var j in latlngs) {
17669
+ points.push(crs.project(toLatLng(latlngs[j])));
17670
+ }
17671
+
17672
+ var len = points.length;
17673
+
17674
+ for (i = 0, halfDist = 0; i < len - 1; i++) {
17675
+ halfDist += points[i].distanceTo(points[i + 1]) / 2;
17676
+ }
17677
+
17678
+ // The line is so small in the current view that all points are on the same pixel.
17679
+ if (halfDist === 0) {
17680
+ center = points[0];
17681
+ } else {
17682
+ for (i = 0, dist = 0; i < len - 1; i++) {
17683
+ p1 = points[i];
17684
+ p2 = points[i + 1];
17685
+ segDist = p1.distanceTo(p2);
17686
+ dist += segDist;
17687
+
17688
+ if (dist > halfDist) {
17689
+ ratio = (dist - halfDist) / segDist;
17690
+ center = [
17691
+ p2.x - ratio * (p2.x - p1.x),
17692
+ p2.y - ratio * (p2.y - p1.y)
17693
+ ];
17694
+ break;
17695
+ }
17696
+ }
17697
+ }
17698
+ return crs.unproject(toPoint(center));
17505
17699
  }
17506
17700
 
17507
17701
  var LineUtil = {
@@ -17514,7 +17708,8 @@
17514
17708
  _getBitCode: _getBitCode,
17515
17709
  _sqClosestPointOnSegment: _sqClosestPointOnSegment,
17516
17710
  isFlat: isFlat,
17517
- _flat: _flat
17711
+ _flat: _flat,
17712
+ polylineCenter: polylineCenter
17518
17713
  };
17519
17714
 
17520
17715
  /*
@@ -17569,11 +17764,55 @@
17569
17764
  }
17570
17765
 
17571
17766
  return points;
17767
+ }
17768
+
17769
+ /* @function polygonCenter(latlngs: LatLng[] crs: CRS): LatLng
17770
+ * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.
17771
+ */
17772
+ function polygonCenter(latlngs, crs) {
17773
+ var i, j, p1, p2, f, area, x, y, center;
17774
+
17775
+ if (!latlngs || latlngs.length === 0) {
17776
+ throw new Error('latlngs not passed');
17777
+ }
17778
+
17779
+ if (!isFlat(latlngs)) {
17780
+ console.warn('latlngs are not flat! Only the first ring will be used');
17781
+ latlngs = latlngs[0];
17782
+ }
17783
+
17784
+ var points = [];
17785
+ for (var k in latlngs) {
17786
+ points.push(crs.project(toLatLng(latlngs[k])));
17787
+ }
17788
+
17789
+ var len = points.length;
17790
+ area = x = y = 0;
17791
+
17792
+ // polygon centroid algorithm;
17793
+ for (i = 0, j = len - 1; i < len; j = i++) {
17794
+ p1 = points[i];
17795
+ p2 = points[j];
17796
+
17797
+ f = p1.y * p2.x - p2.y * p1.x;
17798
+ x += (p1.x + p2.x) * f;
17799
+ y += (p1.y + p2.y) * f;
17800
+ area += f * 3;
17801
+ }
17802
+
17803
+ if (area === 0) {
17804
+ // Polygon is so small that all points are on same pixel.
17805
+ center = points[0];
17806
+ } else {
17807
+ center = [x / area, y / area];
17808
+ }
17809
+ return crs.unproject(toPoint(center));
17572
17810
  }
17573
17811
 
17574
17812
  var PolyUtil = {
17575
17813
  __proto__: null,
17576
- clipPolygon: clipPolygon
17814
+ clipPolygon: clipPolygon,
17815
+ polygonCenter: polygonCenter
17577
17816
  };
17578
17817
 
17579
17818
  /*
@@ -19532,38 +19771,7 @@
19532
19771
  if (!this._map) {
19533
19772
  throw new Error('Must add layer to map before using getCenter()');
19534
19773
  }
19535
-
19536
- var i, halfDist, segDist, dist, p1, p2, ratio,
19537
- points = this._rings[0],
19538
- len = points.length;
19539
-
19540
- if (!len) { return null; }
19541
-
19542
- // polyline centroid algorithm; only uses the first ring if there are multiple
19543
-
19544
- for (i = 0, halfDist = 0; i < len - 1; i++) {
19545
- halfDist += points[i].distanceTo(points[i + 1]) / 2;
19546
- }
19547
-
19548
- // The line is so small in the current view that all points are on the same pixel.
19549
- if (halfDist === 0) {
19550
- return this._map.layerPointToLatLng(points[0]);
19551
- }
19552
-
19553
- for (i = 0, dist = 0; i < len - 1; i++) {
19554
- p1 = points[i];
19555
- p2 = points[i + 1];
19556
- segDist = p1.distanceTo(p2);
19557
- dist += segDist;
19558
-
19559
- if (dist > halfDist) {
19560
- ratio = (dist - halfDist) / segDist;
19561
- return this._map.layerPointToLatLng([
19562
- p2.x - ratio * (p2.x - p1.x),
19563
- p2.y - ratio * (p2.y - p1.y)
19564
- ]);
19565
- }
19566
- }
19774
+ return polylineCenter(this._defaultShape(), this._map.options.crs);
19567
19775
  },
19568
19776
 
19569
19777
  // @method getBounds(): LatLngBounds
@@ -19805,39 +20013,14 @@
19805
20013
  return !this._latlngs.length || !this._latlngs[0].length;
19806
20014
  },
19807
20015
 
20016
+ // @method getCenter(): LatLng
20017
+ // Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.
19808
20018
  getCenter: function () {
19809
20019
  // throws error when not yet added to map as this center calculation requires projected coordinates
19810
20020
  if (!this._map) {
19811
20021
  throw new Error('Must add layer to map before using getCenter()');
19812
20022
  }
19813
-
19814
- var i, j, p1, p2, f, area, x, y, center,
19815
- points = this._rings[0],
19816
- len = points.length;
19817
-
19818
- if (!len) { return null; }
19819
-
19820
- // polygon centroid algorithm; only uses the first ring if there are multiple
19821
-
19822
- area = x = y = 0;
19823
-
19824
- for (i = 0, j = len - 1; i < len; j = i++) {
19825
- p1 = points[i];
19826
- p2 = points[j];
19827
-
19828
- f = p1.y * p2.x - p2.y * p1.x;
19829
- x += (p1.x + p2.x) * f;
19830
- y += (p1.y + p2.y) * f;
19831
- area += f * 3;
19832
- }
19833
-
19834
- if (area === 0) {
19835
- // Polygon is so small that all points are on same pixel.
19836
- center = points[0];
19837
- } else {
19838
- center = [x / area, y / area];
19839
- }
19840
- return this._map.layerPointToLatLng(center);
20023
+ return polygonCenter(this._defaultShape(), this._map.options.crs);
19841
20024
  },
19842
20025
 
19843
20026
  _convertLatLngs: function (latlngs) {
@@ -20122,14 +20305,24 @@
20122
20305
 
20123
20306
  case 'GeometryCollection':
20124
20307
  for (i = 0, len = geometry.geometries.length; i < len; i++) {
20125
- var layer = geometryToLayer({
20308
+ var geoLayer = geometryToLayer({
20126
20309
  geometry: geometry.geometries[i],
20127
20310
  type: 'Feature',
20128
20311
  properties: geojson.properties
20129
20312
  }, options);
20130
20313
 
20131
- if (layer) {
20132
- layers.push(layer);
20314
+ if (geoLayer) {
20315
+ layers.push(geoLayer);
20316
+ }
20317
+ }
20318
+ return new FeatureGroup(layers);
20319
+
20320
+ case 'FeatureCollection':
20321
+ for (i = 0, len = geometry.features.length; i < len; i++) {
20322
+ var featureLayer = geometryToLayer(geometry.features[i], options);
20323
+
20324
+ if (featureLayer) {
20325
+ layers.push(featureLayer);
20133
20326
  }
20134
20327
  }
20135
20328
  return new FeatureGroup(layers);
@@ -20188,8 +20381,9 @@
20188
20381
  var coords = [];
20189
20382
 
20190
20383
  for (var i = 0, len = latlngs.length; i < len; i++) {
20384
+ // Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion
20191
20385
  coords.push(levelsDeep ?
20192
- latLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) :
20386
+ latLngsToCoords(latlngs[i], isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) :
20193
20387
  latLngToCoords(latlngs[i], precision));
20194
20388
  }
20195
20389
 
@@ -20798,13 +20992,25 @@
20798
20992
 
20799
20993
  // @option pane: String = undefined
20800
20994
  // `Map pane` where the overlay will be added.
20801
- pane: undefined
20995
+ pane: undefined,
20996
+
20997
+ // @option content: String|HTMLElement|Function = ''
20998
+ // Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be
20999
+ // passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.
21000
+ content: ''
20802
21001
  },
20803
21002
 
20804
21003
  initialize: function (options, source) {
20805
- setOptions(this, options);
20806
-
20807
- this._source = source;
21004
+ if (options && (options instanceof L.LatLng || isArray(options))) {
21005
+ this._latlng = toLatLng(options);
21006
+ setOptions(this, source);
21007
+ } else {
21008
+ setOptions(this, options);
21009
+ this._source = source;
21010
+ }
21011
+ if (this.options.content) {
21012
+ this._content = this.options.content;
21013
+ }
20808
21014
  },
20809
21015
 
20810
21016
  // @method openOn(map: Map): this
@@ -21116,7 +21322,8 @@
21116
21322
  * marker.bindPopup(popupContent).openPopup();
21117
21323
  * ```
21118
21324
  * Path overlays like polylines also have a `bindPopup` method.
21119
- * Here's a more complicated way to open a popup on a map:
21325
+ *
21326
+ * A popup can be also standalone:
21120
21327
  *
21121
21328
  * ```js
21122
21329
  * var popup = L.popup()
@@ -21124,6 +21331,11 @@
21124
21331
  * .setContent('<p>Hello world!<br />This is a nice popup.</p>')
21125
21332
  * .openOn(map);
21126
21333
  * ```
21334
+ * or
21335
+ * ```js
21336
+ * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')
21337
+ * .openOn(map);
21338
+ * ```
21127
21339
  */
21128
21340
 
21129
21341
 
@@ -21152,6 +21364,8 @@
21152
21364
  // @option maxHeight: Number = null
21153
21365
  // If set, creates a scrollable container of the given height
21154
21366
  // inside a popup if its content exceeds it.
21367
+ // The scrollable container can be styled using the
21368
+ // `leaflet-popup-scrolled` CSS class selector.
21155
21369
  maxHeight: null,
21156
21370
 
21157
21371
  // @option autoPan: Boolean = true
@@ -21297,7 +21511,10 @@
21297
21511
  closeButton.href = '#close';
21298
21512
  closeButton.innerHTML = '<span aria-hidden="true">&#215;</span>';
21299
21513
 
21300
- on(closeButton, 'click', this.close, this);
21514
+ on(closeButton, 'click', function (ev) {
21515
+ preventDefault(ev);
21516
+ this.close();
21517
+ }, this);
21301
21518
  }
21302
21519
  },
21303
21520
 
@@ -21391,6 +21608,9 @@
21391
21608
  // @namespace Popup
21392
21609
  // @factory L.popup(options?: Popup options, source?: Layer)
21393
21610
  // Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.
21611
+ // @alternative
21612
+ // @factory L.popup(latlng: LatLng, options?: Popup options)
21613
+ // Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.
21394
21614
  var popup = function (options, source) {
21395
21615
  return new Popup(options, source);
21396
21616
  };
@@ -21488,7 +21708,8 @@
21488
21708
  // @method openPopup(latlng?: LatLng): this
21489
21709
  // Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.
21490
21710
  openPopup: function (latlng) {
21491
- if (this._popup && this._popup._prepareOpen(latlng)) {
21711
+ if (this._popup && this._popup._prepareOpen(latlng || this._latlng)) {
21712
+
21492
21713
  // open the popup on the map
21493
21714
  this._popup.openOn(this._map);
21494
21715
  }
@@ -21574,10 +21795,28 @@
21574
21795
  * Used to display small texts on top of map layers.
21575
21796
  *
21576
21797
  * @example
21798
+ * If you want to just bind a tooltip to marker:
21577
21799
  *
21578
21800
  * ```js
21579
21801
  * marker.bindTooltip("my tooltip text").openTooltip();
21580
21802
  * ```
21803
+ * Path overlays like polylines also have a `bindTooltip` method.
21804
+ *
21805
+ * A tooltip can be also standalone:
21806
+ *
21807
+ * ```js
21808
+ * var tooltip = L.tooltip()
21809
+ * .setLatLng(latlng)
21810
+ * .setContent('Hello world!<br />This is a nice tooltip.')
21811
+ * .addTo(map);
21812
+ * ```
21813
+ * or
21814
+ * ```js
21815
+ * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})
21816
+ * .addTo(map);
21817
+ * ```
21818
+ *
21819
+ *
21581
21820
  * Note about tooltip offset. Leaflet takes two options in consideration
21582
21821
  * for computing tooltip offsetting:
21583
21822
  * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.
@@ -21678,6 +21917,9 @@
21678
21917
  className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');
21679
21918
 
21680
21919
  this._contentNode = this._container = create$1('div', className);
21920
+
21921
+ this._container.setAttribute('role', 'tooltip');
21922
+ this._container.setAttribute('id', 'leaflet-tooltip-' + stamp(this));
21681
21923
  },
21682
21924
 
21683
21925
  _updateLayout: function () {},
@@ -21758,7 +22000,10 @@
21758
22000
 
21759
22001
  // @namespace Tooltip
21760
22002
  // @factory L.tooltip(options?: Tooltip options, source?: Layer)
21761
- // Instantiates a Tooltip object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.
22003
+ // Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.
22004
+ // @alternative
22005
+ // @factory L.tooltip(latlng: LatLng, options?: Tooltip options)
22006
+ // Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.
21762
22007
  var tooltip = function (options, source) {
21763
22008
  return new Tooltip(options, source);
21764
22009
  };
@@ -21846,6 +22091,11 @@
21846
22091
  events.mouseover = this._openTooltip;
21847
22092
  events.mouseout = this.closeTooltip;
21848
22093
  events.click = this._openTooltip;
22094
+ if (this._map) {
22095
+ this._addFocusListeners();
22096
+ } else {
22097
+ events.add = this._addFocusListeners;
22098
+ }
21849
22099
  } else {
21850
22100
  events.add = this._openTooltip;
21851
22101
  }
@@ -21862,6 +22112,12 @@
21862
22112
  if (this._tooltip && this._tooltip._prepareOpen(latlng)) {
21863
22113
  // open the tooltip on the map
21864
22114
  this._tooltip.openOn(this._map);
22115
+
22116
+ if (this.getElement) {
22117
+ this._setAriaDescribedByOnLayer(this);
22118
+ } else if (this.eachLayer) {
22119
+ this.eachLayer(this._setAriaDescribedByOnLayer, this);
22120
+ }
21865
22121
  }
21866
22122
  return this;
21867
22123
  },
@@ -21904,6 +22160,33 @@
21904
22160
  return this._tooltip;
21905
22161
  },
21906
22162
 
22163
+ _addFocusListeners: function () {
22164
+ if (this.getElement) {
22165
+ this._addFocusListenersOnLayer(this);
22166
+ } else if (this.eachLayer) {
22167
+ this.eachLayer(this._addFocusListenersOnLayer, this);
22168
+ }
22169
+ },
22170
+
22171
+ _addFocusListenersOnLayer: function (layer) {
22172
+ var el = layer.getElement();
22173
+ if (el) {
22174
+ on(el, 'focus', function () {
22175
+ this._tooltip._source = layer;
22176
+ this.openTooltip();
22177
+ }, this);
22178
+ on(el, 'blur', this.closeTooltip, this);
22179
+ }
22180
+ },
22181
+
22182
+ _setAriaDescribedByOnLayer: function (layer) {
22183
+ var el = layer.getElement();
22184
+ if (el) {
22185
+ el.setAttribute('aria-describedby', this._tooltip._container.id);
22186
+ }
22187
+ },
22188
+
22189
+
21907
22190
  _openTooltip: function (e) {
21908
22191
  if (!this._tooltip || !this._map || (this._map.dragging && this._map.dragging.moving())) {
21909
22192
  return;
@@ -22922,7 +23205,7 @@
22922
23205
  * @example
22923
23206
  *
22924
23207
  * ```js
22925
- * L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(map);
23208
+ * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(map);
22926
23209
  * ```
22927
23210
  *
22928
23211
  * @section URL template
@@ -23009,13 +23292,19 @@
23009
23292
 
23010
23293
  if (!options.zoomReverse) {
23011
23294
  options.zoomOffset++;
23012
- options.maxZoom--;
23295
+ options.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);
23013
23296
  } else {
23014
23297
  options.zoomOffset--;
23015
- options.minZoom++;
23298
+ options.minZoom = Math.min(options.maxZoom, options.minZoom + 1);
23016
23299
  }
23017
23300
 
23018
23301
  options.minZoom = Math.max(0, options.minZoom);
23302
+ } else if (!options.zoomReverse) {
23303
+ // make sure maxZoom is gte minZoom
23304
+ options.maxZoom = Math.max(options.minZoom, options.maxZoom);
23305
+ } else {
23306
+ // make sure minZoom is lte maxZoom
23307
+ options.minZoom = Math.min(options.maxZoom, options.minZoom);
23019
23308
  }
23020
23309
 
23021
23310
  if (typeof options.subdomains === 'string') {
@@ -23062,18 +23351,12 @@
23062
23351
  tile.referrerPolicy = this.options.referrerPolicy;
23063
23352
  }
23064
23353
 
23065
- /*
23066
- Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons
23067
- https://www.w3.org/TR/WCAG20-TECHS/H67
23068
- */
23354
+ // The alt attribute is set to the empty string,
23355
+ // allowing screen readers to ignore the decorative image tiles.
23356
+ // https://www.w3.org/WAI/tutorials/images/decorative/
23357
+ // https://www.w3.org/TR/html-aria/#el-img-empty-alt
23069
23358
  tile.alt = '';
23070
23359
 
23071
- /*
23072
- Set role="presentation" to force screen readers to ignore this
23073
- https://www.w3.org/TR/wai-aria/roles#textalternativecomputation
23074
- */
23075
- tile.setAttribute('role', 'presentation');
23076
-
23077
23360
  tile.src = this.getTileUrl(coords);
23078
23361
 
23079
23362
  return tile;
@@ -25266,7 +25549,7 @@
25266
25549
 
25267
25550
  cancelAnimFrame(this._animRequest);
25268
25551
 
25269
- var moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false});
25552
+ var moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);
25270
25553
  this._animRequest = requestAnimFrame(moveFn, this, true);
25271
25554
 
25272
25555
  preventDefault(e);