@bicharts/chart-host 0.6.37 → 0.6.39
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-CAMN42RW.mjs → chunk-XC527HDN.mjs} +288 -288
- package/dist/index.mjs +25 -25
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -22,13 +22,13 @@ var require_papaparse_min = __commonJS({
|
|
|
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 r2() {
|
|
24
24
|
var n = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : {};
|
|
25
|
-
var d2, s = !n.document && !!n.postMessage, a2 = n.IS_PAPA_WORKER || false, o2 = {}, h3 = 0,
|
|
25
|
+
var d2, s = !n.document && !!n.postMessage, a2 = n.IS_PAPA_WORKER || false, o2 = {}, h3 = 0, v2 = {};
|
|
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 = b4(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) {
|
|
@@ -41,7 +41,7 @@ var require_papaparse_min = __commonJS({
|
|
|
41
41
|
var i2 = this._partialLine + t, r4 = (this._partialLine = "", this._handle.parse(i2, this._baseIndex, !this._finished));
|
|
42
42
|
if (!this._handle.paused() && !this._handle.aborted()) {
|
|
43
43
|
t = r4.meta.cursor, i2 = (this._finished || (this._partialLine = i2.substring(t - this._baseIndex), this._baseIndex = t), r4 && r4.data && (this._rowCount += r4.data.length), this._finished || this._config.preview && this._rowCount >= this._config.preview);
|
|
44
|
-
if (a2) n.postMessage({ results: r4, workerId:
|
|
44
|
+
if (a2) n.postMessage({ results: r4, workerId: v2.WORKER_ID, finished: i2 });
|
|
45
45
|
else if (q2(this._config.chunk) && !e2) {
|
|
46
46
|
if (this._config.chunk(r4, this._handle), this._handle.paused() || this._handle.aborted()) return void (this._halted = true);
|
|
47
47
|
this._completeResults = r4 = void 0;
|
|
@@ -50,12 +50,12 @@ var require_papaparse_min = __commonJS({
|
|
|
50
50
|
}
|
|
51
51
|
this._halted = true;
|
|
52
52
|
}, this._sendError = function(e2) {
|
|
53
|
-
q2(this._config.error) ? this._config.error(e2) : a2 && this._config.error && n.postMessage({ workerId:
|
|
53
|
+
q2(this._config.error) ? this._config.error(e2) : a2 && this._config.error && n.postMessage({ workerId: v2.WORKER_ID, error: e2, finished: false });
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
function f4(e) {
|
|
57
57
|
var r4;
|
|
58
|
-
(e = e || {}).chunkSize || (e.chunkSize =
|
|
58
|
+
(e = e || {}).chunkSize || (e.chunkSize = v2.RemoteChunkSize), u2.call(this, e), this._nextChunk = s ? function() {
|
|
59
59
|
this._readChunk(), this._chunkLoaded();
|
|
60
60
|
} : function() {
|
|
61
61
|
this._readChunk();
|
|
@@ -85,7 +85,7 @@ var require_papaparse_min = __commonJS({
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
function l(e) {
|
|
88
|
-
(e = e || {}).chunkSize || (e.chunkSize =
|
|
88
|
+
(e = e || {}).chunkSize || (e.chunkSize = v2.LocalChunkSize), u2.call(this, e);
|
|
89
89
|
var i2, r4, n2 = "undefined" != typeof FileReader;
|
|
90
90
|
this.stream = function(e2) {
|
|
91
91
|
this._input = e2, r4 = e2.slice || e2.webkitSlice || e2.mozSlice, n2 ? ((i2 = new FileReader()).onload = y4(this._chunkLoaded, this), i2.onerror = y4(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk();
|
|
@@ -142,7 +142,7 @@ var require_papaparse_min = __commonJS({
|
|
|
142
142
|
return "greedy" === m4.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length;
|
|
143
143
|
}
|
|
144
144
|
function g4() {
|
|
145
|
-
if (p4 && a4 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" +
|
|
145
|
+
if (p4 && a4 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v2.DefaultDelimiter + "'"), a4 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
|
|
146
146
|
return !y5(e4);
|
|
147
147
|
})), _4()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
@@ -181,13 +181,13 @@ var require_papaparse_min = __commonJS({
|
|
|
181
181
|
}), this.parse = function(e2, t2, i4) {
|
|
182
182
|
var r5 = m4.quoteChar || '"', r5 = (m4.newline || (m4.newline = this.guessLineEndings(e2, r5)), a4 = false, m4.delimiter ? q2(m4.delimiter) && (m4.delimiter = m4.delimiter(e2), p4.meta.delimiter = m4.delimiter) : ((r5 = ((e4, t4, i5, r6, n4) => {
|
|
183
183
|
var s4, a5, o5, h5;
|
|
184
|
-
n4 = n4 || [",", " ", "|", ";",
|
|
184
|
+
n4 = n4 || [",", " ", "|", ";", v2.RECORD_SEP, v2.UNIT_SEP];
|
|
185
185
|
for (var u5 = 0; u5 < n4.length; u5++) {
|
|
186
186
|
for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o5 = void 0, new E4({ comments: r6, delimiter: f6, newline: t4, preview: 10 }).parse(e4)), _5 = 0; _5 < g5.data.length; _5++) i5 && y5(g5.data[_5]) ? p5++ : (d4 = g5.data[_5].length, c5 += d4, void 0 === o5 ? o5 = d4 : 0 < d4 && (l3 += Math.abs(d4 - o5), o5 = d4));
|
|
187
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
189
|
return { successful: !!(m4.delimiter = s4), bestDelimiter: s4 };
|
|
190
|
-
})(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r5.bestDelimiter : (a4 = true, m4.delimiter =
|
|
190
|
+
})(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r5.bestDelimiter : (a4 = true, m4.delimiter = v2.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b4(m4));
|
|
191
191
|
return m4.preview && m4.header && r5.preview++, n2 = e2, s2 = new E4(r5), p4 = s2.parse(n2, t2, i4), g4(), l2 ? { meta: { paused: true } } : p4 || { meta: { paused: false } };
|
|
192
192
|
}, this.paused = function() {
|
|
193
193
|
return l2;
|
|
@@ -201,23 +201,23 @@ var require_papaparse_min = __commonJS({
|
|
|
201
201
|
e = true, s2.abort(), p4.meta.aborted = true, q2(m4.complete) && m4.complete(p4), n2 = "";
|
|
202
202
|
}, this.guessLineEndings = function(e2, t2) {
|
|
203
203
|
e2 = e2.substring(0, 1048576);
|
|
204
|
-
var t2 = new RegExp(
|
|
204
|
+
var t2 = new RegExp(U2(t2) + "([^]*?)" + U2(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
206
|
for (var r5 = 0, n4 = 0; n4 < i4.length; n4++) "\n" === i4[n4][0] && r5++;
|
|
207
207
|
return r5 >= i4.length / 2 ? "\r\n" : "\r";
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
|
-
function
|
|
210
|
+
function U2(e) {
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
|
-
function E4(
|
|
214
|
-
var S2 = (
|
|
215
|
-
if (void 0 !==
|
|
216
|
-
true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 <
|
|
213
|
+
function E4(C2) {
|
|
214
|
+
var S2 = (C2 = C2 || {}).delimiter, O3 = C2.newline, x3 = C2.comments, I5 = C2.step, A2 = C2.preview, T2 = C2.fastMode, D2 = null, L4 = false, F4 = null == C2.quoteChar ? '"' : C2.quoteChar, j4 = F4;
|
|
215
|
+
if (void 0 !== C2.escapeChar && (j4 = C2.escapeChar), ("string" != typeof S2 || -1 < v2.BAD_DELIMITERS.indexOf(S2)) && (S2 = ","), x3 === S2) throw new Error("Comment character same as delimiter");
|
|
216
|
+
true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v2.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
|
|
217
217
|
var z4 = 0, M2 = false;
|
|
218
218
|
this.parse = function(i2, t, r4) {
|
|
219
219
|
if ("string" != typeof i2) throw new Error("Input must be a string");
|
|
220
|
-
var n2 = i2.length, e = S2.length, s2 = O3.length, a4 = x3.length, o4 = q2(
|
|
220
|
+
var n2 = i2.length, e = S2.length, s2 = O3.length, a4 = x3.length, o4 = q2(I5), h4 = [], u4 = [], d3 = [], f5 = z4 = 0;
|
|
221
221
|
if (!i2) return w2();
|
|
222
222
|
if (T2 || false !== T2 && -1 === i2.indexOf(F4)) {
|
|
223
223
|
for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
|
|
@@ -232,20 +232,20 @@ var require_papaparse_min = __commonJS({
|
|
|
232
232
|
}
|
|
233
233
|
return w2();
|
|
234
234
|
}
|
|
235
|
-
for (var p4 = i2.indexOf(S2, z4), g4 = i2.indexOf(O3, z4), _4 = new RegExp(
|
|
235
|
+
for (var p4 = i2.indexOf(S2, z4), g4 = i2.indexOf(O3, z4), _4 = new RegExp(U2(j4) + U2(F4), "g"), m4 = i2.indexOf(F4, z4); ; ) if (i2[z4] === F4) for (m4 = z4, z4++; ; ) {
|
|
236
236
|
if (-1 === (m4 = i2.indexOf(F4, m4 + 1))) return r4 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z4 }), E5();
|
|
237
237
|
if (m4 === n2 - 1) return E5(i2.substring(z4, m4).replace(_4, F4));
|
|
238
238
|
if (F4 === j4 && i2[m4 + 1] === j4) m4++;
|
|
239
239
|
else if (F4 === j4 || 0 === m4 || i2[m4 - 1] !== j4) {
|
|
240
240
|
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S2, m4 + 1));
|
|
241
|
-
var y5 =
|
|
241
|
+
var y5 = v3(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O3, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
|
|
242
242
|
if (i2.substr(m4 + 1 + y5, e) === S2) {
|
|
243
243
|
d3.push(i2.substring(z4, m4).replace(_4, F4)), i2[z4 = m4 + 1 + y5 + e] !== F4 && (m4 = i2.indexOf(F4, z4)), p4 = i2.indexOf(S2, z4), g4 = i2.indexOf(O3, z4);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
|
-
y5 =
|
|
246
|
+
y5 = v3(g4);
|
|
247
247
|
if (i2.substring(m4 + 1 + y5, m4 + 1 + y5 + s2) === O3) {
|
|
248
|
-
if (d3.push(i2.substring(z4, m4).replace(_4, F4)),
|
|
248
|
+
if (d3.push(i2.substring(z4, m4).replace(_4, F4)), b5(m4 + 1 + y5 + s2), p4 = i2.indexOf(S2, z4), m4 = i2.indexOf(F4, z4), o4 && (R2(), M2)) return w2();
|
|
249
249
|
if (A2 && h4.length >= A2) return w2(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
@@ -258,42 +258,42 @@ var require_papaparse_min = __commonJS({
|
|
|
258
258
|
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z4, p4)), z4 = p4 + e, p4 = i2.indexOf(S2, z4);
|
|
259
259
|
else {
|
|
260
260
|
if (-1 === g4) break;
|
|
261
|
-
if (d3.push(i2.substring(z4, g4)),
|
|
261
|
+
if (d3.push(i2.substring(z4, g4)), b5(g4 + s2), o4 && (R2(), M2)) return w2();
|
|
262
262
|
if (A2 && h4.length >= A2) return w2(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
265
265
|
function k3(e2) {
|
|
266
266
|
h4.push(e2), f5 = z4;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function v3(e2) {
|
|
269
269
|
var t2 = 0;
|
|
270
270
|
return t2 = -1 !== e2 && (e2 = i2.substring(m4 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
272
272
|
function E5(e2) {
|
|
273
273
|
return r4 || (void 0 === e2 && (e2 = i2.substring(z4)), d3.push(e2), z4 = n2, k3(d3), o4 && R2()), w2();
|
|
274
274
|
}
|
|
275
|
-
function
|
|
275
|
+
function b5(e2) {
|
|
276
276
|
z4 = e2, k3(d3), d3 = [], g4 = i2.indexOf(O3, z4);
|
|
277
277
|
}
|
|
278
278
|
function w2(e2) {
|
|
279
|
-
if (
|
|
279
|
+
if (C2.header && !t && h4.length && !L4) {
|
|
280
280
|
var s4 = h4[0], a5 = /* @__PURE__ */ Object.create(null), o5 = new Set(s4);
|
|
281
281
|
let n4 = false;
|
|
282
282
|
for (let r5 = 0; r5 < s4.length; r5++) {
|
|
283
283
|
let i4 = P4(s4[r5]);
|
|
284
|
-
if (a5[i4 = q2(
|
|
284
|
+
if (a5[i4 = q2(C2.transformHeader) ? C2.transformHeader(i4, r5) : i4]) {
|
|
285
285
|
let e4, t2 = a5[i4];
|
|
286
286
|
for (; e4 = i4 + "_" + t2, t2++, o5.has(e4); ) ;
|
|
287
|
-
o5.add(e4), s4[r5] = e4, a5[i4]++, n4 = true, (
|
|
287
|
+
o5.add(e4), s4[r5] = e4, a5[i4]++, n4 = true, (D2 = null === D2 ? {} : D2)[e4] = i4;
|
|
288
288
|
} else a5[i4] = 1, s4[r5] = i4;
|
|
289
289
|
o5.add(i4);
|
|
290
290
|
}
|
|
291
291
|
n4 && console.warn("Duplicate headers found and renamed."), L4 = true;
|
|
292
292
|
}
|
|
293
|
-
return { data: h4, errors: u4, meta: { delimiter: S2, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders:
|
|
293
|
+
return { data: h4, errors: u4, meta: { delimiter: S2, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D2 } };
|
|
294
294
|
}
|
|
295
295
|
function R2() {
|
|
296
|
-
|
|
296
|
+
I5(w2()), h4 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
299
|
M2 = true;
|
|
@@ -322,10 +322,10 @@ var require_papaparse_min = __commonJS({
|
|
|
322
322
|
function m2() {
|
|
323
323
|
throw new Error("Not implemented.");
|
|
324
324
|
}
|
|
325
|
-
function
|
|
325
|
+
function b4(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] = b4(e[t]);
|
|
329
329
|
return i2;
|
|
330
330
|
}
|
|
331
331
|
function y4(e, t) {
|
|
@@ -336,21 +336,21 @@ var require_papaparse_min = __commonJS({
|
|
|
336
336
|
function q2(e) {
|
|
337
337
|
return "function" == typeof e;
|
|
338
338
|
}
|
|
339
|
-
return
|
|
339
|
+
return v2.parse = function(e, t) {
|
|
340
340
|
var i2 = (t = t || {}).dynamicTyping || false;
|
|
341
341
|
q2(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
342
|
-
if (t.dynamicTyping = i2, t.transform = !!q2(t.transform) && t.transform, !t.worker || !
|
|
342
|
+
if (t.dynamicTyping = i2, t.transform = !!q2(t.transform) && t.transform, !t.worker || !v2.WORKERS_SUPPORTED) return i2 = null, v2.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) : (n.File && e instanceof File || e instanceof Object) && (i2 = new l(t)), i2.stream(e);
|
|
343
343
|
(i2 = (() => {
|
|
344
344
|
var e2;
|
|
345
|
-
return !!
|
|
345
|
+
return !!v2.WORKERS_SUPPORTED && (e2 = (() => {
|
|
346
346
|
var e4 = n.URL || n.webkitURL || null, t2 = r2.toString();
|
|
347
|
-
return
|
|
347
|
+
return v2.BLOB_URL || (v2.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
348
|
})(), (e2 = new n.Worker(e2)).onmessage = g3, e2.id = h3++, o2[e2.id] = e2);
|
|
349
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
|
-
},
|
|
350
|
+
}, v2.unparse = function(e, t) {
|
|
351
351
|
var s2 = false, _4 = true, m4 = ",", y5 = "\r\n", a4 = '"', o4 = a4 + a4, i2 = false, r4 = null, h4 = false, u4 = ((() => {
|
|
352
352
|
if ("object" == typeof t) {
|
|
353
|
-
if ("string" != typeof t.delimiter ||
|
|
353
|
+
if ("string" != typeof t.delimiter || v2.BAD_DELIMITERS.filter(function(e2) {
|
|
354
354
|
return -1 !== t.delimiter.indexOf(e2);
|
|
355
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 && (_4 = t.header), Array.isArray(t.columns)) {
|
|
356
356
|
if (0 === t.columns.length) throw new Error("Option columns is empty");
|
|
@@ -358,7 +358,7 @@ var require_papaparse_min = __commonJS({
|
|
|
358
358
|
}
|
|
359
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(
|
|
361
|
+
})(), new RegExp(U2(a4), "g"));
|
|
362
362
|
"string" == typeof e && (e = JSON.parse(e));
|
|
363
363
|
if (Array.isArray(e)) {
|
|
364
364
|
if (!e.length || Array.isArray(e[0])) return n2(null, e, i2);
|
|
@@ -396,9 +396,9 @@ var require_papaparse_min = __commonJS({
|
|
|
396
396
|
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n4 = false, h4 && "string" == typeof e2 && h4.test(e2) && (e2 = "'" + e2, n4 = true), r5 = (i4 = e2.toString()).replace(u4, o4), (n4 = n4 || 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
|
-
})(r5,
|
|
399
|
+
})(r5, v2.BAD_DELIMITERS) || -1 < r5.indexOf(m4) || -1 < i4.indexOf(a4) || " " === r5.charAt(0) || " " === r5.charAt(r5.length - 1)) ? a4 + r5 + a4 : r5);
|
|
400
400
|
}
|
|
401
|
-
},
|
|
401
|
+
}, v2.RECORD_SEP = String.fromCharCode(30), v2.UNIT_SEP = String.fromCharCode(31), v2.BYTE_ORDER_MARK = "\uFEFF", v2.BAD_DELIMITERS = ["\r", "\n", '"', v2.BYTE_ORDER_MARK], v2.WORKERS_SUPPORTED = !s && !!n.Worker, v2.NODE_STREAM_INPUT = 1, v2.LocalChunkSize = 10485760, v2.RemoteChunkSize = 5242880, v2.DefaultDelimiter = ",", v2.Parser = E4, v2.ParserHandle = i, v2.NetworkStreamer = f4, v2.FileStreamer = l, v2.StringStreamer = c2, v2.ReadableStreamStreamer = p2, n.jQuery && ((d2 = n.jQuery).fn.parse = function(o4) {
|
|
402
402
|
var i2 = o4.config || {}, h4 = [];
|
|
403
403
|
return this.each(function(e2) {
|
|
404
404
|
if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() && n.FileReader) || !this.files || 0 === this.files.length) return true;
|
|
@@ -419,7 +419,7 @@ var require_papaparse_min = __commonJS({
|
|
|
419
419
|
var a4 = n2.instanceConfig.complete;
|
|
420
420
|
n2.instanceConfig.complete = function(e4) {
|
|
421
421
|
q2(a4) && a4(e4, n2.file, n2.inputElem), u4();
|
|
422
|
-
},
|
|
422
|
+
}, v2.parse(n2.file, n2.instanceConfig);
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
function u4() {
|
|
@@ -427,9 +427,9 @@ var require_papaparse_min = __commonJS({
|
|
|
427
427
|
}
|
|
428
428
|
}), a2 && (n.onmessage = function(e) {
|
|
429
429
|
e = e.data;
|
|
430
|
-
void 0 ===
|
|
431
|
-
"string" == typeof e.input ? n.postMessage({ workerId:
|
|
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 === v2.WORKER_ID && e && (v2.WORKER_ID = e.workerId);
|
|
431
|
+
"string" == typeof e.input ? n.postMessage({ workerId: v2.WORKER_ID, results: v2.parse(e.input, e.config), finished: true }) : (n.File && e.input instanceof File || e.input instanceof Object) && (e = v2.parse(e.input, e.config)) && n.postMessage({ workerId: v2.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, v2;
|
|
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 v2 = c2 / 255;
|
|
500
|
+
return v2 <= 0.04045 ? v2 / 12.92 : Math.pow((v2 + 0.055) / 1.055, 2.4);
|
|
501
501
|
}
|
|
502
502
|
var Xn = 0.95047;
|
|
503
503
|
var Yn = 1;
|
|
@@ -507,12 +507,12 @@ 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(r2, g3,
|
|
511
|
-
const R2 = linearise(r2), G3 = linearise(g3), B3 = linearise(
|
|
510
|
+
function rgbToLab(r2, g3, b4) {
|
|
511
|
+
const R2 = linearise(r2), G3 = linearise(g3), B3 = linearise(b4);
|
|
512
512
|
const X4 = 0.4124564 * R2 + 0.3575761 * G3 + 0.1804375 * B3;
|
|
513
513
|
const Y3 = 0.2126729 * R2 + 0.7151522 * G3 + 0.072175 * B3;
|
|
514
|
-
const
|
|
515
|
-
const fx = f(X4 / Xn), fy = f(Y3 / Yn), fz = f(
|
|
514
|
+
const Z4 = 0.0193339 * R2 + 0.119192 * G3 + 0.9503041 * B3;
|
|
515
|
+
const fx = f(X4 / Xn), fy = f(Y3 / Yn), fz = f(Z4 / Zn);
|
|
516
516
|
return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
|
|
517
517
|
}
|
|
518
518
|
function hexToLab(hex2) {
|
|
@@ -569,20 +569,20 @@ function labToHex(lab) {
|
|
|
569
569
|
const fy = (lab.L + 16) / 116, fx = fy + lab.a / 500, fz = fy - lab.b / 200;
|
|
570
570
|
const X4 = Xn * finv(fx);
|
|
571
571
|
const Y3 = Yn * (lab.L > KAPPA * EPS ? fy * fy * fy : lab.L / KAPPA);
|
|
572
|
-
const
|
|
572
|
+
const Z4 = Zn * finv(fz);
|
|
573
573
|
const lin = [
|
|
574
|
-
3.2404542 * X4 - 1.5371385 * Y3 - 0.4985314 *
|
|
575
|
-
-0.969266 * X4 + 1.8760108 * Y3 + 0.041556 *
|
|
576
|
-
0.0556434 * X4 - 0.2040259 * Y3 + 1.0572252 *
|
|
574
|
+
3.2404542 * X4 - 1.5371385 * Y3 - 0.4985314 * Z4,
|
|
575
|
+
-0.969266 * X4 + 1.8760108 * Y3 + 0.041556 * Z4,
|
|
576
|
+
0.0556434 * X4 - 0.2040259 * Y3 + 1.0572252 * Z4
|
|
577
577
|
];
|
|
578
|
-
return "#" + lin.map((
|
|
579
|
-
const c2 = Math.max(0, Math.min(1,
|
|
578
|
+
return "#" + lin.map((v2) => {
|
|
579
|
+
const c2 = Math.max(0, Math.min(1, v2));
|
|
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(a2,
|
|
585
|
-
const la = hexToLab(a2), lb = hexToLab(
|
|
584
|
+
function deltaEHex(a2, b4) {
|
|
585
|
+
const la = hexToLab(a2), lb = hexToLab(b4);
|
|
586
586
|
return la && lb ? deltaE2000(la, lb) : NaN;
|
|
587
587
|
}
|
|
588
588
|
|
|
@@ -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((v2) => Math.max(0, Math.min(255, v2)).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,18 +672,18 @@ 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((a2,
|
|
675
|
+
const top = [...cells.values()].sort((a2, b4) => b4.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
681
|
for (let j4 = i + 1; j4 < cs.length; j4++) {
|
|
682
|
-
const
|
|
683
|
-
d2[i][j4] =
|
|
684
|
-
d2[j4][i] =
|
|
685
|
-
if (
|
|
686
|
-
span =
|
|
682
|
+
const v2 = deltaE2000(cs[i], cs[j4]);
|
|
683
|
+
d2[i][j4] = v2;
|
|
684
|
+
d2[j4][i] = v2;
|
|
685
|
+
if (v2 > span) {
|
|
686
|
+
span = v2;
|
|
687
687
|
lo = i;
|
|
688
688
|
hi = j4;
|
|
689
689
|
}
|
|
@@ -734,13 +734,13 @@ function normHex(raw) {
|
|
|
734
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(a2,
|
|
738
|
-
return { L: a2.L + (
|
|
737
|
+
function mixLab(a2, b4, t) {
|
|
738
|
+
return { L: a2.L + (b4.L - a2.L) * t, a: a2.a + (b4.a - a2.a) * t, b: a2.b + (b4.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((v2, i) => Math.round(v2 * alpha + c2[i] * (1 - alpha))).map((v2) => v2.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) {
|
|
@@ -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 v2 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
|
|
876
|
+
return v2 === "mark" || v2 === "aggregate" || v2 === "skip" ? v2 : APPROXIMATE_POSITIONS_DEFAULT;
|
|
877
877
|
})(),
|
|
878
878
|
valueAxisBaseline: (() => {
|
|
879
|
-
const
|
|
880
|
-
return
|
|
879
|
+
const v2 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
|
|
880
|
+
return v2 === "zero" || v2 === "fit" || v2 === "auto" ? v2 : 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 v2 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
|
|
888
|
+
return v2 === "auto" || v2 === "always" || v2 === "never" ? v2 : SEASONAL_MARKERS_DEFAULT;
|
|
889
889
|
})(),
|
|
890
890
|
// ---- animation: booleans, default+clamp numerics, "" default enum ----
|
|
891
891
|
animAutoPlay: !!p2.animAutoPlay,
|
|
@@ -1276,13 +1276,13 @@ var x = 8;
|
|
|
1276
1276
|
function y3(n, e) {
|
|
1277
1277
|
let t = new Array(n.length), o2 = new Array(n.length), i = new Array(n.length), r2 = /* @__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
1278
|
for (let l = 0; l < n.length; ++l) {
|
|
1279
|
-
let A2 = n[l],
|
|
1280
|
-
if (S3(
|
|
1279
|
+
let A2 = n[l], C2 = A3({ ...A2, mapKind: e });
|
|
1280
|
+
if (S3(C2)) {
|
|
1281
1281
|
t[l] = null, o2[l] = null, i[l] = null, m2++;
|
|
1282
1282
|
let M2 = K(A2);
|
|
1283
1283
|
M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
|
|
1284
|
-
} else if (
|
|
1285
|
-
if (t[l] =
|
|
1284
|
+
} else if (C2) {
|
|
1285
|
+
if (t[l] = C2.lat, o2[l] = C2.lon, i[l] = C2.precision, S2++, g3[C2.precision]++, (p2 === null || G[C2.precision] > G[p2]) && (p2 = C2.precision), G[C2.precision] > G.city) {
|
|
1286
1286
|
let M2 = K(A2);
|
|
1287
1287
|
M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
|
|
1288
1288
|
}
|
|
@@ -1305,56 +1305,56 @@ function p3(n, e) {
|
|
|
1305
1305
|
return t ? F(t, e).length > 0 : false;
|
|
1306
1306
|
}
|
|
1307
1307
|
|
|
1308
|
-
// ../shape-core/dist/chunk-
|
|
1308
|
+
// ../shape-core/dist/chunk-4VN252CK.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
1310
|
var o = (e, n, t, r2 = {}) => ({ code: e, name: n, script: t, dir: "ltr", intl: e, aliases: [], wordBreaks: true, compounds: false, gluedPrefixes: [], foldSensitive: false, ...r2 });
|
|
1311
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
|
|
1312
|
+
var S = Object.freeze(g.map((e) => e.code));
|
|
1313
1313
|
var c = new Map(g.map((e) => [e.code, e]));
|
|
1314
|
-
var
|
|
1314
|
+
var F2 = new Map(g.flatMap((e) => e.aliases.map((n) => [n, e])));
|
|
1315
1315
|
var h2 = Object.freeze([o("fa", "Persian", "Arab", { dir: "rtl" })]);
|
|
1316
|
-
var
|
|
1317
|
-
var
|
|
1318
|
-
var
|
|
1319
|
-
var
|
|
1320
|
-
var
|
|
1321
|
-
function
|
|
1322
|
-
let n =
|
|
1316
|
+
var Z2 = Object.freeze([...S, ...h2.map((e) => e.code)]);
|
|
1317
|
+
var b2 = new Map(h2.map((e) => [e.code, e]));
|
|
1318
|
+
var E2 = { \u0142: "l", \u0141: "L", \u0131: "i", \u00F8: "o", \u00D8: "O", \u0111: "d", \u0110: "D", \u00F0: "d", \u00D0: "D" };
|
|
1319
|
+
var R = [1632, 1776, 2406, 3664, 65296];
|
|
1320
|
+
var A = /[\u0300-\u036F]/g;
|
|
1321
|
+
function _2(e) {
|
|
1322
|
+
let n = E2[e];
|
|
1323
1323
|
if (n) return n;
|
|
1324
1324
|
let t = e.codePointAt(0);
|
|
1325
|
-
for (let a2 of
|
|
1325
|
+
for (let a2 of R) if (t >= a2 && t <= a2 + 9) return String.fromCharCode(48 + t - a2);
|
|
1326
1326
|
if (t >= 65313 && t <= 65338 || t >= 65345 && t <= 65370) return String.fromCharCode(t - 65248);
|
|
1327
|
-
let r2 = e.normalize("NFD").replace(
|
|
1327
|
+
let r2 = e.normalize("NFD").replace(A, "");
|
|
1328
1328
|
return r2.length === 1 ? r2 : e;
|
|
1329
1329
|
}
|
|
1330
|
-
function
|
|
1330
|
+
function p(e) {
|
|
1331
1331
|
if (!e) return e ?? "";
|
|
1332
1332
|
let n = "";
|
|
1333
|
-
for (let t of e) n +=
|
|
1333
|
+
for (let t of e) n += _2(t);
|
|
1334
1334
|
return n;
|
|
1335
1335
|
}
|
|
1336
|
-
var
|
|
1337
|
-
var
|
|
1338
|
-
var
|
|
1339
|
-
function
|
|
1340
|
-
return e ? String(e).normalize("NFC").replace(
|
|
1336
|
+
var m = /([\p{Ll}\p{Nd}])(\p{Lu})/gu;
|
|
1337
|
+
var M = /[_\-./]+/g;
|
|
1338
|
+
var O2 = /[^\p{L}\p{M}\p{N}\x00-\x7F]/gu;
|
|
1339
|
+
function d(e) {
|
|
1340
|
+
return e ? String(e).normalize("NFC").replace(m, "$1 $2").replace(M, " ").replace(O2, " ").toLowerCase().split(/\s+/).filter((n) => n.length > 0) : [];
|
|
1341
1341
|
}
|
|
1342
|
-
function
|
|
1342
|
+
function le(e) {
|
|
1343
1343
|
let n = Date.parse(e);
|
|
1344
1344
|
if (isNaN(n)) return null;
|
|
1345
1345
|
let t = new Date(n);
|
|
1346
|
-
if (
|
|
1346
|
+
if (j2.test(e) || K2.test(e.trim()) || J2.test(e)) return t;
|
|
1347
1347
|
let r2 = new Date(Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds())), a2 = t.getFullYear();
|
|
1348
1348
|
return a2 >= 0 && a2 < 100 && r2.setUTCFullYear(a2), r2;
|
|
1349
1349
|
}
|
|
1350
|
-
function
|
|
1350
|
+
function L2(e) {
|
|
1351
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
1352
|
}
|
|
1353
|
-
function
|
|
1353
|
+
function W2(e) {
|
|
1354
1354
|
let n = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), t = e.getFullYear();
|
|
1355
1355
|
return t >= 0 && t < 100 && n.setUTCFullYear(t), n;
|
|
1356
1356
|
}
|
|
1357
|
-
function
|
|
1357
|
+
function $2(e, n) {
|
|
1358
1358
|
let t = [];
|
|
1359
1359
|
for (let r2 of e) {
|
|
1360
1360
|
if (!r2 || !/date|time/i.test(String(r2.dataType ?? ""))) continue;
|
|
@@ -1366,7 +1366,7 @@ function B2(e, n) {
|
|
|
1366
1366
|
i = false;
|
|
1367
1367
|
break;
|
|
1368
1368
|
}
|
|
1369
|
-
let l =
|
|
1369
|
+
let l = L2(s);
|
|
1370
1370
|
if (l === null) {
|
|
1371
1371
|
i = false;
|
|
1372
1372
|
break;
|
|
@@ -1377,23 +1377,23 @@ function B2(e, n) {
|
|
|
1377
1377
|
}
|
|
1378
1378
|
return t;
|
|
1379
1379
|
}
|
|
1380
|
-
function
|
|
1381
|
-
let t =
|
|
1380
|
+
function ge(e, n) {
|
|
1381
|
+
let t = $2(e, n);
|
|
1382
1382
|
return t.length === 0 ? { rows: n, columns: t } : { rows: n.map((a2) => {
|
|
1383
1383
|
if (!a2) return a2;
|
|
1384
1384
|
let i = { ...a2 };
|
|
1385
1385
|
for (let u2 of t) {
|
|
1386
1386
|
let s = i[u2];
|
|
1387
|
-
s instanceof Date &&
|
|
1387
|
+
s instanceof Date && L2(s) === "local" && (i[u2] = W2(s));
|
|
1388
1388
|
}
|
|
1389
1389
|
return i;
|
|
1390
1390
|
}), columns: t };
|
|
1391
1391
|
}
|
|
1392
|
-
var
|
|
1393
|
-
var
|
|
1394
|
-
var
|
|
1392
|
+
var j2 = /^\s*\d{4}(-\d{2}(-\d{2})?)?\s*$/;
|
|
1393
|
+
var K2 = /(?:Z|[+-]\d{2}:?\d{2})$/i;
|
|
1394
|
+
var J2 = /\b(?:GMT|UTC)\b/i;
|
|
1395
1395
|
|
|
1396
|
-
// ../shape-core/dist/chunk-
|
|
1396
|
+
// ../shape-core/dist/chunk-VIWJJUDA.mjs
|
|
1397
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. */
|
|
1398
1398
|
var St = "006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191193194195196197198199200201202203204205206207208209210211212214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310312313314315316317318319320321322323324325326327328329330331333334335336337338339341342344346347349350351352354355356357358359360361362363364365366367368369370371372373374376377378379380381382383384385386387388389390391392393394395396397398400401402403404405406407408409410411412413414415416417418420421422423424425426427430431432433434435436437438439440441442443444445446447448449450451452453454455456457458460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508510511512513514515516520521522523524525526527528530531532534535537538539540541542543544545546547548549550551553554556557558559560561562563564565566567570571572573574575576577580581582583584585586587588590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620622623624625626627628629630631633634635636637638639640641644645646647648650651652653654655656657658660661662664665666667668669670671672673674675676677678679680681683684685686687688689690691692693700701703704705706707708710711712713714716717718719720721722723724725726727728729730731734735736737738739740741743744745746747748749750751752753754755756757758759760761762763764765766767768769770772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816820821822823824825826827828829830831832833834835836837838840841843844845846847850851852853855856857859860863864865870871873874875877878879880881882883884890891893894895897898900902903904905906907908910911912913914915916917918919920921922923924925926927928930931932933934935936937939940941943944945946947948949950951952953954955956957958959960961967968969970971972973974975976977978979980981982983984985986988989990991992993994995996997998999";
|
|
1399
1399
|
var w = new Set(St.match(/.{3}/g) ?? []);
|
|
@@ -1420,7 +1420,7 @@ function g2(n) {
|
|
|
1420
1420
|
var rt = /* @__PURE__ */ new Set(["zip", "zipcode", "postal", "postcode", "plz"]);
|
|
1421
1421
|
function y2(n, s) {
|
|
1422
1422
|
if (!n) return false;
|
|
1423
|
-
for (let i of
|
|
1423
|
+
for (let i of d(n)) if (s.has(i)) return true;
|
|
1424
1424
|
return false;
|
|
1425
1425
|
}
|
|
1426
1426
|
function Mt(n, s) {
|
|
@@ -1464,11 +1464,11 @@ function It(n, s) {
|
|
|
1464
1464
|
}
|
|
1465
1465
|
function Wt(n, s) {
|
|
1466
1466
|
let i = new Array(n.length), r2 = /* @__PURE__ */ new Set(), M2 = [], h3 = 0;
|
|
1467
|
-
for (let
|
|
1468
|
-
let
|
|
1469
|
-
if (i[
|
|
1467
|
+
for (let N2 = 0; N2 < n.length; ++N2) {
|
|
1468
|
+
let I5 = Mt(n[N2], s), O3 = I5 !== null && It(I5, s) ? I5 : null;
|
|
1469
|
+
if (i[N2] = O3, O3 !== null) h3++;
|
|
1470
1470
|
else {
|
|
1471
|
-
let d2 = n[
|
|
1471
|
+
let d2 = n[N2];
|
|
1472
1472
|
if (d2 != null) {
|
|
1473
1473
|
let p2 = String(d2).trim();
|
|
1474
1474
|
if (p2.length > 0) {
|
|
@@ -1481,88 +1481,88 @@ function Wt(n, s) {
|
|
|
1481
1481
|
return { iso: i, unmatched: M2, matchedRows: h3, totalRows: n.length };
|
|
1482
1482
|
}
|
|
1483
1483
|
|
|
1484
|
-
// ../shape-core/dist/chunk-
|
|
1484
|
+
// ../shape-core/dist/chunk-M7OKMBJS.mjs
|
|
1485
1485
|
var import_papaparse = __toESM(require_papaparse_min(), 1);
|
|
1486
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. */
|
|
1487
|
-
var
|
|
1488
|
-
var
|
|
1487
|
+
var we = { "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" };
|
|
1488
|
+
var J3 = (() => {
|
|
1489
1489
|
let t = /* @__PURE__ */ new Map();
|
|
1490
|
-
for (let e of Object.keys(
|
|
1490
|
+
for (let e of Object.keys(we)) for (let n of we[e].split(/\s+/)) n && t.set(n, e);
|
|
1491
1491
|
return t;
|
|
1492
1492
|
})();
|
|
1493
|
-
function
|
|
1493
|
+
function lt2(t) {
|
|
1494
1494
|
for (let [e, n] of t) {
|
|
1495
|
-
let r2 =
|
|
1496
|
-
r2 && !
|
|
1495
|
+
let r2 = J3.get(e);
|
|
1496
|
+
r2 && !J3.has(n) && J3.set(n, r2);
|
|
1497
1497
|
}
|
|
1498
1498
|
}
|
|
1499
|
-
|
|
1500
|
-
var
|
|
1501
|
-
var
|
|
1502
|
-
var
|
|
1503
|
-
var
|
|
1499
|
+
lt2(N);
|
|
1500
|
+
var ht = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "z[_-]?score", "average", "avg", "mean", "median", "stddev", "variance", "gpa", "percentile", "quantile", "efficiency", "accuracy", "probability", "multiplier", "coefficient", "correlation", "occupancy", "age", "bmi", "temperature", "density", "pressure", "humidity", "ph", "velocity", "speed", "elevation", "altitude", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps", "temperatuur", "temperatur", "temperatura", "teplota", "lampotila", "homerseklet", "sicaklik", "pression", "presion", "pressao", "pressione", "druck", "tryck", "tlak", "paine", "nyomas", "presiune", "humidite", "humedad", "umidade", "umidita", "feuchtigkeit", "vochtigheid", "kosteus", "vlhkost", "vitesse", "velocidad", "velocidade", "velocita", "geschwindigkeit", "snelheid", "hastighet", "hastighed", "rychlost", "nopeus", "sebesseg", "brzina", "predkosc", "densite", "densidad", "densidade", "densita", "dichte", "dichtheid", "hustota", "tiheys", "gustoca", "moyenne", "mediane", "promedio", "mediana", "gemiddelde", "durchschnitt", "mittelwert", "genomsnitt", "gennemsnit", "gjennomsnitt", "keskiarvo", "atlag", "ortalama", "prosjek", "srednia", "prumer", "priemer", "medie", "taux", "tasa", "taxa", "tasso", "verhaltnis", "verhouding", "aandeel", "anteil", "andel", "osuus", "podil", "udzial", "udio", "pourcentage", "porcentaje", "percentual", "prozent", "procent", "prosentti", "szazalek", "yuzde", "participacion", "participacao", "pondere", "omjer", "arany", "oran", "rata", "leeftijd", "edad", "idade", "wiek", "eletkor", "varsta", "puntuacion", "pontuacao", "punteggio", "betyg", "ocena", "indice", "indeks", "wskaznik", "puan"];
|
|
1501
|
+
var bt = ["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"];
|
|
1502
|
+
var yt2 = ["latitude", "longitude"];
|
|
1503
|
+
var St2 = ["latitude", "longitude"];
|
|
1504
1504
|
function j3(t) {
|
|
1505
|
-
return
|
|
1505
|
+
return p(t);
|
|
1506
1506
|
}
|
|
1507
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"];
|
|
1508
|
-
function
|
|
1508
|
+
function _t(t) {
|
|
1509
1509
|
return [...t].sort((e, n) => n.length - e.length).map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|");
|
|
1510
1510
|
}
|
|
1511
|
-
var
|
|
1512
|
-
var
|
|
1513
|
-
var
|
|
1514
|
-
var
|
|
1515
|
-
function
|
|
1511
|
+
var Ge = new RegExp("^\\s*(?:(?:sum|count|count\\s+distinct|distinct\\s+count)\\s+of\\s+|(?:" + _t(de) + ")\\s+)", "i");
|
|
1512
|
+
var At = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])/g;
|
|
1513
|
+
var Ct = new RegExp("\\b(" + ht.join("|") + ")\\b|(" + bt.join("|") + ")$", "i");
|
|
1514
|
+
var Mt2 = new RegExp("\\b(" + yt2.join("|") + ")\\b|(" + St2.join("|") + ")$", "i");
|
|
1515
|
+
function We(t) {
|
|
1516
1516
|
if (!t) return "";
|
|
1517
|
-
let e = String(t), n =
|
|
1517
|
+
let e = String(t), n = Ge.exec(j3(e));
|
|
1518
1518
|
return (n ? e.slice(n[0].length) : e).trim();
|
|
1519
1519
|
}
|
|
1520
|
-
function
|
|
1521
|
-
return !!t &&
|
|
1520
|
+
function xt(t) {
|
|
1521
|
+
return !!t && Ge.test(j3(String(t)));
|
|
1522
1522
|
}
|
|
1523
|
-
var
|
|
1524
|
-
var
|
|
1525
|
-
var
|
|
1526
|
-
var
|
|
1527
|
-
function
|
|
1528
|
-
let e =
|
|
1529
|
-
return e.length === 0 ? "" : e.replace(
|
|
1523
|
+
var Rt = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
|
|
1524
|
+
var ke = new RegExp("^\\s*(" + [...Rt].sort((t, e) => e.length - t.length).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
|
|
1525
|
+
var ze = { Sum: ["Sum of "], Avg: ["Average of "], Average: ["Average of "], Count: ["Count of "], CountNonNull: ["Count of "], Min: ["Min of ", "First ", "Earliest "], Max: ["Max of ", "Last ", "Latest "], Median: ["Median of "], StandardDeviation: ["Standard deviation of "], Variance: ["Variance of "] };
|
|
1526
|
+
var Tt = new RegExp("^(" + Object.keys(ze).join("|") + ")\\((.+)\\)$");
|
|
1527
|
+
function Nt(t) {
|
|
1528
|
+
let e = We(t);
|
|
1529
|
+
return e.length === 0 ? "" : e.replace(At, " ");
|
|
1530
1530
|
}
|
|
1531
|
-
function
|
|
1531
|
+
function Ue(t, e) {
|
|
1532
1532
|
if (!e) return false;
|
|
1533
|
-
let n =
|
|
1534
|
-
return t.test(j3(
|
|
1533
|
+
let n = We(e);
|
|
1534
|
+
return t.test(j3(Nt(e))) || t.test(j3(n)) || t.test(j3(d(n).join(" ")));
|
|
1535
1535
|
}
|
|
1536
|
-
function
|
|
1537
|
-
return
|
|
1536
|
+
function Ve(t) {
|
|
1537
|
+
return Ue(Mt2, t);
|
|
1538
1538
|
}
|
|
1539
|
-
function
|
|
1540
|
-
return
|
|
1539
|
+
function Et(t) {
|
|
1540
|
+
return Ue(Ct, t) || Ve(t);
|
|
1541
1541
|
}
|
|
1542
|
-
var
|
|
1543
|
-
function
|
|
1542
|
+
var Ke = /int|double|decimal|single|float|number|currency|money/i;
|
|
1543
|
+
function vt(t) {
|
|
1544
1544
|
let e = String(t?.valueNature ?? "").trim().toLowerCase();
|
|
1545
|
-
return e === "categorical" ? "Categorical" : e === "ordinal" ? "Ordinal" : e === "continuous" || t?.isMeasure === true ||
|
|
1545
|
+
return e === "categorical" ? "Categorical" : e === "ordinal" ? "Ordinal" : e === "continuous" || t?.isMeasure === true || Ke.test(String(t?.dataType ?? "")) ? "Continuous" : "Categorical";
|
|
1546
1546
|
}
|
|
1547
|
-
function
|
|
1548
|
-
return t?.isMeasure === true ||
|
|
1547
|
+
function It2(t) {
|
|
1548
|
+
return t?.isMeasure === true || Ke.test(String(t?.dataType ?? ""));
|
|
1549
1549
|
}
|
|
1550
|
-
function
|
|
1551
|
-
let e = t ?? {}, n =
|
|
1550
|
+
function Ye(t) {
|
|
1551
|
+
let e = t ?? {}, n = vt(e);
|
|
1552
1552
|
if (n !== "Continuous") return { nature: n, additivity: "unknown", basis: "role", suppressed: false };
|
|
1553
|
-
if (
|
|
1553
|
+
if (Ve(e.name)) return { nature: n, additivity: "positional", basis: "name", suppressed: true };
|
|
1554
1554
|
let r2 = String(e.additivity ?? "").trim().toLowerCase();
|
|
1555
|
-
if (!(r2 === "additive" &&
|
|
1555
|
+
if (!(r2 === "additive" && xt(e.name))) {
|
|
1556
1556
|
if (r2 === "additive") return { nature: n, additivity: "additive", basis: "measured", suppressed: false };
|
|
1557
1557
|
if (r2 === "part_of_whole") return { nature: n, additivity: "part_of_whole", basis: "measured", suppressed: false };
|
|
1558
1558
|
if (r2 === "intensive_rate") return { nature: n, additivity: "intensive_rate", basis: "measured", suppressed: false };
|
|
1559
1559
|
}
|
|
1560
|
-
return e.discourageAggregationAcrossGroups === true ? { nature: n, additivity: "intensive_rate", basis: "host-flag", suppressed: false } :
|
|
1560
|
+
return e.discourageAggregationAcrossGroups === true ? { nature: n, additivity: "intensive_rate", basis: "host-flag", suppressed: false } : Et(e.name) ? { nature: n, additivity: "intensive_rate", basis: "name", suppressed: false } : { nature: n, additivity: "additive", basis: "default", suppressed: false };
|
|
1561
1561
|
}
|
|
1562
|
-
function
|
|
1563
|
-
let e =
|
|
1562
|
+
function He(t) {
|
|
1563
|
+
let e = Ye(t), n = t ?? {};
|
|
1564
1564
|
if (e.nature === "Categorical") return ["first", "distinctcount", "count"];
|
|
1565
|
-
if (e.nature === "Ordinal") return
|
|
1565
|
+
if (e.nature === "Ordinal") return It2(n) ? ["median", "average", "min", "max", "first", "distinctcount", "count"] : ["first", "distinctcount", "count"];
|
|
1566
1566
|
switch (e.additivity) {
|
|
1567
1567
|
case "positional":
|
|
1568
1568
|
return ["min", "max", "count", "distinctcount", "first"];
|
|
@@ -1572,22 +1572,22 @@ function Ke(t) {
|
|
|
1572
1572
|
return ["sum", "average", "median", "min", "max", "count", "distinctcount", "first"];
|
|
1573
1573
|
}
|
|
1574
1574
|
}
|
|
1575
|
-
function
|
|
1576
|
-
return
|
|
1575
|
+
function On(t) {
|
|
1576
|
+
return He(t)[0];
|
|
1577
1577
|
}
|
|
1578
|
-
function
|
|
1578
|
+
function kn(t, e) {
|
|
1579
1579
|
if (e !== "sum" && e !== "count") return false;
|
|
1580
1580
|
if (e === "count") return true;
|
|
1581
|
-
let n =
|
|
1581
|
+
let n = Ye(t);
|
|
1582
1582
|
return n.additivity === "additive" || n.additivity === "part_of_whole" || n.additivity === "unknown";
|
|
1583
1583
|
}
|
|
1584
|
-
var
|
|
1584
|
+
var Dt = 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("|"));
|
|
1585
1585
|
|
|
1586
1586
|
// ../shape-core/dist/index.mjs
|
|
1587
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. */
|
|
1588
1588
|
var X3 = 2;
|
|
1589
1589
|
var de2 = 400;
|
|
1590
|
-
function
|
|
1590
|
+
function Z3(t) {
|
|
1591
1591
|
return !!E(t);
|
|
1592
1592
|
}
|
|
1593
1593
|
function F3(t) {
|
|
@@ -1599,13 +1599,13 @@ function F3(t) {
|
|
|
1599
1599
|
}
|
|
1600
1600
|
return Array.from(e);
|
|
1601
1601
|
}
|
|
1602
|
-
function
|
|
1602
|
+
function I4(t) {
|
|
1603
1603
|
let e = F3(t);
|
|
1604
1604
|
if (e.length === 0 || ee3(t) < 95) return false;
|
|
1605
|
-
let n = e.filter((u2) =>
|
|
1605
|
+
let n = e.filter((u2) => Z3(u2) && !Y(u2)).length, o2 = e.filter((u2) => !Z3(u2) && !!Y(u2)).length;
|
|
1606
1606
|
return n >= 1 && n >= o2;
|
|
1607
1607
|
}
|
|
1608
|
-
function
|
|
1608
|
+
function ue2(t, e) {
|
|
1609
1609
|
if (!Y(t)) return false;
|
|
1610
1610
|
let n = E(t);
|
|
1611
1611
|
return n ? e === "world" ? true : s3.has(n) : false;
|
|
@@ -1614,7 +1614,7 @@ function ee3(t) {
|
|
|
1614
1614
|
let e = F3(t);
|
|
1615
1615
|
if (e.length === 0) return 0;
|
|
1616
1616
|
let n = 0;
|
|
1617
|
-
for (let o2 of e)
|
|
1617
|
+
for (let o2 of e) Z3(o2) && n++;
|
|
1618
1618
|
return Math.round(n / e.length * 1e3) / 10;
|
|
1619
1619
|
}
|
|
1620
1620
|
function z3(t) {
|
|
@@ -1633,35 +1633,35 @@ function ne2(t) {
|
|
|
1633
1633
|
}
|
|
1634
1634
|
return Array.from(e);
|
|
1635
1635
|
}
|
|
1636
|
-
function
|
|
1636
|
+
function te(t) {
|
|
1637
1637
|
let e = ne2(t);
|
|
1638
1638
|
if (e.length === 0) return 0;
|
|
1639
1639
|
let n = 0;
|
|
1640
1640
|
for (let o2 of e) Z(o2).length > 0 && n++;
|
|
1641
1641
|
return Math.round(n / e.length * 1e3) / 10;
|
|
1642
1642
|
}
|
|
1643
|
-
function
|
|
1643
|
+
function ce2(t, e) {
|
|
1644
1644
|
return y2(e, rt) ? true : ne2(t).some((n) => /^\d{5}(-\d{4})?$/.test(n.replace(/\.0+$/, "")));
|
|
1645
1645
|
}
|
|
1646
|
-
function
|
|
1646
|
+
function Pn2(t, e) {
|
|
1647
1647
|
let n = F3(t);
|
|
1648
1648
|
if (n.length === 0) return 0;
|
|
1649
1649
|
let o2 = 0;
|
|
1650
1650
|
for (let u2 of n) p3(u2, e) && o2++;
|
|
1651
1651
|
return Math.round(o2 / n.length * 1e3) / 10;
|
|
1652
1652
|
}
|
|
1653
|
-
function
|
|
1653
|
+
function J4(t, e) {
|
|
1654
1654
|
let n = 0;
|
|
1655
1655
|
for (let o2 of F3(t)) e(o2) && n++;
|
|
1656
1656
|
return n;
|
|
1657
1657
|
}
|
|
1658
|
-
function
|
|
1658
|
+
function Ln(t, e) {
|
|
1659
1659
|
let n = 0;
|
|
1660
1660
|
for (let o2 of ne2(t)) e(o2) && n++;
|
|
1661
1661
|
return n;
|
|
1662
1662
|
}
|
|
1663
|
-
function
|
|
1664
|
-
let l = [], a2 = [], i = {}, S2 = {}, T2 = new Set(t),
|
|
1663
|
+
function Mn2(t, e, n, o2, u2) {
|
|
1664
|
+
let l = [], a2 = [], i = {}, S2 = {}, T2 = new Set(t), b4 = (s) => e.map((d2) => d2[s]);
|
|
1665
1665
|
for (let s of ["city", "country"]) {
|
|
1666
1666
|
let d2 = n?.[s];
|
|
1667
1667
|
d2 && T2.has(d2) && (i[s] = d2);
|
|
@@ -1673,66 +1673,66 @@ function Tn(t, e, n, o2, u2) {
|
|
|
1673
1673
|
}
|
|
1674
1674
|
let m2 = n?.zip;
|
|
1675
1675
|
if (m2 && T2.has(m2)) {
|
|
1676
|
-
let s =
|
|
1677
|
-
d2 < 95 ? a2.push(`zip=${m2} (only ${d2}% of values read as ZIPs)`) :
|
|
1676
|
+
let s = b4(m2), d2 = te(s);
|
|
1677
|
+
d2 < 95 ? a2.push(`zip=${m2} (only ${d2}% of values read as ZIPs)`) : ce2(s, m2) ? i.zip = m2 : a2.push(`zip=${m2} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1678
1678
|
}
|
|
1679
1679
|
let p2 = n?.state;
|
|
1680
1680
|
if (p2 && T2.has(p2)) {
|
|
1681
|
-
let s =
|
|
1682
|
-
d2.length > 0 && d2.every((E4) =>
|
|
1681
|
+
let s = b4(p2), d2 = F3(s);
|
|
1682
|
+
d2.length > 0 && d2.every((E4) => ue2(E4, o2)) ? a2.push(`state=${p2} (every value is "CA", which is both Canada and California)`) : I4(s) ? (a2.push(`state=${p2} (every value is a country, not a state)`), i.country || (i.country = p2)) : z3(s) < 95 ? a2.push(`state=${p2} (only ${z3(s)}% of values are states/provinces)`) : i.state = p2;
|
|
1683
1683
|
}
|
|
1684
|
-
let c2 = new Set(Object.values(i).filter(Boolean)),
|
|
1684
|
+
let c2 = new Set(Object.values(i).filter(Boolean)), C2 = t.filter((s) => !c2.has(s) && !s.startsWith("__"));
|
|
1685
1685
|
if (!i.state) {
|
|
1686
1686
|
let s = null;
|
|
1687
|
-
for (let d2 of
|
|
1688
|
-
let E4 =
|
|
1689
|
-
if (
|
|
1687
|
+
for (let d2 of C2) {
|
|
1688
|
+
let E4 = b4(d2);
|
|
1689
|
+
if (I4(E4)) continue;
|
|
1690
1690
|
let P4 = z3(E4);
|
|
1691
1691
|
if (P4 < 95) continue;
|
|
1692
|
-
let K3 =
|
|
1692
|
+
let K3 = J4(E4, (V3) => !!Y(V3)), Pe = J4(E4, (V3) => !!Y(V3) && !ue2(V3, o2));
|
|
1693
1693
|
K3 < X3 && Pe < 1 || (!s || P4 > s.pct) && (s = { name: d2, pct: P4 });
|
|
1694
1694
|
}
|
|
1695
1695
|
s && (i.state = s.name, c2.add(s.name), l.push(`state=${s.name} (${s.pct}% states/provinces)`));
|
|
1696
1696
|
}
|
|
1697
|
-
if (!i.zip) for (let s of
|
|
1697
|
+
if (!i.zip) for (let s of C2) {
|
|
1698
1698
|
if (c2.has(s)) continue;
|
|
1699
|
-
let d2 =
|
|
1700
|
-
if (!(E4 < 95) &&
|
|
1699
|
+
let d2 = b4(s), E4 = te(d2);
|
|
1700
|
+
if (!(E4 < 95) && ce2(d2, s) && !(Ln(d2, (P4) => Z(P4).length > 0) < X3)) {
|
|
1701
1701
|
i.zip = s, c2.add(s), l.push(`zip=${s} (${E4}% ZIP codes)`);
|
|
1702
1702
|
break;
|
|
1703
1703
|
}
|
|
1704
1704
|
}
|
|
1705
1705
|
let R2 = i.country;
|
|
1706
|
-
if (!R2 || !
|
|
1706
|
+
if (!R2 || !I4(b4(R2))) {
|
|
1707
1707
|
let s = null;
|
|
1708
|
-
for (let d2 of
|
|
1709
|
-
if (c2.has(d2) || !
|
|
1710
|
-
let E4 = ee3(
|
|
1708
|
+
for (let d2 of C2) {
|
|
1709
|
+
if (c2.has(d2) || !I4(b4(d2))) continue;
|
|
1710
|
+
let E4 = ee3(b4(d2));
|
|
1711
1711
|
(!s || E4 > s.pct) && (s = { name: d2, pct: E4 });
|
|
1712
1712
|
}
|
|
1713
|
-
s && (R2 && (a2.push(`country=${R2} (only ${ee3(
|
|
1713
|
+
s && (R2 && (a2.push(`country=${R2} (only ${ee3(b4(R2))}% of values are country identifiers; using ${s.name} instead)`), S2.country = R2), i.country = s.name, c2.add(s.name), l.push(`country=${s.name}`));
|
|
1714
1714
|
}
|
|
1715
1715
|
if (!i.city) {
|
|
1716
1716
|
let s = null;
|
|
1717
|
-
for (let d2 of
|
|
1717
|
+
for (let d2 of C2) {
|
|
1718
1718
|
if (c2.has(d2)) continue;
|
|
1719
|
-
let E4 =
|
|
1720
|
-
P4 < m3 ||
|
|
1719
|
+
let E4 = b4(d2), P4 = Pn2(E4, o2);
|
|
1720
|
+
P4 < m3 || J4(E4, (K3) => p3(K3, o2)) < X3 || (!s || P4 > s.pct) && (s = { name: d2, pct: P4 });
|
|
1721
1721
|
}
|
|
1722
1722
|
s && (i.city = s.name, l.push(`city=${s.name} (${s.pct}% known cities)`));
|
|
1723
1723
|
}
|
|
1724
|
-
let w2 = i.country ?
|
|
1724
|
+
let w2 = i.country ? b4(i.country) : [], v2 = !!i.country && I4(w2), _3 = v2 ? new Set(w2.map((s) => E(s == null ? null : String(s))).filter(Boolean)).size : 0, x3 = v2 && _3 >= 2, g3 = !!(i.lat && i.lon) && e.some((s) => {
|
|
1725
1725
|
let d2 = +String(s[i.lat] ?? "").trim(), E4 = +String(s[i.lon] ?? "").trim();
|
|
1726
1726
|
return isFinite(d2) && isFinite(E4) && d2 >= -90 && d2 <= 90 && E4 >= -180 && E4 <= 180 && String(s[i.lat] ?? "").trim() !== "" && String(s[i.lon] ?? "").trim() !== "";
|
|
1727
1727
|
});
|
|
1728
|
-
return i.lat && i.lon && !g3 && a2.push(`lat/lon=${i.lat}/${i.lon} (no row holds a usable coordinate pair)`), i.country && !x3 && !(i.city || i.state || i.zip || g3) && a2.push(
|
|
1728
|
+
return i.lat && i.lon && !g3 && a2.push(`lat/lon=${i.lat}/${i.lon} (no row holds a usable coordinate pair)`), i.country && !x3 && !(i.city || i.state || i.zip || g3) && a2.push(v2 ? `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 || x3 || g3) ? i : null, backfilled: l, refused: a2, ...Object.keys(S2).length ? { labelFallback: S2 } : {} };
|
|
1729
1729
|
}
|
|
1730
1730
|
var r = (t, ...e) => ({ part: t, langs: Object.freeze(e) });
|
|
1731
1731
|
var re2 = Object.freeze({ jaar: r("year", "nl"), kwartaal: r("quarter", "nl"), maand: r("month", "nl"), dag: r("day", "nl", "sv", "da", "nb"), jahr: r("year", "de"), quartal: r("quarter", "de"), monat: r("month", "de"), tag: r("day", "de"), ann\u00E9e: r("year", "fr"), mois: r("month", "fr"), jour: r("day", "fr"), trimestre: r("quarter", "fr", "es", "pt", "it"), a\u00F1o: r("year", "es"), mes: r("month", "es"), d\u00EDa: r("day", "es"), ano: r("year", "pt"), m\u00EAs: r("month", "pt"), dia: r("day", "pt"), anno: r("year", "it"), mese: r("month", "it"), giorno: r("day", "it"), \u0433\u043E\u0434: r("year", "ru"), \u043C\u0435\u0441\u044F\u0446: r("month", "ru"), \u0440\u0456\u043A: r("year", "uk"), \u043C\u0456\u0441\u044F\u0446\u044C: r("month", "uk"), \u043A\u0432\u0430\u0440\u0442\u0430\u043B: r("quarter", "ru", "uk"), \u0434\u0435\u043D\u044C: r("day", "ru", "uk"), rok: r("year", "pl", "cs", "sk"), kwarta\u0142: r("quarter", "pl"), miesi\u0105c: r("month", "pl"), dzie\u0144: r("day", "pl"), \u010Dtvrtlet\u00ED: r("quarter", "cs"), m\u011Bs\u00EDc: r("month", "cs"), den: r("day", "cs"), \u0161tvr\u0165rok: r("quarter", "sk"), mesiac: r("month", "sk"), de\u0148: r("day", "sk"), \u00E5r: r("year", "sv", "da", "nb"), kvartal: r("quarter", "sv", "da", "nb"), m\u00E5nad: r("month", "sv"), m\u00E5ned: r("month", "da", "nb"), vuosi: r("year", "fi"), vuosinelj\u00E4nnes: r("quarter", "fi"), kuukausi: r("month", "fi"), p\u00E4iv\u00E4: r("day", "fi"), \u00E9v: r("year", "hu"), negyed\u00E9v: r("quarter", "hu"), h\u00F3nap: r("month", "hu"), nap: r("day", "hu"), y\u0131l: r("year", "tr"), \u00E7eyrek: r("quarter", "tr"), ay: r("month", "tr"), g\u00FCn: r("day", "tr"), \u03AD\u03C4\u03BF\u03C2: r("year", "el"), \u03C4\u03C1\u03AF\u03BC\u03B7\u03BD\u03BF: r("quarter", "el"), \u03BC\u03AE\u03BD\u03B1\u03C2: r("month", "el"), \u03B7\u03BC\u03AD\u03C1\u03B1: r("day", "el"), an: r("year", "ro"), trimestru: r("quarter", "ro"), lun\u0103: r("month", "ro"), zi: r("day", "ro"), godina: r("year", "hr"), tromjese\u010Dje: r("quarter", "hr"), mjesec: r("month", "hr"), dan: r("day", "hr"), \u5E74: r("year", "ja", "zh"), \u56DB\u534A\u671F: r("quarter", "ja"), \u5B63\u5EA6: r("quarter", "zh"), \u6708: r("month", "ja", "zh"), \u65E5: r("day", "ja", "zh"), \uC5F0\uB3C4: r("year", "ko"), \uBD84\uAE30: r("quarter", "ko"), \uC6D4: r("month", "ko"), \uC77C: r("day", "ko"), tahun: r("year", "id"), kuartal: r("quarter", "id"), triwulan: r("quarter", "id"), bulan: r("month", "id"), hari: r("day", "id"), n\u0103m: r("year", "vi"), qu\u00FD: r("quarter", "vi"), th\u00E1ng: r("month", "vi"), ng\u00E0y: r("day", "vi"), \u0E1B\u0E35: r("year", "th"), \u0E44\u0E15\u0E23\u0E21\u0E32\u0E2A: r("quarter", "th"), \u0E40\u0E14\u0E37\u0E2D\u0E19: r("month", "th"), \u0E27\u0E31\u0E19: r("day", "th"), \u0627\u0644\u0633\u0646\u0629: r("year", "ar"), \u0633\u0646\u0629: r("year", "ar"), \u0627\u0644\u0639\u0627\u0645: r("year", "ar"), \u0639\u0627\u0645: r("year", "ar"), \u0627\u0644\u0631\u0628\u0639: r("quarter", "ar"), \u0631\u0628\u0639: r("quarter", "ar"), "\u0631\u0628\u0639 \u0627\u0644\u0633\u0646\u0629": r("quarter", "ar"), \u0627\u0644\u0634\u0647\u0631: r("month", "ar"), \u0634\u0647\u0631: r("month", "ar"), \u0627\u0644\u064A\u0648\u0645: r("day", "ar"), \u064A\u0648\u0645: r("day", "ar"), \u05E9\u05E0\u05D4: r("year", "he"), \u05E8\u05D1\u05E2\u05D5\u05DF: r("quarter", "he"), \u05D7\u05D5\u05D3\u05E9: r("month", "he"), \u05D9\u05D5\u05DD: r("day", "he"), \u0935\u0930\u094D\u0937: r("year", "hi"), \u0938\u093E\u0932: r("year", "hi"), \u0924\u093F\u092E\u093E\u0939\u0940: r("quarter", "hi"), \u092E\u0939\u0940\u0928\u093E: r("month", "hi"), \u092E\u093E\u0939: r("month", "hi"), \u0926\u093F\u0928: r("day", "hi"), \u0633\u0627\u0644: r("year", "fa"), \u0645\u0627\u0647: r("month", "fa"), \u0631\u0648\u0632: r("day", "fa") });
|
|
1732
|
-
var
|
|
1732
|
+
var _n = Object.freeze(Array.from(new Set(Object.values(re2).flatMap((t) => t.langs))));
|
|
1733
1733
|
var me = Object.freeze(["fa", "ar", "he", "th"]);
|
|
1734
|
-
var
|
|
1735
|
-
var
|
|
1734
|
+
var Zn2 = Object.freeze({ integer: "number", decimal: "number", double: "number", datetime: "date", date: "date", boolean: "boolean", string: "text" });
|
|
1735
|
+
var ar = Object.freeze({ RENDER_START: "render-start", RENDER_OK: "render-ok", RENDER_ERROR: "render-error", VIEW: "view", VIEW_VERDICT: "view-verdict" });
|
|
1736
1736
|
|
|
1737
1737
|
// src/payload.ts
|
|
1738
1738
|
var ROW_IDX_COLUMN = "__rowIdx__";
|
|
@@ -1747,7 +1747,7 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1747
1747
|
let labelCol;
|
|
1748
1748
|
if (bind) {
|
|
1749
1749
|
const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
|
|
1750
|
-
const res =
|
|
1750
|
+
const res = Mn2(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
|
|
1751
1751
|
bind = res.bind;
|
|
1752
1752
|
rolesBackfilled = res.backfilled;
|
|
1753
1753
|
rolesRefused = res.refused;
|
|
@@ -1795,7 +1795,7 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1795
1795
|
cols = cols.filter((c2) => c2.name !== ROW_IDX_COLUMN);
|
|
1796
1796
|
let utcDayColumns = null;
|
|
1797
1797
|
if (opts?.utcDays) {
|
|
1798
|
-
const norm =
|
|
1798
|
+
const norm = ge(cols, rowObjs);
|
|
1799
1799
|
rowObjs = norm.rows;
|
|
1800
1800
|
utcDayColumns = norm.columns;
|
|
1801
1801
|
}
|
|
@@ -1838,11 +1838,11 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1838
1838
|
const row = rowObjs[r2];
|
|
1839
1839
|
const a2 = new Array(cols.length + extra);
|
|
1840
1840
|
for (let c2 = 0; c2 < cols.length; c2++) {
|
|
1841
|
-
const
|
|
1842
|
-
if (
|
|
1843
|
-
a2[c2] =
|
|
1841
|
+
const v2 = row[colNames[c2]];
|
|
1842
|
+
if (v2 instanceof Date) {
|
|
1843
|
+
a2[c2] = v2.toISOString();
|
|
1844
1844
|
} else {
|
|
1845
|
-
a2[c2] =
|
|
1845
|
+
a2[c2] = v2 ?? null;
|
|
1846
1846
|
}
|
|
1847
1847
|
}
|
|
1848
1848
|
let k3 = cols.length;
|
|
@@ -2067,11 +2067,11 @@ function createMarkResolver(env) {
|
|
|
2067
2067
|
const m2 = el.getScreenCTM();
|
|
2068
2068
|
if (!m2) return Number.MAX_VALUE;
|
|
2069
2069
|
let best = Number.MAX_VALUE;
|
|
2070
|
-
const
|
|
2071
|
-
for (let i = 0; i <=
|
|
2072
|
-
const
|
|
2073
|
-
const dx = m2.a *
|
|
2074
|
-
const dy = m2.b *
|
|
2070
|
+
const N2 = 64;
|
|
2071
|
+
for (let i = 0; i <= N2; i++) {
|
|
2072
|
+
const pt = el.getPointAtLength(L4 * i / N2);
|
|
2073
|
+
const dx = m2.a * pt.x + m2.c * pt.y + m2.e - x3;
|
|
2074
|
+
const dy = m2.b * pt.x + m2.d * pt.y + m2.f - y4;
|
|
2075
2075
|
const d2 = dx * dx + dy * dy;
|
|
2076
2076
|
if (d2 < best) best = d2;
|
|
2077
2077
|
}
|
|
@@ -2390,34 +2390,34 @@ var VALUE_AXIS_MIN_FIT = 0.8;
|
|
|
2390
2390
|
var MIN_AXIS_SPAN_PX = 40;
|
|
2391
2391
|
var EMPTY4 = { marks: 0, axis: "", column: "", fit: 0, offShare: 0, medianOffRadii: 0 };
|
|
2392
2392
|
function num(el, name) {
|
|
2393
|
-
const
|
|
2394
|
-
if (
|
|
2395
|
-
return parseFloat(String(
|
|
2393
|
+
const v2 = el.getAttribute?.(name);
|
|
2394
|
+
if (v2 === null || v2 === void 0 || String(v2).trim() === "") return NaN;
|
|
2395
|
+
return parseFloat(String(v2));
|
|
2396
2396
|
}
|
|
2397
2397
|
function median(xs) {
|
|
2398
2398
|
if (!xs.length) return NaN;
|
|
2399
|
-
const s = [...xs].sort((a2,
|
|
2399
|
+
const s = [...xs].sort((a2, b4) => a2 - b4);
|
|
2400
2400
|
const m2 = s.length >> 1;
|
|
2401
2401
|
return s.length % 2 ? s[m2] : (s[m2 - 1] + s[m2]) / 2;
|
|
2402
2402
|
}
|
|
2403
|
-
function robustLine(
|
|
2404
|
-
const n =
|
|
2403
|
+
function robustLine(v2, pos) {
|
|
2404
|
+
const n = v2.length;
|
|
2405
2405
|
const step = Math.max(1, Math.floor(n / FIT_SAMPLE));
|
|
2406
2406
|
const idx = [];
|
|
2407
2407
|
for (let i = 0; i < n; i += step) idx.push(i);
|
|
2408
2408
|
const slopes = [];
|
|
2409
2409
|
for (let p2 = 0; p2 < idx.length; p2++) {
|
|
2410
2410
|
for (let q2 = p2 + 1; q2 < idx.length; q2++) {
|
|
2411
|
-
const dv =
|
|
2411
|
+
const dv = v2[idx[q2]] - v2[idx[p2]];
|
|
2412
2412
|
if (Math.abs(dv) < 1e-12) continue;
|
|
2413
2413
|
slopes.push((pos[idx[q2]] - pos[idx[p2]]) / dv);
|
|
2414
2414
|
}
|
|
2415
2415
|
}
|
|
2416
2416
|
if (slopes.length < 3) return null;
|
|
2417
|
-
const
|
|
2418
|
-
if (!Number.isFinite(
|
|
2419
|
-
const a2 = median(pos.map((y4, i) => y4 -
|
|
2420
|
-
return Number.isFinite(a2) ? { a: a2, b:
|
|
2417
|
+
const b4 = median(slopes);
|
|
2418
|
+
if (!Number.isFinite(b4) || Math.abs(b4) < 1e-12) return null;
|
|
2419
|
+
const a2 = median(pos.map((y4, i) => y4 - b4 * v2[i]));
|
|
2420
|
+
return Number.isFinite(a2) ? { a: a2, b: b4 } : null;
|
|
2421
2421
|
}
|
|
2422
2422
|
function censusValuePlacement(container, data) {
|
|
2423
2423
|
try {
|
|
@@ -2444,30 +2444,30 @@ function censusValuePlacement(container, data) {
|
|
|
2444
2444
|
for (let c2 = 0; c2 < columns.length; c2++) {
|
|
2445
2445
|
if (/^__.*__$/.test(String(columns[c2]?.name ?? ""))) continue;
|
|
2446
2446
|
const vals = dots.map((d2) => {
|
|
2447
|
-
const
|
|
2448
|
-
return
|
|
2447
|
+
const v2 = d2.row[c2];
|
|
2448
|
+
return v2 === null || v2 === void 0 || v2 === "" ? NaN : typeof v2 === "number" ? v2 : Number(v2);
|
|
2449
2449
|
});
|
|
2450
2450
|
const finite = vals.filter(Number.isFinite);
|
|
2451
2451
|
if (finite.length < dots.length * 0.9 || new Set(finite).size < 8) continue;
|
|
2452
|
-
const logs = finite.every((
|
|
2452
|
+
const logs = finite.every((v2) => v2 > 0) ? [false, true] : [false];
|
|
2453
2453
|
for (const log of logs) {
|
|
2454
2454
|
for (const axis of ["x", "y"]) {
|
|
2455
2455
|
const keep = [];
|
|
2456
|
-
const
|
|
2456
|
+
const v2 = [], pos = [];
|
|
2457
2457
|
dots.forEach((d2, k3) => {
|
|
2458
2458
|
if (!Number.isFinite(vals[k3])) return;
|
|
2459
2459
|
keep.push(k3);
|
|
2460
|
-
|
|
2460
|
+
v2.push(log ? Math.log10(vals[k3]) : vals[k3]);
|
|
2461
2461
|
pos.push(axis === "x" ? d2.x : d2.y);
|
|
2462
2462
|
});
|
|
2463
|
-
const line = robustLine(
|
|
2463
|
+
const line = robustLine(v2, pos);
|
|
2464
2464
|
if (!line) continue;
|
|
2465
2465
|
const lo = Math.min(...pos), hi = Math.max(...pos);
|
|
2466
2466
|
if (hi - lo < MIN_AXIS_SPAN_PX) continue;
|
|
2467
2467
|
const mean = pos.reduce((s, p2) => s + p2, 0) / pos.length;
|
|
2468
2468
|
let ssRes = 0, ssTot = 0;
|
|
2469
2469
|
const res = pos.map((p2, k3) => {
|
|
2470
|
-
const e = p2 - (line.a + line.b *
|
|
2470
|
+
const e = p2 - (line.a + line.b * v2[k3]);
|
|
2471
2471
|
ssRes += e * e;
|
|
2472
2472
|
ssTot += (p2 - mean) ** 2;
|
|
2473
2473
|
return e;
|
|
@@ -2524,14 +2524,14 @@ function needsScroll(contentPx, viewportPx, slackPx = SCROLL_SLACK_PX) {
|
|
|
2524
2524
|
}
|
|
2525
2525
|
function contentExtentOf(boxes) {
|
|
2526
2526
|
if (!boxes || boxes.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2527
|
-
const usable = boxes.filter((
|
|
2527
|
+
const usable = boxes.filter((b4) => b4 && isFinite(b4.right) && isFinite(b4.bottom) && (b4.right > 0 || b4.bottom > 0));
|
|
2528
2528
|
if (usable.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2529
|
-
const inFlow = usable.filter((
|
|
2529
|
+
const inFlow = usable.filter((b4) => !b4.floating);
|
|
2530
2530
|
const counted = inFlow.length > 0 ? inFlow : usable;
|
|
2531
2531
|
let w2 = 0, h3 = 0;
|
|
2532
|
-
for (const
|
|
2533
|
-
if (
|
|
2534
|
-
if (
|
|
2532
|
+
for (const b4 of counted) {
|
|
2533
|
+
if (b4.right > w2) w2 = b4.right;
|
|
2534
|
+
if (b4.bottom > h3) h3 = b4.bottom;
|
|
2535
2535
|
}
|
|
2536
2536
|
return { w: w2, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
|
|
2537
2537
|
}
|
|
@@ -2565,8 +2565,8 @@ var AXIS_PIN_TRACK_REACH_PX = 12;
|
|
|
2565
2565
|
function isHorizontalLabelRow(boxes) {
|
|
2566
2566
|
if (!boxes || boxes.length < 2) return false;
|
|
2567
2567
|
let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
|
|
2568
|
-
for (const
|
|
2569
|
-
const cx = (
|
|
2568
|
+
for (const b4 of boxes) {
|
|
2569
|
+
const cx = (b4.left + b4.right) / 2, cy = (b4.top + b4.bottom) / 2;
|
|
2570
2570
|
if (!isFinite(cx) || !isFinite(cy)) return false;
|
|
2571
2571
|
if (cx < minX) minX = cx;
|
|
2572
2572
|
if (cx > maxX) maxX = cx;
|
|
@@ -2578,10 +2578,10 @@ function isHorizontalLabelRow(boxes) {
|
|
|
2578
2578
|
function labelBand(boxes, tracks = [], pad = AXIS_PIN_BAND_PAD_PX, trackReach = AXIS_PIN_TRACK_REACH_PX) {
|
|
2579
2579
|
if (!boxes || boxes.length === 0) return null;
|
|
2580
2580
|
let top = Infinity, bottom = -Infinity;
|
|
2581
|
-
for (const
|
|
2582
|
-
if (!isFinite(
|
|
2583
|
-
if (
|
|
2584
|
-
if (
|
|
2581
|
+
for (const b4 of boxes) {
|
|
2582
|
+
if (!isFinite(b4.top) || !isFinite(b4.bottom)) continue;
|
|
2583
|
+
if (b4.top < top) top = b4.top;
|
|
2584
|
+
if (b4.bottom > bottom) bottom = b4.bottom;
|
|
2585
2585
|
}
|
|
2586
2586
|
if (!isFinite(top) || !isFinite(bottom) || bottom <= top) return null;
|
|
2587
2587
|
for (const t of tracks || []) {
|
|
@@ -2696,7 +2696,7 @@ function fitReadingFor(lane, c2, slackPx = SCROLL_SLACK_PX, inkOf) {
|
|
|
2696
2696
|
overflowsY: needsScroll(contentH, viewH, slackPx),
|
|
2697
2697
|
extentSource: extent.source,
|
|
2698
2698
|
boxes: boxes.length,
|
|
2699
|
-
floating: boxes.filter((
|
|
2699
|
+
floating: boxes.filter((b4) => b4.floating).length,
|
|
2700
2700
|
scrollW: c2.scrollWidth,
|
|
2701
2701
|
scrollH: c2.scrollHeight
|
|
2702
2702
|
};
|
|
@@ -2707,14 +2707,14 @@ var SVG_NS2 = "http://www.w3.org/2000/svg";
|
|
|
2707
2707
|
var AXIS_PIN_MAX_CARRIED = 12;
|
|
2708
2708
|
function unpinScrolledAxis(container) {
|
|
2709
2709
|
if (!container) return;
|
|
2710
|
-
const
|
|
2711
|
-
if (!
|
|
2710
|
+
const st2 = container[CONTAINER_SLOT_AXIS_PIN];
|
|
2711
|
+
if (!st2) return;
|
|
2712
2712
|
try {
|
|
2713
|
-
container.removeEventListener("scroll",
|
|
2713
|
+
container.removeEventListener("scroll", st2.onScroll);
|
|
2714
2714
|
} catch {
|
|
2715
2715
|
}
|
|
2716
2716
|
try {
|
|
2717
|
-
if (
|
|
2717
|
+
if (st2.overlay.parentNode) st2.overlay.parentNode.removeChild(st2.overlay);
|
|
2718
2718
|
} catch {
|
|
2719
2719
|
}
|
|
2720
2720
|
try {
|
|
@@ -2737,8 +2737,8 @@ function backdropFill(svg, container, view, svgBox) {
|
|
|
2737
2737
|
for (let i = 0; i < rects.length && i < 6; i++) {
|
|
2738
2738
|
const r2 = rects[i];
|
|
2739
2739
|
if (r2.closest(".d3-mark")) continue;
|
|
2740
|
-
const
|
|
2741
|
-
if (
|
|
2740
|
+
const b4 = r2.getBoundingClientRect();
|
|
2741
|
+
if (b4.width >= svgBox.width * 0.9 && b4.height >= svgBox.height * 0.9) {
|
|
2742
2742
|
let fill = "";
|
|
2743
2743
|
try {
|
|
2744
2744
|
fill = view.getComputedStyle(r2).fill || "";
|
|
@@ -2843,8 +2843,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2843
2843
|
}
|
|
2844
2844
|
const pinSvg = doc.createElementNS(SVG_NS2, "svg");
|
|
2845
2845
|
for (const a2 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
|
|
2846
|
-
const
|
|
2847
|
-
if (
|
|
2846
|
+
const v2 = svg.getAttribute(a2);
|
|
2847
|
+
if (v2) pinSvg.setAttribute(a2, v2);
|
|
2848
2848
|
}
|
|
2849
2849
|
const styles = svg.querySelectorAll("style");
|
|
2850
2850
|
for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
|
|
@@ -2892,15 +2892,15 @@ function pinScrolledAxis(container, svg) {
|
|
|
2892
2892
|
const svgTop = svgBox.top - cRect.top - container.clientTop + container.scrollTop;
|
|
2893
2893
|
const contentBand = { top: svgTop + band.top, bottom: svgTop + band.bottom };
|
|
2894
2894
|
const place = () => {
|
|
2895
|
-
const
|
|
2896
|
-
const edge2 = axisPinPlacement(contentBand,
|
|
2895
|
+
const st2 = container.scrollTop, vh = container.clientHeight;
|
|
2896
|
+
const edge2 = axisPinPlacement(contentBand, st2, vh);
|
|
2897
2897
|
if (!edge2) {
|
|
2898
2898
|
o2.display = "none";
|
|
2899
2899
|
return null;
|
|
2900
2900
|
}
|
|
2901
2901
|
o2.display = "block";
|
|
2902
2902
|
o2.left = `${svgLeft}px`;
|
|
2903
|
-
o2.top = `${edge2 === "top" ?
|
|
2903
|
+
o2.top = `${edge2 === "top" ? st2 : st2 + vh - bandPx}px`;
|
|
2904
2904
|
return edge2;
|
|
2905
2905
|
};
|
|
2906
2906
|
const onScroll = () => {
|
|
@@ -2977,8 +2977,8 @@ function fitRenderedChart(container, opts = {}) {
|
|
|
2977
2977
|
if (plan.grow) {
|
|
2978
2978
|
svg.setAttribute("height", String(plan.heightPx));
|
|
2979
2979
|
if (vb > 0) {
|
|
2980
|
-
const
|
|
2981
|
-
svg.setAttribute("viewBox", `${
|
|
2980
|
+
const b4 = svg.viewBox.baseVal;
|
|
2981
|
+
svg.setAttribute("viewBox", `${b4.x} ${b4.y} ${b4.width} ${plan.viewBoxH}`);
|
|
2982
2982
|
}
|
|
2983
2983
|
result.grew = true;
|
|
2984
2984
|
}
|
|
@@ -3076,8 +3076,8 @@ function compositeOver(fg, bg) {
|
|
|
3076
3076
|
];
|
|
3077
3077
|
}
|
|
3078
3078
|
function relativeLuminance(rgb) {
|
|
3079
|
-
const lin = rgb.map((
|
|
3080
|
-
const s =
|
|
3079
|
+
const lin = rgb.map((v2) => {
|
|
3080
|
+
const s = v2 / 255;
|
|
3081
3081
|
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
3082
3082
|
});
|
|
3083
3083
|
return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
|
|
@@ -3125,9 +3125,9 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
|
3125
3125
|
}
|
|
3126
3126
|
return out;
|
|
3127
3127
|
}
|
|
3128
|
-
function clamp01(
|
|
3129
|
-
if (typeof
|
|
3130
|
-
return Math.max(0, Math.min(1,
|
|
3128
|
+
function clamp01(v2) {
|
|
3129
|
+
if (typeof v2 !== "number" || !isFinite(v2)) return 1;
|
|
3130
|
+
return Math.max(0, Math.min(1, v2));
|
|
3131
3131
|
}
|
|
3132
3132
|
function hexToRGB(hex2) {
|
|
3133
3133
|
const p2 = toRGBA(hex2);
|
|
@@ -3140,10 +3140,10 @@ var LABEL_CONTRAST_CAP = 2e3;
|
|
|
3140
3140
|
var EMPTY5 = { rects: 0, scanned: 0, fixed: 0, pillsBoosted: 0, offFill: 0, pageMajority: 0, paintedOver: 0 };
|
|
3141
3141
|
function backedSamples(el, pts) {
|
|
3142
3142
|
try {
|
|
3143
|
-
const
|
|
3144
|
-
if (typeof
|
|
3145
|
-
const m2 =
|
|
3146
|
-
const svg =
|
|
3143
|
+
const ge3 = el;
|
|
3144
|
+
if (typeof ge3.isPointInFill !== "function" || typeof ge3.getScreenCTM !== "function") return null;
|
|
3145
|
+
const m2 = ge3.getScreenCTM();
|
|
3146
|
+
const svg = ge3.ownerSVGElement;
|
|
3147
3147
|
if (!m2 || !svg || typeof svg.createSVGPoint !== "function") return null;
|
|
3148
3148
|
if (pts.length === 0) return null;
|
|
3149
3149
|
const inv = m2.inverse();
|
|
@@ -3152,7 +3152,7 @@ function backedSamples(el, pts) {
|
|
|
3152
3152
|
const p2 = svg.createSVGPoint();
|
|
3153
3153
|
p2.x = pts[i].x;
|
|
3154
3154
|
p2.y = pts[i].y;
|
|
3155
|
-
hit.push(
|
|
3155
|
+
hit.push(ge3.isPointInFill(p2.matrixTransform(inv)));
|
|
3156
3156
|
}
|
|
3157
3157
|
return hit;
|
|
3158
3158
|
} catch {
|
|
@@ -3280,7 +3280,7 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
3280
3280
|
}
|
|
3281
3281
|
report.scanned++;
|
|
3282
3282
|
const opaqueUnder = under.filter((x3) => effAlpha(x3.mk) >= PILL_OPAQUE_ALPHA);
|
|
3283
|
-
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a2,
|
|
3283
|
+
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a2, b4) => b4.ov > a2.ov || b4.ov === a2.ov && b4.mk.ord > a2.mk.ord ? b4 : a2);
|
|
3284
3284
|
const cell = cellEntry.mk;
|
|
3285
3285
|
const pill = under.find((x3) => x3.mk !== cell && isPillBackdropAlpha(effAlpha(x3.mk)) && x3.mk.ord > cell.ord && pillBacksGlyph(x3.ov, glyphArea))?.mk;
|
|
3286
3286
|
const cellRGBA = toRGBA(cell.fill);
|
|
@@ -3437,7 +3437,7 @@ function compileRenderFn(code, win, doc, d3) {
|
|
|
3437
3437
|
return fn;
|
|
3438
3438
|
}
|
|
3439
3439
|
var ASYNC_RENDER_TIMEOUT_MS = 15e3;
|
|
3440
|
-
var isThenable = (
|
|
3440
|
+
var isThenable = (v2) => !!v2 && (typeof v2 === "object" || typeof v2 === "function") && typeof v2.then === "function";
|
|
3441
3441
|
function createChartHost(container, config) {
|
|
3442
3442
|
const doc = container.ownerDocument;
|
|
3443
3443
|
const win = doc?.defaultView ?? globalThis;
|
|
@@ -3445,7 +3445,7 @@ function createChartHost(container, config) {
|
|
|
3445
3445
|
let data = config.data;
|
|
3446
3446
|
{
|
|
3447
3447
|
const stamped = config.data?.meta?.hostContract;
|
|
3448
|
-
const major = (
|
|
3448
|
+
const major = (v2) => (v2 || "").split(".")[0];
|
|
3449
3449
|
if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
|
|
3450
3450
|
try {
|
|
3451
3451
|
(win?.console ?? console)?.warn(
|
|
@@ -3499,9 +3499,9 @@ function createChartHost(container, config) {
|
|
|
3499
3499
|
const ensureAffordanceStyles = () => {
|
|
3500
3500
|
try {
|
|
3501
3501
|
if (!doc || doc.getElementById("bic-chart-host-affordances")) return;
|
|
3502
|
-
const
|
|
3503
|
-
|
|
3504
|
-
|
|
3502
|
+
const st2 = doc.createElement("style");
|
|
3503
|
+
st2.id = "bic-chart-host-affordances";
|
|
3504
|
+
st2.textContent = `
|
|
3505
3505
|
/* TYPOGRAPHY FIREWALL. Generated charts set font-size but almost never line-height or
|
|
3506
3506
|
letter-spacing, so they INHERIT whatever the host page cascades in. A page with
|
|
3507
3507
|
\`:root { font: 18px/145% }\` (the stock Vite template does exactly this) hands every
|
|
@@ -3550,7 +3550,7 @@ function createChartHost(container, config) {
|
|
|
3550
3550
|
font-weight: 700 !important;
|
|
3551
3551
|
text-decoration: underline !important;
|
|
3552
3552
|
}`;
|
|
3553
|
-
(doc.head || doc.documentElement)?.appendChild(
|
|
3553
|
+
(doc.head || doc.documentElement)?.appendChild(st2);
|
|
3554
3554
|
} catch {
|
|
3555
3555
|
}
|
|
3556
3556
|
};
|
|
@@ -3862,16 +3862,16 @@ function toSourceRows(rowMap, payloadRowIdxs) {
|
|
|
3862
3862
|
return payloadRowIdxs.map((i) => rowMap[i]).filter((i) => i !== void 0);
|
|
3863
3863
|
}
|
|
3864
3864
|
function toPayloadRows(rowMap, sourceRowIdxs) {
|
|
3865
|
-
const
|
|
3865
|
+
const at2 = /* @__PURE__ */ new Map();
|
|
3866
3866
|
rowMap.forEach((src, k3) => {
|
|
3867
|
-
if (!
|
|
3867
|
+
if (!at2.has(src)) at2.set(src, k3);
|
|
3868
3868
|
});
|
|
3869
|
-
return sourceRowIdxs.map((s) =>
|
|
3869
|
+
return sourceRowIdxs.map((s) => at2.get(s)).filter((k3) => k3 !== void 0);
|
|
3870
3870
|
}
|
|
3871
|
-
var sameRows = (a2,
|
|
3872
|
-
if (a2.length !==
|
|
3873
|
-
const x3 = a2.slice().sort((p2, q2) => p2 - q2), y4 =
|
|
3874
|
-
return x3.every((
|
|
3871
|
+
var sameRows = (a2, b4) => {
|
|
3872
|
+
if (a2.length !== b4.length) return false;
|
|
3873
|
+
const x3 = a2.slice().sort((p2, q2) => p2 - q2), y4 = b4.slice().sort((p2, q2) => p2 - q2);
|
|
3874
|
+
return x3.every((v2, i) => v2 === y4[i]);
|
|
3875
3875
|
};
|
|
3876
3876
|
function syncMemberSelection(host, selection, id, highlight, incoming, rowMap) {
|
|
3877
3877
|
const mine = selection.sourceId === id && selection.rows.length > 0;
|
|
@@ -4048,13 +4048,13 @@ export {
|
|
|
4048
4048
|
registerGeo,
|
|
4049
4049
|
registerGeoAsset,
|
|
4050
4050
|
clearGeoCache,
|
|
4051
|
-
|
|
4052
|
-
|
|
4051
|
+
le,
|
|
4052
|
+
L2 as L,
|
|
4053
4053
|
L3,
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
Ln,
|
|
4054
|
+
Ye,
|
|
4055
|
+
He,
|
|
4057
4056
|
On,
|
|
4057
|
+
kn,
|
|
4058
4058
|
buildRenderPayload,
|
|
4059
4059
|
stripJsComments,
|
|
4060
4060
|
isInsideControl,
|