@florasync/leaflet-geokit 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/django/index.js +1800 -1553
- package/dist/django/index.js.map +1 -1
- package/dist/leaflet-geokit.es.js +1475 -1228
- package/dist/leaflet-geokit.es.js.map +1 -1
- package/dist/leaflet-geokit.external.es.js +912 -665
- package/dist/leaflet-geokit.external.es.js.map +1 -1
- package/dist/leaflet-geokit.umd.js +16 -16
- package/dist/leaflet-geokit.umd.js.map +1 -1
- package/dist/preact/{index-D8EjMf-1.js → index-DagV_wwR.js} +938 -691
- package/dist/preact/index-DagV_wwR.js.map +1 -0
- package/dist/preact/index.js +1 -1
- package/dist/preact-bundled/index.js +1762 -1515
- package/dist/preact-bundled/index.js.map +1 -1
- package/dist/react/{index-D8EjMf-1.js → index-DagV_wwR.js} +938 -691
- package/dist/react/index-DagV_wwR.js.map +1 -0
- package/dist/react/index.js +1 -1
- package/dist/react-bundled/index.js +1761 -1514
- package/dist/react-bundled/index.js.map +1 -1
- package/dist/types/src/components/LeafletDrawMapElement.d.ts +18 -0
- package/dist/types/src/lib/MapController.d.ts +7 -0
- package/dist/types/src/lib/TileProviderFactory.d.ts +45 -0
- package/dist/types/src/types/public.d.ts +58 -0
- package/dist/types/tests/component-branch-coverage.spec.d.ts +1 -0
- package/dist/types/tests/component-tile-provider.spec.d.ts +1 -0
- package/dist/types/tests/tile-provider-factory.spec.d.ts +1 -0
- package/package.json +12 -7
- package/dist/preact/index-D8EjMf-1.js.map +0 -1
- package/dist/react/index-D8EjMf-1.js.map +0 -1
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var h = (s, t, e) =>
|
|
4
|
-
import * as
|
|
1
|
+
var ye = Object.defineProperty;
|
|
2
|
+
var Ae = (s, t, e) => t in s ? ye(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
|
|
3
|
+
var h = (s, t, e) => Ae(s, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
+
import * as v from "leaflet";
|
|
5
5
|
import "leaflet-draw";
|
|
6
6
|
import "leaflet-ruler";
|
|
7
|
-
const
|
|
7
|
+
const $ = {
|
|
8
8
|
trace: 10,
|
|
9
9
|
debug: 20,
|
|
10
10
|
info: 30,
|
|
11
11
|
warn: 40,
|
|
12
12
|
error: 50
|
|
13
13
|
};
|
|
14
|
-
function
|
|
15
|
-
return s === "silent" ? !1 :
|
|
14
|
+
function be(s, t) {
|
|
15
|
+
return s === "silent" ? !1 : $[t] >= $[s];
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function we() {
|
|
18
18
|
try {
|
|
19
19
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
20
20
|
} catch {
|
|
21
21
|
return "";
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function N(s, t = "debug", e = console) {
|
|
25
25
|
let o = t;
|
|
26
|
-
const
|
|
26
|
+
const r = (i) => (...n) => {
|
|
27
27
|
try {
|
|
28
|
-
if (!
|
|
29
|
-
const l = `[${
|
|
30
|
-
typeof c == "function" ? c(l, ...
|
|
28
|
+
if (!be(o, i)) return;
|
|
29
|
+
const l = `[${we()}][${s}][${i.toUpperCase()}]`, c = e[i];
|
|
30
|
+
typeof c == "function" ? c(l, ...n) : e.log(l, ...n);
|
|
31
31
|
} catch {
|
|
32
32
|
}
|
|
33
33
|
};
|
|
@@ -35,45 +35,45 @@ function T(s, t = "debug", e = console) {
|
|
|
35
35
|
get level() {
|
|
36
36
|
return o;
|
|
37
37
|
},
|
|
38
|
-
setLevel(
|
|
39
|
-
o =
|
|
38
|
+
setLevel(i) {
|
|
39
|
+
o = i;
|
|
40
40
|
},
|
|
41
|
-
trace:
|
|
42
|
-
debug:
|
|
43
|
-
info:
|
|
44
|
-
warn:
|
|
45
|
-
error:
|
|
46
|
-
child(
|
|
47
|
-
return
|
|
41
|
+
trace: r("trace"),
|
|
42
|
+
debug: r("debug"),
|
|
43
|
+
info: r("info"),
|
|
44
|
+
warn: r("warn"),
|
|
45
|
+
error: r("error"),
|
|
46
|
+
child(i) {
|
|
47
|
+
return N(`${s}:${i}`, o, e);
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
const ye = '.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}', be = `.leaflet-draw-section{position:relative}.leaflet-draw-toolbar{margin-top:12px}.leaflet-draw-toolbar-top{margin-top:0}.leaflet-draw-toolbar-notop a:first-child{border-top-right-radius:0}.leaflet-draw-toolbar-nobottom a:last-child{border-bottom-right-radius:0}.leaflet-draw-toolbar a{background-image:url(data:image/png;base64,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);background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20standalone='no'?%3e%3csvg%20xmlns:dc='http://purl.org/dc/elements/1.1/'%20xmlns:cc='http://creativecommons.org/ns%23'%20xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%20xmlns:svg='http://www.w3.org/2000/svg'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20viewBox='0%200%20600%2060'%20height='60'%20width='600'%20id='svg4225'%20version='1.1'%20inkscape:version='0.91%20r13725'%20sodipodi:docname='spritesheet.svg'%20inkscape:export-filename='/home/fpuga/development/upstream/icarto.Leaflet.draw/src/images/spritesheet-2x.png'%20inkscape:export-xdpi='90'%20inkscape:export-ydpi='90'%3e%3cmetadata%20id='metadata4258'%3e%3crdf:RDF%3e%3ccc:Work%20rdf:about=''%3e%3cdc:format%3eimage/svg+xml%3c/dc:format%3e%3cdc:type%20rdf:resource='http://purl.org/dc/dcmitype/StillImage'%20/%3e%3cdc:title%20/%3e%3c/cc:Work%3e%3c/rdf:RDF%3e%3c/metadata%3e%3cdefs%20id='defs4256'%20/%3e%3csodipodi:namedview%20pagecolor='%23ffffff'%20bordercolor='%23666666'%20borderopacity='1'%20objecttolerance='10'%20gridtolerance='10'%20guidetolerance='10'%20inkscape:pageopacity='0'%20inkscape:pageshadow='2'%20inkscape:window-width='1920'%20inkscape:window-height='1056'%20id='namedview4254'%20showgrid='false'%20inkscape:zoom='1.3101852'%20inkscape:cx='237.56928'%20inkscape:cy='7.2419621'%20inkscape:window-x='1920'%20inkscape:window-y='24'%20inkscape:window-maximized='1'%20inkscape:current-layer='svg4225'%20/%3e%3cg%20id='enabled'%20style='fill:%23464646;fill-opacity:1'%3e%3cg%20id='polyline'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%2018,36%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4229'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2036,18%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4231'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2023.142,39.145%20-2.285,-2.29%2016,-15.998%202.285,2.285%20z'%20id='path4233'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cpath%20id='polygon'%20d='M%20100,24.565%2097.904,39.395%2083.07,42%2076,28.773%2086.463,18%20Z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='rectangle'%20d='m%20140,20%2020,0%200,20%20-20,0%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='circle'%20d='m%20221,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='marker'%20d='m%20270,19%20c%20-4.971,0%20-9,4.029%20-9,9%200,4.971%205.001,12%209,14%204.001,-2%209,-9.029%209,-14%200,-4.971%20-4.029,-9%20-9,-9%20z%20m%200,12.5%20c%20-2.484,0%20-4.5,-2.014%20-4.5,-4.5%200,-2.484%202.016,-4.5%204.5,-4.5%202.485,0%204.5,2.016%204.5,4.5%200,2.486%20-2.015,4.5%20-4.5,4.5%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cg%20id='edit'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20337,30.156%200,0.407%200,5.604%20c%200,1.658%20-1.344,3%20-3,3%20l%20-10,0%20c%20-1.655,0%20-3,-1.342%20-3,-3%20l%200,-10%20c%200,-1.657%201.345,-3%203,-3%20l%206.345,0%203.19,-3.17%20-9.535,0%20c%20-3.313,0%20-6,2.687%20-6,6%20l%200,10%20c%200,3.313%202.687,6%206,6%20l%2010,0%20c%203.314,0%206,-2.687%206,-6%20l%200,-8.809%20-3,2.968'%20id='path4240'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.72,24.637%20-8.892,8.892%20-2.828,0%200,-2.829%208.89,-8.89%20z'%20id='path4242'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.697,17.826%204,0%200,4%20-4,0%20z'%20transform='matrix(-0.70698336,-0.70723018,0.70723018,-0.70698336,567.55917,274.78273)'%20id='path4244'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cg%20id='remove'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20381,42%2018,0%200,-18%20-18,0%200,18%20z%20m%2014,-16%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z'%20id='path4247'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20395,20%200,-4%20-10,0%200,4%20-6,0%200,2%2022,0%200,-2%20-6,0%20z%20m%20-2,0%20-6,0%200,-2%206,0%200,2%20z'%20id='path4249'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3c/g%3e%3cg%20id='disabled'%20transform='translate(120,0)'%20style='fill:%23bbbbbb'%3e%3cuse%20xlink:href='%23edit'%20id='edit-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3cuse%20xlink:href='%23remove'%20id='remove-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3c/g%3e%3cpath%20style='fill:none;stroke:%23464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1'%20id='circle-3'%20d='m%20581.65725,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:300px 30px;background-clip:padding-box}.leaflet-retina .leaflet-draw-toolbar a{background-image:url(data:image/png;base64,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);background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20standalone='no'?%3e%3csvg%20xmlns:dc='http://purl.org/dc/elements/1.1/'%20xmlns:cc='http://creativecommons.org/ns%23'%20xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%20xmlns:svg='http://www.w3.org/2000/svg'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20viewBox='0%200%20600%2060'%20height='60'%20width='600'%20id='svg4225'%20version='1.1'%20inkscape:version='0.91%20r13725'%20sodipodi:docname='spritesheet.svg'%20inkscape:export-filename='/home/fpuga/development/upstream/icarto.Leaflet.draw/src/images/spritesheet-2x.png'%20inkscape:export-xdpi='90'%20inkscape:export-ydpi='90'%3e%3cmetadata%20id='metadata4258'%3e%3crdf:RDF%3e%3ccc:Work%20rdf:about=''%3e%3cdc:format%3eimage/svg+xml%3c/dc:format%3e%3cdc:type%20rdf:resource='http://purl.org/dc/dcmitype/StillImage'%20/%3e%3cdc:title%20/%3e%3c/cc:Work%3e%3c/rdf:RDF%3e%3c/metadata%3e%3cdefs%20id='defs4256'%20/%3e%3csodipodi:namedview%20pagecolor='%23ffffff'%20bordercolor='%23666666'%20borderopacity='1'%20objecttolerance='10'%20gridtolerance='10'%20guidetolerance='10'%20inkscape:pageopacity='0'%20inkscape:pageshadow='2'%20inkscape:window-width='1920'%20inkscape:window-height='1056'%20id='namedview4254'%20showgrid='false'%20inkscape:zoom='1.3101852'%20inkscape:cx='237.56928'%20inkscape:cy='7.2419621'%20inkscape:window-x='1920'%20inkscape:window-y='24'%20inkscape:window-maximized='1'%20inkscape:current-layer='svg4225'%20/%3e%3cg%20id='enabled'%20style='fill:%23464646;fill-opacity:1'%3e%3cg%20id='polyline'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%2018,36%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4229'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2036,18%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4231'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2023.142,39.145%20-2.285,-2.29%2016,-15.998%202.285,2.285%20z'%20id='path4233'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cpath%20id='polygon'%20d='M%20100,24.565%2097.904,39.395%2083.07,42%2076,28.773%2086.463,18%20Z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='rectangle'%20d='m%20140,20%2020,0%200,20%20-20,0%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='circle'%20d='m%20221,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='marker'%20d='m%20270,19%20c%20-4.971,0%20-9,4.029%20-9,9%200,4.971%205.001,12%209,14%204.001,-2%209,-9.029%209,-14%200,-4.971%20-4.029,-9%20-9,-9%20z%20m%200,12.5%20c%20-2.484,0%20-4.5,-2.014%20-4.5,-4.5%200,-2.484%202.016,-4.5%204.5,-4.5%202.485,0%204.5,2.016%204.5,4.5%200,2.486%20-2.015,4.5%20-4.5,4.5%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cg%20id='edit'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20337,30.156%200,0.407%200,5.604%20c%200,1.658%20-1.344,3%20-3,3%20l%20-10,0%20c%20-1.655,0%20-3,-1.342%20-3,-3%20l%200,-10%20c%200,-1.657%201.345,-3%203,-3%20l%206.345,0%203.19,-3.17%20-9.535,0%20c%20-3.313,0%20-6,2.687%20-6,6%20l%200,10%20c%200,3.313%202.687,6%206,6%20l%2010,0%20c%203.314,0%206,-2.687%206,-6%20l%200,-8.809%20-3,2.968'%20id='path4240'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.72,24.637%20-8.892,8.892%20-2.828,0%200,-2.829%208.89,-8.89%20z'%20id='path4242'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.697,17.826%204,0%200,4%20-4,0%20z'%20transform='matrix(-0.70698336,-0.70723018,0.70723018,-0.70698336,567.55917,274.78273)'%20id='path4244'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cg%20id='remove'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20381,42%2018,0%200,-18%20-18,0%200,18%20z%20m%2014,-16%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z'%20id='path4247'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20395,20%200,-4%20-10,0%200,4%20-6,0%200,2%2022,0%200,-2%20-6,0%20z%20m%20-2,0%20-6,0%200,-2%206,0%200,2%20z'%20id='path4249'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3c/g%3e%3cg%20id='disabled'%20transform='translate(120,0)'%20style='fill:%23bbbbbb'%3e%3cuse%20xlink:href='%23edit'%20id='edit-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3cuse%20xlink:href='%23remove'%20id='remove-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3c/g%3e%3cpath%20style='fill:none;stroke:%23464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1'%20id='circle-3'%20d='m%20581.65725,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20/%3e%3c/svg%3e")}.leaflet-draw a{display:block;text-align:center;text-decoration:none}.leaflet-draw a .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.leaflet-draw-actions{display:none;list-style:none;margin:0;padding:0;position:absolute;left:26px;top:0;white-space:nowrap}.leaflet-touch .leaflet-draw-actions{left:32px}.leaflet-right .leaflet-draw-actions{right:26px;left:auto}.leaflet-touch .leaflet-right .leaflet-draw-actions{right:32px;left:auto}.leaflet-draw-actions li{display:inline-block}.leaflet-draw-actions li:first-child a{border-left:0}.leaflet-draw-actions li:last-child a{-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.leaflet-right .leaflet-draw-actions li:last-child a{-webkit-border-radius:0;border-radius:0}.leaflet-right .leaflet-draw-actions li:first-child a{-webkit-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.leaflet-draw-actions a{background-color:#919187;border-left:1px solid #AAA;color:#fff;font:11px/19px Helvetica Neue,Arial,Helvetica,sans-serif;line-height:28px;text-decoration:none;padding-left:10px;padding-right:10px;height:28px}.leaflet-touch .leaflet-draw-actions a{font-size:12px;line-height:30px;height:30px}.leaflet-draw-actions-bottom{margin-top:0}.leaflet-draw-actions-top{margin-top:1px}.leaflet-draw-actions-top a,.leaflet-draw-actions-bottom a{height:27px;line-height:27px}.leaflet-draw-actions a:hover{background-color:#a0a098}.leaflet-draw-actions-top.leaflet-draw-actions-bottom a{height:26px;line-height:26px}.leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:-2px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:0 -1px}.leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-31px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-29px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-62px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-60px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-92px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-90px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-122px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-120px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-273px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-271px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-152px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-150px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-182px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-180px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-212px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-210px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-242px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-240px -2px}.leaflet-mouse-marker{background-color:#fff;cursor:crosshair}.leaflet-draw-tooltip{background:#363636;background:#00000080;border:1px solid transparent;-webkit-border-radius:4px;border-radius:4px;color:#fff;font:12px/18px Helvetica Neue,Arial,Helvetica,sans-serif;margin-left:20px;margin-top:-21px;padding:4px 8px;position:absolute;visibility:hidden;white-space:nowrap;z-index:6}.leaflet-draw-tooltip:before{border-right:6px solid black;border-right-color:#00000080;border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:7px;left:-7px}.leaflet-error-draw-tooltip{background-color:#f2dede;border:1px solid #e6b6bd;color:#b94a48}.leaflet-error-draw-tooltip:before{border-right-color:#e6b6bd}.leaflet-draw-tooltip-single{margin-top:-12px}.leaflet-draw-tooltip-subtext{color:#f8d5e4}.leaflet-draw-guide-dash{font-size:1%;opacity:.6;position:absolute;width:5px;height:5px}.leaflet-edit-marker-selected{background-color:#fe57a11a;border:4px dashed rgba(254,87,161,.6);-webkit-border-radius:4px;border-radius:4px;box-sizing:content-box}.leaflet-edit-move{cursor:move}.leaflet-edit-resize{cursor:pointer}.leaflet-oldie .leaflet-draw-toolbar{border:1px solid #999}`, we = ".leaflet-ruler{height:35px;width:35px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhBQoMHg6McuYvAAABwklEQVQ4y43TP0jUYRgH8M/daQpqdujhnwShGiwyipCIoIgWxyIwrqEhnCQoGqKhpoYMg1qCQjg8TC2JCtSkjCgaKisIhyQUwpJssD9KZWRZg6d450/yGV54n/fzfd53eUOCaoNa5QpNGNPr9cKjUAatdsB++co0G1XiiHd+uqnTq8VzI874o9s2Ic1iiEpii9tmnJOdfkOldt/dU+HYolHnjdmpRNzbuVaNL86m4sXqNOrz3kMXHFKYMqd8VREGBToMifqLgwY1yNZirya5knaBqH16fJjNJiWEFSlxy4g980+pMuZkir/UJjLbrvNRPnINaLUygK/yQpuImHp47LOjuKJPOJA/1y4iZsAlyozLs8IO42L/4QlhGrSCy5oCeKH+dM59vVbL9sn6AP5MRzpnVKtN1viRxit1WRvEmVKFrQbTpoddNR3E+aYKuw1lPOapa0GcEf22KzOtejmcG1rkYdjEAn59KU5cDzjt+HI4BSZtVJTazfIsMQOmFAusLr/E53lniickJYIDNcaUL+JhMZPWBUdOeCCaweGOw5k0lFrv2uyRuBxPlLpoBtTK0p3mh+f+dKl6jX6LapRj6XrzD+1bmkFA/dTVAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA1LTEwVDEyOjMwOjE0KzAyOjAwUNH5TAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wNS0xMFQxMjozMDoxNCswMjowMCGMQfAAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:center}.leaflet-ruler:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAACmAAAApgHdff84AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAn9QTFRF////AAAAAAAAAAAAAAAAAAAzABcXABQUABIkDhwrAA0aAAwYABUgABQfABIbABAZAA8fABUcABMaABMfABIeABEcABAbABQeABMdABIdABEbABIbABIbABEdABEcABIcBxsoABEdABIdABIdABEcABMbABMdFBwgERofAhIbEhsfAhIdBxUeEhsgEBofAhMbAhMdBRMdAhIbAhIdAhMdCRceARIcDBgfDBgfDBcfDBcfFhwgDBceDBceCxceFCs5HTdGAxMcDxofGTFAHDRDHDVDHDVEHTZFDRkfEBofERogCh0oERsgARIcEhsfEhsgCh4pDCEsDRkfDRkfEBofBhQdDSMvDRgfDBgfCBUeBxUeDyUyECYzUDktPTAqCRceCRYeChYeDxkfEBkgLCgmWj4wCBYdW0AwGh4hHCAiHSAiTDctBhUdBxYdEBkfLyonMConBhUdJiUkLCclLSgmLigmOzApPTEpDBgfBRQdDBgfERsgWT8wBBMdCBYeChceQjMrSzctZEUyBBMdERsgXUAxXkExY0QzglQ5AxUfBxolSjcthlU6hlY7h1Y7AxMcSDUsSjYsd042g1Q5hlY6jVo8AhIcAxMcBBQdLEpcOVpvARIcAhIcBhQdDSIuEhsgJ0NUNS0oNi0oO11yTTgtUXmSUnqUXEAxXUExYEIyZUUzaEYzb0o1cEo1dEw2i1g8jFk8jcfskFs9mdX9mmA/mtf/pmZCqGdCsWxEvnJHxHVJxnZJyHdJzHlK0XxM031M139N3IFO3YJO4INP5IVQ5YZQ5oZQ6ohR7IlS7opS74tS8ItT841T9I1T9o5U949U+ZBV+pBV/ZJW/pJW/5NWIYcOagAAAJt0Uk5TAAECAwQFCw0OEhQVGBkcHyEkKCkqLTAzNUZLVFZZW2RnanJzeHl8f4uMjY6Pj5KVl52eoKGprKytrq+vsLGytLu9vb/BwsLDxcXP0NDS09bf4uPk5OXl5ufo6enq7O3u7+/x8fHy8/P09PT09fX19fX29vb29vb29/j4+Pj5+fn5+fn6+vr6+vr7/Pz8/Pz9/f39/f39/v7+/v7Td3FlAAABgklEQVQoU2NggAMRJU1DTWURBlQgqhWUND11Tfr05GBdMYQws8a07j2XVx2/cnLl5T0T5+ixQsX5/RrWr70CA+s2NPoLgMUlciddvnLl3PbslMysmi2ngXKTc/iA4uwRC1dfudRT76UtJy5lMHvHlSsni82ZgBLWbZdOHCuPlARpForvBYszA9ky1WeunC8y5YCI9125cqrEnJlbnoHBZ/6mK+0eTAjxUgtmbl99Bt6Ksxd2pXGDxRPg4kZMDIqxV6406cDFT8PEGRwnHLlYJQwSTwSJ51tCxRmiVuw7VAsRP7zkIEKcofnAlb0hEPWXls9AiDNUHriyMxwoPgVoToEVQpwhdNHuY/2imOIMZq1nr2QUgsVtkMUZZOOuXOmYiinOwF63/8QVsDgLd0wnFwMCOM3dBhK3ZeGOXjzLHklCIu8oRDxs8eaNXYJIMuplJ0HigYs3b906UwFJgtGzxY6FLWDe0mXLli3wVoEAaZAMjxoLA6eDu5urq4uziTEEqAIAvamx163e5EoAAAAASUVORK5CYII=)}.leaflet-ruler-clicked{height:35px;width:35px;background-repeat:no-repeat;background-position:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAACmAAAApgHdff84AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAn9QTFRF////AAAAAAAAAAAAAAAAAAAzABcXABQUABIkDhwrAA0aAAwYABUgABQfABIbABAZAA8fABUcABMaABMfABIeABEcABAbABQeABMdABIdABEbABIbABIbABEdABEcABIcBxsoABEdABIdABIdABEcABMbABMdFBwgERofAhIbEhsfAhIdBxUeEhsgEBofAhMbAhMdBRMdAhIbAhIdAhMdCRceARIcDBgfDBgfDBcfDBcfFhwgDBceDBceCxceFCs5HTdGAxMcDxofGTFAHDRDHDVDHDVEHTZFDRkfEBofERogCh0oERsgARIcEhsfEhsgCh4pDCEsDRkfDRkfEBofBhQdDSMvDRgfDBgfCBUeBxUeDyUyECYzUDktPTAqCRceCRYeChYeDxkfEBkgLCgmWj4wCBYdW0AwGh4hHCAiHSAiTDctBhUdBxYdEBkfLyonMConBhUdJiUkLCclLSgmLigmOzApPTEpDBgfBRQdDBgfERsgWT8wBBMdCBYeChceQjMrSzctZEUyBBMdERsgXUAxXkExY0QzglQ5AxUfBxolSjcthlU6hlY7h1Y7AxMcSDUsSjYsd042g1Q5hlY6jVo8AhIcAxMcBBQdLEpcOVpvARIcAhIcBhQdDSIuEhsgJ0NUNS0oNi0oO11yTTgtUXmSUnqUXEAxXUExYEIyZUUzaEYzb0o1cEo1dEw2i1g8jFk8jcfskFs9mdX9mmA/mtf/pmZCqGdCsWxEvnJHxHVJxnZJyHdJzHlK0XxM031M139N3IFO3YJO4INP5IVQ5YZQ5oZQ6ohR7IlS7opS74tS8ItT841T9I1T9o5U949U+ZBV+pBV/ZJW/pJW/5NWIYcOagAAAJt0Uk5TAAECAwQFCw0OEhQVGBkcHyEkKCkqLTAzNUZLVFZZW2RnanJzeHl8f4uMjY6Pj5KVl52eoKGprKytrq+vsLGytLu9vb/BwsLDxcXP0NDS09bf4uPk5OXl5ufo6enq7O3u7+/x8fHy8/P09PT09fX19fX29vb29vb29/j4+Pj5+fn5+fn6+vr6+vr7/Pz8/Pz9/f39/f39/v7+/v7Td3FlAAABgklEQVQoU2NggAMRJU1DTWURBlQgqhWUND11Tfr05GBdMYQws8a07j2XVx2/cnLl5T0T5+ixQsX5/RrWr70CA+s2NPoLgMUlciddvnLl3PbslMysmi2ngXKTc/iA4uwRC1dfudRT76UtJy5lMHvHlSsni82ZgBLWbZdOHCuPlARpForvBYszA9ky1WeunC8y5YCI9125cqrEnJlbnoHBZ/6mK+0eTAjxUgtmbl99Bt6Ksxd2pXGDxRPg4kZMDIqxV6406cDFT8PEGRwnHLlYJQwSTwSJ51tCxRmiVuw7VAsRP7zkIEKcofnAlb0hEPWXls9AiDNUHriyMxwoPgVoToEVQpwhdNHuY/2imOIMZq1nr2QUgsVtkMUZZOOuXOmYiinOwF63/8QVsDgLd0wnFwMCOM3dBhK3ZeGOXjzLHklCIu8oRDxs8eaNXYJIMuplJ0HigYs3b906UwFJgtGzxY6FLWDe0mXLli3wVoEAaZAMjxoLA6eDu5urq4uziTEEqAIAvamx163e5EoAAAAASUVORK5CYII=);border-color:#7fff00!important}.leaflet-bar{background-color:#fff}.leaflet-control{cursor:pointer}.result-tooltip{background-color:#fff;border-width:medium;border-color:#de0000;font-size:smaller}.moving-tooltip{background-color:#ffffffb3;background-clip:padding-box;opacity:.5;border:dotted;border-color:red;font-size:smaller}.plus-length{padding-left:45px}", xe = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABSCAMAAAAhFXfZAAAC91BMVEVMaXEzeak2f7I4g7g3g7cua5gzeKg8hJo3grY4g7c3grU0gLI2frE0daAubJc2gbQwd6QzeKk2gLMtd5sxdKIua5g1frA2f7IydaM0e6w2fq41fK01eqo3grgubJgta5cxdKI1f7AydaQydaMxc6EubJgvbJkwcZ4ubZkwcJwubZgubJcydqUydKIxapgubJctbJcubZcubJcvbJYubJcvbZkubJctbJctbZcubJg2f7AubJcrbZcubJcubJcua5g3grY0fq8ubJcubJdEkdEwhsw6i88vhswuhcsuhMtBjMgthMsrg8srgss6is8qgcs8i9A9iMYtg8spgcoogMo7hcMngMonf8olfso4gr8kfck5iM8jfMk4iM8he8k1fro7itAgesk2hs8eecgzfLcofssdeMg0hc4cd8g2hcsxeLQbdsgZdcgxeLImfcszhM0vda4xgckzhM4xg84wf8Yxgs4udKsvfcQucqhUndROmdM1fK0wcZ8vb5w0eqpQm9MzeKhXoNVcpdYydKNWn9VZotVKltJFjsIwcJ1Rms9OlslLmtH///8+kc9epdYzd6dbo9VHkMM2f7FHmNBClM8ydqVcpNY9hro3gLM9hLczealQmcw3fa46f7A8gLMxc6I3eagyc6FIldJMl9JSnNRSntNNl9JPnNJFi75UnM9ZodVKksg8kM45jc09e6ZHltFBk883gbRBh7pDk9EwcaBzn784g7dKkcY2i81Om9M7j85Llc81is09g7Q4grY/j9A0eqxKmdFFltBEjcXf6fFImdBCiLxJl9FGlNFBi78yiMxVndEvbpo6js74+vx+psPP3+o/ks5HkcpGmNCjwdZCkNDM3ehYoNJEls+lxNkxh8xHks0+jdC1zd5Lg6r+/v/H2ufz9/o3jM3t8/edvdM/k89Th61OiLBSjbZklbaTt9BfptdjmL1AicBHj8hGk9FAgK1dkLNTjLRekrdClc/k7fM0icy0y9tgp9c4jc2NtM9Dlc8zicxeXZn3AAAAQ3RSTlMAHDdTb4yPA+LtnEQmC4L2EmHqB7XA0d0sr478x4/Yd5i1zOfyPkf1sLVq4Nh3FvjxopQ2/STNuFzUwFIwxKaejILpIBEV9wAABhVJREFUeF6s1NdyFEcY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", ke = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=", ve = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAQAAAACach9AAACMUlEQVR4Ae3ShY7jQBAE0Aoz/f9/HTMzhg1zrdKUrJbdx+Kd2nD8VNudfsL/Th///dyQN2TH6f3y/BGpC379rV+S+qqetBOxImNQXL8JCAr2V4iMQXHGNJxeCfZXhSRBcQMfvkOWUdtfzlLgAENmZDcmo2TVmt8OSM2eXxBp3DjHSMFutqS7SbmemzBiR+xpKCNUIRkdkkYxhAkyGoBvyQFEJEefwSmmvBfJuJ6aKqKWnAkvGZOaZXTUgFqYULWNSHUckZuR1HIIimUExutRxwzOLROIG4vKmCKQt364mIlhSyzAf1m9lHZHJZrlAOMMztRRiKimp/rpdJDc9Awry5xTZCte7FHtuS8wJgeYGrex28xNTd086Dik7vUMscQOa8y4DoGtCCSkAKlNwpgNtphjrC6MIHUkR6YWxxs6Sc5xqn222mmCRFzIt8lEdKx+ikCtg91qS2WpwVfBelJCiQJwvzixfI9cxZQWgiSJelKnwBElKYtDOb2MFbhmUigbReQBV0Cg4+qMXSxXSyGUn4UbF8l+7qdSGnTC0XLCmahIgUHLhLOhpVCtw4CzYXvLQWQbJNmxoCsOKAxSgBJno75avolkRw8iIAFcsdc02e9iyCd8tHwmeSSoKTowIgvscSGZUOA7PuCN5b2BX9mQM7S0wYhMNU74zgsPBj3HU7wguAfnxxjFQGBE6pwN+GjME9zHY7zGp8wVxMShYX9NXvEWD3HbwJf4giO4CFIQxXScH1/TM+04kkBiAAAAAElFTkSuQmCC", Me = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='430'%20height='430'%20style='width:100%25;height:100%25;transform:translate3d(0,0,0);content-visibility:visible'%20viewBox='0%200%20430%20430'%3e%3cdefs%3e%3cclipPath%20id='i'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='s'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='e'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='p'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='f'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='m'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='g'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='j'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='h'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cfilter%20id='t'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'/%3e%3c/filter%3e%3cfilter%20id='r'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'%20stdDeviation='52.5%2052.5'/%3e%3c/filter%3e%3cfilter%20id='n'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'/%3e%3c/filter%3e%3cfilter%20id='k'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'/%3e%3c/filter%3e%3cmask%20id='u'%20mask-type='alpha'%3e%3cuse%20xmlns:ns1='http://www.w3.org/1999/xlink'%20ns1:href='%23a'/%3e%3c/mask%3e%3cmask%20id='q'%20mask-type='alpha'%3e%3cuse%20xmlns:ns2='http://www.w3.org/1999/xlink'%20ns2:href='%23b'/%3e%3c/mask%3e%3cmask%20id='o'%20mask-type='alpha'%3e%3cuse%20xmlns:ns3='http://www.w3.org/1999/xlink'%20ns3:href='%23c'/%3e%3c/mask%3e%3cmask%20id='l'%20mask-type='alpha'%3e%3cuse%20xmlns:ns4='http://www.w3.org/1999/xlink'%20ns4:href='%23d'/%3e%3c/mask%3e%3cg%20id='a'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20clip-path='url(%23e)'%20style='display:none'%3e%3cpath%20class='secondary'%20style='display:none'/%3e%3cpath%20class='primary'%20style='display:none'/%3e%3c/g%3e%3cg%20id='b'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='12'%20clip-path='url(%23f)'%20style='display:block'%3e%3cpath%20stroke='%2308A88A'%20d='M44.446-66.518a79.998%2079.998%200%200%200-101.012%209.952A79.998%2079.998%200%201%200%2056.569%2056.569%2080.005%2080.005%200%200%200%2073.91-30.615a80.001%2080.001%200%200%200-29.464-35.903z'%20class='secondary'%20style='display:block'%20transform='translate(215%20214)'/%3e%3cpath%20stroke='%23121331'%20d='m141.409%2025.241%208.727%205.041s0%200%200%200a22.3%2022.3%200%200%201%2010.411%2013.542%2022.32%2022.32%200%200%201-2.221%2016.937l-26.515%2045.924a22.325%2022.325%200%200%201-30.497%208.172l-8.754-5.059a143.414%20143.414%200%200%201-43.718%2025.286v10.108a22.302%2022.302%200%200%201-13.778%2020.612%2022.303%2022.303%200%200%201-8.539%201.696h-53.029a22.303%2022.303%200%200%201-15.779-6.531%2022.302%2022.302%200%200%201-6.537-15.777v-10.073a143.416%20143.416%200%200%201-43.719-25.285l-8.754%205.059a22.325%2022.325%200%200%201-30.497-8.172l-26.523-45.924a22.315%2022.315%200%200%201-2.238-16.943A22.31%2022.31%200%200%201-150.142%2030.3l8.727-5.041a145.097%20145.097%200%200%201%200-50.518l-8.727-5.041a22.294%2022.294%200%200%201-10.409-13.554%2022.306%2022.306%200%200%201%202.238-16.943l26.514-45.924a22.325%2022.325%200%200%201%2030.497-8.172l8.754%205.059a143.416%20143.416%200%200%201%2043.719-25.285v-10.073a22.302%2022.302%200%200%201%206.537-15.777%2022.3%2022.3%200%200%201%2015.779-6.531h53.02a22.307%2022.307%200%200%201%2022.317%2022.308v10.037a143.41%20143.41%200%200%201%2043.718%2025.285l8.754-5.059a22.325%2022.325%200%200%201%2030.497%208.172l26.515%2045.942a22.313%2022.313%200%200%201-1.618%2024.757%2022.294%2022.294%200%200%201-6.554%205.74l-8.727%205.041a145.097%20145.097%200%200%201%200%2050.518z'%20class='primary'%20style='display:block'%20transform='rotate(-120%20169.576%2045.095)'/%3e%3c/g%3e%3cg%20id='c'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20clip-path='url(%23g)'%20style='display:none'%3e%3cpath%20class='secondary'%20style='display:none'/%3e%3cpath%20class='primary'%20style='display:none'/%3e%3c/g%3e%3cg%20id='d'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20clip-path='url(%23h)'%20style='display:none'%3e%3cpath%20class='secondary'%20style='display:none'/%3e%3cpath%20class='primary'%20style='display:none'/%3e%3c/g%3e%3c/defs%3e%3cg%20clip-path='url(%23i)'%3e%3cg%20clip-path='url(%23j)'%20filter='url(%23k)'%20mask='url(%23l)'%20style='display:none'%3e%3cg%20class='design'%3e%3cpath%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3cg%20clip-path='url(%23m)'%20filter='url(%23n)'%20mask='url(%23o)'%20style='display:none'%3e%3cg%20class='design'%3e%3cpath%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3cg%20clip-path='url(%23p)'%20mask='url(%23q)'%20style='display:block'%3e%3cg%20filter='url(%23r)'%20transform='rotate(-94%20238.762%20-16.565)%20scale(2.4)'%3e%3cg%20class='design'%3e%3cpath%20fill='%234BE1EC'%20d='M0-250c137.975%200%20250%20112.025%20250%20250S137.975%20250%200%20250-250%20137.975-250%200-137.975-250%200-250z'%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20fill='%23CB5EEE'%20d='M113.242-295.384c97.478%200%20176.5%2079.022%20176.5%20176.5s-79.022%20176.5-176.5%20176.5c-43.948%200-74.396-34.057-105.29-60.631-37.631-32.369-71.21-62.338-71.21-115.869%200-97.478%2079.022-176.5%20176.5-176.5z'%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3cg%20clip-path='url(%23s)'%20filter='url(%23t)'%20mask='url(%23u)'%20style='display:none'%3e%3cg%20class='design'%3e%3cpath%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e", ie = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%20-1.67%2047.336%2047.336'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='Group_42'%20data-name='Group%2042'%20transform='translate(-172.455%20-364.36)'%3e%3cpath%20id='Rectangle_17'%20data-name='Rectangle%2017'%20d='M4.351,0H40.984a4.351,4.351,0,0,1,4.351,4.351V22.117a1,1,0,0,1-1,1H1a1,1,0,0,1-1-1V4.351A4.351,4.351,0,0,1,4.351,0Z'%20transform='translate(173.455%20384.243)'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3cpath%20id='Path_90'%20data-name='Path%2090'%20d='M218.79,390.249a3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.778,3.778,0,0,1-3.777-3.778'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3cg%20id='Group_41'%20data-name='Group%2041'%3e%3cpath%20id='Rectangle_18'%20data-name='Rectangle%2018'%20d='M4.351,0H26.473a4.351,4.351,0,0,1,4.351,4.351V17.883a1,1,0,0,1-1,1H1a1,1,0,0,1-1-1V4.351A4.351,4.351,0,0,1,4.351,0Z'%20transform='translate(180.71%20365.36)'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3cpath%20id='Path_91'%20data-name='Path%2091'%20d='M211.234,370.794a3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e", Le = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhBQoMHg6McuYvAAABwklEQVQ4y43TP0jUYRgH8M/daQpqdujhnwShGiwyipCIoIgWxyIwrqEhnCQoGqKhpoYMg1qCQjg8TC2JCtSkjCgaKisIhyQUwpJssD9KZWRZg6d450/yGV54n/fzfd53eUOCaoNa5QpNGNPr9cKjUAatdsB++co0G1XiiHd+uqnTq8VzI874o9s2Ic1iiEpii9tmnJOdfkOldt/dU+HYolHnjdmpRNzbuVaNL86m4sXqNOrz3kMXHFKYMqd8VREGBToMifqLgwY1yNZirya5knaBqH16fJjNJiWEFSlxy4g980+pMuZkir/UJjLbrvNRPnINaLUygK/yQpuImHp47LOjuKJPOJA/1y4iZsAlyozLs8IO42L/4QlhGrSCy5oCeKH+dM59vVbL9sn6AP5MRzpnVKtN1viRxit1WRvEmVKFrQbTpoddNR3E+aYKuw1lPOapa0GcEf22KzOtejmcG1rkYdjEAn59KU5cDzjt+HI4BSZtVJTazfIsMQOmFAusLr/E53lniickJYIDNcaUL+JhMZPWBUdOeCCaweGOw5k0lFrv2uyRuBxPlLpoBtTK0p3mh+f+dKl6jX6LapRj6XrzD+1bmkFA/dTVAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA1LTEwVDEyOjMwOjE0KzAyOjAwUNH5TAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wNS0xMFQxMjozMDoxNCswMjowMCGMQfAAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC", Ee = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAACmAAAApgHdff84AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAn9QTFRF////AAAAAAAAAAAAAAAAAAAzABcXABQUABIkDhwrAA0aAAwYABUgABQfABIbABAZAA8fABUcABMaABMfABIeABEcABAbABQeABMdABIdABEbABIbABIbABEdABEcABIcBxsoABEdABIdABIdABEcABMbABMdFBwgERofAhIbEhsfAhIdBxUeEhsgEBofAhMbAhMdBRMdAhIbAhIdAhMdCRceARIcDBgfDBgfDBcfDBcfFhwgDBceDBceCxceFCs5HTdGAxMcDxofGTFAHDRDHDVDHDVEHTZFDRkfEBofERogCh0oERsgARIcEhsfEhsgCh4pDCEsDRkfDRkfEBofBhQdDSMvDRgfDBgfCBUeBxUeDyUyECYzUDktPTAqCRceCRYeChYeDxkfEBkgLCgmWj4wCBYdW0AwGh4hHCAiHSAiTDctBhUdBxYdEBkfLyonMConBhUdJiUkLCclLSgmLigmOzApPTEpDBgfBRQdDBgfERsgWT8wBBMdCBYeChceQjMrSzctZEUyBBMdERsgXUAxXkExY0QzglQ5AxUfBxolSjcthlU6hlY7h1Y7AxMcSDUsSjYsd042g1Q5hlY6jVo8AhIcAxMcBBQdLEpcOVpvARIcAhIcBhQdDSIuEhsgJ0NUNS0oNi0oO11yTTgtUXmSUnqUXEAxXUExYEIyZUUzaEYzb0o1cEo1dEw2i1g8jFk8jcfskFs9mdX9mmA/mtf/pmZCqGdCsWxEvnJHxHVJxnZJyHdJzHlK0XxM031M139N3IFO3YJO4INP5IVQ5YZQ5oZQ6ohR7IlS7opS74tS8ItT841T9I1T9o5U949U+ZBV+pBV/ZJW/pJW/5NWIYcOagAAAJt0Uk5TAAECAwQFCw0OEhQVGBkcHyEkKCkqLTAzNUZLVFZZW2RnanJzeHl8f4uMjY6Pj5KVl52eoKGprKytrq+vsLGytLu9vb/BwsLDxcXP0NDS09bf4uPk5OXl5ufo6enq7O3u7+/x8fHy8/P09PT09fX19fX29vb29vb29/j4+Pj5+fn5+fn6+vr6+vr7/Pz8/Pz9/f39/f39/v7+/v7Td3FlAAABgklEQVQoU2NggAMRJU1DTWURBlQgqhWUND11Tfr05GBdMYQws8a07j2XVx2/cnLl5T0T5+ixQsX5/RrWr70CA+s2NPoLgMUlciddvnLl3PbslMysmi2ngXKTc/iA4uwRC1dfudRT76UtJy5lMHvHlSsni82ZgBLWbZdOHCuPlARpForvBYszA9ky1WeunC8y5YCI9125cqrEnJlbnoHBZ/6mK+0eTAjxUgtmbl99Bt6Ksxd2pXGDxRPg4kZMDIqxV6406cDFT8PEGRwnHLlYJQwSTwSJ51tCxRmiVuw7VAsRP7zkIEKcofnAlb0hEPWXls9AiDNUHriyMxwoPgVoToEVQpwhdNHuY/2imOIMZq1nr2QUgsVtkMUZZOOuXOmYiinOwF63/8QVsDgLd0wnFwMCOM3dBhK3ZeGOXjzLHklCIu8oRDxs8eaNXYJIMuplJ0HigYs3b906UwFJgtGzxY6FLWDe0mXLli3wVoEAaZAMjxoLA6eDu5urq4uziTEEqAIAvamx163e5EoAAAAASUVORK5CYII=";
|
|
52
|
-
function
|
|
51
|
+
const xe = '.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}', ve = `.leaflet-draw-section{position:relative}.leaflet-draw-toolbar{margin-top:12px}.leaflet-draw-toolbar-top{margin-top:0}.leaflet-draw-toolbar-notop a:first-child{border-top-right-radius:0}.leaflet-draw-toolbar-nobottom a:last-child{border-bottom-right-radius:0}.leaflet-draw-toolbar a{background-image:url(data:image/png;base64,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);background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20standalone='no'?%3e%3csvg%20xmlns:dc='http://purl.org/dc/elements/1.1/'%20xmlns:cc='http://creativecommons.org/ns%23'%20xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%20xmlns:svg='http://www.w3.org/2000/svg'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20viewBox='0%200%20600%2060'%20height='60'%20width='600'%20id='svg4225'%20version='1.1'%20inkscape:version='0.91%20r13725'%20sodipodi:docname='spritesheet.svg'%20inkscape:export-filename='/home/fpuga/development/upstream/icarto.Leaflet.draw/src/images/spritesheet-2x.png'%20inkscape:export-xdpi='90'%20inkscape:export-ydpi='90'%3e%3cmetadata%20id='metadata4258'%3e%3crdf:RDF%3e%3ccc:Work%20rdf:about=''%3e%3cdc:format%3eimage/svg+xml%3c/dc:format%3e%3cdc:type%20rdf:resource='http://purl.org/dc/dcmitype/StillImage'%20/%3e%3cdc:title%20/%3e%3c/cc:Work%3e%3c/rdf:RDF%3e%3c/metadata%3e%3cdefs%20id='defs4256'%20/%3e%3csodipodi:namedview%20pagecolor='%23ffffff'%20bordercolor='%23666666'%20borderopacity='1'%20objecttolerance='10'%20gridtolerance='10'%20guidetolerance='10'%20inkscape:pageopacity='0'%20inkscape:pageshadow='2'%20inkscape:window-width='1920'%20inkscape:window-height='1056'%20id='namedview4254'%20showgrid='false'%20inkscape:zoom='1.3101852'%20inkscape:cx='237.56928'%20inkscape:cy='7.2419621'%20inkscape:window-x='1920'%20inkscape:window-y='24'%20inkscape:window-maximized='1'%20inkscape:current-layer='svg4225'%20/%3e%3cg%20id='enabled'%20style='fill:%23464646;fill-opacity:1'%3e%3cg%20id='polyline'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%2018,36%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4229'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2036,18%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4231'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2023.142,39.145%20-2.285,-2.29%2016,-15.998%202.285,2.285%20z'%20id='path4233'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cpath%20id='polygon'%20d='M%20100,24.565%2097.904,39.395%2083.07,42%2076,28.773%2086.463,18%20Z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='rectangle'%20d='m%20140,20%2020,0%200,20%20-20,0%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='circle'%20d='m%20221,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='marker'%20d='m%20270,19%20c%20-4.971,0%20-9,4.029%20-9,9%200,4.971%205.001,12%209,14%204.001,-2%209,-9.029%209,-14%200,-4.971%20-4.029,-9%20-9,-9%20z%20m%200,12.5%20c%20-2.484,0%20-4.5,-2.014%20-4.5,-4.5%200,-2.484%202.016,-4.5%204.5,-4.5%202.485,0%204.5,2.016%204.5,4.5%200,2.486%20-2.015,4.5%20-4.5,4.5%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cg%20id='edit'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20337,30.156%200,0.407%200,5.604%20c%200,1.658%20-1.344,3%20-3,3%20l%20-10,0%20c%20-1.655,0%20-3,-1.342%20-3,-3%20l%200,-10%20c%200,-1.657%201.345,-3%203,-3%20l%206.345,0%203.19,-3.17%20-9.535,0%20c%20-3.313,0%20-6,2.687%20-6,6%20l%200,10%20c%200,3.313%202.687,6%206,6%20l%2010,0%20c%203.314,0%206,-2.687%206,-6%20l%200,-8.809%20-3,2.968'%20id='path4240'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.72,24.637%20-8.892,8.892%20-2.828,0%200,-2.829%208.89,-8.89%20z'%20id='path4242'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.697,17.826%204,0%200,4%20-4,0%20z'%20transform='matrix(-0.70698336,-0.70723018,0.70723018,-0.70698336,567.55917,274.78273)'%20id='path4244'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cg%20id='remove'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20381,42%2018,0%200,-18%20-18,0%200,18%20z%20m%2014,-16%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z'%20id='path4247'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20395,20%200,-4%20-10,0%200,4%20-6,0%200,2%2022,0%200,-2%20-6,0%20z%20m%20-2,0%20-6,0%200,-2%206,0%200,2%20z'%20id='path4249'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3c/g%3e%3cg%20id='disabled'%20transform='translate(120,0)'%20style='fill:%23bbbbbb'%3e%3cuse%20xlink:href='%23edit'%20id='edit-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3cuse%20xlink:href='%23remove'%20id='remove-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3c/g%3e%3cpath%20style='fill:none;stroke:%23464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1'%20id='circle-3'%20d='m%20581.65725,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:300px 30px;background-clip:padding-box}.leaflet-retina .leaflet-draw-toolbar a{background-image:url(data:image/png;base64,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);background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20standalone='no'?%3e%3csvg%20xmlns:dc='http://purl.org/dc/elements/1.1/'%20xmlns:cc='http://creativecommons.org/ns%23'%20xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%20xmlns:svg='http://www.w3.org/2000/svg'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20viewBox='0%200%20600%2060'%20height='60'%20width='600'%20id='svg4225'%20version='1.1'%20inkscape:version='0.91%20r13725'%20sodipodi:docname='spritesheet.svg'%20inkscape:export-filename='/home/fpuga/development/upstream/icarto.Leaflet.draw/src/images/spritesheet-2x.png'%20inkscape:export-xdpi='90'%20inkscape:export-ydpi='90'%3e%3cmetadata%20id='metadata4258'%3e%3crdf:RDF%3e%3ccc:Work%20rdf:about=''%3e%3cdc:format%3eimage/svg+xml%3c/dc:format%3e%3cdc:type%20rdf:resource='http://purl.org/dc/dcmitype/StillImage'%20/%3e%3cdc:title%20/%3e%3c/cc:Work%3e%3c/rdf:RDF%3e%3c/metadata%3e%3cdefs%20id='defs4256'%20/%3e%3csodipodi:namedview%20pagecolor='%23ffffff'%20bordercolor='%23666666'%20borderopacity='1'%20objecttolerance='10'%20gridtolerance='10'%20guidetolerance='10'%20inkscape:pageopacity='0'%20inkscape:pageshadow='2'%20inkscape:window-width='1920'%20inkscape:window-height='1056'%20id='namedview4254'%20showgrid='false'%20inkscape:zoom='1.3101852'%20inkscape:cx='237.56928'%20inkscape:cy='7.2419621'%20inkscape:window-x='1920'%20inkscape:window-y='24'%20inkscape:window-maximized='1'%20inkscape:current-layer='svg4225'%20/%3e%3cg%20id='enabled'%20style='fill:%23464646;fill-opacity:1'%3e%3cg%20id='polyline'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%2018,36%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4229'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2036,18%200,6%206,0%200,-6%20-6,0%20z%20m%204,4%20-2,0%200,-2%202,0%200,2%20z'%20id='path4231'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%2023.142,39.145%20-2.285,-2.29%2016,-15.998%202.285,2.285%20z'%20id='path4233'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cpath%20id='polygon'%20d='M%20100,24.565%2097.904,39.395%2083.07,42%2076,28.773%2086.463,18%20Z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='rectangle'%20d='m%20140,20%2020,0%200,20%20-20,0%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='circle'%20d='m%20221,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20id='marker'%20d='m%20270,19%20c%20-4.971,0%20-9,4.029%20-9,9%200,4.971%205.001,12%209,14%204.001,-2%209,-9.029%209,-14%200,-4.971%20-4.029,-9%20-9,-9%20z%20m%200,12.5%20c%20-2.484,0%20-4.5,-2.014%20-4.5,-4.5%200,-2.484%202.016,-4.5%204.5,-4.5%202.485,0%204.5,2.016%204.5,4.5%200,2.486%20-2.015,4.5%20-4.5,4.5%20z'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cg%20id='edit'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20337,30.156%200,0.407%200,5.604%20c%200,1.658%20-1.344,3%20-3,3%20l%20-10,0%20c%20-1.655,0%20-3,-1.342%20-3,-3%20l%200,-10%20c%200,-1.657%201.345,-3%203,-3%20l%206.345,0%203.19,-3.17%20-9.535,0%20c%20-3.313,0%20-6,2.687%20-6,6%20l%200,10%20c%200,3.313%202.687,6%206,6%20l%2010,0%20c%203.314,0%206,-2.687%206,-6%20l%200,-8.809%20-3,2.968'%20id='path4240'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.72,24.637%20-8.892,8.892%20-2.828,0%200,-2.829%208.89,-8.89%20z'%20id='path4242'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20338.697,17.826%204,0%200,4%20-4,0%20z'%20transform='matrix(-0.70698336,-0.70723018,0.70723018,-0.70698336,567.55917,274.78273)'%20id='path4244'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3cg%20id='remove'%20style='fill:%23464646;fill-opacity:1'%3e%3cpath%20d='m%20381,42%2018,0%200,-18%20-18,0%200,18%20z%20m%2014,-16%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z%20m%20-4,0%202,0%200,14%20-2,0%200,-14%20z'%20id='path4247'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3cpath%20d='m%20395,20%200,-4%20-10,0%200,4%20-6,0%200,2%2022,0%200,-2%20-6,0%20z%20m%20-2,0%20-6,0%200,-2%206,0%200,2%20z'%20id='path4249'%20inkscape:connector-curvature='0'%20style='fill:%23464646;fill-opacity:1'%20/%3e%3c/g%3e%3c/g%3e%3cg%20id='disabled'%20transform='translate(120,0)'%20style='fill:%23bbbbbb'%3e%3cuse%20xlink:href='%23edit'%20id='edit-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3cuse%20xlink:href='%23remove'%20id='remove-disabled'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20/%3e%3c/g%3e%3cpath%20style='fill:none;stroke:%23464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1'%20id='circle-3'%20d='m%20581.65725,30%20c%200,6.078%20-4.926,11%20-11,11%20-6.074,0%20-11,-4.922%20-11,-11%200,-6.074%204.926,-11%2011,-11%206.074,0%2011,4.926%2011,11%20z'%20inkscape:connector-curvature='0'%20/%3e%3c/svg%3e")}.leaflet-draw a{display:block;text-align:center;text-decoration:none}.leaflet-draw a .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.leaflet-draw-actions{display:none;list-style:none;margin:0;padding:0;position:absolute;left:26px;top:0;white-space:nowrap}.leaflet-touch .leaflet-draw-actions{left:32px}.leaflet-right .leaflet-draw-actions{right:26px;left:auto}.leaflet-touch .leaflet-right .leaflet-draw-actions{right:32px;left:auto}.leaflet-draw-actions li{display:inline-block}.leaflet-draw-actions li:first-child a{border-left:0}.leaflet-draw-actions li:last-child a{-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.leaflet-right .leaflet-draw-actions li:last-child a{-webkit-border-radius:0;border-radius:0}.leaflet-right .leaflet-draw-actions li:first-child a{-webkit-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.leaflet-draw-actions a{background-color:#919187;border-left:1px solid #AAA;color:#fff;font:11px/19px Helvetica Neue,Arial,Helvetica,sans-serif;line-height:28px;text-decoration:none;padding-left:10px;padding-right:10px;height:28px}.leaflet-touch .leaflet-draw-actions a{font-size:12px;line-height:30px;height:30px}.leaflet-draw-actions-bottom{margin-top:0}.leaflet-draw-actions-top{margin-top:1px}.leaflet-draw-actions-top a,.leaflet-draw-actions-bottom a{height:27px;line-height:27px}.leaflet-draw-actions a:hover{background-color:#a0a098}.leaflet-draw-actions-top.leaflet-draw-actions-bottom a{height:26px;line-height:26px}.leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:-2px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:0 -1px}.leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-31px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-29px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-62px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-60px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-92px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-90px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-122px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-120px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-273px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-271px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-152px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-150px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-182px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-180px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-212px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-210px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-242px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-240px -2px}.leaflet-mouse-marker{background-color:#fff;cursor:crosshair}.leaflet-draw-tooltip{background:#363636;background:#00000080;border:1px solid transparent;-webkit-border-radius:4px;border-radius:4px;color:#fff;font:12px/18px Helvetica Neue,Arial,Helvetica,sans-serif;margin-left:20px;margin-top:-21px;padding:4px 8px;position:absolute;visibility:hidden;white-space:nowrap;z-index:6}.leaflet-draw-tooltip:before{border-right:6px solid black;border-right-color:#00000080;border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:7px;left:-7px}.leaflet-error-draw-tooltip{background-color:#f2dede;border:1px solid #e6b6bd;color:#b94a48}.leaflet-error-draw-tooltip:before{border-right-color:#e6b6bd}.leaflet-draw-tooltip-single{margin-top:-12px}.leaflet-draw-tooltip-subtext{color:#f8d5e4}.leaflet-draw-guide-dash{font-size:1%;opacity:.6;position:absolute;width:5px;height:5px}.leaflet-edit-marker-selected{background-color:#fe57a11a;border:4px dashed rgba(254,87,161,.6);-webkit-border-radius:4px;border-radius:4px;box-sizing:content-box}.leaflet-edit-move{cursor:move}.leaflet-edit-resize{cursor:pointer}.leaflet-oldie .leaflet-draw-toolbar{border:1px solid #999}`, ke = ".leaflet-ruler{height:35px;width:35px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhBQoMHg6McuYvAAABwklEQVQ4y43TP0jUYRgH8M/daQpqdujhnwShGiwyipCIoIgWxyIwrqEhnCQoGqKhpoYMg1qCQjg8TC2JCtSkjCgaKisIhyQUwpJssD9KZWRZg6d450/yGV54n/fzfd53eUOCaoNa5QpNGNPr9cKjUAatdsB++co0G1XiiHd+uqnTq8VzI874o9s2Ic1iiEpii9tmnJOdfkOldt/dU+HYolHnjdmpRNzbuVaNL86m4sXqNOrz3kMXHFKYMqd8VREGBToMifqLgwY1yNZirya5knaBqH16fJjNJiWEFSlxy4g980+pMuZkir/UJjLbrvNRPnINaLUygK/yQpuImHp47LOjuKJPOJA/1y4iZsAlyozLs8IO42L/4QlhGrSCy5oCeKH+dM59vVbL9sn6AP5MRzpnVKtN1viRxit1WRvEmVKFrQbTpoddNR3E+aYKuw1lPOapa0GcEf22KzOtejmcG1rkYdjEAn59KU5cDzjt+HI4BSZtVJTazfIsMQOmFAusLr/E53lniickJYIDNcaUL+JhMZPWBUdOeCCaweGOw5k0lFrv2uyRuBxPlLpoBtTK0p3mh+f+dKl6jX6LapRj6XrzD+1bmkFA/dTVAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA1LTEwVDEyOjMwOjE0KzAyOjAwUNH5TAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wNS0xMFQxMjozMDoxNCswMjowMCGMQfAAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:center}.leaflet-ruler:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAACmAAAApgHdff84AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAn9QTFRF////AAAAAAAAAAAAAAAAAAAzABcXABQUABIkDhwrAA0aAAwYABUgABQfABIbABAZAA8fABUcABMaABMfABIeABEcABAbABQeABMdABIdABEbABIbABIbABEdABEcABIcBxsoABEdABIdABIdABEcABMbABMdFBwgERofAhIbEhsfAhIdBxUeEhsgEBofAhMbAhMdBRMdAhIbAhIdAhMdCRceARIcDBgfDBgfDBcfDBcfFhwgDBceDBceCxceFCs5HTdGAxMcDxofGTFAHDRDHDVDHDVEHTZFDRkfEBofERogCh0oERsgARIcEhsfEhsgCh4pDCEsDRkfDRkfEBofBhQdDSMvDRgfDBgfCBUeBxUeDyUyECYzUDktPTAqCRceCRYeChYeDxkfEBkgLCgmWj4wCBYdW0AwGh4hHCAiHSAiTDctBhUdBxYdEBkfLyonMConBhUdJiUkLCclLSgmLigmOzApPTEpDBgfBRQdDBgfERsgWT8wBBMdCBYeChceQjMrSzctZEUyBBMdERsgXUAxXkExY0QzglQ5AxUfBxolSjcthlU6hlY7h1Y7AxMcSDUsSjYsd042g1Q5hlY6jVo8AhIcAxMcBBQdLEpcOVpvARIcAhIcBhQdDSIuEhsgJ0NUNS0oNi0oO11yTTgtUXmSUnqUXEAxXUExYEIyZUUzaEYzb0o1cEo1dEw2i1g8jFk8jcfskFs9mdX9mmA/mtf/pmZCqGdCsWxEvnJHxHVJxnZJyHdJzHlK0XxM031M139N3IFO3YJO4INP5IVQ5YZQ5oZQ6ohR7IlS7opS74tS8ItT841T9I1T9o5U949U+ZBV+pBV/ZJW/pJW/5NWIYcOagAAAJt0Uk5TAAECAwQFCw0OEhQVGBkcHyEkKCkqLTAzNUZLVFZZW2RnanJzeHl8f4uMjY6Pj5KVl52eoKGprKytrq+vsLGytLu9vb/BwsLDxcXP0NDS09bf4uPk5OXl5ufo6enq7O3u7+/x8fHy8/P09PT09fX19fX29vb29vb29/j4+Pj5+fn5+fn6+vr6+vr7/Pz8/Pz9/f39/f39/v7+/v7Td3FlAAABgklEQVQoU2NggAMRJU1DTWURBlQgqhWUND11Tfr05GBdMYQws8a07j2XVx2/cnLl5T0T5+ixQsX5/RrWr70CA+s2NPoLgMUlciddvnLl3PbslMysmi2ngXKTc/iA4uwRC1dfudRT76UtJy5lMHvHlSsni82ZgBLWbZdOHCuPlARpForvBYszA9ky1WeunC8y5YCI9125cqrEnJlbnoHBZ/6mK+0eTAjxUgtmbl99Bt6Ksxd2pXGDxRPg4kZMDIqxV6406cDFT8PEGRwnHLlYJQwSTwSJ51tCxRmiVuw7VAsRP7zkIEKcofnAlb0hEPWXls9AiDNUHriyMxwoPgVoToEVQpwhdNHuY/2imOIMZq1nr2QUgsVtkMUZZOOuXOmYiinOwF63/8QVsDgLd0wnFwMCOM3dBhK3ZeGOXjzLHklCIu8oRDxs8eaNXYJIMuplJ0HigYs3b906UwFJgtGzxY6FLWDe0mXLli3wVoEAaZAMjxoLA6eDu5urq4uziTEEqAIAvamx163e5EoAAAAASUVORK5CYII=)}.leaflet-ruler-clicked{height:35px;width:35px;background-repeat:no-repeat;background-position:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAACmAAAApgHdff84AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAn9QTFRF////AAAAAAAAAAAAAAAAAAAzABcXABQUABIkDhwrAA0aAAwYABUgABQfABIbABAZAA8fABUcABMaABMfABIeABEcABAbABQeABMdABIdABEbABIbABIbABEdABEcABIcBxsoABEdABIdABIdABEcABMbABMdFBwgERofAhIbEhsfAhIdBxUeEhsgEBofAhMbAhMdBRMdAhIbAhIdAhMdCRceARIcDBgfDBgfDBcfDBcfFhwgDBceDBceCxceFCs5HTdGAxMcDxofGTFAHDRDHDVDHDVEHTZFDRkfEBofERogCh0oERsgARIcEhsfEhsgCh4pDCEsDRkfDRkfEBofBhQdDSMvDRgfDBgfCBUeBxUeDyUyECYzUDktPTAqCRceCRYeChYeDxkfEBkgLCgmWj4wCBYdW0AwGh4hHCAiHSAiTDctBhUdBxYdEBkfLyonMConBhUdJiUkLCclLSgmLigmOzApPTEpDBgfBRQdDBgfERsgWT8wBBMdCBYeChceQjMrSzctZEUyBBMdERsgXUAxXkExY0QzglQ5AxUfBxolSjcthlU6hlY7h1Y7AxMcSDUsSjYsd042g1Q5hlY6jVo8AhIcAxMcBBQdLEpcOVpvARIcAhIcBhQdDSIuEhsgJ0NUNS0oNi0oO11yTTgtUXmSUnqUXEAxXUExYEIyZUUzaEYzb0o1cEo1dEw2i1g8jFk8jcfskFs9mdX9mmA/mtf/pmZCqGdCsWxEvnJHxHVJxnZJyHdJzHlK0XxM031M139N3IFO3YJO4INP5IVQ5YZQ5oZQ6ohR7IlS7opS74tS8ItT841T9I1T9o5U949U+ZBV+pBV/ZJW/pJW/5NWIYcOagAAAJt0Uk5TAAECAwQFCw0OEhQVGBkcHyEkKCkqLTAzNUZLVFZZW2RnanJzeHl8f4uMjY6Pj5KVl52eoKGprKytrq+vsLGytLu9vb/BwsLDxcXP0NDS09bf4uPk5OXl5ufo6enq7O3u7+/x8fHy8/P09PT09fX19fX29vb29vb29/j4+Pj5+fn5+fn6+vr6+vr7/Pz8/Pz9/f39/f39/v7+/v7Td3FlAAABgklEQVQoU2NggAMRJU1DTWURBlQgqhWUND11Tfr05GBdMYQws8a07j2XVx2/cnLl5T0T5+ixQsX5/RrWr70CA+s2NPoLgMUlciddvnLl3PbslMysmi2ngXKTc/iA4uwRC1dfudRT76UtJy5lMHvHlSsni82ZgBLWbZdOHCuPlARpForvBYszA9ky1WeunC8y5YCI9125cqrEnJlbnoHBZ/6mK+0eTAjxUgtmbl99Bt6Ksxd2pXGDxRPg4kZMDIqxV6406cDFT8PEGRwnHLlYJQwSTwSJ51tCxRmiVuw7VAsRP7zkIEKcofnAlb0hEPWXls9AiDNUHriyMxwoPgVoToEVQpwhdNHuY/2imOIMZq1nr2QUgsVtkMUZZOOuXOmYiinOwF63/8QVsDgLd0wnFwMCOM3dBhK3ZeGOXjzLHklCIu8oRDxs8eaNXYJIMuplJ0HigYs3b906UwFJgtGzxY6FLWDe0mXLli3wVoEAaZAMjxoLA6eDu5urq4uziTEEqAIAvamx163e5EoAAAAASUVORK5CYII=);border-color:#7fff00!important}.leaflet-bar{background-color:#fff}.leaflet-control{cursor:pointer}.result-tooltip{background-color:#fff;border-width:medium;border-color:#de0000;font-size:smaller}.moving-tooltip{background-color:#ffffffb3;background-clip:padding-box;opacity:.5;border:dotted;border-color:red;font-size:smaller}.plus-length{padding-left:45px}", Le = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABSCAMAAAAhFXfZAAAC91BMVEVMaXEzeak2f7I4g7g3g7cua5gzeKg8hJo3grY4g7c3grU0gLI2frE0daAubJc2gbQwd6QzeKk2gLMtd5sxdKIua5g1frA2f7IydaM0e6w2fq41fK01eqo3grgubJgta5cxdKI1f7AydaQydaMxc6EubJgvbJkwcZ4ubZkwcJwubZgubJcydqUydKIxapgubJctbJcubZcubJcvbJYubJcvbZkubJctbJctbZcubJg2f7AubJcrbZcubJcubJcua5g3grY0fq8ubJcubJdEkdEwhsw6i88vhswuhcsuhMtBjMgthMsrg8srgss6is8qgcs8i9A9iMYtg8spgcoogMo7hcMngMonf8olfso4gr8kfck5iM8jfMk4iM8he8k1fro7itAgesk2hs8eecgzfLcofssdeMg0hc4cd8g2hcsxeLQbdsgZdcgxeLImfcszhM0vda4xgckzhM4xg84wf8Yxgs4udKsvfcQucqhUndROmdM1fK0wcZ8vb5w0eqpQm9MzeKhXoNVcpdYydKNWn9VZotVKltJFjsIwcJ1Rms9OlslLmtH///8+kc9epdYzd6dbo9VHkMM2f7FHmNBClM8ydqVcpNY9hro3gLM9hLczealQmcw3fa46f7A8gLMxc6I3eagyc6FIldJMl9JSnNRSntNNl9JPnNJFi75UnM9ZodVKksg8kM45jc09e6ZHltFBk883gbRBh7pDk9EwcaBzn784g7dKkcY2i81Om9M7j85Llc81is09g7Q4grY/j9A0eqxKmdFFltBEjcXf6fFImdBCiLxJl9FGlNFBi78yiMxVndEvbpo6js74+vx+psPP3+o/ks5HkcpGmNCjwdZCkNDM3ehYoNJEls+lxNkxh8xHks0+jdC1zd5Lg6r+/v/H2ufz9/o3jM3t8/edvdM/k89Th61OiLBSjbZklbaTt9BfptdjmL1AicBHj8hGk9FAgK1dkLNTjLRekrdClc/k7fM0icy0y9tgp9c4jc2NtM9Dlc8zicxeXZn3AAAAQ3RSTlMAHDdTb4yPA+LtnEQmC4L2EmHqB7XA0d0sr478x4/Yd5i1zOfyPkf1sLVq4Nh3FvjxopQ2/STNuFzUwFIwxKaejILpIBEV9wAABhVJREFUeF6s1NdyFEcY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", Me = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=", Ee = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAQAAAACach9AAACMUlEQVR4Ae3ShY7jQBAE0Aoz/f9/HTMzhg1zrdKUrJbdx+Kd2nD8VNudfsL/Th///dyQN2TH6f3y/BGpC379rV+S+qqetBOxImNQXL8JCAr2V4iMQXHGNJxeCfZXhSRBcQMfvkOWUdtfzlLgAENmZDcmo2TVmt8OSM2eXxBp3DjHSMFutqS7SbmemzBiR+xpKCNUIRkdkkYxhAkyGoBvyQFEJEefwSmmvBfJuJ6aKqKWnAkvGZOaZXTUgFqYULWNSHUckZuR1HIIimUExutRxwzOLROIG4vKmCKQt364mIlhSyzAf1m9lHZHJZrlAOMMztRRiKimp/rpdJDc9Awry5xTZCte7FHtuS8wJgeYGrex28xNTd086Dik7vUMscQOa8y4DoGtCCSkAKlNwpgNtphjrC6MIHUkR6YWxxs6Sc5xqn222mmCRFzIt8lEdKx+ikCtg91qS2WpwVfBelJCiQJwvzixfI9cxZQWgiSJelKnwBElKYtDOb2MFbhmUigbReQBV0Cg4+qMXSxXSyGUn4UbF8l+7qdSGnTC0XLCmahIgUHLhLOhpVCtw4CzYXvLQWQbJNmxoCsOKAxSgBJno75avolkRw8iIAFcsdc02e9iyCd8tHwmeSSoKTowIgvscSGZUOA7PuCN5b2BX9mQM7S0wYhMNU74zgsPBj3HU7wguAfnxxjFQGBE6pwN+GjME9zHY7zGp8wVxMShYX9NXvEWD3HbwJf4giO4CFIQxXScH1/TM+04kkBiAAAAAElFTkSuQmCC", Ce = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='430'%20height='430'%20style='width:100%25;height:100%25;transform:translate3d(0,0,0);content-visibility:visible'%20viewBox='0%200%20430%20430'%3e%3cdefs%3e%3cclipPath%20id='i'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='s'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='e'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='p'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='f'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='m'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='g'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='j'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cclipPath%20id='h'%3e%3cpath%20d='M0%200h430v430H0z'/%3e%3c/clipPath%3e%3cfilter%20id='t'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'/%3e%3c/filter%3e%3cfilter%20id='r'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'%20stdDeviation='52.5%2052.5'/%3e%3c/filter%3e%3cfilter%20id='n'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'/%3e%3c/filter%3e%3cfilter%20id='k'%20width='300%25'%20height='300%25'%20x='-100%25'%20y='-100%25'%3e%3cfeGaussianBlur%20result='filter_result_0'/%3e%3c/filter%3e%3cmask%20id='u'%20mask-type='alpha'%3e%3cuse%20xmlns:ns1='http://www.w3.org/1999/xlink'%20ns1:href='%23a'/%3e%3c/mask%3e%3cmask%20id='q'%20mask-type='alpha'%3e%3cuse%20xmlns:ns2='http://www.w3.org/1999/xlink'%20ns2:href='%23b'/%3e%3c/mask%3e%3cmask%20id='o'%20mask-type='alpha'%3e%3cuse%20xmlns:ns3='http://www.w3.org/1999/xlink'%20ns3:href='%23c'/%3e%3c/mask%3e%3cmask%20id='l'%20mask-type='alpha'%3e%3cuse%20xmlns:ns4='http://www.w3.org/1999/xlink'%20ns4:href='%23d'/%3e%3c/mask%3e%3cg%20id='a'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20clip-path='url(%23e)'%20style='display:none'%3e%3cpath%20class='secondary'%20style='display:none'/%3e%3cpath%20class='primary'%20style='display:none'/%3e%3c/g%3e%3cg%20id='b'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='12'%20clip-path='url(%23f)'%20style='display:block'%3e%3cpath%20stroke='%2308A88A'%20d='M44.446-66.518a79.998%2079.998%200%200%200-101.012%209.952A79.998%2079.998%200%201%200%2056.569%2056.569%2080.005%2080.005%200%200%200%2073.91-30.615a80.001%2080.001%200%200%200-29.464-35.903z'%20class='secondary'%20style='display:block'%20transform='translate(215%20214)'/%3e%3cpath%20stroke='%23121331'%20d='m141.409%2025.241%208.727%205.041s0%200%200%200a22.3%2022.3%200%200%201%2010.411%2013.542%2022.32%2022.32%200%200%201-2.221%2016.937l-26.515%2045.924a22.325%2022.325%200%200%201-30.497%208.172l-8.754-5.059a143.414%20143.414%200%200%201-43.718%2025.286v10.108a22.302%2022.302%200%200%201-13.778%2020.612%2022.303%2022.303%200%200%201-8.539%201.696h-53.029a22.303%2022.303%200%200%201-15.779-6.531%2022.302%2022.302%200%200%201-6.537-15.777v-10.073a143.416%20143.416%200%200%201-43.719-25.285l-8.754%205.059a22.325%2022.325%200%200%201-30.497-8.172l-26.523-45.924a22.315%2022.315%200%200%201-2.238-16.943A22.31%2022.31%200%200%201-150.142%2030.3l8.727-5.041a145.097%20145.097%200%200%201%200-50.518l-8.727-5.041a22.294%2022.294%200%200%201-10.409-13.554%2022.306%2022.306%200%200%201%202.238-16.943l26.514-45.924a22.325%2022.325%200%200%201%2030.497-8.172l8.754%205.059a143.416%20143.416%200%200%201%2043.719-25.285v-10.073a22.302%2022.302%200%200%201%206.537-15.777%2022.3%2022.3%200%200%201%2015.779-6.531h53.02a22.307%2022.307%200%200%201%2022.317%2022.308v10.037a143.41%20143.41%200%200%201%2043.718%2025.285l8.754-5.059a22.325%2022.325%200%200%201%2030.497%208.172l26.515%2045.942a22.313%2022.313%200%200%201-1.618%2024.757%2022.294%2022.294%200%200%201-6.554%205.74l-8.727%205.041a145.097%20145.097%200%200%201%200%2050.518z'%20class='primary'%20style='display:block'%20transform='rotate(-120%20169.576%2045.095)'/%3e%3c/g%3e%3cg%20id='c'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20clip-path='url(%23g)'%20style='display:none'%3e%3cpath%20class='secondary'%20style='display:none'/%3e%3cpath%20class='primary'%20style='display:none'/%3e%3c/g%3e%3cg%20id='d'%20fill-opacity='0'%20stroke-linecap='round'%20stroke-linejoin='round'%20clip-path='url(%23h)'%20style='display:none'%3e%3cpath%20class='secondary'%20style='display:none'/%3e%3cpath%20class='primary'%20style='display:none'/%3e%3c/g%3e%3c/defs%3e%3cg%20clip-path='url(%23i)'%3e%3cg%20clip-path='url(%23j)'%20filter='url(%23k)'%20mask='url(%23l)'%20style='display:none'%3e%3cg%20class='design'%3e%3cpath%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3cg%20clip-path='url(%23m)'%20filter='url(%23n)'%20mask='url(%23o)'%20style='display:none'%3e%3cg%20class='design'%3e%3cpath%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3cg%20clip-path='url(%23p)'%20mask='url(%23q)'%20style='display:block'%3e%3cg%20filter='url(%23r)'%20transform='rotate(-94%20238.762%20-16.565)%20scale(2.4)'%3e%3cg%20class='design'%3e%3cpath%20fill='%234BE1EC'%20d='M0-250c137.975%200%20250%20112.025%20250%20250S137.975%20250%200%20250-250%20137.975-250%200-137.975-250%200-250z'%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20fill='%23CB5EEE'%20d='M113.242-295.384c97.478%200%20176.5%2079.022%20176.5%20176.5s-79.022%20176.5-176.5%20176.5c-43.948%200-74.396-34.057-105.29-60.631-37.631-32.369-71.21-62.338-71.21-115.869%200-97.478%2079.022-176.5%20176.5-176.5z'%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3cg%20clip-path='url(%23s)'%20filter='url(%23t)'%20mask='url(%23u)'%20style='display:none'%3e%3cg%20class='design'%3e%3cpath%20class='primary'/%3e%3c/g%3e%3cg%20class='design'%3e%3cpath%20class='secondary'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e", le = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%20-1.67%2047.336%2047.336'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='Group_42'%20data-name='Group%2042'%20transform='translate(-172.455%20-364.36)'%3e%3cpath%20id='Rectangle_17'%20data-name='Rectangle%2017'%20d='M4.351,0H40.984a4.351,4.351,0,0,1,4.351,4.351V22.117a1,1,0,0,1-1,1H1a1,1,0,0,1-1-1V4.351A4.351,4.351,0,0,1,4.351,0Z'%20transform='translate(173.455%20384.243)'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3cpath%20id='Path_90'%20data-name='Path%2090'%20d='M218.79,390.249a3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.778,3.778,0,0,1-3.777-3.778'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3cg%20id='Group_41'%20data-name='Group%2041'%3e%3cpath%20id='Rectangle_18'%20data-name='Rectangle%2018'%20d='M4.351,0H26.473a4.351,4.351,0,0,1,4.351,4.351V17.883a1,1,0,0,1-1,1H1a1,1,0,0,1-1-1V4.351A4.351,4.351,0,0,1,4.351,0Z'%20transform='translate(180.71%20365.36)'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3cpath%20id='Path_91'%20data-name='Path%2091'%20d='M211.234,370.794a3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778'%20fill='none'%20stroke='%23000000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e", Ie = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhBQoMHg6McuYvAAABwklEQVQ4y43TP0jUYRgH8M/daQpqdujhnwShGiwyipCIoIgWxyIwrqEhnCQoGqKhpoYMg1qCQjg8TC2JCtSkjCgaKisIhyQUwpJssD9KZWRZg6d450/yGV54n/fzfd53eUOCaoNa5QpNGNPr9cKjUAatdsB++co0G1XiiHd+uqnTq8VzI874o9s2Ic1iiEpii9tmnJOdfkOldt/dU+HYolHnjdmpRNzbuVaNL86m4sXqNOrz3kMXHFKYMqd8VREGBToMifqLgwY1yNZirya5knaBqH16fJjNJiWEFSlxy4g980+pMuZkir/UJjLbrvNRPnINaLUygK/yQpuImHp47LOjuKJPOJA/1y4iZsAlyozLs8IO42L/4QlhGrSCy5oCeKH+dM59vVbL9sn6AP5MRzpnVKtN1viRxit1WRvEmVKFrQbTpoddNR3E+aYKuw1lPOapa0GcEf22KzOtejmcG1rkYdjEAn59KU5cDzjt+HI4BSZtVJTazfIsMQOmFAusLr/E53lniickJYIDNcaUL+JhMZPWBUdOeCCaweGOw5k0lFrv2uyRuBxPlLpoBtTK0p3mh+f+dKl6jX6LapRj6XrzD+1bmkFA/dTVAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA1LTEwVDEyOjMwOjE0KzAyOjAwUNH5TAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wNS0xMFQxMjozMDoxNCswMjowMCGMQfAAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC", _e = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAACmAAAApgHdff84AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAn9QTFRF////AAAAAAAAAAAAAAAAAAAzABcXABQUABIkDhwrAA0aAAwYABUgABQfABIbABAZAA8fABUcABMaABMfABIeABEcABAbABQeABMdABIdABEbABIbABIbABEdABEcABIcBxsoABEdABIdABIdABEcABMbABMdFBwgERofAhIbEhsfAhIdBxUeEhsgEBofAhMbAhMdBRMdAhIbAhIdAhMdCRceARIcDBgfDBgfDBcfDBcfFhwgDBceDBceCxceFCs5HTdGAxMcDxofGTFAHDRDHDVDHDVEHTZFDRkfEBofERogCh0oERsgARIcEhsfEhsgCh4pDCEsDRkfDRkfEBofBhQdDSMvDRgfDBgfCBUeBxUeDyUyECYzUDktPTAqCRceCRYeChYeDxkfEBkgLCgmWj4wCBYdW0AwGh4hHCAiHSAiTDctBhUdBxYdEBkfLyonMConBhUdJiUkLCclLSgmLigmOzApPTEpDBgfBRQdDBgfERsgWT8wBBMdCBYeChceQjMrSzctZEUyBBMdERsgXUAxXkExY0QzglQ5AxUfBxolSjcthlU6hlY7h1Y7AxMcSDUsSjYsd042g1Q5hlY6jVo8AhIcAxMcBBQdLEpcOVpvARIcAhIcBhQdDSIuEhsgJ0NUNS0oNi0oO11yTTgtUXmSUnqUXEAxXUExYEIyZUUzaEYzb0o1cEo1dEw2i1g8jFk8jcfskFs9mdX9mmA/mtf/pmZCqGdCsWxEvnJHxHVJxnZJyHdJzHlK0XxM031M139N3IFO3YJO4INP5IVQ5YZQ5oZQ6ohR7IlS7opS74tS8ItT841T9I1T9o5U949U+ZBV+pBV/ZJW/pJW/5NWIYcOagAAAJt0Uk5TAAECAwQFCw0OEhQVGBkcHyEkKCkqLTAzNUZLVFZZW2RnanJzeHl8f4uMjY6Pj5KVl52eoKGprKytrq+vsLGytLu9vb/BwsLDxcXP0NDS09bf4uPk5OXl5ufo6enq7O3u7+/x8fHy8/P09PT09fX19fX29vb29vb29/j4+Pj5+fn5+fn6+vr6+vr7/Pz8/Pz9/f39/f39/v7+/v7Td3FlAAABgklEQVQoU2NggAMRJU1DTWURBlQgqhWUND11Tfr05GBdMYQws8a07j2XVx2/cnLl5T0T5+ixQsX5/RrWr70CA+s2NPoLgMUlciddvnLl3PbslMysmi2ngXKTc/iA4uwRC1dfudRT76UtJy5lMHvHlSsni82ZgBLWbZdOHCuPlARpForvBYszA9ky1WeunC8y5YCI9125cqrEnJlbnoHBZ/6mK+0eTAjxUgtmbl99Bt6Ksxd2pXGDxRPg4kZMDIqxV6406cDFT8PEGRwnHLlYJQwSTwSJ51tCxRmiVuw7VAsRP7zkIEKcofnAlb0hEPWXls9AiDNUHriyMxwoPgVoToEVQpwhdNHuY/2imOIMZq1nr2QUgsVtkMUZZOOuXOmYiinOwF63/8QVsDgLd0wnFwMCOM3dBhK3ZeGOXjzLHklCIu8oRDxs8eaNXYJIMuplJ0HigYs3b906UwFJgtGzxY6FLWDe0mXLli3wVoEAaZAMjxoLA6eDu5urq4uziTEEqAIAvamx163e5EoAAAAASUVORK5CYII=";
|
|
52
|
+
function Be(s) {
|
|
53
53
|
const t = "data-leaflet-styles";
|
|
54
54
|
if (s.querySelector(`style[${t}]`)) return;
|
|
55
55
|
const e = document.createElement("style");
|
|
56
56
|
e.setAttribute(t, "true"), e.textContent = `
|
|
57
57
|
/* --- Leaflet core CSS --- */
|
|
58
|
-
${
|
|
58
|
+
${xe}
|
|
59
59
|
|
|
60
60
|
/* --- Leaflet.draw CSS --- */
|
|
61
|
-
${
|
|
61
|
+
${ve}
|
|
62
62
|
|
|
63
63
|
/* --- Leaflet.ruler CSS --- */
|
|
64
|
-
${
|
|
64
|
+
${ke}
|
|
65
65
|
|
|
66
66
|
/* --- Fix Leaflet.ruler icons (broken relative paths in inlined CSS) --- */
|
|
67
67
|
.leaflet-ruler {
|
|
68
68
|
width: 30px !important; /* Match Leaflet Draw default size approx */
|
|
69
69
|
height: 30px !important;
|
|
70
70
|
background-color: #fff; /* Ensure visibility */
|
|
71
|
-
background-image: url(${
|
|
71
|
+
background-image: url(${Ie}) !important;
|
|
72
72
|
background-size: 16px 16px; /* Scale icon to fit */
|
|
73
73
|
}
|
|
74
74
|
.leaflet-ruler:hover,
|
|
75
75
|
.leaflet-ruler-clicked {
|
|
76
|
-
background-image: url(${
|
|
76
|
+
background-image: url(${_e}) !important;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/* --- Custom overrides for marker/handle sizes --- */
|
|
@@ -103,7 +103,7 @@ ${we}
|
|
|
103
103
|
padding: 0;
|
|
104
104
|
border-radius: 4px;
|
|
105
105
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
|
|
106
|
-
background-image: url(${
|
|
106
|
+
background-image: url(${Ce});
|
|
107
107
|
transition: background-color 0.15s ease, box-shadow 0.15s ease;
|
|
108
108
|
}
|
|
109
109
|
.leaflet-ruler-settings-button:hover {
|
|
@@ -187,7 +187,7 @@ ${we}
|
|
|
187
187
|
|
|
188
188
|
/* --- Layer Cake draw tool icon + manager UI --- */
|
|
189
189
|
.leaflet-draw-toolbar a.leaflet-draw-draw-cake {
|
|
190
|
-
background-image: url(${
|
|
190
|
+
background-image: url(${le}) !important;
|
|
191
191
|
background-size: 18px 18px !important;
|
|
192
192
|
background-position: 50% 50% !important;
|
|
193
193
|
background-repeat: no-repeat !important;
|
|
@@ -247,14 +247,14 @@ ${we}
|
|
|
247
247
|
}
|
|
248
248
|
`, s.appendChild(e);
|
|
249
249
|
}
|
|
250
|
-
function
|
|
250
|
+
function Se(s) {
|
|
251
251
|
const t = "data-leaflet-custom-styles";
|
|
252
252
|
if (s.querySelector(`style[${t}]`)) return;
|
|
253
253
|
const e = document.createElement("style");
|
|
254
254
|
e.setAttribute(t, "true"), e.textContent = `
|
|
255
255
|
/* Ensure Layer Cake toolbar icon uses project asset instead of draw sprite sheet */
|
|
256
256
|
.leaflet-draw-toolbar a.leaflet-draw-draw-cake {
|
|
257
|
-
background-image: url(${
|
|
257
|
+
background-image: url(${le}) !important;
|
|
258
258
|
background-size: 18px 18px !important;
|
|
259
259
|
background-position: 50% 50% !important;
|
|
260
260
|
background-repeat: no-repeat !important;
|
|
@@ -262,51 +262,51 @@ function Ie(s) {
|
|
|
262
262
|
}
|
|
263
263
|
`, s.appendChild(e);
|
|
264
264
|
}
|
|
265
|
-
function
|
|
265
|
+
function ze() {
|
|
266
266
|
var s, t;
|
|
267
|
-
(t = (s =
|
|
268
|
-
iconRetinaUrl:
|
|
269
|
-
iconUrl:
|
|
270
|
-
shadowUrl:
|
|
267
|
+
(t = (s = v.Icon.Default).mergeOptions) == null || t.call(s, {
|
|
268
|
+
iconRetinaUrl: Le,
|
|
269
|
+
iconUrl: Me,
|
|
270
|
+
shadowUrl: Ee
|
|
271
271
|
});
|
|
272
272
|
}
|
|
273
|
-
function
|
|
273
|
+
function Re(s) {
|
|
274
274
|
const { root: t, skipStyles: e } = s;
|
|
275
275
|
try {
|
|
276
|
-
e || (
|
|
276
|
+
e || (Be(t), ze()), Se(t);
|
|
277
277
|
} catch {
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
|
-
let
|
|
281
|
-
const
|
|
282
|
-
function
|
|
283
|
-
if (!
|
|
280
|
+
let O;
|
|
281
|
+
const Oe = new Uint8Array(16);
|
|
282
|
+
function De() {
|
|
283
|
+
if (!O && (O = typeof crypto != "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !O))
|
|
284
284
|
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
285
|
-
return
|
|
285
|
+
return O(Oe);
|
|
286
286
|
}
|
|
287
|
-
const
|
|
287
|
+
const M = [];
|
|
288
288
|
for (let s = 0; s < 256; ++s)
|
|
289
|
-
|
|
290
|
-
function
|
|
291
|
-
return
|
|
289
|
+
M.push((s + 256).toString(16).slice(1));
|
|
290
|
+
function Ue(s, t = 0) {
|
|
291
|
+
return M[s[t + 0]] + M[s[t + 1]] + M[s[t + 2]] + M[s[t + 3]] + "-" + M[s[t + 4]] + M[s[t + 5]] + "-" + M[s[t + 6]] + M[s[t + 7]] + "-" + M[s[t + 8]] + M[s[t + 9]] + "-" + M[s[t + 10]] + M[s[t + 11]] + M[s[t + 12]] + M[s[t + 13]] + M[s[t + 14]] + M[s[t + 15]];
|
|
292
292
|
}
|
|
293
|
-
const
|
|
294
|
-
randomUUID:
|
|
293
|
+
const Te = typeof crypto != "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto), ee = {
|
|
294
|
+
randomUUID: Te
|
|
295
295
|
};
|
|
296
296
|
function q(s, t, e) {
|
|
297
|
-
if (
|
|
298
|
-
return
|
|
297
|
+
if (ee.randomUUID && !s)
|
|
298
|
+
return ee.randomUUID();
|
|
299
299
|
s = s || {};
|
|
300
|
-
const o = s.random || (s.rng ||
|
|
301
|
-
return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128,
|
|
300
|
+
const o = s.random || (s.rng || De)();
|
|
301
|
+
return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, Ue(o);
|
|
302
302
|
}
|
|
303
|
-
function
|
|
303
|
+
function Pe(s) {
|
|
304
304
|
var e, o;
|
|
305
305
|
const t = (o = s.id) != null ? o : (e = s.properties) == null ? void 0 : e.id;
|
|
306
306
|
if (t != null)
|
|
307
307
|
return String(t);
|
|
308
308
|
}
|
|
309
|
-
function
|
|
309
|
+
function Ne(s, t) {
|
|
310
310
|
const e = (o) => {
|
|
311
311
|
switch (o.type) {
|
|
312
312
|
case "Point":
|
|
@@ -314,87 +314,87 @@ function Ue(s, t) {
|
|
|
314
314
|
break;
|
|
315
315
|
case "MultiPoint":
|
|
316
316
|
case "LineString":
|
|
317
|
-
for (const
|
|
317
|
+
for (const r of o.coordinates) t(r);
|
|
318
318
|
break;
|
|
319
319
|
case "MultiLineString":
|
|
320
320
|
case "Polygon":
|
|
321
|
-
for (const
|
|
322
|
-
for (const
|
|
321
|
+
for (const r of o.coordinates)
|
|
322
|
+
for (const a of r) t(a);
|
|
323
323
|
break;
|
|
324
324
|
case "MultiPolygon":
|
|
325
|
-
for (const
|
|
326
|
-
for (const
|
|
327
|
-
for (const
|
|
325
|
+
for (const r of o.coordinates)
|
|
326
|
+
for (const a of r)
|
|
327
|
+
for (const i of a) t(i);
|
|
328
328
|
break;
|
|
329
329
|
case "GeometryCollection":
|
|
330
|
-
for (const
|
|
330
|
+
for (const r of o.geometries) e(r);
|
|
331
331
|
break;
|
|
332
332
|
}
|
|
333
333
|
};
|
|
334
334
|
e(s);
|
|
335
335
|
}
|
|
336
|
-
function
|
|
336
|
+
function Fe(s) {
|
|
337
337
|
const t = s.geometry;
|
|
338
338
|
if (!t) return null;
|
|
339
|
-
let e = 1 / 0, o = 1 / 0,
|
|
340
|
-
return
|
|
341
|
-
const [l, c] =
|
|
342
|
-
typeof l != "number" || typeof c != "number" || (
|
|
343
|
-
}),
|
|
344
|
-
}
|
|
345
|
-
function
|
|
346
|
-
let t = 1 / 0, e = 1 / 0, o = -1 / 0,
|
|
347
|
-
for (const
|
|
348
|
-
const
|
|
349
|
-
|
|
350
|
-
}
|
|
351
|
-
return
|
|
352
|
-
}
|
|
353
|
-
function
|
|
354
|
-
const [t, e, o,
|
|
339
|
+
let e = 1 / 0, o = 1 / 0, r = -1 / 0, a = -1 / 0, i = !1;
|
|
340
|
+
return Ne(t, (n) => {
|
|
341
|
+
const [l, c] = n;
|
|
342
|
+
typeof l != "number" || typeof c != "number" || (i = !0, l < e && (e = l), c < o && (o = c), l > r && (r = l), c > a && (a = c));
|
|
343
|
+
}), i ? [e, o, r, a] : null;
|
|
344
|
+
}
|
|
345
|
+
function He(s) {
|
|
346
|
+
let t = 1 / 0, e = 1 / 0, o = -1 / 0, r = -1 / 0, a = !1;
|
|
347
|
+
for (const i of s.features) {
|
|
348
|
+
const n = Fe(i);
|
|
349
|
+
n && (a = !0, t = Math.min(t, n[0]), e = Math.min(e, n[1]), o = Math.max(o, n[2]), r = Math.max(r, n[3]));
|
|
350
|
+
}
|
|
351
|
+
return a ? [t, e, o, r] : null;
|
|
352
|
+
}
|
|
353
|
+
function Ve(s) {
|
|
354
|
+
const [t, e, o, r] = s;
|
|
355
355
|
return [
|
|
356
356
|
[e, t],
|
|
357
|
-
[
|
|
357
|
+
[r, o]
|
|
358
358
|
];
|
|
359
359
|
}
|
|
360
|
-
function
|
|
360
|
+
function te(s) {
|
|
361
361
|
var e;
|
|
362
362
|
const t = [];
|
|
363
363
|
for (const o of s.features) {
|
|
364
364
|
if (!o || o.type !== "Feature") continue;
|
|
365
|
-
const
|
|
366
|
-
if (
|
|
367
|
-
switch (
|
|
365
|
+
const r = (e = o.properties) != null ? e : {}, a = o.geometry;
|
|
366
|
+
if (a)
|
|
367
|
+
switch (a.type) {
|
|
368
368
|
case "MultiPolygon":
|
|
369
|
-
for (const
|
|
369
|
+
for (const i of a.coordinates)
|
|
370
370
|
t.push({
|
|
371
371
|
type: "Feature",
|
|
372
|
-
properties: { ...
|
|
373
|
-
geometry: { type: "Polygon", coordinates:
|
|
372
|
+
properties: { ...r },
|
|
373
|
+
geometry: { type: "Polygon", coordinates: i }
|
|
374
374
|
});
|
|
375
375
|
break;
|
|
376
376
|
case "MultiLineString":
|
|
377
|
-
for (const
|
|
377
|
+
for (const i of a.coordinates)
|
|
378
378
|
t.push({
|
|
379
379
|
type: "Feature",
|
|
380
|
-
properties: { ...
|
|
381
|
-
geometry: { type: "LineString", coordinates:
|
|
380
|
+
properties: { ...r },
|
|
381
|
+
geometry: { type: "LineString", coordinates: i }
|
|
382
382
|
});
|
|
383
383
|
break;
|
|
384
384
|
case "MultiPoint":
|
|
385
|
-
for (const
|
|
385
|
+
for (const i of a.coordinates)
|
|
386
386
|
t.push({
|
|
387
387
|
type: "Feature",
|
|
388
|
-
properties: { ...
|
|
389
|
-
geometry: { type: "Point", coordinates:
|
|
388
|
+
properties: { ...r },
|
|
389
|
+
geometry: { type: "Point", coordinates: i }
|
|
390
390
|
});
|
|
391
391
|
break;
|
|
392
392
|
case "GeometryCollection":
|
|
393
|
-
for (const
|
|
393
|
+
for (const i of a.geometries)
|
|
394
394
|
t.push({
|
|
395
395
|
type: "Feature",
|
|
396
|
-
properties: { ...
|
|
397
|
-
geometry:
|
|
396
|
+
properties: { ...r },
|
|
397
|
+
geometry: i
|
|
398
398
|
});
|
|
399
399
|
break;
|
|
400
400
|
default:
|
|
@@ -404,25 +404,25 @@ function $(s) {
|
|
|
404
404
|
}
|
|
405
405
|
return { type: "FeatureCollection", features: t };
|
|
406
406
|
}
|
|
407
|
-
function
|
|
407
|
+
function ce(s) {
|
|
408
408
|
return (s == null ? void 0 : s.type) === "Polygon";
|
|
409
409
|
}
|
|
410
|
-
function
|
|
410
|
+
function de(s) {
|
|
411
411
|
return (s == null ? void 0 : s.type) === "MultiPolygon";
|
|
412
412
|
}
|
|
413
|
-
function
|
|
413
|
+
function Ge(s) {
|
|
414
414
|
const t = s.geometry;
|
|
415
|
-
return t ?
|
|
415
|
+
return t ? ce(t) ? [t.coordinates] : de(t) ? t.coordinates : [] : [];
|
|
416
416
|
}
|
|
417
|
-
function
|
|
418
|
-
var
|
|
417
|
+
function Je(s, t) {
|
|
418
|
+
var r, a;
|
|
419
419
|
const e = [];
|
|
420
|
-
for (const
|
|
421
|
-
const
|
|
422
|
-
|
|
420
|
+
for (const i of s) {
|
|
421
|
+
const n = Ge(i);
|
|
422
|
+
n.length > 0 && e.push(...n);
|
|
423
423
|
}
|
|
424
424
|
if (e.length === 0) return null;
|
|
425
|
-
const o = (
|
|
425
|
+
const o = (a = t != null ? t : (r = s[0]) == null ? void 0 : r.properties) != null ? a : {};
|
|
426
426
|
return e.length === 1 ? {
|
|
427
427
|
type: "Feature",
|
|
428
428
|
properties: { ...o },
|
|
@@ -439,8 +439,8 @@ function He(s, t) {
|
|
|
439
439
|
}
|
|
440
440
|
};
|
|
441
441
|
}
|
|
442
|
-
class
|
|
443
|
-
constructor(t =
|
|
442
|
+
class Ze {
|
|
443
|
+
constructor(t = N("feature-store", "debug")) {
|
|
444
444
|
h(this, "log");
|
|
445
445
|
h(this, "features");
|
|
446
446
|
this.log = t, this.features = /* @__PURE__ */ new Map();
|
|
@@ -458,17 +458,17 @@ class Ve {
|
|
|
458
458
|
* Add features to the store; returns the assigned/normalized ids in order.
|
|
459
459
|
*/
|
|
460
460
|
add(t) {
|
|
461
|
-
var
|
|
462
|
-
const e = [], o = (
|
|
461
|
+
var a, i, n, l;
|
|
462
|
+
const e = [], o = (i = (a = performance.now) == null ? void 0 : a.call(performance)) != null ? i : Date.now();
|
|
463
463
|
for (const c of t.features) {
|
|
464
|
-
const d = this.ensureId(c),
|
|
465
|
-
this.features.set(d,
|
|
464
|
+
const d = this.ensureId(c), u = { ...c, id: d };
|
|
465
|
+
this.features.set(d, u), e.push(d);
|
|
466
466
|
}
|
|
467
|
-
const
|
|
467
|
+
const r = ((l = (n = performance.now) == null ? void 0 : n.call(performance)) != null ? l : Date.now()) - o;
|
|
468
468
|
return this.log.debug("add", {
|
|
469
469
|
count: t.features.length,
|
|
470
470
|
ids: e,
|
|
471
|
-
elapsedMs: Math.round(
|
|
471
|
+
elapsedMs: Math.round(r)
|
|
472
472
|
}), e;
|
|
473
473
|
}
|
|
474
474
|
/**
|
|
@@ -511,53 +511,53 @@ class Ve {
|
|
|
511
511
|
bounds() {
|
|
512
512
|
const t = this.toFeatureCollection();
|
|
513
513
|
if (t.features.length === 0) return null;
|
|
514
|
-
const e =
|
|
515
|
-
return e ?
|
|
514
|
+
const e = He(t);
|
|
515
|
+
return e ? Ve(e) : null;
|
|
516
516
|
}
|
|
517
517
|
/**
|
|
518
518
|
* Ensure the feature has an id; returns the resolved id.
|
|
519
519
|
*/
|
|
520
520
|
ensureId(t) {
|
|
521
|
-
const e =
|
|
521
|
+
const e = Pe(t);
|
|
522
522
|
if (e) return String(e);
|
|
523
523
|
const o = q();
|
|
524
524
|
return t.id = o, t.properties && typeof t.properties == "object" && (t.properties.id = o), o;
|
|
525
525
|
}
|
|
526
526
|
}
|
|
527
|
-
const
|
|
528
|
-
function
|
|
527
|
+
const oe = /* @__PURE__ */ new WeakSet();
|
|
528
|
+
function Ye(s = v) {
|
|
529
529
|
var o;
|
|
530
|
-
if (
|
|
530
|
+
if (oe.has(s)) return;
|
|
531
531
|
const t = s.DrawToolbar;
|
|
532
532
|
if (!((o = t == null ? void 0 : t.prototype) != null && o.getModeHandlers)) return;
|
|
533
533
|
const e = t.prototype.getModeHandlers;
|
|
534
|
-
t.prototype.getModeHandlers = function(
|
|
535
|
-
var
|
|
536
|
-
const
|
|
537
|
-
if ((
|
|
538
|
-
const d = (
|
|
539
|
-
if (!d) return
|
|
540
|
-
|
|
534
|
+
t.prototype.getModeHandlers = function(r) {
|
|
535
|
+
var i, n, l, c;
|
|
536
|
+
const a = e.call(this, r);
|
|
537
|
+
if ((i = this.options) != null && i.cake) {
|
|
538
|
+
const d = (n = s.Draw) == null ? void 0 : n.Cake;
|
|
539
|
+
if (!d) return a;
|
|
540
|
+
a.push({
|
|
541
541
|
enabled: !0,
|
|
542
|
-
handler: new d(
|
|
542
|
+
handler: new d(r, this.options.cake),
|
|
543
543
|
title: "Draw Layer Cake (Subtractive Zones)"
|
|
544
544
|
});
|
|
545
545
|
}
|
|
546
546
|
if ((l = this.options) != null && l.move) {
|
|
547
547
|
const d = (c = s.Draw) == null ? void 0 : c.Move;
|
|
548
|
-
if (!d) return
|
|
549
|
-
|
|
548
|
+
if (!d) return a;
|
|
549
|
+
a.push({
|
|
550
550
|
enabled: !0,
|
|
551
|
-
handler: new d(
|
|
551
|
+
handler: new d(r, this.options.move),
|
|
552
552
|
title: "Move/Translate Features"
|
|
553
553
|
});
|
|
554
554
|
}
|
|
555
|
-
return
|
|
556
|
-
},
|
|
555
|
+
return a;
|
|
556
|
+
}, oe.add(s);
|
|
557
557
|
}
|
|
558
|
-
const
|
|
558
|
+
const T = class T extends v.Draw.Circle {
|
|
559
559
|
constructor(t, e) {
|
|
560
|
-
super(t, e), this.type =
|
|
560
|
+
super(t, e), this.type = T.TYPE;
|
|
561
561
|
}
|
|
562
562
|
addHooks() {
|
|
563
563
|
super.addHooks();
|
|
@@ -568,20 +568,20 @@ const N = class N extends k.Draw.Circle {
|
|
|
568
568
|
});
|
|
569
569
|
}
|
|
570
570
|
};
|
|
571
|
-
h(
|
|
572
|
-
let D =
|
|
573
|
-
|
|
574
|
-
function
|
|
571
|
+
h(T, "TYPE", "cake");
|
|
572
|
+
let D = T;
|
|
573
|
+
v.Draw.Cake = D;
|
|
574
|
+
function je(s) {
|
|
575
575
|
const t = s.Draw;
|
|
576
576
|
if (!t || t.Cake) return;
|
|
577
577
|
const o = class o extends t.Circle {
|
|
578
|
-
constructor(
|
|
579
|
-
super(
|
|
578
|
+
constructor(a, i) {
|
|
579
|
+
super(a, i), this.type = o.TYPE;
|
|
580
580
|
}
|
|
581
581
|
addHooks() {
|
|
582
582
|
super.addHooks();
|
|
583
|
-
const
|
|
584
|
-
|
|
583
|
+
const a = this._tooltip;
|
|
584
|
+
a != null && a.updateContent && a.updateContent({
|
|
585
585
|
text: "Click and drag to draw the Layer Cake base",
|
|
586
586
|
subtext: "Release mouse to finish base layer"
|
|
587
587
|
});
|
|
@@ -591,7 +591,7 @@ function Je(s) {
|
|
|
591
591
|
let e = o;
|
|
592
592
|
t.Cake = e;
|
|
593
593
|
}
|
|
594
|
-
const P = class P extends
|
|
594
|
+
const P = class P extends v.Draw.Feature {
|
|
595
595
|
constructor(e, o) {
|
|
596
596
|
super(e, o);
|
|
597
597
|
h(this, "_featureGroup");
|
|
@@ -600,7 +600,7 @@ const P = class P extends k.Draw.Feature {
|
|
|
600
600
|
h(this, "_dragStartLatLng", null);
|
|
601
601
|
h(this, "_isDragging", !1);
|
|
602
602
|
h(this, "_pendingMove", null);
|
|
603
|
-
this.type = P.TYPE, this._featureGroup = (o == null ? void 0 : o.featureGroup) || new
|
|
603
|
+
this.type = P.TYPE, this._featureGroup = (o == null ? void 0 : o.featureGroup) || new v.FeatureGroup();
|
|
604
604
|
}
|
|
605
605
|
enable() {
|
|
606
606
|
this._enabled || super.enable();
|
|
@@ -611,8 +611,8 @@ const P = class P extends k.Draw.Feature {
|
|
|
611
611
|
addHooks() {
|
|
612
612
|
const e = this._map;
|
|
613
613
|
if (!e) return;
|
|
614
|
-
|
|
615
|
-
this._enableLayerHover(
|
|
614
|
+
v.DomUtil.addClass(e.getContainer(), "leaflet-draw-move-mode"), this._featureGroup.eachLayer((r) => {
|
|
615
|
+
this._enableLayerHover(r);
|
|
616
616
|
});
|
|
617
617
|
const o = this._tooltip;
|
|
618
618
|
o != null && o.updateContent && o.updateContent({
|
|
@@ -622,7 +622,7 @@ const P = class P extends k.Draw.Feature {
|
|
|
622
622
|
}
|
|
623
623
|
removeHooks() {
|
|
624
624
|
const e = this._map;
|
|
625
|
-
e && (
|
|
625
|
+
e && (v.DomUtil.removeClass(e.getContainer(), "leaflet-draw-move-mode"), this._featureGroup.eachLayer((o) => {
|
|
626
626
|
this._disableLayerHover(o);
|
|
627
627
|
}), this._cleanupDragging());
|
|
628
628
|
}
|
|
@@ -636,32 +636,32 @@ const P = class P extends k.Draw.Feature {
|
|
|
636
636
|
if (this._isDragging) return;
|
|
637
637
|
const o = e.target;
|
|
638
638
|
if (o.getElement) {
|
|
639
|
-
const
|
|
640
|
-
|
|
639
|
+
const r = o.getElement();
|
|
640
|
+
r && (r.style.cursor = "grab");
|
|
641
641
|
} else o._path && (o._path.style.cursor = "grab");
|
|
642
642
|
}
|
|
643
643
|
_onLayerMouseOut(e) {
|
|
644
644
|
if (this._isDragging) return;
|
|
645
645
|
const o = e.target;
|
|
646
646
|
if (o.getElement) {
|
|
647
|
-
const
|
|
648
|
-
|
|
647
|
+
const r = o.getElement();
|
|
648
|
+
r && (r.style.cursor = "");
|
|
649
649
|
} else o._path && (o._path.style.cursor = "");
|
|
650
650
|
}
|
|
651
651
|
_onLayerMouseDown(e) {
|
|
652
652
|
if (this._isDragging) return;
|
|
653
|
-
|
|
653
|
+
v.DomEvent.stopPropagation(e.originalEvent), v.DomEvent.preventDefault(e.originalEvent);
|
|
654
654
|
const o = e.target;
|
|
655
655
|
if (this._selectedLayer = o, this._isDragging = !0, this._dragStartLatLng = e.latlng, this._storeOriginalLatLngs(o), o.getElement) {
|
|
656
|
-
const
|
|
657
|
-
|
|
656
|
+
const a = o.getElement();
|
|
657
|
+
a && (a.style.cursor = "grabbing");
|
|
658
658
|
} else o._path && (o._path.style.cursor = "grabbing");
|
|
659
659
|
this._map.on("mousemove", this._onMouseMove, this), this._map.on("mouseup", this._onMouseUp, this);
|
|
660
|
-
const
|
|
660
|
+
const r = o.toGeoJSON();
|
|
661
661
|
this._pendingMove = {
|
|
662
662
|
layer: o,
|
|
663
|
-
originalGeoJSON:
|
|
664
|
-
newGeoJSON:
|
|
663
|
+
originalGeoJSON: r,
|
|
664
|
+
newGeoJSON: r
|
|
665
665
|
// Will be updated on mouseup
|
|
666
666
|
};
|
|
667
667
|
}
|
|
@@ -673,37 +673,37 @@ const P = class P extends k.Draw.Feature {
|
|
|
673
673
|
_onMouseMove(e) {
|
|
674
674
|
if (!this._isDragging || !this._selectedLayer || !this._dragStartLatLng)
|
|
675
675
|
return;
|
|
676
|
-
const o = this._selectedLayer,
|
|
676
|
+
const o = this._selectedLayer, r = {
|
|
677
677
|
lat: e.latlng.lat - this._dragStartLatLng.lat,
|
|
678
678
|
lng: e.latlng.lng - this._dragStartLatLng.lng
|
|
679
679
|
};
|
|
680
680
|
if (o.setLatLng) {
|
|
681
|
-
const
|
|
682
|
-
this._originalLatLngs.lat +
|
|
683
|
-
this._originalLatLngs.lng +
|
|
681
|
+
const a = v.latLng(
|
|
682
|
+
this._originalLatLngs.lat + r.lat,
|
|
683
|
+
this._originalLatLngs.lng + r.lng
|
|
684
684
|
);
|
|
685
|
-
o.setLatLng(
|
|
685
|
+
o.setLatLng(a);
|
|
686
686
|
} else if (o.setLatLngs) {
|
|
687
|
-
const
|
|
688
|
-
o.setLatLngs(
|
|
687
|
+
const a = this._offsetLatLngs(this._originalLatLngs, r);
|
|
688
|
+
o.setLatLngs(a);
|
|
689
689
|
}
|
|
690
690
|
}
|
|
691
691
|
_offsetLatLngs(e, o) {
|
|
692
|
-
return e instanceof
|
|
692
|
+
return e instanceof v.LatLng || e.lat !== void 0 && e.lng !== void 0 ? v.latLng(e.lat + o.lat, e.lng + o.lng) : Array.isArray(e) ? e.map((r) => this._offsetLatLngs(r, o)) : e;
|
|
693
693
|
}
|
|
694
694
|
_onMouseUp(e) {
|
|
695
|
-
var
|
|
695
|
+
var r, a;
|
|
696
696
|
if (!this._isDragging || !this._selectedLayer) return;
|
|
697
697
|
this._pendingMove && (this._pendingMove.newGeoJSON = this._selectedLayer.toGeoJSON());
|
|
698
698
|
const o = this._selectedLayer;
|
|
699
699
|
if (o.getElement) {
|
|
700
|
-
const
|
|
701
|
-
|
|
700
|
+
const i = o.getElement();
|
|
701
|
+
i && (i.style.cursor = "grab");
|
|
702
702
|
} else o._path && (o._path.style.cursor = "grab");
|
|
703
703
|
this._map.fire("draw:moveend", {
|
|
704
704
|
layer: this._selectedLayer,
|
|
705
|
-
originalGeoJSON: (
|
|
706
|
-
newGeoJSON: (
|
|
705
|
+
originalGeoJSON: (r = this._pendingMove) == null ? void 0 : r.originalGeoJSON,
|
|
706
|
+
newGeoJSON: (a = this._pendingMove) == null ? void 0 : a.newGeoJSON
|
|
707
707
|
}), this._map.off("mousemove", this._onMouseMove, this), this._map.off("mouseup", this._onMouseUp, this), this._isDragging = !1;
|
|
708
708
|
}
|
|
709
709
|
_cleanupDragging() {
|
|
@@ -743,20 +743,20 @@ const P = class P extends k.Draw.Feature {
|
|
|
743
743
|
};
|
|
744
744
|
h(P, "TYPE", "move");
|
|
745
745
|
let G = P;
|
|
746
|
-
|
|
747
|
-
function
|
|
746
|
+
v.Draw.Move = G;
|
|
747
|
+
function qe(s) {
|
|
748
748
|
const t = s.Draw;
|
|
749
749
|
if (!t || t.Move) return;
|
|
750
750
|
const o = class o extends t.Feature {
|
|
751
|
-
constructor(
|
|
752
|
-
super(
|
|
751
|
+
constructor(i, n) {
|
|
752
|
+
super(i, n);
|
|
753
753
|
h(this, "_featureGroup");
|
|
754
754
|
h(this, "_selectedLayer", null);
|
|
755
755
|
h(this, "_originalLatLngs", null);
|
|
756
756
|
h(this, "_dragStartLatLng", null);
|
|
757
757
|
h(this, "_isDragging", !1);
|
|
758
758
|
h(this, "_pendingMove", null);
|
|
759
|
-
this.type = o.TYPE, this._featureGroup = (
|
|
759
|
+
this.type = o.TYPE, this._featureGroup = (n == null ? void 0 : n.featureGroup) || new v.FeatureGroup();
|
|
760
760
|
}
|
|
761
761
|
enable() {
|
|
762
762
|
this._enabled || super.enable();
|
|
@@ -765,96 +765,96 @@ function Ze(s) {
|
|
|
765
765
|
this._enabled && (this._cleanupDragging(), super.disable());
|
|
766
766
|
}
|
|
767
767
|
addHooks() {
|
|
768
|
-
const
|
|
769
|
-
if (!
|
|
770
|
-
s.DomUtil.addClass(
|
|
768
|
+
const i = this._map;
|
|
769
|
+
if (!i) return;
|
|
770
|
+
s.DomUtil.addClass(i.getContainer(), "leaflet-draw-move-mode"), this._featureGroup.eachLayer((l) => {
|
|
771
771
|
this._enableLayerHover(l);
|
|
772
772
|
});
|
|
773
|
-
const
|
|
774
|
-
|
|
773
|
+
const n = this._tooltip;
|
|
774
|
+
n != null && n.updateContent && n.updateContent({
|
|
775
775
|
text: "Click and drag a feature to move it",
|
|
776
776
|
subtext: ""
|
|
777
777
|
});
|
|
778
778
|
}
|
|
779
779
|
removeHooks() {
|
|
780
|
-
const
|
|
781
|
-
|
|
782
|
-
this._disableLayerHover(
|
|
780
|
+
const i = this._map;
|
|
781
|
+
i && (s.DomUtil.removeClass(i.getContainer(), "leaflet-draw-move-mode"), this._featureGroup.eachLayer((n) => {
|
|
782
|
+
this._disableLayerHover(n);
|
|
783
783
|
}), this._cleanupDragging());
|
|
784
784
|
}
|
|
785
|
-
_enableLayerHover(
|
|
786
|
-
|
|
785
|
+
_enableLayerHover(i) {
|
|
786
|
+
i.on && (i.on("mouseover", this._onLayerMouseOver, this), i.on("mouseout", this._onLayerMouseOut, this), i.on("mousedown", this._onLayerMouseDown, this));
|
|
787
787
|
}
|
|
788
|
-
_disableLayerHover(
|
|
789
|
-
|
|
788
|
+
_disableLayerHover(i) {
|
|
789
|
+
i.off && (i.off("mouseover", this._onLayerMouseOver, this), i.off("mouseout", this._onLayerMouseOut, this), i.off("mousedown", this._onLayerMouseDown, this));
|
|
790
790
|
}
|
|
791
|
-
_onLayerMouseOver(
|
|
791
|
+
_onLayerMouseOver(i) {
|
|
792
792
|
if (this._isDragging) return;
|
|
793
|
-
const
|
|
794
|
-
if (
|
|
795
|
-
const l =
|
|
793
|
+
const n = i.target;
|
|
794
|
+
if (n.getElement) {
|
|
795
|
+
const l = n.getElement();
|
|
796
796
|
l && (l.style.cursor = "grab");
|
|
797
|
-
} else
|
|
797
|
+
} else n._path && (n._path.style.cursor = "grab");
|
|
798
798
|
}
|
|
799
|
-
_onLayerMouseOut(
|
|
799
|
+
_onLayerMouseOut(i) {
|
|
800
800
|
if (this._isDragging) return;
|
|
801
|
-
const
|
|
802
|
-
if (
|
|
803
|
-
const l =
|
|
801
|
+
const n = i.target;
|
|
802
|
+
if (n.getElement) {
|
|
803
|
+
const l = n.getElement();
|
|
804
804
|
l && (l.style.cursor = "");
|
|
805
|
-
} else
|
|
805
|
+
} else n._path && (n._path.style.cursor = "");
|
|
806
806
|
}
|
|
807
|
-
_onLayerMouseDown(
|
|
807
|
+
_onLayerMouseDown(i) {
|
|
808
808
|
if (this._isDragging) return;
|
|
809
|
-
s.DomEvent.stopPropagation(
|
|
810
|
-
const
|
|
811
|
-
if (this._selectedLayer =
|
|
812
|
-
const c =
|
|
809
|
+
s.DomEvent.stopPropagation(i.originalEvent), s.DomEvent.preventDefault(i.originalEvent);
|
|
810
|
+
const n = i.target;
|
|
811
|
+
if (this._selectedLayer = n, this._isDragging = !0, this._dragStartLatLng = i.latlng, this._storeOriginalLatLngs(n), n.getElement) {
|
|
812
|
+
const c = n.getElement();
|
|
813
813
|
c && (c.style.cursor = "grabbing");
|
|
814
|
-
} else
|
|
814
|
+
} else n._path && (n._path.style.cursor = "grabbing");
|
|
815
815
|
this._map.on("mousemove", this._onMouseMove, this), this._map.on("mouseup", this._onMouseUp, this);
|
|
816
|
-
const l =
|
|
816
|
+
const l = n.toGeoJSON();
|
|
817
817
|
this._pendingMove = {
|
|
818
|
-
layer:
|
|
818
|
+
layer: n,
|
|
819
819
|
originalGeoJSON: l,
|
|
820
820
|
newGeoJSON: l
|
|
821
821
|
};
|
|
822
822
|
}
|
|
823
|
-
_storeOriginalLatLngs(
|
|
824
|
-
|
|
825
|
-
JSON.stringify(
|
|
823
|
+
_storeOriginalLatLngs(i) {
|
|
824
|
+
i.getLatLng ? this._originalLatLngs = i.getLatLng() : i.getLatLngs && (this._originalLatLngs = JSON.parse(
|
|
825
|
+
JSON.stringify(i.getLatLngs())
|
|
826
826
|
));
|
|
827
827
|
}
|
|
828
|
-
_onMouseMove(
|
|
828
|
+
_onMouseMove(i) {
|
|
829
829
|
if (!this._isDragging || !this._selectedLayer || !this._dragStartLatLng)
|
|
830
830
|
return;
|
|
831
|
-
const
|
|
832
|
-
lat:
|
|
833
|
-
lng:
|
|
831
|
+
const n = this._selectedLayer, l = {
|
|
832
|
+
lat: i.latlng.lat - this._dragStartLatLng.lat,
|
|
833
|
+
lng: i.latlng.lng - this._dragStartLatLng.lng
|
|
834
834
|
};
|
|
835
|
-
if (
|
|
835
|
+
if (n.setLatLng) {
|
|
836
836
|
const c = s.latLng(
|
|
837
837
|
this._originalLatLngs.lat + l.lat,
|
|
838
838
|
this._originalLatLngs.lng + l.lng
|
|
839
839
|
);
|
|
840
|
-
|
|
841
|
-
} else if (
|
|
840
|
+
n.setLatLng(c);
|
|
841
|
+
} else if (n.setLatLngs) {
|
|
842
842
|
const c = this._offsetLatLngs(this._originalLatLngs, l);
|
|
843
|
-
|
|
843
|
+
n.setLatLngs(c);
|
|
844
844
|
}
|
|
845
845
|
}
|
|
846
|
-
_offsetLatLngs(
|
|
847
|
-
return
|
|
846
|
+
_offsetLatLngs(i, n) {
|
|
847
|
+
return i instanceof s.LatLng || i.lat !== void 0 && i.lng !== void 0 ? s.latLng(i.lat + n.lat, i.lng + n.lng) : Array.isArray(i) ? i.map((l) => this._offsetLatLngs(l, n)) : i;
|
|
848
848
|
}
|
|
849
|
-
_onMouseUp(
|
|
849
|
+
_onMouseUp(i) {
|
|
850
850
|
var l, c;
|
|
851
851
|
if (!this._isDragging || !this._selectedLayer) return;
|
|
852
852
|
this._pendingMove && (this._pendingMove.newGeoJSON = this._selectedLayer.toGeoJSON());
|
|
853
|
-
const
|
|
854
|
-
if (
|
|
855
|
-
const d =
|
|
853
|
+
const n = this._selectedLayer;
|
|
854
|
+
if (n.getElement) {
|
|
855
|
+
const d = n.getElement();
|
|
856
856
|
d && (d.style.cursor = "grab");
|
|
857
|
-
} else
|
|
857
|
+
} else n._path && (n._path.style.cursor = "grab");
|
|
858
858
|
this._map.fire("draw:moveend", {
|
|
859
859
|
layer: this._selectedLayer,
|
|
860
860
|
originalGeoJSON: (l = this._pendingMove) == null ? void 0 : l.originalGeoJSON,
|
|
@@ -863,11 +863,11 @@ function Ze(s) {
|
|
|
863
863
|
}
|
|
864
864
|
_cleanupDragging() {
|
|
865
865
|
if (this._selectedLayer) {
|
|
866
|
-
const
|
|
867
|
-
if (
|
|
868
|
-
const
|
|
869
|
-
|
|
870
|
-
} else
|
|
866
|
+
const i = this._selectedLayer;
|
|
867
|
+
if (i.getElement) {
|
|
868
|
+
const n = i.getElement();
|
|
869
|
+
n && (n.style.cursor = "");
|
|
870
|
+
} else i._path && (i._path.style.cursor = "");
|
|
871
871
|
}
|
|
872
872
|
this._map.off("mousemove", this._onMouseMove, this), this._map.off("mouseup", this._onMouseUp, this), this._selectedLayer = null, this._originalLatLngs = null, this._dragStartLatLng = null, this._isDragging = !1, this._pendingMove = null;
|
|
873
873
|
}
|
|
@@ -880,8 +880,8 @@ function Ze(s) {
|
|
|
880
880
|
}
|
|
881
881
|
cancelMove() {
|
|
882
882
|
if (!this._pendingMove) return;
|
|
883
|
-
const
|
|
884
|
-
|
|
883
|
+
const i = this._pendingMove.layer;
|
|
884
|
+
i.setLatLng && this._originalLatLngs ? i.setLatLng(this._originalLatLngs) : i.setLatLngs && this._originalLatLngs && i.setLatLngs(this._originalLatLngs), this._cleanupDragging();
|
|
885
885
|
}
|
|
886
886
|
hasPendingMove() {
|
|
887
887
|
return this._pendingMove !== null;
|
|
@@ -891,22 +891,22 @@ function Ze(s) {
|
|
|
891
891
|
let e = o;
|
|
892
892
|
t.Move = e;
|
|
893
893
|
}
|
|
894
|
-
const
|
|
894
|
+
const Ke = 63710088e-1;
|
|
895
895
|
function H(s) {
|
|
896
896
|
return s * Math.PI / 180;
|
|
897
897
|
}
|
|
898
|
-
function
|
|
898
|
+
function re(s) {
|
|
899
899
|
return s * 180 / Math.PI;
|
|
900
900
|
}
|
|
901
|
-
function
|
|
902
|
-
const o = t /
|
|
903
|
-
return { lat:
|
|
901
|
+
function Qe(s, t, e) {
|
|
902
|
+
const o = t / Ke, r = H(e), a = H(s.lat), i = H(s.lng), n = Math.sin(a), l = Math.cos(a), c = Math.sin(o), d = Math.cos(o), u = n * d + l * c * Math.cos(r), p = Math.asin(u), f = Math.sin(r) * c * l, g = d - n * u, y = i + Math.atan2(f, g);
|
|
903
|
+
return { lat: re(p), lng: re(y) };
|
|
904
904
|
}
|
|
905
|
-
function
|
|
905
|
+
function Xe(s) {
|
|
906
906
|
let t = 0;
|
|
907
907
|
for (let e = 0; e < s.length - 1; e++) {
|
|
908
|
-
const [o,
|
|
909
|
-
t += o *
|
|
908
|
+
const [o, r] = s[e], [a, i] = s[e + 1];
|
|
909
|
+
t += o * i - a * r;
|
|
910
910
|
}
|
|
911
911
|
return t / 2;
|
|
912
912
|
}
|
|
@@ -916,26 +916,26 @@ function J(s) {
|
|
|
916
916
|
}
|
|
917
917
|
function Z(s, t) {
|
|
918
918
|
const e = J(s);
|
|
919
|
-
if (
|
|
920
|
-
const
|
|
921
|
-
return J(
|
|
919
|
+
if (Xe(e) < 0 === t) return e;
|
|
920
|
+
const a = [...e].reverse();
|
|
921
|
+
return J(a);
|
|
922
922
|
}
|
|
923
923
|
function Y(s, t, e) {
|
|
924
924
|
if (e < 4) throw new Error("steps must be >= 4");
|
|
925
925
|
const o = [];
|
|
926
|
-
for (let
|
|
927
|
-
const
|
|
928
|
-
o.push([
|
|
926
|
+
for (let r = 0; r < e; r++) {
|
|
927
|
+
const a = r / e * 360, i = Qe(s, t, a);
|
|
928
|
+
o.push([i.lng, i.lat]);
|
|
929
929
|
}
|
|
930
930
|
return J(o);
|
|
931
931
|
}
|
|
932
|
-
function
|
|
933
|
-
const { id: t, center: e, radiusMeters: o, layerIndex:
|
|
932
|
+
function We(s) {
|
|
933
|
+
const { id: t, center: e, radiusMeters: o, layerIndex: r, steps: a } = s, i = Z(Y(e, o, a), !1);
|
|
934
934
|
return {
|
|
935
935
|
type: "Feature",
|
|
936
936
|
properties: {
|
|
937
937
|
id: t,
|
|
938
|
-
layer_index:
|
|
938
|
+
layer_index: r,
|
|
939
939
|
radius_outer: o,
|
|
940
940
|
type: "core",
|
|
941
941
|
_meta: {
|
|
@@ -944,29 +944,29 @@ function Qe(s) {
|
|
|
944
944
|
radius: o
|
|
945
945
|
}
|
|
946
946
|
},
|
|
947
|
-
geometry: { type: "Polygon", coordinates: [
|
|
947
|
+
geometry: { type: "Polygon", coordinates: [i] }
|
|
948
948
|
};
|
|
949
949
|
}
|
|
950
|
-
function
|
|
950
|
+
function $e(s) {
|
|
951
951
|
const {
|
|
952
952
|
id: t,
|
|
953
953
|
center: e,
|
|
954
954
|
radiusOuterMeters: o,
|
|
955
|
-
radiusInnerMeters:
|
|
956
|
-
layerIndex:
|
|
957
|
-
steps:
|
|
958
|
-
} = s,
|
|
959
|
-
Y(e, o,
|
|
955
|
+
radiusInnerMeters: r,
|
|
956
|
+
layerIndex: a,
|
|
957
|
+
steps: i
|
|
958
|
+
} = s, n = Z(
|
|
959
|
+
Y(e, o, i),
|
|
960
960
|
!1
|
|
961
961
|
), l = Z(
|
|
962
|
-
Y(e,
|
|
962
|
+
Y(e, r, i),
|
|
963
963
|
!0
|
|
964
964
|
);
|
|
965
965
|
return {
|
|
966
966
|
type: "Feature",
|
|
967
967
|
properties: {
|
|
968
968
|
id: t,
|
|
969
|
-
layer_index:
|
|
969
|
+
layer_index: a,
|
|
970
970
|
radius_outer: o,
|
|
971
971
|
type: "ring",
|
|
972
972
|
_meta: {
|
|
@@ -975,65 +975,65 @@ function Ke(s) {
|
|
|
975
975
|
radius: o
|
|
976
976
|
}
|
|
977
977
|
},
|
|
978
|
-
geometry: { type: "Polygon", coordinates: [
|
|
978
|
+
geometry: { type: "Polygon", coordinates: [n, l] }
|
|
979
979
|
};
|
|
980
980
|
}
|
|
981
|
-
function
|
|
982
|
-
const { circles: t, steps: e = 64 } = s, o = [...t].sort((
|
|
983
|
-
return o.forEach((
|
|
984
|
-
const
|
|
985
|
-
if (
|
|
986
|
-
|
|
987
|
-
|
|
981
|
+
function et(s) {
|
|
982
|
+
const { circles: t, steps: e = 64 } = s, o = [...t].sort((a, i) => a.getRadius() - i.getRadius()), r = [];
|
|
983
|
+
return o.forEach((a, i) => {
|
|
984
|
+
const n = a.getLatLng(), l = a.getRadius(), c = q();
|
|
985
|
+
if (i === 0) {
|
|
986
|
+
r.push(
|
|
987
|
+
We({ id: c, center: n, radiusMeters: l, layerIndex: i, steps: e })
|
|
988
988
|
);
|
|
989
989
|
return;
|
|
990
990
|
}
|
|
991
|
-
const
|
|
992
|
-
|
|
993
|
-
|
|
991
|
+
const u = o[i - 1].getRadius();
|
|
992
|
+
r.push(
|
|
993
|
+
$e({
|
|
994
994
|
id: c,
|
|
995
|
-
center:
|
|
995
|
+
center: n,
|
|
996
996
|
radiusOuterMeters: l,
|
|
997
|
-
radiusInnerMeters:
|
|
998
|
-
layerIndex:
|
|
997
|
+
radiusInnerMeters: u,
|
|
998
|
+
layerIndex: i,
|
|
999
999
|
steps: e
|
|
1000
1000
|
})
|
|
1001
1001
|
);
|
|
1002
|
-
}), { type: "FeatureCollection", features:
|
|
1002
|
+
}), { type: "FeatureCollection", features: r };
|
|
1003
1003
|
}
|
|
1004
1004
|
function z(s) {
|
|
1005
1005
|
s.preventDefault(), s.stopPropagation();
|
|
1006
1006
|
}
|
|
1007
|
-
function
|
|
1007
|
+
function tt(s) {
|
|
1008
1008
|
var c, d;
|
|
1009
|
-
const { root: t, addButtonId: e, saveButtonId: o, onAddRing:
|
|
1010
|
-
if (!
|
|
1009
|
+
const { root: t, addButtonId: e, saveButtonId: o, onAddRing: r, onSave: a } = s, i = (c = t.querySelector) == null ? void 0 : c.call(t, `#${e}`), n = (d = t.querySelector) == null ? void 0 : d.call(t, `#${o}`);
|
|
1010
|
+
if (!i || !n) return;
|
|
1011
1011
|
const l = "data-cake-controls-bound";
|
|
1012
|
-
if (!(
|
|
1013
|
-
|
|
1014
|
-
for (const
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
z(
|
|
1018
|
-
}),
|
|
1019
|
-
z(
|
|
1012
|
+
if (!(i.hasAttribute(l) || n.hasAttribute(l))) {
|
|
1013
|
+
i.setAttribute(l, "true"), n.setAttribute(l, "true");
|
|
1014
|
+
for (const u of [i, n])
|
|
1015
|
+
u.addEventListener("pointerdown", z), u.addEventListener("mousedown", z), u.addEventListener("touchstart", z);
|
|
1016
|
+
i.addEventListener("click", (u) => {
|
|
1017
|
+
z(u), r();
|
|
1018
|
+
}), n.addEventListener("click", (u) => {
|
|
1019
|
+
z(u), a();
|
|
1020
1020
|
});
|
|
1021
1021
|
}
|
|
1022
1022
|
}
|
|
1023
|
-
function
|
|
1023
|
+
function ot(s) {
|
|
1024
1024
|
var e;
|
|
1025
1025
|
const t = (e = s.options) != null ? e : {};
|
|
1026
1026
|
t.original || (t.original = { ...t }), t.editing || (t.editing = { ...t });
|
|
1027
1027
|
}
|
|
1028
|
-
function
|
|
1028
|
+
function R(s, t) {
|
|
1029
1029
|
if (t === "imperial") {
|
|
1030
1030
|
const e = s * 3.28084;
|
|
1031
1031
|
return e >= 5280 ? `${(e / 5280).toFixed(2)} mi` : `${Math.round(e)} ft`;
|
|
1032
1032
|
}
|
|
1033
1033
|
return s >= 1e3 ? `${(s / 1e3).toFixed(2)} km` : `${Math.round(s)} m`;
|
|
1034
1034
|
}
|
|
1035
|
-
class
|
|
1036
|
-
constructor(t, e, o,
|
|
1035
|
+
class rt {
|
|
1036
|
+
constructor(t, e, o, r = "metric") {
|
|
1037
1037
|
h(this, "map");
|
|
1038
1038
|
h(this, "layers", []);
|
|
1039
1039
|
h(this, "controlsGroup");
|
|
@@ -1043,34 +1043,34 @@ class et {
|
|
|
1043
1043
|
h(this, "detachMapListeners", []);
|
|
1044
1044
|
h(this, "renderScheduled", !1);
|
|
1045
1045
|
h(this, "measurementSystem");
|
|
1046
|
-
this.map = t, this.onSave = o, this.measurementSystem =
|
|
1046
|
+
this.map = t, this.onSave = o, this.measurementSystem = r, this.controlsGroup = v.layerGroup().addTo(t), this.baseCircleOptions = { ...e.options }, delete this.baseCircleOptions.editing, delete this.baseCircleOptions.original, this.addLayer(e), this.installEditEventBridges(), this.renderControls();
|
|
1047
1047
|
}
|
|
1048
1048
|
installEditEventBridges() {
|
|
1049
|
-
var d,
|
|
1050
|
-
const t =
|
|
1049
|
+
var d, u, p, f, g, y, w, b;
|
|
1050
|
+
const t = v, e = (u = (d = t == null ? void 0 : t.Draw) == null ? void 0 : d.Event) == null ? void 0 : u.EDITMOVE, o = (f = (p = t == null ? void 0 : t.Draw) == null ? void 0 : p.Event) == null ? void 0 : f.EDITRESIZE, r = (y = (g = t == null ? void 0 : t.Draw) == null ? void 0 : g.Event) == null ? void 0 : y.EDITSTART, a = (b = (w = t == null ? void 0 : t.Draw) == null ? void 0 : w.Event) == null ? void 0 : b.EDITSTOP;
|
|
1051
1051
|
if (!e || !o) return;
|
|
1052
|
-
const
|
|
1053
|
-
const
|
|
1054
|
-
|
|
1055
|
-
},
|
|
1056
|
-
const
|
|
1057
|
-
|
|
1052
|
+
const i = (m) => {
|
|
1053
|
+
const A = m == null ? void 0 : m.layer;
|
|
1054
|
+
A && this.layers.includes(A) && this.syncCenters(A);
|
|
1055
|
+
}, n = (m) => {
|
|
1056
|
+
const A = m == null ? void 0 : m.layer;
|
|
1057
|
+
A && this.layers.includes(A) && (this.updateLabels(A), this.requestRenderControls());
|
|
1058
1058
|
}, l = (m) => {
|
|
1059
|
-
var
|
|
1060
|
-
const
|
|
1061
|
-
if (!
|
|
1062
|
-
const x =
|
|
1063
|
-
((
|
|
1059
|
+
var k;
|
|
1060
|
+
const A = m == null ? void 0 : m.layer;
|
|
1061
|
+
if (!A || !this.layers.includes(A)) return;
|
|
1062
|
+
const x = A;
|
|
1063
|
+
((k = x.getTooltip) == null ? void 0 : k.call(x)) && this.updateLabels(x);
|
|
1064
1064
|
}, c = () => {
|
|
1065
1065
|
this.layers.forEach((m) => {
|
|
1066
1066
|
var x;
|
|
1067
|
-
const
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
),
|
|
1067
|
+
const A = (x = m.getTooltip) == null ? void 0 : x.call(m);
|
|
1068
|
+
A && (m.setTooltipContent(
|
|
1069
|
+
R(m.getRadius(), this.measurementSystem)
|
|
1070
|
+
), A.options.offset = [10, 0], A.options.direction = "right", m.closeTooltip(), m.openTooltip());
|
|
1071
1071
|
});
|
|
1072
1072
|
};
|
|
1073
|
-
this.map.on(e,
|
|
1073
|
+
this.map.on(e, i), this.map.on(o, n), r && (this.map.on(r, l), this.detachMapListeners.push(() => this.map.off(r, l))), a && (this.map.on(a, c), this.detachMapListeners.push(() => this.map.off(a, c))), this.detachMapListeners.push(() => this.map.off(e, i)), this.detachMapListeners.push(() => this.map.off(o, n));
|
|
1074
1074
|
}
|
|
1075
1075
|
requestRenderControls() {
|
|
1076
1076
|
if (this.renderScheduled) return;
|
|
@@ -1080,7 +1080,7 @@ class et {
|
|
|
1080
1080
|
}
|
|
1081
1081
|
addLayer(t) {
|
|
1082
1082
|
this.layers.push(t), t.addTo(this.map), t.bindTooltip(
|
|
1083
|
-
|
|
1083
|
+
R(t.getRadius(), this.measurementSystem),
|
|
1084
1084
|
{
|
|
1085
1085
|
permanent: !0,
|
|
1086
1086
|
direction: "right",
|
|
@@ -1090,13 +1090,13 @@ class et {
|
|
|
1090
1090
|
);
|
|
1091
1091
|
const e = t.editing;
|
|
1092
1092
|
setTimeout(() => {
|
|
1093
|
-
var o,
|
|
1093
|
+
var o, r, a, i, n;
|
|
1094
1094
|
try {
|
|
1095
|
-
if ((o = t.redraw) == null || o.call(t),
|
|
1096
|
-
(
|
|
1095
|
+
if ((o = t.redraw) == null || o.call(t), ot(t), (r = e == null ? void 0 : e.enabled) != null && r.call(e)) {
|
|
1096
|
+
(a = e.updateMarkers) == null || a.call(e), this.requestRenderControls();
|
|
1097
1097
|
return;
|
|
1098
1098
|
}
|
|
1099
|
-
(
|
|
1099
|
+
(i = e == null ? void 0 : e.enable) == null || i.call(e), (n = e == null ? void 0 : e.updateMarkers) == null || n.call(e), this.requestRenderControls();
|
|
1100
1100
|
} catch {
|
|
1101
1101
|
}
|
|
1102
1102
|
}, 0);
|
|
@@ -1105,14 +1105,14 @@ class et {
|
|
|
1105
1105
|
if (this.layers.length >= 10) return;
|
|
1106
1106
|
const t = this.getLargestCircle();
|
|
1107
1107
|
if (!t) return;
|
|
1108
|
-
const e = t.getRadius() * 1.5, o =
|
|
1108
|
+
const e = t.getRadius() * 1.5, o = v.circle(t.getLatLng(), {
|
|
1109
1109
|
...this.baseCircleOptions,
|
|
1110
1110
|
radius: e
|
|
1111
1111
|
});
|
|
1112
1112
|
this.addLayer(o), this.renderControls();
|
|
1113
1113
|
}
|
|
1114
1114
|
save() {
|
|
1115
|
-
const t =
|
|
1115
|
+
const t = et({ circles: this.layers });
|
|
1116
1116
|
this.onSave(t), this.destroy();
|
|
1117
1117
|
}
|
|
1118
1118
|
getLargestCircle() {
|
|
@@ -1123,8 +1123,8 @@ class et {
|
|
|
1123
1123
|
syncCenters(t) {
|
|
1124
1124
|
const e = t.getLatLng();
|
|
1125
1125
|
this.layers.forEach((o) => {
|
|
1126
|
-
var
|
|
1127
|
-
o !== t && (o.setLatLng(e), (
|
|
1126
|
+
var r, a, i;
|
|
1127
|
+
o !== t && (o.setLatLng(e), (r = o.redraw) == null || r.call(o), (i = (a = o.editing) == null ? void 0 : a.updateMarkers) == null || i.call(a));
|
|
1128
1128
|
}), this.requestRenderControls();
|
|
1129
1129
|
}
|
|
1130
1130
|
/**
|
|
@@ -1133,51 +1133,51 @@ class et {
|
|
|
1133
1133
|
* Positions the tooltip on the left side to avoid toolbar interference.
|
|
1134
1134
|
*/
|
|
1135
1135
|
updateLabels(t) {
|
|
1136
|
-
var
|
|
1136
|
+
var i;
|
|
1137
1137
|
const e = t.getRadius();
|
|
1138
|
-
let o =
|
|
1139
|
-
const
|
|
1140
|
-
(
|
|
1138
|
+
let o = R(e, this.measurementSystem);
|
|
1139
|
+
const r = this.layers.filter(
|
|
1140
|
+
(n) => n !== t && n.getRadius() < e
|
|
1141
1141
|
);
|
|
1142
|
-
if (
|
|
1143
|
-
const
|
|
1144
|
-
(d,
|
|
1145
|
-
), l = e -
|
|
1146
|
-
o = `${
|
|
1142
|
+
if (r.length > 0) {
|
|
1143
|
+
const n = r.reduce(
|
|
1144
|
+
(d, u) => d.getRadius() > u.getRadius() ? d : u
|
|
1145
|
+
), l = e - n.getRadius(), c = R(l, this.measurementSystem);
|
|
1146
|
+
o = `${R(e, this.measurementSystem)} (+${c})`;
|
|
1147
1147
|
}
|
|
1148
|
-
const
|
|
1149
|
-
if (
|
|
1148
|
+
const a = (i = t.getTooltip) == null ? void 0 : i.call(t);
|
|
1149
|
+
if (a) {
|
|
1150
1150
|
t.setTooltipContent(o);
|
|
1151
1151
|
const l = t.getBounds().getSouthWest();
|
|
1152
|
-
l.lat = t.getLatLng().lat,
|
|
1152
|
+
l.lat = t.getLatLng().lat, a.options.direction = "left", a.options.offset = [-10, 0], a.setLatLng(l), t.closeTooltip(), t.openTooltip();
|
|
1153
1153
|
}
|
|
1154
1154
|
}
|
|
1155
1155
|
renderControls() {
|
|
1156
1156
|
this.controlsGroup.clearLayers();
|
|
1157
1157
|
const t = this.getLargestCircle();
|
|
1158
1158
|
if (!t) return;
|
|
1159
|
-
const o = t.getBounds().getNorthEast(),
|
|
1159
|
+
const o = t.getBounds().getNorthEast(), r = `cake-add-${this.sessionId}`, a = `cake-save-${this.sessionId}`, i = v.divIcon({
|
|
1160
1160
|
className: "layer-cake-controls",
|
|
1161
1161
|
html: `
|
|
1162
1162
|
<div class="layer-cake-controls__container">
|
|
1163
|
-
<button id="${
|
|
1164
|
-
<button id="${
|
|
1163
|
+
<button id="${r}" type="button">➕ Ring</button>
|
|
1164
|
+
<button id="${a}" type="button" class="layer-cake-controls__save">💾 Save</button>
|
|
1165
1165
|
</div>
|
|
1166
1166
|
`,
|
|
1167
1167
|
iconSize: [140, 40],
|
|
1168
1168
|
iconAnchor: [-10, 20]
|
|
1169
1169
|
});
|
|
1170
|
-
|
|
1171
|
-
icon:
|
|
1170
|
+
v.marker(o, {
|
|
1171
|
+
icon: i,
|
|
1172
1172
|
interactive: !0,
|
|
1173
1173
|
keyboard: !1,
|
|
1174
1174
|
bubblingMouseEvents: !1
|
|
1175
1175
|
}).addTo(this.controlsGroup), setTimeout(() => {
|
|
1176
|
-
const
|
|
1177
|
-
|
|
1178
|
-
root:
|
|
1179
|
-
addButtonId:
|
|
1180
|
-
saveButtonId:
|
|
1176
|
+
const n = this.map.getContainer();
|
|
1177
|
+
tt({
|
|
1178
|
+
root: n,
|
|
1179
|
+
addButtonId: r,
|
|
1180
|
+
saveButtonId: a,
|
|
1181
1181
|
onAddRing: () => this.addRing(),
|
|
1182
1182
|
onSave: () => this.save()
|
|
1183
1183
|
});
|
|
@@ -1192,7 +1192,7 @@ class et {
|
|
|
1192
1192
|
}), this.detachMapListeners = [], this.layers.forEach((t) => this.map.removeLayer(t)), this.layers = [], this.controlsGroup.clearLayers(), this.map.removeLayer(this.controlsGroup);
|
|
1193
1193
|
}
|
|
1194
1194
|
}
|
|
1195
|
-
const
|
|
1195
|
+
const it = `<?xml version="1.0" encoding="utf-8"?>
|
|
1196
1196
|
\r<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
|
1197
1197
|
<svg width="800px" height="800px" viewBox="0 -1.67 47.336 47.336" xmlns="http://www.w3.org/2000/svg">\r
|
|
1198
1198
|
<g id="Group_42" data-name="Group 42" transform="translate(-172.455 -364.36)">\r
|
|
@@ -1203,7 +1203,7 @@ const tt = `<?xml version="1.0" encoding="utf-8"?>
|
|
|
1203
1203
|
<path id="Path_91" data-name="Path 91" d="M211.234,370.794a3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778,3.778,3.778,0,0,1-3.778,3.778h0a3.779,3.779,0,0,1-3.778-3.778" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>\r
|
|
1204
1204
|
</g>\r
|
|
1205
1205
|
</g>\r
|
|
1206
|
-
</svg>`,
|
|
1206
|
+
</svg>`, at = `<?xml version="1.0" encoding="utf-8"?>
|
|
1207
1207
|
<!-- Four-way directional arrow icon for move tool -->
|
|
1208
1208
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
1209
1209
|
<g fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
@@ -1223,90 +1223,92 @@ const tt = `<?xml version="1.0" encoding="utf-8"?>
|
|
|
1223
1223
|
<path d="M22 12 L19 15"/>
|
|
1224
1224
|
</g>
|
|
1225
1225
|
</svg>
|
|
1226
|
-
`,
|
|
1227
|
-
function
|
|
1226
|
+
`, he = 6378137, B = 6356752314245e-6, _ = 1 / 298.257223563, nt = Math.PI / 180, st = 180 / Math.PI, U = 1e9;
|
|
1227
|
+
function lt(s) {
|
|
1228
1228
|
const t = BigInt(Math.round(s * U));
|
|
1229
1229
|
return Number(t) / U;
|
|
1230
1230
|
}
|
|
1231
1231
|
function S(s) {
|
|
1232
|
-
return
|
|
1232
|
+
return lt(s) * nt;
|
|
1233
1233
|
}
|
|
1234
|
-
function
|
|
1235
|
-
const t = s *
|
|
1234
|
+
function ie(s) {
|
|
1235
|
+
const t = s * st % 360;
|
|
1236
1236
|
return t < 0 ? t + 360 : t;
|
|
1237
1237
|
}
|
|
1238
1238
|
function j(s) {
|
|
1239
1239
|
const t = BigInt(Math.round(s * U));
|
|
1240
1240
|
return Number(t) / U;
|
|
1241
1241
|
}
|
|
1242
|
-
function
|
|
1243
|
-
const
|
|
1244
|
-
if (
|
|
1242
|
+
function ct(s, t, e, o) {
|
|
1243
|
+
const r = dt(s, t, e, o);
|
|
1244
|
+
if (r.converged)
|
|
1245
1245
|
return {
|
|
1246
|
-
meters: j(
|
|
1247
|
-
bearingDegrees:
|
|
1246
|
+
meters: j(r.distanceMeters),
|
|
1247
|
+
bearingDegrees: ie(r.bearingRad),
|
|
1248
1248
|
algorithm: "vincenty",
|
|
1249
|
-
iterations:
|
|
1249
|
+
iterations: r.iterations
|
|
1250
1250
|
};
|
|
1251
|
-
const
|
|
1251
|
+
const a = ht(s, t, e, o);
|
|
1252
1252
|
return {
|
|
1253
|
-
meters: j(
|
|
1254
|
-
bearingDegrees:
|
|
1253
|
+
meters: j(a.distanceMeters),
|
|
1254
|
+
bearingDegrees: ie(a.bearingRad),
|
|
1255
1255
|
algorithm: "karney",
|
|
1256
|
-
iterations:
|
|
1256
|
+
iterations: r.iterations
|
|
1257
1257
|
};
|
|
1258
1258
|
}
|
|
1259
|
-
function
|
|
1260
|
-
const
|
|
1261
|
-
let f =
|
|
1259
|
+
function dt(s, t, e, o) {
|
|
1260
|
+
const r = S(s), a = S(e), i = S(o - t), n = Math.atan((1 - _) * Math.tan(r)), l = Math.atan((1 - _) * Math.tan(a)), c = Math.sin(n), d = Math.cos(n), u = Math.sin(l), p = Math.cos(l);
|
|
1261
|
+
let f = i, g = 0, y = 0;
|
|
1262
1262
|
const w = 200;
|
|
1263
|
-
let b = 0, m = 0,
|
|
1264
|
-
for (; Math.abs(f - g) > 1e-12 &&
|
|
1265
|
-
const Q = Math.sin(f),
|
|
1263
|
+
let b = 0, m = 0, A = 0, x = 0, L = 0;
|
|
1264
|
+
for (; Math.abs(f - g) > 1e-12 && y < w; ) {
|
|
1265
|
+
const Q = Math.sin(f), X = Math.cos(f);
|
|
1266
1266
|
if (b = Math.sqrt(
|
|
1267
|
-
(
|
|
1267
|
+
(p * Q) ** 2 + (d * u - c * p * X) ** 2
|
|
1268
1268
|
), b === 0)
|
|
1269
1269
|
return {
|
|
1270
1270
|
distanceMeters: 0,
|
|
1271
1271
|
bearingRad: 0,
|
|
1272
|
-
iterations:
|
|
1272
|
+
iterations: y,
|
|
1273
1273
|
converged: !0
|
|
1274
1274
|
};
|
|
1275
|
-
m = c *
|
|
1276
|
-
const
|
|
1277
|
-
|
|
1275
|
+
m = c * u + d * p * X, A = Math.atan2(b, m);
|
|
1276
|
+
const W = d * p * Q / b;
|
|
1277
|
+
x = 1 - W ** 2, L = x === 0 ? 0 : m - 2 * c * u / x;
|
|
1278
|
+
const F = _ / 16 * x * (4 + _ * (4 - 3 * x));
|
|
1279
|
+
g = f, f = i + (1 - F) * _ * W * (A + F * b * (L + F * m * (-1 + 2 * L ** 2))), y += 1;
|
|
1278
1280
|
}
|
|
1279
|
-
if (
|
|
1281
|
+
if (y >= w)
|
|
1280
1282
|
return {
|
|
1281
1283
|
distanceMeters: Number.NaN,
|
|
1282
1284
|
bearingRad: 0,
|
|
1283
|
-
iterations:
|
|
1285
|
+
iterations: y,
|
|
1284
1286
|
converged: !1
|
|
1285
1287
|
};
|
|
1286
|
-
const
|
|
1287
|
-
|
|
1288
|
-
d *
|
|
1288
|
+
const k = (he ** 2 - B ** 2) / B ** 2 * x, E = 1 + k / 16384 * (4096 + k * (-768 + k * (320 - 175 * k))), C = k / 1024 * (256 + k * (-128 + k * (74 - 47 * k))), K = C * b * (L + C / 4 * (m * (-1 + 2 * L ** 2) - C / 6 * L * (-3 + 4 * b ** 2) * (-3 + 4 * L ** 2))), ge = B * E * (A - K), me = Math.atan2(
|
|
1289
|
+
p * Math.sin(f),
|
|
1290
|
+
d * u - c * p * Math.cos(f)
|
|
1289
1291
|
);
|
|
1290
1292
|
return {
|
|
1291
|
-
distanceMeters:
|
|
1292
|
-
bearingRad:
|
|
1293
|
-
iterations:
|
|
1293
|
+
distanceMeters: ge,
|
|
1294
|
+
bearingRad: me,
|
|
1295
|
+
iterations: y,
|
|
1294
1296
|
converged: !0
|
|
1295
1297
|
};
|
|
1296
1298
|
}
|
|
1297
|
-
function
|
|
1298
|
-
const
|
|
1299
|
-
(
|
|
1300
|
-
), g = c *
|
|
1301
|
-
if (
|
|
1299
|
+
function ht(s, t, e, o) {
|
|
1300
|
+
const r = S(s), a = S(e), i = S(o - t), n = Math.atan((1 - _) * Math.tan(r)), l = Math.atan((1 - _) * Math.tan(a)), c = Math.sin(n), d = Math.cos(n), u = Math.sin(l), p = Math.cos(l), f = Math.sqrt(
|
|
1301
|
+
(p * Math.sin(i)) ** 2 + (d * u - c * p * Math.cos(i)) ** 2
|
|
1302
|
+
), g = c * u + d * p * Math.cos(i), y = Math.atan2(f, g);
|
|
1303
|
+
if (y === 0)
|
|
1302
1304
|
return { distanceMeters: 0, bearingRad: 0 };
|
|
1303
|
-
const b = 1 - (d *
|
|
1304
|
-
|
|
1305
|
-
d *
|
|
1305
|
+
const b = 1 - (d * p * Math.sin(i) / Math.sin(y)) ** 2, m = b === 0 ? 0 : g - 2 * c * u / b, A = (he ** 2 - B ** 2) / B ** 2 * b, x = 1 + A / 16384 * (4096 + A * (-768 + A * (320 - 175 * A))), L = A / 1024 * (256 + A * (-128 + A * (74 - 47 * A))), k = L * f * (m + L / 4 * (g * (-1 + 2 * m ** 2) - L / 6 * m * (-3 + 4 * f ** 2) * (-3 + 4 * m ** 2))), E = B * x * (y - k), C = Math.atan2(
|
|
1306
|
+
p * Math.sin(i),
|
|
1307
|
+
d * u - c * p * Math.cos(i)
|
|
1306
1308
|
);
|
|
1307
|
-
return { distanceMeters:
|
|
1309
|
+
return { distanceMeters: E, bearingRad: C };
|
|
1308
1310
|
}
|
|
1309
|
-
const
|
|
1311
|
+
const ut = {
|
|
1310
1312
|
position: "topleft",
|
|
1311
1313
|
circleMarker: {
|
|
1312
1314
|
color: "red",
|
|
@@ -1322,38 +1324,38 @@ const ct = {
|
|
|
1322
1324
|
factor: null,
|
|
1323
1325
|
label: "Bearing:"
|
|
1324
1326
|
}
|
|
1325
|
-
},
|
|
1327
|
+
}, pt = {
|
|
1326
1328
|
display: "km",
|
|
1327
1329
|
decimal: 2,
|
|
1328
1330
|
factor: null,
|
|
1329
1331
|
label: "Distance (km):"
|
|
1330
|
-
},
|
|
1332
|
+
}, ft = {
|
|
1331
1333
|
display: "mi",
|
|
1332
1334
|
decimal: 2,
|
|
1333
1335
|
factor: 0.621371,
|
|
1334
1336
|
label: "Distance (mi):"
|
|
1335
1337
|
};
|
|
1336
|
-
function
|
|
1337
|
-
const t = s === "imperial" ? { ...
|
|
1338
|
+
function gt(s) {
|
|
1339
|
+
const t = s === "imperial" ? { ...ft } : { ...pt };
|
|
1338
1340
|
return {
|
|
1339
|
-
...
|
|
1341
|
+
...ut,
|
|
1340
1342
|
lengthUnit: t
|
|
1341
1343
|
};
|
|
1342
1344
|
}
|
|
1343
|
-
const
|
|
1345
|
+
const mt = {
|
|
1344
1346
|
metric: "Meters / Kilometers",
|
|
1345
1347
|
imperial: "Feet / Miles"
|
|
1346
1348
|
};
|
|
1347
1349
|
function V(s, t = {}) {
|
|
1348
|
-
var
|
|
1349
|
-
const e = !!((
|
|
1350
|
-
return
|
|
1350
|
+
var a, i;
|
|
1351
|
+
const e = !!((a = s == null ? void 0 : s.Control) != null && a.Draw), o = !!s.draw, r = e && o;
|
|
1352
|
+
return r || (i = t.onError) == null || i.call(
|
|
1351
1353
|
t,
|
|
1352
1354
|
"Leaflet.draw is not available on the provided Leaflet instance"
|
|
1353
|
-
),
|
|
1355
|
+
), r;
|
|
1354
1356
|
}
|
|
1355
1357
|
let ae = !1;
|
|
1356
|
-
class
|
|
1358
|
+
class yt {
|
|
1357
1359
|
constructor(t) {
|
|
1358
1360
|
h(this, "container");
|
|
1359
1361
|
h(this, "logger");
|
|
@@ -1364,6 +1366,7 @@ class ft {
|
|
|
1364
1366
|
h(this, "store");
|
|
1365
1367
|
// Leaflet entities
|
|
1366
1368
|
h(this, "map", null);
|
|
1369
|
+
h(this, "tileLayer", null);
|
|
1367
1370
|
h(this, "drawnItems", null);
|
|
1368
1371
|
// Keep 'any' here to avoid type friction across different @types/leaflet-draw versions
|
|
1369
1372
|
h(this, "drawControl", null);
|
|
@@ -1384,28 +1387,28 @@ class ft {
|
|
|
1384
1387
|
h(this, "moveConfirmationUI", null);
|
|
1385
1388
|
h(this, "activeMoveHandler", null);
|
|
1386
1389
|
var e;
|
|
1387
|
-
this.options = t, this.container = t.container, this.logger = ((e = t.logger) != null ? e :
|
|
1390
|
+
this.options = t, this.container = t.container, this.logger = ((e = t.logger) != null ? e : N("controller", "debug")).child(
|
|
1388
1391
|
"map"
|
|
1389
|
-
), this.L = this.resolveLeaflet(t), this.store = new
|
|
1392
|
+
), this.L = this.resolveLeaflet(t), this.store = new Ze(this.logger.child("store")), this.logger.debug("ctor", {
|
|
1390
1393
|
config: t.map,
|
|
1391
1394
|
controls: t.controls,
|
|
1392
1395
|
readOnly: t.readOnly,
|
|
1393
1396
|
useExternalLeaflet: t.useExternalLeaflet
|
|
1394
|
-
}),
|
|
1397
|
+
}), je(this.L), qe(this.L), Ye(this.L);
|
|
1395
1398
|
}
|
|
1396
1399
|
resolveLeaflet(t) {
|
|
1397
1400
|
if (!t.useExternalLeaflet)
|
|
1398
|
-
return
|
|
1401
|
+
return v;
|
|
1399
1402
|
if (t.leaflet && V(t.leaflet))
|
|
1400
1403
|
return this.logger.debug("leaflet-runtime:external-injected"), t.leaflet;
|
|
1401
1404
|
const o = globalThis.L;
|
|
1402
1405
|
return o && V(o) ? (this.logger.debug("leaflet-runtime:external-global"), o) : (this.logger.warn("leaflet-runtime:external-fallback-bundled", {
|
|
1403
1406
|
message: "External Leaflet requested but Draw APIs were missing; falling back to bundled Leaflet/Draw"
|
|
1404
|
-
}),
|
|
1407
|
+
}), v);
|
|
1405
1408
|
}
|
|
1406
1409
|
// ---------------- Lifecycle ----------------
|
|
1407
1410
|
async init() {
|
|
1408
|
-
var e, o,
|
|
1411
|
+
var e, o, r, a, i, n;
|
|
1409
1412
|
const t = (o = (e = performance.now) == null ? void 0 : e.call(performance)) != null ? o : Date.now();
|
|
1410
1413
|
try {
|
|
1411
1414
|
await this.destroy();
|
|
@@ -1413,43 +1416,43 @@ class ft {
|
|
|
1413
1416
|
latitude: l,
|
|
1414
1417
|
longitude: c,
|
|
1415
1418
|
zoom: d,
|
|
1416
|
-
minZoom:
|
|
1417
|
-
maxZoom:
|
|
1419
|
+
minZoom: u,
|
|
1420
|
+
maxZoom: p,
|
|
1418
1421
|
tileUrl: f,
|
|
1419
1422
|
tileAttribution: g,
|
|
1420
|
-
preferCanvas:
|
|
1423
|
+
preferCanvas: y = !0,
|
|
1421
1424
|
// Default to Canvas rendering for better performance
|
|
1422
1425
|
useExternalLeaflet: w
|
|
1423
1426
|
} = this.options.map, b = [l, c], m = this.L;
|
|
1424
1427
|
w && V(m, {
|
|
1425
|
-
onError: (
|
|
1428
|
+
onError: (E) => this.logger.warn("external-leaflet-missing-draw", { message: E })
|
|
1426
1429
|
}), this.map = m.map(this.container, {
|
|
1427
1430
|
zoomControl: !0,
|
|
1428
|
-
preferCanvas:
|
|
1429
|
-
}).setView(b, d),
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
maxZoom:
|
|
1433
|
-
})
|
|
1434
|
-
const
|
|
1431
|
+
preferCanvas: y
|
|
1432
|
+
}).setView(b, d), this.setTileLayer({
|
|
1433
|
+
urlTemplate: f,
|
|
1434
|
+
attribution: g != null ? g : "",
|
|
1435
|
+
maxZoom: p
|
|
1436
|
+
}), this.drawnItems = m.featureGroup().addTo(this.map);
|
|
1437
|
+
const A = this.buildDrawOptions(
|
|
1435
1438
|
this.options.controls,
|
|
1436
1439
|
!!this.options.readOnly
|
|
1437
1440
|
), x = m.Control.Draw;
|
|
1438
|
-
this.drawControl = new x(
|
|
1441
|
+
this.drawControl = new x(A), this.map.addControl(this.drawControl), this.applyLayerCakeToolbarIcon(), this.applyMoveToolbarIcon(), this.options.controls.ruler && (this.logger.debug("init:ruler", {
|
|
1439
1442
|
available: typeof m.control.ruler == "function"
|
|
1440
1443
|
}), typeof m.control.ruler == "function" ? (this.addRulerControl(), this.installMeasurementSettingsControl()) : this.logger.warn("init:ruler:missing", {
|
|
1441
1444
|
msg: "L.control.ruler is not defined"
|
|
1442
1445
|
})), this.patchLeafletDrawBugs(), this.installPolygonFinishPatch(), this.map.invalidateSize(), setTimeout(() => {
|
|
1443
|
-
var
|
|
1446
|
+
var E;
|
|
1444
1447
|
try {
|
|
1445
|
-
(
|
|
1448
|
+
(E = this.map) == null || E.invalidateSize();
|
|
1446
1449
|
} catch {
|
|
1447
1450
|
}
|
|
1448
1451
|
}, 0), this.bindDrawEvents();
|
|
1449
|
-
const L = ((
|
|
1452
|
+
const L = ((a = (r = performance.now) == null ? void 0 : r.call(performance)) != null ? a : Date.now()) - t;
|
|
1450
1453
|
this.logger.debug("init:ready", { elapsedMs: Math.round(L) });
|
|
1451
|
-
const
|
|
1452
|
-
(
|
|
1454
|
+
const k = this.store.bounds();
|
|
1455
|
+
(n = (i = this.options.callbacks) == null ? void 0 : i.onReady) == null || n.call(i, k ? { bounds: k } : {});
|
|
1453
1456
|
} catch (l) {
|
|
1454
1457
|
this._error("Failed to initialize Leaflet map", l);
|
|
1455
1458
|
}
|
|
@@ -1458,8 +1461,8 @@ class ft {
|
|
|
1458
1461
|
var t, e, o;
|
|
1459
1462
|
try {
|
|
1460
1463
|
this.map && (this.map.off(), this.map.remove());
|
|
1461
|
-
} catch (
|
|
1462
|
-
this._error("Failed to remove Leaflet map",
|
|
1464
|
+
} catch (r) {
|
|
1465
|
+
this._error("Failed to remove Leaflet map", r);
|
|
1463
1466
|
}
|
|
1464
1467
|
try {
|
|
1465
1468
|
(t = this.detachPolygonFinishPatch) == null || t.call(this);
|
|
@@ -1475,7 +1478,7 @@ class ft {
|
|
|
1475
1478
|
this.hideMoveConfirmationUI();
|
|
1476
1479
|
} catch {
|
|
1477
1480
|
}
|
|
1478
|
-
this.drawControl = null, this.rulerControl = null, this.measurementControl = null, this.removeMeasurementModal(), this.drawnItems = null;
|
|
1481
|
+
this.drawControl = null, this.rulerControl = null, this.measurementControl = null, this.removeMeasurementModal(), this.drawnItems = null, this.tileLayer = null;
|
|
1479
1482
|
try {
|
|
1480
1483
|
(o = this.activeCakeSession) == null || o.destroy();
|
|
1481
1484
|
} catch {
|
|
@@ -1489,14 +1492,14 @@ class ft {
|
|
|
1489
1492
|
async loadGeoJSON(t, e = !1) {
|
|
1490
1493
|
if (!this.map || !this.drawnItems) return;
|
|
1491
1494
|
await this.clearLayers();
|
|
1492
|
-
const o =
|
|
1493
|
-
let
|
|
1494
|
-
|
|
1495
|
+
const o = te(t), r = this.store.add(o), a = this.L.geoJSON(o);
|
|
1496
|
+
let i = 0;
|
|
1497
|
+
a.eachLayer((n) => {
|
|
1495
1498
|
var l;
|
|
1496
|
-
|
|
1499
|
+
n._fid = (l = r[i]) != null ? l : r[r.length - 1], this.drawnItems.addLayer(n), this.installVertexContextMenu(n), i++;
|
|
1497
1500
|
}), this.logger.debug("loadGeoJSON", {
|
|
1498
1501
|
count: o.features.length,
|
|
1499
|
-
ids:
|
|
1502
|
+
ids: r
|
|
1500
1503
|
}), e && await this.fitBoundsToData();
|
|
1501
1504
|
}
|
|
1502
1505
|
async clearLayers() {
|
|
@@ -1504,11 +1507,11 @@ class ft {
|
|
|
1504
1507
|
}
|
|
1505
1508
|
async addFeatures(t) {
|
|
1506
1509
|
if (!this.map || !this.drawnItems) return [];
|
|
1507
|
-
const e =
|
|
1508
|
-
let
|
|
1509
|
-
return
|
|
1510
|
-
var
|
|
1511
|
-
|
|
1510
|
+
const e = te(t), o = this.store.add(e), r = this.L.geoJSON(e);
|
|
1511
|
+
let a = 0;
|
|
1512
|
+
return r.eachLayer((i) => {
|
|
1513
|
+
var n;
|
|
1514
|
+
i._fid = (n = o[a]) != null ? n : o[o.length - 1], this.drawnItems.addLayer(i), this.installVertexContextMenu(i), a++;
|
|
1512
1515
|
}), o;
|
|
1513
1516
|
}
|
|
1514
1517
|
async updateFeature(t, e) {
|
|
@@ -1524,23 +1527,23 @@ class ft {
|
|
|
1524
1527
|
if (!this.map) return;
|
|
1525
1528
|
const e = this.store.bounds();
|
|
1526
1529
|
if (!e) return;
|
|
1527
|
-
const o = e,
|
|
1530
|
+
const o = e, r = this.L.latLngBounds(o);
|
|
1528
1531
|
if (t > 0) {
|
|
1529
|
-
const
|
|
1530
|
-
this.L.latLng(
|
|
1531
|
-
this.L.latLng(
|
|
1532
|
+
const a = r.getSouthWest(), i = r.getNorthEast(), n = (i.lat - a.lat) * t, l = (i.lng - a.lng) * t, c = this.L.latLngBounds(
|
|
1533
|
+
this.L.latLng(a.lat - n, a.lng - l),
|
|
1534
|
+
this.L.latLng(i.lat + n, i.lng + l)
|
|
1532
1535
|
);
|
|
1533
1536
|
this.map.fitBounds(c);
|
|
1534
1537
|
} else
|
|
1535
|
-
this.map.fitBounds(
|
|
1538
|
+
this.map.fitBounds(r);
|
|
1536
1539
|
}
|
|
1537
1540
|
async fitBounds(t, e = 0.05) {
|
|
1538
1541
|
if (!this.map) return;
|
|
1539
1542
|
const o = this.L.latLngBounds(t);
|
|
1540
1543
|
if (e > 0) {
|
|
1541
|
-
const
|
|
1542
|
-
this.L.latLng(
|
|
1543
|
-
this.L.latLng(
|
|
1544
|
+
const r = o.getSouthWest(), a = o.getNorthEast(), i = (a.lat - r.lat) * e, n = (a.lng - r.lng) * e, l = this.L.latLngBounds(
|
|
1545
|
+
this.L.latLng(r.lat - i, r.lng - n),
|
|
1546
|
+
this.L.latLng(a.lat + i, a.lng + n)
|
|
1544
1547
|
);
|
|
1545
1548
|
this.map.fitBounds(l);
|
|
1546
1549
|
} else
|
|
@@ -1549,6 +1552,35 @@ class ft {
|
|
|
1549
1552
|
async setView(t, e, o) {
|
|
1550
1553
|
this.map && this.map.setView([t, e], o != null ? o : this.map.getZoom());
|
|
1551
1554
|
}
|
|
1555
|
+
setTileLayer(t, e) {
|
|
1556
|
+
if (!this.map) {
|
|
1557
|
+
this.logger.warn("setTileLayer called before map initialization", {
|
|
1558
|
+
urlTemplate: t.urlTemplate
|
|
1559
|
+
});
|
|
1560
|
+
return;
|
|
1561
|
+
}
|
|
1562
|
+
this.logger.debug("tile-layer:switch", {
|
|
1563
|
+
urlTemplate: t.urlTemplate,
|
|
1564
|
+
attribution: t.attribution,
|
|
1565
|
+
maxZoom: t.maxZoom,
|
|
1566
|
+
subdomains: t.subdomains
|
|
1567
|
+
}), this.tileLayer && (this.map.removeLayer(this.tileLayer), this.tileLayer = null);
|
|
1568
|
+
const o = {
|
|
1569
|
+
attribution: t.attribution,
|
|
1570
|
+
minZoom: this.options.map.minZoom,
|
|
1571
|
+
maxZoom: t.maxZoom
|
|
1572
|
+
};
|
|
1573
|
+
t.subdomains !== void 0 ? o.subdomains = t.subdomains : t.urlTemplate.includes("{s}") && (o.subdomains = ["a", "b", "c"]);
|
|
1574
|
+
const r = this.L.tileLayer(
|
|
1575
|
+
t.urlTemplate,
|
|
1576
|
+
o
|
|
1577
|
+
);
|
|
1578
|
+
let a = !1;
|
|
1579
|
+
r.on("tileerror", (i) => {
|
|
1580
|
+
var n;
|
|
1581
|
+
this.logger.error("tile-layer:error", { error: i }), a || (a = !0, (n = e == null ? void 0 : e.onTileError) == null || n.call(e, i));
|
|
1582
|
+
}), r.addTo(this.map), this.tileLayer = r;
|
|
1583
|
+
}
|
|
1552
1584
|
/**
|
|
1553
1585
|
* Merge all visible polygon features into a single polygon feature.
|
|
1554
1586
|
* This removes the original features and adds a new feature with the merged geometry.
|
|
@@ -1558,41 +1590,41 @@ class ft {
|
|
|
1558
1590
|
*/
|
|
1559
1591
|
async mergeVisiblePolygons(t) {
|
|
1560
1592
|
if (!this.map || !this.drawnItems) return null;
|
|
1561
|
-
const o = (await this.getGeoJSON()).features.filter((
|
|
1562
|
-
const l =
|
|
1563
|
-
return l && (
|
|
1593
|
+
const o = (await this.getGeoJSON()).features.filter((n) => {
|
|
1594
|
+
const l = n.geometry;
|
|
1595
|
+
return l && (ce(l) || de(l));
|
|
1564
1596
|
});
|
|
1565
1597
|
if (o.length <= 1) {
|
|
1566
1598
|
if (o.length === 1) {
|
|
1567
|
-
const
|
|
1568
|
-
return
|
|
1599
|
+
const n = o[0].id;
|
|
1600
|
+
return n ? String(n) : null;
|
|
1569
1601
|
}
|
|
1570
1602
|
return null;
|
|
1571
1603
|
}
|
|
1572
|
-
const
|
|
1573
|
-
if (!
|
|
1574
|
-
const
|
|
1575
|
-
for (const
|
|
1576
|
-
const l =
|
|
1577
|
-
l &&
|
|
1604
|
+
const r = Je(o, t == null ? void 0 : t.properties);
|
|
1605
|
+
if (!r) return null;
|
|
1606
|
+
const a = [];
|
|
1607
|
+
for (const n of o) {
|
|
1608
|
+
const l = n.id;
|
|
1609
|
+
l && a.push(String(l));
|
|
1578
1610
|
}
|
|
1579
|
-
for (const
|
|
1580
|
-
await this.removeFeature(
|
|
1581
|
-
const [
|
|
1611
|
+
for (const n of a)
|
|
1612
|
+
await this.removeFeature(n);
|
|
1613
|
+
const [i] = await this.addFeatures({
|
|
1582
1614
|
type: "FeatureCollection",
|
|
1583
|
-
features: [
|
|
1615
|
+
features: [r]
|
|
1584
1616
|
});
|
|
1585
|
-
return
|
|
1617
|
+
return i || null;
|
|
1586
1618
|
}
|
|
1587
1619
|
setRulerUnits(t) {
|
|
1588
1620
|
this.measurementSystem !== t && (this.measurementSystem = t, this.logger.debug("ruler:units", { system: t }), this.syncMeasurementModalState(), this.rebuildRulerControl());
|
|
1589
1621
|
}
|
|
1590
1622
|
// ---------------- Internals ----------------
|
|
1591
1623
|
buildDrawOptions(t, e) {
|
|
1592
|
-
var
|
|
1624
|
+
var a;
|
|
1593
1625
|
const o = {
|
|
1594
1626
|
polygon: t.polygon ? {
|
|
1595
|
-
allowIntersection: (
|
|
1627
|
+
allowIntersection: (a = this.options.map.polygonAllowIntersection) != null ? a : !1,
|
|
1596
1628
|
// Disallow self-intersections by default
|
|
1597
1629
|
showArea: !0,
|
|
1598
1630
|
// Display area tooltip while drawing
|
|
@@ -1628,13 +1660,13 @@ class ft {
|
|
|
1628
1660
|
featureGroup: this.drawnItems
|
|
1629
1661
|
} : !1
|
|
1630
1662
|
};
|
|
1631
|
-
let
|
|
1663
|
+
let r = {
|
|
1632
1664
|
featureGroup: this.drawnItems
|
|
1633
1665
|
};
|
|
1634
|
-
return t.edit ? t.delete === !1 && (
|
|
1666
|
+
return t.edit ? t.delete === !1 && (r.remove = !1) : r = !1, e ? {
|
|
1635
1667
|
draw: !1,
|
|
1636
1668
|
edit: !1
|
|
1637
|
-
} : { draw: o, edit:
|
|
1669
|
+
} : { draw: o, edit: r };
|
|
1638
1670
|
}
|
|
1639
1671
|
applyLayerCakeToolbarIcon() {
|
|
1640
1672
|
if (!this.container) return;
|
|
@@ -1647,9 +1679,9 @@ class ft {
|
|
|
1647
1679
|
let o = e.querySelector(
|
|
1648
1680
|
".leaflet-geokit-cake-icon"
|
|
1649
1681
|
);
|
|
1650
|
-
o || (o = document.createElement("span"), o.className = "leaflet-geokit-cake-icon", o.setAttribute("aria-hidden", "true"), e.appendChild(o)), o.style.setProperty("position", "absolute", "important"), o.style.setProperty("display", "block", "important"), o.style.setProperty("left", "50%", "important"), o.style.setProperty("top", "50%", "important"), o.style.setProperty("width", "18px", "important"), o.style.setProperty("height", "18px", "important"), o.style.setProperty("transform", "translate(-50%, -50%)", "important"), o.style.setProperty("pointer-events", "none", "important"), o.firstElementChild || (o.innerHTML =
|
|
1651
|
-
const
|
|
1652
|
-
|
|
1682
|
+
o || (o = document.createElement("span"), o.className = "leaflet-geokit-cake-icon", o.setAttribute("aria-hidden", "true"), e.appendChild(o)), o.style.setProperty("position", "absolute", "important"), o.style.setProperty("display", "block", "important"), o.style.setProperty("left", "50%", "important"), o.style.setProperty("top", "50%", "important"), o.style.setProperty("width", "18px", "important"), o.style.setProperty("height", "18px", "important"), o.style.setProperty("transform", "translate(-50%, -50%)", "important"), o.style.setProperty("pointer-events", "none", "important"), o.firstElementChild || (o.innerHTML = it);
|
|
1683
|
+
const r = o.firstElementChild;
|
|
1684
|
+
r && (r.style.setProperty("width", "100%", "important"), r.style.setProperty("height", "100%", "important"), r.style.setProperty("display", "block", "important"));
|
|
1653
1685
|
};
|
|
1654
1686
|
t(), setTimeout(t, 0);
|
|
1655
1687
|
}
|
|
@@ -1664,9 +1696,9 @@ class ft {
|
|
|
1664
1696
|
let o = e.querySelector(
|
|
1665
1697
|
".leaflet-geokit-move-icon"
|
|
1666
1698
|
);
|
|
1667
|
-
o || (o = document.createElement("span"), o.className = "leaflet-geokit-move-icon", o.setAttribute("aria-hidden", "true"), e.appendChild(o)), o.style.setProperty("position", "absolute", "important"), o.style.setProperty("display", "block", "important"), o.style.setProperty("left", "50%", "important"), o.style.setProperty("top", "50%", "important"), o.style.setProperty("width", "18px", "important"), o.style.setProperty("height", "18px", "important"), o.style.setProperty("transform", "translate(-50%, -50%)", "important"), o.style.setProperty("pointer-events", "none", "important"), o.firstElementChild || (o.innerHTML =
|
|
1668
|
-
const
|
|
1669
|
-
|
|
1699
|
+
o || (o = document.createElement("span"), o.className = "leaflet-geokit-move-icon", o.setAttribute("aria-hidden", "true"), e.appendChild(o)), o.style.setProperty("position", "absolute", "important"), o.style.setProperty("display", "block", "important"), o.style.setProperty("left", "50%", "important"), o.style.setProperty("top", "50%", "important"), o.style.setProperty("width", "18px", "important"), o.style.setProperty("height", "18px", "important"), o.style.setProperty("transform", "translate(-50%, -50%)", "important"), o.style.setProperty("pointer-events", "none", "important"), o.firstElementChild || (o.innerHTML = at);
|
|
1700
|
+
const r = o.firstElementChild;
|
|
1701
|
+
r && (r.style.setProperty("width", "100%", "important"), r.style.setProperty("height", "100%", "important"), r.style.setProperty("display", "block", "important"));
|
|
1670
1702
|
};
|
|
1671
1703
|
t(), setTimeout(t, 0);
|
|
1672
1704
|
}
|
|
@@ -1674,7 +1706,7 @@ class ft {
|
|
|
1674
1706
|
addRulerControl() {
|
|
1675
1707
|
if (!this.map) return;
|
|
1676
1708
|
this.installRulerPrecisionPatch();
|
|
1677
|
-
const t =
|
|
1709
|
+
const t = gt(this.measurementSystem);
|
|
1678
1710
|
this.rulerControl = this.L.control.ruler(t), this.map.addControl(this.rulerControl);
|
|
1679
1711
|
}
|
|
1680
1712
|
installRulerPrecisionPatch() {
|
|
@@ -1683,22 +1715,22 @@ class ft {
|
|
|
1683
1715
|
if (!t || typeof t != "function") return;
|
|
1684
1716
|
const e = t.prototype, o = e._calculateBearingAndDistance;
|
|
1685
1717
|
if (typeof o != "function") return;
|
|
1686
|
-
const
|
|
1718
|
+
const r = this.logger;
|
|
1687
1719
|
e._calculateBearingAndDistance = function() {
|
|
1688
|
-
var
|
|
1720
|
+
var i, n, l;
|
|
1689
1721
|
o.call(this);
|
|
1690
1722
|
try {
|
|
1691
|
-
const c = this._clickedLatLong, d = (
|
|
1723
|
+
const c = this._clickedLatLong, d = (i = this._movingLatLong) != null ? i : this._clickedLatLong;
|
|
1692
1724
|
if (!c || !d) return;
|
|
1693
|
-
const { meters:
|
|
1725
|
+
const { meters: u, bearingDegrees: p } = ct(
|
|
1694
1726
|
c.lat,
|
|
1695
1727
|
c.lng,
|
|
1696
1728
|
d.lat,
|
|
1697
1729
|
d.lng
|
|
1698
|
-
), f =
|
|
1699
|
-
this._result = this._result || {}, this._result.Distance =
|
|
1730
|
+
), f = u / 1e3, g = typeof ((l = (n = this.options) == null ? void 0 : n.lengthUnit) == null ? void 0 : l.factor) == "number" ? this.options.lengthUnit.factor : 1, y = j(f * g);
|
|
1731
|
+
this._result = this._result || {}, this._result.Distance = y, this._result.Bearing = p, this._result.meters = u;
|
|
1700
1732
|
} catch (c) {
|
|
1701
|
-
|
|
1733
|
+
r == null || r.warn("ruler:precision-patch", c);
|
|
1702
1734
|
}
|
|
1703
1735
|
}, ae = !0;
|
|
1704
1736
|
}
|
|
@@ -1724,13 +1756,13 @@ class ft {
|
|
|
1724
1756
|
const o = t.L.DomUtil.create(
|
|
1725
1757
|
"div",
|
|
1726
1758
|
"leaflet-bar leaflet-ruler-settings-control"
|
|
1727
|
-
),
|
|
1759
|
+
), r = t.L.DomUtil.create(
|
|
1728
1760
|
"button",
|
|
1729
1761
|
"leaflet-ruler-settings-button",
|
|
1730
1762
|
o
|
|
1731
1763
|
);
|
|
1732
|
-
return
|
|
1733
|
-
|
|
1764
|
+
return r.type = "button", r.title = "Measurement settings", r.setAttribute("aria-label", "Measurement settings"), r.addEventListener("click", (a) => {
|
|
1765
|
+
a.preventDefault(), a.stopPropagation(), t.toggleMeasurementModal(!0);
|
|
1734
1766
|
}), t.L.DomEvent.disableClickPropagation(o), t.L.DomEvent.disableScrollPropagation(o), o;
|
|
1735
1767
|
}
|
|
1736
1768
|
});
|
|
@@ -1749,23 +1781,23 @@ class ft {
|
|
|
1749
1781
|
});
|
|
1750
1782
|
const o = document.createElement("h2");
|
|
1751
1783
|
o.className = "leaflet-ruler-modal-title", o.textContent = "Measurement Units", e.appendChild(o);
|
|
1752
|
-
const
|
|
1753
|
-
|
|
1754
|
-
const
|
|
1755
|
-
|
|
1784
|
+
const r = document.createElement("p");
|
|
1785
|
+
r.className = "leaflet-ruler-modal-description", r.textContent = "Choose how the measurement tool reports distances.", e.appendChild(r);
|
|
1786
|
+
const a = document.createElement("div");
|
|
1787
|
+
a.className = "leaflet-ruler-modal-options", e.appendChild(a), ["metric", "imperial"].forEach((l) => {
|
|
1756
1788
|
const c = document.createElement("label");
|
|
1757
1789
|
c.className = "leaflet-ruler-modal-option";
|
|
1758
1790
|
const d = document.createElement("input");
|
|
1759
1791
|
d.type = "radio", d.name = "leaflet-ruler-units", d.value = l, d.addEventListener("change", () => {
|
|
1760
1792
|
d.checked && this.setRulerUnits(l);
|
|
1761
1793
|
});
|
|
1762
|
-
const
|
|
1763
|
-
|
|
1794
|
+
const u = document.createElement("span");
|
|
1795
|
+
u.textContent = mt[l], c.appendChild(d), c.appendChild(u), a.appendChild(c), this.measurementModalRadios[l] = d;
|
|
1764
1796
|
});
|
|
1765
|
-
const
|
|
1766
|
-
|
|
1767
|
-
const
|
|
1768
|
-
return
|
|
1797
|
+
const i = document.createElement("div");
|
|
1798
|
+
i.className = "leaflet-ruler-modal-actions";
|
|
1799
|
+
const n = document.createElement("button");
|
|
1800
|
+
return n.type = "button", n.className = "leaflet-ruler-modal-close", n.textContent = "Close", n.addEventListener("click", () => this.toggleMeasurementModal(!1)), i.appendChild(n), e.appendChild(i), t.appendChild(e), this.container.appendChild(t), this.measurementModalOverlay = t, this.measurementModalDialog = e, this.syncMeasurementModalState(), t;
|
|
1769
1801
|
}
|
|
1770
1802
|
/* c8 ignore next */
|
|
1771
1803
|
toggleMeasurementModal(t) {
|
|
@@ -1806,42 +1838,42 @@ class ft {
|
|
|
1806
1838
|
* if the click is within a small pixel radius of the first vertex, it triggers finishShape().
|
|
1807
1839
|
*/
|
|
1808
1840
|
installPolygonFinishPatch() {
|
|
1809
|
-
var
|
|
1841
|
+
var i, n, l, c, d;
|
|
1810
1842
|
if (!this.map || !this.drawControl) return;
|
|
1811
1843
|
try {
|
|
1812
|
-
(
|
|
1844
|
+
(i = this.detachPolygonFinishPatch) == null || i.call(this);
|
|
1813
1845
|
} catch {
|
|
1814
1846
|
}
|
|
1815
1847
|
this.detachPolygonFinishPatch = null;
|
|
1816
|
-
const t = this.map, e = (l = (
|
|
1848
|
+
const t = this.map, e = (l = (n = this.drawControl) == null ? void 0 : n._toolbars) == null ? void 0 : l.draw;
|
|
1817
1849
|
if (!e || !!!((d = (c = e._modes) == null ? void 0 : c.polygon) != null && d.handler)) return;
|
|
1818
|
-
const
|
|
1819
|
-
var
|
|
1850
|
+
const r = 10, a = (u) => {
|
|
1851
|
+
var p, f, g, y, w, b, m, A;
|
|
1820
1852
|
try {
|
|
1821
|
-
const x = (f = (
|
|
1853
|
+
const x = (f = (p = e._modes) == null ? void 0 : p.polygon) == null ? void 0 : f.handler;
|
|
1822
1854
|
if (!x || !x._enabled) return;
|
|
1823
1855
|
const L = x._markers;
|
|
1824
1856
|
if (!Array.isArray(L) || L.length < 4) return;
|
|
1825
|
-
const
|
|
1826
|
-
if (!
|
|
1827
|
-
const
|
|
1828
|
-
Math.hypot(
|
|
1857
|
+
const k = (y = (g = L[0]) == null ? void 0 : g.getLatLng) == null ? void 0 : y.call(g);
|
|
1858
|
+
if (!k) return;
|
|
1859
|
+
const E = t.latLngToContainerPoint(k), C = t.latLngToContainerPoint(u.latlng);
|
|
1860
|
+
Math.hypot(E.x - C.x, E.y - C.y) <= r && typeof x._finishShape == "function" && ((b = (w = u.originalEvent) == null ? void 0 : w.preventDefault) == null || b.call(w), (A = (m = u.originalEvent) == null ? void 0 : m.stopPropagation) == null || A.call(m), x._finishShape());
|
|
1829
1861
|
} catch (x) {
|
|
1830
1862
|
this._error("polygon-finish-patch", x);
|
|
1831
1863
|
}
|
|
1832
1864
|
};
|
|
1833
|
-
t.on("click",
|
|
1865
|
+
t.on("click", a), this.detachPolygonFinishPatch = () => {
|
|
1834
1866
|
try {
|
|
1835
|
-
t.off("click",
|
|
1867
|
+
t.off("click", a);
|
|
1836
1868
|
} catch {
|
|
1837
1869
|
}
|
|
1838
1870
|
};
|
|
1839
1871
|
}
|
|
1840
1872
|
patchLeafletDrawBugs() {
|
|
1841
|
-
var t, e, o,
|
|
1873
|
+
var t, e, o, r, a;
|
|
1842
1874
|
try {
|
|
1843
|
-
const
|
|
1844
|
-
if (!
|
|
1875
|
+
const i = this.L, n = i.GeometryUtil;
|
|
1876
|
+
if (!n) return;
|
|
1845
1877
|
const l = {
|
|
1846
1878
|
km: 2,
|
|
1847
1879
|
ha: 2,
|
|
@@ -1851,33 +1883,33 @@ class ft {
|
|
|
1851
1883
|
yd: 0,
|
|
1852
1884
|
ft: 0,
|
|
1853
1885
|
nm: 2
|
|
1854
|
-
}, c = (e = (t =
|
|
1855
|
-
|
|
1856
|
-
var
|
|
1857
|
-
const f = (
|
|
1886
|
+
}, c = (e = (t = n.formattedNumber) == null ? void 0 : t.bind(n)) != null ? e : ((d, u) => Number(d).toFixed(u));
|
|
1887
|
+
n.readableArea = (d, u, p) => {
|
|
1888
|
+
var y;
|
|
1889
|
+
const f = (y = i.Util) != null && y.extend ? i.Util.extend({}, l, p || {}) : { ...l, ...p || {} };
|
|
1858
1890
|
let g;
|
|
1859
|
-
if (
|
|
1891
|
+
if (u) {
|
|
1860
1892
|
let w = ["ha", "m"];
|
|
1861
|
-
const b = typeof
|
|
1862
|
-
b === "string" ? w = [
|
|
1893
|
+
const b = typeof u;
|
|
1894
|
+
b === "string" ? w = [u] : b !== "boolean" && (w = Array.isArray(u) ? u : w), d >= 1e6 && w.indexOf("km") !== -1 ? g = `${c(1e-6 * d, f.km)} km²` : d >= 1e4 && w.indexOf("ha") !== -1 ? g = `${c(1e-4 * d, f.ha)} ha` : g = `${c(d, f.m)} m²`;
|
|
1863
1895
|
} else
|
|
1864
1896
|
d = d / 0.836127, d >= 3097600 ? g = `${c(d / 3097600, f.mi)} mi²` : d >= 4840 ? g = `${c(d / 4840, f.ac)} acres` : g = `${c(d, f.yd)} yd²`;
|
|
1865
1897
|
return g;
|
|
1866
1898
|
};
|
|
1867
|
-
} catch (
|
|
1868
|
-
this.logger.warn("leaflet-draw-patch:readableArea",
|
|
1899
|
+
} catch (i) {
|
|
1900
|
+
this.logger.warn("leaflet-draw-patch:readableArea", i);
|
|
1869
1901
|
}
|
|
1870
1902
|
try {
|
|
1871
|
-
const
|
|
1872
|
-
if (!((
|
|
1873
|
-
|
|
1874
|
-
var g,
|
|
1875
|
-
const
|
|
1903
|
+
const i = this.L, n = (o = i.Edit) == null ? void 0 : o.Circle, l = (r = i.Draw) == null ? void 0 : r.Event, c = i.GeometryUtil;
|
|
1904
|
+
if (!((a = n == null ? void 0 : n.prototype) != null && a._resize) || !l || !c) return;
|
|
1905
|
+
n.prototype._resize = function(u) {
|
|
1906
|
+
var g, y, w;
|
|
1907
|
+
const p = this._moveMarker.getLatLng(), f = c.isVersion07x() ? p.distanceTo(u) : this._map.distance(p, u);
|
|
1876
1908
|
this._shape.setRadius(f);
|
|
1877
1909
|
try {
|
|
1878
|
-
(g = this._map) != null && g.editTooltip && ((w = (
|
|
1879
|
-
text:
|
|
1880
|
-
subtext:
|
|
1910
|
+
(g = this._map) != null && g.editTooltip && ((w = (y = this._map) == null ? void 0 : y._editTooltip) != null && w.updateContent) && this._map._editTooltip.updateContent({
|
|
1911
|
+
text: i.drawLocal.edit.handlers.edit.tooltip.subtext + "<br />" + i.drawLocal.edit.handlers.edit.tooltip.text,
|
|
1912
|
+
subtext: i.drawLocal.draw.handlers.circle.radius + ": " + c.readableDistance(
|
|
1881
1913
|
f,
|
|
1882
1914
|
!0,
|
|
1883
1915
|
this.options.feet,
|
|
@@ -1888,32 +1920,32 @@ class ft {
|
|
|
1888
1920
|
}
|
|
1889
1921
|
this._map.fire(l.EDITRESIZE, { layer: this._shape });
|
|
1890
1922
|
};
|
|
1891
|
-
} catch (
|
|
1892
|
-
this.logger.warn("leaflet-draw-patch:circle-resize",
|
|
1923
|
+
} catch (i) {
|
|
1924
|
+
this.logger.warn("leaflet-draw-patch:circle-resize", i);
|
|
1893
1925
|
}
|
|
1894
1926
|
}
|
|
1895
1927
|
bindDrawEvents() {
|
|
1896
1928
|
!this.map || !this.drawnItems || (this.map.on(this.L.Draw.Event.CREATED, (t) => {
|
|
1897
|
-
var e, o,
|
|
1929
|
+
var e, o, r;
|
|
1898
1930
|
try {
|
|
1899
|
-
const { layer:
|
|
1900
|
-
if (
|
|
1931
|
+
const { layer: a, layerType: i } = t;
|
|
1932
|
+
if (i === D.TYPE) {
|
|
1901
1933
|
try {
|
|
1902
1934
|
(e = this.activeCakeSession) == null || e.destroy();
|
|
1903
1935
|
} catch {
|
|
1904
1936
|
}
|
|
1905
|
-
this.activeCakeSession = new
|
|
1937
|
+
this.activeCakeSession = new rt(
|
|
1906
1938
|
this.map,
|
|
1907
|
-
|
|
1939
|
+
a,
|
|
1908
1940
|
(d) => {
|
|
1909
1941
|
if (!this.drawnItems) return;
|
|
1910
|
-
const
|
|
1942
|
+
const u = this.store.add(d), p = this.L.geoJSON(d);
|
|
1911
1943
|
let f = 0;
|
|
1912
|
-
|
|
1944
|
+
p.eachLayer((g) => {
|
|
1913
1945
|
var w, b, m;
|
|
1914
|
-
const
|
|
1915
|
-
g._fid =
|
|
1916
|
-
id:
|
|
1946
|
+
const y = (w = u[f]) != null ? w : u[u.length - 1];
|
|
1947
|
+
g._fid = y, this.drawnItems.addLayer(g), this.installVertexContextMenu(g), (m = (b = this.options.callbacks) == null ? void 0 : b.onCreated) == null || m.call(b, {
|
|
1948
|
+
id: y,
|
|
1917
1949
|
layerType: "polygon",
|
|
1918
1950
|
geoJSON: g.toGeoJSON()
|
|
1919
1951
|
}), f++;
|
|
@@ -1923,50 +1955,50 @@ class ft {
|
|
|
1923
1955
|
);
|
|
1924
1956
|
return;
|
|
1925
1957
|
}
|
|
1926
|
-
this.drawnItems.addLayer(
|
|
1927
|
-
const
|
|
1958
|
+
this.drawnItems.addLayer(a);
|
|
1959
|
+
const n = a.toGeoJSON(), c = this.store.add({
|
|
1928
1960
|
type: "FeatureCollection",
|
|
1929
|
-
features: [
|
|
1961
|
+
features: [n]
|
|
1930
1962
|
})[0];
|
|
1931
|
-
|
|
1932
|
-
} catch (
|
|
1933
|
-
this._error("onCreated handler failed",
|
|
1963
|
+
a._fid = c, this.installVertexContextMenu(a), (r = (o = this.options.callbacks) == null ? void 0 : o.onCreated) == null || r.call(o, { id: c, layerType: i, geoJSON: n });
|
|
1964
|
+
} catch (a) {
|
|
1965
|
+
this._error("onCreated handler failed", a);
|
|
1934
1966
|
}
|
|
1935
1967
|
}), this.map.on(this.L.Draw.Event.EDITED, (t) => {
|
|
1936
1968
|
var e, o;
|
|
1937
1969
|
try {
|
|
1938
|
-
const
|
|
1939
|
-
t.layers.eachLayer((
|
|
1940
|
-
const
|
|
1970
|
+
const r = [];
|
|
1971
|
+
t.layers.eachLayer((i) => {
|
|
1972
|
+
const n = i.toGeoJSON(), l = i._fid;
|
|
1941
1973
|
if (l)
|
|
1942
|
-
this.store.update(l,
|
|
1974
|
+
this.store.update(l, n), r.push(l);
|
|
1943
1975
|
else {
|
|
1944
1976
|
const c = this.store.add({
|
|
1945
1977
|
type: "FeatureCollection",
|
|
1946
|
-
features: [
|
|
1978
|
+
features: [n]
|
|
1947
1979
|
})[0];
|
|
1948
|
-
|
|
1980
|
+
i._fid = c, r.push(c);
|
|
1949
1981
|
}
|
|
1950
1982
|
}), (o = (e = this.options.callbacks) == null ? void 0 : e.onEdited) == null || o.call(e, {
|
|
1951
|
-
ids:
|
|
1983
|
+
ids: r,
|
|
1952
1984
|
geoJSON: this.store.toFeatureCollection()
|
|
1953
1985
|
});
|
|
1954
|
-
} catch (
|
|
1955
|
-
this._error("onEdited handler failed",
|
|
1986
|
+
} catch (r) {
|
|
1987
|
+
this._error("onEdited handler failed", r);
|
|
1956
1988
|
}
|
|
1957
1989
|
}), this.map.on(this.L.Draw.Event.DELETED, (t) => {
|
|
1958
1990
|
var e, o;
|
|
1959
1991
|
try {
|
|
1960
|
-
const
|
|
1961
|
-
t.layers.eachLayer((
|
|
1962
|
-
const
|
|
1963
|
-
|
|
1992
|
+
const r = [];
|
|
1993
|
+
t.layers.eachLayer((i) => {
|
|
1994
|
+
const n = i._fid;
|
|
1995
|
+
n && (r.push(n), this.store.remove(n));
|
|
1964
1996
|
}), (o = (e = this.options.callbacks) == null ? void 0 : e.onDeleted) == null || o.call(e, {
|
|
1965
|
-
ids:
|
|
1997
|
+
ids: r,
|
|
1966
1998
|
geoJSON: this.store.toFeatureCollection()
|
|
1967
1999
|
});
|
|
1968
|
-
} catch (
|
|
1969
|
-
this._error("onDeleted handler failed",
|
|
2000
|
+
} catch (r) {
|
|
2001
|
+
this._error("onDeleted handler failed", r);
|
|
1970
2002
|
}
|
|
1971
2003
|
}), this.map.on("draw:moveend", (t) => {
|
|
1972
2004
|
try {
|
|
@@ -1977,37 +2009,37 @@ class ft {
|
|
|
1977
2009
|
}), this.map.on("draw:moveconfirmed", (t) => {
|
|
1978
2010
|
var e, o;
|
|
1979
2011
|
try {
|
|
1980
|
-
const
|
|
1981
|
-
if (
|
|
1982
|
-
const
|
|
1983
|
-
this.store.update(
|
|
1984
|
-
ids: [
|
|
2012
|
+
const r = t.layer, a = r._fid;
|
|
2013
|
+
if (a) {
|
|
2014
|
+
const i = r.toGeoJSON();
|
|
2015
|
+
this.store.update(a, i), (o = (e = this.options.callbacks) == null ? void 0 : e.onEdited) == null || o.call(e, {
|
|
2016
|
+
ids: [a],
|
|
1985
2017
|
geoJSON: this.store.toFeatureCollection()
|
|
1986
2018
|
});
|
|
1987
2019
|
}
|
|
1988
2020
|
this.hideMoveConfirmationUI();
|
|
1989
|
-
} catch (
|
|
1990
|
-
this._error("draw:moveconfirmed handler failed",
|
|
2021
|
+
} catch (r) {
|
|
2022
|
+
this._error("draw:moveconfirmed handler failed", r);
|
|
1991
2023
|
}
|
|
1992
2024
|
}));
|
|
1993
2025
|
}
|
|
1994
2026
|
_error(t, e) {
|
|
1995
|
-
var o,
|
|
1996
|
-
this.logger.error("error", { message: t, cause: e }), (
|
|
2027
|
+
var o, r;
|
|
2028
|
+
this.logger.error("error", { message: t, cause: e }), (r = (o = this.options.callbacks) == null ? void 0 : o.onError) == null || r.call(o, { message: t, cause: e });
|
|
1997
2029
|
}
|
|
1998
2030
|
// -------- Vertex deletion context menu --------
|
|
1999
2031
|
installVertexContextMenu(t) {
|
|
2000
2032
|
if (!t || typeof t.on != "function") return;
|
|
2001
|
-
const e = (
|
|
2002
|
-
var
|
|
2033
|
+
const e = (r) => {
|
|
2034
|
+
var a, i, n, l;
|
|
2003
2035
|
try {
|
|
2004
|
-
(
|
|
2036
|
+
(i = (a = r == null ? void 0 : r.originalEvent) == null ? void 0 : a.preventDefault) == null || i.call(a), (l = (n = r == null ? void 0 : r.originalEvent) == null ? void 0 : n.stopPropagation) == null || l.call(n);
|
|
2005
2037
|
} catch {
|
|
2006
2038
|
}
|
|
2007
|
-
this.openVertexMenu(t,
|
|
2008
|
-
}, o = (
|
|
2009
|
-
const
|
|
2010
|
-
|
|
2039
|
+
this.openVertexMenu(t, r);
|
|
2040
|
+
}, o = (r) => {
|
|
2041
|
+
const a = r == null ? void 0 : r.originalEvent;
|
|
2042
|
+
a && (a.ctrlKey || a.metaKey) && this.openVertexMenu(t, r);
|
|
2011
2043
|
};
|
|
2012
2044
|
try {
|
|
2013
2045
|
t.on("contextmenu", e), t.on("click", o);
|
|
@@ -2017,13 +2049,13 @@ class ft {
|
|
|
2017
2049
|
openVertexMenu(t, e) {
|
|
2018
2050
|
try {
|
|
2019
2051
|
if (!this.map || !(typeof t.getLatLngs == "function" && (t instanceof this.L.Polygon || t instanceof this.L.Polyline))) return;
|
|
2020
|
-
const
|
|
2021
|
-
if (!
|
|
2052
|
+
const r = t.editing;
|
|
2053
|
+
if (!r || typeof r.enabled != "function" || !r.enabled())
|
|
2022
2054
|
return;
|
|
2023
|
-
const
|
|
2024
|
-
if (!
|
|
2025
|
-
this.showVertexMenu(
|
|
2026
|
-
await this.deleteVertex(t,
|
|
2055
|
+
const a = e == null ? void 0 : e.latlng, i = this.map.latLngToContainerPoint(a), n = this.findNearestVertex(t, a, 12);
|
|
2056
|
+
if (!n) return;
|
|
2057
|
+
this.showVertexMenu(i, async () => {
|
|
2058
|
+
await this.deleteVertex(t, n.pathIndex, n.vertexIndex);
|
|
2027
2059
|
});
|
|
2028
2060
|
} catch (o) {
|
|
2029
2061
|
this._error("openVertexMenu", o);
|
|
@@ -2037,84 +2069,84 @@ class ft {
|
|
|
2037
2069
|
} catch {
|
|
2038
2070
|
}
|
|
2039
2071
|
if (this.vertexMenuCleanup = null, !this.container) return;
|
|
2040
|
-
const
|
|
2041
|
-
|
|
2042
|
-
const
|
|
2043
|
-
|
|
2072
|
+
const r = document.createElement("div");
|
|
2073
|
+
r.style.position = "absolute", r.style.top = `${t.y}px`, r.style.left = `${t.x}px`, r.style.transform = "translate(-50%, -100%)", r.style.background = "#fff", r.style.border = "1px solid rgba(0,0,0,0.15)", r.style.borderRadius = "6px", r.style.boxShadow = "0 4px 12px rgba(0,0,0,0.15)", r.style.padding = "6px", r.style.zIndex = "10000", r.style.fontSize = "12px", r.style.userSelect = "none";
|
|
2074
|
+
const a = document.createElement("button");
|
|
2075
|
+
a.textContent = "Delete vertex", a.style.padding = "6px 10px", a.style.border = "none", a.style.background = "#da1e28", a.style.color = "#fff", a.style.borderRadius = "4px", a.style.cursor = "pointer", a.addEventListener("click", (l) => {
|
|
2044
2076
|
l.stopPropagation(), l.preventDefault();
|
|
2045
2077
|
try {
|
|
2046
2078
|
e();
|
|
2047
2079
|
} finally {
|
|
2048
|
-
|
|
2080
|
+
i();
|
|
2049
2081
|
}
|
|
2050
|
-
}),
|
|
2051
|
-
const
|
|
2082
|
+
}), r.appendChild(a);
|
|
2083
|
+
const i = () => {
|
|
2052
2084
|
try {
|
|
2053
|
-
window.removeEventListener("pointerdown",
|
|
2085
|
+
window.removeEventListener("pointerdown", n), this.container.removeEventListener("scroll", i, !0), r.remove();
|
|
2054
2086
|
} catch {
|
|
2055
2087
|
}
|
|
2056
2088
|
this.vertexMenuEl = null, this.vertexMenuCleanup = null;
|
|
2057
|
-
},
|
|
2058
|
-
|
|
2089
|
+
}, n = (l) => {
|
|
2090
|
+
r.contains(l.target) || i();
|
|
2059
2091
|
};
|
|
2060
|
-
window.addEventListener("pointerdown",
|
|
2061
|
-
} catch (
|
|
2062
|
-
this._error("showVertexMenu",
|
|
2092
|
+
window.addEventListener("pointerdown", n, { capture: !0 }), this.container.addEventListener("scroll", i, !0), this.container.appendChild(r), this.vertexMenuEl = r, this.vertexMenuCleanup = i;
|
|
2093
|
+
} catch (r) {
|
|
2094
|
+
this._error("showVertexMenu", r);
|
|
2063
2095
|
}
|
|
2064
2096
|
}
|
|
2065
2097
|
findNearestVertex(t, e, o) {
|
|
2066
2098
|
if (!this.map) return null;
|
|
2067
|
-
const
|
|
2068
|
-
let
|
|
2099
|
+
const r = (p) => this.map.latLngToContainerPoint(p), a = (p, f) => Math.hypot(p.x - f.x, p.y - f.y), i = r(e);
|
|
2100
|
+
let n = 1 / 0, l = -1, c = -1;
|
|
2069
2101
|
const d = t.getLatLngs();
|
|
2070
|
-
return (Array.isArray(d[0]) ? d : [d]).forEach((
|
|
2071
|
-
|
|
2072
|
-
const w =
|
|
2073
|
-
b <
|
|
2102
|
+
return (Array.isArray(d[0]) ? d : [d]).forEach((p, f) => {
|
|
2103
|
+
p.forEach((g, y) => {
|
|
2104
|
+
const w = r(g), b = a(w, i);
|
|
2105
|
+
b < n && (n = b, l = f, c = y);
|
|
2074
2106
|
});
|
|
2075
|
-
}), l === -1 ||
|
|
2107
|
+
}), l === -1 || n > o ? null : { pathIndex: l, vertexIndex: c };
|
|
2076
2108
|
}
|
|
2077
2109
|
async deleteVertex(t, e, o) {
|
|
2078
|
-
var
|
|
2110
|
+
var r, a, i;
|
|
2079
2111
|
try {
|
|
2080
2112
|
if (!(typeof t.getLatLngs == "function" && (t instanceof this.L.Polygon || t instanceof this.L.Polyline))) return;
|
|
2081
2113
|
const l = t.getLatLngs(), c = Array.isArray(l[0]) ? l : [l], d = c[e];
|
|
2082
2114
|
if (!d) return;
|
|
2083
|
-
const
|
|
2084
|
-
if (d.length <=
|
|
2115
|
+
const p = t instanceof this.L.Polygon ? 3 : 2;
|
|
2116
|
+
if (d.length <= p) return;
|
|
2085
2117
|
if (d.splice(o, 1), c.length === 1)
|
|
2086
2118
|
t.setLatLngs(d);
|
|
2087
2119
|
else {
|
|
2088
|
-
const g = c.map((
|
|
2120
|
+
const g = c.map((y, w) => w === e ? d : y);
|
|
2089
2121
|
t.setLatLngs(g);
|
|
2090
2122
|
}
|
|
2091
|
-
(
|
|
2123
|
+
(r = t.redraw) == null || r.call(t);
|
|
2092
2124
|
const f = t._fid;
|
|
2093
2125
|
if (f) {
|
|
2094
2126
|
const g = t.toGeoJSON();
|
|
2095
|
-
this.store.update(f, g), (
|
|
2127
|
+
this.store.update(f, g), (i = (a = this.options.callbacks) == null ? void 0 : a.onEdited) == null || i.call(a, {
|
|
2096
2128
|
ids: [f],
|
|
2097
2129
|
geoJSON: this.store.toFeatureCollection()
|
|
2098
2130
|
});
|
|
2099
2131
|
}
|
|
2100
|
-
} catch (
|
|
2101
|
-
this._error("deleteVertex",
|
|
2132
|
+
} catch (n) {
|
|
2133
|
+
this._error("deleteVertex", n);
|
|
2102
2134
|
}
|
|
2103
2135
|
}
|
|
2104
2136
|
// -------- Move tool Save/Cancel UI --------
|
|
2105
2137
|
showMoveConfirmationUI(t, e, o) {
|
|
2106
|
-
var
|
|
2138
|
+
var r, a;
|
|
2107
2139
|
try {
|
|
2108
2140
|
if (this.hideMoveConfirmationUI(), !this.container || !this.map) return;
|
|
2109
|
-
const
|
|
2110
|
-
if (!r) return;
|
|
2111
|
-
const i = (a = r == null ? void 0 : r._toolbars) == null ? void 0 : a.draw;
|
|
2141
|
+
const i = this.drawControl;
|
|
2112
2142
|
if (!i) return;
|
|
2113
|
-
const
|
|
2143
|
+
const n = (r = i == null ? void 0 : i._toolbars) == null ? void 0 : r.draw;
|
|
2144
|
+
if (!n) return;
|
|
2145
|
+
const l = n._modes || {};
|
|
2114
2146
|
let c = null;
|
|
2115
2147
|
for (const f in l) {
|
|
2116
2148
|
const g = l[f];
|
|
2117
|
-
if (((
|
|
2149
|
+
if (((a = g == null ? void 0 : g.handler) == null ? void 0 : a.type) === "move") {
|
|
2118
2150
|
c = g.handler;
|
|
2119
2151
|
break;
|
|
2120
2152
|
}
|
|
@@ -2122,18 +2154,18 @@ class ft {
|
|
|
2122
2154
|
this.activeMoveHandler = c;
|
|
2123
2155
|
const d = document.createElement("div");
|
|
2124
2156
|
d.style.position = "absolute", d.style.bottom = "60px", d.style.left = "50%", d.style.transform = "translateX(-50%)", d.style.display = "flex", d.style.gap = "8px", d.style.background = "#fff", d.style.border = "2px solid #3388ff", d.style.borderRadius = "8px", d.style.padding = "12px 16px", d.style.boxShadow = "0 4px 12px rgba(0,0,0,0.2)", d.style.zIndex = "10000", d.style.fontSize = "14px", d.style.fontFamily = "system-ui, sans-serif";
|
|
2125
|
-
const
|
|
2126
|
-
|
|
2157
|
+
const u = document.createElement("button");
|
|
2158
|
+
u.textContent = "✓ Save", u.style.padding = "8px 16px", u.style.border = "none", u.style.background = "#28a745", u.style.color = "#fff", u.style.borderRadius = "4px", u.style.cursor = "pointer", u.style.fontWeight = "600", u.style.fontSize = "14px", u.addEventListener("click", (f) => {
|
|
2127
2159
|
f.stopPropagation(), f.preventDefault(), c != null && c.confirmMove && c.confirmMove();
|
|
2128
2160
|
});
|
|
2129
|
-
const
|
|
2130
|
-
|
|
2161
|
+
const p = document.createElement("button");
|
|
2162
|
+
p.textContent = "✕ Cancel", p.style.padding = "8px 16px", p.style.border = "1px solid #ccc", p.style.background = "#fff", p.style.color = "#333", p.style.borderRadius = "4px", p.style.cursor = "pointer", p.style.fontWeight = "600", p.style.fontSize = "14px", p.addEventListener("click", (f) => {
|
|
2131
2163
|
f.stopPropagation(), f.preventDefault(), c != null && c.cancelMove && c.cancelMove(), this.hideMoveConfirmationUI();
|
|
2132
|
-
}), d.appendChild(
|
|
2164
|
+
}), d.appendChild(u), d.appendChild(p), this.container.appendChild(d), this.moveConfirmationUI = d, this.logger.debug("showMoveConfirmationUI", {
|
|
2133
2165
|
layerId: t._fid
|
|
2134
2166
|
});
|
|
2135
|
-
} catch (
|
|
2136
|
-
this._error("showMoveConfirmationUI",
|
|
2167
|
+
} catch (i) {
|
|
2168
|
+
this._error("showMoveConfirmationUI", i);
|
|
2137
2169
|
}
|
|
2138
2170
|
}
|
|
2139
2171
|
hideMoveConfirmationUI() {
|
|
@@ -2144,14 +2176,69 @@ class ft {
|
|
|
2144
2176
|
}
|
|
2145
2177
|
}
|
|
2146
2178
|
}
|
|
2147
|
-
|
|
2179
|
+
const I = {
|
|
2180
|
+
osm: {
|
|
2181
|
+
urlTemplate: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
|
2182
|
+
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
2183
|
+
maxZoom: 19,
|
|
2184
|
+
subdomains: ["a", "b", "c"]
|
|
2185
|
+
},
|
|
2186
|
+
here: {
|
|
2187
|
+
styles: {
|
|
2188
|
+
"lite.day": "lite.day",
|
|
2189
|
+
"normal.day": "normal.day",
|
|
2190
|
+
"satellite.day": "satellite.day"
|
|
2191
|
+
},
|
|
2192
|
+
defaultStyle: "lite.day",
|
|
2193
|
+
attribution: 'Map Tiles © <a href="https://www.here.com">HERE</a>',
|
|
2194
|
+
maxZoom: 20
|
|
2195
|
+
}
|
|
2196
|
+
};
|
|
2197
|
+
function ue(s) {
|
|
2198
|
+
return typeof s == "string" ? s.trim().toLowerCase() : "";
|
|
2199
|
+
}
|
|
2200
|
+
function pe(s) {
|
|
2201
|
+
if (typeof s != "string") return;
|
|
2202
|
+
const t = s.trim();
|
|
2203
|
+
return t.length > 0 ? t : void 0;
|
|
2204
|
+
}
|
|
2205
|
+
function At(s) {
|
|
2206
|
+
const { style: t, attribution: e } = s, o = ue(s.provider), r = pe(s.apiKey);
|
|
2207
|
+
switch (o) {
|
|
2208
|
+
case "osm":
|
|
2209
|
+
return {
|
|
2210
|
+
urlTemplate: I.osm.urlTemplate,
|
|
2211
|
+
attribution: e || I.osm.attribution,
|
|
2212
|
+
maxZoom: I.osm.maxZoom,
|
|
2213
|
+
subdomains: [...I.osm.subdomains]
|
|
2214
|
+
};
|
|
2215
|
+
case "here": {
|
|
2216
|
+
if (!r)
|
|
2217
|
+
throw new Error("HERE Maps requires an API key");
|
|
2218
|
+
const a = typeof t == "string" ? t.trim() : "", i = a && a in I.here.styles ? a : I.here.defaultStyle;
|
|
2219
|
+
return {
|
|
2220
|
+
urlTemplate: `https://maps.hereapi.com/v3/base/mc/{z}/{x}/{y}/png8?style=${encodeURIComponent(i)}&apiKey=${encodeURIComponent(r)}`,
|
|
2221
|
+
attribution: e || I.here.attribution,
|
|
2222
|
+
maxZoom: I.here.maxZoom,
|
|
2223
|
+
subdomains: void 0
|
|
2224
|
+
};
|
|
2225
|
+
}
|
|
2226
|
+
default:
|
|
2227
|
+
throw new Error(`Unknown tile provider: ${s.provider}`);
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
function bt(s) {
|
|
2231
|
+
const t = ue(s.provider), e = pe(s.apiKey);
|
|
2232
|
+
return t ? t === "here" && !e ? { valid: !1, error: "HERE Maps requires an API key" } : { valid: !0 } : { valid: !1, error: "Provider is required" };
|
|
2233
|
+
}
|
|
2234
|
+
class fe extends HTMLElement {
|
|
2148
2235
|
constructor() {
|
|
2149
2236
|
super();
|
|
2150
2237
|
// Shadow DOM and container references
|
|
2151
2238
|
h(this, "_root");
|
|
2152
2239
|
h(this, "_container");
|
|
2153
2240
|
// Logging
|
|
2154
|
-
h(this, "_logger",
|
|
2241
|
+
h(this, "_logger", N("component:leaflet-geokit", "debug"));
|
|
2155
2242
|
// Internal state mirrors for attributes/properties
|
|
2156
2243
|
h(this, "_latitude", 0);
|
|
2157
2244
|
h(this, "_longitude", 0);
|
|
@@ -2160,6 +2247,10 @@ class de extends HTMLElement {
|
|
|
2160
2247
|
h(this, "_maxZoom");
|
|
2161
2248
|
h(this, "_tileUrl", "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png");
|
|
2162
2249
|
h(this, "_tileAttribution");
|
|
2250
|
+
h(this, "_tileProvider");
|
|
2251
|
+
h(this, "_tileStyle");
|
|
2252
|
+
h(this, "_apiKey");
|
|
2253
|
+
h(this, "_activeTileProvider", "tile-url");
|
|
2163
2254
|
h(this, "_readOnly", !1);
|
|
2164
2255
|
h(this, "_logLevel", "debug");
|
|
2165
2256
|
h(this, "_devOverlay", !1);
|
|
@@ -2235,10 +2326,10 @@ class de extends HTMLElement {
|
|
|
2235
2326
|
// Lifecycle
|
|
2236
2327
|
async connectedCallback() {
|
|
2237
2328
|
var e;
|
|
2238
|
-
this._logger.debug("connectedCallback", this._currentConfig()),
|
|
2329
|
+
this._logger.debug("connectedCallback", this._currentConfig()), Re({
|
|
2239
2330
|
root: this._root,
|
|
2240
2331
|
skipStyles: this._skipLeafletStyles
|
|
2241
|
-
}), this._applyThemeStyles(), this._controller = new
|
|
2332
|
+
}), this._applyThemeStyles(), this._controller = new yt({
|
|
2242
2333
|
container: this._container,
|
|
2243
2334
|
map: this._mapConfig(),
|
|
2244
2335
|
controls: this._controlsFromAttributes(),
|
|
@@ -2269,7 +2360,7 @@ class de extends HTMLElement {
|
|
|
2269
2360
|
},
|
|
2270
2361
|
leaflet: (e = this._leafletInstance) != null ? e : void 0,
|
|
2271
2362
|
useExternalLeaflet: this._useExternalLeaflet
|
|
2272
|
-
}), await this._controller.init();
|
|
2363
|
+
}), await this._controller.init(), this._tileProvider && this._updateTileLayer();
|
|
2273
2364
|
}
|
|
2274
2365
|
async disconnectedCallback() {
|
|
2275
2366
|
this._logger.debug("disconnectedCallback"), this._controller && (await this._controller.destroy(), this._controller = null);
|
|
@@ -2284,6 +2375,10 @@ class de extends HTMLElement {
|
|
|
2284
2375
|
"max-zoom",
|
|
2285
2376
|
"tile-url",
|
|
2286
2377
|
"tile-attribution",
|
|
2378
|
+
"tile-provider",
|
|
2379
|
+
"tile-style",
|
|
2380
|
+
"api-key",
|
|
2381
|
+
"here-api-key",
|
|
2287
2382
|
"read-only",
|
|
2288
2383
|
"log-level",
|
|
2289
2384
|
"dev-overlay",
|
|
@@ -2305,59 +2400,159 @@ class de extends HTMLElement {
|
|
|
2305
2400
|
"polygon-allow-intersection"
|
|
2306
2401
|
];
|
|
2307
2402
|
}
|
|
2308
|
-
attributeChangedCallback(e, o,
|
|
2309
|
-
switch (this._logger.debug("attributeChanged", { name: e, value:
|
|
2403
|
+
attributeChangedCallback(e, o, r) {
|
|
2404
|
+
switch (this._logger.debug("attributeChanged", { name: e, value: r }), e) {
|
|
2310
2405
|
case "latitude":
|
|
2311
|
-
this._latitude = this._coerceNumber(
|
|
2406
|
+
this._latitude = this._coerceNumber(r, 0);
|
|
2312
2407
|
break;
|
|
2313
2408
|
case "longitude":
|
|
2314
|
-
this._longitude = this._coerceNumber(
|
|
2409
|
+
this._longitude = this._coerceNumber(r, 0);
|
|
2315
2410
|
break;
|
|
2316
2411
|
case "zoom":
|
|
2317
|
-
this._zoom = this._coerceNumber(
|
|
2412
|
+
this._zoom = this._coerceNumber(r, 2);
|
|
2318
2413
|
break;
|
|
2319
2414
|
case "min-zoom":
|
|
2320
|
-
this._minZoom =
|
|
2415
|
+
this._minZoom = r != null ? this._coerceNumber(r) : void 0;
|
|
2321
2416
|
break;
|
|
2322
2417
|
case "max-zoom":
|
|
2323
|
-
this._maxZoom =
|
|
2418
|
+
this._maxZoom = r != null ? this._coerceNumber(r) : void 0;
|
|
2324
2419
|
break;
|
|
2325
2420
|
case "tile-url":
|
|
2326
|
-
this._tileUrl =
|
|
2421
|
+
this._tileUrl = r != null ? r : "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", this._controller && this._updateTileLayer();
|
|
2327
2422
|
break;
|
|
2328
2423
|
case "tile-attribution":
|
|
2329
|
-
this._tileAttribution =
|
|
2424
|
+
this._tileAttribution = r != null ? r : void 0, this._controller && this._updateTileLayer();
|
|
2425
|
+
break;
|
|
2426
|
+
case "tile-provider":
|
|
2427
|
+
this._tileProvider = this._normalizeText(r, {
|
|
2428
|
+
lowercase: !0
|
|
2429
|
+
}), this._controller && this._updateTileLayer();
|
|
2430
|
+
break;
|
|
2431
|
+
case "tile-style":
|
|
2432
|
+
this._tileStyle = this._normalizeText(r), this._controller && this._updateTileLayer();
|
|
2433
|
+
break;
|
|
2434
|
+
case "api-key":
|
|
2435
|
+
case "here-api-key":
|
|
2436
|
+
this._syncApiKeyFromAttributes(), this._controller && this._updateTileLayer();
|
|
2330
2437
|
break;
|
|
2331
2438
|
case "theme-url":
|
|
2332
|
-
this._themeUrl =
|
|
2439
|
+
this._themeUrl = r != null ? r : void 0, this.isConnected && this._applyThemeStyles();
|
|
2333
2440
|
break;
|
|
2334
2441
|
case "read-only":
|
|
2335
|
-
this._readOnly =
|
|
2442
|
+
this._readOnly = r !== null;
|
|
2336
2443
|
break;
|
|
2337
2444
|
case "log-level":
|
|
2338
|
-
this._logLevel =
|
|
2445
|
+
this._logLevel = r != null ? r : this._logLevel, this._logger.setLevel(this._logLevel);
|
|
2339
2446
|
break;
|
|
2340
2447
|
case "dev-overlay":
|
|
2341
|
-
this._devOverlay =
|
|
2448
|
+
this._devOverlay = r !== null;
|
|
2342
2449
|
break;
|
|
2343
2450
|
case "polygon-allow-intersection":
|
|
2344
|
-
this._polygonAllowIntersection =
|
|
2451
|
+
this._polygonAllowIntersection = r !== null;
|
|
2345
2452
|
break;
|
|
2346
2453
|
case "prefer-canvas":
|
|
2347
|
-
this._preferCanvas =
|
|
2454
|
+
this._preferCanvas = r !== null;
|
|
2348
2455
|
break;
|
|
2349
2456
|
case "use-external-leaflet":
|
|
2350
|
-
this._useExternalLeaflet =
|
|
2457
|
+
this._useExternalLeaflet = r !== null;
|
|
2351
2458
|
break;
|
|
2352
2459
|
case "skip-leaflet-styles":
|
|
2353
|
-
this._skipLeafletStyles =
|
|
2460
|
+
this._skipLeafletStyles = r !== null;
|
|
2354
2461
|
break;
|
|
2355
2462
|
}
|
|
2356
2463
|
this._controller && (e === "latitude" || e === "longitude" || e === "zoom" ? this._controller.setView(
|
|
2357
2464
|
this._latitude,
|
|
2358
2465
|
this._longitude,
|
|
2359
2466
|
this._zoom
|
|
2360
|
-
) : (e === "
|
|
2467
|
+
) : (e === "min-zoom" || e === "max-zoom" || e === "read-only" || e === "dev-overlay" || e === "log-level" || e === "prefer-canvas" || e === "use-external-leaflet" || e === "skip-leaflet-styles" || e.startsWith("draw-") || e === "edit-features" || e === "delete-features") && this._controller.destroy().then(() => this._controller.init()));
|
|
2468
|
+
}
|
|
2469
|
+
_updateTileLayer() {
|
|
2470
|
+
var o, r, a, i;
|
|
2471
|
+
if (!this._controller)
|
|
2472
|
+
return;
|
|
2473
|
+
const e = this._controller;
|
|
2474
|
+
if (typeof e.setTileLayer != "function") {
|
|
2475
|
+
this._logger.warn("setTileLayer is not available on MapController yet");
|
|
2476
|
+
return;
|
|
2477
|
+
}
|
|
2478
|
+
try {
|
|
2479
|
+
if (this._tileProvider) {
|
|
2480
|
+
const n = this._tileProvider, l = {
|
|
2481
|
+
provider: n,
|
|
2482
|
+
style: this._tileStyle,
|
|
2483
|
+
apiKey: this._apiKey,
|
|
2484
|
+
attribution: this._tileAttribution
|
|
2485
|
+
}, c = bt(l);
|
|
2486
|
+
if (!c.valid) {
|
|
2487
|
+
const p = (o = c.error) != null && o.toLowerCase().includes("api key") ? "missing_api_key" : "tile_load_failed";
|
|
2488
|
+
this._handleTileProviderError(
|
|
2489
|
+
p,
|
|
2490
|
+
(r = c.error) != null ? r : "Invalid tile provider configuration",
|
|
2491
|
+
n
|
|
2492
|
+
);
|
|
2493
|
+
return;
|
|
2494
|
+
}
|
|
2495
|
+
const d = At(l), u = this._activeTileProvider;
|
|
2496
|
+
e.setTileLayer(d, {
|
|
2497
|
+
onTileError: (p) => {
|
|
2498
|
+
if (this._tileProvider !== n) return;
|
|
2499
|
+
const f = this._describeTileLayerError(p, n), g = n === "here" ? this._resolveHereTileLayerErrorCode(f) : "tile_load_failed";
|
|
2500
|
+
this._handleTileProviderError(g, f, n);
|
|
2501
|
+
}
|
|
2502
|
+
}), this._activeTileProvider = n, this._emitTileProviderChanged(
|
|
2503
|
+
n,
|
|
2504
|
+
this._tileStyle,
|
|
2505
|
+
u
|
|
2506
|
+
);
|
|
2507
|
+
return;
|
|
2508
|
+
}
|
|
2509
|
+
e.setTileLayer({
|
|
2510
|
+
urlTemplate: this._tileUrl,
|
|
2511
|
+
attribution: (a = this._tileAttribution) != null ? a : "",
|
|
2512
|
+
maxZoom: this._maxZoom,
|
|
2513
|
+
subdomains: ["a", "b", "c"]
|
|
2514
|
+
}), this._activeTileProvider = "tile-url";
|
|
2515
|
+
} catch (n) {
|
|
2516
|
+
const l = this._resolveTileProviderErrorCode(n);
|
|
2517
|
+
this._logger.error("Failed to update tile layer", { error: n, code: l }), this._handleTileProviderError(
|
|
2518
|
+
l,
|
|
2519
|
+
n instanceof Error ? n.message : "Unknown tile layer error",
|
|
2520
|
+
(i = this._tileProvider) != null ? i : "unknown"
|
|
2521
|
+
);
|
|
2522
|
+
}
|
|
2523
|
+
}
|
|
2524
|
+
_handleTileProviderError(e, o, r) {
|
|
2525
|
+
this._logger.error(`Tile provider error (${e}): ${o}`), this.dispatchEvent(
|
|
2526
|
+
new CustomEvent("tile-provider-error", {
|
|
2527
|
+
bubbles: !0,
|
|
2528
|
+
detail: {
|
|
2529
|
+
code: e,
|
|
2530
|
+
message: o,
|
|
2531
|
+
provider: r,
|
|
2532
|
+
timestamp: Date.now()
|
|
2533
|
+
}
|
|
2534
|
+
})
|
|
2535
|
+
);
|
|
2536
|
+
const a = this._controller;
|
|
2537
|
+
typeof a.setTileLayer == "function" && (a.setTileLayer({
|
|
2538
|
+
urlTemplate: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
|
2539
|
+
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
2540
|
+
maxZoom: 19,
|
|
2541
|
+
subdomains: ["a", "b", "c"]
|
|
2542
|
+
}), this._activeTileProvider = "osm");
|
|
2543
|
+
}
|
|
2544
|
+
_emitTileProviderChanged(e, o, r) {
|
|
2545
|
+
this.dispatchEvent(
|
|
2546
|
+
new CustomEvent("tile-provider-changed", {
|
|
2547
|
+
bubbles: !0,
|
|
2548
|
+
detail: {
|
|
2549
|
+
provider: e,
|
|
2550
|
+
style: o,
|
|
2551
|
+
previousProvider: r,
|
|
2552
|
+
timestamp: Date.now()
|
|
2553
|
+
}
|
|
2554
|
+
})
|
|
2555
|
+
);
|
|
2361
2556
|
}
|
|
2362
2557
|
// Properties (reflect attributes)
|
|
2363
2558
|
get latitude() {
|
|
@@ -2394,13 +2589,36 @@ class de extends HTMLElement {
|
|
|
2394
2589
|
return this._tileUrl;
|
|
2395
2590
|
}
|
|
2396
2591
|
set tileUrl(e) {
|
|
2397
|
-
this._tileUrl = e, this._reflect("tile-url", e);
|
|
2592
|
+
this._tileUrl = e, this._reflect("tile-url", e), this._controller && this._updateTileLayer();
|
|
2593
|
+
}
|
|
2594
|
+
get tileProvider() {
|
|
2595
|
+
return this._tileProvider;
|
|
2596
|
+
}
|
|
2597
|
+
set tileProvider(e) {
|
|
2598
|
+
var o;
|
|
2599
|
+
this._tileProvider = this._normalizeText(e != null ? e : null, {
|
|
2600
|
+
lowercase: !0
|
|
2601
|
+
}), this._reflect("tile-provider", (o = this._tileProvider) != null ? o : null), this._controller && this._updateTileLayer();
|
|
2602
|
+
}
|
|
2603
|
+
get tileStyle() {
|
|
2604
|
+
return this._tileStyle;
|
|
2605
|
+
}
|
|
2606
|
+
set tileStyle(e) {
|
|
2607
|
+
var o;
|
|
2608
|
+
this._tileStyle = this._normalizeText(e != null ? e : null), this._reflect("tile-style", (o = this._tileStyle) != null ? o : null), this._controller && this._updateTileLayer();
|
|
2609
|
+
}
|
|
2610
|
+
get apiKey() {
|
|
2611
|
+
return this._apiKey;
|
|
2612
|
+
}
|
|
2613
|
+
set apiKey(e) {
|
|
2614
|
+
var o;
|
|
2615
|
+
this._apiKey = this._normalizeText(e != null ? e : null), this._reflect("api-key", (o = this._apiKey) != null ? o : null), this.hasAttribute("here-api-key") && this.removeAttribute("here-api-key"), this._controller && this._updateTileLayer();
|
|
2398
2616
|
}
|
|
2399
2617
|
get tileAttribution() {
|
|
2400
2618
|
return this._tileAttribution;
|
|
2401
2619
|
}
|
|
2402
2620
|
set tileAttribution(e) {
|
|
2403
|
-
this._tileAttribution = e, this._reflect("tile-attribution", e != null ? e : null);
|
|
2621
|
+
this._tileAttribution = e, this._reflect("tile-attribution", e != null ? e : null), this._controller && this._updateTileLayer();
|
|
2404
2622
|
}
|
|
2405
2623
|
get readOnly() {
|
|
2406
2624
|
return this._readOnly;
|
|
@@ -2455,23 +2673,23 @@ class de extends HTMLElement {
|
|
|
2455
2673
|
return this._logger.debug("getGeoJSON"), this._controller ? this._controller.getGeoJSON() : { type: "FeatureCollection", features: [] };
|
|
2456
2674
|
}
|
|
2457
2675
|
async loadGeoJSON(e) {
|
|
2458
|
-
var
|
|
2459
|
-
if (this._logger.debug("loadGeoJSON", { features: (
|
|
2676
|
+
var a, i;
|
|
2677
|
+
if (this._logger.debug("loadGeoJSON", { features: (i = (a = e == null ? void 0 : e.features) == null ? void 0 : a.length) != null ? i : 0 }), !this._controller) return;
|
|
2460
2678
|
const o = { fc: e, mode: "load" };
|
|
2461
2679
|
this.dispatchEvent(new CustomEvent("leaflet-draw:ingest", { detail: o }));
|
|
2462
|
-
const
|
|
2463
|
-
await this._controller.loadGeoJSON(
|
|
2680
|
+
const r = o.fc && o.fc.type === "FeatureCollection" ? o.fc : e;
|
|
2681
|
+
await this._controller.loadGeoJSON(r, !1);
|
|
2464
2682
|
}
|
|
2465
2683
|
async clearLayers() {
|
|
2466
2684
|
this._logger.debug("clearLayers"), this._controller && await this._controller.clearLayers();
|
|
2467
2685
|
}
|
|
2468
2686
|
async addFeatures(e) {
|
|
2469
|
-
var
|
|
2470
|
-
if (this._logger.debug("addFeatures", { count: (
|
|
2687
|
+
var a, i;
|
|
2688
|
+
if (this._logger.debug("addFeatures", { count: (i = (a = e == null ? void 0 : e.features) == null ? void 0 : a.length) != null ? i : 0 }), !this._controller) return [];
|
|
2471
2689
|
const o = { fc: e, mode: "add" };
|
|
2472
2690
|
this.dispatchEvent(new CustomEvent("leaflet-draw:ingest", { detail: o }));
|
|
2473
|
-
const
|
|
2474
|
-
return this._controller.addFeatures(
|
|
2691
|
+
const r = o.fc && o.fc.type === "FeatureCollection" ? o.fc : e;
|
|
2692
|
+
return this._controller.addFeatures(r);
|
|
2475
2693
|
}
|
|
2476
2694
|
async updateFeature(e, o) {
|
|
2477
2695
|
this._logger.debug("updateFeature", { id: e }), this._controller && await this._controller.updateFeature(e, o);
|
|
@@ -2490,8 +2708,8 @@ class de extends HTMLElement {
|
|
|
2490
2708
|
typeof o == "number" ? o : 0.05
|
|
2491
2709
|
);
|
|
2492
2710
|
}
|
|
2493
|
-
async setView(e, o,
|
|
2494
|
-
this._logger.debug("setView", { lat: e, lng: o, zoom:
|
|
2711
|
+
async setView(e, o, r) {
|
|
2712
|
+
this._logger.debug("setView", { lat: e, lng: o, zoom: r }), this.latitude = e, this.longitude = o, typeof r == "number" && (this.zoom = r), this._controller && await this._controller.setView(e, o, r);
|
|
2495
2713
|
}
|
|
2496
2714
|
async exportGeoJSON() {
|
|
2497
2715
|
if (this._logger.debug("exportGeoJSON"), !this._controller) return { type: "FeatureCollection", features: [] };
|
|
@@ -2507,16 +2725,16 @@ class de extends HTMLElement {
|
|
|
2507
2725
|
*/
|
|
2508
2726
|
async mergePolygons(e) {
|
|
2509
2727
|
if (this._logger.debug("mergePolygons"), !this._controller) return null;
|
|
2510
|
-
const
|
|
2511
|
-
if (
|
|
2512
|
-
const
|
|
2513
|
-
id:
|
|
2514
|
-
mergedFeatureCount:
|
|
2515
|
-
geoJSON:
|
|
2728
|
+
const r = (await this._controller.getGeoJSON()).features.length, a = await this._controller.mergeVisiblePolygons(e);
|
|
2729
|
+
if (a) {
|
|
2730
|
+
const i = await this._controller.getGeoJSON(), n = {
|
|
2731
|
+
id: a,
|
|
2732
|
+
mergedFeatureCount: r - i.features.length + 1,
|
|
2733
|
+
geoJSON: i
|
|
2516
2734
|
};
|
|
2517
|
-
this.dispatchEvent(new CustomEvent("leaflet-draw:merged", { detail:
|
|
2735
|
+
this.dispatchEvent(new CustomEvent("leaflet-draw:merged", { detail: n }));
|
|
2518
2736
|
}
|
|
2519
|
-
return
|
|
2737
|
+
return a;
|
|
2520
2738
|
}
|
|
2521
2739
|
async setMeasurementUnits(e) {
|
|
2522
2740
|
this._logger.debug("setMeasurementUnits", { system: e }), this._controller && this._controller.setRulerUnits(e);
|
|
@@ -2525,38 +2743,38 @@ class de extends HTMLElement {
|
|
|
2525
2743
|
if (this._logger.debug("loadGeoJSONFromUrl", { url: e }), !this._controller) return;
|
|
2526
2744
|
const o = await fetch(e, { headers: { Accept: "application/json" } });
|
|
2527
2745
|
if (!o.ok) {
|
|
2528
|
-
const
|
|
2746
|
+
const n = new Error(
|
|
2529
2747
|
`Failed to fetch GeoJSON from ${e}: ${o.status} ${o.statusText}`
|
|
2530
2748
|
);
|
|
2531
2749
|
throw this.dispatchEvent(
|
|
2532
2750
|
new CustomEvent("leaflet-draw:error", {
|
|
2533
|
-
detail: { message:
|
|
2751
|
+
detail: { message: n.message, cause: n }
|
|
2534
2752
|
})
|
|
2535
|
-
),
|
|
2753
|
+
), n;
|
|
2536
2754
|
}
|
|
2537
|
-
const
|
|
2538
|
-
this.dispatchEvent(new CustomEvent("leaflet-draw:ingest", { detail:
|
|
2539
|
-
const
|
|
2540
|
-
await this._controller.loadGeoJSON(
|
|
2755
|
+
const r = await o.json(), a = { fc: r, mode: "load" };
|
|
2756
|
+
this.dispatchEvent(new CustomEvent("leaflet-draw:ingest", { detail: a }));
|
|
2757
|
+
const i = a.fc && a.fc.type === "FeatureCollection" ? a.fc : r;
|
|
2758
|
+
await this._controller.loadGeoJSON(i, !0);
|
|
2541
2759
|
}
|
|
2542
2760
|
async loadGeoJSONFromText(e) {
|
|
2543
|
-
var
|
|
2544
|
-
if (this._logger.debug("loadGeoJSONFromText", { length: (
|
|
2761
|
+
var i;
|
|
2762
|
+
if (this._logger.debug("loadGeoJSONFromText", { length: (i = e == null ? void 0 : e.length) != null ? i : 0 }), !this._controller) return;
|
|
2545
2763
|
let o;
|
|
2546
2764
|
try {
|
|
2547
2765
|
o = JSON.parse(e);
|
|
2548
|
-
} catch (
|
|
2766
|
+
} catch (n) {
|
|
2549
2767
|
const l = new Error("Failed to parse GeoJSON text");
|
|
2550
2768
|
throw this.dispatchEvent(
|
|
2551
2769
|
new CustomEvent("leaflet-draw:error", {
|
|
2552
|
-
detail: { message: l.message, cause:
|
|
2770
|
+
detail: { message: l.message, cause: n }
|
|
2553
2771
|
})
|
|
2554
2772
|
), l;
|
|
2555
2773
|
}
|
|
2556
|
-
const
|
|
2557
|
-
this.dispatchEvent(new CustomEvent("leaflet-draw:ingest", { detail:
|
|
2558
|
-
const
|
|
2559
|
-
await this._controller.loadGeoJSON(
|
|
2774
|
+
const r = { fc: o, mode: "load" };
|
|
2775
|
+
this.dispatchEvent(new CustomEvent("leaflet-draw:ingest", { detail: r }));
|
|
2776
|
+
const a = r.fc && r.fc.type === "FeatureCollection" ? r.fc : o;
|
|
2777
|
+
await this._controller.loadGeoJSON(a, !0);
|
|
2560
2778
|
}
|
|
2561
2779
|
// Helpers
|
|
2562
2780
|
_currentConfig() {
|
|
@@ -2579,24 +2797,53 @@ class de extends HTMLElement {
|
|
|
2579
2797
|
};
|
|
2580
2798
|
}
|
|
2581
2799
|
_applyThemeStyles() {
|
|
2582
|
-
var
|
|
2583
|
-
const e = (
|
|
2800
|
+
var r;
|
|
2801
|
+
const e = (r = this._themeUrl) == null ? void 0 : r.trim();
|
|
2584
2802
|
if (e) {
|
|
2585
2803
|
if (!this._themeLinkEl) {
|
|
2586
|
-
const
|
|
2587
|
-
|
|
2804
|
+
const a = document.createElement("link");
|
|
2805
|
+
a.setAttribute("rel", "stylesheet"), a.setAttribute("data-geokit-theme-url", "true"), this._root.appendChild(a), this._themeLinkEl = a;
|
|
2588
2806
|
}
|
|
2589
2807
|
this._themeLinkEl.getAttribute("href") !== e && this._themeLinkEl.setAttribute("href", e);
|
|
2590
2808
|
} else this._themeLinkEl && (this._themeLinkEl.remove(), this._themeLinkEl = null);
|
|
2591
2809
|
const o = this._themeCss;
|
|
2592
2810
|
if (o.trim().length > 0) {
|
|
2593
2811
|
if (!this._themeStyleEl) {
|
|
2594
|
-
const
|
|
2595
|
-
|
|
2812
|
+
const a = document.createElement("style");
|
|
2813
|
+
a.setAttribute("data-geokit-theme-css", "true"), this._root.appendChild(a), this._themeStyleEl = a;
|
|
2596
2814
|
}
|
|
2597
2815
|
this._themeStyleEl.textContent !== o && (this._themeStyleEl.textContent = o);
|
|
2598
2816
|
} else this._themeStyleEl && (this._themeStyleEl.remove(), this._themeStyleEl = null);
|
|
2599
2817
|
}
|
|
2818
|
+
_syncApiKeyFromAttributes() {
|
|
2819
|
+
const e = this._normalizeText(this.getAttribute("api-key")), o = this._normalizeText(this.getAttribute("here-api-key"));
|
|
2820
|
+
this._apiKey = e != null ? e : o;
|
|
2821
|
+
}
|
|
2822
|
+
_normalizeText(e, o) {
|
|
2823
|
+
if (typeof e != "string") return;
|
|
2824
|
+
const r = e.trim();
|
|
2825
|
+
if (r)
|
|
2826
|
+
return o != null && o.lowercase ? r.toLowerCase() : r;
|
|
2827
|
+
}
|
|
2828
|
+
_resolveTileProviderErrorCode(e) {
|
|
2829
|
+
return e instanceof Error && e.message.toLowerCase().includes("unknown tile provider") ? "unknown_provider" : "tile_load_failed";
|
|
2830
|
+
}
|
|
2831
|
+
_resolveHereTileLayerErrorCode(e) {
|
|
2832
|
+
const o = e.toLowerCase();
|
|
2833
|
+
return o.includes("permission") || o.includes("forbidden") || o.includes("403") || o.includes("unauthorized") || o.includes("not authorized") || o.includes("not authorised") || o.includes("access denied") ? "permission_denied" : "invalid_api_key";
|
|
2834
|
+
}
|
|
2835
|
+
_describeTileLayerError(e, o) {
|
|
2836
|
+
if (e && typeof e == "object" && "error" in e && e.error instanceof Error)
|
|
2837
|
+
return e.error.message;
|
|
2838
|
+
if (e instanceof Error && e.message)
|
|
2839
|
+
return e.message;
|
|
2840
|
+
if (e && typeof e == "object" && "message" in e && typeof e.message == "string") {
|
|
2841
|
+
const r = e.message.trim();
|
|
2842
|
+
if (r.length > 0)
|
|
2843
|
+
return r;
|
|
2844
|
+
}
|
|
2845
|
+
return o === "here" ? `Failed to load HERE tiles; verify API key, project permissions, and allowed localhost origin/referrer.${this._tileStyle === "satellite.day" ? " If satellite.day fails, try lite.day." : ""}` : "Failed to load tile layer";
|
|
2846
|
+
}
|
|
2600
2847
|
_reflect(e, o) {
|
|
2601
2848
|
o === null ? this.removeAttribute(e) : this.getAttribute(e) !== o && this.setAttribute(e, o);
|
|
2602
2849
|
}
|
|
@@ -2605,19 +2852,19 @@ class de extends HTMLElement {
|
|
|
2605
2852
|
}
|
|
2606
2853
|
_coerceNumber(e, o) {
|
|
2607
2854
|
if (e == null) return o != null ? o : NaN;
|
|
2608
|
-
const
|
|
2609
|
-
return Number.isFinite(
|
|
2855
|
+
const r = Number(e);
|
|
2856
|
+
return Number.isFinite(r) ? r : o != null ? o : NaN;
|
|
2610
2857
|
}
|
|
2611
2858
|
}
|
|
2612
|
-
const
|
|
2613
|
-
customElements.get(
|
|
2614
|
-
const
|
|
2615
|
-
if (!customElements.get(
|
|
2616
|
-
class s extends
|
|
2859
|
+
const ne = "leaflet-geokit";
|
|
2860
|
+
customElements.get(ne) || customElements.define(ne, fe);
|
|
2861
|
+
const se = "leaflet-draw-map";
|
|
2862
|
+
if (!customElements.get(se)) {
|
|
2863
|
+
class s extends fe {
|
|
2617
2864
|
}
|
|
2618
|
-
customElements.define(
|
|
2865
|
+
customElements.define(se, s);
|
|
2619
2866
|
}
|
|
2620
2867
|
export {
|
|
2621
|
-
|
|
2868
|
+
fe as LeafletDrawMapElement
|
|
2622
2869
|
};
|
|
2623
|
-
//# sourceMappingURL=index-
|
|
2870
|
+
//# sourceMappingURL=index-DagV_wwR.js.map
|