tds-map-methods 0.1.3 → 0.1.5
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/index.cjs +7 -7
- package/index.js +983 -972
- package/package.json +1 -1
- package/types/components/map/methods/utils.d.ts +6 -0
package/index.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import Je from "dayjs";
|
|
2
|
-
import {
|
|
3
|
-
import Rr from "dayjs/plugin/utc.js";
|
|
2
|
+
import { isNumber as qt, isArray as gr, isObject as an } from "lodash-es";
|
|
4
3
|
import * as Q from "@turf/turf";
|
|
5
|
-
import { difference as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
4
|
+
import { difference as cn, featureCollection as ln } from "@turf/turf";
|
|
5
|
+
import zr from "dayjs/plugin/utc.js";
|
|
6
|
+
import { Map as fn } from "ol";
|
|
7
|
+
import hn from "ol/View.js";
|
|
8
8
|
import { fromLonLat as rt } from "ol/proj.js";
|
|
9
|
-
import
|
|
10
|
-
import { TileWMS as
|
|
9
|
+
import qr from "ol/layer/Tile.js";
|
|
10
|
+
import { TileWMS as dn, XYZ as gn } from "ol/source.js";
|
|
11
11
|
import Qt from "ol/source/ImageCanvas.js";
|
|
12
12
|
import bt from "ol/layer/Image.js";
|
|
13
13
|
import { contours as It } from "d3-contour";
|
|
14
|
-
import
|
|
14
|
+
import Vr from "ol/format/GeoJSON.js";
|
|
15
15
|
import ot from "ol/layer/Vector.js";
|
|
16
16
|
import vt from "ol/source/Vector.js";
|
|
17
17
|
import { Style as Be, Fill as be, Text as yt, Stroke as de, Circle as Vt } from "ol/style.js";
|
|
18
|
-
import
|
|
19
|
-
import { LineString as
|
|
20
|
-
function
|
|
18
|
+
import Wt from "ol/Feature.js";
|
|
19
|
+
import { LineString as mn, Point as mr } from "ol/geom.js";
|
|
20
|
+
function Fi() {
|
|
21
21
|
}
|
|
22
|
-
const
|
|
22
|
+
const Gr = {
|
|
23
23
|
serviceBaseUrl: "",
|
|
24
24
|
serviceAuthorization: "",
|
|
25
25
|
ncssBaseUrl: "/ncss/grid",
|
|
@@ -29,7 +29,7 @@ const Vr = {
|
|
|
29
29
|
typhoonDataPath: "data/script/mdp_typhoon/output",
|
|
30
30
|
typhoonAuthorization: ""
|
|
31
31
|
};
|
|
32
|
-
let me = { ...
|
|
32
|
+
let me = { ...Gr };
|
|
33
33
|
function Ut(n) {
|
|
34
34
|
return String(n ?? "").trim().replace(/\/+$/, "");
|
|
35
35
|
}
|
|
@@ -37,7 +37,7 @@ function Ar(n, e) {
|
|
|
37
37
|
const t = Number(n);
|
|
38
38
|
return Number.isFinite(t) && t > 0 ? Math.round(t) : e;
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function An(n) {
|
|
41
41
|
me = {
|
|
42
42
|
...me,
|
|
43
43
|
...n,
|
|
@@ -54,24 +54,24 @@ function gn(n) {
|
|
|
54
54
|
function ye() {
|
|
55
55
|
return { ...me };
|
|
56
56
|
}
|
|
57
|
-
function
|
|
58
|
-
me = { ...
|
|
57
|
+
function Si() {
|
|
58
|
+
me = { ...Gr };
|
|
59
59
|
}
|
|
60
|
-
function
|
|
60
|
+
function pn(n) {
|
|
61
61
|
return String(n ?? "").trim().replace(/\/+$/, "");
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function vn(n) {
|
|
64
64
|
return /^(?:[a-z]+:)?\/\//i.test(n) || /^(?:data|blob):/i.test(n);
|
|
65
65
|
}
|
|
66
|
-
function
|
|
66
|
+
function Dn(n, e) {
|
|
67
67
|
const t = String(n || "").trim();
|
|
68
|
-
if (!t ||
|
|
69
|
-
const r = ye(), i =
|
|
68
|
+
if (!t || vn(t)) return t;
|
|
69
|
+
const r = ye(), i = pn(
|
|
70
70
|
e === void 0 ? r.serviceBaseUrl : e
|
|
71
71
|
);
|
|
72
72
|
return i ? t === i || t.startsWith(i + "/") ? t : i + "/" + t.replace(/^\/+/, "") : t.startsWith("/") ? t : "/" + t;
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function bn(n, e) {
|
|
75
75
|
const t = new AbortController(), r = () => t.abort(n?.reason);
|
|
76
76
|
n?.aborted ? r() : n?.addEventListener("abort", r, { once: !0 });
|
|
77
77
|
const i = e > 0 ? setTimeout(() => t.abort(new Error("Request timeout")), e) : void 0;
|
|
@@ -82,7 +82,7 @@ function vn(n, e) {
|
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
-
async function
|
|
85
|
+
async function yn(n) {
|
|
86
86
|
try {
|
|
87
87
|
return (await n.text()).slice(0, 240);
|
|
88
88
|
} catch {
|
|
@@ -90,16 +90,16 @@ async function Dn(n) {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
async function or(n, e = {}) {
|
|
93
|
-
const t = ye(), r = Number(e.timeout ?? t.requestTimeout), i =
|
|
93
|
+
const t = ye(), r = Number(e.timeout ?? t.requestTimeout), i = bn(e.signal, Number.isFinite(r) ? r : 6e4), o = new Headers(e.headers), u = e.authorization ?? t.serviceAuthorization;
|
|
94
94
|
u && !o.has("Authorization") && o.set("Authorization", u);
|
|
95
95
|
try {
|
|
96
|
-
const s = await fetch(
|
|
96
|
+
const s = await fetch(Dn(n, e.baseUrl), {
|
|
97
97
|
credentials: e.credentials ?? "include",
|
|
98
98
|
signal: i.signal,
|
|
99
99
|
headers: o
|
|
100
100
|
});
|
|
101
101
|
if (!s.ok) {
|
|
102
|
-
const l = await
|
|
102
|
+
const l = await yn(s);
|
|
103
103
|
throw new Error(
|
|
104
104
|
"TDS request failed: " + s.status + " " + s.statusText + (l ? "; " + l : "")
|
|
105
105
|
);
|
|
@@ -109,7 +109,7 @@ async function or(n, e = {}) {
|
|
|
109
109
|
i.cleanup();
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
function
|
|
112
|
+
function wn(n, e) {
|
|
113
113
|
if (!e) return n;
|
|
114
114
|
const t = new URLSearchParams();
|
|
115
115
|
Object.entries(e).forEach(([i, o]) => {
|
|
@@ -119,7 +119,7 @@ function bn(n, e) {
|
|
|
119
119
|
return r ? n + (n.includes("?") ? "&" : "?") + r : n;
|
|
120
120
|
}
|
|
121
121
|
async function ir(n, e, t, r = {}) {
|
|
122
|
-
const i = await or(
|
|
122
|
+
const i = await or(wn(n, e), {
|
|
123
123
|
...r,
|
|
124
124
|
authorization: t ?? r.authorization
|
|
125
125
|
});
|
|
@@ -137,7 +137,7 @@ async function ir(n, e, t, r = {}) {
|
|
|
137
137
|
return await i.json();
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
async function
|
|
140
|
+
async function kr(n, e, t) {
|
|
141
141
|
const r = await or(n, {
|
|
142
142
|
...t,
|
|
143
143
|
authorization: e ?? t?.authorization
|
|
@@ -148,40 +148,40 @@ async function Gr(n, e, t) {
|
|
|
148
148
|
);
|
|
149
149
|
return o;
|
|
150
150
|
}
|
|
151
|
-
function
|
|
152
|
-
return
|
|
151
|
+
function Cn(n, e, t) {
|
|
152
|
+
return kr(n, e, t);
|
|
153
153
|
}
|
|
154
|
-
function
|
|
154
|
+
function Mi(n, e, t, r) {
|
|
155
155
|
return ir(n, e, t, { ...r, responseType: "text" });
|
|
156
156
|
}
|
|
157
|
-
function
|
|
157
|
+
function Oi(n, e, t) {
|
|
158
158
|
return ir(n, void 0, e, {
|
|
159
159
|
...t,
|
|
160
160
|
responseType: "arrayBuffer"
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
|
-
function
|
|
163
|
+
function Bn(n) {
|
|
164
164
|
return new Promise((e, t) => {
|
|
165
165
|
const r = new FileReader();
|
|
166
166
|
r.onload = () => typeof r.result == "string" ? e(r.result) : t(new Error("Blob to base64 failed")), r.onerror = () => t(r.error ?? new Error("Read blob failed")), r.readAsDataURL(n);
|
|
167
167
|
});
|
|
168
168
|
}
|
|
169
|
-
async function
|
|
169
|
+
async function En(n, e, t, r) {
|
|
170
170
|
const u = await ir(n, typeof e == "string" ? void 0 : e, typeof e == "string" ? e : t, {
|
|
171
171
|
...r,
|
|
172
172
|
responseType: "blob"
|
|
173
173
|
});
|
|
174
|
-
return
|
|
174
|
+
return Bn(u);
|
|
175
175
|
}
|
|
176
|
-
function
|
|
177
|
-
return
|
|
176
|
+
function Xi(n, e) {
|
|
177
|
+
return En(n, e);
|
|
178
178
|
}
|
|
179
|
-
function
|
|
179
|
+
function xn(n) {
|
|
180
180
|
return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n;
|
|
181
181
|
}
|
|
182
|
-
var Rt = { exports: {} }, mt = {}, Le = {},
|
|
183
|
-
function
|
|
184
|
-
if (pr) return
|
|
182
|
+
var Rt = { exports: {} }, mt = {}, Le = {}, We = {}, pr;
|
|
183
|
+
function jt() {
|
|
184
|
+
if (pr) return We;
|
|
185
185
|
pr = 1;
|
|
186
186
|
function n(o, u, s) {
|
|
187
187
|
if (s === void 0 && (s = Array.prototype), o && typeof s.find == "function")
|
|
@@ -296,13 +296,13 @@ function Wt() {
|
|
|
296
296
|
*/
|
|
297
297
|
XMLNS: "http://www.w3.org/2000/xmlns/"
|
|
298
298
|
});
|
|
299
|
-
return
|
|
299
|
+
return We.assign = t, We.find = n, We.freeze = e, We.MIME_TYPE = r, We.NAMESPACE = i, We;
|
|
300
300
|
}
|
|
301
301
|
var vr;
|
|
302
|
-
function
|
|
302
|
+
function Qr() {
|
|
303
303
|
if (vr) return Le;
|
|
304
304
|
vr = 1;
|
|
305
|
-
var n =
|
|
305
|
+
var n = jt(), e = n.find, t = n.NAMESPACE;
|
|
306
306
|
function r(c) {
|
|
307
307
|
return c !== "";
|
|
308
308
|
}
|
|
@@ -335,7 +335,7 @@ function kr() {
|
|
|
335
335
|
}
|
|
336
336
|
m.constructor != c && (typeof c != "function" && console.error("unknown Class:" + c), m.constructor = c);
|
|
337
337
|
}
|
|
338
|
-
var h = {}, a = h.ELEMENT_NODE = 1,
|
|
338
|
+
var h = {}, a = h.ELEMENT_NODE = 1, b = h.ATTRIBUTE_NODE = 2, p = h.TEXT_NODE = 3, A = h.CDATA_SECTION_NODE = 4, y = h.ENTITY_REFERENCE_NODE = 5, v = h.ENTITY_NODE = 6, B = h.PROCESSING_INSTRUCTION_NODE = 7, N = h.COMMENT_NODE = 8, E = h.DOCUMENT_NODE = 9, L = h.DOCUMENT_TYPE_NODE = 10, X = h.DOCUMENT_FRAGMENT_NODE = 11, R = h.NOTATION_NODE = 12, S = {}, z = {};
|
|
339
339
|
S.INDEX_SIZE_ERR = (z[1] = "Index size error", 1), S.DOMSTRING_SIZE_ERR = (z[2] = "DOMString size error", 2);
|
|
340
340
|
var C = S.HIERARCHY_REQUEST_ERR = (z[3] = "Hierarchy request error", 3);
|
|
341
341
|
S.WRONG_DOCUMENT_ERR = (z[4] = "Wrong document", 4), S.INVALID_CHARACTER_ERR = (z[5] = "Invalid character", 5), S.NO_DATA_ALLOWED_ERR = (z[6] = "No data allowed", 6), S.NO_MODIFICATION_ALLOWED_ERR = (z[7] = "No modification allowed", 7);
|
|
@@ -393,9 +393,9 @@ function kr() {
|
|
|
393
393
|
}
|
|
394
394
|
};
|
|
395
395
|
function g(c, f) {
|
|
396
|
-
this._node = c, this._refresh = f,
|
|
396
|
+
this._node = c, this._refresh = f, D(this);
|
|
397
397
|
}
|
|
398
|
-
function
|
|
398
|
+
function D(c) {
|
|
399
399
|
var f = c._node._inc || c._node.ownerDocument._inc;
|
|
400
400
|
if (c._inc !== f) {
|
|
401
401
|
var m = c._refresh(c._node);
|
|
@@ -406,9 +406,9 @@ function kr() {
|
|
|
406
406
|
}
|
|
407
407
|
}
|
|
408
408
|
g.prototype.item = function(c) {
|
|
409
|
-
return
|
|
409
|
+
return D(this), this[c] || null;
|
|
410
410
|
}, d(g, I);
|
|
411
|
-
function
|
|
411
|
+
function w() {
|
|
412
412
|
}
|
|
413
413
|
function T(c, f) {
|
|
414
414
|
for (var m = c.length; m--; )
|
|
@@ -419,7 +419,7 @@ function kr() {
|
|
|
419
419
|
if (x ? f[T(f, x)] = m : f[f.length++] = m, c) {
|
|
420
420
|
m.ownerElement = c;
|
|
421
421
|
var q = c.ownerDocument;
|
|
422
|
-
q && (x && K(q, c, x),
|
|
422
|
+
q && (x && K(q, c, x), W(q, c, m));
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
function H(c, f, m) {
|
|
@@ -434,7 +434,7 @@ function kr() {
|
|
|
434
434
|
} else
|
|
435
435
|
throw new M(P, new Error(c.tagName + "@" + m));
|
|
436
436
|
}
|
|
437
|
-
|
|
437
|
+
w.prototype = {
|
|
438
438
|
length: 0,
|
|
439
439
|
item: I.prototype.item,
|
|
440
440
|
getNamedItem: function(c) {
|
|
@@ -522,7 +522,7 @@ function kr() {
|
|
|
522
522
|
* @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names
|
|
523
523
|
*/
|
|
524
524
|
createDocument: function(c, f, m) {
|
|
525
|
-
var x = new
|
|
525
|
+
var x = new j();
|
|
526
526
|
if (x.implementation = this, x.childNodes = new I(), x.doctype = m || null, m && x.appendChild(m), f) {
|
|
527
527
|
var q = x.createElementNS(c, f);
|
|
528
528
|
x.appendChild(q);
|
|
@@ -626,7 +626,7 @@ function kr() {
|
|
|
626
626
|
if (Object.prototype.hasOwnProperty.call(m, x) && m[x] === c)
|
|
627
627
|
return x;
|
|
628
628
|
}
|
|
629
|
-
f = f.nodeType ==
|
|
629
|
+
f = f.nodeType == b ? f.ownerDocument : f.parentNode;
|
|
630
630
|
}
|
|
631
631
|
return null;
|
|
632
632
|
},
|
|
@@ -636,7 +636,7 @@ function kr() {
|
|
|
636
636
|
var m = f._nsMap;
|
|
637
637
|
if (m && Object.prototype.hasOwnProperty.call(m, c))
|
|
638
638
|
return m[c];
|
|
639
|
-
f = f.nodeType ==
|
|
639
|
+
f = f.nodeType == b ? f.ownerDocument : f.parentNode;
|
|
640
640
|
}
|
|
641
641
|
return null;
|
|
642
642
|
},
|
|
@@ -659,10 +659,10 @@ function kr() {
|
|
|
659
659
|
return !0;
|
|
660
660
|
while (c = c.nextSibling);
|
|
661
661
|
}
|
|
662
|
-
function
|
|
662
|
+
function j() {
|
|
663
663
|
this.ownerDocument = this;
|
|
664
664
|
}
|
|
665
|
-
function
|
|
665
|
+
function W(c, f, m) {
|
|
666
666
|
c && c._inc++;
|
|
667
667
|
var x = m.namespaceURI;
|
|
668
668
|
x === t.XMLNS && (f._nsMap[m.prefix ? m.localName : ""] = m.value);
|
|
@@ -816,7 +816,7 @@ function kr() {
|
|
|
816
816
|
var m = c.ownerDocument || c;
|
|
817
817
|
return ve(f, m), f;
|
|
818
818
|
}
|
|
819
|
-
|
|
819
|
+
j.prototype = {
|
|
820
820
|
//implementation : null,
|
|
821
821
|
nodeName: "#document",
|
|
822
822
|
nodeType: E,
|
|
@@ -897,7 +897,7 @@ function kr() {
|
|
|
897
897
|
createElement: function(c) {
|
|
898
898
|
var f = new oe();
|
|
899
899
|
f.ownerDocument = this, f.nodeName = c, f.tagName = c, f.localName = c, f.childNodes = new I();
|
|
900
|
-
var m = f.attributes = new
|
|
900
|
+
var m = f.attributes = new w();
|
|
901
901
|
return m._ownerElement = f, f;
|
|
902
902
|
},
|
|
903
903
|
createDocumentFragment: function() {
|
|
@@ -930,7 +930,7 @@ function kr() {
|
|
|
930
930
|
},
|
|
931
931
|
// Introduced in DOM Level 2:
|
|
932
932
|
createElementNS: function(c, f) {
|
|
933
|
-
var m = new oe(), x = f.split(":"), q = m.attributes = new
|
|
933
|
+
var m = new oe(), x = f.split(":"), q = m.attributes = new w();
|
|
934
934
|
return m.childNodes = new I(), m.ownerDocument = this, m.nodeName = f, m.tagName = f, m.namespaceURI = c, x.length == 2 ? (m.prefix = x[0], m.localName = x[1]) : m.localName = f, q._ownerElement = m, m;
|
|
935
935
|
},
|
|
936
936
|
// Introduced in DOM Level 2:
|
|
@@ -938,7 +938,7 @@ function kr() {
|
|
|
938
938
|
var m = new Pe(), x = f.split(":");
|
|
939
939
|
return m.ownerDocument = this, m.nodeName = f, m.name = f, m.namespaceURI = c, m.specified = !0, x.length == 2 ? (m.prefix = x[0], m.localName = x[1]) : m.localName = f, m;
|
|
940
940
|
}
|
|
941
|
-
}, d(
|
|
941
|
+
}, d(j, V);
|
|
942
942
|
function oe() {
|
|
943
943
|
this._nsMap = {};
|
|
944
944
|
}
|
|
@@ -1010,10 +1010,10 @@ function kr() {
|
|
|
1010
1010
|
}), x;
|
|
1011
1011
|
});
|
|
1012
1012
|
}
|
|
1013
|
-
},
|
|
1013
|
+
}, j.prototype.getElementsByTagName = oe.prototype.getElementsByTagName, j.prototype.getElementsByTagNameNS = oe.prototype.getElementsByTagNameNS, d(oe, V);
|
|
1014
1014
|
function Pe() {
|
|
1015
1015
|
}
|
|
1016
|
-
Pe.prototype.nodeType =
|
|
1016
|
+
Pe.prototype.nodeType = b, d(Pe, V);
|
|
1017
1017
|
function we() {
|
|
1018
1018
|
}
|
|
1019
1019
|
we.prototype = {
|
|
@@ -1073,7 +1073,7 @@ function kr() {
|
|
|
1073
1073
|
Ve.prototype.nodeType = v, d(Ve, V);
|
|
1074
1074
|
function Se() {
|
|
1075
1075
|
}
|
|
1076
|
-
Se.prototype.nodeType =
|
|
1076
|
+
Se.prototype.nodeType = y, d(Se, V);
|
|
1077
1077
|
function Ze() {
|
|
1078
1078
|
}
|
|
1079
1079
|
Ze.prototype.nodeName = "#document-fragment", Ze.prototype.nodeType = X, d(Ze, V);
|
|
@@ -1156,14 +1156,14 @@ function kr() {
|
|
|
1156
1156
|
for (var Qe = 0; Qe < re; Qe++) {
|
|
1157
1157
|
var Ce = k.item(Qe);
|
|
1158
1158
|
if (ft(Ce, m, q)) {
|
|
1159
|
-
var
|
|
1160
|
-
ht(f,
|
|
1159
|
+
var je = Ce.prefix || "", gt = Ce.namespaceURI;
|
|
1160
|
+
ht(f, je ? "xmlns:" + je : "xmlns", gt), q.push({ prefix: je, namespace: gt });
|
|
1161
1161
|
}
|
|
1162
1162
|
Oe(Ce, f, m, x, q);
|
|
1163
1163
|
}
|
|
1164
1164
|
if (fe === De && ft(c, m, q)) {
|
|
1165
|
-
var
|
|
1166
|
-
ht(f,
|
|
1165
|
+
var je = c.prefix || "", gt = c.namespaceURI;
|
|
1166
|
+
ht(f, je ? "xmlns:" + je : "xmlns", gt), q.push({ prefix: je, namespace: gt });
|
|
1167
1167
|
}
|
|
1168
1168
|
if (ce || m && !/^(?:meta|link|img|br|hr|input)$/i.test(fe)) {
|
|
1169
1169
|
if (f.push(">"), m && /^script$/i.test(fe))
|
|
@@ -1181,7 +1181,7 @@ function kr() {
|
|
|
1181
1181
|
for (var ce = c.firstChild; ce; )
|
|
1182
1182
|
Oe(ce, f, m, x, q.slice()), ce = ce.nextSibling;
|
|
1183
1183
|
return;
|
|
1184
|
-
case
|
|
1184
|
+
case b:
|
|
1185
1185
|
return ht(f, c.name, c.value);
|
|
1186
1186
|
case p:
|
|
1187
1187
|
return f.push(
|
|
@@ -1204,7 +1204,7 @@ function kr() {
|
|
|
1204
1204
|
return;
|
|
1205
1205
|
case B:
|
|
1206
1206
|
return f.push("<?", c.target, " ", c.data, "?>");
|
|
1207
|
-
case
|
|
1207
|
+
case y:
|
|
1208
1208
|
return f.push("&", c.nodeName, ";");
|
|
1209
1209
|
//case ENTITY_NODE:
|
|
1210
1210
|
//case NOTATION_NODE:
|
|
@@ -1224,7 +1224,7 @@ function kr() {
|
|
|
1224
1224
|
//}
|
|
1225
1225
|
case X:
|
|
1226
1226
|
break;
|
|
1227
|
-
case
|
|
1227
|
+
case b:
|
|
1228
1228
|
m = !0;
|
|
1229
1229
|
break;
|
|
1230
1230
|
}
|
|
@@ -1242,12 +1242,12 @@ function kr() {
|
|
|
1242
1242
|
}
|
|
1243
1243
|
switch (f.childNodes && (x.childNodes = new I()), x.ownerDocument = c, x.nodeType) {
|
|
1244
1244
|
case a:
|
|
1245
|
-
var re = f.attributes, fe = x.attributes = new
|
|
1245
|
+
var re = f.attributes, fe = x.attributes = new w(), De = re.length;
|
|
1246
1246
|
fe._ownerElement = x;
|
|
1247
1247
|
for (var Xe = 0; Xe < De; Xe++)
|
|
1248
1248
|
x.setAttributeNode(_e(c, re.item(Xe), !0));
|
|
1249
1249
|
break;
|
|
1250
|
-
case
|
|
1250
|
+
case b:
|
|
1251
1251
|
m = !0;
|
|
1252
1252
|
}
|
|
1253
1253
|
if (m)
|
|
@@ -1274,7 +1274,7 @@ function kr() {
|
|
|
1274
1274
|
};
|
|
1275
1275
|
Object.defineProperty(g.prototype, "length", {
|
|
1276
1276
|
get: function() {
|
|
1277
|
-
return
|
|
1277
|
+
return D(this), this.$$length;
|
|
1278
1278
|
}
|
|
1279
1279
|
}), Object.defineProperty(V.prototype, "textContent", {
|
|
1280
1280
|
get: function() {
|
|
@@ -1301,9 +1301,9 @@ function kr() {
|
|
|
1301
1301
|
return Le.DocumentType = qe, Le.DOMException = M, Le.DOMImplementation = G, Le.Element = oe, Le.Node = V, Le.NodeList = I, Le.XMLSerializer = Ke, Le;
|
|
1302
1302
|
}
|
|
1303
1303
|
var At = {}, Yt = {}, Dr;
|
|
1304
|
-
function
|
|
1304
|
+
function Nn() {
|
|
1305
1305
|
return Dr || (Dr = 1, (function(n) {
|
|
1306
|
-
var e =
|
|
1306
|
+
var e = jt().freeze;
|
|
1307
1307
|
n.XML_ENTITIES = e({
|
|
1308
1308
|
amp: "&",
|
|
1309
1309
|
apos: "'",
|
|
@@ -3441,14 +3441,14 @@ function En() {
|
|
|
3441
3441
|
})(Yt)), Yt;
|
|
3442
3442
|
}
|
|
3443
3443
|
var xt = {}, br;
|
|
3444
|
-
function
|
|
3444
|
+
function Pn() {
|
|
3445
3445
|
if (br) return xt;
|
|
3446
3446
|
br = 1;
|
|
3447
|
-
var n =
|
|
3448
|
-
function
|
|
3449
|
-
this.message = C, this.locator = P, Error.captureStackTrace && Error.captureStackTrace(this,
|
|
3447
|
+
var n = jt().NAMESPACE, e = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, t = new RegExp("[\\-\\.0-9" + e.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"), r = new RegExp("^" + e.source + t.source + "*(?::" + e.source + t.source + "*)?$"), i = 0, o = 1, u = 2, s = 3, l = 4, d = 5, h = 6, a = 7;
|
|
3448
|
+
function b(C, P) {
|
|
3449
|
+
this.message = C, this.locator = P, Error.captureStackTrace && Error.captureStackTrace(this, b);
|
|
3450
3450
|
}
|
|
3451
|
-
|
|
3451
|
+
b.prototype = new Error(), b.prototype.name = b.name;
|
|
3452
3452
|
function p() {
|
|
3453
3453
|
}
|
|
3454
3454
|
p.prototype = {
|
|
@@ -3472,14 +3472,14 @@ function xn() {
|
|
|
3472
3472
|
} else
|
|
3473
3473
|
return String.fromCharCode(ee);
|
|
3474
3474
|
}
|
|
3475
|
-
function
|
|
3475
|
+
function D(ee) {
|
|
3476
3476
|
var oe = ee.slice(1, -1);
|
|
3477
3477
|
return Object.hasOwnProperty.call(F, oe) ? F[oe] : oe.charAt(0) === "#" ? g(parseInt(oe.substr(1).replace("x", "0x"))) : (I.error("entity not found:" + ee), ee);
|
|
3478
3478
|
}
|
|
3479
|
-
function
|
|
3480
|
-
if (ee >
|
|
3481
|
-
var oe = C.substring(
|
|
3482
|
-
V && T(
|
|
3479
|
+
function w(ee) {
|
|
3480
|
+
if (ee > j) {
|
|
3481
|
+
var oe = C.substring(j, ee).replace(/&#?\w+;/g, D);
|
|
3482
|
+
V && T(j), M.characters(oe, 0, ee - j), j = ee;
|
|
3483
3483
|
}
|
|
3484
3484
|
}
|
|
3485
3485
|
function T(ee, oe) {
|
|
@@ -3487,20 +3487,20 @@ function xn() {
|
|
|
3487
3487
|
O = oe.index, H = O + oe[0].length, V.lineNumber++;
|
|
3488
3488
|
V.columnNumber = ee - O + 1;
|
|
3489
3489
|
}
|
|
3490
|
-
for (var O = 0, H = 0, G = /.*(?:\r\n?|\n)|.*$/g, V = M.locator, J = [{ currentNSMap: P }], Y = {},
|
|
3490
|
+
for (var O = 0, H = 0, G = /.*(?:\r\n?|\n)|.*$/g, V = M.locator, J = [{ currentNSMap: P }], Y = {}, j = 0; ; ) {
|
|
3491
3491
|
try {
|
|
3492
|
-
var
|
|
3493
|
-
if (
|
|
3494
|
-
if (!C.substr(
|
|
3495
|
-
var K = M.doc, Z = K.createTextNode(C.substr(
|
|
3492
|
+
var W = C.indexOf("<", j);
|
|
3493
|
+
if (W < 0) {
|
|
3494
|
+
if (!C.substr(j).match(/^\s*$/)) {
|
|
3495
|
+
var K = M.doc, Z = K.createTextNode(C.substr(j));
|
|
3496
3496
|
K.appendChild(Z), M.currentElement = Z;
|
|
3497
3497
|
}
|
|
3498
3498
|
return;
|
|
3499
3499
|
}
|
|
3500
|
-
switch (
|
|
3500
|
+
switch (W > j && w(W), C.charAt(W + 1)) {
|
|
3501
3501
|
case "/":
|
|
3502
|
-
var ue = C.indexOf(">",
|
|
3503
|
-
ue < 0 ? (U = C.substring(
|
|
3502
|
+
var ue = C.indexOf(">", W + 3), U = C.substring(W + 2, ue).replace(/[ \t\n\r]+$/g, ""), te = J.pop();
|
|
3503
|
+
ue < 0 ? (U = C.substring(W + 2).replace(/[\s<].*/, ""), I.error("end tag name: " + U + " is not complete:" + te.tagName), ue = W + 1 + U.length) : U.match(/\s</) && (U = U.replace(/[\s<].*/, ""), I.error("end tag name: " + U + " maybe not complete"), ue = W + 1 + U.length);
|
|
3504
3504
|
var se = te.localNSMap, _ = te.tagName == U, $ = _ || te.tagName && te.tagName.toLowerCase() == U.toLowerCase();
|
|
3505
3505
|
if ($) {
|
|
3506
3506
|
if (M.endElement(te.uri, te.localName, U), se)
|
|
@@ -3513,37 +3513,37 @@ function xn() {
|
|
|
3513
3513
|
break;
|
|
3514
3514
|
// end elment
|
|
3515
3515
|
case "?":
|
|
3516
|
-
V && T(
|
|
3516
|
+
V && T(W), ue = R(C, W, M);
|
|
3517
3517
|
break;
|
|
3518
3518
|
case "!":
|
|
3519
|
-
V && T(
|
|
3519
|
+
V && T(W), ue = X(C, W, M, I);
|
|
3520
3520
|
break;
|
|
3521
3521
|
default:
|
|
3522
|
-
V && T(
|
|
3523
|
-
var ne = new S(), he = J[J.length - 1].currentNSMap, ue = v(C,
|
|
3522
|
+
V && T(W);
|
|
3523
|
+
var ne = new S(), he = J[J.length - 1].currentNSMap, ue = v(C, W, ne, he, D, I), Ae = ne.length;
|
|
3524
3524
|
if (!ne.closed && E(C, ue, ne.tagName, Y) && (ne.closed = !0, F.nbsp || I.warning("unclosed xml attribute")), V && Ae) {
|
|
3525
|
-
for (var pe =
|
|
3525
|
+
for (var pe = y(V, {}), le = 0; le < Ae; le++) {
|
|
3526
3526
|
var ve = ne[le];
|
|
3527
|
-
T(ve.offset), ve.locator =
|
|
3527
|
+
T(ve.offset), ve.locator = y(V, {});
|
|
3528
3528
|
}
|
|
3529
3529
|
M.locator = pe, B(ne, M, he) && J.push(ne), M.locator = V;
|
|
3530
3530
|
} else
|
|
3531
3531
|
B(ne, M, he) && J.push(ne);
|
|
3532
|
-
n.isHTML(ne.uri) && !ne.closed ? ue = N(C, ue, ne.tagName,
|
|
3532
|
+
n.isHTML(ne.uri) && !ne.closed ? ue = N(C, ue, ne.tagName, D, M) : ue++;
|
|
3533
3533
|
}
|
|
3534
3534
|
} catch (ee) {
|
|
3535
|
-
if (ee instanceof
|
|
3535
|
+
if (ee instanceof b)
|
|
3536
3536
|
throw ee;
|
|
3537
3537
|
I.error("element parse error: " + ee), ue = -1;
|
|
3538
3538
|
}
|
|
3539
|
-
ue >
|
|
3539
|
+
ue > j ? j = ue : w(Math.max(W, j) + 1);
|
|
3540
3540
|
}
|
|
3541
3541
|
}
|
|
3542
|
-
function
|
|
3542
|
+
function y(C, P) {
|
|
3543
3543
|
return P.lineNumber = C.lineNumber, P.columnNumber = C.columnNumber, P;
|
|
3544
3544
|
}
|
|
3545
3545
|
function v(C, P, F, M, I, g) {
|
|
3546
|
-
function
|
|
3546
|
+
function D(V, J, Y) {
|
|
3547
3547
|
F.attributeNames.hasOwnProperty(V) && g.fatalError("Attribute " + V + " redefined"), F.addValue(
|
|
3548
3548
|
V,
|
|
3549
3549
|
// @see https://www.w3.org/TR/xml/#AVNormalize
|
|
@@ -3554,12 +3554,12 @@ function xn() {
|
|
|
3554
3554
|
Y
|
|
3555
3555
|
);
|
|
3556
3556
|
}
|
|
3557
|
-
for (var
|
|
3557
|
+
for (var w, T, O = ++P, H = i; ; ) {
|
|
3558
3558
|
var G = C.charAt(O);
|
|
3559
3559
|
switch (G) {
|
|
3560
3560
|
case "=":
|
|
3561
3561
|
if (H === o)
|
|
3562
|
-
|
|
3562
|
+
w = C.slice(P, O), H = s;
|
|
3563
3563
|
else if (H === u)
|
|
3564
3564
|
H = s;
|
|
3565
3565
|
else
|
|
@@ -3568,12 +3568,12 @@ function xn() {
|
|
|
3568
3568
|
case "'":
|
|
3569
3569
|
case '"':
|
|
3570
3570
|
if (H === s || H === o)
|
|
3571
|
-
if (H === o && (g.warning('attribute value must after "="'),
|
|
3572
|
-
T = C.slice(P, O),
|
|
3571
|
+
if (H === o && (g.warning('attribute value must after "="'), w = C.slice(P, O)), P = O + 1, O = C.indexOf(G, P), O > 0)
|
|
3572
|
+
T = C.slice(P, O), D(w, T, P - 1), H = d;
|
|
3573
3573
|
else
|
|
3574
3574
|
throw new Error("attribute value no end '" + G + "' match");
|
|
3575
3575
|
else if (H == l)
|
|
3576
|
-
T = C.slice(P, O),
|
|
3576
|
+
T = C.slice(P, O), D(w, T, P), g.warning('attribute "' + w + '" missed start quot(' + G + ")!!"), P = O + 1, H = d;
|
|
3577
3577
|
else
|
|
3578
3578
|
throw new Error('attribute value must after "="');
|
|
3579
3579
|
break;
|
|
@@ -3612,7 +3612,7 @@ function xn() {
|
|
|
3612
3612
|
case o:
|
|
3613
3613
|
T = C.slice(P, O), T.slice(-1) === "/" && (F.closed = !0, T = T.slice(0, -1));
|
|
3614
3614
|
case u:
|
|
3615
|
-
H === u && (T =
|
|
3615
|
+
H === u && (T = w), H == l ? (g.warning('attribute "' + T + '" missed quot(")!'), D(w, T, P)) : ((!n.isHTML(M[""]) || !T.match(/^(?:disabled|checked|selected)$/i)) && g.warning('attribute "' + T + '" missed value!! "' + T + '" instead!!'), D(T, T, P));
|
|
3616
3616
|
break;
|
|
3617
3617
|
case s:
|
|
3618
3618
|
throw new Error("attribute value missed!!");
|
|
@@ -3628,11 +3628,11 @@ function xn() {
|
|
|
3628
3628
|
F.setTagName(C.slice(P, O)), H = h;
|
|
3629
3629
|
break;
|
|
3630
3630
|
case o:
|
|
3631
|
-
|
|
3631
|
+
w = C.slice(P, O), H = u;
|
|
3632
3632
|
break;
|
|
3633
3633
|
case l:
|
|
3634
3634
|
var T = C.slice(P, O);
|
|
3635
|
-
g.warning('attribute "' + T + '" missed quot(")!!'),
|
|
3635
|
+
g.warning('attribute "' + T + '" missed quot(")!!'), D(w, T, P);
|
|
3636
3636
|
case d:
|
|
3637
3637
|
H = h;
|
|
3638
3638
|
break;
|
|
@@ -3643,10 +3643,10 @@ function xn() {
|
|
|
3643
3643
|
//case S_ATTR:void();break;
|
|
3644
3644
|
//case S_ATTR_NOQUOT_VALUE:void();break;
|
|
3645
3645
|
case u:
|
|
3646
|
-
F.tagName, (!n.isHTML(M[""]) || !
|
|
3646
|
+
F.tagName, (!n.isHTML(M[""]) || !w.match(/^(?:disabled|checked|selected)$/i)) && g.warning('attribute "' + w + '" missed value!! "' + w + '" instead2!!'), D(w, w, P), P = O, H = o;
|
|
3647
3647
|
break;
|
|
3648
3648
|
case d:
|
|
3649
|
-
g.warning('attribute space is required"' +
|
|
3649
|
+
g.warning('attribute space is required"' + w + '"!!');
|
|
3650
3650
|
case h:
|
|
3651
3651
|
H = o, P = O;
|
|
3652
3652
|
break;
|
|
@@ -3662,12 +3662,12 @@ function xn() {
|
|
|
3662
3662
|
}
|
|
3663
3663
|
function B(C, P, F) {
|
|
3664
3664
|
for (var M = C.tagName, I = null, G = C.length; G--; ) {
|
|
3665
|
-
var g = C[G],
|
|
3665
|
+
var g = C[G], D = g.qName, w = g.value, V = D.indexOf(":");
|
|
3666
3666
|
if (V > 0)
|
|
3667
|
-
var T = g.prefix =
|
|
3667
|
+
var T = g.prefix = D.slice(0, V), O = D.slice(V + 1), H = T === "xmlns" && O;
|
|
3668
3668
|
else
|
|
3669
|
-
O =
|
|
3670
|
-
g.localName = O, H !== !1 && (I == null && (I = {}, L(F, F = {})), F[H] = I[H] =
|
|
3669
|
+
O = D, T = null, H = D === "xmlns" && "";
|
|
3670
|
+
g.localName = O, H !== !1 && (I == null && (I = {}, L(F, F = {})), F[H] = I[H] = w, g.uri = n.XMLNS, P.startPrefixMapping(H, w));
|
|
3671
3671
|
}
|
|
3672
3672
|
for (var G = C.length; G--; ) {
|
|
3673
3673
|
g = C[G];
|
|
@@ -3686,9 +3686,9 @@ function xn() {
|
|
|
3686
3686
|
}
|
|
3687
3687
|
function N(C, P, F, M, I) {
|
|
3688
3688
|
if (/^(?:script|textarea)$/i.test(F)) {
|
|
3689
|
-
var g = C.indexOf("</" + F + ">", P),
|
|
3690
|
-
if (/[&<]/.test(
|
|
3691
|
-
return /^script$/i.test(F) ? (I.characters(
|
|
3689
|
+
var g = C.indexOf("</" + F + ">", P), D = C.substring(P + 1, g);
|
|
3690
|
+
if (/[&<]/.test(D))
|
|
3691
|
+
return /^script$/i.test(F) ? (I.characters(D, 0, D.length), g) : (D = D.replace(/&#?\w+;/g, M), I.characters(D, 0, D.length), g);
|
|
3692
3692
|
}
|
|
3693
3693
|
return P + 1;
|
|
3694
3694
|
}
|
|
@@ -3714,11 +3714,11 @@ function xn() {
|
|
|
3714
3714
|
var g = C.indexOf("]]>", P + 9);
|
|
3715
3715
|
return F.startCDATA(), F.characters(C, P + 9, g - P - 9), F.endCDATA(), g + 3;
|
|
3716
3716
|
}
|
|
3717
|
-
var
|
|
3718
|
-
if (
|
|
3719
|
-
var T =
|
|
3720
|
-
|
|
3721
|
-
var G =
|
|
3717
|
+
var D = z(C, P), w = D.length;
|
|
3718
|
+
if (w > 1 && /!doctype/i.test(D[0][0])) {
|
|
3719
|
+
var T = D[1][0], O = !1, H = !1;
|
|
3720
|
+
w > 3 && (/^public$/i.test(D[2][0]) ? (O = D[3][0], H = w > 4 && D[4][0]) : /^system$/i.test(D[2][0]) && (H = D[3][0]));
|
|
3721
|
+
var G = D[w - 1];
|
|
3722
3722
|
return F.startDTD(T, O, H), F.endDTD(), G.index + G[0].length;
|
|
3723
3723
|
}
|
|
3724
3724
|
}
|
|
@@ -3778,13 +3778,13 @@ function xn() {
|
|
|
3778
3778
|
for (I.lastIndex = P, I.exec(C); F = I.exec(C); )
|
|
3779
3779
|
if (M.push(F), F[1]) return M;
|
|
3780
3780
|
}
|
|
3781
|
-
return xt.XMLReader = p, xt.ParseError =
|
|
3781
|
+
return xt.XMLReader = p, xt.ParseError = b, xt;
|
|
3782
3782
|
}
|
|
3783
3783
|
var yr;
|
|
3784
|
-
function
|
|
3784
|
+
function Tn() {
|
|
3785
3785
|
if (yr) return At;
|
|
3786
3786
|
yr = 1;
|
|
3787
|
-
var n =
|
|
3787
|
+
var n = jt(), e = Qr(), t = Nn(), r = Pn(), i = e.DOMImplementation, o = n.NAMESPACE, u = r.ParseError, s = r.XMLReader;
|
|
3788
3788
|
function l(v) {
|
|
3789
3789
|
return v.replace(/\r[\n\u0085]/g, `
|
|
3790
3790
|
`).replace(/[\r\u0085\u2028]/g, `
|
|
@@ -3825,7 +3825,7 @@ function Nn() {
|
|
|
3825
3825
|
function a() {
|
|
3826
3826
|
this.cdata = !1;
|
|
3827
3827
|
}
|
|
3828
|
-
function
|
|
3828
|
+
function b(v, B) {
|
|
3829
3829
|
B.lineNumber = v.lineNumber, B.columnNumber = v.columnNumber;
|
|
3830
3830
|
}
|
|
3831
3831
|
a.prototype = {
|
|
@@ -3834,10 +3834,10 @@ function Nn() {
|
|
|
3834
3834
|
},
|
|
3835
3835
|
startElement: function(v, B, N, E) {
|
|
3836
3836
|
var L = this.doc, X = L.createElementNS(v, N || B), R = E.length;
|
|
3837
|
-
|
|
3837
|
+
y(this, X), this.currentElement = X, this.locator && b(this.locator, X);
|
|
3838
3838
|
for (var S = 0; S < R; S++) {
|
|
3839
3839
|
var v = E.getURI(S), z = E.getValue(S), N = E.getQName(S), C = L.createAttributeNS(v, N);
|
|
3840
|
-
this.locator &&
|
|
3840
|
+
this.locator && b(E.getLocator(S), C), C.value = C.nodeValue = z, X.setAttributeNode(C);
|
|
3841
3841
|
}
|
|
3842
3842
|
},
|
|
3843
3843
|
endElement: function(v, B, N) {
|
|
@@ -3850,7 +3850,7 @@ function Nn() {
|
|
|
3850
3850
|
},
|
|
3851
3851
|
processingInstruction: function(v, B) {
|
|
3852
3852
|
var N = this.doc.createProcessingInstruction(v, B);
|
|
3853
|
-
this.locator &&
|
|
3853
|
+
this.locator && b(this.locator, N), y(this, N);
|
|
3854
3854
|
},
|
|
3855
3855
|
ignorableWhitespace: function(v, B, N) {
|
|
3856
3856
|
},
|
|
@@ -3860,7 +3860,7 @@ function Nn() {
|
|
|
3860
3860
|
var E = this.doc.createCDATASection(v);
|
|
3861
3861
|
else
|
|
3862
3862
|
var E = this.doc.createTextNode(v);
|
|
3863
|
-
this.currentElement ? this.currentElement.appendChild(E) : /^\s*$/.test(v) && this.doc.appendChild(E), this.locator &&
|
|
3863
|
+
this.currentElement ? this.currentElement.appendChild(E) : /^\s*$/.test(v) && this.doc.appendChild(E), this.locator && b(this.locator, E);
|
|
3864
3864
|
}
|
|
3865
3865
|
},
|
|
3866
3866
|
skippedEntity: function(v) {
|
|
@@ -3875,7 +3875,7 @@ function Nn() {
|
|
|
3875
3875
|
comment: function(v, B, N) {
|
|
3876
3876
|
v = A.apply(this, arguments);
|
|
3877
3877
|
var E = this.doc.createComment(v);
|
|
3878
|
-
this.locator &&
|
|
3878
|
+
this.locator && b(this.locator, E), y(this, E);
|
|
3879
3879
|
},
|
|
3880
3880
|
startCDATA: function() {
|
|
3881
3881
|
this.cdata = !0;
|
|
@@ -3887,7 +3887,7 @@ function Nn() {
|
|
|
3887
3887
|
var E = this.doc.implementation;
|
|
3888
3888
|
if (E && E.createDocumentType) {
|
|
3889
3889
|
var L = E.createDocumentType(v, B, N);
|
|
3890
|
-
this.locator &&
|
|
3890
|
+
this.locator && b(this.locator, L), y(this, L), this.doc.doctype = L;
|
|
3891
3891
|
}
|
|
3892
3892
|
},
|
|
3893
3893
|
/**
|
|
@@ -3917,24 +3917,24 @@ function Nn() {
|
|
|
3917
3917
|
return null;
|
|
3918
3918
|
};
|
|
3919
3919
|
});
|
|
3920
|
-
function
|
|
3920
|
+
function y(v, B) {
|
|
3921
3921
|
v.currentElement ? v.currentElement.appendChild(B) : v.doc.appendChild(B);
|
|
3922
3922
|
}
|
|
3923
3923
|
return At.__DOMHandler = a, At.normalizeLineEndings = l, At.DOMParser = d, At;
|
|
3924
3924
|
}
|
|
3925
3925
|
var wr;
|
|
3926
|
-
function
|
|
3926
|
+
function Ln() {
|
|
3927
3927
|
if (wr) return mt;
|
|
3928
3928
|
wr = 1;
|
|
3929
|
-
var n =
|
|
3930
|
-
return mt.DOMImplementation = n.DOMImplementation, mt.XMLSerializer = n.XMLSerializer, mt.DOMParser =
|
|
3929
|
+
var n = Qr();
|
|
3930
|
+
return mt.DOMImplementation = n.DOMImplementation, mt.XMLSerializer = n.XMLSerializer, mt.DOMParser = Tn().DOMParser, mt;
|
|
3931
3931
|
}
|
|
3932
|
-
var
|
|
3933
|
-
function
|
|
3932
|
+
var Fn = Rt.exports, Cr;
|
|
3933
|
+
function Sn() {
|
|
3934
3934
|
return Cr || (Cr = 1, (function(n) {
|
|
3935
3935
|
(function(e, t) {
|
|
3936
|
-
n.exports ? n.exports = t(
|
|
3937
|
-
})(
|
|
3936
|
+
n.exports ? n.exports = t(Ln().DOMParser) : e.X2JS = t();
|
|
3937
|
+
})(Fn, function(e) {
|
|
3938
3938
|
return function(r) {
|
|
3939
3939
|
var i = "3.4.4";
|
|
3940
3940
|
r = r || {};
|
|
@@ -3942,15 +3942,15 @@ function Ln() {
|
|
|
3942
3942
|
r.arrayAccessForm = r.arrayAccessForm || "none", r.emptyNodeForm = r.emptyNodeForm || "text", r.jsAttributeFilter = r.jsAttributeFilter, r.jsAttributeConverter = r.jsAttributeConverter, r.attributeConverters = r.attributeConverters || [], r.datetimeAccessFormPaths = r.datetimeAccessFormPaths || [], r.arrayAccessFormPaths = r.arrayAccessFormPaths || [], r.xmldomOptions = r.xmldomOptions || {}, r.enableToStringFunc === void 0 && (r.enableToStringFunc = !0), r.skipEmptyTextNodesForObj === void 0 && (r.skipEmptyTextNodesForObj = !0), r.stripWhitespaces === void 0 && (r.stripWhitespaces = !0), r.useDoubleQuotes === void 0 && (r.useDoubleQuotes = !0), r.ignoreRoot === void 0 && (r.ignoreRoot = !1), r.escapeMode === void 0 && (r.escapeMode = !0), r.attributePrefix === void 0 && (r.attributePrefix = "_"), r.selfClosingElements === void 0 && (r.selfClosingElements = !0), r.keepCData === void 0 && (r.keepCData = !1), r.keepText === void 0 && (r.keepText = !1), r.jsDateUTC === void 0 && (r.jsDateUTC = !1);
|
|
3943
3943
|
}
|
|
3944
3944
|
function u() {
|
|
3945
|
-
function g(
|
|
3946
|
-
var
|
|
3947
|
-
return
|
|
3945
|
+
function g(D) {
|
|
3946
|
+
var w = String(D);
|
|
3947
|
+
return w.length === 1 && (w = "0" + w), w;
|
|
3948
3948
|
}
|
|
3949
3949
|
typeof String.prototype.trim != "function" && (String.prototype.trim = function() {
|
|
3950
3950
|
return this.replace(/^\s+|^\n+|(\s|\n)+$/g, "");
|
|
3951
3951
|
}), typeof Date.prototype.toISOString != "function" && (Date.prototype.toISOString = function() {
|
|
3952
|
-
var
|
|
3953
|
-
return this.getUTCFullYear() + "-" + g(this.getUTCMonth() + 1) + "-" + g(this.getUTCDate()) + "T" + g(this.getUTCHours()) + ":" + g(this.getUTCMinutes()) + ":" + g(this.getUTCSeconds()) + "." + String((this.getUTCMilliseconds() /
|
|
3952
|
+
var w = 1e3;
|
|
3953
|
+
return this.getUTCFullYear() + "-" + g(this.getUTCMonth() + 1) + "-" + g(this.getUTCDate()) + "T" + g(this.getUTCHours()) + ":" + g(this.getUTCMinutes()) + ":" + g(this.getUTCSeconds()) + "." + String((this.getUTCMilliseconds() / w).toFixed(3)).slice(2, 5) + "Z";
|
|
3954
3954
|
});
|
|
3955
3955
|
}
|
|
3956
3956
|
o(), u();
|
|
@@ -3962,8 +3962,8 @@ function Ln() {
|
|
|
3962
3962
|
DOCUMENT_NODE: 9
|
|
3963
3963
|
};
|
|
3964
3964
|
function l(g) {
|
|
3965
|
-
var
|
|
3966
|
-
return
|
|
3965
|
+
var D = g.localName;
|
|
3966
|
+
return D == null && (D = g.baseName), (D == null || D === "") && (D = g.nodeName), D;
|
|
3967
3967
|
}
|
|
3968
3968
|
function d(g) {
|
|
3969
3969
|
return g.prefix;
|
|
@@ -3974,39 +3974,39 @@ function Ln() {
|
|
|
3974
3974
|
function a(g) {
|
|
3975
3975
|
return g.replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/&/g, "&");
|
|
3976
3976
|
}
|
|
3977
|
-
function
|
|
3978
|
-
if (r.arrayAccessForm === "property" && (g[
|
|
3977
|
+
function b(g, D, w) {
|
|
3978
|
+
if (r.arrayAccessForm === "property" && (g[D] instanceof Array ? g[D + "_asArray"] = g[D] : g[D + "_asArray"] = [g[D]]), !(g[D] instanceof Array) && r.arrayAccessFormPaths.length > 0) {
|
|
3979
3979
|
for (var T = !1, O = 0; O < r.arrayAccessFormPaths.length; O++) {
|
|
3980
3980
|
var H = r.arrayAccessFormPaths[O];
|
|
3981
3981
|
if (typeof H == "string") {
|
|
3982
|
-
if (H ===
|
|
3982
|
+
if (H === w) {
|
|
3983
3983
|
T = !0;
|
|
3984
3984
|
break;
|
|
3985
3985
|
}
|
|
3986
3986
|
} else if (H instanceof RegExp) {
|
|
3987
|
-
if (H.test(
|
|
3987
|
+
if (H.test(w)) {
|
|
3988
3988
|
T = !0;
|
|
3989
3989
|
break;
|
|
3990
3990
|
}
|
|
3991
|
-
} else if (typeof H == "function" && H(
|
|
3991
|
+
} else if (typeof H == "function" && H(D, w)) {
|
|
3992
3992
|
T = !0;
|
|
3993
3993
|
break;
|
|
3994
3994
|
}
|
|
3995
3995
|
}
|
|
3996
|
-
T && (g[
|
|
3996
|
+
T && (g[D] = [g[D]]);
|
|
3997
3997
|
}
|
|
3998
3998
|
}
|
|
3999
3999
|
function p(g) {
|
|
4000
|
-
var
|
|
4001
|
-
if (T.setHours(
|
|
4002
|
-
var H =
|
|
4000
|
+
var D = 60, w = g.split(/[-T:+Z]/g), T = new Date(w[0], w[1] - 1, w[2]), O = w[5].split(".");
|
|
4001
|
+
if (T.setHours(w[3], w[4], O[0]), O.length > 1 && T.setMilliseconds(O[1]), w[6] && w[7]) {
|
|
4002
|
+
var H = w[6] * D + Number(w[7]), G = /\d\d-\d\d:\d\d$/.test(g) ? "-" : "+";
|
|
4003
4003
|
H = 0 + (G === "-" ? -1 * H : H), T.setMinutes(T.getMinutes() - H - T.getTimezoneOffset());
|
|
4004
4004
|
} else g.indexOf("Z", g.length - 1) !== -1 && (T = new Date(Date.UTC(T.getFullYear(), T.getMonth(), T.getDate(), T.getHours(), T.getMinutes(), T.getSeconds(), T.getMilliseconds())));
|
|
4005
4005
|
return T;
|
|
4006
4006
|
}
|
|
4007
|
-
function A(g,
|
|
4007
|
+
function A(g, D, w) {
|
|
4008
4008
|
if (r.datetimeAccessFormPaths.length > 0)
|
|
4009
|
-
for (var T =
|
|
4009
|
+
for (var T = w.split(".#")[0], O = 0; O < r.datetimeAccessFormPaths.length; O++) {
|
|
4010
4010
|
var H = r.datetimeAccessFormPaths[O];
|
|
4011
4011
|
if (typeof H == "string") {
|
|
4012
4012
|
if (H === T)
|
|
@@ -4019,162 +4019,162 @@ function Ln() {
|
|
|
4019
4019
|
}
|
|
4020
4020
|
return g;
|
|
4021
4021
|
}
|
|
4022
|
-
function
|
|
4023
|
-
for (var
|
|
4024
|
-
var O =
|
|
4022
|
+
function y(g) {
|
|
4023
|
+
for (var D = {}, w = g.childNodes, T = 0; T < w.length; T++) {
|
|
4024
|
+
var O = w.item(T);
|
|
4025
4025
|
if (O.nodeType === s.ELEMENT_NODE) {
|
|
4026
4026
|
var H = l(O);
|
|
4027
|
-
r.ignoreRoot ?
|
|
4027
|
+
r.ignoreRoot ? D = B(O, H) : D[H] = B(O, H);
|
|
4028
4028
|
}
|
|
4029
4029
|
}
|
|
4030
|
-
return
|
|
4030
|
+
return D;
|
|
4031
4031
|
}
|
|
4032
|
-
function v(g,
|
|
4033
|
-
var
|
|
4034
|
-
|
|
4032
|
+
function v(g, D) {
|
|
4033
|
+
var w = {};
|
|
4034
|
+
w.__cnt = 0;
|
|
4035
4035
|
for (var T = g.childNodes, O = 0; O < T.length; O++) {
|
|
4036
4036
|
var H = T.item(O), G = l(H);
|
|
4037
|
-
H.nodeType !== s.COMMENT_NODE && (
|
|
4037
|
+
H.nodeType !== s.COMMENT_NODE && (w.__cnt++, w[G] == null ? (w[G] = B(H, D + "." + G), b(w, G, D + "." + G)) : (w[G] instanceof Array || (w[G] = [w[G]], b(w, G, D + "." + G)), w[G][w[G].length] = B(H, D + "." + G)));
|
|
4038
4038
|
}
|
|
4039
4039
|
for (var V = 0; V < g.attributes.length; V++) {
|
|
4040
4040
|
var J = g.attributes.item(V);
|
|
4041
|
-
|
|
4042
|
-
for (var Y = J.value,
|
|
4043
|
-
var
|
|
4044
|
-
|
|
4041
|
+
w.__cnt++;
|
|
4042
|
+
for (var Y = J.value, j = 0; j < r.attributeConverters.length; j++) {
|
|
4043
|
+
var W = r.attributeConverters[j];
|
|
4044
|
+
W.test.call(null, J.name, J.value) && (Y = W.convert.call(null, J.name, J.value));
|
|
4045
4045
|
}
|
|
4046
|
-
|
|
4046
|
+
w[r.attributePrefix + J.name] = Y;
|
|
4047
4047
|
}
|
|
4048
4048
|
var K = d(g);
|
|
4049
|
-
return K && (
|
|
4050
|
-
`)), r.escapeMode && (
|
|
4049
|
+
return K && (w.__cnt++, w.__prefix = K), w["#text"] && (w.__text = w["#text"], w.__text instanceof Array && (w.__text = w.__text.join(`
|
|
4050
|
+
`)), r.escapeMode && (w.__text = a(w.__text)), r.stripWhitespaces && (w.__text = w.__text.trim()), delete w["#text"], r.arrayAccessForm === "property" && delete w["#text_asArray"], w.__text = A(w.__text, "#text", D + ".#text")), w.hasOwnProperty("#cdata-section") && (w.__cdata = w["#cdata-section"], delete w["#cdata-section"], r.arrayAccessForm === "property" && delete w["#cdata-section_asArray"]), w.__cnt === 1 && w.__text && !r.keepText ? w = w.__text : w.__cnt === 0 && r.emptyNodeForm === "text" ? w = "" : w.__cnt > 1 && w.__text !== void 0 && r.skipEmptyTextNodesForObj && (r.stripWhitespaces && w.__text === "" || w.__text.trim() === "") && delete w.__text, delete w.__cnt, !r.keepCData && !w.hasOwnProperty("__text") && w.hasOwnProperty("__cdata") && Object.keys(w).length === 1 ? w.__cdata ? w.__cdata : "" : (r.enableToStringFunc && (w.__text || w.__cdata) && (w.toString = function() {
|
|
4051
4051
|
return (this.__text ? this.__text : "") + (this.__cdata ? this.__cdata : "");
|
|
4052
|
-
}),
|
|
4052
|
+
}), w);
|
|
4053
4053
|
}
|
|
4054
|
-
function B(g,
|
|
4055
|
-
return g.nodeType === s.DOCUMENT_NODE ?
|
|
4054
|
+
function B(g, D) {
|
|
4055
|
+
return g.nodeType === s.DOCUMENT_NODE ? y(g) : g.nodeType === s.ELEMENT_NODE ? v(g, D) : g.nodeType === s.TEXT_NODE || g.nodeType === s.CDATA_SECTION_NODE ? g.nodeValue : null;
|
|
4056
4056
|
}
|
|
4057
|
-
function N(g,
|
|
4058
|
-
var O = "<" + (g && g.__prefix ? g.__prefix + ":" : "") +
|
|
4059
|
-
if (
|
|
4060
|
-
for (var H = 0; H <
|
|
4061
|
-
var G =
|
|
4057
|
+
function N(g, D, w, T) {
|
|
4058
|
+
var O = "<" + (g && g.__prefix ? g.__prefix + ":" : "") + D;
|
|
4059
|
+
if (w)
|
|
4060
|
+
for (var H = 0; H < w.length; H++) {
|
|
4061
|
+
var G = w[H], V = g[G];
|
|
4062
4062
|
r.escapeMode && (V = h(V)), O += " " + G.substr(r.attributePrefix.length) + "=", r.useDoubleQuotes ? O += '"' + V + '"' : O += "'" + V + "'";
|
|
4063
4063
|
}
|
|
4064
4064
|
return T ? O += " />" : O += ">", O;
|
|
4065
4065
|
}
|
|
4066
|
-
function E(g,
|
|
4067
|
-
return "</" + (g && g.__prefix ? g.__prefix + ":" : "") +
|
|
4066
|
+
function E(g, D) {
|
|
4067
|
+
return "</" + (g && g.__prefix ? g.__prefix + ":" : "") + D + ">";
|
|
4068
4068
|
}
|
|
4069
|
-
function L(g,
|
|
4070
|
-
return g.indexOf(
|
|
4069
|
+
function L(g, D) {
|
|
4070
|
+
return g.indexOf(D, g.length - D.length) !== -1;
|
|
4071
4071
|
}
|
|
4072
|
-
function X(g,
|
|
4073
|
-
return !!(r.arrayAccessForm === "property" && L(
|
|
4072
|
+
function X(g, D) {
|
|
4073
|
+
return !!(r.arrayAccessForm === "property" && L(D.toString(), "_asArray") || D.toString().indexOf(r.attributePrefix) === 0 || D.toString().indexOf("__") === 0 || g[D] instanceof Function);
|
|
4074
4074
|
}
|
|
4075
4075
|
function R(g) {
|
|
4076
|
-
var
|
|
4076
|
+
var D = 0;
|
|
4077
4077
|
if (g instanceof Object)
|
|
4078
|
-
for (var
|
|
4079
|
-
X(g,
|
|
4080
|
-
return
|
|
4078
|
+
for (var w in g)
|
|
4079
|
+
X(g, w) || D++;
|
|
4080
|
+
return D;
|
|
4081
4081
|
}
|
|
4082
4082
|
function S(g) {
|
|
4083
|
-
var
|
|
4083
|
+
var D = [];
|
|
4084
4084
|
if (g instanceof Object)
|
|
4085
|
-
for (var
|
|
4086
|
-
|
|
4087
|
-
return
|
|
4085
|
+
for (var w in g)
|
|
4086
|
+
w.toString().indexOf("__") === -1 && w.toString().indexOf(r.attributePrefix) === 0 && D.push(w);
|
|
4087
|
+
return D;
|
|
4088
4088
|
}
|
|
4089
4089
|
function z(g) {
|
|
4090
|
-
var
|
|
4091
|
-
return g.__cdata && (
|
|
4090
|
+
var D = "";
|
|
4091
|
+
return g.__cdata && (D += "<![CDATA[" + g.__cdata + "]]>"), (g.__text || typeof g.__text == "number" || typeof g.__text == "boolean") && (r.escapeMode ? D += h(g.__text) : D += g.__text), D;
|
|
4092
4092
|
}
|
|
4093
4093
|
function C(g) {
|
|
4094
|
-
var
|
|
4095
|
-
return g instanceof Object ?
|
|
4094
|
+
var D = "";
|
|
4095
|
+
return g instanceof Object ? D += z(g) : g !== null && (r.escapeMode ? D += h(g) : D += g), D;
|
|
4096
4096
|
}
|
|
4097
|
-
function P(g,
|
|
4097
|
+
function P(g, D, w) {
|
|
4098
4098
|
var T = "";
|
|
4099
4099
|
if (g.length === 0)
|
|
4100
|
-
T += N(g,
|
|
4100
|
+
T += N(g, D, w, !0);
|
|
4101
4101
|
else
|
|
4102
4102
|
for (var O = 0; O < g.length; O++)
|
|
4103
|
-
T += F(g[O],
|
|
4103
|
+
T += F(g[O], D, S(g[O]));
|
|
4104
4104
|
return T;
|
|
4105
4105
|
}
|
|
4106
|
-
function F(g,
|
|
4106
|
+
function F(g, D, w) {
|
|
4107
4107
|
var T = "";
|
|
4108
|
-
if (r.jsAttributeFilter && r.jsAttributeFilter.call(null,
|
|
4108
|
+
if (r.jsAttributeFilter && r.jsAttributeFilter.call(null, D, g))
|
|
4109
4109
|
return T;
|
|
4110
|
-
if (r.jsAttributeConverter && (g = r.jsAttributeConverter.call(null,
|
|
4111
|
-
T += N(g,
|
|
4110
|
+
if (r.jsAttributeConverter && (g = r.jsAttributeConverter.call(null, D, g)), (g == null || g === "") && r.selfClosingElements)
|
|
4111
|
+
T += N(g, D, w, !0);
|
|
4112
4112
|
else if (typeof g == "object")
|
|
4113
4113
|
if (Object.prototype.toString.call(g) === "[object Array]")
|
|
4114
|
-
T += P(g,
|
|
4114
|
+
T += P(g, D, w);
|
|
4115
4115
|
else if (g instanceof Date)
|
|
4116
|
-
T += N(g,
|
|
4116
|
+
T += N(g, D, w, !1), T += r.jsDateUTC ? g.toUTCString() : g.toISOString(), T += E(g, D);
|
|
4117
4117
|
else {
|
|
4118
4118
|
var O = R(g);
|
|
4119
|
-
O > 0 || typeof g.__text == "number" || typeof g.__text == "boolean" || g.__text || g.__cdata ? (T += N(g,
|
|
4119
|
+
O > 0 || typeof g.__text == "number" || typeof g.__text == "boolean" || g.__text || g.__cdata ? (T += N(g, D, w, !1), T += M(g), T += E(g, D)) : r.selfClosingElements ? T += N(g, D, w, !0) : (T += N(g, D, w, !1), T += E(g, D));
|
|
4120
4120
|
}
|
|
4121
4121
|
else
|
|
4122
|
-
T += N(g,
|
|
4122
|
+
T += N(g, D, w, !1), T += C(g), T += E(g, D);
|
|
4123
4123
|
return T;
|
|
4124
4124
|
}
|
|
4125
4125
|
function M(g) {
|
|
4126
|
-
var
|
|
4127
|
-
if (
|
|
4126
|
+
var D = "", w = R(g);
|
|
4127
|
+
if (w > 0) {
|
|
4128
4128
|
for (var T in g)
|
|
4129
4129
|
if (!X(g, T)) {
|
|
4130
4130
|
var O = g[T], H = S(O);
|
|
4131
|
-
|
|
4131
|
+
D += F(O, T, H);
|
|
4132
4132
|
}
|
|
4133
4133
|
}
|
|
4134
|
-
return
|
|
4134
|
+
return D += C(g), D;
|
|
4135
4135
|
}
|
|
4136
4136
|
function I(g) {
|
|
4137
4137
|
if (g === void 0 || typeof g != "string")
|
|
4138
4138
|
return null;
|
|
4139
|
-
var
|
|
4139
|
+
var D = null, w = null;
|
|
4140
4140
|
if (e)
|
|
4141
|
-
|
|
4141
|
+
D = new e(r.xmldomOptions), w = D.parseFromString(g, "text/xml");
|
|
4142
4142
|
else if (window && window.DOMParser) {
|
|
4143
|
-
|
|
4143
|
+
D = new window.DOMParser();
|
|
4144
4144
|
var T = null, O = window.ActiveXObject || "ActiveXObject" in window;
|
|
4145
4145
|
if (!O && document.all && !document.addEventListener)
|
|
4146
4146
|
try {
|
|
4147
|
-
T =
|
|
4147
|
+
T = D.parseFromString("INVALID", "text/xml").childNodes[0].namespaceURI;
|
|
4148
4148
|
} catch {
|
|
4149
4149
|
T = null;
|
|
4150
4150
|
}
|
|
4151
4151
|
try {
|
|
4152
|
-
|
|
4152
|
+
w = D.parseFromString(g, "text/xml"), T !== null && w.getElementsByTagNameNS(T, "parsererror").length > 0 && (w = null);
|
|
4153
4153
|
} catch {
|
|
4154
|
-
|
|
4154
|
+
w = null;
|
|
4155
4155
|
}
|
|
4156
4156
|
} else
|
|
4157
|
-
g.indexOf("<?") === 0 && (g = g.substr(g.indexOf("?>") + 2)),
|
|
4158
|
-
return
|
|
4157
|
+
g.indexOf("<?") === 0 && (g = g.substr(g.indexOf("?>") + 2)), w = new ActiveXObject("Microsoft.XMLDOM"), w.async = "false", w.loadXML(g);
|
|
4158
|
+
return w;
|
|
4159
4159
|
}
|
|
4160
|
-
this.asArray = function(
|
|
4161
|
-
return
|
|
4162
|
-
}, this.toXmlDateTime = function(
|
|
4163
|
-
return
|
|
4164
|
-
}, this.asDateTime = function(
|
|
4165
|
-
return typeof
|
|
4166
|
-
}, this.xml2dom = function(
|
|
4167
|
-
return I(
|
|
4168
|
-
}, this.dom2js = function(
|
|
4169
|
-
return B(
|
|
4170
|
-
}, this.js2dom = function(
|
|
4171
|
-
var
|
|
4172
|
-
return I(
|
|
4173
|
-
}, this.xml2js = function(
|
|
4174
|
-
var
|
|
4175
|
-
return
|
|
4176
|
-
}, this.js2xml = function(
|
|
4177
|
-
return M(
|
|
4160
|
+
this.asArray = function(D) {
|
|
4161
|
+
return D == null ? [] : D instanceof Array ? D : [D];
|
|
4162
|
+
}, this.toXmlDateTime = function(D) {
|
|
4163
|
+
return D instanceof Date ? D.toISOString() : typeof D == "number" ? new Date(D).toISOString() : null;
|
|
4164
|
+
}, this.asDateTime = function(D) {
|
|
4165
|
+
return typeof D == "string" ? p(D) : D;
|
|
4166
|
+
}, this.xml2dom = function(D) {
|
|
4167
|
+
return I(D);
|
|
4168
|
+
}, this.dom2js = function(D) {
|
|
4169
|
+
return B(D, null);
|
|
4170
|
+
}, this.js2dom = function(D) {
|
|
4171
|
+
var w = this.js2xml(D);
|
|
4172
|
+
return I(w);
|
|
4173
|
+
}, this.xml2js = function(D) {
|
|
4174
|
+
var w = I(D);
|
|
4175
|
+
return w != null ? this.dom2js(w) : null;
|
|
4176
|
+
}, this.js2xml = function(D) {
|
|
4177
|
+
return M(D);
|
|
4178
4178
|
}, this.getVersion = function() {
|
|
4179
4179
|
return i;
|
|
4180
4180
|
};
|
|
@@ -4182,152 +4182,11 @@ function Ln() {
|
|
|
4182
4182
|
});
|
|
4183
4183
|
})(Rt)), Rt.exports;
|
|
4184
4184
|
}
|
|
4185
|
-
var
|
|
4186
|
-
const
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4190
|
-
const r = t?.catalog?.dataset?.[e];
|
|
4191
|
-
return r === void 0 || Array.isArray(r) ? r : [r];
|
|
4192
|
-
}
|
|
4193
|
-
function On(n) {
|
|
4194
|
-
const e = _t(n), t = e?.gridDataset;
|
|
4195
|
-
if (!t) {
|
|
4196
|
-
const u = Object.keys(e || {}).join(", ") || "none";
|
|
4197
|
-
throw new Error("Invalid NCSS dataset XML: expected gridDataset root, received: " + u);
|
|
4198
|
-
}
|
|
4199
|
-
const r = t.gridSet?.grid;
|
|
4200
|
-
if (!r)
|
|
4201
|
-
throw new Error("Invalid NCSS dataset XML: gridDataset.gridSet.grid is missing");
|
|
4202
|
-
let i = r;
|
|
4203
|
-
un(i) && (i = [i]);
|
|
4204
|
-
const o = Array.isArray(t.axis) ? t.axis : [t.axis].filter(Boolean);
|
|
4205
|
-
return {
|
|
4206
|
-
latLonBox: t.LatLonBox,
|
|
4207
|
-
timeSpan: t.TimeSpan,
|
|
4208
|
-
axis: o,
|
|
4209
|
-
grid: i
|
|
4210
|
-
};
|
|
4211
|
-
}
|
|
4212
|
-
function Xn(n) {
|
|
4213
|
-
const e = String(n || "").split("."), t = e[e.length - 1]?.toLowerCase() || "other";
|
|
4214
|
-
return [
|
|
4215
|
-
"png",
|
|
4216
|
-
"jpg",
|
|
4217
|
-
"jpeg",
|
|
4218
|
-
"xlsx",
|
|
4219
|
-
"xls",
|
|
4220
|
-
"csv",
|
|
4221
|
-
"txt",
|
|
4222
|
-
"json",
|
|
4223
|
-
"geojson",
|
|
4224
|
-
"grb",
|
|
4225
|
-
"grib1",
|
|
4226
|
-
"grib2",
|
|
4227
|
-
"grb2",
|
|
4228
|
-
"gr2",
|
|
4229
|
-
"nc"
|
|
4230
|
-
].includes(t) ? t : "other";
|
|
4231
|
-
}
|
|
4232
|
-
function Br(n) {
|
|
4233
|
-
const { xmlJson: e, type: t } = n;
|
|
4234
|
-
return e.map((r) => t === "menu" ? {
|
|
4235
|
-
label: r["xlink:title"],
|
|
4236
|
-
key: r.ID,
|
|
4237
|
-
url: r.ID,
|
|
4238
|
-
type: t,
|
|
4239
|
-
isLeaf: !1
|
|
4240
|
-
} : {
|
|
4241
|
-
label: r.name,
|
|
4242
|
-
key: r.ID,
|
|
4243
|
-
url: r.urlPath,
|
|
4244
|
-
type: t,
|
|
4245
|
-
isLeaf: !0,
|
|
4246
|
-
fileType: Xn(r.name)
|
|
4247
|
-
});
|
|
4248
|
-
}
|
|
4249
|
-
async function Hn(n, e, t, r, i, o, u) {
|
|
4250
|
-
const s = ye(), l = new URLSearchParams({
|
|
4251
|
-
service: "WMS",
|
|
4252
|
-
version: "1.3.0",
|
|
4253
|
-
request: "GetMetadata",
|
|
4254
|
-
item: "minmax",
|
|
4255
|
-
layers: e,
|
|
4256
|
-
styles: "",
|
|
4257
|
-
CRS: "EPSG:4326",
|
|
4258
|
-
BBOX: t.south + "," + t.west + "," + t.north + "," + t.east,
|
|
4259
|
-
time: r || "",
|
|
4260
|
-
width: "2",
|
|
4261
|
-
height: "2"
|
|
4262
|
-
}), d = o ?? s.serviceBaseUrl, h = String(n).replace(/^\/+/, ""), a = await or("wms/" + h + "?" + l.toString(), {
|
|
4263
|
-
baseUrl: d,
|
|
4264
|
-
authorization: i,
|
|
4265
|
-
signal: u
|
|
4266
|
-
}), D = (a.headers.get("content-type") || "").toLowerCase();
|
|
4267
|
-
if (!D.includes("json")) {
|
|
4268
|
-
const p = await a.text();
|
|
4269
|
-
throw new Error(
|
|
4270
|
-
"WMS min/max response has invalid content type: " + (D || "unknown") + "; " + p.slice(0, 240)
|
|
4271
|
-
);
|
|
4272
|
-
}
|
|
4273
|
-
return await a.json();
|
|
4274
|
-
}
|
|
4275
|
-
async function In(n, e, t = {}) {
|
|
4276
|
-
try {
|
|
4277
|
-
const r = String(n).replace(/^\/+|\/+$/g, ""), i = await Gr("catalog/" + r + "/catalog.xml", e, {
|
|
4278
|
-
baseUrl: t.serviceBaseUrl,
|
|
4279
|
-
signal: t.signal
|
|
4280
|
-
}), o = _t(i, "catalogRef"), u = _t(i, "dataset"), s = [];
|
|
4281
|
-
let l = "";
|
|
4282
|
-
return o?.length && (s.push(...Br({ xmlJson: o, type: "menu" })), l = "menu"), u?.length && (s.push(...Br({ xmlJson: u, type: "file" })), l = "file"), { type: l, data: s };
|
|
4283
|
-
} catch {
|
|
4284
|
-
return;
|
|
4285
|
-
}
|
|
4286
|
-
}
|
|
4287
|
-
async function Er(n) {
|
|
4288
|
-
const e = ye(), t = n.authorization ?? e.serviceAuthorization, r = n.serviceBaseUrl ?? e.serviceBaseUrl;
|
|
4289
|
-
let i = n.filePath, o;
|
|
4290
|
-
for (let v = 0; v < 6; v++) {
|
|
4291
|
-
if (o = await In(i, t, {
|
|
4292
|
-
serviceBaseUrl: r,
|
|
4293
|
-
signal: n.signal
|
|
4294
|
-
}), !o?.data.length) return;
|
|
4295
|
-
if (o.data.reverse(), o.type === "file") break;
|
|
4296
|
-
if (o.type !== "menu" || !o.data[0]?.url) return;
|
|
4297
|
-
i = o.data[0].url;
|
|
4298
|
-
}
|
|
4299
|
-
if (!o?.data.length || o.type !== "file") return;
|
|
4300
|
-
const u = o.data[0];
|
|
4301
|
-
if (!u) return;
|
|
4302
|
-
const s = n.url || u.url || i + "/" + u.label, l = "/" + String(s).replace(/^\/+/, ""), d = n.ncssBaseUrl ?? e.ncssBaseUrl, h = await yn(
|
|
4303
|
-
d.replace(/\/$/, "") + l + "/dataset.xml",
|
|
4304
|
-
t,
|
|
4305
|
-
{ baseUrl: r, signal: n.signal }
|
|
4306
|
-
), { latLonBox: a, timeSpan: D, axis: p } = On(h), A = p.find((v) => v.name === "time"), w = [];
|
|
4307
|
-
if (A && D?.begin) {
|
|
4308
|
-
const v = Number(A.values?.npts), B = String(
|
|
4309
|
-
A.attribute?.find((L) => L.name === "units")?.value || ""
|
|
4310
|
-
).toLowerCase(), N = B.includes("hour") ? "hour" : B.includes("minute") ? "minute" : "second", E = Number(A.values?.resolution);
|
|
4311
|
-
if (v > 1 && Number.isFinite(E) && E !== 0)
|
|
4312
|
-
for (let L = 0; L < v; L++)
|
|
4313
|
-
w.push(
|
|
4314
|
-
Je(D.begin).add(L * E, N).format("YYYYMMDDHHmmss")
|
|
4315
|
-
);
|
|
4316
|
-
else
|
|
4317
|
-
w.push(Je(D.begin).format("YYYYMMDDHHmmss"));
|
|
4318
|
-
}
|
|
4319
|
-
return {
|
|
4320
|
-
type: "file",
|
|
4321
|
-
latLonBox: a,
|
|
4322
|
-
timeList: w,
|
|
4323
|
-
fileList: o.data,
|
|
4324
|
-
url: l,
|
|
4325
|
-
authorization: t
|
|
4326
|
-
};
|
|
4327
|
-
}
|
|
4328
|
-
Je.extend(Rr);
|
|
4329
|
-
const xr = "#sym:";
|
|
4330
|
-
async function Rn(n, e, t) {
|
|
4185
|
+
var Mn = Sn();
|
|
4186
|
+
const On = /* @__PURE__ */ xn(Mn);
|
|
4187
|
+
Je.extend(zr);
|
|
4188
|
+
const Br = "#sym:";
|
|
4189
|
+
async function Xn(n, e, t) {
|
|
4331
4190
|
const r = await fetch(n, {
|
|
4332
4191
|
credentials: "include",
|
|
4333
4192
|
signal: t,
|
|
@@ -4351,10 +4210,10 @@ async function Rn(n, e, t) {
|
|
|
4351
4210
|
l.onload = () => typeof l.result == "string" ? u(l.result) : s(new Error("Failed to convert image to data URL")), l.onerror = () => s(l.error ?? new Error("Failed to read image response")), l.readAsDataURL(o);
|
|
4352
4211
|
});
|
|
4353
4212
|
}
|
|
4354
|
-
function
|
|
4213
|
+
function jr(n) {
|
|
4355
4214
|
if (typeof n == "function") return n;
|
|
4356
|
-
if (typeof n != "string" || !n.startsWith(
|
|
4357
|
-
const e = n.slice(
|
|
4215
|
+
if (typeof n != "string" || !n.startsWith(Br)) return;
|
|
4216
|
+
const e = n.slice(Br.length).trim();
|
|
4358
4217
|
if (!e) return;
|
|
4359
4218
|
const r = globalThis.__layerSymbols?.[e];
|
|
4360
4219
|
if (typeof r == "function") return r;
|
|
@@ -4368,15 +4227,15 @@ function Nt(n, e, t) {
|
|
|
4368
4227
|
return n + (e - n) * t;
|
|
4369
4228
|
}
|
|
4370
4229
|
function ur(n, e, t, r = 5, i = 1.2) {
|
|
4371
|
-
function o(h, a,
|
|
4372
|
-
return Math.exp(-(h * h + a * a) / (2 *
|
|
4230
|
+
function o(h, a, b) {
|
|
4231
|
+
return Math.exp(-(h * h + a * a) / (2 * b * b));
|
|
4373
4232
|
}
|
|
4374
4233
|
const u = Math.floor(r / 2);
|
|
4375
4234
|
let s = [], l = 0;
|
|
4376
4235
|
for (let h = -u; h <= u; h++)
|
|
4377
4236
|
for (let a = -u; a <= u; a++) {
|
|
4378
|
-
const
|
|
4379
|
-
s.push(
|
|
4237
|
+
const b = o(a, h, i);
|
|
4238
|
+
s.push(b), l += b;
|
|
4380
4239
|
}
|
|
4381
4240
|
s = s.map((h) => h / l);
|
|
4382
4241
|
const d = Array.from(
|
|
@@ -4389,13 +4248,13 @@ function ur(n, e, t, r = 5, i = 1.2) {
|
|
|
4389
4248
|
d[h][a] = void 0;
|
|
4390
4249
|
continue;
|
|
4391
4250
|
}
|
|
4392
|
-
let
|
|
4393
|
-
for (let
|
|
4251
|
+
let b = 0, p = 0, A = 0;
|
|
4252
|
+
for (let y = -u; y <= u; y++)
|
|
4394
4253
|
for (let v = -u; v <= u; v++) {
|
|
4395
|
-
const B = Math.min(e - 1, Math.max(0, a + v)), N = Math.min(t - 1, Math.max(0, h +
|
|
4396
|
-
E !== void 0 && (
|
|
4254
|
+
const B = Math.min(e - 1, Math.max(0, a + v)), N = Math.min(t - 1, Math.max(0, h + y)), E = n[N][B];
|
|
4255
|
+
E !== void 0 && (b += E * s[A], p += s[A]), A++;
|
|
4397
4256
|
}
|
|
4398
|
-
d[h][a] = p > 0 ?
|
|
4257
|
+
d[h][a] = p > 0 ? b / p : void 0;
|
|
4399
4258
|
}
|
|
4400
4259
|
return d;
|
|
4401
4260
|
}
|
|
@@ -4409,19 +4268,19 @@ function Wr(n, e, t, r) {
|
|
|
4409
4268
|
const o = Math.max(1, Math.ceil(i * 2));
|
|
4410
4269
|
return ur(n, e, t, o * 2 + 1, i * 1.2);
|
|
4411
4270
|
}
|
|
4412
|
-
function
|
|
4271
|
+
function Hn(n, e, t, r, i) {
|
|
4413
4272
|
const [o, u, s, l] = i, d = o + (s - o) * (n / (t - 1)), h = l - (l - u) * (e / (r - 1));
|
|
4414
4273
|
return [d, h];
|
|
4415
4274
|
}
|
|
4416
|
-
function
|
|
4275
|
+
function In(n, e, t, r, i) {
|
|
4417
4276
|
const [o, u, s, l] = i, d = o + (s - o) * (n / (t - 1)), h = l - (l - u) * (e / (r - 1));
|
|
4418
4277
|
return [d, h];
|
|
4419
4278
|
}
|
|
4420
|
-
function
|
|
4279
|
+
function Hi(n, e, t, r) {
|
|
4421
4280
|
return n.map((i) => {
|
|
4422
4281
|
const o = i.coordinates.map(
|
|
4423
4282
|
(u) => u.map(
|
|
4424
|
-
(s) => s.map(([l, d]) =>
|
|
4283
|
+
(s) => s.map(([l, d]) => In(l, d, e, t, r))
|
|
4425
4284
|
)
|
|
4426
4285
|
);
|
|
4427
4286
|
return {
|
|
@@ -4431,11 +4290,11 @@ function Xi(n, e, t, r) {
|
|
|
4431
4290
|
};
|
|
4432
4291
|
});
|
|
4433
4292
|
}
|
|
4434
|
-
function
|
|
4293
|
+
function Ii(n, e, t, r) {
|
|
4435
4294
|
return n.map((i) => {
|
|
4436
4295
|
const o = i.coordinates.map(
|
|
4437
4296
|
(u) => u.map(
|
|
4438
|
-
(s) => s.map(([l, d]) =>
|
|
4297
|
+
(s) => s.map(([l, d]) => Hn(l, d, e, t, r))
|
|
4439
4298
|
)
|
|
4440
4299
|
);
|
|
4441
4300
|
return {
|
|
@@ -4444,17 +4303,17 @@ function Hi(n, e, t, r) {
|
|
|
4444
4303
|
};
|
|
4445
4304
|
});
|
|
4446
4305
|
}
|
|
4447
|
-
function
|
|
4448
|
-
const o = Math.floor(e), u = Math.min(o + 1, r - 1), s = Math.floor(t), l = Math.min(s + 1, i - 1), d = n[s * r + o], h = n[s * r + u], a = n[l * r + o],
|
|
4449
|
-
return d * (1 - p) * (1 - A) + h * p * (1 - A) + a * (1 - p) * A +
|
|
4306
|
+
function _t(n, e, t, r, i) {
|
|
4307
|
+
const o = Math.floor(e), u = Math.min(o + 1, r - 1), s = Math.floor(t), l = Math.min(s + 1, i - 1), d = n[s * r + o], h = n[s * r + u], a = n[l * r + o], b = n[l * r + u], p = e - o, A = t - s;
|
|
4308
|
+
return d * (1 - p) * (1 - A) + h * p * (1 - A) + a * (1 - p) * A + b * p * A;
|
|
4450
4309
|
}
|
|
4451
4310
|
async function it(n, e, t, r, i) {
|
|
4452
4311
|
let o = 0, u = 0;
|
|
4453
|
-
const s = document.createElement("canvas"), l = s.getContext("2d"), d = new Image(), h = await
|
|
4454
|
-
return d.src = h, new Promise((a,
|
|
4312
|
+
const s = document.createElement("canvas"), l = s.getContext("2d"), d = new Image(), h = await Xn(n, r, i?.signal);
|
|
4313
|
+
return d.src = h, new Promise((a, b) => {
|
|
4455
4314
|
d.onload = () => {
|
|
4456
4315
|
o = d.width, u = d.height, s.width = o, s.height = u, l.clearRect(0, 0, o, u), l.drawImage(d, 0, 0);
|
|
4457
|
-
const A = l.getImageData(0, 0, o, u).data, [
|
|
4316
|
+
const A = l.getImageData(0, 0, o, u).data, [y, v] = e, B = (F, M) => {
|
|
4458
4317
|
const I = (M * o + F) * 4;
|
|
4459
4318
|
return [
|
|
4460
4319
|
A[I] ?? 0,
|
|
@@ -4462,23 +4321,23 @@ async function it(n, e, t, r, i) {
|
|
|
4462
4321
|
A[I + 2] ?? 0,
|
|
4463
4322
|
A[I + 3] ?? 0
|
|
4464
4323
|
];
|
|
4465
|
-
}, N = (F, M, I, g,
|
|
4324
|
+
}, N = (F, M, I, g, D = 4) => Math.abs(F - g[0]) <= D && Math.abs(M - g[1]) <= D && Math.abs(I - g[2]) <= D, E = i?.detectNoDataByBorderColor !== !1;
|
|
4466
4325
|
let L = [];
|
|
4467
4326
|
const X = (F, M, I) => L.some((g) => N(F, M, I, g, 6));
|
|
4468
4327
|
if (E) {
|
|
4469
|
-
const F = B(0, 0), M = B(Math.max(0, o - 1), 0), I = B(0, Math.max(0, u - 1)), g = B(Math.max(0, o - 1), Math.max(0, u - 1)),
|
|
4470
|
-
for (const O of
|
|
4471
|
-
const H =
|
|
4472
|
-
H ? H.count += 1 :
|
|
4328
|
+
const F = B(0, 0), M = B(Math.max(0, o - 1), 0), I = B(0, Math.max(0, u - 1)), g = B(Math.max(0, o - 1), Math.max(0, u - 1)), D = [F, M, I, g].filter((O) => O[3] > 0).map((O) => [O[0], O[1], O[2]]), w = [];
|
|
4329
|
+
for (const O of D) {
|
|
4330
|
+
const H = w.find((G) => N(O[0], O[1], O[2], G.rgb, 6));
|
|
4331
|
+
H ? H.count += 1 : w.push({ rgb: O, count: 1 });
|
|
4473
4332
|
}
|
|
4474
|
-
|
|
4475
|
-
const T =
|
|
4333
|
+
w.sort((O, H) => H.count - O.count);
|
|
4334
|
+
const T = w[0];
|
|
4476
4335
|
L = T && T.count >= 3 ? [T.rgb] : [];
|
|
4477
4336
|
}
|
|
4478
4337
|
const R = o * u, S = new Uint8Array(R), z = [], C = (F) => {
|
|
4479
4338
|
if (F < 0 || F >= R || S[F]) return;
|
|
4480
|
-
const M = F * 4, I = A[M] ?? 0, g = A[M + 1] ?? 0,
|
|
4481
|
-
(A[M + 3] ?? 0) > 0 && L.length > 0 && X(I, g,
|
|
4339
|
+
const M = F * 4, I = A[M] ?? 0, g = A[M + 1] ?? 0, D = A[M + 2] ?? 0;
|
|
4340
|
+
(A[M + 3] ?? 0) > 0 && L.length > 0 && X(I, g, D) && (S[F] = 1, z.push(F));
|
|
4482
4341
|
};
|
|
4483
4342
|
for (let F = 0; F < o; F++)
|
|
4484
4343
|
C(F), C((u - 1) * o + F);
|
|
@@ -4491,22 +4350,22 @@ async function it(n, e, t, r, i) {
|
|
|
4491
4350
|
const P = [];
|
|
4492
4351
|
for (let F = 0; F < u; F++)
|
|
4493
4352
|
for (let M = 0; M < o; M++) {
|
|
4494
|
-
const I = (F * o + M) * 4, g = F * o + M,
|
|
4353
|
+
const I = (F * o + M) * 4, g = F * o + M, D = A[I] ?? 0, w = A[I + 1] ?? 0, T = A[I + 2] ?? 0;
|
|
4495
4354
|
if ((A[I + 3] ?? 0) === 0 || S[g] === 1) {
|
|
4496
4355
|
P.push(void 0);
|
|
4497
4356
|
continue;
|
|
4498
4357
|
}
|
|
4499
|
-
const H = 0.299 *
|
|
4500
|
-
G <
|
|
4358
|
+
const H = 0.299 * D + 0.587 * w + 0.114 * T, G = y + H / 255 * (v - y);
|
|
4359
|
+
G < y ? t?.[0] ? P.push(void 0) : P.push(y) : G > v ? t?.[1] ? P.push(void 0) : P.push(v) : P.push(G);
|
|
4501
4360
|
}
|
|
4502
4361
|
a({ grayArr: P, width: o, height: u });
|
|
4503
|
-
}, d.onerror = () =>
|
|
4362
|
+
}, d.onerror = () => b(new Error(`Failed to decode image response: ${n}`));
|
|
4504
4363
|
});
|
|
4505
4364
|
}
|
|
4506
4365
|
function et(n) {
|
|
4507
4366
|
return n = n.trim(), n.endsWith("%") ? parseFloat(n) / 100 * 255 : parseFloat(n);
|
|
4508
4367
|
}
|
|
4509
|
-
function
|
|
4368
|
+
function Er(n) {
|
|
4510
4369
|
return n = n.trim(), n.endsWith("%") ? parseFloat(n) / 100 : parseFloat(n);
|
|
4511
4370
|
}
|
|
4512
4371
|
function tt(n) {
|
|
@@ -4519,7 +4378,7 @@ function zt(n) {
|
|
|
4519
4378
|
/rgba?\(\s*([0-9.+%]+)[,\s]+([0-9.+%]+)[,\s]+([0-9.+%]+)(?:[,\s]+([0-9.+%]+))?\s*\)/i
|
|
4520
4379
|
);
|
|
4521
4380
|
if (e) {
|
|
4522
|
-
const t = et(e[1]), r = et(e[2]), i = et(e[3]), o = e[4] ?
|
|
4381
|
+
const t = et(e[1]), r = et(e[2]), i = et(e[3]), o = e[4] ? Er(e[4]) : 1;
|
|
4523
4382
|
return [tt(t), tt(r), tt(i), Math.round(o * 255)];
|
|
4524
4383
|
}
|
|
4525
4384
|
if (n[0] === "#") {
|
|
@@ -4536,7 +4395,7 @@ function zt(n) {
|
|
|
4536
4395
|
if (r && r !== "") {
|
|
4537
4396
|
const i = r.match(/rgba?\(([^)]+)\)/);
|
|
4538
4397
|
if (i) {
|
|
4539
|
-
const o = i[1].split(",").map((h) => h.trim()), u = et(o[0]), s = et(o[1]), l = et(o[2]), d = o[3] ?
|
|
4398
|
+
const o = i[1].split(",").map((h) => h.trim()), u = et(o[0]), s = et(o[1]), l = et(o[2]), d = o[3] ? Er(o[3]) : 1;
|
|
4540
4399
|
return [tt(u), tt(s), tt(l), Math.round(d * 255)];
|
|
4541
4400
|
}
|
|
4542
4401
|
}
|
|
@@ -4544,7 +4403,7 @@ function zt(n) {
|
|
|
4544
4403
|
}
|
|
4545
4404
|
return [0, 0, 0, 0];
|
|
4546
4405
|
}
|
|
4547
|
-
function
|
|
4406
|
+
function Ur(n, e) {
|
|
4548
4407
|
if (!Array.isArray(n) || n.length === 0) return [];
|
|
4549
4408
|
if (!e || e.length !== 2) return n;
|
|
4550
4409
|
const t = Number(e[0]), r = Number(e[1]);
|
|
@@ -4553,14 +4412,14 @@ function jr(n, e) {
|
|
|
4553
4412
|
return n.slice(o, u);
|
|
4554
4413
|
}
|
|
4555
4414
|
function wt(n, e) {
|
|
4556
|
-
const t =
|
|
4415
|
+
const t = Ur(n, e);
|
|
4557
4416
|
if (!t.length) return;
|
|
4558
4417
|
const r = t.find((s) => s?.scope?.length), i = [...t].reverse().find((s) => s?.scope?.length), o = r?.scope?.length ? Number(r.scope[0]) : void 0, u = i?.scope?.length ? Number(i.scope[i.scope.length - 1]) : void 0;
|
|
4559
4418
|
if (!(typeof o > "u" || isNaN(o)))
|
|
4560
4419
|
return typeof u > "u" || isNaN(u) ? [o, o] : [o, u];
|
|
4561
4420
|
}
|
|
4562
4421
|
function Ee(n, e) {
|
|
4563
|
-
const t = [], r = {}, i =
|
|
4422
|
+
const t = [], r = {}, i = Ur(n, e);
|
|
4564
4423
|
for (const u of i) {
|
|
4565
4424
|
const s = u?.scope?.length ? Number(u.scope[0]) : NaN;
|
|
4566
4425
|
isNaN(s) || (t.push(s), r[s] = u.color);
|
|
@@ -4568,7 +4427,7 @@ function Ee(n, e) {
|
|
|
4568
4427
|
return { uniqueThresholds: Array.from(new Set(t)).sort((u, s) => u - s), colorMap: r };
|
|
4569
4428
|
}
|
|
4570
4429
|
const Jt = new globalThis.Map();
|
|
4571
|
-
function
|
|
4430
|
+
function Rn(n) {
|
|
4572
4431
|
const e = n?.config, t = (e?.legend ?? []).map((r) => ({
|
|
4573
4432
|
name: r?.name,
|
|
4574
4433
|
scope: r?.scope ?? [],
|
|
@@ -4584,29 +4443,29 @@ function Vn(n) {
|
|
|
4584
4443
|
});
|
|
4585
4444
|
}
|
|
4586
4445
|
async function Gt(n) {
|
|
4587
|
-
const e =
|
|
4446
|
+
const e = Rn(n), t = Jt.get(e);
|
|
4588
4447
|
if (t) return t;
|
|
4589
4448
|
const r = (async () => {
|
|
4590
4449
|
const { config: i, url: o, authorization: u } = n;
|
|
4591
4450
|
if (!i) return;
|
|
4592
4451
|
const { extent: s, scope: l, legend: d, legendScope: h } = i;
|
|
4593
4452
|
if (!s) return;
|
|
4594
|
-
const a = Bt(s),
|
|
4595
|
-
qt(l?.[0]) && (
|
|
4596
|
-
const { grayArr: p, width: A, height:
|
|
4453
|
+
const a = Bt(s), b = [-99999, 99999];
|
|
4454
|
+
qt(l?.[0]) && (b[0] = l[0]), qt(l?.[1]) && (b[1] = l[1]);
|
|
4455
|
+
const { grayArr: p, width: A, height: y } = await it(
|
|
4597
4456
|
o,
|
|
4598
|
-
|
|
4457
|
+
b,
|
|
4599
4458
|
void 0,
|
|
4600
4459
|
u,
|
|
4601
4460
|
{ signal: n.signal }
|
|
4602
4461
|
), { uniqueThresholds: v, colorMap: B } = Ee(d, h), N = [];
|
|
4603
|
-
for (let R = 0; R <
|
|
4462
|
+
for (let R = 0; R < y; R++) {
|
|
4604
4463
|
N[R] = [];
|
|
4605
4464
|
for (let S = 0; S < A; S++)
|
|
4606
4465
|
N[R][S] = p[R * A + S];
|
|
4607
4466
|
}
|
|
4608
|
-
const E = ur(N, A,
|
|
4609
|
-
for (let R = 0; R <
|
|
4467
|
+
const E = ur(N, A, y), L = [], X = [];
|
|
4468
|
+
for (let R = 0; R < y; R++) {
|
|
4610
4469
|
L[R] = [], X[R] = [];
|
|
4611
4470
|
for (let S = 0; S < A; S++) {
|
|
4612
4471
|
const z = N[R] && typeof N[R][S] < "u" ? N[R][S] : void 0;
|
|
@@ -4617,7 +4476,7 @@ async function Gt(n) {
|
|
|
4617
4476
|
}
|
|
4618
4477
|
return {
|
|
4619
4478
|
width: A,
|
|
4620
|
-
height:
|
|
4479
|
+
height: y,
|
|
4621
4480
|
extent: a,
|
|
4622
4481
|
rawArr2D: L,
|
|
4623
4482
|
smoothArr2D: X,
|
|
@@ -4632,12 +4491,16 @@ async function Gt(n) {
|
|
|
4632
4491
|
Jt.delete(e);
|
|
4633
4492
|
}
|
|
4634
4493
|
}
|
|
4635
|
-
function
|
|
4494
|
+
function zn(n, e, t) {
|
|
4636
4495
|
const r = n[2] - n[0], i = n[3] - n[1], o = r / i;
|
|
4637
4496
|
let u = e, s = Math.round(u / o);
|
|
4638
4497
|
return s > t && (s = t, u = Math.round(s * o)), { width: u, height: s };
|
|
4639
4498
|
}
|
|
4640
|
-
function
|
|
4499
|
+
function Yr(n, e) {
|
|
4500
|
+
const t = Bt(n), { width: r, height: i } = zn(t, e, e);
|
|
4501
|
+
return { bbox: t, width: r, height: i };
|
|
4502
|
+
}
|
|
4503
|
+
function qn(n, e, t) {
|
|
4641
4504
|
const r = (E) => {
|
|
4642
4505
|
if (Array.isArray(E) && E.length >= 2) {
|
|
4643
4506
|
const L = Number(E[0]), X = Number(E[1]);
|
|
@@ -4647,20 +4510,20 @@ function kn(n, e, t) {
|
|
|
4647
4510
|
const L = E.split(",").map((X) => Number(X.trim())).filter((X) => Number.isFinite(X));
|
|
4648
4511
|
if (L.length >= 2) return [L[0], L[1]];
|
|
4649
4512
|
}
|
|
4650
|
-
}, i = ye(), o = Number(t?.imageSize ?? i.imageSize), u = Number.isFinite(o) && o > 0 ? Math.round(o) : i.imageSize,
|
|
4651
|
-
let A =
|
|
4513
|
+
}, i = ye(), o = Number(t?.imageSize ?? i.imageSize), u = Number.isFinite(o) && o > 0 ? Math.round(o) : i.imageSize, { bbox: s, width: l, height: d } = Yr(n.config.extent, u), h = n?.config?.layerConfig ?? {}, a = h.LAYERS, b = r(n?.config?.scope) ?? [0, 0], p = r(n?.config?.componentScope) ?? r(n?.config?.uvScope) ?? r(h.COMPONENT_SCALE_RANGE) ?? r(h.COMPONENT_SCOPE) ?? r(h.UV_SCOPE);
|
|
4514
|
+
let A = b;
|
|
4652
4515
|
if (gr(a) && a.length > 1)
|
|
4653
4516
|
if (p) {
|
|
4654
4517
|
const E = Math.max(Math.abs(p[0]), Math.abs(p[1]));
|
|
4655
4518
|
A = [-E, E];
|
|
4656
4519
|
} else {
|
|
4657
|
-
const E = Number(
|
|
4520
|
+
const E = Number(b[0]), L = Number(b[1]);
|
|
4658
4521
|
if (Number.isFinite(E) && Number.isFinite(L)) {
|
|
4659
4522
|
const X = Math.max(Math.abs(E), Math.abs(L));
|
|
4660
4523
|
A = [-X, X];
|
|
4661
4524
|
}
|
|
4662
4525
|
}
|
|
4663
|
-
const
|
|
4526
|
+
const y = A.toString(), v = String(
|
|
4664
4527
|
t?.serviceBaseUrl ?? n?.serviceBaseUrl ?? n?.config?.serviceBaseUrl ?? i.serviceBaseUrl
|
|
4665
4528
|
).replace(/\/$/, ""), B = String(n.url || "").replace(/^\/+/, ""), N = `${v}/wms/${B}`;
|
|
4666
4529
|
if (gr(a)) {
|
|
@@ -4669,7 +4532,7 @@ function kn(n, e, t) {
|
|
|
4669
4532
|
const X = {
|
|
4670
4533
|
...h,
|
|
4671
4534
|
TIME: Je(e).utc().format("YYYY-MM-DDTHH:mm:ss.000[Z]"),
|
|
4672
|
-
COLORSCALERANGE:
|
|
4535
|
+
COLORSCALERANGE: y,
|
|
4673
4536
|
BBOX: s.join(","),
|
|
4674
4537
|
WIDTH: "" + l,
|
|
4675
4538
|
HEIGHT: "" + d
|
|
@@ -4680,7 +4543,7 @@ function kn(n, e, t) {
|
|
|
4680
4543
|
const E = {
|
|
4681
4544
|
...h,
|
|
4682
4545
|
TIME: Je(e).utc().format("YYYY-MM-DDTHH:mm:ss.000[Z]"),
|
|
4683
|
-
COLORSCALERANGE:
|
|
4546
|
+
COLORSCALERANGE: y,
|
|
4684
4547
|
BBOX: s.join(","),
|
|
4685
4548
|
WIDTH: "" + l,
|
|
4686
4549
|
HEIGHT: "" + d
|
|
@@ -4688,7 +4551,7 @@ function kn(n, e, t) {
|
|
|
4688
4551
|
return `${N}?${new URLSearchParams(E).toString()}`;
|
|
4689
4552
|
}
|
|
4690
4553
|
}
|
|
4691
|
-
function
|
|
4554
|
+
function Ri(n, e, t, r) {
|
|
4692
4555
|
if (!e || e.length === 0) return [0, 0, 0, 0];
|
|
4693
4556
|
if (r === "discrete" || r === "grid") {
|
|
4694
4557
|
let i = e[0];
|
|
@@ -4711,12 +4574,159 @@ function Ii(n, e, t, r) {
|
|
|
4711
4574
|
i = A;
|
|
4712
4575
|
break;
|
|
4713
4576
|
}
|
|
4714
|
-
const o = e[i], u = e[i + 1], s = (n - o) / (u - o), l = t[i], d = t[i + 1], h = Math.round(Nt(l[0], d[0], s)), a = Math.round(Nt(l[1], d[1], s)),
|
|
4715
|
-
return [h, a,
|
|
4577
|
+
const o = e[i], u = e[i + 1], s = (n - o) / (u - o), l = t[i], d = t[i + 1], h = Math.round(Nt(l[0], d[0], s)), a = Math.round(Nt(l[1], d[1], s)), b = Math.round(Nt(l[2], d[2], s)), p = Math.round(Nt(l[3] ?? 255, d[3] ?? 255, s));
|
|
4578
|
+
return [h, a, b, p];
|
|
4716
4579
|
}
|
|
4717
4580
|
}
|
|
4718
|
-
|
|
4719
|
-
function
|
|
4581
|
+
const Vn = new On({ attributePrefix: "" });
|
|
4582
|
+
function $t(n, e) {
|
|
4583
|
+
const t = Vn.xml2js(n);
|
|
4584
|
+
if (!e) return t;
|
|
4585
|
+
const r = t?.catalog?.dataset?.[e];
|
|
4586
|
+
return r === void 0 || Array.isArray(r) ? r : [r];
|
|
4587
|
+
}
|
|
4588
|
+
function Gn(n) {
|
|
4589
|
+
const e = $t(n), t = e?.gridDataset;
|
|
4590
|
+
if (!t) {
|
|
4591
|
+
const u = Object.keys(e || {}).join(", ") || "none";
|
|
4592
|
+
throw new Error("Invalid NCSS dataset XML: expected gridDataset root, received: " + u);
|
|
4593
|
+
}
|
|
4594
|
+
const r = t.gridSet?.grid;
|
|
4595
|
+
if (!r)
|
|
4596
|
+
throw new Error("Invalid NCSS dataset XML: gridDataset.gridSet.grid is missing");
|
|
4597
|
+
let i = r;
|
|
4598
|
+
an(i) && (i = [i]);
|
|
4599
|
+
const o = Array.isArray(t.axis) ? t.axis : [t.axis].filter(Boolean);
|
|
4600
|
+
return {
|
|
4601
|
+
latLonBox: t.LatLonBox,
|
|
4602
|
+
timeSpan: t.TimeSpan,
|
|
4603
|
+
axis: o,
|
|
4604
|
+
grid: i
|
|
4605
|
+
};
|
|
4606
|
+
}
|
|
4607
|
+
function kn(n) {
|
|
4608
|
+
const e = String(n || "").split("."), t = e[e.length - 1]?.toLowerCase() || "other";
|
|
4609
|
+
return [
|
|
4610
|
+
"png",
|
|
4611
|
+
"jpg",
|
|
4612
|
+
"jpeg",
|
|
4613
|
+
"xlsx",
|
|
4614
|
+
"xls",
|
|
4615
|
+
"csv",
|
|
4616
|
+
"txt",
|
|
4617
|
+
"json",
|
|
4618
|
+
"geojson",
|
|
4619
|
+
"grb",
|
|
4620
|
+
"grib1",
|
|
4621
|
+
"grib2",
|
|
4622
|
+
"grb2",
|
|
4623
|
+
"gr2",
|
|
4624
|
+
"nc"
|
|
4625
|
+
].includes(t) ? t : "other";
|
|
4626
|
+
}
|
|
4627
|
+
function xr(n) {
|
|
4628
|
+
const { xmlJson: e, type: t } = n;
|
|
4629
|
+
return e.map((r) => t === "menu" ? {
|
|
4630
|
+
label: r["xlink:title"],
|
|
4631
|
+
key: r.ID,
|
|
4632
|
+
url: r.ID,
|
|
4633
|
+
type: t,
|
|
4634
|
+
isLeaf: !1
|
|
4635
|
+
} : {
|
|
4636
|
+
label: r.name,
|
|
4637
|
+
key: r.ID,
|
|
4638
|
+
url: r.urlPath,
|
|
4639
|
+
type: t,
|
|
4640
|
+
isLeaf: !0,
|
|
4641
|
+
fileType: kn(r.name)
|
|
4642
|
+
});
|
|
4643
|
+
}
|
|
4644
|
+
async function Qn(n, e, t, r, i, o, u) {
|
|
4645
|
+
const s = ye(), l = [
|
|
4646
|
+
t.west,
|
|
4647
|
+
t.south,
|
|
4648
|
+
t.east,
|
|
4649
|
+
t.north
|
|
4650
|
+
], { width: d, height: h } = Yr(l, s.imageSize), a = new URLSearchParams({
|
|
4651
|
+
service: "WMS",
|
|
4652
|
+
version: "1.3.0",
|
|
4653
|
+
request: "GetMetadata",
|
|
4654
|
+
item: "minmax",
|
|
4655
|
+
layers: e,
|
|
4656
|
+
styles: "",
|
|
4657
|
+
CRS: "EPSG:4326",
|
|
4658
|
+
BBOX: [t.south, t.west, t.north, t.east].join(","),
|
|
4659
|
+
time: r || "",
|
|
4660
|
+
width: String(d),
|
|
4661
|
+
height: String(h)
|
|
4662
|
+
}), b = o ?? s.serviceBaseUrl, p = String(n).replace(/^\/+/, ""), A = await or("wms/" + p + "?" + a.toString(), {
|
|
4663
|
+
baseUrl: b,
|
|
4664
|
+
authorization: i,
|
|
4665
|
+
signal: u
|
|
4666
|
+
}), y = (A.headers.get("content-type") || "").toLowerCase();
|
|
4667
|
+
if (!y.includes("json")) {
|
|
4668
|
+
const v = await A.text();
|
|
4669
|
+
throw new Error(
|
|
4670
|
+
"WMS min/max response has invalid content type: " + (y || "unknown") + "; " + v.slice(0, 240)
|
|
4671
|
+
);
|
|
4672
|
+
}
|
|
4673
|
+
return await A.json();
|
|
4674
|
+
}
|
|
4675
|
+
async function jn(n, e, t = {}) {
|
|
4676
|
+
try {
|
|
4677
|
+
const r = String(n).replace(/^\/+|\/+$/g, ""), i = await kr("catalog/" + r + "/catalog.xml", e, {
|
|
4678
|
+
baseUrl: t.serviceBaseUrl,
|
|
4679
|
+
signal: t.signal
|
|
4680
|
+
}), o = $t(i, "catalogRef"), u = $t(i, "dataset"), s = [];
|
|
4681
|
+
let l = "";
|
|
4682
|
+
return o?.length && (s.push(...xr({ xmlJson: o, type: "menu" })), l = "menu"), u?.length && (s.push(...xr({ xmlJson: u, type: "file" })), l = "file"), { type: l, data: s };
|
|
4683
|
+
} catch {
|
|
4684
|
+
return;
|
|
4685
|
+
}
|
|
4686
|
+
}
|
|
4687
|
+
async function Nr(n) {
|
|
4688
|
+
const e = ye(), t = n.authorization ?? e.serviceAuthorization, r = n.serviceBaseUrl ?? e.serviceBaseUrl;
|
|
4689
|
+
let i = n.filePath, o;
|
|
4690
|
+
for (let v = 0; v < 6; v++) {
|
|
4691
|
+
if (o = await jn(i, t, {
|
|
4692
|
+
serviceBaseUrl: r,
|
|
4693
|
+
signal: n.signal
|
|
4694
|
+
}), !o?.data.length) return;
|
|
4695
|
+
if (o.data.reverse(), o.type === "file") break;
|
|
4696
|
+
if (o.type !== "menu" || !o.data[0]?.url) return;
|
|
4697
|
+
i = o.data[0].url;
|
|
4698
|
+
}
|
|
4699
|
+
if (!o?.data.length || o.type !== "file") return;
|
|
4700
|
+
const u = o.data[0];
|
|
4701
|
+
if (!u) return;
|
|
4702
|
+
const s = n.url || u.url || i + "/" + u.label, l = "/" + String(s).replace(/^\/+/, ""), d = n.ncssBaseUrl ?? e.ncssBaseUrl, h = await Cn(
|
|
4703
|
+
d.replace(/\/$/, "") + l + "/dataset.xml",
|
|
4704
|
+
t,
|
|
4705
|
+
{ baseUrl: r, signal: n.signal }
|
|
4706
|
+
), { latLonBox: a, timeSpan: b, axis: p } = Gn(h), A = p.find((v) => v.name === "time"), y = [];
|
|
4707
|
+
if (A && b?.begin) {
|
|
4708
|
+
const v = Number(A.values?.npts), B = String(
|
|
4709
|
+
A.attribute?.find((L) => L.name === "units")?.value || ""
|
|
4710
|
+
).toLowerCase(), N = B.includes("hour") ? "hour" : B.includes("minute") ? "minute" : "second", E = Number(A.values?.resolution);
|
|
4711
|
+
if (v > 1 && Number.isFinite(E) && E !== 0)
|
|
4712
|
+
for (let L = 0; L < v; L++)
|
|
4713
|
+
y.push(
|
|
4714
|
+
Je(b.begin).add(L * E, N).format("YYYYMMDDHHmmss")
|
|
4715
|
+
);
|
|
4716
|
+
else
|
|
4717
|
+
y.push(Je(b.begin).format("YYYYMMDDHHmmss"));
|
|
4718
|
+
}
|
|
4719
|
+
return {
|
|
4720
|
+
type: "file",
|
|
4721
|
+
latLonBox: a,
|
|
4722
|
+
timeList: y,
|
|
4723
|
+
fileList: o.data,
|
|
4724
|
+
url: l,
|
|
4725
|
+
authorization: t
|
|
4726
|
+
};
|
|
4727
|
+
}
|
|
4728
|
+
Je.extend(zr);
|
|
4729
|
+
function Pr(n, e) {
|
|
4720
4730
|
if (n && typeof n == "object") {
|
|
4721
4731
|
const t = n, r = {
|
|
4722
4732
|
north: Number(t.north),
|
|
@@ -4735,19 +4745,19 @@ function Qn(n, e) {
|
|
|
4735
4745
|
function Wn(n) {
|
|
4736
4746
|
return (Array.isArray(n) ? n : [n]).map((e) => String(e ?? "").trim()).filter(Boolean);
|
|
4737
4747
|
}
|
|
4738
|
-
async function
|
|
4748
|
+
async function Un(n, e, t, r, i, o) {
|
|
4739
4749
|
const u = n.config?.scope, s = Number(u?.[0]), l = Number(u?.[1]), d = Number.isFinite(s), h = Number.isFinite(l);
|
|
4740
4750
|
if (d && h) return [s, l];
|
|
4741
|
-
const a = Wn(n.config?.layerConfig?.LAYERS),
|
|
4751
|
+
const a = Wn(n.config?.layerConfig?.LAYERS), b = Pr(void 0, n.config?.extent) ?? Pr(i);
|
|
4742
4752
|
if (!a.length) throw new Error('Layer "' + n.id + '" has no WMS LAYERS setting');
|
|
4743
|
-
if (!
|
|
4744
|
-
const p = ye(), A = n.serviceBaseUrl ?? o.serviceBaseUrl ?? p.serviceBaseUrl,
|
|
4753
|
+
if (!b) throw new Error('Layer "' + n.id + '" has no valid extent');
|
|
4754
|
+
const p = ye(), A = n.serviceBaseUrl ?? o.serviceBaseUrl ?? p.serviceBaseUrl, y = t ? Je(t).utc().format("YYYY-MM-DDTHH:mm:ss.000[Z]") : void 0, v = await Promise.all(
|
|
4745
4755
|
a.map(
|
|
4746
|
-
(X) =>
|
|
4756
|
+
(X) => Qn(
|
|
4747
4757
|
e,
|
|
4748
4758
|
X,
|
|
4749
|
-
|
|
4750
|
-
|
|
4759
|
+
b,
|
|
4760
|
+
y,
|
|
4751
4761
|
r,
|
|
4752
4762
|
A,
|
|
4753
4763
|
o.signal
|
|
@@ -4758,19 +4768,19 @@ async function jn(n, e, t, r, i, o) {
|
|
|
4758
4768
|
throw new Error('Invalid WMS min/max response for layer "' + n.id + '"');
|
|
4759
4769
|
return [E, L];
|
|
4760
4770
|
}
|
|
4761
|
-
async function
|
|
4771
|
+
async function zi(n, e = {}) {
|
|
4762
4772
|
if ((Array.isArray(n.type) ? n.type : [n.type]).includes("typhoon")) return { ...n, show: !0 };
|
|
4763
4773
|
const r = ye();
|
|
4764
4774
|
let i = n.url, o = n.time, u = n.authorization ?? e.authorization ?? r.serviceAuthorization, s;
|
|
4765
4775
|
if (!i) {
|
|
4766
|
-
let a = await
|
|
4776
|
+
let a = await Nr({
|
|
4767
4777
|
filePath: n.filePath,
|
|
4768
4778
|
authorization: u,
|
|
4769
4779
|
serviceBaseUrl: n.serviceBaseUrl ?? e.serviceBaseUrl,
|
|
4770
4780
|
ncssBaseUrl: e.ncssBaseUrl,
|
|
4771
4781
|
signal: e.signal
|
|
4772
4782
|
});
|
|
4773
|
-
if (!a?.fileList?.length && n.fallbackFilePath && (a = await
|
|
4783
|
+
if (!a?.fileList?.length && n.fallbackFilePath && (a = await Nr({
|
|
4774
4784
|
filePath: n.fallbackFilePath,
|
|
4775
4785
|
authorization: n.fallbackAuthorization ?? u,
|
|
4776
4786
|
serviceBaseUrl: n.serviceBaseUrl ?? e.serviceBaseUrl,
|
|
@@ -4780,7 +4790,7 @@ async function Ri(n, e = {}) {
|
|
|
4780
4790
|
i = a.url ?? a.fileList[0]?.url, o = o ?? a.timeList[0], u = a.authorization ?? u, s = a.latLonBox;
|
|
4781
4791
|
}
|
|
4782
4792
|
if (!i) return null;
|
|
4783
|
-
const l = await
|
|
4793
|
+
const l = await Un(
|
|
4784
4794
|
n,
|
|
4785
4795
|
i,
|
|
4786
4796
|
o,
|
|
@@ -4793,7 +4803,7 @@ async function Ri(n, e = {}) {
|
|
|
4793
4803
|
show: !0,
|
|
4794
4804
|
time: o,
|
|
4795
4805
|
authorization: u,
|
|
4796
|
-
url:
|
|
4806
|
+
url: qn({ ...d, url: i }, o ?? "", { serviceBaseUrl: h })
|
|
4797
4807
|
};
|
|
4798
4808
|
}
|
|
4799
4809
|
let Pt = null;
|
|
@@ -4807,7 +4817,7 @@ function kt(n, e, t) {
|
|
|
4807
4817
|
}
|
|
4808
4818
|
return i;
|
|
4809
4819
|
}
|
|
4810
|
-
function
|
|
4820
|
+
function Yn(n, e, t) {
|
|
4811
4821
|
const r = n * e, i = new Uint8Array(r);
|
|
4812
4822
|
for (let o = 0; o < e; o++)
|
|
4813
4823
|
for (let u = 0; u < n; u++) {
|
|
@@ -4816,7 +4826,7 @@ function Un(n, e, t) {
|
|
|
4816
4826
|
}
|
|
4817
4827
|
return i;
|
|
4818
4828
|
}
|
|
4819
|
-
async function
|
|
4829
|
+
async function Jn() {
|
|
4820
4830
|
return Pt || (Pt = (async () => {
|
|
4821
4831
|
const n = navigator?.gpu;
|
|
4822
4832
|
if (!n) return null;
|
|
@@ -4824,7 +4834,7 @@ async function Yn() {
|
|
|
4824
4834
|
return e ? await e.requestDevice() : null;
|
|
4825
4835
|
})(), Pt);
|
|
4826
4836
|
}
|
|
4827
|
-
function
|
|
4837
|
+
function Zn() {
|
|
4828
4838
|
return `
|
|
4829
4839
|
struct Params {
|
|
4830
4840
|
width: u32,
|
|
@@ -4987,21 +4997,21 @@ function pt(n, e, t) {
|
|
|
4987
4997
|
});
|
|
4988
4998
|
return new Uint8Array(r.getMappedRange()).set(new Uint8Array(e)), r.unmap(), r;
|
|
4989
4999
|
}
|
|
4990
|
-
function
|
|
5000
|
+
function Jr(n) {
|
|
4991
5001
|
return typeof n < "u" && n !== null && Number.isFinite(Number(n));
|
|
4992
5002
|
}
|
|
4993
|
-
function
|
|
4994
|
-
if (!
|
|
5003
|
+
function Tr(n, e) {
|
|
5004
|
+
if (!Jr(n)) return !1;
|
|
4995
5005
|
const t = Number(n);
|
|
4996
5006
|
if (t <= Ye / 10) return !1;
|
|
4997
5007
|
const r = e && typeof e[0] < "u", i = e && typeof e[1] < "u";
|
|
4998
5008
|
return !(r && t < Number(e[0]) || i && t > Number(e[1]));
|
|
4999
5009
|
}
|
|
5000
|
-
function
|
|
5010
|
+
function Kn(n, e, t) {
|
|
5001
5011
|
const r = Math.max(0, Math.min(1, (t - n) / (e - n)));
|
|
5002
5012
|
return r * r * (3 - 2 * r);
|
|
5003
5013
|
}
|
|
5004
|
-
function
|
|
5014
|
+
function _n(n, e, t, r) {
|
|
5005
5015
|
if (!e.length || !t.length) return [0, 0, 0, 0];
|
|
5006
5016
|
const i = Math.min(e.length, t.length) - 1;
|
|
5007
5017
|
if (i < 0) return [0, 0, 0, 0];
|
|
@@ -5024,7 +5034,7 @@ function Kn(n, e, t, r) {
|
|
|
5024
5034
|
for (let s = 0; s < i; s++) {
|
|
5025
5035
|
const l = e[s] ?? 0, d = e[s + 1] ?? l;
|
|
5026
5036
|
if (n < l || n > d) continue;
|
|
5027
|
-
const h = t[s] ?? [0, 0, 0, 0], a = t[s + 1] ?? h,
|
|
5037
|
+
const h = t[s] ?? [0, 0, 0, 0], a = t[s + 1] ?? h, b = Math.max(d - l, 1e-6), p = Math.max(0, Math.min(1, (n - l) / b));
|
|
5028
5038
|
return [
|
|
5029
5039
|
h[0] + (a[0] - h[0]) * p,
|
|
5030
5040
|
h[1] + (a[1] - h[1]) * p,
|
|
@@ -5034,7 +5044,7 @@ function Kn(n, e, t, r) {
|
|
|
5034
5044
|
}
|
|
5035
5045
|
return t[i] ?? [0, 0, 0, 0];
|
|
5036
5046
|
}
|
|
5037
|
-
function
|
|
5047
|
+
function $n(n) {
|
|
5038
5048
|
const {
|
|
5039
5049
|
width: e,
|
|
5040
5050
|
height: t,
|
|
@@ -5051,30 +5061,30 @@ function _n(n) {
|
|
|
5051
5061
|
h.width = e, h.height = t;
|
|
5052
5062
|
const a = h.getContext("2d");
|
|
5053
5063
|
if (!a) return null;
|
|
5054
|
-
const
|
|
5064
|
+
const b = a.createImageData(e, t), p = b.data;
|
|
5055
5065
|
for (let A = 0; A < t; A++)
|
|
5056
|
-
for (let
|
|
5057
|
-
const B = (A * e +
|
|
5058
|
-
if (!
|
|
5066
|
+
for (let y = 0; y < e; y++) {
|
|
5067
|
+
const B = (A * e + y) * 4, N = r?.[A]?.[y];
|
|
5068
|
+
if (!Tr(N, l)) {
|
|
5059
5069
|
p[B] = 0, p[B + 1] = 0, p[B + 2] = 0, p[B + 3] = 0;
|
|
5060
5070
|
continue;
|
|
5061
5071
|
}
|
|
5062
|
-
const E = i?.[A]?.[
|
|
5063
|
-
if (!
|
|
5072
|
+
const E = i?.[A]?.[y];
|
|
5073
|
+
if (!Jr(E)) {
|
|
5064
5074
|
p[B] = 0, p[B + 1] = 0, p[B + 2] = 0, p[B + 3] = 0;
|
|
5065
5075
|
continue;
|
|
5066
5076
|
}
|
|
5067
|
-
const L =
|
|
5077
|
+
const L = _n(Number(E), o, u, s);
|
|
5068
5078
|
let X = 0, R = 0;
|
|
5069
5079
|
for (let F = A - 1; F <= A + 1; F++)
|
|
5070
|
-
for (let M =
|
|
5071
|
-
F < 0 || M < 0 || F >= t || M >= e || (R += 1,
|
|
5072
|
-
const S = R ? X / R : 0, z = d ?
|
|
5080
|
+
for (let M = y - 1; M <= y + 1; M++)
|
|
5081
|
+
F < 0 || M < 0 || F >= t || M >= e || (R += 1, Tr(r?.[F]?.[M], l) && (X += 1));
|
|
5082
|
+
const S = R ? X / R : 0, z = d ? Kn(0.58, 0.9, S) : 1, C = L[3] ?? 255, P = Math.max(0, Math.min(255, Math.round(C * z)));
|
|
5073
5083
|
p[B] = Math.max(0, Math.min(255, Math.round(L[0] ?? 0))), p[B + 1] = Math.max(0, Math.min(255, Math.round(L[1] ?? 0))), p[B + 2] = Math.max(0, Math.min(255, Math.round(L[2] ?? 0))), p[B + 3] = P;
|
|
5074
5084
|
}
|
|
5075
|
-
return a.putImageData(
|
|
5085
|
+
return a.putImageData(b, 0, 0), h;
|
|
5076
5086
|
}
|
|
5077
|
-
function
|
|
5087
|
+
function Lr(n, e, t) {
|
|
5078
5088
|
const r = n.createShader(e);
|
|
5079
5089
|
if (!r) return null;
|
|
5080
5090
|
if (n.shaderSource(r, t), n.compileShader(r), !n.getShaderParameter(r, n.COMPILE_STATUS)) {
|
|
@@ -5083,8 +5093,8 @@ function Tr(n, e, t) {
|
|
|
5083
5093
|
}
|
|
5084
5094
|
return r;
|
|
5085
5095
|
}
|
|
5086
|
-
function
|
|
5087
|
-
const r =
|
|
5096
|
+
function eo(n, e, t) {
|
|
5097
|
+
const r = Lr(n, n.VERTEX_SHADER, e), i = Lr(n, n.FRAGMENT_SHADER, t);
|
|
5088
5098
|
if (!r || !i)
|
|
5089
5099
|
throw new Error("WebGL shader creation failed");
|
|
5090
5100
|
const o = n.createProgram();
|
|
@@ -5096,7 +5106,7 @@ function $n(n, e, t) {
|
|
|
5096
5106
|
}
|
|
5097
5107
|
return o;
|
|
5098
5108
|
}
|
|
5099
|
-
function
|
|
5109
|
+
function to(n) {
|
|
5100
5110
|
const {
|
|
5101
5111
|
width: e,
|
|
5102
5112
|
height: t,
|
|
@@ -5120,7 +5130,7 @@ function eo(n) {
|
|
|
5120
5130
|
preserveDrawingBuffer: !0
|
|
5121
5131
|
});
|
|
5122
5132
|
if (!a) return null;
|
|
5123
|
-
const
|
|
5133
|
+
const b = `#version 300 es
|
|
5124
5134
|
in vec2 a_position;
|
|
5125
5135
|
out vec2 v_uv;
|
|
5126
5136
|
void main() {
|
|
@@ -5244,12 +5254,12 @@ void main() {
|
|
|
5244
5254
|
outColor = vec4(c.rgb / 255.0, (c.a / 255.0) * edgeAlpha);
|
|
5245
5255
|
}`;
|
|
5246
5256
|
try {
|
|
5247
|
-
const A =
|
|
5257
|
+
const A = eo(a, b, p);
|
|
5248
5258
|
a.useProgram(A);
|
|
5249
|
-
const
|
|
5259
|
+
const y = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]), v = a.createBuffer();
|
|
5250
5260
|
if (!v)
|
|
5251
5261
|
return a.deleteProgram(A), null;
|
|
5252
|
-
a.bindBuffer(a.ARRAY_BUFFER, v), a.bufferData(a.ARRAY_BUFFER,
|
|
5262
|
+
a.bindBuffer(a.ARRAY_BUFFER, v), a.bufferData(a.ARRAY_BUFFER, y, a.STATIC_DRAW);
|
|
5253
5263
|
const B = a.getAttribLocation(A, "a_position");
|
|
5254
5264
|
if (B < 0)
|
|
5255
5265
|
return a.deleteBuffer(v), a.deleteProgram(A), null;
|
|
@@ -5263,7 +5273,7 @@ void main() {
|
|
|
5263
5273
|
const L = a.createTexture();
|
|
5264
5274
|
if (!L)
|
|
5265
5275
|
return a.deleteTexture(E), a.deleteTexture(N), a.deleteBuffer(v), a.deleteProgram(A), null;
|
|
5266
|
-
const X = kt(e, t, i), R = kt(e, t, r), S =
|
|
5276
|
+
const X = kt(e, t, i), R = kt(e, t, r), S = Yn(e, t, r);
|
|
5267
5277
|
a.activeTexture(a.TEXTURE0), a.bindTexture(a.TEXTURE_2D, N), a.pixelStorei(a.UNPACK_ALIGNMENT, 1), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.NEAREST), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.NEAREST), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_S, a.CLAMP_TO_EDGE), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_T, a.CLAMP_TO_EDGE), a.texImage2D(a.TEXTURE_2D, 0, a.R32F, e, t, 0, a.RED, a.FLOAT, X), a.activeTexture(a.TEXTURE1), a.bindTexture(a.TEXTURE_2D, E), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.NEAREST), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.NEAREST), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_S, a.CLAMP_TO_EDGE), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_T, a.CLAMP_TO_EDGE), a.texImage2D(a.TEXTURE_2D, 0, a.R32F, e, t, 0, a.RED, a.FLOAT, R), a.activeTexture(a.TEXTURE2), a.bindTexture(a.TEXTURE_2D, L), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.LINEAR), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_S, a.CLAMP_TO_EDGE), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_T, a.CLAMP_TO_EDGE), a.texImage2D(
|
|
5268
5278
|
a.TEXTURE_2D,
|
|
5269
5279
|
0,
|
|
@@ -5276,10 +5286,10 @@ void main() {
|
|
|
5276
5286
|
S
|
|
5277
5287
|
);
|
|
5278
5288
|
const z = new Float32Array(Ue), C = new Float32Array(Ue * 4), P = Math.min(o.length, Ue);
|
|
5279
|
-
for (let
|
|
5280
|
-
z[
|
|
5281
|
-
const
|
|
5282
|
-
C[T] =
|
|
5289
|
+
for (let D = 0; D < P; D++) {
|
|
5290
|
+
z[D] = o[D] ?? 0;
|
|
5291
|
+
const w = u[D] ?? [0, 0, 0, 0], T = D * 4;
|
|
5292
|
+
C[T] = w[0], C[T + 1] = w[1], C[T + 2] = w[2], C[T + 3] = w[3] ?? 255;
|
|
5283
5293
|
}
|
|
5284
5294
|
const F = l && typeof l[0] < "u" ? Number(l[0]) : 0, M = l && typeof l[1] < "u" ? Number(l[1]) : 0, I = l && typeof l[0] < "u" ? 1 : 0, g = l && typeof l[1] < "u" ? 1 : 0;
|
|
5285
5295
|
return a.uniform1i(a.getUniformLocation(A, "u_values"), 0), a.uniform1i(a.getUniformLocation(A, "u_maskValues"), 1), a.uniform1i(a.getUniformLocation(A, "u_validMask"), 2), a.uniform1i(a.getUniformLocation(A, "u_thresholdCount"), P), a.uniform1i(a.getUniformLocation(A, "u_colorMode"), s === "gradient" ? 1 : 0), a.uniform1fv(a.getUniformLocation(A, "u_thresholds"), z), a.uniform4fv(a.getUniformLocation(A, "u_colors"), C), a.uniform1f(a.getUniformLocation(A, "u_minScope"), F), a.uniform1f(a.getUniformLocation(A, "u_maxScope"), M), a.uniform1i(a.getUniformLocation(A, "u_hasMin"), I), a.uniform1i(a.getUniformLocation(A, "u_hasMax"), g), a.uniform1i(a.getUniformLocation(A, "u_softenMaskEdge"), d ? 1 : 0), a.viewport(0, 0, e, t), a.clearColor(0, 0, 0, 0), a.clear(a.COLOR_BUFFER_BIT), a.drawArrays(a.TRIANGLE_STRIP, 0, 4), a.activeTexture(a.TEXTURE2), a.bindTexture(a.TEXTURE_2D, null), a.activeTexture(a.TEXTURE1), a.bindTexture(a.TEXTURE_2D, null), a.activeTexture(a.TEXTURE0), a.bindTexture(a.TEXTURE_2D, null), a.bindBuffer(a.ARRAY_BUFFER, null), a.deleteTexture(L), a.deleteTexture(N), a.deleteTexture(E), a.deleteBuffer(v), a.deleteProgram(A), h;
|
|
@@ -5287,7 +5297,7 @@ void main() {
|
|
|
5287
5297
|
return console.warn("[FcstLayer] WebGL2 渲染失败", A), null;
|
|
5288
5298
|
}
|
|
5289
5299
|
}
|
|
5290
|
-
async function
|
|
5300
|
+
async function ro(n) {
|
|
5291
5301
|
const {
|
|
5292
5302
|
width: e,
|
|
5293
5303
|
height: t,
|
|
@@ -5301,19 +5311,19 @@ async function to(n) {
|
|
|
5301
5311
|
} = n;
|
|
5302
5312
|
if (!e || !t || !o.length || !u.length) return null;
|
|
5303
5313
|
try {
|
|
5304
|
-
const h = await
|
|
5314
|
+
const h = await Jn();
|
|
5305
5315
|
if (!h) return null;
|
|
5306
5316
|
h.pushErrorScope("validation");
|
|
5307
|
-
const a = e * t,
|
|
5317
|
+
const a = e * t, b = kt(e, t, i), p = kt(e, t, r), A = new Float32Array(o), y = new Float32Array(A.length * 4);
|
|
5308
5318
|
for (let K = 0; K < A.length; K++) {
|
|
5309
5319
|
const Z = u[K] ?? [0, 0, 0, 0], U = K * 4;
|
|
5310
|
-
|
|
5320
|
+
y[U] = Z[0], y[U + 1] = Z[1], y[U + 2] = Z[2], y[U + 3] = Z[3] ?? 255;
|
|
5311
5321
|
}
|
|
5312
5322
|
const v = l && typeof l[0] < "u" ? Number(l[0]) : 0, B = l && typeof l[1] < "u" ? Number(l[1]) : 0, N = l && typeof l[0] < "u" ? 1 : 0, E = l && typeof l[1] < "u" ? 1 : 0, L = new ArrayBuffer(48), X = new DataView(L);
|
|
5313
5323
|
X.setUint32(0, e, !0), X.setUint32(4, t, !0), X.setUint32(8, A.length, !0), X.setUint32(12, s === "gradient" ? 1 : 0, !0), X.setFloat32(16, v, !0), X.setFloat32(20, B, !0), X.setUint32(24, N, !0), X.setUint32(28, E, !0), X.setUint32(32, d ? 1 : 0, !0);
|
|
5314
5324
|
const R = globalThis.GPUBufferUsage, S = globalThis.GPUMapMode, z = pt(
|
|
5315
5325
|
h,
|
|
5316
|
-
|
|
5326
|
+
b.buffer,
|
|
5317
5327
|
R.STORAGE | R.COPY_DST
|
|
5318
5328
|
), C = pt(
|
|
5319
5329
|
h,
|
|
@@ -5325,7 +5335,7 @@ async function to(n) {
|
|
|
5325
5335
|
R.STORAGE | R.COPY_DST
|
|
5326
5336
|
), F = pt(
|
|
5327
5337
|
h,
|
|
5328
|
-
|
|
5338
|
+
y.buffer,
|
|
5329
5339
|
R.STORAGE | R.COPY_DST
|
|
5330
5340
|
), M = pt(
|
|
5331
5341
|
h,
|
|
@@ -5334,13 +5344,13 @@ async function to(n) {
|
|
|
5334
5344
|
), I = a * 4, g = h.createBuffer({
|
|
5335
5345
|
size: I,
|
|
5336
5346
|
usage: R.STORAGE | R.COPY_SRC
|
|
5337
|
-
}),
|
|
5347
|
+
}), D = h.createBuffer({
|
|
5338
5348
|
size: I,
|
|
5339
5349
|
usage: R.COPY_DST | R.MAP_READ
|
|
5340
|
-
}),
|
|
5350
|
+
}), w = h.createShaderModule({ code: Zn() }), T = h.createComputePipeline({
|
|
5341
5351
|
layout: "auto",
|
|
5342
5352
|
compute: {
|
|
5343
|
-
module:
|
|
5353
|
+
module: w,
|
|
5344
5354
|
entryPoint: "main"
|
|
5345
5355
|
}
|
|
5346
5356
|
}), O = h.createBindGroup({
|
|
@@ -5354,32 +5364,32 @@ async function to(n) {
|
|
|
5354
5364
|
{ binding: 5, resource: { buffer: g } }
|
|
5355
5365
|
]
|
|
5356
5366
|
}), H = h.createCommandEncoder(), G = H.beginComputePass();
|
|
5357
|
-
G.setPipeline(T), G.setBindGroup(0, O), G.dispatchWorkgroups(Math.ceil(a / 64)), G.end(), H.copyBufferToBuffer(g, 0,
|
|
5367
|
+
G.setPipeline(T), G.setBindGroup(0, O), G.dispatchWorkgroups(Math.ceil(a / 64)), G.end(), H.copyBufferToBuffer(g, 0, D, 0, I), h.queue.submit([H.finish()]);
|
|
5358
5368
|
const V = await h.popErrorScope();
|
|
5359
5369
|
if (V)
|
|
5360
|
-
return z.destroy(), C.destroy(), P.destroy(), F.destroy(), M.destroy(), g.destroy(),
|
|
5361
|
-
await
|
|
5362
|
-
const J =
|
|
5363
|
-
|
|
5364
|
-
const
|
|
5365
|
-
|
|
5366
|
-
const
|
|
5367
|
-
return
|
|
5370
|
+
return z.destroy(), C.destroy(), P.destroy(), F.destroy(), M.destroy(), g.destroy(), D.destroy(), console.warn("[FcstLayer] WebGPU validation error", V), null;
|
|
5371
|
+
await D.mapAsync(S.READ);
|
|
5372
|
+
const J = D.getMappedRange(), Y = new Uint8ClampedArray(J.slice(0));
|
|
5373
|
+
D.unmap();
|
|
5374
|
+
const j = document.createElement("canvas");
|
|
5375
|
+
j.width = e, j.height = t;
|
|
5376
|
+
const W = j.getContext("2d");
|
|
5377
|
+
return W ? (W.putImageData(new ImageData(Y, e, t), 0, 0), z.destroy(), C.destroy(), P.destroy(), F.destroy(), M.destroy(), g.destroy(), D.destroy(), j) : null;
|
|
5368
5378
|
} catch (h) {
|
|
5369
5379
|
return console.warn("[FcstLayer] WebGPU 渲染失败", h), null;
|
|
5370
5380
|
}
|
|
5371
5381
|
}
|
|
5372
|
-
async function
|
|
5373
|
-
const e =
|
|
5382
|
+
async function no(n) {
|
|
5383
|
+
const e = to(n);
|
|
5374
5384
|
if (e) return e;
|
|
5375
|
-
const t = await
|
|
5385
|
+
const t = await ro(n);
|
|
5376
5386
|
if (t)
|
|
5377
5387
|
return console.warn("[FcstLayer] 当前环境不支持 WebGL2,已自动使用 WebGPU"), t;
|
|
5378
|
-
const r =
|
|
5388
|
+
const r = $n(n);
|
|
5379
5389
|
return r ? (console.warn("[FcstLayer] GPU 渲染不可用,已自动回退到 Canvas2D CPU 渲染"), r) : (console.warn("[FcstLayer] 渲染不可用:WebGL2/WebGPU/Canvas2D 都不可用"), null);
|
|
5380
5390
|
}
|
|
5381
|
-
const Tt = 4,
|
|
5382
|
-
class
|
|
5391
|
+
const Tt = 4, oo = 12, io = 8;
|
|
5392
|
+
class Zr {
|
|
5383
5393
|
map;
|
|
5384
5394
|
options;
|
|
5385
5395
|
contourCache;
|
|
@@ -5418,7 +5428,7 @@ class Yr {
|
|
|
5418
5428
|
});
|
|
5419
5429
|
}
|
|
5420
5430
|
setCachedContourData(e, t) {
|
|
5421
|
-
for (this.contourCache.delete(e), this.contourCache.set(e, t); this.contourCache.size >
|
|
5431
|
+
for (this.contourCache.delete(e), this.contourCache.set(e, t); this.contourCache.size > oo; ) {
|
|
5422
5432
|
const r = this.contourCache.keys().next().value;
|
|
5423
5433
|
if (r === void 0) break;
|
|
5424
5434
|
this.contourCache.delete(r);
|
|
@@ -5437,7 +5447,7 @@ class Yr {
|
|
|
5437
5447
|
});
|
|
5438
5448
|
}
|
|
5439
5449
|
setCachedRasterRender(e, t) {
|
|
5440
|
-
for (this.rasterRenderCache.delete(e), this.rasterRenderCache.set(e, t); this.rasterRenderCache.size >
|
|
5450
|
+
for (this.rasterRenderCache.delete(e), this.rasterRenderCache.set(e, t); this.rasterRenderCache.size > io; ) {
|
|
5441
5451
|
const r = this.rasterRenderCache.keys().next().value;
|
|
5442
5452
|
if (r === void 0) break;
|
|
5443
5453
|
this.rasterRenderCache.delete(r);
|
|
@@ -5460,7 +5470,7 @@ class Yr {
|
|
|
5460
5470
|
async getSourceFromParams(e = this.options) {
|
|
5461
5471
|
const { config: t } = e, { mode: r, legend: i, legendScope: o } = t, u = await this.getOrLoadContourData(e);
|
|
5462
5472
|
if (!u || e?.signal?.aborted) return;
|
|
5463
|
-
const { rawArr2D: s, smoothArr2D: l, extent: d, width: h, height: a } = u,
|
|
5473
|
+
const { rawArr2D: s, smoothArr2D: l, extent: d, width: h, height: a } = u, b = this.getValueTransformFn(e), p = this.applyValueTransform2D(s, "raw", b), A = this.applyValueTransform2D(l, "smooth", b), { colorMap: y } = Ee(i), { colorMap: v } = Ee(i, o), B = wt(i, o) ?? t.scope;
|
|
5464
5474
|
return await this.getFcstRasterSource(
|
|
5465
5475
|
{
|
|
5466
5476
|
smoothArr2D: A,
|
|
@@ -5468,11 +5478,11 @@ class Yr {
|
|
|
5468
5478
|
extent: d,
|
|
5469
5479
|
width: h,
|
|
5470
5480
|
height: a,
|
|
5471
|
-
colorMap:
|
|
5481
|
+
colorMap: y,
|
|
5472
5482
|
selectedColorMap: v,
|
|
5473
5483
|
colorMode: r,
|
|
5474
5484
|
scope: B,
|
|
5475
|
-
rasterCacheKey: this.getRasterRenderCacheKey(e,
|
|
5485
|
+
rasterCacheKey: this.getRasterRenderCacheKey(e, y)
|
|
5476
5486
|
},
|
|
5477
5487
|
e
|
|
5478
5488
|
);
|
|
@@ -5486,14 +5496,14 @@ class Yr {
|
|
|
5486
5496
|
const o = (async () => {
|
|
5487
5497
|
const u = await Gt(e);
|
|
5488
5498
|
if (!u) return null;
|
|
5489
|
-
const { uniqueThresholds: s, rawArr2D: l, smoothArr2D: d, extent: h, width: a, height:
|
|
5499
|
+
const { uniqueThresholds: s, rawArr2D: l, smoothArr2D: d, extent: h, width: a, height: b } = u, p = {
|
|
5490
5500
|
schemaVersion: Tt,
|
|
5491
5501
|
uniqueThresholds: s,
|
|
5492
5502
|
rawArr2D: l,
|
|
5493
5503
|
smoothArr2D: d,
|
|
5494
5504
|
extent: h,
|
|
5495
5505
|
width: a,
|
|
5496
|
-
height:
|
|
5506
|
+
height: b
|
|
5497
5507
|
};
|
|
5498
5508
|
return this.setCachedContourData(t, p), p;
|
|
5499
5509
|
})();
|
|
@@ -5513,11 +5523,11 @@ class Yr {
|
|
|
5513
5523
|
if (!o) return null;
|
|
5514
5524
|
const { rawArr2D: u, smoothArr2D: s, extent: l, width: d, height: h } = o, a = r ? s : u;
|
|
5515
5525
|
if (!a || d <= 0 || h <= 0) return null;
|
|
5516
|
-
const
|
|
5517
|
-
if (
|
|
5518
|
-
const p =
|
|
5519
|
-
if (E <= 0 || L <= 0 || p <
|
|
5520
|
-
const X = (p -
|
|
5526
|
+
const b = rt([e, t]);
|
|
5527
|
+
if (b.length < 2) return null;
|
|
5528
|
+
const p = b[0], A = b[1], [y, v, B, N] = l, E = B - y, L = N - v;
|
|
5529
|
+
if (E <= 0 || L <= 0 || p < y || p > B || A < v || A > N) return null;
|
|
5530
|
+
const X = (p - y) / E * (d - 1), R = (N - A) / L * (h - 1), S = Math.max(0, Math.min(d - 1, Math.round(X))), z = Math.max(0, Math.min(h - 1, Math.round(R))), C = a?.[z]?.[S];
|
|
5521
5531
|
if (C == null || isNaN(Number(C))) return null;
|
|
5522
5532
|
const P = this.applyValueTransformValue(
|
|
5523
5533
|
Number(C),
|
|
@@ -5542,7 +5552,7 @@ class Yr {
|
|
|
5542
5552
|
if (!s || s.schemaVersion !== Tt)
|
|
5543
5553
|
return this.contourCache.delete(u), null;
|
|
5544
5554
|
this.contourCache.delete(u), this.contourCache.set(u, s);
|
|
5545
|
-
const { colorMap: l } = Ee(i), { colorMap: d } = Ee(i, o), h = this.getValueTransformFn(e), a = this.applyValueTransform2D(s.rawArr2D, "raw", h),
|
|
5555
|
+
const { colorMap: l } = Ee(i), { colorMap: d } = Ee(i, o), h = this.getValueTransformFn(e), a = this.applyValueTransform2D(s.rawArr2D, "raw", h), b = this.applyValueTransform2D(
|
|
5546
5556
|
s.smoothArr2D,
|
|
5547
5557
|
"smooth",
|
|
5548
5558
|
h
|
|
@@ -5551,7 +5561,7 @@ class Yr {
|
|
|
5551
5561
|
{
|
|
5552
5562
|
...s,
|
|
5553
5563
|
rawArr2D: a,
|
|
5554
|
-
smoothArr2D:
|
|
5564
|
+
smoothArr2D: b,
|
|
5555
5565
|
colorMap: l,
|
|
5556
5566
|
selectedColorMap: d,
|
|
5557
5567
|
colorMode: r,
|
|
@@ -5574,13 +5584,13 @@ class Yr {
|
|
|
5574
5584
|
selectedColorMap: d = l,
|
|
5575
5585
|
colorMode: h = "discrete",
|
|
5576
5586
|
scope: a,
|
|
5577
|
-
rasterCacheKey:
|
|
5587
|
+
rasterCacheKey: b = this.getRasterRenderCacheKey(t, l)
|
|
5578
5588
|
} = e, p = Object.keys(l).map((S) => Number(S)).filter((S) => !isNaN(S)).sort((S, z) => S - z), A = p.map((S) => zt(l[S]));
|
|
5579
|
-
let
|
|
5580
|
-
if (
|
|
5581
|
-
this.rasterRenderCache.delete(
|
|
5589
|
+
let y = this.rasterRenderCache.get(b);
|
|
5590
|
+
if (y)
|
|
5591
|
+
this.rasterRenderCache.delete(b), this.rasterRenderCache.set(b, y);
|
|
5582
5592
|
else {
|
|
5583
|
-
let S = this.rasterRenderLoadingTasks.get(
|
|
5593
|
+
let S = this.rasterRenderLoadingTasks.get(b);
|
|
5584
5594
|
S || (S = (async () => {
|
|
5585
5595
|
const z = t?.config?.alignWithIsoline === !0, C = t?.config?.isolineSmooth === !1 ? 0 : nt(t?.config?.isolineSmoothness), P = z ? Wr(r, u, s, C) : i, F = r, M = z && h !== "gradient" ? this.createIsolineContourFills(
|
|
5586
5596
|
P,
|
|
@@ -5592,7 +5602,7 @@ class Yr {
|
|
|
5592
5602
|
t
|
|
5593
5603
|
) : void 0;
|
|
5594
5604
|
let I;
|
|
5595
|
-
if (z && h !== "gradient" ? (I = document.createElement("canvas"), I.width = Math.max(1, Math.floor(u)), I.height = Math.max(1, Math.floor(s))) : I = await
|
|
5605
|
+
if (z && h !== "gradient" ? (I = document.createElement("canvas"), I.width = Math.max(1, Math.floor(u)), I.height = Math.max(1, Math.floor(s))) : I = await no({
|
|
5596
5606
|
width: Math.max(1, Math.floor(u)),
|
|
5597
5607
|
height: Math.max(1, Math.floor(s)),
|
|
5598
5608
|
rawArr2D: F,
|
|
@@ -5609,19 +5619,19 @@ class Yr {
|
|
|
5609
5619
|
renderValues: P,
|
|
5610
5620
|
contourFills: M
|
|
5611
5621
|
};
|
|
5612
|
-
return this.setCachedRasterRender(
|
|
5613
|
-
})(), this.rasterRenderLoadingTasks.set(
|
|
5622
|
+
return this.setCachedRasterRender(b, g), g;
|
|
5623
|
+
})(), this.rasterRenderLoadingTasks.set(b, S));
|
|
5614
5624
|
try {
|
|
5615
|
-
|
|
5625
|
+
y = await S ?? void 0;
|
|
5616
5626
|
} finally {
|
|
5617
|
-
this.rasterRenderLoadingTasks.get(
|
|
5627
|
+
this.rasterRenderLoadingTasks.get(b) === S && this.rasterRenderLoadingTasks.delete(b);
|
|
5618
5628
|
}
|
|
5619
5629
|
}
|
|
5620
|
-
if (!
|
|
5621
|
-
const v = Object.keys(d).map(Number).filter(Number.isFinite).sort((S, z) => S - z), B = new Set(v), N =
|
|
5630
|
+
if (!y) return null;
|
|
5631
|
+
const v = Object.keys(d).map(Number).filter(Number.isFinite).sort((S, z) => S - z), B = new Set(v), N = y.contourFills?.filter(
|
|
5622
5632
|
(S) => B.has(S.threshold)
|
|
5623
5633
|
), E = v[0], L = v[v.length - 1], X = typeof L == "number" && p.some((S) => S > L), R = typeof E == "number" && Number.isFinite(E) && typeof L == "number" && Number.isFinite(L) ? this.createLegendEdgeColorCanvas(
|
|
5624
|
-
|
|
5634
|
+
y.renderValues,
|
|
5625
5635
|
u,
|
|
5626
5636
|
s,
|
|
5627
5637
|
E,
|
|
@@ -5630,20 +5640,20 @@ class Yr {
|
|
|
5630
5640
|
zt(d[L])
|
|
5631
5641
|
) : void 0;
|
|
5632
5642
|
return this.createFcstCanvasSource(
|
|
5633
|
-
|
|
5643
|
+
y.canvas,
|
|
5634
5644
|
o,
|
|
5635
5645
|
h,
|
|
5636
|
-
|
|
5646
|
+
y.renderMask,
|
|
5637
5647
|
a,
|
|
5638
5648
|
t,
|
|
5639
5649
|
N,
|
|
5640
|
-
t?.config?.alignWithIsoline === !0 ?
|
|
5650
|
+
t?.config?.alignWithIsoline === !0 ? y.renderValues : void 0,
|
|
5641
5651
|
R,
|
|
5642
5652
|
X
|
|
5643
5653
|
);
|
|
5644
5654
|
}
|
|
5645
5655
|
getValueTransformFn(e = this.options) {
|
|
5646
|
-
return
|
|
5656
|
+
return jr(e?.config?.valueTransform);
|
|
5647
5657
|
}
|
|
5648
5658
|
applyValueTransformValue(e, t, r = this.getValueTransformFn()) {
|
|
5649
5659
|
if (!r) return e;
|
|
@@ -5692,12 +5702,12 @@ class Yr {
|
|
|
5692
5702
|
for (let l = 0; l < t; l++) {
|
|
5693
5703
|
const d = [], h = r.length;
|
|
5694
5704
|
for (let a = 0; a < h; a++) {
|
|
5695
|
-
const
|
|
5696
|
-
if (!
|
|
5697
|
-
const A =
|
|
5698
|
-
if (typeof A != "number" || typeof
|
|
5705
|
+
const b = r[a], p = r[(a + 1) % h];
|
|
5706
|
+
if (!b || !p) continue;
|
|
5707
|
+
const A = b[0], y = b[1], v = p[0], B = p[1];
|
|
5708
|
+
if (typeof A != "number" || typeof y != "number" || typeof v != "number" || typeof B != "number")
|
|
5699
5709
|
continue;
|
|
5700
|
-
const N = 0.75 * A + 0.25 * v, E = 0.75 *
|
|
5710
|
+
const N = 0.75 * A + 0.25 * v, E = 0.75 * y + 0.25 * B, L = 0.25 * A + 0.75 * v, X = 0.25 * y + 0.75 * B;
|
|
5701
5711
|
d.push([N, E], [L, X]);
|
|
5702
5712
|
}
|
|
5703
5713
|
if (r = d, r.length < 3) break;
|
|
@@ -5726,20 +5736,20 @@ class Yr {
|
|
|
5726
5736
|
if (!o) return null;
|
|
5727
5737
|
const s = this.getMaskSmoothIterations(u), l = t * r;
|
|
5728
5738
|
if (!l) return null;
|
|
5729
|
-
const d = i && typeof i[0] < "u", h = i && typeof i[1] < "u", a = d ? Number(i[0]) : 0,
|
|
5739
|
+
const d = i && typeof i[0] < "u", h = i && typeof i[1] < "u", a = d ? Number(i[0]) : 0, b = h ? Number(i[1]) : 0, p = new Float32Array(l);
|
|
5730
5740
|
let A = 0;
|
|
5731
5741
|
for (let E = 0; E < r; E++)
|
|
5732
5742
|
for (let L = 0; L < t; L++) {
|
|
5733
5743
|
const X = E * t + L, R = e?.[E]?.[L], S = R == null || isNaN(Number(R)) ? void 0 : Number(R);
|
|
5734
|
-
S !== void 0 && (!d || S >= a) && (!h || S <=
|
|
5744
|
+
S !== void 0 && (!d || S >= a) && (!h || S <= b) && (p[X] = 1, A += 1);
|
|
5735
5745
|
}
|
|
5736
5746
|
if (!A) return null;
|
|
5737
|
-
const
|
|
5747
|
+
const y = It().size([t, r]).thresholds([0.5])(
|
|
5738
5748
|
p
|
|
5739
5749
|
);
|
|
5740
|
-
if (!
|
|
5750
|
+
if (!y.length) return null;
|
|
5741
5751
|
const v = [];
|
|
5742
|
-
for (const E of
|
|
5752
|
+
for (const E of y) {
|
|
5743
5753
|
const L = E.coordinates ?? [];
|
|
5744
5754
|
for (const X of L)
|
|
5745
5755
|
v.push(X);
|
|
@@ -5767,29 +5777,29 @@ class Yr {
|
|
|
5767
5777
|
let d = 0;
|
|
5768
5778
|
for (let p = 0; p < r; p++) {
|
|
5769
5779
|
const A = e[p];
|
|
5770
|
-
for (let
|
|
5771
|
-
const v = A?.[
|
|
5772
|
-
l[p * t +
|
|
5780
|
+
for (let y = 0; y < t; y++) {
|
|
5781
|
+
const v = A?.[y], B = v !== void 0 && Number.isFinite(v) && v <= s;
|
|
5782
|
+
l[p * t + y] = B ? v : NaN, B && v >= u && (d += 1);
|
|
5773
5783
|
}
|
|
5774
5784
|
}
|
|
5775
5785
|
if (!d) return null;
|
|
5776
5786
|
const h = o?.config?.isolineSmooth === !1 ? 0 : nt(o?.config?.isolineSmoothness), a = It().size([t, r]).thresholds([u]).smooth(h > 0)(l);
|
|
5777
5787
|
if (!a.length) return null;
|
|
5778
|
-
const
|
|
5788
|
+
const b = new Path2D();
|
|
5779
5789
|
for (const p of a)
|
|
5780
5790
|
for (const A of p.coordinates ?? [])
|
|
5781
|
-
for (const
|
|
5782
|
-
const v =
|
|
5791
|
+
for (const y of A) {
|
|
5792
|
+
const v = y[0];
|
|
5783
5793
|
if (v) {
|
|
5784
|
-
|
|
5785
|
-
for (let B = 1; B <
|
|
5786
|
-
const N =
|
|
5787
|
-
N &&
|
|
5794
|
+
b.moveTo(v[0], v[1]);
|
|
5795
|
+
for (let B = 1; B < y.length; B++) {
|
|
5796
|
+
const N = y[B];
|
|
5797
|
+
N && b.lineTo(N[0], N[1]);
|
|
5788
5798
|
}
|
|
5789
|
-
|
|
5799
|
+
b.closePath();
|
|
5790
5800
|
}
|
|
5791
5801
|
}
|
|
5792
|
-
return
|
|
5802
|
+
return b;
|
|
5793
5803
|
}
|
|
5794
5804
|
createIsolineContourFills(e, t, r, i, o, u, s = this.options) {
|
|
5795
5805
|
const l = u && typeof u[0] < "u" ? Number(u[0]) : -1 / 0, d = u && typeof u[1] < "u" ? Number(u[1]) : 1 / 0, h = i.filter(
|
|
@@ -5804,12 +5814,12 @@ class Yr {
|
|
|
5804
5814
|
a[B * t + E] = L !== void 0 && Number.isFinite(L) ? L : NaN;
|
|
5805
5815
|
}
|
|
5806
5816
|
}
|
|
5807
|
-
const
|
|
5817
|
+
const b = s?.config?.isolineSmooth === !1 ? 0 : nt(s?.config?.isolineSmoothness), p = It().size([t, r]).thresholds(h).smooth(b > 0)(a), A = new globalThis.Map();
|
|
5808
5818
|
i.forEach((B, N) => {
|
|
5809
5819
|
const E = o[N];
|
|
5810
5820
|
E && A.set(B, E);
|
|
5811
5821
|
});
|
|
5812
|
-
const
|
|
5822
|
+
const y = (B, N) => {
|
|
5813
5823
|
for (const E of N.coordinates ?? [])
|
|
5814
5824
|
for (const L of E) {
|
|
5815
5825
|
const X = L[0];
|
|
@@ -5829,9 +5839,9 @@ class Yr {
|
|
|
5829
5839
|
const N = p[B], E = Number(N.value), L = A.get(E);
|
|
5830
5840
|
if (!L) continue;
|
|
5831
5841
|
const X = new Path2D();
|
|
5832
|
-
|
|
5842
|
+
y(X, N);
|
|
5833
5843
|
const R = p[B + 1];
|
|
5834
|
-
R &&
|
|
5844
|
+
R && y(X, R);
|
|
5835
5845
|
const S = Math.max(0, Math.min(1, (L[3] ?? 255) / 255));
|
|
5836
5846
|
v.push({
|
|
5837
5847
|
threshold: E,
|
|
@@ -5848,15 +5858,15 @@ class Yr {
|
|
|
5848
5858
|
h.width = Math.max(1, Math.floor(t)), h.height = Math.max(1, Math.floor(r));
|
|
5849
5859
|
const a = h.getContext("2d");
|
|
5850
5860
|
if (!a) return null;
|
|
5851
|
-
const
|
|
5861
|
+
const b = a.createImageData(h.width, h.height), p = b.data;
|
|
5852
5862
|
for (let A = 0; A < h.height; A++) {
|
|
5853
|
-
const
|
|
5863
|
+
const y = e[A];
|
|
5854
5864
|
for (let v = 0; v < h.width; v++) {
|
|
5855
|
-
const B =
|
|
5865
|
+
const B = y?.[v];
|
|
5856
5866
|
B === void 0 || !Number.isFinite(B) || B < l || (o ? B >= d : B > d) || (p[(A * h.width + v) * 4 + 3] = 255);
|
|
5857
5867
|
}
|
|
5858
5868
|
}
|
|
5859
|
-
return a.putImageData(
|
|
5869
|
+
return a.putImageData(b, 0, 0), h;
|
|
5860
5870
|
}
|
|
5861
5871
|
createLegendEdgeColorCanvas(e, t, r, i, o, u, s) {
|
|
5862
5872
|
const l = document.createElement("canvas");
|
|
@@ -5864,22 +5874,22 @@ class Yr {
|
|
|
5864
5874
|
const d = l.getContext("2d");
|
|
5865
5875
|
if (!d) return null;
|
|
5866
5876
|
const h = d.createImageData(l.width, l.height), a = h.data;
|
|
5867
|
-
for (let
|
|
5868
|
-
const p = e[
|
|
5877
|
+
for (let b = 0; b < l.height; b++) {
|
|
5878
|
+
const p = e[b];
|
|
5869
5879
|
for (let A = 0; A < l.width; A++) {
|
|
5870
|
-
const
|
|
5871
|
-
if (
|
|
5872
|
-
const v =
|
|
5880
|
+
const y = p?.[A];
|
|
5881
|
+
if (y === void 0 || !Number.isFinite(y)) continue;
|
|
5882
|
+
const v = y <= i ? u : y >= o ? s : void 0;
|
|
5873
5883
|
if (!v) continue;
|
|
5874
|
-
const B = (
|
|
5884
|
+
const B = (b * l.width + A) * 4;
|
|
5875
5885
|
a[B] = v[0], a[B + 1] = v[1], a[B + 2] = v[2], a[B + 3] = v[3];
|
|
5876
5886
|
}
|
|
5877
5887
|
}
|
|
5878
5888
|
return d.putImageData(h, 0, 0), l;
|
|
5879
5889
|
}
|
|
5880
5890
|
createFcstCanvasSource(e, t, r = "discrete", i, o, u = this.options, s, l, d, h = !1) {
|
|
5881
|
-
const a = document.createElement("canvas"),
|
|
5882
|
-
|
|
5891
|
+
const a = document.createElement("canvas"), b = r === "gradient", p = u?.config?.pixelSnap === !0, A = u?.config?.useDevicePixelRatio === !0, y = u?.config?.alignWithIsoline === !0, v = i ? this.createScopeMaskCanvas(
|
|
5892
|
+
y ? l ?? i : i,
|
|
5883
5893
|
e.width,
|
|
5884
5894
|
e.height,
|
|
5885
5895
|
o,
|
|
@@ -5889,25 +5899,25 @@ class Yr {
|
|
|
5889
5899
|
projection: "EPSG:3857",
|
|
5890
5900
|
ratio: 1,
|
|
5891
5901
|
// Avoid resampling across the validity edge when exact contour alignment is requested.
|
|
5892
|
-
interpolate:
|
|
5902
|
+
interpolate: b && !y,
|
|
5893
5903
|
canvasFunction: (N, E, L, X) => {
|
|
5894
5904
|
const R = A ? Math.max(1, L || 1) : 1, S = X ?? [1, 1], z = Math.max(1, Math.floor((S[0] ?? 1) * R)), C = Math.max(1, Math.floor((S[1] ?? 1) * R));
|
|
5895
5905
|
a.width !== z && (a.width = z), a.height !== C && (a.height = C);
|
|
5896
5906
|
const P = a.getContext("2d", { alpha: !0 });
|
|
5897
5907
|
if (!P) return a;
|
|
5898
5908
|
P.clearRect(0, 0, z, C);
|
|
5899
|
-
const [F, M, I, g] = N, [
|
|
5909
|
+
const [F, M, I, g] = N, [D, w, T, O] = t, H = I - F, G = g - M;
|
|
5900
5910
|
if (H <= 0 || G <= 0) return a;
|
|
5901
|
-
const V = z / H, J = C / G, Y = (
|
|
5902
|
-
if (
|
|
5903
|
-
const Z = p ? Math.floor(Y) : Y, U = p ? Math.floor(
|
|
5911
|
+
const V = z / H, J = C / G, Y = (D - F) * V, j = (g - O) * J, W = (T - D) * V, K = (O - w) * J;
|
|
5912
|
+
if (W <= 0 || K <= 0) return a;
|
|
5913
|
+
const Z = p ? Math.floor(Y) : Y, U = p ? Math.floor(j) : j, te = p ? Math.ceil(Y + W) : Y + W, se = p ? Math.ceil(j + K) : j + K, _ = Math.max(1, te - Z), $ = Math.max(1, se - U);
|
|
5904
5914
|
if (s?.length) {
|
|
5905
5915
|
P.save(), P.translate(Z, U), P.scale(_ / e.width, $ / e.height);
|
|
5906
5916
|
for (const ae of s)
|
|
5907
5917
|
P.fillStyle = ae.color, P.fill(ae.path, "evenodd");
|
|
5908
5918
|
return P.restore(), a;
|
|
5909
5919
|
}
|
|
5910
|
-
return P.imageSmoothingEnabled =
|
|
5920
|
+
return P.imageSmoothingEnabled = b && !y, b && !y && (P.imageSmoothingQuality = "high"), P.drawImage(e, Z, U, _, $), d && (P.save(), P.globalCompositeOperation = "source-atop", P.imageSmoothingEnabled = b && !y, b && !y && (P.imageSmoothingQuality = "high"), P.drawImage(d, Z, U, _, $), P.restore()), v && (P.save(), P.globalCompositeOperation = "destination-in", P.imageSmoothingEnabled = b && !y, b && !y && (P.imageSmoothingQuality = "high"), P.drawImage(v, Z, U, _, $), P.restore()), a;
|
|
5911
5921
|
}
|
|
5912
5922
|
});
|
|
5913
5923
|
}
|
|
@@ -5962,19 +5972,19 @@ class Yr {
|
|
|
5962
5972
|
}
|
|
5963
5973
|
}
|
|
5964
5974
|
const Lt = 1, Et = new globalThis.Map();
|
|
5965
|
-
function
|
|
5975
|
+
function Fr(n, e) {
|
|
5966
5976
|
Et.set(n, e);
|
|
5967
5977
|
}
|
|
5968
5978
|
function sr(n) {
|
|
5969
5979
|
return Et.get(n);
|
|
5970
5980
|
}
|
|
5971
|
-
function
|
|
5981
|
+
function uo(n) {
|
|
5972
5982
|
Et.delete(n);
|
|
5973
5983
|
}
|
|
5974
|
-
function
|
|
5984
|
+
function so(n) {
|
|
5975
5985
|
Et.forEach((e) => n(e));
|
|
5976
5986
|
}
|
|
5977
|
-
function
|
|
5987
|
+
function ao() {
|
|
5978
5988
|
Et.clear();
|
|
5979
5989
|
}
|
|
5980
5990
|
class Zt {
|
|
@@ -6071,14 +6081,14 @@ class Zt {
|
|
|
6071
6081
|
interpolateValue(e, t, r, i, o) {
|
|
6072
6082
|
const u = Math.floor(i), s = Math.ceil(i), l = Math.floor(o), d = Math.ceil(o);
|
|
6073
6083
|
if (u < 0 || s >= t || l < 0 || d >= r) return null;
|
|
6074
|
-
const h = Number(e[l]?.[u]), a = Number(e[l]?.[s]),
|
|
6075
|
-
if (![h, a,
|
|
6076
|
-
const A = i - u,
|
|
6077
|
-
return h * (1 - A) * (1 -
|
|
6084
|
+
const h = Number(e[l]?.[u]), a = Number(e[l]?.[s]), b = Number(e[d]?.[u]), p = Number(e[d]?.[s]);
|
|
6085
|
+
if (![h, a, b, p].every((v) => Number.isFinite(v))) return null;
|
|
6086
|
+
const A = i - u, y = o - l;
|
|
6087
|
+
return h * (1 - A) * (1 - y) + a * A * (1 - y) + b * (1 - A) * y + p * A * y;
|
|
6078
6088
|
}
|
|
6079
6089
|
getValueTransformFn() {
|
|
6080
6090
|
const e = this.getRuntimeConfig();
|
|
6081
|
-
return
|
|
6091
|
+
return jr(e?.valueTransform);
|
|
6082
6092
|
}
|
|
6083
6093
|
applyValueTransformValue(e, t) {
|
|
6084
6094
|
const r = this.getValueTransformFn();
|
|
@@ -6096,20 +6106,20 @@ class Zt {
|
|
|
6096
6106
|
projection: "EPSG:3857",
|
|
6097
6107
|
ratio: 1,
|
|
6098
6108
|
interpolate: !1,
|
|
6099
|
-
canvasFunction: (
|
|
6100
|
-
const v =
|
|
6109
|
+
canvasFunction: (b, p, A, y) => {
|
|
6110
|
+
const v = y ?? [1, 1], B = Math.max(1, Math.floor(v[0] ?? 1)), N = Math.max(1, Math.floor(v[1] ?? 1)), E = this.map.getSize(), L = Math.max(1, Math.floor(E?.[0] ?? B)), X = Math.max(1, Math.floor(E?.[1] ?? N)), R = B / L, S = N / X, z = s.useDevicePixelRatio ? Math.max(1, Number(A || 1)) : 1, C = Math.max(0.01, (R + S) * 0.5 / z), P = B, F = N, M = L, I = X;
|
|
6101
6111
|
t.width !== P && (t.width = P), t.height !== F && (t.height = F);
|
|
6102
6112
|
const g = t.getContext("2d", { alpha: !0 });
|
|
6103
6113
|
if (!g) return t;
|
|
6104
6114
|
g.setTransform(1, 0, 0, 1, 0, 0), g.clearRect(0, 0, P, F), g.font = `${Math.max(10, Math.round(s.fontSize * C))}px ${s.fontFamily}`, g.fillStyle = s.fontColor, g.strokeStyle = s.strokeColor, g.lineWidth = Math.max(0, s.strokeWidth * C), g.lineJoin = "round", g.miterLimit = 2, g.textAlign = "center", g.textBaseline = "middle";
|
|
6105
|
-
const [
|
|
6106
|
-
if (Y <= 0 ||
|
|
6115
|
+
const [D, w, T, O] = b, [H, G, V, J] = i, Y = T - D, j = O - w, W = V - H, K = J - G;
|
|
6116
|
+
if (Y <= 0 || j <= 0 || W <= 0 || K <= 0) return t;
|
|
6107
6117
|
const Z = Math.max(8, Math.round(s.pixelStep));
|
|
6108
6118
|
for (let U = Z / 2; U < I; U += Z)
|
|
6109
6119
|
for (let te = Z / 2; te < M; te += Z) {
|
|
6110
|
-
const se =
|
|
6120
|
+
const se = D + te / M * Y, _ = O - U / I * j;
|
|
6111
6121
|
if (se < H || se > V || _ < G || _ > J) continue;
|
|
6112
|
-
const $ = (se - H) /
|
|
6122
|
+
const $ = (se - H) / W * (o - 1), ae = (J - _) / K * (u - 1), ne = this.interpolateValue(r, o, u, $, ae);
|
|
6113
6123
|
if (ne === null) continue;
|
|
6114
6124
|
const he = this.applyValueTransformValue(ne, {
|
|
6115
6125
|
x: $,
|
|
@@ -6154,7 +6164,7 @@ class Zt {
|
|
|
6154
6164
|
r && t.setSource(r);
|
|
6155
6165
|
}
|
|
6156
6166
|
}
|
|
6157
|
-
class
|
|
6167
|
+
class co {
|
|
6158
6168
|
map;
|
|
6159
6169
|
options;
|
|
6160
6170
|
contourCache;
|
|
@@ -6211,43 +6221,43 @@ class ao {
|
|
|
6211
6221
|
projection: "EPSG:3857",
|
|
6212
6222
|
ratio: 1,
|
|
6213
6223
|
canvasFunction: (l, d, h, a) => {
|
|
6214
|
-
const
|
|
6224
|
+
const b = a ?? [1, 1], p = Math.max(1, Math.floor((b[0] ?? 1) * h)), A = Math.max(1, Math.floor((b[1] ?? 1) * h));
|
|
6215
6225
|
s.width !== p && (s.width = p), s.height !== A && (s.height = A);
|
|
6216
|
-
const
|
|
6217
|
-
if (!
|
|
6218
|
-
|
|
6226
|
+
const y = s.getContext("2d", { alpha: !0 });
|
|
6227
|
+
if (!y) return s;
|
|
6228
|
+
y.clearRect(0, 0, p, A), y.fillStyle = u, y.font = `${Math.max(1, Math.floor(o * h))}px Arial`, y.textAlign = "center", y.textBaseline = "middle";
|
|
6219
6229
|
const [v, B, N, E] = l, [L, X, R, S] = t, z = N - v, C = E - B;
|
|
6220
6230
|
if (z <= 0 || C <= 0) return s;
|
|
6221
6231
|
const P = Math.max(v, L), F = Math.max(B, X), M = Math.min(N, R), I = Math.min(E, S);
|
|
6222
6232
|
if (P >= M || F >= I) return s;
|
|
6223
|
-
const g = R - L,
|
|
6224
|
-
if (g <= 0 ||
|
|
6225
|
-
const
|
|
6233
|
+
const g = R - L, D = S - X;
|
|
6234
|
+
if (g <= 0 || D <= 0) return s;
|
|
6235
|
+
const w = Math.max(1, p - 1), T = Math.max(1, A - 1), O = Math.max(1, Math.floor(i * h)), H = Math.max(
|
|
6226
6236
|
g / Math.max(1, e.width - 1),
|
|
6227
|
-
|
|
6237
|
+
D / Math.max(1, e.height - 1)
|
|
6228
6238
|
), G = H > 0 && isFinite(d) ? Math.max(1, Math.floor(d / H)) : 1, V = Math.max(O, Math.min(O * 6, O * G)), J = Math.max(
|
|
6229
6239
|
0,
|
|
6230
|
-
Math.floor((P - v) / z *
|
|
6240
|
+
Math.floor((P - v) / z * w)
|
|
6231
6241
|
), Y = Math.min(
|
|
6232
6242
|
p - 1,
|
|
6233
|
-
Math.ceil((M - v) / z *
|
|
6234
|
-
),
|
|
6243
|
+
Math.ceil((M - v) / z * w)
|
|
6244
|
+
), j = Math.max(
|
|
6235
6245
|
0,
|
|
6236
6246
|
Math.floor((E - I) / C * T)
|
|
6237
|
-
),
|
|
6247
|
+
), W = Math.min(
|
|
6238
6248
|
A - 1,
|
|
6239
6249
|
Math.ceil((E - F) / C * T)
|
|
6240
6250
|
);
|
|
6241
|
-
if (J > Y ||
|
|
6242
|
-
for (let K =
|
|
6251
|
+
if (J > Y || j > W) return s;
|
|
6252
|
+
for (let K = j; K <= W; K += V)
|
|
6243
6253
|
for (let Z = J; Z <= Y; Z += V) {
|
|
6244
|
-
const U = v + z * Z /
|
|
6254
|
+
const U = v + z * Z / w, te = E - C * K / T;
|
|
6245
6255
|
if (U < L || U > R || te < X || te > S)
|
|
6246
6256
|
continue;
|
|
6247
|
-
const se = (U - L) / g * (e.width - 1), _ = (S - te) /
|
|
6257
|
+
const se = (U - L) / g * (e.width - 1), _ = (S - te) / D * (e.height - 1), $ = _t(e.angle, se, _, e.width, e.height);
|
|
6248
6258
|
if (!isFinite($)) continue;
|
|
6249
6259
|
const ae = ($ - 90) * Math.PI / 180;
|
|
6250
|
-
|
|
6260
|
+
y.save(), y.translate(Z, K), y.rotate(ae), y.fillText("→", 0, 0), y.restore();
|
|
6251
6261
|
}
|
|
6252
6262
|
return s;
|
|
6253
6263
|
}
|
|
@@ -6282,7 +6292,7 @@ class ao {
|
|
|
6282
6292
|
Ne(this.map, this.options.id + "-arrow", e);
|
|
6283
6293
|
}
|
|
6284
6294
|
}
|
|
6285
|
-
const ar = "26",
|
|
6295
|
+
const ar = "26", Kr = /* @__PURE__ */ new Set(["23", "24", ar]), lo = 6, fo = ["", "-notes", "-filtered", "-other"], He = new globalThis.Map(), Ft = new globalThis.Map(), er = /* @__PURE__ */ new WeakMap(), Sr = new globalThis.Map(), St = {
|
|
6286
6296
|
0: "#9CF790",
|
|
6287
6297
|
10: "#37A600",
|
|
6288
6298
|
25: "#67B4F8",
|
|
@@ -6291,62 +6301,62 @@ const ar = "26", Jr = /* @__PURE__ */ new Set(["23", "24", ar]), co = 6, lo = ["
|
|
|
6291
6301
|
250: "#710100",
|
|
6292
6302
|
400: "#ffa10c",
|
|
6293
6303
|
600: "#fe6301"
|
|
6294
|
-
},
|
|
6304
|
+
}, ho = {
|
|
6295
6305
|
0: "#cccccc",
|
|
6296
6306
|
"2.5": "#a1a1a1",
|
|
6297
6307
|
5: "#707070",
|
|
6298
6308
|
10: "#454545",
|
|
6299
6309
|
20: "#7345e6",
|
|
6300
6310
|
30: "#4d0074"
|
|
6301
|
-
},
|
|
6311
|
+
}, go = {
|
|
6302
6312
|
0: "#c3e7b9",
|
|
6303
6313
|
10: "#7ec179",
|
|
6304
6314
|
25: "#95c5e0",
|
|
6305
6315
|
50: "#3b3a9f",
|
|
6306
6316
|
100: "#b05dae"
|
|
6307
6317
|
};
|
|
6308
|
-
function
|
|
6318
|
+
function mo() {
|
|
6309
6319
|
return new DOMException("The operation was aborted", "AbortError");
|
|
6310
6320
|
}
|
|
6311
6321
|
function Dt(n) {
|
|
6312
|
-
if (n?.aborted) throw n.reason ??
|
|
6322
|
+
if (n?.aborted) throw n.reason ?? mo();
|
|
6313
6323
|
}
|
|
6314
|
-
function
|
|
6324
|
+
function _r(n, e) {
|
|
6315
6325
|
let t = er.get(n);
|
|
6316
6326
|
t || (t = new globalThis.Map(), er.set(n, t));
|
|
6317
6327
|
const r = (t.get(e) ?? 0) + 1;
|
|
6318
6328
|
return t.set(e, r), r;
|
|
6319
6329
|
}
|
|
6320
|
-
function
|
|
6330
|
+
function Mr(n, e, t) {
|
|
6321
6331
|
return er.get(n)?.get(e) === t;
|
|
6322
6332
|
}
|
|
6323
|
-
function
|
|
6333
|
+
function Ao(n) {
|
|
6324
6334
|
return JSON.stringify({
|
|
6325
6335
|
filePath: n.filePath,
|
|
6326
6336
|
authorization: n.authorization ?? ""
|
|
6327
6337
|
});
|
|
6328
6338
|
}
|
|
6329
|
-
function
|
|
6330
|
-
for (He.delete(n), He.set(n, e); He.size >
|
|
6339
|
+
function po(n, e) {
|
|
6340
|
+
for (He.delete(n), He.set(n, e); He.size > lo; ) {
|
|
6331
6341
|
const t = He.keys().next().value;
|
|
6332
6342
|
if (t === void 0) break;
|
|
6333
6343
|
He.delete(t);
|
|
6334
6344
|
}
|
|
6335
6345
|
}
|
|
6336
|
-
function
|
|
6337
|
-
const t = new Set(
|
|
6346
|
+
function $r(n, e) {
|
|
6347
|
+
const t = new Set(fo.map((r) => `${e}${r}`));
|
|
6338
6348
|
for (const r of [...n.getLayers().getArray()])
|
|
6339
6349
|
t.has(r.getClassName()) && n.removeLayer(r);
|
|
6340
6350
|
}
|
|
6341
6351
|
function ut(n) {
|
|
6342
6352
|
const e = String(n ?? "").trim();
|
|
6343
|
-
return
|
|
6353
|
+
return Kr.has(e) ? e : ar;
|
|
6344
6354
|
}
|
|
6345
6355
|
function tr(n, e, t = 0.05) {
|
|
6346
6356
|
const r = n[0] - e[0], i = n[1] - e[1];
|
|
6347
6357
|
return r * r + i * i < t * t;
|
|
6348
6358
|
}
|
|
6349
|
-
function
|
|
6359
|
+
function en(n) {
|
|
6350
6360
|
let e = 0;
|
|
6351
6361
|
for (let t = 0; t < n.length - 1; t++) {
|
|
6352
6362
|
const [r, i] = n[t], [o, u] = n[t + 1];
|
|
@@ -6354,7 +6364,7 @@ function _r(n) {
|
|
|
6354
6364
|
}
|
|
6355
6365
|
return e > 0;
|
|
6356
6366
|
}
|
|
6357
|
-
function
|
|
6367
|
+
function vo(n) {
|
|
6358
6368
|
const e = [];
|
|
6359
6369
|
let t = n.findIndex((o) => /^CLOSED_CONTOURS:/i.test(o));
|
|
6360
6370
|
if (t < 0) return Q.featureCollection(e);
|
|
@@ -6369,9 +6379,9 @@ function po(n) {
|
|
|
6369
6379
|
let u = Number.parseInt(o[2], 10);
|
|
6370
6380
|
const s = [];
|
|
6371
6381
|
for (t++; u > 0 && t < n.length; ) {
|
|
6372
|
-
const
|
|
6373
|
-
for (let p = 0; p + 2 <
|
|
6374
|
-
s.push([
|
|
6382
|
+
const b = n[t].trim().split(/\s+/).map(Number).filter(Number.isFinite);
|
|
6383
|
+
for (let p = 0; p + 2 < b.length && u > 0; p += 3)
|
|
6384
|
+
s.push([b[p], b[p + 1]]), u--;
|
|
6375
6385
|
t++;
|
|
6376
6386
|
}
|
|
6377
6387
|
let l = !1;
|
|
@@ -6381,15 +6391,15 @@ function po(n) {
|
|
|
6381
6391
|
h && (d = h[1], t++);
|
|
6382
6392
|
const a = s[s.length - 1];
|
|
6383
6393
|
if (s.length > 3 && !tr(s[0], a, 0.1) && s.push([...s[0]]), s.length > 3 && tr(s[0], s[s.length - 1], 0.1)) {
|
|
6384
|
-
|
|
6385
|
-
const
|
|
6386
|
-
(
|
|
6394
|
+
en(s) && s.reverse();
|
|
6395
|
+
const b = s[0], p = s[s.length - 1];
|
|
6396
|
+
(b[0] !== p[0] || b[1] !== p[1]) && s.push([...s[0]]), e.push(Q.polygon([s], { level: d, noLabelZero: l }));
|
|
6387
6397
|
}
|
|
6388
6398
|
i--;
|
|
6389
6399
|
}
|
|
6390
6400
|
return e.sort((o, u) => Number(o.properties?.level) - Number(u.properties?.level)), Q.featureCollection(e);
|
|
6391
6401
|
}
|
|
6392
|
-
function
|
|
6402
|
+
function Do(n) {
|
|
6393
6403
|
const e = [];
|
|
6394
6404
|
let t = n.findIndex((r) => /^NOTES_SYMBOL:/i.test(r));
|
|
6395
6405
|
if (t < 0) return e;
|
|
@@ -6405,7 +6415,7 @@ function vo(n) {
|
|
|
6405
6415
|
}
|
|
6406
6416
|
return e;
|
|
6407
6417
|
}
|
|
6408
|
-
function
|
|
6418
|
+
function bo(n) {
|
|
6409
6419
|
const e = [];
|
|
6410
6420
|
let t = n.findIndex((r) => /^SYMBOLS:/i.test(r));
|
|
6411
6421
|
if (t < 0) return e;
|
|
@@ -6425,7 +6435,7 @@ function Do(n) {
|
|
|
6425
6435
|
}
|
|
6426
6436
|
return e;
|
|
6427
6437
|
}
|
|
6428
|
-
function
|
|
6438
|
+
function yo(n) {
|
|
6429
6439
|
const e = [], t = n.findIndex((u) => /^CLOSED_CONTOURS:/i.test(u)), r = t < 0 ? n.length : t, i = /^(\d+(?:\.\d+)?)\s+\d+\s+(\d+)\s*$/;
|
|
6430
6440
|
let o = 0;
|
|
6431
6441
|
for (; o < r; ) {
|
|
@@ -6438,15 +6448,15 @@ function bo(n) {
|
|
|
6438
6448
|
let l = Number.parseInt(u[2], 10);
|
|
6439
6449
|
const d = [];
|
|
6440
6450
|
for (o++; o < r && l > 0; ) {
|
|
6441
|
-
const
|
|
6442
|
-
for (let p = 0; p + 2 <
|
|
6443
|
-
d.push([
|
|
6451
|
+
const b = n[o].trim().split(/\s+/).map(Number).filter(Number.isFinite);
|
|
6452
|
+
for (let p = 0; p + 2 < b.length && l > 0; p += 3)
|
|
6453
|
+
d.push([b[p], b[p + 1]]), l--;
|
|
6444
6454
|
o++;
|
|
6445
6455
|
}
|
|
6446
6456
|
let h = !1;
|
|
6447
6457
|
if (o < r && /^NoLabel\s+0[^\s]*/.test(n[o].trim()) && (h = !0, o++), !d.length) continue;
|
|
6448
6458
|
const a = d.length > 3 && tr(d[0], d[d.length - 1], 0.1);
|
|
6449
|
-
a &&
|
|
6459
|
+
a && en(d) && d.reverse(), e.push({
|
|
6450
6460
|
type: "Feature",
|
|
6451
6461
|
geometry: {
|
|
6452
6462
|
type: a ? "Polygon" : "LineString",
|
|
@@ -6479,7 +6489,7 @@ function cr(n) {
|
|
|
6479
6489
|
return [n];
|
|
6480
6490
|
}
|
|
6481
6491
|
}
|
|
6482
|
-
function
|
|
6492
|
+
function wo(n, e) {
|
|
6483
6493
|
try {
|
|
6484
6494
|
const t = Q.area(n), r = Q.area(e);
|
|
6485
6495
|
return Number.isFinite(t) && Number.isFinite(r) && t > 0 && t < r * 0.999999 && (Q.booleanWithin(n, e) || Q.booleanContains(e, n));
|
|
@@ -6487,7 +6497,7 @@ function yo(n, e) {
|
|
|
6487
6497
|
return !1;
|
|
6488
6498
|
}
|
|
6489
6499
|
}
|
|
6490
|
-
function
|
|
6500
|
+
function Co(n) {
|
|
6491
6501
|
if (n.length <= 1 || !n.every((u) => Number(u?.properties?.level) === 0))
|
|
6492
6502
|
return n;
|
|
6493
6503
|
const e = n.flatMap(cr), t = e.map((u) => {
|
|
@@ -6500,8 +6510,8 @@ function wo(n) {
|
|
|
6500
6510
|
if (e.forEach((u, s) => {
|
|
6501
6511
|
let l = -1, d = Number.POSITIVE_INFINITY;
|
|
6502
6512
|
e.forEach((h, a) => {
|
|
6503
|
-
const
|
|
6504
|
-
s === a ||
|
|
6513
|
+
const b = t[a] ?? 0;
|
|
6514
|
+
s === a || b >= d || !Ct(xe(u), xe(h)) || !wo(u, h) || (l = a, d = b);
|
|
6505
6515
|
}), l >= 0 && r.set(s, l);
|
|
6506
6516
|
}), !r.size) return e;
|
|
6507
6517
|
const i = new globalThis.Map();
|
|
@@ -6519,9 +6529,9 @@ function wo(n) {
|
|
|
6519
6529
|
if (!Ct(xe(h), xe(d)) || !Q.booleanIntersects(h, d))
|
|
6520
6530
|
return [h];
|
|
6521
6531
|
const a = Q.difference(Q.featureCollection([h, d]));
|
|
6522
|
-
return a ? Q.flatten(a).features.map((
|
|
6523
|
-
...
|
|
6524
|
-
properties: { ...u.properties ?? {}, ...
|
|
6532
|
+
return a ? Q.flatten(a).features.map((b) => ({
|
|
6533
|
+
...b,
|
|
6534
|
+
properties: { ...u.properties ?? {}, ...b.properties ?? {} }
|
|
6525
6535
|
})) : [];
|
|
6526
6536
|
} catch {
|
|
6527
6537
|
return [h];
|
|
@@ -6530,7 +6540,7 @@ function wo(n) {
|
|
|
6530
6540
|
o.push(...l);
|
|
6531
6541
|
}), o;
|
|
6532
6542
|
}
|
|
6533
|
-
function
|
|
6543
|
+
function Bo(n) {
|
|
6534
6544
|
const e = new globalThis.Map(), t = [];
|
|
6535
6545
|
for (const i of n) {
|
|
6536
6546
|
if (!/polygon/i.test(String(i?.geometry?.type ?? ""))) {
|
|
@@ -6544,7 +6554,7 @@ function Co(n) {
|
|
|
6544
6554
|
}
|
|
6545
6555
|
const r = [];
|
|
6546
6556
|
return e.forEach((i) => {
|
|
6547
|
-
const o =
|
|
6557
|
+
const o = Co(i);
|
|
6548
6558
|
if (o.length <= 1) {
|
|
6549
6559
|
r.push(...o);
|
|
6550
6560
|
return;
|
|
@@ -6563,7 +6573,7 @@ function Co(n) {
|
|
|
6563
6573
|
}
|
|
6564
6574
|
}), [...t, ...r];
|
|
6565
6575
|
}
|
|
6566
|
-
function
|
|
6576
|
+
function Eo(n, e) {
|
|
6567
6577
|
const t = new globalThis.Map(), r = [];
|
|
6568
6578
|
for (const o of n) {
|
|
6569
6579
|
if (!/polygon/i.test(String(o?.geometry?.type ?? ""))) {
|
|
@@ -6584,10 +6594,10 @@ function Bo(n, e) {
|
|
|
6584
6594
|
try {
|
|
6585
6595
|
if (!Ct(xe(a), h.bbox)) return [a];
|
|
6586
6596
|
if (!Q.booleanIntersects(a, h.feature)) return [a];
|
|
6587
|
-
const
|
|
6597
|
+
const b = Q.difference(
|
|
6588
6598
|
Q.featureCollection([a, h.feature])
|
|
6589
6599
|
);
|
|
6590
|
-
return
|
|
6600
|
+
return b ? Q.flatten(b).features.map((p) => ({
|
|
6591
6601
|
...p,
|
|
6592
6602
|
properties: { ...l.properties ?? {}, ...p.properties ?? {} }
|
|
6593
6603
|
})) : [];
|
|
@@ -6600,7 +6610,7 @@ function Bo(n, e) {
|
|
|
6600
6610
|
}
|
|
6601
6611
|
}), [...r, ...i];
|
|
6602
6612
|
}
|
|
6603
|
-
function
|
|
6613
|
+
function xo(n, e = 1e-6) {
|
|
6604
6614
|
if (!n.length) return [];
|
|
6605
6615
|
const t = (o, u) => {
|
|
6606
6616
|
const s = o[0] - u[0], l = o[1] - u[1];
|
|
@@ -6618,7 +6628,7 @@ function Eo(n, e = 1e-6) {
|
|
|
6618
6628
|
}
|
|
6619
6629
|
return i.push(r[r.length - 1]), i.length >= 4 ? i : r;
|
|
6620
6630
|
}
|
|
6621
|
-
function
|
|
6631
|
+
function No(n, e, t = 1e-3) {
|
|
6622
6632
|
if (n?.geometry?.type !== "Polygon" || !/linestring/i.test(e?.geometry?.type ?? ""))
|
|
6623
6633
|
return Q.featureCollection([n]);
|
|
6624
6634
|
if (e.geometry.type === "LineString") {
|
|
@@ -6635,22 +6645,22 @@ function xo(n, e, t = 1e-3) {
|
|
|
6635
6645
|
const s = cr(u).map((l, d) => {
|
|
6636
6646
|
const h = l.geometry.coordinates[0];
|
|
6637
6647
|
for (let a = 0; a < h.length; a++) {
|
|
6638
|
-
const
|
|
6639
|
-
(A) => Q.distance(A,
|
|
6648
|
+
const b = Q.point(h[a]), p = r.features.find(
|
|
6649
|
+
(A) => Q.distance(A, b, { units: "kilometers" }) <= t * 2
|
|
6640
6650
|
);
|
|
6641
6651
|
p && (h[a] = [...p.geometry.coordinates]);
|
|
6642
6652
|
}
|
|
6643
|
-
return l.geometry.coordinates[0] =
|
|
6653
|
+
return l.geometry.coordinates[0] = xo(h), l.properties = {
|
|
6644
6654
|
...n.properties ?? {},
|
|
6645
6655
|
id: `${n.properties?.id ?? "poly"}-${d}`
|
|
6646
6656
|
}, l;
|
|
6647
6657
|
});
|
|
6648
6658
|
return Q.featureCollection(s);
|
|
6649
6659
|
}
|
|
6650
|
-
function
|
|
6651
|
-
const t = n.split(/\r?\n/), r =
|
|
6652
|
-
(p) =>
|
|
6653
|
-
), u =
|
|
6660
|
+
function Po(n, e) {
|
|
6661
|
+
const t = n.split(/\r?\n/), r = vo(t), i = Do(t), o = bo(t).filter(
|
|
6662
|
+
(p) => Kr.has(String(p.properties?.symbolId))
|
|
6663
|
+
), u = yo(t).filter(
|
|
6654
6664
|
(p) => p.geometry?.type === "LineString" && Number(p.properties?.level) === 0
|
|
6655
6665
|
);
|
|
6656
6666
|
Dt(e);
|
|
@@ -6658,11 +6668,11 @@ function No(n, e) {
|
|
|
6658
6668
|
if (s.length > 1)
|
|
6659
6669
|
try {
|
|
6660
6670
|
const p = Q.union(r);
|
|
6661
|
-
p && (s = Q.flatten(p).features.map((A,
|
|
6671
|
+
p && (s = Q.flatten(p).features.map((A, y) => ({
|
|
6662
6672
|
...A,
|
|
6663
6673
|
properties: {
|
|
6664
6674
|
...A.properties ?? {},
|
|
6665
|
-
id: A.properties?.id ?? `u-${
|
|
6675
|
+
id: A.properties?.id ?? `u-${y}`
|
|
6666
6676
|
}
|
|
6667
6677
|
})));
|
|
6668
6678
|
} catch {
|
|
@@ -6674,8 +6684,8 @@ function No(n, e) {
|
|
|
6674
6684
|
try {
|
|
6675
6685
|
if (!Ct(xe(A), p.bbox)) return [A];
|
|
6676
6686
|
if (!Q.booleanIntersects(A, p.feature)) return [A];
|
|
6677
|
-
const
|
|
6678
|
-
return
|
|
6687
|
+
const y = No(A, p.feature);
|
|
6688
|
+
return y.features.length ? y.features : [A];
|
|
6679
6689
|
} catch {
|
|
6680
6690
|
return [A];
|
|
6681
6691
|
}
|
|
@@ -6685,10 +6695,10 @@ function No(n, e) {
|
|
|
6685
6695
|
point: Q.point(p.geometry.coordinates, p.properties)
|
|
6686
6696
|
})), h = s.map((p) => {
|
|
6687
6697
|
let A = ar;
|
|
6688
|
-
for (const
|
|
6698
|
+
for (const y of d)
|
|
6689
6699
|
try {
|
|
6690
|
-
if (Q.booleanPointInPolygon(
|
|
6691
|
-
A = ut(
|
|
6700
|
+
if (Q.booleanPointInPolygon(y.point, p)) {
|
|
6701
|
+
A = ut(y.feature.properties?.symbolId);
|
|
6692
6702
|
break;
|
|
6693
6703
|
}
|
|
6694
6704
|
} catch {
|
|
@@ -6697,36 +6707,36 @@ function No(n, e) {
|
|
|
6697
6707
|
}), a = r.features.map((p) => ({
|
|
6698
6708
|
feature: p,
|
|
6699
6709
|
bbox: xe(p)
|
|
6700
|
-
})),
|
|
6710
|
+
})), b = [];
|
|
6701
6711
|
for (const p of h) {
|
|
6702
6712
|
Dt(e);
|
|
6703
6713
|
const A = xe(p);
|
|
6704
|
-
for (const
|
|
6705
|
-
if (Ct(A,
|
|
6714
|
+
for (const y of a)
|
|
6715
|
+
if (Ct(A, y.bbox))
|
|
6706
6716
|
try {
|
|
6707
6717
|
const v = Q.intersect(
|
|
6708
|
-
Q.featureCollection([p,
|
|
6718
|
+
Q.featureCollection([p, y.feature])
|
|
6709
6719
|
);
|
|
6710
6720
|
if (!v) continue;
|
|
6711
6721
|
const B = {
|
|
6712
|
-
...
|
|
6722
|
+
...y.feature.properties ?? {},
|
|
6713
6723
|
...p.properties ?? {}
|
|
6714
6724
|
};
|
|
6715
6725
|
Q.flatten(v).features.forEach((N) => {
|
|
6716
|
-
N.properties = { ...B, ...N.properties ?? {} },
|
|
6726
|
+
N.properties = { ...B, ...N.properties ?? {} }, b.push(N);
|
|
6717
6727
|
});
|
|
6718
6728
|
} catch {
|
|
6719
6729
|
}
|
|
6720
6730
|
}
|
|
6721
6731
|
return {
|
|
6722
|
-
vectorFeatures: Bo(
|
|
6732
|
+
vectorFeatures: Eo(Bo(b), e),
|
|
6723
6733
|
noteFeatures: i,
|
|
6724
6734
|
symbolFeatures: o,
|
|
6725
6735
|
otherFeatures: u
|
|
6726
6736
|
};
|
|
6727
6737
|
}
|
|
6728
|
-
async function
|
|
6729
|
-
const e =
|
|
6738
|
+
async function To(n) {
|
|
6739
|
+
const e = Ao(n), t = He.get(e);
|
|
6730
6740
|
if (t)
|
|
6731
6741
|
return He.delete(e), He.set(e, t), t;
|
|
6732
6742
|
if (!n.signal) {
|
|
@@ -6737,8 +6747,8 @@ async function Po(n) {
|
|
|
6737
6747
|
const i = n.authorization ? { Authorization: n.authorization } : void 0, o = await fetch(n.filePath, { headers: i, signal: n.signal });
|
|
6738
6748
|
if (!o.ok)
|
|
6739
6749
|
throw new Error(`MICAPS request failed: ${o.status} ${o.statusText}`);
|
|
6740
|
-
const u =
|
|
6741
|
-
return
|
|
6750
|
+
const u = Po(await o.text(), n.signal);
|
|
6751
|
+
return po(e, u), u;
|
|
6742
6752
|
})();
|
|
6743
6753
|
n.signal || Ft.set(e, r);
|
|
6744
6754
|
try {
|
|
@@ -6754,13 +6764,13 @@ function Kt(n, e, t) {
|
|
|
6754
6764
|
const o = Object.keys(n).map(Number).filter(Number.isFinite), u = o.length ? Math.max(...o) : Number.POSITIVE_INFINITY;
|
|
6755
6765
|
return r > u ? n[String(u)] ?? t : t;
|
|
6756
6766
|
}
|
|
6757
|
-
function
|
|
6767
|
+
function Lo(n, e) {
|
|
6758
6768
|
const t = ut(n);
|
|
6759
|
-
return Kt(t === "23" ?
|
|
6769
|
+
return Kt(t === "23" ? ho : t === "24" ? go : St, e, St[0]);
|
|
6760
6770
|
}
|
|
6761
|
-
function
|
|
6771
|
+
function Fo(n, e = 10, t = 4) {
|
|
6762
6772
|
if (typeof document > "u") return null;
|
|
6763
|
-
const r = globalThis.devicePixelRatio || 1, i = `${n}_${e}_${t}_${r}`, o =
|
|
6773
|
+
const r = globalThis.devicePixelRatio || 1, i = `${n}_${e}_${t}_${r}`, o = Sr.get(i);
|
|
6764
6774
|
if (o) return o;
|
|
6765
6775
|
const u = document.createElement("canvas");
|
|
6766
6776
|
u.width = Math.ceil(e * r), u.height = Math.ceil(e * r);
|
|
@@ -6768,9 +6778,9 @@ function Lo(n, e = 10, t = 4) {
|
|
|
6768
6778
|
if (!s) return null;
|
|
6769
6779
|
s.setTransform(r, 0, 0, r, 0, 0), s.strokeStyle = n, s.lineWidth = t, s.beginPath(), s.moveTo(-e, e * 2), s.lineTo(e * 2, -e), s.moveTo(0, e * 2), s.lineTo(e * 3, -e), s.stroke();
|
|
6770
6780
|
const l = s.createPattern(u, "repeat");
|
|
6771
|
-
return l &&
|
|
6781
|
+
return l && Sr.set(i, l), l;
|
|
6772
6782
|
}
|
|
6773
|
-
function
|
|
6783
|
+
function So(n, e, t) {
|
|
6774
6784
|
const {
|
|
6775
6785
|
className: r,
|
|
6776
6786
|
opacity: i = 0.8,
|
|
@@ -6781,22 +6791,22 @@ function Fo(n, e, t) {
|
|
|
6781
6791
|
} = t, d = {
|
|
6782
6792
|
dataProjection: "EPSG:4326",
|
|
6783
6793
|
featureProjection: n.getView().getProjection()
|
|
6784
|
-
}, h = (A) => new
|
|
6794
|
+
}, h = (A) => new Vr().readFeatures({ type: "FeatureCollection", features: A }, d), a = new globalThis.Map(), p = [new ot({
|
|
6785
6795
|
className: r,
|
|
6786
6796
|
opacity: Math.max(0, Math.min(1, i)),
|
|
6787
6797
|
zIndex: t.zIndex ?? 10,
|
|
6788
6798
|
visible: t.visible ?? !0,
|
|
6789
6799
|
source: new vt({ features: h(e.vectorFeatures) }),
|
|
6790
6800
|
style: (A) => {
|
|
6791
|
-
const
|
|
6801
|
+
const y = ut(A.get("symbolId")), v = A.get("level"), B = `${y}_${String(v)}_${o}_${u}_${s}`, N = a.get(B);
|
|
6792
6802
|
if (N) return N;
|
|
6793
6803
|
const E = [];
|
|
6794
6804
|
if (u) {
|
|
6795
|
-
const L =
|
|
6805
|
+
const L = Lo(y, v);
|
|
6796
6806
|
E.push(
|
|
6797
6807
|
new Be({
|
|
6798
6808
|
fill: new be({
|
|
6799
|
-
color:
|
|
6809
|
+
color: y === "24" ? Fo(L) ?? L : L
|
|
6800
6810
|
})
|
|
6801
6811
|
})
|
|
6802
6812
|
);
|
|
@@ -6824,8 +6834,8 @@ function Fo(n, e, t) {
|
|
|
6824
6834
|
zIndex: (t.zIndex ?? 10) + 2,
|
|
6825
6835
|
visible: t.visible ?? !0,
|
|
6826
6836
|
source: new vt({ features: h(e.noteFeatures) }),
|
|
6827
|
-
style: (
|
|
6828
|
-
const v = String(
|
|
6837
|
+
style: (y) => {
|
|
6838
|
+
const v = String(y.get("text") ?? ""), B = `${v}_${o}_${l}`;
|
|
6829
6839
|
let N = A.get(B);
|
|
6830
6840
|
return N || (N = new Be({
|
|
6831
6841
|
image: l ? new Vt({
|
|
@@ -6853,8 +6863,8 @@ function Fo(n, e, t) {
|
|
|
6853
6863
|
zIndex: (t.zIndex ?? 10) + 3,
|
|
6854
6864
|
visible: t.visible ?? !0,
|
|
6855
6865
|
source: new vt({ features: h(e.symbolFeatures) }),
|
|
6856
|
-
style: (
|
|
6857
|
-
const v = ut(
|
|
6866
|
+
style: (y) => {
|
|
6867
|
+
const v = ut(y.get("symbolId"));
|
|
6858
6868
|
let B = A.get(v);
|
|
6859
6869
|
if (!B) {
|
|
6860
6870
|
const N = v === "23" ? "#5f4bb6" : v === "24" ? "#2f7ea1" : "#2d9f3b";
|
|
@@ -6873,22 +6883,22 @@ function Fo(n, e, t) {
|
|
|
6873
6883
|
}
|
|
6874
6884
|
return p;
|
|
6875
6885
|
}
|
|
6876
|
-
async function
|
|
6886
|
+
async function Mo(n, e) {
|
|
6877
6887
|
if (!e.className || !e.filePath) return;
|
|
6878
|
-
const t =
|
|
6879
|
-
if (Dt(e.signal), !
|
|
6880
|
-
const i = n.getLayers().getArray().find((u) => u.getClassName() === e.className), o =
|
|
6888
|
+
const t = _r(n, e.className), r = await To(e);
|
|
6889
|
+
if (Dt(e.signal), !Mr(n, e.className, t)) return;
|
|
6890
|
+
const i = n.getLayers().getArray().find((u) => u.getClassName() === e.className), o = So(n, r, {
|
|
6881
6891
|
...e,
|
|
6882
6892
|
zIndex: i?.getZIndex() ?? e.zIndex,
|
|
6883
6893
|
visible: i?.getVisible() ?? e.visible
|
|
6884
6894
|
});
|
|
6885
|
-
if (
|
|
6886
|
-
return
|
|
6895
|
+
if (Mr(n, e.className, t))
|
|
6896
|
+
return $r(n, e.className), o.forEach((u) => n.addLayer(u)), o[0];
|
|
6887
6897
|
}
|
|
6888
|
-
function
|
|
6889
|
-
|
|
6898
|
+
function Oo(n, e) {
|
|
6899
|
+
_r(n, e), $r(n, e);
|
|
6890
6900
|
}
|
|
6891
|
-
class
|
|
6901
|
+
class Xo {
|
|
6892
6902
|
map;
|
|
6893
6903
|
options;
|
|
6894
6904
|
ready;
|
|
@@ -6920,7 +6930,7 @@ class Oo {
|
|
|
6920
6930
|
const e = this.beginSourceRequest(), t = this.abortController, r = this.options.url;
|
|
6921
6931
|
if (r)
|
|
6922
6932
|
try {
|
|
6923
|
-
if (await
|
|
6933
|
+
if (await Mo(this.map, {
|
|
6924
6934
|
...this.getMicContourOptions(r),
|
|
6925
6935
|
signal: t.signal
|
|
6926
6936
|
}), e !== this.sourceRequestVersion || t.signal.aborted) return;
|
|
@@ -6930,7 +6940,7 @@ class Oo {
|
|
|
6930
6940
|
}
|
|
6931
6941
|
}
|
|
6932
6942
|
delete() {
|
|
6933
|
-
this.abortController.abort(), this.sourceRequestVersion++,
|
|
6943
|
+
this.abortController.abort(), this.sourceRequestVersion++, Oo(this.map, this.options.id);
|
|
6934
6944
|
}
|
|
6935
6945
|
toggleVisible(e) {
|
|
6936
6946
|
Ne(this.map, this.options.id, e), Ne(this.map, `${this.options.id}-notes`, e), Ne(this.map, `${this.options.id}-filtered`, e), Ne(this.map, `${this.options.id}-other`, e);
|
|
@@ -6946,15 +6956,15 @@ class Oo {
|
|
|
6946
6956
|
}, this.ready = this.add(), await this.ready;
|
|
6947
6957
|
}
|
|
6948
6958
|
}
|
|
6949
|
-
const
|
|
6959
|
+
const Ho = 8, Io = 8, Ro = 3, rr = "rgba(0,0,0,0.8)", Ie = new globalThis.Map(), Mt = new globalThis.Map(), Re = new globalThis.Map(), Ot = new globalThis.Map(), nr = /* @__PURE__ */ new WeakMap();
|
|
6950
6960
|
function lr(n, e) {
|
|
6951
6961
|
return n.getLayers().getArray().find((t) => t.getClassName() === e);
|
|
6952
6962
|
}
|
|
6953
|
-
function
|
|
6963
|
+
function tn(n, e) {
|
|
6954
6964
|
for (const t of [...n.getLayers().getArray()])
|
|
6955
6965
|
t.getClassName() === e && n.removeLayer(t);
|
|
6956
6966
|
}
|
|
6957
|
-
function
|
|
6967
|
+
function rn(n) {
|
|
6958
6968
|
const { url: e, time: t = "", authorization: r = "", config: i } = n, { legend: o = [] } = i;
|
|
6959
6969
|
return JSON.stringify({
|
|
6960
6970
|
url: e,
|
|
@@ -6964,10 +6974,10 @@ function en(n) {
|
|
|
6964
6974
|
scope: i.scope ?? [],
|
|
6965
6975
|
thresholds: o.map((u) => u.scope ?? []),
|
|
6966
6976
|
isolineSmooth: i.isolineSmooth !== !1,
|
|
6967
|
-
isolineSmoothness:
|
|
6977
|
+
isolineSmoothness: nn(i)
|
|
6968
6978
|
});
|
|
6969
6979
|
}
|
|
6970
|
-
function
|
|
6980
|
+
function zo(n) {
|
|
6971
6981
|
const { url: e, time: t = "", authorization: r = "", config: i } = n;
|
|
6972
6982
|
return JSON.stringify({
|
|
6973
6983
|
url: e,
|
|
@@ -6977,25 +6987,25 @@ function Ro(n) {
|
|
|
6977
6987
|
scope: i.scope ?? []
|
|
6978
6988
|
});
|
|
6979
6989
|
}
|
|
6980
|
-
function
|
|
6990
|
+
function nn(n) {
|
|
6981
6991
|
return n.isolineSmooth === !1 ? 0 : nt(n.isolineSmoothness);
|
|
6982
6992
|
}
|
|
6983
|
-
function
|
|
6984
|
-
for (Ie.delete(n), Ie.set(n, e); Ie.size >
|
|
6993
|
+
function qo(n, e) {
|
|
6994
|
+
for (Ie.delete(n), Ie.set(n, e); Ie.size > Ho; ) {
|
|
6985
6995
|
const t = Ie.keys().next().value;
|
|
6986
6996
|
if (t === void 0) break;
|
|
6987
6997
|
Ie.delete(t);
|
|
6988
6998
|
}
|
|
6989
6999
|
}
|
|
6990
|
-
function
|
|
6991
|
-
for (Re.delete(n), Re.set(n, e); Re.size >
|
|
7000
|
+
function Vo(n, e) {
|
|
7001
|
+
for (Re.delete(n), Re.set(n, e); Re.size > Io; ) {
|
|
6992
7002
|
const t = Re.keys().next().value;
|
|
6993
7003
|
if (t === void 0) break;
|
|
6994
7004
|
Re.delete(t);
|
|
6995
7005
|
}
|
|
6996
7006
|
}
|
|
6997
|
-
async function
|
|
6998
|
-
const e =
|
|
7007
|
+
async function Go(n) {
|
|
7008
|
+
const e = zo(n), t = Re.get(e);
|
|
6999
7009
|
if (t)
|
|
7000
7010
|
return Re.delete(e), Re.set(e, t), t;
|
|
7001
7011
|
const r = Ot.get(e);
|
|
@@ -7009,7 +7019,7 @@ async function Vo(n) {
|
|
|
7009
7019
|
width: o.width,
|
|
7010
7020
|
height: o.height
|
|
7011
7021
|
};
|
|
7012
|
-
return
|
|
7022
|
+
return Vo(e, u), u;
|
|
7013
7023
|
})();
|
|
7014
7024
|
Ot.set(e, i);
|
|
7015
7025
|
try {
|
|
@@ -7018,22 +7028,22 @@ async function Vo(n) {
|
|
|
7018
7028
|
Ot.get(e) === i && Ot.delete(e);
|
|
7019
7029
|
}
|
|
7020
7030
|
}
|
|
7021
|
-
function
|
|
7031
|
+
function on(n, e) {
|
|
7022
7032
|
let t = nr.get(n);
|
|
7023
7033
|
t || (t = new globalThis.Map(), nr.set(n, t));
|
|
7024
7034
|
const r = (t.get(e) ?? 0) + 1;
|
|
7025
7035
|
return t.set(e, r), r;
|
|
7026
7036
|
}
|
|
7027
|
-
function
|
|
7037
|
+
function ko(n, e, t) {
|
|
7028
7038
|
return nr.get(n)?.get(e) === t;
|
|
7029
7039
|
}
|
|
7030
|
-
function
|
|
7040
|
+
function Qo(n) {
|
|
7031
7041
|
return typeof n.isolineBorderColor == "string" ? n.isolineBorderColor : typeof n.isolineColor == "string" ? n.isolineColor : n.isolineColor === !0 ? Ee(n.legend ?? [], n.legendScope).colorMap : rr;
|
|
7032
7042
|
}
|
|
7033
|
-
function
|
|
7043
|
+
function jo(n) {
|
|
7034
7044
|
return Ee(n.legend ?? [], n.legendScope).colorMap;
|
|
7035
7045
|
}
|
|
7036
|
-
function
|
|
7046
|
+
function Or(n) {
|
|
7037
7047
|
if (typeof n == "string") return () => n;
|
|
7038
7048
|
const e = Object.keys(n).map(Number).filter(Number.isFinite).sort((t, r) => t - r);
|
|
7039
7049
|
return (t) => {
|
|
@@ -7051,41 +7061,41 @@ function Wo(n, e, t) {
|
|
|
7051
7061
|
const r = n(e), [i, o, u, s] = zt(r);
|
|
7052
7062
|
return [i, o, u, s / 255 * Math.max(0, Math.min(1, t))];
|
|
7053
7063
|
}
|
|
7054
|
-
function
|
|
7055
|
-
const i = new globalThis.Map(), o = [], [u, s, l, d] = r, h = (l - u) / e, a = (d - s) / t,
|
|
7064
|
+
function Xr(n, e, t, r) {
|
|
7065
|
+
const i = new globalThis.Map(), o = [], [u, s, l, d] = r, h = (l - u) / e, a = (d - s) / t, b = (A) => {
|
|
7056
7066
|
if (!Array.isArray(A) || A.length < 2) return null;
|
|
7057
|
-
const
|
|
7067
|
+
const y = [];
|
|
7058
7068
|
for (const v of A)
|
|
7059
|
-
!Array.isArray(v) || v.length < 2 || !Number.isFinite(v[0]) || !Number.isFinite(v[1]) ||
|
|
7060
|
-
return
|
|
7061
|
-
}, p = (A,
|
|
7069
|
+
!Array.isArray(v) || v.length < 2 || !Number.isFinite(v[0]) || !Number.isFinite(v[1]) || y.push([u + v[0] * h, d - v[1] * a]);
|
|
7070
|
+
return y.length >= 2 ? y : null;
|
|
7071
|
+
}, p = (A, y) => {
|
|
7062
7072
|
const v = i.get(A) ?? [];
|
|
7063
|
-
v.push(
|
|
7073
|
+
v.push(y), i.set(A, v);
|
|
7064
7074
|
};
|
|
7065
7075
|
for (const A of n) {
|
|
7066
|
-
const
|
|
7067
|
-
if (!(!Number.isFinite(
|
|
7076
|
+
const y = Number(A.value);
|
|
7077
|
+
if (!(!Number.isFinite(y) || !Array.isArray(A.coordinates))) {
|
|
7068
7078
|
if (A.type === "Polygon") {
|
|
7069
|
-
const v = A.coordinates.map(
|
|
7070
|
-
v.length && (o.push({ type: "Polygon", coordinates: v, value:
|
|
7079
|
+
const v = A.coordinates.map(b).filter((B) => !!B);
|
|
7080
|
+
v.length && (o.push({ type: "Polygon", coordinates: v, value: y }), v.forEach((B) => p(y, B)));
|
|
7071
7081
|
} else if (A.type === "MultiPolygon") {
|
|
7072
7082
|
const v = [];
|
|
7073
7083
|
for (const B of A.coordinates) {
|
|
7074
|
-
const N = B.map(
|
|
7075
|
-
N.length && (v.push(N), N.forEach((E) => p(
|
|
7084
|
+
const N = B.map(b).filter((E) => !!E);
|
|
7085
|
+
N.length && (v.push(N), N.forEach((E) => p(y, E)));
|
|
7076
7086
|
}
|
|
7077
|
-
v.length && o.push({ type: "MultiPolygon", coordinates: v, value:
|
|
7087
|
+
v.length && o.push({ type: "MultiPolygon", coordinates: v, value: y });
|
|
7078
7088
|
}
|
|
7079
7089
|
}
|
|
7080
7090
|
}
|
|
7081
7091
|
return {
|
|
7082
7092
|
lines: [...i.entries()].map(
|
|
7083
|
-
([A,
|
|
7093
|
+
([A, y]) => y.length === 1 ? { type: "LineString", coordinates: y[0], value: A } : { type: "MultiLineString", coordinates: y, value: A }
|
|
7084
7094
|
),
|
|
7085
|
-
polygons: o.sort((A,
|
|
7095
|
+
polygons: o.sort((A, y) => A.value - y.value)
|
|
7086
7096
|
};
|
|
7087
7097
|
}
|
|
7088
|
-
function
|
|
7098
|
+
function Uo(n) {
|
|
7089
7099
|
const e = (r) => !r || !Array.isArray(r.coordinates) || r.type !== "Polygon" && r.type !== "MultiPolygon" ? null : {
|
|
7090
7100
|
type: "Feature",
|
|
7091
7101
|
properties: {},
|
|
@@ -7094,7 +7104,7 @@ function jo(n) {
|
|
|
7094
7104
|
for (let r = 0; r < n.length; r++) {
|
|
7095
7105
|
const i = n[r], o = Number(i?.value), u = e(i);
|
|
7096
7106
|
if (!u || !Number.isFinite(o)) continue;
|
|
7097
|
-
const s = e(n[r + 1]), l = s ?
|
|
7107
|
+
const s = e(n[r + 1]), l = s ? cn(ln([u, s])) : u;
|
|
7098
7108
|
l && t.push({
|
|
7099
7109
|
type: l.geometry.type,
|
|
7100
7110
|
coordinates: l.geometry.coordinates,
|
|
@@ -7103,44 +7113,44 @@ function jo(n) {
|
|
|
7103
7113
|
}
|
|
7104
7114
|
return t;
|
|
7105
7115
|
}
|
|
7106
|
-
async function
|
|
7107
|
-
const e = await
|
|
7116
|
+
async function Yo(n) {
|
|
7117
|
+
const e = await Go(n);
|
|
7108
7118
|
if (!e) return { lines: [], polygons: [] };
|
|
7109
7119
|
const { rawArr2D: t, extent: r, width: i, height: o } = e, { uniqueThresholds: u } = Ee(n.config.legend ?? []);
|
|
7110
7120
|
if (i < 2 || o < 2 || u.length === 0)
|
|
7111
7121
|
return { lines: [], polygons: [] };
|
|
7112
|
-
const s =
|
|
7122
|
+
const s = nn(n.config), l = Wr(t, i, o, s), d = new Float64Array(i * o);
|
|
7113
7123
|
for (let p = 0; p < o; p++) {
|
|
7114
7124
|
const A = l[p];
|
|
7115
|
-
for (let
|
|
7116
|
-
const v = A?.[
|
|
7117
|
-
d[p * i +
|
|
7125
|
+
for (let y = 0; y < i; y++) {
|
|
7126
|
+
const v = A?.[y];
|
|
7127
|
+
d[p * i + y] = v === void 0 || !Number.isFinite(v) ? NaN : v;
|
|
7118
7128
|
}
|
|
7119
7129
|
}
|
|
7120
|
-
const h = It().size([i, o]).thresholds(u).smooth(s > 0)(d), a =
|
|
7121
|
-
|
|
7130
|
+
const h = It().size([i, o]).thresholds(u).smooth(s > 0)(d), a = Xr(h, i, o, r), b = Xr(
|
|
7131
|
+
Uo(h),
|
|
7122
7132
|
i,
|
|
7123
7133
|
o,
|
|
7124
7134
|
r
|
|
7125
7135
|
);
|
|
7126
|
-
return { lines: a.lines, polygons:
|
|
7136
|
+
return { lines: a.lines, polygons: b.polygons };
|
|
7127
7137
|
}
|
|
7128
|
-
async function
|
|
7138
|
+
async function un(n, e) {
|
|
7129
7139
|
const t = Ie.get(n);
|
|
7130
7140
|
if (t)
|
|
7131
7141
|
return Ie.delete(n), Ie.set(n, t), t;
|
|
7132
7142
|
const r = Mt.get(n);
|
|
7133
7143
|
if (r) return r;
|
|
7134
|
-
const i =
|
|
7144
|
+
const i = Yo(e);
|
|
7135
7145
|
Mt.set(n, i);
|
|
7136
7146
|
try {
|
|
7137
7147
|
const o = await i;
|
|
7138
|
-
return
|
|
7148
|
+
return qo(n, o), o;
|
|
7139
7149
|
} finally {
|
|
7140
7150
|
Mt.get(n) === i && Mt.delete(n);
|
|
7141
7151
|
}
|
|
7142
7152
|
}
|
|
7143
|
-
function
|
|
7153
|
+
function Jo(n) {
|
|
7144
7154
|
const {
|
|
7145
7155
|
map: e,
|
|
7146
7156
|
id: t,
|
|
@@ -7153,10 +7163,10 @@ function Yo(n) {
|
|
|
7153
7163
|
lineWidth: d = 1.2,
|
|
7154
7164
|
showLabel: h = !0,
|
|
7155
7165
|
zIndex: a = 9999,
|
|
7156
|
-
visible:
|
|
7166
|
+
visible: b = !0,
|
|
7157
7167
|
geometryCacheKey: p,
|
|
7158
7168
|
visibleThresholds: A
|
|
7159
|
-
} = n,
|
|
7169
|
+
} = n, y = Or(o), v = Or(u), B = A ? new Set(A) : void 0, N = new globalThis.Map(), E = (S) => {
|
|
7160
7170
|
const z = Number(S.get("value"));
|
|
7161
7171
|
if (B && !B.has(z)) return;
|
|
7162
7172
|
const C = S.get("geometryKind") === "fill" ? "fill" : "line";
|
|
@@ -7167,7 +7177,7 @@ function Yo(n) {
|
|
|
7167
7177
|
fill: new be({ color: Wo(v, z, l) }),
|
|
7168
7178
|
zIndex: 0
|
|
7169
7179
|
}), N.set(P, F), F) : (F = new Be({
|
|
7170
|
-
stroke: new de({ color:
|
|
7180
|
+
stroke: new de({ color: y(z), width: d }),
|
|
7171
7181
|
text: h ? new yt({
|
|
7172
7182
|
text: Number.isInteger(z) ? String(z) : String(Number(z.toFixed(1))),
|
|
7173
7183
|
fill: new be({ color: "#fff" }),
|
|
@@ -7179,8 +7189,8 @@ function Yo(n) {
|
|
|
7179
7189
|
}), N.set(P, F), F));
|
|
7180
7190
|
}, L = lr(e, t);
|
|
7181
7191
|
if (p && L instanceof ot && L.get("isolineGeometryCacheKey") === p)
|
|
7182
|
-
return L.setStyle(E), L.setZIndex(a), L.setVisible(
|
|
7183
|
-
const X = new
|
|
7192
|
+
return L.setStyle(E), L.setZIndex(a), L.setVisible(b), L.setDeclutter(h), L.changed(), L;
|
|
7193
|
+
const X = new Vr().readFeatures(
|
|
7184
7194
|
{
|
|
7185
7195
|
type: "FeatureCollection",
|
|
7186
7196
|
features: [
|
|
@@ -7204,28 +7214,28 @@ function Yo(n) {
|
|
|
7204
7214
|
className: t,
|
|
7205
7215
|
source: new vt({ features: X }),
|
|
7206
7216
|
zIndex: a,
|
|
7207
|
-
visible:
|
|
7217
|
+
visible: b,
|
|
7208
7218
|
declutter: h,
|
|
7209
7219
|
style: E
|
|
7210
7220
|
});
|
|
7211
|
-
return p && R.set("isolineGeometryCacheKey", p),
|
|
7221
|
+
return p && R.set("isolineGeometryCacheKey", p), tn(e, t), e.addLayer(R), R;
|
|
7212
7222
|
}
|
|
7213
|
-
async function
|
|
7214
|
-
const { id: t, config: r } = e, i =
|
|
7223
|
+
async function Zo(n, e) {
|
|
7224
|
+
const { id: t, config: r } = e, i = on(n, t);
|
|
7215
7225
|
if (!e.url || e.signal?.aborted) return;
|
|
7216
|
-
const o =
|
|
7217
|
-
if (e.signal?.aborted || !
|
|
7226
|
+
const o = rn(e), u = await un(o, e);
|
|
7227
|
+
if (e.signal?.aborted || !ko(n, t, i)) return;
|
|
7218
7228
|
const s = lr(n, t), { uniqueThresholds: l } = Ee(
|
|
7219
7229
|
r.legend ?? [],
|
|
7220
7230
|
r.legendScope
|
|
7221
7231
|
);
|
|
7222
|
-
return
|
|
7232
|
+
return Jo({
|
|
7223
7233
|
map: n,
|
|
7224
7234
|
id: t,
|
|
7225
7235
|
isolineGeoJSON: u.lines,
|
|
7226
7236
|
contourGeoJSON: u.polygons,
|
|
7227
|
-
colorMap:
|
|
7228
|
-
fillColorMap:
|
|
7237
|
+
colorMap: Qo(r),
|
|
7238
|
+
fillColorMap: jo(r),
|
|
7229
7239
|
fillContours: r.isolineFill === !0,
|
|
7230
7240
|
fillOpacity: r.opacity,
|
|
7231
7241
|
lineWidth: r.isolineLineWidth ?? r.lineWidth,
|
|
@@ -7236,26 +7246,26 @@ async function Jo(n, e) {
|
|
|
7236
7246
|
visibleThresholds: l
|
|
7237
7247
|
});
|
|
7238
7248
|
}
|
|
7239
|
-
async function
|
|
7249
|
+
async function qi(n, e) {
|
|
7240
7250
|
const t = [...e], r = async () => {
|
|
7241
7251
|
for (; t.length; ) {
|
|
7242
7252
|
if (n.signal?.aborted) return;
|
|
7243
7253
|
const i = t.shift(), o = i, u = typeof o?.format == "function" ? o.format("YYYY-MM-DDTHH:mm:ss.SSS[Z]") : String(i), s = { ...n, time: u };
|
|
7244
|
-
await
|
|
7254
|
+
await un(rn(s), s);
|
|
7245
7255
|
}
|
|
7246
7256
|
};
|
|
7247
7257
|
await Promise.all(
|
|
7248
|
-
Array.from({ length: Math.min(
|
|
7258
|
+
Array.from({ length: Math.min(Ro, t.length) }, () => r())
|
|
7249
7259
|
);
|
|
7250
7260
|
}
|
|
7251
|
-
function
|
|
7252
|
-
|
|
7261
|
+
function Ko(n, e) {
|
|
7262
|
+
on(n, e), tn(n, e);
|
|
7253
7263
|
}
|
|
7254
|
-
function
|
|
7264
|
+
function _o(n, e, t) {
|
|
7255
7265
|
const r = lr(n, e);
|
|
7256
7266
|
r && r.setVisible(t);
|
|
7257
7267
|
}
|
|
7258
|
-
class
|
|
7268
|
+
class $o {
|
|
7259
7269
|
map;
|
|
7260
7270
|
options;
|
|
7261
7271
|
ready;
|
|
@@ -7270,7 +7280,7 @@ class _o {
|
|
|
7270
7280
|
const t = this.options.url;
|
|
7271
7281
|
if (t)
|
|
7272
7282
|
try {
|
|
7273
|
-
await
|
|
7283
|
+
await Zo(this.map, {
|
|
7274
7284
|
...this.options,
|
|
7275
7285
|
url: t,
|
|
7276
7286
|
signal: e.signal
|
|
@@ -7281,10 +7291,10 @@ class _o {
|
|
|
7281
7291
|
}
|
|
7282
7292
|
}
|
|
7283
7293
|
delete() {
|
|
7284
|
-
this.abortController.abort(),
|
|
7294
|
+
this.abortController.abort(), Ko(this.map, this.options.id);
|
|
7285
7295
|
}
|
|
7286
7296
|
toggleVisible(e) {
|
|
7287
|
-
|
|
7297
|
+
_o(this.map, this.options.id, e);
|
|
7288
7298
|
}
|
|
7289
7299
|
async updateParams(e) {
|
|
7290
7300
|
this.options = {
|
|
@@ -7297,8 +7307,8 @@ class _o {
|
|
|
7297
7307
|
}, this.ready = this.render(), await this.ready;
|
|
7298
7308
|
}
|
|
7299
7309
|
}
|
|
7300
|
-
const
|
|
7301
|
-
class
|
|
7310
|
+
const Hr = 2;
|
|
7311
|
+
class ei extends Zr {
|
|
7302
7312
|
windVectorCache = /* @__PURE__ */ new Map();
|
|
7303
7313
|
windVectorLoadingTasks = new globalThis.Map();
|
|
7304
7314
|
normalizeUrls(e) {
|
|
@@ -7332,9 +7342,9 @@ class $o extends Yr {
|
|
|
7332
7342
|
);
|
|
7333
7343
|
for (let u = 0; u < i; u++)
|
|
7334
7344
|
for (let s = 0; s < r; s++) {
|
|
7335
|
-
const l = u * r + s, d = e[l], h = t[l], a = typeof d < "u" && Number.isFinite(Number(d)),
|
|
7336
|
-
if (!a && !
|
|
7337
|
-
const p = a ? Number(d) : 0, A =
|
|
7345
|
+
const l = u * r + s, d = e[l], h = t[l], a = typeof d < "u" && Number.isFinite(Number(d)), b = typeof h < "u" && Number.isFinite(Number(h));
|
|
7346
|
+
if (!a && !b) continue;
|
|
7347
|
+
const p = a ? Number(d) : 0, A = b ? Number(h) : 0;
|
|
7338
7348
|
o[u][s] = Math.sqrt(p * p + A * A);
|
|
7339
7349
|
}
|
|
7340
7350
|
return o;
|
|
@@ -7367,24 +7377,24 @@ class $o extends Yr {
|
|
|
7367
7377
|
const l = this.windVectorLoadingTasks.get(u);
|
|
7368
7378
|
if (l) return l;
|
|
7369
7379
|
const d = (async () => {
|
|
7370
|
-
const h = this.getComponentScope(e), [a,
|
|
7380
|
+
const h = this.getComponentScope(e), [a, b] = await Promise.all([
|
|
7371
7381
|
it(o[0], h, void 0, i, {
|
|
7372
7382
|
detectNoDataByBorderColor: !1
|
|
7373
7383
|
}),
|
|
7374
7384
|
it(o[1], h, void 0, i, {
|
|
7375
7385
|
detectNoDataByBorderColor: !1
|
|
7376
7386
|
})
|
|
7377
|
-
]), p = Math.min(a?.width ?? 0,
|
|
7378
|
-
if (!p || !A || !a?.grayArr || !
|
|
7379
|
-
const
|
|
7387
|
+
]), p = Math.min(a?.width ?? 0, b?.width ?? 0), A = Math.min(a?.height ?? 0, b?.height ?? 0);
|
|
7388
|
+
if (!p || !A || !a?.grayArr || !b?.grayArr) return null;
|
|
7389
|
+
const y = new Float32Array(p * A), v = new Float32Array(p * A);
|
|
7380
7390
|
for (let N = 0; N < p * A; N++) {
|
|
7381
|
-
const E = Number(a.grayArr[N]), L = Number(
|
|
7382
|
-
|
|
7391
|
+
const E = Number(a.grayArr[N]), L = Number(b.grayArr[N]);
|
|
7392
|
+
y[N] = Number.isFinite(E) ? E : 0, v[N] = Number.isFinite(L) ? L : 0;
|
|
7383
7393
|
}
|
|
7384
7394
|
const B = {
|
|
7385
7395
|
width: p,
|
|
7386
7396
|
height: A,
|
|
7387
|
-
u:
|
|
7397
|
+
u: y,
|
|
7388
7398
|
v,
|
|
7389
7399
|
extent: Bt(r.extent)
|
|
7390
7400
|
};
|
|
@@ -7410,7 +7420,7 @@ class $o extends Yr {
|
|
|
7410
7420
|
extent: r.extent,
|
|
7411
7421
|
scope: this.getComponentScope(e)
|
|
7412
7422
|
}), u = this.contourCache.get(o);
|
|
7413
|
-
if (u && u.schemaVersion ===
|
|
7423
|
+
if (u && u.schemaVersion === Hr)
|
|
7414
7424
|
return u;
|
|
7415
7425
|
const s = this.contourLoadingTasks.get(o);
|
|
7416
7426
|
if (s)
|
|
@@ -7418,12 +7428,12 @@ class $o extends Yr {
|
|
|
7418
7428
|
const l = (async () => {
|
|
7419
7429
|
const d = await this.getOrLoadWindVectorData(e);
|
|
7420
7430
|
if (!d) return null;
|
|
7421
|
-
const { u: h, v: a, width:
|
|
7422
|
-
schemaVersion:
|
|
7431
|
+
const { u: h, v: a, width: b, height: p, extent: A } = d, y = this.buildWindSpeedGrid(h, a, b, p), v = ur(y, b, p), B = this.prepareGrid(y, b, p), N = this.prepareGrid(v, b, p), E = {
|
|
7432
|
+
schemaVersion: Hr,
|
|
7423
7433
|
rawArr2D: B,
|
|
7424
7434
|
smoothArr2D: N,
|
|
7425
7435
|
extent: A,
|
|
7426
|
-
width:
|
|
7436
|
+
width: b,
|
|
7427
7437
|
height: p
|
|
7428
7438
|
};
|
|
7429
7439
|
return this.contourCache.set(o, E), E;
|
|
@@ -7442,11 +7452,11 @@ class $o extends Yr {
|
|
|
7442
7452
|
return super.getSourceFromParams(e);
|
|
7443
7453
|
const i = await this.getOrLoadContourData(e);
|
|
7444
7454
|
if (!i) return;
|
|
7445
|
-
const { rawArr2D: o, smoothArr2D: u, extent: s, width: l, height: d } = i, h = this.getValueTransformFn(e), a = this.applyValueTransform2D(o, "raw", h),
|
|
7455
|
+
const { rawArr2D: o, smoothArr2D: u, extent: s, width: l, height: d } = i, h = this.getValueTransformFn(e), a = this.applyValueTransform2D(o, "raw", h), b = this.applyValueTransform2D(u, "smooth", h), { colorMap: p } = Ee(t.legend, t.legendScope), A = wt(t.legend, t.legendScope) ?? t.scope;
|
|
7446
7456
|
return this.getFcstRasterSource(
|
|
7447
7457
|
{
|
|
7448
7458
|
rawArr2D: a,
|
|
7449
|
-
smoothArr2D:
|
|
7459
|
+
smoothArr2D: b,
|
|
7450
7460
|
extent: s,
|
|
7451
7461
|
width: l,
|
|
7452
7462
|
height: d,
|
|
@@ -7458,8 +7468,8 @@ class $o extends Yr {
|
|
|
7458
7468
|
);
|
|
7459
7469
|
}
|
|
7460
7470
|
}
|
|
7461
|
-
const ei = "data:image/png;base64,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";
|
|
7462
|
-
class
|
|
7471
|
+
const ti = "data:image/png;base64,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";
|
|
7472
|
+
class Ir {
|
|
7463
7473
|
map;
|
|
7464
7474
|
options;
|
|
7465
7475
|
contourCache;
|
|
@@ -7542,7 +7552,7 @@ class Hr {
|
|
|
7542
7552
|
async getIconImage() {
|
|
7543
7553
|
return this.iconImagePromise ? this.iconImagePromise : (this.iconImagePromise = new Promise((e, t) => {
|
|
7544
7554
|
const r = new Image();
|
|
7545
|
-
r.crossOrigin = "anonymous", r.onload = () => e(r), r.onerror = () => t(new Error("Failed to load wind shaft sprite image")), r.src =
|
|
7555
|
+
r.crossOrigin = "anonymous", r.onload = () => e(r), r.onerror = () => t(new Error("Failed to load wind shaft sprite image")), r.src = ti;
|
|
7546
7556
|
}), this.iconImagePromise);
|
|
7547
7557
|
}
|
|
7548
7558
|
async getOrLoadWindData() {
|
|
@@ -7568,17 +7578,17 @@ class Hr {
|
|
|
7568
7578
|
if (!l || !d) return null;
|
|
7569
7579
|
const h = new Float32Array(l * d), a = new Float32Array(l * d);
|
|
7570
7580
|
for (let p = 0; p < l * d; p++) {
|
|
7571
|
-
const A = Number(u.grayArr[p]),
|
|
7572
|
-
h[p] = Number.isFinite(A) ? A : 0, a[p] = Number.isFinite(
|
|
7581
|
+
const A = Number(u.grayArr[p]), y = Number(s.grayArr[p]);
|
|
7582
|
+
h[p] = Number.isFinite(A) ? A : 0, a[p] = Number.isFinite(y) ? y : 0;
|
|
7573
7583
|
}
|
|
7574
|
-
const
|
|
7584
|
+
const b = {
|
|
7575
7585
|
width: l,
|
|
7576
7586
|
height: d,
|
|
7577
7587
|
u: h,
|
|
7578
7588
|
v: a,
|
|
7579
7589
|
extent: Bt(e.extent)
|
|
7580
7590
|
};
|
|
7581
|
-
return this.contourCache.set(t,
|
|
7591
|
+
return this.contourCache.set(t, b), b;
|
|
7582
7592
|
}
|
|
7583
7593
|
createWindShaftSource(e, t) {
|
|
7584
7594
|
const r = this.getWindShaftConfig(), {
|
|
@@ -7590,10 +7600,10 @@ class Hr {
|
|
|
7590
7600
|
maxLevel: d,
|
|
7591
7601
|
spriteCellSize: h,
|
|
7592
7602
|
baseFontSize: a,
|
|
7593
|
-
iconYOffsetRatio:
|
|
7603
|
+
iconYOffsetRatio: b,
|
|
7594
7604
|
firstRowMaxLevel: p,
|
|
7595
7605
|
firstRowStartX: A,
|
|
7596
|
-
firstRowY:
|
|
7606
|
+
firstRowY: y,
|
|
7597
7607
|
secondRowOffsetX: v,
|
|
7598
7608
|
secondRowY: B
|
|
7599
7609
|
} = r, N = this.getVisibleWindSpeedScope(), E = document.createElement("canvas"), [L, X, R, S] = e.extent, z = R - L, C = S - X;
|
|
@@ -7602,12 +7612,12 @@ class Hr {
|
|
|
7602
7612
|
ratio: 1,
|
|
7603
7613
|
interpolate: !1,
|
|
7604
7614
|
canvasFunction: (P, F, M, I) => {
|
|
7605
|
-
const g = I ?? [1, 1],
|
|
7606
|
-
E.width !==
|
|
7607
|
-
const T = this.map.getSize(), O = Math.max(1, Math.floor(T?.[0] ??
|
|
7615
|
+
const g = I ?? [1, 1], D = Math.max(1, Math.floor(g[0] ?? 1)), w = Math.max(1, Math.floor(g[1] ?? 1));
|
|
7616
|
+
E.width !== D && (E.width = D), E.height !== w && (E.height = w);
|
|
7617
|
+
const T = this.map.getSize(), O = Math.max(1, Math.floor(T?.[0] ?? D)), H = Math.max(1, Math.floor(T?.[1] ?? w)), G = D / O, V = w / H, J = (G + V) * 0.5, Y = E.getContext("2d", { alpha: !0 });
|
|
7608
7618
|
if (!Y) return E;
|
|
7609
|
-
Y.clearRect(0, 0,
|
|
7610
|
-
const
|
|
7619
|
+
Y.clearRect(0, 0, D, w);
|
|
7620
|
+
const j = o / a * J, W = h * j, K = h * j, [Z, U, te, se] = P, _ = te - Z, $ = se - U;
|
|
7611
7621
|
if (_ <= 0 || $ <= 0 || z <= 0 || C <= 0) return E;
|
|
7612
7622
|
const ae = Math.max(Z, L), ne = Math.max(U, X), he = Math.min(te, R), ue = Math.min(se, S);
|
|
7613
7623
|
if (ae >= he || ne >= ue) return E;
|
|
@@ -7627,7 +7637,7 @@ class Hr {
|
|
|
7627
7637
|
if (ve > ee || oe > Pe) return E;
|
|
7628
7638
|
for (let we = oe; we <= Pe; we += le)
|
|
7629
7639
|
for (let Fe = ve; Fe <= ee; Fe += le) {
|
|
7630
|
-
const st = Z + _ * Fe / Ae, at = se - $ * we / pe, qe = (st - L) / z * (e.width - 1), ct = (S - at) / C * (e.height - 1), Ve =
|
|
7640
|
+
const st = Z + _ * Fe / Ae, at = se - $ * we / pe, qe = (st - L) / z * (e.width - 1), ct = (S - at) / C * (e.height - 1), Ve = _t(e.u, qe, ct, e.width, e.height), Se = _t(e.v, qe, ct, e.width, e.height);
|
|
7631
7641
|
if (!Number.isFinite(Ve) || !Number.isFinite(Se)) continue;
|
|
7632
7642
|
const Ze = Math.atan2(Ve, Se) * (180 / Math.PI), Me = Math.sqrt(Ve * Ve + Se * Se);
|
|
7633
7643
|
if (Me <= s) continue;
|
|
@@ -7637,7 +7647,7 @@ class Hr {
|
|
|
7637
7647
|
continue;
|
|
7638
7648
|
}
|
|
7639
7649
|
const Ke = Math.min(Math.ceil(Me / l), d - 1);
|
|
7640
|
-
let lt = A + Ke, ft =
|
|
7650
|
+
let lt = A + Ke, ft = y;
|
|
7641
7651
|
Ke > p && (lt = Ke - v, ft = B), Y.save();
|
|
7642
7652
|
const ht = Fe * G, Oe = we * V;
|
|
7643
7653
|
Y.translate(ht, Oe), Y.rotate(Ze * Math.PI / 180), Y.drawImage(
|
|
@@ -7646,11 +7656,11 @@ class Hr {
|
|
|
7646
7656
|
ft * h,
|
|
7647
7657
|
h,
|
|
7648
7658
|
h,
|
|
7649
|
-
-
|
|
7650
|
-
-K *
|
|
7651
|
-
|
|
7659
|
+
-W / 2,
|
|
7660
|
+
-K * b,
|
|
7661
|
+
W,
|
|
7652
7662
|
K
|
|
7653
|
-
), Y.globalCompositeOperation = "source-atop", Y.fillStyle = u, Y.fillRect(-
|
|
7663
|
+
), Y.globalCompositeOperation = "source-atop", Y.fillStyle = u, Y.fillRect(-W / 2, -K * b, W, K), Y.globalCompositeOperation = "source-over", Y.restore();
|
|
7654
7664
|
}
|
|
7655
7665
|
return E;
|
|
7656
7666
|
}
|
|
@@ -7705,7 +7715,7 @@ class Hr {
|
|
|
7705
7715
|
r && t.setSource(r);
|
|
7706
7716
|
}
|
|
7707
7717
|
}
|
|
7708
|
-
class
|
|
7718
|
+
class ri {
|
|
7709
7719
|
map;
|
|
7710
7720
|
options;
|
|
7711
7721
|
constructor(e, t) {
|
|
@@ -7785,7 +7795,7 @@ class ti {
|
|
|
7785
7795
|
...o,
|
|
7786
7796
|
...this.buildWmsParams()
|
|
7787
7797
|
};
|
|
7788
|
-
return new
|
|
7798
|
+
return new dn({
|
|
7789
7799
|
interpolate: !0,
|
|
7790
7800
|
url: i,
|
|
7791
7801
|
params: u,
|
|
@@ -7803,15 +7813,15 @@ class ti {
|
|
|
7803
7813
|
}).then(async (h) => {
|
|
7804
7814
|
const a = (h.headers.get("content-type") || "").toLowerCase();
|
|
7805
7815
|
if (!h.ok) {
|
|
7806
|
-
const
|
|
7816
|
+
const b = await h.text();
|
|
7807
7817
|
throw new Error(
|
|
7808
|
-
`WMS tile request failed: ${h.status} ${h.statusText}; ${
|
|
7818
|
+
`WMS tile request failed: ${h.status} ${h.statusText}; ${b.slice(0, 240)}`
|
|
7809
7819
|
);
|
|
7810
7820
|
}
|
|
7811
7821
|
if (!a.includes("image/")) {
|
|
7812
|
-
const
|
|
7822
|
+
const b = await h.text();
|
|
7813
7823
|
throw new Error(
|
|
7814
|
-
`WMS tile response is not image: ${a}; ${
|
|
7824
|
+
`WMS tile response is not image: ${a}; ${b.slice(0, 240)}`
|
|
7815
7825
|
);
|
|
7816
7826
|
}
|
|
7817
7827
|
return h.blob();
|
|
@@ -7841,7 +7851,7 @@ class ti {
|
|
|
7841
7851
|
o && this.delete();
|
|
7842
7852
|
const u = o ? o.getZIndex() : t, s = this.createSource();
|
|
7843
7853
|
if (!s) return;
|
|
7844
|
-
const l = new
|
|
7854
|
+
const l = new qr({
|
|
7845
7855
|
className: i,
|
|
7846
7856
|
source: s,
|
|
7847
7857
|
zIndex: u,
|
|
@@ -7887,17 +7897,17 @@ class ti {
|
|
|
7887
7897
|
});
|
|
7888
7898
|
}
|
|
7889
7899
|
}
|
|
7890
|
-
function
|
|
7900
|
+
function ni(n) {
|
|
7891
7901
|
return String(n ?? "").trim().replace(/\/+$/, "");
|
|
7892
7902
|
}
|
|
7893
|
-
function
|
|
7903
|
+
function oi(n, e) {
|
|
7894
7904
|
const t = ye();
|
|
7895
|
-
return `${
|
|
7905
|
+
return `${ni(
|
|
7896
7906
|
e || t.typhoonServiceBaseUrl || t.serviceBaseUrl
|
|
7897
7907
|
)}/${n.replace(/^\/+/, "")}`;
|
|
7898
7908
|
}
|
|
7899
|
-
async function
|
|
7900
|
-
const t = ye(), r = e?.authorization ?? t.typhoonAuthorization, i = await fetch(
|
|
7909
|
+
async function sn(n, e) {
|
|
7910
|
+
const t = ye(), r = e?.authorization ?? t.typhoonAuthorization, i = await fetch(oi(n, e?.serviceBaseUrl), {
|
|
7901
7911
|
credentials: "include",
|
|
7902
7912
|
signal: e?.signal,
|
|
7903
7913
|
headers: r ? { Authorization: r } : void 0
|
|
@@ -7916,15 +7926,15 @@ async function on(n, e) {
|
|
|
7916
7926
|
}
|
|
7917
7927
|
return await i.json();
|
|
7918
7928
|
}
|
|
7919
|
-
function
|
|
7929
|
+
function ii(n) {
|
|
7920
7930
|
const e = n?.dataPath || ye().typhoonDataPath;
|
|
7921
|
-
return
|
|
7931
|
+
return sn(`fileServer/${e}/typhoon_list.json`, n);
|
|
7922
7932
|
}
|
|
7923
|
-
function
|
|
7933
|
+
function ui(n, e) {
|
|
7924
7934
|
const t = e?.dataPath || ye().typhoonDataPath;
|
|
7925
|
-
return
|
|
7935
|
+
return sn(`fileServer/${t}/${n}.json`, e);
|
|
7926
7936
|
}
|
|
7927
|
-
const
|
|
7937
|
+
const si = ["BABJ|WTPQ20", "RJTD|WTPQ51", "RJTD|WTPQ50"], Rr = ["#d9480f", "#1971c2", "#2b8a3e", "#862e9c", "#0b7285", "#c92a2a"], ai = {
|
|
7928
7938
|
TD: "热带低压",
|
|
7929
7939
|
TS: "热带风暴",
|
|
7930
7940
|
"TROPICAL STORM": "热带风暴",
|
|
@@ -7936,16 +7946,16 @@ const ui = ["BABJ|WTPQ20", "RJTD|WTPQ51", "RJTD|WTPQ50"], Ir = ["#d9480f", "#197
|
|
|
7936
7946
|
function Xt(n) {
|
|
7937
7947
|
return Array.isArray(n) ? n : Array.isArray(n?.points) ? n.points : [];
|
|
7938
7948
|
}
|
|
7939
|
-
function
|
|
7949
|
+
function ci(n) {
|
|
7940
7950
|
return Number.isFinite(n?.lon) && Number.isFinite(n?.lat);
|
|
7941
7951
|
}
|
|
7942
7952
|
function Ht(n) {
|
|
7943
|
-
return n.filter(
|
|
7953
|
+
return n.filter(ci).slice().sort((e, t) => {
|
|
7944
7954
|
const r = Date.parse(e.datetime || ""), i = Date.parse(t.datetime || "");
|
|
7945
7955
|
return Number.isFinite(r) && Number.isFinite(i) && r !== i ? r - i : Number(e.validtime || 0) - Number(t.validtime || 0);
|
|
7946
7956
|
});
|
|
7947
7957
|
}
|
|
7948
|
-
class
|
|
7958
|
+
class li {
|
|
7949
7959
|
map;
|
|
7950
7960
|
options;
|
|
7951
7961
|
abortController;
|
|
@@ -7962,7 +7972,7 @@ class ci {
|
|
|
7962
7972
|
async add() {
|
|
7963
7973
|
ge(this.map, this.getClassName()) && this.delete(), this.abortController?.abort(), this.abortController = new AbortController();
|
|
7964
7974
|
try {
|
|
7965
|
-
const t = await
|
|
7975
|
+
const t = await ii({
|
|
7966
7976
|
serviceBaseUrl: this.getConfig().serviceBaseUrl,
|
|
7967
7977
|
dataPath: this.getConfig().dataPath,
|
|
7968
7978
|
authorization: this.options.authorization,
|
|
@@ -7971,7 +7981,7 @@ class ci {
|
|
|
7971
7981
|
if (this.abortController.signal.aborted) return;
|
|
7972
7982
|
const r = this.getSelectedTyphoonNums(t), i = await Promise.all(
|
|
7973
7983
|
r.map(
|
|
7974
|
-
(o) =>
|
|
7984
|
+
(o) => ui(o, {
|
|
7975
7985
|
serviceBaseUrl: this.getConfig().serviceBaseUrl,
|
|
7976
7986
|
dataPath: this.getConfig().dataPath,
|
|
7977
7987
|
authorization: this.options.authorization,
|
|
@@ -7993,7 +8003,7 @@ class ci {
|
|
|
7993
8003
|
}
|
|
7994
8004
|
getPrimarySource(e, t) {
|
|
7995
8005
|
const r = t === "obs" ? e.obs : e.fcst, i = Object.keys(r ?? {});
|
|
7996
|
-
return (this.getConfig().sourcePriority ??
|
|
8006
|
+
return (this.getConfig().sourcePriority ?? si).find((u) => i.includes(u)) ?? i[0];
|
|
7997
8007
|
}
|
|
7998
8008
|
getLastPoint(e) {
|
|
7999
8009
|
return e.length ? e[e.length - 1] : void 0;
|
|
@@ -8022,7 +8032,7 @@ class ci {
|
|
|
8022
8032
|
const o = i ? i.getZIndex() : r, u = new vt();
|
|
8023
8033
|
t.forEach((l, d) => {
|
|
8024
8034
|
const h = e.find((a) => a.num_inati === l.typhoon_num);
|
|
8025
|
-
this.appendTyphoonFeatures(u, l, h,
|
|
8035
|
+
this.appendTyphoonFeatures(u, l, h, Rr[d % Rr.length]);
|
|
8026
8036
|
});
|
|
8027
8037
|
const s = new ot({
|
|
8028
8038
|
className: this.getClassName(),
|
|
@@ -8041,15 +8051,15 @@ class ci {
|
|
|
8041
8051
|
if (Object.entries(t.obs ?? {}).forEach(([d, h]) => {
|
|
8042
8052
|
const a = Ht(Xt(h));
|
|
8043
8053
|
if (!a.length) return;
|
|
8044
|
-
const
|
|
8054
|
+
const b = d === u;
|
|
8045
8055
|
this.addLineFeature(e, a, {
|
|
8046
8056
|
kind: "obs",
|
|
8047
8057
|
sourceName: d,
|
|
8048
8058
|
color: i,
|
|
8049
|
-
isPrimary:
|
|
8059
|
+
isPrimary: b,
|
|
8050
8060
|
typhoonName: o,
|
|
8051
8061
|
typhoonNum: t.typhoon_num
|
|
8052
|
-
}),
|
|
8062
|
+
}), b && this.addPointFeatures(e, a, {
|
|
8053
8063
|
kind: "obs",
|
|
8054
8064
|
sourceName: d,
|
|
8055
8065
|
color: i,
|
|
@@ -8061,18 +8071,18 @@ class ci {
|
|
|
8061
8071
|
Object.entries(t.fcst ?? {}).forEach(([d, h]) => {
|
|
8062
8072
|
const a = Ht(Xt(h));
|
|
8063
8073
|
if (!a.length) return;
|
|
8064
|
-
const
|
|
8074
|
+
const b = d === l, p = this.getForecastAnchorPoint(t, d, a, u), A = p ? [p, ...a] : a;
|
|
8065
8075
|
this.addLineFeature(e, A, {
|
|
8066
8076
|
kind: "fcst",
|
|
8067
8077
|
sourceName: d,
|
|
8068
8078
|
color: i,
|
|
8069
|
-
isPrimary:
|
|
8079
|
+
isPrimary: b,
|
|
8070
8080
|
typhoonName: o,
|
|
8071
8081
|
typhoonNum: t.typhoon_num
|
|
8072
8082
|
}), this.addForecastLabelFeature(e, a[a.length - 1], {
|
|
8073
8083
|
sourceName: d,
|
|
8074
8084
|
color: i,
|
|
8075
|
-
isPrimary:
|
|
8085
|
+
isPrimary: b,
|
|
8076
8086
|
typhoonName: o,
|
|
8077
8087
|
typhoonNum: t.typhoon_num
|
|
8078
8088
|
});
|
|
@@ -8081,12 +8091,12 @@ class ci {
|
|
|
8081
8091
|
addLineFeature(e, t, r) {
|
|
8082
8092
|
if (!(t.length < 2))
|
|
8083
8093
|
for (let i = 1; i < t.length; i++) {
|
|
8084
|
-
const o = t[i - 1], u = t[i], s = new
|
|
8094
|
+
const o = t[i - 1], u = t[i], s = new mn([
|
|
8085
8095
|
rt([o.lon, o.lat]),
|
|
8086
8096
|
rt([u.lon, u.lat])
|
|
8087
8097
|
]);
|
|
8088
8098
|
e.addFeature(
|
|
8089
|
-
new
|
|
8099
|
+
new Wt({
|
|
8090
8100
|
geometry: s,
|
|
8091
8101
|
featureType: `${r.kind}-line`,
|
|
8092
8102
|
grade: u.grade,
|
|
@@ -8097,7 +8107,7 @@ class ci {
|
|
|
8097
8107
|
}
|
|
8098
8108
|
addPointFeatures(e, t, r) {
|
|
8099
8109
|
t.forEach((i, o) => {
|
|
8100
|
-
const u = o === t.length - 1, s = new
|
|
8110
|
+
const u = o === t.length - 1, s = new Wt({
|
|
8101
8111
|
geometry: new mr(rt([i.lon, i.lat])),
|
|
8102
8112
|
featureType: u ? "latest-point" : "obs-point",
|
|
8103
8113
|
datetime: i.datetime,
|
|
@@ -8110,7 +8120,7 @@ class ci {
|
|
|
8110
8120
|
});
|
|
8111
8121
|
}
|
|
8112
8122
|
addForecastLabelFeature(e, t, r) {
|
|
8113
|
-
const i = new
|
|
8123
|
+
const i = new Wt({
|
|
8114
8124
|
geometry: new mr(rt([t.lon, t.lat])),
|
|
8115
8125
|
featureType: "fcst-label",
|
|
8116
8126
|
datetime: t.datetime,
|
|
@@ -8159,14 +8169,14 @@ class ci {
|
|
|
8159
8169
|
})
|
|
8160
8170
|
});
|
|
8161
8171
|
else {
|
|
8162
|
-
const
|
|
8172
|
+
const b = t === "latest-point";
|
|
8163
8173
|
a = new Be({
|
|
8164
8174
|
image: new Vt({
|
|
8165
|
-
radius:
|
|
8175
|
+
radius: b ? 6 : 4,
|
|
8166
8176
|
fill: new be({ color: h }),
|
|
8167
|
-
stroke: new de({ color: "#fff", width:
|
|
8177
|
+
stroke: new de({ color: "#fff", width: b ? 2 : 1.5 })
|
|
8168
8178
|
}),
|
|
8169
|
-
text:
|
|
8179
|
+
text: b ? new yt({
|
|
8170
8180
|
text: u,
|
|
8171
8181
|
font: "bold 13px sans-serif",
|
|
8172
8182
|
fill: new be({ color: "#1f2937" }),
|
|
@@ -8180,7 +8190,7 @@ class ci {
|
|
|
8180
8190
|
getGradeColor(e, t) {
|
|
8181
8191
|
const r = String(e || "").trim();
|
|
8182
8192
|
if (!r) return t;
|
|
8183
|
-
const i =
|
|
8193
|
+
const i = ai[r] || r, o = this.options.config.legend.find((s) => s.name === i), u = this.options.config.legend.find((s) => s.name === "其他");
|
|
8184
8194
|
return o?.color || u?.color || t;
|
|
8185
8195
|
}
|
|
8186
8196
|
delete() {
|
|
@@ -8200,22 +8210,22 @@ class ci {
|
|
|
8200
8210
|
}, this.add();
|
|
8201
8211
|
}
|
|
8202
8212
|
}
|
|
8203
|
-
const
|
|
8213
|
+
const fi = {
|
|
8204
8214
|
center: [118.7969, 32.0603],
|
|
8205
8215
|
zoom: 5,
|
|
8206
8216
|
layers: []
|
|
8207
8217
|
};
|
|
8208
|
-
function
|
|
8209
|
-
e?.mapMethodsConfig &&
|
|
8218
|
+
function Vi(n, e) {
|
|
8219
|
+
e?.mapMethodsConfig && An(e.mapMethodsConfig);
|
|
8210
8220
|
const t = {
|
|
8211
|
-
...
|
|
8221
|
+
...fi,
|
|
8212
8222
|
...e ?? {}
|
|
8213
8223
|
};
|
|
8214
8224
|
return new Promise((r) => {
|
|
8215
|
-
const i = new
|
|
8225
|
+
const i = new fn({
|
|
8216
8226
|
target: n,
|
|
8217
8227
|
layers: [],
|
|
8218
|
-
view: new
|
|
8228
|
+
view: new hn({
|
|
8219
8229
|
center: rt(t.center),
|
|
8220
8230
|
// projection: 'EPSG:4326', // EPSG:3857(默认坐标格式)
|
|
8221
8231
|
zoom: t.zoom
|
|
@@ -8223,7 +8233,7 @@ function qi(n, e) {
|
|
|
8223
8233
|
controls: []
|
|
8224
8234
|
});
|
|
8225
8235
|
t.layers.forEach((o) => {
|
|
8226
|
-
|
|
8236
|
+
hi(i, o);
|
|
8227
8237
|
}), r(i);
|
|
8228
8238
|
});
|
|
8229
8239
|
}
|
|
@@ -8234,17 +8244,17 @@ function ze(n, e) {
|
|
|
8234
8244
|
const t = ge(n, e);
|
|
8235
8245
|
t && n.removeLayer(t);
|
|
8236
8246
|
}
|
|
8237
|
-
function
|
|
8238
|
-
const t = new
|
|
8247
|
+
function hi(n, e) {
|
|
8248
|
+
const t = new qr({
|
|
8239
8249
|
className: e.id,
|
|
8240
|
-
source: new
|
|
8250
|
+
source: new gn({
|
|
8241
8251
|
...e.source
|
|
8242
8252
|
}),
|
|
8243
8253
|
zIndex: e.zIndex ?? 0
|
|
8244
8254
|
});
|
|
8245
8255
|
n.addLayer(t);
|
|
8246
8256
|
}
|
|
8247
|
-
function
|
|
8257
|
+
function Gi(n, e) {
|
|
8248
8258
|
ze(n, e);
|
|
8249
8259
|
}
|
|
8250
8260
|
function Ne(n, e, t) {
|
|
@@ -8253,11 +8263,11 @@ function Ne(n, e, t) {
|
|
|
8253
8263
|
r && r.setVisible(t);
|
|
8254
8264
|
}
|
|
8255
8265
|
const ie = [];
|
|
8256
|
-
function
|
|
8266
|
+
function ki(n, e) {
|
|
8257
8267
|
if (!n) return;
|
|
8258
8268
|
const t = Array.isArray(e.type) ? e.type : [e.type];
|
|
8259
8269
|
if (t.includes("gradual")) {
|
|
8260
|
-
const r = new
|
|
8270
|
+
const r = new Zr(n, e);
|
|
8261
8271
|
if (ie.push(r), t.includes("grid")) {
|
|
8262
8272
|
const i = { ...e, type: "grid" }, o = new Zt(n, i, async () => {
|
|
8263
8273
|
const u = await r.getOrLoadContourData();
|
|
@@ -8268,10 +8278,10 @@ function Gi(n, e) {
|
|
|
8268
8278
|
height: u.height
|
|
8269
8279
|
} : null;
|
|
8270
8280
|
});
|
|
8271
|
-
|
|
8281
|
+
Fr(e.id, o);
|
|
8272
8282
|
}
|
|
8273
8283
|
} else if (t.includes("uv")) {
|
|
8274
|
-
const r = new
|
|
8284
|
+
const r = new ei(n, e);
|
|
8275
8285
|
if (ie.push(r), t.includes("grid")) {
|
|
8276
8286
|
const i = { ...e, type: "grid" }, o = new Zt(n, i, async () => {
|
|
8277
8287
|
const u = await r.getOrLoadContourData();
|
|
@@ -8282,47 +8292,47 @@ function Gi(n, e) {
|
|
|
8282
8292
|
height: u.height
|
|
8283
8293
|
} : null;
|
|
8284
8294
|
});
|
|
8285
|
-
|
|
8295
|
+
Fr(e.id, o);
|
|
8286
8296
|
}
|
|
8287
8297
|
if (t.includes("windShaft")) {
|
|
8288
|
-
const i = new
|
|
8298
|
+
const i = new Ir(n, e, async () => r.getOrLoadWindVectorData());
|
|
8289
8299
|
ie.push(i);
|
|
8290
8300
|
}
|
|
8291
8301
|
} else if (t.includes("grid")) {
|
|
8292
8302
|
const r = new Zt(n, e);
|
|
8293
8303
|
ie.push(r);
|
|
8294
8304
|
} else if (t.includes("arrow")) {
|
|
8295
|
-
const r = new
|
|
8305
|
+
const r = new co(n, e);
|
|
8296
8306
|
ie.push(r);
|
|
8297
8307
|
} else if (t.includes("micaps")) {
|
|
8298
|
-
const r = new
|
|
8308
|
+
const r = new Xo(n, e);
|
|
8299
8309
|
ie.push(r);
|
|
8300
8310
|
} else if (t.includes("isoline") || t.includes("contour")) {
|
|
8301
|
-
const r = new
|
|
8311
|
+
const r = new $o(n, e);
|
|
8302
8312
|
ie.push(r);
|
|
8303
8313
|
} else if (t.includes("wms")) {
|
|
8304
|
-
const r = new
|
|
8314
|
+
const r = new ri(n, e);
|
|
8305
8315
|
ie.push(r);
|
|
8306
8316
|
} else if (t.includes("typhoon")) {
|
|
8307
|
-
const r = new
|
|
8317
|
+
const r = new li(n, e);
|
|
8308
8318
|
ie.push(r);
|
|
8309
8319
|
} else if (t.includes("windShaft")) {
|
|
8310
|
-
const r = new
|
|
8320
|
+
const r = new Ir(n, e);
|
|
8311
8321
|
ie.push(r);
|
|
8312
8322
|
}
|
|
8313
8323
|
}
|
|
8314
|
-
function
|
|
8324
|
+
function Qi(n) {
|
|
8315
8325
|
for (let t = ie.length - 1; t >= 0; t--)
|
|
8316
8326
|
ie[t].options.id === n && (ie[t].delete(), ie.splice(t, 1));
|
|
8317
8327
|
const e = sr(n);
|
|
8318
|
-
e && (e.delete(),
|
|
8328
|
+
e && (e.delete(), uo(n));
|
|
8319
8329
|
}
|
|
8320
|
-
function
|
|
8330
|
+
function ji() {
|
|
8321
8331
|
ie.forEach((n) => {
|
|
8322
8332
|
n.delete();
|
|
8323
|
-
}),
|
|
8333
|
+
}), so((n) => {
|
|
8324
8334
|
n.delete();
|
|
8325
|
-
}),
|
|
8335
|
+
}), ao(), ie.length = 0;
|
|
8326
8336
|
}
|
|
8327
8337
|
function Wi(n, e) {
|
|
8328
8338
|
ie.filter((i) => i.options.id === n).forEach((i) => {
|
|
@@ -8331,7 +8341,7 @@ function Wi(n, e) {
|
|
|
8331
8341
|
const r = sr(n);
|
|
8332
8342
|
r && r.toggleVisible(e);
|
|
8333
8343
|
}
|
|
8334
|
-
function
|
|
8344
|
+
function Ui(n) {
|
|
8335
8345
|
const e = ie.filter((r) => r.options.id === n.id);
|
|
8336
8346
|
console.log("🚀 ~ updateLayer ~ layer:", ie, n, e), e.forEach((r) => {
|
|
8337
8347
|
r.updateParams(n);
|
|
@@ -8339,107 +8349,108 @@ function ji(n) {
|
|
|
8339
8349
|
const t = sr(n.id);
|
|
8340
8350
|
t && t.updateParams({ ...n, type: "grid" });
|
|
8341
8351
|
}
|
|
8342
|
-
function
|
|
8352
|
+
function Yi(n, e) {
|
|
8343
8353
|
ie.filter((r) => r.options.id === n).forEach((r) => {
|
|
8344
8354
|
typeof r.updateColor == "function" && r.updateColor(e);
|
|
8345
8355
|
});
|
|
8346
8356
|
}
|
|
8347
|
-
function
|
|
8357
|
+
function Ji() {
|
|
8348
8358
|
return ie;
|
|
8349
8359
|
}
|
|
8350
|
-
function
|
|
8360
|
+
function Zi() {
|
|
8351
8361
|
const n = new globalThis.Map();
|
|
8352
8362
|
return ie.forEach((e) => {
|
|
8353
8363
|
const t = e?.options;
|
|
8354
8364
|
!t?.id || n.has(t.id) || n.set(t.id, t);
|
|
8355
8365
|
}), Array.from(n.values());
|
|
8356
8366
|
}
|
|
8357
|
-
function
|
|
8367
|
+
function Ki(n, e, t, r, i = !1) {
|
|
8358
8368
|
if (!n) return Promise.resolve(null);
|
|
8359
8369
|
const o = ie.find((u) => u.options.id === e);
|
|
8360
8370
|
return o && typeof o.getValueByLonLat == "function" ? o.getValueByLonLat(t, r, i) : Promise.resolve(null);
|
|
8361
8371
|
}
|
|
8362
8372
|
export {
|
|
8363
|
-
|
|
8364
|
-
|
|
8365
|
-
|
|
8373
|
+
co as ArrowLayer,
|
|
8374
|
+
Fi as CommonMethods,
|
|
8375
|
+
Zr as FcstLayer,
|
|
8366
8376
|
Zt as GridLayer,
|
|
8367
|
-
|
|
8368
|
-
|
|
8369
|
-
|
|
8370
|
-
|
|
8371
|
-
|
|
8372
|
-
|
|
8373
|
-
|
|
8374
|
-
|
|
8377
|
+
$o as IsolineLayer,
|
|
8378
|
+
Xo as MicLayer,
|
|
8379
|
+
li as TyphoonLayer,
|
|
8380
|
+
ei as WindLayer,
|
|
8381
|
+
Ir as WindShaft,
|
|
8382
|
+
ri as WmsLayer,
|
|
8383
|
+
Jo as addIsolineLayer,
|
|
8384
|
+
hi as addTile,
|
|
8375
8385
|
Bt as bboxFromLonlatTo3857,
|
|
8376
|
-
|
|
8386
|
+
_t as bilinearInterpolate,
|
|
8377
8387
|
tt as clampByte,
|
|
8378
|
-
|
|
8379
|
-
|
|
8380
|
-
|
|
8381
|
-
|
|
8382
|
-
|
|
8383
|
-
|
|
8384
|
-
|
|
8385
|
-
|
|
8386
|
-
|
|
8387
|
-
|
|
8388
|
-
|
|
8388
|
+
ji as clearAllLayers,
|
|
8389
|
+
ao as clearLinkedGridLayerMap,
|
|
8390
|
+
An as configureMapMethods,
|
|
8391
|
+
Ii as convertContourGeoJSONTo3857,
|
|
8392
|
+
Hi as convertContourGeoJSONToLngLat,
|
|
8393
|
+
Zo as createIsoline,
|
|
8394
|
+
Mo as createMicContour,
|
|
8395
|
+
Dn as createTdsRequestUrl,
|
|
8396
|
+
uo as deleteLinkedGridLayer,
|
|
8397
|
+
Oi as fetchExcel,
|
|
8398
|
+
En as fetchImageBase64,
|
|
8389
8399
|
ir as fetchTdsGet,
|
|
8390
|
-
|
|
8400
|
+
Xi as fetchTdsImageBase64,
|
|
8391
8401
|
or as fetchTdsResponse,
|
|
8392
|
-
|
|
8393
|
-
|
|
8394
|
-
|
|
8395
|
-
|
|
8402
|
+
Mi as fetchTxtOrJson,
|
|
8403
|
+
Cn as fetchXMLFromUrl,
|
|
8404
|
+
kr as fetchXmlData,
|
|
8405
|
+
so as forEachLinkedGridLayer,
|
|
8396
8406
|
ur as gaussianBlur2D,
|
|
8397
8407
|
Ee as generateLegend,
|
|
8398
8408
|
Gt as getContourParams,
|
|
8399
8409
|
it as getGrayDataFromImage,
|
|
8400
8410
|
ge as getLayerByClassName,
|
|
8401
|
-
|
|
8411
|
+
Ur as getLegendItemsByScope,
|
|
8402
8412
|
wt as getLegendValueScope,
|
|
8403
8413
|
sr as getLinkedGridLayer,
|
|
8404
|
-
|
|
8405
|
-
|
|
8414
|
+
Zi as getLoadedLayerOptions,
|
|
8415
|
+
Ji as getLoadedLayers,
|
|
8406
8416
|
ye as getMapMethodsConfig,
|
|
8407
|
-
|
|
8408
|
-
|
|
8409
|
-
|
|
8410
|
-
|
|
8411
|
-
|
|
8412
|
-
|
|
8413
|
-
|
|
8414
|
-
|
|
8415
|
-
|
|
8416
|
-
|
|
8417
|
-
|
|
8417
|
+
jn as getMenuList,
|
|
8418
|
+
Gn as getNCXmlData,
|
|
8419
|
+
xr as getNodeData,
|
|
8420
|
+
Yr as getRasterRequestGeometry,
|
|
8421
|
+
ui as getTyphoonDetail,
|
|
8422
|
+
ii as getTyphoonList,
|
|
8423
|
+
qn as getUrlFromTime,
|
|
8424
|
+
Ki as getValueByLonLat,
|
|
8425
|
+
Qn as getVariableMinMax,
|
|
8426
|
+
zn as getWidthAndHeight,
|
|
8427
|
+
Nr as getXmlData,
|
|
8428
|
+
Vi as initMap,
|
|
8418
8429
|
Nt as lerp,
|
|
8419
|
-
|
|
8420
|
-
|
|
8430
|
+
ki as loadLayer,
|
|
8431
|
+
Ri as mapValueToRGBA,
|
|
8421
8432
|
nt as normalizeSmoothnessLevel,
|
|
8422
|
-
|
|
8433
|
+
Er as parseAlpha,
|
|
8423
8434
|
zt as parseColorToRGBA,
|
|
8424
8435
|
et as parseCssNumber,
|
|
8425
|
-
|
|
8426
|
-
|
|
8427
|
-
|
|
8428
|
-
|
|
8429
|
-
|
|
8436
|
+
$t as parseXML,
|
|
8437
|
+
Hn as pixelTo3857,
|
|
8438
|
+
In as pixelToLngLat,
|
|
8439
|
+
qi as preloadIsoline,
|
|
8440
|
+
Ko as removeIsolineLayer,
|
|
8430
8441
|
ze as removeLayer,
|
|
8431
|
-
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
|
|
8435
|
-
|
|
8436
|
-
|
|
8437
|
-
|
|
8438
|
-
|
|
8442
|
+
Qi as removeLayerById,
|
|
8443
|
+
Oo as removeMicContour,
|
|
8444
|
+
Gi as removeTile,
|
|
8445
|
+
no as renderFcstCanvasByWebGPU,
|
|
8446
|
+
Si as resetMapMethodsConfig,
|
|
8447
|
+
zi as resolveLayerLoadOptions,
|
|
8448
|
+
jr as resolveSymFunction,
|
|
8449
|
+
Fr as setLinkedGridLayer,
|
|
8439
8450
|
Wr as smoothGridByLevel,
|
|
8440
|
-
|
|
8451
|
+
_o as toggleIsolineLayer,
|
|
8441
8452
|
Ne as toggleLayerShowHide,
|
|
8442
8453
|
Wi as toggleVisibleById,
|
|
8443
|
-
|
|
8444
|
-
|
|
8454
|
+
Ui as updateLayer,
|
|
8455
|
+
Yi as updateWmsLayerColor
|
|
8445
8456
|
};
|