@richpods/tiny-geojson-tool 0.1.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.
@@ -0,0 +1,1961 @@
1
+ import { ref as F, computed as I, defineComponent as Z, watch as R, onMounted as a1, onUnmounted as u1, openBlock as k, createElementBlock as b, Fragment as z, renderList as o1, createElementVNode as r, normalizeClass as q, createStaticVNode as d1, createCommentVNode as D, normalizeStyle as G, toDisplayString as x, createTextVNode as V, withDirectives as C1, vModelText as L1, nextTick as _1, createVNode as K, useModel as A1, mergeModels as S1 } from "vue";
2
+ import U, { LngLatBounds as V1, Popup as p1 } from "maplibre-gl";
3
+ import { Protocol as g1 } from "pmtiles";
4
+ const T1 = {
5
+ toolSelect: "Select",
6
+ toolPoint: "Point",
7
+ toolMarker: "Marker",
8
+ toolLine: "Line",
9
+ toolPolygon: "Polygon",
10
+ toolEraser: "Eraser",
11
+ propTitle: "Title",
12
+ propDescription: "Description",
13
+ propFillColor: "Fill color",
14
+ propFillOpacity: "Fill opacity",
15
+ propStrokeColor: "Stroke color",
16
+ propStrokeOpacity: "Stroke opacity",
17
+ propStrokeWidth: "Stroke width",
18
+ propCircleRadius: "Radius",
19
+ propPointColor: "Color",
20
+ propMarkerColor: "Marker color",
21
+ propMarkerSize: "Marker size",
22
+ propSizeSmall: "Small",
23
+ propSizeMedium: "Medium",
24
+ propSizeLarge: "Large",
25
+ propIcon: "Icon",
26
+ propIconRemove: "Remove icon",
27
+ propIconNone: "None",
28
+ propIconSearch: "Search icons...",
29
+ propIconNoResults: "No icons found",
30
+ propLabel: "Label",
31
+ propLabelPosition: "Label position",
32
+ propPositionTop: "Top",
33
+ propPositionBottom: "Bottom",
34
+ propPositionLeft: "Left",
35
+ propPositionRight: "Right",
36
+ layerPanelTitle: "Layers",
37
+ layerPanelEmpty: "Use the toolbar to add features to the map.",
38
+ layerDelete: "Delete",
39
+ layerPoint: "Point",
40
+ layerMarker: "Marker",
41
+ layerLine: "Line",
42
+ layerPolygon: "Polygon"
43
+ }, v1 = 10, m1 = [0, 20], f1 = 2, P = {
44
+ fill: "#555555",
45
+ fillOpacity: 0.6,
46
+ stroke: "#555555",
47
+ strokeOpacity: 1,
48
+ strokeWidth: 2,
49
+ markerColor: "#7e7e7e",
50
+ markerSize: "medium",
51
+ circleRadius: 8
52
+ }, X = {
53
+ small: 0.66,
54
+ medium: 1,
55
+ large: 1.5
56
+ }, P1 = {
57
+ fill: "editor-fill",
58
+ line: "editor-line",
59
+ points: "editor-points",
60
+ symbols: "editor-symbols",
61
+ labels: "editor-labels",
62
+ vertices: "editor-vertices"
63
+ }, H = "editor-geojson", i1 = "drawing-temp", s1 = "drawing-temp-line", c1 = "drawing-temp-vertices";
64
+ function y1(e) {
65
+ function i() {
66
+ return {
67
+ version: 8,
68
+ name: "Shortbread PMTiles",
69
+ sources: {
70
+ "versatiles-shortbread": {
71
+ type: "vector",
72
+ url: `pmtiles://${e}`
73
+ }
74
+ },
75
+ layers: [
76
+ {
77
+ id: "background",
78
+ type: "background",
79
+ paint: { "background-color": "#f0ede9" }
80
+ },
81
+ {
82
+ id: "ocean",
83
+ type: "fill",
84
+ source: "versatiles-shortbread",
85
+ "source-layer": "ocean",
86
+ paint: { "fill-color": "#c2dae0" }
87
+ },
88
+ {
89
+ id: "water",
90
+ type: "fill",
91
+ source: "versatiles-shortbread",
92
+ "source-layer": "water_polygons",
93
+ paint: { "fill-color": "#c2dae0" }
94
+ },
95
+ {
96
+ id: "land",
97
+ type: "fill",
98
+ source: "versatiles-shortbread",
99
+ "source-layer": "land",
100
+ paint: { "fill-color": "#f0ede9" }
101
+ },
102
+ {
103
+ id: "park",
104
+ type: "fill",
105
+ source: "versatiles-shortbread",
106
+ "source-layer": "land",
107
+ filter: ["in", "kind", "park", "nature_reserve", "national_park"],
108
+ paint: { "fill-color": "#d4e8d0", "fill-opacity": 0.5 }
109
+ },
110
+ {
111
+ id: "roads-highway",
112
+ type: "line",
113
+ source: "versatiles-shortbread",
114
+ "source-layer": "streets",
115
+ filter: ["in", "kind", "motorway", "trunk"],
116
+ paint: {
117
+ "line-color": "#f5c97e",
118
+ "line-width": ["interpolate", ["linear"], ["zoom"], 5, 0.5, 14, 4]
119
+ }
120
+ },
121
+ {
122
+ id: "roads-major",
123
+ type: "line",
124
+ source: "versatiles-shortbread",
125
+ "source-layer": "streets",
126
+ filter: ["in", "kind", "primary", "secondary"],
127
+ minzoom: 7,
128
+ paint: {
129
+ "line-color": "#e0d8c8",
130
+ "line-width": ["interpolate", ["linear"], ["zoom"], 7, 0.3, 14, 3]
131
+ }
132
+ },
133
+ {
134
+ id: "roads-minor",
135
+ type: "line",
136
+ source: "versatiles-shortbread",
137
+ "source-layer": "streets",
138
+ filter: ["in", "kind", "tertiary", "residential", "living_street", "unclassified"],
139
+ minzoom: 11,
140
+ paint: {
141
+ "line-color": "#e8e0d4",
142
+ "line-width": ["interpolate", ["linear"], ["zoom"], 11, 0.3, 16, 2]
143
+ }
144
+ },
145
+ {
146
+ id: "buildings",
147
+ type: "fill",
148
+ source: "versatiles-shortbread",
149
+ "source-layer": "buildings",
150
+ minzoom: 14,
151
+ paint: {
152
+ "fill-color": "#ddd8d0",
153
+ "fill-opacity": 0.6
154
+ }
155
+ },
156
+ {
157
+ id: "boundaries-country",
158
+ type: "line",
159
+ source: "versatiles-shortbread",
160
+ "source-layer": "boundaries",
161
+ filter: ["==", "admin_level", 2],
162
+ paint: {
163
+ "line-color": "#a08080",
164
+ "line-width": 1,
165
+ "line-dasharray": [4, 2]
166
+ }
167
+ },
168
+ {
169
+ id: "labels-country",
170
+ type: "symbol",
171
+ source: "versatiles-shortbread",
172
+ "source-layer": "place_labels",
173
+ filter: ["==", "kind", "country"],
174
+ layout: {
175
+ "text-field": "{name}",
176
+ "text-size": ["interpolate", ["linear"], ["zoom"], 2, 10, 6, 16],
177
+ "text-max-width": 8
178
+ },
179
+ paint: {
180
+ "text-color": "#555",
181
+ "text-halo-color": "#fff",
182
+ "text-halo-width": 1.5
183
+ }
184
+ },
185
+ {
186
+ id: "labels-city",
187
+ type: "symbol",
188
+ source: "versatiles-shortbread",
189
+ "source-layer": "place_labels",
190
+ filter: ["in", "kind", "city", "town"],
191
+ minzoom: 5,
192
+ layout: {
193
+ "text-field": "{name}",
194
+ "text-size": ["interpolate", ["linear"], ["zoom"], 5, 10, 12, 14],
195
+ "text-max-width": 8
196
+ },
197
+ paint: {
198
+ "text-color": "#444",
199
+ "text-halo-color": "#fff",
200
+ "text-halo-width": 1.5
201
+ }
202
+ }
203
+ ]
204
+ };
205
+ }
206
+ return { getStyle: i };
207
+ }
208
+ const h1 = ["coalesce", ["get", "marker-size"], P.markerSize];
209
+ function E(e, i, a) {
210
+ return [
211
+ "match",
212
+ h1,
213
+ "small",
214
+ ["literal", e],
215
+ "large",
216
+ ["literal", a],
217
+ ["literal", i]
218
+ ];
219
+ }
220
+ function W(e, i) {
221
+ const a = ["==", ["get", "id"], e];
222
+ return i === "Polygon" ? [
223
+ {
224
+ id: `editor-fill-${e}`,
225
+ type: "fill",
226
+ source: H,
227
+ filter: a,
228
+ paint: {
229
+ "fill-color": ["coalesce", ["get", "fill"], P.fill],
230
+ "fill-opacity": ["coalesce", ["get", "fill-opacity"], P.fillOpacity]
231
+ }
232
+ },
233
+ {
234
+ id: `editor-line-${e}`,
235
+ type: "line",
236
+ source: H,
237
+ filter: a,
238
+ paint: {
239
+ "line-color": ["coalesce", ["get", "stroke"], P.stroke],
240
+ "line-opacity": [
241
+ "coalesce",
242
+ ["get", "stroke-opacity"],
243
+ P.strokeOpacity
244
+ ],
245
+ "line-width": ["coalesce", ["get", "stroke-width"], P.strokeWidth]
246
+ }
247
+ }
248
+ ] : i === "LineString" ? [
249
+ {
250
+ id: `editor-line-${e}`,
251
+ type: "line",
252
+ source: H,
253
+ filter: a,
254
+ paint: {
255
+ "line-color": ["coalesce", ["get", "stroke"], P.stroke],
256
+ "line-opacity": [
257
+ "coalesce",
258
+ ["get", "stroke-opacity"],
259
+ P.strokeOpacity
260
+ ],
261
+ "line-width": ["coalesce", ["get", "stroke-width"], P.strokeWidth]
262
+ }
263
+ }
264
+ ] : [
265
+ {
266
+ id: `editor-points-${e}`,
267
+ type: "circle",
268
+ source: H,
269
+ filter: ["all", a, ["!", ["has", "marker-symbol"]]],
270
+ paint: {
271
+ "circle-radius": ["coalesce", ["get", "circle-radius"], P.circleRadius],
272
+ "circle-color": ["coalesce", ["get", "fill"], P.fill],
273
+ "circle-opacity": ["coalesce", ["get", "fill-opacity"], P.fillOpacity],
274
+ "circle-stroke-width": ["coalesce", ["get", "stroke-width"], 2],
275
+ "circle-stroke-color": ["coalesce", ["get", "stroke"], "#ffffff"],
276
+ "circle-stroke-opacity": ["coalesce", ["get", "stroke-opacity"], 1]
277
+ }
278
+ },
279
+ {
280
+ id: `editor-symbols-${e}`,
281
+ type: "symbol",
282
+ source: H,
283
+ filter: ["all", a, ["has", "marker-symbol"]],
284
+ layout: {
285
+ "icon-image": ["get", "marker-symbol"],
286
+ "icon-size": [
287
+ "match",
288
+ h1,
289
+ "small",
290
+ X.small,
291
+ "large",
292
+ X.large,
293
+ X.medium
294
+ ],
295
+ "icon-allow-overlap": !0,
296
+ "icon-anchor": "bottom"
297
+ },
298
+ paint: {
299
+ "icon-color": ["coalesce", ["get", "marker-color"], P.markerColor]
300
+ }
301
+ },
302
+ {
303
+ id: `editor-labels-${e}`,
304
+ type: "symbol",
305
+ source: H,
306
+ filter: ["all", a, ["has", "marker-label"]],
307
+ layout: {
308
+ "text-field": ["get", "marker-label"],
309
+ "text-size": 13,
310
+ "text-anchor": [
311
+ "case",
312
+ ["==", ["get", "marker-label-position"], "bottom"],
313
+ "top",
314
+ ["==", ["get", "marker-label-position"], "left"],
315
+ "right",
316
+ ["==", ["get", "marker-label-position"], "right"],
317
+ "left",
318
+ "bottom"
319
+ ],
320
+ "text-offset": [
321
+ "case",
322
+ // top (default) — clear icon or circle above point
323
+ [
324
+ "all",
325
+ [
326
+ "any",
327
+ ["!", ["has", "marker-label-position"]],
328
+ ["==", ["get", "marker-label-position"], "top"]
329
+ ],
330
+ ["has", "marker-symbol"]
331
+ ],
332
+ E([0, -1.65], [0, -2.5], [0, -3.75]),
333
+ [
334
+ "any",
335
+ ["!", ["has", "marker-label-position"]],
336
+ ["==", ["get", "marker-label-position"], "top"]
337
+ ],
338
+ E([0, -0.55], [0, -0.8], [0, -1.2]),
339
+ // bottom — icon anchors at bottom so text is just below
340
+ [
341
+ "all",
342
+ ["==", ["get", "marker-label-position"], "bottom"],
343
+ ["has", "marker-symbol"]
344
+ ],
345
+ E([0, 0.25], [0, 0.4], [0, 0.6]),
346
+ ["==", ["get", "marker-label-position"], "bottom"],
347
+ E([0, 0.55], [0, 0.8], [0, 1.2]),
348
+ // left — shift horizontally + vertically to center on icon
349
+ [
350
+ "all",
351
+ ["==", ["get", "marker-label-position"], "left"],
352
+ ["has", "marker-symbol"]
353
+ ],
354
+ E([-0.3, -0.8], [-0.4, -1.2], [-0.6, -1.8]),
355
+ ["==", ["get", "marker-label-position"], "left"],
356
+ E([-0.3, 0], [-0.4, 0], [-0.6, 0]),
357
+ // right
358
+ [
359
+ "all",
360
+ ["==", ["get", "marker-label-position"], "right"],
361
+ ["has", "marker-symbol"]
362
+ ],
363
+ E([0.3, -0.8], [0.4, -1.2], [0.6, -1.8]),
364
+ ["==", ["get", "marker-label-position"], "right"],
365
+ E([0.3, 0], [0.4, 0], [0.6, 0]),
366
+ // fallback
367
+ E([0, -0.55], [0, -0.8], [0, -1.2])
368
+ ],
369
+ "text-allow-overlap": !0
370
+ },
371
+ paint: {
372
+ "text-color": "#333333",
373
+ "text-halo-color": "#ffffff",
374
+ "text-halo-width": 1.5
375
+ }
376
+ }
377
+ ];
378
+ }
379
+ function e1(e, i) {
380
+ return i === "Polygon" ? [`editor-fill-${e}`, `editor-line-${e}`] : i === "LineString" ? [`editor-line-${e}`] : [
381
+ `editor-points-${e}`,
382
+ `editor-symbols-${e}`,
383
+ `editor-labels-${e}`
384
+ ];
385
+ }
386
+ function Y(e) {
387
+ const i = [];
388
+ for (const a of e)
389
+ a.geomType === "Polygon" ? i.push(`editor-fill-${a.id}`, `editor-line-${a.id}`) : a.geomType === "LineString" ? i.push(`editor-line-${a.id}`) : i.push(`editor-points-${a.id}`, `editor-symbols-${a.id}`);
390
+ return i;
391
+ }
392
+ function B1(e) {
393
+ return {
394
+ id: P1.vertices,
395
+ type: "circle",
396
+ source: H,
397
+ filter: ["==", "id", e ?? ""],
398
+ paint: {
399
+ "circle-radius": 0,
400
+ "circle-color": "transparent"
401
+ }
402
+ };
403
+ }
404
+ function w1(e, i, a, o) {
405
+ const g = new Set(a.map((d) => d.id)), l = new Map(i.map((d) => [d.id, d.geomType]));
406
+ for (const d of i)
407
+ if (!g.has(d.id))
408
+ for (const v of e1(d.id, d.geomType))
409
+ e.getLayer(v) && e.removeLayer(v);
410
+ for (const d of a) {
411
+ const v = l.get(d.id);
412
+ if (v === void 0)
413
+ for (const m of W(d.id, d.geomType))
414
+ e.addLayer(m, o);
415
+ else if (v !== d.geomType) {
416
+ for (const m of e1(d.id, v))
417
+ e.getLayer(m) && e.removeLayer(m);
418
+ for (const m of W(d.id, d.geomType))
419
+ e.addLayer(m, o);
420
+ }
421
+ }
422
+ for (let d = a.length - 1; d >= 0; d--) {
423
+ const v = a[d];
424
+ for (const m of e1(v.id, v.geomType))
425
+ e.moveLayer(m, o);
426
+ }
427
+ }
428
+ function D1() {
429
+ return [
430
+ {
431
+ id: "drawing-temp-fill",
432
+ type: "fill",
433
+ source: "drawing-temp",
434
+ paint: {
435
+ "fill-color": P.fill,
436
+ "fill-opacity": 0.15
437
+ }
438
+ },
439
+ {
440
+ id: "drawing-temp-line",
441
+ type: "line",
442
+ source: "drawing-temp-line",
443
+ paint: {
444
+ "line-color": P.stroke,
445
+ "line-width": 2,
446
+ "line-dasharray": [3, 3]
447
+ }
448
+ },
449
+ {
450
+ id: "drawing-temp-vertices",
451
+ type: "circle",
452
+ source: "drawing-temp-vertices",
453
+ paint: {
454
+ "circle-radius": 5,
455
+ "circle-color": "#ffffff",
456
+ "circle-stroke-width": 2,
457
+ "circle-stroke-color": P.stroke
458
+ }
459
+ }
460
+ ];
461
+ }
462
+ const F1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M186.62 464H160a16 16 0 0 1-14.57-22.6l64.46-142.25L113.1 297l-35.3 42.77C71.07 348.23 65.7 352 52 352H34.08a17.66 17.66 0 0 1-14.7-7.06c-2.38-3.21-4.72-8.65-2.44-16.41l19.82-71c.15-.53.33-1.06.53-1.58a.4.4 0 0 0 0-.15 15 15 0 0 1-.53-1.59l-19.84-71.45c-2.15-7.61.2-12.93 2.56-16.06a16.83 16.83 0 0 1 13.6-6.7H52c10.23 0 20.16 4.59 26 12l34.57 42.05 97.32-1.44-64.44-142A16 16 0 0 1 160 48h26.91a25 25 0 0 1 19.35 9.8l125.05 152 57.77-1.52c4.23-.23 15.95-.31 18.66-.31C463 208 496 225.94 496 256c0 9.46-3.78 27-29.07 38.16-14.93 6.6-34.85 9.94-59.21 9.94-2.68 0-14.37-.08-18.66-.31l-57.76-1.54-125.36 152a25 25 0 0 1-19.32 9.75'/></svg>", I1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48m0 319.91a20 20 0 1 1 20-20 20 20 0 0 1-20 20m21.72-201.15-5.74 122a16 16 0 0 1-32 0l-5.74-121.94v-.05a21.74 21.74 0 1 1 43.44 0Z'/></svg>", z1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M424.11 192H360L268.8 70.4a16 16 0 0 0-25.6 0L152 192H87.89a32.57 32.57 0 0 0-32.62 32.44 30.3 30.3 0 0 0 1.31 9l46.27 163.14a50.72 50.72 0 0 0 48.84 36.91h208.62a51.21 51.21 0 0 0 49-36.86l46.33-163.36a15.6 15.6 0 0 0 .46-2.36l.53-4.93a13 13 0 0 0 .09-1.55A32.57 32.57 0 0 0 424.11 192M256 106.67 320 192H192Zm0 245a37.7 37.7 0 1 1 37.88-37.7A37.87 37.87 0 0 1 256 351.63Z'/></svg>", $1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m256 233.37 34.45-34.45a207.08 207.08 0 0 1-50.12-135.25c0-5 .19-10.05.54-15A207.1 207.1 0 0 0 120.67 98ZM313.14 176.23 391.33 98A207.07 207.07 0 0 0 273 48.8c-.41 4.9-.64 9.86-.64 14.87a175.25 175.25 0 0 0 40.78 112.56M335.77 198.86a175.25 175.25 0 0 0 112.56 40.81c5 0 10-.23 14.87-.64A207.07 207.07 0 0 0 414 120.67ZM176.23 313.14a175.23 175.23 0 0 0-112.56-40.81q-7.52 0-14.87.64A207.07 207.07 0 0 0 98 391.33ZM256 278.63l-34.45 34.45a207.08 207.08 0 0 1 50.12 135.25c0 5-.19 10.05-.54 15A207.06 207.06 0 0 0 391.33 414ZM448.33 271.67a207.08 207.08 0 0 1-135.25-50.12L278.63 256 414 391.33a207.1 207.1 0 0 0 49.39-120.2c-5.01.35-10.02.54-15.06.54M233.37 256 98 120.67a207.06 207.06 0 0 0-49.39 120.2c5-.35 10-.54 15-.54a207.08 207.08 0 0 1 135.25 50.12ZM120.67 414A207.07 207.07 0 0 0 239 463.2q.63-7.35.64-14.87a175.23 175.23 0 0 0-40.81-112.56Z'/></svg>", H1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M432 230.7a79.4 79.4 0 0 0-32-6.7H112a79.5 79.5 0 0 0-32 6.69A80.09 80.09 0 0 0 32 304v112a16 16 0 0 0 32 0v-8a8.1 8.1 0 0 1 8-8h368a8.1 8.1 0 0 1 8 8v8a16 16 0 0 0 32 0V304a80.09 80.09 0 0 0-48-73.3M376 80H136a56 56 0 0 0-56 56v72a4 4 0 0 0 5.11 3.84A95.5 95.5 0 0 1 112 208h4.23a4 4 0 0 0 4-3.55A32 32 0 0 1 152 176h56a32 32 0 0 1 31.8 28.45 4 4 0 0 0 4 3.55h24.46a4 4 0 0 0 4-3.55A32 32 0 0 1 304 176h56a32 32 0 0 1 31.8 28.45 4 4 0 0 0 4 3.55h4.2a95.5 95.5 0 0 1 26.89 3.85A4 4 0 0 0 432 208v-72a56 56 0 0 0-56-56'/></svg>", U1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M392 208h-24v-5.74A63.93 63.93 0 0 0 321.65 96a111 111 0 0 0-27.59-47.29A108.62 108.62 0 0 0 216 16c-29.91 0-57.78 12.28-79 34.68a56 56 0 0 0-67.51 77.54A63.91 63.91 0 0 0 80 231.39V440a56.06 56.06 0 0 0 56 56h176a56.06 56.06 0 0 0 56-56v-8h24a72.08 72.08 0 0 0 72-72v-80a72.08 72.08 0 0 0-72-72M176 416a16 16 0 0 1-32 0V256a16 16 0 0 1 32 0Zm64 0a16 16 0 0 1-32 0V256a16 16 0 0 1 32 0Zm64 0a16 16 0 0 1-32 0V256a16 16 0 0 1 32 0Zm16-224c-8.33 0-20.55-5.18-26.69-11.31A16 16 0 0 0 282 176H160a16 16 0 0 0-15 10.53c-6.83 18.68-23.6 21.47-33 21.47a32 32 0 0 1 0-64c.09 0 9.12.34 16.4 5.8a16 16 0 1 0 19.2-25.6A63.7 63.7 0 0 0 112 112a63.6 63.6 0 0 0-14 1.57A24 24 0 0 1 120 80a23.78 23.78 0 0 1 19.38 9.84 51.4 51.4 0 0 1 4.71 7.9A16 16 0 0 0 176 96c0-6.77-3.61-15.17-10.76-25-.46-.63-1-1.25-1.45-1.86C178.39 55.44 196.64 48 216 48a76.86 76.86 0 0 1 55.23 23.18A80.2 80.2 0 0 1 292.61 142a16 16 0 0 0 12.73 18.71 16.3 16.3 0 0 0 3 .28 16 16 0 0 0 15.7-13 112 112 0 0 0 1.96-19.42 32 32 0 0 1-6 63.43m112 168a40 40 0 0 1-40 40h-24V240h24a40 40 0 0 1 40 40Z'/></svg>", E1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M388 448a92 92 0 1 1 92-92 92.1 92.1 0 0 1-92 92m0-152a60 60 0 1 0 60 60 60.07 60.07 0 0 0-60-60M124 448a92 92 0 1 1 92-92 92.1 92.1 0 0 1-92 92m0-152a60 60 0 1 0 60 60 60.07 60.07 0 0 0-60-60M320 128a31.89 31.89 0 0 0 32-32.1A31.55 31.55 0 0 0 320.2 64a32 32 0 1 0-.2 64'/><path d='M367.55 192h-43.76a4 4 0 0 1-3.51-2.08l-31.74-58.17a31 31 0 0 0-49.38-7.75l-69.86 70.4a32.56 32.56 0 0 0-9.3 22.4c0 17.4 12.6 23.6 18.5 27.1 28.5 16.42 48.57 28.43 59.58 35.1a4 4 0 0 1 1.92 3.41v69.12c0 8.61 6.62 16 15.23 16.43A16 16 0 0 0 272 352v-86a16 16 0 0 0-6.66-13l-37-26.61a4 4 0 0 1-.58-6l42-44.79a4 4 0 0 1 6.42.79L298 215.77a16 16 0 0 0 14 8.23h56a16 16 0 0 0 16-16.77c-.42-8.61-7.84-15.23-16.45-15.23'/></svg>", R1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M416 473.14a6.83 6.83 0 0 0-3.57-6c-27.07-14.55-51.76-36.82-62.62-48a10.05 10.05 0 0 0-12.72-1.51c-50.33 32.42-111.61 32.44-161.95.05a10.09 10.09 0 0 0-12.82 1.56c-10.77 11.28-35.19 33.3-62.43 47.75a7.11 7.11 0 0 0-3.89 5.73 6.73 6.73 0 0 0 7.92 7.15c20.85-4.18 41-13.68 60.2-23.83a8.71 8.71 0 0 1 8-.06 185.14 185.14 0 0 0 167.81 0 8.82 8.82 0 0 1 8.09.06c19.1 10 39.22 19.59 60 23.8a6.73 6.73 0 0 0 8-6.71ZM476.71 246.91c-3.49-8.39-10.9-14.89-20.9-18.35L432 219.08V136a64 64 0 0 0-64-64h-32v-8a40 40 0 0 0-40-40h-80a40 40 0 0 0-40 40v8h-32a64 64 0 0 0-64 64v83.15l-23.58 9.39c-9.94 3.3-17.63 10-21.15 18.44-2.45 5.89-5.25 15-1.3 26.46l.1.3 46.66 119.44A23.33 23.33 0 0 0 102.58 408c.5 0 1 0 1.53-.05 31.32-2 56-17.27 72.6-31.61C200.42 396.81 228.31 408 256 408s55.43-11.2 79.14-31.7c16.59 14.36 41.3 29.67 72.61 31.65a23.36 23.36 0 0 0 23.37-14.74l46.65-119c3.28-8.09 2.9-17.76-1.06-27.3M269 154.21l-1.14-.4a39.53 39.53 0 0 0-23.73 0l-.58.18-126.07 50.23a4 4 0 0 1-5.48-3.72V136a32 32 0 0 1 32-32h224a32 32 0 0 1 32 32v64.44a4 4 0 0 1-5.48 3.72Z'/></svg>", O1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M400 32H112a48 48 0 0 0-48 48v320a47.9 47.9 0 0 0 16 35.74V454a26 26 0 0 0 26 26h28a26 26 0 0 0 26-26v-6h192v6a26 26 0 0 0 26 26h28a26 26 0 0 0 26-26v-18.26A47.9 47.9 0 0 0 448 400V80a48 48 0 0 0-48-48M147.47 399.82a32 32 0 1 1 28.35-28.35 32 32 0 0 1-28.35 28.35M236 288H112a16 16 0 0 1-16-16V144a16 16 0 0 1 16-16h124a4 4 0 0 1 4 4v152a4 4 0 0 1-4 4m20-192H112.46c-8.6 0-16-6.6-16.44-15.19A16 16 0 0 1 112 64h287.54c8.6 0 16 6.6 16.44 15.19A16 16 0 0 1 400 96zm20 32h124a16 16 0 0 1 16 16v128a16 16 0 0 1-16 16H276a4 4 0 0 1-4-4V132a4 4 0 0 1 4-4m60.18 243.47a32 32 0 1 1 28.35 28.35 32 32 0 0 1-28.35-28.35'/></svg>", Z1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M432 176H320V64a48 48 0 0 0-48-48H80a48 48 0 0 0-48 48v416a16 16 0 0 0 16 16h104a8 8 0 0 0 8-8v-71.55c0-8.61 6.62-16 15.23-16.43A16 16 0 0 1 192 416v72a8 8 0 0 0 8 8h264a16 16 0 0 0 16-16V224a48 48 0 0 0-48-48M98.08 431.87a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m80 240a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m80 320a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79m0-80a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79M444 464H320V208h112a16 16 0 0 1 16 16v236a4 4 0 0 1-4 4'/><path d='M400 400a16 16 0 1 0 16 16 16 16 0 0 0-16-16M400 320a16 16 0 1 0 16 16 16 16 0 0 0-16-16M400 240a16 16 0 1 0 16 16 16 16 0 0 0-16-16M336 400a16 16 0 1 0 16 16 16 16 0 0 0-16-16M336 320a16 16 0 1 0 16 16 16 16 0 0 0-16-16M336 240a16 16 0 1 0 16 16 16 16 0 0 0-16-16'/></svg>", N1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M432 64H96a16 16 0 0 0-16 16v192a96.11 96.11 0 0 0 96 96h112a96.11 96.11 0 0 0 96-96v-80h18a62.07 62.07 0 0 0 62-62V96a32 32 0 0 0-32-32m0 66a30 30 0 0 1-30 30h-18V96h48ZM400 400H64a16 16 0 0 0 0 32h336a16 16 0 0 0 0-32'/></svg>", q1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><circle cx='256' cy='272' r='64'/><path d='M432 144h-59c-3 0-6.72-1.94-9.62-5l-25.94-40.94a15.5 15.5 0 0 0-1.37-1.85C327.11 85.76 315 80 302 80h-92c-13 0-25.11 5.76-34.07 16.21a15.5 15.5 0 0 0-1.37 1.85l-25.94 41c-2.22 2.42-5.34 5-8.62 5v-8a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v8h-4a48.05 48.05 0 0 0-48 48V384a48.05 48.05 0 0 0 48 48h352a48.05 48.05 0 0 0 48-48V192a48.05 48.05 0 0 0-48-48M256 368a96 96 0 1 1 96-96 96.11 96.11 0 0 1-96 96'/></svg>", j1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M447.68 220.78a16 16 0 0 0-1-3.08l-37.78-88.16C400.19 109.17 379 96 354.89 96H157.11c-24.09 0-45.3 13.17-54 33.54L65.29 217.7A15.7 15.7 0 0 0 64 224v176a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h256v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V224a16 16 0 0 0-.32-3.22M144 320a32 32 0 1 1 32-32 32 32 0 0 1-32 32m224 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32M104.26 208l28.23-65.85C136.11 133.69 146 128 157.11 128h197.78c11.1 0 21 5.69 24.62 14.15L407.74 208Z'/></svg>", G1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><circle cx='176' cy='416' r='32'/><circle cx='400' cy='416' r='32'/><path d='M456.8 120.78a23.92 23.92 0 0 0-18.56-8.78H133.89l-6.13-34.78A16 16 0 0 0 112 64H48a16 16 0 0 0 0 32h50.58l45.66 258.78A16 16 0 0 0 160 368h256a16 16 0 0 0 0-32H173.42l-5.64-32h241.66A24.07 24.07 0 0 0 433 284.71l28.8-144a24 24 0 0 0-5-19.93'/></svg>", J1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M472 432h-48a24 24 0 0 1-24-24V104a24 24 0 0 1 24-24h48a24 24 0 0 1 24 24v304a24 24 0 0 1-24 24M344 432h-48a24 24 0 0 1-24-24V184a24 24 0 0 1 24-24h48a24 24 0 0 1 24 24v224a24 24 0 0 1-24 24M216 432h-48a24 24 0 0 1-24-24V248a24 24 0 0 1 24-24h48a24 24 0 0 1 24 24v160a24 24 0 0 1-24 24M88 432H40a24 24 0 0 1-24-24v-96a24 24 0 0 1 24-24h48a24 24 0 0 1 24 24v96a24 24 0 0 1-24 24'/></svg>", K1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48m108.25 138.29-134.4 160a16 16 0 0 1-12 5.71h-.27a16 16 0 0 1-11.89-5.3l-57.6-64a16 16 0 1 1 23.78-21.4l45.29 50.32 122.59-145.91a16 16 0 0 1 24.5 20.58'/></svg>", W1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48m75.31 260.69a16 16 0 1 1-22.62 22.62L256 278.63l-52.69 52.68a16 16 0 0 1-22.62-22.62L233.37 256l-52.68-52.69a16 16 0 0 1 22.62-22.62L256 233.37l52.69-52.68a16 16 0 0 1 22.62 22.62L278.63 256Z'/></svg>", Y1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M376 432H116c-32.37 0-60.23-8.57-80.59-24.77C12.24 388.78 0 361.39 0 328c0-57.57 42-90.58 87.56-100.75a16 16 0 0 0 12.12-12.39c7.68-36.68 24.45-68.15 49.18-92A153.57 153.57 0 0 1 256 80c35.5 0 68.24 11.69 94.68 33.8a156.24 156.24 0 0 1 42.05 56 16 16 0 0 0 11.37 9.16c27 5.61 51.07 17.33 69.18 33.85C498.61 235.88 512 267.42 512 304c0 36-14.38 68.88-40.49 92.59C446.36 419.43 412.44 432 376 432'/></svg>", Q1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><circle cx='256' cy='256' r='24'/><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48m105.07 113.33-46.88 117.2a64 64 0 0 1-35.66 35.66l-117.2 46.88a8 8 0 0 1-10.4-10.4l46.88-117.2a64 64 0 0 1 35.66-35.66l117.2-46.88a8 8 0 0 1 10.4 10.4'/></svg>", X1 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M512 256c0-16.54-14.27-46.76-45.61-74a207 207 0 0 0-60.28-36.12 3.15 3.15 0 0 0-3.93 1.56c-.15.29-.3.57-.47.86l-9.59 15.9a183.24 183.24 0 0 0 .07 183.78l.23.39 8.74 16a4 4 0 0 0 4.94 1.82C479.63 337.42 512 281.49 512 256m-93.92-.14a16 16 0 1 1 13.79-13.79 16 16 0 0 1-13.79 13.79'/><path d='M335.45 256a214.8 214.8 0 0 1 29.08-108l.12-.21 4.62-7.67a4 4 0 0 0-2.59-6 284 284 0 0 0-39.26-5.39 7.94 7.94 0 0 1-4.29-1.6c-19.28-14.66-57.5-40.3-96.46-46.89a16 16 0 0 0-18 20.18l10.62 37.17a4 4 0 0 1-2.42 4.84c-36.85 13.69-68.59 38.75-91.74 57.85a8 8 0 0 1-10.06.06q-4.72-3.75-9.69-7.39c-39.64-28.95-86.21-32.76-88.17-32.9a16 16 0 0 0-16.83 19.4c.42 1.93 9.19 40.69 31.7 71.61a8.09 8.09 0 0 1 0 9.55C9.57 291.52.8 330.29.38 332.22a16 16 0 0 0 16.83 19.4c2-.14 48.53-4 88.12-32.88q4.85-3.56 9.47-7.22a8 8 0 0 1 10.06.07c23.25 19.19 55.05 44.28 92 58a4 4 0 0 1 2.42 4.83l-10.66 37.18a16 16 0 0 0 18 20.18c17.16-2.9 51.88-12.86 96.05-46.83a8.15 8.15 0 0 1 4.36-1.65 287 287 0 0 0 39.22-5.3 4 4 0 0 0 2.69-5.83l-4.51-8.29A214.8 214.8 0 0 1 335.45 256'/></svg>", e0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M193.69 152.84a16 16 0 0 1 29.64 2.56l36.4 121.36 30-59.92a16 16 0 0 1 28.62 0L345.89 272h96.76A213.1 213.1 0 0 0 464 176.65C463.37 114.54 413.54 64 352.92 64c-48.09 0-80 29.54-96.92 51-16.88-21.49-48.83-51-96.92-51C98.46 64 48.63 114.54 48 176.65A211.1 211.1 0 0 0 56.93 240h93.18Z'/><path d='M321.69 295.16 304 259.78l-33.69 67.38A16 16 0 0 1 256 336q-.67 0-1.38-.06a16 16 0 0 1-14-11.34l-36.4-121.36-30 59.92A16 16 0 0 1 160 272H69.35q14 29.29 37.27 57.66c18.77 22.88 52.8 59.46 131.39 112.81a31.84 31.84 0 0 0 36 0c78.59-53.35 112.62-89.93 131.39-112.81a317 317 0 0 0 19-25.66H336a16 16 0 0 1-14.31-8.84M464 272h-21.35a260 260 0 0 1-18.25 32H464a16 16 0 0 0 0-32M48 240a16 16 0 0 0 0 32h21.35a225 225 0 0 1-12.42-32Z'/></svg>", t0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M80 480a16 16 0 0 1-16-16V68.13a24 24 0 0 1 11.9-20.72C88 40.38 112.38 32 160 32c37.21 0 78.83 14.71 115.55 27.68C305.12 70.13 333.05 80 352 80a183.8 183.8 0 0 0 71-14.5 18 18 0 0 1 25 16.58v219.36a20 20 0 0 1-12 18.31c-8.71 3.81-40.51 16.25-84 16.25-24.14 0-54.38-7.14-86.39-14.71C229.63 312.79 192.43 304 160 304c-36.87 0-55.74 5.58-64 9.11V464a16 16 0 0 1-16 16'/></svg>", a0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M394.23 197.56a300.4 300.4 0 0 0-53.37-90C301.2 61.65 249.05 32 208 32a16 16 0 0 0-15.48 20c13.87 53-14.88 97.07-45.31 143.72C122 234.36 96 274.27 96 320c0 88.22 71.78 160 160 160s160-71.78 160-160c0-43.3-7.32-84.49-21.77-122.44m-105.9 221.13C278 429.69 265.05 432 256 432s-22-2.31-32.33-13.31S208 390.24 208 368c0-25.14 8.82-44.28 17.34-62.78 4.95-10.74 10-21.67 13-33.37a8 8 0 0 1 12.49-4.51A126.5 126.5 0 0 1 275 292c18.17 24 29 52.42 29 76 0 22.24-5.42 39.77-15.67 50.69'/></svg>", o0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><circle cx='256' cy='256' r='48'/><path d='M475.93 303.91a67.49 67.49 0 0 0-44.34-115.53 5.2 5.2 0 0 1-4.58-3.21 5.21 5.21 0 0 1 1-5.51A67.83 67.83 0 0 0 378 66.33h-.25A67.13 67.13 0 0 0 332.35 84a5.21 5.21 0 0 1-5.52 1 5.23 5.23 0 0 1-3.22-4.58 67.68 67.68 0 0 0-135.23 0 5.2 5.2 0 0 1-3.21 4.58 5.21 5.21 0 0 1-5.52-1 67.1 67.1 0 0 0-45.44-17.69H134a67.91 67.91 0 0 0-50 113.34 5.21 5.21 0 0 1 1 5.51 5.2 5.2 0 0 1-4.58 3.21 67.71 67.71 0 0 0 0 135.23 5.23 5.23 0 0 1 4.58 3.23 5.22 5.22 0 0 1-1 5.52 67.54 67.54 0 0 0 50.08 113h.25A67.38 67.38 0 0 0 179.65 428a5.21 5.21 0 0 1 5.51-1 5.2 5.2 0 0 1 3.21 4.58 67.71 67.71 0 0 0 135.23 0 5.23 5.23 0 0 1 3.22-4.58 5.21 5.21 0 0 1 5.51 1 67.38 67.38 0 0 0 45.29 17.42h.25a67.48 67.48 0 0 0 50.08-113 5.22 5.22 0 0 1-1-5.52 5.23 5.23 0 0 1 4.58-3.22 67.3 67.3 0 0 0 44.4-19.77M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80'/></svg>", l0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48m143 304h-45.22a8 8 0 0 1-6.91-4l-16.14-27.68a8 8 0 0 1-.86-6l14.86-59.92a8 8 0 0 1 4.65-5.45l28.1-11.9a8 8 0 0 1 8.34 1.3l41.63 35.82a8 8 0 0 1 2.69 7.26 174.75 174.75 0 0 1-24.28 66.68A8 8 0 0 1 399 352M134.52 237.13l28.1 11.9a8 8 0 0 1 4.65 5.45l14.86 59.92a8 8 0 0 1-.86 6L165.13 348a8 8 0 0 1-6.91 4H113a8 8 0 0 1-6.82-3.81 174.75 174.75 0 0 1-24.28-66.68 8 8 0 0 1 2.69-7.26l41.63-35.82a8 8 0 0 1 8.3-1.3m256.94-87.24-18.07 51.38A8 8 0 0 1 369 206l-29.58 12.53a8 8 0 0 1-8.26-1.24L274.9 170.1a8 8 0 0 1-2.9-6.1v-33.58a8 8 0 0 1 3.56-6.65l42.83-28.54a8 8 0 0 1 7.66-.67A176.9 176.9 0 0 1 390 142a8 8 0 0 1 1.46 7.89M193.6 95.23l42.84 28.54a8 8 0 0 1 3.56 6.65V164a8 8 0 0 1-2.86 6.13l-56.26 47.19a8 8 0 0 1-8.26 1.24L143 206a8 8 0 0 1-4.43-4.72L120.5 149.9a8 8 0 0 1 1.5-7.9 176.9 176.9 0 0 1 64-47.48 8 8 0 0 1 7.6.71m17.31 327.46L191.18 373a8 8 0 0 1 .52-7l15.17-26a8 8 0 0 1 6.91-4h84.44a8 8 0 0 1 6.91 4l15.18 26a8 8 0 0 1 .53 7l-19.59 49.67a8 8 0 0 1-5.69 4.87 176.6 176.6 0 0 1-79 0 8 8 0 0 1-5.65-4.85'/></svg>", r0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M200 144h40v-40a40 40 0 1 0-40 40M352 104a40 40 0 0 0-80 0v40h40a40 40 0 0 0 40-40' class='ionicon-fill-none'/><path d='M80 416a64 64 0 0 0 64 64h92a4 4 0 0 0 4-4V292a4 4 0 0 0-4-4H88a8 8 0 0 0-8 8ZM240 252V144h32v108a4 4 0 0 0 4 4h140a47.9 47.9 0 0 0 16-2.75A48.09 48.09 0 0 0 464 208v-16a48 48 0 0 0-48-48h-40.54a2 2 0 0 1-1.7-3A72 72 0 0 0 256 58.82 72 72 0 0 0 138.24 141a2 2 0 0 1-1.7 3H96a48 48 0 0 0-48 48v16a48.09 48.09 0 0 0 32 45.25A47.9 47.9 0 0 0 96 256h140a4 4 0 0 0 4-4m32-148a40 40 0 1 1 40 40h-40Zm-74.86-39.9A40 40 0 0 1 240 104v40h-40a40 40 0 0 1-2.86-79.89ZM276 480h92a64 64 0 0 0 64-64V296a8 8 0 0 0-8-8H276a4 4 0 0 0-4 4v184a4 4 0 0 0 4 4'/></svg>", n0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M340.75 344.49c5.91-20.7 9.82-44.75 11.31-67.84a4.41 4.41 0 0 0-4.46-4.65h-71.06a4.43 4.43 0 0 0-4.47 4.39v55.3a4.44 4.44 0 0 0 4.14 4.38 273.5 273.5 0 0 1 59 11.39 4.45 4.45 0 0 0 5.54-2.97M323.58 377.31a260 260 0 0 0-46.6-9.09 4.42 4.42 0 0 0-4.91 4.29v65.24a4.47 4.47 0 0 0 6.76 3.7c15.9-9.27 29-24.84 40.84-45.43 1.94-3.36 4.89-9.15 6.67-12.69a4.29 4.29 0 0 0-2.76-6.02M235.29 368.4a257 257 0 0 0-46.56 8.82c-2.64.76-3.75 4.4-2.55 6.79 1.79 3.56 4 8.11 5.89 11.51 13 23 26.84 37.5 41.24 45.93a4.47 4.47 0 0 0 6.76-3.7v-65.27a4.16 4.16 0 0 0-4.78-4.08M235.6 272h-71.06a4.41 4.41 0 0 0-4.46 4.64c1.48 23.06 5.37 47.16 11.26 67.84a4.46 4.46 0 0 0 5.59 3 272.2 272.2 0 0 1 59-11.36 4.44 4.44 0 0 0 4.15-4.38V276.4a4.43 4.43 0 0 0-4.48-4.4M277 143.78a235.8 235.8 0 0 0 46.5-9.14 4.3 4.3 0 0 0 2.76-6c-1.79-3.57-4.27-8.68-6.17-12.09-12.29-22-26.14-37.35-41.24-46a4.48 4.48 0 0 0-6.76 3.7v65.23a4.43 4.43 0 0 0 4.91 4.3M276.54 240h71.06a4.39 4.39 0 0 0 4.46-4.58c-1.48-22.77-5.27-47.8-11.16-68.22a4.46 4.46 0 0 0-5.59-2.95c-19 5.74-38.79 10.43-59.09 12a4.4 4.4 0 0 0-4.15 4.32v55.11a4.4 4.4 0 0 0 4.47 4.32M233.31 70.56c-15.42 8.57-29.17 24.43-41.47 46.37-1.91 3.41-4.19 8.11-6 11.67a4.31 4.31 0 0 0 2.76 6 225.4 225.4 0 0 0 46.54 9.17 4.43 4.43 0 0 0 4.91-4.29V74.26a4.49 4.49 0 0 0-6.74-3.7M235.92 176.26c-20.3-1.55-40.11-6.24-59.09-12a4.46 4.46 0 0 0-5.59 2.95c-5.89 20.42-9.68 45.45-11.16 68.22a4.39 4.39 0 0 0 4.46 4.58h71.06a4.4 4.4 0 0 0 4.47-4.34v-55.09a4.4 4.4 0 0 0-4.15-4.32'/><path d='M414.39 97.61A224 224 0 1 0 97.61 414.39 224 224 0 1 0 414.39 97.61M176.6 430.85a219 219 0 0 1-12.48-19.66c-2-3.69-4.84-9.26-6.73-13.13a7.29 7.29 0 0 0-10.31-3.16c-4.3 2.41-10 5.72-14.13 8.43a147.3 147.3 0 0 1-23.57-22.43 249 249 0 0 1 30.41-18.36c1.86-1 2.77-2.14 2.18-4.18a374.8 374.8 0 0 1-14.09-82.17 4.36 4.36 0 0 0-4.3-4.17H66.84a2 2 0 0 1-2-1.7A98 98 0 0 1 64 256a96 96 0 0 1 .86-14.29 2 2 0 0 1 2-1.7h56.74c2.29 0 4.17-1.32 4.29-3.63a372.7 372.7 0 0 1 14-81.83 4.36 4.36 0 0 0-2.19-5.11 261 261 0 0 1-29.84-17.9 170 170 0 0 1 23.14-22.8c4.08 2.68 9.4 5.71 13.66 8.11a7.89 7.89 0 0 0 11-3.42c1.88-3.87 4-8.18 6.06-11.88a222 222 0 0 1 12.54-19.91A185 185 0 0 1 256 64c28.94 0 55.9 7 80.53 18.46a202 202 0 0 1 12 19c2.59 4.66 5.34 10.37 7.66 15.32a4.29 4.29 0 0 0 5.92 1.94c5.38-2.91 11.21-6.26 16.34-9.63a171.4 171.4 0 0 1 23.2 23 245 245 0 0 1-29.06 17.31 4.35 4.35 0 0 0-2.18 5.12 348.7 348.7 0 0 1 13.85 81.4 4.33 4.33 0 0 0 4.3 4.12l56.62-.07a2 2 0 0 1 2 1.7 117.5 117.5 0 0 1 0 28.62 2 2 0 0 1-2 1.72h-56.67a4.35 4.35 0 0 0-4.3 4.17 367.4 367.4 0 0 1-13.87 81.3 4.45 4.45 0 0 0 2.19 5.19c5 2.59 10.57 5.48 15.37 8.42s9.55 6.08 14.13 9.34a172.7 172.7 0 0 1-23 22.93c-2.44-1.61-5.34-3.44-7.84-4.94-1.72-1-4.89-2.77-6.65-3.76-3.82-2.14-7.88-.54-9.79 3.4s-4.83 9.59-6.87 13.25a212 212 0 0 1-12.35 19.53C310.91 442.37 284.94 448 256 448s-54.77-5.63-79.4-17.15'/></svg>", i0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M272 320.46V202.3l166.62-75.73a16 16 0 0 0 0-29.14l-176-80A16 16 0 0 0 240 32v288.46q8-.45 16-.46t16 .46'/><path d='M463.33 457.5c-8.56-42.85-35.11-78.74-76.78-103.8-32.5-19.55-72.67-31.3-114.55-33.7v79.75a16 16 0 1 1-32 0V320c-41.88 2.4-82.05 14.15-114.55 33.7-41.67 25.06-68.22 60.95-76.78 103.8a32.49 32.49 0 0 0 6.44 27.08C61.13 492 70 496 80 496h352c10 0 18.88-4.05 24.9-11.42a32.49 32.49 0 0 0 6.43-27.08'/></svg>", s0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 448a32 32 0 0 1-18-5.57c-78.59-53.35-112.62-89.93-131.39-112.8-40-48.75-59.15-98.8-58.61-153C48.63 114.52 98.46 64 159.08 64c44.08 0 74.61 24.83 92.39 45.51a6 6 0 0 0 9.06 0C278.31 88.81 308.84 64 352.92 64c60.62 0 110.45 50.52 111.08 112.64.54 54.21-18.63 104.26-58.61 153-18.77 22.87-52.8 59.45-131.39 112.8a32 32 0 0 1-18 5.56'/></svg>", c0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64m-6 304a20 20 0 1 1 20-20 20 20 0 0 1-20 20m33.44-102C267.23 276.88 265 286.85 265 296a14 14 0 0 1-28 0c0-21.91 10.08-39.33 30.82-53.26C287.1 229.8 298 221.6 298 203.57c0-12.26-7-21.57-21.49-28.46-3.41-1.62-11-3.2-20.34-3.09-11.72.15-20.82 2.95-27.83 8.59C215.12 191.25 214 202.83 214 203a14 14 0 1 1-28-1.35c.11-2.43 1.8-24.32 24.77-42.8 11.91-9.58 27.06-14.56 45-14.78 12.7-.15 24.63 2 32.72 5.82C312.7 161.34 326 180.43 326 203.57c0 33.83-22.61 49.02-42.56 62.43'/></svg>", u0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M261.56 101.28a8 8 0 0 0-11.06 0L66.4 277.15a8 8 0 0 0-2.47 5.79L63.9 448a32 32 0 0 0 32 32H192a16 16 0 0 0 16-16V328a8 8 0 0 1 8-8h80a8 8 0 0 1 8 8v136a16 16 0 0 0 16 16h96.06a32 32 0 0 0 32-32V282.94a8 8 0 0 0-2.47-5.79Z'/><path d='m490.91 244.15-74.8-71.56V64a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v32l-57.92-55.38C272.77 35.14 264.71 32 256 32c-8.68 0-16.72 3.14-22.14 8.63l-212.7 203.5c-6.22 6-7 15.87-1.34 22.37A16 16 0 0 0 43 267.56L250.5 69.28a8 8 0 0 1 11.06 0l207.52 198.28a16 16 0 0 0 22.59-.44c6.14-6.36 5.63-16.86-.76-22.97'/></svg>", d0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M183 352c-21.84-.52-39-18.9-39-40.74v-34.07a8 8 0 0 0-6-7.74c-33.75-8.85-58-39.71-58-77.45a80.14 80.14 0 0 1 66.27-78.82 8 8 0 0 0 6.62-6.83 104 104 0 0 1 206.22 0 8 8 0 0 0 6.62 6.83A80 80 0 0 1 352 272a74.33 74.33 0 0 1-47.45-17.41 7.93 7.93 0 0 0-9.92-.14A62.9 62.9 0 0 1 256 268a80.5 80.5 0 0 1-21.8-3.18 8 8 0 0 0-10.2 7.69V312a40 40 0 0 1-41 40'/><path d='M263.39 299.7a8 8 0 0 0-7.39 7.91V312a72.11 72.11 0 0 1-50.69 68.76 8 8 0 0 0-4.91 10.78l40.91 94.8A16 16 0 0 0 256 496a16 16 0 0 0 14.69-9.7l73.78-172.15a8 8 0 0 0-6.2-11.07 106.3 106.3 0 0 1-35.9-11.59 8 8 0 0 0-7.13-.2 95 95 0 0 1-31.85 8.41'/></svg>", p0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 56C145.72 56 56 145.72 56 256s89.72 200 200 200 200-89.72 200-200S366.28 56 256 56m0 82a26 26 0 1 1-26 26 26 26 0 0 1 26-26m48 226h-88a16 16 0 0 1 0-32h28v-88h-16a16 16 0 0 1 0-32h32a16 16 0 0 1 16 16v104h28a16 16 0 0 1 0 32'/></svg>", g0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M161.35 242a16 16 0 0 1 22.62-.68c73.63 69.36 147.51 111.56 234.45 133.07 11.73-32 12.77-67.22 2.64-101.58-13.44-45.59-44.74-85.31-90.49-114.86-40.84-26.38-81.66-33.25-121.15-39.89-49.82-8.38-96.88-16.3-141.79-63.85-5-5.26-11.81-7.37-18.32-5.66-7.44 2-12.43 7.88-14.82 17.6-5.6 22.75-2 86.51 13.75 153.82 25.29 108.14 65.65 162.86 95.06 189.73 38 34.69 87.62 53.9 136.93 53.9a186 186 0 0 0 27.77-2.04c41.71-6.32 76.43-27.27 96-57.75-89.49-23.28-165.94-67.55-242-139.16a16 16 0 0 1-.65-22.65M467.43 384.19c-16.83-2.59-33.13-5.84-49-9.77a157.7 157.7 0 0 1-12.13 25.68c-.73 1.25-1.5 2.49-2.29 3.71a584 584 0 0 0 58.56 12 16 16 0 1 0 4.87-31.62Z'/></svg>", v0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M64 480H48a32 32 0 0 1-32-32V112a32 32 0 0 1 32-32h16a32 32 0 0 1 32 32v336a32 32 0 0 1-32 32M240 176a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32v28a4 4 0 0 0 4 4h120a4 4 0 0 0 4-4ZM112 448a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-30a2 2 0 0 0-2-2H114a2 2 0 0 0-2 2Z'/><rect width='128' height='144' x='112' y='240' rx='2' ry='2'/><path d='M320 480h-32a32 32 0 0 1-32-32V64a32 32 0 0 1 32-32h32a32 32 0 0 1 32 32v384a32 32 0 0 1-32 32M495.89 445.45l-32.23-340c-1.48-15.65-16.94-27-34.53-25.31l-31.85 3c-17.59 1.67-30.65 15.71-29.17 31.36l32.23 340c1.48 15.65 16.94 27 34.53 25.31l31.85-3c17.59-1.67 30.65-15.71 29.17-31.36'/></svg>", m0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><circle cx='256' cy='192' r='32'/><path d='M256 32c-88.22 0-160 68.65-160 153 0 40.17 18.31 93.59 54.42 158.78 29 52.34 62.55 99.67 80 123.22a31.75 31.75 0 0 0 51.22 0c17.42-23.55 51-70.88 80-123.22C397.69 278.61 416 225.19 416 185c0-84.35-71.78-153-160-153m0 224a64 64 0 1 1 64-64 64.07 64.07 0 0 1-64 64'/></svg>", f0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M48.17 113.34A32 32 0 0 0 32 141.24V438a32 32 0 0 0 47 28.37c.43-.23.85-.47 1.26-.74l84.14-55.05a8 8 0 0 0 3.63-6.72V46.45a8 8 0 0 0-12.51-6.63ZM212.36 39.31A8 8 0 0 0 200 46v357.56a8 8 0 0 0 3.63 6.72l96 62.42A8 8 0 0 0 312 466V108.67a8 8 0 0 0-3.64-6.73ZM464.53 46.47a31.64 31.64 0 0 0-31.5-.88 12 12 0 0 0-1.25.74l-84.15 55a8 8 0 0 0-3.63 6.72v357.46a8 8 0 0 0 12.52 6.63l107.07-73.46a32 32 0 0 0 16.41-28v-296a32.76 32.76 0 0 0-15.47-28.21'/></svg>", y0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M272 464h-32a32 32 0 0 1-32-32l.05-85.82a4 4 0 0 0-6-3.47l-74.34 43.06a31.48 31.48 0 0 1-43-11.52l-16.5-28.64-.06-.1a31.65 31.65 0 0 1 11.56-42.8l74.61-43.25a4 4 0 0 0 0-6.92l-74.54-43.21a31.41 31.41 0 0 1-11.55-43l16.44-28.55a31.48 31.48 0 0 1 19.27-14.74 31.14 31.14 0 0 1 23.8 3.2l74.31 43a4 4 0 0 0 6-3.47L208 80a32 32 0 0 1 32-32h32a32 32 0 0 1 32 32v85.72a4 4 0 0 0 6 3.47l74.34-43.06a31.51 31.51 0 0 1 43 11.52l16.49 28.64.06.09a31.52 31.52 0 0 1-11.64 42.86l-74.53 43.2a4 4 0 0 0 0 6.92l74.53 43.2a31.42 31.42 0 0 1 11.56 43l-16.44 28.55a31.48 31.48 0 0 1-19.27 14.74 31.14 31.14 0 0 1-23.8-3.2l-74.31-43a4 4 0 0 0-6 3.46L304 432a32 32 0 0 1-32 32m61.54-218.56'/></svg>", h0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M264 480A232 232 0 0 1 32 248c0-94 54-178.28 137.61-214.67a16 16 0 0 1 21.06 21.06C181.07 76.43 176 104.66 176 136c0 110.28 89.72 200 200 200 31.34 0 59.57-5.07 81.61-14.67a16 16 0 0 1 21.06 21.06C442.28 426 358 480 264 480'/></svg>", w0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M421.84 37.37a25.86 25.86 0 0 0-22.6-4.46L199.92 86.49A32.3 32.3 0 0 0 176 118v226c0 6.74-4.36 12.56-11.11 14.83l-.12.05-52 18C92.88 383.53 80 402 80 423.91a55.54 55.54 0 0 0 23.23 45.63A54.78 54.78 0 0 0 135.34 480a55.8 55.8 0 0 0 17.75-2.93l.38-.13 21.84-7.94A47.84 47.84 0 0 0 208 423.91v-212c0-7.29 4.77-13.21 12.16-15.07l.21-.06L395 150.14a4 4 0 0 1 5 3.86v141.93c0 6.75-4.25 12.38-11.11 14.68l-.25.09-50.89 18.11A49.09 49.09 0 0 0 304 375.92a55.67 55.67 0 0 0 23.23 45.8 54.63 54.63 0 0 0 49.88 7.35l.36-.12 21.84-7.95A47.83 47.83 0 0 0 432 375.92V58a25.74 25.74 0 0 0-10.16-20.63'/></svg>", x0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M272 464a16 16 0 0 1-16-16.42V264.13a8 8 0 0 0-8-8H64.41a16.31 16.31 0 0 1-15.49-10.65 16 16 0 0 1 8.41-19.87l384-176.15a16 16 0 0 1 21.22 21.19l-176 384A16 16 0 0 1 272 464'/></svg>", k0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M490.39 182.75c-5.55-13.19-14.77-22.7-26.67-27.49l-.16-.06a46.5 46.5 0 0 0-17-3.2h-.64c-27.24.41-55.05 23.56-69.19 57.61-10.37 24.9-11.56 51.68-3.18 71.64 5.54 13.2 14.78 22.71 26.73 27.5l.13.05a46.5 46.5 0 0 0 17 3.2c27.5 0 55.6-23.15 70-57.65 10.24-24.87 11.37-51.63 2.98-71.6M381.55 329.61c-15.71-9.44-30.56-18.37-40.26-34.41C314.53 250.8 298.37 224 256 224s-58.57 26.8-85.39 71.2c-9.72 16.06-24.6 25-40.36 34.48-18.07 10.86-36.74 22.08-44.8 44.16a66.9 66.9 0 0 0-4.65 25c0 35.95 28 65.2 62.4 65.2 17.75 0 36.64-6.15 56.63-12.66 19.22-6.26 39.09-12.73 56.27-12.73s37 6.47 56.15 12.73C332.2 457.85 351 464 368.8 464c34.35 0 62.3-29.25 62.3-65.2a67 67 0 0 0-4.75-25c-8.06-22.1-26.74-33.33-44.8-44.19M150 188.85c11.9 14.93 27 23.15 42.52 23.15a43 43 0 0 0 6.33-.47c32.37-4.76 52.54-44.26 45.92-90C242 102.3 234.6 84.39 224 71.11 212.12 56.21 197 48 181.49 48a43 43 0 0 0-6.33.47c-32.37 4.76-52.54 44.26-45.92 90 2.76 19.2 10.16 37.09 20.76 50.38M313.16 211.53a43 43 0 0 0 6.33.47c15.53 0 30.62-8.22 42.52-23.15 10.59-13.29 17.95-31.18 20.75-50.4 6.62-45.72-13.55-85.22-45.92-90a43 43 0 0 0-6.33-.47C315 48 299.88 56.21 288 71.11c-10.6 13.28-18 31.19-20.76 50.44-6.62 45.72 13.55 85.22 45.92 89.98M111.59 308.8l.14-.05c11.93-4.79 21.16-14.29 26.69-27.48 8.38-20 7.2-46.75-3.15-71.65C120.94 175.16 92.85 152 65.38 152a46.4 46.4 0 0 0-17 3.2l-.14.05c-11.9 4.75-21.13 14.29-26.66 27.48-8.38 20-7.2 46.75 3.15 71.65C39.06 288.84 67.15 312 94.62 312a46.4 46.4 0 0 0 16.97-3.2'/></svg>", b0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M336 96a80 80 0 1 0-96 78.39v283.17a32.1 32.1 0 0 0 2.49 12.38l10.07 24a3.92 3.92 0 0 0 6.88 0l10.07-24a32.1 32.1 0 0 0 2.49-12.38V174.39A80.13 80.13 0 0 0 336 96m-56 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24'/></svg>", M0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M441.82 67.83C383.44 44.73 317.3 32 255.56 32 192 32 125.76 44.53 69 67.26 48.7 75.49 45.21 90 48.71 100.82L52.78 111a16 16 0 0 0 21.31 8.69c10.8-4.76 23.93-10.54 27-11.78C145.1 89.64 198.71 80 256 80c57.47 0 108.09 9.24 154.76 28.25 4.42 1.8 14.88 6.42 26.17 11.46a16 16 0 0 0 21.35-8.59L462 102l.34-.9c3.45-10.21.14-25.05-20.52-33.27'/><path d='M409.18 140.86C363.67 122.53 307.68 112 255.56 112a425 425 0 0 0-153.74 28.89c-.53.21-2.06.88-4.29 1.88a16 16 0 0 0-8 21.27c4 8.71 9.42 20.58 15.5 33.89C137.94 270 199.21 404 227.26 462A31.74 31.74 0 0 0 256 480a31.73 31.73 0 0 0 28.76-18.06l.06-.13 137.3-297.57a15.94 15.94 0 0 0-8.31-21.45c-2.26-.95-3.85-1.61-4.5-1.87Zm-215.1 83.07a32 32 0 1 1 29.85-29.85 32 32 0 0 1-29.85 29.85m64 128a32 32 0 1 1 29.85-29.85 32 32 0 0 1-29.85 29.85m64-112a32 32 0 1 1 29.85-29.85 32 32 0 0 1-29.85 29.85'/></svg>", C0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M357.57 223.94a79.48 79.48 0 0 0 56.58-23.44l77-76.95c6.09-6.09 6.65-16 .85-22.39a16 16 0 0 0-23.17-.56l-68.63 68.58a12.29 12.29 0 0 1-17.37 0c-4.79-4.78-4.53-12.86.25-17.64l68.33-68.33a16 16 0 0 0-.56-23.16A15.62 15.62 0 0 0 440.27 56a16.7 16.7 0 0 0-11.81 4.9l-68.27 68.26a12.29 12.29 0 0 1-17.37 0c-4.78-4.78-4.53-12.86.25-17.64l68.33-68.31a16 16 0 0 0-.56-23.16A15.62 15.62 0 0 0 400.26 16a16.73 16.73 0 0 0-11.81 4.9L311.5 97.85a79.5 79.5 0 0 0-23.44 56.59v8.23a16 16 0 0 1-4.69 11.33l-35.61 35.62a4 4 0 0 1-5.66 0L68.82 36.33a16 16 0 0 0-22.58-.06C31.09 51.28 23 72.47 23 97.54c-.1 41.4 21.66 89 56.79 124.08l85.45 85.45A64.8 64.8 0 0 0 211 326a64 64 0 0 0 16.21-2.08 16.2 16.2 0 0 1 4.07-.53 15.93 15.93 0 0 1 10.83 4.25l11.39 10.52a16.12 16.12 0 0 1 4.6 11.23v5.54a47.73 47.73 0 0 0 13.77 33.65l90.05 91.57.09.1a53.29 53.29 0 0 0 75.36-75.37L302.39 269.9a4 4 0 0 1 0-5.66L338 228.63a16 16 0 0 1 11.32-4.69Z'/><path d='M211 358a97.32 97.32 0 0 1-68.36-28.25l-13.86-13.86a8 8 0 0 0-11.3 0l-85 84.56c-15.15 15.15-20.56 37.45-13.06 59.29a31 31 0 0 0 1.49 3.6C31 484 50.58 496 72 496a55.68 55.68 0 0 0 39.64-16.44L225 365.66a4.69 4.69 0 0 0 1.32-3.72v-.26a4.63 4.63 0 0 0-5.15-4.27A97 97 0 0 1 211 358'/></svg>", L0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 368a16 16 0 0 1-7.94-2.11L108 285.84a8 8 0 0 0-12 6.94V368a16 16 0 0 0 8.23 14l144 80a16 16 0 0 0 15.54 0l144-80a16 16 0 0 0 8.23-14v-75.22a8 8 0 0 0-12-6.94l-140.06 80.05A16 16 0 0 1 256 368'/><path d='M495.92 190.5v-.11a16 16 0 0 0-8-12.28l-224-128a16 16 0 0 0-15.88 0l-224 128a16 16 0 0 0 0 27.78l224 128a16 16 0 0 0 15.88 0L461 221.28a2 2 0 0 1 3 1.74v144.53c0 8.61 6.62 16 15.23 16.43A16 16 0 0 0 496 368V192a15 15 0 0 0-.08-1.5'/></svg>", _0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m461 349-34-19.64a89.5 89.5 0 0 1 20.94-16 22 22 0 0 0-21.28-38.51 133.6 133.6 0 0 0-38.55 32.1L300 256l88.09-50.86a133.5 133.5 0 0 0 38.55 32.1 22 22 0 1 0 21.28-38.51 89.7 89.7 0 0 1-20.94-16l34-19.64A22 22 0 1 0 439 125l-34 19.63a89.7 89.7 0 0 1-3.42-26.15A22 22 0 0 0 380 96h-.41a22 22 0 0 0-22 21.59 133.6 133.6 0 0 0 8.5 49.41L278 217.89V116.18a133.5 133.5 0 0 0 47.07-17.33 22 22 0 0 0-22.71-37.69A89.6 89.6 0 0 1 278 71.27V38a22 22 0 0 0-44 0v33.27a89.6 89.6 0 0 1-24.36-10.11 22 22 0 1 0-22.71 37.69A133.5 133.5 0 0 0 234 116.18v101.71L145.91 167a133.6 133.6 0 0 0 8.52-49.43 22 22 0 0 0-22-21.59H132a22 22 0 0 0-21.59 22.41 89.7 89.7 0 0 1-3.41 26.19L73 125a22 22 0 1 0-22 38.1l34 19.64a89.7 89.7 0 0 1-20.94 16 22 22 0 1 0 21.28 38.51 133.6 133.6 0 0 0 38.55-32.1L212 256l-88.09 50.86a133.6 133.6 0 0 0-38.55-32.1 22 22 0 1 0-21.28 38.51 89.7 89.7 0 0 1 20.94 16L51 349a22 22 0 1 0 22 38.1l34-19.63a89.7 89.7 0 0 1 3.42 26.15A22 22 0 0 0 132 416h.41a22 22 0 0 0 22-21.59 133.6 133.6 0 0 0-8.5-49.41L234 294.11v101.71a133.5 133.5 0 0 0-47.07 17.33 22 22 0 1 0 22.71 37.69A89.6 89.6 0 0 1 234 440.73V474a22 22 0 0 0 44 0v-33.27a89.6 89.6 0 0 1 24.36 10.11 22 22 0 0 0 22.71-37.69A133.5 133.5 0 0 0 278 395.82V294.11L366.09 345a133.6 133.6 0 0 0-8.52 49.43 22 22 0 0 0 22 21.59h.43a22 22 0 0 0 21.59-22.41 89.7 89.7 0 0 1 3.41-26.19l34 19.63A22 22 0 1 0 461 349'/></svg>", A0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M394 480a16 16 0 0 1-9.39-3L256 383.76 127.39 477a16 16 0 0 1-24.55-18.08L153 310.35 23 221.2a16 16 0 0 1 9-29.2h160.38l48.4-148.95a16 16 0 0 1 30.44 0l48.4 149H480a16 16 0 0 1 9.05 29.2L359 310.35l50.13 148.53A16 16 0 0 1 394 480'/></svg>", S0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 118a22 22 0 0 1-22-22V48a22 22 0 0 1 44 0v48a22 22 0 0 1-22 22M256 486a22 22 0 0 1-22-22v-48a22 22 0 0 1 44 0v48a22 22 0 0 1-22 22M369.14 164.86a22 22 0 0 1-15.56-37.55l33.94-33.94a22 22 0 0 1 31.11 31.11l-33.94 33.94a21.93 21.93 0 0 1-15.55 6.44M108.92 425.08a22 22 0 0 1-15.55-37.56l33.94-33.94a22 22 0 1 1 31.11 31.11l-33.94 33.94a21.94 21.94 0 0 1-15.56 6.45M464 278h-48a22 22 0 0 1 0-44h48a22 22 0 0 1 0 44M96 278H48a22 22 0 0 1 0-44h48a22 22 0 0 1 0 44M403.08 425.08a21.94 21.94 0 0 1-15.56-6.45l-33.94-33.94a22 22 0 0 1 31.11-31.11l33.94 33.94a22 22 0 0 1-15.55 37.56M142.86 164.86a21.9 21.9 0 0 1-15.55-6.44l-33.94-33.94a22 22 0 0 1 31.11-31.11l33.94 33.94a22 22 0 0 1-15.56 37.55M256 358a102 102 0 1 1 102-102 102.12 102.12 0 0 1-102 102'/></svg>", V0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M448 256a192.6 192.6 0 0 0 32-2.68A224 224 0 0 0 258.68 32 192.6 192.6 0 0 0 256 64c0 105.87 86.13 192 192 192M253.35 480c.94-5.67 1.65-11.4 2.09-17.18.37-4.88.56-9.86.56-14.79 0-105.87-86.13-192-192-192a192.6 192.6 0 0 0-32 2.68A224 224 0 0 0 253.35 480'/><path d='M289.61 222.39A222.53 222.53 0 0 1 224 64a226 226 0 0 1 2-30A224.1 224.1 0 0 0 34 226a226 226 0 0 1 30-2 222.53 222.53 0 0 1 158.39 65.61A222.53 222.53 0 0 1 288 448c0 5.74-.22 11.53-.65 17.22q-.5 6.42-1.36 12.79A224.12 224.12 0 0 0 478 286a226 226 0 0 1-30 2 222.53 222.53 0 0 1-158.39-65.61'/></svg>", T0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M96 416a16 16 0 0 1-14.3-23.16l24-48a16 16 0 0 1 28.62 14.32l-24 48A16 16 0 0 1 96 416M120 480a16 16 0 0 1-14.3-23.16l16-32a16 16 0 0 1 28.62 14.32l-16 32A16 16 0 0 1 120 480M376 416a16 16 0 0 1-14.3-23.16l24-48a16 16 0 0 1 28.62 14.32l-24 48A16 16 0 0 1 376 416M400 480a16 16 0 0 1-14.3-23.16l16-32a16 16 0 0 1 28.62 14.32l-16 32A16 16 0 0 1 400 480'/><path d='M405.84 136.9a151.25 151.25 0 0 0-47.6-81.9 153 153 0 0 0-241.81 51.86C60.5 110.16 16 156.65 16 213.33 16 272.15 63.91 320 122.8 320h66.31l-12.89 77.37A16 16 0 0 0 192 416h32v64a16 16 0 0 0 29 9.3l80-112a16 16 0 0 0-13-25.3h-27.51l8-32h103.84a91.56 91.56 0 0 0 1.51-183.1'/></svg>", P0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M491.31 324.69 432 265.37a31.8 31.8 0 0 0-22.63-9.37H272v-32h144a32 32 0 0 0 32-32V96a32 32 0 0 0-32-32H272V48a16 16 0 0 0-32 0v16H102.63A31.8 31.8 0 0 0 80 73.37l-59.31 59.32a16 16 0 0 0 0 22.62L80 214.63a31.8 31.8 0 0 0 22.63 9.37H240v32H96a32 32 0 0 0-32 32v96a32 32 0 0 0 32 32h144v48a16 16 0 0 0 32 0v-48h137.37a31.8 31.8 0 0 0 22.63-9.37l59.31-59.32a16 16 0 0 0 0-22.62'/></svg>", B0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><ellipse cx='256' cy='304' rx='32.05' ry='31.94' transform='rotate(-45 256.001 304)'/><path d='M352 32h-15a10 10 0 0 1-7.87-3.78A31.94 31.94 0 0 0 304 16h-96a32 32 0 0 0-26.11 13.52A6 6 0 0 1 177 32h-17c-36.81 0-64 28.84-64 64v255c0 23.27 25.6 42.06 83 60.94a753 753 0 0 0 73.77 19.73 16 16 0 0 0 6.46 0A753 753 0 0 0 333 411.94c57.4-18.88 83-37.67 83-60.94V96a64 64 0 0 0-64-64m-168 96h144a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8H184a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8m76.18 239.87a64 64 0 1 1 59.69-59.69 64.07 64.07 0 0 1-59.69 59.69'/><path d='M395.31 468.69 347.63 421c-6.09-6.1-16-6.66-22.38-.86a16 16 0 0 0-.56 23.16l4.68 4.69H182.63l4.36-4.37c6.1-6.09 6.66-16 .86-22.38a16 16 0 0 0-23.16-.56l-48 48a16 16 0 1 0 22.62 22.62l11.32-11.3h210.74l11.32 11.31a16 16 0 0 0 22.62-22.62'/></svg>", D0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m312.55 479.9-56.42-114-44.62-57a72.37 72.37 0 0 1-10.06-36.9V143.64H217a40 40 0 0 1 40 40v182.21' stroke-linecap='round' stroke-linejoin='round' class='ionicon-stroke-width'/><path d='M127.38 291.78v-74.07s37-74.07 74.07-74.07' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M368.09 291.78a18.5 18.5 0 0 1-10.26-3.11L297.7 250a21.18 21.18 0 0 1-9.7-17.79v-23.7a5.65 5.65 0 0 1 8.69-4.77l81.65 54.11a18.52 18.52 0 0 1-10.29 33.93ZM171.91 493.47a18.5 18.5 0 0 1-14.83-7.41c-6.14-8.18-4-17.18 3.7-25.92l59.95-74.66a7.41 7.41 0 0 1 10.76 2.06c1.56 2.54 3.38 5.65 5.19 9.09 5.24 9.95 6 16.11-1.68 25.7-8 10-52 67.44-52 67.44-2.62 2.98-7.23 3.7-11.09 3.7'/><circle cx='257' cy='69.56' r='37.04' stroke-linecap='round' stroke-linejoin='round' stroke-width='16px'/></svg>", F0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M449.07 399.08 278.64 82.58c-12.08-22.44-44.26-22.44-56.35 0L51.87 399.08A32 32 0 0 0 80 446.25h340.89a32 32 0 0 0 28.18-47.17m-198.6-1.83a20 20 0 1 1 20-20 20 20 0 0 1-20 20m21.72-201.15-5.74 122a16 16 0 0 1-32 0l-5.74-121.95a21.73 21.73 0 0 1 21.5-22.69h.21a21.74 21.74 0 0 1 21.73 22.7Z'/></svg>", I0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M265.12 60.12a12 12 0 0 0-18.23 0C215.23 97.15 112 225.17 112 320c0 88.37 55.64 144 144 144s144-55.63 144-144c0-94.83-103.23-222.85-134.88-259.88M272 412a12 12 0 0 1-11.34-16 11.89 11.89 0 0 1 11.41-8A60.06 60.06 0 0 0 332 328.07a11.89 11.89 0 0 1 8-11.41A12 12 0 0 1 356 328a84.09 84.09 0 0 1-84 84'/></svg>", z0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path fill-rule='evenodd' d='M331.295 353.764c.131.181-.091-.13 0 0a46 46 0 0 0-1.039-1.365 64 64 0 0 0-3.618-4.17c-3.112-3.302-7.69-7.537-13.87-11.725C300.287 328.047 281.56 320 256 320s-44.287 8.047-56.768 16.504c-6.18 4.188-10.758 8.423-13.87 11.725a64 64 0 0 0-3.618 4.17c.264-.361-.43.544 0 0l-1.586 2.142a16 16 0 0 0 2.135 20.463l62.586 60.5c6.202 5.995 16.039 5.995 22.241 0l62.587-60.5a16 16 0 0 0 2.136-20.463z' clip-rule='evenodd'/><path fill-rule='evenodd' d='M421.086 269.862c-.135-.218-.596-.966-.812-1.3a72 72 0 0 0-1.81-2.639c-1.552-2.163-3.813-5.096-6.861-8.536-6.099-6.88-15.362-15.802-28.417-24.637C356.915 214.969 315.967 198 256 198s-100.915 16.969-127.186 34.75c-13.055 8.835-22.318 17.757-28.417 24.637-3.049 3.44-5.31 6.373-6.861 8.536a71 71 0 0 0-1.81 2.639q-.324.502-.527.829l-.285.471a16 16 0 0 0 2.678 19.664l35.31 34a16 16 0 0 0 23.007-.84l.195-.209c.207-.219.565-.591 1.074-1.096a93 93 0 0 1 4.831-4.436c4.402-3.785 11.093-8.947 19.955-14.141C195.658 292.436 221.893 282 256 282s60.342 10.436 78.036 20.804c8.862 5.194 15.553 10.356 19.955 14.141a93 93 0 0 1 4.831 4.436 49 49 0 0 1 1.269 1.305l-.005-.006-.013-.015m0 0 .026.029a16.001 16.001 0 0 0 22.999.832l35.31-34a16 16 0 0 0 2.678-19.664' clip-rule='evenodd'/><path d='M507.974 181.264c.343.459 1.181 1.629 1.181 1.629a16 16 0 0 1-2.029 20.606l-36.69 35.5a16 16 0 0 1-23.345-1.17l-.003-.003-.085-.099q-.138-.16-.482-.548a108 108 0 0 0-2.197-2.379c-2.009-2.116-5.095-5.229-9.229-9.01-8.275-7.569-20.69-17.764-36.997-27.981C365.499 177.384 317.58 157 256 157s-109.499 20.384-142.098 40.809c-16.307 10.217-28.722 20.412-36.997 27.981-4.133 3.781-7.22 6.894-9.229 9.01a109 109 0 0 0-2.197 2.379q-.345.388-.482.548l-.047.054-.03.034-.004.006-.004.005-.004.004a16 16 0 0 1-23.344 1.169l-36.69-35.5a16 16 0 0 1-2.03-20.606l.011-.016.013-.017.03-.043.079-.113.24-.337q.295-.413.809-1.103c.686-.92 1.667-2.199 2.949-3.786 2.563-3.174 6.335-7.585 11.367-12.818 10.057-10.46 25.185-24.241 45.783-37.973C105.437 99.146 168.48 72 256 72s150.563 27.146 191.875 54.687c20.598 13.732 35.726 27.513 45.783 37.973 5.032 5.233 8.804 9.644 11.367 12.818a125 125 0 0 1 2.949 3.786'/></svg>", $0 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M414.56 94.92V80a16 16 0 0 0-16-16H113.44a16 16 0 0 0-16 16v14.92c-1.46 11.37-9.65 90.74 36.93 144.69 24.87 28.8 60.36 44.85 105.63 47.86V416h-80a16 16 0 0 0 0 32h192a16 16 0 0 0 0-32h-80V287.47c45.27-3 80.76-19.06 105.63-47.86 46.58-53.95 38.37-133.32 36.93-144.69m-285.3 3.41a15 15 0 0 0 .18-2.33h253.12a15 15 0 0 0 .18 2.33 202 202 0 0 1 0 45.67H129.32a204.3 204.3 0 0 1-.06-45.67'/></svg>", H0 = {
463
+ "marker-pin": '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27 41"><path d="M13.5 0C6.044 0 0 6.044 0 13.5 0 24.818 13.5 41 13.5 41S27 24.818 27 13.5C27 6.044 20.956 0 13.5 0z" fill="#000"/></svg>'
464
+ }, U0 = {
465
+ location: m0,
466
+ pin: b0,
467
+ flag: t0,
468
+ star: A0,
469
+ heart: s0,
470
+ home: u0,
471
+ business: Z1,
472
+ cafe: N1,
473
+ restaurant: C0,
474
+ car: j1,
475
+ bus: O1,
476
+ bicycle: E1,
477
+ walk: D0,
478
+ airplane: F1,
479
+ boat: R1,
480
+ train: B0,
481
+ medical: y0,
482
+ fitness: e0,
483
+ school: L0,
484
+ library: v0,
485
+ cart: G1,
486
+ basket: z1,
487
+ gift: r0,
488
+ camera: q1,
489
+ "musical-notes": w0,
490
+ football: l0,
491
+ basketball: $1,
492
+ golf: i0,
493
+ tennisball: V0,
494
+ fish: X1,
495
+ leaf: g0,
496
+ flower: o0,
497
+ paw: k0,
498
+ water: I0,
499
+ flame: a0,
500
+ snow: _0,
501
+ sunny: S0,
502
+ moon: h0,
503
+ cloudy: Y1,
504
+ thunderstorm: T0,
505
+ warning: F0,
506
+ "information-circle": p0,
507
+ "help-circle": c0,
508
+ "checkmark-circle": K1,
509
+ "close-circle": W1,
510
+ "alert-circle": I1,
511
+ wifi: z0,
512
+ cellular: J1,
513
+ globe: n0,
514
+ compass: Q1,
515
+ navigate: x0,
516
+ map: f0,
517
+ "trail-sign": P0,
518
+ bed: H1,
519
+ beer: U1,
520
+ wine: $0,
521
+ pizza: M0,
522
+ "ice-cream": d0
523
+ }, t1 = [
524
+ "marker-pin",
525
+ "location",
526
+ "pin",
527
+ "flag",
528
+ "star",
529
+ "heart",
530
+ "home",
531
+ "business",
532
+ "cafe",
533
+ "restaurant",
534
+ "car",
535
+ "bus",
536
+ "bicycle",
537
+ "walk",
538
+ "airplane",
539
+ "boat",
540
+ "train",
541
+ "medical",
542
+ "fitness",
543
+ "school",
544
+ "library",
545
+ "cart",
546
+ "basket",
547
+ "gift",
548
+ "camera",
549
+ "musical-notes",
550
+ "football",
551
+ "basketball",
552
+ "golf",
553
+ "tennisball",
554
+ "fish",
555
+ "leaf",
556
+ "flower",
557
+ "paw",
558
+ "water",
559
+ "flame",
560
+ "snow",
561
+ "sunny",
562
+ "moon",
563
+ "cloudy",
564
+ "thunderstorm",
565
+ "warning",
566
+ "information-circle",
567
+ "help-circle",
568
+ "checkmark-circle",
569
+ "close-circle",
570
+ "alert-circle",
571
+ "wifi",
572
+ "cellular",
573
+ "globe",
574
+ "compass",
575
+ "navigate",
576
+ "map",
577
+ "trail-sign",
578
+ "bed",
579
+ "beer",
580
+ "wine",
581
+ "pizza",
582
+ "ice-cream"
583
+ ];
584
+ function E0(e) {
585
+ return "data:image/svg+xml;charset=utf-8," + encodeURIComponent(e);
586
+ }
587
+ function x1(e) {
588
+ const i = H0[e];
589
+ return i ? E0(i) : U0[e] ?? null;
590
+ }
591
+ async function R0(e) {
592
+ return x1(e);
593
+ }
594
+ async function O0(e, i) {
595
+ if (e.hasImage(i))
596
+ return;
597
+ const a = x1(i);
598
+ if (a)
599
+ try {
600
+ const l = 5 * (window.devicePixelRatio || 1), d = Math.round(32 * l), v = new Image(d, d);
601
+ await new Promise((m, C) => {
602
+ v.onload = () => m(), v.onerror = C, v.src = a;
603
+ }), e.hasImage(i) || e.addImage(i, v, { pixelRatio: l, sdf: !0 });
604
+ } catch {
605
+ }
606
+ }
607
+ async function Q(e, i) {
608
+ const a = /* @__PURE__ */ new Set();
609
+ for (const o of i) {
610
+ const g = o.properties["marker-symbol"];
611
+ typeof g == "string" && g && a.add(g);
612
+ }
613
+ await Promise.all([...a].map((o) => O0(e, o)));
614
+ }
615
+ const Z0 = 40, N0 = 15, q0 = 15;
616
+ function k1(e, i) {
617
+ return e === void 0 && i === void 0;
618
+ }
619
+ function b1(e, i, a) {
620
+ if (i.length === 0) return;
621
+ const o = new V1();
622
+ for (const h of i) {
623
+ const M = h.geometry.coordinates;
624
+ if (h.geometry.type === "Point")
625
+ o.extend(M);
626
+ else if (h.geometry.type === "LineString")
627
+ for (const L of M) o.extend(L);
628
+ else if (h.geometry.type === "Polygon")
629
+ for (const L of M)
630
+ for (const w of L) o.extend(w);
631
+ }
632
+ if (o.isEmpty()) return;
633
+ const g = o.getSouthWest(), l = o.getNorthEast(), d = g.lng === l.lng && g.lat === l.lat, v = Z0, m = N0, C = q0;
634
+ d ? e.jumpTo({ center: g, zoom: C }) : e.fitBounds(o, { padding: v, maxZoom: m });
635
+ }
636
+ function j0() {
637
+ const e = F("select"), i = F([]), a = F(null), o = I(
638
+ () => (e.value === "draw-polygon" || e.value === "draw-line") && i.value.length > 0
639
+ );
640
+ function g(w) {
641
+ d(), a.value = null, e.value = w;
642
+ }
643
+ function l(w) {
644
+ i.value = [...i.value, w];
645
+ }
646
+ function d() {
647
+ i.value = [];
648
+ }
649
+ function v() {
650
+ const w = [...i.value];
651
+ return i.value = [], w;
652
+ }
653
+ function m(w) {
654
+ a.value = w;
655
+ }
656
+ function C(w, s, c) {
657
+ const f = w.project(s), u = w.project(c);
658
+ return Math.sqrt((f.x - u.x) ** 2 + (f.y - u.y) ** 2);
659
+ }
660
+ function h() {
661
+ const w = [], s = i.value, c = s[0];
662
+ return e.value === "draw-polygon" && s.length >= 3 && c && w.push({
663
+ type: "Feature",
664
+ properties: {},
665
+ geometry: {
666
+ type: "Polygon",
667
+ coordinates: [[...s, c]]
668
+ }
669
+ }), { type: "FeatureCollection", features: w };
670
+ }
671
+ function M(w) {
672
+ const s = [], c = i.value;
673
+ if (c.length >= 1) {
674
+ const f = w ? [...c, w] : [...c];
675
+ f.length >= 2 && s.push({
676
+ type: "Feature",
677
+ properties: {},
678
+ geometry: {
679
+ type: "LineString",
680
+ coordinates: f
681
+ }
682
+ });
683
+ }
684
+ return { type: "FeatureCollection", features: s };
685
+ }
686
+ function L() {
687
+ return {
688
+ type: "FeatureCollection",
689
+ features: i.value.map((w, s) => ({
690
+ type: "Feature",
691
+ properties: { index: s },
692
+ geometry: {
693
+ type: "Point",
694
+ coordinates: w
695
+ }
696
+ }))
697
+ };
698
+ }
699
+ return {
700
+ activeTool: e,
701
+ drawingCoords: i,
702
+ selectedFeatureId: a,
703
+ isDrawing: o,
704
+ setTool: g,
705
+ addDrawingCoord: l,
706
+ cancelDrawing: d,
707
+ finishDrawing: v,
708
+ selectFeature: m,
709
+ distancePx: C,
710
+ getTempGeoJson: h,
711
+ getTempLineGeoJson: M,
712
+ getTempVerticesGeoJson: L
713
+ };
714
+ }
715
+ let G0 = 0;
716
+ function J0(e) {
717
+ const i = crypto.getRandomValues(new Uint8Array(e));
718
+ return Array.from(i, (a) => a.toString(16).padStart(2, "0")).join("");
719
+ }
720
+ function J() {
721
+ return `richpods-${J0(6)}-${++G0}`;
722
+ }
723
+ function K0(e) {
724
+ function i(h) {
725
+ e.value = {
726
+ ...e.value,
727
+ features: [...e.value.features, h]
728
+ };
729
+ }
730
+ function a(h) {
731
+ e.value = {
732
+ ...e.value,
733
+ features: e.value.features.filter((M) => M.id !== h)
734
+ };
735
+ }
736
+ function o(h, M) {
737
+ e.value = {
738
+ ...e.value,
739
+ features: e.value.features.map((L) => L.id === h ? M(L) : L)
740
+ };
741
+ }
742
+ function g(h, M) {
743
+ o(h, (L) => ({
744
+ ...L,
745
+ properties: { ...L.properties, ...M }
746
+ }));
747
+ }
748
+ function l(h) {
749
+ const M = J();
750
+ return {
751
+ type: "Feature",
752
+ id: M,
753
+ geometry: { type: "Polygon", coordinates: h },
754
+ properties: { id: M }
755
+ };
756
+ }
757
+ function d(h) {
758
+ const M = J();
759
+ return {
760
+ type: "Feature",
761
+ id: M,
762
+ geometry: { type: "LineString", coordinates: h },
763
+ properties: { id: M }
764
+ };
765
+ }
766
+ function v(h) {
767
+ const M = J();
768
+ return {
769
+ type: "Feature",
770
+ id: M,
771
+ geometry: { type: "Point", coordinates: h },
772
+ properties: { id: M }
773
+ };
774
+ }
775
+ function m(h) {
776
+ const M = J();
777
+ return {
778
+ type: "Feature",
779
+ id: M,
780
+ geometry: { type: "Point", coordinates: h },
781
+ properties: { id: M, "marker-symbol": "location" }
782
+ };
783
+ }
784
+ function C(h) {
785
+ return e.value.features.find((M) => M.id === h);
786
+ }
787
+ return {
788
+ model: e,
789
+ addFeature: i,
790
+ removeFeature: a,
791
+ updateFeature: o,
792
+ updateFeatureProperties: g,
793
+ createPolygon: l,
794
+ createLineString: d,
795
+ createPoint: v,
796
+ createMarker: m,
797
+ getFeature: C
798
+ };
799
+ }
800
+ const W0 = /* @__PURE__ */ Z({
801
+ __name: "EditorMap",
802
+ props: {
803
+ modelValue: {},
804
+ activeTool: {},
805
+ pmtilesUrl: {},
806
+ pointRadius: {},
807
+ center: {},
808
+ zoom: {}
809
+ },
810
+ emits: ["update:modelValue", "featureClick", "featureDelete", "toolDone"],
811
+ setup(e, { emit: i }) {
812
+ const a = e, o = i, g = F(null);
813
+ let l = null, d = null, v = !1, m = !1, C = [], h = [];
814
+ const M = I(() => k1(a.center, a.zoom)), L = F(a.modelValue);
815
+ R(
816
+ () => a.modelValue,
817
+ (y) => {
818
+ L.value = y;
819
+ }
820
+ );
821
+ const w = K0(L), s = j0(), c = () => a.pointRadius ?? v1;
822
+ let f = null;
823
+ R(
824
+ () => a.activeTool,
825
+ (y) => {
826
+ s.setTool(y), p();
827
+ }
828
+ );
829
+ function u(y) {
830
+ return y.map((_) => ({ id: _.id, geomType: _.geometry.type }));
831
+ }
832
+ function p() {
833
+ if (!l) return;
834
+ const y = l.getCanvas();
835
+ switch (a.activeTool) {
836
+ case "draw-point":
837
+ case "draw-marker":
838
+ case "draw-line":
839
+ case "draw-polygon":
840
+ y.style.cursor = "crosshair";
841
+ break;
842
+ case "eraser":
843
+ y.style.cursor = "pointer";
844
+ break;
845
+ default:
846
+ y.style.cursor = "";
847
+ }
848
+ }
849
+ function t() {
850
+ if (!l) return;
851
+ const y = l.getSource(H);
852
+ y && "setData" in y && y.setData(a.modelValue);
853
+ }
854
+ function n() {
855
+ if (!l) return;
856
+ const y = l.getSource(i1);
857
+ y && "setData" in y && y.setData(s.getTempGeoJson());
858
+ const _ = l.getSource(s1);
859
+ _ && "setData" in _ && _.setData(
860
+ s.getTempLineGeoJson(f ?? void 0)
861
+ );
862
+ const S = l.getSource(c1);
863
+ S && "setData" in S && S.setData(s.getTempVerticesGeoJson());
864
+ }
865
+ R(
866
+ () => a.modelValue,
867
+ async () => {
868
+ if (t(), l && m) {
869
+ const y = u(a.modelValue.features);
870
+ w1(l, C, y, "drawing-temp-fill"), C = y, h = Y(y), await Q(l, a.modelValue.features);
871
+ }
872
+ },
873
+ { deep: !0 }
874
+ ), R(
875
+ () => s.drawingCoords.value,
876
+ () => n(),
877
+ { deep: !0 }
878
+ );
879
+ function B(y) {
880
+ if (!m) return;
881
+ const _ = a.activeTool;
882
+ if (_ === "draw-point") {
883
+ const S = [y.lngLat.lng, y.lngLat.lat], A = w.createPoint(S);
884
+ o("update:modelValue", {
885
+ ...a.modelValue,
886
+ features: [...a.modelValue.features, A]
887
+ }), o("toolDone", A.id);
888
+ return;
889
+ }
890
+ if (_ === "draw-marker") {
891
+ const S = [y.lngLat.lng, y.lngLat.lat], A = w.createMarker(S);
892
+ o("update:modelValue", {
893
+ ...a.modelValue,
894
+ features: [...a.modelValue.features, A]
895
+ }), o("toolDone", A.id);
896
+ return;
897
+ }
898
+ if (_ === "draw-polygon" || _ === "draw-line") {
899
+ const S = [y.lngLat.lng, y.lngLat.lat], A = s.drawingCoords.value;
900
+ if (_ === "draw-polygon" && A.length >= 3) {
901
+ const T = A[0];
902
+ if (T && l && s.distancePx(l, S, T) < c()) {
903
+ const $ = s.finishDrawing(), N = $[0];
904
+ if (N) {
905
+ const M1 = [...$, N], n1 = w.createPolygon([M1]);
906
+ o("update:modelValue", {
907
+ ...a.modelValue,
908
+ features: [...a.modelValue.features, n1]
909
+ }), o("toolDone", n1.id);
910
+ return;
911
+ }
912
+ }
913
+ }
914
+ if (_ === "draw-line" && A.length >= 2) {
915
+ const T = A[A.length - 1];
916
+ if (T && l && s.distancePx(l, S, T) < c()) {
917
+ const $ = s.finishDrawing(), N = w.createLineString($);
918
+ o("update:modelValue", {
919
+ ...a.modelValue,
920
+ features: [...a.modelValue.features, N]
921
+ }), o("toolDone", N.id);
922
+ return;
923
+ }
924
+ }
925
+ s.addDrawingCoord(S);
926
+ return;
927
+ }
928
+ if (_ === "eraser") {
929
+ const A = l?.queryRenderedFeatures(y.point, { layers: h })?.[0];
930
+ if (A) {
931
+ const T = A.id;
932
+ T && o("featureDelete", T);
933
+ }
934
+ return;
935
+ }
936
+ if (_ === "select") {
937
+ const A = l?.queryRenderedFeatures(y.point, { layers: h })?.[0];
938
+ if (A) {
939
+ const T = A.id;
940
+ if (T) {
941
+ const $ = w.getFeature(T);
942
+ $ && o("featureClick", $);
943
+ }
944
+ } else
945
+ o("featureClick", null);
946
+ return;
947
+ }
948
+ }
949
+ function O(y) {
950
+ if (m && (f = [y.lngLat.lng, y.lngLat.lat], s.isDrawing.value && n(), a.activeTool === "select" && !s.isDrawing.value)) {
951
+ const S = l?.queryRenderedFeatures(y.point, { layers: h })?.[0];
952
+ if (S) {
953
+ const A = S.properties?.title, T = S.properties?.description;
954
+ if (A || T) {
955
+ d || (d = new p1({
956
+ closeButton: !1,
957
+ closeOnClick: !1,
958
+ offset: 10,
959
+ className: "tge-popup-container"
960
+ }));
961
+ let $ = "";
962
+ A && ($ += `<h3 class="tge-popup__title">${r1(A)}</h3>`), T && ($ += `<p class="tge-popup__description">${r1(T)}</p>`), d.setLngLat(y.lngLat).setHTML($).addTo(l);
963
+ } else
964
+ d?.remove();
965
+ } else
966
+ d?.remove();
967
+ }
968
+ }
969
+ function j(y) {
970
+ y.preventDefault(), s.isDrawing.value && (s.cancelDrawing(), n());
971
+ }
972
+ function l1(y) {
973
+ y.key === "Escape" && s.isDrawing.value && (s.cancelDrawing(), n());
974
+ }
975
+ function r1(y) {
976
+ const _ = document.createElement("div");
977
+ return _.textContent = y, _.innerHTML;
978
+ }
979
+ return a1(() => {
980
+ if (!g.value) return;
981
+ if (!v) {
982
+ const _ = new g1();
983
+ U.addProtocol("pmtiles", _.tile), v = !0;
984
+ }
985
+ const { getStyle: y } = y1(a.pmtilesUrl);
986
+ l = new U.Map({
987
+ container: g.value,
988
+ style: y(),
989
+ center: a.center ?? m1,
990
+ zoom: a.zoom ?? f1,
991
+ attributionControl: !1
992
+ }), l.addControl(
993
+ new U.AttributionControl({
994
+ compact: !0,
995
+ customAttribution: "OpenStreetMap contributors"
996
+ }),
997
+ "bottom-left"
998
+ ), l.addControl(new U.NavigationControl(), "bottom-left"), l.addControl(
999
+ new U.GeolocateControl({
1000
+ positionOptions: { enableHighAccuracy: !1 },
1001
+ trackUserLocation: !1,
1002
+ fitBoundsOptions: { maxZoom: 13 }
1003
+ }),
1004
+ "bottom-left"
1005
+ ), l.on("load", async () => {
1006
+ if (!l) return;
1007
+ l.addSource(H, {
1008
+ type: "geojson",
1009
+ data: a.modelValue,
1010
+ promoteId: "id"
1011
+ }), l.addSource(i1, {
1012
+ type: "geojson",
1013
+ data: { type: "FeatureCollection", features: [] }
1014
+ }), l.addSource(s1, {
1015
+ type: "geojson",
1016
+ data: { type: "FeatureCollection", features: [] }
1017
+ }), l.addSource(c1, {
1018
+ type: "geojson",
1019
+ data: { type: "FeatureCollection", features: [] }
1020
+ });
1021
+ for (let S = a.modelValue.features.length - 1; S >= 0; S--) {
1022
+ const A = a.modelValue.features[S];
1023
+ for (const T of W(A.id, A.geometry.type))
1024
+ l.addLayer(T);
1025
+ }
1026
+ const _ = D1();
1027
+ for (const S of _)
1028
+ l.addLayer(S);
1029
+ l.addLayer(B1(null)), C = u(a.modelValue.features), h = Y(C), await Q(l, a.modelValue.features), M.value && l.once("idle", () => {
1030
+ l && b1(l, a.modelValue.features);
1031
+ }), m = !0, p();
1032
+ }), l.on("click", B), l.on("mousemove", O), l.on("contextmenu", j), document.addEventListener("keydown", l1);
1033
+ }), u1(() => {
1034
+ document.removeEventListener("keydown", l1), d?.remove(), l?.remove(), l = null;
1035
+ }), (y, _) => (k(), b("div", {
1036
+ ref_key: "mapContainer",
1037
+ ref: g,
1038
+ class: "tge-map"
1039
+ }, null, 512));
1040
+ }
1041
+ }), Y0 = { class: "tge-toolbar" }, Q0 = ["title", "onClick"], X0 = {
1042
+ class: "tge-toolbar__icon",
1043
+ viewBox: "0 0 24 24",
1044
+ width: "22",
1045
+ height: "22"
1046
+ }, e2 = {
1047
+ key: 0,
1048
+ d: "M5 3l14 8-6.5 1.5L11 19z",
1049
+ fill: "currentColor",
1050
+ stroke: "currentColor",
1051
+ "stroke-width": "1",
1052
+ "stroke-linejoin": "round"
1053
+ }, t2 = {
1054
+ key: 1,
1055
+ cx: "12",
1056
+ cy: "12",
1057
+ r: "6",
1058
+ fill: "currentColor",
1059
+ stroke: "currentColor",
1060
+ "stroke-width": "2"
1061
+ }, a2 = {
1062
+ key: 5,
1063
+ d: "M16.24 3.56l4.2 4.2a2 2 0 010 2.83L11.9 19.14a2 2 0 01-2.83 0L4.56 14.6a2 2 0 010-2.83l8.85-8.85a2 2 0 012.83.64zM4 21h16",
1064
+ fill: "none",
1065
+ stroke: "currentColor",
1066
+ "stroke-width": "2",
1067
+ "stroke-linecap": "round",
1068
+ "stroke-linejoin": "round"
1069
+ }, o2 = /* @__PURE__ */ Z({
1070
+ __name: "EditorToolbar",
1071
+ props: {
1072
+ activeTool: {},
1073
+ l10n: {}
1074
+ },
1075
+ emits: ["update:activeTool"],
1076
+ setup(e, { emit: i }) {
1077
+ const a = e, o = i, g = [
1078
+ { mode: "select", labelKey: "toolSelect", icon: "cursor" },
1079
+ { mode: "draw-point", labelKey: "toolPoint", icon: "point" },
1080
+ { mode: "draw-marker", labelKey: "toolMarker", icon: "marker" },
1081
+ { mode: "draw-line", labelKey: "toolLine", icon: "line" },
1082
+ { mode: "draw-polygon", labelKey: "toolPolygon", icon: "polygon" },
1083
+ { mode: "eraser", labelKey: "toolEraser", icon: "eraser" }
1084
+ ];
1085
+ function l(d) {
1086
+ o("update:activeTool", d);
1087
+ }
1088
+ return (d, v) => (k(), b("div", Y0, [
1089
+ (k(), b(z, null, o1(g, (m) => r("button", {
1090
+ key: m.mode,
1091
+ class: q(["tge-toolbar__btn", {
1092
+ "tge-toolbar__btn--active": a.activeTool === m.mode,
1093
+ "tge-toolbar__btn--eraser": m.mode === "eraser"
1094
+ }]),
1095
+ title: a.l10n[m.labelKey],
1096
+ onClick: (C) => l(m.mode)
1097
+ }, [
1098
+ (k(), b("svg", X0, [
1099
+ m.icon === "cursor" ? (k(), b("path", e2)) : m.icon === "point" ? (k(), b("circle", t2)) : m.icon === "marker" ? (k(), b(z, { key: 2 }, [
1100
+ v[0] || (v[0] = r("circle", {
1101
+ cx: "12",
1102
+ cy: "9",
1103
+ r: "1.5",
1104
+ fill: "currentColor"
1105
+ }, null, -1)),
1106
+ v[1] || (v[1] = r("path", {
1107
+ d: "M12 2C7.86 2 4.5 5.2 4.5 9.18c0 1.88.86 4.39 2.55 7.44 1.36 2.45 2.93 4.67 3.75 5.78a1.49 1.49 0 002.4 0c.82-1.1 2.39-3.33 3.75-5.78 1.69-3.05 2.55-5.56 2.55-7.44C19.5 5.2 16.14 2 12 2zm0 10.5a3 3 0 110-6 3 3 0 010 6z",
1108
+ fill: "currentColor"
1109
+ }, null, -1))
1110
+ ], 64)) : m.icon === "line" ? (k(), b(z, { key: 3 }, [
1111
+ v[2] || (v[2] = r("path", {
1112
+ d: "M4 20L20 4",
1113
+ fill: "none",
1114
+ stroke: "currentColor",
1115
+ "stroke-width": "2.5",
1116
+ "stroke-linecap": "round"
1117
+ }, null, -1)),
1118
+ v[3] || (v[3] = r("circle", {
1119
+ cx: "4",
1120
+ cy: "20",
1121
+ r: "2.5",
1122
+ fill: "currentColor"
1123
+ }, null, -1)),
1124
+ v[4] || (v[4] = r("circle", {
1125
+ cx: "20",
1126
+ cy: "4",
1127
+ r: "2.5",
1128
+ fill: "currentColor"
1129
+ }, null, -1))
1130
+ ], 64)) : m.icon === "polygon" ? (k(), b(z, { key: 4 }, [
1131
+ v[5] || (v[5] = d1('<polygon points="12,3 21,10 18,20 6,20 3,10" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></polygon><circle cx="12" cy="3" r="2" fill="currentColor"></circle><circle cx="21" cy="10" r="2" fill="currentColor"></circle><circle cx="18" cy="20" r="2" fill="currentColor"></circle><circle cx="6" cy="20" r="2" fill="currentColor"></circle><circle cx="3" cy="10" r="2" fill="currentColor"></circle>', 6))
1132
+ ], 64)) : m.icon === "eraser" ? (k(), b("path", a2)) : D("", !0)
1133
+ ]))
1134
+ ], 10, Q0)), 64))
1135
+ ]));
1136
+ }
1137
+ }), l2 = { class: "tge-layer-item__header" }, r2 = { class: "tge-layer-item__label" }, n2 = {
1138
+ key: 0,
1139
+ class: "tge-layer-item__body"
1140
+ }, i2 = { class: "tge-property-editor__label" }, s2 = ["value"], c2 = { class: "tge-property-editor__label" }, u2 = ["value"], d2 = { class: "tge-property-editor__label" }, p2 = ["value"], g2 = { class: "tge-property-editor__label" }, v2 = ["value"], m2 = { class: "tge-property-editor__label" }, f2 = ["value"], y2 = { class: "tge-property-editor__label" }, h2 = ["value"], w2 = { class: "tge-property-editor__label" }, x2 = ["value"], k2 = { class: "tge-property-editor__label" }, b2 = ["value"], M2 = { class: "tge-property-editor__label" }, C2 = ["value"], L2 = { class: "tge-property-editor__label" }, _2 = ["value"], A2 = { class: "tge-property-editor__label" }, S2 = ["value"], V2 = { class: "tge-property-editor__label" }, T2 = ["value"], P2 = { class: "tge-property-editor__label" }, B2 = ["value"], D2 = { class: "tge-property-editor__label" }, F2 = ["value"], I2 = { class: "tge-property-editor__label" }, z2 = ["value"], $2 = { value: "top" }, H2 = { value: "bottom" }, U2 = { value: "left" }, E2 = { value: "right" }, R2 = { class: "tge-property-editor__label" }, O2 = { class: "tge-icon-picker" }, Z2 = ["src"], N2 = { class: "tge-icon-picker__current" }, q2 = {
1141
+ key: 1,
1142
+ class: "tge-icon-picker__placeholder"
1143
+ }, j2 = {
1144
+ key: 0,
1145
+ class: "tge-icon-picker__dropdown"
1146
+ }, G2 = ["placeholder"], J2 = { class: "tge-icon-picker__grid" }, K2 = ["title", "onClick"], W2 = ["src"], Y2 = {
1147
+ key: 0,
1148
+ class: "tge-icon-picker__empty"
1149
+ }, Q2 = { class: "tge-property-editor__label" }, X2 = ["value"], ee = { class: "tge-property-editor__label" }, te = ["value"], ae = { value: "small" }, oe = { value: "medium" }, le = { value: "large" }, re = { class: "tge-property-editor__label" }, ne = ["value"], ie = { class: "tge-property-editor__label" }, se = ["value"], ce = { value: "top" }, ue = { value: "bottom" }, de = { value: "left" }, pe = { value: "right" }, ge = /* @__PURE__ */ Z({
1150
+ __name: "LayerItem",
1151
+ props: {
1152
+ feature: {},
1153
+ label: {},
1154
+ expanded: { type: Boolean },
1155
+ selected: { type: Boolean },
1156
+ dragging: { type: Boolean },
1157
+ reorderable: { type: Boolean },
1158
+ l10n: {},
1159
+ iconUrls: {}
1160
+ },
1161
+ emits: ["toggle", "update", "select", "delete", "dragstart", "dragend"],
1162
+ setup(e, { emit: i }) {
1163
+ const a = e, o = i, g = I(() => a.feature.geometry.type), l = I(() => g.value === "Polygon"), d = I(
1164
+ () => g.value === "Polygon" || g.value === "LineString"
1165
+ ), v = I(
1166
+ () => g.value === "Point" && !a.feature.properties["marker-symbol"]
1167
+ ), m = I(
1168
+ () => g.value === "Point" && !!a.feature.properties["marker-symbol"]
1169
+ ), C = I(() => {
1170
+ const p = a.feature.properties;
1171
+ return g.value === "Polygon" ? p.fill ?? null : g.value === "LineString" ? p.stroke ?? null : v.value ? p.fill ?? null : p["marker-color"] ?? null;
1172
+ }), h = F(""), M = F(!1), L = I(() => {
1173
+ const p = h.value.toLowerCase();
1174
+ return p ? t1.filter((t) => t.includes(p)) : t1;
1175
+ }), w = I(
1176
+ () => a.feature.properties?.["marker-symbol"] ?? ""
1177
+ );
1178
+ function s(p) {
1179
+ c("marker-symbol", p), M.value = !1, h.value = "";
1180
+ }
1181
+ function c(p, t) {
1182
+ o("update", a.feature.id, { [p]: t });
1183
+ }
1184
+ function f(p, t) {
1185
+ const n = parseFloat(p);
1186
+ return isNaN(n) ? t : n;
1187
+ }
1188
+ function u() {
1189
+ o("select"), o("toggle");
1190
+ }
1191
+ return (p, t) => (k(), b("div", {
1192
+ class: q(["tge-layer-item", {
1193
+ "tge-layer-item--selected": e.selected,
1194
+ "tge-layer-item--dragging": e.dragging
1195
+ }])
1196
+ }, [
1197
+ r("div", l2, [
1198
+ e.reorderable ? (k(), b("div", {
1199
+ key: 0,
1200
+ class: "tge-layer-item__drag-handle",
1201
+ draggable: "true",
1202
+ onDragstart: t[0] || (t[0] = (n) => p.$emit("dragstart", n)),
1203
+ onDragend: t[1] || (t[1] = (n) => p.$emit("dragend", n))
1204
+ }, [...t[24] || (t[24] = [
1205
+ d1('<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><circle cx="5" cy="3" r="1.5"></circle><circle cx="11" cy="3" r="1.5"></circle><circle cx="5" cy="8" r="1.5"></circle><circle cx="11" cy="8" r="1.5"></circle><circle cx="5" cy="13" r="1.5"></circle><circle cx="11" cy="13" r="1.5"></circle></svg>', 1)
1206
+ ])], 32)) : D("", !0),
1207
+ r("button", {
1208
+ class: "tge-layer-item__header-main",
1209
+ type: "button",
1210
+ onClick: u
1211
+ }, [
1212
+ g.value === "Polygon" ? (k(), b("svg", {
1213
+ key: 0,
1214
+ class: "tge-layer-item__icon",
1215
+ style: G(C.value ? { color: C.value } : void 0),
1216
+ viewBox: "0 0 24 24",
1217
+ fill: "none"
1218
+ }, [...t[25] || (t[25] = [
1219
+ r("polygon", {
1220
+ points: "12,3 21,10 18,20 6,20 3,10",
1221
+ stroke: "currentColor",
1222
+ "stroke-width": "2",
1223
+ "stroke-linejoin": "round",
1224
+ fill: "currentColor",
1225
+ "fill-opacity": "0.2"
1226
+ }, null, -1)
1227
+ ])], 4)) : g.value === "LineString" ? (k(), b("svg", {
1228
+ key: 1,
1229
+ class: "tge-layer-item__icon",
1230
+ style: G(C.value ? { color: C.value } : void 0),
1231
+ viewBox: "0 0 16 16",
1232
+ fill: "none"
1233
+ }, [...t[26] || (t[26] = [
1234
+ r("polyline", {
1235
+ points: "2,13 7,5 10,9 14,3",
1236
+ stroke: "currentColor",
1237
+ "stroke-width": "1.5",
1238
+ fill: "none",
1239
+ "stroke-linecap": "round",
1240
+ "stroke-linejoin": "round"
1241
+ }, null, -1)
1242
+ ])], 4)) : v.value ? (k(), b("svg", {
1243
+ key: 2,
1244
+ class: "tge-layer-item__icon",
1245
+ style: G(C.value ? { color: C.value } : void 0),
1246
+ viewBox: "0 0 16 16",
1247
+ fill: "none"
1248
+ }, [...t[27] || (t[27] = [
1249
+ r("circle", {
1250
+ cx: "8",
1251
+ cy: "8",
1252
+ r: "4",
1253
+ stroke: "currentColor",
1254
+ "stroke-width": "1.5",
1255
+ fill: "currentColor",
1256
+ "fill-opacity": "0.2"
1257
+ }, null, -1)
1258
+ ])], 4)) : (k(), b("svg", {
1259
+ key: 3,
1260
+ class: "tge-layer-item__icon",
1261
+ style: G(C.value ? { color: C.value } : void 0),
1262
+ viewBox: "0 0 24 24",
1263
+ fill: "none"
1264
+ }, [...t[28] || (t[28] = [
1265
+ r("circle", {
1266
+ cx: "12",
1267
+ cy: "9",
1268
+ r: "1.5",
1269
+ fill: "currentColor"
1270
+ }, null, -1),
1271
+ r("path", {
1272
+ d: "M12 2C7.86 2 4.5 5.2 4.5 9.18c0 1.88.86 4.39 2.55 7.44 1.36 2.45 2.93 4.67 3.75 5.78a1.49 1.49 0 002.4 0c.82-1.1 2.39-3.33 3.75-5.78 1.69-3.05 2.55-5.56 2.55-7.44C19.5 5.2 16.14 2 12 2zm0 10.5a3 3 0 110-6 3 3 0 010 6z",
1273
+ fill: "currentColor"
1274
+ }, null, -1)
1275
+ ])], 4)),
1276
+ r("span", r2, x(e.label), 1),
1277
+ (k(), b("svg", {
1278
+ class: q(["tge-layer-item__chevron", { "tge-layer-item__chevron--open": e.expanded }]),
1279
+ viewBox: "0 0 16 16",
1280
+ fill: "none",
1281
+ width: "14",
1282
+ height: "14"
1283
+ }, [...t[29] || (t[29] = [
1284
+ r("polyline", {
1285
+ points: "5,3 11,8 5,13",
1286
+ stroke: "currentColor",
1287
+ "stroke-width": "1.5",
1288
+ fill: "none",
1289
+ "stroke-linecap": "round",
1290
+ "stroke-linejoin": "round"
1291
+ }, null, -1)
1292
+ ])], 2))
1293
+ ])
1294
+ ]),
1295
+ e.expanded ? (k(), b("div", n2, [
1296
+ r("label", i2, [
1297
+ V(x(e.l10n.propTitle) + " ", 1),
1298
+ r("input", {
1299
+ type: "text",
1300
+ class: "tge-property-editor__input text-sm",
1301
+ value: e.feature.properties.title ?? "",
1302
+ onInput: t[2] || (t[2] = (n) => c("title", n.target.value))
1303
+ }, null, 40, s2)
1304
+ ]),
1305
+ r("label", c2, [
1306
+ V(x(e.l10n.propDescription) + " ", 1),
1307
+ r("textarea", {
1308
+ class: "tge-property-editor__textarea text-sm",
1309
+ rows: "3",
1310
+ value: e.feature.properties.description ?? "",
1311
+ onInput: t[3] || (t[3] = (n) => c("description", n.target.value))
1312
+ }, null, 40, u2)
1313
+ ]),
1314
+ l.value ? (k(), b(z, { key: 0 }, [
1315
+ r("label", d2, [
1316
+ V(x(e.l10n.propFillColor) + " ", 1),
1317
+ r("input", {
1318
+ type: "color",
1319
+ class: "tge-property-editor__color",
1320
+ value: e.feature.properties.fill ?? "#555555",
1321
+ onInput: t[4] || (t[4] = (n) => c("fill", n.target.value))
1322
+ }, null, 40, p2)
1323
+ ]),
1324
+ r("label", g2, [
1325
+ V(x(e.l10n.propFillOpacity) + " ", 1),
1326
+ r("input", {
1327
+ type: "range",
1328
+ min: "0",
1329
+ max: "1",
1330
+ step: "0.05",
1331
+ class: "tge-property-editor__range",
1332
+ value: e.feature.properties["fill-opacity"] ?? 0.6,
1333
+ onInput: t[5] || (t[5] = (n) => c(
1334
+ "fill-opacity",
1335
+ f(n.target.value, 0.6)
1336
+ ))
1337
+ }, null, 40, v2)
1338
+ ])
1339
+ ], 64)) : D("", !0),
1340
+ d.value ? (k(), b(z, { key: 1 }, [
1341
+ r("label", m2, [
1342
+ V(x(e.l10n.propStrokeColor) + " ", 1),
1343
+ r("input", {
1344
+ type: "color",
1345
+ class: "tge-property-editor__color",
1346
+ value: e.feature.properties.stroke ?? "#555555",
1347
+ onInput: t[6] || (t[6] = (n) => c("stroke", n.target.value))
1348
+ }, null, 40, f2)
1349
+ ]),
1350
+ r("label", y2, [
1351
+ V(x(e.l10n.propStrokeOpacity) + " ", 1),
1352
+ r("input", {
1353
+ type: "range",
1354
+ min: "0",
1355
+ max: "1",
1356
+ step: "0.05",
1357
+ class: "tge-property-editor__range",
1358
+ value: e.feature.properties["stroke-opacity"] ?? 1,
1359
+ onInput: t[7] || (t[7] = (n) => c(
1360
+ "stroke-opacity",
1361
+ f(n.target.value, 1)
1362
+ ))
1363
+ }, null, 40, h2)
1364
+ ]),
1365
+ r("label", w2, [
1366
+ V(x(e.l10n.propStrokeWidth) + " ", 1),
1367
+ r("input", {
1368
+ type: "number",
1369
+ min: "0",
1370
+ max: "20",
1371
+ class: "tge-property-editor__input tge-property-editor__input--sm text-sm",
1372
+ value: e.feature.properties["stroke-width"] ?? 2,
1373
+ onInput: t[8] || (t[8] = (n) => c(
1374
+ "stroke-width",
1375
+ f(n.target.value, 2)
1376
+ ))
1377
+ }, null, 40, x2)
1378
+ ])
1379
+ ], 64)) : D("", !0),
1380
+ v.value ? (k(), b(z, { key: 2 }, [
1381
+ r("label", k2, [
1382
+ V(x(e.l10n.propPointColor) + " ", 1),
1383
+ r("input", {
1384
+ type: "color",
1385
+ class: "tge-property-editor__color",
1386
+ value: e.feature.properties.fill ?? "#555555",
1387
+ onInput: t[9] || (t[9] = (n) => c("fill", n.target.value))
1388
+ }, null, 40, b2)
1389
+ ]),
1390
+ r("label", M2, [
1391
+ V(x(e.l10n.propFillOpacity) + " ", 1),
1392
+ r("input", {
1393
+ type: "range",
1394
+ min: "0",
1395
+ max: "1",
1396
+ step: "0.05",
1397
+ class: "tge-property-editor__range",
1398
+ value: e.feature.properties["fill-opacity"] ?? 0.6,
1399
+ onInput: t[10] || (t[10] = (n) => c(
1400
+ "fill-opacity",
1401
+ f(n.target.value, 0.6)
1402
+ ))
1403
+ }, null, 40, C2)
1404
+ ]),
1405
+ r("label", L2, [
1406
+ V(x(e.l10n.propStrokeColor) + " ", 1),
1407
+ r("input", {
1408
+ type: "color",
1409
+ class: "tge-property-editor__color",
1410
+ value: e.feature.properties.stroke ?? "#ffffff",
1411
+ onInput: t[11] || (t[11] = (n) => c("stroke", n.target.value))
1412
+ }, null, 40, _2)
1413
+ ]),
1414
+ r("label", A2, [
1415
+ V(x(e.l10n.propStrokeOpacity) + " ", 1),
1416
+ r("input", {
1417
+ type: "range",
1418
+ min: "0",
1419
+ max: "1",
1420
+ step: "0.05",
1421
+ class: "tge-property-editor__range",
1422
+ value: e.feature.properties["stroke-opacity"] ?? 1,
1423
+ onInput: t[12] || (t[12] = (n) => c(
1424
+ "stroke-opacity",
1425
+ f(n.target.value, 1)
1426
+ ))
1427
+ }, null, 40, S2)
1428
+ ]),
1429
+ r("label", V2, [
1430
+ V(x(e.l10n.propStrokeWidth) + " ", 1),
1431
+ r("input", {
1432
+ type: "number",
1433
+ min: "0",
1434
+ max: "20",
1435
+ class: "tge-property-editor__input tge-property-editor__input--sm text-sm",
1436
+ value: e.feature.properties["stroke-width"] ?? 2,
1437
+ onInput: t[13] || (t[13] = (n) => c(
1438
+ "stroke-width",
1439
+ f(n.target.value, 2)
1440
+ ))
1441
+ }, null, 40, T2)
1442
+ ]),
1443
+ r("label", P2, [
1444
+ V(x(e.l10n.propCircleRadius) + " ", 1),
1445
+ r("input", {
1446
+ type: "number",
1447
+ min: "1",
1448
+ max: "50",
1449
+ class: "tge-property-editor__input tge-property-editor__input--sm text-sm",
1450
+ value: e.feature.properties["circle-radius"] ?? 8,
1451
+ onInput: t[14] || (t[14] = (n) => c(
1452
+ "circle-radius",
1453
+ f(n.target.value, 8)
1454
+ ))
1455
+ }, null, 40, B2)
1456
+ ]),
1457
+ r("label", D2, [
1458
+ V(x(e.l10n.propLabel) + " ", 1),
1459
+ r("input", {
1460
+ type: "text",
1461
+ class: "tge-property-editor__input text-sm",
1462
+ value: e.feature.properties["marker-label"] ?? "",
1463
+ onInput: t[15] || (t[15] = (n) => c("marker-label", n.target.value))
1464
+ }, null, 40, F2)
1465
+ ]),
1466
+ r("label", I2, [
1467
+ V(x(e.l10n.propLabelPosition) + " ", 1),
1468
+ r("select", {
1469
+ class: "tge-property-editor__select text-sm",
1470
+ value: e.feature.properties["marker-label-position"] ?? "top",
1471
+ onChange: t[16] || (t[16] = (n) => c(
1472
+ "marker-label-position",
1473
+ n.target.value
1474
+ ))
1475
+ }, [
1476
+ r("option", $2, x(e.l10n.propPositionTop), 1),
1477
+ r("option", H2, x(e.l10n.propPositionBottom), 1),
1478
+ r("option", U2, x(e.l10n.propPositionLeft), 1),
1479
+ r("option", E2, x(e.l10n.propPositionRight), 1)
1480
+ ], 40, z2)
1481
+ ])
1482
+ ], 64)) : D("", !0),
1483
+ m.value ? (k(), b(z, { key: 3 }, [
1484
+ r("div", R2, [
1485
+ V(x(e.l10n.propIcon) + " ", 1),
1486
+ r("div", O2, [
1487
+ r("button", {
1488
+ class: "tge-icon-picker__trigger",
1489
+ type: "button",
1490
+ onClick: t[17] || (t[17] = (n) => M.value = !M.value)
1491
+ }, [
1492
+ w.value ? (k(), b(z, { key: 0 }, [
1493
+ e.iconUrls.get(w.value) ? (k(), b("img", {
1494
+ key: 0,
1495
+ src: e.iconUrls.get(w.value),
1496
+ class: "tge-icon-picker__preview",
1497
+ alt: ""
1498
+ }, null, 8, Z2)) : D("", !0),
1499
+ r("span", N2, x(w.value), 1)
1500
+ ], 64)) : (k(), b("span", q2, x(e.l10n.propIconNone), 1))
1501
+ ])
1502
+ ]),
1503
+ M.value ? (k(), b("div", j2, [
1504
+ C1(r("input", {
1505
+ type: "text",
1506
+ class: "tge-icon-picker__search text-sm",
1507
+ "onUpdate:modelValue": t[18] || (t[18] = (n) => h.value = n),
1508
+ placeholder: e.l10n.propIconSearch
1509
+ }, null, 8, G2), [
1510
+ [L1, h.value]
1511
+ ]),
1512
+ r("div", J2, [
1513
+ (k(!0), b(z, null, o1(L.value, (n) => (k(), b("button", {
1514
+ key: n,
1515
+ class: q(["tge-icon-picker__item", {
1516
+ "tge-icon-picker__item--active": n === w.value
1517
+ }]),
1518
+ type: "button",
1519
+ title: n,
1520
+ onClick: (B) => s(n)
1521
+ }, [
1522
+ e.iconUrls.get(n) ? (k(), b("img", {
1523
+ key: 0,
1524
+ src: e.iconUrls.get(n),
1525
+ class: "tge-icon-picker__item-icon",
1526
+ alt: ""
1527
+ }, null, 8, W2)) : D("", !0),
1528
+ r("span", null, x(n), 1)
1529
+ ], 10, K2))), 128))
1530
+ ]),
1531
+ L.value.length === 0 ? (k(), b("div", Y2, x(e.l10n.propIconNoResults), 1)) : D("", !0)
1532
+ ])) : D("", !0)
1533
+ ]),
1534
+ r("label", Q2, [
1535
+ V(x(e.l10n.propMarkerColor) + " ", 1),
1536
+ r("input", {
1537
+ type: "color",
1538
+ class: "tge-property-editor__color",
1539
+ value: e.feature.properties["marker-color"] ?? "#7e7e7e",
1540
+ onInput: t[19] || (t[19] = (n) => c("marker-color", n.target.value))
1541
+ }, null, 40, X2)
1542
+ ]),
1543
+ r("label", ee, [
1544
+ V(x(e.l10n.propMarkerSize) + " ", 1),
1545
+ r("select", {
1546
+ class: "tge-property-editor__select text-sm",
1547
+ value: e.feature.properties["marker-size"] ?? "medium",
1548
+ onChange: t[20] || (t[20] = (n) => c(
1549
+ "marker-size",
1550
+ n.target.value
1551
+ ))
1552
+ }, [
1553
+ r("option", ae, x(e.l10n.propSizeSmall), 1),
1554
+ r("option", oe, x(e.l10n.propSizeMedium), 1),
1555
+ r("option", le, x(e.l10n.propSizeLarge), 1)
1556
+ ], 40, te)
1557
+ ]),
1558
+ r("label", re, [
1559
+ V(x(e.l10n.propLabel) + " ", 1),
1560
+ r("input", {
1561
+ type: "text",
1562
+ class: "tge-property-editor__input text-sm",
1563
+ value: e.feature.properties["marker-label"] ?? "",
1564
+ onInput: t[21] || (t[21] = (n) => c("marker-label", n.target.value))
1565
+ }, null, 40, ne)
1566
+ ]),
1567
+ r("label", ie, [
1568
+ V(x(e.l10n.propLabelPosition) + " ", 1),
1569
+ r("select", {
1570
+ class: "tge-property-editor__select text-sm",
1571
+ value: e.feature.properties["marker-label-position"] ?? "top",
1572
+ onChange: t[22] || (t[22] = (n) => c(
1573
+ "marker-label-position",
1574
+ n.target.value
1575
+ ))
1576
+ }, [
1577
+ r("option", ce, x(e.l10n.propPositionTop), 1),
1578
+ r("option", ue, x(e.l10n.propPositionBottom), 1),
1579
+ r("option", de, x(e.l10n.propPositionLeft), 1),
1580
+ r("option", pe, x(e.l10n.propPositionRight), 1)
1581
+ ], 40, se)
1582
+ ])
1583
+ ], 64)) : D("", !0),
1584
+ r("button", {
1585
+ class: "tge-layer-item__delete",
1586
+ type: "button",
1587
+ onClick: t[23] || (t[23] = (n) => p.$emit("delete", e.feature.id))
1588
+ }, x(e.l10n.layerDelete), 1)
1589
+ ])) : D("", !0)
1590
+ ], 2));
1591
+ }
1592
+ }), ve = { class: "tge-layer-panel" }, me = { class: "tge-layer-panel__header" }, fe = {
1593
+ key: 0,
1594
+ class: "tge-layer-panel__drop-indicator"
1595
+ }, ye = {
1596
+ key: 0,
1597
+ class: "tge-layer-panel__drop-indicator"
1598
+ }, he = {
1599
+ key: 0,
1600
+ class: "tge-layer-panel__empty"
1601
+ }, we = /* @__PURE__ */ Z({
1602
+ __name: "LayerPanel",
1603
+ props: {
1604
+ features: {},
1605
+ selectedFeatureId: {},
1606
+ l10n: {},
1607
+ iconUrls: {}
1608
+ },
1609
+ emits: ["update", "select", "delete", "reorder", "close"],
1610
+ setup(e, { emit: i }) {
1611
+ const a = e, o = i, g = F(/* @__PURE__ */ new Set()), l = F(null), d = F(null), v = I(() => {
1612
+ const u = { Point: 0, Marker: 0, LineString: 0, Polygon: 0 }, p = /* @__PURE__ */ new Map();
1613
+ for (const t of a.features) {
1614
+ const n = t.geometry.type;
1615
+ if (t.properties.title)
1616
+ n === "Point" ? !!t.properties["marker-symbol"] ? u.Marker++ : u.Point++ : u[n]++, p.set(t.id, t.properties.title);
1617
+ else if (n === "Point")
1618
+ !!t.properties["marker-symbol"] ? (u.Marker++, p.set(t.id, `${a.l10n.layerMarker} #${u.Marker}`)) : (u.Point++, p.set(t.id, `${a.l10n.layerPoint} #${u.Point}`));
1619
+ else {
1620
+ u[n]++;
1621
+ const B = n === "LineString" ? a.l10n.layerLine : a.l10n.layerPolygon;
1622
+ p.set(t.id, `${B} #${u[n]}`);
1623
+ }
1624
+ }
1625
+ return p;
1626
+ });
1627
+ R(
1628
+ () => a.selectedFeatureId,
1629
+ async (u) => {
1630
+ if (!u) return;
1631
+ g.value = /* @__PURE__ */ new Set([...g.value, u]), await _1(), document.querySelector(`[data-feature-id="${u}"]`)?.scrollIntoView({ behavior: "smooth", block: "nearest" });
1632
+ }
1633
+ ), R(
1634
+ () => a.features,
1635
+ (u) => {
1636
+ const p = new Set(u.map((n) => n.id)), t = new Set([...g.value].filter((n) => p.has(n)));
1637
+ t.size !== g.value.size && (g.value = t);
1638
+ }
1639
+ );
1640
+ function m(u) {
1641
+ const p = new Set(g.value);
1642
+ p.has(u) ? p.delete(u) : p.add(u), g.value = p;
1643
+ }
1644
+ function C(u) {
1645
+ o("select", u);
1646
+ }
1647
+ function h(u, p) {
1648
+ o("update", u, p);
1649
+ }
1650
+ function M(u, p) {
1651
+ l.value = u, p.dataTransfer && (p.dataTransfer.effectAllowed = "move", p.dataTransfer.setData("text/plain", u));
1652
+ }
1653
+ function L() {
1654
+ l.value = null, d.value = null;
1655
+ }
1656
+ function w(u) {
1657
+ if (u.preventDefault(), !l.value) return;
1658
+ const p = u.currentTarget, t = Array.from(p.querySelectorAll("[data-feature-id]")), n = u.clientY;
1659
+ let B = t.length;
1660
+ for (let O = 0; O < t.length; O++) {
1661
+ const j = t[O].getBoundingClientRect();
1662
+ if (n < j.top + j.height / 2) {
1663
+ B = O;
1664
+ break;
1665
+ }
1666
+ }
1667
+ d.value = B;
1668
+ }
1669
+ function s(u) {
1670
+ u.currentTarget.contains(u.relatedTarget) || (d.value = null);
1671
+ }
1672
+ function c(u) {
1673
+ u.preventDefault(), !(!l.value || d.value === null) && (o("reorder", l.value, d.value), l.value = null, d.value = null);
1674
+ }
1675
+ function f() {
1676
+ g.value.size !== 0 && (g.value = /* @__PURE__ */ new Set());
1677
+ }
1678
+ return (u, p) => (k(), b("div", ve, [
1679
+ r("div", me, [
1680
+ r("button", {
1681
+ class: "tge-layer-panel__title",
1682
+ type: "button",
1683
+ onClick: f
1684
+ }, x(e.l10n.layerPanelTitle), 1),
1685
+ r("button", {
1686
+ class: "tge-layer-panel__close",
1687
+ type: "button",
1688
+ onClick: p[0] || (p[0] = (t) => u.$emit("close"))
1689
+ }, [...p[2] || (p[2] = [
1690
+ r("svg", {
1691
+ viewBox: "0 0 24 24",
1692
+ width: "18",
1693
+ height: "18",
1694
+ fill: "none"
1695
+ }, [
1696
+ r("path", {
1697
+ d: "M18 6L6 18M6 6l12 12",
1698
+ stroke: "currentColor",
1699
+ "stroke-width": "2",
1700
+ "stroke-linecap": "round"
1701
+ })
1702
+ ], -1)
1703
+ ])])
1704
+ ]),
1705
+ r("div", {
1706
+ class: "tge-layer-panel__list",
1707
+ onDragover: w,
1708
+ onDragleave: s,
1709
+ onDrop: c
1710
+ }, [
1711
+ (k(!0), b(z, null, o1(e.features, (t, n) => (k(), b(z, {
1712
+ key: t.id
1713
+ }, [
1714
+ d.value === n ? (k(), b("div", fe)) : D("", !0),
1715
+ K(ge, {
1716
+ "data-feature-id": t.id,
1717
+ feature: t,
1718
+ label: v.value.get(t.id) ?? "",
1719
+ expanded: g.value.has(t.id),
1720
+ selected: t.id === e.selectedFeatureId,
1721
+ dragging: l.value === t.id,
1722
+ reorderable: e.features.length > 1,
1723
+ l10n: e.l10n,
1724
+ iconUrls: e.iconUrls,
1725
+ onToggle: (B) => m(t.id),
1726
+ onUpdate: h,
1727
+ onSelect: (B) => C(t.id),
1728
+ onDelete: p[1] || (p[1] = (B) => u.$emit("delete", B)),
1729
+ onDragstart: (B) => M(t.id, B),
1730
+ onDragend: L
1731
+ }, null, 8, ["data-feature-id", "feature", "label", "expanded", "selected", "dragging", "reorderable", "l10n", "iconUrls", "onToggle", "onSelect", "onDragstart"])
1732
+ ], 64))), 128)),
1733
+ d.value === e.features.length ? (k(), b("div", ye)) : D("", !0)
1734
+ ], 32),
1735
+ e.features.length === 0 ? (k(), b("p", he, x(e.l10n.layerPanelEmpty), 1)) : D("", !0)
1736
+ ]));
1737
+ }
1738
+ }), xe = { class: "tge-editor" }, Le = /* @__PURE__ */ Z({
1739
+ __name: "GeoJsonEditor",
1740
+ props: /* @__PURE__ */ S1({
1741
+ pmtilesUrl: {},
1742
+ pointRadius: { default: v1 },
1743
+ center: {},
1744
+ zoom: {},
1745
+ l10n: { default: () => ({}) }
1746
+ }, {
1747
+ modelValue: {
1748
+ default: () => ({ type: "FeatureCollection", features: [] })
1749
+ },
1750
+ modelModifiers: {}
1751
+ }),
1752
+ emits: ["update:modelValue"],
1753
+ setup(e) {
1754
+ const i = e, a = I(() => ({ ...T1, ...i.l10n })), o = A1(e, "modelValue"), g = F("select"), l = F(null), d = F(/* @__PURE__ */ new Map());
1755
+ a1(async () => {
1756
+ const s = await Promise.all(
1757
+ t1.map(async (f) => [f, await R0(f)])
1758
+ ), c = /* @__PURE__ */ new Map();
1759
+ for (const [f, u] of s)
1760
+ u && c.set(f, u);
1761
+ d.value = c;
1762
+ });
1763
+ function v(s) {
1764
+ l.value = s?.id ?? null;
1765
+ }
1766
+ function m(s) {
1767
+ o.value = {
1768
+ ...o.value,
1769
+ features: o.value.features.filter((c) => c.id !== s)
1770
+ }, l.value === s && (l.value = null);
1771
+ }
1772
+ function C(s, c) {
1773
+ o.value = {
1774
+ ...o.value,
1775
+ features: o.value.features.map(
1776
+ (f) => f.id === s ? { ...f, properties: { ...f.properties, ...c } } : f
1777
+ )
1778
+ };
1779
+ }
1780
+ function h(s) {
1781
+ g.value = s, s !== "select" && (l.value = null);
1782
+ }
1783
+ function M(s) {
1784
+ g.value = "select", l.value = s;
1785
+ }
1786
+ function L(s) {
1787
+ l.value = s;
1788
+ }
1789
+ function w(s, c) {
1790
+ const f = [...o.value.features], u = f.findIndex((n) => n.id === s);
1791
+ if (u === -1) return;
1792
+ const [p] = f.splice(u, 1), t = u < c ? c - 1 : c;
1793
+ f.splice(t, 0, p), o.value = { ...o.value, features: f };
1794
+ }
1795
+ return (s, c) => (k(), b("div", xe, [
1796
+ K(o2, {
1797
+ activeTool: g.value,
1798
+ l10n: a.value,
1799
+ "onUpdate:activeTool": h
1800
+ }, null, 8, ["activeTool", "l10n"]),
1801
+ K(W0, {
1802
+ modelValue: o.value,
1803
+ activeTool: g.value,
1804
+ pmtilesUrl: i.pmtilesUrl,
1805
+ pointRadius: i.pointRadius,
1806
+ center: i.center,
1807
+ zoom: i.zoom,
1808
+ "onUpdate:modelValue": c[0] || (c[0] = (f) => o.value = f),
1809
+ onFeatureClick: v,
1810
+ onFeatureDelete: m,
1811
+ onToolDone: M
1812
+ }, null, 8, ["modelValue", "activeTool", "pmtilesUrl", "pointRadius", "center", "zoom"]),
1813
+ l.value ? (k(), b("div", {
1814
+ key: 0,
1815
+ class: "tge-editor__backdrop",
1816
+ onClick: c[1] || (c[1] = (f) => l.value = null)
1817
+ })) : D("", !0),
1818
+ K(we, {
1819
+ class: q({ "tge-layer-panel--open": l.value }),
1820
+ features: o.value.features,
1821
+ selectedFeatureId: l.value,
1822
+ l10n: a.value,
1823
+ iconUrls: d.value,
1824
+ onUpdate: C,
1825
+ onSelect: L,
1826
+ onDelete: m,
1827
+ onReorder: w,
1828
+ onClose: c[2] || (c[2] = (f) => l.value = null)
1829
+ }, null, 8, ["class", "features", "selectedFeatureId", "l10n", "iconUrls"])
1830
+ ]));
1831
+ }
1832
+ }), ke = { class: "tge-viewer" }, _e = /* @__PURE__ */ Z({
1833
+ __name: "GeoJsonViewer",
1834
+ props: {
1835
+ modelValue: { default: () => ({ type: "FeatureCollection", features: [] }) },
1836
+ pmtilesUrl: {},
1837
+ center: {},
1838
+ zoom: {}
1839
+ },
1840
+ setup(e) {
1841
+ const i = e, a = F(null);
1842
+ let o = null, g = null, l = !1, d = !1, v = [], m = [];
1843
+ const C = I(() => k1(i.center, i.zoom));
1844
+ function h(s) {
1845
+ return s.map((c) => ({ id: c.id, geomType: c.geometry.type }));
1846
+ }
1847
+ function M() {
1848
+ if (!o) return;
1849
+ const s = o.getSource(H);
1850
+ s && "setData" in s && s.setData(i.modelValue);
1851
+ }
1852
+ R(
1853
+ () => i.modelValue,
1854
+ async () => {
1855
+ if (M(), o && d) {
1856
+ const s = h(i.modelValue.features);
1857
+ w1(o, v, s), v = s, m = Y(s), await Q(o, i.modelValue.features);
1858
+ }
1859
+ },
1860
+ { deep: !0 }
1861
+ );
1862
+ function L(s) {
1863
+ if (!d || !o) return;
1864
+ const f = o.queryRenderedFeatures(s.point, { layers: m })?.[0];
1865
+ if (f) {
1866
+ o.getCanvas().style.cursor = "pointer";
1867
+ const u = f.properties?.title, p = f.properties?.description;
1868
+ if (u || p) {
1869
+ g || (g = new p1({
1870
+ closeButton: !1,
1871
+ closeOnClick: !1,
1872
+ offset: 10,
1873
+ className: "tge-popup-container"
1874
+ }));
1875
+ let t = "";
1876
+ u && (t += `<h3 class="tge-popup__title">${w(u)}</h3>`), p && (t += `<p class="tge-popup__description">${w(p)}</p>`), g.setLngLat(s.lngLat).setHTML(t).addTo(o);
1877
+ } else
1878
+ g?.remove();
1879
+ } else
1880
+ o.getCanvas().style.cursor = "", g?.remove();
1881
+ }
1882
+ function w(s) {
1883
+ const c = document.createElement("div");
1884
+ return c.textContent = s, c.innerHTML;
1885
+ }
1886
+ return a1(() => {
1887
+ if (!a.value) return;
1888
+ if (!l) {
1889
+ const c = new g1();
1890
+ U.addProtocol("pmtiles", c.tile), l = !0;
1891
+ }
1892
+ const { getStyle: s } = y1(i.pmtilesUrl);
1893
+ o = new U.Map({
1894
+ container: a.value,
1895
+ style: s(),
1896
+ center: i.center ?? m1,
1897
+ zoom: i.zoom ?? f1,
1898
+ attributionControl: !1
1899
+ }), o.addControl(
1900
+ new U.AttributionControl({
1901
+ compact: !0,
1902
+ customAttribution: '<a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors'
1903
+ }),
1904
+ "bottom-right"
1905
+ ), o.addControl(new U.NavigationControl(), "bottom-right"), o.addControl(
1906
+ new U.GeolocateControl({
1907
+ positionOptions: { enableHighAccuracy: !1 },
1908
+ trackUserLocation: !1,
1909
+ fitBoundsOptions: { maxZoom: 13 }
1910
+ }),
1911
+ "bottom-right"
1912
+ ), o.on("load", async () => {
1913
+ if (o) {
1914
+ o.addSource(H, {
1915
+ type: "geojson",
1916
+ data: i.modelValue,
1917
+ promoteId: "id"
1918
+ });
1919
+ for (let c = i.modelValue.features.length - 1; c >= 0; c--) {
1920
+ const f = i.modelValue.features[c];
1921
+ for (const u of W(f.id, f.geometry.type))
1922
+ o.addLayer(u);
1923
+ }
1924
+ v = h(i.modelValue.features), m = Y(v), await Q(o, i.modelValue.features), C.value && o.once("idle", () => {
1925
+ o && b1(o, i.modelValue.features);
1926
+ }), d = !0;
1927
+ }
1928
+ }), o.on("mousemove", L);
1929
+ }), u1(() => {
1930
+ g?.remove(), o?.remove(), o = null;
1931
+ }), (s, c) => (k(), b("div", ke, [
1932
+ r("div", {
1933
+ ref_key: "mapContainer",
1934
+ ref: a,
1935
+ class: "tge-map"
1936
+ }, null, 512)
1937
+ ]));
1938
+ }
1939
+ });
1940
+ export {
1941
+ t1 as COMMON_ICONS,
1942
+ P as DEFAULTS,
1943
+ T1 as DEFAULT_LOCALE,
1944
+ Le as GeoJsonEditor,
1945
+ _e as GeoJsonViewer,
1946
+ P1 as LAYER_IDS,
1947
+ X as MARKER_SIZE_SCALE,
1948
+ H as SOURCE_ID,
1949
+ D1 as getDrawingLayers,
1950
+ e1 as getFeatureLayerIds,
1951
+ W as getFeatureLayers,
1952
+ R0 as getIconUrl,
1953
+ Y as getQueryableLayerIds,
1954
+ B1 as getVerticesLayer,
1955
+ O0 as loadIcon,
1956
+ Q as loadIconsForFeatures,
1957
+ w1 as reconcileFeatureLayers,
1958
+ j0 as useDrawing,
1959
+ K0 as useGeoJson,
1960
+ y1 as useMapStyle
1961
+ };