@soonspacejs/plugin-tiles 2.15.14 → 2.15.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,25 +1,25 @@
1
- import R from "soonspacejs";
2
- import { TilesRenderer as T } from "um-3d-tiles-renderer";
3
- import { GLTFLoader as oe } from "three/examples/jsm/loaders/GLTFLoader.js";
4
- import { MathUtils as f, MeshBasicMaterial as le, Color as L, PerspectiveCamera as q, Matrix4 as b, Vector3 as ve, Box3 as _e, Sphere as de, MeshStandardMaterial as Oe, ShaderMaterial as V } from "three";
5
- import { TilesFadePlugin as z, UpdateOnChangePlugin as B, QuantizedMeshPlugin as U, ImageOverlayPlugin as he, XYZTilesOverlay as ue, ReorientationPlugin as j, StyledGeoJSONOverlay as Z, CesiumIonOverlay as Me, TMSTilesOverlay as Se, UrlTemplateTilesOverlay as we, WMSTilesOverlay as Ce, WMTSCapabilitiesLoader as be, WMTSTilesOverlay as Te, CesiumIonAuthPlugin as ce } from "um-3d-tiles-renderer/plugins";
6
- import { CesiumGroundTextPrimitive as k, CesiumGroundPolylinePrimitive as I, CesiumGroundPolygonPrimitive as K, CesiumGroundCirclePrimitive as ee, CesiumGroundPointPrimitive as Pe, initializeApproximateTerrainHeights as xe, updateTerrainLogDepthUniforms as ke, CesiumGlobeDepth as Ee, CESIUM_GROUND_NON_PICKABLE_LAYER as Ie } from "cesium-to-three/ground";
7
- import { createFineArrow as W, createCurvedArrow as pe, createSwallowtailAttackArrow as ge, createAttackArrow as fe, createAssaultDirectionArrow as ye } from "cesium-to-three/arrow";
8
- class Re {
1
+ import D from "soonspacejs";
2
+ import { TilesRenderer as I } from "um-3d-tiles-renderer";
3
+ import { GLTFLoader as Me } from "three/examples/jsm/loaders/GLTFLoader.js";
4
+ import { MathUtils as p, MeshBasicMaterial as Oe, Color as W, Vector3 as a, Matrix4 as g, Quaternion as Se, TextureLoader as Ne, PerspectiveCamera as ae, Box3 as Fe, Sphere as Ce, MeshStandardMaterial as Ae, ShaderMaterial as le } from "three";
5
+ import { TilesFadePlugin as ee, UpdateOnChangePlugin as te, QuantizedMeshPlugin as H, ImageOverlayPlugin as be, XYZTilesOverlay as ke, ReorientationPlugin as re, StyledGeoJSONOverlay as ce, CesiumIonOverlay as Le, TMSTilesOverlay as De, UrlTemplateTilesOverlay as Ge, WMSTilesOverlay as Ue, WMTSCapabilitiesLoader as We, WMTSTilesOverlay as Je, CesiumIonAuthPlugin as xe } from "um-3d-tiles-renderer/plugins";
6
+ import { CesiumGroundTextPrimitive as N, CesiumGroundPolylinePrimitive as L, CesiumGroundPointPrimitive as A, CesiumGroundPolygonPrimitive as he, CesiumGroundCirclePrimitive as de, initializeApproximateTerrainHeights as ze, updateTerrainLogDepthUniforms as Be, CesiumGlobeDepth as $e, CESIUM_GROUND_NON_PICKABLE_LAYER as je } from "cesium-to-three/ground";
7
+ import { createFineArrow as Q, createCurvedArrow as Te, createSwallowtailAttackArrow as Pe, createAttackArrow as Ie, createAssaultDirectionArrow as Ee } from "cesium-to-three/arrow";
8
+ class He {
9
9
  constructor(e) {
10
10
  this.parser = e, this.name = "KHR_texture_basisu_patch";
11
11
  }
12
12
  loadTexture(e) {
13
- const t = this.parser, r = t.json, a = r.textures[e].source, n = r.images[a];
14
- if (!n || n.mimeType !== "image/ktx2")
13
+ const t = this.parser, r = t.json, n = r.textures[e].source, o = r.images[n];
14
+ if (!o || o.mimeType !== "image/ktx2")
15
15
  return null;
16
- const o = t.options.ktx2Loader;
17
- if (!o)
18
- throw new Error(`${R.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
19
- return t.loadTextureImage(e, a, o);
16
+ const l = t.options.ktx2Loader;
17
+ if (!l)
18
+ throw new Error(`${D.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
19
+ return t.loadTextureImage(e, n, l);
20
20
  }
21
21
  }
22
- class Mt {
22
+ class rr {
23
23
  constructor(e) {
24
24
  this.ssp = e;
25
25
  const { controls: t, viewport: r } = e;
@@ -46,21 +46,21 @@ class Mt {
46
46
  downloadQueue = null;
47
47
  async loadTiles(e) {
48
48
  if (this.tilesMap.has(e)) {
49
- R.utils.warn(`${e} already loaded`);
49
+ D.utils.warn(`${e} already loaded`);
50
50
  return;
51
51
  }
52
- const { ssp: t, ssp: { viewport: r } } = this, i = new T(e);
52
+ const { ssp: t, ssp: { viewport: r } } = this, i = new I(e);
53
53
  this.lruCache === null ? this.lruCache = i.lruCache : i.lruCache = this.lruCache, this.parseQueue === null ? this.parseQueue = i.parseQueue : i.parseQueue = this.parseQueue, this.downloadQueue === null ? this.downloadQueue = i.downloadQueue : i.downloadQueue = this.downloadQueue;
54
- const a = new oe(i.manager);
55
- a.register((h) => new Re(h));
56
- const { dracoLoader: n, ktx2Loader: o, meshoptDecoder: d } = t.manager.store.modelManager.gltfLoader;
57
- n && a.setDRACOLoader(n), o && a.setKTX2Loader(o), d && a.setMeshoptDecoder(d), i.manager.addHandler(/\.gltf$/, a), this.tilesMap.set(e, i), i.setCamera(this._tilesCamera), i.setResolutionFromRenderer(this._tilesCamera, r.renderer), i.lruCache.maxSize = 600, i.lruCache.minSize = 300, i.lruCache.unloadPercent = 0.8, t.addObject(i.group);
58
- const l = () => {
54
+ const n = new Me(i.manager);
55
+ n.register((d) => new He(d));
56
+ const { dracoLoader: o, ktx2Loader: l, meshoptDecoder: h } = t.manager.store.modelManager.gltfLoader;
57
+ o && n.setDRACOLoader(o), l && n.setKTX2Loader(l), h && n.setMeshoptDecoder(h), i.manager.addHandler(/\.gltf$/, n), this.tilesMap.set(e, i), i.setCamera(this._tilesCamera), i.setResolutionFromRenderer(this._tilesCamera, r.renderer), i.lruCache.maxSize = 600, i.lruCache.minSize = 300, i.lruCache.unloadPercent = 0.8, t.addObject(i.group);
58
+ const c = () => {
59
59
  this.cameraTransitionStart || (this.needsUpdate = !0, t.render());
60
60
  };
61
- return i.addEventListener("load-model", l), new Promise((h) => {
61
+ return i.addEventListener("load-model", c), new Promise((d) => {
62
62
  i.addEventListener("load-tile-set", () => {
63
- l(), h(i);
63
+ c(), d(i);
64
64
  });
65
65
  });
66
66
  }
@@ -69,31 +69,31 @@ class Mt {
69
69
  return t ? (t.dispose(), this.tilesMap.delete(e), this.ssp.removeObject(t.group), !0) : !1;
70
70
  }
71
71
  }
72
- let Ne = class {
72
+ let Qe = class {
73
73
  priority = -999;
74
74
  processTileModel(e) {
75
75
  e.traverse((t) => {
76
- t.material && (t.material = new le());
76
+ t.material && (t.material = new Oe());
77
77
  });
78
78
  }
79
79
  };
80
- const Ae = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/";
81
- class wt {
80
+ const Ye = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/";
81
+ class sr {
82
82
  constructor(e) {
83
- this.ssp = e, this.tiles = new T(Ae), this.tiles.fetchData = async (t, r) => {
83
+ this.ssp = e, this.tiles = new I(Ye), this.tiles.fetchData = async (t, r) => {
84
84
  if (/layer\.json$/.test(t)) {
85
- const i = await fetch(t, r).then((a) => a.json());
85
+ const i = await fetch(t, r).then((n) => n.json());
86
86
  return i.metadataAvailability = -1, new Response(JSON.stringify(i));
87
87
  }
88
88
  return fetch(t, r);
89
- }, this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), this.quantizedPlugin = new U({}), this.customMaterialPlugin = new Ne(), this.imageOverlayPlugin = new he({
89
+ }, this.tilesFadePlugin = new ee({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new te(), this.quantizedPlugin = new H({}), this.customMaterialPlugin = new Qe(), this.imageOverlayPlugin = new be({
90
90
  renderer: e.viewport.renderer,
91
91
  overlays: [
92
- new ue({
92
+ new ke({
93
93
  url: "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
94
94
  })
95
95
  ]
96
- }), this.reorientationPlugin = new j({
96
+ }), this.reorientationPlugin = new re({
97
97
  lon: 120,
98
98
  lat: 30,
99
99
  height: 0.1
@@ -124,16 +124,16 @@ class wt {
124
124
  }
125
125
  invalidate(e, t, r) {
126
126
  const i = () => {
127
- const n = f.degToRad(t), o = f.degToRad(e);
127
+ const o = p.degToRad(t), l = p.degToRad(e);
128
128
  this.reorientationPlugin.transformLatLonHeightToOrigin(
129
- n,
130
129
  o,
130
+ l,
131
131
  r
132
- ), this.ssp.render(), a();
133
- }, a = () => {
132
+ ), this.ssp.render(), n();
133
+ }, n = () => {
134
134
  this.tiles.removeEventListener("load-root-tileset", i), this.loedTilesSets.delete(i);
135
135
  };
136
- return this.tiles.addEventListener("load-root-tileset", i), this.loedTilesSets.add(i), this.tiles.root && i(), a;
136
+ return this.tiles.addEventListener("load-root-tileset", i), this.loedTilesSets.add(i), this.tiles.root && i(), n;
137
137
  }
138
138
  dispose() {
139
139
  this.disable(), this.loedTilesSets.forEach(
@@ -141,7 +141,7 @@ class wt {
141
141
  ), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
142
142
  }
143
143
  }
144
- class Le {
144
+ class Xe {
145
145
  // 使用较低的 priority 确保在 ImageOverlayPlugin 之后执行
146
146
  // ImageOverlayPlugin 默认 priority 是 -1
147
147
  priority = -999;
@@ -152,7 +152,7 @@ class Le {
152
152
  */
153
153
  processTileModel(e) {
154
154
  e.traverse((t) => {
155
- t.material && (t.material = new le());
155
+ t.material && (t.material = new Oe());
156
156
  });
157
157
  }
158
158
  /**
@@ -184,8 +184,8 @@ class Le {
184
184
  e.needsUpdate = !0;
185
185
  }
186
186
  }
187
- var u = /* @__PURE__ */ ((s) => (s.GEOJSON = "geojson", s.CESIUM_ION = "cesiumIon", s.TMS = "tms", s.XYZ = "xyz", s.WMS = "wms", s.WMTS = "wmts", s.URL_TEMPLATE = "urlTemplate", s.PLOT = "plot", s))(u || {}), M = /* @__PURE__ */ ((s) => (s.QUANTIZED_MESH = "quantizedMesh", s.CESIUM_ION = "cesiumIon", s))(M || {});
188
- class N {
187
+ var u = /* @__PURE__ */ ((s) => (s.GEOJSON = "geojson", s.CESIUM_ION = "cesiumIon", s.TMS = "tms", s.XYZ = "xyz", s.WMS = "wms", s.WMTS = "wmts", s.URL_TEMPLATE = "urlTemplate", s.PLOT = "plot", s))(u || {}), k = /* @__PURE__ */ ((s) => (s.QUANTIZED_MESH = "quantizedMesh", s.CESIUM_ION = "cesiumIon", s))(k || {});
188
+ class G {
189
189
  constructor(e, t) {
190
190
  this.imageOverlayPlugin = e, this.resourceManager = t;
191
191
  }
@@ -209,18 +209,18 @@ class N {
209
209
  defaultStyle: this._buildGeoJSONDefaultStyle(e, r),
210
210
  ...this._getGeoJSONModeFlags(r)
211
211
  };
212
- e.color !== void 0 && (i.color = new L(e.color));
213
- const a = new Z(i);
214
- return t.addOverlay(a, e.order), this._instances.set(e.id, {
212
+ e.color !== void 0 && (i.color = new W(e.color));
213
+ const n = new ce(i);
214
+ return t.addOverlay(n, e.order), this._instances.set(e.id, {
215
215
  id: e.id,
216
216
  type: e.type,
217
- instance: a,
217
+ instance: n,
218
218
  options: { ...e, mode: r }
219
219
  }), this.resourceManager?.addOverlay({
220
220
  id: e.id,
221
221
  type: e.type,
222
222
  options: e
223
- }), a;
223
+ }), n;
224
224
  }
225
225
  updateGeoJSONColor(e, t) {
226
226
  const r = this._instances.get(e);
@@ -231,62 +231,62 @@ class N {
231
231
  updateGeoJSONDefaultStyle(e, t) {
232
232
  const r = this._instances.get(e);
233
233
  if (!r || r.type !== u.GEOJSON) return !1;
234
- const i = r.instance, a = r.options, n = {
235
- ...a.defaultStyle || {},
234
+ const i = r.instance, n = r.options, o = {
235
+ ...n.defaultStyle || {},
236
236
  ...t
237
- }, o = {
238
- ...a,
239
- defaultStyle: n
237
+ }, l = {
238
+ ...n,
239
+ defaultStyle: o
240
240
  };
241
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle: n }), !0;
241
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle: o }), !0;
242
242
  }
243
243
  updateGeoJSONStrokeStyle(e, t) {
244
244
  const r = this._instances.get(e);
245
245
  if (!r || r.type !== u.GEOJSON) return !1;
246
- const i = r.instance, a = r.options, n = {
247
- ...a.defaultStyle || {},
246
+ const i = r.instance, n = r.options, o = {
247
+ ...n.defaultStyle || {},
248
248
  strokeStyle: t
249
- }, o = {
250
- ...a,
249
+ }, l = {
250
+ ...n,
251
251
  strokeStyle: t,
252
- defaultStyle: n
252
+ defaultStyle: o
253
253
  };
254
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle: n }), !0;
254
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle: o }), !0;
255
255
  }
256
256
  updateGeoJSONStrokeWidth(e, t) {
257
257
  const r = this._instances.get(e);
258
258
  if (!r || r.type !== u.GEOJSON) return !1;
259
- const i = r.instance, a = r.options, n = {
260
- ...a.defaultStyle || {},
259
+ const i = r.instance, n = r.options, o = {
260
+ ...n.defaultStyle || {},
261
261
  strokeWidth: t
262
- }, o = {
263
- ...a,
262
+ }, l = {
263
+ ...n,
264
264
  strokeWidth: t,
265
- defaultStyle: n
265
+ defaultStyle: o
266
266
  };
267
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle: n }), !0;
267
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle: o }), !0;
268
268
  }
269
269
  updateGeoJSONFillStyle(e, t) {
270
270
  const r = this._instances.get(e);
271
271
  if (!r || r.type !== u.GEOJSON) return !1;
272
- const i = r.instance, a = r.options, n = {
273
- ...a.defaultStyle || {},
272
+ const i = r.instance, n = r.options, o = {
273
+ ...n.defaultStyle || {},
274
274
  fillStyle: t
275
- }, o = {
276
- ...a,
275
+ }, l = {
276
+ ...n,
277
277
  fillStyle: t,
278
- defaultStyle: n
278
+ defaultStyle: o
279
279
  };
280
- return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle: n }), !0;
280
+ return i.defaultStyle = this._buildGeoJSONDefaultStyle(l, l.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle: o }), !0;
281
281
  }
282
282
  updateGeoJSONMode(e, t) {
283
283
  const r = this._instances.get(e);
284
284
  if (!r || r.type !== u.GEOJSON) return !1;
285
- const i = r.instance, a = {
285
+ const i = r.instance, n = {
286
286
  ...r.options,
287
287
  mode: t
288
- }, n = this._getGeoJSONModeFlags(t);
289
- return i.alphaInvert = n.alphaInvert, i.alphaMask = n.alphaMask, i.defaultStyle = this._buildGeoJSONDefaultStyle(a, t), i.requestUpdate?.(), this._updateOverlayOptions(e, { mode: t }), !0;
288
+ }, o = this._getGeoJSONModeFlags(t);
289
+ return i.alphaInvert = o.alphaInvert, i.alphaMask = o.alphaMask, i.defaultStyle = this._buildGeoJSONDefaultStyle(n, t), i.requestUpdate?.(), this._updateOverlayOptions(e, { mode: t }), !0;
290
290
  }
291
291
  setGeoJSON(e, t) {
292
292
  const r = this._instances.get(e);
@@ -301,8 +301,8 @@ class N {
301
301
  setMergedGeoJSON(e, t, r) {
302
302
  const i = this._instances.get(e);
303
303
  if (!i || i.type !== u.GEOJSON) return null;
304
- const n = i.instance.setMergedGeoJSON(t, r);
305
- return this._updateOverlayOptions(e, { geojson: n }), n;
304
+ const o = i.instance.setMergedGeoJSON(t, r);
305
+ return this._updateOverlayOptions(e, { geojson: o }), o;
306
306
  }
307
307
  getGeoJSONFeatureById(e, t) {
308
308
  const r = this._instances.get(e);
@@ -328,7 +328,7 @@ class N {
328
328
  addCesiumIonOverlay(e) {
329
329
  const t = this._getImageOverlayPluginForAdd(e.id);
330
330
  if (!t) return null;
331
- const r = new Me({
331
+ const r = new Le({
332
332
  assetId: e.assetId,
333
333
  apiToken: e.apiToken,
334
334
  autoRefreshToken: e.autoRefreshToken ?? !0,
@@ -350,7 +350,7 @@ class N {
350
350
  addTMSOverlay(e) {
351
351
  const t = this._getImageOverlayPluginForAdd(e.id);
352
352
  if (!t) return null;
353
- const r = new Se({
353
+ const r = new De({
354
354
  url: e.url,
355
355
  color: typeof e.color == "number" ? e.color : 16777215,
356
356
  opacity: e.opacity ?? 1
@@ -370,7 +370,7 @@ class N {
370
370
  addXYZOverlay(e) {
371
371
  const t = this._getImageOverlayPluginForAdd(e.id);
372
372
  if (!t) return null;
373
- const r = new ue({
373
+ const r = new ke({
374
374
  url: e.url,
375
375
  color: typeof e.color == "number" ? e.color : 16777215,
376
376
  opacity: e.opacity ?? 1
@@ -421,7 +421,7 @@ class N {
421
421
  addUrlTemplateOverlay(e) {
422
422
  const t = this._getImageOverlayPluginForAdd(e.id);
423
423
  if (!t) return null;
424
- const r = new we({
424
+ const r = new Ge({
425
425
  url: e.url,
426
426
  subdomains: e.subdomains,
427
427
  levels: e.levels,
@@ -453,14 +453,14 @@ class N {
453
453
  crs: e.crs || "EPSG:4326",
454
454
  format: e.format || "image/png",
455
455
  tileDimension: e.tileDimension || 256
456
- }, i = new Ce({
456
+ }, i = new Ue({
457
457
  url: e.url,
458
458
  layer: r.layer,
459
459
  crs: r.crs,
460
460
  format: r.format,
461
461
  tileDimension: r.tileDimension,
462
462
  styles: r.styles,
463
- color: new L(typeof e.color == "number" ? e.color : 16777215),
463
+ color: new W(typeof e.color == "number" ? e.color : 16777215),
464
464
  opacity: e.opacity ?? 1
465
465
  });
466
466
  return t.addOverlay(i, e.order), this._instances.set(e.id, {
@@ -478,31 +478,31 @@ class N {
478
478
  async addWMTSOverlay(e) {
479
479
  const t = this._getImageOverlayPluginForAdd(e.id);
480
480
  if (!t) return null;
481
- const r = await new be().loadAsync(e.url), i = ["EPSG:4326", "EPSG:3857"];
482
- let a = e.layer || "";
483
- r.layers.find((o) => o.identifier === a) || (a = r.layers.find(
484
- (o) => o?.tileMatrixSets?.some((d) => i.includes(d.supportedCRS))
481
+ const r = await new We().loadAsync(e.url), i = ["EPSG:4326", "EPSG:3857"];
482
+ let n = e.layer || "";
483
+ r.layers.find((l) => l.identifier === n) || (n = r.layers.find(
484
+ (l) => l?.tileMatrixSets?.some((h) => i.includes(h.supportedCRS))
485
485
  )?.identifier || r.layers[0].identifier);
486
- const n = new Te({
486
+ const o = new Je({
487
487
  capabilities: r,
488
- layer: a,
488
+ layer: n,
489
489
  dimensions: e.dimensions || null,
490
490
  style: e.style || void 0,
491
491
  tileMatrixSet: e.tileMatrixSet || null,
492
492
  planar: !1,
493
- color: new L(typeof e.color == "number" ? e.color : 16777215),
493
+ color: new W(typeof e.color == "number" ? e.color : 16777215),
494
494
  opacity: e.opacity ?? 1
495
495
  });
496
- return t.addOverlay(n, e.order), this._instances.set(e.id, {
496
+ return t.addOverlay(o, e.order), this._instances.set(e.id, {
497
497
  id: e.id,
498
498
  type: e.type,
499
- instance: n,
499
+ instance: o,
500
500
  options: { ...e }
501
501
  }), this.resourceManager?.addOverlay({
502
502
  id: e.id,
503
503
  type: e.type,
504
504
  options: e
505
- }), n;
505
+ }), o;
506
506
  }
507
507
  // =============== 通用方法 ===============
508
508
  /**
@@ -570,8 +570,8 @@ class N {
570
570
  if (!t) return !1;
571
571
  const r = this.imageOverlayPlugin.overlayInfo;
572
572
  let i = 0;
573
- return r.forEach((a) => {
574
- a.order > i && (i = a.order);
573
+ return r.forEach((n) => {
574
+ n.order > i && (i = n.order);
575
575
  }), this.imageOverlayPlugin.setOverlayOrder(t.instance, i + 1), this._updateOverlayOptions(e, { order: i + 1 }), !0;
576
576
  }
577
577
  /**
@@ -583,8 +583,8 @@ class N {
583
583
  if (!t) return !1;
584
584
  const r = this.imageOverlayPlugin.overlayInfo;
585
585
  let i = 1 / 0;
586
- return r.forEach((a) => {
587
- a.order < i && (i = a.order);
586
+ return r.forEach((n) => {
587
+ n.order < i && (i = n.order);
588
588
  }), this.imageOverlayPlugin.setOverlayOrder(t.instance, i - 1), this._updateOverlayOptions(e, { order: i - 1 }), !0;
589
589
  }
590
590
  // =============== 资源恢复 ===============
@@ -668,7 +668,7 @@ class N {
668
668
  };
669
669
  }
670
670
  _getGeoJSONUtilityOverlay() {
671
- return this._geoJSONUtilityOverlay || (this._geoJSONUtilityOverlay = new Z({})), this._geoJSONUtilityOverlay;
671
+ return this._geoJSONUtilityOverlay || (this._geoJSONUtilityOverlay = new ce({})), this._geoJSONUtilityOverlay;
672
672
  }
673
673
  _updateOverlayOptions(e, t) {
674
674
  const r = this._instances.get(e);
@@ -678,7 +678,7 @@ class N {
678
678
  }), this.resourceManager?.updateOverlay(e, t);
679
679
  }
680
680
  _getImageOverlayPluginForAdd(e) {
681
- return this.imageOverlayPlugin ? this._instances.has(e) ? (console.warn(`OverlayManager: Overlay "${e}" already exists`), null) : this._instances.size >= N.MAX_OVERLAY_INSTANCES ? (console.error(`OverlayManager: Cannot add overlay "${e}" because the maximum number of overlays is ${N.MAX_OVERLAY_INSTANCES}`), null) : this.imageOverlayPlugin : null;
681
+ return this.imageOverlayPlugin ? this._instances.has(e) ? (console.warn(`OverlayManager: Overlay "${e}" already exists`), null) : this._instances.size >= G.MAX_OVERLAY_INSTANCES ? (console.error(`OverlayManager: Cannot add overlay "${e}" because the maximum number of overlays is ${G.MAX_OVERLAY_INSTANCES}`), null) : this.imageOverlayPlugin : null;
682
682
  }
683
683
  /**
684
684
  * 获取本地影像数量(不依赖 ResourceManager)
@@ -704,7 +704,7 @@ class N {
704
704
  this.disposeInstances(), this.resourceManager?.clear();
705
705
  }
706
706
  }
707
- class De {
707
+ class Ve {
708
708
  /** Overlay 资源配置 */
709
709
  _overlays = /* @__PURE__ */ new Map();
710
710
  // =============== Overlay 资源管理 ===============
@@ -794,7 +794,7 @@ class De {
794
794
  e.overlays && (this._overlays.clear(), e.overlays.forEach((t) => this._overlays.set(t.id, { ...t })));
795
795
  }
796
796
  }
797
- class Ge {
797
+ class qe {
798
798
  /** 地形配置映射表 */
799
799
  _terrains = /* @__PURE__ */ new Map();
800
800
  /** 当前激活的地形 ID */
@@ -883,8 +883,8 @@ class Ge {
883
883
  this.clear();
884
884
  }
885
885
  }
886
- let Fe = 1;
887
- class O {
886
+ let Ze = 1;
887
+ class b {
888
888
  /** 自增字符串 id('1' / '2' / '3' ...) */
889
889
  id;
890
890
  /**
@@ -898,7 +898,7 @@ class O {
898
898
  */
899
899
  options;
900
900
  constructor(e) {
901
- this.id = String(Fe++), this.category = "", this.options = { ...e }, this.options.points && (this.options.points = this.options.points.map(
901
+ this.id = String(Ze++), this.category = "", this.options = { ...e }, this.options.points && (this.options.points = this.options.points.map(
902
902
  (t) => [t[0], t[1]]
903
903
  ));
904
904
  }
@@ -945,7 +945,7 @@ class O {
945
945
  return this.options.points || [];
946
946
  }
947
947
  }
948
- class Je extends O {
948
+ class Ke extends b {
949
949
  category = "point";
950
950
  constructor(e) {
951
951
  super(e);
@@ -964,7 +964,7 @@ class Je extends O {
964
964
  return this.getCenterPoints();
965
965
  }
966
966
  }
967
- class Ue extends O {
967
+ class et extends b {
968
968
  category = "line";
969
969
  constructor(e) {
970
970
  super(e);
@@ -974,7 +974,7 @@ class Ue extends O {
974
974
  this.options = { ...this.options, ...e };
975
975
  }
976
976
  }
977
- class We extends O {
977
+ class tt extends b {
978
978
  category = "polygon";
979
979
  constructor(e) {
980
980
  super(e);
@@ -984,7 +984,7 @@ class We extends O {
984
984
  this.options = { ...this.options, ...e };
985
985
  }
986
986
  }
987
- class $e extends O {
987
+ class rt extends b {
988
988
  category = "rectangle";
989
989
  constructor(e) {
990
990
  super(e);
@@ -994,8 +994,8 @@ class $e extends O {
994
994
  this.options = { ...this.options, ...e };
995
995
  }
996
996
  }
997
- const ze = f.DEG2RAD, te = 111320;
998
- class Be extends O {
997
+ const it = p.DEG2RAD, ue = 111320;
998
+ class st extends b {
999
999
  category = "sector";
1000
1000
  constructor(e) {
1001
1001
  super(e);
@@ -1008,14 +1008,14 @@ class Be extends O {
1008
1008
  getExtentPoints() {
1009
1009
  const e = this.options.points;
1010
1010
  if (!e || e.length === 0) return [];
1011
- const t = e[0][0], r = e[0][1], i = this.options.radius || 0, a = i / (te * Math.cos(r * ze)), n = i / te;
1011
+ const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (ue * Math.cos(r * it)), o = i / ue;
1012
1012
  return [
1013
- [t - a, r - n],
1014
- [t + a, r + n]
1013
+ [t - n, r - o],
1014
+ [t + n, r + o]
1015
1015
  ];
1016
1016
  }
1017
1017
  }
1018
- class je extends O {
1018
+ class nt extends b {
1019
1019
  category = "arrow";
1020
1020
  /** generateCoords() 填充的闭合多边形顶点;初始为空 */
1021
1021
  generatedCoords = [];
@@ -1043,22 +1043,22 @@ class je extends O {
1043
1043
  return this.generatedCoords = [], this.generatedCoords;
1044
1044
  switch (this.options.arrowType) {
1045
1045
  case "fine":
1046
- this.generatedCoords = W(e[0], e[1]);
1046
+ this.generatedCoords = Q(e[0], e[1]);
1047
1047
  break;
1048
1048
  case "assaultDirection":
1049
- this.generatedCoords = ye(e[0], e[1]);
1049
+ this.generatedCoords = Ee(e[0], e[1]);
1050
1050
  break;
1051
1051
  case "attack":
1052
- this.generatedCoords = fe(e);
1052
+ this.generatedCoords = Ie(e);
1053
1053
  break;
1054
1054
  case "swallowtailAttack":
1055
- this.generatedCoords = ge(e);
1055
+ this.generatedCoords = Pe(e);
1056
1056
  break;
1057
1057
  case "curved":
1058
- this.generatedCoords = pe(e);
1058
+ this.generatedCoords = Te(e);
1059
1059
  break;
1060
1060
  default:
1061
- this.generatedCoords = W(e[0], e[e.length - 1]);
1061
+ this.generatedCoords = Q(e[0], e[e.length - 1]);
1062
1062
  break;
1063
1063
  }
1064
1064
  return this.generatedCoords;
@@ -1085,7 +1085,7 @@ class je extends O {
1085
1085
  };
1086
1086
  }
1087
1087
  }
1088
- class Qe extends O {
1088
+ class ot extends b {
1089
1089
  category = "text";
1090
1090
  constructor(e) {
1091
1091
  super(e);
@@ -1104,8 +1104,8 @@ class Qe extends O {
1104
1104
  return this.getCenterPoints();
1105
1105
  }
1106
1106
  }
1107
- const He = f.DEG2RAD, re = 111320;
1108
- class Xe extends O {
1107
+ const at = p.DEG2RAD, ge = 111320;
1108
+ class lt extends b {
1109
1109
  category = "circle";
1110
1110
  constructor(e) {
1111
1111
  super(e);
@@ -1118,27 +1118,614 @@ class Xe extends O {
1118
1118
  getExtentPoints() {
1119
1119
  const e = this.options.points;
1120
1120
  if (!e || e.length === 0) return [];
1121
- const t = e[0][0], r = e[0][1], i = this.options.radius || 0, a = i / (re * Math.cos(r * He)), n = i / re;
1121
+ const t = e[0][0], r = e[0][1], i = this.options.radius || 0, n = i / (ge * Math.cos(r * at)), o = i / ge;
1122
1122
  return [
1123
- [t - a, r - n],
1124
- [t + a, r + n]
1123
+ [t - n, r - o],
1124
+ [t + n, r + o]
1125
1125
  ];
1126
1126
  }
1127
1127
  }
1128
- const Ye = 3, qe = 1e3;
1129
- function Ve(s) {
1128
+ const ct = 3, ht = 1e3;
1129
+ function dt(s) {
1130
1130
  return Number.isFinite(s) ? Math.max(Math.round(s), 0) : 0;
1131
1131
  }
1132
- function Ze(s) {
1133
- const e = Ve(s), t = qe + e * Ye;
1132
+ function ut(s) {
1133
+ const e = dt(s), t = ht + e * ct;
1134
1134
  if (!Number.isSafeInteger(t))
1135
1135
  throw new Error("Plot renderOrder exceeded JavaScript safe integer range.");
1136
1136
  return t;
1137
1137
  }
1138
- function ie(s) {
1139
- return s instanceof I || s instanceof k ? s.group : s.classification.group;
1138
+ new a(1, 1, 0);
1139
+ new a();
1140
+ new a();
1141
+ new a();
1142
+ new a();
1143
+ new a();
1144
+ new a();
1145
+ new a();
1146
+ new a();
1147
+ new a();
1148
+ new a();
1149
+ new a();
1150
+ new a();
1151
+ new a();
1152
+ new g();
1153
+ new a();
1154
+ new a();
1155
+ new a();
1156
+ new a();
1157
+ new a();
1158
+ new a();
1159
+ new a();
1160
+ new a();
1161
+ Object.freeze(new a(0, 0, 1));
1162
+ new a();
1163
+ new a();
1164
+ new a();
1165
+ new a();
1166
+ new a();
1167
+ new a();
1168
+ new a();
1169
+ new a();
1170
+ new Se();
1171
+ new Array(9);
1172
+ new a();
1173
+ new a();
1174
+ new a();
1175
+ new a();
1176
+ new a();
1177
+ new a();
1178
+ new a();
1179
+ new a();
1180
+ new a();
1181
+ new a();
1182
+ new a();
1183
+ new a();
1184
+ new a();
1185
+ new a();
1186
+ new a();
1187
+ new a();
1188
+ new g();
1189
+ new a();
1190
+ new a();
1191
+ new a();
1192
+ new Ne();
1193
+ new a();
1194
+ new a();
1195
+ new a();
1196
+ new a();
1197
+ new a();
1198
+ new a();
1199
+ new a();
1200
+ new a();
1201
+ new a();
1202
+ new a();
1203
+ new a();
1204
+ new a();
1205
+ new a();
1206
+ new a();
1207
+ new a();
1208
+ new a();
1209
+ new a();
1210
+ new a();
1211
+ new a();
1212
+ new a();
1213
+ new a();
1214
+ new a();
1215
+ new a();
1216
+ new a();
1217
+ new a();
1218
+ new a();
1219
+ new a();
1220
+ new Se();
1221
+ new a();
1222
+ new a();
1223
+ new a();
1224
+ new a();
1225
+ new a();
1226
+ new a();
1227
+ new a();
1228
+ new a();
1229
+ new a();
1230
+ new a();
1231
+ new a();
1232
+ new a();
1233
+ new a();
1234
+ new a();
1235
+ new a();
1236
+ new a();
1237
+ new a();
1238
+ new a();
1239
+ new a();
1240
+ new a();
1241
+ new a();
1242
+ new a();
1243
+ new a();
1244
+ new a();
1245
+ new a();
1246
+ new a();
1247
+ new a();
1248
+ new a();
1249
+ new g();
1250
+ new g();
1251
+ new a();
1252
+ new a();
1253
+ new a();
1254
+ new a();
1255
+ new a();
1256
+ new a();
1257
+ new a();
1258
+ new g();
1259
+ new g();
1260
+ new a();
1261
+ new a();
1262
+ new a();
1263
+ new g();
1264
+ new g();
1265
+ new a();
1266
+ new a();
1267
+ new a();
1268
+ new a();
1269
+ new g();
1270
+ new g();
1271
+ new a();
1272
+ new a();
1273
+ new a();
1274
+ new a();
1275
+ new a();
1276
+ new a();
1277
+ new a();
1278
+ new a();
1279
+ new a();
1280
+ new a();
1281
+ new a();
1282
+ new g();
1283
+ new a();
1284
+ new a();
1285
+ new a();
1286
+ new a();
1287
+ new a();
1288
+ new a();
1289
+ new a();
1290
+ new a();
1291
+ new a();
1292
+ new a();
1293
+ new a();
1294
+ new a();
1295
+ new a();
1296
+ new a();
1297
+ new g();
1298
+ new g();
1299
+ new a();
1300
+ new a();
1301
+ new a();
1302
+ new g();
1303
+ new g();
1304
+ new a();
1305
+ new a();
1306
+ new g();
1307
+ new g();
1308
+ new a();
1309
+ new a();
1310
+ new a();
1311
+ new a();
1312
+ new a();
1313
+ class C {
1314
+ constructor(e, t) {
1315
+ this.next = null, this.key = e, this.data = t, this.left = null, this.right = null;
1316
+ }
1317
+ }
1318
+ function gt(s, e) {
1319
+ return s > e ? 1 : s < e ? -1 : 0;
1320
+ }
1321
+ function O(s, e, t) {
1322
+ const r = new C(null, null);
1323
+ let i = r, n = r;
1324
+ for (; ; ) {
1325
+ const o = t(s, e.key);
1326
+ if (o < 0) {
1327
+ if (e.left === null) break;
1328
+ if (t(s, e.left.key) < 0) {
1329
+ const l = e.left;
1330
+ if (e.left = l.right, l.right = e, e = l, e.left === null) break;
1331
+ }
1332
+ n.left = e, n = e, e = e.left;
1333
+ } else if (o > 0) {
1334
+ if (e.right === null) break;
1335
+ if (t(s, e.right.key) > 0) {
1336
+ const l = e.right;
1337
+ if (e.right = l.left, l.left = e, e = l, e.right === null) break;
1338
+ }
1339
+ i.right = e, i = e, e = e.right;
1340
+ } else break;
1341
+ }
1342
+ return i.right = e.left, n.left = e.right, e.left = r.right, e.right = r.left, e;
1343
+ }
1344
+ function J(s, e, t, r) {
1345
+ const i = new C(s, e);
1346
+ if (t === null)
1347
+ return i.left = i.right = null, i;
1348
+ t = O(s, t, r);
1349
+ const n = r(s, t.key);
1350
+ return n < 0 ? (i.left = t.left, i.right = t, t.left = null) : n >= 0 && (i.right = t.right, i.left = t, t.right = null), i;
1351
+ }
1352
+ function pe(s, e, t) {
1353
+ let r = null, i = null;
1354
+ if (e) {
1355
+ e = O(s, e, t);
1356
+ const n = t(e.key, s);
1357
+ n === 0 ? (r = e.left, i = e.right) : n < 0 ? (i = e.right, e.right = null, r = e) : (r = e.left, e.left = null, i = e);
1358
+ }
1359
+ return { left: r, right: i };
1360
+ }
1361
+ function pt(s, e, t) {
1362
+ return e === null ? s : (s === null || (e = O(s.key, e, t), e.left = s), e);
1140
1363
  }
1141
- function Ke(s) {
1364
+ function Y(s, e, t, r, i) {
1365
+ if (s) {
1366
+ r(`${e}${t ? "└── " : "├── "}${i(s)}
1367
+ `);
1368
+ const n = e + (t ? " " : "│ ");
1369
+ s.left && Y(s.left, n, !1, r, i), s.right && Y(s.right, n, !0, r, i);
1370
+ }
1371
+ }
1372
+ class ft {
1373
+ constructor(e = gt) {
1374
+ this._root = null, this._size = 0, this._comparator = e;
1375
+ }
1376
+ /**
1377
+ * Inserts a key, allows duplicates
1378
+ */
1379
+ insert(e, t) {
1380
+ return this._size++, this._root = J(e, t, this._root, this._comparator);
1381
+ }
1382
+ /**
1383
+ * Adds a key, if it is not present in the tree
1384
+ */
1385
+ add(e, t) {
1386
+ const r = new C(e, t);
1387
+ this._root === null && (r.left = r.right = null, this._size++, this._root = r);
1388
+ const i = this._comparator, n = O(e, this._root, i), o = i(e, n.key);
1389
+ return o === 0 ? this._root = n : (o < 0 ? (r.left = n.left, r.right = n, n.left = null) : o > 0 && (r.right = n.right, r.left = n, n.right = null), this._size++, this._root = r), this._root;
1390
+ }
1391
+ /**
1392
+ * @param {Key} key
1393
+ * @return {Node|null}
1394
+ */
1395
+ remove(e) {
1396
+ this._root = this._remove(e, this._root, this._comparator);
1397
+ }
1398
+ /**
1399
+ * Deletes i from the tree if it's there
1400
+ */
1401
+ _remove(e, t, r) {
1402
+ let i;
1403
+ return t === null ? null : (t = O(e, t, r), r(e, t.key) === 0 ? (t.left === null ? i = t.right : (i = O(e, t.left, r), i.right = t.right), this._size--, i) : t);
1404
+ }
1405
+ /**
1406
+ * Removes and returns the node with smallest key
1407
+ */
1408
+ pop() {
1409
+ let e = this._root;
1410
+ if (e) {
1411
+ for (; e.left; ) e = e.left;
1412
+ return this._root = O(e.key, this._root, this._comparator), this._root = this._remove(e.key, this._root, this._comparator), { key: e.key, data: e.data };
1413
+ }
1414
+ return null;
1415
+ }
1416
+ /**
1417
+ * Find without splaying
1418
+ */
1419
+ findStatic(e) {
1420
+ let t = this._root;
1421
+ const r = this._comparator;
1422
+ for (; t; ) {
1423
+ const i = r(e, t.key);
1424
+ if (i === 0) return t;
1425
+ i < 0 ? t = t.left : t = t.right;
1426
+ }
1427
+ return null;
1428
+ }
1429
+ find(e) {
1430
+ return this._root && (this._root = O(e, this._root, this._comparator), this._comparator(e, this._root.key) !== 0) ? null : this._root;
1431
+ }
1432
+ contains(e) {
1433
+ let t = this._root;
1434
+ const r = this._comparator;
1435
+ for (; t; ) {
1436
+ const i = r(e, t.key);
1437
+ if (i === 0) return !0;
1438
+ i < 0 ? t = t.left : t = t.right;
1439
+ }
1440
+ return !1;
1441
+ }
1442
+ forEach(e, t) {
1443
+ let r = this._root;
1444
+ const i = [];
1445
+ let n = !1;
1446
+ for (; !n; )
1447
+ r !== null ? (i.push(r), r = r.left) : i.length !== 0 ? (r = i.pop(), e.call(t, r), r = r.right) : n = !0;
1448
+ return this;
1449
+ }
1450
+ /**
1451
+ * Walk key range from `low` to `high`. Stops if `fn` returns a value.
1452
+ */
1453
+ range(e, t, r, i) {
1454
+ const n = [], o = this._comparator;
1455
+ let l = this._root, h;
1456
+ for (; n.length !== 0 || l; )
1457
+ if (l)
1458
+ n.push(l), l = l.left;
1459
+ else {
1460
+ if (l = n.pop(), h = o(l.key, t), h > 0)
1461
+ break;
1462
+ if (o(l.key, e) >= 0 && r.call(i, l))
1463
+ return this;
1464
+ l = l.right;
1465
+ }
1466
+ return this;
1467
+ }
1468
+ /**
1469
+ * Returns array of keys
1470
+ */
1471
+ keys() {
1472
+ const e = [];
1473
+ return this.forEach(({ key: t }) => {
1474
+ e.push(t);
1475
+ }), e;
1476
+ }
1477
+ /**
1478
+ * Returns array of all the data in the nodes
1479
+ */
1480
+ values() {
1481
+ const e = [];
1482
+ return this.forEach(({ data: t }) => {
1483
+ e.push(t);
1484
+ }), e;
1485
+ }
1486
+ min() {
1487
+ return this._root ? this.minNode(this._root).key : null;
1488
+ }
1489
+ max() {
1490
+ return this._root ? this.maxNode(this._root).key : null;
1491
+ }
1492
+ minNode(e = this._root) {
1493
+ if (e) for (; e.left; ) e = e.left;
1494
+ return e;
1495
+ }
1496
+ maxNode(e = this._root) {
1497
+ if (e) for (; e.right; ) e = e.right;
1498
+ return e;
1499
+ }
1500
+ /**
1501
+ * Returns node at given index
1502
+ */
1503
+ at(e) {
1504
+ let t = this._root, r = !1, i = 0;
1505
+ const n = [];
1506
+ for (; !r; )
1507
+ if (t)
1508
+ n.push(t), t = t.left;
1509
+ else if (n.length > 0) {
1510
+ if (t = n.pop(), i === e) return t;
1511
+ i++, t = t.right;
1512
+ } else r = !0;
1513
+ return null;
1514
+ }
1515
+ next(e) {
1516
+ let t = this._root, r = null;
1517
+ if (e.right) {
1518
+ for (r = e.right; r.left; ) r = r.left;
1519
+ return r;
1520
+ }
1521
+ const i = this._comparator;
1522
+ for (; t; ) {
1523
+ const n = i(e.key, t.key);
1524
+ if (n === 0) break;
1525
+ n < 0 ? (r = t, t = t.left) : t = t.right;
1526
+ }
1527
+ return r;
1528
+ }
1529
+ prev(e) {
1530
+ let t = this._root, r = null;
1531
+ if (e.left !== null) {
1532
+ for (r = e.left; r.right; ) r = r.right;
1533
+ return r;
1534
+ }
1535
+ const i = this._comparator;
1536
+ for (; t; ) {
1537
+ const n = i(e.key, t.key);
1538
+ if (n === 0) break;
1539
+ n < 0 ? t = t.left : (r = t, t = t.right);
1540
+ }
1541
+ return r;
1542
+ }
1543
+ clear() {
1544
+ return this._root = null, this._size = 0, this;
1545
+ }
1546
+ toList() {
1547
+ return mt(this._root);
1548
+ }
1549
+ /**
1550
+ * Bulk-load items. Both array have to be same size
1551
+ */
1552
+ load(e, t = [], r = !1) {
1553
+ let i = e.length;
1554
+ const n = this._comparator;
1555
+ if (r && q(e, t, 0, i - 1, n), this._root === null)
1556
+ this._root = X(e, t, 0, i), this._size = i;
1557
+ else {
1558
+ const o = vt(
1559
+ this.toList(),
1560
+ yt(e, t),
1561
+ n
1562
+ );
1563
+ i = this._size + i, this._root = V({ head: o }, 0, i);
1564
+ }
1565
+ return this;
1566
+ }
1567
+ isEmpty() {
1568
+ return this._root === null;
1569
+ }
1570
+ get size() {
1571
+ return this._size;
1572
+ }
1573
+ get root() {
1574
+ return this._root;
1575
+ }
1576
+ toString(e = (t) => String(t.key)) {
1577
+ const t = [];
1578
+ return Y(this._root, "", !0, (r) => t.push(r), e), t.join("");
1579
+ }
1580
+ update(e, t, r) {
1581
+ const i = this._comparator;
1582
+ let { left: n, right: o } = pe(e, this._root, i);
1583
+ i(e, t) < 0 ? o = J(t, r, o, i) : n = J(t, r, n, i), this._root = pt(n, o, i);
1584
+ }
1585
+ split(e) {
1586
+ return pe(e, this._root, this._comparator);
1587
+ }
1588
+ *[Symbol.iterator]() {
1589
+ let e = this._root;
1590
+ const t = [];
1591
+ let r = !1;
1592
+ for (; !r; )
1593
+ e !== null ? (t.push(e), e = e.left) : t.length !== 0 ? (e = t.pop(), yield e, e = e.right) : r = !0;
1594
+ }
1595
+ }
1596
+ function X(s, e, t, r) {
1597
+ const i = r - t;
1598
+ if (i > 0) {
1599
+ const n = t + Math.floor(i / 2), o = s[n], l = e[n], h = new C(o, l);
1600
+ return h.left = X(s, e, t, n), h.right = X(s, e, n + 1, r), h;
1601
+ }
1602
+ return null;
1603
+ }
1604
+ function yt(s, e) {
1605
+ const t = new C(null, null);
1606
+ let r = t;
1607
+ for (let i = 0; i < s.length; i++)
1608
+ r = r.next = new C(s[i], e[i]);
1609
+ return r.next = null, t.next;
1610
+ }
1611
+ function mt(s) {
1612
+ let e = s;
1613
+ const t = [];
1614
+ let r = !1;
1615
+ const i = new C(null, null);
1616
+ let n = i;
1617
+ for (; !r; )
1618
+ e ? (t.push(e), e = e.left) : t.length > 0 ? (e = n = n.next = t.pop(), e = e.right) : r = !0;
1619
+ return n.next = null, i.next;
1620
+ }
1621
+ function V(s, e, t) {
1622
+ const r = t - e;
1623
+ if (r > 0) {
1624
+ const i = e + Math.floor(r / 2), n = V(s, e, i), o = s.head;
1625
+ return o.left = n, s.head = s.head.next, o.right = V(s, i + 1, t), o;
1626
+ }
1627
+ return null;
1628
+ }
1629
+ function vt(s, e, t) {
1630
+ const r = new C(null, null);
1631
+ let i = r, n = s, o = e;
1632
+ for (; n !== null && o !== null; )
1633
+ t(n.key, o.key) < 0 ? (i.next = n, n = n.next) : (i.next = o, o = o.next), i = i.next;
1634
+ return n !== null ? i.next = n : o !== null && (i.next = o), r.next;
1635
+ }
1636
+ function q(s, e, t, r, i) {
1637
+ if (t >= r) return;
1638
+ const n = s[t + r >> 1];
1639
+ let o = t - 1, l = r + 1;
1640
+ for (; ; ) {
1641
+ do
1642
+ o++;
1643
+ while (i(s[o], n) < 0);
1644
+ do
1645
+ l--;
1646
+ while (i(s[l], n) > 0);
1647
+ if (o >= l) break;
1648
+ let h = s[o];
1649
+ s[o] = s[l], s[l] = h, h = e[o], e[o] = e[l], e[l] = h;
1650
+ }
1651
+ q(s, e, t, l, i), q(s, e, l + 1, r, i);
1652
+ }
1653
+ let S = Number.EPSILON;
1654
+ S === void 0 && (S = Math.pow(2, -52));
1655
+ const wt = S * S, fe = (s, e) => {
1656
+ if (-S < s && s < S && -S < e && e < S)
1657
+ return 0;
1658
+ const t = s - e;
1659
+ return t * t < wt * s * e ? 0 : s < e ? -1 : 1;
1660
+ };
1661
+ class _t {
1662
+ constructor() {
1663
+ this.reset();
1664
+ }
1665
+ reset() {
1666
+ this.xRounder = new ye(), this.yRounder = new ye();
1667
+ }
1668
+ round(e, t) {
1669
+ return {
1670
+ x: this.xRounder.round(e),
1671
+ y: this.yRounder.round(t)
1672
+ };
1673
+ }
1674
+ }
1675
+ class ye {
1676
+ constructor() {
1677
+ this.tree = new ft(), this.round(0);
1678
+ }
1679
+ // Note: this can rounds input values backwards or forwards.
1680
+ // You might ask, why not restrict this to just rounding
1681
+ // forwards? Wouldn't that allow left endpoints to always
1682
+ // remain left endpoints during splitting (never change to
1683
+ // right). No - it wouldn't, because we snap intersections
1684
+ // to endpoints (to establish independence from the segment
1685
+ // angle for t-intersections).
1686
+ round(e) {
1687
+ const t = this.tree.add(e), r = this.tree.prev(t);
1688
+ if (r !== null && fe(t.key, r.key) === 0)
1689
+ return this.tree.remove(e), r.key;
1690
+ const i = this.tree.next(t);
1691
+ return i !== null && fe(t.key, i.key) === 0 ? (this.tree.remove(e), i.key) : e;
1692
+ }
1693
+ }
1694
+ new _t();
1695
+ typeof process < "u" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE;
1696
+ typeof process < "u" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS;
1697
+ p.DEG2RAD;
1698
+ p.DEG2RAD;
1699
+ const Mt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e联动单位%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:联动;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-linkage'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20fill='none'%3e%3cpath%20d='M50%2050L22%2024M50%2050l28-26M50%2050L20%2076M50%2050l30%2026'/%3e%3ccircle%20cx='50'%20cy='50'%20r='13'%20fill='currentColor'/%3e%3ccircle%20cx='22'%20cy='24'%20r='10'/%3e%3ccircle%20cx='78'%20cy='24'%20r='10'/%3e%3ccircle%20cx='20'%20cy='76'%20r='10'/%3e%3ccircle%20cx='80'%20cy='76'%20r='10'/%3e%3c/g%3e%3cpath%20d='M44%2050l4%204%209-10'%20fill='none'%20stroke='%23F8FAFC'%20stroke-width='5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23B67CFF'%3e%3cuse%20href='%23icon-linkage'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Ot = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e保障物资点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:物资;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-supplies'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M18%2035l32-16%2032%2016v44L50%2092%2018%2079zM18%2035l32%2017%2032-17M50%2052v40'/%3e%3cpath%20d='M34%2027l32%2017'/%3e%3c/g%3e%3cpath%20d='M41%2058h18v8h-18zM46%2053h8v18h-8z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FFAD33'%3e%3cuse%20href='%23icon-supplies'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", St = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e消防站%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防站;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-fire-station'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M13%2088h74M20%2088V39l30-22%2030%2022v49M31%2088V60h38v28M41%2088V70h18v18'/%3e%3cpath%20d='M20%2041h60'/%3e%3c/g%3e%3cpath%20d='M50%2029c-9%2010-12%2016-9%2022%202%204%205%206%209%206s8-2%2010-6c3-6%200-12-10-22z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF6B2C'%3e%3cuse%20href='%23icon-fire-station'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Ct = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e消防水池%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:水源;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-fire-pool'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M16%2039h68v43H16zM25%2055c6-5%2012-5%2018%200s12%205%2018%200%2012-5%2018%200M25%2068c6-5%2012-5%2018%200s12%205%2018%200%2012-5%2018%200'/%3e%3cpath%20d='M67%2021v28M77%2021v28M67%2029h10M67%2039h10'/%3e%3c/g%3e%3cpath%20d='M28%2025h25l-6%207H28z'%20fill='currentColor'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2338BDF8'%3e%3cuse%20href='%23icon-fire-pool'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", bt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e医院资源点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:医疗;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hospital'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M18%2087V29h64v58M10%2087h80M29%2087V72h14v15M57%2087V72h14v15'/%3e%3cpath%20d='M50%2038v22M39%2049h22'%20stroke='%23F8FAFC'%20stroke-width='9'/%3e%3c/g%3e%3cpath%20d='M27%2022h46v12H27z'%20fill='currentColor'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2322D3EE'%3e%3cuse%20href='%23icon-hospital'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", kt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e市政消火栓%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-municipal'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M10%2086h80M18%2086V48h18v38M64%2086V35h20v51M21%2057h4M29%2057h4M21%2068h4M29%2068h4M69%2046h4M77%2046h4M69%2058h4M77%2058h4'%20opacity='0.7'/%3e%3cpath%20d='M42%2086V60h18v26M39%2060h24l-4-11H43zM46%2049v-7h10v7'/%3e%3cpath%20d='M42%2067h-8v12h8M60%2067h8v12h-8'/%3e%3c/g%3e%3ccircle%20cx='51'%20cy='72'%20r='5'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-municipal'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", xt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e天然水源%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:水源;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-natural-water'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M14%2050l20-24%2014%2016%2011-12%2027%2029'/%3e%3cpath%20d='M15%2064c8-6%2015-6%2023%200s15%206%2023%200%2015-6%2024%200M15%2078c8-6%2015-6%2023%200s15%206%2023%200%2015-6%2024%200'/%3e%3c/g%3e%3ccircle%20cx='72'%20cy='23'%20r='8'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%2338BDF8'%3e%3cuse%20href='%23icon-natural-water'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Tt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓(地上式)%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-ground'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='7'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M12%2084h76M38%2084V45h24v39M38%2057H24v16h14M62%2057h14v16H62'/%3e%3cpath%20d='M33%2045h34l-5-16H38zM44%2029v-8h12v8'/%3e%3ccircle%20cx='24'%20cy='65'%20r='5'%20fill='currentColor'/%3e%3ccircle%20cx='76'%20cy='65'%20r='5'%20fill='currentColor'/%3e%3c/g%3e%3cpath%20d='M50%2055l7%2012H43z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-ground'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Pt = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓(地下式)%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-underground'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M12%2040h76'/%3e%3cellipse%20cx='50'%20cy='39'%20rx='22'%20ry='9'%20fill='currentColor'/%3e%3cpath%20d='M35%2045v30h30V45M42%2075v12M58%2075v12M31%2087h38'/%3e%3cpath%20d='M43%2054h14M50%2047v18'%20stroke='%23F8FAFC'/%3e%3c/g%3e%3cpath%20d='M25%2028l-7-8M75%2028l7-8'%20stroke='currentColor'%20stroke-width='5'%20stroke-linecap='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-underground'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", It = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e室外消火栓%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:消防;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-hydrant-general'%20viewBox='0%200%20100%20100'%3e%3cg%20stroke='currentColor'%20stroke-width='7'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3e%3cpath%20d='M35%2087h30M39%2087V48h22v39M39%2056H25v17h14M61%2056h14v17H61'/%3e%3cpath%20d='M34%2048h32l-5-15H39zM44%2033v-9h12v9'/%3e%3ccircle%20cx='25'%20cy='64'%20r='5'%20fill='currentColor'/%3e%3ccircle%20cx='75'%20cy='64'%20r='5'%20fill='currentColor'/%3e%3c/g%3e%3cpath%20d='M50%2058c-7%209-10%2014-10%2019a10%2010%200%200%200%2020%200c0-5-3-10-10-19z'%20fill='%23F8FAFC'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%23FF4D3D'%3e%3cuse%20href='%23icon-hydrant-general'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Et = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%20viewBox='0%200%20128%20128'%20role='img'%20aria-labelledby='title%20desc'%3e%3ctitle%20id='title'%3e公安资源点%3c/title%3e%3cdesc%20id='desc'%3eGIS%20点位图标;类别:公安;样式:classified%3c/desc%3e%3cdefs%3e%3csymbol%20id='icon-police'%20viewBox='0%200%20100%20100'%3e%3cpath%20d='M50%2014l32%2011v23c0%2021-13%2034-32%2041-19-7-32-20-32-41V25z'%20fill='none'%20stroke='currentColor'%20stroke-width='7'%20stroke-linejoin='round'/%3e%3cpath%20d='M50%2030l5.5%2011.2%2012.4%201.8-9%208.8%202.1%2012.4L50%2058.4l-11%205.8%202.1-12.4-9-8.8%2012.4-1.8z'%20fill='%23F8FAFC'/%3e%3cpath%20d='M35%2073h30'%20stroke='currentColor'%20stroke-width='6'%20stroke-linecap='round'/%3e%3c/symbol%3e%3c/defs%3e%3cg%20color='%235B7CFF'%3e%3cuse%20href='%23icon-police'%20x='16'%20y='16'%20width='96'%20height='96'/%3e%3c/g%3e%3c/svg%3e", Z = {
1700
+ OutdoorFireHydrant: It,
1701
+ UndergroundHydrant: Pt,
1702
+ AboveGroundHydrant: Tt,
1703
+ MunicipalFireHydrants: kt,
1704
+ FireWaterReservoir: Ct,
1705
+ NaturalWater: xt,
1706
+ HospitalResourcePoint: bt,
1707
+ PublicSecurityResourcePoint: Et,
1708
+ SupportMaterialPoint: Ot,
1709
+ FireStation: St,
1710
+ LinkageUnit: Mt
1711
+ }, nr = Object.freeze(
1712
+ Object.keys(Z)
1713
+ );
1714
+ function Rt(s) {
1715
+ const e = s?.trim();
1716
+ return !e || !Object.prototype.hasOwnProperty.call(
1717
+ Z,
1718
+ e
1719
+ ) ? null : Z[e];
1720
+ }
1721
+ function Nt(s) {
1722
+ return s.imageUrl?.trim() || Rt(s.ontologyId);
1723
+ }
1724
+ new g();
1725
+ function me(s) {
1726
+ return s instanceof L || s instanceof N ? s.group : s.classification.group;
1727
+ }
1728
+ function Ft(s) {
1142
1729
  const e = s.options, t = JSON.stringify(e.points ?? []);
1143
1730
  switch (s.category) {
1144
1731
  case "circle":
@@ -1146,7 +1733,7 @@ function Ke(s) {
1146
1733
  case "sector":
1147
1734
  return `sector|${t}|${e.radius}|${e.startAngle}|${e.sectorAngle}`;
1148
1735
  case "point":
1149
- return `point|${t}|${e.pointStyle}|${e.size}`;
1736
+ return `point|${t}|${e.pointStyle}|${e.size}|${e.imageUrl}|${e.ontologyId}|${e.imageWidth}|${e.imageHeight}|${e.rotation}`;
1150
1737
  case "arrow":
1151
1738
  return `arrow|${t}|${e.arrowType}`;
1152
1739
  case "line":
@@ -1157,27 +1744,27 @@ function Ke(s) {
1157
1744
  return `${s.category}|${t}`;
1158
1745
  }
1159
1746
  }
1160
- function se(s, e = "solid") {
1747
+ function ve(s, e = "solid") {
1161
1748
  return s === "unfilledArrow" ? "open" : s === "filledArrow" ? "solid" : e;
1162
1749
  }
1163
- function et(s) {
1750
+ function At(s) {
1164
1751
  if (s.showArrow === !1) return "none";
1165
1752
  const e = s.startArrowStyle !== void 0 && s.startArrowStyle !== null, t = s.endArrowStyle !== void 0 && s.endArrowStyle !== null;
1166
1753
  return e && t ? "both" : t ? "right" : e ? "left" : "none";
1167
1754
  }
1168
- function ae(s) {
1169
- const e = et(s), t = se(s.startArrowStyle), r = se(s.endArrowStyle);
1755
+ function we(s) {
1756
+ const e = At(s), t = ve(s.startArrowStyle), r = ve(s.endArrowStyle);
1170
1757
  return {
1171
1758
  arrowMode: e,
1172
1759
  startArrowStyle: t,
1173
1760
  endArrowStyle: r
1174
1761
  };
1175
1762
  }
1176
- function tt(s, e) {
1763
+ function Lt(s, e) {
1177
1764
  const t = s.options;
1178
1765
  return `${t.strokeColor}|${t.strokeWidth}|${t.strokeOpacity}|${t.fillColor}|${t.fillOpacity}|${e}|${t.fontColor ?? ""}|${t.fontSize ?? ""}`;
1179
1766
  }
1180
- class rt {
1767
+ class Dt {
1181
1768
  /** 标绘 id → 渲染记录 */
1182
1769
  _entries = /* @__PURE__ */ new Map();
1183
1770
  /** 由 GroundDecalManager 写入的标绘集合(引用共享) */
@@ -1186,10 +1773,13 @@ class rt {
1186
1773
  _opacity = 1;
1187
1774
  /** 挂载场景 */
1188
1775
  _scene;
1776
+ /** 图片资源异步就绪后请求宿主刷新;按 URL 去重监听 */
1777
+ _requestRender;
1778
+ _watchedImageUrls = /* @__PURE__ */ new Set();
1189
1779
  /** 已释放标记 */
1190
1780
  _disposed = !1;
1191
1781
  constructor(e) {
1192
- this._scene = e.scene;
1782
+ this._scene = e.scene, this._requestRender = e.requestRender;
1193
1783
  }
1194
1784
  // ── 协议 ──
1195
1785
  /** 接收 GroundDecalManager 交付的 Map */
@@ -1221,26 +1811,26 @@ class rt {
1221
1811
  this._shapes.has(t) || (this._scene.remove(r.group), r.primitive.dispose(), this._entries.delete(t));
1222
1812
  let e = 0;
1223
1813
  for (const [t, r] of this._shapes) {
1224
- const i = Ze(e);
1814
+ const i = ut(e);
1225
1815
  e += 1;
1226
- const a = this._entries.get(t), n = Ke(r), o = tt(r, this._opacity);
1227
- if (a !== void 0 && a.signature === n && (this._supportsStyleHotUpdate(a.primitive) || a.styleSignature === o)) {
1228
- this._refreshLightweight(a, i), a.styleSignature = o;
1816
+ const n = this._entries.get(t), o = Ft(r), l = Lt(r, this._opacity);
1817
+ if (n !== void 0 && n.signature === o && (this._supportsStyleHotUpdate(n) || n.styleSignature === l)) {
1818
+ this._refreshLightweight(n, i), n.styleSignature = l;
1229
1819
  continue;
1230
1820
  }
1231
- a !== void 0 && (this._scene.remove(a.group), a.primitive.dispose(), this._entries.delete(t));
1232
- const d = this._buildPrimitive(r, i);
1233
- if (d === null) continue;
1234
- const l = ie(d);
1235
- l.visible = r.options.visible !== !1, this._scene.add(l);
1236
- const h = {
1821
+ n !== void 0 && (this._scene.remove(n.group), n.primitive.dispose(), this._entries.delete(t));
1822
+ const h = this._buildPrimitive(r, i);
1823
+ if (h === null) continue;
1824
+ const c = me(h);
1825
+ c.visible = r.options.visible !== !1, this._scene.add(c);
1826
+ const d = {
1237
1827
  plot: r,
1238
- primitive: d,
1239
- group: l,
1240
- signature: n,
1241
- styleSignature: o
1828
+ primitive: h,
1829
+ group: c,
1830
+ signature: o,
1831
+ styleSignature: l
1242
1832
  };
1243
- this._entries.set(t, h), d instanceof k && this._refreshLightweight(h, i);
1833
+ this._entries.set(t, d), h instanceof N && this._refreshLightweight(d, i);
1244
1834
  }
1245
1835
  }
1246
1836
  /**
@@ -1262,10 +1852,11 @@ class rt {
1262
1852
  // ── 内部:轻量刷新 / 样式热更新支持判定 ──
1263
1853
  /**
1264
1854
  * 当前图元是否支持样式热更新(颜色 / 描边等)。
1265
- * 折线(setColor / setWidth)与文字(setText)支持;面类不支持,需重建。
1855
+ * 折线(setColor / setWidth)、文字(setText)和图片点透明度支持;面类不支持,需重建。
1266
1856
  */
1267
1857
  _supportsStyleHotUpdate(e) {
1268
- return e instanceof I || e instanceof k;
1858
+ const { primitive: t, plot: r } = e;
1859
+ return t instanceof L || t instanceof N || t instanceof A && r.options.pointStyle === "image";
1269
1860
  }
1270
1861
  /**
1271
1862
  * 几何未变时的轻量刷新:
@@ -1274,21 +1865,25 @@ class rt {
1274
1865
  * - 文字:setText(内容 + 颜色 + 不透明度)/ setVisible(不重建图元)。
1275
1866
  */
1276
1867
  _refreshLightweight(e, t) {
1277
- if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof I) {
1868
+ if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof L) {
1278
1869
  const r = e.plot.options, {
1279
1870
  startArrowStyle: i,
1280
- endArrowStyle: a
1281
- } = ae(r);
1871
+ endArrowStyle: n
1872
+ } = we(r);
1282
1873
  e.primitive.setColor(
1283
1874
  r.strokeColor,
1284
1875
  (r.strokeOpacity ?? 100) * this._opacity
1285
1876
  );
1286
- const n = typeof r.strokeWidth == "number" && r.strokeWidth > 0 ? r.strokeWidth : 5;
1287
- e.primitive.setWidth(n), e.primitive.setArrowStyles(i, a);
1288
- const o = Math.max(n * 4, 1), d = Math.max(n * 3, 0.8);
1289
- e.primitive.setArrowSizeMeters(o, d), e.primitive.setVisible(r.visible !== !1);
1877
+ const o = typeof r.strokeWidth == "number" && r.strokeWidth > 0 ? r.strokeWidth : 5;
1878
+ e.primitive.setWidth(o), e.primitive.setArrowStyles(i, n);
1879
+ const l = Math.max(o * 4, 1), h = Math.max(o * 3, 0.8);
1880
+ e.primitive.setArrowSizeMeters(l, h), e.primitive.setVisible(r.visible !== !1);
1881
+ }
1882
+ if (e.primitive instanceof A) {
1883
+ const r = e.plot.options;
1884
+ r.pointStyle === "image" && e.primitive.setImageOpacity((r.fillOpacity ?? 100) * this._opacity);
1290
1885
  }
1291
- if (e.primitive instanceof k) {
1886
+ if (e.primitive instanceof N) {
1292
1887
  const r = e.plot.options;
1293
1888
  e.primitive.setText({
1294
1889
  content: r.content,
@@ -1312,7 +1907,7 @@ class rt {
1312
1907
  offsetEastMeters: r.offsetX,
1313
1908
  offsetNorthMeters: r.offsetY,
1314
1909
  metersPerPixel: r.scale
1315
- }), e.primitive.setVisible(r.visible !== !1), e.group = ie(e.primitive), e.group.visible = r.visible !== !1;
1910
+ }), e.primitive.setVisible(r.visible !== !1), e.group = me(e.primitive), e.group.visible = r.visible !== !1;
1316
1911
  }
1317
1912
  }
1318
1913
  // ── 内部:按 category 构建图元 ──
@@ -1323,147 +1918,184 @@ class rt {
1323
1918
  * @returns 渲染图元;未知类型 / 退化情况返回 null。
1324
1919
  */
1325
1920
  _buildPrimitive(e, t) {
1326
- const r = e.options, i = r.points ?? [], a = this._opacity, n = (r.strokeOpacity ?? 100) * a, o = (r.fillOpacity ?? 100) * a, d = r.visible !== !1;
1921
+ const r = e.options, i = r.points ?? [], n = this._opacity, o = (r.strokeOpacity ?? 100) * n, l = (r.fillOpacity ?? 100) * n, h = r.visible !== !1;
1327
1922
  switch (e.category) {
1328
1923
  case "point": {
1329
1924
  if (i.length === 0) return null;
1330
- const l = r;
1331
- return new Pe({
1925
+ const c = r;
1926
+ if (c.pointStyle === "image") {
1927
+ const d = Nt(c);
1928
+ return d ? (this._watchImageTexture(d), new A({
1929
+ position: i[0],
1930
+ shape: "image",
1931
+ imageUrl: d,
1932
+ imageWidth: c.imageWidth,
1933
+ imageHeight: c.imageHeight,
1934
+ rotation: c.rotation ?? 0,
1935
+ strokeColor: c.strokeColor,
1936
+ strokeWidth: c.strokeWidth ?? 0,
1937
+ strokeOpacity: o,
1938
+ fillColor: c.fillColor,
1939
+ fillOpacity: l,
1940
+ visible: h,
1941
+ renderOrder: t
1942
+ })) : (console.warn(`[soonspacejs] Unknown point image ontology id: ${c.ontologyId ?? ""}`), null);
1943
+ }
1944
+ return new A({
1332
1945
  position: i[0],
1333
- shape: l.pointStyle ?? "circle",
1334
- size: l.size ?? 100,
1335
- strokeColor: l.strokeColor,
1336
- strokeWidth: l.strokeWidth ?? 0,
1337
- strokeOpacity: n,
1338
- fillColor: l.fillColor,
1339
- fillOpacity: o,
1340
- visible: d,
1946
+ shape: c.pointStyle ?? "circle",
1947
+ size: c.size ?? 100,
1948
+ strokeColor: c.strokeColor,
1949
+ strokeWidth: c.strokeWidth ?? 0,
1950
+ strokeOpacity: o,
1951
+ fillColor: c.fillColor,
1952
+ fillOpacity: l,
1953
+ visible: h,
1341
1954
  renderOrder: t
1342
1955
  });
1343
1956
  }
1344
1957
  case "circle": {
1345
1958
  if (i.length === 0) return null;
1346
- const l = r;
1347
- return new ee({
1959
+ const c = r;
1960
+ return new de({
1348
1961
  center: i[0],
1349
- radius: l.radius ?? 100,
1350
- strokeColor: l.strokeColor,
1351
- strokeWidth: l.strokeWidth ?? 0,
1352
- strokeOpacity: n,
1353
- fillColor: l.fillColor,
1354
- fillOpacity: o,
1355
- visible: d,
1962
+ radius: c.radius ?? 100,
1963
+ strokeColor: c.strokeColor,
1964
+ strokeWidth: c.strokeWidth ?? 0,
1965
+ strokeOpacity: o,
1966
+ fillColor: c.fillColor,
1967
+ fillOpacity: l,
1968
+ visible: h,
1356
1969
  renderOrder: t
1357
1970
  });
1358
1971
  }
1359
1972
  case "sector": {
1360
1973
  if (i.length === 0) return null;
1361
- const l = r;
1362
- return new ee({
1974
+ const c = r;
1975
+ return new de({
1363
1976
  center: i[0],
1364
- radius: l.radius ?? 100,
1365
- strokeColor: l.strokeColor,
1366
- strokeWidth: l.strokeWidth ?? 0,
1367
- strokeOpacity: n,
1368
- fillColor: l.fillColor,
1369
- fillOpacity: o,
1370
- visible: d,
1371
- sectorStartDegrees: l.startAngle ?? 0,
1372
- sectorAngleDegrees: l.sectorAngle ?? 360,
1977
+ radius: c.radius ?? 100,
1978
+ strokeColor: c.strokeColor,
1979
+ strokeWidth: c.strokeWidth ?? 0,
1980
+ strokeOpacity: o,
1981
+ fillColor: c.fillColor,
1982
+ fillOpacity: l,
1983
+ visible: h,
1984
+ sectorStartDegrees: c.startAngle ?? 0,
1985
+ sectorAngleDegrees: c.sectorAngle ?? 360,
1373
1986
  renderOrder: t
1374
1987
  });
1375
1988
  }
1376
1989
  case "polygon":
1377
1990
  case "rectangle":
1378
- return i.length < 3 ? null : new K({
1991
+ return i.length < 3 ? null : new he({
1379
1992
  points: i,
1380
1993
  strokeColor: r.strokeColor,
1381
1994
  strokeWidth: r.strokeWidth ?? 0,
1382
- strokeOpacity: n,
1995
+ strokeOpacity: o,
1383
1996
  fillColor: r.fillColor,
1384
- fillOpacity: o,
1385
- visible: d,
1997
+ fillOpacity: l,
1998
+ visible: h,
1386
1999
  renderOrder: t
1387
2000
  });
1388
2001
  case "arrow": {
1389
- const l = e.generateCoords();
1390
- if (l.length < 3) return null;
1391
- const h = r;
1392
- return new K({
1393
- points: l,
1394
- strokeColor: h.strokeColor,
1395
- strokeWidth: h.strokeWidth ?? 0,
1396
- strokeOpacity: n,
1397
- fillColor: h.fillColor,
1398
- fillOpacity: o,
1399
- visible: d,
2002
+ const c = e.generateCoords();
2003
+ if (c.length < 3) return null;
2004
+ const d = r;
2005
+ return new he({
2006
+ points: c,
2007
+ strokeColor: d.strokeColor,
2008
+ strokeWidth: d.strokeWidth ?? 0,
2009
+ strokeOpacity: o,
2010
+ fillColor: d.fillColor,
2011
+ fillOpacity: l,
2012
+ visible: h,
1400
2013
  renderOrder: t
1401
2014
  });
1402
2015
  }
1403
2016
  case "line": {
1404
2017
  if (i.length < 2) return null;
1405
- const l = r, {
1406
- arrowMode: h,
1407
- startArrowStyle: c,
1408
- endArrowStyle: y
1409
- } = ae(l), _ = l.strokeStyle === "dashed", p = _ ? 60 : void 0, g = _ ? 40 : void 0, m = typeof l.strokeWidth == "number" && l.strokeWidth > 0 ? l.strokeWidth : 5, S = Math.max(m * 4, 1), w = Math.max(m * 3, 0.8);
1410
- return new I({
2018
+ const c = r, {
2019
+ arrowMode: d,
2020
+ startArrowStyle: f,
2021
+ endArrowStyle: v
2022
+ } = we(c), M = c.strokeStyle === "dashed", y = M ? 60 : void 0, m = M ? 40 : void 0, w = typeof c.strokeWidth == "number" && c.strokeWidth > 0 ? c.strokeWidth : 5, x = Math.max(w * 4, 1), T = Math.max(w * 3, 0.8);
2023
+ return new L({
1411
2024
  points: i,
1412
- strokeColor: l.strokeColor,
1413
- strokeOpacity: n,
2025
+ strokeColor: c.strokeColor,
2026
+ strokeOpacity: o,
1414
2027
  widthMode: "world",
1415
- widthMeters: m,
1416
- visible: d,
1417
- arrowMode: h,
1418
- arrowStyle: c,
1419
- startArrowStyle: c,
1420
- endArrowStyle: y,
2028
+ widthMeters: w,
2029
+ visible: h,
2030
+ arrowMode: d,
2031
+ arrowStyle: f,
2032
+ startArrowStyle: f,
2033
+ endArrowStyle: v,
1421
2034
  arrowWidthMode: "world",
1422
- arrowLengthMeters: S,
1423
- arrowWidthMeters: w,
1424
- dashLengthMeters: p,
1425
- gapLengthMeters: g,
2035
+ arrowLengthMeters: x,
2036
+ arrowWidthMeters: T,
2037
+ dashLengthMeters: y,
2038
+ gapLengthMeters: m,
1426
2039
  renderOrder: t
1427
2040
  });
1428
2041
  }
1429
2042
  case "text": {
1430
2043
  if (i.length === 0) return null;
1431
- const l = r;
1432
- return new k({
2044
+ const c = r;
2045
+ return new N({
1433
2046
  points: [i[0]],
1434
- content: l.content,
1435
- fontColor: l.fontColor,
1436
- fontSize: l.fontSize,
1437
- fillColor: l.fillColor,
1438
- fillOpacity: o,
1439
- strokeColor: l.strokeColor,
1440
- strokeOpacity: n,
1441
- strokeWidth: l.strokeWidth ?? 0,
1442
- textAlign: l.textAlign,
1443
- verticalAlign: l.verticalAlign,
1444
- anchorX: l.anchorX,
1445
- anchorY: l.anchorY,
1446
- layoutDirection: l.layoutDirection,
1447
- rotation: l.rotation,
1448
- boxWidth: l.boxWidth,
1449
- boxHeight: l.boxHeight,
1450
- padding: l.padding,
1451
- showBorder: l.showBorder,
1452
- visible: d,
2047
+ content: c.content,
2048
+ fontColor: c.fontColor,
2049
+ fontSize: c.fontSize,
2050
+ fillColor: c.fillColor,
2051
+ fillOpacity: l,
2052
+ strokeColor: c.strokeColor,
2053
+ strokeOpacity: o,
2054
+ strokeWidth: c.strokeWidth ?? 0,
2055
+ textAlign: c.textAlign,
2056
+ verticalAlign: c.verticalAlign,
2057
+ anchorX: c.anchorX,
2058
+ anchorY: c.anchorY,
2059
+ layoutDirection: c.layoutDirection,
2060
+ rotation: c.rotation,
2061
+ boxWidth: c.boxWidth,
2062
+ boxHeight: c.boxHeight,
2063
+ padding: c.padding,
2064
+ showBorder: c.showBorder,
2065
+ visible: h,
1453
2066
  renderOrder: t,
1454
2067
  // offsetX / offsetY → ENU 米偏移
1455
- offsetEastMeters: l.offsetX,
1456
- offsetNorthMeters: l.offsetY,
2068
+ offsetEastMeters: c.offsetX,
2069
+ offsetNorthMeters: c.offsetY,
1457
2070
  // scale → metersPerPixel(无 scale 时不传,默认 1.0)
1458
- metersPerPixel: l.scale
2071
+ metersPerPixel: c.scale
1459
2072
  });
1460
2073
  }
1461
2074
  default:
1462
2075
  return null;
1463
2076
  }
1464
2077
  }
2078
+ /**
2079
+ * 贴地图元依赖异步 TextureLoader,而 SoonSpace 默认按需渲染;
2080
+ * 图片解码完成后若没有新的渲染请求,纹理会等到相机交互才首次显示。
2081
+ * 用原生 Image 监听资源就绪并通知宿主,按 URL 去重避免重复监听。
2082
+ */
2083
+ _watchImageTexture(e) {
2084
+ const t = e.trim();
2085
+ if (t.length === 0 || this._watchedImageUrls.has(t) || typeof Image > "u") return;
2086
+ this._watchedImageUrls.add(t);
2087
+ const r = new Image();
2088
+ r.crossOrigin = "anonymous";
2089
+ let i = !1;
2090
+ const n = () => {
2091
+ i || (i = !0, this._watchedImageUrls.delete(t), r.onload = null, r.onerror = null, !this._disposed && (this._requestRender?.(), requestAnimationFrame(() => {
2092
+ this._disposed || this._requestRender?.();
2093
+ })));
2094
+ };
2095
+ r.onload = n, r.onerror = n, r.src = t, r.complete && queueMicrotask(n);
2096
+ }
1465
2097
  }
1466
- class it {
2098
+ class Gt {
1467
2099
  /** 标绘 id → 实例;与桥接器的 shapes 共用同一引用 */
1468
2100
  _items = /* @__PURE__ */ new Map();
1469
2101
  /** 标绘管理器 id(对外常量,保持与参考项目一致) */
@@ -1477,7 +2109,10 @@ class it {
1477
2109
  /** 合并同一帧内多次 _markDirty,值为 requestAnimationFrame 句柄 */
1478
2110
  _redrawTimer = null;
1479
2111
  constructor(e) {
1480
- this.ssp = e.ssp, this._bridge = new rt({ scene: e.ssp.viewport.scene });
2112
+ this.ssp = e.ssp, this._bridge = new Dt({
2113
+ scene: e.ssp.viewport.scene,
2114
+ requestRender: () => this.ssp.render()
2115
+ });
1481
2116
  }
1482
2117
  /** 暴露内部桥接器,业务若需自定义场景接入可选择性使用 */
1483
2118
  get bridge() {
@@ -1510,42 +2145,42 @@ class it {
1510
2145
  switch (e.type) {
1511
2146
  case "point": {
1512
2147
  const { type: r, ...i } = e;
1513
- t = new Je(i);
2148
+ t = new Ke(i);
1514
2149
  break;
1515
2150
  }
1516
2151
  case "line": {
1517
2152
  const { type: r, ...i } = e;
1518
- t = new Ue(i);
2153
+ t = new et(i);
1519
2154
  break;
1520
2155
  }
1521
2156
  case "polygon": {
1522
2157
  const { type: r, ...i } = e;
1523
- t = new We(i);
2158
+ t = new tt(i);
1524
2159
  break;
1525
2160
  }
1526
2161
  case "rectangle": {
1527
2162
  const { type: r, ...i } = e;
1528
- t = new $e(i);
2163
+ t = new rt(i);
1529
2164
  break;
1530
2165
  }
1531
2166
  case "circle": {
1532
2167
  const { type: r, ...i } = e;
1533
- t = new Xe(i);
2168
+ t = new lt(i);
1534
2169
  break;
1535
2170
  }
1536
2171
  case "sector": {
1537
2172
  const { type: r, ...i } = e;
1538
- t = new Be(i);
2173
+ t = new st(i);
1539
2174
  break;
1540
2175
  }
1541
2176
  case "text": {
1542
2177
  const { type: r, ...i } = e;
1543
- t = new Qe(i);
2178
+ t = new ot(i);
1544
2179
  break;
1545
2180
  }
1546
2181
  case "arrow": {
1547
2182
  const { type: r, ...i } = e;
1548
- t = new je(i);
2183
+ t = new nt(i);
1549
2184
  break;
1550
2185
  }
1551
2186
  default:
@@ -1615,8 +2250,8 @@ class it {
1615
2250
  insertCoord(e, t, r) {
1616
2251
  const i = this._items.get(e);
1617
2252
  if (!i || !i.options.points) return;
1618
- const a = Math.max(0, Math.min(t, i.options.points.length));
1619
- i.options.points.splice(a, 0, [...r]), this._markDirty();
2253
+ const n = Math.max(0, Math.min(t, i.options.points.length));
2254
+ i.options.points.splice(n, 0, [...r]), this._markDirty();
1620
2255
  }
1621
2256
  /**
1622
2257
  * 删除指定下标顶点。多边形至少保留 3 点,其余至少 2 点;越界 / 触底静默返回。
@@ -1633,8 +2268,8 @@ class it {
1633
2268
  translateCoords(e, t, r) {
1634
2269
  const i = this._items.get(e);
1635
2270
  if (!(!i || !i.options.points)) {
1636
- for (const a of i.options.points)
1637
- a[0] += t, a[1] += r;
2271
+ for (const n of i.options.points)
2272
+ n[0] += t, n[1] += r;
1638
2273
  this._markDirty();
1639
2274
  }
1640
2275
  }
@@ -1664,12 +2299,12 @@ class it {
1664
2299
  findNearestCoord(e, t, r) {
1665
2300
  const i = this._items.get(e);
1666
2301
  if (!i || !i.options.points || i.options.points.length === 0) return -1;
1667
- let a = 0, n = 1 / 0;
1668
- for (let o = 0; o < i.options.points.length; o++) {
1669
- const d = i.options.points[o][0] - t, l = i.options.points[o][1] - r, h = d * d + l * l;
1670
- h < n && (n = h, a = o);
2302
+ let n = 0, o = 1 / 0;
2303
+ for (let l = 0; l < i.options.points.length; l++) {
2304
+ const h = i.options.points[l][0] - t, c = i.options.points[l][1] - r, d = h * h + c * c;
2305
+ d < o && (o = d, n = l);
1671
2306
  }
1672
- return a;
2307
+ return n;
1673
2308
  }
1674
2309
  // ── 渲染接入 ──
1675
2310
  /**
@@ -1702,22 +2337,22 @@ class it {
1702
2337
  }));
1703
2338
  }
1704
2339
  }
1705
- const st = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/", at = "https://c.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png";
1706
- class Ct {
2340
+ const Ut = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/", Wt = "https://c.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png";
2341
+ class or {
1707
2342
  constructor(e, t = {}) {
1708
2343
  this.ssp = e, this.options = t;
1709
- const r = t.baseUrl || st;
1710
- if (this.resourceManager = new De(), this.terrainManager = new Ge(), t.imageryUrl !== !1) {
1711
- const i = t.imageryUrl || at;
2344
+ const r = t.baseUrl || Ut;
2345
+ if (this.resourceManager = new Ve(), this.terrainManager = new qe(), t.imageryUrl !== !1) {
2346
+ const i = t.imageryUrl || Wt;
1712
2347
  this.resourceManager.addOverlay({
1713
2348
  id: this.defaultImageryId,
1714
2349
  type: u.XYZ,
1715
2350
  options: { id: this.defaultImageryId, url: i, type: u.XYZ }
1716
2351
  });
1717
2352
  }
1718
- this.groundDecalManager = new it({ ssp: this.ssp }), xe(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
2353
+ this.groundDecalManager = new Gt({ ssp: this.ssp }), ze(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
1719
2354
  id: this.defaultTerrainId,
1720
- type: M.QUANTIZED_MESH,
2355
+ type: k.QUANTIZED_MESH,
1721
2356
  url: r
1722
2357
  }, this.terrainManager.add(this._currentTerrainConfig), this.terrainManager.setCurrentId(this._currentTerrainConfig.id), this.tiles = this._initTilesRenderer(this._currentTerrainConfig), this._initPlugins(this.tiles, this._currentTerrainConfig);
1723
2358
  }
@@ -1736,9 +2371,9 @@ class Ct {
1736
2371
  * 供 cesium-to-three 标绘图元的 RTE 着色器使用。标绘几何烘焙在绝对 ECEF,只有用
1737
2372
  * ECEF 相机投影才能与「重定向后地形」对齐,同时保持 reorientation 开启(地形不抖)。
1738
2373
  */
1739
- _plotVirtualCamera = new q();
1740
- _reorientInverse = new b();
1741
- _virtualScale = new ve();
2374
+ _plotVirtualCamera = new ae();
2375
+ _reorientInverse = new g();
2376
+ _virtualScale = new a();
1742
2377
  /** 资源管理器(存储配置) */
1743
2378
  resourceManager;
1744
2379
  /** 地形管理器(记录地形列表) */
@@ -1759,7 +2394,7 @@ class Ct {
1759
2394
  * 是否使用 Cesium Ion 地形
1760
2395
  */
1761
2396
  get isCesiumIon() {
1762
- return this._currentTerrainConfig.type === M.CESIUM_ION;
2397
+ return this._currentTerrainConfig.type === k.CESIUM_ION;
1763
2398
  }
1764
2399
  /**
1765
2400
  * 获取当前地形配置
@@ -1805,9 +2440,9 @@ class Ct {
1805
2440
  this._alphaClipMode = e, this.customMaterialPlugin && (this.customMaterialPlugin.alphaClipMode = e), this._updateAlphaClipMode(), this.render();
1806
2441
  }
1807
2442
  _initTilesRenderer(e) {
1808
- return e.type === M.CESIUM_ION ? new T() : (
2443
+ return e.type === k.CESIUM_ION ? new I() : (
1809
2444
  // Cesium Ion 由插件设置 URL
1810
- new T(e.url)
2445
+ new I(e.url)
1811
2446
  );
1812
2447
  }
1813
2448
  /**
@@ -1815,35 +2450,35 @@ class Ct {
1815
2450
  * @param config 地形配置
1816
2451
  */
1817
2452
  _initPlugins(e, t) {
1818
- if (this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type === M.CESIUM_ION ? e.registerPlugin(
1819
- new ce({
2453
+ if (this.tilesFadePlugin = new ee({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new te(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type === k.CESIUM_ION ? e.registerPlugin(
2454
+ new xe({
1820
2455
  apiToken: t.apiToken,
1821
2456
  assetId: t.assetId || "1",
1822
2457
  autoRefreshToken: t.autoRefreshToken ?? !0,
1823
2458
  assetTypeHandler: (r, i) => {
1824
2459
  r === "TERRAIN" && i.getPluginByName("QUANTIZED_MESH_PLUGIN") === null && i.registerPlugin(
1825
- new U({ useRecommendedSettings: !0 })
2460
+ new H({ useRecommendedSettings: !0 })
1826
2461
  );
1827
2462
  }
1828
2463
  })
1829
2464
  ) : (e.registerPlugin(
1830
- new U({ useRecommendedSettings: !0 })
2465
+ new H({ useRecommendedSettings: !0 })
1831
2466
  ), e.fetchData = async (r) => {
1832
2467
  const i = { method: "GET", mode: "cors" };
1833
2468
  if (/layer\.json$/.test(r)) {
1834
- const a = await fetch(r, i).then((n) => n.json());
1835
- return a.metadataAvailability = -1, new Response(JSON.stringify(a));
2469
+ const n = await fetch(r, i).then((o) => o.json());
2470
+ return n.metadataAvailability = -1, new Response(JSON.stringify(n));
1836
2471
  }
1837
2472
  return fetch(r, i);
1838
- }), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new Le(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new he({
2473
+ }), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new Xe(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new be({
1839
2474
  renderer: this.ssp.viewport.renderer,
1840
2475
  overlays: []
1841
- }), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new N(
2476
+ }), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new G(
1842
2477
  this.imageOverlayPlugin,
1843
2478
  this.resourceManager
1844
2479
  ), this.overlayManager.restoreFromResourceManager(), this.options.reorientation !== !1) {
1845
2480
  const r = this.options.reorientation || { lon: 120, lat: 30 };
1846
- this.reorientationPlugin = new j({
2481
+ this.reorientationPlugin = new re({
1847
2482
  lon: r.lon,
1848
2483
  lat: r.lat,
1849
2484
  height: r.height ?? 0.1
@@ -1899,7 +2534,7 @@ class Ct {
1899
2534
  setTerrain(e, t = void 0) {
1900
2535
  if (t && (this.options = { ...this.options, ...t }), this.terrainManager.has(e.id) || this.terrainManager.add(e), this.terrainManager.setCurrentId(e.id), this.terrainManager.currentId === e.id) {
1901
2536
  const r = this.terrainManager.getCurrent();
1902
- e.type === M.QUANTIZED_MESH && r?.type === M.QUANTIZED_MESH && (r.url = e.url);
2537
+ e.type === k.QUANTIZED_MESH && r?.type === k.QUANTIZED_MESH && (r.url = e.url);
1903
2538
  }
1904
2539
  this._disposeTilesRenderer(), this._currentTerrainConfig = e, this.tiles = this._initTilesRenderer(e), this._initPlugins(this.tiles, e), this._enabled && this.ssp.addObject(this.tiles.group), this.render();
1905
2540
  }
@@ -2069,15 +2704,15 @@ class Ct {
2069
2704
  };
2070
2705
  beforeRenderHandler = () => {
2071
2706
  const { camera: e, renderer: t, scene: r } = this.ssp.viewport;
2072
- if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof q) {
2073
- const i = this._ensureGlobeDepth(), a = t.domElement.width, n = t.domElement.height;
2074
- (i.target.width !== a || i.target.height !== n) && i.resize(a, n), ke(e.near, e.far), i.render(t, e, r, this.tiles.group);
2075
- const o = this._buildPlotVirtualCamera(e);
2707
+ if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof ae) {
2708
+ const i = this._ensureGlobeDepth(), n = t.domElement.width, o = t.domElement.height;
2709
+ (i.target.width !== n || i.target.height !== o) && i.resize(n, o), Be(e.near, e.far), i.render(t, e, r, this.tiles.group);
2710
+ const l = this._buildPlotVirtualCamera(e);
2076
2711
  this.groundDecalManager.update({
2077
2712
  depthTexture: i.target.texture,
2078
- width: a,
2079
- height: n,
2080
- camera: o,
2713
+ width: n,
2714
+ height: o,
2715
+ camera: l,
2081
2716
  pixelRatio: t.getPixelRatio()
2082
2717
  });
2083
2718
  }
@@ -2108,7 +2743,7 @@ class Ct {
2108
2743
  _ensureGlobeDepth() {
2109
2744
  if (!this._globeDepth) {
2110
2745
  const { renderer: e } = this.ssp.viewport;
2111
- this._globeDepth = new Ee(
2746
+ this._globeDepth = new $e(
2112
2747
  e.domElement.width,
2113
2748
  e.domElement.height
2114
2749
  );
@@ -2116,7 +2751,7 @@ class Ct {
2116
2751
  return this._globeDepth;
2117
2752
  }
2118
2753
  enable() {
2119
- this._enabled = !0, this.ssp.viewport.camera.layers.enable(Ie), this.ssp.addObject(this.tiles.group), this.ssp.signals.beforeRender.add(this.beforeRenderHandler);
2754
+ this._enabled = !0, this.ssp.viewport.camera.layers.enable(je), this.ssp.addObject(this.tiles.group), this.ssp.signals.beforeRender.add(this.beforeRenderHandler);
2120
2755
  }
2121
2756
  disable() {
2122
2757
  this._enabled = !1, this.ssp.removeObject(this.tiles.group), this.ssp.signals.beforeRender.remove(this.beforeRenderHandler);
@@ -2133,13 +2768,13 @@ class Ct {
2133
2768
  lat: t,
2134
2769
  height: r
2135
2770
  };
2136
- const a = () => {
2137
- const o = f.degToRad(t), d = f.degToRad(e);
2138
- i.transformLatLonHeightToOrigin(o, d, r), this.render(), n();
2139
- }, n = () => {
2140
- this.tiles.removeEventListener("load-root-tileset", a), this.loedTilesSets.delete(a);
2771
+ const n = () => {
2772
+ const l = p.degToRad(t), h = p.degToRad(e);
2773
+ i.transformLatLonHeightToOrigin(l, h, r), this.render(), o();
2774
+ }, o = () => {
2775
+ this.tiles.removeEventListener("load-root-tileset", n), this.loedTilesSets.delete(n);
2141
2776
  };
2142
- return this.tiles.addEventListener("load-root-tileset", a), this.loedTilesSets.add(a), this.tiles.root && a(), n;
2777
+ return this.tiles.addEventListener("load-root-tileset", n), this.loedTilesSets.add(n), this.tiles.root && n(), o;
2143
2778
  }
2144
2779
  dispose() {
2145
2780
  this.disable(), this.terrainManager.dispose(), this.overlayManager.dispose(), this.groundDecalManager?.dispose(), this._globeDepth?.dispose(), this._globeDepth = void 0, this.loedTilesSets.forEach(
@@ -2147,12 +2782,12 @@ class Ct {
2147
2782
  ), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
2148
2783
  }
2149
2784
  }
2150
- const C = {
2785
+ const P = {
2151
2786
  DEFAULT: 0,
2152
2787
  GRADIENT: 1,
2153
2788
  TOPOGRAPHIC_LINES: 2,
2154
2789
  LIGHTING: 3
2155
- }, nt = {
2790
+ }, Jt = {
2156
2791
  vertexShader: (
2157
2792
  /* glsl */
2158
2793
  `
@@ -2178,7 +2813,7 @@ const C = {
2178
2813
  }
2179
2814
  `
2180
2815
  )
2181
- }, ot = {
2816
+ }, zt = {
2182
2817
  vertexShader: (
2183
2818
  /* glsl */
2184
2819
  `
@@ -2224,10 +2859,10 @@ const C = {
2224
2859
  `
2225
2860
  )
2226
2861
  };
2227
- let D = null, G = null, F = null;
2228
- class lt {
2862
+ let z = null, B = null, $ = null;
2863
+ class Bt {
2229
2864
  constructor(e, t) {
2230
- this.ssp = e, this.options = t, "url" in this.options ? this.tiles = new T(this.options.url) : (this.tiles = new T(), this._initCesiumIon(this.options)), this._initBasePlugins(this.options);
2865
+ this.ssp = e, this.options = t, "url" in this.options ? this.tiles = new I(this.options.url) : (this.tiles = new I(), this._initCesiumIon(this.options)), this._initBasePlugins(this.options);
2231
2866
  }
2232
2867
  tiles;
2233
2868
  tilesFadePlugin;
@@ -2235,10 +2870,10 @@ class lt {
2235
2870
  reorientationPlugin;
2236
2871
  options;
2237
2872
  // 用于模型居中
2238
- _box = new _e();
2239
- _sphere = new de();
2873
+ _box = new Fe();
2874
+ _sphere = new Ce();
2240
2875
  // 当前材质类型
2241
- _materialType = C.DEFAULT;
2876
+ _materialType = P.DEFAULT;
2242
2877
  // 按需渲染标志
2243
2878
  _needsUpdate = !0;
2244
2879
  _cameraTransitionStart = !1;
@@ -2248,7 +2883,7 @@ class lt {
2248
2883
  */
2249
2884
  _initCesiumIon(e) {
2250
2885
  this.tiles.registerPlugin(
2251
- new ce({
2886
+ new xe({
2252
2887
  apiToken: e.apiToken,
2253
2888
  assetId: e.assetId,
2254
2889
  autoRefreshToken: e.autoRefreshToken ?? !0
@@ -2259,9 +2894,9 @@ class lt {
2259
2894
  * 初始化基础插件
2260
2895
  */
2261
2896
  _initBasePlugins(e) {
2262
- if (e._managedByPlugin || (D === null ? D = this.tiles.lruCache : this.tiles.lruCache = D, G === null ? G = this.tiles.parseQueue : this.tiles.parseQueue = G, F === null ? F = this.tiles.downloadQueue : this.tiles.downloadQueue = F, this.tiles.lruCache.maxSize = 600, this.tiles.lruCache.minSize = 300, this.tiles.lruCache.unloadPercent = 0.8), this._setupGLTFLoader(), this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), this.tiles.registerPlugin(this.tilesFadePlugin), this.tiles.registerPlugin(this.updateOnChangePlugin), this.tiles.maxDepth = e.maxDepth ?? 20, this.tiles.errorTarget = e.errorTarget ?? 2, this.options.reorientation) {
2897
+ if (e._managedByPlugin || (z === null ? z = this.tiles.lruCache : this.tiles.lruCache = z, B === null ? B = this.tiles.parseQueue : this.tiles.parseQueue = B, $ === null ? $ = this.tiles.downloadQueue : this.tiles.downloadQueue = $, this.tiles.lruCache.maxSize = 600, this.tiles.lruCache.minSize = 300, this.tiles.lruCache.unloadPercent = 0.8), this._setupGLTFLoader(), this.tilesFadePlugin = new ee({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new te(), this.tiles.registerPlugin(this.tilesFadePlugin), this.tiles.registerPlugin(this.updateOnChangePlugin), this.tiles.maxDepth = e.maxDepth ?? 20, this.tiles.errorTarget = e.errorTarget ?? 2, this.options.reorientation) {
2263
2898
  const t = this.options.reorientation || { lon: 120, lat: 30 };
2264
- this.reorientationPlugin = new j({
2899
+ this.reorientationPlugin = new re({
2265
2900
  lon: t.lon,
2266
2901
  lat: t.lat,
2267
2902
  height: t.height ?? 0.1
@@ -2277,10 +2912,10 @@ class lt {
2277
2912
  * 设置 GLTF Loader
2278
2913
  */
2279
2914
  _setupGLTFLoader() {
2280
- const e = new oe(this.tiles.manager), t = this.ssp.manager?.store?.modelManager;
2915
+ const e = new Me(this.tiles.manager), t = this.ssp.manager?.store?.modelManager;
2281
2916
  if (t?.gltfLoader) {
2282
- const { dracoLoader: r, ktx2Loader: i, meshoptDecoder: a } = t.gltfLoader;
2283
- r && e.setDRACOLoader(r), i && e.setKTX2Loader(i), a && e.setMeshoptDecoder(a);
2917
+ const { dracoLoader: r, ktx2Loader: i, meshoptDecoder: n } = t.gltfLoader;
2918
+ r && e.setDRACOLoader(r), i && e.setKTX2Loader(i), n && e.setMeshoptDecoder(n);
2284
2919
  }
2285
2920
  this.tiles.manager.addHandler(/\.gltf$/, e);
2286
2921
  }
@@ -2321,7 +2956,7 @@ class lt {
2321
2956
  onLoadModel = ({ scene: e }) => {
2322
2957
  e.traverse((t) => {
2323
2958
  t.isMesh && (t.originalMaterial = t.material);
2324
- }), this._materialType !== C.DEFAULT && this.updateMaterial(e);
2959
+ }), this._materialType !== P.DEFAULT && this.updateMaterial(e);
2325
2960
  };
2326
2961
  /**
2327
2962
  * 更新场景中所有网格的材质(参考 customMaterial.js)
@@ -2331,19 +2966,19 @@ class lt {
2331
2966
  e.traverse((r) => {
2332
2967
  if (r.isMesh)
2333
2968
  switch (r.material && r.material !== r.originalMaterial && r.material.dispose(), t) {
2334
- case C.DEFAULT:
2969
+ case P.DEFAULT:
2335
2970
  r.material = r.originalMaterial, r.material && (r.material.side = 2), r.receiveShadow = !1, r.castShadow = !1;
2336
2971
  break;
2337
- case C.GRADIENT:
2338
- r.material = new V(nt), r.material.side = 2, r.receiveShadow = !1, r.castShadow = !1;
2972
+ case P.GRADIENT:
2973
+ r.material = new le(Jt), r.material.side = 2, r.receiveShadow = !1, r.castShadow = !1;
2339
2974
  break;
2340
- case C.TOPOGRAPHIC_LINES: {
2341
- const i = new V(ot);
2975
+ case P.TOPOGRAPHIC_LINES: {
2976
+ const i = new le(zt);
2342
2977
  i.extensions = { derivatives: !0 }, i.side = 2, r.material = i, r.receiveShadow = !1, r.castShadow = !1;
2343
2978
  break;
2344
2979
  }
2345
- case C.LIGHTING:
2346
- r.material = new Oe(), r.material.side = 2, r.receiveShadow = !0, r.castShadow = !0;
2980
+ case P.LIGHTING:
2981
+ r.material = new Ae(), r.material.side = 2, r.receiveShadow = !0, r.castShadow = !0;
2347
2982
  break;
2348
2983
  }
2349
2984
  });
@@ -2389,13 +3024,13 @@ class lt {
2389
3024
  lat: t,
2390
3025
  height: r
2391
3026
  };
2392
- const a = () => {
2393
- const o = f.degToRad(t), d = f.degToRad(e);
2394
- i.transformLatLonHeightToOrigin(o, d, r), this.render(), n();
2395
- }, n = () => {
2396
- this.tiles.removeEventListener("load-root-tileset", a), this.loedTilesSets.delete(a);
3027
+ const n = () => {
3028
+ const l = p.degToRad(t), h = p.degToRad(e);
3029
+ i.transformLatLonHeightToOrigin(l, h, r), this.render(), o();
3030
+ }, o = () => {
3031
+ this.tiles.removeEventListener("load-root-tileset", n), this.loedTilesSets.delete(n);
2397
3032
  };
2398
- return this.tiles.addEventListener("load-root-tileset", a), this.loedTilesSets.add(a), this.tiles.root && a(), n;
3033
+ return this.tiles.addEventListener("load-root-tileset", n), this.loedTilesSets.add(n), this.tiles.root && n(), o;
2399
3034
  }
2400
3035
  dispose() {
2401
3036
  this.disable(), this.loedTilesSets.forEach(
@@ -2403,8 +3038,8 @@ class lt {
2403
3038
  ), this.loedTilesSets.clear(), this.tiles.removeEventListener("load-model", this.onLoadModel), this.tiles.removeEventListener("dispose-model", this.onDisposeModel), this.options._managedByPlugin || (this.tiles.removeEventListener("load-model", this._onNeedsRender), this.tiles.removeEventListener("needs-render", this._onNeedsRender), this.tiles.removeEventListener("needs-update", this._onNeedsRender)), this.tiles.dispose();
2404
3039
  }
2405
3040
  }
2406
- const J = 2;
2407
- class bt {
3041
+ const j = 2;
3042
+ class ar {
2408
3043
  constructor(e) {
2409
3044
  this.ssp = e;
2410
3045
  const { controls: t, viewport: r } = e;
@@ -2425,12 +3060,12 @@ class bt {
2425
3060
  _downloadQueue = null;
2426
3061
  _referenceOrigin = null;
2427
3062
  _referencePlacements = /* @__PURE__ */ new WeakMap();
2428
- _referenceFrame = new b();
2429
- _targetFrame = new b();
2430
- _sourceFrame = new b();
2431
- _placementMatrix = new b();
2432
- _upCorrectionMatrix = new b();
2433
- _boundingSphere = new de();
3063
+ _referenceFrame = new g();
3064
+ _targetFrame = new g();
3065
+ _sourceFrame = new g();
3066
+ _placementMatrix = new g();
3067
+ _upCorrectionMatrix = new g();
3068
+ _boundingSphere = new Ce();
2434
3069
  _beforeRenderHandler = () => {
2435
3070
  this.needsUpdate && (this.needsUpdate = !1, this.ssp.viewport.camera.updateMatrixWorld(), this.tilesMap.forEach((e) => {
2436
3071
  e.tiles.setCamera(this.ssp.viewport.camera), e.tiles.setResolutionFromRenderer(this.ssp.viewport.camera, this.ssp.viewport.renderer), e.applyAutoCenter(), e.tiles.group.updateMatrixWorld(), e.tiles.update();
@@ -2454,8 +3089,8 @@ class bt {
2454
3089
  lat: e.lat,
2455
3090
  height: e.height ?? 0.1
2456
3091
  }, this.tilesMap.forEach((i) => {
2457
- const a = this._referencePlacements.get(i) ?? null;
2458
- this.applyReferencePlacement(i, a);
3092
+ const n = this._referencePlacements.get(i) ?? null;
3093
+ this.applyReferencePlacement(i, n);
2459
3094
  });
2460
3095
  }
2461
3096
  clearReferenceOrigin() {
@@ -2470,21 +3105,21 @@ class bt {
2470
3105
  async loadTiles(e) {
2471
3106
  const t = "url" in e ? e.url : e.assetId;
2472
3107
  if (this.tilesMap.has(t))
2473
- return R.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
2474
- const { ssp: r } = this, i = this._getReferencePlacement(e), a = this._getTilesRendererOptions(e, i), n = new lt(r, {
2475
- ...a,
3108
+ return D.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
3109
+ const { ssp: r } = this, i = this._getReferencePlacement(e), n = this._getTilesRendererOptions(e, i), o = new Bt(r, {
3110
+ ...n,
2476
3111
  _managedByPlugin: !0
2477
3112
  });
2478
- i && (this._referencePlacements.set(n, i), n.options.reorientation = i);
2479
- const { tiles: o } = n;
2480
- this._lruCache === null ? this._lruCache = o.lruCache : o.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = o.parseQueue : o.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = o.downloadQueue : o.downloadQueue = this._downloadQueue, o.lruCache.maxSize = 600, o.lruCache.minSize = 300, o.lruCache.unloadPercent = 0.8, this.tilesMap.set(t, n), o.setCamera(this._tilesCamera), o.setResolutionFromRenderer(this._tilesCamera, r.viewport.renderer), r.addObject(o.group), this._referenceOrigin && this.applyReferencePlacement(n, i);
2481
- const d = () => {
3113
+ i && (this._referencePlacements.set(o, i), o.options.reorientation = i);
3114
+ const { tiles: l } = o;
3115
+ this._lruCache === null ? this._lruCache = l.lruCache : l.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = l.parseQueue : l.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = l.downloadQueue : l.downloadQueue = this._downloadQueue, l.lruCache.maxSize = 600, l.lruCache.minSize = 300, l.lruCache.unloadPercent = 0.8, this.tilesMap.set(t, o), l.setCamera(this._tilesCamera), l.setResolutionFromRenderer(this._tilesCamera, r.viewport.renderer), r.addObject(l.group), this._referenceOrigin && this.applyReferencePlacement(o, i);
3116
+ const h = () => {
2482
3117
  this.cameraTransitionStart || (this.needsUpdate = !0, r.render());
2483
3118
  };
2484
- return o.addEventListener("load-model", d), new Promise((l) => {
2485
- o.addEventListener("load-tile-set", () => {
2486
- const h = this._referencePlacements.get(n);
2487
- this._referenceOrigin && this.applyReferencePlacement(n, h ?? null), d(), l(n);
3119
+ return l.addEventListener("load-model", h), new Promise((c) => {
3120
+ l.addEventListener("load-tile-set", () => {
3121
+ const d = this._referencePlacements.get(o);
3122
+ this._referenceOrigin && this.applyReferencePlacement(o, d ?? null), h(), c(o);
2488
3123
  });
2489
3124
  });
2490
3125
  }
@@ -2518,41 +3153,41 @@ class bt {
2518
3153
  }), this.tilesMap.clear();
2519
3154
  }
2520
3155
  invalidate(e, t, r, i) {
2521
- (i ? [i] : Array.from(this.tilesMap.values())).forEach((n) => {
2522
- const o = this._referencePlacements.get(n) ?? null;
2523
- this._referenceOrigin ? this.applyReferencePlacement(n, {
2524
- ...o ?? {},
3156
+ (i ? [i] : Array.from(this.tilesMap.values())).forEach((o) => {
3157
+ const l = this._referencePlacements.get(o) ?? null;
3158
+ this._referenceOrigin ? this.applyReferencePlacement(o, {
3159
+ ...l ?? {},
2525
3160
  lon: e,
2526
3161
  lat: t,
2527
3162
  height: r
2528
- }) : n.invalidate(e, t, r);
3163
+ }) : o.invalidate(e, t, r);
2529
3164
  });
2530
3165
  }
2531
3166
  applyReferencePlacement(e, t) {
2532
3167
  if (!this._referenceOrigin)
2533
- return R.utils.warn("TilesRendererManager: reference origin is not set."), !1;
2534
- const { ellipsoid: r, group: i } = e.tiles, a = this._referenceOrigin, n = this._isGeoreferenced(e);
3168
+ return D.utils.warn("TilesRendererManager: reference origin is not set."), !1;
3169
+ const { ellipsoid: r, group: i } = e.tiles, n = this._referenceOrigin, o = this._isGeoreferenced(e);
2535
3170
  if (r.getObjectFrame(
2536
- f.degToRad(a.lat),
2537
- f.degToRad(a.lon),
2538
- a.height ?? 0.1,
3171
+ p.degToRad(n.lat),
3172
+ p.degToRad(n.lon),
3173
+ n.height ?? 0.1,
2539
3174
  0,
2540
3175
  0,
2541
3176
  0,
2542
3177
  this._referenceFrame,
2543
- J
3178
+ j
2544
3179
  ), this._placementMatrix.copy(this._referenceFrame).invert(), t)
2545
3180
  r.getObjectFrame(
2546
- f.degToRad(t.lat),
2547
- f.degToRad(t.lon),
3181
+ p.degToRad(t.lat),
3182
+ p.degToRad(t.lon),
2548
3183
  t.height ?? 0,
2549
3184
  0,
2550
3185
  0,
2551
3186
  0,
2552
3187
  this._targetFrame,
2553
- J
2554
- ), this._placementMatrix.multiply(this._targetFrame), n ? (this._sourceFrame.copy(this._getSourceFrame(e)).invert(), this._placementMatrix.multiply(this._sourceFrame)) : (this._getUpCorrectionMatrix(t.up ?? "+z"), this._placementMatrix.multiply(this._upCorrectionMatrix));
2555
- else if (!n)
3188
+ j
3189
+ ), this._placementMatrix.multiply(this._targetFrame), o ? (this._sourceFrame.copy(this._getSourceFrame(e)).invert(), this._placementMatrix.multiply(this._sourceFrame)) : (this._getUpCorrectionMatrix(t.up ?? "+z"), this._placementMatrix.multiply(this._upCorrectionMatrix));
3190
+ else if (!o)
2556
3191
  return !1;
2557
3192
  return i.matrix.copy(this._placementMatrix), i.matrix.decompose(i.position, i.quaternion, i.scale), i.updateMatrixWorld(!0), t && (this._referencePlacements.set(e, t), e.options.reorientation = t), this.needsUpdate = !0, e.render(), !0;
2558
3193
  }
@@ -2576,7 +3211,7 @@ class bt {
2576
3211
  0,
2577
3212
  0,
2578
3213
  this._sourceFrame,
2579
- J
3214
+ j
2580
3215
  ), this._sourceFrame;
2581
3216
  }
2582
3217
  _getReferencePlacement(e) {
@@ -2622,224 +3257,228 @@ class bt {
2622
3257
  this.clear(), this.ssp.signals.beforeRender.remove(this._beforeRenderHandler), this.ssp.signals.cameraObjectChange.remove(this._onCameraObjectChange), this._lruCache = null, this._parseQueue = null, this._downloadQueue = null;
2623
3258
  }
2624
3259
  }
2625
- function Tt(s) {
3260
+ function lr(s) {
2626
3261
  if (s == null) return [0, 0, 0, 0];
2627
3262
  const e = String(s).trim().toLowerCase();
2628
3263
  if (e === "" || e === "transparent") return [0, 0, 0, 0];
2629
3264
  const t = /^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]*\.?[0-9]+)\s*\)$/.exec(e);
2630
3265
  if (t !== null) {
2631
- const i = Number(t[1]) / 255, a = Number(t[2]) / 255, n = Number(t[3]) / 255, o = Number(t[4]);
2632
- return [v(i), v(a), v(n), v(o)];
3266
+ const i = Number(t[1]) / 255, n = Number(t[2]) / 255, o = Number(t[3]) / 255, l = Number(t[4]);
3267
+ return [_(i), _(n), _(o), _(l)];
2633
3268
  }
2634
3269
  const r = /^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/.exec(e);
2635
3270
  if (r !== null) {
2636
- const i = Number(r[1]) / 255, a = Number(r[2]) / 255, n = Number(r[3]) / 255;
2637
- return [v(i), v(a), v(n), 1];
3271
+ const i = Number(r[1]) / 255, n = Number(r[2]) / 255, o = Number(r[3]) / 255;
3272
+ return [_(i), _(n), _(o), 1];
2638
3273
  }
2639
3274
  if (e.startsWith("#")) {
2640
3275
  const i = e.slice(1);
2641
3276
  if (i.length === 3) {
2642
- const a = parseInt(i[0] + i[0], 16) / 255, n = parseInt(i[1] + i[1], 16) / 255, o = parseInt(i[2] + i[2], 16) / 255;
2643
- if (Number.isFinite(a) && Number.isFinite(n) && Number.isFinite(o))
2644
- return [a, n, o, 1];
3277
+ const n = parseInt(i[0] + i[0], 16) / 255, o = parseInt(i[1] + i[1], 16) / 255, l = parseInt(i[2] + i[2], 16) / 255;
3278
+ if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(l))
3279
+ return [n, o, l, 1];
2645
3280
  } else if (i.length === 6) {
2646
- const a = parseInt(i.slice(0, 2), 16) / 255, n = parseInt(i.slice(2, 4), 16) / 255, o = parseInt(i.slice(4, 6), 16) / 255;
2647
- if (Number.isFinite(a) && Number.isFinite(n) && Number.isFinite(o))
2648
- return [a, n, o, 1];
3281
+ const n = parseInt(i.slice(0, 2), 16) / 255, o = parseInt(i.slice(2, 4), 16) / 255, l = parseInt(i.slice(4, 6), 16) / 255;
3282
+ if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(l))
3283
+ return [n, o, l, 1];
2649
3284
  } else if (i.length === 8) {
2650
- const a = parseInt(i.slice(0, 2), 16) / 255, n = parseInt(i.slice(2, 4), 16) / 255, o = parseInt(i.slice(4, 6), 16) / 255, d = parseInt(i.slice(6, 8), 16) / 255;
2651
- if (Number.isFinite(a) && Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(d))
2652
- return [a, n, o, d];
3285
+ const n = parseInt(i.slice(0, 2), 16) / 255, o = parseInt(i.slice(2, 4), 16) / 255, l = parseInt(i.slice(4, 6), 16) / 255, h = parseInt(i.slice(6, 8), 16) / 255;
3286
+ if (Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(l) && Number.isFinite(h))
3287
+ return [n, o, l, h];
2653
3288
  }
2654
3289
  }
2655
3290
  return [1, 1, 1, 1];
2656
3291
  }
2657
- function Pt(s, e) {
2658
- typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] = v(s.fillOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[0] = v(s.opacity) : e[0] = 1, typeof s.strokeOpacity == "number" && Number.isFinite(s.strokeOpacity) ? e[1] = v(s.strokeOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[1] = v(s.opacity) : e[1] = 1;
3292
+ function cr(s, e) {
3293
+ typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] = _(s.fillOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[0] = _(s.opacity) : e[0] = 1, typeof s.strokeOpacity == "number" && Number.isFinite(s.strokeOpacity) ? e[1] = _(s.strokeOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[1] = _(s.opacity) : e[1] = 1;
2659
3294
  }
2660
- function v(s) {
3295
+ function _(s) {
2661
3296
  return !Number.isFinite(s) || s < 0 ? 0 : s > 1 ? 1 : s;
2662
3297
  }
2663
- const ne = 100, Q = 1e-4;
2664
- function P(s, e) {
3298
+ const _e = 100, ie = 1e-4;
3299
+ function E(s, e) {
2665
3300
  const t = s[0] - e[0], r = s[1] - e[1];
2666
3301
  return Math.sqrt(t * t + r * r);
2667
3302
  }
2668
- function dt(s) {
3303
+ function $t(s) {
2669
3304
  let e = 0;
2670
3305
  for (let t = 0; t < s.length - 1; t++)
2671
- e += P(s[t], s[t + 1]);
3306
+ e += E(s[t], s[t + 1]);
2672
3307
  return e;
2673
3308
  }
2674
- function xt(s) {
2675
- return Math.pow(dt(s), 0.99);
3309
+ function hr(s) {
3310
+ return Math.pow($t(s), 0.99);
2676
3311
  }
2677
- function me(s, e) {
3312
+ function Re(s, e) {
2678
3313
  return [(s[0] + e[0]) / 2, (s[1] + e[1]) / 2];
2679
3314
  }
2680
- function $(s, e) {
3315
+ function K(s, e) {
2681
3316
  let t;
2682
3317
  const r = Math.asin(
2683
- Math.abs(e[1] - s[1]) / P(s, e)
3318
+ Math.abs(e[1] - s[1]) / E(s, e)
2684
3319
  );
2685
3320
  return e[1] >= s[1] && e[0] >= s[0] ? t = r + Math.PI : e[1] >= s[1] && e[0] < s[0] ? t = Math.PI * 2 - r : e[1] < s[1] && e[0] < s[0] ? t = r : t = Math.PI - r, t;
2686
3321
  }
2687
- function kt(s, e, t) {
2688
- const r = $(e, s) - $(e, t);
3322
+ function dr(s, e, t) {
3323
+ const r = K(e, s) - K(e, t);
2689
3324
  return r < 0 ? r + Math.PI * 2 : r;
2690
3325
  }
2691
- function ht(s, e, t) {
3326
+ function jt(s, e, t) {
2692
3327
  return (t[1] - s[1]) * (e[0] - s[0]) > (e[1] - s[1]) * (t[0] - s[0]);
2693
3328
  }
2694
- function Et(s, e, t, r, i) {
2695
- const a = $(s, e), n = i ? a + t : a - t, o = r * Math.cos(n), d = r * Math.sin(n);
2696
- return [e[0] + o, e[1] + d];
3329
+ function ur(s, e, t, r, i) {
3330
+ const n = K(s, e), o = i ? n + t : n - t, l = r * Math.cos(o), h = r * Math.sin(o);
3331
+ return [e[0] + l, e[1] + h];
2697
3332
  }
2698
- function H(s, e, t) {
3333
+ function se(s, e, t) {
2699
3334
  let r = s[0] - e[0], i = s[1] - e[1];
2700
- const a = Math.sqrt(r * r + i * i);
2701
- r /= a, i /= a;
2702
- let n = t[0] - e[0], o = t[1] - e[1];
2703
- const d = Math.sqrt(n * n + o * o);
2704
- return n /= d, o /= d, [r + n, i + o];
3335
+ const n = Math.sqrt(r * r + i * i);
3336
+ r /= n, i /= n;
3337
+ let o = t[0] - e[0], l = t[1] - e[1];
3338
+ const h = Math.sqrt(o * o + l * l);
3339
+ return o /= h, l /= h, [r + o, i + l];
2705
3340
  }
2706
- function X(s, e, t, r) {
2707
- const i = H(e, t, r);
2708
- let a, n, o, d, l;
2709
- const h = Math.sqrt(i[0] * i[0] + i[1] * i[1]), c = i[0] / h, y = i[1] / h, _ = P(e, t), p = P(t, r);
2710
- return h > Q ? ht(e, t, r) ? (o = s * _, d = t[0] - o * y, l = t[1] + o * c, a = [d, l], o = s * p, d = t[0] + o * y, l = t[1] - o * c, n = [d, l]) : (o = s * _, d = t[0] + o * y, l = t[1] - o * c, a = [d, l], o = s * p, d = t[0] - o * y, l = t[1] + o * c, n = [d, l]) : (d = t[0] + s * (e[0] - t[0]), l = t[1] + s * (e[1] - t[1]), a = [d, l], d = t[0] + s * (r[0] - t[0]), l = t[1] + s * (r[1] - t[1]), n = [d, l]), [a, n];
3341
+ function ne(s, e, t, r) {
3342
+ const i = se(e, t, r);
3343
+ let n, o, l, h, c;
3344
+ const d = Math.sqrt(i[0] * i[0] + i[1] * i[1]), f = i[0] / d, v = i[1] / d, M = E(e, t), y = E(t, r);
3345
+ return d > ie ? jt(e, t, r) ? (l = s * M, h = t[0] - l * v, c = t[1] + l * f, n = [h, c], l = s * y, h = t[0] + l * v, c = t[1] - l * f, o = [h, c]) : (l = s * M, h = t[0] + l * v, c = t[1] - l * f, n = [h, c], l = s * y, h = t[0] - l * v, c = t[1] + l * f, o = [h, c]) : (h = t[0] + s * (e[0] - t[0]), c = t[1] + s * (e[1] - t[1]), n = [h, c], h = t[0] + s * (r[0] - t[0]), c = t[1] + s * (r[1] - t[1]), o = [h, c]), [n, o];
2711
3346
  }
2712
- function ut(s) {
2713
- const e = s[0], t = s[1], r = s[2], a = X(0, e, t, r)[0], n = H(e, t, r), o = Math.sqrt(n[0] * n[0] + n[1] * n[1]);
2714
- let d;
2715
- if (o > Q) {
2716
- const l = me(e, t), h = e[0] - l[0], c = e[1] - l[1], _ = 2 / P(e, t), p = -_ * c, g = _ * h, m = p * p - g * g, S = 2 * p * g, w = g * g - p * p, E = a[0] - l[0], x = a[1] - l[1];
2717
- d = [
2718
- l[0] + m * E + S * x,
2719
- l[1] + S * E + w * x
3347
+ function Ht(s) {
3348
+ const e = s[0], t = s[1], r = s[2], n = ne(0, e, t, r)[0], o = se(e, t, r), l = Math.sqrt(o[0] * o[0] + o[1] * o[1]);
3349
+ let h;
3350
+ if (l > ie) {
3351
+ const c = Re(e, t), d = e[0] - c[0], f = e[1] - c[1], M = 2 / E(e, t), y = -M * f, m = M * d, w = y * y - m * m, x = 2 * y * m, T = m * m - y * y, F = n[0] - c[0], R = n[1] - c[1];
3352
+ h = [
3353
+ c[0] + w * F + x * R,
3354
+ c[1] + x * F + T * R
2720
3355
  ];
2721
3356
  } else
2722
- d = [
2723
- e[0] + A(1) * (t[0] - e[0]),
2724
- e[1] + A(1) * (t[1] - e[1])
3357
+ h = [
3358
+ e[0] + U(1) * (t[0] - e[0]),
3359
+ e[1] + U(1) * (t[1] - e[1])
2725
3360
  ];
2726
- return d;
3361
+ return h;
2727
3362
  }
2728
- function A(s) {
3363
+ function U(s) {
2729
3364
  return 0.3 * s;
2730
3365
  }
2731
- function ct(s) {
2732
- const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1], n = X(0, t, r, i)[1], o = H(t, r, i), d = Math.sqrt(o[0] * o[0] + o[1] * o[1]);
2733
- let l;
2734
- if (d > Q) {
2735
- const h = me(r, i), c = i[0] - h[0], y = i[1] - h[1], p = 2 / P(r, i), g = -p * y, m = p * c, S = g * g - m * m, w = 2 * g * m, E = m * m - g * g, x = n[0] - h[0], Y = n[1] - h[1];
2736
- l = [
2737
- h[0] + S * x + w * Y,
2738
- h[1] + w * x + E * Y
3366
+ function Qt(s) {
3367
+ const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1], o = ne(0, t, r, i)[1], l = se(t, r, i), h = Math.sqrt(l[0] * l[0] + l[1] * l[1]);
3368
+ let c;
3369
+ if (h > ie) {
3370
+ const d = Re(r, i), f = i[0] - d[0], v = i[1] - d[1], y = 2 / E(r, i), m = -y * v, w = y * f, x = m * m - w * w, T = 2 * m * w, F = w * w - m * m, R = o[0] - d[0], oe = o[1] - d[1];
3371
+ c = [
3372
+ d[0] + x * R + T * oe,
3373
+ d[1] + T * R + F * oe
2739
3374
  ];
2740
3375
  } else
2741
- l = [
2742
- i[0] + A(1) * (r[0] - i[0]),
2743
- i[1] + A(1) * (r[1] - i[1])
3376
+ c = [
3377
+ i[0] + U(1) * (r[0] - i[0]),
3378
+ i[1] + U(1) * (r[1] - i[1])
2744
3379
  ];
2745
- return l;
3380
+ return c;
2746
3381
  }
2747
- function It(s, e) {
2748
- const r = [ut(e)];
2749
- for (let n = 0; n < e.length - 2; n++) {
2750
- const o = e[n], d = e[n + 1], l = e[n + 2], h = X(s, o, d, l);
2751
- r.push(h[0], h[1]);
3382
+ function gr(s, e) {
3383
+ const r = [Ht(e)];
3384
+ for (let o = 0; o < e.length - 2; o++) {
3385
+ const l = e[o], h = e[o + 1], c = e[o + 2], d = ne(s, l, h, c);
3386
+ r.push(d[0], d[1]);
2752
3387
  }
2753
- const i = ct(e);
3388
+ const i = Qt(e);
2754
3389
  r.push(i);
2755
- const a = [];
2756
- for (let n = 0; n < e.length - 1; n++) {
2757
- const o = e[n], d = e[n + 1];
2758
- a.push(o);
2759
- for (let l = 0; l < ne; l++) {
2760
- const h = l / ne, c = Math.pow(1 - h, 3) * o[0] + 3 * h * Math.pow(1 - h, 2) * r[n * 2][0] + 3 * h * h * (1 - h) * r[n * 2 + 1][0] + Math.pow(h, 3) * d[0], y = Math.pow(1 - h, 3) * o[1] + 3 * h * Math.pow(1 - h, 2) * r[n * 2][1] + 3 * h * h * (1 - h) * r[n * 2 + 1][1] + Math.pow(h, 3) * d[1];
2761
- a.push([c, y]);
3390
+ const n = [];
3391
+ for (let o = 0; o < e.length - 1; o++) {
3392
+ const l = e[o], h = e[o + 1];
3393
+ n.push(l);
3394
+ for (let c = 0; c < _e; c++) {
3395
+ const d = c / _e, f = Math.pow(1 - d, 3) * l[0] + 3 * d * Math.pow(1 - d, 2) * r[o * 2][0] + 3 * d * d * (1 - d) * r[o * 2 + 1][0] + Math.pow(d, 3) * h[0], v = Math.pow(1 - d, 3) * l[1] + 3 * d * Math.pow(1 - d, 2) * r[o * 2][1] + 3 * d * d * (1 - d) * r[o * 2 + 1][1] + Math.pow(d, 3) * h[1];
3396
+ n.push([f, v]);
2762
3397
  }
2763
- a.push(d);
3398
+ n.push(h);
2764
3399
  }
2765
- return a;
3400
+ return n;
2766
3401
  }
2767
- function Rt(s) {
3402
+ function pr(s) {
2768
3403
  if (s.length <= 2) return s;
2769
3404
  const e = 2, t = [], r = s.length - e - 1;
2770
3405
  t.push(s[0]);
2771
3406
  for (let i = 0; i <= r; i++)
2772
- for (let a = 0; a <= 1; a += 0.05) {
2773
- let n = 0, o = 0;
2774
- for (let d = 0; d <= e; d++) {
2775
- const l = pt(d, a);
2776
- n += l * s[i + d][0], o += l * s[i + d][1];
3407
+ for (let n = 0; n <= 1; n += 0.05) {
3408
+ let o = 0, l = 0;
3409
+ for (let h = 0; h <= e; h++) {
3410
+ const c = Yt(h, n);
3411
+ o += c * s[i + h][0], l += c * s[i + h][1];
2777
3412
  }
2778
- t.push([n, o]);
3413
+ t.push([o, l]);
2779
3414
  }
2780
3415
  return t.push(s[s.length - 1]), t;
2781
3416
  }
2782
- function pt(s, e) {
3417
+ function Yt(s, e) {
2783
3418
  return s === 0 ? Math.pow(e - 1, 2) / 2 : s === 1 ? (-2 * Math.pow(e, 2) + 2 * e + 1) / 2 : s === 2 ? Math.pow(e, 2) / 2 : 0;
2784
3419
  }
2785
- function Nt(s, e) {
2786
- return W(s, e);
3420
+ function fr(s, e) {
3421
+ return Q(s, e);
2787
3422
  }
2788
- function At(s, e) {
2789
- return ye(s, e);
3423
+ function yr(s, e) {
3424
+ return Ee(s, e);
2790
3425
  }
2791
- function Lt(s) {
2792
- return !s || s.length < 3 ? [] : fe(s);
3426
+ function mr(s) {
3427
+ return !s || s.length < 3 ? [] : Ie(s);
2793
3428
  }
2794
- function Dt(s) {
2795
- return !s || s.length < 3 ? [] : ge(s);
3429
+ function vr(s) {
3430
+ return !s || s.length < 3 ? [] : Pe(s);
2796
3431
  }
2797
- function Gt(s) {
2798
- return !s || s.length < 2 ? [] : pe(s);
3432
+ function wr(s) {
3433
+ return !s || s.length < 2 ? [] : Te(s);
2799
3434
  }
2800
3435
  export {
2801
- wt as ArcgisTilesRenderer,
2802
- ne as FITTING_COUNT,
2803
- je as GisPlotArrow,
2804
- O as GisPlotBase,
2805
- Xe as GisPlotCircle,
2806
- Ue as GisPlotLine,
2807
- Je as GisPlotPoint,
2808
- We as GisPlotPolygon,
2809
- $e as GisPlotRectangle,
2810
- Be as GisPlotSector,
2811
- Qe as GisPlotText,
2812
- it as GroundDecalManager,
2813
- C as MaterialType,
2814
- P as MathDistance,
2815
- me as Mid,
2816
- N as OverlayManager,
3436
+ sr as ArcgisTilesRenderer,
3437
+ Z as EMERGENCY_RESOURCE_ICON_BY_ONTOLOGY_ID,
3438
+ nr as EMERGENCY_RESOURCE_ONTOLOGY_IDS,
3439
+ _e as FITTING_COUNT,
3440
+ nt as GisPlotArrow,
3441
+ b as GisPlotBase,
3442
+ lt as GisPlotCircle,
3443
+ et as GisPlotLine,
3444
+ Ke as GisPlotPoint,
3445
+ tt as GisPlotPolygon,
3446
+ rt as GisPlotRectangle,
3447
+ st as GisPlotSector,
3448
+ ot as GisPlotText,
3449
+ Gt as GroundDecalManager,
3450
+ P as MaterialType,
3451
+ E as MathDistance,
3452
+ Re as Mid,
3453
+ G as OverlayManager,
2817
3454
  u as OverlayType,
2818
- rt as PlotPrimitiveBridge,
2819
- Ct as TerrainTilesRenderer,
2820
- M as TerrainType,
2821
- Le as TileCustomMaterialPlugin,
2822
- lt as TilesRenderer,
2823
- bt as TilesRendererManager,
2824
- Q as ZERO_TOLERANCE,
2825
- At as createAssaultDirectionArrow,
2826
- Lt as createAttackArrow,
2827
- Gt as createCurvedArrow,
2828
- Nt as createFineArrow,
2829
- Dt as createSwallowtailAttackArrow,
2830
- Mt as default,
2831
- kt as getAngleOfThreePoints,
2832
- $ as getAzimuth,
2833
- xt as getBaseLength,
2834
- X as getBisectorNormals,
2835
- It as getCurvePoints,
2836
- H as getNormal,
2837
- Rt as getQBSplinePoints,
2838
- Et as getThirdPoint,
2839
- ht as isClockWise,
2840
- Tt as parseColorToRGBA,
2841
- Ze as plotOrderToRenderOrder,
2842
- Pt as resolveOpacity,
2843
- Ve as sanitizePlotOrder,
2844
- dt as wholeDistance
3455
+ Dt as PlotPrimitiveBridge,
3456
+ or as TerrainTilesRenderer,
3457
+ k as TerrainType,
3458
+ Xe as TileCustomMaterialPlugin,
3459
+ Bt as TilesRenderer,
3460
+ ar as TilesRendererManager,
3461
+ ie as ZERO_TOLERANCE,
3462
+ yr as createAssaultDirectionArrow,
3463
+ mr as createAttackArrow,
3464
+ wr as createCurvedArrow,
3465
+ fr as createFineArrow,
3466
+ vr as createSwallowtailAttackArrow,
3467
+ rr as default,
3468
+ dr as getAngleOfThreePoints,
3469
+ K as getAzimuth,
3470
+ hr as getBaseLength,
3471
+ ne as getBisectorNormals,
3472
+ gr as getCurvePoints,
3473
+ se as getNormal,
3474
+ pr as getQBSplinePoints,
3475
+ ur as getThirdPoint,
3476
+ jt as isClockWise,
3477
+ lr as parseColorToRGBA,
3478
+ ut as plotOrderToRenderOrder,
3479
+ Rt as resolveEmergencyResourceIcon,
3480
+ cr as resolveOpacity,
3481
+ Nt as resolvePlotPointImageUrl,
3482
+ dt as sanitizePlotOrder,
3483
+ $t as wholeDistance
2845
3484
  };