@vsleem-realsee-viewer/shared 2.0.9 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/index.d.ts +18 -12
- package/dist/index.mjs +226 -196
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
| 方法 | 类型 | 说明 |
|
|
42
42
|
| ---------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------- |
|
|
43
43
|
| `constructor` | `(options?: Partial<Coordinate>) => Coordinate` | 初始化坐标系实例,支持部分属性配置 |
|
|
44
|
-
| `addChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<
|
|
44
|
+
| `addChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<Coordinate>` | 添加一个或多个子坐标系,并建立映射关系 |
|
|
45
45
|
| `removeChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<void>` | 移除一个或多个子坐标系 |
|
|
46
|
-
| `updateChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<
|
|
47
|
-
| `bindChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<
|
|
46
|
+
| `updateChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<Coordinate>` | 更新子坐标系的属性信息 |
|
|
47
|
+
| `bindChild` | `(child: Partial<Coordinate> \ Partial<Coordinate>[]) => Promise<Coordinate>` | 绑定子坐标系但不建立映射关系 |
|
|
48
48
|
| `mergeChild` | `(result?: Coordinate[]) => Promise<void>` | 合并更新的子坐标系数据到当前树结构 |
|
|
49
49
|
| `mappingTo` | `(result: ProjectionModel[]) => Promise<void>` | 将当前坐标系映射到目标坐标系组 |
|
|
50
50
|
| `fromMapping` | `() => Promise<ProjectionModel \ undefined>` | 查询当前坐标系被哪些源坐标系映射 |
|
package/dist/index.d.ts
CHANGED
|
@@ -90,12 +90,6 @@ declare abstract class BaseElement {
|
|
|
90
90
|
*/
|
|
91
91
|
declare function bindCoordinate(data: CoordinateModel[], options?: RequestOptions): Promise<CoordinateModel[]>;
|
|
92
92
|
|
|
93
|
-
export declare type BindingModel = {
|
|
94
|
-
id: number;
|
|
95
|
-
modelId: number;
|
|
96
|
-
parentId: number;
|
|
97
|
-
};
|
|
98
|
-
|
|
99
93
|
export declare type CADModel = {
|
|
100
94
|
bindCsIds?: string;
|
|
101
95
|
createBy?: string;
|
|
@@ -318,10 +312,10 @@ export declare class Coordinate {
|
|
|
318
312
|
get modelList(): Coordinate[];
|
|
319
313
|
get fullName(): string;
|
|
320
314
|
setOptions(options?: Partial<Coordinate>): void;
|
|
321
|
-
addChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<
|
|
315
|
+
addChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<Coordinate[]>;
|
|
322
316
|
removeChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<void>;
|
|
323
|
-
updateChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<
|
|
324
|
-
bindChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<
|
|
317
|
+
updateChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<Coordinate[]>;
|
|
318
|
+
bindChild(child: Partial<Coordinate> | Partial<Coordinate>[]): Promise<Coordinate[]>;
|
|
325
319
|
mergeChild(result?: Coordinate[]): Promise<void>;
|
|
326
320
|
mappingTo(result: ProjectionModel[]): Promise<void>;
|
|
327
321
|
fromMapping(): Promise<ProjectionModel | undefined>;
|
|
@@ -479,6 +473,12 @@ export declare class DataSource {
|
|
|
479
473
|
* @returns
|
|
480
474
|
*/
|
|
481
475
|
static getCoordinateTree(projectId: number): Promise<Coordinate | undefined>;
|
|
476
|
+
/**
|
|
477
|
+
* 解析坐标系树
|
|
478
|
+
* @param tree 坐标系树
|
|
479
|
+
* @returns
|
|
480
|
+
*/
|
|
481
|
+
static parsedCoordinateTree(tree: Coordinate): Coordinate;
|
|
482
482
|
/**
|
|
483
483
|
* 添加坐标系
|
|
484
484
|
* @param parent 添加到的父级
|
|
@@ -513,13 +513,19 @@ export declare class DataSource {
|
|
|
513
513
|
* @returns 处理后的坐标系数据
|
|
514
514
|
*/
|
|
515
515
|
static handleCoordinateList(array: CoordinateModel[]): Coordinate[];
|
|
516
|
+
/**
|
|
517
|
+
* 将树形结构的节点扁平化为一个一维数组
|
|
518
|
+
* @param node 树的节点数组(可以是单个根节点数组或子节点数组)
|
|
519
|
+
* @returns 扁平化后的一维节点数组
|
|
520
|
+
*/
|
|
521
|
+
static flattenCoordinateTree(tree: Coordinate | Coordinate[]): Coordinate[];
|
|
516
522
|
/**
|
|
517
523
|
* 递归函数将扁平列表转化为树形结构
|
|
518
524
|
* @param flatNodes // 扁平列表
|
|
519
525
|
* @param rootId // 根id
|
|
520
526
|
* @returns
|
|
521
527
|
*/
|
|
522
|
-
static buildCoordinateTree(flatNodes: Coordinate[], rootId
|
|
528
|
+
static buildCoordinateTree(flatNodes: Coordinate[], rootId?: number): Coordinate;
|
|
523
529
|
/**
|
|
524
530
|
* 对子节点进行排序,首先按 status=0 升序,然后按 type=0 升序,最后按 createTime 降序
|
|
525
531
|
* @param node // 节点
|
|
@@ -642,7 +648,7 @@ declare function isNull(val: unknown): val is null;
|
|
|
642
648
|
|
|
643
649
|
declare function isNullOrUnDef(val: unknown): val is null | undefined;
|
|
644
650
|
|
|
645
|
-
declare function
|
|
651
|
+
declare function isNumeric(val: unknown): boolean;
|
|
646
652
|
|
|
647
653
|
declare function isObject(val: any): val is Record<any, any>;
|
|
648
654
|
|
|
@@ -969,7 +975,7 @@ declare namespace utils {
|
|
|
969
975
|
isArray,
|
|
970
976
|
isWindow,
|
|
971
977
|
isElement,
|
|
972
|
-
|
|
978
|
+
isNumeric,
|
|
973
979
|
isSameValue,
|
|
974
980
|
isNullOrUnDef,
|
|
975
981
|
isPromise,
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
class
|
|
1
|
+
class y extends Error {
|
|
2
2
|
constructor(t, e, i) {
|
|
3
|
-
super(e), this.code = t, this.message = e, this.details = i, this.name = "Apprror", Object.setPrototypeOf(this,
|
|
3
|
+
super(e), this.code = t, this.message = e, this.details = i, this.name = "Apprror", Object.setPrototypeOf(this, y.prototype);
|
|
4
4
|
}
|
|
5
5
|
// 可选的:转换成 JSON 格式,方便返回给调用方
|
|
6
6
|
toJSON() {
|
|
@@ -12,40 +12,40 @@ class m extends Error {
|
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
var
|
|
16
|
-
const
|
|
15
|
+
var z = /* @__PURE__ */ ((s) => (s[s.CADModel = 5] = "CADModel", s[s.BIMModel = 6] = "BIMModel", s[s.ForgeModel = 7] = "ForgeModel", s[s.ThreeDModel = 8] = "ThreeDModel", s[s.SkyMapModel = 9] = "SkyMapModel", s[s.ScaleModel = 10] = "ScaleModel", s))(z || {}), et = /* @__PURE__ */ ((s) => (s[s.Global = 0] = "Global", s))(et || {}), v = /* @__PURE__ */ ((s) => (s[s.Space = 0] = "Space", s[s.Model = 1] = "Model", s[s.Data = 2] = "Data", s))(v || {}), C = /* @__PURE__ */ ((s) => (s[s.Used = 0] = "Used", s[s.Enabled = 1] = "Enabled", s[s.Disabled = 2] = "Disabled", s))(C || {}), U = /* @__PURE__ */ ((s) => (s[s.SUCCESS = 200] = "SUCCESS", s[s.ERROR = -1] = "ERROR", s[s.TIMEOUT = 401] = "TIMEOUT", s))(U || {}), M = /* @__PURE__ */ ((s) => (s.GET = "GET", s.POST = "POST", s))(M || {}), R = /* @__PURE__ */ ((s) => (s.JSON = "application/json", s.FORM_URLENCODED = "application/x-www-form-urlencoded;charset=UTF-8", s.FORM_DATA = "multipart/form-data;charset=UTF-8", s.OCTET_STREAM = "'application/octet-stream", s))(R || {}), st = /* @__PURE__ */ ((s) => (s.Hw = "huawei", s.Ali = "aliyun", s.Hs = "hs", s.Aws = "amazon", s.Minio = "minio", s))(st || {}), w = /* @__PURE__ */ ((s) => (s[s.GeoPointNoPlane = 9e3] = "GeoPointNoPlane", s[s.PointUnmappedGIS = 9010] = "PointUnmappedGIS", s[s.PointNoXYZ = 9011] = "PointNoXYZ", s[s.PointNoPlane = 9012] = "PointNoPlane", s[s.RelativePlaneUnmatch = 9020] = "RelativePlaneUnmatch", s[s.RelativeNoPlane = 9021] = "RelativeNoPlane", s[s.RelativeJsonError = 9022] = "RelativeJsonError", s[s.RequestCodeError = 9030] = "RequestCodeError", s[s.RequestResultError = 9031] = "RequestResultError", s[s.RequestUnknownError = 9032] = "RequestUnknownError", s))(w || {});
|
|
16
|
+
const it = {
|
|
17
17
|
baseUrl: "https://vsleem.com/api",
|
|
18
18
|
obsType: "hs",
|
|
19
19
|
authorizeCode: ""
|
|
20
|
-
},
|
|
20
|
+
}, nt = {
|
|
21
21
|
isTransformResponse: !0,
|
|
22
22
|
joinBaseUrl: !0,
|
|
23
23
|
withAuthorize: !0
|
|
24
|
-
},
|
|
24
|
+
}, ot = {
|
|
25
25
|
url: "",
|
|
26
26
|
method: M.GET,
|
|
27
27
|
headers: {}
|
|
28
|
-
},
|
|
29
|
-
function
|
|
30
|
-
Object.assign(
|
|
28
|
+
}, Y = { ...it };
|
|
29
|
+
function rt(s) {
|
|
30
|
+
Object.assign(Y, s);
|
|
31
31
|
}
|
|
32
32
|
async function T(s, t) {
|
|
33
|
-
const e = { ...
|
|
33
|
+
const e = { ...nt, ...t }, i = { ...ot, ...s };
|
|
34
34
|
try {
|
|
35
|
-
const n =
|
|
36
|
-
return
|
|
35
|
+
const n = at(i, e), { url: o, ...r } = n, h = await (await window.fetch(o, r)).json();
|
|
36
|
+
return ht(h, e);
|
|
37
37
|
} catch (n) {
|
|
38
|
-
return
|
|
38
|
+
return ct(n);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
function
|
|
42
|
-
const { baseUrl: e, authorizeCode: i } =
|
|
41
|
+
function at(s, t) {
|
|
42
|
+
const { baseUrl: e, authorizeCode: i } = Y, { joinBaseUrl: n, withAuthorize: o } = t;
|
|
43
43
|
let { url: r, method: a, headers: h = {}, params: l, data: c } = s;
|
|
44
44
|
n && e && (r = `${e}${r}`), a = a?.toUpperCase();
|
|
45
45
|
const u = { ...h };
|
|
46
46
|
if (/^https?:\/\/.+$/i.test(e ?? "") ? u.PlatForm = new URL(e ?? "").host : u.PlatForm = new URL(window.location.href).host, o && i && (u.AuthorizationCode = i), a === M.POST && !u["Content-Type"] && (u["Content-Type"] = R.JSON), a === M.GET && l) {
|
|
47
|
-
const
|
|
48
|
-
r += `?${
|
|
47
|
+
const g = new URLSearchParams(l);
|
|
48
|
+
r += `?${g.toString()}`;
|
|
49
49
|
}
|
|
50
50
|
let d;
|
|
51
51
|
return a === M.POST && (d = u["Content-Type"] === R.JSON ? JSON.stringify(c || {}) : c), {
|
|
@@ -55,28 +55,28 @@ function rt(s, t) {
|
|
|
55
55
|
body: d
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function ht(s, t) {
|
|
59
59
|
if (!t.isTransformResponse)
|
|
60
60
|
return s;
|
|
61
61
|
if (!s)
|
|
62
|
-
throw new
|
|
62
|
+
throw new y(w.RequestResultError, "请求返回的结果错误");
|
|
63
63
|
const { code: e, data: i, msg: n } = s;
|
|
64
|
-
if (e ===
|
|
64
|
+
if (e === U.SUCCESS)
|
|
65
65
|
return i;
|
|
66
|
-
throw new
|
|
66
|
+
throw new y(w.RequestCodeError, n || "请求返回的Code错误");
|
|
67
67
|
}
|
|
68
|
-
function
|
|
69
|
-
throw s instanceof Error ? s : new
|
|
70
|
-
|
|
68
|
+
function ct(s) {
|
|
69
|
+
throw s instanceof Error ? s : new y(
|
|
70
|
+
w.RequestUnknownError,
|
|
71
71
|
typeof s == "string" ? s : "未知的请求错误"
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
74
|
const Ot = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
75
75
|
__proto__: null,
|
|
76
76
|
request: T,
|
|
77
|
-
setRequestGlobalConfig:
|
|
77
|
+
setRequestGlobalConfig: rt
|
|
78
78
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
79
|
-
function
|
|
79
|
+
function G(s, t) {
|
|
80
80
|
return T(
|
|
81
81
|
{
|
|
82
82
|
url: "/project/jssdk/cs/list",
|
|
@@ -86,7 +86,7 @@ function Y(s, t) {
|
|
|
86
86
|
t
|
|
87
87
|
);
|
|
88
88
|
}
|
|
89
|
-
function
|
|
89
|
+
function B(s, t) {
|
|
90
90
|
return T(
|
|
91
91
|
{
|
|
92
92
|
url: "/project/jssdk/cs/bind",
|
|
@@ -106,7 +106,7 @@ function O(s, t) {
|
|
|
106
106
|
t
|
|
107
107
|
);
|
|
108
108
|
}
|
|
109
|
-
function
|
|
109
|
+
function $(s, t) {
|
|
110
110
|
return T(
|
|
111
111
|
{
|
|
112
112
|
url: "/project/jssdk/cs/delete",
|
|
@@ -116,7 +116,7 @@ function B(s, t) {
|
|
|
116
116
|
t
|
|
117
117
|
);
|
|
118
118
|
}
|
|
119
|
-
function
|
|
119
|
+
function _(s, t) {
|
|
120
120
|
return T(
|
|
121
121
|
{
|
|
122
122
|
url: "/project/jssdk/cs/mapping",
|
|
@@ -126,7 +126,7 @@ function $(s, t) {
|
|
|
126
126
|
t
|
|
127
127
|
);
|
|
128
128
|
}
|
|
129
|
-
function
|
|
129
|
+
function Z(s, t) {
|
|
130
130
|
return T(
|
|
131
131
|
{
|
|
132
132
|
url: "/project/jssdk/cs/mapping/query",
|
|
@@ -136,7 +136,7 @@ function _(s, t) {
|
|
|
136
136
|
t
|
|
137
137
|
);
|
|
138
138
|
}
|
|
139
|
-
function
|
|
139
|
+
function lt(s, t = {
|
|
140
140
|
isTransformResponse: !1,
|
|
141
141
|
joinBaseUrl: !1,
|
|
142
142
|
withAuthorize: !1
|
|
@@ -151,66 +151,66 @@ function ct(s, t = {
|
|
|
151
151
|
}
|
|
152
152
|
const Lt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
153
153
|
__proto__: null,
|
|
154
|
-
bindCoordinate:
|
|
155
|
-
getCoordinateList:
|
|
156
|
-
getImageInfo:
|
|
157
|
-
getMappingRelation:
|
|
158
|
-
mapingCoordinate:
|
|
159
|
-
removeCoordinate:
|
|
154
|
+
bindCoordinate: B,
|
|
155
|
+
getCoordinateList: G,
|
|
156
|
+
getImageInfo: lt,
|
|
157
|
+
getMappingRelation: Z,
|
|
158
|
+
mapingCoordinate: _,
|
|
159
|
+
removeCoordinate: $,
|
|
160
160
|
saveCoordinate: O
|
|
161
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
161
|
+
}, Symbol.toStringTag, { value: "Module" })), ut = typeof window < "u", dt = Object.prototype.toString;
|
|
162
162
|
function P(s, t) {
|
|
163
|
-
return
|
|
163
|
+
return dt.call(s) === `[object ${t}]`;
|
|
164
164
|
}
|
|
165
|
-
function
|
|
165
|
+
function q(s) {
|
|
166
166
|
return typeof s < "u";
|
|
167
167
|
}
|
|
168
|
-
function
|
|
169
|
-
return !
|
|
168
|
+
function J(s) {
|
|
169
|
+
return !q(s);
|
|
170
170
|
}
|
|
171
171
|
function S(s) {
|
|
172
172
|
return s !== null && P(s, "Object");
|
|
173
173
|
}
|
|
174
|
-
function
|
|
174
|
+
function H(s) {
|
|
175
175
|
return s === null;
|
|
176
176
|
}
|
|
177
|
-
function
|
|
177
|
+
function ft(s) {
|
|
178
178
|
return P(s, "Date");
|
|
179
179
|
}
|
|
180
|
-
function
|
|
180
|
+
function mt(s) {
|
|
181
181
|
return P(s, "String");
|
|
182
182
|
}
|
|
183
183
|
function L(s) {
|
|
184
184
|
return typeof s == "function";
|
|
185
185
|
}
|
|
186
|
-
function
|
|
186
|
+
function yt(s) {
|
|
187
187
|
return P(s, "Boolean");
|
|
188
188
|
}
|
|
189
|
-
function
|
|
189
|
+
function wt(s) {
|
|
190
190
|
return P(s, "RegExp");
|
|
191
191
|
}
|
|
192
|
-
function
|
|
192
|
+
function x(s) {
|
|
193
193
|
return s && Array.isArray(s);
|
|
194
194
|
}
|
|
195
|
-
function
|
|
195
|
+
function pt(s) {
|
|
196
196
|
return typeof window < "u" && P(s, "Window");
|
|
197
197
|
}
|
|
198
|
-
function
|
|
198
|
+
function gt(s) {
|
|
199
199
|
return S(s) && !!s.tagName;
|
|
200
200
|
}
|
|
201
201
|
function b(s) {
|
|
202
|
-
return typeof s == "number"
|
|
202
|
+
return typeof s == "number" ? !0 : typeof s != "string" ? !1 : /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/.test(s);
|
|
203
203
|
}
|
|
204
|
-
function
|
|
204
|
+
function xt(s, t) {
|
|
205
205
|
return JSON.stringify(s) === JSON.stringify(t);
|
|
206
206
|
}
|
|
207
|
-
function xt(s) {
|
|
208
|
-
return q(s) || J(s);
|
|
209
|
-
}
|
|
210
207
|
function Mt(s) {
|
|
208
|
+
return J(s) || H(s);
|
|
209
|
+
}
|
|
210
|
+
function vt(s) {
|
|
211
211
|
return P(s, "Promise") && S(s) && L(s.then) && L(s.catch);
|
|
212
212
|
}
|
|
213
|
-
function
|
|
213
|
+
function V(s) {
|
|
214
214
|
return E(s, /* @__PURE__ */ new WeakMap());
|
|
215
215
|
}
|
|
216
216
|
function E(s, t) {
|
|
@@ -253,7 +253,7 @@ function E(s, t) {
|
|
|
253
253
|
Object.prototype.propertyIsEnumerable.call(s, n) && (e[n] = E(s[n], t));
|
|
254
254
|
return e;
|
|
255
255
|
}
|
|
256
|
-
function
|
|
256
|
+
function bt(s, t, e = !1) {
|
|
257
257
|
let i;
|
|
258
258
|
const n = function(...o) {
|
|
259
259
|
const r = this, a = e && !i;
|
|
@@ -265,7 +265,7 @@ function vt(s, t, e = !1) {
|
|
|
265
265
|
i && clearTimeout(i), i = void 0;
|
|
266
266
|
}, n;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function St(s, t, e = !1) {
|
|
269
269
|
let i, n;
|
|
270
270
|
const o = function(...r) {
|
|
271
271
|
const a = this;
|
|
@@ -291,40 +291,40 @@ function k(s, ...t) {
|
|
|
291
291
|
function I(s) {
|
|
292
292
|
return s !== null && typeof s == "object" && !Array.isArray(s);
|
|
293
293
|
}
|
|
294
|
-
function
|
|
294
|
+
function W(s, ...t) {
|
|
295
295
|
if (!t.length) return s;
|
|
296
296
|
for (const e of t)
|
|
297
297
|
e != null && typeof e == "object" && Object.keys(e).forEach((i) => {
|
|
298
298
|
const n = e[i], o = s[i];
|
|
299
|
-
n !== null && typeof n == "object" && !Array.isArray(n) ? ((!o || typeof o != "object") && (s[i] = {}),
|
|
299
|
+
n !== null && typeof n == "object" && !Array.isArray(n) ? ((!o || typeof o != "object") && (s[i] = {}), W(s[i], n)) : s[i] = n;
|
|
300
300
|
});
|
|
301
301
|
return s;
|
|
302
302
|
}
|
|
303
|
-
function
|
|
303
|
+
function Q(s, t) {
|
|
304
304
|
const e = {};
|
|
305
|
-
if (S(s) && !
|
|
305
|
+
if (S(s) && !x(s)) {
|
|
306
306
|
for (const i in s)
|
|
307
307
|
if (Object.prototype.hasOwnProperty.call(s, i)) {
|
|
308
|
-
const n = s[i], o = S(t) && !
|
|
308
|
+
const n = s[i], o = S(t) && !x(t) ? t[i] : void 0;
|
|
309
309
|
if (!(i in (t || {})))
|
|
310
310
|
e[i] = n;
|
|
311
|
-
else if (
|
|
311
|
+
else if (x(n) && x(o))
|
|
312
312
|
JSON.stringify(n) !== JSON.stringify(o) && (e[i] = n);
|
|
313
313
|
else if (S(n) && S(o)) {
|
|
314
|
-
const r =
|
|
314
|
+
const r = Q(n, o);
|
|
315
315
|
r && Object.keys(r).length > 0 && (e[i] = r);
|
|
316
316
|
} else n !== o && (e[i] = n);
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
|
-
if (S(t) &&
|
|
319
|
+
if (S(t) && x(t))
|
|
320
320
|
for (const i in t)
|
|
321
321
|
Object.prototype.hasOwnProperty.call(t, i) && !(i in (s || {})) && (e[i] = void 0);
|
|
322
322
|
return e;
|
|
323
323
|
}
|
|
324
|
-
function
|
|
324
|
+
function Tt(s, t = {}) {
|
|
325
325
|
return new Promise((e, i) => {
|
|
326
|
-
const n =
|
|
327
|
-
if (
|
|
326
|
+
const n = D(s);
|
|
327
|
+
if (Pt(n)) {
|
|
328
328
|
e(!0);
|
|
329
329
|
return;
|
|
330
330
|
}
|
|
@@ -338,14 +338,14 @@ function St(s, t = {}) {
|
|
|
338
338
|
}, document.head.appendChild(o);
|
|
339
339
|
});
|
|
340
340
|
}
|
|
341
|
-
function Tt(s) {
|
|
342
|
-
const t = z(s);
|
|
343
|
-
return Array.from(document.scripts).some((e) => z(e.src) === t);
|
|
344
|
-
}
|
|
345
341
|
function Pt(s) {
|
|
342
|
+
const t = D(s);
|
|
343
|
+
return Array.from(document.scripts).some((e) => D(e.src) === t);
|
|
344
|
+
}
|
|
345
|
+
function Et(s) {
|
|
346
346
|
return new Promise((t, e) => {
|
|
347
|
-
const i =
|
|
348
|
-
if (
|
|
347
|
+
const i = D(s);
|
|
348
|
+
if (zt(i)) {
|
|
349
349
|
t(!0);
|
|
350
350
|
return;
|
|
351
351
|
}
|
|
@@ -357,11 +357,13 @@ function Pt(s) {
|
|
|
357
357
|
}, document.head.appendChild(n);
|
|
358
358
|
});
|
|
359
359
|
}
|
|
360
|
-
function
|
|
361
|
-
const t =
|
|
362
|
-
return Array.from(document.
|
|
360
|
+
function zt(s) {
|
|
361
|
+
const t = D(s);
|
|
362
|
+
return Array.from(document.querySelectorAll('link[rel="stylesheet"]')).some(
|
|
363
|
+
(e) => D(e.href) === t
|
|
364
|
+
);
|
|
363
365
|
}
|
|
364
|
-
function
|
|
366
|
+
function D(s) {
|
|
365
367
|
try {
|
|
366
368
|
const t = new URL(s, window.location.href);
|
|
367
369
|
return `${t.origin}${t.pathname}`;
|
|
@@ -381,59 +383,59 @@ function Dt(s, t, e, i) {
|
|
|
381
383
|
sh: r
|
|
382
384
|
};
|
|
383
385
|
}
|
|
384
|
-
function
|
|
386
|
+
function Nt(s, t, e) {
|
|
385
387
|
return {
|
|
386
388
|
x: s * e.scale + e.x,
|
|
387
389
|
// 缩放后加上偏移量
|
|
388
390
|
y: t * e.scale + e.y
|
|
389
391
|
};
|
|
390
392
|
}
|
|
391
|
-
function
|
|
393
|
+
function It(s, t, e) {
|
|
392
394
|
return {
|
|
393
395
|
x: (s - e.x) / e.scale,
|
|
394
396
|
// 减去偏移量后缩放到模型尺寸
|
|
395
397
|
y: (t - e.y) / e.scale
|
|
396
398
|
};
|
|
397
399
|
}
|
|
398
|
-
function
|
|
400
|
+
function Ct(s) {
|
|
399
401
|
console.warn(`[warn]:${s}`);
|
|
400
402
|
}
|
|
401
|
-
function
|
|
403
|
+
function Rt(s) {
|
|
402
404
|
throw new Error(`[error]:${s}`);
|
|
403
405
|
}
|
|
404
406
|
const kt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
405
407
|
__proto__: null,
|
|
406
|
-
cloneDeep:
|
|
407
|
-
debounce:
|
|
408
|
+
cloneDeep: V,
|
|
409
|
+
debounce: bt,
|
|
408
410
|
deepMerge: k,
|
|
409
|
-
deepMergeProps:
|
|
410
|
-
error:
|
|
411
|
-
getDiffProps:
|
|
411
|
+
deepMergeProps: W,
|
|
412
|
+
error: Rt,
|
|
413
|
+
getDiffProps: Q,
|
|
412
414
|
getImageTransform: Dt,
|
|
413
|
-
inBrowser:
|
|
415
|
+
inBrowser: ut,
|
|
414
416
|
is: P,
|
|
415
|
-
isArray:
|
|
416
|
-
isBoolean:
|
|
417
|
-
isDate:
|
|
418
|
-
isDef:
|
|
419
|
-
isElement:
|
|
417
|
+
isArray: x,
|
|
418
|
+
isBoolean: yt,
|
|
419
|
+
isDate: ft,
|
|
420
|
+
isDef: q,
|
|
421
|
+
isElement: gt,
|
|
420
422
|
isFunction: L,
|
|
421
|
-
isNull:
|
|
422
|
-
isNullOrUnDef:
|
|
423
|
-
|
|
423
|
+
isNull: H,
|
|
424
|
+
isNullOrUnDef: Mt,
|
|
425
|
+
isNumeric: b,
|
|
424
426
|
isObject: S,
|
|
425
|
-
isPromise:
|
|
426
|
-
isRegExp:
|
|
427
|
-
isSameValue:
|
|
428
|
-
isString:
|
|
429
|
-
isUnDef:
|
|
430
|
-
isWindow:
|
|
431
|
-
loadCss:
|
|
432
|
-
loadScript:
|
|
433
|
-
throttle:
|
|
434
|
-
toCanvasCoord:
|
|
435
|
-
toModelCoord:
|
|
436
|
-
warn:
|
|
427
|
+
isPromise: vt,
|
|
428
|
+
isRegExp: wt,
|
|
429
|
+
isSameValue: xt,
|
|
430
|
+
isString: mt,
|
|
431
|
+
isUnDef: J,
|
|
432
|
+
isWindow: pt,
|
|
433
|
+
loadCss: Et,
|
|
434
|
+
loadScript: Tt,
|
|
435
|
+
throttle: St,
|
|
436
|
+
toCanvasCoord: Nt,
|
|
437
|
+
toModelCoord: It,
|
|
438
|
+
warn: Ct
|
|
437
439
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
438
440
|
class f {
|
|
439
441
|
// 直角坐标系坐标
|
|
@@ -552,7 +554,7 @@ class f {
|
|
|
552
554
|
try {
|
|
553
555
|
if (e?.id === i?.id)
|
|
554
556
|
return new f(this);
|
|
555
|
-
if (e?.modelType ===
|
|
557
|
+
if (e?.modelType === z.SkyMapModel) {
|
|
556
558
|
const { refPoint: n } = e?.relativeMap || {};
|
|
557
559
|
if (this?.hasXYZ)
|
|
558
560
|
return this.project(t);
|
|
@@ -560,9 +562,9 @@ class f {
|
|
|
560
562
|
const o = N.LLHToXYZ(this, n);
|
|
561
563
|
return this.x = o.x, this.y = o.y, this.z = o.z, this.hasXYZ = !0, this.project(t);
|
|
562
564
|
}
|
|
563
|
-
throw new
|
|
565
|
+
throw new y(w.PointUnmappedGIS, "没有完成GIS与其他空间的映射");
|
|
564
566
|
}
|
|
565
|
-
if (i?.modelType ===
|
|
567
|
+
if (i?.modelType === z.SkyMapModel) {
|
|
566
568
|
const { refPoint: n } = i?.relativeMap || {};
|
|
567
569
|
if (this?.hasGeo)
|
|
568
570
|
return new f(this);
|
|
@@ -571,10 +573,11 @@ class f {
|
|
|
571
573
|
const r = N.XYZToLLH(o, n);
|
|
572
574
|
return o.lat = r.lat, o.lon = r.lon, o.alt = r.alt, o.hasGeo = !0, o;
|
|
573
575
|
}
|
|
574
|
-
throw new
|
|
576
|
+
throw new y(w.PointUnmappedGIS, "没有完成GIS与其他空间的映射");
|
|
575
577
|
}
|
|
576
578
|
return this.project(t);
|
|
577
|
-
} catch {
|
|
579
|
+
} catch (n) {
|
|
580
|
+
console.error(n);
|
|
578
581
|
return;
|
|
579
582
|
}
|
|
580
583
|
}
|
|
@@ -586,12 +589,12 @@ class f {
|
|
|
586
589
|
*/
|
|
587
590
|
project(t) {
|
|
588
591
|
if (!this.hasXYZ)
|
|
589
|
-
throw new
|
|
592
|
+
throw new y(w.PointNoXYZ, "点没有xxz坐标信息");
|
|
590
593
|
if (this.plane === "xz")
|
|
591
594
|
return this.projectXZ(t);
|
|
592
595
|
if (this.plane === "xy")
|
|
593
596
|
return this.projectXY(t);
|
|
594
|
-
throw new
|
|
597
|
+
throw new y(w.PointNoPlane, "点的plane应为xz或xy");
|
|
595
598
|
}
|
|
596
599
|
/**
|
|
597
600
|
* XZ平面投影转换
|
|
@@ -637,7 +640,7 @@ class N {
|
|
|
637
640
|
const u = t.x / 1e3 / (a * Math.cos(r)), d = t.y / 1e3 / a;
|
|
638
641
|
h = e.lon + f.toDegrees(u), l = e.lat - f.toDegrees(d), c = e.alt + t.z / 1e3;
|
|
639
642
|
} else
|
|
640
|
-
throw new
|
|
643
|
+
throw new y(w.GeoPointNoPlane, "点的plane应为xz或xy");
|
|
641
644
|
return new N({
|
|
642
645
|
lat: l,
|
|
643
646
|
lon: h,
|
|
@@ -660,10 +663,10 @@ class N {
|
|
|
660
663
|
z: (t.alt - e.alt) * 1e3,
|
|
661
664
|
plane: "xy"
|
|
662
665
|
});
|
|
663
|
-
throw new
|
|
666
|
+
throw new y(w.GeoPointNoPlane, "点的plane应为xz或xy");
|
|
664
667
|
}
|
|
665
668
|
}
|
|
666
|
-
class
|
|
669
|
+
class p {
|
|
667
670
|
scale = 1;
|
|
668
671
|
yaw = 0;
|
|
669
672
|
x = 0;
|
|
@@ -686,7 +689,7 @@ class x {
|
|
|
686
689
|
*/
|
|
687
690
|
static addRelativeMap(t, e) {
|
|
688
691
|
if (t.plane !== e.plane)
|
|
689
|
-
throw new
|
|
692
|
+
throw new y(w.RelativePlaneUnmatch, "两个映射关系的plane应该相同");
|
|
690
693
|
const i = t.scale * e.scale, n = t.yaw + e.yaw, o = Math.cos(e.yaw), r = Math.sin(e.yaw);
|
|
691
694
|
let a = 0, h = 0, l = 0;
|
|
692
695
|
if (t.plane === "xz") {
|
|
@@ -696,8 +699,8 @@ class x {
|
|
|
696
699
|
const c = t.x * o - t.y * r, u = t.x * r + t.y * o, d = t.z;
|
|
697
700
|
a = e.x + c * e.scale, h = e.y + u * e.scale, l = e.z + d * e.scale;
|
|
698
701
|
} else
|
|
699
|
-
throw new
|
|
700
|
-
return new
|
|
702
|
+
throw new y(w.RelativeNoPlane, "映射关系的plane应为xz或xy");
|
|
703
|
+
return new p({
|
|
701
704
|
scale: i,
|
|
702
705
|
yaw: n,
|
|
703
706
|
x: a,
|
|
@@ -721,8 +724,8 @@ class x {
|
|
|
721
724
|
else if (t.plane === "xy")
|
|
722
725
|
r = -(t.x * n + t.y * o) * e, a = -(t.y * n - t.x * o) * e, h = -t.z * e;
|
|
723
726
|
else
|
|
724
|
-
throw new
|
|
725
|
-
return new
|
|
727
|
+
throw new y(w.RelativeNoPlane, "映射关系的plane应为xz或xy");
|
|
728
|
+
return new p({
|
|
726
729
|
scale: e,
|
|
727
730
|
yaw: i,
|
|
728
731
|
x: r,
|
|
@@ -737,28 +740,37 @@ class x {
|
|
|
737
740
|
try {
|
|
738
741
|
let e = t ? JSON.parse(t) : void 0;
|
|
739
742
|
const { reference_point: i } = e || {};
|
|
740
|
-
return i && (e = { refPoint: i }), e ? new
|
|
743
|
+
return i && (e = { refPoint: i }), e ? new p(e) : void 0;
|
|
741
744
|
} catch {
|
|
742
|
-
throw new
|
|
745
|
+
throw new y(w.RelativeJsonError, "relativeMap格式化失败");
|
|
743
746
|
}
|
|
744
747
|
}
|
|
745
748
|
static toStringify(t) {
|
|
746
749
|
return t ? JSON.stringify(t) : void 0;
|
|
747
750
|
}
|
|
748
751
|
}
|
|
749
|
-
class
|
|
752
|
+
class m {
|
|
750
753
|
/**
|
|
751
754
|
* 获取坐标系树
|
|
752
755
|
* @param projectId 项目id
|
|
753
756
|
* @returns
|
|
754
757
|
*/
|
|
755
758
|
static async getCoordinateTree(t) {
|
|
756
|
-
const e = await
|
|
759
|
+
const e = await G({ projectId: t });
|
|
757
760
|
if (e.length) {
|
|
758
|
-
const i =
|
|
759
|
-
return
|
|
761
|
+
const i = m.handleCoordinateList(e);
|
|
762
|
+
return m.buildCoordinateTree(i, 0);
|
|
760
763
|
}
|
|
761
764
|
}
|
|
765
|
+
/**
|
|
766
|
+
* 解析坐标系树
|
|
767
|
+
* @param tree 坐标系树
|
|
768
|
+
* @returns
|
|
769
|
+
*/
|
|
770
|
+
static parsedCoordinateTree(t) {
|
|
771
|
+
const e = m.flattenCoordinateTree(t);
|
|
772
|
+
return m.buildCoordinateTree(e, 0);
|
|
773
|
+
}
|
|
762
774
|
/**
|
|
763
775
|
* 添加坐标系
|
|
764
776
|
* @param parent 添加到的父级
|
|
@@ -767,17 +779,17 @@ class w {
|
|
|
767
779
|
*/
|
|
768
780
|
static async addCoordinate(t, e) {
|
|
769
781
|
const { projectId: i, id: n } = t, o = e.map((a) => {
|
|
770
|
-
const { type: h, modelType: l, relativeMap: c, level: u, ...d } = a,
|
|
782
|
+
const { type: h, modelType: l, relativeMap: c, level: u, ...d } = a, g = c ? JSON.stringify(c) : void 0;
|
|
771
783
|
return {
|
|
772
784
|
...d,
|
|
773
785
|
projectId: i,
|
|
774
786
|
parentId: n,
|
|
775
787
|
coordinateType: h,
|
|
776
788
|
renderType: l,
|
|
777
|
-
relativePosition:
|
|
789
|
+
relativePosition: g
|
|
778
790
|
};
|
|
779
791
|
}), r = await O(o);
|
|
780
|
-
return
|
|
792
|
+
return m.handleCoordinateList(r);
|
|
781
793
|
}
|
|
782
794
|
/**
|
|
783
795
|
* 删除坐标系
|
|
@@ -787,7 +799,7 @@ class w {
|
|
|
787
799
|
*/
|
|
788
800
|
static async removeCoordinate(t, e) {
|
|
789
801
|
const i = e.map((n) => n.id ?? -1);
|
|
790
|
-
return await
|
|
802
|
+
return await $(i);
|
|
791
803
|
}
|
|
792
804
|
/**
|
|
793
805
|
* 更新坐标系
|
|
@@ -797,10 +809,10 @@ class w {
|
|
|
797
809
|
*/
|
|
798
810
|
static async updateCoordinate(t, e) {
|
|
799
811
|
const { projectId: i, id: n } = t, o = e.map((a) => {
|
|
800
|
-
const { type: h, relativeMap: l, level: c, ...u } = a, d =
|
|
812
|
+
const { type: h, relativeMap: l, level: c, ...u } = a, d = p.toStringify(l);
|
|
801
813
|
return { ...u, relativePosition: d, projectId: i, parentId: n };
|
|
802
814
|
}), r = await O(o);
|
|
803
|
-
return
|
|
815
|
+
return m.handleCoordinateList(r);
|
|
804
816
|
}
|
|
805
817
|
/**
|
|
806
818
|
* 绑定坐标系
|
|
@@ -812,8 +824,8 @@ class w {
|
|
|
812
824
|
const { projectId: i, id: n } = t, o = e.map((a) => {
|
|
813
825
|
const { modelId: h } = a;
|
|
814
826
|
return { modelId: h, parentId: n, projectId: i };
|
|
815
|
-
}), r = await
|
|
816
|
-
return
|
|
827
|
+
}), r = await B(o);
|
|
828
|
+
return m.handleCoordinateList(r);
|
|
817
829
|
}
|
|
818
830
|
/**
|
|
819
831
|
* 处理坐标系数据
|
|
@@ -828,8 +840,8 @@ class w {
|
|
|
828
840
|
renderType: o,
|
|
829
841
|
relativePosition: r,
|
|
830
842
|
...a
|
|
831
|
-
} = e, h =
|
|
832
|
-
return new
|
|
843
|
+
} = e, h = p.toParse(r);
|
|
844
|
+
return new A({
|
|
833
845
|
...a,
|
|
834
846
|
type: i,
|
|
835
847
|
modelType: o,
|
|
@@ -838,13 +850,31 @@ class w {
|
|
|
838
850
|
});
|
|
839
851
|
});
|
|
840
852
|
}
|
|
853
|
+
/**
|
|
854
|
+
* 将树形结构的节点扁平化为一个一维数组
|
|
855
|
+
* @param node 树的节点数组(可以是单个根节点数组或子节点数组)
|
|
856
|
+
* @returns 扁平化后的一维节点数组
|
|
857
|
+
*/
|
|
858
|
+
static flattenCoordinateTree(t) {
|
|
859
|
+
const e = Array.isArray(t) ? t : [t], i = [];
|
|
860
|
+
function n(o) {
|
|
861
|
+
for (const r of o) {
|
|
862
|
+
const { level: a, parent: h, relativeMap: l, ...c } = r, u = new A({
|
|
863
|
+
...c,
|
|
864
|
+
relativeMap: new p(l)
|
|
865
|
+
});
|
|
866
|
+
i.push(u), r.children && r.children.length > 0 && n(r.children);
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
return n(e), i;
|
|
870
|
+
}
|
|
841
871
|
/**
|
|
842
872
|
* 递归函数将扁平列表转化为树形结构
|
|
843
873
|
* @param flatNodes // 扁平列表
|
|
844
874
|
* @param rootId // 根id
|
|
845
875
|
* @returns
|
|
846
876
|
*/
|
|
847
|
-
static buildCoordinateTree(t, e) {
|
|
877
|
+
static buildCoordinateTree(t, e = 0) {
|
|
848
878
|
const i = /* @__PURE__ */ new Map(), n = [];
|
|
849
879
|
return t.forEach((o) => {
|
|
850
880
|
i.set(String(o.id), o);
|
|
@@ -857,7 +887,7 @@ class w {
|
|
|
857
887
|
const a = i.get(String(o.parentId ?? -1));
|
|
858
888
|
a && (r.level = (Number(a.level) || 0) + 1, r.parent = a, a.children?.push(r));
|
|
859
889
|
}
|
|
860
|
-
}), n.forEach(
|
|
890
|
+
}), n.forEach(m.sortCoordinateTree), n[0];
|
|
861
891
|
}
|
|
862
892
|
/**
|
|
863
893
|
* 对子节点进行排序,首先按 status=0 升序,然后按 type=0 升序,最后按 createTime 降序
|
|
@@ -871,7 +901,7 @@ class w {
|
|
|
871
901
|
return n !== 0 ? n : Number(i.createTime) - Number(e.createTime);
|
|
872
902
|
} else
|
|
873
903
|
return e.status === 0 && i.status !== 0 ? -1 : i.status === 0 && e.status !== 0 ? 1 : Number(i.createTime) - Number(e.createTime);
|
|
874
|
-
}), t.children.forEach(
|
|
904
|
+
}), t.children.forEach(m.sortCoordinateTree));
|
|
875
905
|
}
|
|
876
906
|
/**
|
|
877
907
|
* 过滤空间坐标系树
|
|
@@ -880,12 +910,12 @@ class w {
|
|
|
880
910
|
static filterSpaceTree(t) {
|
|
881
911
|
const e = [];
|
|
882
912
|
return t.forEach((i) => {
|
|
883
|
-
const n =
|
|
913
|
+
const n = m.filterSpaceTree(i.children);
|
|
884
914
|
i.children = n, i.disabled = i.disabled ?? !1, i.type !== v.Model && e.push(i);
|
|
885
915
|
}), e;
|
|
886
916
|
}
|
|
887
917
|
}
|
|
888
|
-
class
|
|
918
|
+
class A {
|
|
889
919
|
id = 0;
|
|
890
920
|
//id
|
|
891
921
|
type = 0;
|
|
@@ -939,17 +969,17 @@ class Rt {
|
|
|
939
969
|
//设置参数
|
|
940
970
|
setOptions(t) {
|
|
941
971
|
const { relativeMap: e, parent: i, children: n, ...o } = t || {};
|
|
942
|
-
e && (this.relativeMap = new
|
|
972
|
+
e && (this.relativeMap = new p(e)), i && (this.parent = i), n?.length && (this.children = n), Object.assign(this, o);
|
|
943
973
|
}
|
|
944
974
|
//添加子节点
|
|
945
975
|
async addChild(t) {
|
|
946
|
-
const e =
|
|
947
|
-
this.mergeChild(i);
|
|
976
|
+
const e = x(t) ? t : [t], i = await m.addCoordinate(this, e);
|
|
977
|
+
return this.mergeChild(i), i;
|
|
948
978
|
}
|
|
949
979
|
//删除子节点
|
|
950
980
|
async removeChild(t) {
|
|
951
|
-
const e =
|
|
952
|
-
await
|
|
981
|
+
const e = x(t) ? t : [t];
|
|
982
|
+
await m.removeCoordinate(this, e);
|
|
953
983
|
for (const i of e) {
|
|
954
984
|
const n = this.children.findIndex((o) => o.id === i.id);
|
|
955
985
|
n !== -1 && this.children.splice(n, 1);
|
|
@@ -957,13 +987,13 @@ class Rt {
|
|
|
957
987
|
}
|
|
958
988
|
//更新子节点
|
|
959
989
|
async updateChild(t) {
|
|
960
|
-
const e =
|
|
961
|
-
this.mergeChild(i);
|
|
990
|
+
const e = x(t) ? t : [t], i = await m.updateCoordinate(this, e);
|
|
991
|
+
return this.mergeChild(i), i;
|
|
962
992
|
}
|
|
963
993
|
//绑定子节点,不建立映射关系
|
|
964
994
|
async bindChild(t) {
|
|
965
|
-
const e =
|
|
966
|
-
this.mergeChild(i);
|
|
995
|
+
const e = x(t) ? t : [t], i = await m.bindCoordinate(this, e);
|
|
996
|
+
return this.mergeChild(i), i;
|
|
967
997
|
}
|
|
968
998
|
// 合并子节点,没有查询到节点就插入
|
|
969
999
|
async mergeChild(t) {
|
|
@@ -985,11 +1015,11 @@ class Rt {
|
|
|
985
1015
|
}
|
|
986
1016
|
//映射到(模型映射到空间,空间映射到空间)
|
|
987
1017
|
async mappingTo(t) {
|
|
988
|
-
await
|
|
1018
|
+
await _(t);
|
|
989
1019
|
}
|
|
990
1020
|
// 来自映射(被映射过的源坐标系关系)
|
|
991
1021
|
async fromMapping() {
|
|
992
|
-
const t = await
|
|
1022
|
+
const t = await Z({ srcCsId: this.id });
|
|
993
1023
|
return t[t.length - 1];
|
|
994
1024
|
}
|
|
995
1025
|
/**
|
|
@@ -1008,8 +1038,8 @@ class Rt {
|
|
|
1008
1038
|
* @param mapped 是否被映射
|
|
1009
1039
|
* @returns
|
|
1010
1040
|
*/
|
|
1011
|
-
findChildModel(t = [
|
|
1012
|
-
const i =
|
|
1041
|
+
findChildModel(t = [z.CADModel, z.SkyMapModel], e = !0) {
|
|
1042
|
+
const i = x(t) ? t : [t];
|
|
1013
1043
|
return i.includes(this.modelType ?? -1) && this.status !== C.Disabled ? this : ([v.Data, v.Model].includes(this.type) ? this.findParentSpace() : this)?.modelList?.filter((a) => i.includes(a.modelType ?? -1) ? e ? !!a.relativeMap : !0 : !1)?.sort((a, h) => Number(a.status) - Number(h.status))?.[0];
|
|
1014
1044
|
}
|
|
1015
1045
|
/**
|
|
@@ -1018,11 +1048,11 @@ class Rt {
|
|
|
1018
1048
|
* @param excludeNodes //排除的坐标系
|
|
1019
1049
|
* @returns
|
|
1020
1050
|
*/
|
|
1021
|
-
findClosestModel(t =
|
|
1051
|
+
findClosestModel(t = z.CADModel, e) {
|
|
1022
1052
|
const i = /* @__PURE__ */ new Set();
|
|
1023
1053
|
for (const l of e ?? [])
|
|
1024
1054
|
i.add(String(l.id));
|
|
1025
|
-
const n = [{ node: this, distance: 0 }], o =
|
|
1055
|
+
const n = [{ node: this, distance: 0 }], o = x(t) ? t : [t], r = /* @__PURE__ */ new Set();
|
|
1026
1056
|
let a, h = 1 / 0;
|
|
1027
1057
|
for (; n.length > 0; ) {
|
|
1028
1058
|
const l = n.shift();
|
|
@@ -1038,14 +1068,14 @@ class Rt {
|
|
|
1038
1068
|
r.add(c);
|
|
1039
1069
|
const d = [];
|
|
1040
1070
|
if (c.children)
|
|
1041
|
-
for (const
|
|
1042
|
-
r.has(
|
|
1071
|
+
for (const g of c.children)
|
|
1072
|
+
r.has(g) || d.push(g);
|
|
1043
1073
|
if (c.parent?.children)
|
|
1044
|
-
for (const
|
|
1045
|
-
|
|
1074
|
+
for (const g of c.parent.children)
|
|
1075
|
+
g !== c && !r.has(g) && d.push(g);
|
|
1046
1076
|
c.parent && !r.has(c.parent) && d.push(c.parent);
|
|
1047
|
-
for (const
|
|
1048
|
-
n.push({ node:
|
|
1077
|
+
for (const g of d)
|
|
1078
|
+
n.push({ node: g, distance: u + 1 });
|
|
1049
1079
|
}
|
|
1050
1080
|
return a;
|
|
1051
1081
|
}
|
|
@@ -1125,7 +1155,7 @@ class Rt {
|
|
|
1125
1155
|
function t(n) {
|
|
1126
1156
|
return n.children?.length && (n.children = n.children.filter((o) => !!o?.relativeMap && o.status !== C.Disabled).map((o) => t(o))), n;
|
|
1127
1157
|
}
|
|
1128
|
-
const e =
|
|
1158
|
+
const e = V(this.findRoot(!0)), i = t(e);
|
|
1129
1159
|
return i.parentId = 0, i.parent = void 0, i;
|
|
1130
1160
|
}
|
|
1131
1161
|
/**
|
|
@@ -1135,13 +1165,13 @@ class Rt {
|
|
|
1135
1165
|
*/
|
|
1136
1166
|
getDestRelativeMap(t) {
|
|
1137
1167
|
if (this.id === t.id)
|
|
1138
|
-
return new
|
|
1168
|
+
return new p();
|
|
1139
1169
|
const e = this.getRelativeMaps(), i = t.getRelativeMaps();
|
|
1140
|
-
let n = new
|
|
1170
|
+
let n = new p();
|
|
1141
1171
|
return e?.forEach((o) => {
|
|
1142
|
-
n =
|
|
1172
|
+
n = p.addRelativeMap(n, o);
|
|
1143
1173
|
}), i?.reverse()?.forEach((o) => {
|
|
1144
|
-
n =
|
|
1174
|
+
n = p.addRelativeMap(n, p.inverseRelativeMap(o));
|
|
1145
1175
|
}), n;
|
|
1146
1176
|
}
|
|
1147
1177
|
/**
|
|
@@ -1203,7 +1233,7 @@ class Rt {
|
|
|
1203
1233
|
} else return !1;
|
|
1204
1234
|
}
|
|
1205
1235
|
}
|
|
1206
|
-
class
|
|
1236
|
+
class K {
|
|
1207
1237
|
yaw = 0;
|
|
1208
1238
|
//偏航角
|
|
1209
1239
|
pitch = 0;
|
|
@@ -1217,14 +1247,14 @@ class Q {
|
|
|
1217
1247
|
static toParse(t) {
|
|
1218
1248
|
if (t) {
|
|
1219
1249
|
const e = t?.split(",").map((i) => Number(i) || 0);
|
|
1220
|
-
return new
|
|
1250
|
+
return new K({ yaw: e[0], pitch: e[1], roll: e[2] });
|
|
1221
1251
|
}
|
|
1222
1252
|
}
|
|
1223
1253
|
static toStringify(t) {
|
|
1224
1254
|
return t ? `${t.yaw},${t.pitch},${t.roll}` : "";
|
|
1225
1255
|
}
|
|
1226
1256
|
}
|
|
1227
|
-
class
|
|
1257
|
+
class tt {
|
|
1228
1258
|
x = 0;
|
|
1229
1259
|
//x轴
|
|
1230
1260
|
y = 0;
|
|
@@ -1238,7 +1268,7 @@ class K {
|
|
|
1238
1268
|
static toParse(t) {
|
|
1239
1269
|
if (t) {
|
|
1240
1270
|
const e = t?.split(",").map((i) => Number(i) || 0);
|
|
1241
|
-
return new
|
|
1271
|
+
return new tt({ x: e[0], y: e[1], z: e[2] });
|
|
1242
1272
|
}
|
|
1243
1273
|
}
|
|
1244
1274
|
static toStringify(t) {
|
|
@@ -1449,7 +1479,7 @@ class jt {
|
|
|
1449
1479
|
this.isBindEvent && (this.canvas.removeEventListener("mousemove", this.onMousemove), this.canvas.removeEventListener("DOMMouseScroll", this.onMousewheel), this.canvas.removeEventListener("mousewheel", this.onMousewheel), this.canvas.removeEventListener("mousedown", this.onMousedown), this.canvas.removeEventListener("mouseout", this.onMouseout), this.canvas.removeEventListener("dblclick", this.onDblclick));
|
|
1450
1480
|
}
|
|
1451
1481
|
}
|
|
1452
|
-
const
|
|
1482
|
+
const j = {};
|
|
1453
1483
|
class Xt {
|
|
1454
1484
|
type = "image";
|
|
1455
1485
|
// 修改为更通用的名称
|
|
@@ -1464,7 +1494,7 @@ class Xt {
|
|
|
1464
1494
|
this.x = t.x || 0, this.y = t.y || 0, this.width = t.width || 0, this.height = t.height || 0, this.src = t.src, this.redraw = t.redraw, this.img = this.loadImage(t.onload);
|
|
1465
1495
|
}
|
|
1466
1496
|
loadImage(t) {
|
|
1467
|
-
const e =
|
|
1497
|
+
const e = j[this.src];
|
|
1468
1498
|
if (e)
|
|
1469
1499
|
return queueMicrotask(() => {
|
|
1470
1500
|
t?.(e), this.redraw?.();
|
|
@@ -1472,7 +1502,7 @@ class Xt {
|
|
|
1472
1502
|
{
|
|
1473
1503
|
const i = new Image();
|
|
1474
1504
|
return i.crossOrigin = "anonymous", i.src = this.src, i.onload = () => {
|
|
1475
|
-
|
|
1505
|
+
j[this.src] = i, t?.(i), this.redraw?.();
|
|
1476
1506
|
}, i;
|
|
1477
1507
|
}
|
|
1478
1508
|
}
|
|
@@ -1505,7 +1535,7 @@ class Ft {
|
|
|
1505
1535
|
t.beginPath(), t.arc(this.x, this.y, this.r * i, 0, 2 * Math.PI), t.fillStyle = this.backgroundColor, t.fill(), t.font = `${this.r * i}px Microsoft YaHei`, t.textAlign = "center", t.fillStyle = "#FFFFFF", t.fillText(this.text, this.x, this.y + this.r * i / 3), t.restore();
|
|
1506
1536
|
}
|
|
1507
1537
|
}
|
|
1508
|
-
const
|
|
1538
|
+
const X = {};
|
|
1509
1539
|
class Ut {
|
|
1510
1540
|
id = "";
|
|
1511
1541
|
type = "issue";
|
|
@@ -1526,7 +1556,7 @@ class Ut {
|
|
|
1526
1556
|
this.id = t.id, this.x = t.x, this.y = t.y, this.width = t.width || 0, this.height = t.height || 0, this.index = t.index, this.pIndex = t.pIndex, this.parentId = t.parentId, this.count = t.count || 0, this.badgeR = 3, this.src = t.src, this.redraw = t.redraw, this.img = this.loadImage(t.onload);
|
|
1527
1557
|
}
|
|
1528
1558
|
loadImage(t) {
|
|
1529
|
-
const e =
|
|
1559
|
+
const e = X[this.src];
|
|
1530
1560
|
if (e)
|
|
1531
1561
|
return queueMicrotask(() => {
|
|
1532
1562
|
t?.(e), this.redraw?.();
|
|
@@ -1534,7 +1564,7 @@ class Ut {
|
|
|
1534
1564
|
{
|
|
1535
1565
|
const i = new Image();
|
|
1536
1566
|
return i.src = this.src, i.crossOrigin = "anonymous", i.onload = () => {
|
|
1537
|
-
|
|
1567
|
+
X[this.src] = i, t?.(i), this.redraw?.();
|
|
1538
1568
|
}, i;
|
|
1539
1569
|
}
|
|
1540
1570
|
}
|
|
@@ -1544,7 +1574,7 @@ class Ut {
|
|
|
1544
1574
|
t.save(), t.drawImage(this.img, r, a, n, o), t.beginPath(), this.count > 1 && (t.arc(this.x + n * 0.3, this.y - o * 0.8, h, 0, 2 * Math.PI), t.fillStyle = "red", t.fill(), t.font = `${l}px Microsoft YaHei`, t.textAlign = "center", t.fillStyle = "#FFFFFF", t.fillText(this.count.toString(), this.x + n * 0.3, this.y - o * 0.8 + h / 2)), t.restore();
|
|
1545
1575
|
}
|
|
1546
1576
|
}
|
|
1547
|
-
const
|
|
1577
|
+
const F = {};
|
|
1548
1578
|
class Yt {
|
|
1549
1579
|
type = "marker";
|
|
1550
1580
|
x;
|
|
@@ -1561,7 +1591,7 @@ class Yt {
|
|
|
1561
1591
|
this.x = t.x, this.y = t.y, this.url = t.url, this.width = t.width ?? 0, this.height = t.height ?? 0, this.anchor = t.anchor, this.scale = t.scale ?? 1, t.redraw && (this.redraw = t.redraw), t.beforeDraw && (this.beforeDraw = t.beforeDraw), this.img = this.loadImage(t.onload);
|
|
1562
1592
|
}
|
|
1563
1593
|
loadImage(t) {
|
|
1564
|
-
const e =
|
|
1594
|
+
const e = F[this.url];
|
|
1565
1595
|
if (e)
|
|
1566
1596
|
return queueMicrotask(() => {
|
|
1567
1597
|
t?.(e), this.redraw?.();
|
|
@@ -1569,7 +1599,7 @@ class Yt {
|
|
|
1569
1599
|
{
|
|
1570
1600
|
const i = new Image();
|
|
1571
1601
|
return i.src = this.url, i.crossOrigin = "anonymous", i.onload = () => {
|
|
1572
|
-
|
|
1602
|
+
F[this.url] = i, t?.(i), this.redraw?.();
|
|
1573
1603
|
}, i;
|
|
1574
1604
|
}
|
|
1575
1605
|
}
|
|
@@ -1661,10 +1691,10 @@ class Bt {
|
|
|
1661
1691
|
}
|
|
1662
1692
|
}
|
|
1663
1693
|
export {
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1694
|
+
it as APP_SETTING,
|
|
1695
|
+
y as AppError,
|
|
1696
|
+
w as AppErrorCode,
|
|
1697
|
+
st as AppObsType,
|
|
1668
1698
|
jt as CanvasElement,
|
|
1669
1699
|
Xt as CanvasImageElement,
|
|
1670
1700
|
Ut as CanvasIssueElement,
|
|
@@ -1672,21 +1702,21 @@ export {
|
|
|
1672
1702
|
Ft as CanvasPointElement,
|
|
1673
1703
|
Gt as CanvasRadarElement,
|
|
1674
1704
|
Bt as CanvasRegionElement,
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1705
|
+
A as Coordinate,
|
|
1706
|
+
et as CoordinateLevel,
|
|
1707
|
+
z as CoordinateModelType,
|
|
1678
1708
|
C as CoordinateStatus,
|
|
1679
1709
|
v as CoordinateType,
|
|
1680
1710
|
At as DataHelper,
|
|
1681
|
-
|
|
1711
|
+
m as DataSource,
|
|
1682
1712
|
N as GeoPoint,
|
|
1683
1713
|
f as Point,
|
|
1684
|
-
|
|
1685
|
-
|
|
1714
|
+
K as Position,
|
|
1715
|
+
p as RelativeMap,
|
|
1686
1716
|
R as RequestContentType,
|
|
1687
1717
|
M as RequestMethod,
|
|
1688
|
-
|
|
1689
|
-
|
|
1718
|
+
U as RequestResultCode,
|
|
1719
|
+
tt as Vector3,
|
|
1690
1720
|
Lt as api,
|
|
1691
1721
|
Ot as http,
|
|
1692
1722
|
kt as utils
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(l,f){typeof exports=="object"&&typeof module<"u"?f(exports):typeof define=="function"&&define.amd?define(["exports"],f):(l=typeof globalThis<"u"?globalThis:l||self,f(l.Shared={}))})(this,(function(l){"use strict";class f extends Error{constructor(t,e,i){super(e),this.code=t,this.message=e,this.details=i,this.name="Apprror",Object.setPrototypeOf(this,f.prototype)}toJSON(){return{code:this.code,message:this.message,details:this.details,timestamp:new Date().toISOString()}}}var C=(s=>(s[s.CADModel=5]="CADModel",s[s.BIMModel=6]="BIMModel",s[s.ForgeModel=7]="ForgeModel",s[s.ThreeDModel=8]="ThreeDModel",s[s.SkyMapModel=9]="SkyMapModel",s[s.ScaleModel=10]="ScaleModel",s))(C||{}),U=(s=>(s[s.Global=0]="Global",s))(U||{}),b=(s=>(s[s.Space=0]="Space",s[s.Model=1]="Model",s[s.Data=2]="Data",s))(b||{}),I=(s=>(s[s.Used=0]="Used",s[s.Enabled=1]="Enabled",s[s.Disabled=2]="Disabled",s))(I||{}),L=(s=>(s[s.SUCCESS=200]="SUCCESS",s[s.ERROR=-1]="ERROR",s[s.TIMEOUT=401]="TIMEOUT",s))(L||{}),g=(s=>(s.GET="GET",s.POST="POST",s))(g||{}),R=(s=>(s.JSON="application/json",s.FORM_URLENCODED="application/x-www-form-urlencoded;charset=UTF-8",s.FORM_DATA="multipart/form-data;charset=UTF-8",s.OCTET_STREAM="'application/octet-stream",s))(R||{}),Y=(s=>(s.Hw="huawei",s.Ali="aliyun",s.Hs="hs",s.Aws="amazon",s.Minio="minio",s))(Y||{}),w=(s=>(s[s.GeoPointNoPlane=9e3]="GeoPointNoPlane",s[s.PointUnmappedGIS=9010]="PointUnmappedGIS",s[s.PointNoXYZ=9011]="PointNoXYZ",s[s.PointNoPlane=9012]="PointNoPlane",s[s.RelativePlaneUnmatch=9020]="RelativePlaneUnmatch",s[s.RelativeNoPlane=9021]="RelativeNoPlane",s[s.RelativeJsonError=9022]="RelativeJsonError",s[s.RequestCodeError=9030]="RequestCodeError",s[s.RequestResultError=9031]="RequestResultError",s[s.RequestUnknownError=9032]="RequestUnknownError",s))(w||{});const G={baseUrl:"https://vsleem.com/api",obsType:"hs",authorizeCode:""},ot={isTransformResponse:!0,joinBaseUrl:!0,withAuthorize:!0},rt={url:"",method:g.GET,headers:{}},B={...G};function at(s){Object.assign(B,s)}async function S(s,t){const e={...ot,...t},i={...rt,...s};try{const n=ht(i,e),{url:o,...r}=n,h=await(await window.fetch(o,r)).json();return ct(h,e)}catch(n){return lt(n)}}function ht(s,t){const{baseUrl:e,authorizeCode:i}=B,{joinBaseUrl:n,withAuthorize:o}=t;let{url:r,method:a,headers:h={},params:u,data:c}=s;n&&e&&(r=`${e}${r}`),a=a?.toUpperCase();const d={...h};if(/^https?:\/\/.+$/i.test(e??"")?d.PlatForm=new URL(e??"").host:d.PlatForm=new URL(window.location.href).host,o&&i&&(d.AuthorizationCode=i),a===g.POST&&!d["Content-Type"]&&(d["Content-Type"]=R.JSON),a===g.GET&&u){const x=new URLSearchParams(u);r+=`?${x.toString()}`}let m;return a===g.POST&&(m=d["Content-Type"]===R.JSON?JSON.stringify(c||{}):c),{url:r,method:a,headers:d,body:m}}function ct(s,t){if(!t.isTransformResponse)return s;if(!s)throw new f(w.RequestResultError,"请求返回的结果错误");const{code:e,data:i,msg:n}=s;if(e===L.SUCCESS)return i;throw new f(w.RequestCodeError,n||"请求返回的Code错误")}function lt(s){throw s instanceof Error?s:new f(w.RequestUnknownError,typeof s=="string"?s:"未知的请求错误")}const ut=Object.freeze(Object.defineProperty({__proto__:null,request:S,setRequestGlobalConfig:at},Symbol.toStringTag,{value:"Module"}));function $(s,t){return S({url:"/project/jssdk/cs/list",method:g.GET,params:s},t)}function _(s,t){return S({url:"/project/jssdk/cs/bind",method:g.POST,data:s},t)}function k(s,t){return S({url:"/project/jssdk/cs/save",method:g.POST,data:s},t)}function q(s,t){return S({url:"/project/jssdk/cs/delete",method:g.POST,data:s},t)}function Z(s,t){return S({url:"/project/jssdk/cs/mapping",method:g.POST,data:s},t)}function J(s,t){return S({url:"/project/jssdk/cs/mapping/query",method:g.GET,params:s},t)}function dt(s,t={isTransformResponse:!1,joinBaseUrl:!1,withAuthorize:!1}){return S({url:s,method:g.GET},t)}const ft=Object.freeze(Object.defineProperty({__proto__:null,bindCoordinate:_,getCoordinateList:$,getImageInfo:dt,getMappingRelation:J,mapingCoordinate:Z,removeCoordinate:q,saveCoordinate:k},Symbol.toStringTag,{value:"Module"})),mt=typeof window<"u",yt=Object.prototype.toString;function T(s,t){return yt.call(s)===`[object ${t}]`}function H(s){return typeof s<"u"}function V(s){return!H(s)}function P(s){return s!==null&&T(s,"Object")}function W(s){return s===null}function wt(s){return T(s,"Date")}function pt(s){return T(s,"String")}function A(s){return typeof s=="function"}function gt(s){return T(s,"Boolean")}function Mt(s){return T(s,"RegExp")}function v(s){return s&&Array.isArray(s)}function vt(s){return typeof window<"u"&&T(s,"Window")}function xt(s){return P(s)&&!!s.tagName}function E(s){return typeof s=="number"||/^\d+(\.\d+)?$/.test(String(s??""))}function bt(s,t){return JSON.stringify(s)===JSON.stringify(t)}function St(s){return V(s)||W(s)}function Tt(s){return T(s,"Promise")&&P(s)&&A(s.then)&&A(s.catch)}function Q(s){return D(s,new WeakMap)}function D(s,t){if(typeof s!="object"||s===null)return s;if(t.has(s))return t.get(s);let e;if(s instanceof Date)return e=new Date(s),t.set(s,e),e;if(s instanceof RegExp)return e=new RegExp(s),t.set(s,e),e;if(s instanceof Map)return e=new Map,t.set(s,e),s.forEach((n,o)=>{e.set(o,D(n,t))}),e;if(s instanceof Set)return e=new Set,t.set(s,e),s.forEach(n=>{e.add(D(n,t))}),e;if(ArrayBuffer.isView(s))return e=new s.constructor(s.buffer.slice(0),s.byteOffset,s.byteLength),t.set(s,e),e;if(s instanceof ArrayBuffer)return e=s.slice(0),t.set(s,e),e;if(Array.isArray(s)){e=[],t.set(s,e);for(let n=0;n<s.length;n++)n in s&&(e[n]=D(s[n],t));return e}e=Object.create(Object.getPrototypeOf(s)),t.set(s,e);for(const n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=D(s[n],t));const i=Object.getOwnPropertySymbols(s);for(const n of i)Object.prototype.propertyIsEnumerable.call(s,n)&&(e[n]=D(s[n],t));return e}function Pt(s,t,e=!1){let i;const n=function(...o){const r=this,a=e&&!i;i&&clearTimeout(i),i=setTimeout(()=>{i=void 0,e||s.apply(r,o)},t),a&&s.apply(r,o)};return n.cancel=()=>{i&&clearTimeout(i),i=void 0},n}function Et(s,t,e=!1){let i,n;const o=function(...r){const a=this;n?(clearTimeout(i),i=setTimeout(()=>{Date.now()-n>=t&&(s.apply(a,r),n=Date.now())},t-(Date.now()-n))):(e&&s.apply(a,r),n=Date.now())};return o.cancel=()=>{clearTimeout(i),i=void 0,n=void 0},o}function j(s,...t){if(!t.length)return s;const e=t.shift();return e===void 0?s:(O(s)&&O(e)&&Object.keys(e).forEach(i=>{const n=s[i],o=e[i];Array.isArray(n)&&Array.isArray(o)?s[i]=[...n,...o]:O(n)&&O(o)?s[i]=j({...n},o):o!==void 0&&(s[i]=o)}),j(s,...t))}function O(s){return s!==null&&typeof s=="object"&&!Array.isArray(s)}function K(s,...t){if(!t.length)return s;for(const e of t)e!=null&&typeof e=="object"&&Object.keys(e).forEach(i=>{const n=e[i],o=s[i];n!==null&&typeof n=="object"&&!Array.isArray(n)?((!o||typeof o!="object")&&(s[i]={}),K(s[i],n)):s[i]=n});return s}function tt(s,t){const e={};if(P(s)&&!v(s)){for(const i in s)if(Object.prototype.hasOwnProperty.call(s,i)){const n=s[i],o=P(t)&&!v(t)?t[i]:void 0;if(!(i in(t||{})))e[i]=n;else if(v(n)&&v(o))JSON.stringify(n)!==JSON.stringify(o)&&(e[i]=n);else if(P(n)&&P(o)){const r=tt(n,o);r&&Object.keys(r).length>0&&(e[i]=r)}else n!==o&&(e[i]=n)}}if(P(t)&&v(t))for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&!(i in(s||{}))&&(e[i]=void 0);return e}function Ct(s,t={}){return new Promise((e,i)=>{const n=N(s);if(Dt(n)){e(!0);return}const o=document.createElement("script");o.src=s,Object.entries(t).forEach(([r,a])=>{a!==!1&&o.setAttribute(r,a===!0?"":String(a))}),o.onload=()=>{e(!0)},o.onerror=()=>{document.head.removeChild(o),i(new Error(`Failed to load script: ${s}`))},document.head.appendChild(o)})}function Dt(s){const t=N(s);return Array.from(document.scripts).some(e=>N(e.src)===t)}function Nt(s){return new Promise((t,e)=>{const i=N(s);if(zt(i)){t(!0);return}const n=document.createElement("link");n.rel="stylesheet",n.type="text/css",n.href=s,n.onload=()=>{t(!0)},n.onerror=()=>{document.head.removeChild(n),e(new Error(`Failed to load link: ${s}`))},document.head.appendChild(n)})}function zt(s){const t=N(s);return Array.from(document.links).some(e=>N(e.href)===t)}function N(s){try{const t=new URL(s,window.location.href);return`${t.origin}${t.pathname}`}catch{return s}}function It(s,t,e,i){const n=Math.min(s/e,t/i),o=e*n,r=i*n;return{scale:n,x:(s-o)/2,y:(t-r)/2,sw:o,sh:r}}function Rt(s,t,e){return{x:s*e.scale+e.x,y:t*e.scale+e.y}}function Ot(s,t,e){return{x:(s-e.x)/e.scale,y:(t-e.y)/e.scale}}function Lt(s){console.warn(`[warn]:${s}`)}function kt(s){throw new Error(`[error]:${s}`)}const At=Object.freeze(Object.defineProperty({__proto__:null,cloneDeep:Q,debounce:Pt,deepMerge:j,deepMergeProps:K,error:kt,getDiffProps:tt,getImageTransform:It,inBrowser:mt,is:T,isArray:v,isBoolean:gt,isDate:wt,isDef:H,isElement:xt,isFunction:A,isNull:W,isNullOrUnDef:St,isNumber:E,isObject:P,isPromise:Tt,isRegExp:Mt,isSameValue:bt,isString:pt,isUnDef:V,isWindow:vt,loadCss:Nt,loadScript:Ct,throttle:Et,toCanvasCoord:Rt,toModelCoord:Ot,warn:Lt},Symbol.toStringTag,{value:"Module"}));class y{x=0;y=0;z=0;lat=0;lon=0;alt=0;yaw=0;pitch=0;roll=0;hasXYZ=!1;hasGeo=!1;hasAngle=!1;plane="xy";constructor(t){const{x:e,y:i,z:n,lat:o,lon:r,alt:a,yaw:h,pitch:u,roll:c,plane:d="xy"}=t||{};E(e)&&E(i)&&Number(e)!==0&&Number(i)!==0&&(this.x=Number(e)||0,this.y=Number(i)||0,this.z=Number(n)||0,this.plane=d,this.hasXYZ=!0),E(o)&&E(r)&&Number(o)!==0&&Number(r)!==0&&(this.lat=Number(o)||0,this.lon=Number(r)||0,this.alt=Number(a)||0,this.hasGeo=!0),(E(h)||E(u)||E(c))&&(this.yaw=Number(h)||0,this.pitch=Number(u)||0,this.roll=Number(c)||0,this.hasAngle=!0)}static dist(t,e){return Math.hypot(t.x-e.x,t.y-e.y,t.z-e.z)}static distXZ(t,e){return Math.hypot(t.x-e.x,t.z-e.z)}static distXY(t,e){return Math.hypot(t.x-e.x,t.y-e.y)}static toRadians(t){return(Number(t)||0)*Math.PI/180}static toDegrees(t){return(Number(t)||0)*180/Math.PI}static angleXZ(t,e,i){const n={x:t.x-e.x,z:t.z-e.z},o={x:i.x-e.x,z:i.z-e.z},r=n.x*o.x+n.z*o.z,a=Math.sqrt(n.x**2+n.z**2),h=Math.sqrt(o.x**2+o.z**2),u=Math.max(-1,Math.min(1,r/(a*h))),d=Math.acos(u)*180/Math.PI;return Math.min(d,360-d)}static toParse(t){if(t){const e=t?.split(",").map(i=>Number(i)||0);return new y({x:e[0],y:e[1],z:e[2]})}}static toStringify(t){return t?`${t.x},${t.y},${t.z}`:""}projection(t,e,i){try{if(e?.id===i?.id)return new y(this);if(e?.modelType===C.SkyMapModel){const{refPoint:n}=e?.relativeMap||{};if(this?.hasXYZ)return this.project(t);if(this.hasGeo&&n){const o=z.LLHToXYZ(this,n);return this.x=o.x,this.y=o.y,this.z=o.z,this.hasXYZ=!0,this.project(t)}throw new f(w.PointUnmappedGIS,"没有完成GIS与其他空间的映射")}if(i?.modelType===C.SkyMapModel){const{refPoint:n}=i?.relativeMap||{};if(this?.hasGeo)return new y(this);const o=this.project(t);if(o?.hasXYZ&&n){const r=z.XYZToLLH(o,n);return o.lat=r.lat,o.lon=r.lon,o.alt=r.alt,o.hasGeo=!0,o}throw new f(w.PointUnmappedGIS,"没有完成GIS与其他空间的映射")}return this.project(t)}catch{return}}project(t){if(!this.hasXYZ)throw new f(w.PointNoXYZ,"点没有xxz坐标信息");if(this.plane==="xz")return this.projectXZ(t);if(this.plane==="xy")return this.projectXY(t);throw new f(w.PointNoPlane,"点的plane应为xz或xy")}projectXZ(t){const e=new y(this);e.x*=t.scale,e.y*=t.scale,e.z*=t.scale,e.yaw!==void 0&&(e.yaw+=t.yaw);const i=e.x*Math.cos(t.yaw)-e.z*Math.sin(t.yaw),n=e.x*Math.sin(t.yaw)+e.z*Math.cos(t.yaw);return e.x=i+t.x,e.y+=t.y,e.z=n+t.z,e}projectXY(t){const e=new y(this);e.x*=t.scale,e.y*=t.scale,e.z*=t.scale,e.yaw!==void 0&&(e.yaw+=t.yaw);const i=e.x*Math.cos(t.yaw)-e.y*Math.sin(t.yaw),n=e.x*Math.sin(t.yaw)+e.y*Math.cos(t.yaw);return e.x=i+t.x,e.y=n+t.y,e.z+=t.z,e}}class z{lat=0;lon=0;alt=0;constructor(t){const{lat:e=0,lon:i=0,alt:n=0}=t||{};this.lat=e,this.lon=i,this.alt=n}static XYZToLLH(t,e){const n=.0033528106647474805,o=n*(2-n),r=y.toRadians(e.lat),a=6378137/Math.sqrt(1-o*Math.sin(r)**2)+e.alt;let h,u,c;if(t.plane==="xz"){const d=t.x/1e3/(a*Math.cos(r)),m=t.z/1e3/a;h=e.lon+y.toDegrees(d),u=e.lat-y.toDegrees(m),c=e.alt+t.y/1e3}else if(t.plane==="xy"){const d=t.x/1e3/(a*Math.cos(r)),m=t.y/1e3/a;h=e.lon+y.toDegrees(d),u=e.lat-y.toDegrees(m),c=e.alt+t.z/1e3}else throw new f(w.GeoPointNoPlane,"点的plane应为xz或xy");return new z({lat:u,lon:h,alt:c})}static LLHToXYZ(t,e){const n=.0033528106647474805,o=n*(2-n),r=y.toRadians(e.lat),a=6378137/Math.sqrt(1-o*Math.sin(r)**2)+e.alt,h=y.toRadians(t.lon-e.lon),u=y.toRadians(e.lat-t.lat),c=a*h*Math.cos(r),d=a*u;if(t.plane==="xz")return new y({x:c*1e3,y:(t.alt-e.alt)*1e3,z:d*1e3,plane:"xz"});if(t.plane==="xy")return new y({x:c*1e3,y:d*1e3,z:(t.alt-e.alt)*1e3,plane:"xy"});throw new f(w.GeoPointNoPlane,"点的plane应为xz或xy")}}class M{scale=1;yaw=0;x=0;y=0;z=0;start=0;end=-1;plane="xy";refPoint;constructor(t){const{refPoint:e,...i}=t||{};e&&(this.refPoint=new z(e)),Object.assign(this,i)}static addRelativeMap(t,e){if(t.plane!==e.plane)throw new f(w.RelativePlaneUnmatch,"两个映射关系的plane应该相同");const i=t.scale*e.scale,n=t.yaw+e.yaw,o=Math.cos(e.yaw),r=Math.sin(e.yaw);let a=0,h=0,u=0;if(t.plane==="xz"){const c=t.x*o-t.z*r,d=t.y,m=t.x*r+t.z*o;a=e.x+c*e.scale,h=e.y+d*e.scale,u=e.z+m*e.scale}else if(t.plane==="xy"){const c=t.x*o-t.y*r,d=t.x*r+t.y*o,m=t.z;a=e.x+c*e.scale,h=e.y+d*e.scale,u=e.z+m*e.scale}else throw new f(w.RelativeNoPlane,"映射关系的plane应为xz或xy");return new M({scale:i,yaw:n,x:a,y:h,z:u,start:t.start,end:t.end,plane:t.plane})}static inverseRelativeMap(t){const e=1/t.scale,i=-t.yaw,n=Math.cos(-i),o=Math.sin(-i);let r=0,a=0,h=0;if(t.plane==="xz")r=-(t.x*n+t.z*o)*e,a=-t.y*e,h=-(t.z*n-t.x*o)*e;else if(t.plane==="xy")r=-(t.x*n+t.y*o)*e,a=-(t.y*n-t.x*o)*e,h=-t.z*e;else throw new f(w.RelativeNoPlane,"映射关系的plane应为xz或xy");return new M({scale:e,yaw:i,x:r,y:a,z:h,start:t.start,end:t.end,plane:t.plane})}static toParse(t){try{let e=t?JSON.parse(t):void 0;const{reference_point:i}=e||{};return i&&(e={refPoint:i}),e?new M(e):void 0}catch{throw new f(w.RelativeJsonError,"relativeMap格式化失败")}}static toStringify(t){return t?JSON.stringify(t):void 0}}class p{static async getCoordinateTree(t){const e=await $({projectId:t});if(e.length){const i=p.handleCoordinateList(e);return p.buildCoordinateTree(i,0)}}static async addCoordinate(t,e){const{projectId:i,id:n}=t,o=e.map(a=>{const{type:h,modelType:u,relativeMap:c,level:d,...m}=a,x=c?JSON.stringify(c):void 0;return{...m,projectId:i,parentId:n,coordinateType:h,renderType:u,relativePosition:x}}),r=await k(o);return p.handleCoordinateList(r)}static async removeCoordinate(t,e){const i=e.map(n=>n.id??-1);return await q(i)}static async updateCoordinate(t,e){const{projectId:i,id:n}=t,o=e.map(a=>{const{type:h,relativeMap:u,level:c,...d}=a,m=M.toStringify(u);return{...d,relativePosition:m,projectId:i,parentId:n}}),r=await k(o);return p.handleCoordinateList(r)}static async bindCoordinate(t,e){const{projectId:i,id:n}=t,o=e.map(a=>{const{modelId:h}=a;return{modelId:h,parentId:n,projectId:i}}),r=await _(o);return p.handleCoordinateList(r)}static handleCoordinateList(t){return t?.map(e=>{const{coordinateType:i,modelKey:n,renderType:o,relativePosition:r,...a}=e,h=M.toParse(r);return new et({...a,type:i,modelType:o,modelValue:n,relativeMap:h})})}static buildCoordinateTree(t,e){const i=new Map,n=[];return t.forEach(o=>{i.set(String(o.id),o)}),t.forEach(o=>{const r=i.get(String(o.id));if(r)if(o.parentId===e)r.level=0,n.push(r);else{const a=i.get(String(o.parentId??-1));a&&(r.level=(Number(a.level)||0)+1,r.parent=a,a.children?.push(r))}}),n.forEach(p.sortCoordinateTree),n[0]}static sortCoordinateTree(t){t.children&&(t.children.sort((e,i)=>{if(e.type===b.Space){const n=Number(i?.relativeMap?.z)-Number(e?.relativeMap?.z);return n!==0?n:Number(i.createTime)-Number(e.createTime)}else return e.status===0&&i.status!==0?-1:i.status===0&&e.status!==0?1:Number(i.createTime)-Number(e.createTime)}),t.children.forEach(p.sortCoordinateTree))}static filterSpaceTree(t){const e=[];return t.forEach(i=>{const n=p.filterSpaceTree(i.children);i.children=n,i.disabled=i.disabled??!1,i.type!==b.Model&&e.push(i)}),e}}class et{id=0;type=0;children=[];level;relativeMap;no;name;shortName;status;modelId;modelType;modelValue;projectId;parentId;parent;groupUuid;z;createTime;disabled;constructor(t){this.setOptions(t)}get spaceList(){return this.children.filter(t=>t.type===b.Space)}get modelList(){return this.children.filter(t=>t.type===b.Model)}get fullName(){const t=this.name?`(${this.name})`:"";return this.shortName?`${this.shortName}${t}`:this.name??""}setOptions(t){const{relativeMap:e,parent:i,children:n,...o}=t||{};e&&(this.relativeMap=new M(e)),i&&(this.parent=i),n?.length&&(this.children=n),Object.assign(this,o)}async addChild(t){const e=v(t)?t:[t],i=await p.addCoordinate(this,e);this.mergeChild(i)}async removeChild(t){const e=v(t)?t:[t];await p.removeCoordinate(this,e);for(const i of e){const n=this.children.findIndex(o=>o.id===i.id);n!==-1&&this.children.splice(n,1)}}async updateChild(t){const e=v(t)?t:[t],i=await p.updateCoordinate(this,e);this.mergeChild(i)}async bindChild(t){const e=v(t)?t:[t],i=await p.bindCoordinate(this,e);this.mergeChild(i)}async mergeChild(t){t?.length&&t.forEach(e=>{const i=this.children.find(n=>n.id===e.id);if(i){const{relativeMap:n,no:o,name:r,shortName:a,status:h,modelId:u,modelValue:c}=e;Object.assign(i,{relativeMap:n,no:o,name:r,shortName:a,status:h,modelId:u,modelValue:c})}else this.id===e.parentId&&(e.parent=this,this.children.unshift(e))})}async mappingTo(t){await Z(t)}async fromMapping(){const t=await J({srcCsId:this.id});return t[t.length-1]}findRoot(t=!1){let e=this;for(;e.parent&&!(t&&!e.relativeMap);)e=e.parent;return e}findChildModel(t=[C.CADModel,C.SkyMapModel],e=!0){const i=v(t)?t:[t];return i.includes(this.modelType??-1)&&this.status!==I.Disabled?this:([b.Data,b.Model].includes(this.type)?this.findParentSpace():this)?.modelList?.filter(a=>i.includes(a.modelType??-1)?e?!!a.relativeMap:!0:!1)?.sort((a,h)=>Number(a.status)-Number(h.status))?.[0]}findClosestModel(t=C.CADModel,e){const i=new Set;for(const u of e??[])i.add(String(u.id));const n=[{node:this,distance:0}],o=v(t)?t:[t],r=new Set;let a,h=1/0;for(;n.length>0;){const u=n.shift();if(!u)break;const{node:c,distance:d}=u;if(i.has(String(c.id)))continue;if(o.includes(c.modelType??-1)){if(d<h&&(a=c,h=d,d<=1))break;continue}r.add(c);const m=[];if(c.children)for(const x of c.children)r.has(x)||m.push(x);if(c.parent?.children)for(const x of c.parent.children)x!==c&&!r.has(x)&&m.push(x);c.parent&&!r.has(c.parent)&&m.push(c.parent);for(const x of m)n.push({node:x,distance:d+1})}return a}findParentSpace(){let t=this;for(;t&&t.type!==b.Space;)t=t.parent;return t}findParentSpaceNames(t=2){const e=[];let i=this;for(;i&&t>0;)i.type===b.Space&&(e.unshift(i.fullName),t--),i=i.parent;return e}findCsGroup(){const{groupUuid:t,parent:e}=this;return t?e?.children?.filter(i=>i.groupUuid===t)||[]:[this]}findCsByLevel(t){if(this.level===t)return this;if(this.children.length)for(const e of this.children){const i=e.findCsByLevel(t);if(i)return i}}findCsById(t){if(t){if(this.id===t)return this;for(const e of this.children){const i=e.findCsById(t);if(i)return i}}}getCsRoutes(t=!1){let e=this;const i=[e];for(;e?.parent&&!(t&&!e.relativeMap);)e=e.parent,e&&i.push(e);return i}getMappedCsTree(){function t(n){return n.children?.length&&(n.children=n.children.filter(o=>!!o?.relativeMap&&o.status!==I.Disabled).map(o=>t(o))),n}const e=Q(this.findRoot(!0)),i=t(e);return i.parentId=0,i.parent=void 0,i}getDestRelativeMap(t){if(this.id===t.id)return new M;const e=this.getRelativeMaps(),i=t.getRelativeMaps();let n=new M;return e?.forEach(o=>{n=M.addRelativeMap(n,o)}),i?.reverse()?.forEach(o=>{n=M.addRelativeMap(n,M.inverseRelativeMap(o))}),n}getRelativeMaps(){let t=this;const e=[];for(;t?.parent&&t.relativeMap;)e.push(t.relativeMap),t=t.parent;return e}static filterCoordinateTree(t,e=[],i=[]){if(i.includes(t.id)||e.includes(t.type))return;const n=t.children?.map(o=>this.filterCoordinateTree(o,e,i)).filter(o=>o!==void 0);return{...t,children:n}}static getCommonCoordinate(t){let e;const i=t.map(n=>n.getCsRoutes(!0).filter(r=>r.id&&r.type===b.Space));for(;this.checkSameCoordinate(i);){const o=i.shift();o?.length&&(e=o[0])}return e}static checkSameCoordinate(t){if(t.length){if(t.length===1)return!0;for(let e=0;e<t.length-1;e++){const i=t[e];if(!i?.length)return!1;const n=t[e+1];if(!n?.length||i[0].id!==n[0].id)return!1}return!0}else return!1}}class X{yaw=0;pitch=0;roll=0;constructor(t){const{yaw:e=0,pitch:i=0,roll:n=0}=t||{};this.yaw=Number(e)||0,this.pitch=Number(i)||0,this.roll=Number(n)||0}static toParse(t){if(t){const e=t?.split(",").map(i=>Number(i)||0);return new X({yaw:e[0],pitch:e[1],roll:e[2]})}}static toStringify(t){return t?`${t.yaw},${t.pitch},${t.roll}`:""}}class F{x=0;y=0;z=0;constructor(t){const{x:e=0,y:i=0,z:n=0}=t||{};this.x=Number(e)||0,this.y=Number(i)||0,this.z=Number(n)||0}static toParse(t){if(t){const e=t?.split(",").map(i=>Number(i)||0);return new F({x:e[0],y:e[1],z:e[2]})}}static toStringify(t){return t?`${t.x},${t.y},${t.z}`:""}}class jt{static srcPointToDstPoint(t,e,i){if(!e||!i||!t?.length)return[];const n=e?.getDestRelativeMap(i);if(!n)return[];const o=[];return t.forEach(r=>{const a=r.projection(n,e,i);a&&o.push(a)}),o}}class Xt{canvas;ctx;options;offset={x:0,y:0};curOffset={x:0,y:0};mousePosition={x:-1,y:-1};MAX_SCALE=60;MIN_SCALE=1;STEP_SCALE=.5;scale=1;preScale=1;width=0;height=0;x=0;y=0;timeout=0;lastTouch;initialDistance=0;touchMode=0;isMouseover=!1;isBindEvent=!0;isDrawAssist=!1;customDrawAssist;isMoveRedrawing;afterDraw;screenPos={screenX:0,screenY:0};constructor(t){const{container:e,width:i=300,height:n=300,isBindEvent:o=!0,isDrawAssist:r=!1,isMoveRedrawing:a,customDrawAssist:h,afterDraw:u,...c}=t;this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.width=i,this.height=n,this.canvas.width=i,this.canvas.height=n,this.isBindEvent=o,this.isDrawAssist=r,this.customDrawAssist=h,this.isMoveRedrawing=a??r,this.options=c,this.onMousedown=this.onMousedown.bind(this),this.onMousemove=this.onMousemove.bind(this),this.onMousemoveTemp=this.onMousemoveTemp.bind(this),this.onMouseup=this.onMouseup.bind(this),this.onMousewheel=this.onMousewheel.bind(this),this.onDblclick=this.onDblclick.bind(this),this.onTouchstart=this.onTouchstart.bind(this),this.onTouchmove=this.onTouchmove.bind(this),this.onTouchend=this.onTouchend.bind(this),this.onMouseout=this.onMouseout.bind(this),this.afterDraw=this.afterDraw,o&&(this.canvas.addEventListener("DOMMouseScroll",this.onMousewheel),this.canvas.addEventListener("mousewheel",this.onMousewheel),this.canvas.addEventListener("mousedown",this.onMousedown),this.canvas.addEventListener("mousemove",this.onMousemove),this.canvas.addEventListener("mouseout",this.onMouseout),this.canvas.addEventListener("dblclick",this.onDblclick),this.canvas.addEventListener("touchstart",this.onTouchstart))}onClick(t){const{screenX:e,screenY:i}=t;this.timeout&&clearTimeout(this.timeout);const n=this.getPos(t);this.x=n.x,this.y=n.y,this.screenPos={screenX:e,screenY:i},this.options.onClick&&(this.timeout=setTimeout(()=>{const o=parseFloat(((this.x-this.offset.x)/this.scale).toFixed(2)),r=parseFloat(((this.y-this.offset.y)/this.scale).toFixed(2));this.options.onClick(o,r)},200))}onMouseout(t){this.isMouseover=!1,this.draw()}onTouchstart(t){t.preventDefault(),t.touches.length==1?this.touchMode===0&&(this.touchMode=1):t.touches.length>=2&&this.touchMode<2&&(this.touchMode=2),this.touchMode==1&&t.touches.length==1?this.onTouch(t.touches[0]):this.touchMode==2&&t.touches.length==2&&this.onBothTouchstart(t),this.canvas.addEventListener("touchmove",this.onTouchmove),this.canvas.addEventListener("touchend",this.onTouchend)}onMousedown(t){this.onClick(t),this.canvas.addEventListener("mousemove",this.onMousemoveTemp),this.canvas.addEventListener("mouseup",this.onMouseup)}onBothTouchstart(t){t.preventDefault();const e={x:t.touches[0].clientX,y:t.touches[0].clientY},i={x:t.touches[1].clientX,y:t.touches[1].clientY},n=this.getPos({clientX:(e.x+i.x)/2,clientY:(e.y+i.y)/2});this.x=n.x,this.y=n.y,this.curOffset.x=this.offset.x,this.curOffset.y=this.offset.y,this.initialDistance=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2))}onTouchmove(t){t.preventDefault(),this.touchMode==1&&t.touches.length==1?(this.onMousemoveTemp(t.touches[0]),this.onMousemove(t.touches[0])):this.touchMode==2&&t.touches.length==2&&this.onBothTouchmove(t)}onMousemove(t){const e=this.getPos(t);this.mousePosition.x=e.x,this.mousePosition.y=e.y,this.isMouseover=!0,this.isMoveRedrawing&&this.draw()}onMousemoveTemp(t){const{screenX:e,screenY:i}=this.screenPos;(Math.abs(e-t.screenX)>10||Math.abs(i-t.screenY)>10)&&(this.timeout&&clearTimeout(this.timeout),this.offset.x=this.curOffset.x+(this.mousePosition.x-this.x),this.offset.y=this.curOffset.y+(this.mousePosition.y-this.y),!this.isMoveRedrawing&&this.draw())}onBothTouchmove(t){if(t.preventDefault(),this.initialDistance){const e={x:t.touches[0].clientX,y:t.touches[0].clientY},i={x:t.touches[1].clientX,y:t.touches[1].clientY},n=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2));if(this.scale+=(n-this.initialDistance)/30*this.STEP_SCALE,this.initialDistance=n,this.scale>this.MAX_SCALE){this.scale=this.MAX_SCALE;return}if(this.scale<this.MIN_SCALE){this.scale=this.MIN_SCALE;return}this.zoom()}}onTouchend(){this.touchMode=0,this.onMouseup()}onMouseup(){this.curOffset.x=this.offset.x,this.curOffset.y=this.offset.y,this.canvas.removeEventListener("mousemove",this.onMousemoveTemp),this.canvas.removeEventListener("mouseup",this.onMouseup),this.canvas.removeEventListener("touchmove",this.onTouchmove),this.canvas.removeEventListener("touchend",this.onTouchend)}onMousewheel(t){this.timeout&&clearTimeout(this.timeout),t.preventDefault();const e=this.getPos(t);this.x=e.x,this.y=e.y;const i=t.wheelDelta>0||t.detail<0?this.STEP_SCALE:-this.STEP_SCALE;if(this.scale=parseFloat((this.scale+i).toFixed(2)),this.scale>this.MAX_SCALE){this.scale=this.MAX_SCALE;return}if(this.scale<this.MIN_SCALE){this.scale=this.MIN_SCALE;return}this.zoom()}onTouch(t){const e=Date.now(),{lastTouchTime:i=0,lastTouchX:n=0,lastTouchY:o=0}=this.lastTouch||{};e-i<300&&Math.abs(t.clientX-n)<30&&Math.abs(t.clientY-o)<30?(this.onDblclick(t),this.lastTouch={lastTouchTime:0,lastTouchX:0,lastTouchY:0}):(this.onClick(t),this.lastTouch={lastTouchTime:e,lastTouchX:t.clientX,lastTouchY:t.clientY})}onDblclick(t){this.timeout&&clearTimeout(this.timeout),this.reset(),this.draw()}zoom(){this.offset.x=this.x-(this.x-this.offset.x)*this.scale/this.preScale,this.offset.y=this.y-(this.y-this.offset.y)*this.scale/this.preScale,this.draw(),this.preScale=this.scale,this.curOffset.x=this.offset.x,this.curOffset.y=this.offset.y}reset(t){const{width:e=this.width,height:i=this.height,scale:n=1,preScale:o=1,offset:r={x:0,y:0},curOffset:a={x:0,y:0}}=t||{};this.width=e,this.height=i,this.canvas.width=e,this.canvas.height=i,this.scale=n,this.preScale=o,this.offset=r,this.curOffset=a}drawAssist(){const t=this.ctx;t.save(),t.beginPath(),t.lineWidth=1,t.strokeStyle="#C656D5",t.moveTo(0,this.mousePosition.y),t.lineTo(this.width,this.mousePosition.y),t.closePath(),t.stroke(),t.beginPath(),t.moveTo(this.mousePosition.x,0),t.lineTo(this.mousePosition.x,this.height),t.closePath(),t.stroke(),t.restore()}draw(){this.ctx.clearRect(0,0,this.width,this.height),this.ctx.save(),this.ctx.translate(this.offset.x,this.offset.y),this.ctx.scale(this.scale,this.scale),this.options.draw(this.ctx,this),this.ctx.restore(),this.isDrawAssist&&this.isMouseover&&(this.customDrawAssist?this.customDrawAssist():this.drawAssist()),this.afterDraw?.(this.ctx,this)}getPos(t){const e=this.canvas.getBoundingClientRect();let i=parseFloat((t.clientX-e.left).toFixed(2)),n=parseFloat((t.clientY-e.top).toFixed(2));return i=i<0?0:i,n=n<0?0:n,{x:i,y:n}}unBindEvent(){this.isBindEvent&&(this.canvas.removeEventListener("mousemove",this.onMousemove),this.canvas.removeEventListener("DOMMouseScroll",this.onMousewheel),this.canvas.removeEventListener("mousewheel",this.onMousewheel),this.canvas.removeEventListener("mousedown",this.onMousedown),this.canvas.removeEventListener("mouseout",this.onMouseout),this.canvas.removeEventListener("dblclick",this.onDblclick))}}const st={};class Ft{type="image";x;y;width;height;img;src;redraw;constructor(t){this.x=t.x||0,this.y=t.y||0,this.width=t.width||0,this.height=t.height||0,this.src=t.src,this.redraw=t.redraw,this.img=this.loadImage(t.onload)}loadImage(t){const e=st[this.src];if(e)return queueMicrotask(()=>{t?.(e),this.redraw?.()}),e;{const i=new Image;return i.crossOrigin="anonymous",i.src=this.src,i.onload=()=>{st[this.src]=i,t?.(i),this.redraw?.()},i}}draw(t){try{if(!this.img.complete)return;t.save(),t.drawImage(this.img,this.x,this.y,this.width,this.height),t.restore()}catch(e){console.error(e)}}}class Ut{id="";type="point";x;y;r;text;backgroundColor;index;pIndex;parentId;constructor(t){this.id=t.id,this.x=t.x,this.y=t.y,this.r=t.r||15,this.text=t.text||"",this.index=t.index,this.pIndex=t.pIndex,this.parentId=t.parentId,this.backgroundColor=t.backgroundColor||"rgba(91, 179, 111, 0.8)"}draw(t,e){t.save();const i=1/e.scale;t.beginPath(),t.arc(this.x,this.y,this.r*i,0,2*Math.PI),t.fillStyle=this.backgroundColor,t.fill(),t.font=`${this.r*i}px Microsoft YaHei`,t.textAlign="center",t.fillStyle="#FFFFFF",t.fillText(this.text,this.x,this.y+this.r*i/3),t.restore()}}const it={};class Yt{id="";type="issue";x;y;width;height;src;img;index;pIndex;parentId;count;badgeR;redraw;constructor(t){this.id=t.id,this.x=t.x,this.y=t.y,this.width=t.width||0,this.height=t.height||0,this.index=t.index,this.pIndex=t.pIndex,this.parentId=t.parentId,this.count=t.count||0,this.badgeR=3,this.src=t.src,this.redraw=t.redraw,this.img=this.loadImage(t.onload)}loadImage(t){const e=it[this.src];if(e)return queueMicrotask(()=>{t?.(e),this.redraw?.()}),e;{const i=new Image;return i.src=this.src,i.crossOrigin="anonymous",i.onload=()=>{it[this.src]=i,t?.(i),this.redraw?.()},i}}draw(t,e){if(!this.img.complete)return;const i=1/e.scale,n=this.width*i,o=this.height*i,r=this.x-n/2,a=this.y-o,h=this.badgeR*i,u=h*1.5;t.save(),t.drawImage(this.img,r,a,n,o),t.beginPath(),this.count>1&&(t.arc(this.x+n*.3,this.y-o*.8,h,0,2*Math.PI),t.fillStyle="red",t.fill(),t.font=`${u}px Microsoft YaHei`,t.textAlign="center",t.fillStyle="#FFFFFF",t.fillText(this.count.toString(),this.x+n*.3,this.y-o*.8+h/2)),t.restore()}}const nt={};class Gt{type="marker";x;y;url;width;height;anchor;img;scale;redraw;beforeDraw;constructor(t){this.x=t.x,this.y=t.y,this.url=t.url,this.width=t.width??0,this.height=t.height??0,this.anchor=t.anchor,this.scale=t.scale??1,t.redraw&&(this.redraw=t.redraw),t.beforeDraw&&(this.beforeDraw=t.beforeDraw),this.img=this.loadImage(t.onload)}loadImage(t){const e=nt[this.url];if(e)return queueMicrotask(()=>{t?.(e),this.redraw?.()}),e;{const i=new Image;return i.src=this.url,i.crossOrigin="anonymous",i.onload=()=>{nt[this.url]=i,t?.(i),this.redraw?.()},i}}calculateIconPosition(){const t=this.anchor?.x??this.width/2,e=this.anchor?.y??this.height/2;return{iconStartX:this.x-t*this.scale,iconStartY:this.y-e*this.scale}}draw(t,e){if(this.beforeDraw?.(t,e),!this.img?.complete)return;const{iconStartX:i,iconStartY:n}=this.calculateIconPosition();t.save();try{t.drawImage(this.img,i,n,this.width*this.scale,this.height*this.scale)}catch(o){console.error("绘制标记时出错:",o)}finally{t.restore()}}}class Bt{type="radar";x;y;r;angle;text;hFov=90;beforeDraw;constructor(t){this.x=t.x,this.y=t.y,this.r=t.r||15,this.angle=t.angle||0,this.text=t.text||"",this.hFov=t.fovh||90,this.beforeDraw=t.beforeDraw}draw(t,e){this.beforeDraw?.(t,e);const i=1/e.scale,[n,o]=[(this.angle-this.hFov/2)/180*Math.PI,(this.angle+this.hFov/2)/180*Math.PI];t.save();const r=t.createRadialGradient(this.x,this.y,0,this.x,this.y,this.r*i);r.addColorStop(0,"rgba(180, 42, 42, 1)"),r.addColorStop(1,"rgba(180, 42, 42, 0.5)"),t.beginPath(),t.moveTo(this.x,this.y),t.arc(this.x,this.y,this.r*i,n,o),t.closePath(),t.fillStyle=r,t.fill(),t.restore()}}class $t{type="region";x;y;shape;areaPoints;backgroundColor;constructor(t){if(this.x=t.x,this.y=t.y,this.shape=t.shape||"",this.backgroundColor=t.backgroundColor,t.areaPoints.length===2){const[{x:e,y:i},{},{x:n,y:o}]=t.areaPoints;this.areaPoints=[{x:Math.min(e,n),y:Math.min(i,o)},{x:Math.max(e,n),y:Math.min(i,o)},{x:Math.max(e,n),y:Math.max(i,o)},{x:Math.min(e,n),y:Math.max(i,o)}]}else this.areaPoints=t.areaPoints}draw(t,e){if(t.save(),t.beginPath(),t.globalAlpha=.3,t.fillStyle=this.backgroundColor,this.shape==="circle"){const[{x:i,y:n},{},{x:o,y:r}]=this.areaPoints,a=Math.abs(o-i)/2,h=i+(o-i)/2,u=n+(r-n)/2;t.arc(h,u,a,0,2*Math.PI)}else this.areaPoints.forEach((i,n)=>{const{x:o,y:r}=i;n===0?t.moveTo(o,r):t.lineTo(o,r)});t.fill(),t.restore()}}l.APP_SETTING=G,l.AppError=f,l.AppErrorCode=w,l.AppObsType=Y,l.CanvasElement=Xt,l.CanvasImageElement=Ft,l.CanvasIssueElement=Yt,l.CanvasMarkerElement=Gt,l.CanvasPointElement=Ut,l.CanvasRadarElement=Bt,l.CanvasRegionElement=$t,l.Coordinate=et,l.CoordinateLevel=U,l.CoordinateModelType=C,l.CoordinateStatus=I,l.CoordinateType=b,l.DataHelper=jt,l.DataSource=p,l.GeoPoint=z,l.Point=y,l.Position=X,l.RelativeMap=M,l.RequestContentType=R,l.RequestMethod=g,l.RequestResultCode=L,l.Vector3=F,l.api=ft,l.http=ut,l.utils=At,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(u,f){typeof exports=="object"&&typeof module<"u"?f(exports):typeof define=="function"&&define.amd?define(["exports"],f):(u=typeof globalThis<"u"?globalThis:u||self,f(u.Shared={}))})(this,(function(u){"use strict";class f extends Error{constructor(t,e,i){super(e),this.code=t,this.message=e,this.details=i,this.name="Apprror",Object.setPrototypeOf(this,f.prototype)}toJSON(){return{code:this.code,message:this.message,details:this.details,timestamp:new Date().toISOString()}}}var C=(s=>(s[s.CADModel=5]="CADModel",s[s.BIMModel=6]="BIMModel",s[s.ForgeModel=7]="ForgeModel",s[s.ThreeDModel=8]="ThreeDModel",s[s.SkyMapModel=9]="SkyMapModel",s[s.ScaleModel=10]="ScaleModel",s))(C||{}),Y=(s=>(s[s.Global=0]="Global",s))(Y||{}),b=(s=>(s[s.Space=0]="Space",s[s.Model=1]="Model",s[s.Data=2]="Data",s))(b||{}),I=(s=>(s[s.Used=0]="Used",s[s.Enabled=1]="Enabled",s[s.Disabled=2]="Disabled",s))(I||{}),L=(s=>(s[s.SUCCESS=200]="SUCCESS",s[s.ERROR=-1]="ERROR",s[s.TIMEOUT=401]="TIMEOUT",s))(L||{}),M=(s=>(s.GET="GET",s.POST="POST",s))(M||{}),R=(s=>(s.JSON="application/json",s.FORM_URLENCODED="application/x-www-form-urlencoded;charset=UTF-8",s.FORM_DATA="multipart/form-data;charset=UTF-8",s.OCTET_STREAM="'application/octet-stream",s))(R||{}),G=(s=>(s.Hw="huawei",s.Ali="aliyun",s.Hs="hs",s.Aws="amazon",s.Minio="minio",s))(G||{}),p=(s=>(s[s.GeoPointNoPlane=9e3]="GeoPointNoPlane",s[s.PointUnmappedGIS=9010]="PointUnmappedGIS",s[s.PointNoXYZ=9011]="PointNoXYZ",s[s.PointNoPlane=9012]="PointNoPlane",s[s.RelativePlaneUnmatch=9020]="RelativePlaneUnmatch",s[s.RelativeNoPlane=9021]="RelativeNoPlane",s[s.RelativeJsonError=9022]="RelativeJsonError",s[s.RequestCodeError=9030]="RequestCodeError",s[s.RequestResultError=9031]="RequestResultError",s[s.RequestUnknownError=9032]="RequestUnknownError",s))(p||{});const B={baseUrl:"https://vsleem.com/api",obsType:"hs",authorizeCode:""},ot={isTransformResponse:!0,joinBaseUrl:!0,withAuthorize:!0},rt={url:"",method:M.GET,headers:{}},$={...B};function at(s){Object.assign($,s)}async function T(s,t){const e={...ot,...t},i={...rt,...s};try{const n=ht(i,e),{url:o,...r}=n,h=await(await window.fetch(o,r)).json();return ct(h,e)}catch(n){return lt(n)}}function ht(s,t){const{baseUrl:e,authorizeCode:i}=$,{joinBaseUrl:n,withAuthorize:o}=t;let{url:r,method:a,headers:h={},params:l,data:c}=s;n&&e&&(r=`${e}${r}`),a=a?.toUpperCase();const d={...h};if(/^https?:\/\/.+$/i.test(e??"")?d.PlatForm=new URL(e??"").host:d.PlatForm=new URL(window.location.href).host,o&&i&&(d.AuthorizationCode=i),a===M.POST&&!d["Content-Type"]&&(d["Content-Type"]=R.JSON),a===M.GET&&l){const x=new URLSearchParams(l);r+=`?${x.toString()}`}let m;return a===M.POST&&(m=d["Content-Type"]===R.JSON?JSON.stringify(c||{}):c),{url:r,method:a,headers:d,body:m}}function ct(s,t){if(!t.isTransformResponse)return s;if(!s)throw new f(p.RequestResultError,"请求返回的结果错误");const{code:e,data:i,msg:n}=s;if(e===L.SUCCESS)return i;throw new f(p.RequestCodeError,n||"请求返回的Code错误")}function lt(s){throw s instanceof Error?s:new f(p.RequestUnknownError,typeof s=="string"?s:"未知的请求错误")}const ut=Object.freeze(Object.defineProperty({__proto__:null,request:T,setRequestGlobalConfig:at},Symbol.toStringTag,{value:"Module"}));function _(s,t){return T({url:"/project/jssdk/cs/list",method:M.GET,params:s},t)}function q(s,t){return T({url:"/project/jssdk/cs/bind",method:M.POST,data:s},t)}function k(s,t){return T({url:"/project/jssdk/cs/save",method:M.POST,data:s},t)}function Z(s,t){return T({url:"/project/jssdk/cs/delete",method:M.POST,data:s},t)}function J(s,t){return T({url:"/project/jssdk/cs/mapping",method:M.POST,data:s},t)}function H(s,t){return T({url:"/project/jssdk/cs/mapping/query",method:M.GET,params:s},t)}function dt(s,t={isTransformResponse:!1,joinBaseUrl:!1,withAuthorize:!1}){return T({url:s,method:M.GET},t)}const ft=Object.freeze(Object.defineProperty({__proto__:null,bindCoordinate:q,getCoordinateList:_,getImageInfo:dt,getMappingRelation:H,mapingCoordinate:J,removeCoordinate:Z,saveCoordinate:k},Symbol.toStringTag,{value:"Module"})),mt=typeof window<"u",yt=Object.prototype.toString;function S(s,t){return yt.call(s)===`[object ${t}]`}function V(s){return typeof s<"u"}function W(s){return!V(s)}function P(s){return s!==null&&S(s,"Object")}function Q(s){return s===null}function wt(s){return S(s,"Date")}function pt(s){return S(s,"String")}function A(s){return typeof s=="function"}function gt(s){return S(s,"Boolean")}function Mt(s){return S(s,"RegExp")}function v(s){return s&&Array.isArray(s)}function vt(s){return typeof window<"u"&&S(s,"Window")}function xt(s){return P(s)&&!!s.tagName}function E(s){return typeof s=="number"?!0:typeof s!="string"?!1:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/.test(s)}function bt(s,t){return JSON.stringify(s)===JSON.stringify(t)}function Tt(s){return W(s)||Q(s)}function St(s){return S(s,"Promise")&&P(s)&&A(s.then)&&A(s.catch)}function K(s){return D(s,new WeakMap)}function D(s,t){if(typeof s!="object"||s===null)return s;if(t.has(s))return t.get(s);let e;if(s instanceof Date)return e=new Date(s),t.set(s,e),e;if(s instanceof RegExp)return e=new RegExp(s),t.set(s,e),e;if(s instanceof Map)return e=new Map,t.set(s,e),s.forEach((n,o)=>{e.set(o,D(n,t))}),e;if(s instanceof Set)return e=new Set,t.set(s,e),s.forEach(n=>{e.add(D(n,t))}),e;if(ArrayBuffer.isView(s))return e=new s.constructor(s.buffer.slice(0),s.byteOffset,s.byteLength),t.set(s,e),e;if(s instanceof ArrayBuffer)return e=s.slice(0),t.set(s,e),e;if(Array.isArray(s)){e=[],t.set(s,e);for(let n=0;n<s.length;n++)n in s&&(e[n]=D(s[n],t));return e}e=Object.create(Object.getPrototypeOf(s)),t.set(s,e);for(const n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=D(s[n],t));const i=Object.getOwnPropertySymbols(s);for(const n of i)Object.prototype.propertyIsEnumerable.call(s,n)&&(e[n]=D(s[n],t));return e}function Pt(s,t,e=!1){let i;const n=function(...o){const r=this,a=e&&!i;i&&clearTimeout(i),i=setTimeout(()=>{i=void 0,e||s.apply(r,o)},t),a&&s.apply(r,o)};return n.cancel=()=>{i&&clearTimeout(i),i=void 0},n}function Et(s,t,e=!1){let i,n;const o=function(...r){const a=this;n?(clearTimeout(i),i=setTimeout(()=>{Date.now()-n>=t&&(s.apply(a,r),n=Date.now())},t-(Date.now()-n))):(e&&s.apply(a,r),n=Date.now())};return o.cancel=()=>{clearTimeout(i),i=void 0,n=void 0},o}function j(s,...t){if(!t.length)return s;const e=t.shift();return e===void 0?s:(O(s)&&O(e)&&Object.keys(e).forEach(i=>{const n=s[i],o=e[i];Array.isArray(n)&&Array.isArray(o)?s[i]=[...n,...o]:O(n)&&O(o)?s[i]=j({...n},o):o!==void 0&&(s[i]=o)}),j(s,...t))}function O(s){return s!==null&&typeof s=="object"&&!Array.isArray(s)}function tt(s,...t){if(!t.length)return s;for(const e of t)e!=null&&typeof e=="object"&&Object.keys(e).forEach(i=>{const n=e[i],o=s[i];n!==null&&typeof n=="object"&&!Array.isArray(n)?((!o||typeof o!="object")&&(s[i]={}),tt(s[i],n)):s[i]=n});return s}function et(s,t){const e={};if(P(s)&&!v(s)){for(const i in s)if(Object.prototype.hasOwnProperty.call(s,i)){const n=s[i],o=P(t)&&!v(t)?t[i]:void 0;if(!(i in(t||{})))e[i]=n;else if(v(n)&&v(o))JSON.stringify(n)!==JSON.stringify(o)&&(e[i]=n);else if(P(n)&&P(o)){const r=et(n,o);r&&Object.keys(r).length>0&&(e[i]=r)}else n!==o&&(e[i]=n)}}if(P(t)&&v(t))for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&!(i in(s||{}))&&(e[i]=void 0);return e}function Ct(s,t={}){return new Promise((e,i)=>{const n=N(s);if(Dt(n)){e(!0);return}const o=document.createElement("script");o.src=s,Object.entries(t).forEach(([r,a])=>{a!==!1&&o.setAttribute(r,a===!0?"":String(a))}),o.onload=()=>{e(!0)},o.onerror=()=>{document.head.removeChild(o),i(new Error(`Failed to load script: ${s}`))},document.head.appendChild(o)})}function Dt(s){const t=N(s);return Array.from(document.scripts).some(e=>N(e.src)===t)}function Nt(s){return new Promise((t,e)=>{const i=N(s);if(zt(i)){t(!0);return}const n=document.createElement("link");n.rel="stylesheet",n.type="text/css",n.href=s,n.onload=()=>{t(!0)},n.onerror=()=>{document.head.removeChild(n),e(new Error(`Failed to load link: ${s}`))},document.head.appendChild(n)})}function zt(s){const t=N(s);return Array.from(document.querySelectorAll('link[rel="stylesheet"]')).some(e=>N(e.href)===t)}function N(s){try{const t=new URL(s,window.location.href);return`${t.origin}${t.pathname}`}catch{return s}}function It(s,t,e,i){const n=Math.min(s/e,t/i),o=e*n,r=i*n;return{scale:n,x:(s-o)/2,y:(t-r)/2,sw:o,sh:r}}function Rt(s,t,e){return{x:s*e.scale+e.x,y:t*e.scale+e.y}}function Ot(s,t,e){return{x:(s-e.x)/e.scale,y:(t-e.y)/e.scale}}function Lt(s){console.warn(`[warn]:${s}`)}function kt(s){throw new Error(`[error]:${s}`)}const At=Object.freeze(Object.defineProperty({__proto__:null,cloneDeep:K,debounce:Pt,deepMerge:j,deepMergeProps:tt,error:kt,getDiffProps:et,getImageTransform:It,inBrowser:mt,is:S,isArray:v,isBoolean:gt,isDate:wt,isDef:V,isElement:xt,isFunction:A,isNull:Q,isNullOrUnDef:Tt,isNumeric:E,isObject:P,isPromise:St,isRegExp:Mt,isSameValue:bt,isString:pt,isUnDef:W,isWindow:vt,loadCss:Nt,loadScript:Ct,throttle:Et,toCanvasCoord:Rt,toModelCoord:Ot,warn:Lt},Symbol.toStringTag,{value:"Module"}));class y{x=0;y=0;z=0;lat=0;lon=0;alt=0;yaw=0;pitch=0;roll=0;hasXYZ=!1;hasGeo=!1;hasAngle=!1;plane="xy";constructor(t){const{x:e,y:i,z:n,lat:o,lon:r,alt:a,yaw:h,pitch:l,roll:c,plane:d="xy"}=t||{};E(e)&&E(i)&&Number(e)!==0&&Number(i)!==0&&(this.x=Number(e)||0,this.y=Number(i)||0,this.z=Number(n)||0,this.plane=d,this.hasXYZ=!0),E(o)&&E(r)&&Number(o)!==0&&Number(r)!==0&&(this.lat=Number(o)||0,this.lon=Number(r)||0,this.alt=Number(a)||0,this.hasGeo=!0),(E(h)||E(l)||E(c))&&(this.yaw=Number(h)||0,this.pitch=Number(l)||0,this.roll=Number(c)||0,this.hasAngle=!0)}static dist(t,e){return Math.hypot(t.x-e.x,t.y-e.y,t.z-e.z)}static distXZ(t,e){return Math.hypot(t.x-e.x,t.z-e.z)}static distXY(t,e){return Math.hypot(t.x-e.x,t.y-e.y)}static toRadians(t){return(Number(t)||0)*Math.PI/180}static toDegrees(t){return(Number(t)||0)*180/Math.PI}static angleXZ(t,e,i){const n={x:t.x-e.x,z:t.z-e.z},o={x:i.x-e.x,z:i.z-e.z},r=n.x*o.x+n.z*o.z,a=Math.sqrt(n.x**2+n.z**2),h=Math.sqrt(o.x**2+o.z**2),l=Math.max(-1,Math.min(1,r/(a*h))),d=Math.acos(l)*180/Math.PI;return Math.min(d,360-d)}static toParse(t){if(t){const e=t?.split(",").map(i=>Number(i)||0);return new y({x:e[0],y:e[1],z:e[2]})}}static toStringify(t){return t?`${t.x},${t.y},${t.z}`:""}projection(t,e,i){try{if(e?.id===i?.id)return new y(this);if(e?.modelType===C.SkyMapModel){const{refPoint:n}=e?.relativeMap||{};if(this?.hasXYZ)return this.project(t);if(this.hasGeo&&n){const o=z.LLHToXYZ(this,n);return this.x=o.x,this.y=o.y,this.z=o.z,this.hasXYZ=!0,this.project(t)}throw new f(p.PointUnmappedGIS,"没有完成GIS与其他空间的映射")}if(i?.modelType===C.SkyMapModel){const{refPoint:n}=i?.relativeMap||{};if(this?.hasGeo)return new y(this);const o=this.project(t);if(o?.hasXYZ&&n){const r=z.XYZToLLH(o,n);return o.lat=r.lat,o.lon=r.lon,o.alt=r.alt,o.hasGeo=!0,o}throw new f(p.PointUnmappedGIS,"没有完成GIS与其他空间的映射")}return this.project(t)}catch(n){console.error(n);return}}project(t){if(!this.hasXYZ)throw new f(p.PointNoXYZ,"点没有xxz坐标信息");if(this.plane==="xz")return this.projectXZ(t);if(this.plane==="xy")return this.projectXY(t);throw new f(p.PointNoPlane,"点的plane应为xz或xy")}projectXZ(t){const e=new y(this);e.x*=t.scale,e.y*=t.scale,e.z*=t.scale,e.yaw!==void 0&&(e.yaw+=t.yaw);const i=e.x*Math.cos(t.yaw)-e.z*Math.sin(t.yaw),n=e.x*Math.sin(t.yaw)+e.z*Math.cos(t.yaw);return e.x=i+t.x,e.y+=t.y,e.z=n+t.z,e}projectXY(t){const e=new y(this);e.x*=t.scale,e.y*=t.scale,e.z*=t.scale,e.yaw!==void 0&&(e.yaw+=t.yaw);const i=e.x*Math.cos(t.yaw)-e.y*Math.sin(t.yaw),n=e.x*Math.sin(t.yaw)+e.y*Math.cos(t.yaw);return e.x=i+t.x,e.y=n+t.y,e.z+=t.z,e}}class z{lat=0;lon=0;alt=0;constructor(t){const{lat:e=0,lon:i=0,alt:n=0}=t||{};this.lat=e,this.lon=i,this.alt=n}static XYZToLLH(t,e){const n=.0033528106647474805,o=n*(2-n),r=y.toRadians(e.lat),a=6378137/Math.sqrt(1-o*Math.sin(r)**2)+e.alt;let h,l,c;if(t.plane==="xz"){const d=t.x/1e3/(a*Math.cos(r)),m=t.z/1e3/a;h=e.lon+y.toDegrees(d),l=e.lat-y.toDegrees(m),c=e.alt+t.y/1e3}else if(t.plane==="xy"){const d=t.x/1e3/(a*Math.cos(r)),m=t.y/1e3/a;h=e.lon+y.toDegrees(d),l=e.lat-y.toDegrees(m),c=e.alt+t.z/1e3}else throw new f(p.GeoPointNoPlane,"点的plane应为xz或xy");return new z({lat:l,lon:h,alt:c})}static LLHToXYZ(t,e){const n=.0033528106647474805,o=n*(2-n),r=y.toRadians(e.lat),a=6378137/Math.sqrt(1-o*Math.sin(r)**2)+e.alt,h=y.toRadians(t.lon-e.lon),l=y.toRadians(e.lat-t.lat),c=a*h*Math.cos(r),d=a*l;if(t.plane==="xz")return new y({x:c*1e3,y:(t.alt-e.alt)*1e3,z:d*1e3,plane:"xz"});if(t.plane==="xy")return new y({x:c*1e3,y:d*1e3,z:(t.alt-e.alt)*1e3,plane:"xy"});throw new f(p.GeoPointNoPlane,"点的plane应为xz或xy")}}class g{scale=1;yaw=0;x=0;y=0;z=0;start=0;end=-1;plane="xy";refPoint;constructor(t){const{refPoint:e,...i}=t||{};e&&(this.refPoint=new z(e)),Object.assign(this,i)}static addRelativeMap(t,e){if(t.plane!==e.plane)throw new f(p.RelativePlaneUnmatch,"两个映射关系的plane应该相同");const i=t.scale*e.scale,n=t.yaw+e.yaw,o=Math.cos(e.yaw),r=Math.sin(e.yaw);let a=0,h=0,l=0;if(t.plane==="xz"){const c=t.x*o-t.z*r,d=t.y,m=t.x*r+t.z*o;a=e.x+c*e.scale,h=e.y+d*e.scale,l=e.z+m*e.scale}else if(t.plane==="xy"){const c=t.x*o-t.y*r,d=t.x*r+t.y*o,m=t.z;a=e.x+c*e.scale,h=e.y+d*e.scale,l=e.z+m*e.scale}else throw new f(p.RelativeNoPlane,"映射关系的plane应为xz或xy");return new g({scale:i,yaw:n,x:a,y:h,z:l,start:t.start,end:t.end,plane:t.plane})}static inverseRelativeMap(t){const e=1/t.scale,i=-t.yaw,n=Math.cos(-i),o=Math.sin(-i);let r=0,a=0,h=0;if(t.plane==="xz")r=-(t.x*n+t.z*o)*e,a=-t.y*e,h=-(t.z*n-t.x*o)*e;else if(t.plane==="xy")r=-(t.x*n+t.y*o)*e,a=-(t.y*n-t.x*o)*e,h=-t.z*e;else throw new f(p.RelativeNoPlane,"映射关系的plane应为xz或xy");return new g({scale:e,yaw:i,x:r,y:a,z:h,start:t.start,end:t.end,plane:t.plane})}static toParse(t){try{let e=t?JSON.parse(t):void 0;const{reference_point:i}=e||{};return i&&(e={refPoint:i}),e?new g(e):void 0}catch{throw new f(p.RelativeJsonError,"relativeMap格式化失败")}}static toStringify(t){return t?JSON.stringify(t):void 0}}class w{static async getCoordinateTree(t){const e=await _({projectId:t});if(e.length){const i=w.handleCoordinateList(e);return w.buildCoordinateTree(i,0)}}static parsedCoordinateTree(t){const e=w.flattenCoordinateTree(t);return w.buildCoordinateTree(e,0)}static async addCoordinate(t,e){const{projectId:i,id:n}=t,o=e.map(a=>{const{type:h,modelType:l,relativeMap:c,level:d,...m}=a,x=c?JSON.stringify(c):void 0;return{...m,projectId:i,parentId:n,coordinateType:h,renderType:l,relativePosition:x}}),r=await k(o);return w.handleCoordinateList(r)}static async removeCoordinate(t,e){const i=e.map(n=>n.id??-1);return await Z(i)}static async updateCoordinate(t,e){const{projectId:i,id:n}=t,o=e.map(a=>{const{type:h,relativeMap:l,level:c,...d}=a,m=g.toStringify(l);return{...d,relativePosition:m,projectId:i,parentId:n}}),r=await k(o);return w.handleCoordinateList(r)}static async bindCoordinate(t,e){const{projectId:i,id:n}=t,o=e.map(a=>{const{modelId:h}=a;return{modelId:h,parentId:n,projectId:i}}),r=await q(o);return w.handleCoordinateList(r)}static handleCoordinateList(t){return t?.map(e=>{const{coordinateType:i,modelKey:n,renderType:o,relativePosition:r,...a}=e,h=g.toParse(r);return new X({...a,type:i,modelType:o,modelValue:n,relativeMap:h})})}static flattenCoordinateTree(t){const e=Array.isArray(t)?t:[t],i=[];function n(o){for(const r of o){const{level:a,parent:h,relativeMap:l,...c}=r,d=new X({...c,relativeMap:new g(l)});i.push(d),r.children&&r.children.length>0&&n(r.children)}}return n(e),i}static buildCoordinateTree(t,e=0){const i=new Map,n=[];return t.forEach(o=>{i.set(String(o.id),o)}),t.forEach(o=>{const r=i.get(String(o.id));if(r)if(o.parentId===e)r.level=0,n.push(r);else{const a=i.get(String(o.parentId??-1));a&&(r.level=(Number(a.level)||0)+1,r.parent=a,a.children?.push(r))}}),n.forEach(w.sortCoordinateTree),n[0]}static sortCoordinateTree(t){t.children&&(t.children.sort((e,i)=>{if(e.type===b.Space){const n=Number(i?.relativeMap?.z)-Number(e?.relativeMap?.z);return n!==0?n:Number(i.createTime)-Number(e.createTime)}else return e.status===0&&i.status!==0?-1:i.status===0&&e.status!==0?1:Number(i.createTime)-Number(e.createTime)}),t.children.forEach(w.sortCoordinateTree))}static filterSpaceTree(t){const e=[];return t.forEach(i=>{const n=w.filterSpaceTree(i.children);i.children=n,i.disabled=i.disabled??!1,i.type!==b.Model&&e.push(i)}),e}}class X{id=0;type=0;children=[];level;relativeMap;no;name;shortName;status;modelId;modelType;modelValue;projectId;parentId;parent;groupUuid;z;createTime;disabled;constructor(t){this.setOptions(t)}get spaceList(){return this.children.filter(t=>t.type===b.Space)}get modelList(){return this.children.filter(t=>t.type===b.Model)}get fullName(){const t=this.name?`(${this.name})`:"";return this.shortName?`${this.shortName}${t}`:this.name??""}setOptions(t){const{relativeMap:e,parent:i,children:n,...o}=t||{};e&&(this.relativeMap=new g(e)),i&&(this.parent=i),n?.length&&(this.children=n),Object.assign(this,o)}async addChild(t){const e=v(t)?t:[t],i=await w.addCoordinate(this,e);return this.mergeChild(i),i}async removeChild(t){const e=v(t)?t:[t];await w.removeCoordinate(this,e);for(const i of e){const n=this.children.findIndex(o=>o.id===i.id);n!==-1&&this.children.splice(n,1)}}async updateChild(t){const e=v(t)?t:[t],i=await w.updateCoordinate(this,e);return this.mergeChild(i),i}async bindChild(t){const e=v(t)?t:[t],i=await w.bindCoordinate(this,e);return this.mergeChild(i),i}async mergeChild(t){t?.length&&t.forEach(e=>{const i=this.children.find(n=>n.id===e.id);if(i){const{relativeMap:n,no:o,name:r,shortName:a,status:h,modelId:l,modelValue:c}=e;Object.assign(i,{relativeMap:n,no:o,name:r,shortName:a,status:h,modelId:l,modelValue:c})}else this.id===e.parentId&&(e.parent=this,this.children.unshift(e))})}async mappingTo(t){await J(t)}async fromMapping(){const t=await H({srcCsId:this.id});return t[t.length-1]}findRoot(t=!1){let e=this;for(;e.parent&&!(t&&!e.relativeMap);)e=e.parent;return e}findChildModel(t=[C.CADModel,C.SkyMapModel],e=!0){const i=v(t)?t:[t];return i.includes(this.modelType??-1)&&this.status!==I.Disabled?this:([b.Data,b.Model].includes(this.type)?this.findParentSpace():this)?.modelList?.filter(a=>i.includes(a.modelType??-1)?e?!!a.relativeMap:!0:!1)?.sort((a,h)=>Number(a.status)-Number(h.status))?.[0]}findClosestModel(t=C.CADModel,e){const i=new Set;for(const l of e??[])i.add(String(l.id));const n=[{node:this,distance:0}],o=v(t)?t:[t],r=new Set;let a,h=1/0;for(;n.length>0;){const l=n.shift();if(!l)break;const{node:c,distance:d}=l;if(i.has(String(c.id)))continue;if(o.includes(c.modelType??-1)){if(d<h&&(a=c,h=d,d<=1))break;continue}r.add(c);const m=[];if(c.children)for(const x of c.children)r.has(x)||m.push(x);if(c.parent?.children)for(const x of c.parent.children)x!==c&&!r.has(x)&&m.push(x);c.parent&&!r.has(c.parent)&&m.push(c.parent);for(const x of m)n.push({node:x,distance:d+1})}return a}findParentSpace(){let t=this;for(;t&&t.type!==b.Space;)t=t.parent;return t}findParentSpaceNames(t=2){const e=[];let i=this;for(;i&&t>0;)i.type===b.Space&&(e.unshift(i.fullName),t--),i=i.parent;return e}findCsGroup(){const{groupUuid:t,parent:e}=this;return t?e?.children?.filter(i=>i.groupUuid===t)||[]:[this]}findCsByLevel(t){if(this.level===t)return this;if(this.children.length)for(const e of this.children){const i=e.findCsByLevel(t);if(i)return i}}findCsById(t){if(t){if(this.id===t)return this;for(const e of this.children){const i=e.findCsById(t);if(i)return i}}}getCsRoutes(t=!1){let e=this;const i=[e];for(;e?.parent&&!(t&&!e.relativeMap);)e=e.parent,e&&i.push(e);return i}getMappedCsTree(){function t(n){return n.children?.length&&(n.children=n.children.filter(o=>!!o?.relativeMap&&o.status!==I.Disabled).map(o=>t(o))),n}const e=K(this.findRoot(!0)),i=t(e);return i.parentId=0,i.parent=void 0,i}getDestRelativeMap(t){if(this.id===t.id)return new g;const e=this.getRelativeMaps(),i=t.getRelativeMaps();let n=new g;return e?.forEach(o=>{n=g.addRelativeMap(n,o)}),i?.reverse()?.forEach(o=>{n=g.addRelativeMap(n,g.inverseRelativeMap(o))}),n}getRelativeMaps(){let t=this;const e=[];for(;t?.parent&&t.relativeMap;)e.push(t.relativeMap),t=t.parent;return e}static filterCoordinateTree(t,e=[],i=[]){if(i.includes(t.id)||e.includes(t.type))return;const n=t.children?.map(o=>this.filterCoordinateTree(o,e,i)).filter(o=>o!==void 0);return{...t,children:n}}static getCommonCoordinate(t){let e;const i=t.map(n=>n.getCsRoutes(!0).filter(r=>r.id&&r.type===b.Space));for(;this.checkSameCoordinate(i);){const o=i.shift();o?.length&&(e=o[0])}return e}static checkSameCoordinate(t){if(t.length){if(t.length===1)return!0;for(let e=0;e<t.length-1;e++){const i=t[e];if(!i?.length)return!1;const n=t[e+1];if(!n?.length||i[0].id!==n[0].id)return!1}return!0}else return!1}}class F{yaw=0;pitch=0;roll=0;constructor(t){const{yaw:e=0,pitch:i=0,roll:n=0}=t||{};this.yaw=Number(e)||0,this.pitch=Number(i)||0,this.roll=Number(n)||0}static toParse(t){if(t){const e=t?.split(",").map(i=>Number(i)||0);return new F({yaw:e[0],pitch:e[1],roll:e[2]})}}static toStringify(t){return t?`${t.yaw},${t.pitch},${t.roll}`:""}}class U{x=0;y=0;z=0;constructor(t){const{x:e=0,y:i=0,z:n=0}=t||{};this.x=Number(e)||0,this.y=Number(i)||0,this.z=Number(n)||0}static toParse(t){if(t){const e=t?.split(",").map(i=>Number(i)||0);return new U({x:e[0],y:e[1],z:e[2]})}}static toStringify(t){return t?`${t.x},${t.y},${t.z}`:""}}class jt{static srcPointToDstPoint(t,e,i){if(!e||!i||!t?.length)return[];const n=e?.getDestRelativeMap(i);if(!n)return[];const o=[];return t.forEach(r=>{const a=r.projection(n,e,i);a&&o.push(a)}),o}}class Xt{canvas;ctx;options;offset={x:0,y:0};curOffset={x:0,y:0};mousePosition={x:-1,y:-1};MAX_SCALE=60;MIN_SCALE=1;STEP_SCALE=.5;scale=1;preScale=1;width=0;height=0;x=0;y=0;timeout=0;lastTouch;initialDistance=0;touchMode=0;isMouseover=!1;isBindEvent=!0;isDrawAssist=!1;customDrawAssist;isMoveRedrawing;afterDraw;screenPos={screenX:0,screenY:0};constructor(t){const{container:e,width:i=300,height:n=300,isBindEvent:o=!0,isDrawAssist:r=!1,isMoveRedrawing:a,customDrawAssist:h,afterDraw:l,...c}=t;this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.width=i,this.height=n,this.canvas.width=i,this.canvas.height=n,this.isBindEvent=o,this.isDrawAssist=r,this.customDrawAssist=h,this.isMoveRedrawing=a??r,this.options=c,this.onMousedown=this.onMousedown.bind(this),this.onMousemove=this.onMousemove.bind(this),this.onMousemoveTemp=this.onMousemoveTemp.bind(this),this.onMouseup=this.onMouseup.bind(this),this.onMousewheel=this.onMousewheel.bind(this),this.onDblclick=this.onDblclick.bind(this),this.onTouchstart=this.onTouchstart.bind(this),this.onTouchmove=this.onTouchmove.bind(this),this.onTouchend=this.onTouchend.bind(this),this.onMouseout=this.onMouseout.bind(this),this.afterDraw=this.afterDraw,o&&(this.canvas.addEventListener("DOMMouseScroll",this.onMousewheel),this.canvas.addEventListener("mousewheel",this.onMousewheel),this.canvas.addEventListener("mousedown",this.onMousedown),this.canvas.addEventListener("mousemove",this.onMousemove),this.canvas.addEventListener("mouseout",this.onMouseout),this.canvas.addEventListener("dblclick",this.onDblclick),this.canvas.addEventListener("touchstart",this.onTouchstart))}onClick(t){const{screenX:e,screenY:i}=t;this.timeout&&clearTimeout(this.timeout);const n=this.getPos(t);this.x=n.x,this.y=n.y,this.screenPos={screenX:e,screenY:i},this.options.onClick&&(this.timeout=setTimeout(()=>{const o=parseFloat(((this.x-this.offset.x)/this.scale).toFixed(2)),r=parseFloat(((this.y-this.offset.y)/this.scale).toFixed(2));this.options.onClick(o,r)},200))}onMouseout(t){this.isMouseover=!1,this.draw()}onTouchstart(t){t.preventDefault(),t.touches.length==1?this.touchMode===0&&(this.touchMode=1):t.touches.length>=2&&this.touchMode<2&&(this.touchMode=2),this.touchMode==1&&t.touches.length==1?this.onTouch(t.touches[0]):this.touchMode==2&&t.touches.length==2&&this.onBothTouchstart(t),this.canvas.addEventListener("touchmove",this.onTouchmove),this.canvas.addEventListener("touchend",this.onTouchend)}onMousedown(t){this.onClick(t),this.canvas.addEventListener("mousemove",this.onMousemoveTemp),this.canvas.addEventListener("mouseup",this.onMouseup)}onBothTouchstart(t){t.preventDefault();const e={x:t.touches[0].clientX,y:t.touches[0].clientY},i={x:t.touches[1].clientX,y:t.touches[1].clientY},n=this.getPos({clientX:(e.x+i.x)/2,clientY:(e.y+i.y)/2});this.x=n.x,this.y=n.y,this.curOffset.x=this.offset.x,this.curOffset.y=this.offset.y,this.initialDistance=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2))}onTouchmove(t){t.preventDefault(),this.touchMode==1&&t.touches.length==1?(this.onMousemoveTemp(t.touches[0]),this.onMousemove(t.touches[0])):this.touchMode==2&&t.touches.length==2&&this.onBothTouchmove(t)}onMousemove(t){const e=this.getPos(t);this.mousePosition.x=e.x,this.mousePosition.y=e.y,this.isMouseover=!0,this.isMoveRedrawing&&this.draw()}onMousemoveTemp(t){const{screenX:e,screenY:i}=this.screenPos;(Math.abs(e-t.screenX)>10||Math.abs(i-t.screenY)>10)&&(this.timeout&&clearTimeout(this.timeout),this.offset.x=this.curOffset.x+(this.mousePosition.x-this.x),this.offset.y=this.curOffset.y+(this.mousePosition.y-this.y),!this.isMoveRedrawing&&this.draw())}onBothTouchmove(t){if(t.preventDefault(),this.initialDistance){const e={x:t.touches[0].clientX,y:t.touches[0].clientY},i={x:t.touches[1].clientX,y:t.touches[1].clientY},n=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2));if(this.scale+=(n-this.initialDistance)/30*this.STEP_SCALE,this.initialDistance=n,this.scale>this.MAX_SCALE){this.scale=this.MAX_SCALE;return}if(this.scale<this.MIN_SCALE){this.scale=this.MIN_SCALE;return}this.zoom()}}onTouchend(){this.touchMode=0,this.onMouseup()}onMouseup(){this.curOffset.x=this.offset.x,this.curOffset.y=this.offset.y,this.canvas.removeEventListener("mousemove",this.onMousemoveTemp),this.canvas.removeEventListener("mouseup",this.onMouseup),this.canvas.removeEventListener("touchmove",this.onTouchmove),this.canvas.removeEventListener("touchend",this.onTouchend)}onMousewheel(t){this.timeout&&clearTimeout(this.timeout),t.preventDefault();const e=this.getPos(t);this.x=e.x,this.y=e.y;const i=t.wheelDelta>0||t.detail<0?this.STEP_SCALE:-this.STEP_SCALE;if(this.scale=parseFloat((this.scale+i).toFixed(2)),this.scale>this.MAX_SCALE){this.scale=this.MAX_SCALE;return}if(this.scale<this.MIN_SCALE){this.scale=this.MIN_SCALE;return}this.zoom()}onTouch(t){const e=Date.now(),{lastTouchTime:i=0,lastTouchX:n=0,lastTouchY:o=0}=this.lastTouch||{};e-i<300&&Math.abs(t.clientX-n)<30&&Math.abs(t.clientY-o)<30?(this.onDblclick(t),this.lastTouch={lastTouchTime:0,lastTouchX:0,lastTouchY:0}):(this.onClick(t),this.lastTouch={lastTouchTime:e,lastTouchX:t.clientX,lastTouchY:t.clientY})}onDblclick(t){this.timeout&&clearTimeout(this.timeout),this.reset(),this.draw()}zoom(){this.offset.x=this.x-(this.x-this.offset.x)*this.scale/this.preScale,this.offset.y=this.y-(this.y-this.offset.y)*this.scale/this.preScale,this.draw(),this.preScale=this.scale,this.curOffset.x=this.offset.x,this.curOffset.y=this.offset.y}reset(t){const{width:e=this.width,height:i=this.height,scale:n=1,preScale:o=1,offset:r={x:0,y:0},curOffset:a={x:0,y:0}}=t||{};this.width=e,this.height=i,this.canvas.width=e,this.canvas.height=i,this.scale=n,this.preScale=o,this.offset=r,this.curOffset=a}drawAssist(){const t=this.ctx;t.save(),t.beginPath(),t.lineWidth=1,t.strokeStyle="#C656D5",t.moveTo(0,this.mousePosition.y),t.lineTo(this.width,this.mousePosition.y),t.closePath(),t.stroke(),t.beginPath(),t.moveTo(this.mousePosition.x,0),t.lineTo(this.mousePosition.x,this.height),t.closePath(),t.stroke(),t.restore()}draw(){this.ctx.clearRect(0,0,this.width,this.height),this.ctx.save(),this.ctx.translate(this.offset.x,this.offset.y),this.ctx.scale(this.scale,this.scale),this.options.draw(this.ctx,this),this.ctx.restore(),this.isDrawAssist&&this.isMouseover&&(this.customDrawAssist?this.customDrawAssist():this.drawAssist()),this.afterDraw?.(this.ctx,this)}getPos(t){const e=this.canvas.getBoundingClientRect();let i=parseFloat((t.clientX-e.left).toFixed(2)),n=parseFloat((t.clientY-e.top).toFixed(2));return i=i<0?0:i,n=n<0?0:n,{x:i,y:n}}unBindEvent(){this.isBindEvent&&(this.canvas.removeEventListener("mousemove",this.onMousemove),this.canvas.removeEventListener("DOMMouseScroll",this.onMousewheel),this.canvas.removeEventListener("mousewheel",this.onMousewheel),this.canvas.removeEventListener("mousedown",this.onMousedown),this.canvas.removeEventListener("mouseout",this.onMouseout),this.canvas.removeEventListener("dblclick",this.onDblclick))}}const st={};class Ft{type="image";x;y;width;height;img;src;redraw;constructor(t){this.x=t.x||0,this.y=t.y||0,this.width=t.width||0,this.height=t.height||0,this.src=t.src,this.redraw=t.redraw,this.img=this.loadImage(t.onload)}loadImage(t){const e=st[this.src];if(e)return queueMicrotask(()=>{t?.(e),this.redraw?.()}),e;{const i=new Image;return i.crossOrigin="anonymous",i.src=this.src,i.onload=()=>{st[this.src]=i,t?.(i),this.redraw?.()},i}}draw(t){try{if(!this.img.complete)return;t.save(),t.drawImage(this.img,this.x,this.y,this.width,this.height),t.restore()}catch(e){console.error(e)}}}class Ut{id="";type="point";x;y;r;text;backgroundColor;index;pIndex;parentId;constructor(t){this.id=t.id,this.x=t.x,this.y=t.y,this.r=t.r||15,this.text=t.text||"",this.index=t.index,this.pIndex=t.pIndex,this.parentId=t.parentId,this.backgroundColor=t.backgroundColor||"rgba(91, 179, 111, 0.8)"}draw(t,e){t.save();const i=1/e.scale;t.beginPath(),t.arc(this.x,this.y,this.r*i,0,2*Math.PI),t.fillStyle=this.backgroundColor,t.fill(),t.font=`${this.r*i}px Microsoft YaHei`,t.textAlign="center",t.fillStyle="#FFFFFF",t.fillText(this.text,this.x,this.y+this.r*i/3),t.restore()}}const it={};class Yt{id="";type="issue";x;y;width;height;src;img;index;pIndex;parentId;count;badgeR;redraw;constructor(t){this.id=t.id,this.x=t.x,this.y=t.y,this.width=t.width||0,this.height=t.height||0,this.index=t.index,this.pIndex=t.pIndex,this.parentId=t.parentId,this.count=t.count||0,this.badgeR=3,this.src=t.src,this.redraw=t.redraw,this.img=this.loadImage(t.onload)}loadImage(t){const e=it[this.src];if(e)return queueMicrotask(()=>{t?.(e),this.redraw?.()}),e;{const i=new Image;return i.src=this.src,i.crossOrigin="anonymous",i.onload=()=>{it[this.src]=i,t?.(i),this.redraw?.()},i}}draw(t,e){if(!this.img.complete)return;const i=1/e.scale,n=this.width*i,o=this.height*i,r=this.x-n/2,a=this.y-o,h=this.badgeR*i,l=h*1.5;t.save(),t.drawImage(this.img,r,a,n,o),t.beginPath(),this.count>1&&(t.arc(this.x+n*.3,this.y-o*.8,h,0,2*Math.PI),t.fillStyle="red",t.fill(),t.font=`${l}px Microsoft YaHei`,t.textAlign="center",t.fillStyle="#FFFFFF",t.fillText(this.count.toString(),this.x+n*.3,this.y-o*.8+h/2)),t.restore()}}const nt={};class Gt{type="marker";x;y;url;width;height;anchor;img;scale;redraw;beforeDraw;constructor(t){this.x=t.x,this.y=t.y,this.url=t.url,this.width=t.width??0,this.height=t.height??0,this.anchor=t.anchor,this.scale=t.scale??1,t.redraw&&(this.redraw=t.redraw),t.beforeDraw&&(this.beforeDraw=t.beforeDraw),this.img=this.loadImage(t.onload)}loadImage(t){const e=nt[this.url];if(e)return queueMicrotask(()=>{t?.(e),this.redraw?.()}),e;{const i=new Image;return i.src=this.url,i.crossOrigin="anonymous",i.onload=()=>{nt[this.url]=i,t?.(i),this.redraw?.()},i}}calculateIconPosition(){const t=this.anchor?.x??this.width/2,e=this.anchor?.y??this.height/2;return{iconStartX:this.x-t*this.scale,iconStartY:this.y-e*this.scale}}draw(t,e){if(this.beforeDraw?.(t,e),!this.img?.complete)return;const{iconStartX:i,iconStartY:n}=this.calculateIconPosition();t.save();try{t.drawImage(this.img,i,n,this.width*this.scale,this.height*this.scale)}catch(o){console.error("绘制标记时出错:",o)}finally{t.restore()}}}class Bt{type="radar";x;y;r;angle;text;hFov=90;beforeDraw;constructor(t){this.x=t.x,this.y=t.y,this.r=t.r||15,this.angle=t.angle||0,this.text=t.text||"",this.hFov=t.fovh||90,this.beforeDraw=t.beforeDraw}draw(t,e){this.beforeDraw?.(t,e);const i=1/e.scale,[n,o]=[(this.angle-this.hFov/2)/180*Math.PI,(this.angle+this.hFov/2)/180*Math.PI];t.save();const r=t.createRadialGradient(this.x,this.y,0,this.x,this.y,this.r*i);r.addColorStop(0,"rgba(180, 42, 42, 1)"),r.addColorStop(1,"rgba(180, 42, 42, 0.5)"),t.beginPath(),t.moveTo(this.x,this.y),t.arc(this.x,this.y,this.r*i,n,o),t.closePath(),t.fillStyle=r,t.fill(),t.restore()}}class $t{type="region";x;y;shape;areaPoints;backgroundColor;constructor(t){if(this.x=t.x,this.y=t.y,this.shape=t.shape||"",this.backgroundColor=t.backgroundColor,t.areaPoints.length===2){const[{x:e,y:i},{},{x:n,y:o}]=t.areaPoints;this.areaPoints=[{x:Math.min(e,n),y:Math.min(i,o)},{x:Math.max(e,n),y:Math.min(i,o)},{x:Math.max(e,n),y:Math.max(i,o)},{x:Math.min(e,n),y:Math.max(i,o)}]}else this.areaPoints=t.areaPoints}draw(t,e){if(t.save(),t.beginPath(),t.globalAlpha=.3,t.fillStyle=this.backgroundColor,this.shape==="circle"){const[{x:i,y:n},{},{x:o,y:r}]=this.areaPoints,a=Math.abs(o-i)/2,h=i+(o-i)/2,l=n+(r-n)/2;t.arc(h,l,a,0,2*Math.PI)}else this.areaPoints.forEach((i,n)=>{const{x:o,y:r}=i;n===0?t.moveTo(o,r):t.lineTo(o,r)});t.fill(),t.restore()}}u.APP_SETTING=B,u.AppError=f,u.AppErrorCode=p,u.AppObsType=G,u.CanvasElement=Xt,u.CanvasImageElement=Ft,u.CanvasIssueElement=Yt,u.CanvasMarkerElement=Gt,u.CanvasPointElement=Ut,u.CanvasRadarElement=Bt,u.CanvasRegionElement=$t,u.Coordinate=X,u.CoordinateLevel=Y,u.CoordinateModelType=C,u.CoordinateStatus=I,u.CoordinateType=b,u.DataHelper=jt,u.DataSource=w,u.GeoPoint=z,u.Point=y,u.Position=F,u.RelativeMap=g,u.RequestContentType=R,u.RequestMethod=M,u.RequestResultCode=L,u.Vector3=U,u.api=ft,u.http=ut,u.utils=At,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}));
|