@bicharts/chart-host 0.5.112 → 0.5.113
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-X3HRLEDK.mjs → chunk-IXJYGTAY.mjs} +267 -267
- package/dist/index.mjs +1 -1
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -22,8 +22,8 @@ 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 r() {
|
|
24
24
|
var n = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : {};
|
|
25
|
-
var d2, s = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {},
|
|
26
|
-
function
|
|
25
|
+
var d2, s = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {}, h4 = 0, v3 = {};
|
|
26
|
+
function P4(e) {
|
|
27
27
|
return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
|
|
28
28
|
}
|
|
29
29
|
function u2(e) {
|
|
@@ -41,7 +41,7 @@ var require_papaparse_min = __commonJS({
|
|
|
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 (a4) n.postMessage({ results: r2, workerId:
|
|
44
|
+
if (a4) n.postMessage({ results: r2, workerId: v3.WORKER_ID, finished: i2 });
|
|
45
45
|
else if (q4(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;
|
|
@@ -50,12 +50,12 @@ var require_papaparse_min = __commonJS({
|
|
|
50
50
|
}
|
|
51
51
|
this._halted = true;
|
|
52
52
|
}, this._sendError = function(e2) {
|
|
53
|
-
q4(this._config.error) ? this._config.error(e2) : a4 && this._config.error && n.postMessage({ workerId:
|
|
53
|
+
q4(this._config.error) ? this._config.error(e2) : a4 && this._config.error && n.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();
|
|
@@ -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 = v3.LocalChunkSize), u2.call(this, e);
|
|
89
89
|
var i2, r2, n2 = "undefined" != typeof FileReader;
|
|
90
90
|
this.stream = function(e2) {
|
|
91
91
|
this._input = e2, r2 = e2.slice || e2.webkitSlice || e2.mozSlice, n2 ? ((i2 = new FileReader()).onload = y5(this._chunkLoaded, this), i2.onerror = y5(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk();
|
|
@@ -137,16 +137,16 @@ var require_papaparse_min = __commonJS({
|
|
|
137
137
|
}, this);
|
|
138
138
|
}
|
|
139
139
|
function i(m4) {
|
|
140
|
-
var n2, s2, a5, t, o2 = Math.pow(2, 53),
|
|
140
|
+
var n2, s2, a5, t, o2 = Math.pow(2, 53), h5 = -o2, 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
141
|
function y6(e2) {
|
|
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 && a5 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" +
|
|
145
|
+
if (p4 && a5 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v3.DefaultDelimiter + "'"), a5 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
|
|
146
146
|
return !y6(e4);
|
|
147
147
|
})), _3()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
149
|
-
e4 =
|
|
149
|
+
e4 = P4(e4), q4(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])) {
|
|
@@ -159,7 +159,7 @@ var require_papaparse_min = __commonJS({
|
|
|
159
159
|
var n4 = 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 (
|
|
162
|
+
if (h5 < e6 && e6 < o2) return 1;
|
|
163
163
|
}
|
|
164
164
|
})(t5) ? parseFloat(t5) : d3.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(n4 = m4.header ? r5 >= c4.length ? "__parsed_extra" : c4[r5] : n4, s4 = m4.transform ? m4.transform(s4, n4) : s4);
|
|
165
165
|
"__parsed_extra" === n4 ? (i5[n4] = i5[n4] || [], i5[n4].push(s4)) : i5[n4] = s4;
|
|
@@ -180,15 +180,15 @@ var require_papaparse_min = __commonJS({
|
|
|
180
180
|
p4 = e2, _3() ? 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
182
|
var r4 = m4.quoteChar || '"', r4 = (m4.newline || (m4.newline = this.guessLineEndings(e2, r4)), a5 = false, m4.delimiter ? q4(m4.delimiter) && (m4.delimiter = m4.delimiter(e2), p4.meta.delimiter = m4.delimiter) : ((r4 = ((e4, t4, i5, r5, n4) => {
|
|
183
|
-
var s4, a6, o4,
|
|
184
|
-
n4 = n4 || [",", " ", "|", ";",
|
|
183
|
+
var s4, a6, o4, h6;
|
|
184
|
+
n4 = n4 || [",", " ", "|", ";", v3.RECORD_SEP, v3.UNIT_SEP];
|
|
185
185
|
for (var u5 = 0; u5 < n4.length; u5++) {
|
|
186
|
-
for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o4 = void 0, new
|
|
187
|
-
0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a6 || l3 <= a6) && (void 0 ===
|
|
186
|
+
for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o4 = void 0, new E4({ comments: r5, delimiter: f6, newline: t4, preview: 10 }).parse(e4)), _4 = 0; _4 < g5.data.length; _4++) i5 && y6(g5.data[_4]) ? p5++ : (d4 = g5.data[_4].length, c5 += d4, void 0 === o4 ? o4 = d4 : 0 < d4 && (l3 += Math.abs(d4 - o4), o4 = d4));
|
|
187
|
+
0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a6 || l3 <= a6) && (void 0 === h6 || h6 < c5) && 1.99 < c5 && (a6 = l3, s4 = f6, h6 = 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 = r4.bestDelimiter : (a5 = true, m4.delimiter =
|
|
191
|
-
return m4.preview && m4.header && r4.preview++, n2 = e2, s2 = new
|
|
190
|
+
})(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r4.bestDelimiter : (a5 = true, m4.delimiter = v3.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b4(m4));
|
|
191
|
+
return m4.preview && m4.header && r4.preview++, n2 = e2, s2 = new E4(r4), p4 = s2.parse(n2, 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() {
|
|
@@ -210,78 +210,78 @@ var require_papaparse_min = __commonJS({
|
|
|
210
210
|
function U2(e) {
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
|
-
function
|
|
214
|
-
var S = (
|
|
215
|
-
if (void 0 !==
|
|
216
|
-
true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 <
|
|
217
|
-
var z3 = 0,
|
|
213
|
+
function E4(C) {
|
|
214
|
+
var S = (C = C || {}).delimiter, O2 = C.newline, x3 = C.comments, I2 = C.step, A = C.preview, T3 = C.fastMode, D4 = null, L2 = false, F4 = null == C.quoteChar ? '"' : C.quoteChar, j2 = F4;
|
|
215
|
+
if (void 0 !== C.escapeChar && (j2 = C.escapeChar), ("string" != typeof S || -1 < v3.BAD_DELIMITERS.indexOf(S)) && (S = ","), x3 === S) throw new Error("Comment character same as delimiter");
|
|
216
|
+
true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v3.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O2 && "\r" !== O2 && "\r\n" !== O2 && (O2 = "\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 n2 = i2.length, e = S.length, s2 = O2.length, a5 = x3.length, o2 = q4(I2),
|
|
221
|
-
if (!i2) return
|
|
220
|
+
var n2 = i2.length, e = S.length, s2 = O2.length, a5 = x3.length, o2 = q4(I2), h5 = [], u4 = [], d3 = [], f5 = z3 = 0;
|
|
221
|
+
if (!i2) return w2();
|
|
222
222
|
if (T3 || false !== T3 && -1 === i2.indexOf(F4)) {
|
|
223
223
|
for (var l2 = i2.split(O2), c4 = 0; c4 < l2.length; c4++) {
|
|
224
224
|
if (d3 = l2[c4], z3 += d3.length, c4 !== l2.length - 1) z3 += O2.length;
|
|
225
|
-
else if (r2) return
|
|
225
|
+
else if (r2) return w2();
|
|
226
226
|
if (!x3 || d3.substring(0, a5) !== x3) {
|
|
227
227
|
if (o2) {
|
|
228
|
-
if (
|
|
228
|
+
if (h5 = [], k2(d3.split(S)), R2(), M2) return w2();
|
|
229
229
|
} else k2(d3.split(S));
|
|
230
|
-
if (
|
|
230
|
+
if (A && A <= c4) return h5 = h5.slice(0, A), w2(true);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
return
|
|
233
|
+
return w2();
|
|
234
234
|
}
|
|
235
235
|
for (var p4 = i2.indexOf(S, z3), g4 = i2.indexOf(O2, z3), _3 = new RegExp(U2(j2) + U2(F4), "g"), m4 = i2.indexOf(F4, z3); ; ) if (i2[z3] === F4) for (m4 = z3, z3++; ; ) {
|
|
236
|
-
if (-1 === (m4 = i2.indexOf(F4, m4 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row:
|
|
237
|
-
if (m4 === n2 - 1) return
|
|
236
|
+
if (-1 === (m4 = i2.indexOf(F4, m4 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h5.length, index: z3 }), E5();
|
|
237
|
+
if (m4 === n2 - 1) return E5(i2.substring(z3, m4).replace(_3, F4));
|
|
238
238
|
if (F4 === j2 && i2[m4 + 1] === j2) m4++;
|
|
239
239
|
else if (F4 === j2 || 0 === m4 || i2[m4 - 1] !== j2) {
|
|
240
240
|
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S, m4 + 1));
|
|
241
|
-
var y6 =
|
|
241
|
+
var y6 = v4(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O2, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
|
|
242
242
|
if (i2.substr(m4 + 1 + y6, e) === S) {
|
|
243
243
|
d3.push(i2.substring(z3, m4).replace(_3, F4)), i2[z3 = m4 + 1 + y6 + e] !== F4 && (m4 = i2.indexOf(F4, z3)), p4 = i2.indexOf(S, z3), g4 = i2.indexOf(O2, z3);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
|
-
y6 =
|
|
246
|
+
y6 = v4(g4);
|
|
247
247
|
if (i2.substring(m4 + 1 + y6, m4 + 1 + y6 + s2) === O2) {
|
|
248
|
-
if (d3.push(i2.substring(z3, m4).replace(_3, F4)), b5(m4 + 1 + y6 + s2), p4 = i2.indexOf(S, z3), m4 = i2.indexOf(F4, z3), o2 && (R2(),
|
|
249
|
-
if (
|
|
248
|
+
if (d3.push(i2.substring(z3, m4).replace(_3, F4)), b5(m4 + 1 + y6 + s2), p4 = i2.indexOf(S, z3), m4 = i2.indexOf(F4, z3), o2 && (R2(), M2)) return w2();
|
|
249
|
+
if (A && h5.length >= A) return w2(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
252
|
-
u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row:
|
|
252
|
+
u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h5.length, index: z3 }), m4++;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
else if (x3 && 0 === d3.length && i2.substring(z3, z3 + a5) === x3) {
|
|
256
|
-
if (-1 === g4) return
|
|
256
|
+
if (-1 === g4) return w2();
|
|
257
257
|
z3 = g4 + s2, g4 = i2.indexOf(O2, z3), p4 = i2.indexOf(S, z3);
|
|
258
258
|
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z3, p4)), z3 = p4 + e, p4 = i2.indexOf(S, z3);
|
|
259
259
|
else {
|
|
260
260
|
if (-1 === g4) break;
|
|
261
|
-
if (d3.push(i2.substring(z3, g4)), b5(g4 + s2), o2 && (R2(),
|
|
262
|
-
if (
|
|
261
|
+
if (d3.push(i2.substring(z3, g4)), b5(g4 + s2), o2 && (R2(), M2)) return w2();
|
|
262
|
+
if (A && h5.length >= A) return w2(true);
|
|
263
263
|
}
|
|
264
|
-
return
|
|
264
|
+
return E5();
|
|
265
265
|
function k2(e2) {
|
|
266
|
-
|
|
266
|
+
h5.push(e2), f5 = z3;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function v4(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
|
-
function
|
|
273
|
-
return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d3.push(e2), z3 = n2, k2(d3), o2 && R2()),
|
|
272
|
+
function E5(e2) {
|
|
273
|
+
return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d3.push(e2), z3 = n2, k2(d3), o2 && R2()), w2();
|
|
274
274
|
}
|
|
275
275
|
function b5(e2) {
|
|
276
276
|
z3 = e2, k2(d3), d3 = [], g4 = i2.indexOf(O2, z3);
|
|
277
277
|
}
|
|
278
|
-
function
|
|
279
|
-
if (
|
|
280
|
-
var s4 =
|
|
278
|
+
function w2(e2) {
|
|
279
|
+
if (C.header && !t && h5.length && !L2) {
|
|
280
|
+
var s4 = h5[0], a6 = /* @__PURE__ */ Object.create(null), o4 = new Set(s4);
|
|
281
281
|
let n4 = false;
|
|
282
282
|
for (let r4 = 0; r4 < s4.length; r4++) {
|
|
283
|
-
let i4 =
|
|
284
|
-
if (a6[i4 = q4(
|
|
283
|
+
let i4 = P4(s4[r4]);
|
|
284
|
+
if (a6[i4 = q4(C.transformHeader) ? C.transformHeader(i4, r4) : i4]) {
|
|
285
285
|
let e4, t2 = a6[i4];
|
|
286
286
|
for (; e4 = i4 + "_" + t2, t2++, o4.has(e4); ) ;
|
|
287
287
|
o4.add(e4), s4[r4] = e4, a6[i4]++, n4 = true, (D4 = null === D4 ? {} : D4)[e4] = i4;
|
|
@@ -290,13 +290,13 @@ var require_papaparse_min = __commonJS({
|
|
|
290
290
|
}
|
|
291
291
|
n4 && console.warn("Duplicate headers found and renamed."), L2 = true;
|
|
292
292
|
}
|
|
293
|
-
return { data:
|
|
293
|
+
return { data: h5, errors: u4, meta: { delimiter: S, linebreak: O2, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D4 } };
|
|
294
294
|
}
|
|
295
295
|
function R2() {
|
|
296
|
-
I2(
|
|
296
|
+
I2(w2()), h5 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
|
-
|
|
299
|
+
M2 = true;
|
|
300
300
|
}, this.getCharIndex = function() {
|
|
301
301
|
return z3;
|
|
302
302
|
};
|
|
@@ -336,27 +336,27 @@ var require_papaparse_min = __commonJS({
|
|
|
336
336
|
function q4(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
341
|
q4(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
342
|
-
if (t.dynamicTyping = i2, t.transform = !!q4(t.transform) && t.transform, !t.worker || !
|
|
342
|
+
if (t.dynamicTyping = i2, t.transform = !!q4(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 && q4(e.read) && q4(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 !!v3.WORKERS_SUPPORTED && (e2 = (() => {
|
|
346
346
|
var e4 = n.URL || n.webkitURL || null, t2 = r.toString();
|
|
347
|
-
return
|
|
348
|
-
})(), (e2 = new n.Worker(e2)).onmessage = g3, e2.id =
|
|
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 n.Worker(e2)).onmessage = g3, e2.id = h4++, o[e2.id] = e2);
|
|
349
349
|
})()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step = q4(t.step), t.chunk = q4(t.chunk), t.complete = q4(t.complete), t.error = q4(t.error), delete t.worker, i2.postMessage({ input: e, config: t, workerId: i2.id });
|
|
350
|
-
},
|
|
351
|
-
var s2 = false, _3 = true, m4 = ",", y6 = "\r\n", a5 = '"', o2 = a5 + a5, i2 = false, r2 = null,
|
|
350
|
+
}, v3.unparse = function(e, t) {
|
|
351
|
+
var s2 = false, _3 = true, m4 = ",", y6 = "\r\n", a5 = '"', o2 = a5 + a5, i2 = false, r2 = null, h5 = 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
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 && (y6 = t.newline), "string" == typeof t.quoteChar && (a5 = t.quoteChar, o2 = a5 + a5), "boolean" == typeof t.header && (_3 = 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 && (o2 = t.escapeChar + a5), t.escapeFormulae instanceof RegExp ?
|
|
359
|
+
void 0 !== t.escapeChar && (o2 = t.escapeChar + a5), t.escapeFormulae instanceof RegExp ? h5 = t.escapeFormulae : "boolean" == typeof t.escapeFormulae && t.escapeFormulae && (h5 = /^[=+\-@\t\r].*$/);
|
|
360
360
|
}
|
|
361
361
|
})(), new RegExp(U2(a5), "g"));
|
|
362
362
|
"string" == typeof e && (e = JSON.parse(e));
|
|
@@ -372,42 +372,42 @@ var require_papaparse_min = __commonJS({
|
|
|
372
372
|
0 < t2.length && (r4 += y6);
|
|
373
373
|
}
|
|
374
374
|
for (var o4 = 0; o4 < t2.length; o4++) {
|
|
375
|
-
var
|
|
375
|
+
var h6 = (n4 ? e2 : t2[o4]).length, u5 = false, d3 = n4 ? 0 === Object.keys(t2[o4]).length : 0 === t2[o4].length;
|
|
376
376
|
if (i4 && !n4 && (u5 = "greedy" === i4 ? "" === t2[o4].join("").trim() : 1 === t2[o4].length && 0 === t2[o4][0].length), "greedy" === i4 && n4) {
|
|
377
|
-
for (var f5 = [], l2 = 0; l2 <
|
|
377
|
+
for (var f5 = [], l2 = 0; l2 < h6; l2++) {
|
|
378
378
|
var c4 = s4 ? e2[l2] : l2;
|
|
379
379
|
f5.push(t2[o4][c4]);
|
|
380
380
|
}
|
|
381
381
|
u5 = "" === f5.join("").trim();
|
|
382
382
|
}
|
|
383
383
|
if (!u5) {
|
|
384
|
-
for (var p4 = 0; p4 <
|
|
384
|
+
for (var p4 = 0; p4 < h6; p4++) {
|
|
385
385
|
0 < p4 && !d3 && (r4 += m4);
|
|
386
386
|
var g4 = n4 && s4 ? e2[p4] : p4;
|
|
387
387
|
r4 += k2(t2[o4][g4], p4);
|
|
388
388
|
}
|
|
389
|
-
o4 < t2.length - 1 && (!i4 || 0 <
|
|
389
|
+
o4 < t2.length - 1 && (!i4 || 0 < h6 && !d3) && (r4 += y6);
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
392
|
return r4;
|
|
393
393
|
}
|
|
394
394
|
function k2(e2, t2) {
|
|
395
395
|
var i4, r4, n4;
|
|
396
|
-
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n4 = false,
|
|
396
|
+
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n4 = false, h5 && "string" == typeof e2 && h5.test(e2) && (e2 = "'" + e2, n4 = true), r4 = (i4 = e2.toString()).replace(u4, o2), (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
|
-
})(r4,
|
|
399
|
+
})(r4, v3.BAD_DELIMITERS) || -1 < r4.indexOf(m4) || -1 < i4.indexOf(a5) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a5 + r4 + a5 : r4);
|
|
400
400
|
}
|
|
401
|
-
},
|
|
402
|
-
var i2 = o2.config || {},
|
|
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 && !!n.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, n.jQuery && ((d2 = n.jQuery).fn.parse = function(o2) {
|
|
402
|
+
var i2 = o2.config || {}, h5 = [];
|
|
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;
|
|
405
|
-
for (var t = 0; t < this.files.length; t++)
|
|
405
|
+
for (var t = 0; t < this.files.length; t++) h5.push({ file: this.files[t], inputElem: this, instanceConfig: d2.extend({}, i2) });
|
|
406
406
|
}), e(), this;
|
|
407
407
|
function e() {
|
|
408
|
-
if (0 ===
|
|
408
|
+
if (0 === h5.length) q4(o2.complete) && o2.complete();
|
|
409
409
|
else {
|
|
410
|
-
var e2, t, i4, r2, n2 =
|
|
410
|
+
var e2, t, i4, r2, n2 = h5[0];
|
|
411
411
|
if (q4(o2.before)) {
|
|
412
412
|
var s2 = o2.before(n2.file, n2.inputElem);
|
|
413
413
|
if ("object" == typeof s2) {
|
|
@@ -419,17 +419,17 @@ var require_papaparse_min = __commonJS({
|
|
|
419
419
|
var a5 = n2.instanceConfig.complete;
|
|
420
420
|
n2.instanceConfig.complete = function(e4) {
|
|
421
421
|
q4(a5) && a5(e4, n2.file, n2.inputElem), u4();
|
|
422
|
-
},
|
|
422
|
+
}, v3.parse(n2.file, n2.instanceConfig);
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
function u4() {
|
|
426
|
-
|
|
426
|
+
h5.splice(0, 1), e();
|
|
427
427
|
}
|
|
428
428
|
}), a4 && (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 === v3.WORKER_ID && e && (v3.WORKER_ID = e.workerId);
|
|
431
|
+
"string" == typeof e.input ? n.postMessage({ workerId: v3.WORKER_ID, results: v3.parse(e.input, e.config), finished: true }) : (n.File && e.input instanceof File || e.input instanceof Object) && (e = v3.parse(e.input, e.config)) && n.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
|
});
|
|
@@ -487,8 +487,8 @@ var MAX_MAP_POINTS_DEFAULT = 2e3;
|
|
|
487
487
|
|
|
488
488
|
// src/deltaE.ts
|
|
489
489
|
function linearise(c2) {
|
|
490
|
-
const
|
|
491
|
-
return
|
|
490
|
+
const v3 = c2 / 255;
|
|
491
|
+
return v3 <= 0.04045 ? v3 / 12.92 : Math.pow((v3 + 0.055) / 1.055, 2.4);
|
|
492
492
|
}
|
|
493
493
|
var Xn = 0.95047;
|
|
494
494
|
var Yn = 1;
|
|
@@ -509,8 +509,8 @@ function rgbToLab(r, g3, b4) {
|
|
|
509
509
|
function hexToLab(hex2) {
|
|
510
510
|
const m2 = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex2.trim());
|
|
511
511
|
if (!m2) return null;
|
|
512
|
-
const
|
|
513
|
-
return rgbToLab(parseInt(
|
|
512
|
+
const h4 = m2[1].length === 3 ? m2[1][0] + m2[1][0] + m2[1][1] + m2[1][1] + m2[1][2] + m2[1][2] : m2[1];
|
|
513
|
+
return rgbToLab(parseInt(h4.slice(0, 2), 16), parseInt(h4.slice(2, 4), 16), parseInt(h4.slice(4, 6), 16));
|
|
514
514
|
}
|
|
515
515
|
var RAD = Math.PI / 180;
|
|
516
516
|
var DEG = 180 / Math.PI;
|
|
@@ -566,8 +566,8 @@ function labToHex(lab) {
|
|
|
566
566
|
-0.969266 * X2 + 1.8760108 * Y2 + 0.041556 * Z3,
|
|
567
567
|
0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 * Z3
|
|
568
568
|
];
|
|
569
|
-
return "#" + lin.map((
|
|
570
|
-
const c2 = Math.max(0, Math.min(1,
|
|
569
|
+
return "#" + lin.map((v3) => {
|
|
570
|
+
const c2 = Math.max(0, Math.min(1, v3));
|
|
571
571
|
const g3 = c2 <= 31308e-7 ? 12.92 * c2 : 1.055 * Math.pow(c2, 1 / 2.4) - 0.055;
|
|
572
572
|
return Math.round(g3 * 255).toString(16).padStart(2, "0");
|
|
573
573
|
}).join("");
|
|
@@ -605,8 +605,8 @@ function toRgb(raw) {
|
|
|
605
605
|
if (!s || s === "none" || s === "transparent") return null;
|
|
606
606
|
const hex2 = /^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(s);
|
|
607
607
|
if (hex2) {
|
|
608
|
-
const
|
|
609
|
-
const full =
|
|
608
|
+
const h4 = hex2[1];
|
|
609
|
+
const full = h4.length === 3 ? h4[0] + h4[0] + h4[1] + h4[1] + h4[2] + h4[2] : h4;
|
|
610
610
|
return [
|
|
611
611
|
parseInt(full.slice(0, 2), 16),
|
|
612
612
|
parseInt(full.slice(2, 4), 16),
|
|
@@ -626,7 +626,7 @@ function cellKey(rgb) {
|
|
|
626
626
|
].join(",");
|
|
627
627
|
}
|
|
628
628
|
function hex(rgb) {
|
|
629
|
-
return "#" + rgb.map((
|
|
629
|
+
return "#" + rgb.map((v3) => Math.max(0, Math.min(255, v3)).toString(16).padStart(2, "0")).join("");
|
|
630
630
|
}
|
|
631
631
|
function censusColourSpread(container, doc) {
|
|
632
632
|
if (!container || typeof container.querySelectorAll !== "function") return EMPTY;
|
|
@@ -670,11 +670,11 @@ function censusColourSpread(container, doc) {
|
|
|
670
670
|
let span = 0, lo = 0, hi = 1;
|
|
671
671
|
for (let i = 0; i < cs.length; i++) {
|
|
672
672
|
for (let j2 = i + 1; j2 < cs.length; j2++) {
|
|
673
|
-
const
|
|
674
|
-
d2[i][j2] =
|
|
675
|
-
d2[j2][i] =
|
|
676
|
-
if (
|
|
677
|
-
span =
|
|
673
|
+
const v3 = deltaE2000(cs[i], cs[j2]);
|
|
674
|
+
d2[i][j2] = v3;
|
|
675
|
+
d2[j2][i] = v3;
|
|
676
|
+
if (v3 > span) {
|
|
677
|
+
span = v3;
|
|
678
678
|
lo = i;
|
|
679
679
|
hi = j2;
|
|
680
680
|
}
|
|
@@ -722,8 +722,8 @@ function normHex(raw) {
|
|
|
722
722
|
if (typeof raw !== "string") return null;
|
|
723
723
|
const m2 = HEX.exec(raw.trim());
|
|
724
724
|
if (!m2) return null;
|
|
725
|
-
const
|
|
726
|
-
return "#" +
|
|
725
|
+
const h4 = m2[1].length === 3 ? m2[1].split("").map((c2) => c2 + c2).join("") : m2[1];
|
|
726
|
+
return "#" + h4.toLowerCase();
|
|
727
727
|
}
|
|
728
728
|
function mixLab(a4, b4, t) {
|
|
729
729
|
return { L: a4.L + (b4.L - a4.L) * t, a: a4.a + (b4.a - a4.a) * t, b: a4.b + (b4.b - a4.b) * t };
|
|
@@ -731,7 +731,7 @@ function mixLab(a4, b4, t) {
|
|
|
731
731
|
function paintedOver(fg, canvas, alpha) {
|
|
732
732
|
const f4 = [1, 3, 5].map((i) => parseInt(fg.slice(i, i + 2), 16));
|
|
733
733
|
const c2 = [1, 3, 5].map((i) => parseInt(canvas.slice(i, i + 2), 16));
|
|
734
|
-
const mixed = f4.map((
|
|
734
|
+
const mixed = f4.map((v3, i) => Math.round(v3 * alpha + c2[i] * (1 - alpha))).map((v3) => v3.toString(16).padStart(2, "0"));
|
|
735
735
|
return hexToLab("#" + mixed.join(""));
|
|
736
736
|
}
|
|
737
737
|
function autoRampMinStep(low, high, canvas, classes = AUTO_RAMP_CLASSES, opacity = AUTO_RAMP_DRAWN_OPACITY) {
|
|
@@ -764,15 +764,15 @@ function resolveAutoColorScale(p2) {
|
|
|
764
764
|
};
|
|
765
765
|
const candidates = p2.isHighContrast ? [normHex(p2.themeAccent), normHex(p2.themeFg)] : [...palette.map(normHex), normHex(p2.themeAccent), normHex(p2.themeFg)];
|
|
766
766
|
const accent = candidates.find(usable) ?? FALLBACK_ACCENT;
|
|
767
|
-
const
|
|
767
|
+
const A = hexToLab(accent);
|
|
768
768
|
let t = 0.1;
|
|
769
|
-
let low = mixLab(bg,
|
|
769
|
+
let low = mixLab(bg, A, t);
|
|
770
770
|
while (t < 0.6 && deltaE2000(paintedOver(labToHex(low), canvas, AUTO_RAMP_DRAWN_OPACITY), bg) < SAME_SHADE_DELTA_E) {
|
|
771
771
|
t += 0.02;
|
|
772
|
-
low = mixLab(bg,
|
|
772
|
+
low = mixLab(bg, A, t);
|
|
773
773
|
}
|
|
774
774
|
const lowHex = labToHex(low);
|
|
775
|
-
let high = { ...
|
|
775
|
+
let high = { ...A };
|
|
776
776
|
let highHex = labToHex(high);
|
|
777
777
|
for (let step = 0; step < 80 && autoRampMinStep(lowHex, highHex, canvas) < AUTO_RAMP_MIN_STEP_DELTA_E; step++) {
|
|
778
778
|
const L2 = Math.max(4, Math.min(98, high.L + (darkCanvas ? 1 : -1)));
|
|
@@ -860,20 +860,20 @@ function resolveOptions(p2) {
|
|
|
860
860
|
// never reach a chart as a live mode. Both of these are read on EVERY render, so a
|
|
861
861
|
// reader can change their mind about a cached chart without regenerating it.
|
|
862
862
|
approximatePositions: (() => {
|
|
863
|
-
const
|
|
864
|
-
return
|
|
863
|
+
const v3 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
|
|
864
|
+
return v3 === "mark" || v3 === "aggregate" || v3 === "skip" ? v3 : APPROXIMATE_POSITIONS_DEFAULT;
|
|
865
865
|
})(),
|
|
866
866
|
valueAxisBaseline: (() => {
|
|
867
|
-
const
|
|
868
|
-
return
|
|
867
|
+
const v3 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
|
|
868
|
+
return v3 === "zero" || v3 === "fit" || v3 === "auto" ? v3 : VALUE_AXIS_BASELINE_DEFAULT;
|
|
869
869
|
})(),
|
|
870
870
|
// Same shape, and the same reason for it: an unrecognised string must never reach a chart
|
|
871
871
|
// as a live mode. Failing open to "auto" is the conservative direction here — "auto" is
|
|
872
872
|
// the setting that makes the chart PROVE the grid before it names a period, so a garbled
|
|
873
873
|
// value withdraws the claim rather than asserting one.
|
|
874
874
|
seasonalMarkers: (() => {
|
|
875
|
-
const
|
|
876
|
-
return
|
|
875
|
+
const v3 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
|
|
876
|
+
return v3 === "auto" || v3 === "always" || v3 === "never" ? v3 : SEASONAL_MARKERS_DEFAULT;
|
|
877
877
|
})(),
|
|
878
878
|
// ---- animation: booleans, default+clamp numerics, "" default enum ----
|
|
879
879
|
animAutoPlay: !!p2.animAutoPlay,
|
|
@@ -1228,12 +1228,12 @@ function A3(n) {
|
|
|
1228
1228
|
if (f4 && f4.length) {
|
|
1229
1229
|
let d2 = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R2 = d2 ? u(d2) : "", g3 = d2 ? Y(d2) : null, S = [], m2 = -1;
|
|
1230
1230
|
for (let c2 of f4) {
|
|
1231
|
-
let l = c2.row,
|
|
1232
|
-
if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2)
|
|
1231
|
+
let l = c2.row, A = 0;
|
|
1232
|
+
if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2) A++;
|
|
1233
1233
|
else continue;
|
|
1234
|
-
if (i) if (T(l.cc) === i)
|
|
1234
|
+
if (i) if (T(l.cc) === i) A++;
|
|
1235
1235
|
else continue;
|
|
1236
|
-
|
|
1236
|
+
A > m2 ? (m2 = A, S = [c2]) : A === m2 && S.push(c2);
|
|
1237
1237
|
}
|
|
1238
1238
|
S.some((c2) => c2.primary) && (S = S.filter((c2) => c2.primary));
|
|
1239
1239
|
let p2 = /* @__PURE__ */ new Map();
|
|
@@ -1264,20 +1264,20 @@ var x = 8;
|
|
|
1264
1264
|
function y3(n, e) {
|
|
1265
1265
|
let t = new Array(n.length), o = new Array(n.length), i = new Array(n.length), r = /* @__PURE__ */ new Set(), a4 = [], s = /* @__PURE__ */ new Set(), f4 = [], d2 = /* @__PURE__ */ new Set(), R2 = [], g3 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 }, S = 0, m2 = 0, p2 = null;
|
|
1266
1266
|
for (let l = 0; l < n.length; ++l) {
|
|
1267
|
-
let
|
|
1268
|
-
if (S3(
|
|
1267
|
+
let A = n[l], C = A3({ ...A, mapKind: e });
|
|
1268
|
+
if (S3(C)) {
|
|
1269
1269
|
t[l] = null, o[l] = null, i[l] = null, m2++;
|
|
1270
|
-
let
|
|
1271
|
-
|
|
1272
|
-
} else if (
|
|
1273
|
-
if (t[l] =
|
|
1274
|
-
let
|
|
1275
|
-
|
|
1270
|
+
let M2 = K(A);
|
|
1271
|
+
M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
|
|
1272
|
+
} else if (C) {
|
|
1273
|
+
if (t[l] = C.lat, o[l] = C.lon, i[l] = C.precision, S++, g3[C.precision]++, (p2 === null || G[C.precision] > G[p2]) && (p2 = C.precision), G[C.precision] > G.city) {
|
|
1274
|
+
let M2 = K(A);
|
|
1275
|
+
M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
|
|
1276
1276
|
}
|
|
1277
1277
|
} else {
|
|
1278
1278
|
t[l] = null, o[l] = null, i[l] = null;
|
|
1279
|
-
let
|
|
1280
|
-
|
|
1279
|
+
let M2 = K(A);
|
|
1280
|
+
M2 && !r.has(M2.toLowerCase()) && (r.add(M2.toLowerCase()), a4.push(M2));
|
|
1281
1281
|
}
|
|
1282
1282
|
}
|
|
1283
1283
|
let c2 = !n3() && n.some((l) => l.city !== null && l.city !== void 0 && String(l.city).trim() !== "");
|
|
@@ -1422,22 +1422,22 @@ function It(n, s) {
|
|
|
1422
1422
|
return s === "us-zip5" ? w.has(n.slice(0, 3)) : true;
|
|
1423
1423
|
}
|
|
1424
1424
|
function Wt(n, s) {
|
|
1425
|
-
let i = new Array(n.length), r = /* @__PURE__ */ new Set(),
|
|
1425
|
+
let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M2 = [], h4 = 0;
|
|
1426
1426
|
for (let N2 = 0; N2 < n.length; ++N2) {
|
|
1427
1427
|
let I2 = Mt(n[N2], s), O2 = I2 !== null && It(I2, s) ? I2 : null;
|
|
1428
|
-
if (i[N2] = O2, O2 !== null)
|
|
1428
|
+
if (i[N2] = O2, O2 !== null) h4++;
|
|
1429
1429
|
else {
|
|
1430
1430
|
let d2 = n[N2];
|
|
1431
1431
|
if (d2 != null) {
|
|
1432
1432
|
let p2 = String(d2).trim();
|
|
1433
1433
|
if (p2.length > 0) {
|
|
1434
1434
|
let m2 = p2.toLowerCase();
|
|
1435
|
-
r.has(m2) || (r.add(m2),
|
|
1435
|
+
r.has(m2) || (r.add(m2), M2.push(p2));
|
|
1436
1436
|
}
|
|
1437
1437
|
}
|
|
1438
1438
|
}
|
|
1439
1439
|
}
|
|
1440
|
-
return { iso: i, unmatched:
|
|
1440
|
+
return { iso: i, unmatched: M2, matchedRows: h4, totalRows: n.length };
|
|
1441
1441
|
}
|
|
1442
1442
|
|
|
1443
1443
|
// ../shape-core/dist/chunk-RS7LNZD7.mjs
|
|
@@ -1547,147 +1547,147 @@ var ct2 = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, Strin
|
|
|
1547
1547
|
|
|
1548
1548
|
// ../shape-core/dist/index.mjs
|
|
1549
1549
|
/*! @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. */
|
|
1550
|
-
var
|
|
1550
|
+
var E2 = 2;
|
|
1551
1551
|
var Z2 = 400;
|
|
1552
|
-
function
|
|
1553
|
-
return !!E(
|
|
1552
|
+
function F3(i) {
|
|
1553
|
+
return !!E(i);
|
|
1554
1554
|
}
|
|
1555
|
-
function
|
|
1555
|
+
function P2(i) {
|
|
1556
1556
|
let n = /* @__PURE__ */ new Set();
|
|
1557
|
-
for (let
|
|
1558
|
-
if (
|
|
1559
|
-
let s = u(String(
|
|
1557
|
+
for (let t of i) {
|
|
1558
|
+
if (t == null) continue;
|
|
1559
|
+
let s = u(String(t));
|
|
1560
1560
|
if (!V(s) && !n.has(s) && (n.add(s), n.size >= Z2)) break;
|
|
1561
1561
|
}
|
|
1562
1562
|
return Array.from(n);
|
|
1563
1563
|
}
|
|
1564
|
-
function
|
|
1565
|
-
let n =
|
|
1566
|
-
if (n.length === 0 || G2(
|
|
1567
|
-
let
|
|
1568
|
-
return
|
|
1564
|
+
function h3(i) {
|
|
1565
|
+
let n = P2(i);
|
|
1566
|
+
if (n.length === 0 || G2(i) < 95) return false;
|
|
1567
|
+
let t = n.filter((l) => F3(l) && !Y(l)).length, s = n.filter((l) => !F3(l) && !!Y(l)).length;
|
|
1568
|
+
return t >= 1 && t >= s;
|
|
1569
1569
|
}
|
|
1570
|
-
function W2(
|
|
1571
|
-
if (!Y(
|
|
1572
|
-
let
|
|
1573
|
-
return
|
|
1570
|
+
function W2(i, n) {
|
|
1571
|
+
if (!Y(i)) return false;
|
|
1572
|
+
let t = E(i);
|
|
1573
|
+
return t ? n === "world" ? true : s3.has(t) : false;
|
|
1574
1574
|
}
|
|
1575
|
-
function G2(
|
|
1576
|
-
let n =
|
|
1575
|
+
function G2(i) {
|
|
1576
|
+
let n = P2(i);
|
|
1577
1577
|
if (n.length === 0) return 0;
|
|
1578
|
-
let
|
|
1579
|
-
for (let s of n)
|
|
1580
|
-
return Math.round(
|
|
1578
|
+
let t = 0;
|
|
1579
|
+
for (let s of n) F3(s) && t++;
|
|
1580
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1581
1581
|
}
|
|
1582
|
-
function
|
|
1583
|
-
let n =
|
|
1582
|
+
function v2(i) {
|
|
1583
|
+
let n = P2(i);
|
|
1584
1584
|
if (n.length === 0) return 0;
|
|
1585
|
-
let
|
|
1586
|
-
for (let s of n) Y(s) &&
|
|
1587
|
-
return Math.round(
|
|
1585
|
+
let t = 0;
|
|
1586
|
+
for (let s of n) Y(s) && t++;
|
|
1587
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1588
1588
|
}
|
|
1589
|
-
function
|
|
1589
|
+
function $2(i) {
|
|
1590
1590
|
let n = /* @__PURE__ */ new Set();
|
|
1591
|
-
for (let
|
|
1592
|
-
if (
|
|
1593
|
-
let s = String(
|
|
1591
|
+
for (let t of i) {
|
|
1592
|
+
if (t == null) continue;
|
|
1593
|
+
let s = String(t).trim();
|
|
1594
1594
|
if (!V(u(s)) && !n.has(s) && (n.add(s), n.size >= Z2)) break;
|
|
1595
1595
|
}
|
|
1596
1596
|
return Array.from(n);
|
|
1597
1597
|
}
|
|
1598
|
-
function
|
|
1599
|
-
let n =
|
|
1598
|
+
function z2(i) {
|
|
1599
|
+
let n = $2(i);
|
|
1600
1600
|
if (n.length === 0) return 0;
|
|
1601
|
-
let
|
|
1602
|
-
for (let s of n) Z(s).length > 0 &&
|
|
1603
|
-
return Math.round(
|
|
1601
|
+
let t = 0;
|
|
1602
|
+
for (let s of n) Z(s).length > 0 && t++;
|
|
1603
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1604
1604
|
}
|
|
1605
|
-
function q3(
|
|
1606
|
-
return y2(n, rt) ? true :
|
|
1605
|
+
function q3(i, n) {
|
|
1606
|
+
return y2(n, rt) ? true : $2(i).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
|
|
1607
1607
|
}
|
|
1608
|
-
function
|
|
1609
|
-
let
|
|
1610
|
-
if (
|
|
1608
|
+
function gt(i, n) {
|
|
1609
|
+
let t = P2(i);
|
|
1610
|
+
if (t.length === 0) return 0;
|
|
1611
1611
|
let s = 0;
|
|
1612
|
-
for (let
|
|
1613
|
-
return Math.round(s /
|
|
1612
|
+
for (let l of t) p3(l, n) && s++;
|
|
1613
|
+
return Math.round(s / t.length * 1e3) / 10;
|
|
1614
1614
|
}
|
|
1615
|
-
function D3(
|
|
1616
|
-
let
|
|
1617
|
-
for (let s of
|
|
1618
|
-
return
|
|
1615
|
+
function D3(i, n) {
|
|
1616
|
+
let t = 0;
|
|
1617
|
+
for (let s of P2(i)) n(s) && t++;
|
|
1618
|
+
return t;
|
|
1619
1619
|
}
|
|
1620
|
-
function
|
|
1621
|
-
let
|
|
1622
|
-
for (let s of
|
|
1623
|
-
return
|
|
1620
|
+
function yt2(i, n) {
|
|
1621
|
+
let t = 0;
|
|
1622
|
+
for (let s of $2(i)) n(s) && t++;
|
|
1623
|
+
return t;
|
|
1624
1624
|
}
|
|
1625
|
-
function
|
|
1626
|
-
let
|
|
1627
|
-
for (let
|
|
1628
|
-
let
|
|
1629
|
-
|
|
1625
|
+
function Ct(i, n, t, s, l) {
|
|
1626
|
+
let x3 = [], c2 = [], o = {}, I2 = {}, _2 = new Set(i), u2 = (e) => n.map((r) => r[e]);
|
|
1627
|
+
for (let e of ["city", "country"]) {
|
|
1628
|
+
let r = t?.[e];
|
|
1629
|
+
r && _2.has(r) && (o[e] = r);
|
|
1630
1630
|
}
|
|
1631
|
-
let X2 = new Set(
|
|
1632
|
-
for (let
|
|
1633
|
-
let
|
|
1634
|
-
|
|
1631
|
+
let X2 = new Set(l ?? i);
|
|
1632
|
+
for (let e of ["lat", "lon"]) {
|
|
1633
|
+
let r = t?.[e];
|
|
1634
|
+
r && X2.has(r) && (o[e] = r);
|
|
1635
1635
|
}
|
|
1636
|
-
let d2 =
|
|
1637
|
-
if (d2 &&
|
|
1638
|
-
let
|
|
1639
|
-
|
|
1636
|
+
let d2 = t?.zip;
|
|
1637
|
+
if (d2 && _2.has(d2)) {
|
|
1638
|
+
let e = u2(d2), r = z2(e);
|
|
1639
|
+
r < 95 ? c2.push(`zip=${d2} (only ${r}% of values read as ZIPs)`) : q3(e, d2) ? o.zip = d2 : c2.push(`zip=${d2} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1640
1640
|
}
|
|
1641
|
-
let m2 =
|
|
1642
|
-
if (m2 &&
|
|
1643
|
-
let
|
|
1644
|
-
|
|
1641
|
+
let m2 = t?.state;
|
|
1642
|
+
if (m2 && _2.has(m2)) {
|
|
1643
|
+
let e = u2(m2), r = P2(e);
|
|
1644
|
+
r.length > 0 && r.every((a4) => W2(a4, s)) ? c2.push(`state=${m2} (every value is "CA", which is both Canada and California)`) : h3(e) ? (c2.push(`state=${m2} (every value is a country, not a state)`), o.country || (o.country = m2)) : v2(e) < 95 ? c2.push(`state=${m2} (only ${v2(e)}% of values are states/provinces)`) : o.state = m2;
|
|
1645
1645
|
}
|
|
1646
|
-
let g3 = new Set(Object.values(o).filter(Boolean)),
|
|
1646
|
+
let g3 = new Set(Object.values(o).filter(Boolean)), A = i.filter((e) => !g3.has(e) && !e.startsWith("__"));
|
|
1647
1647
|
if (!o.state) {
|
|
1648
|
-
let
|
|
1649
|
-
for (let
|
|
1650
|
-
let a4 =
|
|
1651
|
-
if (
|
|
1652
|
-
let f4 =
|
|
1648
|
+
let e = null;
|
|
1649
|
+
for (let r of A) {
|
|
1650
|
+
let a4 = u2(r);
|
|
1651
|
+
if (h3(a4)) continue;
|
|
1652
|
+
let f4 = v2(a4);
|
|
1653
1653
|
if (f4 < 95) continue;
|
|
1654
|
-
let k2 = D3(a4, (
|
|
1655
|
-
k2 <
|
|
1654
|
+
let k2 = D3(a4, (R2) => !!Y(R2)), J2 = D3(a4, (R2) => !!Y(R2) && !W2(R2, s));
|
|
1655
|
+
k2 < E2 && J2 < 1 || (!e || f4 > e.pct) && (e = { name: r, pct: f4 });
|
|
1656
1656
|
}
|
|
1657
|
-
|
|
1657
|
+
e && (o.state = e.name, g3.add(e.name), x3.push(`state=${e.name} (${e.pct}% states/provinces)`));
|
|
1658
1658
|
}
|
|
1659
|
-
if (!o.zip) for (let
|
|
1660
|
-
if (g3.has(
|
|
1661
|
-
let
|
|
1662
|
-
if (!(a4 < 95) && q3(
|
|
1663
|
-
o.zip =
|
|
1659
|
+
if (!o.zip) for (let e of A) {
|
|
1660
|
+
if (g3.has(e)) continue;
|
|
1661
|
+
let r = u2(e), a4 = z2(r);
|
|
1662
|
+
if (!(a4 < 95) && q3(r, e) && !(yt2(r, (f4) => Z(f4).length > 0) < E2)) {
|
|
1663
|
+
o.zip = e, g3.add(e), x3.push(`zip=${e} (${a4}% ZIP codes)`);
|
|
1664
1664
|
break;
|
|
1665
1665
|
}
|
|
1666
1666
|
}
|
|
1667
|
-
let
|
|
1668
|
-
if (!
|
|
1669
|
-
let
|
|
1670
|
-
for (let
|
|
1671
|
-
if (g3.has(
|
|
1672
|
-
let a4 = G2(
|
|
1673
|
-
(!
|
|
1667
|
+
let C = o.country;
|
|
1668
|
+
if (!C || !h3(u2(C))) {
|
|
1669
|
+
let e = null;
|
|
1670
|
+
for (let r of A) {
|
|
1671
|
+
if (g3.has(r) || !h3(u2(r))) continue;
|
|
1672
|
+
let a4 = G2(u2(r));
|
|
1673
|
+
(!e || a4 > e.pct) && (e = { name: r, pct: a4 });
|
|
1674
1674
|
}
|
|
1675
|
-
|
|
1675
|
+
e && (C && (c2.push(`country=${C} (only ${G2(u2(C))}% of values are country identifiers; using ${e.name} instead)`), I2.country = C), o.country = e.name, g3.add(e.name), x3.push(`country=${e.name}`));
|
|
1676
1676
|
}
|
|
1677
1677
|
if (!o.city) {
|
|
1678
|
-
let
|
|
1679
|
-
for (let
|
|
1680
|
-
if (g3.has(
|
|
1681
|
-
let a4 =
|
|
1682
|
-
f4 < m3 || D3(a4, (k2) => p3(k2, s)) <
|
|
1678
|
+
let e = null;
|
|
1679
|
+
for (let r of A) {
|
|
1680
|
+
if (g3.has(r)) continue;
|
|
1681
|
+
let a4 = u2(r), f4 = gt(a4, s);
|
|
1682
|
+
f4 < m3 || D3(a4, (k2) => p3(k2, s)) < E2 || (!e || f4 > e.pct) && (e = { name: r, pct: f4 });
|
|
1683
1683
|
}
|
|
1684
|
-
|
|
1684
|
+
e && (o.city = e.name, x3.push(`city=${e.name} (${e.pct}% known cities)`));
|
|
1685
1685
|
}
|
|
1686
|
-
let B2 = o.country ?
|
|
1687
|
-
let
|
|
1688
|
-
return isFinite(
|
|
1686
|
+
let B2 = o.country ? u2(o.country) : [], L2 = !!o.country && h3(B2), Y2 = L2 ? new Set(B2.map((e) => E(e == null ? null : String(e))).filter(Boolean)).size : 0, K3 = L2 && Y2 >= 2, N2 = !!(o.lat && o.lon) && n.some((e) => {
|
|
1687
|
+
let r = +String(e[o.lat] ?? "").trim(), a4 = +String(e[o.lon] ?? "").trim();
|
|
1688
|
+
return isFinite(r) && isFinite(a4) && r >= -90 && r <= 90 && a4 >= -180 && a4 <= 180 && String(e[o.lat] ?? "").trim() !== "" && String(e[o.lon] ?? "").trim() !== "";
|
|
1689
1689
|
});
|
|
1690
|
-
return o.lat && o.lon && !N2 &&
|
|
1690
|
+
return o.lat && o.lon && !N2 && c2.push(`lat/lon=${o.lat}/${o.lon} (no row holds a usable coordinate pair)`), o.country && !K3 && !(o.city || o.state || o.zip || N2) && c2.push(L2 ? `country=${o.country} (every row resolves to the same country - nothing to place apart)` : `country=${o.country} (values are not country identifiers)`), { bind: !!(o.city || o.state || o.zip || K3 || N2) ? o : null, backfilled: x3, refused: c2, ...Object.keys(I2).length ? { labelFallback: I2 } : {} };
|
|
1691
1691
|
}
|
|
1692
1692
|
|
|
1693
1693
|
// src/payload.ts
|
|
@@ -1702,7 +1702,7 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1702
1702
|
let labelCol;
|
|
1703
1703
|
if (bind) {
|
|
1704
1704
|
const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
|
|
1705
|
-
const res =
|
|
1705
|
+
const res = Ct(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
|
|
1706
1706
|
bind = res.bind;
|
|
1707
1707
|
rolesBackfilled = res.backfilled;
|
|
1708
1708
|
rolesRefused = res.refused;
|
|
@@ -1790,11 +1790,11 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1790
1790
|
const row = rowObjs[r];
|
|
1791
1791
|
const a4 = new Array(cols.length + extra);
|
|
1792
1792
|
for (let c2 = 0; c2 < cols.length; c2++) {
|
|
1793
|
-
const
|
|
1794
|
-
if (
|
|
1795
|
-
a4[c2] =
|
|
1793
|
+
const v3 = row[colNames[c2]];
|
|
1794
|
+
if (v3 instanceof Date) {
|
|
1795
|
+
a4[c2] = v3.toISOString();
|
|
1796
1796
|
} else {
|
|
1797
|
-
a4[c2] =
|
|
1797
|
+
a4[c2] = v3 ?? null;
|
|
1798
1798
|
}
|
|
1799
1799
|
}
|
|
1800
1800
|
let k2 = cols.length;
|
|
@@ -1849,8 +1849,8 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1849
1849
|
function createMarkResolver(env) {
|
|
1850
1850
|
const { root, doc, log } = env;
|
|
1851
1851
|
const isElement = (t) => {
|
|
1852
|
-
const
|
|
1853
|
-
if (
|
|
1852
|
+
const E4 = doc?.defaultView?.Element ?? globalThis.Element;
|
|
1853
|
+
if (E4 && t instanceof E4) return true;
|
|
1854
1854
|
return !!t && typeof t.closest === "function" && typeof t.getAttribute === "function";
|
|
1855
1855
|
};
|
|
1856
1856
|
const viewStyle = (n) => {
|
|
@@ -2159,13 +2159,13 @@ function censusHitBands(container, doc) {
|
|
|
2159
2159
|
if (!OPEN_TAGS.has(tag)) continue;
|
|
2160
2160
|
const cs = styleOf2(el, ownerDoc);
|
|
2161
2161
|
const open = isUnfilled(attrOrComputed(el, "fill", cs));
|
|
2162
|
-
const
|
|
2162
|
+
const w2 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
|
|
2163
2163
|
const geom = String(el.getAttribute?.("d") ?? "") || `${tag}#${String(el.getAttribute?.(ROW_IDX_ATTR) ?? "")}`;
|
|
2164
2164
|
const inert = String(cs?.pointerEvents ?? el.style?.pointerEvents ?? "") === "none";
|
|
2165
|
-
rows.push({ el, geom, w:
|
|
2166
|
-
if (isFinite(
|
|
2165
|
+
rows.push({ el, geom, w: w2, open, inert });
|
|
2166
|
+
if (isFinite(w2)) {
|
|
2167
2167
|
const prev = widestByGeom.get(geom);
|
|
2168
|
-
if (prev === void 0 ||
|
|
2168
|
+
if (prev === void 0 || w2 > prev) widestByGeom.set(geom, w2);
|
|
2169
2169
|
}
|
|
2170
2170
|
}
|
|
2171
2171
|
const out = { ...EMPTY3 };
|
|
@@ -2198,9 +2198,9 @@ var VALUE_AXIS_MIN_FIT = 0.8;
|
|
|
2198
2198
|
var MIN_AXIS_SPAN_PX = 40;
|
|
2199
2199
|
var EMPTY4 = { marks: 0, axis: "", column: "", fit: 0, offShare: 0, medianOffRadii: 0 };
|
|
2200
2200
|
function num(el, name) {
|
|
2201
|
-
const
|
|
2202
|
-
if (
|
|
2203
|
-
return parseFloat(String(
|
|
2201
|
+
const v3 = el.getAttribute?.(name);
|
|
2202
|
+
if (v3 === null || v3 === void 0 || String(v3).trim() === "") return NaN;
|
|
2203
|
+
return parseFloat(String(v3));
|
|
2204
2204
|
}
|
|
2205
2205
|
function median(xs) {
|
|
2206
2206
|
if (!xs.length) return NaN;
|
|
@@ -2208,15 +2208,15 @@ function median(xs) {
|
|
|
2208
2208
|
const m2 = s.length >> 1;
|
|
2209
2209
|
return s.length % 2 ? s[m2] : (s[m2 - 1] + s[m2]) / 2;
|
|
2210
2210
|
}
|
|
2211
|
-
function robustLine(
|
|
2212
|
-
const n =
|
|
2211
|
+
function robustLine(v3, pos) {
|
|
2212
|
+
const n = v3.length;
|
|
2213
2213
|
const step = Math.max(1, Math.floor(n / FIT_SAMPLE));
|
|
2214
2214
|
const idx = [];
|
|
2215
2215
|
for (let i = 0; i < n; i += step) idx.push(i);
|
|
2216
2216
|
const slopes = [];
|
|
2217
2217
|
for (let p2 = 0; p2 < idx.length; p2++) {
|
|
2218
2218
|
for (let q4 = p2 + 1; q4 < idx.length; q4++) {
|
|
2219
|
-
const dv =
|
|
2219
|
+
const dv = v3[idx[q4]] - v3[idx[p2]];
|
|
2220
2220
|
if (Math.abs(dv) < 1e-12) continue;
|
|
2221
2221
|
slopes.push((pos[idx[q4]] - pos[idx[p2]]) / dv);
|
|
2222
2222
|
}
|
|
@@ -2224,7 +2224,7 @@ function robustLine(v2, pos) {
|
|
|
2224
2224
|
if (slopes.length < 3) return null;
|
|
2225
2225
|
const b4 = median(slopes);
|
|
2226
2226
|
if (!Number.isFinite(b4) || Math.abs(b4) < 1e-12) return null;
|
|
2227
|
-
const a4 = median(pos.map((y5, i) => y5 - b4 *
|
|
2227
|
+
const a4 = median(pos.map((y5, i) => y5 - b4 * v3[i]));
|
|
2228
2228
|
return Number.isFinite(a4) ? { a: a4, b: b4 } : null;
|
|
2229
2229
|
}
|
|
2230
2230
|
function censusValuePlacement(container, data) {
|
|
@@ -2252,30 +2252,30 @@ function censusValuePlacement(container, data) {
|
|
|
2252
2252
|
for (let c2 = 0; c2 < columns.length; c2++) {
|
|
2253
2253
|
if (/^__.*__$/.test(String(columns[c2]?.name ?? ""))) continue;
|
|
2254
2254
|
const vals = dots.map((d2) => {
|
|
2255
|
-
const
|
|
2256
|
-
return
|
|
2255
|
+
const v3 = d2.row[c2];
|
|
2256
|
+
return v3 === null || v3 === void 0 || v3 === "" ? NaN : typeof v3 === "number" ? v3 : Number(v3);
|
|
2257
2257
|
});
|
|
2258
2258
|
const finite = vals.filter(Number.isFinite);
|
|
2259
2259
|
if (finite.length < dots.length * 0.9 || new Set(finite).size < 8) continue;
|
|
2260
|
-
const logs = finite.every((
|
|
2260
|
+
const logs = finite.every((v3) => v3 > 0) ? [false, true] : [false];
|
|
2261
2261
|
for (const log of logs) {
|
|
2262
2262
|
for (const axis of ["x", "y"]) {
|
|
2263
2263
|
const keep = [];
|
|
2264
|
-
const
|
|
2264
|
+
const v3 = [], pos = [];
|
|
2265
2265
|
dots.forEach((d2, k2) => {
|
|
2266
2266
|
if (!Number.isFinite(vals[k2])) return;
|
|
2267
2267
|
keep.push(k2);
|
|
2268
|
-
|
|
2268
|
+
v3.push(log ? Math.log10(vals[k2]) : vals[k2]);
|
|
2269
2269
|
pos.push(axis === "x" ? d2.x : d2.y);
|
|
2270
2270
|
});
|
|
2271
|
-
const line = robustLine(
|
|
2271
|
+
const line = robustLine(v3, pos);
|
|
2272
2272
|
if (!line) continue;
|
|
2273
2273
|
const lo = Math.min(...pos), hi = Math.max(...pos);
|
|
2274
2274
|
if (hi - lo < MIN_AXIS_SPAN_PX) continue;
|
|
2275
2275
|
const mean = pos.reduce((s, p2) => s + p2, 0) / pos.length;
|
|
2276
2276
|
let ssRes = 0, ssTot = 0;
|
|
2277
2277
|
const res = pos.map((p2, k2) => {
|
|
2278
|
-
const e = p2 - (line.a + line.b *
|
|
2278
|
+
const e = p2 - (line.a + line.b * v3[k2]);
|
|
2279
2279
|
ssRes += e * e;
|
|
2280
2280
|
ssTot += (p2 - mean) ** 2;
|
|
2281
2281
|
return e;
|
|
@@ -2336,12 +2336,12 @@ function contentExtentOf(boxes) {
|
|
|
2336
2336
|
if (usable.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2337
2337
|
const inFlow = usable.filter((b4) => !b4.floating);
|
|
2338
2338
|
const counted = inFlow.length > 0 ? inFlow : usable;
|
|
2339
|
-
let
|
|
2339
|
+
let w2 = 0, h4 = 0;
|
|
2340
2340
|
for (const b4 of counted) {
|
|
2341
|
-
if (b4.right >
|
|
2342
|
-
if (b4.bottom >
|
|
2341
|
+
if (b4.right > w2) w2 = b4.right;
|
|
2342
|
+
if (b4.bottom > h4) h4 = b4.bottom;
|
|
2343
2343
|
}
|
|
2344
|
-
return { w:
|
|
2344
|
+
return { w: w2, h: h4, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
|
|
2345
2345
|
}
|
|
2346
2346
|
function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL_SLACK_PX) {
|
|
2347
2347
|
return {
|
|
@@ -2351,8 +2351,8 @@ function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL
|
|
|
2351
2351
|
}
|
|
2352
2352
|
var FIT_CONTENT_SELECTOR = "text, .d3-mark, .d3-legend-mark";
|
|
2353
2353
|
var PHANTOM_FRACTION = 0.95;
|
|
2354
|
-
function isPhantomBox(
|
|
2355
|
-
return
|
|
2354
|
+
function isPhantomBox(w2, h4, refW, refH) {
|
|
2355
|
+
return w2 > refW * PHANTOM_FRACTION || h4 > refH * PHANTOM_FRACTION;
|
|
2356
2356
|
}
|
|
2357
2357
|
var MAX_FRAME_GROW_FACTOR = 20;
|
|
2358
2358
|
function planFrameGrow(inkBottomPx, elHeightPx, viewBoxH, ctmScale, slackPx = SCROLL_SLACK_PX, maxFactor = MAX_FRAME_GROW_FACTOR) {
|
|
@@ -2651,8 +2651,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2651
2651
|
}
|
|
2652
2652
|
const pinSvg = doc.createElementNS(SVG_NS2, "svg");
|
|
2653
2653
|
for (const a4 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
|
|
2654
|
-
const
|
|
2655
|
-
if (
|
|
2654
|
+
const v3 = svg.getAttribute(a4);
|
|
2655
|
+
if (v3) pinSvg.setAttribute(a4, v3);
|
|
2656
2656
|
}
|
|
2657
2657
|
const styles = svg.querySelectorAll("style");
|
|
2658
2658
|
for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
|
|
@@ -2833,10 +2833,10 @@ function parseRGBA(c2) {
|
|
|
2833
2833
|
const s = c2.trim();
|
|
2834
2834
|
const m2 = s.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/i);
|
|
2835
2835
|
if (m2) return [parseFloat(m2[1]), parseFloat(m2[2]), parseFloat(m2[3]), m2[4] !== void 0 ? parseFloat(m2[4]) : 1];
|
|
2836
|
-
let
|
|
2837
|
-
if (
|
|
2838
|
-
if (
|
|
2839
|
-
return [parseInt(
|
|
2836
|
+
let h4 = s.replace(/^#/, "");
|
|
2837
|
+
if (h4.length === 3) h4 = h4.split("").map((ch) => ch + ch).join("");
|
|
2838
|
+
if (h4.length === 6 && /^[0-9a-fA-F]{6}$/.test(h4)) {
|
|
2839
|
+
return [parseInt(h4.slice(0, 2), 16), parseInt(h4.slice(2, 4), 16), parseInt(h4.slice(4, 6), 16), 1];
|
|
2840
2840
|
}
|
|
2841
2841
|
return null;
|
|
2842
2842
|
}
|
|
@@ -2884,8 +2884,8 @@ function compositeOver(fg, bg) {
|
|
|
2884
2884
|
];
|
|
2885
2885
|
}
|
|
2886
2886
|
function relativeLuminance(rgb) {
|
|
2887
|
-
const lin = rgb.map((
|
|
2888
|
-
const s =
|
|
2887
|
+
const lin = rgb.map((v3) => {
|
|
2888
|
+
const s = v3 / 255;
|
|
2889
2889
|
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
2890
2890
|
});
|
|
2891
2891
|
return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
|
|
@@ -2933,9 +2933,9 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
|
2933
2933
|
}
|
|
2934
2934
|
return out;
|
|
2935
2935
|
}
|
|
2936
|
-
function clamp01(
|
|
2937
|
-
if (typeof
|
|
2938
|
-
return Math.max(0, Math.min(1,
|
|
2936
|
+
function clamp01(v3) {
|
|
2937
|
+
if (typeof v3 !== "number" || !isFinite(v3)) return 1;
|
|
2938
|
+
return Math.max(0, Math.min(1, v3));
|
|
2939
2939
|
}
|
|
2940
2940
|
function hexToRGB(hex2) {
|
|
2941
2941
|
const p2 = toRGBA(hex2);
|
|
@@ -2948,10 +2948,10 @@ var LABEL_CONTRAST_CAP = 2e3;
|
|
|
2948
2948
|
var EMPTY5 = { rects: 0, scanned: 0, fixed: 0, pillsBoosted: 0, offFill: 0, pageMajority: 0, paintedOver: 0 };
|
|
2949
2949
|
function backedSamples(el, pts) {
|
|
2950
2950
|
try {
|
|
2951
|
-
const
|
|
2952
|
-
if (typeof
|
|
2953
|
-
const m2 =
|
|
2954
|
-
const svg =
|
|
2951
|
+
const ge = el;
|
|
2952
|
+
if (typeof ge.isPointInFill !== "function" || typeof ge.getScreenCTM !== "function") return null;
|
|
2953
|
+
const m2 = ge.getScreenCTM();
|
|
2954
|
+
const svg = ge.ownerSVGElement;
|
|
2955
2955
|
if (!m2 || !svg || typeof svg.createSVGPoint !== "function") return null;
|
|
2956
2956
|
if (pts.length === 0) return null;
|
|
2957
2957
|
const inv = m2.inverse();
|
|
@@ -2960,7 +2960,7 @@ function backedSamples(el, pts) {
|
|
|
2960
2960
|
const p2 = svg.createSVGPoint();
|
|
2961
2961
|
p2.x = pts[i].x;
|
|
2962
2962
|
p2.y = pts[i].y;
|
|
2963
|
-
hit.push(
|
|
2963
|
+
hit.push(ge.isPointInFill(p2.matrixTransform(inv)));
|
|
2964
2964
|
}
|
|
2965
2965
|
return hit;
|
|
2966
2966
|
} catch {
|
|
@@ -3222,7 +3222,7 @@ function createChartHost(container, config) {
|
|
|
3222
3222
|
let data = config.data;
|
|
3223
3223
|
{
|
|
3224
3224
|
const stamped = config.data?.meta?.hostContract;
|
|
3225
|
-
const major = (
|
|
3225
|
+
const major = (v3) => (v3 || "").split(".")[0];
|
|
3226
3226
|
if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
|
|
3227
3227
|
try {
|
|
3228
3228
|
(win?.console ?? console)?.warn(
|
package/dist/index.mjs
CHANGED
package/dist/react.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bicharts/chart-host",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.113",
|
|
4
4
|
"description": "Run a BIC-generated D3 chart in any web host: compiles the generated render() function, applies the shared option defaults, resolves mark clicks (through tooltip overlays), owns the selection affordance, and translates row indices between cross-filtered charts. The same contract the BIC Power BI visual implements, minus Power BI. React bindings at @bicharts/chart-host/react.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|