@bicharts/chart-host 0.6.33 → 0.6.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-3GA6D5WX.mjs → chunk-6JAF422N.mjs} +851 -844
- package/dist/index.mjs +3 -3
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -21,14 +21,14 @@ var require_papaparse_min = __commonJS({
|
|
|
21
21
|
((e, t) => {
|
|
22
22
|
"function" == typeof define && define.amd ? define([], t) : "object" == typeof module && "undefined" != typeof exports ? module.exports = t() : e.Papa = t();
|
|
23
23
|
})(exports, function r() {
|
|
24
|
-
var
|
|
25
|
-
var d2, s = !
|
|
24
|
+
var n2 = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n2 ? n2 : {};
|
|
25
|
+
var d2, s = !n2.document && !!n2.postMessage, a2 = n2.IS_PAPA_WORKER || false, o2 = {}, h3 = 0, v3 = {};
|
|
26
26
|
function P4(e) {
|
|
27
27
|
return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
|
|
28
28
|
}
|
|
29
29
|
function u2(e) {
|
|
30
30
|
this._handle = null, this._finished = false, this._completed = false, this._halted = false, this._input = null, this._baseIndex = 0, this._partialLine = "", this._rowCount = 0, this._start = 0, this._nextChunk = null, this.isFirstChunk = true, this._completeResults = { data: [], errors: [], meta: {} }, function(e2) {
|
|
31
|
-
var t =
|
|
31
|
+
var t = b2(e2);
|
|
32
32
|
t.chunkSize = parseInt(t.chunkSize), e2.step || e2.chunk || (t.chunkSize = null);
|
|
33
33
|
this._handle = new i(t), (this._handle.streamer = this)._config = t;
|
|
34
34
|
}.call(this, e), this.parseChunk = function(t, e2) {
|
|
@@ -37,25 +37,25 @@ var require_papaparse_min = __commonJS({
|
|
|
37
37
|
let e4 = this._config.newline;
|
|
38
38
|
e4 || (r2 = this._config.quoteChar || '"', e4 = this._handle.guessLineEndings(t, r2)), t = [...t.split(e4).slice(i2)].join(e4);
|
|
39
39
|
}
|
|
40
|
-
this.isFirstChunk &&
|
|
40
|
+
this.isFirstChunk && q2(this._config.beforeFirstChunk) && void 0 !== (r2 = this._config.beforeFirstChunk(t)) && (t = r2), this.isFirstChunk = false, this._halted = false;
|
|
41
41
|
var i2 = this._partialLine + t, r2 = (this._partialLine = "", this._handle.parse(i2, this._baseIndex, !this._finished));
|
|
42
42
|
if (!this._handle.paused() && !this._handle.aborted()) {
|
|
43
43
|
t = r2.meta.cursor, i2 = (this._finished || (this._partialLine = i2.substring(t - this._baseIndex), this._baseIndex = t), r2 && r2.data && (this._rowCount += r2.data.length), this._finished || this._config.preview && this._rowCount >= this._config.preview);
|
|
44
|
-
if (
|
|
45
|
-
else if (
|
|
44
|
+
if (a2) n2.postMessage({ results: r2, workerId: v3.WORKER_ID, finished: i2 });
|
|
45
|
+
else if (q2(this._config.chunk) && !e2) {
|
|
46
46
|
if (this._config.chunk(r2, this._handle), this._handle.paused() || this._handle.aborted()) return void (this._halted = true);
|
|
47
47
|
this._completeResults = r2 = void 0;
|
|
48
48
|
}
|
|
49
|
-
return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(r2.data), this._completeResults.errors = this._completeResults.errors.concat(r2.errors), this._completeResults.meta = r2.meta), this._completed || !i2 || !
|
|
49
|
+
return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(r2.data), this._completeResults.errors = this._completeResults.errors.concat(r2.errors), this._completeResults.meta = r2.meta), this._completed || !i2 || !q2(this._config.complete) || r2 && r2.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), i2 || r2 && r2.meta.paused || this._nextChunk(), r2;
|
|
50
50
|
}
|
|
51
51
|
this._halted = true;
|
|
52
52
|
}, this._sendError = function(e2) {
|
|
53
|
-
|
|
53
|
+
q2(this._config.error) ? this._config.error(e2) : a2 && this._config.error && n2.postMessage({ workerId: v3.WORKER_ID, error: e2, finished: false });
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
function f4(e) {
|
|
57
57
|
var r2;
|
|
58
|
-
(e = e || {}).chunkSize || (e.chunkSize =
|
|
58
|
+
(e = e || {}).chunkSize || (e.chunkSize = v3.RemoteChunkSize), u2.call(this, e), this._nextChunk = s ? function() {
|
|
59
59
|
this._readChunk(), this._chunkLoaded();
|
|
60
60
|
} : function() {
|
|
61
61
|
this._readChunk();
|
|
@@ -64,7 +64,7 @@ var require_papaparse_min = __commonJS({
|
|
|
64
64
|
}, this._readChunk = function() {
|
|
65
65
|
if (this._finished) this._chunkLoaded();
|
|
66
66
|
else {
|
|
67
|
-
if (r2 = new XMLHttpRequest(), this._config.withCredentials && (r2.withCredentials = this._config.withCredentials), s || (r2.onload =
|
|
67
|
+
if (r2 = new XMLHttpRequest(), this._config.withCredentials && (r2.withCredentials = this._config.withCredentials), s || (r2.onload = y4(this._chunkLoaded, this), r2.onerror = y4(this._chunkError, this)), r2.open(this._config.downloadRequestBody ? "POST" : "GET", this._input, !s), this._config.downloadRequestHeaders) {
|
|
68
68
|
var e2, t = this._config.downloadRequestHeaders;
|
|
69
69
|
for (e2 in t) r2.setRequestHeader(e2, t[e2]);
|
|
70
70
|
}
|
|
@@ -85,15 +85,15 @@ var require_papaparse_min = __commonJS({
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
function l(e) {
|
|
88
|
-
(e = e || {}).chunkSize || (e.chunkSize =
|
|
89
|
-
var i2, r2,
|
|
88
|
+
(e = e || {}).chunkSize || (e.chunkSize = v3.LocalChunkSize), u2.call(this, e);
|
|
89
|
+
var i2, r2, n4 = "undefined" != typeof FileReader;
|
|
90
90
|
this.stream = function(e2) {
|
|
91
|
-
this._input = e2, r2 = e2.slice || e2.webkitSlice || e2.mozSlice,
|
|
91
|
+
this._input = e2, r2 = e2.slice || e2.webkitSlice || e2.mozSlice, n4 ? ((i2 = new FileReader()).onload = y4(this._chunkLoaded, this), i2.onerror = y4(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk();
|
|
92
92
|
}, this._nextChunk = function() {
|
|
93
93
|
this._finished || this._config.preview && !(this._rowCount < this._config.preview) || this._readChunk();
|
|
94
94
|
}, this._readChunk = function() {
|
|
95
95
|
var e2 = this._input, t = (this._config.chunkSize && (t = Math.min(this._start + this._config.chunkSize, this._input.size), e2 = r2.call(e2, this._start, t)), i2.readAsText(e2, this._config.encoding));
|
|
96
|
-
|
|
96
|
+
n4 || this._chunkLoaded({ target: { result: t } });
|
|
97
97
|
}, this._chunkLoaded = function(e2) {
|
|
98
98
|
this._start += this._config.chunkSize, this._finished = !this._config.chunkSize || this._start >= this._input.size, this.parseChunk(e2.target.result);
|
|
99
99
|
}, this._chunkError = function() {
|
|
@@ -122,314 +122,314 @@ var require_papaparse_min = __commonJS({
|
|
|
122
122
|
r2 && 1 === t.length && (this._finished = true);
|
|
123
123
|
}, this._nextChunk = function() {
|
|
124
124
|
this._checkIsFinished(), t.length ? this.parseChunk(t.shift()) : i2 = true;
|
|
125
|
-
}, this._streamData =
|
|
125
|
+
}, this._streamData = y4(function(e2) {
|
|
126
126
|
try {
|
|
127
127
|
t.push("string" == typeof e2 ? e2 : e2.toString(this._config.encoding)), i2 && (i2 = false, this._checkIsFinished(), this.parseChunk(t.shift()));
|
|
128
128
|
} catch (e4) {
|
|
129
129
|
this._streamError(e4);
|
|
130
130
|
}
|
|
131
|
-
}, this), this._streamError =
|
|
131
|
+
}, this), this._streamError = y4(function(e2) {
|
|
132
132
|
this._streamCleanUp(), this._sendError(e2);
|
|
133
|
-
}, this), this._streamEnd =
|
|
133
|
+
}, this), this._streamEnd = y4(function() {
|
|
134
134
|
this._streamCleanUp(), r2 = true, this._streamData("");
|
|
135
|
-
}, this), this._streamCleanUp =
|
|
135
|
+
}, this), this._streamCleanUp = y4(function() {
|
|
136
136
|
this._input.removeListener("data", this._streamData), this._input.removeListener("end", this._streamEnd), this._input.removeListener("error", this._streamError);
|
|
137
137
|
}, this);
|
|
138
138
|
}
|
|
139
|
-
function i(
|
|
140
|
-
var
|
|
141
|
-
function
|
|
142
|
-
return "greedy" ===
|
|
139
|
+
function i(m4) {
|
|
140
|
+
var n4, s2, a4, t, o4 = Math.pow(2, 53), h4 = -o4, u4 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, d3 = /^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/, i2 = this, r2 = 0, f5 = 0, l2 = false, e = false, c4 = [], p4 = { data: [], errors: [], meta: {} };
|
|
141
|
+
function y5(e2) {
|
|
142
|
+
return "greedy" === m4.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length;
|
|
143
143
|
}
|
|
144
144
|
function g4() {
|
|
145
|
-
if (p4 &&
|
|
146
|
-
return !
|
|
147
|
-
})),
|
|
145
|
+
if (p4 && a4 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v3.DefaultDelimiter + "'"), a4 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
|
|
146
|
+
return !y5(e4);
|
|
147
|
+
})), _5()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
149
|
-
e4 = P4(e4),
|
|
149
|
+
e4 = P4(e4), q2(m4.transformHeader) && (e4 = m4.transformHeader(e4, t5)), c4.push(e4);
|
|
150
150
|
};
|
|
151
151
|
var t2 = t4;
|
|
152
152
|
if (p4) if (Array.isArray(p4.data[0])) {
|
|
153
|
-
for (var e2 = 0;
|
|
153
|
+
for (var e2 = 0; _5() && e2 < p4.data.length; e2++) p4.data[e2].forEach(t4);
|
|
154
154
|
p4.data.splice(0, 1);
|
|
155
155
|
} else p4.data.forEach(t4);
|
|
156
156
|
}
|
|
157
157
|
function i4(e4, t4) {
|
|
158
|
-
for (var i5 =
|
|
159
|
-
var
|
|
158
|
+
for (var i5 = m4.header ? {} : [], r5 = 0; r5 < e4.length; r5++) {
|
|
159
|
+
var n5 = r5, s4 = e4[r5], s4 = ((e5, t5) => ((e6) => (m4.dynamicTypingFunction && void 0 === m4.dynamicTyping[e6] && (m4.dynamicTyping[e6] = m4.dynamicTypingFunction(e6)), true === (m4.dynamicTyping[e6] || m4.dynamicTyping)))(e5) ? "true" === t5 || "TRUE" === t5 || "false" !== t5 && "FALSE" !== t5 && (((e6) => {
|
|
160
160
|
if (u4.test(e6)) {
|
|
161
161
|
e6 = parseFloat(e6);
|
|
162
|
-
if (h4 < e6 && e6 <
|
|
162
|
+
if (h4 < e6 && e6 < o4) return 1;
|
|
163
163
|
}
|
|
164
|
-
})(t5) ? parseFloat(t5) : d3.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(
|
|
165
|
-
"__parsed_extra" ===
|
|
164
|
+
})(t5) ? parseFloat(t5) : d3.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(n5 = m4.header ? r5 >= c4.length ? "__parsed_extra" : c4[r5] : n5, s4 = m4.transform ? m4.transform(s4, n5) : s4);
|
|
165
|
+
"__parsed_extra" === n5 ? (i5[n5] = i5[n5] || [], i5[n5].push(s4)) : i5[n5] = s4;
|
|
166
166
|
}
|
|
167
|
-
return
|
|
167
|
+
return m4.header && (r5 > c4.length ? k3("FieldMismatch", "TooManyFields", "Too many fields: expected " + c4.length + " fields but parsed " + r5, f5 + t4) : r5 < c4.length && k3("FieldMismatch", "TooFewFields", "Too few fields: expected " + c4.length + " fields but parsed " + r5, f5 + t4)), i5;
|
|
168
168
|
}
|
|
169
169
|
var r4;
|
|
170
|
-
p4 && (
|
|
170
|
+
p4 && (m4.header || m4.dynamicTyping || m4.transform) && (r4 = 1, !p4.data.length || Array.isArray(p4.data[0]) ? (p4.data = p4.data.map(i4), r4 = p4.data.length) : p4.data = i4(p4.data, 0), m4.header && p4.meta && (p4.meta.fields = c4), f5 += r4);
|
|
171
171
|
}
|
|
172
|
-
function
|
|
173
|
-
return
|
|
172
|
+
function _5() {
|
|
173
|
+
return m4.header && 0 === c4.length;
|
|
174
174
|
}
|
|
175
175
|
function k3(e2, t2, i4, r4) {
|
|
176
176
|
e2 = { type: e2, code: t2, message: i4 };
|
|
177
177
|
void 0 !== r4 && (e2.row = r4), p4.errors.push(e2);
|
|
178
178
|
}
|
|
179
|
-
|
|
180
|
-
p4 = e2,
|
|
179
|
+
q2(m4.step) && (t = m4.step, m4.step = function(e2) {
|
|
180
|
+
p4 = e2, _5() ? g4() : (g4(), 0 !== p4.data.length && (r2 += e2.data.length, m4.preview && r2 > m4.preview ? s2.abort() : (p4.data = p4.data[0], t(p4, i2))));
|
|
181
181
|
}), this.parse = function(e2, t2, i4) {
|
|
182
|
-
var r4 =
|
|
183
|
-
var s4,
|
|
184
|
-
|
|
185
|
-
for (var u5 = 0; u5 <
|
|
186
|
-
for (var d4, f6 =
|
|
187
|
-
0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 ===
|
|
182
|
+
var r4 = m4.quoteChar || '"', r4 = (m4.newline || (m4.newline = this.guessLineEndings(e2, r4)), a4 = false, m4.delimiter ? q2(m4.delimiter) && (m4.delimiter = m4.delimiter(e2), p4.meta.delimiter = m4.delimiter) : ((r4 = ((e4, t4, i5, r5, n5) => {
|
|
183
|
+
var s4, a5, o5, h5;
|
|
184
|
+
n5 = n5 || [",", " ", "|", ";", v3.RECORD_SEP, v3.UNIT_SEP];
|
|
185
|
+
for (var u5 = 0; u5 < n5.length; u5++) {
|
|
186
|
+
for (var d4, f6 = n5[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o5 = void 0, new E4({ comments: r5, delimiter: f6, newline: t4, preview: 10 }).parse(e4)), _6 = 0; _6 < g5.data.length; _6++) i5 && y5(g5.data[_6]) ? p5++ : (d4 = g5.data[_6].length, c5 += d4, void 0 === o5 ? o5 = d4 : 0 < d4 && (l3 += Math.abs(d4 - o5), o5 = d4));
|
|
187
|
+
0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a5 || l3 <= a5) && (void 0 === h5 || h5 < c5) && 1.99 < c5 && (a5 = l3, s4 = f6, h5 = c5);
|
|
188
188
|
}
|
|
189
|
-
return { successful: !!(
|
|
190
|
-
})(e2,
|
|
191
|
-
return
|
|
189
|
+
return { successful: !!(m4.delimiter = s4), bestDelimiter: s4 };
|
|
190
|
+
})(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r4.bestDelimiter : (a4 = true, m4.delimiter = v3.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b2(m4));
|
|
191
|
+
return m4.preview && m4.header && r4.preview++, n4 = e2, s2 = new E4(r4), p4 = s2.parse(n4, t2, i4), g4(), l2 ? { meta: { paused: true } } : p4 || { meta: { paused: false } };
|
|
192
192
|
}, this.paused = function() {
|
|
193
193
|
return l2;
|
|
194
194
|
}, this.pause = function() {
|
|
195
|
-
l2 = true, s2.abort(),
|
|
195
|
+
l2 = true, s2.abort(), n4 = q2(m4.chunk) ? "" : n4.substring(s2.getCharIndex());
|
|
196
196
|
}, this.resume = function() {
|
|
197
|
-
i2.streamer._halted ? (l2 = false, i2.streamer.parseChunk(
|
|
197
|
+
i2.streamer._halted ? (l2 = false, i2.streamer.parseChunk(n4, true)) : setTimeout(i2.resume, 3);
|
|
198
198
|
}, this.aborted = function() {
|
|
199
199
|
return e;
|
|
200
200
|
}, this.abort = function() {
|
|
201
|
-
e = true, s2.abort(), p4.meta.aborted = true,
|
|
201
|
+
e = true, s2.abort(), p4.meta.aborted = true, q2(m4.complete) && m4.complete(p4), n4 = "";
|
|
202
202
|
}, this.guessLineEndings = function(e2, t2) {
|
|
203
203
|
e2 = e2.substring(0, 1048576);
|
|
204
204
|
var t2 = new RegExp(U4(t2) + "([^]*?)" + U4(t2), "gm"), i4 = (e2 = e2.replace(t2, "")).split("\r"), t2 = e2.split("\n"), e2 = 1 < t2.length && t2[0].length < i4[0].length;
|
|
205
205
|
if (1 === i4.length || e2) return "\n";
|
|
206
|
-
for (var r4 = 0,
|
|
206
|
+
for (var r4 = 0, n5 = 0; n5 < i4.length; n5++) "\n" === i4[n5][0] && r4++;
|
|
207
207
|
return r4 >= i4.length / 2 ? "\r\n" : "\r";
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
210
|
function U4(e) {
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
|
-
function E4(
|
|
214
|
-
var
|
|
215
|
-
if (void 0 !==
|
|
216
|
-
true ===
|
|
217
|
-
var
|
|
213
|
+
function E4(C) {
|
|
214
|
+
var S2 = (C = C || {}).delimiter, O3 = C.newline, x3 = C.comments, I2 = C.step, A2 = C.preview, T2 = C.fastMode, D3 = null, L4 = false, F3 = null == C.quoteChar ? '"' : C.quoteChar, j4 = F3;
|
|
215
|
+
if (void 0 !== C.escapeChar && (j4 = C.escapeChar), ("string" != typeof S2 || -1 < v3.BAD_DELIMITERS.indexOf(S2)) && (S2 = ","), x3 === S2) throw new Error("Comment character same as delimiter");
|
|
216
|
+
true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v3.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
|
|
217
|
+
var z3 = 0, M2 = false;
|
|
218
218
|
this.parse = function(i2, t, r2) {
|
|
219
219
|
if ("string" != typeof i2) throw new Error("Input must be a string");
|
|
220
|
-
var
|
|
221
|
-
if (!i2) return
|
|
222
|
-
if (
|
|
220
|
+
var n4 = i2.length, e = S2.length, s2 = O3.length, a4 = x3.length, o4 = q2(I2), h4 = [], u4 = [], d3 = [], f5 = z3 = 0;
|
|
221
|
+
if (!i2) return w2();
|
|
222
|
+
if (T2 || false !== T2 && -1 === i2.indexOf(F3)) {
|
|
223
223
|
for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
|
|
224
|
-
if (d3 = l2[c4],
|
|
225
|
-
else if (r2) return
|
|
226
|
-
if (!
|
|
227
|
-
if (
|
|
228
|
-
if (h4 = [], k3(d3.split(
|
|
229
|
-
} else k3(d3.split(
|
|
230
|
-
if (A2 && A2 <= c4) return h4 = h4.slice(0, A2),
|
|
224
|
+
if (d3 = l2[c4], z3 += d3.length, c4 !== l2.length - 1) z3 += O3.length;
|
|
225
|
+
else if (r2) return w2();
|
|
226
|
+
if (!x3 || d3.substring(0, a4) !== x3) {
|
|
227
|
+
if (o4) {
|
|
228
|
+
if (h4 = [], k3(d3.split(S2)), R2(), M2) return w2();
|
|
229
|
+
} else k3(d3.split(S2));
|
|
230
|
+
if (A2 && A2 <= c4) return h4 = h4.slice(0, A2), w2(true);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
return
|
|
233
|
+
return w2();
|
|
234
234
|
}
|
|
235
|
-
for (var p4 = i2.indexOf(
|
|
236
|
-
if (-1 === (
|
|
237
|
-
if (
|
|
238
|
-
if (F3 ===
|
|
239
|
-
else if (F3 ===
|
|
240
|
-
-1 !== p4 && p4 <
|
|
241
|
-
var
|
|
242
|
-
if (i2.substr(
|
|
243
|
-
d3.push(i2.substring(
|
|
235
|
+
for (var p4 = i2.indexOf(S2, z3), g4 = i2.indexOf(O3, z3), _5 = new RegExp(U4(j4) + U4(F3), "g"), m4 = i2.indexOf(F3, z3); ; ) if (i2[z3] === F3) for (m4 = z3, z3++; ; ) {
|
|
236
|
+
if (-1 === (m4 = i2.indexOf(F3, m4 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z3 }), E5();
|
|
237
|
+
if (m4 === n4 - 1) return E5(i2.substring(z3, m4).replace(_5, F3));
|
|
238
|
+
if (F3 === j4 && i2[m4 + 1] === j4) m4++;
|
|
239
|
+
else if (F3 === j4 || 0 === m4 || i2[m4 - 1] !== j4) {
|
|
240
|
+
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S2, m4 + 1));
|
|
241
|
+
var y5 = v4(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O3, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
|
|
242
|
+
if (i2.substr(m4 + 1 + y5, e) === S2) {
|
|
243
|
+
d3.push(i2.substring(z3, m4).replace(_5, F3)), i2[z3 = m4 + 1 + y5 + e] !== F3 && (m4 = i2.indexOf(F3, z3)), p4 = i2.indexOf(S2, z3), g4 = i2.indexOf(O3, z3);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
|
-
|
|
247
|
-
if (i2.substring(
|
|
248
|
-
if (d3.push(i2.substring(
|
|
249
|
-
if (A2 && h4.length >= A2) return
|
|
246
|
+
y5 = v4(g4);
|
|
247
|
+
if (i2.substring(m4 + 1 + y5, m4 + 1 + y5 + s2) === O3) {
|
|
248
|
+
if (d3.push(i2.substring(z3, m4).replace(_5, F3)), b4(m4 + 1 + y5 + s2), p4 = i2.indexOf(S2, z3), m4 = i2.indexOf(F3, z3), o4 && (R2(), M2)) return w2();
|
|
249
|
+
if (A2 && h4.length >= A2) return w2(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
252
|
-
u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h4.length, index:
|
|
252
|
+
u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h4.length, index: z3 }), m4++;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
else if (
|
|
256
|
-
if (-1 === g4) return
|
|
257
|
-
|
|
258
|
-
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(
|
|
255
|
+
else if (x3 && 0 === d3.length && i2.substring(z3, z3 + a4) === x3) {
|
|
256
|
+
if (-1 === g4) return w2();
|
|
257
|
+
z3 = g4 + s2, g4 = i2.indexOf(O3, z3), p4 = i2.indexOf(S2, z3);
|
|
258
|
+
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z3, p4)), z3 = p4 + e, p4 = i2.indexOf(S2, z3);
|
|
259
259
|
else {
|
|
260
260
|
if (-1 === g4) break;
|
|
261
|
-
if (d3.push(i2.substring(
|
|
262
|
-
if (A2 && h4.length >= A2) return
|
|
261
|
+
if (d3.push(i2.substring(z3, g4)), b4(g4 + s2), o4 && (R2(), M2)) return w2();
|
|
262
|
+
if (A2 && h4.length >= A2) return w2(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
265
265
|
function k3(e2) {
|
|
266
|
-
h4.push(e2), f5 =
|
|
266
|
+
h4.push(e2), f5 = z3;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function v4(e2) {
|
|
269
269
|
var t2 = 0;
|
|
270
|
-
return t2 = -1 !== e2 && (e2 = i2.substring(
|
|
270
|
+
return t2 = -1 !== e2 && (e2 = i2.substring(m4 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
272
272
|
function E5(e2) {
|
|
273
|
-
return r2 || (void 0 === e2 && (e2 = i2.substring(
|
|
273
|
+
return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d3.push(e2), z3 = n4, k3(d3), o4 && R2()), w2();
|
|
274
274
|
}
|
|
275
|
-
function
|
|
276
|
-
|
|
275
|
+
function b4(e2) {
|
|
276
|
+
z3 = e2, k3(d3), d3 = [], g4 = i2.indexOf(O3, z3);
|
|
277
277
|
}
|
|
278
|
-
function
|
|
279
|
-
if (
|
|
280
|
-
var s4 = h4[0],
|
|
281
|
-
let
|
|
278
|
+
function w2(e2) {
|
|
279
|
+
if (C.header && !t && h4.length && !L4) {
|
|
280
|
+
var s4 = h4[0], a5 = /* @__PURE__ */ Object.create(null), o5 = new Set(s4);
|
|
281
|
+
let n5 = false;
|
|
282
282
|
for (let r4 = 0; r4 < s4.length; r4++) {
|
|
283
283
|
let i4 = P4(s4[r4]);
|
|
284
|
-
if (
|
|
285
|
-
let e4, t2 =
|
|
286
|
-
for (; e4 = i4 + "_" + t2, t2++,
|
|
287
|
-
|
|
288
|
-
} else
|
|
289
|
-
|
|
284
|
+
if (a5[i4 = q2(C.transformHeader) ? C.transformHeader(i4, r4) : i4]) {
|
|
285
|
+
let e4, t2 = a5[i4];
|
|
286
|
+
for (; e4 = i4 + "_" + t2, t2++, o5.has(e4); ) ;
|
|
287
|
+
o5.add(e4), s4[r4] = e4, a5[i4]++, n5 = true, (D3 = null === D3 ? {} : D3)[e4] = i4;
|
|
288
|
+
} else a5[i4] = 1, s4[r4] = i4;
|
|
289
|
+
o5.add(i4);
|
|
290
290
|
}
|
|
291
|
-
|
|
291
|
+
n5 && console.warn("Duplicate headers found and renamed."), L4 = true;
|
|
292
292
|
}
|
|
293
|
-
return { data: h4, errors: u4, meta: { delimiter:
|
|
293
|
+
return { data: h4, errors: u4, meta: { delimiter: S2, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D3 } };
|
|
294
294
|
}
|
|
295
295
|
function R2() {
|
|
296
|
-
|
|
296
|
+
I2(w2()), h4 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
|
-
|
|
299
|
+
M2 = true;
|
|
300
300
|
}, this.getCharIndex = function() {
|
|
301
|
-
return
|
|
301
|
+
return z3;
|
|
302
302
|
};
|
|
303
303
|
}
|
|
304
304
|
function g3(e) {
|
|
305
|
-
var t = e.data, i2 =
|
|
305
|
+
var t = e.data, i2 = o2[t.workerId], r2 = false;
|
|
306
306
|
if (t.error) i2.userError(t.error, t.file);
|
|
307
307
|
else if (t.results && t.results.data) {
|
|
308
|
-
var
|
|
309
|
-
r2 = true,
|
|
310
|
-
}, pause:
|
|
311
|
-
if (
|
|
312
|
-
for (var s2 = 0; s2 < t.results.data.length && (i2.userStep({ data: t.results.data[s2], errors: t.results.errors, meta: t.results.meta },
|
|
308
|
+
var n4 = { abort: function() {
|
|
309
|
+
r2 = true, _4(t.workerId, { data: [], errors: [], meta: { aborted: true } });
|
|
310
|
+
}, pause: m2, resume: m2 };
|
|
311
|
+
if (q2(i2.userStep)) {
|
|
312
|
+
for (var s2 = 0; s2 < t.results.data.length && (i2.userStep({ data: t.results.data[s2], errors: t.results.errors, meta: t.results.meta }, n4), !r2); s2++) ;
|
|
313
313
|
delete t.results;
|
|
314
|
-
} else
|
|
314
|
+
} else q2(i2.userChunk) && (i2.userChunk(t.results, n4, t.file), delete t.results);
|
|
315
315
|
}
|
|
316
|
-
t.finished && !r2 &&
|
|
316
|
+
t.finished && !r2 && _4(t.workerId, t.results);
|
|
317
317
|
}
|
|
318
|
-
function
|
|
319
|
-
var i2 =
|
|
320
|
-
|
|
318
|
+
function _4(e, t) {
|
|
319
|
+
var i2 = o2[e];
|
|
320
|
+
q2(i2.userComplete) && i2.userComplete(t), i2.terminate(), delete o2[e];
|
|
321
321
|
}
|
|
322
|
-
function
|
|
322
|
+
function m2() {
|
|
323
323
|
throw new Error("Not implemented.");
|
|
324
324
|
}
|
|
325
|
-
function
|
|
325
|
+
function b2(e) {
|
|
326
326
|
if ("object" != typeof e || null === e) return e;
|
|
327
327
|
var t, i2 = Array.isArray(e) ? [] : {};
|
|
328
|
-
for (t in e) i2[t] =
|
|
328
|
+
for (t in e) i2[t] = b2(e[t]);
|
|
329
329
|
return i2;
|
|
330
330
|
}
|
|
331
|
-
function
|
|
331
|
+
function y4(e, t) {
|
|
332
332
|
return function() {
|
|
333
333
|
e.apply(t, arguments);
|
|
334
334
|
};
|
|
335
335
|
}
|
|
336
|
-
function
|
|
336
|
+
function q2(e) {
|
|
337
337
|
return "function" == typeof e;
|
|
338
338
|
}
|
|
339
|
-
return
|
|
339
|
+
return v3.parse = function(e, t) {
|
|
340
340
|
var i2 = (t = t || {}).dynamicTyping || false;
|
|
341
|
-
|
|
342
|
-
if (t.dynamicTyping = i2, t.transform = !!
|
|
341
|
+
q2(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
342
|
+
if (t.dynamicTyping = i2, t.transform = !!q2(t.transform) && t.transform, !t.worker || !v3.WORKERS_SUPPORTED) return i2 = null, v3.NODE_STREAM_INPUT, "string" == typeof e ? (e = P4(e), i2 = new (t.download ? f4 : c2)(t)) : true === e.readable && q2(e.read) && q2(e.on) ? i2 = new p2(t) : (n2.File && e instanceof File || e instanceof Object) && (i2 = new l(t)), i2.stream(e);
|
|
343
343
|
(i2 = (() => {
|
|
344
344
|
var e2;
|
|
345
|
-
return !!
|
|
346
|
-
var e4 =
|
|
347
|
-
return
|
|
348
|
-
})(), (e2 = new
|
|
349
|
-
})()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step =
|
|
350
|
-
},
|
|
351
|
-
var s2 = false,
|
|
345
|
+
return !!v3.WORKERS_SUPPORTED && (e2 = (() => {
|
|
346
|
+
var e4 = n2.URL || n2.webkitURL || null, t2 = r.toString();
|
|
347
|
+
return v3.BLOB_URL || (v3.BLOB_URL = e4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", t2, ")();"], { type: "text/javascript" })));
|
|
348
|
+
})(), (e2 = new n2.Worker(e2)).onmessage = g3, e2.id = h3++, o2[e2.id] = e2);
|
|
349
|
+
})()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step = q2(t.step), t.chunk = q2(t.chunk), t.complete = q2(t.complete), t.error = q2(t.error), delete t.worker, i2.postMessage({ input: e, config: t, workerId: i2.id });
|
|
350
|
+
}, v3.unparse = function(e, t) {
|
|
351
|
+
var s2 = false, _5 = true, m4 = ",", y5 = "\r\n", a4 = '"', o4 = a4 + a4, i2 = false, r2 = null, h4 = false, u4 = ((() => {
|
|
352
352
|
if ("object" == typeof t) {
|
|
353
|
-
if ("string" != typeof t.delimiter ||
|
|
353
|
+
if ("string" != typeof t.delimiter || v3.BAD_DELIMITERS.filter(function(e2) {
|
|
354
354
|
return -1 !== t.delimiter.indexOf(e2);
|
|
355
|
-
}).length || (
|
|
355
|
+
}).length || (m4 = t.delimiter), "boolean" != typeof t.quotes && "function" != typeof t.quotes && !Array.isArray(t.quotes) || (s2 = t.quotes), "boolean" != typeof t.skipEmptyLines && "string" != typeof t.skipEmptyLines || (i2 = t.skipEmptyLines), "string" == typeof t.newline && (y5 = t.newline), "string" == typeof t.quoteChar && (a4 = t.quoteChar, o4 = a4 + a4), "boolean" == typeof t.header && (_5 = t.header), Array.isArray(t.columns)) {
|
|
356
356
|
if (0 === t.columns.length) throw new Error("Option columns is empty");
|
|
357
357
|
r2 = t.columns;
|
|
358
358
|
}
|
|
359
|
-
void 0 !== t.escapeChar && (
|
|
359
|
+
void 0 !== t.escapeChar && (o4 = t.escapeChar + a4), t.escapeFormulae instanceof RegExp ? h4 = t.escapeFormulae : "boolean" == typeof t.escapeFormulae && t.escapeFormulae && (h4 = /^[=+\-@\t\r].*$/);
|
|
360
360
|
}
|
|
361
|
-
})(), new RegExp(U4(
|
|
361
|
+
})(), new RegExp(U4(a4), "g"));
|
|
362
362
|
"string" == typeof e && (e = JSON.parse(e));
|
|
363
363
|
if (Array.isArray(e)) {
|
|
364
|
-
if (!e.length || Array.isArray(e[0])) return
|
|
365
|
-
if ("object" == typeof e[0]) return
|
|
366
|
-
} else if ("object" == typeof e) return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || r2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])),
|
|
364
|
+
if (!e.length || Array.isArray(e[0])) return n4(null, e, i2);
|
|
365
|
+
if ("object" == typeof e[0]) return n4(r2 || Object.keys(e[0]), e, i2);
|
|
366
|
+
} else if ("object" == typeof e) return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || r2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])), n4(e.fields || [], e.data || [], i2);
|
|
367
367
|
throw new Error("Unable to serialize unrecognized input");
|
|
368
|
-
function
|
|
369
|
-
var r4 = "",
|
|
370
|
-
if (
|
|
371
|
-
for (var
|
|
372
|
-
0 < t2.length && (r4 +=
|
|
368
|
+
function n4(e2, t2, i4) {
|
|
369
|
+
var r4 = "", n5 = ("string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t2 && (t2 = JSON.parse(t2)), Array.isArray(e2) && 0 < e2.length), s4 = !Array.isArray(t2[0]);
|
|
370
|
+
if (n5 && _5) {
|
|
371
|
+
for (var a5 = 0; a5 < e2.length; a5++) 0 < a5 && (r4 += m4), r4 += k3(e2[a5], a5);
|
|
372
|
+
0 < t2.length && (r4 += y5);
|
|
373
373
|
}
|
|
374
|
-
for (var
|
|
375
|
-
var h5 = (
|
|
376
|
-
if (i4 && !
|
|
374
|
+
for (var o5 = 0; o5 < t2.length; o5++) {
|
|
375
|
+
var h5 = (n5 ? e2 : t2[o5]).length, u5 = false, d3 = n5 ? 0 === Object.keys(t2[o5]).length : 0 === t2[o5].length;
|
|
376
|
+
if (i4 && !n5 && (u5 = "greedy" === i4 ? "" === t2[o5].join("").trim() : 1 === t2[o5].length && 0 === t2[o5][0].length), "greedy" === i4 && n5) {
|
|
377
377
|
for (var f5 = [], l2 = 0; l2 < h5; l2++) {
|
|
378
378
|
var c4 = s4 ? e2[l2] : l2;
|
|
379
|
-
f5.push(t2[
|
|
379
|
+
f5.push(t2[o5][c4]);
|
|
380
380
|
}
|
|
381
381
|
u5 = "" === f5.join("").trim();
|
|
382
382
|
}
|
|
383
383
|
if (!u5) {
|
|
384
384
|
for (var p4 = 0; p4 < h5; p4++) {
|
|
385
|
-
0 < p4 && !d3 && (r4 +=
|
|
386
|
-
var g4 =
|
|
387
|
-
r4 += k3(t2[
|
|
385
|
+
0 < p4 && !d3 && (r4 += m4);
|
|
386
|
+
var g4 = n5 && s4 ? e2[p4] : p4;
|
|
387
|
+
r4 += k3(t2[o5][g4], p4);
|
|
388
388
|
}
|
|
389
|
-
|
|
389
|
+
o5 < t2.length - 1 && (!i4 || 0 < h5 && !d3) && (r4 += y5);
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
392
|
return r4;
|
|
393
393
|
}
|
|
394
394
|
function k3(e2, t2) {
|
|
395
|
-
var i4, r4,
|
|
396
|
-
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (
|
|
395
|
+
var i4, r4, n5;
|
|
396
|
+
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n5 = false, h4 && "string" == typeof e2 && h4.test(e2) && (e2 = "'" + e2, n5 = true), r4 = (i4 = e2.toString()).replace(u4, o4), (n5 = n5 || true === s2 || "function" == typeof s2 && s2(e2, t2) || Array.isArray(s2) && s2[t2] || ((e4, t4) => {
|
|
397
397
|
for (var i5 = 0; i5 < t4.length; i5++) if (-1 < e4.indexOf(t4[i5])) return true;
|
|
398
398
|
return false;
|
|
399
|
-
})(r4,
|
|
399
|
+
})(r4, v3.BAD_DELIMITERS) || -1 < r4.indexOf(m4) || -1 < i4.indexOf(a4) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a4 + r4 + a4 : r4);
|
|
400
400
|
}
|
|
401
|
-
},
|
|
402
|
-
var i2 =
|
|
401
|
+
}, v3.RECORD_SEP = String.fromCharCode(30), v3.UNIT_SEP = String.fromCharCode(31), v3.BYTE_ORDER_MARK = "\uFEFF", v3.BAD_DELIMITERS = ["\r", "\n", '"', v3.BYTE_ORDER_MARK], v3.WORKERS_SUPPORTED = !s && !!n2.Worker, v3.NODE_STREAM_INPUT = 1, v3.LocalChunkSize = 10485760, v3.RemoteChunkSize = 5242880, v3.DefaultDelimiter = ",", v3.Parser = E4, v3.ParserHandle = i, v3.NetworkStreamer = f4, v3.FileStreamer = l, v3.StringStreamer = c2, v3.ReadableStreamStreamer = p2, n2.jQuery && ((d2 = n2.jQuery).fn.parse = function(o4) {
|
|
402
|
+
var i2 = o4.config || {}, h4 = [];
|
|
403
403
|
return this.each(function(e2) {
|
|
404
|
-
if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() &&
|
|
404
|
+
if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() && n2.FileReader) || !this.files || 0 === this.files.length) return true;
|
|
405
405
|
for (var t = 0; t < this.files.length; t++) h4.push({ file: this.files[t], inputElem: this, instanceConfig: d2.extend({}, i2) });
|
|
406
406
|
}), e(), this;
|
|
407
407
|
function e() {
|
|
408
|
-
if (0 === h4.length)
|
|
408
|
+
if (0 === h4.length) q2(o4.complete) && o4.complete();
|
|
409
409
|
else {
|
|
410
|
-
var e2, t, i4, r2,
|
|
411
|
-
if (
|
|
412
|
-
var s2 =
|
|
410
|
+
var e2, t, i4, r2, n4 = h4[0];
|
|
411
|
+
if (q2(o4.before)) {
|
|
412
|
+
var s2 = o4.before(n4.file, n4.inputElem);
|
|
413
413
|
if ("object" == typeof s2) {
|
|
414
|
-
if ("abort" === s2.action) return e2 = "AbortError", t =
|
|
414
|
+
if ("abort" === s2.action) return e2 = "AbortError", t = n4.file, i4 = n4.inputElem, r2 = s2.reason, void (q2(o4.error) && o4.error({ name: e2 }, t, i4, r2));
|
|
415
415
|
if ("skip" === s2.action) return void u4();
|
|
416
|
-
"object" == typeof s2.config && (
|
|
416
|
+
"object" == typeof s2.config && (n4.instanceConfig = d2.extend(n4.instanceConfig, s2.config));
|
|
417
417
|
} else if ("skip" === s2) return void u4();
|
|
418
418
|
}
|
|
419
|
-
var
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
},
|
|
419
|
+
var a4 = n4.instanceConfig.complete;
|
|
420
|
+
n4.instanceConfig.complete = function(e4) {
|
|
421
|
+
q2(a4) && a4(e4, n4.file, n4.inputElem), u4();
|
|
422
|
+
}, v3.parse(n4.file, n4.instanceConfig);
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
function u4() {
|
|
426
426
|
h4.splice(0, 1), e();
|
|
427
427
|
}
|
|
428
|
-
}),
|
|
428
|
+
}), a2 && (n2.onmessage = function(e) {
|
|
429
429
|
e = e.data;
|
|
430
|
-
void 0 ===
|
|
431
|
-
"string" == typeof e.input ?
|
|
432
|
-
}), (f4.prototype = Object.create(u2.prototype)).constructor = f4, (l.prototype = Object.create(u2.prototype)).constructor = l, (c2.prototype = Object.create(c2.prototype)).constructor = c2, (p2.prototype = Object.create(u2.prototype)).constructor = p2,
|
|
430
|
+
void 0 === v3.WORKER_ID && e && (v3.WORKER_ID = e.workerId);
|
|
431
|
+
"string" == typeof e.input ? n2.postMessage({ workerId: v3.WORKER_ID, results: v3.parse(e.input, e.config), finished: true }) : (n2.File && e.input instanceof File || e.input instanceof Object) && (e = v3.parse(e.input, e.config)) && n2.postMessage({ workerId: v3.WORKER_ID, results: e, finished: true });
|
|
432
|
+
}), (f4.prototype = Object.create(u2.prototype)).constructor = f4, (l.prototype = Object.create(u2.prototype)).constructor = l, (c2.prototype = Object.create(c2.prototype)).constructor = c2, (p2.prototype = Object.create(u2.prototype)).constructor = p2, v3;
|
|
433
433
|
});
|
|
434
434
|
}
|
|
435
435
|
});
|
|
@@ -496,8 +496,8 @@ var MAX_MAP_POINTS_DEFAULT = 2e3;
|
|
|
496
496
|
|
|
497
497
|
// src/deltaE.ts
|
|
498
498
|
function linearise(c2) {
|
|
499
|
-
const
|
|
500
|
-
return
|
|
499
|
+
const v3 = c2 / 255;
|
|
500
|
+
return v3 <= 0.04045 ? v3 / 12.92 : Math.pow((v3 + 0.055) / 1.055, 2.4);
|
|
501
501
|
}
|
|
502
502
|
var Xn = 0.95047;
|
|
503
503
|
var Yn = 1;
|
|
@@ -507,18 +507,18 @@ var KAPPA = 24389 / 27;
|
|
|
507
507
|
function f(t) {
|
|
508
508
|
return t > EPS ? Math.cbrt(t) : (KAPPA * t + 16) / 116;
|
|
509
509
|
}
|
|
510
|
-
function rgbToLab(r, g3,
|
|
511
|
-
const R2 = linearise(r), G3 = linearise(g3),
|
|
512
|
-
const
|
|
513
|
-
const Y4 = 0.2126729 * R2 + 0.7151522 * G3 + 0.072175 *
|
|
514
|
-
const
|
|
515
|
-
const fx = f(
|
|
510
|
+
function rgbToLab(r, g3, b2) {
|
|
511
|
+
const R2 = linearise(r), G3 = linearise(g3), B3 = linearise(b2);
|
|
512
|
+
const X4 = 0.4124564 * R2 + 0.3575761 * G3 + 0.1804375 * B3;
|
|
513
|
+
const Y4 = 0.2126729 * R2 + 0.7151522 * G3 + 0.072175 * B3;
|
|
514
|
+
const Z3 = 0.0193339 * R2 + 0.119192 * G3 + 0.9503041 * B3;
|
|
515
|
+
const fx = f(X4 / Xn), fy = f(Y4 / Yn), fz = f(Z3 / Zn);
|
|
516
516
|
return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
|
|
517
517
|
}
|
|
518
518
|
function hexToLab(hex2) {
|
|
519
|
-
const
|
|
520
|
-
if (!
|
|
521
|
-
const h3 =
|
|
519
|
+
const m2 = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex2.trim());
|
|
520
|
+
if (!m2) return null;
|
|
521
|
+
const h3 = m2[1].length === 3 ? m2[1][0] + m2[1][0] + m2[1][1] + m2[1][1] + m2[1][2] + m2[1][2] : m2[1];
|
|
522
522
|
return rgbToLab(parseInt(h3.slice(0, 2), 16), parseInt(h3.slice(2, 4), 16), parseInt(h3.slice(4, 6), 16));
|
|
523
523
|
}
|
|
524
524
|
var RAD = Math.PI / 180;
|
|
@@ -549,7 +549,7 @@ function deltaE2000(c1, c2) {
|
|
|
549
549
|
else if (Math.abs(h1p - h2p) <= 180) hbarp = (h1p + h2p) / 2;
|
|
550
550
|
else if (h1p + h2p < 360) hbarp = (h1p + h2p + 360) / 2;
|
|
551
551
|
else hbarp = (h1p + h2p - 360) / 2;
|
|
552
|
-
const
|
|
552
|
+
const T2 = 1 - 0.17 * Math.cos((hbarp - 30) * RAD) + 0.24 * Math.cos(2 * hbarp * RAD) + 0.32 * Math.cos((3 * hbarp + 6) * RAD) - 0.2 * Math.cos((4 * hbarp - 63) * RAD);
|
|
553
553
|
const dTheta = 30 * Math.exp(-Math.pow((hbarp - 275) / 25, 2));
|
|
554
554
|
const Cbarp7 = Math.pow(Cbarp, 7);
|
|
555
555
|
const RC = 2 * Math.sqrt(Cbarp7 / (Cbarp7 + Math.pow(25, 7)));
|
|
@@ -557,7 +557,7 @@ function deltaE2000(c1, c2) {
|
|
|
557
557
|
const Lm50 = Math.pow(Lbarp - 50, 2);
|
|
558
558
|
const SL = 1 + 0.015 * Lm50 / Math.sqrt(20 + Lm50);
|
|
559
559
|
const SC = 1 + 0.045 * Cbarp;
|
|
560
|
-
const SH = 1 + 0.015 * Cbarp *
|
|
560
|
+
const SH = 1 + 0.015 * Cbarp * T2;
|
|
561
561
|
const tL = dLp / SL, tC = dCp / SC, tH = dHp / SH;
|
|
562
562
|
return Math.sqrt(tL * tL + tC * tC + tH * tH + RT * tC * tH);
|
|
563
563
|
}
|
|
@@ -567,22 +567,22 @@ function labToHex(lab) {
|
|
|
567
567
|
return t32 > EPS ? t32 : (116 * t - 16) / KAPPA;
|
|
568
568
|
};
|
|
569
569
|
const fy = (lab.L + 16) / 116, fx = fy + lab.a / 500, fz = fy - lab.b / 200;
|
|
570
|
-
const
|
|
570
|
+
const X4 = Xn * finv(fx);
|
|
571
571
|
const Y4 = Yn * (lab.L > KAPPA * EPS ? fy * fy * fy : lab.L / KAPPA);
|
|
572
|
-
const
|
|
572
|
+
const Z3 = Zn * finv(fz);
|
|
573
573
|
const lin = [
|
|
574
|
-
3.2404542 *
|
|
575
|
-
-0.969266 *
|
|
576
|
-
0.0556434 *
|
|
574
|
+
3.2404542 * X4 - 1.5371385 * Y4 - 0.4985314 * Z3,
|
|
575
|
+
-0.969266 * X4 + 1.8760108 * Y4 + 0.041556 * Z3,
|
|
576
|
+
0.0556434 * X4 - 0.2040259 * Y4 + 1.0572252 * Z3
|
|
577
577
|
];
|
|
578
|
-
return "#" + lin.map((
|
|
579
|
-
const c2 = Math.max(0, Math.min(1,
|
|
578
|
+
return "#" + lin.map((v3) => {
|
|
579
|
+
const c2 = Math.max(0, Math.min(1, v3));
|
|
580
580
|
const g3 = c2 <= 31308e-7 ? 12.92 * c2 : 1.055 * Math.pow(c2, 1 / 2.4) - 0.055;
|
|
581
581
|
return Math.round(g3 * 255).toString(16).padStart(2, "0");
|
|
582
582
|
}).join("");
|
|
583
583
|
}
|
|
584
|
-
function deltaEHex(
|
|
585
|
-
const la = hexToLab(
|
|
584
|
+
function deltaEHex(a2, b2) {
|
|
585
|
+
const la = hexToLab(a2), lb = hexToLab(b2);
|
|
586
586
|
return la && lb ? deltaE2000(la, lb) : NaN;
|
|
587
587
|
}
|
|
588
588
|
|
|
@@ -604,8 +604,8 @@ function styleOf(el, doc) {
|
|
|
604
604
|
}
|
|
605
605
|
}
|
|
606
606
|
function fillOf(el, cs) {
|
|
607
|
-
const
|
|
608
|
-
if (
|
|
607
|
+
const a2 = el.getAttribute?.("fill");
|
|
608
|
+
if (a2 !== null && a2 !== void 0 && String(a2).trim() !== "") return String(a2).trim();
|
|
609
609
|
const c2 = cs?.fill;
|
|
610
610
|
return c2 === null || c2 === void 0 ? "" : String(c2).trim();
|
|
611
611
|
}
|
|
@@ -622,10 +622,10 @@ function toRgb(raw) {
|
|
|
622
622
|
parseInt(full.slice(4, 6), 16)
|
|
623
623
|
];
|
|
624
624
|
}
|
|
625
|
-
const
|
|
626
|
-
if (!
|
|
627
|
-
if (
|
|
628
|
-
return [Math.round(parseFloat(
|
|
625
|
+
const m2 = /^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)\s*(?:[,/]\s*([\d.]+)\s*)?\)$/.exec(s);
|
|
626
|
+
if (!m2) return null;
|
|
627
|
+
if (m2[4] !== void 0 && parseFloat(m2[4]) === 0) return null;
|
|
628
|
+
return [Math.round(parseFloat(m2[1])), Math.round(parseFloat(m2[2])), Math.round(parseFloat(m2[3]))];
|
|
629
629
|
}
|
|
630
630
|
function cellKey(rgb) {
|
|
631
631
|
return [
|
|
@@ -635,7 +635,7 @@ function cellKey(rgb) {
|
|
|
635
635
|
].join(",");
|
|
636
636
|
}
|
|
637
637
|
function hex(rgb) {
|
|
638
|
-
return "#" + rgb.map((
|
|
638
|
+
return "#" + rgb.map((v3) => Math.max(0, Math.min(255, v3)).toString(16).padStart(2, "0")).join("");
|
|
639
639
|
}
|
|
640
640
|
function censusColourSpread(container, doc) {
|
|
641
641
|
if (!container || typeof container.querySelectorAll !== "function") return EMPTY;
|
|
@@ -672,20 +672,20 @@ function censusColourSpread(container, doc) {
|
|
|
672
672
|
else cells.set(k3, { rgb, n: 1 });
|
|
673
673
|
}
|
|
674
674
|
if (marks < MIN_MARKS || distinct.size < MIN_RAMP_FILLS) return EMPTY;
|
|
675
|
-
const top = [...cells.values()].sort((
|
|
675
|
+
const top = [...cells.values()].sort((a2, b2) => b2.n - a2.n).slice(0, MAX_CELLS);
|
|
676
676
|
const cs = top.map((c2) => hexToLab(hex(c2.rgb))).filter((l) => l !== null);
|
|
677
677
|
if (cs.length < MIN_RAMP_FILLS) return EMPTY;
|
|
678
678
|
const d2 = cs.map(() => new Array(cs.length).fill(0));
|
|
679
679
|
let span = 0, lo = 0, hi = 1;
|
|
680
680
|
for (let i = 0; i < cs.length; i++) {
|
|
681
|
-
for (let
|
|
682
|
-
const
|
|
683
|
-
d2[i][
|
|
684
|
-
d2[
|
|
685
|
-
if (
|
|
686
|
-
span =
|
|
681
|
+
for (let j4 = i + 1; j4 < cs.length; j4++) {
|
|
682
|
+
const v3 = deltaE2000(cs[i], cs[j4]);
|
|
683
|
+
d2[i][j4] = v3;
|
|
684
|
+
d2[j4][i] = v3;
|
|
685
|
+
if (v3 > span) {
|
|
686
|
+
span = v3;
|
|
687
687
|
lo = i;
|
|
688
|
-
hi =
|
|
688
|
+
hi = j4;
|
|
689
689
|
}
|
|
690
690
|
}
|
|
691
691
|
}
|
|
@@ -699,11 +699,11 @@ function censusColourSpread(container, doc) {
|
|
|
699
699
|
if (interior < 2 || slack / interior > RAMP_SLACK_MAX) return EMPTY;
|
|
700
700
|
let crowd = 0;
|
|
701
701
|
for (let i = 0; i < cs.length; i++) {
|
|
702
|
-
let
|
|
703
|
-
for (let
|
|
704
|
-
if (i ===
|
|
702
|
+
let n2 = 0;
|
|
703
|
+
for (let j4 = 0; j4 < cs.length; j4++) {
|
|
704
|
+
if (i === j4 || d2[i][j4] <= SAME_SHADE_DELTA_E) n2 += top[j4].n;
|
|
705
705
|
}
|
|
706
|
-
if (
|
|
706
|
+
if (n2 > crowd) crowd = n2;
|
|
707
707
|
}
|
|
708
708
|
return {
|
|
709
709
|
marks,
|
|
@@ -729,18 +729,18 @@ var MIN_ACCENT_VS_CANVAS = 20;
|
|
|
729
729
|
var HEX = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
730
730
|
function normHex(raw) {
|
|
731
731
|
if (typeof raw !== "string") return null;
|
|
732
|
-
const
|
|
733
|
-
if (!
|
|
734
|
-
const h3 =
|
|
732
|
+
const m2 = HEX.exec(raw.trim());
|
|
733
|
+
if (!m2) return null;
|
|
734
|
+
const h3 = m2[1].length === 3 ? m2[1].split("").map((c2) => c2 + c2).join("") : m2[1];
|
|
735
735
|
return "#" + h3.toLowerCase();
|
|
736
736
|
}
|
|
737
|
-
function mixLab(
|
|
738
|
-
return { L:
|
|
737
|
+
function mixLab(a2, b2, t) {
|
|
738
|
+
return { L: a2.L + (b2.L - a2.L) * t, a: a2.a + (b2.a - a2.a) * t, b: a2.b + (b2.b - a2.b) * t };
|
|
739
739
|
}
|
|
740
740
|
function paintedOver(fg, canvas, alpha) {
|
|
741
741
|
const f4 = [1, 3, 5].map((i) => parseInt(fg.slice(i, i + 2), 16));
|
|
742
742
|
const c2 = [1, 3, 5].map((i) => parseInt(canvas.slice(i, i + 2), 16));
|
|
743
|
-
const mixed = f4.map((
|
|
743
|
+
const mixed = f4.map((v3, i) => Math.round(v3 * alpha + c2[i] * (1 - alpha))).map((v3) => v3.toString(16).padStart(2, "0"));
|
|
744
744
|
return hexToLab("#" + mixed.join(""));
|
|
745
745
|
}
|
|
746
746
|
function autoRampMinStep(low, high, canvas, classes = AUTO_RAMP_CLASSES, opacity = AUTO_RAMP_DRAWN_OPACITY) {
|
|
@@ -795,10 +795,10 @@ function resolveAutoColorScale(p2) {
|
|
|
795
795
|
}
|
|
796
796
|
|
|
797
797
|
// src/defaults.ts
|
|
798
|
-
var clamp = (
|
|
798
|
+
var clamp = (n2, lo, hi) => Math.max(lo, Math.min(hi, n2));
|
|
799
799
|
var numberOr = (raw, dflt) => {
|
|
800
|
-
const
|
|
801
|
-
return Number.isFinite(
|
|
800
|
+
const n2 = raw == null || raw === "" ? NaN : Number(raw);
|
|
801
|
+
return Number.isFinite(n2) ? n2 : dflt;
|
|
802
802
|
};
|
|
803
803
|
function resolveOptions(p2) {
|
|
804
804
|
return {
|
|
@@ -825,8 +825,8 @@ function resolveOptions(p2) {
|
|
|
825
825
|
// default here makes the chart and the gate agree in every host. A positive value from
|
|
826
826
|
// the host wins; absent, blank, zero or junk means the shared default.
|
|
827
827
|
maxMapPoints: (() => {
|
|
828
|
-
const
|
|
829
|
-
return
|
|
828
|
+
const n2 = numberOr(p2.maxMapPoints, 0);
|
|
829
|
+
return n2 > 0 ? Math.round(n2) : MAX_MAP_POINTS_DEFAULT;
|
|
830
830
|
})(),
|
|
831
831
|
// FIFTH AND SIXTH OCCURRENCES, and the two that argue hardest for the guard test: both
|
|
832
832
|
// were passed by the visual AND read by the charts, and neither was ever declared here or
|
|
@@ -872,20 +872,20 @@ function resolveOptions(p2) {
|
|
|
872
872
|
// never reach a chart as a live mode. Both of these are read on EVERY render, so a
|
|
873
873
|
// reader can change their mind about a cached chart without regenerating it.
|
|
874
874
|
approximatePositions: (() => {
|
|
875
|
-
const
|
|
876
|
-
return
|
|
875
|
+
const v3 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
|
|
876
|
+
return v3 === "mark" || v3 === "aggregate" || v3 === "skip" ? v3 : APPROXIMATE_POSITIONS_DEFAULT;
|
|
877
877
|
})(),
|
|
878
878
|
valueAxisBaseline: (() => {
|
|
879
|
-
const
|
|
880
|
-
return
|
|
879
|
+
const v3 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
|
|
880
|
+
return v3 === "zero" || v3 === "fit" || v3 === "auto" ? v3 : VALUE_AXIS_BASELINE_DEFAULT;
|
|
881
881
|
})(),
|
|
882
882
|
// Same shape, and the same reason for it: an unrecognised string must never reach a chart
|
|
883
883
|
// as a live mode. Failing open to "auto" is the conservative direction here — "auto" is
|
|
884
884
|
// the setting that makes the chart PROVE the grid before it names a period, so a garbled
|
|
885
885
|
// value withdraws the claim rather than asserting one.
|
|
886
886
|
seasonalMarkers: (() => {
|
|
887
|
-
const
|
|
888
|
-
return
|
|
887
|
+
const v3 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
|
|
888
|
+
return v3 === "auto" || v3 === "always" || v3 === "never" ? v3 : SEASONAL_MARKERS_DEFAULT;
|
|
889
889
|
})(),
|
|
890
890
|
// ---- animation: booleans, default+clamp numerics, "" default enum ----
|
|
891
891
|
animAutoPlay: !!p2.animAutoPlay,
|
|
@@ -928,8 +928,8 @@ function resolveOptions(p2) {
|
|
|
928
928
|
// because a newer client shipped, and "both" would have done exactly that to every deck
|
|
929
929
|
// already in a report.
|
|
930
930
|
flipMode: (() => {
|
|
931
|
-
const
|
|
932
|
-
if (
|
|
931
|
+
const m2 = (p2.flipMode == null ? "" : String(p2.flipMode)).toLowerCase();
|
|
932
|
+
if (m2 === "single" || m2 === "all" || m2 === "both") return m2;
|
|
933
933
|
if (p2.flipSync === false) return "single";
|
|
934
934
|
if (p2.flipSync === true) return "all";
|
|
935
935
|
return FLIP_MODE_DEFAULT;
|
|
@@ -1038,17 +1038,17 @@ var H = "AB|CA|Alberta|-113.75|52.18,AK|US|Alaska|-148.32|61.29,AL|US|Alabama|-8
|
|
|
1038
1038
|
var X = "006|-66.84|18.26,007|-66.15|18.15,008|-64.74|17.74,009|-66.12|18.37,010|-72.6|42.26,011|-72.53|42.07,012|-73.21|42.37,013|-72.51|42.58,014|-71.81|42.59,015|-71.85|42.23,016|-71.84|42.28,017|-71.44|42.33,018|-71.21|42.64,019|-70.89|42.66,020|-71.28|42.12,021|-71.05|42.31,022|-71.04|42.35,023|-70.86|41.98,024|-71.22|42.37,025|-70.6|41.71,026|-70.2|41.73,027|-71.07|41.77,028|-71.62|41.69,029|-71.47|41.82,030|-71.51|42.9,031|-71.48|43,032|-71.65|43.57,033|-71.58|43.26,034|-72.19|42.91,035|-71.31|44.69,036|-72.32|43.17,037|-72.13|43.69,038|-71.1|43.56,039|-70.76|43.24,040|-70.6|43.78,041|-70.27|43.7,042|-70.49|44.38,043|-69.75|44.3,044|-68.83|45.45,045|-69.57|43.99,046|-67.8|44.79,047|-68.34|46.55,048|-69.17|44.2,049|-69.97|44.99,050|-72.43|43.85,051|-72.65|43.28,052|-73.14|43.03,053|-72.77|42.94,054|-72.98|44.58,056|-72.6|44.35,057|-73.04|43.69,058|-72.12|44.68,059|-71.7|44.79,060|-72.81|41.88,061|-72.69|41.74,062|-72.12|41.81,063|-72.03|41.5,064|-72.61|41.46,065|-72.94|41.36,066|-73.22|41.24,067|-73.24|41.68,068|-73.42|41.28,069|-73.57|41.14,070|-74.28|40.76,071|-74.2|40.74,072|-74.2|40.68,073|-74.08|40.71,074|-74.4|41.09,075|-74.17|40.92,076|-74.01|40.94,077|-74.17|40.28,078|-74.81|40.97,079|-74.55|40.74,080|-74.98|39.78,081|-75.07|39.94,082|-74.68|39.32,083|-75.04|39.45,084|-74.48|39.35,085|-74.62|40.25,086|-74.68|40.23,087|-74.22|39.96,088|-74.72|40.54,089|-74.48|40.45,100|-73.96|40.77,101|-73.95|40.78,102|-74.02|40.72,103|-74.15|40.58,104|-73.85|40.9,105|-73.75|41.27,106|-73.74|41.02,107|-73.84|40.96,108|-73.8|40.95,109|-74.27|41.3,110|-73.69|40.74,111|-73.93|40.76,112|-73.94|40.66,113|-73.84|40.73,114|-73.77|40.69,115|-73.62|40.71,116|-73.88|40.57,117|-73.23|40.82,118|-73.5|40.77,119|-72.53|40.95,120|-74.22|42.92,121|-74.4|43.46,122|-73.81|42.7,123|-73.96|42.82,124|-74.27|42.09,125|-73.7|41.89,126|-73.88|41.69,127|-74.75|41.74,128|-73.91|43.61,129|-74.03|44.53,130|-76.16|43.08,131|-76.46|43.27,132|-76.2|43.03,133|-75.07|43.45,134|-75.35|43.03,135|-75.15|43.14,136|-75.39|44.33,137|-75.2|42.21,138|-75.46|42.43,139|-75.88|42.12,140|-78.48|43.01,141|-78.7|42.49,142|-78.8|42.91,143|-78.96|43.12,144|-77.71|42.96,145|-77.17|43.14,146|-77.65|43.17,147|-78.84|42.21,148|-77.18|42.29,149|-76.78|42.09,150|-80.23|40.56,151|-80.18|40.53,152|-79.97|40.46,153|-80.24|40.01,154|-79.65|39.92,155|-78.8|39.95,156|-79.47|40.33,157|-79.02|40.71,158|-78.66|41.32,159|-78.84|40.35,160|-79.88|40.93,161|-80.3|41.19,162|-79.35|41.08,163|-79.58|41.59,164|-80|41.87,165|-80.04|42.1,166|-78.28|40.48,167|-78.47|41.76,168|-78|40.97,169|-77.37|41.8,170|-77.29|40.44,171|-76.78|40.33,172|-77.81|39.98,173|-76.93|39.89,174|-76.72|39.97,175|-76.24|40.05,176|-76.34|40.05,177|-77.22|41.34,178|-76.77|40.93,179|-76.27|40.69,180|-75.45|40.67,181|-75.47|40.6,182|-75.88|40.9,183|-75.19|41.12,184|-75.38|41.53,185|-75.68|41.37,186|-76.17|41.4,187|-75.86|41.22,188|-76.12|41.82,189|-75.14|40.36,190|-75.37|39.97,191|-75.15|40.01,193|-75.78|39.92,194|-75.46|40.19,195|-75.9|40.42,196|-75.95|40.34,197|-75.68|39.53,198|-75.58|39.77,199|-75.46|38.83,200|-77.02|38.9,201|-77.68|38.9,202|-77.03|38.89,203|-77.01|38.86,204|-77.05|38.89,205|-77.01|38.87,206|-76.76|38.45,207|-76.78|38.88,208|-77.23|39.15,209|-76.99|39.05,210|-76.32|39.53,211|-76.73|39.58,212|-76.58|39.31,214|-76.55|39,215|-79.08|39.56,216|-76.02|38.86,217|-77.5|39.52,218|-75.57|38.27,219|-75.94|39.57,220|-77.25|38.78,221|-77.25|38.92,222|-77.11|38.88,223|-77.13|38.79,224|-77.25|38.22,225|-77.51|38.09,226|-78.25|39.03,227|-78.05|38.49,228|-78.79|38.57,229|-78.55|38.02,230|-78.09|37.66,231|-76.96|37.55,232|-77.46|37.51,233|-76.3|36.68,234|-76.66|36.77,235|-76.26|36.87,236|-76.44|37.12,237|-76.38|36.85,238|-77.41|36.94,239|-78.39|37.03,240|-80.1|37.23,241|-79.89|36.9,242|-82.49|36.83,243|-81.13|36.86,244|-79.51|38.05,245|-79.11|37.15,246|-81.8|37.19,247|-81.14|37.39,248|-81.64|37.47,249|-80.32|37.95,250|-81.45|38.27,251|-81.89|38.64,252|-81.45|38.77,253|-81.64|38.42,254|-78.11|39.45,255|-82.19|38.25,256|-82.08|37.76,257|-82.41|38.4,258|-81.21|37.72,259|-80.89|37.83,260|-80.63|40.05,261|-81.27|39.2,262|-80.02|38.75,263|-80.23|39.27,264|-80.65|39.21,265|-80.05|39.59,266|-80.8|38.48,267|-78.98|39.33,268|-79.12|38.88,270|-80.45|36.24,271|-80.24|36.06,272|-79.82|35.86,273|-79.52|35.55,274|-79.81|36.09,275|-78.54|35.93,276|-78.65|35.81,277|-78.9|35.99,278|-77.32|35.88,279|-76.5|36.19,280|-81.2|35.4,281|-80.41|35.21,282|-80.83|35.22,283|-78.94|34.96,284|-78.23|34.39,285|-77.23|35.06,286|-81.36|36.06,287|-82.78|35.51,288|-82.55|35.6,289|-83.97|35.11,290|-80.88|34.19,291|-80.62|33.71,292|-80.96|34.04,293|-81.86|34.78,294|-80.08|33.05,295|-79.49|34.07,296|-82.57|34.61,297|-80.92|34.83,298|-81.74|33.51,299|-80.96|32.55,300|-84.08|33.85,301|-84.91|34.04,302|-84.55|33.25,303|-84.42|33.77,304|-82.11|32.48,305|-83.81|34.58,306|-83.14|33.86,307|-85.1|34.71,308|-82.34|33.35,309|-82.01|33.4,310|-83.42|32.64,312|-83.64|32.83,313|-81.49|31.68,314|-81.15|32.03,315|-82.21|31.4,316|-83.21|31.02,317|-83.87|31.48,318|-84.69|32.45,319|-84.95|32.47,320|-82.58|30.27,321|-81.48|29.39,322|-81.69|30.3,323|-84.25|30.29,324|-85.58|30.55,325|-87.03|30.76,326|-82.6|29.58,327|-81.28|28.79,328|-81.32|28.47,329|-80.67|27.96,330|-80.58|25.31,331|-80.38|25.74,333|-80.25|26.13,334|-81.01|26.64,335|-82.22|28.19,336|-82.47|28.01,337|-82.73|27.85,338|-81.64|27.72,339|-81.71|26.77,341|-81.32|26.11,342|-82.16|27.29,344|-82.35|29.01,346|-82.52|28.41,347|-81.4|28.29,349|-80.72|27.34,350|-86.8|34.05,351|-86.38|33.43,352|-86.77|33.5,354|-87.86|33.07,355|-87.71|33.96,356|-87.4|34.67,357|-86.26|34.75,358|-86.59|34.69,359|-85.94|34.27,360|-86.09|32.09,361|-86.27|32.31,362|-85.65|33.53,363|-85.56|31.34,364|-86.97|31.38,365|-88.14|31.32,366|-88.19|30.68,367|-87.34|32.33,368|-85.41|32.61,369|-88.25|32.12,370|-87.02|36.12,371|-86.23|35.75,372|-86.83|36.15,373|-85.36|35.32,374|-85.33|35.06,376|-82.3|36.36,377|-84.31|36.27,378|-83.35|36.3,379|-83.97|35.97,380|-89.43|35.55,381|-89.96|35.1,382|-88.68|36.29,383|-88.5|35.61,384|-87.36|35.34,385|-85.34|36.18,386|-89.76|34.57,387|-90.81|33.54,388|-88.63|34.36,389|-89.9|33.77,390|-90|32.53,391|-90.67|32.51,392|-90.22|32.32,393|-88.8|32.42,394|-89.26|31.23,395|-89|30.59,396|-90.67|31.32,397|-88.87|33.53,398|-84.67|31.32,400|-85.29|38.07,401|-86.2|37.85,402|-85.66|38.19,403|-84.2|38.06,404|-84.42|37.53,405|-84.45|38.04,406|-84.87|38.22,407|-84.12|36.95,408|-83.26|36.9,409|-83.74|36.95,410|-84.32|38.64,411|-83.06|38.38,412|-82.67|37.89,413|-83.48|37.58,414|-83.15|37.84,415|-82.39|37.46,416|-82.78|37.54,417|-83.25|37.23,418|-82.88|37.21,420|-88.57|36.9,421|-86.09|36.89,422|-87.11|36.95,423|-87.02|37.52,424|-87.7|37.47,425|-84.71|37.15,426|-84.82|36.81,427|-85.73|37.32,430|-82.9|40.21,431|-82.99|39.69,432|-82.97|39.98,433|-83.38|40.55,434|-83.3|41.42,435|-84.22|41.46,436|-83.54|41.67,437|-81.66|39.85,438|-81.88|40.27,439|-80.9|40.25,440|-80.97|41.64,441|-81.66|41.42,442|-81.6|41.13,443|-81.54|41.07,444|-80.77|41.09,445|-80.64|41.05,446|-81.53|40.65,447|-81.39|40.83,448|-82.77|41.02,449|-82.55|40.74,450|-84.48|39.43,451|-83.84|39.16,452|-84.48|39.18,453|-84.3|39.97,454|-84.18|39.74,455|-83.81|39.94,456|-82.86|38.99,457|-81.78|39.35,458|-84.23|40.83,460|-86.13|40.17,461|-86.18|39.62,462|-86.14|39.79,463|-87.05|41.41,464|-87.34|41.55,465|-86.08|41.44,466|-86.28|41.66,467|-85.21|41.17,468|-85.17|41.09,469|-86.14|40.76,470|-85.08|39.16,471|-86.02|38.43,472|-85.74|39.05,473|-85.15|40.09,474|-86.63|38.99,475|-87.03|38.46,476|-87.53|38.13,477|-87.58|38.03,478|-87.29|39.45,479|-87.11|40.5,480|-82.79|42.83,481|-83.62|42.2,482|-83.1|42.38,483|-83.35|42.66,484|-83.22|43.29,485|-83.69|43.03,486|-84.36|43.99,487|-83.67|44.45,488|-84.67|43.02,489|-84.59|42.74,490|-85.54|42.2,491|-86.36|41.87,492|-84.36|42.06,493|-85.57|43.33,494|-86.14|43.39,495|-85.66|42.96,496|-85.52|44.44,497|-84.37|45.17,498|-86.94|46.17,499|-88.93|46.6,500|-94.77|41.63,501|-92.79|41.84,502|-93.67|42.12,503|-93.63|41.59,504|-93.37|43.17,505|-94.45|42.77,506|-92.45|42.65,507|-92.31|42.49,508|-94.56|40.96,510|-95.91|42.6,511|-96.39|42.52,512|-96.06|43.28,513|-95.16|43.27,514|-95.08|42.11,515|-95.55|41.44,516|-95.37|40.74,520|-90.98|42.46,521|-91.73|43.2,522|-92.31|41.9,523|-91.66|41.87,524|-91.69|41.96,525|-92.46|40.95,526|-91.44|40.88,527|-90.88|41.64,528|-90.61|41.56,530|-88.24|43.51,531|-88.33|42.75,532|-87.98|43.06,534|-87.86|42.74,535|-89.66|42.95,537|-89.38|43.08,538|-90.73|42.88,539|-89.55|43.64,540|-92.46|45.08,541|-88.23|45.09,542|-87.6|44.52,543|-88.01|44.53,544|-89.85|44.93,545|-89.86|45.89,546|-90.87|43.93,547|-91.52|44.85,548|-91.63|46.04,549|-88.96|44.19,550|-92.98|45.17,551|-93.08|44.96,553|-94.06|44.99,554|-93.31|45.01,556|-91.03|47.67,557|-92.68|47.39,558|-92.08|46.96,559|-92.28|43.89,560|-94.04|44.02,561|-95.65|43.92,562|-95.75|45.08,563|-94.59|45.83,564|-94.5|46.63,565|-96.08|46.86,566|-94.31|47.88,567|-96.22|48.39,570|-97.07|43.48,571|-96.76|43.54,572|-97.18|45.04,573|-98.53|43.91,574|-98.93|45.36,575|-100.61|43.86,576|-101.59|45.43,577|-103.11|44.26,580|-97.39|46.66,581|-96.83|46.86,582|-97.72|48.25,583|-99.34|48.32,584|-99.12|46.88,585|-100.98|46.76,586|-102.99|46.75,587|-101.7|48.34,588|-103.48|48.2,590|-108.62|45.98,591|-108.45|45.69,592|-105.6|48.2,593|-105.58|46.4,594|-111.24|47.79,595|-109.12|48.38,596|-111.74|46.65,597|-112.31|45.48,598|-114.25|46.97,599|-114.57|48.37,600|-88.15|42.29,601|-88.47|42.01,602|-87.69|42.04,603|-87.79|41.89,604|-88.09|41.39,605|-88.55|41.69,606|-87.69|41.83,607|-87.82|42.03,608|-87.76|41.84,609|-87.92|40.8,610|-89.56|42.18,611|-89.08|42.28,612|-90.29|41.5,613|-89.16|41.34,614|-90.43|40.82,615|-89.68|40.71,616|-89.61|40.72,617|-88.89|40.52,618|-88.15|40.11,619|-88.19|39.66,620|-90.01|39.13,622|-89.72|38.41,623|-91.02|39.99,624|-88.19|39.04,625|-89.21|39.63,626|-90|39.86,627|-89.66|39.8,628|-88.65|38.35,629|-88.89|37.55,630|-90.83|38.35,631|-90.32|38.64,633|-91.11|39.02,634|-91.78|39.93,635|-92.61|40.2,636|-90.64|37.61,637|-89.81|37.37,638|-89.73|36.55,639|-90.62|36.84,640|-94.1|39.07,641|-94.58|39.14,644|-94.69|40.13,645|-94.83|39.75,646|-93.55|39.89,647|-94.15|38.06,648|-94.35|36.93,650|-92.23|38.45,651|-92.19|38.51,652|-92.38|39.21,653|-93.26|38.71,654|-92.03|37.93,655|-91.92|37.67,656|-93.08|36.76,657|-92.43|37.03,658|-93.3|37.22,660|-95.12|38.84,661|-94.73|39.11,662|-94.72|38.95,664|-96.15|39.64,665|-96.34|39.4,666|-95.76|39.06,667|-95.23|37.64,668|-96.39|38.36,669|-97.86|39.77,670|-98.49|37.33,671|-98.4|37.44,672|-97.33|37.7,673|-95.81|37.23,674|-97.79|38.98,675|-98.99|38.25,676|-99.47|39.34,677|-101.15|39.35,678|-100.82|37.91,679|-101.43|37.18,680|-96.46|41.55,681|-96.05|41.24,683|-96.93|40.39,684|-97.26|40.89,685|-96.69|40.82,686|-97.68|41.55,687|-98.16|42.43,688|-99.15|41.34,689|-98.9|40.34,690|-100.99|40.37,691|-101.59|41.42,692|-100.64|42.67,693|-102.84|42.29,700|-89.93|29.63,701|-89.93|30.02,703|-90.65|29.62,704|-90.27|30.66,705|-92.25|30.2,706|-93.21|30.34,707|-91.2|30.57,708|-91.1|30.45,710|-93.4|32.45,711|-93.75|32.47,712|-91.95|32.56,713|-91.86|31.43,714|-92.84|31.57,716|-91.75|33.61,717|-92.79|33.48,718|-93.84|33.66,719|-93.61|34.4,720|-91.9|34.92,721|-92.56|34.93,722|-92.37|34.7,723|-90.59|35.07,724|-90.76|36.04,725|-91.81|36.01,726|-92.93|36.15,727|-94.05|36.11,728|-93.33|35.3,729|-94.08|35.29,730|-97.83|35.31,731|-97.5|35.43,734|-97.14|34.21,735|-98.81|34.53,736|-99.33|35.52,737|-98.2|36.42,738|-99.54|36.5,739|-101.67|36.74,740|-96.19|36.34,741|-95.96|36.15,743|-95.02|36.55,744|-95.44|35.64,745|-95.65|34.66,746|-97.05|36.71,747|-95.41|34.02,748|-96.66|35.17,749|-94.69|35.23,750|-96.76|33.06,751|-96.32|32.48,752|-96.78|32.79,753|-96.84|32.81,754|-95.67|33.37,755|-94.45|33.3,756|-94.58|32.49,757|-95.37|32.24,758|-95.68|31.44,759|-94.29|31.29,760|-97.54|32.59,761|-97.38|32.77,762|-97.44|33.52,763|-98.87|33.73,764|-98.59|32.61,765|-97.62|31.11,766|-97.06|31.7,767|-97.15|31.57,768|-99.37|31.23,769|-100.88|31.03,770|-95.39|29.79,772|-95.37|29.77,773|-95.24|30.48,774|-96.02|29.38,775|-94.98|29.68,776|-94.16|30.27,777|-94.19|29.96,778|-96.32|30.67,779|-96.95|28.92,780|-99.01|28.67,781|-97.93|29.08,782|-98.53|29.47,783|-98.14|27.63,784|-97.44|27.73,785|-98.19|26.39,786|-98.1|30.27,787|-97.78|30.3,788|-100.26|29.44,789|-96.87|29.92,790|-101.63|35.48,791|-101.85|35.21,792|-100.57|34.25,793|-102.15|33.37,794|-101.88|33.58,795|-100.31|32.7,796|-99.72|32.46,797|-102.22|31.57,798|-104.17|30.53,799|-106.16|31.8,800|-105.11|39.91,801|-104.47|39.51,802|-104.93|39.78,803|-105.31|40.04,804|-106.16|39.98,805|-105.35|40.57,806|-104.49|40.38,807|-103.09|40.4,808|-103.16|39.12,809|-104.67|38.79,810|-103.58|37.77,811|-106.39|37.54,812|-106.39|38.46,813|-108.42|37.49,814|-108.02|38.43,815|-108.7|38.92,816|-107.86|39.99,820|-105.27|41.31,821|-110.51|44.57,822|-104.67|42.39,823|-107.03|41.75,824|-108.65|44.32,825|-108.91|43.14,826|-106.43|43.1,827|-105|44.2,828|-106.71|44.55,829|-109.71|42.82,830|-110.51|43.7,831|-110.53|42.6,832|-112.17|42.66,833|-114.23|42.81,834|-111.63|43.86,835|-115.77|46.07,836|-115.99|44,837|-116.04|43.58,838|-116.47|47.77,840|-110.86|40.53,841|-111.81|40.71,843|-112.18|41.67,844|-112.01|41.23,845|-109.72|38.09,846|-111.68|39.63,847|-112.82|37.61,850|-112.09|33.63,851|-111.41|33,852|-111.69|33.6,853|-113.44|33.49,855|-110.3|33.43,856|-110.59|32,857|-111.09|32.18,859|-109.81|34.23,860|-111.15|35.89,863|-112.57|34.85,864|-113.79|35.66,865|-109.55|36.03,870|-106.9|35.22,871|-106.72|35.12,873|-108.56|35.44,874|-108.23|36.59,875|-106.04|36.27,877|-104.68|36.06,878|-107.94|34,879|-107.48|33.2,880|-108.03|32.37,881|-103.81|34.26,882|-104.07|32.87,883|-105.48|33.62,884|-103.79|35.74,890|-114.84|37,891|-115.42|36.33,893|-116.96|39.5,894|-118.06|41.29,895|-119.72|39.9,897|-119.8|39.18,898|-115.71|40.95,900|-118.32|34.04,902|-118.76|34.07,903|-118.34|33.95,904|-118.48|34.02,905|-118.33|33.83,906|-118.03|33.93,907|-118.45|33.39,908|-118.18|33.8,910|-118.25|34.28,911|-118.13|34.15,912|-118.25|34.19,913|-118.55|34.36,914|-118.47|34.18,915|-118.33|34.19,916|-118.38|34.18,917|-117.78|34.14,918|-118.13|34.09,919|-116.62|32.73,920|-116.7|33.16,921|-117.14|32.85,922|-115.5|33.59,923|-117.14|34.66,924|-117.33|34.17,925|-117.06|33.68,926|-117.73|33.63,927|-117.85|33.74,928|-117.71|33.85,930|-119.12|34.39,931|-119.97|34.48,932|-119.07|35.98,933|-119.01|35.35,934|-120.5|35.38,935|-118.36|37.37,936|-119.72|36.95,937|-119.85|36.71,939|-121.42|36.34,940|-122.31|37.41,941|-122.44|37.77,943|-122.13|37.44,944|-122.32|37.53,945|-122.05|38.09,946|-122.19|37.78,947|-122.26|37.89,948|-122.3|37.97,949|-122.74|38.14,950|-121.42|36.85,951|-121.76|37.33,952|-120.79|38.14,953|-120.56|37.62,954|-123.15|39.08,955|-123.75|40.5,956|-121.34|38.62,957|-120.86|39.13,958|-121.44|38.58,959|-121.73|39.47,960|-122.42|41.06,961|-120.33|40.52,967|-155.53|19.6,968|-157.83|21.34,969|144.77|13.45,970|-121.45|45.3,971|-123.79|45.64,972|-122.74|45.57,973|-123.26|44.68,974|-123.46|43.61,975|-123.06|42.34,976|-120.4|42.67,977|-120.77|44.32,978|-118.59|45.21,979|-117.63|43.34,980|-121.78|47.42,981|-122.32|47.6,982|-121.79|48.39,983|-123.87|47.96,984|-122.46|47.18,985|-123.27|46.94,986|-122.15|45.99,988|-119.91|48,989|-120.57|46.71,990|-117.56|47.62,991|-118.13|47.91,992|-117.4|47.67,993|-118.82|46.4,994|-117.21|46.2,995|-156.93|60.89,996|-151.66|60.82,997|-146.69|65.19,998|-136.2|58.94,999|-131.24|55.86";
|
|
1039
1039
|
var k = "ABW|-70.02|12.54,AFG|68|34.63,AGO|14.24|-9.84,AIA|-63.06|18.22,ALA|19.93|60.1,ALB|19.81|41.14,AND|1.53|42.51,ARE|55.24|24.99,ARG|-61.28|-32.95,ARM|44.52|40.23,ASM|-170.7|-14.28,ATA|21.28|-80.52,ATF|70.22|-49.35,ATG|-61.84|17.12,AUS|144.91|-33.49,AUT|15.51|47.93,AZE|49.02|40.37,BDI|29.49|-3.34,BEL|4.37|50.89,BEN|2.33|7.65,BES|-68.27|12.15,BFA|-2.08|12.15,BGD|90.42|23.65,BGR|24.92|42.71,BHR|50.57|26.18,BHS|-77.34|25.06,BIH|17.97|44.18,BLM|-62.85|17.9,BLR|27.81|53.57,BLZ|-88.41|17.54,BMU|-64.78|32.29,BOL|-65.79|-17.39,BRA|-45.89|-17.51,BRB|-59.62|13.11,BRN|114.74|4.82,BTN|89.69|27.32,BWA|25.99|-23.43,CAF|18.32|4.94,CAN|-79.4|43.71,CCK|96.82|-12.16,CHE|7.96|47.07,CHL|-71.21|-33.72,CHN|114.44|32,CIV|-4.89|6.16,CMR|11.19|5.41,COD|20.23|-4.72,COG|14.18|-4.04,COK|-159.78|-21.21,COL|-74.85|5.93,COM|43.58|-11.89,CPV|-23.87|15.66,CRI|-84.14|9.99,CUB|-80.25|22.21,CUW|-68.88|12.12,CXR|105.68|-10.42,CYM|-81.38|19.32,CYP|33.31|35,CZE|15.44|49.89,DEU|9.65|51.24,DJI|43.15|11.59,DMA|-61.39|15.3,DNK|11.42|55.79,DOM|-70.07|18.75,DZA|3.55|35.62,ECU|-79.29|-1.4,EGY|31.22|29.84,ERI|38.84|15.25,ESH|-13.19|27.14,ESP|-2.91|39.69,EST|25.17|59.29,ETH|39.02|9.26,FIN|24.87|61.26,FJI|178.2|-17.85,FLK|-57.86|-51.69,FRA|2.87|47.28,FRO|-6.77|62.01,FSM|158.16|6.92,GAB|10.22|-0.06,GBR|-1.37|52.49,GEO|43.92|41.84,GGY|-2.54|49.46,GHA|-0.98|6.4,GIB|-5.35|36.14,GIN|-12.8|9.75,GLP|-61.53|16.23,GMB|-16.59|13.41,GNB|-15.48|11.9,GNQ|9.77|1.86,GRC|23.73|37.98,GRD|-61.75|12.05,GRL|-51.72|64.18,GTM|-90.71|14.73,GUF|-52.64|5.04,GUM|144.82|13.5,GUY|-58.11|6.63,HKG|114.15|22.33,HMD|73.5|-53.1,HND|-87.41|14.94,HRV|16.21|45.31,HTI|-72.34|18.54,HUN|19.21|47.39,IDN|106.85|-6.21,IMN|-4.48|54.15,IND|78.36|21,IOT|71.35|-6.19,IRL|-6.87|53.12,IRN|51.6|34.4,IRQ|44.78|33.65,ISL|-21.7|64.22,ISR|34.97|32.07,ITA|12|42.73,JAM|-76.91|18.03,JEY|-2.1|49.19,JOR|35.96|32.03,JPN|137.27|35.53,KAZ|70.17|47.24,KEN|36.81|-0.97,KGZ|73.96|41.94,KHM|104.7|11.75,KIR|172.98|1.33,KNA|-62.72|17.3,KOR|127.51|36.58,KWT|48.06|29.2,Kosovo|20.9|42.58,LAO|102.6|17.97,LBN|35.53|33.87,LBR|-10.39|6.36,LBY|13.19|32.89,LCA|-60.97|14.04,LIE|9.52|47.14,LKA|80.25|7.25,LSO|27.67|-29.38,LTU|24.18|55.04,LUX|6.08|49.56,LVA|24.13|56.85,MAC|113.55|22.19,MAF|-63.08|18.07,MAR|-6.65|33.43,MCO|7.42|43.74,MDA|28.82|47.09,MDG|47.46|-18.89,MDV|73.51|4.18,MEX|-100.65|21.59,MHL|171.38|7.09,MKD|21.47|41.8,MLI|-7.15|12.95,MLT|14.46|35.91,MMR|96.18|18.74,MNE|19.17|42.53,MNG|105.33|47.94,MNP|145.75|15.21,MOZ|32.58|-25.97,MRT|-14.58|18.01,MSR|-62.21|16.79,MTQ|-61.01|14.64,MUS|57.51|-20.23,MWI|34.34|-14.24,MYS|103.35|3.45,MYT|45.23|-12.77,N. Cyprus|33.56|35.27,NAM|17.19|-21.34,NCL|166.47|-22.26,NER|5.05|14.04,NFK|167.97|-29.05,NGA|5.91|7.87,NIC|-86.17|12.33,NIU|-169.92|-19.05,NLD|5.21|52.09,NOR|9.62|60.46,NPL|84.7|27.64,NRU|166.93|-0.55,NZL|174.54|-38.9,OMN|57.69|23.27,PAK|71.47|30.24,PAN|-79.83|8.98,PCN|-130.1|-25.07,PER|-76.4|-11.18,PHL|121.05|14.65,PLW|134.58|7.52,PNG|147.4|-7.71,POL|19.26|51.79,PRI|-66.24|18.35,PRK|126.54|39.52,PRT|-9.08|39.42,PRY|-57.15|-25.27,PSE|35.23|31.78,PYF|-149.59|-17.57,QAT|51.49|25.32,REU|55.45|-21.08,ROU|25.47|45.38,RUS|51.84|54.52,RWA|29.78|-1.98,SAU|43.01|23.76,SDN|31.67|14.67,SEN|-16.73|14.66,SGP|103.85|1.33,SGS|-36.51|-54.28,SHN|-5.72|-15.92,SJM|15.65|78.22,SLB|159.97|-9.44,SLE|-12.4|8.36,SLV|-89.08|13.7,SMR|12.45|43.94,SOM|44.96|4.91,SPM|-56.18|46.78,SRB|20.62|44.5,SSD|29.91|6.61,STP|6.73|0.34,SUR|-55.18|5.84,SVK|18.69|48.55,SVN|14.83|46.16,SWE|16.03|58.86,SWZ|31.28|-26.43,SXM|-63.05|18.03,SYC|55.46|-4.62,SYR|37.18|35.12,Somaliland|46.23|9.76,TCA|-72.1|21.74,TCD|16.57|11.53,TGO|1.16|6.8,THA|100.71|13.71,TJK|69.39|39.08,TKM|59.4|38.74,TLS|125.65|-8.67,TON|-175.2|-21.14,TTO|-61.4|10.5,TUN|10.23|35.87,TUR|32.1|39.5,TUV|179.19|-8.52,TWN|121.06|24.37,TZA|36.11|-5.88,UGA|32.23|0.59,UKR|32.8|48.99,URY|-56.28|-34.1,USA|-93.51|37.4,UZB|69.22|41.26,VAT|12.45|41.9,VCT|-61.21|13.14,VEN|-67.82|9.83,VGB|-64.62|18.43,VIR|-64.8|17.9,VNM|106.63|10.82,VUT|168.31|-17.74,WLF|-176.17|-13.28,WSM|-171.77|-13.83,YEM|44.62|14.36,ZAF|26.96|-28.33,ZMB|28.41|-13.86,ZWE|30.49|-18.56";
|
|
1040
1040
|
var W = { \u00F8: "o", \u0153: "oe", \u00E6: "ae", \u00DF: "ss", \u0142: "l", \u0111: "d", \u00F0: "d", \u00FE: "th", \u0131: "i", \u0127: "h", \u0167: "t", \u014B: "n", \u0138: "k", \u0259: "e", \u01DD: "e", \u0133: "ij", \u0140: "l", \u017F: "s" };
|
|
1041
|
-
function u(
|
|
1042
|
-
return
|
|
1041
|
+
function u(n2) {
|
|
1042
|
+
return n2.normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase().replace(/[øœæßłđðþıħŧŋəĸ]/g, (e) => W[e]).replace(/[^\p{L}\p{Nd}\s]/gu, " ").replace(/\s+/g, " ").trim();
|
|
1043
1043
|
}
|
|
1044
1044
|
var _ = "AD AND,AE ARE,AF AFG,AG ATG,AI AIA,AL ALB,AM ARM,AO AGO,AQ ATA,AR ARG,AS ASM,AT AUT,AU AUS,AW ABW,AX ALA,AZ AZE,BA BIH,BB BRB,BD BGD,BE BEL,BF BFA,BG BGR,BH BHR,BI BDI,BJ BEN,BL BLM,BM BMU,BN BRN,BO BOL,BQ BES,BR BRA,BS BHS,BT BTN,BV BVT,BW BWA,BY BLR,BZ BLZ,CA CAN,CC CCK,CD COD,CF CAF,CG COG,CH CHE,CI CIV,CK COK,CL CHL,CM CMR,CN CHN,CO COL,CR CRI,CU CUB,CV CPV,CW CUW,CX CXR,CY CYP,CZ CZE,DE DEU,DJ DJI,DK DNK,DM DMA,DO DOM,DZ DZA,EC ECU,EE EST,EG EGY,EH ESH,ER ERI,ES ESP,ET ETH,FI FIN,FJ FJI,FK FLK,FM FSM,FO FRO,FR FRA,GA GAB,GB GBR,GD GRD,GE GEO,GF GUF,GG GGY,GH GHA,GI GIB,GL GRL,GM GMB,GN GIN,GP GLP,GQ GNQ,GR GRC,GS SGS,GT GTM,GU GUM,GW GNB,GY GUY,HK HKG,HM HMD,HN HND,HR HRV,HT HTI,HU HUN,ID IDN,IE IRL,IL ISR,IM IMN,IN IND,IO IOT,IQ IRQ,IR IRN,IS ISL,IT ITA,JE JEY,JM JAM,JO JOR,JP JPN,KE KEN,KG KGZ,KH KHM,KI KIR,KM COM,KN KNA,KP PRK,KR KOR,KW KWT,KY CYM,KZ KAZ,LA LAO,LB LBN,LC LCA,LI LIE,LK LKA,LR LBR,LS LSO,LT LTU,LU LUX,LV LVA,LY LBY,MA MAR,MC MCO,MD MDA,ME MNE,MF MAF,MG MDG,MH MHL,MK MKD,ML MLI,MM MMR,MN MNG,MO MAC,MP MNP,MQ MTQ,MR MRT,MS MSR,MT MLT,MU MUS,MV MDV,MW MWI,MX MEX,MY MYS,MZ MOZ,NA NAM,NC NCL,NE NER,NF NFK,NG NGA,NI NIC,NL NLD,NO NOR,NP NPL,NR NRU,NU NIU,NZ NZL,OM OMN,PA PAN,PE PER,PF PYF,PG PNG,PH PHL,PK PAK,PL POL,PM SPM,PN PCN,PR PRI,PS PSE,PT PRT,PW PLW,PY PRY,QA QAT,RE REU,RO ROU,RS SRB,RU RUS,RW RWA,SA SAU,SB SLB,SC SYC,SD SDN,SE SWE,SG SGP,SH SHN,SI SVN,SJ SJM,SK SVK,SL SLE,SM SMR,SN SEN,SO SOM,SR SUR,SS SSD,ST STP,SV SLV,SX SXM,SY SYR,SZ SWZ,TC TCA,TD TCD,TF ATF,TG TGO,TH THA,TJ TJK,TK TKL,TL TLS,TM TKM,TN TUN,TO TON,TR TUR,TT TTO,TV TUV,TW TWN,TZ TZA,UA UKR,UG UGA,UM UMI,US USA,UY URY,UZ UZB,VA VAT,VC VCT,VE VEN,VG VGB,VI VIR,VN VNM,VU VUT,WF WLF,WS WSM,YE YEM,YT MYT,ZA ZAF,ZM ZMB,ZW ZWE";
|
|
1045
1045
|
var N = (() => {
|
|
1046
|
-
let
|
|
1046
|
+
let n2 = /* @__PURE__ */ new Map();
|
|
1047
1047
|
for (let e of _.split(",")) {
|
|
1048
|
-
let [t,
|
|
1049
|
-
t &&
|
|
1048
|
+
let [t, o2] = e.split(" ");
|
|
1049
|
+
t && o2 && n2.set(t, o2);
|
|
1050
1050
|
}
|
|
1051
|
-
return
|
|
1051
|
+
return n2;
|
|
1052
1052
|
})();
|
|
1053
1053
|
var z = new Set(N.keys());
|
|
1054
1054
|
var J = new Set(N.values());
|
|
@@ -1057,55 +1057,55 @@ var Q = { usa: "USA", "u.s.": "USA", "u.s.a.": "USA", us: "USA", america: "USA",
|
|
|
1057
1057
|
var b = null;
|
|
1058
1058
|
function j() {
|
|
1059
1059
|
if (b) return b;
|
|
1060
|
-
let
|
|
1060
|
+
let n2 = /* @__PURE__ */ new Map(), e = ["en", ...v.filter((t) => t !== "en")];
|
|
1061
1061
|
for (let t of e) {
|
|
1062
|
-
let
|
|
1062
|
+
let o2 = null;
|
|
1063
1063
|
try {
|
|
1064
|
-
|
|
1064
|
+
o2 = new Intl.DisplayNames([t], { type: "region" });
|
|
1065
1065
|
} catch {
|
|
1066
1066
|
continue;
|
|
1067
1067
|
}
|
|
1068
1068
|
for (let [i, r] of N) {
|
|
1069
|
-
let
|
|
1069
|
+
let a2;
|
|
1070
1070
|
try {
|
|
1071
|
-
|
|
1071
|
+
a2 = o2.of(i);
|
|
1072
1072
|
} catch {
|
|
1073
|
-
|
|
1073
|
+
a2 = void 0;
|
|
1074
1074
|
}
|
|
1075
|
-
if (!
|
|
1076
|
-
let s = u(
|
|
1077
|
-
s && !
|
|
1075
|
+
if (!a2 || a2 === i) continue;
|
|
1076
|
+
let s = u(a2);
|
|
1077
|
+
s && !n2.has(s) && n2.set(s, r);
|
|
1078
1078
|
}
|
|
1079
1079
|
}
|
|
1080
|
-
for (let [t,
|
|
1080
|
+
for (let [t, o2] of Object.entries(Q)) {
|
|
1081
1081
|
let i = u(t);
|
|
1082
|
-
i &&
|
|
1082
|
+
i && n2.set(i, o2);
|
|
1083
1083
|
}
|
|
1084
|
-
return b =
|
|
1084
|
+
return b = n2, n2;
|
|
1085
1085
|
}
|
|
1086
|
-
function T(
|
|
1087
|
-
return N.get(String(
|
|
1086
|
+
function T(n2) {
|
|
1087
|
+
return N.get(String(n2 || "").trim().toUpperCase()) ?? null;
|
|
1088
1088
|
}
|
|
1089
|
-
function E(
|
|
1090
|
-
if (
|
|
1091
|
-
let e = String(
|
|
1089
|
+
function E(n2) {
|
|
1090
|
+
if (n2 == null) return null;
|
|
1091
|
+
let e = String(n2).trim();
|
|
1092
1092
|
if (!e) return null;
|
|
1093
1093
|
let t = e.toUpperCase();
|
|
1094
1094
|
return t.length === 3 && J.has(t) ? t : t.length === 2 && z.has(t) ? N.get(t) ?? null : j().get(u(e)) ?? null;
|
|
1095
1095
|
}
|
|
1096
1096
|
var $ = /* @__PURE__ */ new Set(["n a", "none", "null", "nil", "unknown", "not applicable", "not available", "not specified", "unspecified", "missing", "blank", "empty", "tbd", "to be determined"]);
|
|
1097
|
-
function V(
|
|
1098
|
-
return
|
|
1097
|
+
function V(n2) {
|
|
1098
|
+
return n2 ? $.has(n2) : true;
|
|
1099
1099
|
}
|
|
1100
1100
|
var m3 = 80;
|
|
1101
1101
|
var q = { "north-america": "N", world: "W" };
|
|
1102
|
-
function F(
|
|
1103
|
-
let t =
|
|
1104
|
-
return t.length ? t : (e || "north-america") === "world" ?
|
|
1102
|
+
function F(n2, e) {
|
|
1103
|
+
let t = n2.filter((o2) => o2.row.kinds.includes(q[e || "north-america"]));
|
|
1104
|
+
return t.length ? t : (e || "north-america") === "world" ? n2 : t;
|
|
1105
1105
|
}
|
|
1106
1106
|
var P = a;
|
|
1107
|
-
function L3(
|
|
1108
|
-
|
|
1107
|
+
function L3(n2) {
|
|
1108
|
+
n2 !== P && (P = n2 || "", U = null, L = null, I = null);
|
|
1109
1109
|
}
|
|
1110
1110
|
function n3() {
|
|
1111
1111
|
return P.length > 0;
|
|
@@ -1114,249 +1114,252 @@ var t3 = { US: "washington", CA: "ottawa", MX: "mexico city", GB: "london", FR:
|
|
|
1114
1114
|
var U = null;
|
|
1115
1115
|
function y() {
|
|
1116
1116
|
if (U) return U;
|
|
1117
|
-
let
|
|
1118
|
-
if (!
|
|
1119
|
-
let
|
|
1120
|
-
|
|
1117
|
+
let n2 = /* @__PURE__ */ new Map(), e = P, t = (o2, i, r) => {
|
|
1118
|
+
if (!o2) return;
|
|
1119
|
+
let a2 = n2.get(o2);
|
|
1120
|
+
a2 ? a2.some((s) => s.row === i) || a2.push({ row: i, primary: r }) : n2.set(o2, [{ row: i, primary: r }]);
|
|
1121
1121
|
};
|
|
1122
|
-
for (let
|
|
1123
|
-
let i =
|
|
1122
|
+
for (let o2 of e.split(",")) {
|
|
1123
|
+
let i = o2.split("|");
|
|
1124
1124
|
if (i.length < 7) continue;
|
|
1125
1125
|
let r = { a1: i[1], cc: i[2], lon: +i[3], lat: +i[4], pop: +i[5], kinds: i[6] || "N" };
|
|
1126
1126
|
i.length > 8 && i[8] && (r.tags = i[8].split(";").filter(Boolean));
|
|
1127
|
-
let
|
|
1128
|
-
if (
|
|
1127
|
+
let a2 = t3[r.cc];
|
|
1128
|
+
if (a2 && u(i[0]) === a2 && (r.tags || (r.tags = []), r.tags.includes("capital") || r.tags.push("capital")), t(u(i[0]), r, true), i.length > 7 && i[7]) for (let s of i[7].split(";")) t(u(s), r, false);
|
|
1129
1129
|
}
|
|
1130
|
-
for (let
|
|
1131
|
-
return U =
|
|
1130
|
+
for (let o2 of n2.values()) o2.sort((i, r) => r.row.pop - i.row.pop);
|
|
1131
|
+
return U = n2, n2;
|
|
1132
1132
|
}
|
|
1133
1133
|
var e3 = 200;
|
|
1134
1134
|
var L = null;
|
|
1135
1135
|
function i3() {
|
|
1136
1136
|
if (L) return L;
|
|
1137
|
-
let
|
|
1137
|
+
let n2 = /* @__PURE__ */ new Map();
|
|
1138
1138
|
for (let [e, t] of y()) {
|
|
1139
1139
|
if (!e.endsWith(" city")) continue;
|
|
1140
|
-
let
|
|
1141
|
-
!
|
|
1140
|
+
let o2 = e.slice(0, -5);
|
|
1141
|
+
!o2 || y().get(o2)?.some((i) => i.primary) || t[0].row.pop < e3 || n2.set(o2, t);
|
|
1142
1142
|
}
|
|
1143
|
-
return L =
|
|
1143
|
+
return L = n2, n2;
|
|
1144
1144
|
}
|
|
1145
|
-
function O(
|
|
1146
|
-
if (!
|
|
1147
|
-
let e = y().get(
|
|
1145
|
+
function O(n2) {
|
|
1146
|
+
if (!n2) return;
|
|
1147
|
+
let e = y().get(n2);
|
|
1148
1148
|
if (e?.some((i) => i.primary)) return e;
|
|
1149
|
-
let t = i3().get(
|
|
1149
|
+
let t = i3().get(n2);
|
|
1150
1150
|
if (!t) return e;
|
|
1151
|
-
let
|
|
1152
|
-
return e ? [...
|
|
1151
|
+
let o2 = t.map((i) => ({ row: i.row, primary: true }));
|
|
1152
|
+
return e ? [...o2, ...e] : o2;
|
|
1153
1153
|
}
|
|
1154
1154
|
var I = null;
|
|
1155
1155
|
function o3() {
|
|
1156
1156
|
if (I) return I;
|
|
1157
|
-
let
|
|
1157
|
+
let n2 = /* @__PURE__ */ new Map();
|
|
1158
1158
|
for (let t of k.split(",")) {
|
|
1159
|
-
let
|
|
1160
|
-
|
|
1159
|
+
let o2 = t.split("|");
|
|
1160
|
+
o2.length < 3 || n2.set(o2[0], { lon: +o2[1], lat: +o2[2] });
|
|
1161
1161
|
}
|
|
1162
1162
|
let e = /* @__PURE__ */ new Map();
|
|
1163
|
-
for (let t of y().values()) for (let
|
|
1164
|
-
let i = T(
|
|
1163
|
+
for (let t of y().values()) for (let o2 of t) {
|
|
1164
|
+
let i = T(o2.row.cc);
|
|
1165
1165
|
if (!i) continue;
|
|
1166
1166
|
let r = e.get(i);
|
|
1167
|
-
(r === void 0 ||
|
|
1167
|
+
(r === void 0 || o2.row.pop > r) && (e.set(i, o2.row.pop), n2.set(i, { lon: o2.row.lon, lat: o2.row.lat }));
|
|
1168
1168
|
}
|
|
1169
|
-
return I =
|
|
1169
|
+
return I = n2, n2;
|
|
1170
1170
|
}
|
|
1171
1171
|
var h = null;
|
|
1172
1172
|
function D() {
|
|
1173
1173
|
if (h) return h;
|
|
1174
|
-
let
|
|
1174
|
+
let n2 = /* @__PURE__ */ new Map();
|
|
1175
1175
|
for (let e of H.split(",")) {
|
|
1176
1176
|
let t = e.split("|");
|
|
1177
1177
|
if (t.length < 5) continue;
|
|
1178
|
-
let
|
|
1179
|
-
|
|
1180
|
-
let i = u(
|
|
1181
|
-
i === "mexico" &&
|
|
1178
|
+
let o2 = { key: t[0], cc: t[1], name: t[2], lon: +t[3], lat: +t[4] };
|
|
1179
|
+
n2.set(u(o2.key), o2);
|
|
1180
|
+
let i = u(o2.name);
|
|
1181
|
+
i === "mexico" && o2.cc === "MX" ? (n2.set("estado de mexico", o2), n2.set("edomex", o2)) : n2.set(i, o2);
|
|
1182
1182
|
}
|
|
1183
|
-
return h =
|
|
1183
|
+
return h = n2, n2;
|
|
1184
1184
|
}
|
|
1185
1185
|
var B = null;
|
|
1186
1186
|
function a3() {
|
|
1187
1187
|
if (B) return B;
|
|
1188
|
-
let
|
|
1188
|
+
let n2 = /* @__PURE__ */ new Map();
|
|
1189
1189
|
for (let e of X.split(",")) {
|
|
1190
1190
|
let t = e.split("|");
|
|
1191
|
-
t.length < 3 ||
|
|
1191
|
+
t.length < 3 || n2.set(t[0], { lon: +t[1], lat: +t[2] });
|
|
1192
1192
|
}
|
|
1193
|
-
return B =
|
|
1193
|
+
return B = n2, n2;
|
|
1194
1194
|
}
|
|
1195
1195
|
var r3 = /* @__PURE__ */ new Set(["USA", "PRI", "VIR", "GUM", "ASM", "MNP"]);
|
|
1196
1196
|
var s3 = /* @__PURE__ */ new Set(["USA", "CAN", "MEX"]);
|
|
1197
|
-
function Y(
|
|
1198
|
-
if (
|
|
1199
|
-
let e = u(String(
|
|
1197
|
+
function Y(n2) {
|
|
1198
|
+
if (n2 == null) return null;
|
|
1199
|
+
let e = u(String(n2));
|
|
1200
1200
|
return e ? D().get(e)?.key ?? null : null;
|
|
1201
1201
|
}
|
|
1202
|
-
function u3(
|
|
1203
|
-
return D().get(u(
|
|
1202
|
+
function u3(n2) {
|
|
1203
|
+
return D().get(u(n2))?.cc ?? null;
|
|
1204
1204
|
}
|
|
1205
|
-
function c3(
|
|
1206
|
-
let e = u3(
|
|
1205
|
+
function c3(n2) {
|
|
1206
|
+
let e = u3(n2);
|
|
1207
1207
|
return e ? T(e) : null;
|
|
1208
1208
|
}
|
|
1209
|
-
function M3(
|
|
1210
|
-
if (
|
|
1211
|
-
let e = String(
|
|
1209
|
+
function M3(n2) {
|
|
1210
|
+
if (n2 == null) return null;
|
|
1211
|
+
let e = String(n2).trim().replace(/\.0+$/, "");
|
|
1212
1212
|
if (!e) return null;
|
|
1213
1213
|
let t = /^(\d{5})(-\d{4})?$/.exec(e);
|
|
1214
1214
|
return t ? t[1] : /^\d{3,4}$/.test(e) ? e.padStart(5, "0") : null;
|
|
1215
1215
|
}
|
|
1216
|
-
function Z(
|
|
1217
|
-
if (
|
|
1218
|
-
let e = String(
|
|
1216
|
+
function Z(n2) {
|
|
1217
|
+
if (n2 == null) return [];
|
|
1218
|
+
let e = String(n2).trim().replace(/\.0+$/, "");
|
|
1219
1219
|
if (!e) return [];
|
|
1220
1220
|
if (/^\d{3}$/.test(e)) {
|
|
1221
|
-
let
|
|
1222
|
-
return
|
|
1221
|
+
let o2 = e.padStart(5, "0").slice(0, 3);
|
|
1222
|
+
return o2 === e ? [e] : [e, o2];
|
|
1223
1223
|
}
|
|
1224
1224
|
let t = M3(e);
|
|
1225
1225
|
return t ? [t.slice(0, 3)] : [];
|
|
1226
1226
|
}
|
|
1227
|
-
function S3(
|
|
1228
|
-
return !!
|
|
1227
|
+
function S3(n2) {
|
|
1228
|
+
return !!n2 && n2.ambiguous === true && !("precision" in n2);
|
|
1229
1229
|
}
|
|
1230
|
-
function A3(
|
|
1231
|
-
let e = null, t = typeof
|
|
1232
|
-
if (t != null && t !== "" &&
|
|
1233
|
-
let
|
|
1234
|
-
if (isFinite(
|
|
1235
|
-
else return { lat:
|
|
1230
|
+
function A3(n2) {
|
|
1231
|
+
let e = null, t = typeof n2.lat == "string" ? n2.lat.trim() : n2.lat, o2 = typeof n2.lon == "string" ? n2.lon.trim() : n2.lon;
|
|
1232
|
+
if (t != null && t !== "" && o2 !== void 0 && o2 !== null && o2 !== "") {
|
|
1233
|
+
let a2 = +t, s = +o2;
|
|
1234
|
+
if (isFinite(a2) && isFinite(s) && a2 >= -90 && a2 <= 90 && s >= -180 && s <= 180) if (a2 === 0 && s === 0) e = { lat: 0, lon: 0, precision: "latlon" };
|
|
1235
|
+
else return { lat: a2, lon: s, precision: "latlon" };
|
|
1236
1236
|
}
|
|
1237
|
-
let i = E(
|
|
1238
|
-
if (r && i && c3(r) !== i && (r = null),
|
|
1239
|
-
let
|
|
1237
|
+
let i = E(n2.country), r = Y(n2.state);
|
|
1238
|
+
if (r && i && c3(r) !== i && (r = null), n2.city !== void 0 && n2.city !== null) {
|
|
1239
|
+
let a2 = u(String(n2.city)), s = O(a2), f4 = s ? F(s, n2.mapKind) : null;
|
|
1240
1240
|
if (f4 && f4.length) {
|
|
1241
|
-
let d2 =
|
|
1241
|
+
let d2 = n2.state === void 0 || n2.state === null ? "" : String(n2.state).trim(), R2 = d2 ? u(d2) : "", g3 = d2 ? Y(d2) : null, S2 = [], m2 = -1;
|
|
1242
1242
|
for (let c2 of f4) {
|
|
1243
1243
|
let l = c2.row, A2 = 0;
|
|
1244
1244
|
if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2) A2++;
|
|
1245
1245
|
else continue;
|
|
1246
1246
|
if (i) if (T(l.cc) === i) A2++;
|
|
1247
1247
|
else continue;
|
|
1248
|
-
A2 >
|
|
1248
|
+
A2 > m2 ? (m2 = A2, S2 = [c2]) : A2 === m2 && S2.push(c2);
|
|
1249
1249
|
}
|
|
1250
|
-
|
|
1250
|
+
S2.some((c2) => c2.primary) && (S2 = S2.filter((c2) => c2.primary));
|
|
1251
1251
|
let p2 = /* @__PURE__ */ new Map();
|
|
1252
|
-
for (let c2 of
|
|
1252
|
+
for (let c2 of S2) p2.set(c2.row.lon.toFixed(2) + "," + c2.row.lat.toFixed(2), c2.row);
|
|
1253
1253
|
if (p2.size === 1) {
|
|
1254
|
-
let c2 =
|
|
1254
|
+
let c2 = S2[0].row;
|
|
1255
1255
|
return { lat: c2.lat, lon: c2.lon, precision: "city" };
|
|
1256
1256
|
}
|
|
1257
1257
|
if (p2.size > 1) return { ambiguous: true, matches: p2.size };
|
|
1258
1258
|
}
|
|
1259
1259
|
}
|
|
1260
|
-
if (!i || r3.has(i)) for (let
|
|
1261
|
-
let s = a3().get(
|
|
1260
|
+
if (!i || r3.has(i)) for (let a2 of Z(n2.zip)) {
|
|
1261
|
+
let s = a3().get(a2);
|
|
1262
1262
|
if (s) return { lat: s.lat, lon: s.lon, precision: "zip3" };
|
|
1263
1263
|
}
|
|
1264
1264
|
if (r) {
|
|
1265
|
-
let
|
|
1266
|
-
if (
|
|
1265
|
+
let a2 = D().get(u(r));
|
|
1266
|
+
if (a2) return { lat: a2.lat, lon: a2.lon, precision: "state" };
|
|
1267
1267
|
}
|
|
1268
|
-
if (i && (
|
|
1269
|
-
let
|
|
1270
|
-
if (
|
|
1268
|
+
if (i && (n2.mapKind !== "north-america" || s3.has(i))) {
|
|
1269
|
+
let a2 = o3().get(i);
|
|
1270
|
+
if (a2) return { lat: a2.lat, lon: a2.lon, precision: "country" };
|
|
1271
1271
|
}
|
|
1272
1272
|
return e;
|
|
1273
1273
|
}
|
|
1274
1274
|
var G = { latlon: 0, city: 1, zip3: 2, state: 3, country: 4 };
|
|
1275
1275
|
var x = 8;
|
|
1276
|
-
function y3(
|
|
1277
|
-
let t = new Array(
|
|
1278
|
-
for (let l = 0; l <
|
|
1279
|
-
let A2 =
|
|
1280
|
-
if (S3(
|
|
1281
|
-
t[l] = null,
|
|
1282
|
-
let
|
|
1283
|
-
|
|
1284
|
-
} else if (
|
|
1285
|
-
if (t[l] =
|
|
1286
|
-
let
|
|
1287
|
-
|
|
1276
|
+
function y3(n2, e) {
|
|
1277
|
+
let t = new Array(n2.length), o2 = new Array(n2.length), i = new Array(n2.length), r = /* @__PURE__ */ new Set(), a2 = [], s = /* @__PURE__ */ new Set(), f4 = [], d2 = /* @__PURE__ */ new Set(), R2 = [], g3 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 }, S2 = 0, m2 = 0, p2 = null;
|
|
1278
|
+
for (let l = 0; l < n2.length; ++l) {
|
|
1279
|
+
let A2 = n2[l], C = A3({ ...A2, mapKind: e });
|
|
1280
|
+
if (S3(C)) {
|
|
1281
|
+
t[l] = null, o2[l] = null, i[l] = null, m2++;
|
|
1282
|
+
let M2 = K(A2);
|
|
1283
|
+
M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
|
|
1284
|
+
} else if (C) {
|
|
1285
|
+
if (t[l] = C.lat, o2[l] = C.lon, i[l] = C.precision, S2++, g3[C.precision]++, (p2 === null || G[C.precision] > G[p2]) && (p2 = C.precision), G[C.precision] > G.city) {
|
|
1286
|
+
let M2 = K(A2);
|
|
1287
|
+
M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
|
|
1288
1288
|
}
|
|
1289
1289
|
} else {
|
|
1290
|
-
t[l] = null,
|
|
1291
|
-
let
|
|
1292
|
-
|
|
1290
|
+
t[l] = null, o2[l] = null, i[l] = null;
|
|
1291
|
+
let M2 = K(A2);
|
|
1292
|
+
M2 && !r.has(M2.toLowerCase()) && (r.add(M2.toLowerCase()), a2.push(M2));
|
|
1293
1293
|
}
|
|
1294
1294
|
}
|
|
1295
|
-
let c2 = !n3() &&
|
|
1296
|
-
return { lat: t, lon:
|
|
1295
|
+
let c2 = !n3() && n2.some((l) => l.city !== null && l.city !== void 0 && String(l.city).trim() !== "");
|
|
1296
|
+
return { lat: t, lon: o2, precisions: i, precision: p2, precisionCounts: g3, coarseExamples: f4, unmatched: a2, ambiguousRows: m2, ambiguousExamples: R2, matchedRows: S2, totalRows: n2.length, ...c2 ? { cityTableMissing: true } : {} };
|
|
1297
1297
|
}
|
|
1298
|
-
function K(
|
|
1299
|
-
let e = [
|
|
1300
|
-
return e || (
|
|
1298
|
+
function K(n2) {
|
|
1299
|
+
let e = [n2.city, n2.state, n2.zip, n2.country].filter((t) => t != null && String(t).trim() !== "").map((t) => String(t).trim()).join(", ");
|
|
1300
|
+
return e || (n2.label === null || n2.label === void 0 ? "" : String(n2.label).trim());
|
|
1301
1301
|
}
|
|
1302
|
-
function p3(
|
|
1303
|
-
if (!
|
|
1304
|
-
let t = O(
|
|
1302
|
+
function p3(n2, e) {
|
|
1303
|
+
if (!n2) return false;
|
|
1304
|
+
let t = O(n2);
|
|
1305
1305
|
return t ? F(t, e).length > 0 : false;
|
|
1306
1306
|
}
|
|
1307
1307
|
|
|
1308
|
-
// ../shape-core/dist/chunk-
|
|
1308
|
+
// ../shape-core/dist/chunk-NFSQ4O5R.mjs
|
|
1309
1309
|
/*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
|
|
1310
|
-
var
|
|
1311
|
-
var g = Object.freeze([
|
|
1312
|
-
var
|
|
1313
|
-
var c = new Map(g.map((
|
|
1314
|
-
var
|
|
1315
|
-
var
|
|
1316
|
-
var
|
|
1317
|
-
var
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
if (
|
|
1324
|
-
let
|
|
1325
|
-
return
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
return
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
}
|
|
1339
|
-
function
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
return
|
|
1349
|
-
}
|
|
1350
|
-
function
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1310
|
+
var o = (e, n2, t, r = {}) => ({ code: e, name: n2, script: t, dir: "ltr", intl: e, aliases: [], wordBreaks: true, compounds: false, gluedPrefixes: [], foldSensitive: false, ...r });
|
|
1311
|
+
var g = Object.freeze([o("en", "English", "Latn"), o("nl", "Dutch", "Latn", { compounds: true }), o("de", "German", "Latn", { compounds: true }), o("fr", "French", "Latn"), o("es", "Spanish", "Latn"), o("pt", "Portuguese", "Latn"), o("it", "Italian", "Latn"), o("pl", "Polish", "Latn"), o("cs", "Czech", "Latn"), o("sk", "Slovak", "Latn"), o("sv", "Swedish", "Latn", { compounds: true }), o("da", "Danish", "Latn", { compounds: true }), o("nb", "Norwegian Bokmal", "Latn", { compounds: true, aliases: ["no"] }), o("fi", "Finnish", "Latn", { compounds: true }), o("hu", "Hungarian", "Latn", { compounds: true }), o("tr", "Turkish", "Latn"), o("ro", "Romanian", "Latn"), o("hr", "Croatian", "Latn"), o("id", "Indonesian", "Latn", { aliases: ["in"] }), o("vi", "Vietnamese", "Latn", { foldSensitive: true }), o("ru", "Russian", "Cyrl"), o("uk", "Ukrainian", "Cyrl"), o("el", "Greek", "Grek"), o("zh", "Chinese (Simplified)", "Hani", { intl: "zh-Hans", wordBreaks: false }), o("ja", "Japanese", "Jpan", { wordBreaks: false }), o("ko", "Korean", "Hang"), o("ar", "Arabic", "Arab", { dir: "rtl", gluedPrefixes: ["\u0627\u0644", "\u0648\u0627\u0644", "\u0628\u0627\u0644", "\u0641\u0627\u0644", "\u0643\u0627\u0644", "\u0644\u0644", "\u0648", "\u0641", "\u0628", "\u0643", "\u0644"] }), o("he", "Hebrew", "Hebr", { dir: "rtl", aliases: ["iw"], gluedPrefixes: ["\u05D4", "\u05D5", "\u05D1", "\u05DC", "\u05DE", "\u05E9", "\u05DB", "\u05D5\u05D4", "\u05E9\u05D4", "\u05DE\u05D4", "\u05D5\u05D1", "\u05D5\u05DC", "\u05D5\u05DE", "\u05D1\u05D4", "\u05DC\u05D4"] }), o("hi", "Hindi", "Deva"), o("th", "Thai", "Thai", { wordBreaks: false })]);
|
|
1312
|
+
var m = Object.freeze(g.map((e) => e.code));
|
|
1313
|
+
var c = new Map(g.map((e) => [e.code, e]));
|
|
1314
|
+
var L2 = new Map(g.flatMap((e) => e.aliases.map((n2) => [n2, e])));
|
|
1315
|
+
var h2 = Object.freeze([o("fa", "Persian", "Arab", { dir: "rtl" })]);
|
|
1316
|
+
var j2 = Object.freeze([...m, ...h2.map((e) => e.code)]);
|
|
1317
|
+
var S = new Map(h2.map((e) => [e.code, e]));
|
|
1318
|
+
var N2 = { \u0142: "l", \u0141: "L", \u0131: "i", \u00F8: "o", \u00D8: "O", \u0111: "d", \u0110: "D", \u00F0: "d", \u00D0: "D" };
|
|
1319
|
+
var D2 = [1632, 1776, 2406, 3664, 65296];
|
|
1320
|
+
var R = /[\u0300-\u036F]/g;
|
|
1321
|
+
function E2(e) {
|
|
1322
|
+
let n2 = N2[e];
|
|
1323
|
+
if (n2) return n2;
|
|
1324
|
+
let t = e.codePointAt(0);
|
|
1325
|
+
for (let a2 of D2) if (t >= a2 && t <= a2 + 9) return String.fromCharCode(48 + t - a2);
|
|
1326
|
+
if (t >= 65313 && t <= 65338 || t >= 65345 && t <= 65370) return String.fromCharCode(t - 65248);
|
|
1327
|
+
let r = e.normalize("NFD").replace(R, "");
|
|
1328
|
+
return r.length === 1 ? r : e;
|
|
1329
|
+
}
|
|
1330
|
+
function f2(e) {
|
|
1331
|
+
if (!e) return e ?? "";
|
|
1332
|
+
let n2 = "";
|
|
1333
|
+
for (let t of e) n2 += E2(t);
|
|
1334
|
+
return n2;
|
|
1335
|
+
}
|
|
1336
|
+
var A = /([\p{Ll}\p{Nd}])(\p{Lu})/gu;
|
|
1337
|
+
var _2 = /[_\-./]+/g;
|
|
1338
|
+
var M = /[^\p{L}\p{M}\p{N}\x00-\x7F]/gu;
|
|
1339
|
+
function p(e) {
|
|
1340
|
+
return e ? String(e).normalize("NFC").replace(A, "$1 $2").replace(_2, " ").replace(M, " ").toLowerCase().split(/\s+/).filter((n2) => n2.length > 0) : [];
|
|
1341
|
+
}
|
|
1342
|
+
function oe(e) {
|
|
1343
|
+
let n2 = Date.parse(e);
|
|
1344
|
+
if (isNaN(n2)) return null;
|
|
1345
|
+
let t = new Date(n2);
|
|
1346
|
+
if (Y2.test(e) || W2.test(e.trim()) || $2.test(e)) return t;
|
|
1347
|
+
let r = new Date(Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds())), a2 = t.getFullYear();
|
|
1348
|
+
return a2 >= 0 && a2 < 100 && r.setUTCFullYear(a2), r;
|
|
1349
|
+
}
|
|
1350
|
+
function F2(e) {
|
|
1351
|
+
return !(e instanceof Date) || isNaN(e.getTime()) ? null : e.getUTCHours() === 0 && e.getUTCMinutes() === 0 && e.getUTCSeconds() === 0 && e.getUTCMilliseconds() === 0 ? "utc" : e.getHours() === 0 && e.getMinutes() === 0 && e.getSeconds() === 0 && e.getMilliseconds() === 0 ? "local" : null;
|
|
1352
|
+
}
|
|
1353
|
+
function v2(e) {
|
|
1354
|
+
let n2 = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), t = e.getFullYear();
|
|
1355
|
+
return t >= 0 && t < 100 && n2.setUTCFullYear(t), n2;
|
|
1356
|
+
}
|
|
1357
|
+
function B2(e, n2) {
|
|
1358
|
+
let t = [];
|
|
1359
|
+
for (let r of e) {
|
|
1357
1360
|
if (!r || !/date|time/i.test(String(r.dataType ?? ""))) continue;
|
|
1358
|
-
let
|
|
1359
|
-
for (let u2 of
|
|
1361
|
+
let a2 = 0, i = true;
|
|
1362
|
+
for (let u2 of n2) {
|
|
1360
1363
|
let s = u2 ? u2[r.name] : void 0;
|
|
1361
1364
|
if (s == null || s === "") continue;
|
|
1362
1365
|
if (!(s instanceof Date)) {
|
|
@@ -1368,61 +1371,61 @@ function G2(n, t) {
|
|
|
1368
1371
|
i = false;
|
|
1369
1372
|
break;
|
|
1370
1373
|
}
|
|
1371
|
-
l === "local" &&
|
|
1374
|
+
l === "local" && a2++;
|
|
1372
1375
|
}
|
|
1373
|
-
i &&
|
|
1376
|
+
i && a2 > 0 && t.push(r.name);
|
|
1374
1377
|
}
|
|
1375
|
-
return
|
|
1378
|
+
return t;
|
|
1376
1379
|
}
|
|
1377
|
-
function
|
|
1378
|
-
let
|
|
1379
|
-
return
|
|
1380
|
-
if (!
|
|
1381
|
-
let i = { ...
|
|
1382
|
-
for (let u2 of
|
|
1380
|
+
function se(e, n2) {
|
|
1381
|
+
let t = B2(e, n2);
|
|
1382
|
+
return t.length === 0 ? { rows: n2, columns: t } : { rows: n2.map((a2) => {
|
|
1383
|
+
if (!a2) return a2;
|
|
1384
|
+
let i = { ...a2 };
|
|
1385
|
+
for (let u2 of t) {
|
|
1383
1386
|
let s = i[u2];
|
|
1384
|
-
s instanceof Date && F2(s) === "local" && (i[u2] =
|
|
1387
|
+
s instanceof Date && F2(s) === "local" && (i[u2] = v2(s));
|
|
1385
1388
|
}
|
|
1386
1389
|
return i;
|
|
1387
|
-
}), columns:
|
|
1390
|
+
}), columns: t };
|
|
1388
1391
|
}
|
|
1389
|
-
var
|
|
1390
|
-
var
|
|
1391
|
-
var
|
|
1392
|
+
var Y2 = /^\s*\d{4}(-\d{2}(-\d{2})?)?\s*$/;
|
|
1393
|
+
var W2 = /(?:Z|[+-]\d{2}:?\d{2})$/i;
|
|
1394
|
+
var $2 = /\b(?:GMT|UTC)\b/i;
|
|
1392
1395
|
|
|
1393
|
-
// ../shape-core/dist/chunk-
|
|
1396
|
+
// ../shape-core/dist/chunk-6TVBXT4G.mjs
|
|
1394
1397
|
/*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
|
|
1395
1398
|
var St = "006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191193194195196197198199200201202203204205206207208209210211212214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310312313314315316317318319320321322323324325326327328329330331333334335336337338339341342344346347349350351352354355356357358359360361362363364365366367368369370371372373374376377378379380381382383384385386387388389390391392393394395396397398400401402403404405406407408409410411412413414415416417418420421422423424425426427430431432433434435436437438439440441442443444445446447448449450451452453454455456457458460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508510511512513514515516520521522523524525526527528530531532534535537538539540541542543544545546547548549550551553554556557558559560561562563564565566567570571572573574575576577580581582583584585586587588590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620622623624625626627628629630631633634635636637638639640641644645646647648650651652653654655656657658660661662664665666667668669670671672673674675676677678679680681683684685686687688689690691692693700701703704705706707708710711712713714716717718719720721722723724725726727728729730731734735736737738739740741743744745746747748749750751752753754755756757758759760761762763764765766767768769770772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816820821822823824825826827828829830831832833834835836837838840841843844845846847850851852853855856857859860863864865870871873874875877878879880881882883884890891893894895897898900902903904905906907908910911912913914915916917918919920921922923924925926927928930931932933934935936937939940941943944945946947948949950951952953954955956957958959960961967968969970971972973974975976977978979980981982983984985986988989990991992993994995996997998999";
|
|
1396
1399
|
var w = new Set(St.match(/.{3}/g) ?? []);
|
|
1397
1400
|
var at = [["AL", "Alabama"], ["AK", "Alaska"], ["AZ", "Arizona"], ["AR", "Arkansas"], ["CA", "California"], ["CO", "Colorado"], ["CT", "Connecticut"], ["DE", "Delaware"], ["FL", "Florida"], ["GA", "Georgia"], ["HI", "Hawaii"], ["ID", "Idaho"], ["IL", "Illinois"], ["IN", "Indiana"], ["IA", "Iowa"], ["KS", "Kansas"], ["KY", "Kentucky"], ["LA", "Louisiana"], ["ME", "Maine"], ["MD", "Maryland"], ["MA", "Massachusetts"], ["MI", "Michigan"], ["MN", "Minnesota"], ["MS", "Mississippi"], ["MO", "Missouri"], ["MT", "Montana"], ["NE", "Nebraska"], ["NV", "Nevada"], ["NH", "New Hampshire"], ["NJ", "New Jersey"], ["NM", "New Mexico"], ["NY", "New York"], ["NC", "North Carolina"], ["ND", "North Dakota"], ["OH", "Ohio"], ["OK", "Oklahoma"], ["OR", "Oregon"], ["PA", "Pennsylvania"], ["RI", "Rhode Island"], ["SC", "South Carolina"], ["SD", "South Dakota"], ["TN", "Tennessee"], ["TX", "Texas"], ["UT", "Utah"], ["VT", "Vermont"], ["VA", "Virginia"], ["WA", "Washington"], ["WV", "West Virginia"], ["WI", "Wisconsin"], ["WY", "Wyoming"], ["DC", "District of Columbia"], ["PR", "Puerto Rico"], ["GU", "Guam"], ["VI", "U.S. Virgin Islands"], ["AS", "American Samoa"], ["MP", "Northern Mariana Islands"]];
|
|
1398
|
-
var ct = new Set(at.map((
|
|
1401
|
+
var ct = new Set(at.map((n2) => n2[0]));
|
|
1399
1402
|
var yt = { "Ala.": "AL", "Alab.": "AL", "Ariz.": "AZ", "Ark.": "AR", "Calif.": "CA", "Cal.": "CA", "Colo.": "CO", "Col.": "CO", "Conn.": "CT", "Del.": "DE", "Fla.": "FL", "Flor.": "FL", "Ga.": "GA", "Ill.": "IL", "Ind.": "IN", "Kan.": "KS", "Kans.": "KS", "Ky.": "KY", "La.": "LA", "Md.": "MD", "Mass.": "MA", "Mich.": "MI", "Minn.": "MN", "Miss.": "MS", "Mo.": "MO", "Mont.": "MT", "Neb.": "NE", "Nebr.": "NE", "Nev.": "NV", "N.H.": "NH", "N.J.": "NJ", "N.M.": "NM", "N.Mex.": "NM", "N. Mex.": "NM", "N.Y.": "NY", "N.C.": "NC", "N.D.": "ND", "N.Dak.": "ND", "N. Dak.": "ND", "Okla.": "OK", "Ore.": "OR", "Oreg.": "OR", "Pa.": "PA", "Penn.": "PA", "Penna.": "PA", "R.I.": "RI", "S.C.": "SC", "S.D.": "SD", "S.Dak.": "SD", "S. Dak.": "SD", "Tenn.": "TN", "Tex.": "TX", "Vt.": "VT", "Va.": "VA", "Wash.": "WA", "W.Va.": "WV", "W. Va.": "WV", "Wis.": "WI", "Wisc.": "WI", "Wyo.": "WY", "D.C.": "DC", "Wash. D.C.": "DC", "Wash., D.C.": "DC", "P.R.": "PR", "V.I.": "VI" };
|
|
1400
1403
|
var ut = (() => {
|
|
1401
|
-
let
|
|
1402
|
-
for (let [s, i] of at)
|
|
1403
|
-
|
|
1404
|
+
let n2 = /* @__PURE__ */ new Map();
|
|
1405
|
+
for (let [s, i] of at) n2.set(g2(i), s);
|
|
1406
|
+
n2.set(g2("Washington DC"), "DC"), n2.set(g2("Washington D.C."), "DC"), n2.set(g2("US Virgin Islands"), "VI");
|
|
1404
1407
|
for (let [s, i] of Object.entries(yt)) {
|
|
1405
1408
|
let r = g2(s);
|
|
1406
|
-
r && !
|
|
1409
|
+
r && !n2.has(r) && n2.set(r, i);
|
|
1407
1410
|
}
|
|
1408
|
-
return
|
|
1411
|
+
return n2;
|
|
1409
1412
|
})();
|
|
1410
1413
|
var lt = /* @__PURE__ */ new Set(["01", "02", "04", "05", "06", "08", "09", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "44", "45", "46", "47", "48", "49", "50", "51", "53", "54", "55", "56", "60", "66", "69", "72", "78"]);
|
|
1411
|
-
function ft(
|
|
1412
|
-
return
|
|
1414
|
+
function ft(n2) {
|
|
1415
|
+
return n2.trim().toUpperCase();
|
|
1413
1416
|
}
|
|
1414
|
-
function g2(
|
|
1415
|
-
return u(
|
|
1417
|
+
function g2(n2) {
|
|
1418
|
+
return u(n2);
|
|
1416
1419
|
}
|
|
1417
1420
|
var rt = /* @__PURE__ */ new Set(["zip", "zipcode", "postal", "postcode", "plz"]);
|
|
1418
|
-
function
|
|
1419
|
-
if (!
|
|
1420
|
-
for (let i of
|
|
1421
|
+
function y2(n2, s) {
|
|
1422
|
+
if (!n2) return false;
|
|
1423
|
+
for (let i of p(n2)) if (s.has(i)) return true;
|
|
1421
1424
|
return false;
|
|
1422
1425
|
}
|
|
1423
|
-
function Mt(
|
|
1424
|
-
if (
|
|
1425
|
-
let i = String(
|
|
1426
|
+
function Mt(n2, s) {
|
|
1427
|
+
if (n2 == null) return null;
|
|
1428
|
+
let i = String(n2).trim();
|
|
1426
1429
|
if (i.length === 0) return null;
|
|
1427
1430
|
switch (s) {
|
|
1428
1431
|
case "country-iso3":
|
|
@@ -1442,8 +1445,8 @@ function Mt(n, s) {
|
|
|
1442
1445
|
return null;
|
|
1443
1446
|
}
|
|
1444
1447
|
}
|
|
1445
|
-
function Gt(
|
|
1446
|
-
switch (
|
|
1448
|
+
function Gt(n2) {
|
|
1449
|
+
switch (n2) {
|
|
1447
1450
|
case "country-iso3":
|
|
1448
1451
|
case "country-iso2":
|
|
1449
1452
|
case "country-name":
|
|
@@ -1456,41 +1459,41 @@ function Gt(n) {
|
|
|
1456
1459
|
return false;
|
|
1457
1460
|
}
|
|
1458
1461
|
}
|
|
1459
|
-
function It(
|
|
1460
|
-
return s === "us-zip5" ? w.has(
|
|
1462
|
+
function It(n2, s) {
|
|
1463
|
+
return s === "us-zip5" ? w.has(n2.slice(0, 3)) : true;
|
|
1461
1464
|
}
|
|
1462
|
-
function Wt(
|
|
1463
|
-
let i = new Array(
|
|
1464
|
-
for (let
|
|
1465
|
-
let
|
|
1466
|
-
if (i[
|
|
1465
|
+
function Wt(n2, s) {
|
|
1466
|
+
let i = new Array(n2.length), r = /* @__PURE__ */ new Set(), M2 = [], h3 = 0;
|
|
1467
|
+
for (let N4 = 0; N4 < n2.length; ++N4) {
|
|
1468
|
+
let I2 = Mt(n2[N4], s), O3 = I2 !== null && It(I2, s) ? I2 : null;
|
|
1469
|
+
if (i[N4] = O3, O3 !== null) h3++;
|
|
1467
1470
|
else {
|
|
1468
|
-
let d2 =
|
|
1471
|
+
let d2 = n2[N4];
|
|
1469
1472
|
if (d2 != null) {
|
|
1470
1473
|
let p2 = String(d2).trim();
|
|
1471
1474
|
if (p2.length > 0) {
|
|
1472
|
-
let
|
|
1473
|
-
r.has(
|
|
1475
|
+
let m2 = p2.toLowerCase();
|
|
1476
|
+
r.has(m2) || (r.add(m2), M2.push(p2));
|
|
1474
1477
|
}
|
|
1475
1478
|
}
|
|
1476
1479
|
}
|
|
1477
1480
|
}
|
|
1478
|
-
return { iso: i, unmatched:
|
|
1481
|
+
return { iso: i, unmatched: M2, matchedRows: h3, totalRows: n2.length };
|
|
1479
1482
|
}
|
|
1480
1483
|
|
|
1481
|
-
// ../shape-core/dist/chunk-
|
|
1484
|
+
// ../shape-core/dist/chunk-KKSQBV76.mjs
|
|
1482
1485
|
var import_papaparse = __toESM(require_papaparse_min(), 1);
|
|
1483
1486
|
/*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
|
|
1484
1487
|
var ve = { "north-america": "AG AI AW BB BL BM BQ BS BZ CA CR CU CW DM DO GD GL GP GT HN HT JM KN KY LC MF MQ MS MX NI PA PM PR SV SX TC TT US VC VG VI", "south-america": "AR BO BR CL CO EC FK GF GY PE PY SR UY VE", europe: "AD AL AT AX BA BE BG BY CH CY CZ DE DK EE ES FI FO FR GB GG GI GR HR HU IE IM IS IT JE LI LT LU LV MC MD ME MK MT NL NO PL PT RO RS RU SE SI SJ SK SM UA VA", africa: "AO BF BI BJ BW CD CF CG CI CM CV DJ DZ EG EH ER ET GA GH GM GN GQ GW KE KM LR LS LY MA MG ML MR MU MW MZ NA NE NG RE RW SC SD SH SL SN SO SS ST SZ TD TG TN TZ UG YT ZA ZM ZW", asia: "AE AF AM AZ BD BH BN BT CC CN CX GE HK ID IL IN IO IQ IR JO JP KG KH KP KR KW KZ LA LB LK MM MN MO MV MY NP OM PH PK PS QA SA SG SY TH TJ TL TM TR TW UZ VN YE", oceania: "AS AU CK FJ FM GU KI MH MP NC NF NR NU NZ PF PG PN PW SB TK TO TV UM VU WF WS", antarctica: "AQ BV GS HM TF" };
|
|
1485
|
-
var
|
|
1488
|
+
var J2 = (() => {
|
|
1486
1489
|
let t = /* @__PURE__ */ new Map();
|
|
1487
|
-
for (let e of Object.keys(ve)) for (let
|
|
1490
|
+
for (let e of Object.keys(ve)) for (let n2 of ve[e].split(/\s+/)) n2 && t.set(n2, e);
|
|
1488
1491
|
return t;
|
|
1489
1492
|
})();
|
|
1490
1493
|
function at2(t) {
|
|
1491
|
-
for (let [e,
|
|
1492
|
-
let r =
|
|
1493
|
-
r && !
|
|
1494
|
+
for (let [e, n2] of t) {
|
|
1495
|
+
let r = J2.get(e);
|
|
1496
|
+
r && !J2.has(n2) && J2.set(n2, r);
|
|
1494
1497
|
}
|
|
1495
1498
|
}
|
|
1496
1499
|
at2(N);
|
|
@@ -1498,12 +1501,12 @@ var gt = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "s
|
|
|
1498
1501
|
var pt = ["pct", "percent", "percentage", "rate", "ratio", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "gpa", "percentile", "quantile", "bmi", "density", "pressure", "humidity", "velocity", "efficiency", "occupancy", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps"];
|
|
1499
1502
|
var ht = ["latitude", "longitude"];
|
|
1500
1503
|
var bt = ["latitude", "longitude"];
|
|
1501
|
-
function
|
|
1504
|
+
function j3(t) {
|
|
1502
1505
|
return f2(t);
|
|
1503
1506
|
}
|
|
1504
1507
|
var de = ["somme de", "suma de", "soma de", "summe von", "som van", "somma di", "summa av", "sum av", "sum af", "soucet z", "suma z", "totaal van", "total de", "toplam", "osszeg", "nombre de", "recuento de", "contagem de", "anzahl von", "aantal van", "conteggio di", "antal av", "lukumaara", "pocet z"];
|
|
1505
1508
|
function yt2(t) {
|
|
1506
|
-
return [...t].sort((e,
|
|
1509
|
+
return [...t].sort((e, n2) => n2.length - e.length).map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|");
|
|
1507
1510
|
}
|
|
1508
1511
|
var ke = new RegExp("^\\s*(?:(?:sum|count|count\\s+distinct|distinct\\s+count)\\s+of\\s+|(?:" + yt2(de) + ")\\s+)", "i");
|
|
1509
1512
|
var St2 = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])/g;
|
|
@@ -1511,11 +1514,11 @@ var _t = new RegExp("\\b(" + gt.join("|") + ")\\b|(" + pt.join("|") + ")$", "i")
|
|
|
1511
1514
|
var At = new RegExp("\\b(" + ht.join("|") + ")\\b|(" + bt.join("|") + ")$", "i");
|
|
1512
1515
|
function Fe(t) {
|
|
1513
1516
|
if (!t) return "";
|
|
1514
|
-
let e = String(t),
|
|
1515
|
-
return (
|
|
1517
|
+
let e = String(t), n2 = ke.exec(j3(e));
|
|
1518
|
+
return (n2 ? e.slice(n2[0].length) : e).trim();
|
|
1516
1519
|
}
|
|
1517
1520
|
function Ct(t) {
|
|
1518
|
-
return !!t && ke.test(
|
|
1521
|
+
return !!t && ke.test(j3(String(t)));
|
|
1519
1522
|
}
|
|
1520
1523
|
var Mt2 = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
|
|
1521
1524
|
var Oe = new RegExp("^\\s*(" + [...Mt2].sort((t, e) => e.length - t.length).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
|
|
@@ -1527,8 +1530,8 @@ function Rt(t) {
|
|
|
1527
1530
|
}
|
|
1528
1531
|
function ze(t, e) {
|
|
1529
1532
|
if (!e) return false;
|
|
1530
|
-
let
|
|
1531
|
-
return t.test(
|
|
1533
|
+
let n2 = Fe(e);
|
|
1534
|
+
return t.test(j3(Rt(e))) || t.test(j3(n2)) || t.test(j3(p(n2).join(" ")));
|
|
1532
1535
|
}
|
|
1533
1536
|
function $e(t) {
|
|
1534
1537
|
return ze(At, t);
|
|
@@ -1545,21 +1548,21 @@ function Et(t) {
|
|
|
1545
1548
|
return t?.isMeasure === true || Ue.test(String(t?.dataType ?? ""));
|
|
1546
1549
|
}
|
|
1547
1550
|
function Ve(t) {
|
|
1548
|
-
let e = t ?? {},
|
|
1549
|
-
if (
|
|
1550
|
-
if ($e(e.name)) return { nature:
|
|
1551
|
+
let e = t ?? {}, n2 = Nt(e);
|
|
1552
|
+
if (n2 !== "Continuous") return { nature: n2, additivity: "unknown", basis: "role", suppressed: false };
|
|
1553
|
+
if ($e(e.name)) return { nature: n2, additivity: "positional", basis: "name", suppressed: true };
|
|
1551
1554
|
let r = String(e.additivity ?? "").trim().toLowerCase();
|
|
1552
1555
|
if (!(r === "additive" && Ct(e.name))) {
|
|
1553
|
-
if (r === "additive") return { nature:
|
|
1554
|
-
if (r === "part_of_whole") return { nature:
|
|
1555
|
-
if (r === "intensive_rate") return { nature:
|
|
1556
|
+
if (r === "additive") return { nature: n2, additivity: "additive", basis: "measured", suppressed: false };
|
|
1557
|
+
if (r === "part_of_whole") return { nature: n2, additivity: "part_of_whole", basis: "measured", suppressed: false };
|
|
1558
|
+
if (r === "intensive_rate") return { nature: n2, additivity: "intensive_rate", basis: "measured", suppressed: false };
|
|
1556
1559
|
}
|
|
1557
|
-
return e.discourageAggregationAcrossGroups === true ? { nature:
|
|
1560
|
+
return e.discourageAggregationAcrossGroups === true ? { nature: n2, additivity: "intensive_rate", basis: "host-flag", suppressed: false } : Tt(e.name) ? { nature: n2, additivity: "intensive_rate", basis: "name", suppressed: false } : { nature: n2, additivity: "additive", basis: "default", suppressed: false };
|
|
1558
1561
|
}
|
|
1559
1562
|
function Ke(t) {
|
|
1560
|
-
let e = Ve(t),
|
|
1563
|
+
let e = Ve(t), n2 = t ?? {};
|
|
1561
1564
|
if (e.nature === "Categorical") return ["first", "distinctcount", "count"];
|
|
1562
|
-
if (e.nature === "Ordinal") return Et(
|
|
1565
|
+
if (e.nature === "Ordinal") return Et(n2) ? ["median", "average", "min", "max", "first", "distinctcount", "count"] : ["first", "distinctcount", "count"];
|
|
1563
1566
|
switch (e.additivity) {
|
|
1564
1567
|
case "positional":
|
|
1565
1568
|
return ["min", "max", "count", "distinctcount", "first"];
|
|
@@ -1575,157 +1578,161 @@ function Ln(t) {
|
|
|
1575
1578
|
function On(t, e) {
|
|
1576
1579
|
if (e !== "sum" && e !== "count") return false;
|
|
1577
1580
|
if (e === "count") return true;
|
|
1578
|
-
let
|
|
1579
|
-
return
|
|
1581
|
+
let n2 = Ve(t);
|
|
1582
|
+
return n2.additivity === "additive" || n2.additivity === "part_of_whole" || n2.additivity === "unknown";
|
|
1580
1583
|
}
|
|
1581
1584
|
var wt = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, String.raw`\bcolumns\s*\[\s*-?\d`, String.raw`\.iloc\s*\[[^\]]*,`, String.raw`\.iat\s*\[`, String.raw`\bselect_dtypes\b`, String.raw`\b_get_numeric_data\b`, String.raw`\bis_numeric_dtype\b`, String.raw`\bfor\s+\w+\s+in\s+(?:list\s*\(\s*)?df\.columns\b`, String.raw`\bdf\.columns\s*\.\s*(?:tolist|to_list|difference|drop)\b`, String.raw`\bdf\.dtypes\b`, String.raw`\bObject\s*\.\s*(?:keys|values|entries)\s*\(\s*(?:rows|data|df)?\s*\[\s*0\s*\]`, String.raw`\b(?:row|rw|r)\s*\[\s*\d+\s*\]`].join("|"));
|
|
1582
1585
|
|
|
1583
1586
|
// ../shape-core/dist/index.mjs
|
|
1584
1587
|
/*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
|
|
1585
|
-
var
|
|
1586
|
-
var
|
|
1587
|
-
function
|
|
1588
|
-
return !!E(
|
|
1589
|
-
}
|
|
1590
|
-
function
|
|
1591
|
-
let
|
|
1592
|
-
for (let
|
|
1593
|
-
if (
|
|
1594
|
-
let
|
|
1595
|
-
if (!V(
|
|
1588
|
+
var Y3 = 2;
|
|
1589
|
+
var le = 400;
|
|
1590
|
+
function X3(t) {
|
|
1591
|
+
return !!E(t);
|
|
1592
|
+
}
|
|
1593
|
+
function _3(t) {
|
|
1594
|
+
let e = /* @__PURE__ */ new Set();
|
|
1595
|
+
for (let r of t) {
|
|
1596
|
+
if (r == null) continue;
|
|
1597
|
+
let o2 = u(String(r));
|
|
1598
|
+
if (!V(o2) && !e.has(o2) && (e.add(o2), e.size >= le)) break;
|
|
1596
1599
|
}
|
|
1597
|
-
return Array.from(
|
|
1598
|
-
}
|
|
1599
|
-
function
|
|
1600
|
-
let
|
|
1601
|
-
if (
|
|
1602
|
-
let
|
|
1603
|
-
return
|
|
1604
|
-
}
|
|
1605
|
-
function
|
|
1606
|
-
if (!Y(
|
|
1607
|
-
let
|
|
1608
|
-
return
|
|
1609
|
-
}
|
|
1610
|
-
function
|
|
1611
|
-
let
|
|
1612
|
-
if (
|
|
1613
|
-
let
|
|
1614
|
-
for (let
|
|
1615
|
-
return Math.round(
|
|
1616
|
-
}
|
|
1617
|
-
function
|
|
1618
|
-
let
|
|
1619
|
-
if (
|
|
1620
|
-
let
|
|
1621
|
-
for (let
|
|
1622
|
-
return Math.round(
|
|
1623
|
-
}
|
|
1624
|
-
function
|
|
1625
|
-
let
|
|
1626
|
-
for (let
|
|
1627
|
-
if (
|
|
1628
|
-
let
|
|
1629
|
-
if (!V(u(
|
|
1600
|
+
return Array.from(e);
|
|
1601
|
+
}
|
|
1602
|
+
function N3(t) {
|
|
1603
|
+
let e = _3(t);
|
|
1604
|
+
if (e.length === 0 || Z2(t) < 95) return false;
|
|
1605
|
+
let r = e.filter((u2) => X3(u2) && !Y(u2)).length, o2 = e.filter((u2) => !X3(u2) && !!Y(u2)).length;
|
|
1606
|
+
return r >= 1 && r >= o2;
|
|
1607
|
+
}
|
|
1608
|
+
function se2(t, e) {
|
|
1609
|
+
if (!Y(t)) return false;
|
|
1610
|
+
let r = E(t);
|
|
1611
|
+
return r ? e === "world" ? true : s3.has(r) : false;
|
|
1612
|
+
}
|
|
1613
|
+
function Z2(t) {
|
|
1614
|
+
let e = _3(t);
|
|
1615
|
+
if (e.length === 0) return 0;
|
|
1616
|
+
let r = 0;
|
|
1617
|
+
for (let o2 of e) X3(o2) && r++;
|
|
1618
|
+
return Math.round(r / e.length * 1e3) / 10;
|
|
1619
|
+
}
|
|
1620
|
+
function U3(t) {
|
|
1621
|
+
let e = _3(t);
|
|
1622
|
+
if (e.length === 0) return 0;
|
|
1623
|
+
let r = 0;
|
|
1624
|
+
for (let o2 of e) Y(o2) && r++;
|
|
1625
|
+
return Math.round(r / e.length * 1e3) / 10;
|
|
1626
|
+
}
|
|
1627
|
+
function ee3(t) {
|
|
1628
|
+
let e = /* @__PURE__ */ new Set();
|
|
1629
|
+
for (let r of t) {
|
|
1630
|
+
if (r == null) continue;
|
|
1631
|
+
let o2 = String(r).trim();
|
|
1632
|
+
if (!V(u(o2)) && !e.has(o2) && (e.add(o2), e.size >= le)) break;
|
|
1630
1633
|
}
|
|
1631
|
-
return Array.from(
|
|
1632
|
-
}
|
|
1633
|
-
function
|
|
1634
|
-
let
|
|
1635
|
-
if (
|
|
1636
|
-
let
|
|
1637
|
-
for (let
|
|
1638
|
-
return Math.round(
|
|
1639
|
-
}
|
|
1640
|
-
function
|
|
1641
|
-
return
|
|
1642
|
-
}
|
|
1643
|
-
function
|
|
1644
|
-
let
|
|
1645
|
-
if (
|
|
1646
|
-
let
|
|
1647
|
-
for (let u2 of
|
|
1648
|
-
return Math.round(
|
|
1649
|
-
}
|
|
1650
|
-
function
|
|
1651
|
-
let
|
|
1652
|
-
for (let
|
|
1653
|
-
return
|
|
1654
|
-
}
|
|
1655
|
-
function
|
|
1656
|
-
let
|
|
1657
|
-
for (let
|
|
1658
|
-
return
|
|
1659
|
-
}
|
|
1660
|
-
function
|
|
1661
|
-
let
|
|
1662
|
-
for (let
|
|
1663
|
-
let
|
|
1664
|
-
|
|
1634
|
+
return Array.from(e);
|
|
1635
|
+
}
|
|
1636
|
+
function J3(t) {
|
|
1637
|
+
let e = ee3(t);
|
|
1638
|
+
if (e.length === 0) return 0;
|
|
1639
|
+
let r = 0;
|
|
1640
|
+
for (let o2 of e) Z(o2).length > 0 && r++;
|
|
1641
|
+
return Math.round(r / e.length * 1e3) / 10;
|
|
1642
|
+
}
|
|
1643
|
+
function ae3(t, e) {
|
|
1644
|
+
return y2(e, rt) ? true : ee3(t).some((r) => /^\d{5}(-\d{4})?$/.test(r.replace(/\.0+$/, "")));
|
|
1645
|
+
}
|
|
1646
|
+
function pn(t, e) {
|
|
1647
|
+
let r = _3(t);
|
|
1648
|
+
if (r.length === 0) return 0;
|
|
1649
|
+
let o2 = 0;
|
|
1650
|
+
for (let u2 of r) p3(u2, e) && o2++;
|
|
1651
|
+
return Math.round(o2 / r.length * 1e3) / 10;
|
|
1652
|
+
}
|
|
1653
|
+
function Q3(t, e) {
|
|
1654
|
+
let r = 0;
|
|
1655
|
+
for (let o2 of _3(t)) e(o2) && r++;
|
|
1656
|
+
return r;
|
|
1657
|
+
}
|
|
1658
|
+
function yn(t, e) {
|
|
1659
|
+
let r = 0;
|
|
1660
|
+
for (let o2 of ee3(t)) e(o2) && r++;
|
|
1661
|
+
return r;
|
|
1662
|
+
}
|
|
1663
|
+
function gn(t, e, r, o2, u2) {
|
|
1664
|
+
let l = [], a2 = [], i = {}, E4 = {}, T2 = new Set(t), C = (s) => e.map((c2) => c2[s]);
|
|
1665
|
+
for (let s of ["city", "country"]) {
|
|
1666
|
+
let c2 = r?.[s];
|
|
1667
|
+
c2 && T2.has(c2) && (i[s] = c2);
|
|
1665
1668
|
}
|
|
1666
|
-
let
|
|
1667
|
-
for (let
|
|
1668
|
-
let
|
|
1669
|
-
|
|
1669
|
+
let S2 = new Set(u2 ?? t);
|
|
1670
|
+
for (let s of ["lat", "lon"]) {
|
|
1671
|
+
let c2 = r?.[s];
|
|
1672
|
+
c2 && S2.has(c2) && (i[s] = c2);
|
|
1670
1673
|
}
|
|
1671
|
-
let
|
|
1672
|
-
if (
|
|
1673
|
-
let
|
|
1674
|
-
|
|
1674
|
+
let y4 = r?.zip;
|
|
1675
|
+
if (y4 && T2.has(y4)) {
|
|
1676
|
+
let s = C(y4), c2 = J3(s);
|
|
1677
|
+
c2 < 95 ? a2.push(`zip=${y4} (only ${c2}% of values read as ZIPs)`) : ae3(s, y4) ? i.zip = y4 : a2.push(`zip=${y4} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1675
1678
|
}
|
|
1676
|
-
let
|
|
1677
|
-
if (
|
|
1678
|
-
let
|
|
1679
|
-
|
|
1679
|
+
let f4 = r?.state;
|
|
1680
|
+
if (f4 && T2.has(f4)) {
|
|
1681
|
+
let s = C(f4), c2 = _3(s);
|
|
1682
|
+
c2.length > 0 && c2.every((p2) => se2(p2, o2)) ? a2.push(`state=${f4} (every value is "CA", which is both Canada and California)`) : N3(s) ? (a2.push(`state=${f4} (every value is a country, not a state)`), i.country || (i.country = f4)) : U3(s) < 95 ? a2.push(`state=${f4} (only ${U3(s)}% of values are states/provinces)`) : i.state = f4;
|
|
1680
1683
|
}
|
|
1681
|
-
let
|
|
1684
|
+
let m2 = new Set(Object.values(i).filter(Boolean)), g3 = t.filter((s) => !m2.has(s) && !s.startsWith("__"));
|
|
1682
1685
|
if (!i.state) {
|
|
1683
|
-
let
|
|
1684
|
-
for (let
|
|
1685
|
-
let
|
|
1686
|
-
if (
|
|
1687
|
-
let
|
|
1688
|
-
if (
|
|
1689
|
-
let
|
|
1690
|
-
|
|
1686
|
+
let s = null;
|
|
1687
|
+
for (let c2 of g3) {
|
|
1688
|
+
let p2 = C(c2);
|
|
1689
|
+
if (N3(p2)) continue;
|
|
1690
|
+
let v3 = U3(p2);
|
|
1691
|
+
if (v3 < 95) continue;
|
|
1692
|
+
let q2 = Q3(p2, (k3) => !!Y(k3)), Re = Q3(p2, (k3) => !!Y(k3) && !se2(k3, o2));
|
|
1693
|
+
q2 < Y3 && Re < 1 || (!s || v3 > s.pct) && (s = { name: c2, pct: v3 });
|
|
1691
1694
|
}
|
|
1692
|
-
|
|
1695
|
+
s && (i.state = s.name, m2.add(s.name), l.push(`state=${s.name} (${s.pct}% states/provinces)`));
|
|
1693
1696
|
}
|
|
1694
|
-
if (!i.zip) for (let
|
|
1695
|
-
if (
|
|
1696
|
-
let
|
|
1697
|
-
if (!(
|
|
1698
|
-
i.zip =
|
|
1697
|
+
if (!i.zip) for (let s of g3) {
|
|
1698
|
+
if (m2.has(s)) continue;
|
|
1699
|
+
let c2 = C(s), p2 = J3(c2);
|
|
1700
|
+
if (!(p2 < 95) && ae3(c2, s) && !(yn(c2, (v3) => Z(v3).length > 0) < Y3)) {
|
|
1701
|
+
i.zip = s, m2.add(s), l.push(`zip=${s} (${p2}% ZIP codes)`);
|
|
1699
1702
|
break;
|
|
1700
1703
|
}
|
|
1701
1704
|
}
|
|
1702
|
-
let
|
|
1703
|
-
if (!
|
|
1704
|
-
let
|
|
1705
|
-
for (let
|
|
1706
|
-
if (
|
|
1707
|
-
let
|
|
1708
|
-
(!
|
|
1705
|
+
let b2 = i.country;
|
|
1706
|
+
if (!b2 || !N3(C(b2))) {
|
|
1707
|
+
let s = null;
|
|
1708
|
+
for (let c2 of g3) {
|
|
1709
|
+
if (m2.has(c2) || !N3(C(c2))) continue;
|
|
1710
|
+
let p2 = Z2(C(c2));
|
|
1711
|
+
(!s || p2 > s.pct) && (s = { name: c2, pct: p2 });
|
|
1709
1712
|
}
|
|
1710
|
-
|
|
1713
|
+
s && (b2 && (a2.push(`country=${b2} (only ${Z2(C(b2))}% of values are country identifiers; using ${s.name} instead)`), E4.country = b2), i.country = s.name, m2.add(s.name), l.push(`country=${s.name}`));
|
|
1711
1714
|
}
|
|
1712
1715
|
if (!i.city) {
|
|
1713
|
-
let
|
|
1714
|
-
for (let
|
|
1715
|
-
if (
|
|
1716
|
-
let
|
|
1717
|
-
|
|
1716
|
+
let s = null;
|
|
1717
|
+
for (let c2 of g3) {
|
|
1718
|
+
if (m2.has(c2)) continue;
|
|
1719
|
+
let p2 = C(c2), v3 = pn(p2, o2);
|
|
1720
|
+
v3 < m3 || Q3(p2, (q2) => p3(q2, o2)) < Y3 || (!s || v3 > s.pct) && (s = { name: c2, pct: v3 });
|
|
1718
1721
|
}
|
|
1719
|
-
|
|
1722
|
+
s && (i.city = s.name, l.push(`city=${s.name} (${s.pct}% known cities)`));
|
|
1720
1723
|
}
|
|
1721
|
-
let
|
|
1722
|
-
let
|
|
1723
|
-
return isFinite(
|
|
1724
|
+
let x3 = i.country ? C(i.country) : [], A2 = !!i.country && N3(x3), I2 = A2 ? new Set(x3.map((s) => E(s == null ? null : String(s))).filter(Boolean)).size : 0, R2 = A2 && I2 >= 2, L4 = !!(i.lat && i.lon) && e.some((s) => {
|
|
1725
|
+
let c2 = +String(s[i.lat] ?? "").trim(), p2 = +String(s[i.lon] ?? "").trim();
|
|
1726
|
+
return isFinite(c2) && isFinite(p2) && c2 >= -90 && c2 <= 90 && p2 >= -180 && p2 <= 180 && String(s[i.lat] ?? "").trim() !== "" && String(s[i.lon] ?? "").trim() !== "";
|
|
1724
1727
|
});
|
|
1725
|
-
return i.lat && i.lon && !
|
|
1726
|
-
}
|
|
1727
|
-
var
|
|
1728
|
-
var
|
|
1728
|
+
return i.lat && i.lon && !L4 && a2.push(`lat/lon=${i.lat}/${i.lon} (no row holds a usable coordinate pair)`), i.country && !R2 && !(i.city || i.state || i.zip || L4) && a2.push(A2 ? `country=${i.country} (every row resolves to the same country - nothing to place apart)` : `country=${i.country} (values are not country identifiers)`), { bind: !!(i.city || i.state || i.zip || R2 || L4) ? i : null, backfilled: l, refused: a2, ...Object.keys(E4).length ? { labelFallback: E4 } : {} };
|
|
1729
|
+
}
|
|
1730
|
+
var n = (t, ...e) => ({ part: t, langs: Object.freeze(e) });
|
|
1731
|
+
var te2 = Object.freeze({ jaar: n("year", "nl"), kwartaal: n("quarter", "nl"), maand: n("month", "nl"), dag: n("day", "nl", "sv", "da", "nb"), jahr: n("year", "de"), quartal: n("quarter", "de"), monat: n("month", "de"), tag: n("day", "de"), ann\u00E9e: n("year", "fr"), mois: n("month", "fr"), jour: n("day", "fr"), trimestre: n("quarter", "fr", "es", "pt", "it"), a\u00F1o: n("year", "es"), mes: n("month", "es"), d\u00EDa: n("day", "es"), ano: n("year", "pt"), m\u00EAs: n("month", "pt"), dia: n("day", "pt"), anno: n("year", "it"), mese: n("month", "it"), giorno: n("day", "it"), \u0433\u043E\u0434: n("year", "ru"), \u043C\u0435\u0441\u044F\u0446: n("month", "ru"), \u0440\u0456\u043A: n("year", "uk"), \u043C\u0456\u0441\u044F\u0446\u044C: n("month", "uk"), \u043A\u0432\u0430\u0440\u0442\u0430\u043B: n("quarter", "ru", "uk"), \u0434\u0435\u043D\u044C: n("day", "ru", "uk"), rok: n("year", "pl", "cs", "sk"), kwarta\u0142: n("quarter", "pl"), miesi\u0105c: n("month", "pl"), dzie\u0144: n("day", "pl"), \u010Dtvrtlet\u00ED: n("quarter", "cs"), m\u011Bs\u00EDc: n("month", "cs"), den: n("day", "cs"), \u0161tvr\u0165rok: n("quarter", "sk"), mesiac: n("month", "sk"), de\u0148: n("day", "sk"), \u00E5r: n("year", "sv", "da", "nb"), kvartal: n("quarter", "sv", "da", "nb"), m\u00E5nad: n("month", "sv"), m\u00E5ned: n("month", "da", "nb"), vuosi: n("year", "fi"), vuosinelj\u00E4nnes: n("quarter", "fi"), kuukausi: n("month", "fi"), p\u00E4iv\u00E4: n("day", "fi"), \u00E9v: n("year", "hu"), negyed\u00E9v: n("quarter", "hu"), h\u00F3nap: n("month", "hu"), nap: n("day", "hu"), y\u0131l: n("year", "tr"), \u00E7eyrek: n("quarter", "tr"), ay: n("month", "tr"), g\u00FCn: n("day", "tr"), \u03AD\u03C4\u03BF\u03C2: n("year", "el"), \u03C4\u03C1\u03AF\u03BC\u03B7\u03BD\u03BF: n("quarter", "el"), \u03BC\u03AE\u03BD\u03B1\u03C2: n("month", "el"), \u03B7\u03BC\u03AD\u03C1\u03B1: n("day", "el"), an: n("year", "ro"), trimestru: n("quarter", "ro"), lun\u0103: n("month", "ro"), zi: n("day", "ro"), godina: n("year", "hr"), tromjese\u010Dje: n("quarter", "hr"), mjesec: n("month", "hr"), dan: n("day", "hr"), \u5E74: n("year", "ja", "zh"), \u56DB\u534A\u671F: n("quarter", "ja"), \u5B63\u5EA6: n("quarter", "zh"), \u6708: n("month", "ja", "zh"), \u65E5: n("day", "ja", "zh"), \uC5F0\uB3C4: n("year", "ko"), \uBD84\uAE30: n("quarter", "ko"), \uC6D4: n("month", "ko"), \uC77C: n("day", "ko"), tahun: n("year", "id"), kuartal: n("quarter", "id"), triwulan: n("quarter", "id"), bulan: n("month", "id"), hari: n("day", "id"), n\u0103m: n("year", "vi"), qu\u00FD: n("quarter", "vi"), th\u00E1ng: n("month", "vi"), ng\u00E0y: n("day", "vi"), \u0E1B\u0E35: n("year", "th"), \u0E44\u0E15\u0E23\u0E21\u0E32\u0E2A: n("quarter", "th"), \u0E40\u0E14\u0E37\u0E2D\u0E19: n("month", "th"), \u0E27\u0E31\u0E19: n("day", "th"), \u0627\u0644\u0633\u0646\u0629: n("year", "ar"), \u0633\u0646\u0629: n("year", "ar"), \u0627\u0644\u0639\u0627\u0645: n("year", "ar"), \u0639\u0627\u0645: n("year", "ar"), \u0627\u0644\u0631\u0628\u0639: n("quarter", "ar"), \u0631\u0628\u0639: n("quarter", "ar"), "\u0631\u0628\u0639 \u0627\u0644\u0633\u0646\u0629": n("quarter", "ar"), \u0627\u0644\u0634\u0647\u0631: n("month", "ar"), \u0634\u0647\u0631: n("month", "ar"), \u0627\u0644\u064A\u0648\u0645: n("day", "ar"), \u064A\u0648\u0645: n("day", "ar"), \u05E9\u05E0\u05D4: n("year", "he"), \u05E8\u05D1\u05E2\u05D5\u05DF: n("quarter", "he"), \u05D7\u05D5\u05D3\u05E9: n("month", "he"), \u05D9\u05D5\u05DD: n("day", "he"), \u0935\u0930\u094D\u0937: n("year", "hi"), \u0938\u093E\u0932: n("year", "hi"), \u0924\u093F\u092E\u093E\u0939\u0940: n("quarter", "hi"), \u092E\u0939\u0940\u0928\u093E: n("month", "hi"), \u092E\u093E\u0939: n("month", "hi"), \u0926\u093F\u0928: n("day", "hi"), \u0633\u0627\u0644: n("year", "fa"), \u0645\u0627\u0647: n("month", "fa"), \u0631\u0648\u0632: n("day", "fa") });
|
|
1732
|
+
var hn = Object.freeze(Array.from(new Set(Object.values(te2).flatMap((t) => t.langs))));
|
|
1733
|
+
var ue = Object.freeze(["fa", "ar", "he", "th"]);
|
|
1734
|
+
var In = Object.freeze({ integer: "number", decimal: "number", double: "number", datetime: "date", date: "date", boolean: "boolean", string: "text" });
|
|
1735
|
+
var zn = Object.freeze({ RENDER_START: "render-start", RENDER_OK: "render-ok", RENDER_ERROR: "render-error", VIEW: "view", VIEW_VERDICT: "view-verdict" });
|
|
1729
1736
|
|
|
1730
1737
|
// src/payload.ts
|
|
1731
1738
|
var ROW_IDX_COLUMN = "__rowIdx__";
|
|
@@ -1740,7 +1747,7 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1740
1747
|
let labelCol;
|
|
1741
1748
|
if (bind) {
|
|
1742
1749
|
const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
|
|
1743
|
-
const res =
|
|
1750
|
+
const res = gn(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
|
|
1744
1751
|
bind = res.bind;
|
|
1745
1752
|
rolesBackfilled = res.backfilled;
|
|
1746
1753
|
rolesRefused = res.refused;
|
|
@@ -1788,17 +1795,17 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1788
1795
|
cols = cols.filter((c2) => c2.name !== ROW_IDX_COLUMN);
|
|
1789
1796
|
let utcDayColumns = null;
|
|
1790
1797
|
if (opts?.utcDays) {
|
|
1791
|
-
const norm =
|
|
1798
|
+
const norm = se(cols, rowObjs);
|
|
1792
1799
|
rowObjs = norm.rows;
|
|
1793
1800
|
utcDayColumns = norm.columns;
|
|
1794
1801
|
}
|
|
1795
|
-
const
|
|
1802
|
+
const o2 = resolvePointChannel(cols, rowObjs, point);
|
|
1796
1803
|
const d2 = resolvePointChannel(cols, rowObjs, destination);
|
|
1797
|
-
const pLat =
|
|
1804
|
+
const pLat = o2.lat, pLon = o2.lon, pPrec = o2.prec;
|
|
1798
1805
|
const dLat = d2.lat, dLon = d2.lon, dPrec = d2.prec;
|
|
1799
|
-
const geoPoint =
|
|
1806
|
+
const geoPoint = o2.geoPoint;
|
|
1800
1807
|
const geoPointDest = d2.geoPoint;
|
|
1801
|
-
const rolesRefused = [...
|
|
1808
|
+
const rolesRefused = [...o2.rolesRefused, ...d2.rolesRefused.map((s) => `destination: ${s}`)];
|
|
1802
1809
|
let geoIso = null;
|
|
1803
1810
|
let geoUnmatched;
|
|
1804
1811
|
let geoUnmatchedDistinct;
|
|
@@ -1818,41 +1825,41 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1818
1825
|
const aliasCols = [];
|
|
1819
1826
|
if (opts?.aliases && opts.aliases.length > 0) {
|
|
1820
1827
|
const claimed = /* @__PURE__ */ new Set([...colNames, ...hostNames]);
|
|
1821
|
-
for (const
|
|
1822
|
-
const from =
|
|
1823
|
-
if (from < 0 || !
|
|
1824
|
-
claimed.add(
|
|
1825
|
-
aliasCols.push({ from, name:
|
|
1828
|
+
for (const a2 of opts.aliases) {
|
|
1829
|
+
const from = a2 ? colNames.indexOf(a2.name) : -1;
|
|
1830
|
+
if (from < 0 || !a2.alias || claimed.has(a2.alias)) continue;
|
|
1831
|
+
claimed.add(a2.alias);
|
|
1832
|
+
aliasCols.push({ from, name: a2.alias });
|
|
1826
1833
|
}
|
|
1827
1834
|
}
|
|
1828
1835
|
const extra = hostNames.length + aliasCols.length;
|
|
1829
1836
|
const out = new Array(rowObjs.length);
|
|
1830
1837
|
for (let r = 0; r < rowObjs.length; r++) {
|
|
1831
1838
|
const row = rowObjs[r];
|
|
1832
|
-
const
|
|
1839
|
+
const a2 = new Array(cols.length + extra);
|
|
1833
1840
|
for (let c2 = 0; c2 < cols.length; c2++) {
|
|
1834
|
-
const
|
|
1835
|
-
if (
|
|
1836
|
-
|
|
1841
|
+
const v3 = row[colNames[c2]];
|
|
1842
|
+
if (v3 instanceof Date) {
|
|
1843
|
+
a2[c2] = v3.toISOString();
|
|
1837
1844
|
} else {
|
|
1838
|
-
|
|
1845
|
+
a2[c2] = v3 ?? null;
|
|
1839
1846
|
}
|
|
1840
1847
|
}
|
|
1841
1848
|
let k3 = cols.length;
|
|
1842
|
-
|
|
1843
|
-
if (geoIso)
|
|
1849
|
+
a2[k3++] = r;
|
|
1850
|
+
if (geoIso) a2[k3++] = geoIso[r];
|
|
1844
1851
|
if (pLat && pLon) {
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1852
|
+
a2[k3++] = pLat[r];
|
|
1853
|
+
a2[k3++] = pLon[r];
|
|
1854
|
+
a2[k3++] = pPrec ? pPrec[r] : null;
|
|
1848
1855
|
}
|
|
1849
1856
|
if (dLat && dLon) {
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1857
|
+
a2[k3++] = dLat[r];
|
|
1858
|
+
a2[k3++] = dLon[r];
|
|
1859
|
+
a2[k3++] = dPrec ? dPrec[r] : null;
|
|
1853
1860
|
}
|
|
1854
|
-
for (const ac of aliasCols)
|
|
1855
|
-
out[r] =
|
|
1861
|
+
for (const ac of aliasCols) a2[k3++] = a2[ac.from];
|
|
1862
|
+
out[r] = a2;
|
|
1856
1863
|
}
|
|
1857
1864
|
const colsOut = [...cols, { name: ROW_IDX_COLUMN, dataType: "Integer", isMeasure: false, modelDesc: "" }];
|
|
1858
1865
|
if (geoIso) colsOut.push({ name: "__geoIso__", dataType: "String", isMeasure: false, modelDesc: "" });
|
|
@@ -1889,7 +1896,7 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1889
1896
|
// src/codeComments.ts
|
|
1890
1897
|
function stripJsComments(code) {
|
|
1891
1898
|
const src = String(code ?? "");
|
|
1892
|
-
const
|
|
1899
|
+
const n2 = src.length;
|
|
1893
1900
|
let out = "";
|
|
1894
1901
|
let i = 0;
|
|
1895
1902
|
const templates = [];
|
|
@@ -1901,9 +1908,9 @@ function stripJsComments(code) {
|
|
|
1901
1908
|
if ("(,=:[!&|?{};+-*%<>~^".includes(prevSig)) return true;
|
|
1902
1909
|
return /^(return|typeof|instanceof|in|of|new|delete|void|throw|case|do|else|yield|await)$/.test(prevWord);
|
|
1903
1910
|
};
|
|
1904
|
-
while (i <
|
|
1911
|
+
while (i < n2) {
|
|
1905
1912
|
const ch = src[i];
|
|
1906
|
-
const next = i + 1 <
|
|
1913
|
+
const next = i + 1 < n2 ? src[i + 1] : "";
|
|
1907
1914
|
const top = templates.length > 0 ? templates[templates.length - 1] : null;
|
|
1908
1915
|
if (top === -1) {
|
|
1909
1916
|
if (ch === "\\") {
|
|
@@ -1934,10 +1941,10 @@ function stripJsComments(code) {
|
|
|
1934
1941
|
continue;
|
|
1935
1942
|
}
|
|
1936
1943
|
if (ch === "/" && next === "/") {
|
|
1937
|
-
let
|
|
1938
|
-
while (
|
|
1944
|
+
let j4 = i + 2;
|
|
1945
|
+
while (j4 < n2 && src[j4] !== "\n" && src[j4] !== "\r") j4++;
|
|
1939
1946
|
out += " ";
|
|
1940
|
-
i =
|
|
1947
|
+
i = j4;
|
|
1941
1948
|
wordOpen = false;
|
|
1942
1949
|
continue;
|
|
1943
1950
|
}
|
|
@@ -1946,15 +1953,15 @@ function stripJsComments(code) {
|
|
|
1946
1953
|
const body = end < 0 ? src.slice(i + 2) : src.slice(i + 2, end);
|
|
1947
1954
|
const newlines = body.match(/\r\n|\r|\n/g);
|
|
1948
1955
|
out += newlines ? newlines.join("") : " ";
|
|
1949
|
-
i = end < 0 ?
|
|
1956
|
+
i = end < 0 ? n2 : end + 2;
|
|
1950
1957
|
wordOpen = false;
|
|
1951
1958
|
continue;
|
|
1952
1959
|
}
|
|
1953
1960
|
if (ch === "'" || ch === '"') {
|
|
1954
|
-
let
|
|
1955
|
-
while (
|
|
1956
|
-
out += src.slice(i, Math.min(
|
|
1957
|
-
i =
|
|
1961
|
+
let j4 = i + 1;
|
|
1962
|
+
while (j4 < n2 && src[j4] !== ch && src[j4] !== "\n") j4 += src[j4] === "\\" ? 2 : 1;
|
|
1963
|
+
out += src.slice(i, Math.min(j4 + 1, n2));
|
|
1964
|
+
i = j4 + 1;
|
|
1958
1965
|
prevSig = ch;
|
|
1959
1966
|
prevWord = "";
|
|
1960
1967
|
wordOpen = false;
|
|
@@ -1968,23 +1975,23 @@ function stripJsComments(code) {
|
|
|
1968
1975
|
continue;
|
|
1969
1976
|
}
|
|
1970
1977
|
if (ch === "/" && regexMayFollow()) {
|
|
1971
|
-
let
|
|
1972
|
-
while (
|
|
1973
|
-
const c2 = src[
|
|
1978
|
+
let j4 = i + 1, inClass = false;
|
|
1979
|
+
while (j4 < n2 && src[j4] !== "\n") {
|
|
1980
|
+
const c2 = src[j4];
|
|
1974
1981
|
if (c2 === "\\") {
|
|
1975
|
-
|
|
1982
|
+
j4 += 2;
|
|
1976
1983
|
continue;
|
|
1977
1984
|
}
|
|
1978
1985
|
if (c2 === "[") inClass = true;
|
|
1979
1986
|
else if (c2 === "]") inClass = false;
|
|
1980
1987
|
else if (c2 === "/" && !inClass) break;
|
|
1981
|
-
|
|
1988
|
+
j4++;
|
|
1982
1989
|
}
|
|
1983
|
-
if (
|
|
1984
|
-
|
|
1985
|
-
while (
|
|
1986
|
-
out += src.slice(i,
|
|
1987
|
-
i =
|
|
1990
|
+
if (j4 < n2 && src[j4] === "/") {
|
|
1991
|
+
j4++;
|
|
1992
|
+
while (j4 < n2 && /[A-Za-z]/.test(src[j4])) j4++;
|
|
1993
|
+
out += src.slice(i, j4);
|
|
1994
|
+
i = j4;
|
|
1988
1995
|
prevSig = "/";
|
|
1989
1996
|
prevWord = "";
|
|
1990
1997
|
wordOpen = false;
|
|
@@ -2038,10 +2045,10 @@ function createMarkResolver(env) {
|
|
|
2038
2045
|
if (E4 && t instanceof E4) return true;
|
|
2039
2046
|
return !!t && typeof t.closest === "function" && typeof t.getAttribute === "function";
|
|
2040
2047
|
};
|
|
2041
|
-
const viewStyle = (
|
|
2048
|
+
const viewStyle = (n2) => {
|
|
2042
2049
|
try {
|
|
2043
2050
|
const gcs = doc?.defaultView?.getComputedStyle ?? (typeof getComputedStyle === "function" ? getComputedStyle : null);
|
|
2044
|
-
return gcs ? gcs(
|
|
2051
|
+
return gcs ? gcs(n2).pointerEvents : "";
|
|
2045
2052
|
} catch {
|
|
2046
2053
|
return "";
|
|
2047
2054
|
}
|
|
@@ -2054,26 +2061,26 @@ function createMarkResolver(env) {
|
|
|
2054
2061
|
const so = parseFloat(el.getAttribute("stroke-opacity") || "1");
|
|
2055
2062
|
return s === "transparent" || s === "none" || so <= 0.01;
|
|
2056
2063
|
};
|
|
2057
|
-
const distToPathCenterline = (el,
|
|
2064
|
+
const distToPathCenterline = (el, x3, y4) => {
|
|
2058
2065
|
const L4 = el.getTotalLength();
|
|
2059
2066
|
if (!(L4 > 0)) return Number.MAX_VALUE;
|
|
2060
|
-
const
|
|
2061
|
-
if (!
|
|
2067
|
+
const m2 = el.getScreenCTM();
|
|
2068
|
+
if (!m2) return Number.MAX_VALUE;
|
|
2062
2069
|
let best = Number.MAX_VALUE;
|
|
2063
|
-
const
|
|
2064
|
-
for (let i = 0; i <=
|
|
2065
|
-
const pt2 = el.getPointAtLength(L4 * i /
|
|
2066
|
-
const dx =
|
|
2067
|
-
const dy =
|
|
2070
|
+
const N4 = 64;
|
|
2071
|
+
for (let i = 0; i <= N4; i++) {
|
|
2072
|
+
const pt2 = el.getPointAtLength(L4 * i / N4);
|
|
2073
|
+
const dx = m2.a * pt2.x + m2.c * pt2.y + m2.e - x3;
|
|
2074
|
+
const dy = m2.b * pt2.x + m2.d * pt2.y + m2.f - y4;
|
|
2068
2075
|
const d2 = dx * dx + dy * dy;
|
|
2069
2076
|
if (d2 < best) best = d2;
|
|
2070
2077
|
}
|
|
2071
2078
|
return Math.sqrt(best);
|
|
2072
2079
|
};
|
|
2073
|
-
const refineHitCorridor = (mark,
|
|
2080
|
+
const refineHitCorridor = (mark, x3, y4, sel) => {
|
|
2074
2081
|
try {
|
|
2075
2082
|
if (!mark || !isInvisibleStrokePath(mark) || !mark.getAttribute("data-row-idx")) return mark;
|
|
2076
|
-
const stack = doc.elementsFromPoint(
|
|
2083
|
+
const stack = doc.elementsFromPoint(x3, y4);
|
|
2077
2084
|
const candidates = [];
|
|
2078
2085
|
for (const el of stack) {
|
|
2079
2086
|
if (!root.contains(el)) continue;
|
|
@@ -2087,7 +2094,7 @@ function createMarkResolver(env) {
|
|
|
2087
2094
|
let best = mark;
|
|
2088
2095
|
let bestD = Number.MAX_VALUE;
|
|
2089
2096
|
for (const el of candidates) {
|
|
2090
|
-
const d2 = distToPathCenterline(el,
|
|
2097
|
+
const d2 = distToPathCenterline(el, x3, y4);
|
|
2091
2098
|
if (d2 < bestD) {
|
|
2092
2099
|
bestD = d2;
|
|
2093
2100
|
best = el;
|
|
@@ -2109,9 +2116,9 @@ function createMarkResolver(env) {
|
|
|
2109
2116
|
const findMark = (target, sel = ".d3-mark", ev) => {
|
|
2110
2117
|
if (!isElement(target)) return null;
|
|
2111
2118
|
const el = target;
|
|
2112
|
-
const
|
|
2113
|
-
if (
|
|
2114
|
-
return
|
|
2119
|
+
const m2 = el.closest(sel);
|
|
2120
|
+
if (m2 && ev) return refineHitCorridor(m2, ev.clientX, ev.clientY, sel);
|
|
2121
|
+
return m2;
|
|
2115
2122
|
};
|
|
2116
2123
|
const rowIdxsFromMark = (el) => {
|
|
2117
2124
|
if (!el) return [];
|
|
@@ -2119,14 +2126,14 @@ function createMarkResolver(env) {
|
|
|
2119
2126
|
if (!raw) return [];
|
|
2120
2127
|
const out = [];
|
|
2121
2128
|
for (const tok of raw.split(",")) {
|
|
2122
|
-
const
|
|
2123
|
-
if (!isNaN(
|
|
2129
|
+
const n2 = parseInt(tok.trim(), 10);
|
|
2130
|
+
if (!isNaN(n2) && n2 >= 0) out.push(n2);
|
|
2124
2131
|
}
|
|
2125
2132
|
return out;
|
|
2126
2133
|
};
|
|
2127
|
-
const penetrateOverlayAt = (
|
|
2134
|
+
const penetrateOverlayAt = (x3, y4, sel) => {
|
|
2128
2135
|
try {
|
|
2129
|
-
const stack = doc.elementsFromPoint(
|
|
2136
|
+
const stack = doc.elementsFromPoint(x3, y4);
|
|
2130
2137
|
for (const el of stack) {
|
|
2131
2138
|
if (!root.contains(el) || !isElement(el)) continue;
|
|
2132
2139
|
const cand = el.matches(sel) ? el : el.closest(sel);
|
|
@@ -2138,7 +2145,7 @@ function createMarkResolver(env) {
|
|
|
2138
2145
|
}
|
|
2139
2146
|
return null;
|
|
2140
2147
|
};
|
|
2141
|
-
const resolveByGeometry = (
|
|
2148
|
+
const resolveByGeometry = (x3, y4, sel) => {
|
|
2142
2149
|
try {
|
|
2143
2150
|
const cands = root.querySelectorAll(sel);
|
|
2144
2151
|
let best = null, bestArea = Number.MAX_VALUE;
|
|
@@ -2147,7 +2154,7 @@ function createMarkResolver(env) {
|
|
|
2147
2154
|
if (!el.getAttribute("data-row-idx")) continue;
|
|
2148
2155
|
const r = el.getBoundingClientRect ? el.getBoundingClientRect() : null;
|
|
2149
2156
|
if (!r || r.width <= 0 || r.height <= 0) continue;
|
|
2150
|
-
if (
|
|
2157
|
+
if (x3 < r.left || x3 > r.right || y4 < r.top || y4 > r.bottom) continue;
|
|
2151
2158
|
const area = r.width * r.height;
|
|
2152
2159
|
if (area < bestArea) {
|
|
2153
2160
|
bestArea = area;
|
|
@@ -2158,10 +2165,10 @@ function createMarkResolver(env) {
|
|
|
2158
2165
|
const hasHittableShape = (node) => {
|
|
2159
2166
|
const SHAPE = /^(rect|circle|ellipse|path|line|polygon|polyline|text|image|use)$/;
|
|
2160
2167
|
const all = [node, ...Array.from(node.querySelectorAll("*"))];
|
|
2161
|
-
for (const
|
|
2162
|
-
const tag = (
|
|
2168
|
+
for (const n2 of all) {
|
|
2169
|
+
const tag = (n2.tagName || "").toLowerCase();
|
|
2163
2170
|
if (!SHAPE.test(tag)) continue;
|
|
2164
|
-
const pe = viewStyle(
|
|
2171
|
+
const pe = viewStyle(n2);
|
|
2165
2172
|
if (pe && pe !== "none") return true;
|
|
2166
2173
|
}
|
|
2167
2174
|
return false;
|
|
@@ -2314,8 +2321,8 @@ function styleOf2(el, doc) {
|
|
|
2314
2321
|
}
|
|
2315
2322
|
}
|
|
2316
2323
|
function attrOrComputed(el, name, cs) {
|
|
2317
|
-
const
|
|
2318
|
-
if (
|
|
2324
|
+
const a2 = el.getAttribute?.(name);
|
|
2325
|
+
if (a2 !== null && a2 !== void 0 && String(a2).trim() !== "") return String(a2).trim();
|
|
2319
2326
|
const c2 = cs?.[name === "stroke-width" ? "strokeWidth" : name];
|
|
2320
2327
|
return c2 === null || c2 === void 0 ? "" : String(c2).trim();
|
|
2321
2328
|
}
|
|
@@ -2324,10 +2331,10 @@ function isUnfilled(fill) {
|
|
|
2324
2331
|
return f4 === "none" || f4 === "transparent" || f4 === "rgba(0, 0, 0, 0)" || f4 === "rgba(0,0,0,0)";
|
|
2325
2332
|
}
|
|
2326
2333
|
function widthPx(raw) {
|
|
2327
|
-
const
|
|
2328
|
-
if (!
|
|
2329
|
-
const
|
|
2330
|
-
return isFinite(
|
|
2334
|
+
const m2 = /^(-?\d+(?:\.\d+)?)\s*(px)?$/i.exec(raw);
|
|
2335
|
+
if (!m2) return NaN;
|
|
2336
|
+
const n2 = parseFloat(m2[1]);
|
|
2337
|
+
return isFinite(n2) ? n2 : NaN;
|
|
2331
2338
|
}
|
|
2332
2339
|
function censusHitBands(container, doc) {
|
|
2333
2340
|
if (!container || typeof container.querySelectorAll !== "function") return EMPTY3;
|
|
@@ -2344,13 +2351,13 @@ function censusHitBands(container, doc) {
|
|
|
2344
2351
|
if (!OPEN_TAGS.has(tag)) continue;
|
|
2345
2352
|
const cs = styleOf2(el, ownerDoc);
|
|
2346
2353
|
const open = isUnfilled(attrOrComputed(el, "fill", cs));
|
|
2347
|
-
const
|
|
2354
|
+
const w2 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
|
|
2348
2355
|
const geom = String(el.getAttribute?.("d") ?? "") || `${tag}#${String(el.getAttribute?.(ROW_IDX_ATTR) ?? "")}`;
|
|
2349
2356
|
const inert = String(cs?.pointerEvents ?? el.style?.pointerEvents ?? "") === "none";
|
|
2350
|
-
rows.push({ el, geom, w:
|
|
2351
|
-
if (isFinite(
|
|
2357
|
+
rows.push({ el, geom, w: w2, open, inert });
|
|
2358
|
+
if (isFinite(w2)) {
|
|
2352
2359
|
const prev = widestByGeom.get(geom);
|
|
2353
|
-
if (prev === void 0 ||
|
|
2360
|
+
if (prev === void 0 || w2 > prev) widestByGeom.set(geom, w2);
|
|
2354
2361
|
}
|
|
2355
2362
|
}
|
|
2356
2363
|
const out = { ...EMPTY3 };
|
|
@@ -2383,34 +2390,34 @@ var VALUE_AXIS_MIN_FIT = 0.8;
|
|
|
2383
2390
|
var MIN_AXIS_SPAN_PX = 40;
|
|
2384
2391
|
var EMPTY4 = { marks: 0, axis: "", column: "", fit: 0, offShare: 0, medianOffRadii: 0 };
|
|
2385
2392
|
function num(el, name) {
|
|
2386
|
-
const
|
|
2387
|
-
if (
|
|
2388
|
-
return parseFloat(String(
|
|
2393
|
+
const v3 = el.getAttribute?.(name);
|
|
2394
|
+
if (v3 === null || v3 === void 0 || String(v3).trim() === "") return NaN;
|
|
2395
|
+
return parseFloat(String(v3));
|
|
2389
2396
|
}
|
|
2390
2397
|
function median(xs) {
|
|
2391
2398
|
if (!xs.length) return NaN;
|
|
2392
|
-
const s = [...xs].sort((
|
|
2393
|
-
const
|
|
2394
|
-
return s.length % 2 ? s[
|
|
2399
|
+
const s = [...xs].sort((a2, b2) => a2 - b2);
|
|
2400
|
+
const m2 = s.length >> 1;
|
|
2401
|
+
return s.length % 2 ? s[m2] : (s[m2 - 1] + s[m2]) / 2;
|
|
2395
2402
|
}
|
|
2396
|
-
function robustLine(
|
|
2397
|
-
const
|
|
2398
|
-
const step = Math.max(1, Math.floor(
|
|
2403
|
+
function robustLine(v3, pos) {
|
|
2404
|
+
const n2 = v3.length;
|
|
2405
|
+
const step = Math.max(1, Math.floor(n2 / FIT_SAMPLE));
|
|
2399
2406
|
const idx = [];
|
|
2400
|
-
for (let i = 0; i <
|
|
2407
|
+
for (let i = 0; i < n2; i += step) idx.push(i);
|
|
2401
2408
|
const slopes = [];
|
|
2402
2409
|
for (let p2 = 0; p2 < idx.length; p2++) {
|
|
2403
|
-
for (let
|
|
2404
|
-
const dv =
|
|
2410
|
+
for (let q2 = p2 + 1; q2 < idx.length; q2++) {
|
|
2411
|
+
const dv = v3[idx[q2]] - v3[idx[p2]];
|
|
2405
2412
|
if (Math.abs(dv) < 1e-12) continue;
|
|
2406
|
-
slopes.push((pos[idx[
|
|
2413
|
+
slopes.push((pos[idx[q2]] - pos[idx[p2]]) / dv);
|
|
2407
2414
|
}
|
|
2408
2415
|
}
|
|
2409
2416
|
if (slopes.length < 3) return null;
|
|
2410
|
-
const
|
|
2411
|
-
if (!Number.isFinite(
|
|
2412
|
-
const
|
|
2413
|
-
return Number.isFinite(
|
|
2417
|
+
const b2 = median(slopes);
|
|
2418
|
+
if (!Number.isFinite(b2) || Math.abs(b2) < 1e-12) return null;
|
|
2419
|
+
const a2 = median(pos.map((y4, i) => y4 - b2 * v3[i]));
|
|
2420
|
+
return Number.isFinite(a2) ? { a: a2, b: b2 } : null;
|
|
2414
2421
|
}
|
|
2415
2422
|
function censusValuePlacement(container, data) {
|
|
2416
2423
|
try {
|
|
@@ -2427,40 +2434,40 @@ function censusValuePlacement(container, data) {
|
|
|
2427
2434
|
if (!/^\d+$/.test(raw)) continue;
|
|
2428
2435
|
const i = +raw;
|
|
2429
2436
|
const row = rows[i];
|
|
2430
|
-
const
|
|
2431
|
-
if (!row || !Number.isFinite(
|
|
2437
|
+
const x3 = num(el, "cx"), y4 = num(el, "cy"), r = num(el, "r");
|
|
2438
|
+
if (!row || !Number.isFinite(x3) || !Number.isFinite(y4) || !(r > 0)) continue;
|
|
2432
2439
|
seen.add(i);
|
|
2433
|
-
dots.push({ row, x:
|
|
2440
|
+
dots.push({ row, x: x3, y: y4, r });
|
|
2434
2441
|
}
|
|
2435
2442
|
if (dots.length < MIN_MARKS2 || seen.size < dots.length * 0.9) return EMPTY4;
|
|
2436
2443
|
let best = null;
|
|
2437
2444
|
for (let c2 = 0; c2 < columns.length; c2++) {
|
|
2438
2445
|
if (/^__.*__$/.test(String(columns[c2]?.name ?? ""))) continue;
|
|
2439
2446
|
const vals = dots.map((d2) => {
|
|
2440
|
-
const
|
|
2441
|
-
return
|
|
2447
|
+
const v3 = d2.row[c2];
|
|
2448
|
+
return v3 === null || v3 === void 0 || v3 === "" ? NaN : typeof v3 === "number" ? v3 : Number(v3);
|
|
2442
2449
|
});
|
|
2443
2450
|
const finite = vals.filter(Number.isFinite);
|
|
2444
2451
|
if (finite.length < dots.length * 0.9 || new Set(finite).size < 8) continue;
|
|
2445
|
-
const logs = finite.every((
|
|
2452
|
+
const logs = finite.every((v3) => v3 > 0) ? [false, true] : [false];
|
|
2446
2453
|
for (const log of logs) {
|
|
2447
2454
|
for (const axis of ["x", "y"]) {
|
|
2448
2455
|
const keep = [];
|
|
2449
|
-
const
|
|
2456
|
+
const v3 = [], pos = [];
|
|
2450
2457
|
dots.forEach((d2, k3) => {
|
|
2451
2458
|
if (!Number.isFinite(vals[k3])) return;
|
|
2452
2459
|
keep.push(k3);
|
|
2453
|
-
|
|
2460
|
+
v3.push(log ? Math.log10(vals[k3]) : vals[k3]);
|
|
2454
2461
|
pos.push(axis === "x" ? d2.x : d2.y);
|
|
2455
2462
|
});
|
|
2456
|
-
const line = robustLine(
|
|
2463
|
+
const line = robustLine(v3, pos);
|
|
2457
2464
|
if (!line) continue;
|
|
2458
2465
|
const lo = Math.min(...pos), hi = Math.max(...pos);
|
|
2459
2466
|
if (hi - lo < MIN_AXIS_SPAN_PX) continue;
|
|
2460
2467
|
const mean = pos.reduce((s, p2) => s + p2, 0) / pos.length;
|
|
2461
2468
|
let ssRes = 0, ssTot = 0;
|
|
2462
2469
|
const res = pos.map((p2, k3) => {
|
|
2463
|
-
const e = p2 - (line.a + line.b *
|
|
2470
|
+
const e = p2 - (line.a + line.b * v3[k3]);
|
|
2464
2471
|
ssRes += e * e;
|
|
2465
2472
|
ssTot += (p2 - mean) ** 2;
|
|
2466
2473
|
return e;
|
|
@@ -2469,8 +2476,8 @@ function censusValuePlacement(container, data) {
|
|
|
2469
2476
|
const fit = 1 - ssRes / ssTot;
|
|
2470
2477
|
if (fit >= VALUE_AXIS_MIN_FIT && (!best || fit > best.fit)) {
|
|
2471
2478
|
const full = new Array(dots.length).fill(NaN);
|
|
2472
|
-
keep.forEach((k3,
|
|
2473
|
-
full[k3] = res[
|
|
2479
|
+
keep.forEach((k3, j4) => {
|
|
2480
|
+
full[k3] = res[j4];
|
|
2474
2481
|
});
|
|
2475
2482
|
best = { col: c2, axis, fit, res: full, log };
|
|
2476
2483
|
}
|
|
@@ -2517,16 +2524,16 @@ function needsScroll(contentPx, viewportPx, slackPx = SCROLL_SLACK_PX) {
|
|
|
2517
2524
|
}
|
|
2518
2525
|
function contentExtentOf(boxes) {
|
|
2519
2526
|
if (!boxes || boxes.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2520
|
-
const usable = boxes.filter((
|
|
2527
|
+
const usable = boxes.filter((b2) => b2 && isFinite(b2.right) && isFinite(b2.bottom) && (b2.right > 0 || b2.bottom > 0));
|
|
2521
2528
|
if (usable.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2522
|
-
const inFlow = usable.filter((
|
|
2529
|
+
const inFlow = usable.filter((b2) => !b2.floating);
|
|
2523
2530
|
const counted = inFlow.length > 0 ? inFlow : usable;
|
|
2524
|
-
let
|
|
2525
|
-
for (const
|
|
2526
|
-
if (
|
|
2527
|
-
if (
|
|
2531
|
+
let w2 = 0, h3 = 0;
|
|
2532
|
+
for (const b2 of counted) {
|
|
2533
|
+
if (b2.right > w2) w2 = b2.right;
|
|
2534
|
+
if (b2.bottom > h3) h3 = b2.bottom;
|
|
2528
2535
|
}
|
|
2529
|
-
return { w:
|
|
2536
|
+
return { w: w2, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
|
|
2530
2537
|
}
|
|
2531
2538
|
function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL_SLACK_PX) {
|
|
2532
2539
|
return {
|
|
@@ -2536,8 +2543,8 @@ function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL
|
|
|
2536
2543
|
}
|
|
2537
2544
|
var FIT_CONTENT_SELECTOR = "text, .d3-mark, .d3-legend-mark";
|
|
2538
2545
|
var PHANTOM_FRACTION = 0.95;
|
|
2539
|
-
function isPhantomBox(
|
|
2540
|
-
return
|
|
2546
|
+
function isPhantomBox(w2, h3, refW, refH) {
|
|
2547
|
+
return w2 > refW * PHANTOM_FRACTION || h3 > refH * PHANTOM_FRACTION;
|
|
2541
2548
|
}
|
|
2542
2549
|
var MAX_FRAME_GROW_FACTOR = 20;
|
|
2543
2550
|
function planFrameGrow(inkBottomPx, elHeightPx, viewBoxH, ctmScale, slackPx = SCROLL_SLACK_PX, maxFactor = MAX_FRAME_GROW_FACTOR) {
|
|
@@ -2558,8 +2565,8 @@ var AXIS_PIN_TRACK_REACH_PX = 12;
|
|
|
2558
2565
|
function isHorizontalLabelRow(boxes) {
|
|
2559
2566
|
if (!boxes || boxes.length < 2) return false;
|
|
2560
2567
|
let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
|
|
2561
|
-
for (const
|
|
2562
|
-
const cx = (
|
|
2568
|
+
for (const b2 of boxes) {
|
|
2569
|
+
const cx = (b2.left + b2.right) / 2, cy = (b2.top + b2.bottom) / 2;
|
|
2563
2570
|
if (!isFinite(cx) || !isFinite(cy)) return false;
|
|
2564
2571
|
if (cx < minX) minX = cx;
|
|
2565
2572
|
if (cx > maxX) maxX = cx;
|
|
@@ -2571,10 +2578,10 @@ function isHorizontalLabelRow(boxes) {
|
|
|
2571
2578
|
function labelBand(boxes, tracks = [], pad = AXIS_PIN_BAND_PAD_PX, trackReach = AXIS_PIN_TRACK_REACH_PX) {
|
|
2572
2579
|
if (!boxes || boxes.length === 0) return null;
|
|
2573
2580
|
let top = Infinity, bottom = -Infinity;
|
|
2574
|
-
for (const
|
|
2575
|
-
if (!isFinite(
|
|
2576
|
-
if (
|
|
2577
|
-
if (
|
|
2581
|
+
for (const b2 of boxes) {
|
|
2582
|
+
if (!isFinite(b2.top) || !isFinite(b2.bottom)) continue;
|
|
2583
|
+
if (b2.top < top) top = b2.top;
|
|
2584
|
+
if (b2.bottom > bottom) bottom = b2.bottom;
|
|
2578
2585
|
}
|
|
2579
2586
|
if (!isFinite(top) || !isFinite(bottom) || bottom <= top) return null;
|
|
2580
2587
|
for (const t of tracks || []) {
|
|
@@ -2612,9 +2619,9 @@ function axisPinPlacement(band, scrollTop, viewportH) {
|
|
|
2612
2619
|
|
|
2613
2620
|
// src/fitDom.ts
|
|
2614
2621
|
var FIT_WALK_CAP = 8e3;
|
|
2615
|
-
function ctmScaleOf(
|
|
2616
|
-
if (!
|
|
2617
|
-
const s = Math.hypot(
|
|
2622
|
+
function ctmScaleOf(m2) {
|
|
2623
|
+
if (!m2) return 0;
|
|
2624
|
+
const s = Math.hypot(m2.a, m2.b);
|
|
2618
2625
|
return isFinite(s) && s > 0 ? s : 0;
|
|
2619
2626
|
}
|
|
2620
2627
|
function svgInkReach(svg) {
|
|
@@ -2689,7 +2696,7 @@ function fitReadingFor(lane, c2, slackPx = SCROLL_SLACK_PX, inkOf) {
|
|
|
2689
2696
|
overflowsY: needsScroll(contentH, viewH, slackPx),
|
|
2690
2697
|
extentSource: extent.source,
|
|
2691
2698
|
boxes: boxes.length,
|
|
2692
|
-
floating: boxes.filter((
|
|
2699
|
+
floating: boxes.filter((b2) => b2.floating).length,
|
|
2693
2700
|
scrollW: c2.scrollWidth,
|
|
2694
2701
|
scrollH: c2.scrollHeight
|
|
2695
2702
|
};
|
|
@@ -2700,14 +2707,14 @@ var SVG_NS2 = "http://www.w3.org/2000/svg";
|
|
|
2700
2707
|
var AXIS_PIN_MAX_CARRIED = 12;
|
|
2701
2708
|
function unpinScrolledAxis(container) {
|
|
2702
2709
|
if (!container) return;
|
|
2703
|
-
const
|
|
2704
|
-
if (!
|
|
2710
|
+
const st = container[CONTAINER_SLOT_AXIS_PIN];
|
|
2711
|
+
if (!st) return;
|
|
2705
2712
|
try {
|
|
2706
|
-
container.removeEventListener("scroll",
|
|
2713
|
+
container.removeEventListener("scroll", st.onScroll);
|
|
2707
2714
|
} catch {
|
|
2708
2715
|
}
|
|
2709
2716
|
try {
|
|
2710
|
-
if (
|
|
2717
|
+
if (st.overlay.parentNode) st.overlay.parentNode.removeChild(st.overlay);
|
|
2711
2718
|
} catch {
|
|
2712
2719
|
}
|
|
2713
2720
|
try {
|
|
@@ -2730,8 +2737,8 @@ function backdropFill(svg, container, view, svgBox) {
|
|
|
2730
2737
|
for (let i = 0; i < rects.length && i < 6; i++) {
|
|
2731
2738
|
const r = rects[i];
|
|
2732
2739
|
if (r.closest(".d3-mark")) continue;
|
|
2733
|
-
const
|
|
2734
|
-
if (
|
|
2740
|
+
const b2 = r.getBoundingClientRect();
|
|
2741
|
+
if (b2.width >= svgBox.width * 0.9 && b2.height >= svgBox.height * 0.9) {
|
|
2735
2742
|
let fill = "";
|
|
2736
2743
|
try {
|
|
2737
2744
|
fill = view.getComputedStyle(r).fill || "";
|
|
@@ -2756,10 +2763,10 @@ function backdropFill(svg, container, view, svgBox) {
|
|
|
2756
2763
|
}
|
|
2757
2764
|
function cloneWithChain(el, svg, root) {
|
|
2758
2765
|
const chain = [];
|
|
2759
|
-
let
|
|
2760
|
-
while (
|
|
2761
|
-
chain.unshift(
|
|
2762
|
-
|
|
2766
|
+
let n2 = el.parentElement;
|
|
2767
|
+
while (n2 && n2 !== svg) {
|
|
2768
|
+
chain.unshift(n2);
|
|
2769
|
+
n2 = n2.parentElement;
|
|
2763
2770
|
}
|
|
2764
2771
|
let parent = root;
|
|
2765
2772
|
for (const anc of chain) {
|
|
@@ -2780,8 +2787,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2780
2787
|
const view = doc && doc.defaultView || globalThis;
|
|
2781
2788
|
const svgBox = svg.getBoundingClientRect();
|
|
2782
2789
|
if (!(svgBox.width > 0) || !(svgBox.height > 0)) return noPin("unmeasurable");
|
|
2783
|
-
const
|
|
2784
|
-
if (!
|
|
2790
|
+
const m2 = typeof svg.getScreenCTM === "function" ? svg.getScreenCTM() : null;
|
|
2791
|
+
if (!m2 || !(m2.a > 0) || !(m2.d > 0) || !isFinite(m2.e) || !isFinite(m2.f)) return noPin("no-ctm");
|
|
2785
2792
|
const viewportH = container.clientHeight;
|
|
2786
2793
|
if (!(viewportH > 0)) return noPin("unmeasurable");
|
|
2787
2794
|
const rel = (r) => ({ left: r.left - svgBox.left, top: r.top - svgBox.top, right: r.right - svgBox.left, bottom: r.bottom - svgBox.top });
|
|
@@ -2835,14 +2842,14 @@ function pinScrolledAxis(container, svg) {
|
|
|
2835
2842
|
if (r.top >= band.top && r.bottom <= band.bottom) carried.push(t);
|
|
2836
2843
|
}
|
|
2837
2844
|
const pinSvg = doc.createElementNS(SVG_NS2, "svg");
|
|
2838
|
-
for (const
|
|
2839
|
-
const
|
|
2840
|
-
if (
|
|
2845
|
+
for (const a2 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
|
|
2846
|
+
const v3 = svg.getAttribute(a2);
|
|
2847
|
+
if (v3) pinSvg.setAttribute(a2, v3);
|
|
2841
2848
|
}
|
|
2842
2849
|
const styles = svg.querySelectorAll("style");
|
|
2843
2850
|
for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
|
|
2844
|
-
const vbX = (svgBox.left -
|
|
2845
|
-
const vbW = svgBox.width /
|
|
2851
|
+
const vbX = (svgBox.left - m2.e) / m2.a, vbY = (svgBox.top + band.top - m2.f) / m2.d;
|
|
2852
|
+
const vbW = svgBox.width / m2.a, vbH = bandPx / m2.d;
|
|
2846
2853
|
pinSvg.setAttribute("viewBox", `${vbX} ${vbY} ${vbW} ${vbH}`);
|
|
2847
2854
|
pinSvg.setAttribute("preserveAspectRatio", "none");
|
|
2848
2855
|
pinSvg.setAttribute("width", String(svgBox.width));
|
|
@@ -2861,17 +2868,17 @@ function pinScrolledAxis(container, svg) {
|
|
|
2861
2868
|
for (const t of carried) cloneWithChain(t, svg, pinSvg);
|
|
2862
2869
|
const overlay = doc.createElement("div");
|
|
2863
2870
|
overlay.setAttribute("data-bic-axis-pin", "1");
|
|
2864
|
-
const
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2871
|
+
const o2 = overlay.style;
|
|
2872
|
+
o2.position = "absolute";
|
|
2873
|
+
o2.margin = "0";
|
|
2874
|
+
o2.padding = "0";
|
|
2875
|
+
o2.border = "0";
|
|
2876
|
+
o2.width = `${svgBox.width}px`;
|
|
2877
|
+
o2.height = `${bandPx}px`;
|
|
2878
|
+
o2.overflow = "hidden";
|
|
2879
|
+
o2.pointerEvents = "none";
|
|
2880
|
+
o2.zIndex = "3";
|
|
2881
|
+
o2.display = "none";
|
|
2875
2882
|
overlay.appendChild(pinSvg);
|
|
2876
2883
|
try {
|
|
2877
2884
|
const cs = view.getComputedStyle(container);
|
|
@@ -2885,15 +2892,15 @@ function pinScrolledAxis(container, svg) {
|
|
|
2885
2892
|
const svgTop = svgBox.top - cRect.top - container.clientTop + container.scrollTop;
|
|
2886
2893
|
const contentBand = { top: svgTop + band.top, bottom: svgTop + band.bottom };
|
|
2887
2894
|
const place = () => {
|
|
2888
|
-
const
|
|
2889
|
-
const edge2 = axisPinPlacement(contentBand,
|
|
2895
|
+
const st = container.scrollTop, vh = container.clientHeight;
|
|
2896
|
+
const edge2 = axisPinPlacement(contentBand, st, vh);
|
|
2890
2897
|
if (!edge2) {
|
|
2891
|
-
|
|
2898
|
+
o2.display = "none";
|
|
2892
2899
|
return null;
|
|
2893
2900
|
}
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2901
|
+
o2.display = "block";
|
|
2902
|
+
o2.left = `${svgLeft}px`;
|
|
2903
|
+
o2.top = `${edge2 === "top" ? st : st + vh - bandPx}px`;
|
|
2897
2904
|
return edge2;
|
|
2898
2905
|
};
|
|
2899
2906
|
const onScroll = () => {
|
|
@@ -2970,8 +2977,8 @@ function fitRenderedChart(container, opts = {}) {
|
|
|
2970
2977
|
if (plan.grow) {
|
|
2971
2978
|
svg.setAttribute("height", String(plan.heightPx));
|
|
2972
2979
|
if (vb > 0) {
|
|
2973
|
-
const
|
|
2974
|
-
svg.setAttribute("viewBox", `${
|
|
2980
|
+
const b2 = svg.viewBox.baseVal;
|
|
2981
|
+
svg.setAttribute("viewBox", `${b2.x} ${b2.y} ${b2.width} ${plan.viewBoxH}`);
|
|
2975
2982
|
}
|
|
2976
2983
|
result.grew = true;
|
|
2977
2984
|
}
|
|
@@ -3016,8 +3023,8 @@ function fitRenderedChart(container, opts = {}) {
|
|
|
3016
3023
|
function parseRGBA(c2) {
|
|
3017
3024
|
if (typeof c2 !== "string") return null;
|
|
3018
3025
|
const s = c2.trim();
|
|
3019
|
-
const
|
|
3020
|
-
if (
|
|
3026
|
+
const m2 = s.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/i);
|
|
3027
|
+
if (m2) return [parseFloat(m2[1]), parseFloat(m2[2]), parseFloat(m2[3]), m2[4] !== void 0 ? parseFloat(m2[4]) : 1];
|
|
3021
3028
|
let h3 = s.replace(/^#/, "");
|
|
3022
3029
|
if (h3.length === 3) h3 = h3.split("").map((ch) => ch + ch).join("");
|
|
3023
3030
|
if (h3.length === 6 && /^[0-9a-fA-F]{6}$/.test(h3)) {
|
|
@@ -3032,8 +3039,8 @@ var WHITE_TEXT_BG_LUM = 0.5;
|
|
|
3032
3039
|
var PILL_MIN_ALPHA = 0.05;
|
|
3033
3040
|
var PILL_OPAQUE_ALPHA = 0.85;
|
|
3034
3041
|
var PAGE_MATCH_TOLERANCE = 2;
|
|
3035
|
-
function isPillBackdropAlpha(
|
|
3036
|
-
return
|
|
3042
|
+
function isPillBackdropAlpha(a2) {
|
|
3043
|
+
return a2 >= PILL_MIN_ALPHA && a2 < PILL_OPAQUE_ALPHA;
|
|
3037
3044
|
}
|
|
3038
3045
|
var PILL_MIN_COVERAGE = 0.6;
|
|
3039
3046
|
function pillBacksGlyph(overlapArea, glyphArea) {
|
|
@@ -3061,16 +3068,16 @@ function toRGBA(c2) {
|
|
|
3061
3068
|
return parseRGBA(c2);
|
|
3062
3069
|
}
|
|
3063
3070
|
function compositeOver(fg, bg) {
|
|
3064
|
-
const
|
|
3071
|
+
const a2 = Math.max(0, Math.min(1, fg[3]));
|
|
3065
3072
|
return [
|
|
3066
|
-
Math.round(fg[0] *
|
|
3067
|
-
Math.round(fg[1] *
|
|
3068
|
-
Math.round(fg[2] *
|
|
3073
|
+
Math.round(fg[0] * a2 + bg[0] * (1 - a2)),
|
|
3074
|
+
Math.round(fg[1] * a2 + bg[1] * (1 - a2)),
|
|
3075
|
+
Math.round(fg[2] * a2 + bg[2] * (1 - a2))
|
|
3069
3076
|
];
|
|
3070
3077
|
}
|
|
3071
3078
|
function relativeLuminance(rgb) {
|
|
3072
|
-
const lin = rgb.map((
|
|
3073
|
-
const s =
|
|
3079
|
+
const lin = rgb.map((v3) => {
|
|
3080
|
+
const s = v3 / 255;
|
|
3074
3081
|
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
3075
3082
|
});
|
|
3076
3083
|
return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
|
|
@@ -3104,23 +3111,23 @@ function decideLabelColor(textColor, fill, fillOpacity, pageBg, minContrast = MI
|
|
|
3104
3111
|
return useLight ? { fix: true, color: LIGHT_TEXT, reason: "fixed-light" } : { fix: true, color: DARK_TEXT, reason: "fixed-dark" };
|
|
3105
3112
|
}
|
|
3106
3113
|
var GLYPH_SAMPLE_N = 3;
|
|
3107
|
-
function glyphSampleGrid(box,
|
|
3114
|
+
function glyphSampleGrid(box, n2 = GLYPH_SAMPLE_N) {
|
|
3108
3115
|
const out = [];
|
|
3109
|
-
if (!box || !(box.width > 0) || !(box.height > 0) || !(
|
|
3110
|
-
const k3 = Math.floor(
|
|
3116
|
+
if (!box || !(box.width > 0) || !(box.height > 0) || !(n2 >= 1)) return out;
|
|
3117
|
+
const k3 = Math.floor(n2);
|
|
3111
3118
|
for (let i = 0; i < k3; i++) {
|
|
3112
|
-
for (let
|
|
3119
|
+
for (let j4 = 0; j4 < k3; j4++) {
|
|
3113
3120
|
out.push({
|
|
3114
3121
|
x: box.left + box.width * (i + 0.5) / k3,
|
|
3115
|
-
y: box.top + box.height * (
|
|
3122
|
+
y: box.top + box.height * (j4 + 0.5) / k3
|
|
3116
3123
|
});
|
|
3117
3124
|
}
|
|
3118
3125
|
}
|
|
3119
3126
|
return out;
|
|
3120
3127
|
}
|
|
3121
|
-
function clamp01(
|
|
3122
|
-
if (typeof
|
|
3123
|
-
return Math.max(0, Math.min(1,
|
|
3128
|
+
function clamp01(v3) {
|
|
3129
|
+
if (typeof v3 !== "number" || !isFinite(v3)) return 1;
|
|
3130
|
+
return Math.max(0, Math.min(1, v3));
|
|
3124
3131
|
}
|
|
3125
3132
|
function hexToRGB(hex2) {
|
|
3126
3133
|
const p2 = toRGBA(hex2);
|
|
@@ -3135,11 +3142,11 @@ function backedSamples(el, pts) {
|
|
|
3135
3142
|
try {
|
|
3136
3143
|
const ge2 = el;
|
|
3137
3144
|
if (typeof ge2.isPointInFill !== "function" || typeof ge2.getScreenCTM !== "function") return null;
|
|
3138
|
-
const
|
|
3145
|
+
const m2 = ge2.getScreenCTM();
|
|
3139
3146
|
const svg = ge2.ownerSVGElement;
|
|
3140
|
-
if (!
|
|
3147
|
+
if (!m2 || !svg || typeof svg.createSVGPoint !== "function") return null;
|
|
3141
3148
|
if (pts.length === 0) return null;
|
|
3142
|
-
const inv =
|
|
3149
|
+
const inv = m2.inverse();
|
|
3143
3150
|
const hit = [];
|
|
3144
3151
|
for (let i = 0; i < pts.length; i++) {
|
|
3145
3152
|
const p2 = svg.createSVGPoint();
|
|
@@ -3155,9 +3162,9 @@ function backedSamples(el, pts) {
|
|
|
3155
3162
|
var DOC_POSITION_FOLLOWING = 4;
|
|
3156
3163
|
function paintRoot(el, container) {
|
|
3157
3164
|
let root = null;
|
|
3158
|
-
for (let
|
|
3159
|
-
if (String(
|
|
3160
|
-
if (
|
|
3165
|
+
for (let n2 = el.parentElement; n2; n2 = n2.parentElement) {
|
|
3166
|
+
if (String(n2.tagName || "").toLowerCase() === "svg") root = n2;
|
|
3167
|
+
if (n2 === container) break;
|
|
3161
3168
|
}
|
|
3162
3169
|
return root;
|
|
3163
3170
|
}
|
|
@@ -3236,31 +3243,31 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
3236
3243
|
const glyphArea = tr.width * tr.height;
|
|
3237
3244
|
const txRoot = paintRoot(tx, container);
|
|
3238
3245
|
let over = 0;
|
|
3239
|
-
const boxed = rects.map((mk) => ({ mk, ov: ovArea(mk.r) })).filter((
|
|
3240
|
-
if (!(
|
|
3241
|
-
if (drawnBeneath(
|
|
3242
|
-
if (effAlpha(
|
|
3246
|
+
const boxed = rects.map((mk) => ({ mk, ov: ovArea(mk.r) })).filter((x3) => {
|
|
3247
|
+
if (!(x3.ov > 0)) return false;
|
|
3248
|
+
if (drawnBeneath(x3.mk, tx, txRoot)) return true;
|
|
3249
|
+
if (effAlpha(x3.mk) >= PILL_MIN_ALPHA) over++;
|
|
3243
3250
|
return false;
|
|
3244
3251
|
});
|
|
3245
3252
|
if (over > 0) report.paintedOver++;
|
|
3246
3253
|
const pts = glyphSampleGrid({ left: tr.left, top: tr.top, width: tr.width, height: tr.height });
|
|
3247
3254
|
const painted = pts.map(() => false);
|
|
3248
3255
|
let unmeasured = 0;
|
|
3249
|
-
const under = boxed.map((
|
|
3250
|
-
const mask = backedSamples(
|
|
3256
|
+
const under = boxed.map((x3) => {
|
|
3257
|
+
const mask = backedSamples(x3.mk.el, pts);
|
|
3251
3258
|
if (mask === null) {
|
|
3252
3259
|
unmeasured++;
|
|
3253
|
-
return
|
|
3260
|
+
return x3;
|
|
3254
3261
|
}
|
|
3255
3262
|
let inside = 0;
|
|
3256
|
-
const paints = effAlpha(
|
|
3263
|
+
const paints = effAlpha(x3.mk) >= PILL_MIN_ALPHA;
|
|
3257
3264
|
for (let i = 0; i < mask.length; i++) {
|
|
3258
3265
|
if (!mask[i]) continue;
|
|
3259
3266
|
inside++;
|
|
3260
3267
|
if (paints) painted[i] = true;
|
|
3261
3268
|
}
|
|
3262
|
-
return { mk:
|
|
3263
|
-
}).filter((
|
|
3269
|
+
return { mk: x3.mk, ov: glyphArea * (inside / mask.length) };
|
|
3270
|
+
}).filter((x3) => x3.ov > 0);
|
|
3264
3271
|
if (under.length === 0 && boxed.length > 0) report.offFill++;
|
|
3265
3272
|
if (under.length === 0) continue;
|
|
3266
3273
|
if (unmeasured === 0 && pts.length > 0) {
|
|
@@ -3272,10 +3279,10 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
3272
3279
|
}
|
|
3273
3280
|
}
|
|
3274
3281
|
report.scanned++;
|
|
3275
|
-
const opaqueUnder = under.filter((
|
|
3276
|
-
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((
|
|
3282
|
+
const opaqueUnder = under.filter((x3) => effAlpha(x3.mk) >= PILL_OPAQUE_ALPHA);
|
|
3283
|
+
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a2, b2) => b2.ov > a2.ov || b2.ov === a2.ov && b2.mk.ord > a2.mk.ord ? b2 : a2);
|
|
3277
3284
|
const cell = cellEntry.mk;
|
|
3278
|
-
const pill = under.find((
|
|
3285
|
+
const pill = under.find((x3) => x3.mk !== cell && isPillBackdropAlpha(effAlpha(x3.mk)) && x3.mk.ord > cell.ord && pillBacksGlyph(x3.ov, glyphArea))?.mk;
|
|
3279
3286
|
const cellRGBA = toRGBA(cell.fill);
|
|
3280
3287
|
let bgRGB = cellRGBA ? compositeOver([cellRGBA[0], cellRGBA[1], cellRGBA[2], cellRGBA[3] * cell.op], pageRGB) : pageRGB;
|
|
3281
3288
|
if (pill) {
|
|
@@ -3310,9 +3317,9 @@ function isInvalidSentinelError(text) {
|
|
|
3310
3317
|
}
|
|
3311
3318
|
function invalidSentinelReason(text, max = 240) {
|
|
3312
3319
|
if (!text) return "";
|
|
3313
|
-
const
|
|
3314
|
-
if (!
|
|
3315
|
-
const reason =
|
|
3320
|
+
const m2 = /\bINVALID\s*:\s*([^\r\n]*)/.exec(text);
|
|
3321
|
+
if (!m2) return "";
|
|
3322
|
+
const reason = m2[1].trim();
|
|
3316
3323
|
const cap = Math.max(0, Math.floor(max));
|
|
3317
3324
|
if (reason.length <= cap) return reason;
|
|
3318
3325
|
return cap <= 3 ? reason.slice(0, cap) : reason.slice(0, cap - 3).trimEnd() + "...";
|
|
@@ -3336,7 +3343,7 @@ function noopViewStateProvider() {
|
|
|
3336
3343
|
return { load: () => ({}), save: () => {
|
|
3337
3344
|
} };
|
|
3338
3345
|
}
|
|
3339
|
-
var parseRowIdxs = (s) => (s || "").split(",").map((
|
|
3346
|
+
var parseRowIdxs = (s) => (s || "").split(",").map((x3) => parseInt(x3, 10)).filter((n2) => Number.isFinite(n2));
|
|
3340
3347
|
function assembleD3(base, ...plugins) {
|
|
3341
3348
|
return Object.assign({}, base, ...plugins);
|
|
3342
3349
|
}
|
|
@@ -3374,10 +3381,10 @@ function requiredD3Plugins(code) {
|
|
|
3374
3381
|
const pkg = D3_PLUGIN_PACKAGES[name];
|
|
3375
3382
|
if (pkg) out.add(pkg);
|
|
3376
3383
|
};
|
|
3377
|
-
for (const
|
|
3378
|
-
for (const
|
|
3379
|
-
for (const
|
|
3380
|
-
for (const part of
|
|
3384
|
+
for (const m2 of body.matchAll(/\bd3\s*\.\s*(\w+)/g)) add(m2[1]);
|
|
3385
|
+
for (const m2 of body.matchAll(/\bd3\s*\[\s*['"](\w+)['"]\s*\]/g)) add(m2[1]);
|
|
3386
|
+
for (const m2 of body.matchAll(/\{([^{}]*)\}\s*=\s*d3\b/g)) {
|
|
3387
|
+
for (const part of m2[1].split(",")) add(part.split(":")[0].trim());
|
|
3381
3388
|
}
|
|
3382
3389
|
return [...out].sort();
|
|
3383
3390
|
}
|
|
@@ -3393,8 +3400,8 @@ function explainRenderFailure(err, d3) {
|
|
|
3393
3400
|
"[@bicharts/chart-host] this chart draws its diagram with Mermaid, which it reaches as d3.mermaid.render(...), and the d3 you passed has no mermaid on it \u2014 this host did not load the library. A host supplies it exactly the way the other plugins are supplied: hand createChartHost ONE d3 that carries it, the SAME d3 every chart gets \u2014 npm install mermaid then import * as d3base from 'd3'; import mermaid from 'mermaid'; import { assembleD3 } from '@bicharts/chart-host'; const d3 = assembleD3(d3base, { mermaid }); (an ES-module d3 namespace is frozen, so assigning onto it throws) Original error: " + msg
|
|
3394
3401
|
);
|
|
3395
3402
|
}
|
|
3396
|
-
const
|
|
3397
|
-
const name =
|
|
3403
|
+
const m2 = /d3\.(\w+) is not a function|(\w+) is not a function/.exec(msg);
|
|
3404
|
+
const name = m2?.[1] ?? m2?.[2] ?? "";
|
|
3398
3405
|
const pkg = D3_PLUGIN_PACKAGES[name];
|
|
3399
3406
|
if (pkg) {
|
|
3400
3407
|
return new Error(
|
|
@@ -3430,7 +3437,7 @@ function compileRenderFn(code, win, doc, d3) {
|
|
|
3430
3437
|
return fn;
|
|
3431
3438
|
}
|
|
3432
3439
|
var ASYNC_RENDER_TIMEOUT_MS = 15e3;
|
|
3433
|
-
var isThenable = (
|
|
3440
|
+
var isThenable = (v3) => !!v3 && (typeof v3 === "object" || typeof v3 === "function") && typeof v3.then === "function";
|
|
3434
3441
|
function createChartHost(container, config) {
|
|
3435
3442
|
const doc = container.ownerDocument;
|
|
3436
3443
|
const win = doc?.defaultView ?? globalThis;
|
|
@@ -3438,7 +3445,7 @@ function createChartHost(container, config) {
|
|
|
3438
3445
|
let data = config.data;
|
|
3439
3446
|
{
|
|
3440
3447
|
const stamped = config.data?.meta?.hostContract;
|
|
3441
|
-
const major = (
|
|
3448
|
+
const major = (v3) => (v3 || "").split(".")[0];
|
|
3442
3449
|
if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
|
|
3443
3450
|
try {
|
|
3444
3451
|
(win?.console ?? console)?.warn(
|
|
@@ -3492,9 +3499,9 @@ function createChartHost(container, config) {
|
|
|
3492
3499
|
const ensureAffordanceStyles = () => {
|
|
3493
3500
|
try {
|
|
3494
3501
|
if (!doc || doc.getElementById("bic-chart-host-affordances")) return;
|
|
3495
|
-
const
|
|
3496
|
-
|
|
3497
|
-
|
|
3502
|
+
const st = doc.createElement("style");
|
|
3503
|
+
st.id = "bic-chart-host-affordances";
|
|
3504
|
+
st.textContent = `
|
|
3498
3505
|
/* TYPOGRAPHY FIREWALL. Generated charts set font-size but almost never line-height or
|
|
3499
3506
|
letter-spacing, so they INHERIT whatever the host page cascades in. A page with
|
|
3500
3507
|
\`:root { font: 18px/145% }\` (the stock Vite template does exactly this) hands every
|
|
@@ -3543,7 +3550,7 @@ function createChartHost(container, config) {
|
|
|
3543
3550
|
font-weight: 700 !important;
|
|
3544
3551
|
text-decoration: underline !important;
|
|
3545
3552
|
}`;
|
|
3546
|
-
(doc.head || doc.documentElement)?.appendChild(
|
|
3553
|
+
(doc.head || doc.documentElement)?.appendChild(st);
|
|
3547
3554
|
} catch {
|
|
3548
3555
|
}
|
|
3549
3556
|
};
|
|
@@ -3559,10 +3566,10 @@ function createChartHost(container, config) {
|
|
|
3559
3566
|
if (active && tickStillDrawn) activeTickEl.classList?.add(ACTIVE_TICK_CLASS);
|
|
3560
3567
|
const wanted = new Set(sel ?? []);
|
|
3561
3568
|
const marks = container.querySelectorAll(`.${MARK_CLASS}[${ROW_IDX_ATTR}], .${LEGEND_MARK_CLASS}[${ROW_IDX_ATTR}]`);
|
|
3562
|
-
for (const
|
|
3563
|
-
const rows = parseRowIdxs(
|
|
3569
|
+
for (const m2 of Array.from(marks)) {
|
|
3570
|
+
const rows = parseRowIdxs(m2.getAttribute(ROW_IDX_ATTR));
|
|
3564
3571
|
const on = active && rows.some((r) => wanted.has(r));
|
|
3565
|
-
|
|
3572
|
+
m2.classList?.[on ? "add" : "remove"](MARK_SELECTED_CLASS);
|
|
3566
3573
|
}
|
|
3567
3574
|
} catch {
|
|
3568
3575
|
}
|
|
@@ -3861,10 +3868,10 @@ function toPayloadRows(rowMap, sourceRowIdxs) {
|
|
|
3861
3868
|
});
|
|
3862
3869
|
return sourceRowIdxs.map((s) => at3.get(s)).filter((k3) => k3 !== void 0);
|
|
3863
3870
|
}
|
|
3864
|
-
var sameRows = (
|
|
3865
|
-
if (
|
|
3866
|
-
const
|
|
3867
|
-
return
|
|
3871
|
+
var sameRows = (a2, b2) => {
|
|
3872
|
+
if (a2.length !== b2.length) return false;
|
|
3873
|
+
const x3 = a2.slice().sort((p2, q2) => p2 - q2), y4 = b2.slice().sort((p2, q2) => p2 - q2);
|
|
3874
|
+
return x3.every((v3, i) => v3 === y4[i]);
|
|
3868
3875
|
};
|
|
3869
3876
|
function syncMemberSelection(host, selection, id, highlight, incoming, rowMap) {
|
|
3870
3877
|
const mine = selection.sourceId === id && selection.rows.length > 0;
|
|
@@ -3899,12 +3906,12 @@ function createChartGroup(columns, rows, opts = {}) {
|
|
|
3899
3906
|
return forId;
|
|
3900
3907
|
};
|
|
3901
3908
|
const payloadFor = (sourceRowIdxs) => {
|
|
3902
|
-
const idxs = sourceRowIdxs ? sourceRowIdxs.slice() : table.map((
|
|
3909
|
+
const idxs = sourceRowIdxs ? sourceRowIdxs.slice() : table.map((_4, i) => i);
|
|
3903
3910
|
const subset = idxs.map((i) => table[i]);
|
|
3904
3911
|
const payload = buildRenderPayload(cols, subset, geo ?? void 0, point ?? void 0);
|
|
3905
3912
|
return { payload, rowMap: idxs };
|
|
3906
3913
|
};
|
|
3907
|
-
const memberPayload = (id,
|
|
3914
|
+
const memberPayload = (id, o2 = {}) => payloadFor(o2.respondsWith === "highlight" ? null : incomingFor(id, o2.filteredBy));
|
|
3908
3915
|
const group = {
|
|
3909
3916
|
get selection() {
|
|
3910
3917
|
return selection;
|
|
@@ -3926,11 +3933,11 @@ function createChartGroup(columns, rows, opts = {}) {
|
|
|
3926
3933
|
selection = { sourceId: null, rows: [] };
|
|
3927
3934
|
notify("clear");
|
|
3928
3935
|
},
|
|
3929
|
-
setSource(nextColumns, nextRows,
|
|
3936
|
+
setSource(nextColumns, nextRows, o2 = {}) {
|
|
3930
3937
|
cols = nextColumns;
|
|
3931
3938
|
table = nextRows;
|
|
3932
|
-
geo =
|
|
3933
|
-
point =
|
|
3939
|
+
geo = o2.geo ?? null;
|
|
3940
|
+
point = o2.point ?? null;
|
|
3934
3941
|
notify("source");
|
|
3935
3942
|
},
|
|
3936
3943
|
onChange(cb) {
|
|
@@ -3939,19 +3946,19 @@ function createChartGroup(columns, rows, opts = {}) {
|
|
|
3939
3946
|
subs.delete(cb);
|
|
3940
3947
|
};
|
|
3941
3948
|
},
|
|
3942
|
-
attach(id, host,
|
|
3943
|
-
const highlight =
|
|
3944
|
-
let rowMap = memberPayload(id,
|
|
3949
|
+
attach(id, host, o2 = {}) {
|
|
3950
|
+
const highlight = o2.respondsWith === "highlight";
|
|
3951
|
+
let rowMap = memberPayload(id, o2).rowMap;
|
|
3945
3952
|
const filterKey = (incoming) => highlight || !incoming ? "*" : incoming.join(",");
|
|
3946
|
-
let drawnUnder = filterKey(incomingFor(id,
|
|
3953
|
+
let drawnUnder = filterKey(incomingFor(id, o2.filteredBy));
|
|
3947
3954
|
const offHost = host.selection.onChange((payloadIdxs, source) => {
|
|
3948
3955
|
if (source === "host") return;
|
|
3949
3956
|
const sourceIdxs = toSourceRows(rowMap, payloadIdxs);
|
|
3950
3957
|
if (id) group.publish(id, sourceIdxs);
|
|
3951
|
-
|
|
3958
|
+
o2.onSelect?.(sourceIdxs);
|
|
3952
3959
|
});
|
|
3953
3960
|
const offGroup = group.onChange((sel, change) => {
|
|
3954
|
-
const incoming = incomingFor(id,
|
|
3961
|
+
const incoming = incomingFor(id, o2.filteredBy);
|
|
3955
3962
|
const key = filterKey(incoming);
|
|
3956
3963
|
if (change === "source" || key !== drawnUnder) {
|
|
3957
3964
|
const next = payloadFor(highlight ? null : incoming);
|
|
@@ -3975,7 +3982,7 @@ function createChartGroup(columns, rows, opts = {}) {
|
|
|
3975
3982
|
return member;
|
|
3976
3983
|
},
|
|
3977
3984
|
destroy() {
|
|
3978
|
-
for (const
|
|
3985
|
+
for (const m2 of Array.from(members)) m2.detach();
|
|
3979
3986
|
subs.clear();
|
|
3980
3987
|
}
|
|
3981
3988
|
};
|
|
@@ -4041,7 +4048,7 @@ export {
|
|
|
4041
4048
|
registerGeo,
|
|
4042
4049
|
registerGeoAsset,
|
|
4043
4050
|
clearGeoCache,
|
|
4044
|
-
|
|
4051
|
+
oe,
|
|
4045
4052
|
F2 as F,
|
|
4046
4053
|
L3,
|
|
4047
4054
|
Ve,
|