@ywbgn/bgl-package 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,192 +1,3626 @@
1
- import { ref as C, shallowRef as d, computed as x, onMounted as S, onBeforeUnmount as k, openBlock as y, createElementBlock as f, normalizeStyle as $, createElementVNode as c, toRaw as w } from "vue";
2
- import B from "@arcgis/core/Map.js";
3
- import z from "@arcgis/core/views/MapView.js";
4
- import L from "@arcgis/core/layers/GraphicsLayer.js";
5
- import A from "@arcgis/core/Basemap.js";
6
- import T from "@arcgis/core/layers/VectorTileLayer.js";
7
- import V from "@arcgis/core/widgets/AreaMeasurement2D.js";
8
- import D from "@arcgis/core/widgets/DistanceMeasurement2D.js";
9
- import O from "@arcgis/core/widgets/Sketch.js";
10
- const h = (a, p) => {
11
- const n = a.__vccOpts || a;
12
- for (const [i, r] of p)
13
- n[i] = r;
14
- return n;
15
- }, I = {
16
- __name: "ArcgisMap",
17
- props: {
18
- width: {
19
- type: [String, Number],
20
- default: "100%"
1
+ import { inject as Xt, computed as ee, toValue as Ht, unref as se, provide as qt, defineComponent as pe, ref as T, shallowRef as Se, onMounted as fe, watch as ue, onBeforeUnmount as me, openBlock as g, createElementBlock as N, normalizeStyle as Ye, toRef as _t, createBlock as re, Transition as $t, withCtx as Ie, createElementVNode as a, withModifiers as te, normalizeClass as ae, toDisplayString as U, renderSlot as bt, withKeys as Ae, Fragment as ce, renderList as de, createCommentVNode as _, toRaw as ge, withDirectives as Ge, vModelText as Ze } from "vue";
2
+ import el from "@arcgis/core/Map.js";
3
+ import tl from "@arcgis/core/views/MapView.js";
4
+ import et from "@arcgis/core/layers/GraphicsLayer.js";
5
+ import ll from "@arcgis/core/Basemap.js";
6
+ import al from "@arcgis/core/layers/BaseTileLayer.js";
7
+ import nl from "@arcgis/core/layers/TileLayer.js";
8
+ import ze from "@arcgis/core/layers/WebTileLayer.js";
9
+ import * as We from "@arcgis/core/core/reactiveUtils.js";
10
+ import gt from "@arcgis/core/geometry/Extent.js";
11
+ import xe from "@arcgis/core/geometry/Point.js";
12
+ import * as Ne from "@arcgis/core/geometry/operators/projectOperator.js";
13
+ import ol from "@arcgis/core/widgets/Legend.js";
14
+ import sl from "@arcgis/core/layers/FeatureLayer.js";
15
+ import il from "@arcgis/core/layers/MapImageLayer.js";
16
+ import st from "@arcgis/core/config.js";
17
+ import rl from "@arcgis/core/identity/IdentityManager.js";
18
+ import wt from "@arcgis/core/layers/support/LabelClass.js";
19
+ import St from "@arcgis/core/symbols/TextSymbol.js";
20
+ import cl from "@arcgis/core/widgets/ScaleBar.js";
21
+ import ul from "@arcgis/core/Graphic.js";
22
+ import it from "@arcgis/core/geometry/SpatialReference.js";
23
+ import tt from "@arcgis/core/symbols/SimpleMarkerSymbol.js";
24
+ import Ve from "@arcgis/core/geometry/Polyline.js";
25
+ import { isLoaded as rt, load as ct, execute as dl } from "@arcgis/core/geometry/operators/geodeticLengthOperator.js";
26
+ import Al from "@arcgis/core/symbols/CIMSymbol.js";
27
+ import It from "@arcgis/core/widgets/Sketch/SketchViewModel.js";
28
+ import Xe from "@arcgis/core/geometry/Polygon.js";
29
+ import { isLoaded as ut, load as dt, execute as pl } from "@arcgis/core/geometry/operators/geodeticAreaOperator.js";
30
+ import ml from "@arcgis/core/symbols/SimpleFillSymbol.js";
31
+ import Et from "@arcgis/core/widgets/Swipe.js";
32
+ import './index.css';const Te = "basemap-", vl = "tianditu-img-cia", Je = [
33
+ { value: "tianditu", label: "天地图影像图" },
34
+ { value: "tiandituVec", label: "天地图矢量图" },
35
+ { value: "geovis", label: "星图地球" },
36
+ { value: "jl1", label: "吉林一号" },
37
+ { value: "arcgis", label: "ArcGIS影像底图" }
38
+ ], je = ["0", "1", "2", "3", "4", "5", "6", "7"], At = al.createSubclass({
39
+ properties: {
40
+ urlTemplate: { type: String }
41
+ },
42
+ getTileUrl(e, t, l) {
43
+ return this.urlTemplate.replace("{z}", String(e)).replace("{y}", String(t)).replace("{x}", String(l));
44
+ }
45
+ }), be = (e) => (e ?? "").trim(), Lt = (e, t) => (e === "tianditu" || e === "tiandituVec") && !be(t.tiandituKey) ? "未配置天地图 Key,无法切换" : e === "geovis" && !be(t.geovisToken) ? "未配置星图地球 Token,无法切换" : e === "jl1" && (!be(t.jl1mallMk) || !be(t.jl1mallToken)) ? "未配置吉林一号 mk/tk,无法切换" : "", yl = (e) => be(e.tiandituKey) ? "tianditu" : be(e.geovisToken) ? "geovis" : be(e.jl1mallMk) && be(e.jl1mallToken) ? "jl1" : "arcgis", kt = (e) => {
46
+ if (!e) return null;
47
+ const t = e.id ?? "";
48
+ return t === `${Te}tianditu` || t === vl ? "tianditu" : t === `${Te}tiandituVec` ? "tiandituVec" : t === `${Te}geovis` ? "geovis" : t === `${Te}jl1` ? "jl1" : t === `${Te}arcgis` ? "arcgis" : null;
49
+ }, fl = (e) => new ze({
50
+ urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=cia_w&x={col}&y={row}&l={level}&tk=${e}`,
51
+ subDomains: je,
52
+ title: "天地图中文注记"
53
+ }), hl = (e) => new ze({
54
+ urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=img_w&x={col}&y={row}&l={level}&tk=${e}`,
55
+ subDomains: je,
56
+ title: "天地图影像"
57
+ }), bl = (e) => new ze({
58
+ urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=vec_w&x={col}&y={row}&l={level}&tk=${e}`,
59
+ subDomains: je,
60
+ title: "天地图矢量"
61
+ }), gl = (e) => new ze({
62
+ urlTemplate: `https://t{subDomain}.tianditu.gov.cn/DataServer?T=cva_w&x={col}&y={row}&l={level}&tk=${e}`,
63
+ subDomains: je,
64
+ title: "天地图矢量注记"
65
+ }), xt = (e, t) => {
66
+ const l = be(t.tiandituKey), n = [];
67
+ if (e === "tianditu")
68
+ n.push(hl(l));
69
+ else {
70
+ if (e === "tiandituVec")
71
+ return n.push(bl(l)), l && n.push(gl(l)), n;
72
+ if (e === "geovis") {
73
+ const u = be(t.geovisToken);
74
+ n.push(
75
+ new At({
76
+ urlTemplate: `https://tiles1.geovisearth.com/base/v1/img/{z}/{x}/{y}?format=webp&tmsIds=w&token=${u}`,
77
+ title: "星图地球",
78
+ id: "xt-custom-basemap"
79
+ })
80
+ );
81
+ } else if (e === "jl1") {
82
+ const u = be(t.jl1mallMk), d = be(t.jl1mallToken);
83
+ n.push(
84
+ new At({
85
+ urlTemplate: `https://api.jl1mall.com/getMap/{z}/{x}/{y}?mk=${u}&tk=${d}&sch=wmts`,
86
+ title: "吉林一号",
87
+ id: "jl-custom-basemap"
88
+ })
89
+ );
90
+ } else
91
+ n.push(
92
+ new nl({
93
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
94
+ id: "arcgis-imagery",
95
+ title: "ArcGIS影像底图"
96
+ })
97
+ );
98
+ }
99
+ return l && n.push(fl(l)), n;
100
+ }, Ct = (e, t) => {
101
+ var n;
102
+ const l = ((n = Je.find((u) => u.value === e)) == null ? void 0 : n.label) ?? e;
103
+ return new ll({
104
+ baseLayers: xt(e, t),
105
+ title: l,
106
+ id: `${Te}${e}`
107
+ });
108
+ }, wl = (e, t) => xt(e, t)[0], Sl = (e) => Ct(yl(e), e), Mt = Symbol("basemapKeys"), pt = {}, lt = (e) => {
109
+ const t = Xt(Mt, null);
110
+ return ee(() => {
111
+ const l = e !== void 0 ? Ht(e) : void 0;
112
+ return l ?? (t != null ? se(t) ?? pt : pt);
113
+ });
114
+ }, Il = (e) => {
115
+ qt(Mt, e);
116
+ }, El = 1e-9, Rt = (e, t) => {
117
+ const l = e.spatialReference, n = Ne.execute(
118
+ new xe({
119
+ x: t.xmin,
120
+ y: t.ymin,
121
+ spatialReference: { wkid: 4326 }
122
+ }),
123
+ l
124
+ ), u = Ne.execute(
125
+ new xe({
126
+ x: t.xmax,
127
+ y: t.ymax,
128
+ spatialReference: { wkid: 4326 }
129
+ }),
130
+ l
131
+ );
132
+ return new gt({
133
+ xmin: n.x,
134
+ ymin: n.y,
135
+ xmax: u.x,
136
+ ymax: u.y,
137
+ spatialReference: l
138
+ });
139
+ }, Tt = async (e, t) => {
140
+ const l = new xe({
141
+ x: (t.xmin + t.xmax) / 2,
142
+ y: (t.ymin + t.ymax) / 2,
143
+ spatialReference: e.spatialReference
144
+ }), n = e.constraints.minZoom;
145
+ if (n != null && Number.isFinite(n)) {
146
+ await e.goTo({ center: l, zoom: n });
147
+ return;
148
+ }
149
+ await e.goTo({ center: l });
150
+ }, Ll = async (e, t) => {
151
+ await e.when(), await Ne.load();
152
+ const l = Rt(e, t);
153
+ await Tt(e, l);
154
+ }, kl = async (e, t) => {
155
+ await e.when(), await Ne.load();
156
+ const l = Rt(e, t), n = (l.xmin + l.xmax) / 2, u = (l.ymin + l.ymax) / 2, d = Math.max(l.width, l.height) * El;
157
+ let b = 0, r = 0, s = null, A = 0, o = !1;
158
+ const c = e.goTo.bind(e), D = (L) => {
159
+ let P = l.xmin + L.width / 2, H = l.xmax - L.width / 2, I = l.ymin + L.height / 2, W = l.ymax - L.height / 2;
160
+ return P > H && (P = n - d, H = n + d), I > W && (I = u - d, W = u + d), new gt({
161
+ xmin: P,
162
+ ymin: I,
163
+ xmax: H,
164
+ ymax: W,
165
+ spatialReference: e.spatialReference
166
+ });
167
+ }, y = () => {
168
+ A === 0 && (e.constraints.geometry = null), A += 1;
169
+ }, p = () => {
170
+ A <= 0 || (A -= 1, A === 0 && (b = 0, r = 0, M()));
171
+ }, M = () => {
172
+ const L = e.extent;
173
+ if (!L) return;
174
+ if (A > 0) {
175
+ e.constraints.geometry = null;
176
+ return;
177
+ }
178
+ if ((L.width !== b || L.height !== r) && (b = L.width, r = L.height, s = D(L), e.constraints.geometry = s), !e.stationary || s === null) return;
179
+ const P = e.center, H = Math.min(Math.max(P.x, s.xmin), s.xmax), I = Math.min(Math.max(P.y, s.ymin), s.ymax);
180
+ H === P.x && I === P.y || c({
181
+ center: new xe({ x: H, y: I, spatialReference: e.spatialReference })
182
+ });
183
+ };
184
+ await Tt(e, l);
185
+ const B = We.watch(() => [e.extent, e.stationary, e.zoom], M, {
186
+ initial: !0
187
+ });
188
+ return {
189
+ wrapViewGoTo(L) {
190
+ L.goTo = (P, H) => (y(), Promise.resolve(c(P, H)).finally(() => {
191
+ o || p();
192
+ }));
21
193
  },
22
- height: {
23
- type: [String, Number],
24
- default: "70vh"
194
+ remove() {
195
+ o || (o = !0, B.remove(), e.goTo = c, e.constraints.geometry = null, A = 0, s = null);
25
196
  }
197
+ };
198
+ }, xl = /* @__PURE__ */ pe({
199
+ __name: "ArcgisMap",
200
+ props: {
201
+ width: { default: "100%" },
202
+ height: { default: "70vh" },
203
+ zoom: { default: 12 },
204
+ center: { default: () => [116.3972, 39.9075] },
205
+ keys: { default: null },
206
+ minZoom: { default: null },
207
+ maxZoom: { default: null },
208
+ panBounds: { default: null }
26
209
  },
27
210
  emits: ["ready"],
28
- setup(a, { expose: p, emit: n }) {
29
- const i = n, r = a, s = C(null), e = d(null), u = d(null), b = x(() => ({
30
- width: typeof r.width == "number" ? `${r.width}px` : r.width,
31
- height: typeof r.height == "number" ? `${r.height}px` : r.height
32
- })), v = new L({ title: "绘制图层", listMode: "hide" });
33
- return S(() => {
34
- const l = new B({
35
- basemap: "streets-vector",
36
- layers: [v]
37
- }), m = new z({
38
- container: s.value,
39
- map: l,
40
- zoom: 12,
41
- center: [116.3972, 39.9075]
211
+ setup(e, { emit: t }) {
212
+ const l = t, n = e, u = lt(() => n.keys);
213
+ Il(u);
214
+ const d = T(null), b = Se(null), r = Se(null), s = ee(() => ({
215
+ width: typeof n.width == "number" ? `${n.width}px` : n.width,
216
+ height: typeof n.height == "number" ? `${n.height}px` : n.height
217
+ })), A = new et({ title: "绘制图层", listMode: "hide" });
218
+ let o = !1, c = null;
219
+ const D = (p) => {
220
+ n.minZoom != null && Number.isFinite(n.minZoom) && (p.constraints.minZoom = n.minZoom), n.maxZoom != null && Number.isFinite(n.maxZoom) && (p.constraints.maxZoom = n.maxZoom);
221
+ }, y = async (p) => {
222
+ c == null || c.remove(), c = null;
223
+ const M = n.panBounds;
224
+ if (M && !(o || r.value !== p)) {
225
+ if (c = await kl(p, M), o || r.value !== p) {
226
+ c.remove(), c = null;
227
+ return;
228
+ }
229
+ c.wrapViewGoTo(p);
230
+ }
231
+ };
232
+ return fe(() => {
233
+ o = !1;
234
+ const p = d.value;
235
+ if (!p) return;
236
+ const M = new el({
237
+ basemap: Sl(u.value),
238
+ layers: [A]
239
+ }), B = new tl({
240
+ container: p,
241
+ map: M,
242
+ zoom: n.zoom,
243
+ center: n.center
42
244
  });
43
- e.value = l, u.value = m, m.when(() => {
44
- i("ready", { map: l, view: m, sketchLayer: v });
245
+ b.value = M, r.value = B, B.when(async () => {
246
+ o || r.value !== B || (B.ui.remove(["attribution", "zoom"]), D(B), await y(B), !(o || r.value !== B) && l("ready", { map: M, view: B, sketchLayer: A }));
45
247
  });
46
- }), k(() => {
47
- var l;
48
- (l = u.value) == null || l.destroy(), u.value = null, e.value = null;
49
- }), p({ map: e, view: u, sketchLayer: v }), (l, m) => (y(), f("div", {
248
+ }), ue(
249
+ () => n.zoom,
250
+ (p) => {
251
+ const M = r.value;
252
+ M && (M.zoom = p);
253
+ }
254
+ ), ue(
255
+ () => n.center,
256
+ (p) => {
257
+ const M = r.value;
258
+ M && p && (M.center = p);
259
+ }
260
+ ), ue(
261
+ () => [n.minZoom, n.maxZoom],
262
+ () => {
263
+ const p = r.value;
264
+ p && D(p);
265
+ }
266
+ ), ue(
267
+ () => n.panBounds,
268
+ () => {
269
+ const p = r.value;
270
+ p && y(p);
271
+ },
272
+ { deep: !0 }
273
+ ), me(() => {
274
+ o = !0, c == null || c.remove(), c = null;
275
+ const p = r.value, M = b.value;
276
+ r.value = null, b.value = null, p == null || p.destroy(), M == null || M.destroy();
277
+ }), (p, M) => (g(), N("div", {
50
278
  ref_key: "mapRef",
51
- ref: s,
279
+ ref: d,
52
280
  class: "map-container",
53
- style: $(b.value)
281
+ style: Ye(s.value)
54
282
  }, null, 4));
55
283
  }
56
- }, R = /* @__PURE__ */ h(I, [["__scopeId", "data-v-38c725b2"]]), W = { class: "basemap-box" }, j = {
284
+ }), ve = (e, t) => {
285
+ const l = e.__vccOpts || e;
286
+ for (const [n, u] of t)
287
+ l[n] = u;
288
+ return l;
289
+ }, Cl = /* @__PURE__ */ ve(xl, [["__scopeId", "data-v-abd8e8a3"]]);
290
+ function Ml(e) {
291
+ const t = T(!1), l = T({ x: 0, y: 0 });
292
+ let n = { pointerX: 0, pointerY: 0, offsetX: 0, offsetY: 0 };
293
+ const u = (e == null ? void 0 : e.getCentered) ?? (() => !0), d = ee(() => {
294
+ const { x: o, y: c } = l.value;
295
+ if (!(o === 0 && c === 0))
296
+ return u() ? {
297
+ transform: `translate(calc(-50% + ${o}px), ${c}px)`
298
+ } : {
299
+ transform: `translate(${o}px, ${c}px)`
300
+ };
301
+ }), b = (o) => {
302
+ t.value && (l.value = {
303
+ x: n.offsetX + o.clientX - n.pointerX,
304
+ y: n.offsetY + o.clientY - n.pointerY
305
+ });
306
+ }, r = () => {
307
+ t.value && (t.value = !1, window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", r), window.removeEventListener("pointercancel", r));
308
+ }, s = (o) => {
309
+ o.button === 0 && (o.preventDefault(), t.value = !0, n = {
310
+ pointerX: o.clientX,
311
+ pointerY: o.clientY,
312
+ offsetX: l.value.x,
313
+ offsetY: l.value.y
314
+ }, window.addEventListener("pointermove", b), window.addEventListener("pointerup", r), window.addEventListener("pointercancel", r));
315
+ }, A = () => {
316
+ l.value = { x: 0, y: 0 };
317
+ };
318
+ return me(() => {
319
+ r();
320
+ }), {
321
+ isDragging: t,
322
+ panelStyle: d,
323
+ startDrag: s,
324
+ stopDrag: r,
325
+ resetOffset: A
326
+ };
327
+ }
328
+ const Rl = ["aria-label"], Tl = { class: "map-tool-panel__body" }, Dl = /* @__PURE__ */ pe({
329
+ __name: "MapToolPanel",
330
+ props: {
331
+ title: {},
332
+ width: {},
333
+ anchor: { default: "center" }
334
+ },
335
+ emits: ["close"],
336
+ setup(e, { emit: t }) {
337
+ const l = e, n = t, u = _t(l, "anchor"), { isDragging: d, panelStyle: b, startDrag: r } = Ml({
338
+ getCentered: () => u.value !== "start"
339
+ }), s = ee(() => {
340
+ const A = {};
341
+ l.width != null && (A.width = typeof l.width == "number" ? `${l.width}px` : l.width);
342
+ const o = b.value;
343
+ return o && Object.assign(A, o), Object.keys(A).length ? A : void 0;
344
+ });
345
+ return (A, o) => (g(), re($t, { name: "map-tool-panel" }, {
346
+ default: Ie(() => [
347
+ a("section", {
348
+ class: ae(["map-tool-panel", {
349
+ "is-dragging": se(d),
350
+ "is-anchor-start": u.value === "start"
351
+ }]),
352
+ style: Ye(s.value),
353
+ onClick: o[3] || (o[3] = te(() => {
354
+ }, ["stop"])),
355
+ onPointerdown: o[4] || (o[4] = te(() => {
356
+ }, ["stop"]))
357
+ }, [
358
+ a("header", {
359
+ class: "map-tool-panel__header",
360
+ onPointerdown: o[2] || (o[2] = //@ts-ignore
361
+ (...c) => se(r) && se(r)(...c))
362
+ }, [
363
+ a("h3", null, U(e.title), 1),
364
+ a("button", {
365
+ type: "button",
366
+ class: "map-tool-panel__close",
367
+ "aria-label": `关闭${e.title}`,
368
+ onPointerdown: o[0] || (o[0] = te(() => {
369
+ }, ["stop"])),
370
+ onClick: o[1] || (o[1] = (c) => n("close"))
371
+ }, " × ", 40, Rl)
372
+ ], 32),
373
+ a("div", Tl, [
374
+ bt(A.$slots, "default", {}, void 0, !0)
375
+ ])
376
+ ], 38)
377
+ ]),
378
+ _: 3
379
+ }));
380
+ }
381
+ }), Ee = /* @__PURE__ */ ve(Dl, [["__scopeId", "data-v-278d69ed"]]), Ol = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAA/CAYAAABZ9m6wAAAgAElEQVR4nH27yY9kWZrd97vTG+zZ4OZjeIw5VmWlMmvo6iLUItWgCAkUQS4ELrQjpJUArvQv5L+knSAIkEBRlEB1s7prysrMysoYPcJHm954Ry2eRVQV2Wjznbm5vfe+e77znXPudfGv/ud/nXbtFuc8UkbKQvP02rOob/lnHyqmZ0t+sVbcDfDpInGcJf7qTnLVG376vQ94cvqIu92Kr1895eLyDoFHyg6R7nAOJuWUe0cPECqRLwVxGChmBcujY+qXlm+frll1OwQSrXNk2nK32XC3MkipePik4ONPJwx2oFu3SCSH2QOys0jh5/zim1fkly/AZDyNlnW/YVoUzMw5J73h0Gx4rRWrekrqBZLA47LhQZW4MfdZyRNKLcmLKaZ9gz49qTnRAiUkN1cV3946/vzM8o8+LnneCv7thWGQFV1v+flg+Wzh+em85cvFhK9v70gRjucTplqgREtIOTEWGPOAqjD0u5anv3lNdmZ5VC4ZdhnttifY15w8POV7+RnfflNyW7/k7vaGkGacHh/x+GxKUcw5ngkeuIzp4RmT9x/iY8Oriztcm2jyKw76NT84nZKk4uBqoAkK0Qtk/ZrlwQnLe4+RF8+YbL+jLKY8eTjjZF5weXFHuvyahX6BUZKsKFhMQF/dOcJ1y64sqM4i/6QY+GnhaaqSbSdZKklRJhAG6xO9zOh1wZ/vtvTbFwzkmPtLTquHvLnpeX13TZYZIEOJgs715JOKD07eY1kcsRtqdk1g/WqD3axYFEecnEfUJseIKUkYDieRLCswKcNkUL13xL3Je+izjOFp5CZNQCr8l3/FZ1UgRc3Li1sm03P+8h//kKW448uvX6OXj3j8YM4PP5hjvSeFiG/X5JMJ5fknnDY9Dw8T282Oi6cvqbuI3m0TV53hLxaBT/M1Vhf8798JblNALUqSCAhRE0JES8mDRwf005yv72A56XjPvCZ7tuL+8pT4+QHDyw3zNCfTE/q0Qs8Nk0nB0ffPKCdTqCXsWjZ1zvXqllhmPPnwhPkllNkaqQMpdqjC8uDhCYvlFG8Sv332NcYFQjtwudO0NiEmc+p2zWmW+OTBHEykGq4RxnF6lCPNlqLboQkko0BHeh9IoWVhNOUkURBo7I6m7pgUBq3KnP98nvjLZcvzYcpvVorvOsngAw+LjINqys1mxd1uy6ODe7y3/IjiNOf/+t13/PtvvuXJYc0Hp4aP/IrvC8nBgacIO2RqcXSoqUTKRLZ6SbizVM5zDrgYaGRL4a6ptie8XB1QD54DHHd1gtpwdgbzgym7C4+LDVmWGEqLXVxT+SM+evCX/O7/+2v++u6XnD9YUkwLbl+/RN/syGWkSZL/u81IMkdIT28dZVZhpKBKFxznjr/1E66HCtfPMUGjP5/U/Ljq+H0z5ys/57q1ZJlA6oGkBbODOcWk4ORowecf/5if/Rc/4WZ4yjR/jmLCXaiYs2ThM0zb0g4DtQYvAkOfYQeLlC3Tqube/AELpXi1WREzx3z+gHB5Rbb7FU/ElKTn5PN7vD/vabfQrSzPnv+e9rlCqTnyJtKJBjt4dEq8uVnxJgp+9XqgPH3Mk5MHPN/9DS6BTpqtNdzGnLbv6HcSZw3TQ810WrBkgpMSP5nSJEPtB6qJRn96Muemm/HUBF7dNJwczFjOS26uVrz8/QVvvnlJkeeU05yh/gU7W3N0LjlalPyDH36fapHT7Rx3raJpNvzmt1+xcT0n5ycUxYw+WJAOZXecOcFMK97sNHpiMJ3G3gpOG8NnZ5bj6pJnbsHFrqQfLiiPClYXjtcXA7NyC2lGyAQzTuk7wW8uv6S2HQcH9/BR0u068uoQ7h8xeI0a4HhIbLs1dREQUaG1IxkYyhO66QmFiRSxp3Md7z05QV+4cy4jHBxuOfRXTEzkdFngVoaLLrCtO4bCUW8bnv/+Dd/+9rc8eXyCzgom2ZSuEey2HdtNT2db2rbj5vYW5yJPPngPVWbYAeww5+mwIwaPEJLCT/ChJekZtTzErmt+MLlEq5dsOWR5LjFVwF7MkbIGEfFOYOSUk7N73Kxqvnz2HUJJfvj55zTtJZd3NSeHx4TYYKOnmuY0rid5wWyeYTKF78EFS/A9N+sN1g/IJDmYF+Raon/zxmEKWMScTz+8z7Cd4AeFt5Hze/c4Tonz0zNmk4rr2yvqZkvTebQbUDHDW0nfdKx2G4os54P3HlNMJ+MYLCfcuQ2kwCwvkVqx6xqCd+RSUyiDDY4+tFxVB7yfwYF7w6fvz1i+9yHPf/2aug0cTKdYb7mtO5bkvHlzzep2x2bV45XEv9exnM1RuqCqZlhvGbodfR/YtJZ6CFSlJCOR5RWlmuObltXqFbWF5XzOZFLx/GKFXq03FMJy4TwfcZ9lOaOazJgUDdfXF1xc3VDmBfdOTmj6CU55pkbjhwAoJIrVesfQ9xweLNgNPUkJ7h8fsygnrDYrzo6OeO/BObe7FdY52uA5WZYsqgVfv3hBJHB6OMeqSHX3mvux5s1tzZsXDusjM1nwZrVlvd1y/1hRvxqwAaQSuF3PV7/7mj//9DOO50tcjCynx9jec3e7wTYJogAXiSGSUgaZgVgi8Dhn2dUeSYNzEX272VGknjo4mt9EPnko+MnnDyjLim27xQ07Xj77jqbe0Q0D27ZhUhQUpSHPNDJC3bZIqXDWsdpuKIqC6aRkVzcYFAfFjOX8iIubS7q+IaXERCkW05JJruht5OrNNa9Cx4+qKcerhm9ePedy5SknJamTHEwXbDYNq+2KwUpUNWE2zSgEbG9bnr5+DdKTiwolJNYros4QqkeEhEoKJTWb7UC3ajFak1AIBG03kBuYlAt0FxvWbUsZIxs6tt2Mm5tLWht476PH/Jf/4ANSr7jdRXo3IN5E6qHm/P4R9+4dgsj46OOPkH6Ev5CK+WzKYHt+883vkLniTX3L9W83rLZ3QEJLxXptSWJDkUucT7y8uGTrAw8fK84PKrI4BbVCIiiN4scffMIsl/Q2Z1V6OpeQWqIPS+QatnctL/WaWeUZ6p52F8knU1wliK4mSlBZhdbguxtqu8EoQ56V+BBRJnF4WKI/+uA+v//6GanpISrm0xlKK95//Bgjl1RqyyRbEKPmcnvL+cMZhYCD0qCLDJ9NWRQzpsJgTYUwU1Z3N/zil7+m6baooqBuG7zzaKWpJnMEgrUdSLXCJUVmKpZLCHVLCIFKwP0iZ5VNqYQkk5Z+6FDasSyPEGbH5U2DkgV97Dk8W7LUB2y2Dev2mtQHikFzUFZ4XVGLnjSAkwqlFGVegLOAxHuN9QIlIgiB/otPPuOj5Tnb7Q6fT/kX//S/4ez4gOsXz7h9+RVNHdkOW0pjMMpzdDTjvFoSmh27rkb7Gu8ssVoi9YSnz5/yyy+/4rvnr4iiZr40iASzyQwpJUpokIkoE9ZmDCEgtaeqJnhlMFmLclsmfSQOJU1yrH3Htv8tSQQKU7BrBqTKyE2B8wPlZMKsqGh2O2IzoFSGyRVaCHIEJSBihpAKKQNaFhQ6YoeB3np8FISgWa8H9IOq5MkPP8F7T5/N+PzHP2Nzc8GXX3+DdjXF5IivvnvBrm55cO+Ek0NJW2/w3oEUKAK9N9xcDTx/+e/5ze++4aa1KG1Y5BqNIslEiAEfPDH1CARFVpCkRCIwShCSREnQUpJUgVUTdn2NswI19bRuw6yYI4yis5HMZMQUOJjOWGQzok2I3DDPFoggIUU8kUTESE+SHu89TdeyXg8MgyPhKQrFvFJoOaVtG3RKA9IJXNDs2lv+3b/5P/jyVz/nl7/+kodnh6jM8atnt9xsttRhwnxakWUNKUYsc5o2cX17x6vLa15cXbDtHdNqSakTVR6ZTqaURnO3q7G+J0WB7zSx6jg46qmUQetsvPUokLEjKknID9Giw+SSbGIIPtDerCjOFfcOj9BScb1dIzBEAT56SmOIOsd2gcHu2IUapARj6HtL396x2XTU9QAyZ1IZplXGrJriQ2KwW3RIgqHtcUHQ147f3fwHXt88I2nDixuH8yt80CQp+PrlUzLR84P3zhFK8GJb8+ayYXV9BapjcXKPyZCT54FJqZAJitywKCtaG5BKIpLAIXGxRipPEgKp4CCriEOJijv6WNMHmJdLUmhIQeCjo9tsucolHz95QpVl3Gzu2LUtk0nBVGYID11T43wgikBwkjwzoDI622CHHZmSzBcF2ijyXKFUoB06vO9xwaFvdwNCKk4qzdlBiReaw8PP+PK7Fc+ebSkLQ1WWJOm5vnnOL7/e0HvNdDbhu6tn3KwaptmcSbWgMDMWZkrMVlSTAq2WWLviLuxAQG5ynLdUBxLXTLB9Tpc6psFgQkbbdyTV0DrBNnrMxNGtEsl7hIgcnD0k5I7NakcvNMppciTaSnwKbIYBb3usDUSlqQoNfaLbbehci1EZB4slwlTYYYfzA4MTDLbHDoosM6jv/eQvvlhvdgipmeeSiRRMswolFdtuh1ctWSEQUWG9pwuOprf0fc+m3uGSQytBU7e0XUtZFqgkWa3WWG8ppKFpO+wAKiW22x5vJRMyghcQPcQJN5vA9c0Fp9mGSZnzotdUhaeaFAilMcyZLU+oKk3btDSDxaCxbSK5hCPSpYEYPV2f6JPCi8TQNATXo3JNWc4odA4hYV1H37b0g8RZRW8zYgT15Ps//SL6DpHlHEwLlBbI5CiLCqccF+uX7JoWlQpEUjjh8QRilBidY5TGBUvEE5Jn12ywQ6L3kV1zS4qWvg9sd5ZgPaubms2uJ8lAriJdO9A5x6rZsFnd8f581AR/+0ZQmorFoWQ2m9IOBTF4CqOx2pNy0EmwayJ159ETRcw9TbcjWYfrI3U9kGUlJyenLCYT8A7Xr+j7O7rW0taRpgFiRGkBIaC7pkPJCpEEnY0UWuBFQmeSh2dHfPtyztfPvkJxxWw6QyRI3jLoRKXmVHqOEi2tryFBUok+7JioiiQLnl68JoWAUIo7BA8OZixOT3n66hIlNLXtudteoACZFELmRBu4vLhjc7th+Sbx+QdPyM2EuknsUiClRD9Y2t2A7T1161HFhOlhRl5OcENNaDZU1YyzwwlSGda7jvW2wXYWEQO9VTRWI2QgJmBocTGh7r/38RchwLTQtNFR5DlFplFhoCwkIRpur3ds6zXkGpUEvmlIMeBkhBQpdIUUEp8sIiVCV9M0G3xyMAzYdUe3XvHwwRn/07/6H/mX/+yf0wyRi9e3dLYl+QEdAuvac1zCoyk8vw1cbDvcao3vA0fnJeuVZ+dukH3i6mbD1c01zW6DdQ1eOsr5DGUFbtNzMJtzfnJGphS7esuuaYmux/aCXVcwBEHvO1rrUCojAa1LqPnhx19kuUNmFT5tMPmUSV6iJcgomWYVXgmumjXOJkpTklJPsBatS5TRSCEp9IREZLfbEhuHlKB1xuH9R9w7e8DB0ZT/+p/8Q/67f/nf8/jRY7Kq5OXLr3lzfUlUGlOVdINh2FgezzqmEr5+kVCZxImeeSUxMvLyzZqmh5A8Ms8Q3mPyghAVhTYcHiw5OThmOV/gY2DXdaTgUQmCzFDGE72l7jU+RoSAlAQ+JTKlUPN7P/hiNs2RckK7a/B9h8wmzEuDjQlLznw5I7me69dXqFJzeL5E6IxCzlmW99BSYrIcqQzX65rBjr7g0aPv8cG9+3z86B4//dk/5KPH79PhePr6Nf/mf/3f+ObltzTOE30CISmkZd0NqMmE/+r7Bcsi8rtmQRAKMQwc3MsJbsK6XhOSAykREbp2gxgaPjh5wKcffcJsUnC32bDtWlLw2CHQ2MQQoHWewUGGQSuJixHvLaQIKHRRTmmHKbrLaJuMby6+ZdtbDief8GBZshs6osr55Mn3UU6yaQdkMUWzYrfq2dY3aCM4mh+inWE5K5k8nPLkwSFn0zmlyJBaM7jAl9+95Pbf/jverGquLp4SZAZRAx5iRGQZ0xPD12vB//mt4M8+zvlQ7vgPv1YIqZF3HbqSiDctSeUoJYlFydBfIhNMp1NI0PY9CAExMPSezkfc0FLXgsEapBJAwChBmWW0KRKCJ6YOXeQKhCCmhJCCts559uINrz98zMnRESpcQJ8oJ0dMp1Oev3pFv24RUrG7u2EYWorFAlH1DNsG30U+/N5n/ODhAzbrHTovMNUBf/OLX/Hy5UvWN8/xIbI8vM/Z0RTXeJwXACAERklWG8//8tctm1byT39Y4mPH3/46EZuaRx9L7n2wpF2VJC+p3Y5PH3/Gf/b++0ync9abFV3XkrxnGCKtC/ihp64FvdW4EPFubBWAEBwheJQUpATq6MGPvlAEvO+IITGpBpq4JROSg4MzCiNomhqvFUkl1jfXdHVNRDIMLX5oISa0KMnyJc16xe72DWcPHlEcHPP81SWXdzf86utfcPXsO1ACoRLWDSSRczSbEaKncw4pBSQw0uF7yzevBYLAf/tpxU5bfv9KEWPODz6tCNsOGRWff+9DfvLppywWS7xz9F1P27fc1S21BesEu11isIIhRnpnSfsf63qcC0Q3TtWUQD3+6M++aNsdyffMZ3B4kLPdwNVtzcFiwunxPXocdb/DUJKpCUEnTCVRIdB3AykvuH/+hA+fnJMyy7dPL7i9fYMoEqs313zz1a+xfiCfT9EIBJK7rcLZhmop6PuOblWDd8ShRwioDipMpWkoWVZLfnaWaFzB9V3N8bLgx++f8+DsEYuDIzIj6fqeZrvmZmPZ7Aac62j6yG7rGVxiCJHeDsTk93wRgQRyhMrQh7EgDz/86ReEAQ3IfCBpS9dIrm873LCjqkqOq4xgt2zaAWOmTKsJxURxeDTl6PSEPsJqt6MqS+6fnyMNPH95Sew6ppMJV21NVpRkeYbvBjaNxujAwXzGyfFDbIg0uzVdq+iHSJFlnB7d49G9Cqfgr35dY4LnLz6UFKfnnBx+yONlxWICTR9pusDQ7rhZ9Vxueuq+obewqyVucAgiNiRc8IiUUDoDBDFGpBTIfbukGFGf/PCHXyRy2t6TYqRuA9YKUojcbhrurq+Z5D3VYkrTJIbOUuUluclQhaacTQjJcbNasbpaETpHMauYzA2FmeKQVAc50hd0tsH3PXJS8v79Q46XBxweThFZYLfdMfjEyekR988WhCyyutlw9fQFg3PcO3/EZx+dcnZ8RIgzNh1MjaXpWr56Hnh5tWXbbdk1lm0naDsIgyWmwBASPiRi9CRACDGiA4ghYW2EBCEktLWJaaVxwoItECEnVwOiSLRW8d3rGsTAX+ZTlvNjrppbtrvAbLGA4Li+eM3r37/ANh0pL3j2+hXLYcq995Z0teDVxS1VZSj0jMVJhT/eclDOWJRTog/cOzlDNorbk2vyqaRUM6wXNE1HM8D9x/f5wZP3OTs+5bVNyMHh7YAXimdrQ3Ce66trLlY95UQQXcDbiA8BFxwxJUJ8S9gZPo4kKsT4HkKg1Ng2UknU6aOffjGbRvIikpkcKTNE0qjcMskVISru1gN9H5hMcoqZJgjHELcMscHtAs1tQ73bkpREyITzlslsxrwquF3fsrvdcHb/mD/70c8wJkO0Ld57lssjzs/OyZXBOUvyUGYZ89mE+4tTPnjygO999IQHJ/cJIdL0npAUjU3UrePLZw19u6MwLdsm0dmCECLOtrgQsAFSAikFAogxjhxC2qNEIAQoLVBKkZkMdXT/+19IpciVpsgFbZeQUmByIERUTPiouFr1rNotpoTcKIgOoROz6YLjwzOqxZQQBmzTMwTF0fKEB2dzmk2Ps4nj4wrpIi9fXOC9ZTIp8dby7M0Fi6riIJ9BiJzfW/L4/ITZJKfKMnKV0fU9zll6F7laB262G15fNTx/ueLmdsXp0iCyxN22oe/6cWIJSaYkEUavQiKmNCJCmtF3pQhiLBpCkpkCNT/94Asfc8p8SsIRguboMKM0E0QqKApFlgm8S2xay267I/QdKRkSJVIJ5ssZ985POTlYIpNEG8Ph4gDvHMmOxckjfPnrn/PyzSuyvEAiePr897y4fEM5mXO6POJgNkGrgmGINLsNdduQZWMmu6o9373e8ftnW65uLrld13Rdx6a1NJ1nMQ2EYFlvepQyTCcFmRq5QkiBkgKjNUpqkpBAJKaEUmYMno3GSIk6e/zDL2KUKD1jNpO8dzbn5GRBlo3p9KTKMFpCBOcEro+0Xc31ruX6zrPdtPT9GpLg5OAejx+dczidIWJgu20oy4zDaY6Ugt6Orne73XBxd4uNmvfv3WcymdM5CD6x6SyrusUOAwJDQHOz6vj66S3fPb+mb+9Y7xr6oScmh5aJ23ogE4rzgxmIjCAmaJ0hk8MIyJQatykluJDwIZCIKKUps5Iy15TGYENE62xCjIm6vuXkaMl8NsUF2DUwDJFMaw6Xx0wnU+TLa9a1QKqKMMB657h6s+HZ856DgxUfvef4+PEp+aTkQAkmeYYQEqk1tB1nZ6ecpVPW6zW3tqcwFbPDBySlePXmjqb2TCuD1IK2i2jp6fpLXl2tibahHnpiTMBIhEopUooURvHmLrGYSx4/PuDFG89225PLhJTgYwRACYGWArRGqpwQAik5JJp6sHTOIz77R/9DgkRKCSNhUs3J84LBO2KAqpCcHWdMp5r1quP19Y5uSAgi0XX01mIDeDegRWK5nPLwXsWj4yX5pOJgPuXoaMbr1zesNitSTPSU9N2WGHp6X7GrG+5u13SdRyAgRYTKUNrgbMO26/bTQDF0jhQTWa7I8oIYPVpqBJKs0Hz8ZIom8vxlSzckkND7sT1KM3KlzCuikOy2t+N+jzI4b5EC1NmTn3zxlnVDhK4fGGyHSA7iQNsHrEukGDFakmcTbFTEMKZMeV4ynUyYFoYYE5s2sN72vHq94eJqS0SjRCIk2LnErt5SdxCCYVu3XN3UXF53tDYQYqDuWra1pWk7mq4jiYiUciR6XSIVaCMQUhFjQElDkWdMc8227mibjvsHhiwXXG4d7RDHiZIEMUV0NsHkFU3X0NSbUYukiBSjONNSlcTQj1JWgkqMW3sSciNJwbHeDNS9Ic8q8iwj0wXZVKJkAsqRa3JH3SvWu56m2dK0ju2qYVW/4OmbnvsnmmmV0dkJu3ZNjJ7txjP0gWlVINWc5Hs6k9HmjqEf2yPLSmCvEwBp8lFUJQgJJpkmpsSm9yQBV2vLt1eJRw9ylkctry8cwWdopSAJvOuxQ8du6Pd+UuxNXiS4iPjRP/7XaZRvEEJPjJ4iU/iYkFJiFJDefkTutYxEmZIiz5BCQYLZJLI80JhCcXfneXVpGYaatuvGyqeWaWkQ2ZQYAsm1FNMTtCmZTSIhCrpe4oOn7lqaeo2IPUWW41IOQC66t7VBCkFrIyFFSGIUYdHhY0ILzUePFiwXGd+92HG5qlFKYEyBEALnBkIMSCHG7xtFKymCfmu7Q+ggjR9yPpISeB8QGrIsR6h81P/JE/1AGna0zoDOQShC0gw+gXCEIDiYGaanc5qu4upu1CJ1DwXjhng5vcfxQU6WJZpO0faSqkiUheI4TrFDxbqJWOswQAwNWJC6BKmQQiBCg+06Rg4cH0pLQQiOp682iDDj/FCz6yTbLgAjKt4WFAHBprGVtMLZgLr33s++GGuiSARSimRakUgoJTF6XJKUwhjkpIjYO8WUIkiNEArvOtq2YbNtWe9qhqHDh8gQDAmJNuWYqu1bcwyKO9ZbT2uht45tPTBYWMwKzs8yDg4My0WGltBZQUSMKZmQICQ6eVJKuDhuWQoEKSW0MgxB4lzP6SJxMM2p24gShsVsQUj7+CHsDZ4SBB8xmdwjBIEQChDsRRulUVgX8UFgdELgR9fM2DKoAoIn+Z4kBkiRlNKeVxIpJDa7gPUWpfbXAFIMI0JTT0qRJEqU9ggSPsBgO6xt2NQls+mUaR4p85HMjS5QMtJ1NTEGpMmZAAnJ4AZS8m+fhkmuqW3ixY3j8anhvYdLIjNCENR9S4rprYRFSoF3Ean2BYmhRaoSsScZ6yMhJELK0Eoi8LwtHHs2EVKDNBDD+KvoADfyi1IInRODI4axXd72vhCS3AishyQKpNKkOHKUkpCioOkidbulyDsWs4xpNeVkCSIpdp1icInkW5JISAYqI1Aip3OCECyJcWpoJbm49WSl5s9/fErX5/zV37ygaRqMUcQkiD7iQ0Jnmr71Y0GEGIGy51ZieBufBIyGGNNIVmrcOx5baEQCQu4dlEK8fUvnIDRSRrJsdJTOvyXmxKiTErmORBLKKEJII2FrQ/AJJRwh9tzcOeo2sJgKpJC0gyQSSb4HoUBnKJHQ+4WRUqGUJgHOBqZFyacfPuBoVvD/fPuCy5sbpBwXPoVE8HtEq/E5x4JIsx9qI8HkRpIiWB+wLiLeOkb9R5RMIgWPkOPRg/3TQAogNIKIj5IQMjLjUDIRk8T7xOBGBZmEIiUx3oger+9cAiRCFogoiTiatqUfBDEMFIrRrjuLzCtQOURLJCCERIjx6JRzgXml+emP7nN6suD//evv+PlvXiKVIMuysQPiviACRAgIKd5yyPiAUur9zUgSYExEyUAIiRgD3ie0BKHEOL9VtkfKvh/iPmfYF3dkJE9CgswwwuF9wBhJjGBdREoIYZ9YIUjRI1TCBY2SCSlzfPTjAwRwQIgJMBAERib0PufQIiFlYtvVyKT4/JPHnJ4t+ZvfPufnv31FRIxboXaPJkbE63wEgBvinxYEDEJAiBCTQIl91WUihIiIAq0lQqrxIYXEKIGSkhATg7WkGNBxgJSQUmG0JMS4H4sJITPyLNH3gRAdWguUVCMpI1A6gogkIRgbV5NpifMRpXKCgAAgFNEOxAQiy5nNIyJ66ronU/D4wSmLxRG//uqWL795BSJQZJqEYJ9lI7VAKoFUEu8iJlN/KEhKoLUczdAeCUppUtJIkcj32aPU4/wWQmCkJDNmJDAdSZWg6wOD9YTokcogVIFiQERLSBpjJN5bYhy1g7OaRR4AAAa2SURBVBIOicMnjRDj+JRohBp7PAaL1oxFCWNaLgTEaAmuJYTxMM3BQqH1AiGnvL/MOFhMeXFxydOXlzgbyIwerxnG7k5AigkhR2TEENFGov9YqikFUkq8DyNn7OM1Kcftvj1z7MPZsbViHA2UUQJjBEpkhGhAGKSAmCRCFQgsMYBMgRAiSoFCkJImxLD/Xg3SgxQ4+1YERBJqvJ+Q3jEYKSBURkqeYdix2eQoo5hPC4os48XFNd+9uCCmSJapsSUTOBeJMb1t8j95eRfQKXmE0AiRcC6+mx4hJJwDrQVZNiInxNFDmFFYYJ0jAZnWiEEjnSLG0SFLoWh7T+/inuwERnpCyjEmQRJIGQlRElEYPXJUSnKU4G6M9qQcEWp9HNHxtruRSCWJPiClGg/J2A3R1WxXgXXdYK0nM2o/ScDbRAz7kr6tyB9R4Ggxoh1JEk1KI4yFEO/I0vsxahuLIjBakWlDAnpr8TESYhx7XCogkemA3oux8TsjKTiESAiZUIAPkohASk+KhhgFJEcSavx3M+VQ0uCCxvrhnTQX4u3cD/u2iygzQZAIvqcbxrgxEdFK4S0kMU7KsBdi4o/h8R9BRcdoScmj5OgR3kX0QiL2dxGjwLlIlmmk0iAEgkSZZ/v9jAQiIcT4+XaIewLVo3UXkESJdx3O9yO9E3HBkMmEkY7BJYSIKGlISaL0eJQ0Yf94EUl7uS6lQQA+hT0hj/iJ6a1hG9WnYOS96P+OYvwdL933G5QySNGidLVfgXEakN6m04oQJH3vR8JVoJQiN2Y8RqnHFnjb4W/RprSkzDOkEMQEPQKhIs6NHiBFSRSgZMJo3umXmAQuFSAdIoU/uNEEIYwTTOuSFD0S8K5l6Hu8G0NjhNijZyTNFN6i6+8vBoAOwY6QxmNSQr6FJB1KZ6OBQyCVGW22jQip0DqnV2OPFrl+1y4pCZQao4KYEmp/F1JCWU5IKdENdhzFez2AzFEi4XxEiEQSCeKYx1iXk9Lw7oZHZMQxqggeIcE6z1C3xKFDZBnClCOKhSSlNJLo232YlPj7XloItS/IaLyieLscdu9wR5KNQY2yflQLpBBwUjIMgr6XZEZhTL5Xq3uZLsZljYx2OzcGHzx5rvHe7fOVHLFXljFZpBCEOJK8j4lEeHezYxaTkeJAjG6MLVLAj8IJGQPCOYgRpIKs2BdmRPAfVPbfU5C33SmQhBgQIvyhZ30/kqyUKDXufYbo0cq8u0iMCdtHOgXGlGg9A6HGVFuKUZXukZcS+ODJMOOJPyVIGEaVrEhKE3wkIiH68e/2w/ePnNa+OhKRxviPoRvNpTLjMHDD+HupxsKkwH5M7v2P4Z11/08L8rZqY/hDfHvh9G7ayCiIQpBigBgIEgjiHQKEAOc8drAY49BmMmoUIRGiAATKCHzwo5t2DiEE3idCcBgzTq+YFCGClCMyBB4hSwj+T1ZX6hwZPQlPdIJo7fgZIfcc8m6dQQhSEuNhwcRI/n9P22gTtzg5JSKZZp7eaTLtiUnQO0NhPIJAZxNaJfJs3DwOSY3TY//lIQVS9OAjQgSEUEQxZphSSlJZkmVjFBhC3O+4j8Ucne6Y42otCAHYj9+R4EcUpTgWJvhh386S4CMhKYS04xOlgnf9quQYKIUwCjmdQQgQHKjsD2j744LI5JEkQhwP4fuk0TLg41hRQUKpNO6vyDBeI4Dzdj9m3wYdjOZQCHyw7yCZ9i40xgWkOYhxw8sYyDKJUoJhGA1klimyDKwNhCjfSQAp8hEfYoDgCL4fCyT2Ky7GgzVjq9pxrHsFbQMm329ZCkSMf+A3Kf6ueqA7dYbEoWRgN8wxWtE6TYyBTCcGXyICCDFK3t5BjHKfi/yncyyG8fy6EIIYA2MaF7GpxgeLlBqly1GmM+7oKSX3/uTtJtQ+iohvoR3HTpA5IY7tFkIkYInOQvSklEPSCNmDCCRpRn1kO8RkBiYD78DoMdyK4U/uW4jRtmiJe/sWUoZ9JikxmR7nfkz7EDqhZCA3nnaQ+KBHAv6P2lEIgdoLMhvju5jfxwFCj1YZKXRIXdDHCQhFnmdorflDHpIwRjIMf3rTpIgQCikzvKuJCWLfkZxHmjFATmGxXyi/TyEEyQ6IEEgxgtYIBXtWf/fVUkqUkn9s///ouklhZCIksR/HcY+IKa2dEJPH6LEdE2/Pev6hMiF6fEzvirEvN4g0umCh8K4HekxWYu0Ua0fClVIAkr4Pf6eQkrJAmFFP9LstYY/eFBYgPAgLSb0rINogTEbyDnSG0IbUdyAFwmTvkBJCxPvI/w/Bww223rLQggAAAABJRU5ErkJggg==", ke = (e, t) => {
382
+ const l = (n) => {
383
+ const u = n.target;
384
+ if (!(u instanceof Node)) {
385
+ t();
386
+ return;
387
+ }
388
+ const d = e();
389
+ (Array.isArray(d) ? d : [d]).some((r) => r != null && r.contains(u)) || t();
390
+ };
391
+ return document.addEventListener("pointerdown", l, !0), () => document.removeEventListener("pointerdown", l, !0);
392
+ }, Nl = { class: "basemap-switch-wrap" }, Bl = { class: "basemap-switch-form" }, Yl = ["aria-expanded"], Gl = {
393
+ key: 0,
394
+ class: "basemap-unit-options",
395
+ role: "listbox"
396
+ }, Zl = ["aria-selected", "onClick"], Ql = {
397
+ key: 0,
398
+ class: "basemap-switch-message"
399
+ }, Fl = /* @__PURE__ */ pe({
57
400
  __name: "BasemapSwitch",
58
401
  props: {
59
402
  /** MapView 实例 */
60
- view: { type: Object, required: !0 }
403
+ view: { type: Object, required: !0 },
404
+ /** 底图密钥;未传时尝试 inject(BASEMAP_KEYS_KEY) */
405
+ keys: { type: Object, default: null }
61
406
  },
62
- setup(a) {
63
- const p = a, n = () => w(p.view), i = (s) => {
64
- const e = n();
65
- e != null && e.map && (e.map.basemap = s);
66
- }, r = () => {
67
- const s = n();
68
- if (!(s != null && s.map)) return;
69
- const e = new T({
70
- url: "https://basemaps.arcgis.com/arcgis/rest/services/World_Basemap_v2/VectorTileServer"
71
- });
72
- s.map.basemap = new A({
73
- baseLayers: [e],
74
- title: "自定义矢量",
75
- id: "custom-vt"
76
- });
407
+ emits: ["before-change"],
408
+ setup(e, { emit: t }) {
409
+ const l = e, n = t, u = () => ge(l.view), d = lt(() => l.keys), b = Je, r = T(!1), s = T(!1), A = T(null), o = T(null), c = T("");
410
+ let D = null;
411
+ const y = ee(() => {
412
+ var R, E, J, x;
413
+ if (o.value)
414
+ return ((R = b.find((w) => w.value === o.value)) == null ? void 0 : R.label) ?? "";
415
+ const W = (x = (J = (E = u()) == null ? void 0 : E.map) == null ? void 0 : J.basemap) == null ? void 0 : x.title;
416
+ return typeof W == "string" && W.trim() ? W : "当前底图";
417
+ }), p = () => {
418
+ var W, R;
419
+ o.value = kt(((R = (W = u()) == null ? void 0 : W.map) == null ? void 0 : R.basemap) ?? null);
420
+ }, M = () => {
421
+ r.value = !r.value, r.value ? (p(), c.value = "") : L();
422
+ }, B = () => {
423
+ r.value = !1, L(), c.value = "";
424
+ }, L = () => {
425
+ s.value = !1;
426
+ }, P = () => {
427
+ s.value = !s.value;
428
+ }, H = (W) => {
429
+ const R = u();
430
+ R != null && R.map && (R.map.basemap = Ct(W, d.value));
431
+ }, I = (W) => {
432
+ L();
433
+ const R = Lt(W, d.value);
434
+ if (R) {
435
+ c.value = R;
436
+ return;
437
+ }
438
+ c.value = "", n("before-change"), o.value = W, H(W);
77
439
  };
78
- return (s, e) => (y(), f("div", W, [
79
- c("button", {
80
- type: "button",
81
- onClick: e[0] || (e[0] = (u) => i("streets-vector"))
82
- }, "矢量"),
83
- c("button", {
440
+ return fe(() => {
441
+ D = ke(() => A.value, L), p();
442
+ }), me(() => {
443
+ D == null || D(), D = null;
444
+ }), (W, R) => (g(), N("div", Nl, [
445
+ r.value ? (g(), re(Ee, {
446
+ key: 0,
447
+ title: "选择底图",
448
+ width: 300,
449
+ anchor: "start",
450
+ onClose: B
451
+ }, {
452
+ default: Ie(() => [
453
+ a("div", Bl, [
454
+ R[1] || (R[1] = a("span", { class: "basemap-switch-label" }, "选择底图", -1)),
455
+ a("div", {
456
+ ref_key: "basemapSelectRef",
457
+ ref: A,
458
+ class: "basemap-unit-select"
459
+ }, [
460
+ a("button", {
461
+ type: "button",
462
+ class: ae(["basemap-unit-trigger", { "is-open": s.value }]),
463
+ "aria-label": "底图选项",
464
+ "aria-haspopup": "listbox",
465
+ "aria-expanded": s.value,
466
+ onClick: te(P, ["stop"]),
467
+ onKeydown: Ae(L, ["esc"])
468
+ }, [
469
+ a("span", null, U(y.value), 1),
470
+ R[0] || (R[0] = a("span", {
471
+ class: "basemap-unit-arrow",
472
+ "aria-hidden": "true"
473
+ }, null, -1))
474
+ ], 42, Yl),
475
+ s.value ? (g(), N("ul", Gl, [
476
+ (g(!0), N(ce, null, de(se(b), (E) => (g(), N("li", {
477
+ key: E.value
478
+ }, [
479
+ a("button", {
480
+ type: "button",
481
+ role: "option",
482
+ "aria-selected": o.value === E.value,
483
+ onClick: te((J) => I(E.value), ["stop"])
484
+ }, U(E.label), 9, Zl)
485
+ ]))), 128))
486
+ ])) : _("", !0)
487
+ ], 512)
488
+ ]),
489
+ c.value ? (g(), N("p", Ql, U(c.value), 1)) : _("", !0)
490
+ ]),
491
+ _: 1
492
+ })) : _("", !0),
493
+ a("button", {
84
494
  type: "button",
85
- onClick: e[1] || (e[1] = (u) => i("satellite"))
86
- }, "影像"),
87
- c("button", {
88
- type: "button",
89
- onClick: e[2] || (e[2] = (u) => i("terrain"))
90
- }, "地形"),
91
- c("button", {
92
- type: "button",
93
- onClick: e[3] || (e[3] = (u) => i("topo-vector"))
94
- }, "地形图"),
95
- c("button", {
96
- type: "button",
97
- onClick: r
98
- }, "自定义")
495
+ class: ae(["basemap-switch-trigger", { "is-active": r.value }]),
496
+ style: Ye({ backgroundImage: `url(${se(Ol)})` }),
497
+ "aria-label": "选择底图",
498
+ onClick: M
499
+ }, " 底图 ", 6)
99
500
  ]));
100
501
  }
101
- }, q = /* @__PURE__ */ h(j, [["__scopeId", "data-v-98d50ba6"]]), N = { class: "toolbar-box" }, E = {
102
- __name: "MapToolbar",
502
+ }), Pl = /* @__PURE__ */ ve(Fl, [["__scopeId", "data-v-3546149f"]]), Le = /* @__PURE__ */ new Map(), De = /* @__PURE__ */ new Set(), Wl = (e) => De.has(e), qe = (e) => {
503
+ Le.delete(e), De.delete(e);
504
+ }, Jl = (e) => {
505
+ for (const t of [...De])
506
+ e.has(t) || qe(t);
507
+ for (const t of [...Le.keys()])
508
+ e.has(t) || Le.delete(t);
509
+ }, mt = (e) => e.type === "feature", vt = (e) => e.replace(/\\/g, "\\\\").replace(/"/g, '\\"'), Dt = (e) => `Text($feature["${e.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"])`, zl = (e) => {
510
+ if (e.length === 0)
511
+ throw new Error("buildLabelExpression: fields 不能为空");
512
+ return e.map((t) => Dt(t)).join(' + " " + ');
513
+ }, jl = (e, t) => {
514
+ const l = [];
515
+ let n = 0;
516
+ const u = /\{(\d+)\}/g;
517
+ let d;
518
+ for (; (d = u.exec(t)) !== null; ) {
519
+ const r = t.slice(n, d.index);
520
+ r && l.push(`"${vt(r)}"`);
521
+ const s = Number(d[1]), A = e[s];
522
+ if (!A)
523
+ throw new Error(`buildLabelExpression: 模板索引 {${s}} 超出 fields 范围`);
524
+ l.push(Dt(A)), n = d.index + d[0].length;
525
+ }
526
+ const b = t.slice(n);
527
+ if (b && l.push(`"${vt(b)}"`), l.length === 0)
528
+ throw new Error("buildLabelExpression: fieldTemplate 无效");
529
+ return l.join(" + ");
530
+ }, Kl = (e) => {
531
+ var l;
532
+ if ((l = e.expression) != null && l.trim())
533
+ return e.expression.trim();
534
+ const t = e.fields ?? [];
535
+ if (t.length === 0)
536
+ throw new Error("BusinessLayerLabelConfig 需提供 expression 或 fields");
537
+ return e.fieldTemplate ? jl(t, e.fieldTemplate) : zl(t);
538
+ }, yt = (e, t) => e === void 0 ? t : e, Ul = (e) => {
539
+ const t = e.style ?? {}, l = Kl(e);
540
+ return new wt({
541
+ labelPlacement: t.labelPlacement || "center-center",
542
+ labelExpressionInfo: { expression: l },
543
+ symbol: new St({
544
+ color: yt(t.color, [26, 127, 55, 1]),
545
+ haloColor: yt(t.haloColor, [255, 255, 255, 1]),
546
+ haloSize: t.haloSize ?? 1.5,
547
+ font: {
548
+ size: t.fontSize ?? 11,
549
+ weight: t.fontWeight ?? "bold"
550
+ }
551
+ })
552
+ });
553
+ }, Vl = (e, t) => {
554
+ if (e.layerId === void 0 || e.layerId === null || e.layerId === "")
555
+ return null;
556
+ const l = String(e.layerId);
557
+ return l.startsWith(t) ? l : `${t}${l}`;
558
+ }, Xl = (e, t, l) => {
559
+ const n = Vl(t, l);
560
+ if (n) {
561
+ const u = e.findLayerById(n);
562
+ if (u && mt(u)) return u;
563
+ }
564
+ if (t.title) {
565
+ const u = e.layers.find((d) => d.title === t.title);
566
+ if (u && mt(u)) return u;
567
+ }
568
+ return null;
569
+ }, Ot = (e, t) => {
570
+ if (t.length === 0) return;
571
+ const l = e.outFields;
572
+ if (!l || l.length === 0) {
573
+ e.outFields = [...t];
574
+ return;
575
+ }
576
+ if (l.includes("*")) return;
577
+ const n = /* @__PURE__ */ new Set([...l, ...t]);
578
+ e.outFields = [...n];
579
+ }, Hl = (e, t, l) => {
580
+ if (!e || t.length === 0) return;
581
+ const n = (l == null ? void 0 : l.idPrefix) ?? he;
582
+ t.forEach((u) => {
583
+ const d = Xl(e, u, n);
584
+ if (!d) {
585
+ console.warn(
586
+ "applyBusinessLayerLabels: 未找到匹配图层",
587
+ u.layerId ?? u.title
588
+ );
589
+ return;
590
+ }
591
+ let b;
592
+ try {
593
+ b = Ul(u);
594
+ } catch (s) {
595
+ console.error("applyBusinessLayerLabels: 创建注记失败", u, s);
596
+ return;
597
+ }
598
+ const r = u.fields ?? [];
599
+ d.when(() => {
600
+ Wl(d.id) || (r.length > 0 && Ot(d, r), d.labelsVisible = !0, d.labelingInfo = [b]);
601
+ }).catch((s) => {
602
+ console.error(
603
+ `applyBusinessLayerLabels: 图层加载失败 (${d.title || d.id})`,
604
+ s
605
+ );
606
+ });
607
+ });
608
+ }, ql = 8848, _l = 'PROJCS["CGCS2000_Albers",GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Origin",105.0],PARAMETER["Latitude_Of_1st_Point",25.0],PARAMETER["Latitude_Of_2nd_Point",47.0],PARAMETER["Scale_Factor",0.0],PARAMETER["Central_Parallel",0.0],PARAMETER["Azimuth",0.0],PARAMETER["Longitude_Of_1st_Point",0.0],PARAMETER["Longitude_Of_2nd_Point",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",0.0],UNIT["Meter",1.0]]', $l = (e) => (e || "").replace(/\s+/g, "").toUpperCase(), _e = (e) => {
609
+ const t = (e == null ? void 0 : e.wkid) ?? (e == null ? void 0 : e.latestWkid), l = t == null || !Number.isFinite(Number(t)) ? null : String(t), n = $l((e == null ? void 0 : e.wkt) || "");
610
+ return { wkid: l, wkt: n };
611
+ }, ea = (e) => {
612
+ if (e == null || e === "")
613
+ return null;
614
+ const t = Number(e);
615
+ return Number.isFinite(t) ? t === ql ? {
616
+ sourceCode: t,
617
+ wkid: null,
618
+ wkt: _l,
619
+ label: "CGCS2000_Albers"
620
+ } : {
621
+ sourceCode: t,
622
+ wkid: t,
623
+ wkt: null,
624
+ label: `WKID ${t}`
625
+ } : null;
626
+ }, ta = (e) => ({
627
+ wkid: e.wkid,
628
+ wkt: e.wkt
629
+ }), la = (e, t) => {
630
+ const l = _e(e), n = _e(t);
631
+ return l.wkid && n.wkid ? l.wkid === n.wkid ? "match" : "mismatch" : l.wkt && n.wkt ? l.wkt === n.wkt ? "match" : "mismatch" : "unreadable";
632
+ }, aa = (e) => {
633
+ const t = _e(e);
634
+ if (t.wkid) return `WKID ${t.wkid}`;
635
+ if (t.wkt) {
636
+ const l = ((e == null ? void 0 : e.wkt) || "").match(/PROJCS\["([^"]+)"/i);
637
+ return l != null && l[1] ? l[1] : "自定义 WKT";
638
+ }
639
+ return "未知";
640
+ }, he = "bgl-biz-", Ke = new globalThis.Map(), $e = /* @__PURE__ */ new Set(), Nt = () => {
641
+ $e.forEach((e) => e());
642
+ }, He = (e) => Ke.get(e) ?? null, Bs = () => Array.from(Ke.values()), na = (e) => ($e.add(e), () => {
643
+ $e.delete(e);
644
+ }), oa = (e) => {
645
+ let t = !1;
646
+ e.forEach((l) => {
647
+ Ke.delete(l) && (t = !0);
648
+ }), t && Nt();
649
+ }, sa = (e) => {
650
+ Ke.set(e.layerId, e), Nt();
651
+ }, Be = (e) => {
652
+ if (e == null || e === "") return;
653
+ const t = Number(e);
654
+ return Number.isFinite(t) ? t : void 0;
655
+ }, Bt = (e) => e === !0 || e === 1 || e === "1" ? !0 : typeof e == "string" ? e.toLowerCase() === "true" : !1, ia = (e) => e == null || e === "" ? !0 : Bt(e), ra = (e) => /\/(MapServer|FeatureServer)\/?$/i.test(e.replace(/\?.*$/, "")), Yt = (e) => {
656
+ const t = String(e.mapServiceType ?? ""), l = e.mapServiceUrl || "";
657
+ return !!(/\/MapServer\/?$/i.test(l.replace(/\?.*$/, "")) || (t === "1" || t.toLowerCase() === "mapserver") && ra(l));
658
+ }, ft = (e, t) => {
659
+ if (!Bt(e.scaleConfig)) return t;
660
+ const l = Be(e.minScale), n = Be(e.maxScale);
661
+ return l !== void 0 && (t.minScale = l), n !== void 0 && (t.maxScale = n), t;
662
+ }, Qe = (e, t = he) => `${t}${String(e.id)}`, Gt = (e, t) => {
663
+ var u;
664
+ const l = {
665
+ url: e.mapServiceUrl,
666
+ id: Qe(e, t == null ? void 0 : t.idPrefix),
667
+ title: e.mapServiceName,
668
+ visible: ia(e.layerVisible)
669
+ };
670
+ if (t != null && t.accessToken && (l.customParameters = { token: t.accessToken }), Yt(e))
671
+ return ft(e, l);
672
+ const n = { ...l };
673
+ return (u = t == null ? void 0 : t.outFields) != null && u.length && (n.outFields = t.outFields), ft(e, n);
674
+ }, Ys = (e) => Gt(e), ca = (e) => e.replace(/\/$/, "").replace(/\/portal$/i, "");
675
+ let Pe = "", Fe = null;
676
+ const ua = (e, t) => {
677
+ var n;
678
+ Pe = t;
679
+ const l = e.filter(Boolean);
680
+ if (Fe) {
681
+ Fe.urls = l;
682
+ return;
683
+ }
684
+ Fe = {
685
+ urls: l,
686
+ before: (u) => {
687
+ if (!Pe) return;
688
+ const d = u.requestOptions.query ?? {};
689
+ d.token || (u.requestOptions.query = { ...d, token: Pe });
690
+ }
691
+ }, (n = st.request).interceptors ?? (n.interceptors = []), st.request.interceptors.push(Fe);
692
+ }, da = () => {
693
+ Pe = "";
694
+ }, ht = async (e) => {
695
+ var o;
696
+ const t = ca(e.portalUrl), l = e.tokenServiceUrl || `${t}/portal/sharing/rest/generateToken`, n = e.referer || (typeof window < "u" ? window.location.origin : t), u = String(e.expirationMinutes ?? 120), d = new URLSearchParams({
697
+ username: e.username,
698
+ password: e.password,
699
+ client: "referer",
700
+ referer: n,
701
+ expiration: u,
702
+ f: "json"
703
+ }), b = await fetch(l, {
704
+ method: "POST",
705
+ headers: {
706
+ "Content-Type": "application/x-www-form-urlencoded"
707
+ },
708
+ body: d
709
+ });
710
+ if (!b.ok)
711
+ throw new Error(`Portal generateToken HTTP ${b.status}`);
712
+ const r = await b.json();
713
+ if (!r.token)
714
+ throw new Error(((o = r.error) == null ? void 0 : o.message) || "Portal generateToken 未返回 token");
715
+ const A = [.../* @__PURE__ */ new Set([
716
+ `${t}/portal/sharing/rest`,
717
+ `${t}/server`,
718
+ `${t}/server/rest`,
719
+ `${t}/server/rest/services`,
720
+ ...(e.extraServers ?? []).map((c) => c.replace(/\/$/, ""))
721
+ ])];
722
+ return A.forEach((c) => {
723
+ rl.registerToken({
724
+ server: c,
725
+ token: r.token
726
+ });
727
+ }), ua(A, r.token), r.token;
728
+ }, Aa = (e, t) => {
729
+ const l = Math.max(1, e), n = Math.max(5, Math.floor(l / 6)), d = Math.min(Math.max(1, t ?? n), Math.floor(l / 2));
730
+ return Math.max(1, l - d) * 60 * 1e3;
731
+ }, Gs = async (e) => {
732
+ const { renewBeforeMinutes: t, onRenewError: l, ...n } = e, u = n.expirationMinutes ?? 120;
733
+ let d = !1, b = null, r = await ht({
734
+ ...n,
735
+ expirationMinutes: u
736
+ });
737
+ const s = () => {
738
+ b !== null && (clearTimeout(b), b = null);
739
+ }, A = async () => {
740
+ if (!d)
741
+ try {
742
+ r = await ht({
743
+ ...n,
744
+ expirationMinutes: u
745
+ }), o();
746
+ } catch (c) {
747
+ console.error("Portal token 自动续期失败:", c), l == null || l(c), d || (b = setTimeout(() => {
748
+ A();
749
+ }, 300 * 1e3));
750
+ }
751
+ }, o = () => {
752
+ if (s(), d) return;
753
+ const c = Aa(u, t);
754
+ b = setTimeout(() => {
755
+ A();
756
+ }, c);
757
+ };
758
+ return o(), {
759
+ get token() {
760
+ return r;
761
+ },
762
+ stop: () => {
763
+ d = !0, s(), da();
764
+ }
765
+ };
766
+ }, pa = (e, t) => {
767
+ const l = new Set(t), n = e.layers.filter((u) => l.has(u.id)).toArray();
768
+ oa(t), n.length > 0 && (e.removeMany(n), n.forEach((u) => u.destroy()));
769
+ }, ma = (e, t) => Yt(e) ? new il(t) : new sl(t), va = (e) => {
770
+ const {
771
+ map: t,
772
+ layers: l,
773
+ resolveLayerProps: n,
774
+ reverse: u = !1,
775
+ idPrefix: d = he,
776
+ outFields: b,
777
+ labelConfigs: r,
778
+ expectedSpatialReferenceWkid: s,
779
+ onSpatialReferenceMismatch: A,
780
+ accessToken: o
781
+ } = e, c = [...l].sort((B, L) => {
782
+ const P = Be(B.layerOrder) ?? 0, H = Be(L.layerOrder) ?? 0;
783
+ return P - H;
784
+ }), D = u ? [...c].reverse() : c, y = D.map((B) => Qe(B, d));
785
+ pa(t, y);
786
+ const p = ea(
787
+ s
788
+ ), M = D.map((B) => {
789
+ const L = Gt(B, { idPrefix: d, outFields: b, accessToken: o }), P = n == null ? void 0 : n(B, L), H = P ? { ...L, ...P } : L, I = ma(B, H);
790
+ return I.when().then(() => {
791
+ if (!p) return;
792
+ const R = I.spatialReference ?? null, E = la(
793
+ ta(p),
794
+ R
795
+ );
796
+ if (E === "match") return;
797
+ const J = (R == null ? void 0 : R.wkid) ?? (R == null ? void 0 : R.latestWkid) ?? null, x = typeof J == "number" && Number.isFinite(J) ? J : null, w = {
798
+ layerId: I.id,
799
+ layerTitle: B.mapServiceName,
800
+ layerUrl: B.mapServiceUrl,
801
+ expectedWkid: p.sourceCode,
802
+ actualWkid: x,
803
+ reason: E,
804
+ expectedLabel: p.label,
805
+ actualLabel: aa(R)
806
+ };
807
+ if (E === "mismatch" && sa(w), A) {
808
+ A(w);
809
+ return;
810
+ }
811
+ if (E === "unreadable") {
812
+ console.warn(
813
+ `[坐标系校验] ${w.layerTitle} 无法读取坐标系:期望 ${w.expectedLabel},实际 ${w.actualLabel},url=${w.layerUrl}`
814
+ );
815
+ return;
816
+ }
817
+ console.warn(
818
+ `[坐标系校验] ${w.layerTitle} 不一致:期望 ${w.expectedLabel},实际 ${w.actualLabel},url=${w.layerUrl}`
819
+ );
820
+ }).catch((W) => {
821
+ console.error(`业务图层加载失败: ${B.mapServiceName} (${B.mapServiceUrl})`, W);
822
+ try {
823
+ t.findLayerById(I.id) && t.remove(I), I.destroy();
824
+ } catch (R) {
825
+ console.error(`移除失败图层时出错: ${B.mapServiceName}`, R);
826
+ }
827
+ }), I;
828
+ });
829
+ return M.length > 0 && t.addMany(M), r && r.length > 0 && Hl(t, r, { idPrefix: d }), M;
830
+ }, ya = (e, t) => {
831
+ const l = [];
832
+ return e.layers.forEach((n, u) => {
833
+ (n.id || "").startsWith(t) && l.push(u);
834
+ }), l;
835
+ }, fa = (e) => {
836
+ const { map: t, layers: l, reverse: n = !1, idPrefix: u = he } = e, d = [...l].sort((s, A) => {
837
+ const o = Be(s.layerOrder) ?? 0, c = Be(A.layerOrder) ?? 0;
838
+ return o - c;
839
+ }), r = (n ? [...d].reverse() : d).map((s) => t.findLayerById(Qe(s, u))).filter((s) => !!s);
840
+ r.length !== 0 && r.forEach((s, A) => {
841
+ const o = ya(t, u)[A];
842
+ o !== void 0 && t.layers.indexOf(s) !== o && t.layers.reorder(s, o);
843
+ });
844
+ }, ha = /* @__PURE__ */ pe({
845
+ __name: "MapLegend",
846
+ props: {
847
+ view: {},
848
+ idPrefix: { default: he },
849
+ position: { default: "left" },
850
+ offsetX: { default: 12 },
851
+ offsetY: { default: 14 }
852
+ },
853
+ setup(e) {
854
+ const t = e, l = () => ge(t.view), n = T(null);
855
+ let u = null, d = null;
856
+ const b = ee(() => {
857
+ const c = Math.max(0, t.offsetX), y = {
858
+ bottom: `${Math.max(0, t.offsetY)}px`
859
+ };
860
+ return t.position === "right" ? (y.right = `${c}px`, y.left = "auto") : (y.left = `${c}px`, y.right = "auto"), y;
861
+ }), r = () => {
862
+ var y;
863
+ const c = (y = l()) == null ? void 0 : y.map;
864
+ if (!c) return [];
865
+ const D = t.idPrefix;
866
+ return c.layers.filter((p) => (p.id || "").startsWith(D) && p.listMode !== "hide").toArray().reverse();
867
+ }, s = () => r().map((c) => ({
868
+ layer: c,
869
+ title: c.title || c.id
870
+ })), A = () => {
871
+ u && (u.layerInfos = s());
872
+ }, o = () => {
873
+ d == null || d.remove(), d = null, u && (u.destroy(), u = null);
874
+ };
875
+ return fe(() => {
876
+ const c = n.value, D = l();
877
+ if (!c || !D) return;
878
+ u = new ol({
879
+ view: D,
880
+ container: c,
881
+ layerInfos: s()
882
+ });
883
+ const y = D.map;
884
+ y && (d = y.layers.on("change", A));
885
+ }), ue(
886
+ () => t.idPrefix,
887
+ () => {
888
+ A();
889
+ }
890
+ ), me(() => {
891
+ o();
892
+ }), (c, D) => (g(), N("section", {
893
+ class: ae(["map-legend", e.position === "right" ? "is-right" : "is-left"]),
894
+ style: Ye(b.value),
895
+ onClick: D[0] || (D[0] = te(() => {
896
+ }, ["stop"])),
897
+ onPointerdown: D[1] || (D[1] = te(() => {
898
+ }, ["stop"]))
899
+ }, [
900
+ a("div", {
901
+ ref_key: "legendContainerRef",
902
+ ref: n,
903
+ class: "map-legend__body"
904
+ }, null, 512)
905
+ ], 38));
906
+ }
907
+ }), ba = /* @__PURE__ */ ve(ha, [["__scopeId", "data-v-714cd251"]]), ga = {
908
+ key: 0,
909
+ class: "map-scale-bar__graphic-label"
910
+ }, wa = {
911
+ key: 1,
912
+ class: "map-scale-bar__numeric"
913
+ }, Sa = /* @__PURE__ */ pe({
914
+ __name: "MapScaleBar",
915
+ props: {
916
+ view: {},
917
+ position: { default: "left" },
918
+ offsetX: { default: 12 },
919
+ offsetY: { default: 14 },
920
+ unit: { default: "metric" },
921
+ barStyle: { default: "line" },
922
+ showNumericScale: { type: Boolean, default: !1 },
923
+ numericScaleUseGrouping: { type: Boolean, default: !0 },
924
+ numericScaleFormatter: {},
925
+ panelBackground: {},
926
+ panelBorderColor: {},
927
+ graphicLabelColor: {},
928
+ numericLabelColor: {}
929
+ },
930
+ setup(e) {
931
+ const t = e, l = () => ge(t.view), n = T(null), u = T(""), d = T("");
932
+ let b = null, r = null, s = null, A = 0;
933
+ const o = ee(() => {
934
+ const I = Math.max(0, t.offsetX), R = {
935
+ bottom: `${Math.max(0, t.offsetY)}px`
936
+ };
937
+ return t.position === "right" ? (R.right = `${I}px`, R.left = "auto") : (R.left = `${I}px`, R.right = "auto"), t.panelBackground && (R["--bgl-scalebar-bg"] = t.panelBackground), t.panelBorderColor && (R["--bgl-scalebar-border-color"] = t.panelBorderColor), t.graphicLabelColor && (R["--bgl-scalebar-graphic-label-color"] = t.graphicLabelColor), t.numericLabelColor && (R["--bgl-scalebar-numeric-label-color"] = t.numericLabelColor), R;
938
+ }), c = () => {
939
+ b && (b.destroy(), b = null);
940
+ }, D = () => {
941
+ r == null || r.remove(), r = null;
942
+ }, y = () => {
943
+ s == null || s.disconnect(), s = null;
944
+ }, p = () => {
945
+ var E;
946
+ const I = n.value;
947
+ if (!I) {
948
+ d.value = "";
949
+ return;
950
+ }
951
+ const W = I.querySelector(".esri-scale-bar__label"), R = ((E = W == null ? void 0 : W.textContent) == null ? void 0 : E.trim()) ?? "";
952
+ d.value = R;
953
+ }, M = () => {
954
+ y();
955
+ const I = n.value;
956
+ if (!I) {
957
+ d.value = "";
958
+ return;
959
+ }
960
+ p(), s = new MutationObserver(() => {
961
+ p();
962
+ }), s.observe(I, {
963
+ childList: !0,
964
+ subtree: !0,
965
+ characterData: !0
966
+ });
967
+ }, B = () => {
968
+ var E;
969
+ const I = (E = l()) == null ? void 0 : E.scale;
970
+ if (!I || !Number.isFinite(I)) {
971
+ u.value = "";
972
+ return;
973
+ }
974
+ const W = Math.round(I);
975
+ if (t.numericScaleFormatter) {
976
+ u.value = t.numericScaleFormatter(W);
977
+ return;
978
+ }
979
+ const R = t.numericScaleUseGrouping ? W.toLocaleString() : `${W}`;
980
+ u.value = `1:${R}`;
981
+ }, L = async () => {
982
+ const I = ++A;
983
+ await H(I), I === A && await P();
984
+ }, P = async () => {
985
+ D();
986
+ const I = l();
987
+ if (!t.showNumericScale || !I) {
988
+ u.value = "";
989
+ return;
990
+ }
991
+ await I.when(), I === l() && (B(), r = We.watch(
992
+ () => {
993
+ var W, R;
994
+ return [I.scale, (W = I.center) == null ? void 0 : W.x, (R = I.center) == null ? void 0 : R.y, I.width, I.height];
995
+ },
996
+ B,
997
+ { initial: !0 }
998
+ ));
999
+ }, H = async (I = ++A) => {
1000
+ c(), y(), d.value = "";
1001
+ const W = n.value, R = l();
1002
+ !W || !R || (await R.when(), !(I !== A || R !== l()) && (await new Promise((E) => requestAnimationFrame(() => E())), !(I !== A || R !== l()) && (b = new cl({
1003
+ view: R,
1004
+ container: W,
1005
+ unit: t.unit,
1006
+ style: t.barStyle
1007
+ }), M())));
1008
+ };
1009
+ return fe(() => {
1010
+ L();
1011
+ }), ue(
1012
+ () => t.view,
1013
+ () => {
1014
+ L();
1015
+ }
1016
+ ), ue(
1017
+ () => [t.unit, t.barStyle],
1018
+ () => {
1019
+ H();
1020
+ }
1021
+ ), ue(
1022
+ () => t.showNumericScale,
1023
+ () => {
1024
+ P();
1025
+ }
1026
+ ), ue(
1027
+ () => [t.numericScaleUseGrouping, t.numericScaleFormatter],
1028
+ () => {
1029
+ B();
1030
+ }
1031
+ ), me(() => {
1032
+ D(), y(), c();
1033
+ }), (I, W) => (g(), N("div", {
1034
+ class: ae(["map-scale-bar", e.position === "right" ? "is-right" : "is-left"]),
1035
+ style: Ye(o.value),
1036
+ onClick: W[0] || (W[0] = te(() => {
1037
+ }, ["stop"])),
1038
+ onPointerdown: W[1] || (W[1] = te(() => {
1039
+ }, ["stop"]))
1040
+ }, [
1041
+ d.value ? (g(), N("div", ga, U(d.value), 1)) : _("", !0),
1042
+ a("div", {
1043
+ ref_key: "scaleBarContainerRef",
1044
+ ref: n,
1045
+ class: "map-scale-bar__body"
1046
+ }, null, 512),
1047
+ e.showNumericScale && u.value ? (g(), N("div", wa, U(u.value), 1)) : _("", !0)
1048
+ ], 38));
1049
+ }
1050
+ }), Ia = /* @__PURE__ */ ve(Sa, [["__scopeId", "data-v-26c169e2"]]), Ea = { class: "coordinate-locate-form" }, La = { class: "coordinate-locate-field" }, ka = ["aria-expanded"], xa = {
1051
+ key: 0,
1052
+ class: "coordinate-system-options",
1053
+ role: "listbox"
1054
+ }, Ca = ["aria-selected", "onClick"], Ma = ["placeholder"], Ra = ["placeholder"], Ta = { class: "coordinate-locate-hint" }, Da = {
1055
+ key: 0,
1056
+ class: "coordinate-locate-error",
1057
+ role: "alert"
1058
+ }, Oa = /* @__PURE__ */ pe({
1059
+ __name: "CoordinateLocatePanel",
103
1060
  props: {
104
1061
  /** MapView 实例 */
105
1062
  view: { type: Object, required: !0 },
106
- /** 绘图使用的 GraphicsLayer,由 ArcgisMap 注入 */
107
- sketchLayer: { type: Object, required: !0 }
1063
+ /** 坐标定位面板可用坐标系配置;不传则使用内置默认项 */
1064
+ coordinateSystemConfig: {
1065
+ type: Object,
1066
+ default: null
1067
+ }
108
1068
  },
109
- setup(a) {
110
- const p = a, n = () => w(p.view), i = () => w(p.sketchLayer), r = d(null), s = d(null), e = () => {
111
- const t = r.value, o = n();
112
- t && o && (o.ui.remove(t), t.destroy()), r.value = null;
113
- }, u = () => {
114
- const t = n();
115
- t && (t.zoom += 1);
116
- }, b = () => {
117
- const t = n();
118
- t && (t.zoom -= 1);
119
- }, v = () => {
120
- const t = n();
121
- t && t.goTo({ center: [116.3972, 39.9075], zoom: 12 });
122
- }, l = () => {
123
- const t = n();
124
- if (!t) return;
125
- e();
126
- const o = new D({ view: t });
127
- r.value = o, t.ui.add(o, "top-right"), o.viewModel.start();
1069
+ emits: ["close"],
1070
+ setup(e, { emit: t }) {
1071
+ const l = e, n = t, u = () => ge(l.view), d = [
1072
+ { wkid: 4490, label: "经纬度" },
1073
+ { wkid: 4548, label: "3度带-不带号" },
1074
+ { wkid: 4527, label: "3度带-带号" },
1075
+ { wkid: 4509, label: "6度带-不带号" },
1076
+ { wkid: 4498, label: "6度带-带号" }
1077
+ ], b = ee(() => {
1078
+ var k;
1079
+ const G = ((k = l.coordinateSystemConfig) == null ? void 0 : k.options) ?? [];
1080
+ return G.length > 0 ? G : d;
1081
+ }), r = () => {
1082
+ var Z, m;
1083
+ const G = b.value, k = (Z = l.coordinateSystemConfig) == null ? void 0 : Z.defaultWkid;
1084
+ return typeof k == "number" && Number.isFinite(k) && G.some((i) => i.wkid === k) ? k : ((m = G[0]) == null ? void 0 : m.wkid) ?? 4490;
1085
+ }, s = T(r()), A = T(!1), o = T(null), c = T(""), D = T(""), y = T(""), p = Se(null);
1086
+ let M = null, B = null;
1087
+ const L = (G) => new it({ wkid: G }).isGeographic, P = ee(
1088
+ () => L(s.value)
1089
+ ), H = ee(() => P.value ? "经度" : "横坐标"), I = ee(() => P.value ? "纬度" : "纵坐标"), W = ee(() => {
1090
+ var G;
1091
+ return ((G = b.value.find((k) => k.wkid === s.value)) == null ? void 0 : G.label) ?? "";
1092
+ }), R = ee(() => `提示:当前坐标系为 ${W.value},面板打开时按住 Shift + 左键可拾取地图坐标`), E = () => {
1093
+ A.value = !1;
1094
+ }, J = () => {
1095
+ A.value = !A.value;
1096
+ }, x = async (G) => {
1097
+ if (G === s.value) {
1098
+ E();
1099
+ return;
1100
+ }
1101
+ const k = s.value, Z = c.value, m = D.value, i = Number(Z), v = Number(m), f = !!Z && !!m && Number.isFinite(i) && Number.isFinite(v);
1102
+ if (E(), y.value = "", !f) {
1103
+ s.value = G;
1104
+ return;
1105
+ }
1106
+ try {
1107
+ const C = new xe({
1108
+ x: i,
1109
+ y: v,
1110
+ spatialReference: { wkid: k }
1111
+ }), Q = await z(C, G);
1112
+ if (!Q) {
1113
+ y.value = "坐标系转换失败,请检查坐标值";
1114
+ return;
1115
+ }
1116
+ const K = L(G) ? 6 : 3;
1117
+ s.value = G, c.value = Q.x.toFixed(K), D.value = Q.y.toFixed(K);
1118
+ } catch {
1119
+ y.value = "坐标系转换失败,请检查坐标值";
1120
+ }
1121
+ }, w = () => {
1122
+ M == null || M.remove(), M = null;
1123
+ }, z = async (G, k) => {
1124
+ await Ne.load();
1125
+ const Z = typeof k == "number" ? new it({ wkid: k }) : k, m = Ne.execute(G, Z);
1126
+ return m instanceof xe ? m : null;
1127
+ }, h = () => {
1128
+ const G = u(), k = p.value;
1129
+ k && G.graphics.remove(k), p.value = null;
1130
+ }, S = (G) => {
1131
+ const k = u(), Z = new ul({
1132
+ geometry: G,
1133
+ symbol: new tt({
1134
+ color: "#ff4d4f",
1135
+ size: 10,
1136
+ outline: {
1137
+ color: "#ffffff",
1138
+ width: 1
1139
+ }
1140
+ })
1141
+ });
1142
+ h(), p.value = Z, k.graphics.add(Z);
1143
+ }, Y = () => {
1144
+ const G = u();
1145
+ !G || M || (M = G.on("pointer-down", async (k) => {
1146
+ var m;
1147
+ if (k.button !== 0 || !((m = k.native) != null && m.shiftKey)) return;
1148
+ k.stopPropagation();
1149
+ const Z = G.toMap({ x: k.x, y: k.y });
1150
+ if (Z)
1151
+ try {
1152
+ const i = await z(Z, s.value);
1153
+ if (!i) {
1154
+ y.value = "地图坐标转换失败";
1155
+ return;
1156
+ }
1157
+ const v = P.value ? 6 : 3;
1158
+ c.value = i.x.toFixed(v), D.value = i.y.toFixed(v), S(Z), y.value = "";
1159
+ } catch {
1160
+ y.value = "地图坐标转换失败";
1161
+ }
1162
+ }));
1163
+ }, F = async () => {
1164
+ const G = Number(c.value), k = Number(D.value);
1165
+ if (!c.value || !D.value || !Number.isFinite(G) || !Number.isFinite(k)) {
1166
+ y.value = `请输入有效的${H.value}和${I.value}`;
1167
+ return;
1168
+ }
1169
+ if (P.value && (G < -180 || G > 180 || k < -90 || k > 90)) {
1170
+ y.value = "经度范围为 -180~180,纬度范围为 -90~90";
1171
+ return;
1172
+ }
1173
+ y.value = "";
1174
+ const Z = u(), m = new xe({
1175
+ x: G,
1176
+ y: k,
1177
+ spatialReference: { wkid: s.value }
1178
+ });
1179
+ let i = null;
1180
+ try {
1181
+ i = await z(m, Z.spatialReference);
1182
+ } catch {
1183
+ y.value = "坐标转换失败,请检查坐标系和坐标值";
1184
+ return;
1185
+ }
1186
+ if (!i) {
1187
+ y.value = "坐标转换失败,请检查坐标系和坐标值";
1188
+ return;
1189
+ }
1190
+ S(i);
1191
+ try {
1192
+ await Z.goTo({ target: i, scale: 2e3 }, { duration: 2e3, easing: "in-out-expo" });
1193
+ } catch (v) {
1194
+ (!(v instanceof Error) || v.name !== "AbortError") && (y.value = "定位失败,请检查坐标后重试");
1195
+ }
1196
+ };
1197
+ return ue(
1198
+ b,
1199
+ () => {
1200
+ var k;
1201
+ if (!b.value.some((Z) => Z.wkid === s.value)) {
1202
+ s.value = r();
1203
+ return;
1204
+ }
1205
+ const G = (k = l.coordinateSystemConfig) == null ? void 0 : k.defaultWkid;
1206
+ typeof G == "number" && Number.isFinite(G) && G !== s.value && b.value.some((Z) => Z.wkid === G) && (s.value = G);
1207
+ },
1208
+ { immediate: !0 }
1209
+ ), fe(() => {
1210
+ B = ke(
1211
+ () => o.value,
1212
+ E
1213
+ ), Y();
1214
+ }), me(() => {
1215
+ B == null || B(), B = null, w(), h();
1216
+ }), (G, k) => (g(), re(Ee, {
1217
+ title: "坐标定位",
1218
+ onClose: k[2] || (k[2] = (Z) => n("close"))
1219
+ }, {
1220
+ default: Ie(() => [
1221
+ a("div", Ea, [
1222
+ a("div", La, [
1223
+ k[4] || (k[4] = a("span", null, "坐标系:", -1)),
1224
+ a("div", {
1225
+ ref_key: "coordinateSystemSelectRef",
1226
+ ref: o,
1227
+ class: "coordinate-system-select"
1228
+ }, [
1229
+ a("button", {
1230
+ type: "button",
1231
+ class: ae(["coordinate-system-trigger", { "is-open": A.value }]),
1232
+ "aria-haspopup": "listbox",
1233
+ "aria-expanded": A.value,
1234
+ onClick: te(J, ["stop"]),
1235
+ onKeydown: Ae(E, ["esc"])
1236
+ }, [
1237
+ a("span", null, U(W.value), 1),
1238
+ k[3] || (k[3] = a("span", {
1239
+ class: "coordinate-system-arrow",
1240
+ "aria-hidden": "true"
1241
+ }, null, -1))
1242
+ ], 42, ka),
1243
+ A.value ? (g(), N("ul", xa, [
1244
+ (g(!0), N(ce, null, de(b.value, (Z) => (g(), N("li", {
1245
+ key: Z.wkid
1246
+ }, [
1247
+ a("button", {
1248
+ type: "button",
1249
+ role: "option",
1250
+ "aria-selected": s.value === Z.wkid,
1251
+ onClick: te((m) => x(Z.wkid), ["stop"])
1252
+ }, U(Z.label), 9, Ca)
1253
+ ]))), 128))
1254
+ ])) : _("", !0)
1255
+ ], 512)
1256
+ ]),
1257
+ a("label", null, [
1258
+ a("span", null, U(H.value) + ":", 1),
1259
+ Ge(a("input", {
1260
+ "onUpdate:modelValue": k[0] || (k[0] = (Z) => c.value = Z),
1261
+ type: "text",
1262
+ inputmode: "decimal",
1263
+ autocomplete: "off",
1264
+ placeholder: `请输入${H.value}`,
1265
+ onKeydown: Ae(F, ["enter"])
1266
+ }, null, 40, Ma), [
1267
+ [
1268
+ Ze,
1269
+ c.value,
1270
+ void 0,
1271
+ { trim: !0 }
1272
+ ]
1273
+ ])
1274
+ ]),
1275
+ a("label", null, [
1276
+ a("span", null, U(I.value) + ":", 1),
1277
+ Ge(a("input", {
1278
+ "onUpdate:modelValue": k[1] || (k[1] = (Z) => D.value = Z),
1279
+ type: "text",
1280
+ inputmode: "decimal",
1281
+ autocomplete: "off",
1282
+ placeholder: `请输入${I.value}`,
1283
+ onKeydown: Ae(F, ["enter"])
1284
+ }, null, 40, Ra), [
1285
+ [
1286
+ Ze,
1287
+ D.value,
1288
+ void 0,
1289
+ { trim: !0 }
1290
+ ]
1291
+ ])
1292
+ ])
1293
+ ]),
1294
+ a("p", Ta, U(R.value), 1),
1295
+ y.value ? (g(), N("p", Da, U(y.value), 1)) : _("", !0),
1296
+ a("button", {
1297
+ type: "button",
1298
+ class: "coordinate-locate-submit",
1299
+ onClick: F
1300
+ }, " 定位 ")
1301
+ ]),
1302
+ _: 1
1303
+ }));
1304
+ }
1305
+ }), Na = /* @__PURE__ */ ve(Oa, [["__scopeId", "data-v-38ffb4a9"]]), Ba = { class: "distance-measure-actions" }, Ya = { class: "distance-measure-unit" }, Ga = ["aria-expanded"], Za = {
1306
+ key: 0,
1307
+ class: "distance-unit-options",
1308
+ role: "listbox"
1309
+ }, Qa = ["aria-selected", "onClick"], Fa = { class: "distance-measure-result__label" }, Pa = { key: 0 }, Wa = /* @__PURE__ */ pe({
1310
+ __name: "DistanceMeasurePanel",
1311
+ props: {
1312
+ /** MapView 实例 */
1313
+ view: { type: Object, required: !0 }
1314
+ },
1315
+ emits: ["close"],
1316
+ setup(e, { emit: t }) {
1317
+ const l = e, n = t, u = () => ge(l.view), d = [
1318
+ { value: "meters", label: "米" },
1319
+ { value: "kilometers", label: "公里" }
1320
+ ], b = T("meters"), r = T(!1), s = T(null);
1321
+ let A = null;
1322
+ const o = T(null), c = T("请在地图上绘制线段(双击完成)"), D = Se(null), y = Se(null), p = [];
1323
+ let M = null, B, L;
1324
+ const P = () => new Al({
1325
+ data: {
1326
+ type: "CIMSymbolReference",
1327
+ symbol: {
1328
+ type: "CIMLineSymbol",
1329
+ symbolLayers: [
1330
+ {
1331
+ type: "CIMSolidStroke",
1332
+ enable: !0,
1333
+ capStyle: "Butt",
1334
+ joinStyle: "Round",
1335
+ miterLimit: 10,
1336
+ width: 1.6,
1337
+ color: [255, 234, 0, 255],
1338
+ effects: [
1339
+ {
1340
+ type: "CIMGeometricEffectDashes",
1341
+ dashTemplate: [6, 8],
1342
+ lineDashEnding: "HalfPattern"
1343
+ }
1344
+ ]
1345
+ },
1346
+ {
1347
+ type: "CIMSolidStroke",
1348
+ enable: !0,
1349
+ capStyle: "Butt",
1350
+ joinStyle: "Round",
1351
+ miterLimit: 10,
1352
+ width: 2.4,
1353
+ color: [255, 109, 0, 255]
1354
+ }
1355
+ ]
1356
+ }
1357
+ }
1358
+ }), H = ee(() => {
1359
+ var m;
1360
+ return ((m = d.find((i) => i.value === b.value)) == null ? void 0 : m.label) ?? "";
1361
+ }), I = ee(() => o.value === null ? c.value : "测量距离"), W = ee(() => {
1362
+ const m = o.value;
1363
+ return m === null ? "" : b.value === "kilometers" ? `${(m / 1e3).toFixed(3)} 公里` : `${m.toFixed(2)} 米`;
1364
+ }), R = () => {
1365
+ r.value = !1;
1366
+ }, E = () => {
1367
+ r.value = !r.value;
1368
+ }, J = (m) => {
1369
+ b.value = m, R();
1370
+ }, x = () => {
1371
+ const m = y.value, i = D.value;
1372
+ !m || !i || (m.cancel(), i.removeAll(), o.value = null, c.value = "请在地图上绘制线段(双击完成)", m.create("polyline"));
1373
+ }, w = async (m) => {
1374
+ try {
1375
+ rt() || await ct();
1376
+ const i = dl(m, { unit: "meters" });
1377
+ if (!Number.isFinite(i))
1378
+ throw new Error("距离计算结果无效");
1379
+ o.value = Math.abs(i), c.value = "";
1380
+ } catch {
1381
+ o.value = null, c.value = "距离计算失败,请重新测量";
1382
+ }
1383
+ }, z = (m) => {
1384
+ B && (m.symbol = B.clone());
1385
+ }, h = () => {
1386
+ var $;
1387
+ const m = y.value;
1388
+ if (!m || !L) return;
1389
+ const i = m.activeComponent;
1390
+ if (!i || i.type !== "reshape") return;
1391
+ const v = typeof L.size == "number" ? L.size : 6, f = L.clone(), C = L.clone();
1392
+ C.size = v + 2;
1393
+ const Q = L.clone();
1394
+ Q.size = v + 2, i.symbols = {
1395
+ ...i.symbols,
1396
+ vertices: {
1397
+ default: f,
1398
+ hover: C,
1399
+ selected: Q
1400
+ }
1401
+ };
1402
+ const K = i.selectedManipulators;
1403
+ ($ = i.vertexGraphics) == null || $.forEach((V) => {
1404
+ K != null && K.includes(V) ? V.symbol = Q.clone() : V.symbol = f.clone();
1405
+ });
1406
+ }, S = {
1407
+ tool: "reshape",
1408
+ enableRotation: !1,
1409
+ enableScaling: !1,
1410
+ multipleSelectionEnabled: !1,
1411
+ toggleToolOnClick: !1
1412
+ }, Y = (m) => {
1413
+ const i = y.value;
1414
+ !i || !m || (z(m), queueMicrotask(() => {
1415
+ y.value === i && i.update(m, S);
1416
+ }));
1417
+ }, F = (m, i) => {
1418
+ const v = m.map;
1419
+ return v ? (v.add(i), v.layers.reorder(i, v.layers.length - 1), () => {
1420
+ v.remove(i);
1421
+ }) : () => {
1422
+ };
1423
+ }, G = (m) => {
1424
+ var $;
1425
+ const i = m.map;
1426
+ if (!i) return;
1427
+ const v = (V) => V.type === "graphics" && !!V.internal, f = ($ = i.basemap) == null ? void 0 : $.referenceLayers, C = f == null ? void 0 : f.find(v);
1428
+ C && f && (f.remove(C), i.layers.includes(C) || i.add(C));
1429
+ const Q = i.layers.find(v) ?? C;
1430
+ Q && i.layers.includes(Q) && i.layers.reorder(Q, i.layers.length - 1);
1431
+ const K = D.value;
1432
+ K && i.layers.includes(K) && i.layers.reorder(K, i.layers.length - 1);
1433
+ }, k = (m) => {
1434
+ var f, C;
1435
+ const i = (C = (f = m.map) == null ? void 0 : f.basemap) == null ? void 0 : C.referenceLayers;
1436
+ if (!i) return;
1437
+ const v = i.filter((Q) => Q.type === "graphics" && !!Q.internal).toArray();
1438
+ v.length && i.removeMany(v);
1439
+ }, Z = () => {
1440
+ const m = u(), i = new et({
1441
+ id: "distance-measure-layer",
1442
+ title: "距离测量图层",
1443
+ listMode: "hide"
1444
+ }), v = F(m, i);
1445
+ D.value = i, M = v;
1446
+ const f = [255, 109, 0];
1447
+ B = P(), L = new tt({
1448
+ style: "circle",
1449
+ color: f,
1450
+ size: 6,
1451
+ outline: {
1452
+ color: [255, 255, 255],
1453
+ width: 1.5
1454
+ }
1455
+ });
1456
+ const C = L.clone(), Q = new It({
1457
+ view: m,
1458
+ layer: i,
1459
+ updateOnGraphicClick: !0,
1460
+ polylineSymbol: B.clone(),
1461
+ pointSymbol: L.clone(),
1462
+ defaultUpdateOptions: {
1463
+ tool: "reshape",
1464
+ enableRotation: !1,
1465
+ enableScaling: !1,
1466
+ multipleSelectionEnabled: !1,
1467
+ toggleToolOnClick: !1,
1468
+ highlightOptions: { enabled: !1 }
1469
+ }
1470
+ }), K = Q;
1471
+ K.activeLineSymbol = B.clone(), K.vertexSymbol = L.clone(), K.activeVertexSymbol = C, y.value = Q, rt() || ct(), p.push(Q.on("create", ($) => {
1472
+ if ($.state === "start" || $.state === "active") {
1473
+ G(m);
1474
+ return;
1475
+ }
1476
+ if ($.state === "cancel") {
1477
+ k(m);
1478
+ return;
1479
+ }
1480
+ if ($.state !== "complete") return;
1481
+ k(m);
1482
+ const V = $.graphic;
1483
+ if (!V) return;
1484
+ z(V);
1485
+ const q = V.geometry;
1486
+ q instanceof Ve && w(q), Y(V);
1487
+ })), p.push(Q.on("update", ($) => {
1488
+ const V = $.graphics[0];
1489
+ if (!V) return;
1490
+ if ($.state === "start" || $.state === "active") {
1491
+ G(m), z(V), h();
1492
+ const ne = V.geometry;
1493
+ ne instanceof Ve && w(ne);
1494
+ return;
1495
+ }
1496
+ if ($.state !== "complete") return;
1497
+ k(m), z(V);
1498
+ const q = V.geometry;
1499
+ q instanceof Ve && w(q), $.aborted || Y(V);
1500
+ })), x();
1501
+ };
1502
+ return fe(() => {
1503
+ A = ke(() => s.value, R), Z();
1504
+ }), me(() => {
1505
+ A == null || A(), A = null, p.forEach((v) => v.remove()), p.length = 0;
1506
+ const m = y.value;
1507
+ m == null || m.cancel(), m == null || m.destroy(), y.value = null;
1508
+ const i = D.value;
1509
+ i && (i.removeAll(), M == null || M(), M = null, i.destroy()), D.value = null;
1510
+ }), (m, i) => (g(), re(Ee, {
1511
+ title: "距离测量",
1512
+ width: 360,
1513
+ onClose: i[0] || (i[0] = (v) => n("close"))
1514
+ }, {
1515
+ default: Ie(() => [
1516
+ a("div", Ba, [
1517
+ a("button", {
1518
+ type: "button",
1519
+ class: "distance-measure-button is-primary",
1520
+ onClick: x
1521
+ }, " 重新测量 "),
1522
+ a("div", Ya, [
1523
+ i[2] || (i[2] = a("span", null, "单位", -1)),
1524
+ a("div", {
1525
+ ref_key: "unitSelectRef",
1526
+ ref: s,
1527
+ class: "distance-unit-select"
1528
+ }, [
1529
+ a("button", {
1530
+ type: "button",
1531
+ class: ae(["distance-unit-trigger", { "is-open": r.value }]),
1532
+ "aria-label": "距离单位",
1533
+ "aria-haspopup": "listbox",
1534
+ "aria-expanded": r.value,
1535
+ onClick: te(E, ["stop"]),
1536
+ onKeydown: Ae(R, ["esc"])
1537
+ }, [
1538
+ a("span", null, U(H.value), 1),
1539
+ i[1] || (i[1] = a("span", {
1540
+ class: "distance-unit-arrow",
1541
+ "aria-hidden": "true"
1542
+ }, null, -1))
1543
+ ], 42, Ga),
1544
+ r.value ? (g(), N("ul", Za, [
1545
+ (g(), N(ce, null, de(d, (v) => a("li", {
1546
+ key: v.value
1547
+ }, [
1548
+ a("button", {
1549
+ type: "button",
1550
+ role: "option",
1551
+ "aria-selected": b.value === v.value,
1552
+ onClick: te((f) => J(v.value), ["stop"])
1553
+ }, U(v.label), 9, Qa)
1554
+ ])), 64))
1555
+ ])) : _("", !0)
1556
+ ], 512)
1557
+ ])
1558
+ ]),
1559
+ a("div", {
1560
+ class: ae(["distance-measure-result", { "has-result": o.value !== null }])
1561
+ }, [
1562
+ a("span", Fa, U(I.value), 1),
1563
+ o.value !== null ? (g(), N("strong", Pa, U(W.value), 1)) : _("", !0)
1564
+ ], 2)
1565
+ ]),
1566
+ _: 1
1567
+ }));
1568
+ }
1569
+ }), Ja = /* @__PURE__ */ ve(Wa, [["__scopeId", "data-v-7dd9f43b"]]), za = { class: "area-measure-actions" }, ja = { class: "area-measure-unit" }, Ka = ["aria-expanded"], Ua = {
1570
+ key: 0,
1571
+ class: "area-unit-options",
1572
+ role: "listbox"
1573
+ }, Va = ["aria-selected", "onClick"], Xa = { class: "area-measure-result__label" }, Ha = { key: 0 }, qa = /* @__PURE__ */ pe({
1574
+ __name: "AreaMeasurePanel",
1575
+ props: {
1576
+ /** MapView 实例 */
1577
+ view: { type: Object, required: !0 }
1578
+ },
1579
+ emits: ["close"],
1580
+ setup(e, { emit: t }) {
1581
+ const l = e, n = t, u = {
1582
+ mu: 2e3 / 3,
1583
+ are: 100,
1584
+ hectare: 1e4,
1585
+ "square-kilometers": 1e6,
1586
+ "square-meters": 1
1587
+ }, d = () => ge(l.view), b = [
1588
+ { value: "mu", label: "市亩" },
1589
+ { value: "are", label: "公亩" },
1590
+ { value: "hectare", label: "公顷" },
1591
+ { value: "square-kilometers", label: "平方千米" },
1592
+ { value: "square-meters", label: "平方米" }
1593
+ ], r = T("mu"), s = T(!1), A = T(null);
1594
+ let o = null;
1595
+ const c = T(null), D = T("请在地图上绘制多边形(双击完成)"), y = Se(null), p = Se(null), M = [];
1596
+ let B = null, L, P;
1597
+ const H = () => new ml({
1598
+ color: [255, 234, 0, 0.35],
1599
+ outline: {
1600
+ color: [255, 109, 0],
1601
+ width: 2
1602
+ }
1603
+ }), I = ee(() => {
1604
+ var i;
1605
+ return ((i = b.find((v) => v.value === r.value)) == null ? void 0 : i.label) ?? "";
1606
+ }), W = ee(() => c.value === null ? D.value : "测量面积"), R = ee(() => {
1607
+ const i = c.value;
1608
+ if (i === null) return "";
1609
+ const v = r.value, f = I.value;
1610
+ return `${(i / u[v]).toFixed(3)} ${f}`;
1611
+ }), E = () => {
1612
+ s.value = !1;
1613
+ }, J = () => {
1614
+ s.value = !s.value;
1615
+ }, x = (i) => {
1616
+ r.value = i, E();
1617
+ }, w = () => {
1618
+ const i = p.value, v = y.value;
1619
+ !i || !v || (i.cancel(), v.removeAll(), c.value = null, D.value = "请在地图上绘制多边形(双击完成)", i.create("polygon"));
1620
+ }, z = async (i) => {
1621
+ try {
1622
+ ut() || await dt();
1623
+ const v = pl(i, { unit: "square-meters" });
1624
+ if (!Number.isFinite(v))
1625
+ throw new Error("面积计算结果无效");
1626
+ c.value = Math.abs(v), D.value = "";
1627
+ } catch {
1628
+ c.value = null, D.value = "面积计算失败,请重新测量";
1629
+ }
1630
+ }, h = (i) => {
1631
+ L && (i.symbol = L.clone());
1632
+ }, S = () => {
1633
+ var V;
1634
+ const i = p.value;
1635
+ if (!i || !P) return;
1636
+ const v = i.activeComponent;
1637
+ if (!v || v.type !== "reshape") return;
1638
+ const f = typeof P.size == "number" ? P.size : 6, C = P.clone(), Q = P.clone();
1639
+ Q.size = f + 2;
1640
+ const K = P.clone();
1641
+ K.size = f + 2, v.symbols = {
1642
+ ...v.symbols,
1643
+ vertices: {
1644
+ default: C,
1645
+ hover: Q,
1646
+ selected: K
1647
+ }
1648
+ };
1649
+ const $ = v.selectedManipulators;
1650
+ (V = v.vertexGraphics) == null || V.forEach((q) => {
1651
+ $ != null && $.includes(q) ? q.symbol = K.clone() : q.symbol = C.clone();
1652
+ });
1653
+ }, Y = {
1654
+ tool: "reshape",
1655
+ enableRotation: !1,
1656
+ enableScaling: !1,
1657
+ multipleSelectionEnabled: !1,
1658
+ toggleToolOnClick: !1
1659
+ }, F = (i) => {
1660
+ const v = p.value;
1661
+ !v || !i || (h(i), queueMicrotask(() => {
1662
+ p.value === v && v.update(i, Y);
1663
+ }));
1664
+ }, G = (i, v) => {
1665
+ const f = i.map;
1666
+ return f ? (f.add(v), f.layers.reorder(v, f.layers.length - 1), () => {
1667
+ f.remove(v);
1668
+ }) : () => {
1669
+ };
1670
+ }, k = (i) => {
1671
+ var V;
1672
+ const v = i.map;
1673
+ if (!v) return;
1674
+ const f = (q) => q.type === "graphics" && !!q.internal, C = (V = v.basemap) == null ? void 0 : V.referenceLayers, Q = C == null ? void 0 : C.find(f);
1675
+ Q && C && (C.remove(Q), v.layers.includes(Q) || v.add(Q));
1676
+ const K = v.layers.find(f) ?? Q;
1677
+ K && v.layers.includes(K) && v.layers.reorder(K, v.layers.length - 1);
1678
+ const $ = y.value;
1679
+ $ && v.layers.includes($) && v.layers.reorder($, v.layers.length - 1);
1680
+ }, Z = (i) => {
1681
+ var C, Q;
1682
+ const v = (Q = (C = i.map) == null ? void 0 : C.basemap) == null ? void 0 : Q.referenceLayers;
1683
+ if (!v) return;
1684
+ const f = v.filter((K) => K.type === "graphics" && !!K.internal).toArray();
1685
+ f.length && v.removeMany(f);
128
1686
  }, m = () => {
129
- const t = n();
130
- if (!t) return;
131
- e();
132
- const o = new V({ view: t });
133
- r.value = o, t.ui.add(o, "top-right"), o.viewModel.start();
134
- }, g = () => {
135
- const t = n(), o = i();
136
- if (!(!t || !o) && (e(), !s.value)) {
137
- const _ = new O({
138
- view: t,
139
- layer: o
1687
+ const i = d(), v = new et({
1688
+ id: "area-measure-layer",
1689
+ title: "面积测量图层",
1690
+ listMode: "hide"
1691
+ }), f = G(i, v);
1692
+ y.value = v, B = f;
1693
+ const C = [255, 109, 0];
1694
+ L = H(), P = new tt({
1695
+ style: "circle",
1696
+ color: C,
1697
+ size: 6,
1698
+ outline: {
1699
+ color: [255, 255, 255],
1700
+ width: 1.5
1701
+ }
1702
+ });
1703
+ const Q = P.clone(), K = new It({
1704
+ view: i,
1705
+ layer: v,
1706
+ updateOnGraphicClick: !0,
1707
+ polygonSymbol: L.clone(),
1708
+ pointSymbol: P.clone(),
1709
+ defaultUpdateOptions: {
1710
+ tool: "reshape",
1711
+ enableRotation: !1,
1712
+ enableScaling: !1,
1713
+ multipleSelectionEnabled: !1,
1714
+ toggleToolOnClick: !1,
1715
+ highlightOptions: { enabled: !1 }
1716
+ }
1717
+ }), $ = K;
1718
+ $.vertexSymbol = P.clone(), $.activeVertexSymbol = Q, p.value = K, ut() || dt(), M.push(K.on("create", (V) => {
1719
+ if (V.state === "start" || V.state === "active") {
1720
+ k(i);
1721
+ return;
1722
+ }
1723
+ if (V.state === "cancel") {
1724
+ Z(i);
1725
+ return;
1726
+ }
1727
+ if (V.state !== "complete") return;
1728
+ Z(i);
1729
+ const q = V.graphic;
1730
+ if (!q) return;
1731
+ h(q);
1732
+ const ne = q.geometry;
1733
+ ne instanceof Xe && z(ne), F(q);
1734
+ })), M.push(K.on("update", (V) => {
1735
+ const q = V.graphics[0];
1736
+ if (!q) return;
1737
+ if (V.state === "start" || V.state === "active") {
1738
+ k(i), h(q), S();
1739
+ const Ce = q.geometry;
1740
+ Ce instanceof Xe && z(Ce);
1741
+ return;
1742
+ }
1743
+ if (V.state !== "complete") return;
1744
+ Z(i), h(q);
1745
+ const ne = q.geometry;
1746
+ ne instanceof Xe && z(ne), V.aborted || F(q);
1747
+ })), w();
1748
+ };
1749
+ return fe(() => {
1750
+ o = ke(() => A.value, E), m();
1751
+ }), me(() => {
1752
+ o == null || o(), o = null, M.forEach((f) => f.remove()), M.length = 0;
1753
+ const i = p.value;
1754
+ i == null || i.cancel(), i == null || i.destroy(), p.value = null;
1755
+ const v = y.value;
1756
+ v && (v.removeAll(), B == null || B(), B = null, v.destroy()), y.value = null;
1757
+ }), (i, v) => (g(), re(Ee, {
1758
+ title: "面积测量",
1759
+ width: 360,
1760
+ onClose: v[0] || (v[0] = (f) => n("close"))
1761
+ }, {
1762
+ default: Ie(() => [
1763
+ a("div", za, [
1764
+ a("button", {
1765
+ type: "button",
1766
+ class: "area-measure-button is-primary",
1767
+ onClick: w
1768
+ }, " 重新测量 "),
1769
+ a("div", ja, [
1770
+ v[2] || (v[2] = a("span", null, "单位", -1)),
1771
+ a("div", {
1772
+ ref_key: "unitSelectRef",
1773
+ ref: A,
1774
+ class: "area-unit-select"
1775
+ }, [
1776
+ a("button", {
1777
+ type: "button",
1778
+ class: ae(["area-unit-trigger", { "is-open": s.value }]),
1779
+ "aria-label": "面积单位",
1780
+ "aria-haspopup": "listbox",
1781
+ "aria-expanded": s.value,
1782
+ onClick: te(J, ["stop"]),
1783
+ onKeydown: Ae(E, ["esc"])
1784
+ }, [
1785
+ a("span", null, U(I.value), 1),
1786
+ v[1] || (v[1] = a("span", {
1787
+ class: "area-unit-arrow",
1788
+ "aria-hidden": "true"
1789
+ }, null, -1))
1790
+ ], 42, Ka),
1791
+ s.value ? (g(), N("ul", Ua, [
1792
+ (g(), N(ce, null, de(b, (f) => a("li", {
1793
+ key: f.value
1794
+ }, [
1795
+ a("button", {
1796
+ type: "button",
1797
+ role: "option",
1798
+ "aria-selected": r.value === f.value,
1799
+ onClick: te((C) => x(f.value), ["stop"])
1800
+ }, U(f.label), 9, Va)
1801
+ ])), 64))
1802
+ ])) : _("", !0)
1803
+ ], 512)
1804
+ ])
1805
+ ]),
1806
+ a("div", {
1807
+ class: ae(["area-measure-result", { "has-result": c.value !== null }])
1808
+ }, [
1809
+ a("span", Xa, U(W.value), 1),
1810
+ c.value !== null ? (g(), N("strong", Ha, U(R.value), 1)) : _("", !0)
1811
+ ], 2)
1812
+ ]),
1813
+ _: 1
1814
+ }));
1815
+ }
1816
+ }), _a = /* @__PURE__ */ ve(qa, [["__scopeId", "data-v-01b97e95"]]), ye = {
1817
+ byId: new globalThis.Map(),
1818
+ createOptions: null,
1819
+ listeners: /* @__PURE__ */ new Set()
1820
+ }, at = () => {
1821
+ ye.listeners.forEach((e) => e());
1822
+ }, $a = (e) => {
1823
+ if (e == null || e === "") return 0;
1824
+ const t = Number(e);
1825
+ return Number.isFinite(t) ? t : 0;
1826
+ }, Zs = (e, t) => {
1827
+ const l = t.idPrefix ?? he;
1828
+ ye.byId.clear(), e.forEach((n) => {
1829
+ ye.byId.set(Qe(n, l), n);
1830
+ }), ye.createOptions = { ...t, idPrefix: l }, at();
1831
+ }, Qs = () => {
1832
+ ye.byId.clear(), ye.createOptions = null, at();
1833
+ }, en = () => ye.createOptions, tn = (e = he) => {
1834
+ const t = [];
1835
+ return ye.byId.forEach((l, n) => {
1836
+ n.startsWith(e) && t.push({
1837
+ id: n,
1838
+ title: l.mapServiceName,
1839
+ layerOrder: $a(l.layerOrder),
1840
+ config: l
1841
+ });
1842
+ }), t;
1843
+ }, ln = (e) => (ye.listeners.add(e), () => {
1844
+ ye.listeners.delete(e);
1845
+ }), an = (e, t) => {
1846
+ const l = ye.byId.get(t), n = ye.createOptions;
1847
+ if (!l || !n) return null;
1848
+ const u = n.idPrefix ?? he, d = n.reverse ?? !0, b = va({
1849
+ map: e,
1850
+ layers: [l],
1851
+ reverse: d,
1852
+ idPrefix: u,
1853
+ accessToken: n.accessToken,
1854
+ labelConfigs: n.labelConfigs,
1855
+ expectedSpatialReferenceWkid: n.expectedSpatialReferenceWkid,
1856
+ onSpatialReferenceMismatch: n.onSpatialReferenceMismatch
1857
+ });
1858
+ return ye.byId.delete(t), at(), fa({
1859
+ map: e,
1860
+ layers: n.allConfigs,
1861
+ reverse: d,
1862
+ idPrefix: u
1863
+ }), b[0] ?? null;
1864
+ }, nn = {
1865
+ key: 0,
1866
+ class: "layer-manage-tip",
1867
+ role: "status"
1868
+ }, on = {
1869
+ key: 1,
1870
+ class: "layer-manage-sr-summary",
1871
+ role: "status"
1872
+ }, sn = {
1873
+ key: 2,
1874
+ class: "layer-manage-empty"
1875
+ }, rn = {
1876
+ key: 3,
1877
+ class: "layer-manage-list",
1878
+ role: "list"
1879
+ }, cn = { class: "layer-manage-row" }, un = { class: "layer-manage-check" }, dn = ["checked", "onChange"], An = { class: "layer-manage-title-wrap" }, pn = ["title"], mn = ["title"], vn = { class: "layer-manage-actions" }, yn = ["onClick"], fn = ["onClick"], hn = ["onClick"], bn = ["onClick"], gn = ["onClick"], wn = { class: "layer-manage-opacity" }, Sn = ["value", "onInput"], In = /* @__PURE__ */ pe({
1880
+ __name: "LayerManagePanel",
1881
+ props: {
1882
+ view: {},
1883
+ idPrefix: { default: he }
1884
+ },
1885
+ emits: ["close"],
1886
+ setup(e, { emit: t }) {
1887
+ const l = e, n = t, u = () => ge(l.view), d = T([]), b = T("");
1888
+ let r = null, s = null, A = null;
1889
+ const o = ee(() => {
1890
+ const E = d.value.filter((J) => J.spatialReferenceMismatch).length;
1891
+ return E <= 0 ? "" : `有 ${E} 个图层与系统坐标系不一致`;
1892
+ }), c = (E) => `期望 ${E.expectedLabel || `WKID ${E.expectedWkid}`},实际 ${E.actualLabel || E.actualWkid || "未知"}`, D = (E) => {
1893
+ b.value = E, r && clearTimeout(r), r = setTimeout(() => {
1894
+ b.value = "", r = null;
1895
+ }, 3e3);
1896
+ };
1897
+ let y = null;
1898
+ const p = [], M = () => {
1899
+ p.forEach((E) => E.remove()), p.length = 0;
1900
+ }, B = (E) => {
1901
+ if (E == null || E === "") return 0;
1902
+ const J = Number(E);
1903
+ return Number.isFinite(J) ? J : 0;
1904
+ }, L = (E) => {
1905
+ p.push(
1906
+ We.watch(
1907
+ () => E.visible,
1908
+ (J) => {
1909
+ const x = d.value.find((w) => w.id === E.id);
1910
+ x && (x.visible = J);
1911
+ }
1912
+ )
1913
+ ), p.push(
1914
+ We.watch(
1915
+ () => E.opacity,
1916
+ (J) => {
1917
+ const x = d.value.find((w) => w.id === E.id);
1918
+ x && (x.opacity = Math.round((J ?? 1) * 100));
1919
+ }
1920
+ )
1921
+ );
1922
+ }, P = () => {
1923
+ var S, Y;
1924
+ M();
1925
+ const E = (S = u()) == null ? void 0 : S.map;
1926
+ if (!E) {
1927
+ d.value = [];
1928
+ return;
1929
+ }
1930
+ const J = l.idPrefix, x = en(), w = tn(J), z = new Map(w.map((F) => [F.id, F]));
1931
+ if ((Y = x == null ? void 0 : x.allConfigs) != null && Y.length) {
1932
+ const F = [...x.allConfigs].sort(
1933
+ (k, Z) => B(k.layerOrder) - B(Z.layerOrder)
1934
+ ), G = [];
1935
+ F.forEach((k) => {
1936
+ const Z = Qe(k, J), m = E.findLayerById(Z);
1937
+ if (m && m.listMode !== "hide") {
1938
+ G.push({
1939
+ id: m.id,
1940
+ title: m.title || k.mapServiceName || m.id,
1941
+ visible: m.visible,
1942
+ opacity: Math.round((m.opacity ?? 1) * 100),
1943
+ pending: !1,
1944
+ spatialReferenceMismatch: He(m.id)
1945
+ }), L(m);
1946
+ return;
1947
+ }
1948
+ const i = z.get(Z);
1949
+ i && G.push({
1950
+ id: i.id,
1951
+ title: i.title,
1952
+ visible: !1,
1953
+ opacity: 100,
1954
+ pending: !0,
1955
+ spatialReferenceMismatch: null
1956
+ });
1957
+ }), d.value = G;
1958
+ return;
1959
+ }
1960
+ const h = E.layers.filter((F) => (F.id || "").startsWith(J) && F.listMode !== "hide").toArray().reverse();
1961
+ d.value = h.map((F) => ({
1962
+ id: F.id,
1963
+ title: F.title || F.id,
1964
+ visible: F.visible,
1965
+ opacity: Math.round((F.opacity ?? 1) * 100),
1966
+ pending: !1,
1967
+ spatialReferenceMismatch: He(F.id)
1968
+ })), h.forEach((F) => L(F));
1969
+ }, H = (E, J) => {
1970
+ var h;
1971
+ const x = (h = u()) == null ? void 0 : h.map;
1972
+ if (!x) return;
1973
+ let w = x.findLayerById(E);
1974
+ if (!w) {
1975
+ if (!J) return;
1976
+ D("正在加载图层…");
1977
+ const S = an(x, E);
1978
+ if (!S) {
1979
+ D("图层加载失败,请稍后重试");
1980
+ return;
1981
+ }
1982
+ S.visible = !0, b.value = "", P();
1983
+ return;
1984
+ }
1985
+ w.visible = J;
1986
+ const z = d.value.find((S) => S.id === E);
1987
+ z && (z.visible = J, z.pending = !1);
1988
+ }, I = (E, J) => {
1989
+ var h, S;
1990
+ const x = (S = (h = u()) == null ? void 0 : h.map) == null ? void 0 : S.findLayerById(E);
1991
+ if (!x) {
1992
+ D("请先勾选显示该图层");
1993
+ return;
1994
+ }
1995
+ const w = Math.min(100, Math.max(0, J));
1996
+ x.opacity = w / 100;
1997
+ const z = d.value.find((Y) => Y.id === E);
1998
+ z && (z.opacity = w);
1999
+ }, W = async (E) => {
2000
+ var z;
2001
+ const J = u(), x = (z = J == null ? void 0 : J.map) == null ? void 0 : z.findLayerById(E);
2002
+ if (!J || !x) {
2003
+ D("请先勾选显示该图层后再定位");
2004
+ return;
2005
+ }
2006
+ const w = x.title || E;
2007
+ try {
2008
+ await x.when();
2009
+ const h = x.fullExtent;
2010
+ if (!h) {
2011
+ D(`「${w}」暂无有效范围,请稍后再试或检查服务`), console.warn(`定位图层失败(无 fullExtent): ${E}`);
2012
+ return;
2013
+ }
2014
+ await J.goTo(h), b.value = "";
2015
+ } catch (h) {
2016
+ D(`「${w}」定位失败`), console.error(`定位图层失败: ${E}`, h);
2017
+ }
2018
+ }, R = (E, J) => {
2019
+ var G;
2020
+ const x = (G = u()) == null ? void 0 : G.map;
2021
+ if (!x) return;
2022
+ const w = x.findLayerById(E);
2023
+ if (!w) {
2024
+ D("请先勾选显示该图层后再调整顺序");
2025
+ return;
2026
+ }
2027
+ const z = l.idPrefix, h = x.layers.filter((k) => (k.id || "").startsWith(z) && k.listMode !== "hide").toArray(), S = h.findIndex((k) => k.id === E);
2028
+ if (S < 0) return;
2029
+ const Y = x.layers.findIndex((k) => k.id === E);
2030
+ if (Y < 0) return;
2031
+ let F = Y;
2032
+ if (J === "top")
2033
+ F = Math.max(
2034
+ ...h.map((Z) => x.layers.findIndex((m) => m.id === Z.id))
2035
+ );
2036
+ else if (J === "bottom")
2037
+ F = Math.min(
2038
+ ...h.map((Z) => x.layers.findIndex((m) => m.id === Z.id))
2039
+ );
2040
+ else if (J === "up") {
2041
+ if (S >= h.length - 1) return;
2042
+ const k = h[S + 1];
2043
+ F = x.layers.findIndex((Z) => Z.id === k.id);
2044
+ } else if (J === "down") {
2045
+ if (S <= 0) return;
2046
+ const k = h[S - 1];
2047
+ F = x.layers.findIndex((Z) => Z.id === k.id);
2048
+ }
2049
+ F !== Y && (x.layers.reorder(w, F), P());
2050
+ };
2051
+ return fe(() => {
2052
+ var J;
2053
+ const E = (J = u()) == null ? void 0 : J.map;
2054
+ P(), E && (y = E.layers.on("change", P)), s = na(() => {
2055
+ d.value = d.value.map((x) => ({
2056
+ ...x,
2057
+ spatialReferenceMismatch: He(x.id)
2058
+ }));
2059
+ }), A = ln(() => {
2060
+ P();
2061
+ });
2062
+ }), me(() => {
2063
+ y == null || y.remove(), y = null, s == null || s(), s = null, A == null || A(), A = null, M(), r && (clearTimeout(r), r = null);
2064
+ }), (E, J) => (g(), re(Ee, {
2065
+ title: "图层管理",
2066
+ width: 360,
2067
+ onClose: J[0] || (J[0] = (x) => n("close"))
2068
+ }, {
2069
+ default: Ie(() => [
2070
+ b.value ? (g(), N("p", nn, U(b.value), 1)) : _("", !0),
2071
+ o.value ? (g(), N("p", on, U(o.value), 1)) : _("", !0),
2072
+ d.value.length === 0 ? (g(), N("p", sn, "暂无业务图层")) : (g(), N("ul", rn, [
2073
+ (g(!0), N(ce, null, de(d.value, (x) => (g(), N("li", {
2074
+ key: x.id,
2075
+ class: "layer-manage-item"
2076
+ }, [
2077
+ a("div", cn, [
2078
+ a("label", un, [
2079
+ a("input", {
2080
+ type: "checkbox",
2081
+ checked: x.visible,
2082
+ onChange: (w) => H(x.id, w.target.checked)
2083
+ }, null, 40, dn),
2084
+ a("span", An, [
2085
+ a("span", {
2086
+ class: "layer-manage-title",
2087
+ title: x.title
2088
+ }, U(x.title), 9, pn),
2089
+ x.spatialReferenceMismatch ? (g(), N("span", {
2090
+ key: 0,
2091
+ class: "layer-manage-sr-badge",
2092
+ title: c(x.spatialReferenceMismatch)
2093
+ }, " 坐标系不一致 ", 8, mn)) : _("", !0)
2094
+ ])
2095
+ ]),
2096
+ a("div", vn, [
2097
+ a("button", {
2098
+ type: "button",
2099
+ title: "移至顶层",
2100
+ onClick: (w) => R(x.id, "top")
2101
+ }, "顶", 8, yn),
2102
+ a("button", {
2103
+ type: "button",
2104
+ title: "上移一层",
2105
+ onClick: (w) => R(x.id, "up")
2106
+ }, "上", 8, fn),
2107
+ a("button", {
2108
+ type: "button",
2109
+ title: "下移一层",
2110
+ onClick: (w) => R(x.id, "down")
2111
+ }, "下", 8, hn),
2112
+ a("button", {
2113
+ type: "button",
2114
+ title: "移至底层",
2115
+ onClick: (w) => R(x.id, "bottom")
2116
+ }, "底", 8, bn),
2117
+ a("button", {
2118
+ type: "button",
2119
+ title: "定位到图层",
2120
+ onClick: (w) => W(x.id)
2121
+ }, "定位", 8, gn)
2122
+ ])
2123
+ ]),
2124
+ a("label", wn, [
2125
+ J[1] || (J[1] = a("span", null, "透明度", -1)),
2126
+ a("input", {
2127
+ type: "range",
2128
+ min: "0",
2129
+ max: "100",
2130
+ step: "1",
2131
+ value: x.opacity,
2132
+ onInput: (w) => I(x.id, Number(w.target.value))
2133
+ }, null, 40, Sn),
2134
+ a("em", null, U(x.opacity) + "%", 1)
2135
+ ])
2136
+ ]))), 128))
2137
+ ]))
2138
+ ]),
2139
+ _: 1
2140
+ }));
2141
+ }
2142
+ }), En = /* @__PURE__ */ ve(In, [["__scopeId", "data-v-958541bd"]]), Oe = /* @__PURE__ */ new Map(), Zt = (e, t) => (Oe.set(e, t), () => {
2143
+ Oe.get(e) === t && Oe.delete(e);
2144
+ }), Qt = (e) => {
2145
+ var l;
2146
+ const t = e === "basemap" ? "layer" : "basemap";
2147
+ (l = Oe.get(t)) == null || l();
2148
+ }, Fs = () => {
2149
+ var e, t;
2150
+ (e = Oe.get("basemap")) == null || e(), (t = Oe.get("layer")) == null || t();
2151
+ }, Ln = {
2152
+ key: 0,
2153
+ class: "layer-swipe-empty"
2154
+ }, kn = { class: "layer-swipe-form" }, xn = { class: "layer-swipe-field" }, Cn = ["aria-expanded"], Mn = {
2155
+ key: 0,
2156
+ class: "layer-swipe-options",
2157
+ role: "listbox"
2158
+ }, Rn = ["aria-selected", "onClick"], Tn = { class: "layer-swipe-field" }, Dn = ["aria-expanded"], On = {
2159
+ key: 0,
2160
+ class: "layer-swipe-options",
2161
+ role: "listbox"
2162
+ }, Nn = ["aria-selected", "onClick"], Bn = {
2163
+ key: 0,
2164
+ class: "layer-swipe-message",
2165
+ role: "status"
2166
+ }, Yn = /* @__PURE__ */ pe({
2167
+ __name: "LayerSwipePanel",
2168
+ props: {
2169
+ view: {},
2170
+ visible: { type: Boolean, default: !1 },
2171
+ idPrefix: { default: he }
2172
+ },
2173
+ emits: ["close"],
2174
+ setup(e, { expose: t, emit: l }) {
2175
+ const n = e, u = l, d = () => ge(n.view), b = T([]), r = T(""), s = T(""), A = T(!1), o = T(!1), c = T(null), D = T(null);
2176
+ let y = null;
2177
+ const p = T(""), M = Se(null);
2178
+ let B = null, L = null;
2179
+ const P = ee(() => {
2180
+ var S;
2181
+ return r.value ? ((S = b.value.find((Y) => Y.id === r.value)) == null ? void 0 : S.title) ?? "请选择" : "请选择";
2182
+ }), H = ee(() => {
2183
+ var S;
2184
+ return s.value ? ((S = b.value.find((Y) => Y.id === s.value)) == null ? void 0 : S.title) ?? "请选择" : "请选择";
2185
+ }), I = () => {
2186
+ A.value = !1, o.value = !1;
2187
+ }, W = () => {
2188
+ o.value = !1, A.value = !A.value;
2189
+ }, R = () => {
2190
+ A.value = !1, o.value = !o.value;
2191
+ }, E = (S) => {
2192
+ r.value = S, I();
2193
+ }, J = (S) => {
2194
+ s.value = S, I();
2195
+ }, x = () => {
2196
+ var k;
2197
+ const S = (k = d()) == null ? void 0 : k.map;
2198
+ if (!S) {
2199
+ b.value = [];
2200
+ return;
2201
+ }
2202
+ const Y = n.idPrefix, F = S.layers.filter((Z) => (Z.id || "").startsWith(Y) && Z.listMode !== "hide").toArray().reverse();
2203
+ b.value = F.map((Z) => ({
2204
+ id: Z.id,
2205
+ title: Z.title || Z.id
2206
+ }));
2207
+ const G = new Set(b.value.map((Z) => Z.id));
2208
+ r.value && !G.has(r.value) && (r.value = ""), s.value && !G.has(s.value) && (s.value = "");
2209
+ }, w = () => {
2210
+ const S = d(), Y = M.value;
2211
+ Y && S && (S.ui.remove(Y), Y.destroy()), M.value = null;
2212
+ }, z = () => {
2213
+ if (p.value = "", I(), !r.value || !s.value) {
2214
+ p.value = "请先选择左侧和右侧图层";
2215
+ return;
2216
+ }
2217
+ if (r.value === s.value) {
2218
+ p.value = "左右图层不能相同";
2219
+ return;
2220
+ }
2221
+ const S = d(), Y = S == null ? void 0 : S.map;
2222
+ if (!S || !Y) {
2223
+ p.value = "地图未就绪";
2224
+ return;
2225
+ }
2226
+ const F = Y.findLayerById(r.value), G = Y.findLayerById(s.value);
2227
+ if (!F || !G) {
2228
+ p.value = "所选图层不存在,请刷新后重试", x();
2229
+ return;
2230
+ }
2231
+ F.visible = !0, G.visible = !0, Qt("layer"), w();
2232
+ const k = new Et({
2233
+ view: S,
2234
+ leadingLayers: [F],
2235
+ trailingLayers: [G],
2236
+ position: 50
2237
+ });
2238
+ S.ui.add(k), M.value = k, p.value = "", u("close");
2239
+ }, h = () => {
2240
+ w(), p.value = "", I();
2241
+ };
2242
+ return ue(
2243
+ () => n.visible,
2244
+ (S) => {
2245
+ S && (x(), p.value = ""), I();
2246
+ }
2247
+ ), fe(() => {
2248
+ var Y;
2249
+ y = ke(
2250
+ () => [c.value, D.value],
2251
+ I
2252
+ ), L = Zt("layer", w), x();
2253
+ const S = (Y = d()) == null ? void 0 : Y.map;
2254
+ S && (B = S.layers.on("change", x));
2255
+ }), me(() => {
2256
+ y == null || y(), y = null, B == null || B.remove(), B = null, L == null || L(), L = null, w();
2257
+ }), t({
2258
+ destroySwipe: w,
2259
+ /** 当前是否已激活卷帘 */
2260
+ isSwipeActive: () => M.value !== null
2261
+ }), (S, Y) => e.visible ? (g(), re(Ee, {
2262
+ key: 0,
2263
+ title: "图层卷帘对比",
2264
+ width: 320,
2265
+ onClose: Y[0] || (Y[0] = (F) => u("close"))
2266
+ }, {
2267
+ default: Ie(() => [
2268
+ b.value.length === 0 ? (g(), N("p", Ln, "暂无业务图层,请先加载图层")) : (g(), N(ce, { key: 1 }, [
2269
+ a("div", kn, [
2270
+ a("div", xn, [
2271
+ Y[2] || (Y[2] = a("span", null, "左侧图层", -1)),
2272
+ a("div", {
2273
+ ref_key: "leftSelectRef",
2274
+ ref: c,
2275
+ class: "layer-swipe-select"
2276
+ }, [
2277
+ a("button", {
2278
+ type: "button",
2279
+ class: ae(["layer-swipe-trigger", { "is-open": A.value }]),
2280
+ "aria-label": "左侧图层",
2281
+ "aria-haspopup": "listbox",
2282
+ "aria-expanded": A.value,
2283
+ onClick: te(W, ["stop"]),
2284
+ onKeydown: Ae(I, ["esc"])
2285
+ }, [
2286
+ a("span", null, U(P.value), 1),
2287
+ Y[1] || (Y[1] = a("span", {
2288
+ class: "layer-swipe-arrow",
2289
+ "aria-hidden": "true"
2290
+ }, null, -1))
2291
+ ], 42, Cn),
2292
+ A.value ? (g(), N("ul", Mn, [
2293
+ (g(!0), N(ce, null, de(b.value, (F) => (g(), N("li", {
2294
+ key: `L-${F.id}`
2295
+ }, [
2296
+ a("button", {
2297
+ type: "button",
2298
+ role: "option",
2299
+ "aria-selected": r.value === F.id,
2300
+ onClick: te((G) => E(F.id), ["stop"])
2301
+ }, U(F.title), 9, Rn)
2302
+ ]))), 128))
2303
+ ])) : _("", !0)
2304
+ ], 512)
2305
+ ]),
2306
+ a("div", Tn, [
2307
+ Y[4] || (Y[4] = a("span", null, "右侧图层", -1)),
2308
+ a("div", {
2309
+ ref_key: "rightSelectRef",
2310
+ ref: D,
2311
+ class: "layer-swipe-select"
2312
+ }, [
2313
+ a("button", {
2314
+ type: "button",
2315
+ class: ae(["layer-swipe-trigger", { "is-open": o.value }]),
2316
+ "aria-label": "右侧图层",
2317
+ "aria-haspopup": "listbox",
2318
+ "aria-expanded": o.value,
2319
+ onClick: te(R, ["stop"]),
2320
+ onKeydown: Ae(I, ["esc"])
2321
+ }, [
2322
+ a("span", null, U(H.value), 1),
2323
+ Y[3] || (Y[3] = a("span", {
2324
+ class: "layer-swipe-arrow",
2325
+ "aria-hidden": "true"
2326
+ }, null, -1))
2327
+ ], 42, Dn),
2328
+ o.value ? (g(), N("ul", On, [
2329
+ (g(!0), N(ce, null, de(b.value, (F) => (g(), N("li", {
2330
+ key: `R-${F.id}`
2331
+ }, [
2332
+ a("button", {
2333
+ type: "button",
2334
+ role: "option",
2335
+ "aria-selected": s.value === F.id,
2336
+ onClick: te((G) => J(F.id), ["stop"])
2337
+ }, U(F.title), 9, Nn)
2338
+ ]))), 128))
2339
+ ])) : _("", !0)
2340
+ ], 512)
2341
+ ])
2342
+ ]),
2343
+ a("div", { class: "layer-swipe-actions" }, [
2344
+ a("button", {
2345
+ type: "button",
2346
+ class: "layer-swipe-btn is-primary",
2347
+ onClick: z
2348
+ }, " 应用卷帘 "),
2349
+ a("button", {
2350
+ type: "button",
2351
+ class: "layer-swipe-btn",
2352
+ onClick: h
2353
+ }, " 取消应用 ")
2354
+ ]),
2355
+ p.value ? (g(), N("p", Bn, U(p.value), 1)) : _("", !0)
2356
+ ], 64))
2357
+ ]),
2358
+ _: 1
2359
+ })) : _("", !0);
2360
+ }
2361
+ }), Gn = /* @__PURE__ */ ve(Yn, [["__scopeId", "data-v-3263e69a"]]), Zn = {
2362
+ key: 0,
2363
+ class: "map-label-empty"
2364
+ }, Qn = { class: "map-label-form" }, Fn = { class: "map-label-field" }, Pn = ["aria-expanded"], Wn = {
2365
+ key: 0,
2366
+ class: "map-label-options",
2367
+ role: "listbox"
2368
+ }, Jn = ["aria-selected", "onClick"], zn = { class: "map-label-field" }, jn = ["aria-expanded", "disabled"], Kn = {
2369
+ key: 0,
2370
+ class: "map-label-options",
2371
+ role: "listbox"
2372
+ }, Un = ["aria-selected", "onClick"], Vn = { class: "map-label-field" }, Xn = { class: "map-label-field" }, Hn = { class: "map-label-actions" }, qn = {
2373
+ key: 0,
2374
+ class: "map-label-message",
2375
+ role: "status"
2376
+ }, _n = /* @__PURE__ */ pe({
2377
+ __name: "MapLabelPanel",
2378
+ props: {
2379
+ view: {},
2380
+ idPrefix: { default: he }
2381
+ },
2382
+ emits: ["close"],
2383
+ setup(e, { emit: t }) {
2384
+ const l = /* @__PURE__ */ new Set([
2385
+ "shape",
2386
+ "st_area(shape)",
2387
+ "st_length(shape)",
2388
+ "shape_length",
2389
+ "shape_area",
2390
+ "shape.len",
2391
+ "shape.area"
2392
+ ]), n = e, u = t, d = () => ge(n.view), b = T([]), r = T([]), s = T(""), A = T(""), o = T(!1), c = T(!1), D = T(null), y = T(null);
2393
+ let p = null;
2394
+ const M = T("#CF2E06"), B = T(12), L = T(""), P = T(!1);
2395
+ let H = null, I = 0, W = !1;
2396
+ const R = ee(
2397
+ () => !!s.value && r.value.length > 0
2398
+ ), E = ee(() => {
2399
+ var f;
2400
+ return s.value ? ((f = b.value.find((C) => C.id === s.value)) == null ? void 0 : f.title) ?? "请选择" : "请选择";
2401
+ }), J = ee(() => {
2402
+ var f;
2403
+ return A.value ? ((f = r.value.find((C) => C.name === A.value)) == null ? void 0 : f.alias) ?? "请选择" : "请选择";
2404
+ }), x = ee(() => P.value ? "当前业务图层多为 MapImage/影像整图,要素级标注仅支持 FeatureLayer(FeatureServer 或 MapServer/图层索引)" : "暂无可标注的要素图层,请先加载 FeatureLayer 业务图层"), w = () => {
2405
+ o.value = !1, c.value = !1;
2406
+ }, z = () => {
2407
+ c.value = !1, o.value = !o.value;
2408
+ }, h = () => {
2409
+ R.value && (o.value = !1, c.value = !c.value);
2410
+ }, S = (f) => f.type === "feature", Y = (f) => {
2411
+ const C = f.geometryType;
2412
+ return C === "polygon" ? "always-horizontal" : C === "polyline" ? "center-along" : "above-center";
2413
+ }, F = async (f) => {
2414
+ var K, $;
2415
+ const C = ++I;
2416
+ if (L.value = "", A.value = "", r.value = [], !f) return;
2417
+ const Q = ($ = (K = d()) == null ? void 0 : K.map) == null ? void 0 : $.findLayerById(f);
2418
+ if (!Q || !S(Q)) {
2419
+ C === I && (L.value = "所选图层不支持字段标注");
2420
+ return;
2421
+ }
2422
+ try {
2423
+ if (Q.loadStatus !== "loaded" && await Q.load(), C !== I || s.value !== f) return;
2424
+ const V = (Q.fields ?? []).filter((q) => {
2425
+ const ne = (q.name || "").toLowerCase();
2426
+ return !l.has(ne) && q.type !== "geometry";
140
2427
  });
141
- s.value = _, t.ui.add(_, "bottom-right");
2428
+ r.value = V.map((q) => ({
2429
+ name: q.name,
2430
+ alias: q.alias || q.name
2431
+ })), r.value.length === 0 && (L.value = "该图层没有可用字段");
2432
+ } catch (V) {
2433
+ if (C !== I || s.value !== f) return;
2434
+ console.error("加载标注字段失败:", V), L.value = "加载图层字段失败";
142
2435
  }
143
- }, M = () => {
144
- var t;
145
- (t = i()) == null || t.removeAll();
2436
+ }, G = (f) => {
2437
+ s.value = f, w(), F(f);
2438
+ }, k = (f) => {
2439
+ A.value = f, w();
2440
+ }, Z = () => {
2441
+ var V;
2442
+ const f = (V = d()) == null ? void 0 : V.map;
2443
+ if (!f) {
2444
+ b.value = [], P.value = !1;
2445
+ return;
2446
+ }
2447
+ const C = n.idPrefix, Q = f.layers.filter((q) => (q.id || "").startsWith(C) && q.listMode !== "hide").toArray(), K = Q.filter((q) => S(q)).reverse();
2448
+ P.value = Q.length > 0 && K.length === 0, b.value = K.map((q) => ({
2449
+ id: q.id,
2450
+ title: q.title || q.id
2451
+ }));
2452
+ const $ = new Set(b.value.map((q) => q.id));
2453
+ Jl($), s.value && !$.has(s.value) && (I += 1, s.value = "", r.value = [], A.value = "");
2454
+ }, m = (f, C) => {
2455
+ const Q = C.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
2456
+ return new wt({
2457
+ labelPlacement: Y(f),
2458
+ labelExpressionInfo: {
2459
+ expression: `$feature["${Q}"]`
2460
+ },
2461
+ symbol: new St({
2462
+ color: M.value,
2463
+ haloColor: [255, 255, 255, 1],
2464
+ haloSize: 1.5,
2465
+ font: {
2466
+ size: B.value,
2467
+ weight: "bold"
2468
+ }
2469
+ })
2470
+ });
2471
+ }, i = (f) => {
2472
+ var $, V, q;
2473
+ const C = (f == null ? void 0 : f.silent) === !0 || W;
2474
+ if (C || (L.value = ""), w(), !s.value || !A.value) {
2475
+ C || (L.value = "请先选择图层和标注字段");
2476
+ return;
2477
+ }
2478
+ const Q = s.value, K = (V = ($ = d()) == null ? void 0 : $.map) == null ? void 0 : V.findLayerById(Q);
2479
+ if (!K || !S(K)) {
2480
+ C || (L.value = "指定图层不存在或不支持标注", Z());
2481
+ return;
2482
+ }
2483
+ if (!Le.has(Q)) {
2484
+ const ne = K.labelingInfo;
2485
+ Le.set(Q, ne && ne.length > 0 ? [...ne] : []);
2486
+ }
2487
+ if (Ot(K, [A.value]), K.labelsVisible = !0, K.labelingInfo = [m(K, A.value)], De.add(Q), !C) {
2488
+ const ne = (((q = Le.get(Q)) == null ? void 0 : q.length) ?? 0) > 0;
2489
+ L.value = ne ? "已应用标注(已覆盖该层默认注记;移除可恢复)" : "已应用标注";
2490
+ }
2491
+ }, v = () => {
2492
+ var K, $;
2493
+ if (L.value = "", w(), !s.value) {
2494
+ L.value = "请先选择图层";
2495
+ return;
2496
+ }
2497
+ const f = s.value;
2498
+ if (!De.has(f) && !Le.has(f)) {
2499
+ L.value = "当前图层没有手动标注可移除";
2500
+ return;
2501
+ }
2502
+ const C = ($ = (K = d()) == null ? void 0 : K.map) == null ? void 0 : $.findLayerById(f);
2503
+ if (!C || !S(C)) {
2504
+ L.value = "指定图层不存在或不支持标注", qe(f), Z();
2505
+ return;
2506
+ }
2507
+ const Q = Le.get(f);
2508
+ Q !== void 0 ? (C.labelingInfo = Q, C.labelsVisible = Q.length > 0, L.value = Q.length > 0 ? "已移除手动标注,并恢复默认注记" : "已移除标注") : (C.labelingInfo = [], C.labelsVisible = !1, L.value = "已移除标注"), qe(f);
146
2509
  };
147
- return k(() => {
148
- e();
149
- const t = s.value, o = n();
150
- t && o && (o.ui.remove(t), t.destroy()), s.value = null;
151
- }), (t, o) => (y(), f("div", N, [
152
- c("button", {
153
- type: "button",
154
- onClick: u
155
- }, "放大"),
156
- c("button", {
157
- type: "button",
158
- onClick: b
159
- }, "缩小"),
160
- c("button", {
161
- type: "button",
162
- onClick: v
163
- }, "复位"),
164
- c("button", {
165
- type: "button",
166
- onClick: l
167
- }, "测距"),
168
- c("button", {
169
- type: "button",
170
- onClick: m
171
- }, "测面"),
172
- c("button", {
173
- type: "button",
174
- onClick: g
175
- }, "绘图"),
176
- c("button", {
2510
+ return ue(
2511
+ () => n.idPrefix,
2512
+ () => {
2513
+ Z();
2514
+ }
2515
+ ), ue([M, B, A], () => {
2516
+ const f = s.value;
2517
+ if (!(!f || !A.value) && De.has(f)) {
2518
+ W = !0;
2519
+ try {
2520
+ i({ silent: !0 });
2521
+ } finally {
2522
+ W = !1;
2523
+ }
2524
+ }
2525
+ }), fe(() => {
2526
+ var C;
2527
+ p = ke(
2528
+ () => [D.value, y.value],
2529
+ w
2530
+ ), Z();
2531
+ const f = (C = d()) == null ? void 0 : C.map;
2532
+ f && (H = f.layers.on("change", Z));
2533
+ }), me(() => {
2534
+ I += 1, p == null || p(), p = null, H == null || H.remove(), H = null;
2535
+ }), (f, C) => (g(), re(Ee, {
2536
+ title: "地图标注",
2537
+ width: 320,
2538
+ onClose: C[3] || (C[3] = (Q) => u("close"))
2539
+ }, {
2540
+ default: Ie(() => [
2541
+ b.value.length === 0 ? (g(), N("p", Zn, U(x.value), 1)) : (g(), N(ce, { key: 1 }, [
2542
+ a("div", Qn, [
2543
+ a("div", Fn, [
2544
+ C[5] || (C[5] = a("span", null, "标注图层", -1)),
2545
+ a("div", {
2546
+ ref_key: "layerSelectRef",
2547
+ ref: D,
2548
+ class: "map-label-select"
2549
+ }, [
2550
+ a("button", {
2551
+ type: "button",
2552
+ class: ae(["map-label-trigger", { "is-open": o.value }]),
2553
+ "aria-label": "标注图层",
2554
+ "aria-haspopup": "listbox",
2555
+ "aria-expanded": o.value,
2556
+ onClick: te(z, ["stop"]),
2557
+ onKeydown: Ae(w, ["esc"])
2558
+ }, [
2559
+ a("span", null, U(E.value), 1),
2560
+ C[4] || (C[4] = a("span", {
2561
+ class: "map-label-arrow",
2562
+ "aria-hidden": "true"
2563
+ }, null, -1))
2564
+ ], 42, Pn),
2565
+ o.value ? (g(), N("ul", Wn, [
2566
+ (g(!0), N(ce, null, de(b.value, (Q) => (g(), N("li", {
2567
+ key: Q.id
2568
+ }, [
2569
+ a("button", {
2570
+ type: "button",
2571
+ role: "option",
2572
+ "aria-selected": s.value === Q.id,
2573
+ onClick: te((K) => G(Q.id), ["stop"])
2574
+ }, U(Q.title), 9, Jn)
2575
+ ]))), 128))
2576
+ ])) : _("", !0)
2577
+ ], 512)
2578
+ ]),
2579
+ a("div", zn, [
2580
+ C[7] || (C[7] = a("span", null, "标注字段", -1)),
2581
+ a("div", {
2582
+ ref_key: "fieldSelectRef",
2583
+ ref: y,
2584
+ class: "map-label-select"
2585
+ }, [
2586
+ a("button", {
2587
+ type: "button",
2588
+ class: ae(["map-label-trigger", { "is-open": c.value, "is-disabled": !R.value }]),
2589
+ "aria-label": "标注字段",
2590
+ "aria-haspopup": "listbox",
2591
+ "aria-expanded": c.value,
2592
+ disabled: !R.value,
2593
+ onClick: te(h, ["stop"]),
2594
+ onKeydown: Ae(w, ["esc"])
2595
+ }, [
2596
+ a("span", null, U(J.value), 1),
2597
+ C[6] || (C[6] = a("span", {
2598
+ class: "map-label-arrow",
2599
+ "aria-hidden": "true"
2600
+ }, null, -1))
2601
+ ], 42, jn),
2602
+ c.value && R.value ? (g(), N("ul", Kn, [
2603
+ (g(!0), N(ce, null, de(r.value, (Q) => (g(), N("li", {
2604
+ key: Q.name
2605
+ }, [
2606
+ a("button", {
2607
+ type: "button",
2608
+ role: "option",
2609
+ "aria-selected": A.value === Q.name,
2610
+ onClick: te((K) => k(Q.name), ["stop"])
2611
+ }, U(Q.alias), 9, Un)
2612
+ ]))), 128))
2613
+ ])) : _("", !0)
2614
+ ], 512)
2615
+ ]),
2616
+ a("div", Vn, [
2617
+ C[8] || (C[8] = a("span", null, "字体颜色", -1)),
2618
+ Ge(a("input", {
2619
+ "onUpdate:modelValue": C[0] || (C[0] = (Q) => M.value = Q),
2620
+ type: "color",
2621
+ "aria-label": "字体颜色",
2622
+ class: "map-label-color"
2623
+ }, null, 512), [
2624
+ [Ze, M.value]
2625
+ ])
2626
+ ]),
2627
+ a("div", Xn, [
2628
+ a("span", null, "字体大小:" + U(B.value), 1),
2629
+ Ge(a("input", {
2630
+ "onUpdate:modelValue": C[1] || (C[1] = (Q) => B.value = Q),
2631
+ type: "range",
2632
+ min: "8",
2633
+ max: "36",
2634
+ step: "1",
2635
+ "aria-label": "字体大小"
2636
+ }, null, 512), [
2637
+ [
2638
+ Ze,
2639
+ B.value,
2640
+ void 0,
2641
+ { number: !0 }
2642
+ ]
2643
+ ])
2644
+ ])
2645
+ ]),
2646
+ a("div", Hn, [
2647
+ a("button", {
2648
+ type: "button",
2649
+ class: "map-label-btn is-primary",
2650
+ onClick: C[2] || (C[2] = (Q) => i())
2651
+ }, "标注"),
2652
+ a("button", {
2653
+ type: "button",
2654
+ class: "map-label-btn",
2655
+ onClick: v
2656
+ }, "移除标注")
2657
+ ]),
2658
+ L.value ? (g(), N("p", qn, U(L.value), 1)) : _("", !0)
2659
+ ], 64))
2660
+ ]),
2661
+ _: 1
2662
+ }));
2663
+ }
2664
+ }), $n = /* @__PURE__ */ ve(_n, [["__scopeId", "data-v-a032d54c"]]), eo = {
2665
+ key: 0,
2666
+ class: "condition-query-empty"
2667
+ }, to = { class: "condition-query-field" }, lo = ["aria-expanded", "disabled"], ao = {
2668
+ key: 0,
2669
+ class: "condition-query-options",
2670
+ role: "listbox"
2671
+ }, no = ["aria-selected", "onClick"], oo = { class: "condition-query-field" }, so = ["aria-expanded", "disabled"], io = {
2672
+ key: 0,
2673
+ class: "condition-query-options",
2674
+ role: "listbox"
2675
+ }, ro = ["aria-selected", "onClick"], co = {
2676
+ class: "condition-query-ops",
2677
+ role: "group",
2678
+ "aria-label": "关系运算符"
2679
+ }, uo = ["disabled", "onClick"], Ao = { class: "condition-query-field" }, po = ["aria-expanded", "disabled"], mo = {
2680
+ key: 0,
2681
+ class: "condition-query-options",
2682
+ role: "listbox"
2683
+ }, vo = ["aria-selected", "onClick"], yo = { class: "condition-query-field" }, fo = ["disabled"], ho = { class: "condition-query-actions" }, bo = ["disabled"], go = ["disabled"], wo = /* @__PURE__ */ pe({
2684
+ __name: "ConditionQueryPanel",
2685
+ props: {
2686
+ view: {},
2687
+ idPrefix: { default: he }
2688
+ },
2689
+ emits: ["close"],
2690
+ setup(e, { emit: t }) {
2691
+ const l = /* @__PURE__ */ new Set([
2692
+ "shape",
2693
+ "st_area(shape)",
2694
+ "st_length(shape)",
2695
+ "shape_length",
2696
+ "shape_area",
2697
+ "shape.len",
2698
+ "shape.area"
2699
+ ]), n = [
2700
+ { label: "=", value: "= " },
2701
+ { label: "!=", value: "!= " },
2702
+ { label: "LIKE", value: "LIKE " },
2703
+ { label: ">", value: "> " },
2704
+ { label: ">=", value: ">= " },
2705
+ { label: "AND", value: "AND " },
2706
+ { label: "<", value: "< " },
2707
+ { label: "<=", value: "<= " },
2708
+ { label: "OR", value: "OR " },
2709
+ { label: "%", value: "% " },
2710
+ { label: "(", value: "( " },
2711
+ { label: ")", value: ") " },
2712
+ { label: "NOT", value: "NOT " },
2713
+ { label: "IS", value: "IS " },
2714
+ { label: "IN", value: "IN " },
2715
+ { label: "NULL", value: "NULL " }
2716
+ ], u = e, d = t, b = () => ge(u.view), r = T([]), s = T([]), A = T([]), o = T(""), c = T(""), D = T(""), y = T(""), p = T(!1), M = T(""), B = T(!1), L = T(""), P = T(!1), H = T(!1), I = T(!1), W = T(null), R = T(null), E = T(null);
2717
+ let J = null, x = null, w = null, z = 0, h = !1;
2718
+ const S = ee(
2719
+ () => !!o.value && s.value.length > 0
2720
+ ), Y = ee(
2721
+ () => !!c.value && A.value.length > 0
2722
+ ), F = ee(() => {
2723
+ var O;
2724
+ return o.value ? ((O = r.value.find((j) => j.id === o.value)) == null ? void 0 : O.title) ?? "请选择图层" : "请选择图层";
2725
+ }), G = ee(() => {
2726
+ if (!c.value) return "请选择字段";
2727
+ const O = s.value.find((j) => j.name === c.value);
2728
+ return O ? `${O.alias}(${O.name})` : "请选择字段";
2729
+ }), k = ee(() => D.value ? D.value === "__EMPTY__" ? "(空)" : D.value : "请选择字段值"), Z = (O) => O.type === "feature", m = (O, j = !1) => {
2730
+ M.value = O, B.value = j;
2731
+ }, i = () => {
2732
+ w == null || w.remove(), w = null;
2733
+ }, v = (O, j) => !!(h || O !== z || j !== void 0 && o.value !== j), f = () => {
2734
+ P.value = !1, H.value = !1, I.value = !1;
2735
+ }, C = () => {
2736
+ p.value || (P.value = !P.value, H.value = !1, I.value = !1);
2737
+ }, Q = () => {
2738
+ p.value || !S.value || (H.value = !H.value, P.value = !1, I.value = !1);
2739
+ }, K = () => {
2740
+ p.value || !Y.value || (I.value = !I.value, P.value = !1, H.value = !1);
2741
+ }, $ = (O) => O == null || O === "" ? "(空)" : String(O), V = (O) => O == null || O === "" ? "__EMPTY__" : String(O), q = (O) => D.value === V(O), ne = () => {
2742
+ var le;
2743
+ const O = (le = b()) == null ? void 0 : le.map;
2744
+ if (!O) {
2745
+ r.value = [];
2746
+ return;
2747
+ }
2748
+ const j = u.idPrefix, X = O.layers.filter((ie) => (ie.id || "").startsWith(j) && ie.listMode !== "hide" && Z(ie)).toArray().reverse();
2749
+ r.value = X.map((ie) => ({
2750
+ id: ie.id,
2751
+ title: ie.title || ie.id
2752
+ }));
2753
+ const oe = new Set(r.value.map((ie) => ie.id));
2754
+ o.value && !oe.has(o.value) && ot(!1);
2755
+ }, Ce = () => {
2756
+ var j, X;
2757
+ if (!o.value) return null;
2758
+ const O = (X = (j = b()) == null ? void 0 : j.map) == null ? void 0 : X.findLayerById(o.value);
2759
+ return !O || !Z(O) ? null : O;
2760
+ }, Ft = () => s.value.find((O) => O.name === c.value), nt = (O) => O === "string" || O === "guid" || O === "global-id" || O === "date" || O === "date-only" || O === "time-only" || O === "timestamp-offset" || O === "xml", Pt = (O, j) => O === "" || O === "__EMPTY__" ? nt(j) ? "''" : "NULL" : nt(j) ? `'${O.replace(/'/g, "''")}'` : O, Wt = async () => {
2761
+ const O = ++z, j = o.value;
2762
+ m(""), c.value = "", D.value = "", s.value = [], A.value = [], y.value = "", L.value = "", i();
2763
+ const X = Ce();
2764
+ if (!X) {
2765
+ v(O, j) || m("所选图层不存在或不支持条件查询", !0);
2766
+ return;
2767
+ }
2768
+ p.value = !0;
2769
+ try {
2770
+ if (X.loadStatus !== "loaded" && await X.load(), v(O, j)) return;
2771
+ const oe = (X.fields ?? []).filter((le) => {
2772
+ const ie = (le.name || "").toLowerCase();
2773
+ return !l.has(ie) && le.type !== "geometry";
2774
+ });
2775
+ s.value = oe.map((le) => ({
2776
+ name: le.name,
2777
+ alias: le.alias || le.name,
2778
+ type: le.type
2779
+ })), s.value.length === 0 && m("该图层没有可用查询字段", !0);
2780
+ } catch (oe) {
2781
+ if (v(O, j)) return;
2782
+ console.error("加载查询字段失败:", oe), m("加载图层字段失败", !0);
2783
+ } finally {
2784
+ O === z && (p.value = !1);
2785
+ }
2786
+ }, Jt = async () => {
2787
+ const O = ++z, j = o.value, X = c.value;
2788
+ m(""), D.value = "", A.value = [], L.value = "", i();
2789
+ const oe = Ce();
2790
+ if (!(!X || !oe)) {
2791
+ y.value = `${X} `, p.value = !0;
2792
+ try {
2793
+ const le = oe.createQuery();
2794
+ le.where = "1=1", le.returnGeometry = !1, le.returnDistinctValues = !0, le.outFields = [X], le.num = 1e3;
2795
+ const ie = await oe.queryFeatures(le);
2796
+ if (v(O, j) || c.value !== X) return;
2797
+ const we = ie.features.map((Me) => {
2798
+ var Re;
2799
+ return (Re = Me.attributes) == null ? void 0 : Re[X];
2800
+ }).filter((Me, Re, Ue) => Ue.indexOf(Me) === Re);
2801
+ A.value = we, we.length === 0 ? m("该字段未查询到可选值,仍可手动编辑条件") : we.length >= 1e3 && m("字段值较多,仅展示前 1000 个去重结果");
2802
+ } catch (le) {
2803
+ if (v(O, j) || c.value !== X) return;
2804
+ console.error("加载字段去重值失败:", le), m("加载字段值失败,仍可手动编辑条件", !0);
2805
+ } finally {
2806
+ O === z && (p.value = !1);
2807
+ }
2808
+ }
2809
+ }, zt = (O) => {
2810
+ o.value = O, f(), Wt();
2811
+ }, jt = (O) => {
2812
+ c.value = O, f(), Jt();
2813
+ }, Kt = (O) => {
2814
+ if (f(), m(""), !o.value || !c.value) {
2815
+ m("请先选择图层和字段", !0);
2816
+ return;
2817
+ }
2818
+ L.value = O.trim(), y.value += O;
2819
+ }, Ut = (O) => {
2820
+ if (m(""), !L.value) {
2821
+ m("请先选择关系符号", !0), D.value = "", f();
2822
+ return;
2823
+ }
2824
+ const j = Ft();
2825
+ if (!j) {
2826
+ m("字段信息无效,请重新选择字段", !0), f();
2827
+ return;
2828
+ }
2829
+ const X = V(O);
2830
+ D.value = X, y.value += Pt(X, j.type), f();
2831
+ }, Vt = async () => {
2832
+ const O = ++z, j = o.value;
2833
+ if (f(), m(""), !o.value || !c.value) {
2834
+ m("请先选择图层和字段", !0);
2835
+ return;
2836
+ }
2837
+ if (!y.value.trim()) {
2838
+ m("请输入查询条件", !0);
2839
+ return;
2840
+ }
2841
+ const X = Ce(), oe = b();
2842
+ if (!X || !oe) {
2843
+ m("图层或地图未就绪", !0);
2844
+ return;
2845
+ }
2846
+ p.value = !0, i();
2847
+ try {
2848
+ const le = X.createQuery();
2849
+ le.where = y.value.trim(), le.returnGeometry = !0, le.outFields = ["*"];
2850
+ const ie = await X.queryFeatures(le);
2851
+ if (v(O, j)) return;
2852
+ const we = ie.features ?? [];
2853
+ if (we.length === 0) {
2854
+ m("未查询到符合条件的要素", !0);
2855
+ return;
2856
+ }
2857
+ const Me = we.filter((Ue) => Ue.geometry);
2858
+ if (Me.length === 0) {
2859
+ m(`查询到 ${we.length} 条,但无有效几何,无法定位`, !0);
2860
+ return;
2861
+ }
2862
+ if (await oe.goTo(Me, { duration: 1200 }), v(O, j)) return;
2863
+ const Re = await oe.whenLayerView(X);
2864
+ if (v(O, j)) return;
2865
+ w = Re.highlight(we), m(`查询成功,共 ${we.length} 条,已定位并高亮`);
2866
+ } catch (le) {
2867
+ if (v(O, j)) return;
2868
+ console.error("条件查询失败:", le);
2869
+ const ie = le instanceof Error && le.message ? `:${le.message}` : "";
2870
+ m(`查询失败,请检查条件${ie}`, !0);
2871
+ } finally {
2872
+ O === z && (p.value = !1);
2873
+ }
2874
+ }, ot = (O = !0) => {
2875
+ z += 1, f(), o.value = "", c.value = "", D.value = "", s.value = [], A.value = [], y.value = "", L.value = "", p.value = !1, i(), m(O ? "已清空查询条件与高亮" : "");
2876
+ };
2877
+ return fe(() => {
2878
+ var j;
2879
+ h = !1, J = ke(
2880
+ () => [W.value, R.value, E.value],
2881
+ f
2882
+ ), ne();
2883
+ const O = (j = b()) == null ? void 0 : j.map;
2884
+ O && (x = O.layers.on("change", ne));
2885
+ }), me(() => {
2886
+ h = !0, z += 1, J == null || J(), J = null, x == null || x.remove(), x = null, i();
2887
+ }), (O, j) => (g(), re(Ee, {
2888
+ title: "条件查询",
2889
+ width: 400,
2890
+ onClose: j[2] || (j[2] = (X) => d("close"))
2891
+ }, {
2892
+ default: Ie(() => [
2893
+ r.value.length === 0 ? (g(), N("p", eo, " 暂无可查询的要素图层,请先加载业务图层 ")) : (g(), N(ce, { key: 1 }, [
2894
+ a("div", {
2895
+ class: ae(["condition-query-form", { "is-loading": p.value }])
2896
+ }, [
2897
+ a("div", to, [
2898
+ j[4] || (j[4] = a("span", null, "图层", -1)),
2899
+ a("div", {
2900
+ ref_key: "layerSelectRef",
2901
+ ref: W,
2902
+ class: "condition-query-select"
2903
+ }, [
2904
+ a("button", {
2905
+ type: "button",
2906
+ class: ae(["condition-query-trigger", { "is-open": P.value }]),
2907
+ "aria-label": "查询图层",
2908
+ "aria-haspopup": "listbox",
2909
+ "aria-expanded": P.value,
2910
+ disabled: p.value,
2911
+ onClick: te(C, ["stop"]),
2912
+ onKeydown: Ae(f, ["esc"])
2913
+ }, [
2914
+ a("span", null, U(F.value), 1),
2915
+ j[3] || (j[3] = a("span", {
2916
+ class: "condition-query-arrow",
2917
+ "aria-hidden": "true"
2918
+ }, null, -1))
2919
+ ], 42, lo),
2920
+ P.value ? (g(), N("ul", ao, [
2921
+ (g(!0), N(ce, null, de(r.value, (X) => (g(), N("li", {
2922
+ key: X.id
2923
+ }, [
2924
+ a("button", {
2925
+ type: "button",
2926
+ role: "option",
2927
+ "aria-selected": o.value === X.id,
2928
+ onClick: te((oe) => zt(X.id), ["stop"])
2929
+ }, U(X.title), 9, no)
2930
+ ]))), 128))
2931
+ ])) : _("", !0)
2932
+ ], 512)
2933
+ ]),
2934
+ a("div", oo, [
2935
+ j[6] || (j[6] = a("span", null, "字段", -1)),
2936
+ a("div", {
2937
+ ref_key: "fieldSelectRef",
2938
+ ref: R,
2939
+ class: "condition-query-select"
2940
+ }, [
2941
+ a("button", {
2942
+ type: "button",
2943
+ class: ae(["condition-query-trigger", { "is-open": H.value, "is-disabled": !S.value }]),
2944
+ "aria-label": "查询字段",
2945
+ "aria-haspopup": "listbox",
2946
+ "aria-expanded": H.value,
2947
+ disabled: p.value || !S.value,
2948
+ onClick: te(Q, ["stop"]),
2949
+ onKeydown: Ae(f, ["esc"])
2950
+ }, [
2951
+ a("span", null, U(G.value), 1),
2952
+ j[5] || (j[5] = a("span", {
2953
+ class: "condition-query-arrow",
2954
+ "aria-hidden": "true"
2955
+ }, null, -1))
2956
+ ], 42, so),
2957
+ H.value && S.value ? (g(), N("ul", io, [
2958
+ (g(!0), N(ce, null, de(s.value, (X) => (g(), N("li", {
2959
+ key: X.name
2960
+ }, [
2961
+ a("button", {
2962
+ type: "button",
2963
+ role: "option",
2964
+ "aria-selected": c.value === X.name,
2965
+ onClick: te((oe) => jt(X.name), ["stop"])
2966
+ }, U(X.alias) + "(" + U(X.name) + ") ", 9, ro)
2967
+ ]))), 128))
2968
+ ])) : _("", !0)
2969
+ ], 512)
2970
+ ]),
2971
+ a("div", co, [
2972
+ (g(), N(ce, null, de(n, (X) => a("button", {
2973
+ key: X.value,
2974
+ type: "button",
2975
+ class: "condition-query-op",
2976
+ disabled: p.value || !o.value || !c.value,
2977
+ onClick: (oe) => Kt(X.value)
2978
+ }, U(X.label), 9, uo)), 64))
2979
+ ]),
2980
+ a("div", Ao, [
2981
+ j[8] || (j[8] = a("span", null, "字段的值", -1)),
2982
+ a("div", {
2983
+ ref_key: "valueSelectRef",
2984
+ ref: E,
2985
+ class: "condition-query-select"
2986
+ }, [
2987
+ a("button", {
2988
+ type: "button",
2989
+ class: ae(["condition-query-trigger", { "is-open": I.value, "is-disabled": !Y.value }]),
2990
+ "aria-label": "字段的值",
2991
+ "aria-haspopup": "listbox",
2992
+ "aria-expanded": I.value,
2993
+ disabled: p.value || !Y.value,
2994
+ onClick: te(K, ["stop"]),
2995
+ onKeydown: Ae(f, ["esc"])
2996
+ }, [
2997
+ a("span", null, U(k.value), 1),
2998
+ j[7] || (j[7] = a("span", {
2999
+ class: "condition-query-arrow",
3000
+ "aria-hidden": "true"
3001
+ }, null, -1))
3002
+ ], 42, po),
3003
+ I.value && Y.value ? (g(), N("ul", mo, [
3004
+ (g(!0), N(ce, null, de(A.value, (X, oe) => (g(), N("li", {
3005
+ key: `${oe}-${String(X)}`
3006
+ }, [
3007
+ a("button", {
3008
+ type: "button",
3009
+ role: "option",
3010
+ "aria-selected": q(X),
3011
+ onClick: te((le) => Ut(X), ["stop"])
3012
+ }, U($(X)), 9, vo)
3013
+ ]))), 128))
3014
+ ])) : _("", !0)
3015
+ ], 512)
3016
+ ]),
3017
+ a("label", yo, [
3018
+ j[9] || (j[9] = a("span", null, "查询条件(WHERE)", -1)),
3019
+ Ge(a("textarea", {
3020
+ "onUpdate:modelValue": j[0] || (j[0] = (X) => y.value = X),
3021
+ rows: "3",
3022
+ placeholder: "可通过上方控件拼接,也可直接编辑",
3023
+ disabled: p.value,
3024
+ "aria-label": "查询条件",
3025
+ onFocus: f
3026
+ }, null, 40, fo), [
3027
+ [Ze, y.value]
3028
+ ])
3029
+ ])
3030
+ ], 2),
3031
+ a("div", ho, [
3032
+ a("button", {
3033
+ type: "button",
3034
+ class: "condition-query-btn is-primary",
3035
+ disabled: p.value,
3036
+ onClick: Vt
3037
+ }, U(p.value ? "查询中…" : "查询"), 9, bo),
3038
+ a("button", {
3039
+ type: "button",
3040
+ class: "condition-query-btn",
3041
+ disabled: p.value,
3042
+ onClick: j[1] || (j[1] = (X) => ot())
3043
+ }, " 清空 ", 8, go)
3044
+ ]),
3045
+ M.value ? (g(), N("p", {
3046
+ key: 0,
3047
+ class: ae(["condition-query-message", { "is-error": B.value }]),
3048
+ role: "status"
3049
+ }, U(M.value), 3)) : _("", !0)
3050
+ ], 64))
3051
+ ]),
3052
+ _: 1
3053
+ }));
3054
+ }
3055
+ }), So = /* @__PURE__ */ ve(wo, [["__scopeId", "data-v-01a8130c"]]), Io = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJ/mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDI2LTA1LTA2VDExOjQ1OjE0KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNi0wNy0yN1QxNjoxNTo0MCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNi0wNy0yN1QxNjoxNTo0MCswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphYzM5NWNlYS1kY2Q5LTRhMDQtYjkyYS1kYjY2M2E0MjVkNjMiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0Y2YxN2U0NC03OWFhLTU2NGQtYmI2Zi01ZTA0ZjY5MjExNzUiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMmRkNDc1MS1hMDE3LTQ4MjgtYjUwNC1lNzg2ZGZmZjlhODkiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RFdnQ6d2hlbj0iMjAyNi0wNS0wNlQxMTo0NToxNCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6N2UyNTc5NGQtNzJjYS00YzdmLWEzMzUtZDdkMDQzYjFjOGM2IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjEyOjUzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NzQ5ZWEyMDktYzY4My00YTJlLTkzOWYtOTE3YTgwOTFiM2JiIiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE1OjQwKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YWMzOTVjZWEtZGNkOS00YTA0LWI5MmEtZGI2NjNhNDI1ZDYzIiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE1OjQwKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzQ5ZWEyMDktYzY4My00YTJlLTkzOWYtOTE3YTgwOTFiM2JiIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjpFdkMAAA+3SURBVFjDpZl5lF1VlcZ/+9x731hzJZVKIBMhIzOSBBGQXoBpIwGFoAlNA4J2WppWlF4YldUiAZUGGhoZFBuQIQwSdCEgMzQL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", Eo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJ/mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDI2LTA1LTA2VDExOjQ1OjE0KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNi0wNy0yN1QxNjoxNjoxMiswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNi0wNy0yN1QxNjoxNjoxMiswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiNTRmMDg1ZC0wMjEwLTQ4Y2EtYWYzZC1kZWVhYzg0NDNjMzEiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4N2Q5Y2QxMy1iMjlkLTUxNDMtYmI1Ni1jZDg1YzgwYzYzOWIiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMmRkNDc1MS1hMDE3LTQ4MjgtYjUwNC1lNzg2ZGZmZjlhODkiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RFdnQ6d2hlbj0iMjAyNi0wNS0wNlQxMTo0NToxNCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6N2UyNTc5NGQtNzJjYS00YzdmLWEzMzUtZDdkMDQzYjFjOGM2IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjEyOjUzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ODY3YTlkMmYtZTA4Zi00MGM0LTk2YzktYWFiZDk0NThhZWU0IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE2OjEyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjU0ZjA4NWQtMDIxMC00OGNhLWFmM2QtZGVlYWM4NDQzYzMxIiBzdEV2dDp3aGVuPSIyMDI2LTA3LTI3VDE2OjE2OjEyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODY3YTlkMmYtZTA4Zi00MGM0LTk2YzktYWFiZDk0NThhZWU0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIyZGQ0NzUxLWEwMTctNDgyOC1iNTA0LWU3ODZkZmZmOWE4OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlUQsBsAAAmDSURBVFjDzZl/jFxVFcc/57735vfMtqW7/bG0pWBrqwgWEhFpRYKAAiIGKCSAvwBJAKNojAYxgNEQTQwhmGhMCIhR/EGQKj+a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", Lo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAAD3ElEQVRYCe2ZzWsTQRTA5+2m8aNpkbaC1FbaIigiWCp6lID9A/wE7960J8VDexDsQU96UPEm/gGKCl4VxKN6UBBRkKTYWoTWIknVmmbn+d7uTrK73d1k0+wmAfeQzLx5s/PbtzNv9r0B4bhGML91WcJ5gXhGAB5EAf1UBodK/EUAGhB/CIQPAuDRgIb352B0TQ1cgenF+aOGXH8oUOxRjW3xD+KrrnWdLcDwa+YxgS3Y8kuy5jYnJIAokIrhlMVfRh1R9LrGAfija6ksQwNPgyWJn5VlCXKVlGfSWvrJCgwtuDomVOnDhaGSLJ2k4a4TfMYcliy9U4N9kDHmphDlHRYyLGhwpAijn0ylFv/0YH4/SnyjoAG0qRRNg9NVLm26CCOxwQ7i4vZfYn1XdbyNJV3oJfVm2XAZIzdDWrdNTXIGZOHcEj3BAAu26OlhpWwqNPEng/mskPhMWSvs1rSwXqymxiZZh6fHX6M0z2WaAcua6bqsSiEuWB5MSHGsHlhWRSGOMyiXmcla/CyHfp4StmuL1xvQIn5AC+kAwexlEMfF448Th+aQCUMY6Wqd2agnsaaqwnhLK7CbX+s57yg9Ru6mRDHhlQfVXU8VpBSX3Ia9VLk/gKyUAwotA/bCaiBuEeO7AM6KuCXAfrBFfewyUdFEDb8SBw6BDSe1WxMF3iwsMycG3AzYxIDrhSWH/IWh+JumW3R957L3it0P08fVBYmy4rrYG9gLzMsiaHO5QpvLR3rvrxZh8PcGBRLEDky706QaOAyWdezNZVbp+/3HDpzS8VrZoJcN8Lyoj9zzg4giix34J4y9J6BTUaDCdBPzEmEQUdr+A0exViO6TbEwu65MOf94B+YONQIRpc+mF521KVh+1vQGTVxgfg8SaGGOwTJG/moffhv268gy7w7GritIt1lyXwtzdFuQa2bAyGENDRYUKXh2sM372VoP5mthDsVVwOgTg22wbK0drBZElHZf4LAbeKdBkrDMFQm41bCRgNsBtl5gaBdYBvb1EtzguMadeYOk56yDwyzWnsOOjEyrYZm4HgtbD0lJDspyZLuN/FtLYIsprOFIwf74djbFUk7R7oRWfg11NQKnPMuU3XJdlqUnXDKqkJ8+bIY1Qsx625pXt9mIld4yHYDwwJSmd2UMKeVZz4AcMHIMVo9uIzrMxGzcl1kpe0mnNQKzLCBLcZrezMZzfpaV3VlE1nJfHN0GBYxuzcZqNpPVmVj5yOAiHRncZQlbq92PDMD/UEabTmupp7EmuEMMzm+2JMsnKAt+Q33T0HywDmW4X0cde6kH7aiDRQXdCUe3/wAlqeR47KAVTQAAAABJRU5ErkJggg==", ko = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAADsElEQVRYCe2ZO28TQRCAd3aNFYiTiEeEiAJKQgEStFDTIhoiwi+gTQURKBEFBQTxCA2i5BcQKVTUtEBJCiiIDURBKDyU2EBkvDvMnG/M2dzl7Nh3TiROsnd3vLvz3Xhudm8WVOAawXzPFweXFOKEAjyJCvZTHQJdkq8CkEL8qhAWFcD8AY2PCzC6IYprMP348bR1v58oVEfkx21Rgvpg9K6L63D4JfN4wFXYynOy5u4gJIBapy42KEu+jgZR9dfpAfhldOYMQwO7warDt2JZgixR55mszi58g+HluoEpNfbh8nDZlcdJ3SzB5zy1ZOlBDccgZwuTiO4hCxkWNJwqwugbr1OXv/owfxwdvhJoAD2pyQ0u/OXS092GHcKVPcLjs8xIm4OB5mgggqzOPJV6N8qcXbq55ja+5yr5BdHPril1ZoVem3ccuvgBK5mxgdqPKVf67NKcQ3XZUwuqPKB79q7A0E9u042seQ8ihTx2CT+0JRMN+rFwjhS+7rWFu1E2qIOlTgR0T2CrY3w2YtVRk3RK7ixOkXXI7XAqh58GG+dthNWgHtA/fb2xn7QTB6b/r89TRtYxqlyt+9rDYItm7IrAhZWJA4cpZdlWYHlcV4C3CtsV4HZgGTjDX2ld1to7qNSE6OMHLM5npa+UqbpEu7AMnaqFxUoUZ+e1No8G8P2YyKzKFktwaFXaUWWqFhYItnTF2nfBD7qNz5stLjI2eWBUsVbzYHh7oNxZAYsqE3cJY9QNa8kJQP2zygWhAFVRa7gflIXVEwdeh9EXpDjWcmFwYbLkXSJMaxuy/8BtGK+pobE+zPtZb4sou66oaSka8APm+2xUr7blscDOIS2neILeqmMvLxp08AELUxjrw5T9eUav003g0vQxoSsMoFVZLPAPM3IVdM/BjDFHgx9eXltV1on+sS7BSvw1vrZi8RYxuJHpBEizc8RauHGixv1s2pZuCbgRlvezxphrjTeVZLtp4DDYVjffnbiRpoC3CyzfcCzwdoKNBW4Glt8UJE5TtKZ8crJXpIU5MVfLdRFD1AtjNeTBfdp9L2oDc8ni0toUlgzklCdnEWk5zjJAFGzScDJ/XTLQOwChXzg7yJlv7sSJODoaoSVZlclyt7oRDQSWmbzMJQmYlbKXdFrjX36a3muVMqPjnPLcLDEn45Isg0zMSgltCO4JZjlNLwD1KU+Rplf6LLM1jcQacSijpzkb391Dmcp5pdxtcoecByyHMtzYUcdeYu4ddbAo0Dvh6PYPmJ3UMHrbxZsAAAAASUVORK5CYII=", xo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjYtMDUtMDZUMTE6NDU6MTQrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTA3LTIxVDE0OjE0OjA0KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI2LTA3LTIxVDE0OjE0OjA0KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmZjNmJmZmEzLWJhOGYtNDc5MS04MDhmLTg0ZjE2NjU0NjdiNiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmRiN2U1MjNkLTQyM2MtNWY0Yy05ODA3LTJhNTMwNzM1YTkyMiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjZlMTFiYjk5LWM3ZTEtNGQzOC04ZThkLWE3MzgzZDAzZjRjNSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmUxMWJiOTktYzdlMS00ZDM4LThlOGQtYTczODNkMDNmNGM1IiBzdEV2dDp3aGVuPSIyMDI2LTA1LTA2VDExOjQ1OjE0KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZmM2YmZmYTMtYmE4Zi00NzkxLTgwOGYtODRmMTY2NTQ2N2I2IiBzdEV2dDp3aGVuPSIyMDI2LTA3LTIxVDE0OjE0OjA0KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6LAbEEAAALM0lEQVRYw7WZfZBdZX3HP7/fc+69+5rsJtm8SggBKUNwNGmxkJaqaGVaK6XWllSwg85AzZTKCFIdcTqMWGwZtDXFoqWIoFPtMMoAjRanyItCgdZWhFrlJZBIAiGb7G72bva+nPP79o97drNksiE3lufOM+f88dxzvs/3+f5ej0nicGM5uzEgBxq0cAoCyOiniDbJCgL1nGQjI9sY/bV2FGcj1pppBdgIaBrZThkvIT1S877vtNV4QaYxE5glInIwI2Rk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", Co = "data:image/png;base64,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", Mo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAAEx0lEQVRYCdVZzYscRRR/r2bICjPrRoMfBwm7q8GPmySgoGAOEWHxsoIiCdE9eAnEg+Jlb4IgQmIIEm9C8OPgwRAhIAg57EFFEPMHaJidCBIygeiuIxjs7ufv9XTVdle6e7o7k521YLeqXr169etXr96resOdcP0tInqPRDqo8wuzsMgPu1pzSzd4z2Y+UzNqV648QVH4tQjtK5PATNeN4dcMmMrBqhQBXqJn/g03XyoT2mgsCo+NAzuCQPdFIa2aUs16CIS5eBc83qpdoeoyhanTzghmc5IN/ZihRfKJiOzO0CbbYSeO+RIbft/1tRHKESFZtrQMYAU75PlzdlBr2PgZ2xeKPuyGvQ9sfxI1wNzl5IhcHfKCv/5+gj3akgFsiYW10AzmzhSOb8OAHrr/VamlYcP0BQlfLPvCiOgVuJUlx8McMcm7cIy/OVqqAZN4A7v2bIpU2uRO0HMWwsx/ovOPN+N+eJJ4J5jN8WFr/mNv3HU7Qf8IsXxm+QlgWyIrm+3Fzx2T18AZOQv+lZjMdJOI//BYZp0nY/65DaH4SDgMlArewH2cJ5QSsJ9CyMjMKoCdk/5CEEWHnCycEaB40PX9BgAajWA+PbevAHyXlzCmwLZiUnWwa/AAD+Wul0OEBXzP98iNuSDcWLZBAa7rFITsUn61WSGjflkU7AbPX/LlNDGDRLMKdm9K3gWY3LfYoZex5c8pHeH4MlCcjnkkGhxoLZxP8Y+a8LN/qV3r32yw/votDCmCgoUNBpYf7fDuoHc0xXJLU8F2wt4VNwfrdIPeVwdFYgfQDfsf2bFusL7mC2js1m7TDJxmcXjOQXOvrjEHPri8fiPA0wKrH1Ab8DTB1gY8bbC1AO8EsAq4UmhOwNaKYHmuq9oBQyQvKWNtOKXZEW+9oFDLG+yW/pPwvodL8JZrOL7IsLwAZ94kgtUGG0RyEdH33saAEeCW3OX5Dmu2Clj9kLEmEX/tDgFbDfA2g8X9YSNWUsG/cg1vP1h9PxbencdqWF8KZZfvpq5LvYFvs9DsmWFr8U1YaeGdezzggmeNTrwzYFVyeSk3iYK50wKrcGoDnibY2oCnDbYW4J0AtjLgnQJWAXOSnz22lUWUowjH8S0O16bv8Dj9FSH6edDc67bKravcdenSo/KIyMy1qP827i1xfhiyn8Z94nEdhau7BlzfJKwDY2ZOMh6dv1TJzyaTaJJgVeZsuL4aiWQzlnYxr8Yz/0tTByzmXxj3YKyqWYvFatb2y2pElH3ZCzzys7hKXs1MYjoEc4gzlpo3KHvd1gWbrINNGxWYwAAK/Mn2tYZWH4OJPGxpGcCaTM7Jz+IDkvQRkhzIGzxqJ2friBFuD6fvs/Yio7mGLG+6J0/ZWKxg/24vvpgeRa5DzWXV0jKALbGojjMyMsrK5PPYpUejADCH1nEibPyESu1IN6F1G4uppWFs8WXkh39vvFreRBbYKD2QN5RHywLGDyCwmf0e4+xW35wetovzw1t81VtY7yzOyIrO0AOW2KwTgGTwwbShZQDDRpfhEba7uBUTb+AOmAJxgwkqg22+XhkhUp6Veasz1lifBm39OVR/YdQf7QrXwKdrMvmAmT+/VsjUbADh9oREN/dCk6U/3ULVA26Zd/4DruePRtb0DlQAAAAASUVORK5CYII=", Ro = "data:image/png;base64,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", To = "data:image/png;base64,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", Do = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAwCAYAAABqkJjhAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAAMAAAAABZfp0gAAAEuElEQVRoBe1ZXWgcVRQ+58zGZMluGqVKKA07W61FYy3YgmhV4osY/2so+JLHWl+KiC1EDPjYl0YEnwIq+NCHthSlqDEasFCC9kFbLPWp7E8SQ5uqtNltk+7u3OO5rLOZWfdndvdmbaQXhnvOd8+959szZ87cuYsgLcqpPUrxBwA8AAwhjf3XDRGuAOCxXgqNzmP/sssHo5x+SSl1CpjRBW+nHgFPZUPxV11OxI5673Ylq0ky8CsRTj/sEg4B8lZBVxviTVEWV4G2S10SwD6vV7n194v+m8ZCwHhRfsegVoqNLSQ6mEX7pIu0q4/ywkblrEyKv1XCiEwAwrHYCC0aA4ScC0i0O1nx8aiTfLOEtUHo5USM1cqMuNrldSfRnbiOsYSLUQZjMxbRa1BMhSLOTIp5IuIkxlzDtewlRwfyCmeY4UGfH8TPd5F9wIuVKoOUticksl8z890+A6SPMxR7G+XWeHFTcjW/hDC+RPFD5X4lPYotg/aPQPS0RHrBxXTPrA5EVeroTuYOL25C7uHUC1L/p8uDRIijGWvLwXKy2mcpwi6BXk7aBcXfye3Z6mLFHqciVnj4Cvbd8OPNaT2FxIiD8JnvRYXoEOP+TMj+tNqq/yKsDSN8+T5Wy5MS3sf8E/EsWR0vZnDzn368Ma3bSb4jM8Z99R/hFhG+kcH4l7VWK6WE1yiLfYthigzKW+YHLy4J8jir/Jl7+Pd+Px5cE7KHheiHXrLyGl5CwufrkdVeKhLWA3/gvZk+yx4S0l9o3W2Sbw/lVO77Aea7XCxoL6VyVIiOeu2F7GKIaDCL8dNevJpclbCecAnx1pBl75VFP/EuIKS3zcHcDi8WRJZS+brPDjFF1LH7GtrnfHgNpSZhPe+EPAhZa8s+eT6nvOsoKIS9eiAZcdq1kyBcCJO1ewn7L7lYkD74VlJv91qsxFmy35e0OC9P+oYodR1dwE1639JQC064oWUrG/9TV4/r0Uxlk7po3ZSou0KbDdYd4TVJCdkfPCn7khEG7DZ1AxDUrEXWuHHCG3l207JypqXeShVp8Sn1/Fq9UsFxdhgnvAKFB4Rn4yXPQ66qiLjdeA7HIP6T1OyzVZ02O1Dc3n5kPMIXEXODzE+dg/SjCshYDlvgzF3DeMo4YR3A04gF6X5pNpi15hlPiVrOTIytO8JrkhLdTupdBN4nhyDN5LBMwwudVsf+v3DzfPldMU44wrOPsFM40loF5v68yh0WsiPlhI2nhAXcWe6kGV2+KbsqzTNOWA49fgakI7LfzcgXuNP4BQWZcx4tGKtE2HhKaCc3LPuQdPoy3oxH2DjDsgXXHeE1SQkdFH22QZDvKQuQT0VwnOcgNqu/G30DNRTjhPcyW5NO8hg7N4eDsPgGU+kNnHr2OtrJGjxLQ8ZTYgrmd0oNHi55qCcwx+Ro7K16Zu64ccJypL8gJ3Z68xO4yWFNOqix8ZTQr9MeTr6sHJCzDK6Zw/IJ5ciX9Jkhik2cCMjYOGHtdwnj30qnr0AtKFm9mPGUCMSwBaM7hFsIXqCp/+cIc94bAgJc/avMO7DGcuAIy3H+VyUuCHMR6Py1pLdRqPgfRzX/EU48A4q2h4lPXsX45Wp2d3BPBP4GFfyUGGtGJtsAAAAASUVORK5CYII=", Oo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALgAAAACGrrTDAAAC90lEQVRYCe1ZPW8TQRCd2T2nsI2TQCKUBuLwIVEQBIJAS4EQ/AAKkKCjS0WFRANBQMlviESVGpGKBglchAKJFHzIuQiUBIISJzix4nh3mEMZ30UWxnZsZU/yStaMn2f23u097Y7nENo8DtDCgLVb87umVcmRDTz8YxfW4hevxbx/phEgAlEyGpCETdyIAnvw1R5y9yU1doS9dCX/BgBblwbSTFGPjDey3CnjTyLRCYlVGh6uY3Y6bfLjQHhTcEB4VdTZRxmau2gNPBecgH55hDDGmusRsFmLhJuN59AoX/RMNd7AYOAjwFELdKmKA37e8fs4PsQRF2MnidgRrtEub0pPkMAPH099DzUu1I8If0WFE2joYBXRiVzgMz6lDH0SnBR8CXwPErME5buCW5Yfpkx+CwiqGva0d2ENj8xIULM2TYuDZEo/o3lJjUPLmF2KYq36NSvc6kSdyMvQt+PWmjsyN59Iv50mDFA5RkQPhDB1dwlZig5apyWhgJYswFTk/ledJlzAkQ9M9kaEMG91Do9emu83YE4LRQVYdpowgR0jA9NC2CB0awlZjI5ZpyVhAbe5tilE7r7gNOEiDr9msv0RwhD/8jJ6N/vtp2j+CljzMuSBC05LQoPlMhkSVcIIPbGTROwIOy0JDzLvUBfPiyQqoLadJryCh9aZ7HshHFinCfeSf65iaEIIK6QVpwlzE4UbLXRdCPPJ1y1+ZDE6Zp2WBHKPTSHcl7vn3rPbf/PXcHiOyT4TwoGN3cERO8I1GjbWXk1V/JPRx1DPRw1LO3VrvbC/v2XIv2ZMWN8mNL0tYNbvI//stoFTMoHWlOdGd26A/KGSgcuCcwO8VEOYyD6WgIaswaDIDj7/HcbSU95Xqw1t7q7f5iSfF+kW23sygbE4yX6uDDTK8S8Et7a7D8tadM6yJHAWkcIiuclr8fEZbD0NDX4h85VfaGgJJqVXA9+CWkS0HwVnGXwPfAJVRDQhTrDM70PaOzrd0I7dttYl3F6B1c72B2uH9rWxT5BBAAAAAElFTkSuQmCC", No = { class: "toolbar-wrap" }, Bo = {
3056
+ key: 7,
3057
+ class: "coordinate-display"
3058
+ }, Yo = { class: "toolbar-box" }, Go = ["src"], Zo = ["data-tip", "aria-label"], Qo = ["src"], Fo = ["src"], Po = ["src"], Wo = ["src"], Jo = ["src"], zo = ["src"], jo = ["src"], Ko = ["src"], Uo = ["src"], Vo = ["src"], Xo = /* @__PURE__ */ pe({
3059
+ __name: "MapToolbar",
3060
+ props: {
3061
+ /** MapView 实例 */
3062
+ view: { type: Object, required: !0 },
3063
+ /**
3064
+ * 绘图图层(由 ArcgisMap 注入);测量等工具自建图层,此处保留以兼容既有接入方式。
3065
+ */
3066
+ sketchLayer: { type: Object, required: !0 },
3067
+ /**
3068
+ * 图层管理 / 业务卷帘 / 地图标注 / 条件查询识别的业务图层 id 前缀,需与 loadBusinessLayers 的 idPrefix 一致。
3069
+ */
3070
+ layerIdPrefix: { type: String, default: he },
3071
+ /**
3072
+ * 白名单:仅显示这些工具。不传则显示全部(再减去 hiddenTools)。
3073
+ */
3074
+ tools: {
3075
+ type: Array,
3076
+ default: void 0
3077
+ },
3078
+ /**
3079
+ * 黑名单:从默认全量中隐藏。与 tools 同时传时以 tools 为准。
3080
+ */
3081
+ hiddenTools: {
3082
+ type: Array,
3083
+ default: () => []
3084
+ },
3085
+ /** 是否显示底部经纬度条,默认 true */
3086
+ showCoordinate: { type: Boolean, default: !0 },
3087
+ /**
3088
+ * 全图定位中心 [经度, 纬度]。传入后点击全图会同时回到该中心与 minZoom。
3089
+ * 若同时传入 homeExtent,优先使用 homeExtent(与平移边界一致)。
3090
+ */
3091
+ homeCenter: {
3092
+ type: Array,
3093
+ default: void 0
3094
+ },
3095
+ /**
3096
+ * 全图经纬度范围。传入后点击全图走 goToFullExtent(minZoom + 范围中心)。
3097
+ */
3098
+ homeExtent: {
3099
+ type: Object,
3100
+ default: null
3101
+ },
3102
+ /**
3103
+ * 为 true 时全图点击只抛 fullExtent,由业务侧自行完成定位。
3104
+ */
3105
+ delegateFullExtent: { type: Boolean, default: !1 },
3106
+ /** 坐标定位面板的动态坐标系配置;不传则走内置默认项 */
3107
+ coordinateSystemConfig: {
3108
+ type: Object,
3109
+ default: null
3110
+ }
3111
+ },
3112
+ emits: ["layerManage", "conditionQuery", "swipeCompare", "fullExtent"],
3113
+ setup(e, { expose: t, emit: l }) {
3114
+ const n = e, u = l, d = () => ge(n.view), b = T(null), r = T(null), s = T(null);
3115
+ let A = null;
3116
+ const o = T(null), c = T(!1), D = ee(() => new Set(n.hiddenTools ?? [])), y = (h) => n.tools && n.tools.length > 0 ? n.tools.includes(h) : !D.value.has(h), p = (h) => h === null ? "--" : h.toFixed(6), M = () => {
3117
+ o.value = null;
3118
+ }, B = (h) => {
3119
+ if (o.value === h) {
3120
+ o.value = null;
3121
+ return;
3122
+ }
3123
+ o.value = h;
3124
+ }, L = () => {
3125
+ const h = o.value !== "layerManage";
3126
+ B("layerManage"), h && u("layerManage");
3127
+ }, P = () => {
3128
+ const h = o.value !== "layerSwipe";
3129
+ B("layerSwipe"), h && u("swipeCompare");
3130
+ }, H = () => {
3131
+ const h = o.value !== "conditionQuery";
3132
+ B("conditionQuery"), h && u("conditionQuery");
3133
+ }, I = () => {
3134
+ var h;
3135
+ (h = b.value) == null || h.destroySwipe();
3136
+ };
3137
+ t({
3138
+ destroySwipe: I
3139
+ });
3140
+ const W = () => {
3141
+ const h = d();
3142
+ h && (h.zoom += 1);
3143
+ }, R = () => {
3144
+ const h = d();
3145
+ h && (h.zoom -= 1);
3146
+ }, E = () => {
3147
+ if (u("fullExtent"), n.delegateFullExtent) return;
3148
+ const h = d();
3149
+ if (!h) return;
3150
+ const S = n.homeExtent;
3151
+ if (S && Number.isFinite(S.xmin) && Number.isFinite(S.ymin) && Number.isFinite(S.xmax) && Number.isFinite(S.ymax)) {
3152
+ Ll(h, S);
3153
+ return;
3154
+ }
3155
+ const Y = h.constraints.minZoom, F = n.homeCenter, G = Array.isArray(F) && F.length === 2 && Number.isFinite(F[0]) && Number.isFinite(F[1]);
3156
+ G && Y != null && Number.isFinite(Y) ? h.goTo({ center: F, zoom: Y }) : G ? h.goTo({ center: F }) : Y != null && Number.isFinite(Y) && h.goTo({ zoom: Y });
3157
+ }, J = () => {
3158
+ window.dispatchEvent(new Event("resize"));
3159
+ }, x = () => {
3160
+ c.value = !!document.fullscreenElement, J();
3161
+ }, w = async () => {
3162
+ try {
3163
+ if (document.fullscreenElement) {
3164
+ await document.exitFullscreen();
3165
+ return;
3166
+ }
3167
+ await document.documentElement.requestFullscreen();
3168
+ } catch (h) {
3169
+ console.error("切换整页全屏失败:", h);
3170
+ }
3171
+ }, z = () => {
3172
+ if (A == null || A.remove(), A = null, !n.showCoordinate) return;
3173
+ const h = d();
3174
+ A = h.on("pointer-move", (S) => {
3175
+ const Y = h.toMap({ x: S.x, y: S.y }), F = Y == null ? void 0 : Y.longitude, G = Y == null ? void 0 : Y.latitude;
3176
+ typeof F != "number" || typeof G != "number" || !Number.isFinite(F) || !Number.isFinite(G) || (r.value = F, s.value = G);
3177
+ });
3178
+ };
3179
+ return ue(
3180
+ () => [n.tools, n.hiddenTools],
3181
+ () => {
3182
+ const h = o.value;
3183
+ h && !y(h) && (M(), h === "layerSwipe" && I());
3184
+ },
3185
+ { deep: !0 }
3186
+ ), ue(
3187
+ () => n.showCoordinate,
3188
+ () => {
3189
+ z();
3190
+ }
3191
+ ), fe(() => {
3192
+ z(), document.addEventListener("fullscreenchange", x);
3193
+ }), me(() => {
3194
+ document.removeEventListener("fullscreenchange", x), A == null || A.remove(), A = null;
3195
+ }), (h, S) => (g(), N("div", No, [
3196
+ y("coordinateLocate") && o.value === "coordinateLocate" ? (g(), re(Na, {
3197
+ key: 0,
3198
+ view: e.view,
3199
+ "coordinate-system-config": e.coordinateSystemConfig,
3200
+ onClose: M
3201
+ }, null, 8, ["view", "coordinate-system-config"])) : _("", !0),
3202
+ y("distanceMeasure") && o.value === "distanceMeasure" ? (g(), re(Ja, {
3203
+ key: 1,
3204
+ view: e.view,
3205
+ onClose: M
3206
+ }, null, 8, ["view"])) : _("", !0),
3207
+ y("areaMeasure") && o.value === "areaMeasure" ? (g(), re(_a, {
3208
+ key: 2,
3209
+ view: e.view,
3210
+ onClose: M
3211
+ }, null, 8, ["view"])) : _("", !0),
3212
+ y("layerManage") && o.value === "layerManage" ? (g(), re(En, {
3213
+ key: 3,
3214
+ view: e.view,
3215
+ "id-prefix": e.layerIdPrefix,
3216
+ onClose: M
3217
+ }, null, 8, ["view", "id-prefix"])) : _("", !0),
3218
+ y("layerSwipe") ? (g(), re(Gn, {
3219
+ key: 4,
3220
+ ref_key: "layerSwipeRef",
3221
+ ref: b,
3222
+ view: e.view,
3223
+ "id-prefix": e.layerIdPrefix,
3224
+ visible: o.value === "layerSwipe",
3225
+ onClose: M
3226
+ }, null, 8, ["view", "id-prefix", "visible"])) : _("", !0),
3227
+ y("mapLabel") && o.value === "mapLabel" ? (g(), re($n, {
3228
+ key: 5,
3229
+ view: e.view,
3230
+ "id-prefix": e.layerIdPrefix,
3231
+ onClose: M
3232
+ }, null, 8, ["view", "id-prefix"])) : _("", !0),
3233
+ y("conditionQuery") && o.value === "conditionQuery" ? (g(), re(So, {
3234
+ key: 6,
3235
+ view: e.view,
3236
+ "id-prefix": e.layerIdPrefix,
3237
+ onClose: M
3238
+ }, null, 8, ["view", "id-prefix"])) : _("", !0),
3239
+ e.showCoordinate ? (g(), N("div", Bo, [
3240
+ a("span", null, "经度:" + U(p(r.value)), 1),
3241
+ a("span", null, "纬度:" + U(p(s.value)), 1)
3242
+ ])) : _("", !0),
3243
+ a("div", Yo, [
3244
+ y("fullExtent") ? (g(), N("button", {
3245
+ key: 0,
3246
+ type: "button",
3247
+ "data-tip": "全图",
3248
+ "aria-label": "全图",
3249
+ onClick: E
3250
+ }, [
3251
+ a("img", {
3252
+ src: se(Io),
3253
+ alt: "",
3254
+ width: "20",
3255
+ height: "20"
3256
+ }, null, 8, Go)
3257
+ ])) : _("", !0),
3258
+ y("fullscreen") ? (g(), N("button", {
3259
+ key: 1,
3260
+ type: "button",
3261
+ "data-tip": c.value ? "退出全屏" : "全屏",
3262
+ "aria-label": c.value ? "退出全屏" : "全屏",
3263
+ class: ae({ "is-active": c.value }),
3264
+ onClick: w
3265
+ }, [
3266
+ a("img", {
3267
+ src: se(Eo),
3268
+ alt: "",
3269
+ width: "20",
3270
+ height: "20"
3271
+ }, null, 8, Qo)
3272
+ ], 10, Zo)) : _("", !0),
3273
+ y("zoomIn") ? (g(), N("button", {
3274
+ key: 2,
3275
+ type: "button",
3276
+ "data-tip": "放大",
3277
+ "aria-label": "放大",
3278
+ onClick: W
3279
+ }, [
3280
+ a("img", {
3281
+ src: se(Lo),
3282
+ alt: "",
3283
+ width: "20",
3284
+ height: "20"
3285
+ }, null, 8, Fo)
3286
+ ])) : _("", !0),
3287
+ y("zoomOut") ? (g(), N("button", {
3288
+ key: 3,
3289
+ type: "button",
3290
+ "data-tip": "缩小",
3291
+ "aria-label": "缩小",
3292
+ onClick: R
3293
+ }, [
3294
+ a("img", {
3295
+ src: se(ko),
3296
+ alt: "",
3297
+ width: "20",
3298
+ height: "20"
3299
+ }, null, 8, Po)
3300
+ ])) : _("", !0),
3301
+ y("coordinateLocate") ? (g(), N("button", {
3302
+ key: 4,
3303
+ type: "button",
3304
+ "data-tip": "坐标定位",
3305
+ "aria-label": "坐标定位",
3306
+ class: ae({ "is-active": o.value === "coordinateLocate" }),
3307
+ onClick: S[0] || (S[0] = (Y) => B("coordinateLocate"))
3308
+ }, [
3309
+ a("img", {
3310
+ src: se(xo),
3311
+ alt: "",
3312
+ width: "20",
3313
+ height: "20"
3314
+ }, null, 8, Wo)
3315
+ ], 2)) : _("", !0),
3316
+ y("distanceMeasure") ? (g(), N("button", {
3317
+ key: 5,
3318
+ type: "button",
3319
+ "data-tip": "距离测量",
3320
+ "aria-label": "距离测量",
3321
+ class: ae({ "is-active": o.value === "distanceMeasure" }),
3322
+ onClick: S[1] || (S[1] = (Y) => B("distanceMeasure"))
3323
+ }, [
3324
+ a("img", {
3325
+ src: se(Co),
3326
+ alt: "",
3327
+ width: "20",
3328
+ height: "20"
3329
+ }, null, 8, Jo)
3330
+ ], 2)) : _("", !0),
3331
+ y("areaMeasure") ? (g(), N("button", {
3332
+ key: 6,
3333
+ type: "button",
3334
+ "data-tip": "面积测量",
3335
+ "aria-label": "面积测量",
3336
+ class: ae({ "is-active": o.value === "areaMeasure" }),
3337
+ onClick: S[2] || (S[2] = (Y) => B("areaMeasure"))
3338
+ }, [
3339
+ a("img", {
3340
+ src: se(Mo),
3341
+ alt: "",
3342
+ width: "20",
3343
+ height: "20"
3344
+ }, null, 8, zo)
3345
+ ], 2)) : _("", !0),
3346
+ y("layerManage") ? (g(), N("button", {
3347
+ key: 7,
3348
+ type: "button",
3349
+ "data-tip": "图层管理",
3350
+ "aria-label": "图层管理",
3351
+ class: ae({ "is-active": o.value === "layerManage" }),
3352
+ onClick: L
3353
+ }, [
3354
+ a("img", {
3355
+ src: se(To),
3356
+ alt: "",
3357
+ width: "20",
3358
+ height: "20"
3359
+ }, null, 8, jo)
3360
+ ], 2)) : _("", !0),
3361
+ y("layerSwipe") ? (g(), N("button", {
3362
+ key: 8,
3363
+ type: "button",
3364
+ "data-tip": "卷帘对比",
3365
+ "aria-label": "卷帘对比",
3366
+ class: ae({ "is-active": o.value === "layerSwipe" }),
3367
+ onClick: P
3368
+ }, [
3369
+ a("img", {
3370
+ src: se(Oo),
3371
+ alt: "",
3372
+ width: "20",
3373
+ height: "20"
3374
+ }, null, 8, Ko)
3375
+ ], 2)) : _("", !0),
3376
+ y("mapLabel") ? (g(), N("button", {
3377
+ key: 9,
3378
+ type: "button",
3379
+ "data-tip": "地图标注",
3380
+ "aria-label": "地图标注",
3381
+ class: ae({ "is-active": o.value === "mapLabel" }),
3382
+ onClick: S[3] || (S[3] = (Y) => B("mapLabel"))
3383
+ }, [
3384
+ a("img", {
3385
+ src: se(Ro),
3386
+ alt: "",
3387
+ width: "20",
3388
+ height: "20"
3389
+ }, null, 8, Uo)
3390
+ ], 2)) : _("", !0),
3391
+ y("conditionQuery") ? (g(), N("button", {
3392
+ key: 10,
3393
+ type: "button",
3394
+ "data-tip": "条件查询",
3395
+ "aria-label": "条件查询",
3396
+ class: ae({ "is-active": o.value === "conditionQuery" }),
3397
+ onClick: H
3398
+ }, [
3399
+ a("img", {
3400
+ src: se(Do),
3401
+ alt: "",
3402
+ width: "20",
3403
+ height: "20"
3404
+ }, null, 8, Vo)
3405
+ ], 2)) : _("", !0),
3406
+ bt(h.$slots, "extra", {}, void 0, !0)
3407
+ ])
3408
+ ]));
3409
+ }
3410
+ }), Ho = /* @__PURE__ */ ve(Xo, [["__scopeId", "data-v-dedd3217"]]), qo = "data:image/png;base64,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", _o = { class: "swipe-compare-wrap" }, $o = { class: "swipe-compare-form" }, es = ["aria-expanded"], ts = {
3411
+ key: 0,
3412
+ class: "swipe-unit-options",
3413
+ role: "listbox"
3414
+ }, ls = ["aria-selected", "onClick"], as = {
3415
+ key: 0,
3416
+ class: "swipe-compare-message"
3417
+ }, ns = /* @__PURE__ */ pe({
3418
+ __name: "SwipeCompare",
3419
+ props: {
3420
+ /** MapView 实例 */
3421
+ view: { type: Object, required: !0 },
3422
+ /** 底图密钥;未传时尝试 inject(BASEMAP_KEYS_KEY) */
3423
+ keys: { type: Object, default: null }
3424
+ },
3425
+ setup(e, { expose: t }) {
3426
+ const l = e, n = () => ge(l.view), u = lt(() => l.keys), d = T(!1), b = T(!1), r = T(null), s = T(""), A = T(null), o = T([]), c = Se(null), D = Se(null), y = ee(() => c.value !== null);
3427
+ let p = null, M = null;
3428
+ const B = ee(() => {
3429
+ var w;
3430
+ return A.value ? ((w = o.value.find((z) => z.value === A.value)) == null ? void 0 : w.label) ?? "请选择图层" : "请选择图层";
3431
+ }), L = () => {
3432
+ var z, h, S;
3433
+ const w = kt(((h = (z = n()) == null ? void 0 : z.map) == null ? void 0 : h.basemap) ?? null);
3434
+ o.value = Je.filter((Y) => Y.value !== w), (!A.value || !o.value.some((Y) => Y.value === A.value)) && (A.value = ((S = o.value[0]) == null ? void 0 : S.value) ?? null);
3435
+ }, P = () => {
3436
+ const w = n(), z = c.value;
3437
+ z && w && (w.ui.remove(z), z.destroy()), c.value = null;
3438
+ const h = D.value;
3439
+ h && (w != null && w.map) && (w.map.remove(h), h.destroy()), D.value = null;
3440
+ }, H = () => {
3441
+ if (d.value) {
3442
+ I();
3443
+ return;
3444
+ }
3445
+ d.value = !0, L(), s.value = "";
3446
+ }, I = () => {
3447
+ P(), d.value = !1, W(), s.value = "";
3448
+ }, W = () => {
3449
+ b.value = !1;
3450
+ }, R = () => {
3451
+ b.value = !b.value;
3452
+ }, E = (w) => {
3453
+ A.value = w, W(), s.value = "";
3454
+ }, J = () => {
3455
+ var k, Z, m, i;
3456
+ W();
3457
+ const w = A.value;
3458
+ if (!w) {
3459
+ s.value = "请选择对比图层";
3460
+ return;
3461
+ }
3462
+ const z = Lt(w, u.value);
3463
+ if (z) {
3464
+ s.value = z.replace("无法切换", "无法应用卷帘");
3465
+ return;
3466
+ }
3467
+ const h = n(), S = h == null ? void 0 : h.map, Y = ((m = (Z = (k = S == null ? void 0 : S.basemap) == null ? void 0 : k.baseLayers) == null ? void 0 : Z.toArray) == null ? void 0 : m.call(Z)) ?? [];
3468
+ if (!h || !S || Y.length === 0) {
3469
+ s.value = "当前底图不可用,无法应用卷帘";
3470
+ return;
3471
+ }
3472
+ P(), Qt("basemap");
3473
+ const F = wl(w, u.value);
3474
+ F.id = `swipe-leading-${w}`, F.title = ((i = Je.find((v) => v.value === w)) == null ? void 0 : i.label) ?? F.title, S.add(F, 0), D.value = F;
3475
+ const G = new Et({
3476
+ view: h,
3477
+ leadingLayers: [F],
3478
+ trailingLayers: Y,
3479
+ position: 50
3480
+ });
3481
+ h.ui.add(G), c.value = G, s.value = "", d.value = !1;
3482
+ }, x = () => {
3483
+ P(), s.value = "", d.value = !1, W();
3484
+ };
3485
+ return fe(() => {
3486
+ M = ke(() => r.value, W), p = Zt("basemap", P);
3487
+ }), me(() => {
3488
+ M == null || M(), M = null, p == null || p(), p = null, P();
3489
+ }), t({
3490
+ destroySwipe: P
3491
+ }), (w, z) => (g(), N("div", _o, [
3492
+ d.value ? (g(), re(Ee, {
3493
+ key: 0,
3494
+ title: "卷帘分析",
3495
+ width: 300,
3496
+ anchor: "start",
3497
+ onClose: I
3498
+ }, {
3499
+ default: Ie(() => [
3500
+ a("div", $o, [
3501
+ z[1] || (z[1] = a("span", { class: "swipe-compare-label" }, "选择图层", -1)),
3502
+ a("div", {
3503
+ ref_key: "swipeSelectRef",
3504
+ ref: r,
3505
+ class: "swipe-unit-select"
3506
+ }, [
3507
+ a("button", {
3508
+ type: "button",
3509
+ class: ae(["swipe-unit-trigger", { "is-open": b.value }]),
3510
+ "aria-label": "卷帘对比图层",
3511
+ "aria-haspopup": "listbox",
3512
+ "aria-expanded": b.value,
3513
+ onClick: te(R, ["stop"]),
3514
+ onKeydown: Ae(W, ["esc"])
3515
+ }, [
3516
+ a("span", null, U(B.value), 1),
3517
+ z[0] || (z[0] = a("span", {
3518
+ class: "swipe-unit-arrow",
3519
+ "aria-hidden": "true"
3520
+ }, null, -1))
3521
+ ], 42, es),
3522
+ b.value ? (g(), N("ul", ts, [
3523
+ (g(!0), N(ce, null, de(o.value, (h) => (g(), N("li", {
3524
+ key: h.value
3525
+ }, [
3526
+ a("button", {
3527
+ type: "button",
3528
+ role: "option",
3529
+ "aria-selected": A.value === h.value,
3530
+ onClick: te((S) => E(h.value), ["stop"])
3531
+ }, U(h.label), 9, ls)
3532
+ ]))), 128))
3533
+ ])) : _("", !0)
3534
+ ], 512)
3535
+ ]),
3536
+ a("div", { class: "swipe-compare-actions" }, [
3537
+ a("button", {
3538
+ type: "button",
3539
+ class: "swipe-compare-button is-primary",
3540
+ onClick: J
3541
+ }, " 应用卷帘 "),
3542
+ a("button", {
3543
+ type: "button",
3544
+ class: "swipe-compare-button is-muted",
3545
+ onClick: x
3546
+ }, " 取消应用 ")
3547
+ ]),
3548
+ s.value ? (g(), N("p", as, U(s.value), 1)) : _("", !0)
3549
+ ]),
3550
+ _: 1
3551
+ })) : _("", !0),
3552
+ a("button", {
177
3553
  type: "button",
178
- onClick: M
179
- }, "清绘")
3554
+ class: ae(["swipe-compare-trigger", { "is-active": d.value || y.value }]),
3555
+ style: Ye({ backgroundImage: `url(${se(qo)})` }),
3556
+ "aria-label": "卷帘分析",
3557
+ onClick: H
3558
+ }, " 卷帘 ", 6)
180
3559
  ]));
181
3560
  }
182
- }, G = /* @__PURE__ */ h(E, [["__scopeId", "data-v-37cacb1d"]]), Z = {
183
- install(a) {
184
- a.component("ArcgisMap", R), a.component("BasemapSwitch", q), a.component("MapToolbar", G);
3561
+ }), os = /* @__PURE__ */ ve(ns, [["__scopeId", "data-v-b6e565eb"]]), Ps = [
3562
+ "fullExtent",
3563
+ "fullscreen",
3564
+ "zoomIn",
3565
+ "zoomOut",
3566
+ "coordinateLocate",
3567
+ "distanceMeasure",
3568
+ "areaMeasure",
3569
+ "layerManage",
3570
+ "layerSwipe",
3571
+ "mapLabel",
3572
+ "conditionQuery"
3573
+ ], Ws = {
3574
+ install(e) {
3575
+ e.component("ArcgisMap", Cl), e.component("BasemapSwitch", Pl), e.component("MapLegend", ba), e.component("MapScaleBar", Ia), e.component("MapToolbar", Ho), e.component("SwipeCompare", os);
185
3576
  }
186
3577
  };
187
3578
  export {
188
- R as ArcgisMap,
189
- q as BasemapSwitch,
190
- G as MapToolbar,
191
- Z as default
3579
+ Cl as ArcgisMap,
3580
+ Mt as BASEMAP_KEYS_KEY,
3581
+ Je as BASEMAP_OPTIONS,
3582
+ he as BUSINESS_LAYER_ID_PREFIX,
3583
+ Pl as BasemapSwitch,
3584
+ _l as CGCS2000_ALBERS_WKT,
3585
+ Ps as DEFAULT_TOOLBAR_TOOLS,
3586
+ ba as MapLegend,
3587
+ Ia as MapScaleBar,
3588
+ Ho as MapToolbar,
3589
+ ql as SYSTEM_COORDINATE_ALBERS_CODE,
3590
+ os as SwipeCompare,
3591
+ Hl as applyBusinessLayerLabels,
3592
+ kl as applyPanBoundsConstraint,
3593
+ zl as buildLabelExpression,
3594
+ jl as buildLabelExpressionFromTemplate,
3595
+ la as checkSpatialReferenceMatch,
3596
+ Qs as clearPendingBusinessLayers,
3597
+ Ul as createBusinessLabelClass,
3598
+ Ws as default,
3599
+ Fs as destroyAllSwipes,
3600
+ Qt as destroyOtherSwipe,
3601
+ aa as formatSpatialReferenceLabel,
3602
+ en as getPendingBusinessLayerOptions,
3603
+ tn as getPendingBusinessLayers,
3604
+ He as getSpatialReferenceMismatch,
3605
+ Bs as getSpatialReferenceMismatches,
3606
+ Ll as goToFullExtent,
3607
+ va as loadBusinessLayers,
3608
+ an as materializePendingBusinessLayer,
3609
+ Ot as mergeOutFields,
3610
+ $l as normalizeWkt,
3611
+ Il as provideBasemapKeys,
3612
+ ht as registerPortalToken,
3613
+ fa as reorderBusinessLayers,
3614
+ ea as resolveExpectedSpatialReference,
3615
+ Kl as resolveLabelExpression,
3616
+ ia as resolveLayerVisible,
3617
+ Zs as setPendingBusinessLayers,
3618
+ Yt as shouldUseMapImageLayer,
3619
+ Gs as startPortalTokenRenewal,
3620
+ ln as subscribePendingBusinessLayers,
3621
+ na as subscribeSpatialReferenceMismatches,
3622
+ Qe as toBusinessLayerId,
3623
+ Ys as toFeatureLayerProps,
3624
+ Gt as toLayerProps,
3625
+ lt as useBasemapKeys
192
3626
  };