@bicharts/chart-host 0.6.16 → 0.6.18
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-HLNXKVQP.mjs → chunk-XF434GN2.mjs} +183 -183
- package/dist/index.mjs +1 -1
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -22,7 +22,7 @@ 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 = {}, h3 = 0,
|
|
25
|
+
var d2, s = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {}, h3 = 0, v4 = {};
|
|
26
26
|
function P4(e) {
|
|
27
27
|
return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
|
|
28
28
|
}
|
|
@@ -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: v4.WORKER_ID, finished: i2 });
|
|
45
45
|
else if (q3(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
|
-
q3(this._config.error) ? this._config.error(e2) : a4 && this._config.error && n.postMessage({ workerId:
|
|
53
|
+
q3(this._config.error) ? this._config.error(e2) : a4 && this._config.error && n.postMessage({ workerId: v4.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 = v4.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 = v4.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();
|
|
@@ -142,7 +142,7 @@ var require_papaparse_min = __commonJS({
|
|
|
142
142
|
return "greedy" === m2.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length;
|
|
143
143
|
}
|
|
144
144
|
function g4() {
|
|
145
|
-
if (p4 && a5 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" +
|
|
145
|
+
if (p4 && a5 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v4.DefaultDelimiter + "'"), a5 = false), m2.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
|
|
146
146
|
return !y6(e4);
|
|
147
147
|
})), _3()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
@@ -181,14 +181,14 @@ var require_papaparse_min = __commonJS({
|
|
|
181
181
|
}), this.parse = function(e2, t2, i4) {
|
|
182
182
|
var r4 = m2.quoteChar || '"', r4 = (m2.newline || (m2.newline = this.guessLineEndings(e2, r4)), a5 = false, m2.delimiter ? q3(m2.delimiter) && (m2.delimiter = m2.delimiter(e2), p4.meta.delimiter = m2.delimiter) : ((r4 = ((e4, t4, i5, r5, n4) => {
|
|
183
183
|
var s4, a6, o4, h5;
|
|
184
|
-
n4 = n4 || [",", " ", "|", ";",
|
|
184
|
+
n4 = n4 || [",", " ", "|", ";", v4.RECORD_SEP, v4.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
|
|
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
187
|
0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a6 || l3 <= a6) && (void 0 === h5 || h5 < c5) && 1.99 < c5 && (a6 = l3, s4 = f6, h5 = c5);
|
|
188
188
|
}
|
|
189
189
|
return { successful: !!(m2.delimiter = s4), bestDelimiter: s4 };
|
|
190
|
-
})(e2, m2.newline, m2.skipEmptyLines, m2.comments, m2.delimitersToGuess)).successful ? m2.delimiter = r4.bestDelimiter : (a5 = true, m2.delimiter =
|
|
191
|
-
return m2.preview && m2.header && r4.preview++, n2 = e2, s2 = new
|
|
190
|
+
})(e2, m2.newline, m2.skipEmptyLines, m2.comments, m2.delimitersToGuess)).successful ? m2.delimiter = r4.bestDelimiter : (a5 = true, m2.delimiter = v4.DefaultDelimiter), p4.meta.delimiter = m2.delimiter), b4(m2));
|
|
191
|
+
return m2.preview && m2.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,22 +210,22 @@ var require_papaparse_min = __commonJS({
|
|
|
210
210
|
function U3(e) {
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
|
-
function
|
|
214
|
-
var S = (C2 = C2 || {}).delimiter, O3 = C2.newline, x2 = C2.comments, I4 = C2.step, A2 = C2.preview,
|
|
215
|
-
if (void 0 !== C2.escapeChar && (j3 = C2.escapeChar), ("string" != typeof S || -1 <
|
|
216
|
-
true === x2 ? x2 = "#" : ("string" != typeof x2 || -1 <
|
|
217
|
-
var z4 = 0,
|
|
213
|
+
function E4(C2) {
|
|
214
|
+
var S = (C2 = C2 || {}).delimiter, O3 = C2.newline, x2 = C2.comments, I4 = C2.step, A2 = C2.preview, T3 = C2.fastMode, D3 = null, L4 = false, F3 = null == C2.quoteChar ? '"' : C2.quoteChar, j3 = F3;
|
|
215
|
+
if (void 0 !== C2.escapeChar && (j3 = C2.escapeChar), ("string" != typeof S || -1 < v4.BAD_DELIMITERS.indexOf(S)) && (S = ","), x2 === S) throw new Error("Comment character same as delimiter");
|
|
216
|
+
true === x2 ? x2 = "#" : ("string" != typeof x2 || -1 < v4.BAD_DELIMITERS.indexOf(x2)) && (x2 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
|
|
217
|
+
var z4 = 0, M = false;
|
|
218
218
|
this.parse = function(i2, t, r2) {
|
|
219
219
|
if ("string" != typeof i2) throw new Error("Input must be a string");
|
|
220
220
|
var n2 = i2.length, e = S.length, s2 = O3.length, a5 = x2.length, o2 = q3(I4), h4 = [], u4 = [], d3 = [], f5 = z4 = 0;
|
|
221
221
|
if (!i2) return w3();
|
|
222
|
-
if (
|
|
222
|
+
if (T3 || false !== T3 && -1 === i2.indexOf(F3)) {
|
|
223
223
|
for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
|
|
224
224
|
if (d3 = l2[c4], z4 += d3.length, c4 !== l2.length - 1) z4 += O3.length;
|
|
225
225
|
else if (r2) return w3();
|
|
226
226
|
if (!x2 || d3.substring(0, a5) !== x2) {
|
|
227
227
|
if (o2) {
|
|
228
|
-
if (h4 = [], k3(d3.split(S)), R2(),
|
|
228
|
+
if (h4 = [], k3(d3.split(S)), R2(), M) return w3();
|
|
229
229
|
} else k3(d3.split(S));
|
|
230
230
|
if (A2 && A2 <= c4) return h4 = h4.slice(0, A2), w3(true);
|
|
231
231
|
}
|
|
@@ -233,19 +233,19 @@ var require_papaparse_min = __commonJS({
|
|
|
233
233
|
return w3();
|
|
234
234
|
}
|
|
235
235
|
for (var p4 = i2.indexOf(S, z4), g4 = i2.indexOf(O3, z4), _3 = new RegExp(U3(j3) + U3(F3), "g"), m2 = i2.indexOf(F3, z4); ; ) if (i2[z4] === F3) for (m2 = z4, z4++; ; ) {
|
|
236
|
-
if (-1 === (m2 = i2.indexOf(F3, m2 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z4 }),
|
|
237
|
-
if (m2 === n2 - 1) return
|
|
236
|
+
if (-1 === (m2 = i2.indexOf(F3, m2 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z4 }), E5();
|
|
237
|
+
if (m2 === n2 - 1) return E5(i2.substring(z4, m2).replace(_3, F3));
|
|
238
238
|
if (F3 === j3 && i2[m2 + 1] === j3) m2++;
|
|
239
239
|
else if (F3 === j3 || 0 === m2 || i2[m2 - 1] !== j3) {
|
|
240
240
|
-1 !== p4 && p4 < m2 + 1 && (p4 = i2.indexOf(S, m2 + 1));
|
|
241
|
-
var y6 =
|
|
241
|
+
var y6 = v5(-1 === (g4 = -1 !== g4 && g4 < m2 + 1 ? i2.indexOf(O3, m2 + 1) : g4) ? p4 : Math.min(p4, g4));
|
|
242
242
|
if (i2.substr(m2 + 1 + y6, e) === S) {
|
|
243
243
|
d3.push(i2.substring(z4, m2).replace(_3, F3)), i2[z4 = m2 + 1 + y6 + e] !== F3 && (m2 = i2.indexOf(F3, z4)), p4 = i2.indexOf(S, z4), g4 = i2.indexOf(O3, z4);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
|
-
y6 =
|
|
246
|
+
y6 = v5(g4);
|
|
247
247
|
if (i2.substring(m2 + 1 + y6, m2 + 1 + y6 + s2) === O3) {
|
|
248
|
-
if (d3.push(i2.substring(z4, m2).replace(_3, F3)), b5(m2 + 1 + y6 + s2), p4 = i2.indexOf(S, z4), m2 = i2.indexOf(F3, z4), o2 && (R2(),
|
|
248
|
+
if (d3.push(i2.substring(z4, m2).replace(_3, F3)), b5(m2 + 1 + y6 + s2), p4 = i2.indexOf(S, z4), m2 = i2.indexOf(F3, z4), o2 && (R2(), M)) return w3();
|
|
249
249
|
if (A2 && h4.length >= A2) return w3(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
@@ -258,25 +258,25 @@ 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(S, z4);
|
|
259
259
|
else {
|
|
260
260
|
if (-1 === g4) break;
|
|
261
|
-
if (d3.push(i2.substring(z4, g4)), b5(g4 + s2), o2 && (R2(),
|
|
261
|
+
if (d3.push(i2.substring(z4, g4)), b5(g4 + s2), o2 && (R2(), M)) return w3();
|
|
262
262
|
if (A2 && h4.length >= A2) return w3(true);
|
|
263
263
|
}
|
|
264
|
-
return
|
|
264
|
+
return E5();
|
|
265
265
|
function k3(e2) {
|
|
266
266
|
h4.push(e2), f5 = z4;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function v5(e2) {
|
|
269
269
|
var t2 = 0;
|
|
270
270
|
return t2 = -1 !== e2 && (e2 = i2.substring(m2 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
272
|
-
function
|
|
272
|
+
function E5(e2) {
|
|
273
273
|
return r2 || (void 0 === e2 && (e2 = i2.substring(z4)), d3.push(e2), z4 = n2, k3(d3), o2 && R2()), w3();
|
|
274
274
|
}
|
|
275
275
|
function b5(e2) {
|
|
276
276
|
z4 = e2, k3(d3), d3 = [], g4 = i2.indexOf(O3, z4);
|
|
277
277
|
}
|
|
278
278
|
function w3(e2) {
|
|
279
|
-
if (C2.header && !t && h4.length && !
|
|
279
|
+
if (C2.header && !t && h4.length && !L4) {
|
|
280
280
|
var s4 = h4[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++) {
|
|
@@ -288,15 +288,15 @@ var require_papaparse_min = __commonJS({
|
|
|
288
288
|
} else a6[i4] = 1, s4[r4] = i4;
|
|
289
289
|
o4.add(i4);
|
|
290
290
|
}
|
|
291
|
-
n4 && console.warn("Duplicate headers found and renamed."),
|
|
291
|
+
n4 && console.warn("Duplicate headers found and renamed."), L4 = true;
|
|
292
292
|
}
|
|
293
|
-
return { data: h4, errors: u4, meta: { delimiter: S, linebreak: O3, aborted:
|
|
293
|
+
return { data: h4, errors: u4, meta: { delimiter: S, linebreak: O3, aborted: M, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D3 } };
|
|
294
294
|
}
|
|
295
295
|
function R2() {
|
|
296
296
|
I4(w3()), h4 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
|
-
|
|
299
|
+
M = true;
|
|
300
300
|
}, this.getCharIndex = function() {
|
|
301
301
|
return z4;
|
|
302
302
|
};
|
|
@@ -336,21 +336,21 @@ var require_papaparse_min = __commonJS({
|
|
|
336
336
|
function q3(e) {
|
|
337
337
|
return "function" == typeof e;
|
|
338
338
|
}
|
|
339
|
-
return
|
|
339
|
+
return v4.parse = function(e, t) {
|
|
340
340
|
var i2 = (t = t || {}).dynamicTyping || false;
|
|
341
341
|
q3(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
342
|
-
if (t.dynamicTyping = i2, t.transform = !!q3(t.transform) && t.transform, !t.worker || !
|
|
342
|
+
if (t.dynamicTyping = i2, t.transform = !!q3(t.transform) && t.transform, !t.worker || !v4.WORKERS_SUPPORTED) return i2 = null, v4.NODE_STREAM_INPUT, "string" == typeof e ? (e = P4(e), i2 = new (t.download ? f4 : c2)(t)) : true === e.readable && q3(e.read) && q3(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 !!v4.WORKERS_SUPPORTED && (e2 = (() => {
|
|
346
346
|
var e4 = n.URL || n.webkitURL || null, t2 = r.toString();
|
|
347
|
-
return
|
|
347
|
+
return v4.BLOB_URL || (v4.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++, o[e2.id] = e2);
|
|
349
349
|
})()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step = q3(t.step), t.chunk = q3(t.chunk), t.complete = q3(t.complete), t.error = q3(t.error), delete t.worker, i2.postMessage({ input: e, config: t, workerId: i2.id });
|
|
350
|
-
},
|
|
350
|
+
}, v4.unparse = function(e, t) {
|
|
351
351
|
var s2 = false, _3 = true, m2 = ",", y6 = "\r\n", a5 = '"', o2 = a5 + a5, i2 = false, r2 = null, h4 = false, u4 = ((() => {
|
|
352
352
|
if ("object" == typeof t) {
|
|
353
|
-
if ("string" != typeof t.delimiter ||
|
|
353
|
+
if ("string" != typeof t.delimiter || v4.BAD_DELIMITERS.filter(function(e2) {
|
|
354
354
|
return -1 !== t.delimiter.indexOf(e2);
|
|
355
355
|
}).length || (m2 = 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");
|
|
@@ -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), 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, v4.BAD_DELIMITERS) || -1 < r4.indexOf(m2) || -1 < i4.indexOf(a5) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a5 + r4 + a5 : r4);
|
|
400
400
|
}
|
|
401
|
-
},
|
|
401
|
+
}, v4.RECORD_SEP = String.fromCharCode(30), v4.UNIT_SEP = String.fromCharCode(31), v4.BYTE_ORDER_MARK = "\uFEFF", v4.BAD_DELIMITERS = ["\r", "\n", '"', v4.BYTE_ORDER_MARK], v4.WORKERS_SUPPORTED = !s && !!n.Worker, v4.NODE_STREAM_INPUT = 1, v4.LocalChunkSize = 10485760, v4.RemoteChunkSize = 5242880, v4.DefaultDelimiter = ",", v4.Parser = E4, v4.ParserHandle = i, v4.NetworkStreamer = f4, v4.FileStreamer = l, v4.StringStreamer = c2, v4.ReadableStreamStreamer = p2, n.jQuery && ((d2 = n.jQuery).fn.parse = function(o2) {
|
|
402
402
|
var i2 = o2.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 a5 = n2.instanceConfig.complete;
|
|
420
420
|
n2.instanceConfig.complete = function(e4) {
|
|
421
421
|
q3(a5) && a5(e4, n2.file, n2.inputElem), u4();
|
|
422
|
-
},
|
|
422
|
+
}, v4.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
|
}), 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 === v4.WORKER_ID && e && (v4.WORKER_ID = e.workerId);
|
|
431
|
+
"string" == typeof e.input ? n.postMessage({ workerId: v4.WORKER_ID, results: v4.parse(e.input, e.config), finished: true }) : (n.File && e.input instanceof File || e.input instanceof Object) && (e = v4.parse(e.input, e.config)) && n.postMessage({ workerId: v4.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, v4;
|
|
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 v4 = c2 / 255;
|
|
500
|
+
return v4 <= 0.04045 ? v4 / 12.92 : Math.pow((v4 + 0.055) / 1.055, 2.4);
|
|
501
501
|
}
|
|
502
502
|
var Xn = 0.95047;
|
|
503
503
|
var Yn = 1;
|
|
@@ -549,7 +549,7 @@ function deltaE2000(c1, c2) {
|
|
|
549
549
|
else if (Math.abs(h1p - h2p) <= 180) hbarp = (h1p + h2p) / 2;
|
|
550
550
|
else if (h1p + h2p < 360) hbarp = (h1p + h2p + 360) / 2;
|
|
551
551
|
else hbarp = (h1p + h2p - 360) / 2;
|
|
552
|
-
const
|
|
552
|
+
const T3 = 1 - 0.17 * Math.cos((hbarp - 30) * RAD) + 0.24 * Math.cos(2 * hbarp * RAD) + 0.32 * Math.cos((3 * hbarp + 6) * RAD) - 0.2 * Math.cos((4 * hbarp - 63) * RAD);
|
|
553
553
|
const dTheta = 30 * Math.exp(-Math.pow((hbarp - 275) / 25, 2));
|
|
554
554
|
const Cbarp7 = Math.pow(Cbarp, 7);
|
|
555
555
|
const RC = 2 * Math.sqrt(Cbarp7 / (Cbarp7 + Math.pow(25, 7)));
|
|
@@ -557,7 +557,7 @@ function deltaE2000(c1, c2) {
|
|
|
557
557
|
const Lm50 = Math.pow(Lbarp - 50, 2);
|
|
558
558
|
const SL = 1 + 0.015 * Lm50 / Math.sqrt(20 + Lm50);
|
|
559
559
|
const SC = 1 + 0.045 * Cbarp;
|
|
560
|
-
const SH = 1 + 0.015 * Cbarp *
|
|
560
|
+
const SH = 1 + 0.015 * Cbarp * T3;
|
|
561
561
|
const tL = dLp / SL, tC = dCp / SC, tH = dHp / SH;
|
|
562
562
|
return Math.sqrt(tL * tL + tC * tC + tH * tH + RT * tC * tH);
|
|
563
563
|
}
|
|
@@ -575,8 +575,8 @@ function labToHex(lab) {
|
|
|
575
575
|
-0.969266 * X4 + 1.8760108 * Y4 + 0.041556 * Z4,
|
|
576
576
|
0.0556434 * X4 - 0.2040259 * Y4 + 1.0572252 * Z4
|
|
577
577
|
];
|
|
578
|
-
return "#" + lin.map((
|
|
579
|
-
const c2 = Math.max(0, Math.min(1,
|
|
578
|
+
return "#" + lin.map((v4) => {
|
|
579
|
+
const c2 = Math.max(0, Math.min(1, v4));
|
|
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("");
|
|
@@ -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((v4) => Math.max(0, Math.min(255, v4)).toString(16).padStart(2, "0")).join("");
|
|
639
639
|
}
|
|
640
640
|
function censusColourSpread(container, doc) {
|
|
641
641
|
if (!container || typeof container.querySelectorAll !== "function") return EMPTY;
|
|
@@ -679,11 +679,11 @@ function censusColourSpread(container, doc) {
|
|
|
679
679
|
let span = 0, lo = 0, hi = 1;
|
|
680
680
|
for (let i = 0; i < cs.length; i++) {
|
|
681
681
|
for (let j3 = i + 1; j3 < cs.length; j3++) {
|
|
682
|
-
const
|
|
683
|
-
d2[i][j3] =
|
|
684
|
-
d2[j3][i] =
|
|
685
|
-
if (
|
|
686
|
-
span =
|
|
682
|
+
const v4 = deltaE2000(cs[i], cs[j3]);
|
|
683
|
+
d2[i][j3] = v4;
|
|
684
|
+
d2[j3][i] = v4;
|
|
685
|
+
if (v4 > span) {
|
|
686
|
+
span = v4;
|
|
687
687
|
lo = i;
|
|
688
688
|
hi = j3;
|
|
689
689
|
}
|
|
@@ -740,7 +740,7 @@ function mixLab(a4, b4, t) {
|
|
|
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((v4, i) => Math.round(v4 * alpha + c2[i] * (1 - alpha))).map((v4) => v4.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) {
|
|
@@ -784,9 +784,9 @@ function resolveAutoColorScale(p2) {
|
|
|
784
784
|
let high = { ...A2 };
|
|
785
785
|
let highHex = labToHex(high);
|
|
786
786
|
for (let step = 0; step < 80 && autoRampMinStep(lowHex, highHex, canvas) < AUTO_RAMP_MIN_STEP_DELTA_E; step++) {
|
|
787
|
-
const
|
|
788
|
-
if (
|
|
789
|
-
high = { ...high, L:
|
|
787
|
+
const L4 = Math.max(4, Math.min(98, high.L + (darkCanvas ? 1 : -1)));
|
|
788
|
+
if (L4 === high.L) break;
|
|
789
|
+
high = { ...high, L: L4 };
|
|
790
790
|
highHex = labToHex(high);
|
|
791
791
|
}
|
|
792
792
|
memoKey = key;
|
|
@@ -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 v4 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
|
|
876
|
+
return v4 === "mark" || v4 === "aggregate" || v4 === "skip" ? v4 : APPROXIMATE_POSITIONS_DEFAULT;
|
|
877
877
|
})(),
|
|
878
878
|
valueAxisBaseline: (() => {
|
|
879
|
-
const
|
|
880
|
-
return
|
|
879
|
+
const v4 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
|
|
880
|
+
return v4 === "zero" || v4 === "fit" || v4 === "auto" ? v4 : 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 v4 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
|
|
888
|
+
return v4 === "auto" || v4 === "always" || v4 === "never" ? v4 : SEASONAL_MARKERS_DEFAULT;
|
|
889
889
|
})(),
|
|
890
890
|
// ---- animation: booleans, default+clamp numerics, "" default enum ----
|
|
891
891
|
animAutoPlay: !!p2.animAutoPlay,
|
|
@@ -1279,17 +1279,17 @@ function y3(n, e) {
|
|
|
1279
1279
|
let A2 = n[l], C2 = A3({ ...A2, mapKind: e });
|
|
1280
1280
|
if (S3(C2)) {
|
|
1281
1281
|
t[l] = null, o[l] = null, i[l] = null, m++;
|
|
1282
|
-
let
|
|
1283
|
-
|
|
1282
|
+
let M = K(A2);
|
|
1283
|
+
M && !d2.has(M.toLowerCase()) && (d2.add(M.toLowerCase()), R2.length < x && R2.push(M));
|
|
1284
1284
|
} else if (C2) {
|
|
1285
1285
|
if (t[l] = C2.lat, o[l] = C2.lon, i[l] = C2.precision, S++, g3[C2.precision]++, (p2 === null || G[C2.precision] > G[p2]) && (p2 = C2.precision), G[C2.precision] > G.city) {
|
|
1286
|
-
let
|
|
1287
|
-
|
|
1286
|
+
let M = K(A2);
|
|
1287
|
+
M && !s.has(M.toLowerCase()) && (s.add(M.toLowerCase()), f4.length < x && f4.push(M));
|
|
1288
1288
|
}
|
|
1289
1289
|
} else {
|
|
1290
1290
|
t[l] = null, o[l] = null, i[l] = null;
|
|
1291
|
-
let
|
|
1292
|
-
|
|
1291
|
+
let M = K(A2);
|
|
1292
|
+
M && !r.has(M.toLowerCase()) && (r.add(M.toLowerCase()), a4.push(M));
|
|
1293
1293
|
}
|
|
1294
1294
|
}
|
|
1295
1295
|
let c2 = !n3() && n.some((l) => l.city !== null && l.city !== void 0 && String(l.city).trim() !== "");
|
|
@@ -1460,22 +1460,22 @@ function It(n, s) {
|
|
|
1460
1460
|
return s === "us-zip5" ? w.has(n.slice(0, 3)) : true;
|
|
1461
1461
|
}
|
|
1462
1462
|
function Wt(n, s) {
|
|
1463
|
-
let i = new Array(n.length), r = /* @__PURE__ */ new Set(),
|
|
1464
|
-
for (let
|
|
1465
|
-
let I4 = Mt(n[
|
|
1466
|
-
if (i[
|
|
1463
|
+
let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M = [], h3 = 0;
|
|
1464
|
+
for (let N4 = 0; N4 < n.length; ++N4) {
|
|
1465
|
+
let I4 = Mt(n[N4], s), O3 = I4 !== null && It(I4, s) ? I4 : null;
|
|
1466
|
+
if (i[N4] = O3, O3 !== null) h3++;
|
|
1467
1467
|
else {
|
|
1468
|
-
let d2 = n[
|
|
1468
|
+
let d2 = n[N4];
|
|
1469
1469
|
if (d2 != null) {
|
|
1470
1470
|
let p2 = String(d2).trim();
|
|
1471
1471
|
if (p2.length > 0) {
|
|
1472
1472
|
let m = p2.toLowerCase();
|
|
1473
|
-
r.has(m) || (r.add(m),
|
|
1473
|
+
r.has(m) || (r.add(m), M.push(p2));
|
|
1474
1474
|
}
|
|
1475
1475
|
}
|
|
1476
1476
|
}
|
|
1477
1477
|
}
|
|
1478
|
-
return { iso: i, unmatched:
|
|
1478
|
+
return { iso: i, unmatched: M, matchedRows: h3, totalRows: n.length };
|
|
1479
1479
|
}
|
|
1480
1480
|
|
|
1481
1481
|
// ../shape-core/dist/chunk-ZVHCLXKO.mjs
|
|
@@ -1582,147 +1582,147 @@ var wt = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, String
|
|
|
1582
1582
|
|
|
1583
1583
|
// ../shape-core/dist/index.mjs
|
|
1584
1584
|
/*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
|
|
1585
|
-
var
|
|
1585
|
+
var V3 = 2;
|
|
1586
1586
|
var Y3 = 400;
|
|
1587
|
-
function
|
|
1587
|
+
function z3(n) {
|
|
1588
1588
|
return !!E(n);
|
|
1589
1589
|
}
|
|
1590
|
-
function
|
|
1590
|
+
function N3(n) {
|
|
1591
1591
|
let e = /* @__PURE__ */ new Set();
|
|
1592
1592
|
for (let t of n) {
|
|
1593
1593
|
if (t == null) continue;
|
|
1594
|
-
let
|
|
1595
|
-
if (!V(
|
|
1594
|
+
let o = u(String(t));
|
|
1595
|
+
if (!V(o) && !e.has(o) && (e.add(o), e.size >= Y3)) break;
|
|
1596
1596
|
}
|
|
1597
1597
|
return Array.from(e);
|
|
1598
1598
|
}
|
|
1599
|
-
function
|
|
1600
|
-
let e =
|
|
1601
|
-
if (e.length === 0 ||
|
|
1602
|
-
let t = e.filter((
|
|
1603
|
-
return t >= 1 && t >=
|
|
1599
|
+
function v3(n) {
|
|
1600
|
+
let e = N3(n);
|
|
1601
|
+
if (e.length === 0 || B3(n) < 95) return false;
|
|
1602
|
+
let t = e.filter((u2) => z3(u2) && !Y(u2)).length, o = e.filter((u2) => !z3(u2) && !!Y(u2)).length;
|
|
1603
|
+
return t >= 1 && t >= o;
|
|
1604
1604
|
}
|
|
1605
1605
|
function X3(n, e) {
|
|
1606
1606
|
if (!Y(n)) return false;
|
|
1607
1607
|
let t = E(n);
|
|
1608
1608
|
return t ? e === "world" ? true : s3.has(t) : false;
|
|
1609
1609
|
}
|
|
1610
|
-
function
|
|
1611
|
-
let e =
|
|
1610
|
+
function B3(n) {
|
|
1611
|
+
let e = N3(n);
|
|
1612
1612
|
if (e.length === 0) return 0;
|
|
1613
1613
|
let t = 0;
|
|
1614
|
-
for (let
|
|
1614
|
+
for (let o of e) z3(o) && t++;
|
|
1615
1615
|
return Math.round(t / e.length * 1e3) / 10;
|
|
1616
1616
|
}
|
|
1617
|
-
function
|
|
1618
|
-
let e =
|
|
1617
|
+
function L2(n) {
|
|
1618
|
+
let e = N3(n);
|
|
1619
1619
|
if (e.length === 0) return 0;
|
|
1620
1620
|
let t = 0;
|
|
1621
|
-
for (let
|
|
1621
|
+
for (let o of e) Y(o) && t++;
|
|
1622
1622
|
return Math.round(t / e.length * 1e3) / 10;
|
|
1623
1623
|
}
|
|
1624
1624
|
function $2(n) {
|
|
1625
1625
|
let e = /* @__PURE__ */ new Set();
|
|
1626
1626
|
for (let t of n) {
|
|
1627
1627
|
if (t == null) continue;
|
|
1628
|
-
let
|
|
1629
|
-
if (!V(u(
|
|
1628
|
+
let o = String(t).trim();
|
|
1629
|
+
if (!V(u(o)) && !e.has(o) && (e.add(o), e.size >= Y3)) break;
|
|
1630
1630
|
}
|
|
1631
1631
|
return Array.from(e);
|
|
1632
1632
|
}
|
|
1633
|
-
function
|
|
1633
|
+
function W2(n) {
|
|
1634
1634
|
let e = $2(n);
|
|
1635
1635
|
if (e.length === 0) return 0;
|
|
1636
1636
|
let t = 0;
|
|
1637
|
-
for (let
|
|
1637
|
+
for (let o of e) Z(o).length > 0 && t++;
|
|
1638
1638
|
return Math.round(t / e.length * 1e3) / 10;
|
|
1639
1639
|
}
|
|
1640
1640
|
function Z3(n, e) {
|
|
1641
1641
|
return y4(e, rt) ? true : $2(n).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
|
|
1642
1642
|
}
|
|
1643
|
-
function
|
|
1644
|
-
let t =
|
|
1643
|
+
function nt2(n, e) {
|
|
1644
|
+
let t = N3(n);
|
|
1645
1645
|
if (t.length === 0) return 0;
|
|
1646
|
-
let
|
|
1647
|
-
for (let
|
|
1648
|
-
return Math.round(
|
|
1646
|
+
let o = 0;
|
|
1647
|
+
for (let u2 of t) p3(u2, e) && o++;
|
|
1648
|
+
return Math.round(o / t.length * 1e3) / 10;
|
|
1649
1649
|
}
|
|
1650
|
-
function
|
|
1650
|
+
function K3(n, e) {
|
|
1651
1651
|
let t = 0;
|
|
1652
|
-
for (let
|
|
1652
|
+
for (let o of N3(n)) e(o) && t++;
|
|
1653
1653
|
return t;
|
|
1654
1654
|
}
|
|
1655
|
-
function
|
|
1655
|
+
function tt2(n, e) {
|
|
1656
1656
|
let t = 0;
|
|
1657
|
-
for (let
|
|
1657
|
+
for (let o of $2(n)) e(o) && t++;
|
|
1658
1658
|
return t;
|
|
1659
1659
|
}
|
|
1660
|
-
function
|
|
1661
|
-
let a4 = [], s = [],
|
|
1660
|
+
function rt3(n, e, t, o, u2) {
|
|
1661
|
+
let a4 = [], s = [], i = {}, C2 = {}, x2 = new Set(n), d2 = (r) => e.map((l) => l[r]);
|
|
1662
1662
|
for (let r of ["city", "country"]) {
|
|
1663
|
-
let
|
|
1664
|
-
|
|
1663
|
+
let l = t?.[r];
|
|
1664
|
+
l && x2.has(l) && (i[r] = l);
|
|
1665
1665
|
}
|
|
1666
|
-
let
|
|
1666
|
+
let ie = new Set(u2 ?? n);
|
|
1667
1667
|
for (let r of ["lat", "lon"]) {
|
|
1668
|
-
let
|
|
1669
|
-
|
|
1668
|
+
let l = t?.[r];
|
|
1669
|
+
l && ie.has(l) && (i[r] = l);
|
|
1670
1670
|
}
|
|
1671
1671
|
let h3 = t?.zip;
|
|
1672
1672
|
if (h3 && x2.has(h3)) {
|
|
1673
|
-
let r = d2(h3),
|
|
1674
|
-
|
|
1673
|
+
let r = d2(h3), l = W2(r);
|
|
1674
|
+
l < 95 ? s.push(`zip=${h3} (only ${l}% of values read as ZIPs)`) : Z3(r, h3) ? i.zip = h3 : s.push(`zip=${h3} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1675
1675
|
}
|
|
1676
1676
|
let g3 = t?.state;
|
|
1677
1677
|
if (g3 && x2.has(g3)) {
|
|
1678
|
-
let r = d2(g3),
|
|
1679
|
-
|
|
1678
|
+
let r = d2(g3), l = N3(r);
|
|
1679
|
+
l.length > 0 && l.every((m) => X3(m, o)) ? s.push(`state=${g3} (every value is "CA", which is both Canada and California)`) : v3(r) ? (s.push(`state=${g3} (every value is a country, not a state)`), i.country || (i.country = g3)) : L2(r) < 95 ? s.push(`state=${g3} (only ${L2(r)}% of values are states/provinces)`) : i.state = g3;
|
|
1680
1680
|
}
|
|
1681
|
-
let S = new Set(Object.values(
|
|
1682
|
-
if (!
|
|
1681
|
+
let S = new Set(Object.values(i).filter(Boolean)), M = n.filter((r) => !S.has(r) && !r.startsWith("__"));
|
|
1682
|
+
if (!i.state) {
|
|
1683
1683
|
let r = null;
|
|
1684
|
-
for (let
|
|
1685
|
-
let m = d2(
|
|
1686
|
-
if (
|
|
1687
|
-
let p2 =
|
|
1684
|
+
for (let l of M) {
|
|
1685
|
+
let m = d2(l);
|
|
1686
|
+
if (v3(m)) continue;
|
|
1687
|
+
let p2 = L2(m);
|
|
1688
1688
|
if (p2 < 95) continue;
|
|
1689
|
-
let
|
|
1690
|
-
|
|
1689
|
+
let _2 = K3(m, (T3) => !!Y(T3)), ae2 = K3(m, (T3) => !!Y(T3) && !X3(T3, o));
|
|
1690
|
+
_2 < V3 && ae2 < 1 || (!r || p2 > r.pct) && (r = { name: l, pct: p2 });
|
|
1691
1691
|
}
|
|
1692
|
-
r && (
|
|
1692
|
+
r && (i.state = r.name, S.add(r.name), a4.push(`state=${r.name} (${r.pct}% states/provinces)`));
|
|
1693
1693
|
}
|
|
1694
|
-
if (!
|
|
1694
|
+
if (!i.zip) for (let r of M) {
|
|
1695
1695
|
if (S.has(r)) continue;
|
|
1696
|
-
let
|
|
1697
|
-
if (!(m < 95) && Z3(
|
|
1698
|
-
|
|
1696
|
+
let l = d2(r), m = W2(l);
|
|
1697
|
+
if (!(m < 95) && Z3(l, r) && !(tt2(l, (p2) => Z(p2).length > 0) < V3)) {
|
|
1698
|
+
i.zip = r, S.add(r), a4.push(`zip=${r} (${m}% ZIP codes)`);
|
|
1699
1699
|
break;
|
|
1700
1700
|
}
|
|
1701
1701
|
}
|
|
1702
|
-
let b4 =
|
|
1703
|
-
if (!b4 || !
|
|
1702
|
+
let b4 = i.country;
|
|
1703
|
+
if (!b4 || !v3(d2(b4))) {
|
|
1704
1704
|
let r = null;
|
|
1705
|
-
for (let
|
|
1706
|
-
if (S.has(
|
|
1707
|
-
let m =
|
|
1708
|
-
(!r || m > r.pct) && (r = { name:
|
|
1705
|
+
for (let l of M) {
|
|
1706
|
+
if (S.has(l) || !v3(d2(l))) continue;
|
|
1707
|
+
let m = B3(d2(l));
|
|
1708
|
+
(!r || m > r.pct) && (r = { name: l, pct: m });
|
|
1709
1709
|
}
|
|
1710
|
-
r && (b4 && (s.push(`country=${b4} (only ${
|
|
1710
|
+
r && (b4 && (s.push(`country=${b4} (only ${B3(d2(b4))}% of values are country identifiers; using ${r.name} instead)`), C2.country = b4), i.country = r.name, S.add(r.name), a4.push(`country=${r.name}`));
|
|
1711
1711
|
}
|
|
1712
|
-
if (!
|
|
1712
|
+
if (!i.city) {
|
|
1713
1713
|
let r = null;
|
|
1714
|
-
for (let
|
|
1715
|
-
if (S.has(
|
|
1716
|
-
let m = d2(
|
|
1717
|
-
p2 < m3 ||
|
|
1714
|
+
for (let l of M) {
|
|
1715
|
+
if (S.has(l)) continue;
|
|
1716
|
+
let m = d2(l), p2 = nt2(m, o);
|
|
1717
|
+
p2 < m3 || K3(m, (_2) => p3(_2, o)) < V3 || (!r || p2 > r.pct) && (r = { name: l, pct: p2 });
|
|
1718
1718
|
}
|
|
1719
|
-
r && (
|
|
1719
|
+
r && (i.city = r.name, a4.push(`city=${r.name} (${r.pct}% known cities)`));
|
|
1720
1720
|
}
|
|
1721
|
-
let
|
|
1722
|
-
let
|
|
1723
|
-
return isFinite(
|
|
1721
|
+
let H3 = i.country ? d2(i.country) : [], E4 = !!i.country && v3(H3), se = E4 ? new Set(H3.map((r) => E(r == null ? null : String(r))).filter(Boolean)).size : 0, U3 = E4 && se >= 2, O3 = !!(i.lat && i.lon) && e.some((r) => {
|
|
1722
|
+
let l = +String(r[i.lat] ?? "").trim(), m = +String(r[i.lon] ?? "").trim();
|
|
1723
|
+
return isFinite(l) && isFinite(m) && l >= -90 && l <= 90 && m >= -180 && m <= 180 && String(r[i.lat] ?? "").trim() !== "" && String(r[i.lon] ?? "").trim() !== "";
|
|
1724
1724
|
});
|
|
1725
|
-
return
|
|
1725
|
+
return i.lat && i.lon && !O3 && s.push(`lat/lon=${i.lat}/${i.lon} (no row holds a usable coordinate pair)`), i.country && !U3 && !(i.city || i.state || i.zip || O3) && s.push(E4 ? `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 || U3 || O3) ? i : null, backfilled: a4, refused: s, ...Object.keys(C2).length ? { labelFallback: C2 } : {} };
|
|
1726
1726
|
}
|
|
1727
1727
|
|
|
1728
1728
|
// src/payload.ts
|
|
@@ -1737,7 +1737,7 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1737
1737
|
let labelCol;
|
|
1738
1738
|
if (bind) {
|
|
1739
1739
|
const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
|
|
1740
|
-
const res =
|
|
1740
|
+
const res = rt3(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
|
|
1741
1741
|
bind = res.bind;
|
|
1742
1742
|
rolesBackfilled = res.backfilled;
|
|
1743
1743
|
rolesRefused = res.refused;
|
|
@@ -1825,11 +1825,11 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1825
1825
|
const row = rowObjs[r];
|
|
1826
1826
|
const a4 = new Array(cols.length + extra);
|
|
1827
1827
|
for (let c2 = 0; c2 < cols.length; c2++) {
|
|
1828
|
-
const
|
|
1829
|
-
if (
|
|
1830
|
-
a4[c2] =
|
|
1828
|
+
const v4 = row[colNames[c2]];
|
|
1829
|
+
if (v4 instanceof Date) {
|
|
1830
|
+
a4[c2] = v4.toISOString();
|
|
1831
1831
|
} else {
|
|
1832
|
-
a4[c2] =
|
|
1832
|
+
a4[c2] = v4 ?? null;
|
|
1833
1833
|
}
|
|
1834
1834
|
}
|
|
1835
1835
|
let k3 = cols.length;
|
|
@@ -2028,8 +2028,8 @@ function isInsideControl(target, container) {
|
|
|
2028
2028
|
function createMarkResolver(env) {
|
|
2029
2029
|
const { root, doc, log } = env;
|
|
2030
2030
|
const isElement = (t) => {
|
|
2031
|
-
const
|
|
2032
|
-
if (
|
|
2031
|
+
const E4 = doc?.defaultView?.Element ?? globalThis.Element;
|
|
2032
|
+
if (E4 && t instanceof E4) return true;
|
|
2033
2033
|
return !!t && typeof t.closest === "function" && typeof t.getAttribute === "function";
|
|
2034
2034
|
};
|
|
2035
2035
|
const viewStyle = (n) => {
|
|
@@ -2049,14 +2049,14 @@ function createMarkResolver(env) {
|
|
|
2049
2049
|
return s === "transparent" || s === "none" || so <= 0.01;
|
|
2050
2050
|
};
|
|
2051
2051
|
const distToPathCenterline = (el, x2, y5) => {
|
|
2052
|
-
const
|
|
2053
|
-
if (!(
|
|
2052
|
+
const L4 = el.getTotalLength();
|
|
2053
|
+
if (!(L4 > 0)) return Number.MAX_VALUE;
|
|
2054
2054
|
const m = el.getScreenCTM();
|
|
2055
2055
|
if (!m) return Number.MAX_VALUE;
|
|
2056
2056
|
let best = Number.MAX_VALUE;
|
|
2057
|
-
const
|
|
2058
|
-
for (let i = 0; i <=
|
|
2059
|
-
const pt2 = el.getPointAtLength(
|
|
2057
|
+
const N4 = 64;
|
|
2058
|
+
for (let i = 0; i <= N4; i++) {
|
|
2059
|
+
const pt2 = el.getPointAtLength(L4 * i / N4);
|
|
2060
2060
|
const dx = m.a * pt2.x + m.c * pt2.y + m.e - x2;
|
|
2061
2061
|
const dy = m.b * pt2.x + m.d * pt2.y + m.f - y5;
|
|
2062
2062
|
const d2 = dx * dx + dy * dy;
|
|
@@ -2377,9 +2377,9 @@ var VALUE_AXIS_MIN_FIT = 0.8;
|
|
|
2377
2377
|
var MIN_AXIS_SPAN_PX = 40;
|
|
2378
2378
|
var EMPTY4 = { marks: 0, axis: "", column: "", fit: 0, offShare: 0, medianOffRadii: 0 };
|
|
2379
2379
|
function num(el, name) {
|
|
2380
|
-
const
|
|
2381
|
-
if (
|
|
2382
|
-
return parseFloat(String(
|
|
2380
|
+
const v4 = el.getAttribute?.(name);
|
|
2381
|
+
if (v4 === null || v4 === void 0 || String(v4).trim() === "") return NaN;
|
|
2382
|
+
return parseFloat(String(v4));
|
|
2383
2383
|
}
|
|
2384
2384
|
function median(xs) {
|
|
2385
2385
|
if (!xs.length) return NaN;
|
|
@@ -2387,15 +2387,15 @@ function median(xs) {
|
|
|
2387
2387
|
const m = s.length >> 1;
|
|
2388
2388
|
return s.length % 2 ? s[m] : (s[m - 1] + s[m]) / 2;
|
|
2389
2389
|
}
|
|
2390
|
-
function robustLine(
|
|
2391
|
-
const n =
|
|
2390
|
+
function robustLine(v4, pos) {
|
|
2391
|
+
const n = v4.length;
|
|
2392
2392
|
const step = Math.max(1, Math.floor(n / FIT_SAMPLE));
|
|
2393
2393
|
const idx = [];
|
|
2394
2394
|
for (let i = 0; i < n; i += step) idx.push(i);
|
|
2395
2395
|
const slopes = [];
|
|
2396
2396
|
for (let p2 = 0; p2 < idx.length; p2++) {
|
|
2397
2397
|
for (let q3 = p2 + 1; q3 < idx.length; q3++) {
|
|
2398
|
-
const dv =
|
|
2398
|
+
const dv = v4[idx[q3]] - v4[idx[p2]];
|
|
2399
2399
|
if (Math.abs(dv) < 1e-12) continue;
|
|
2400
2400
|
slopes.push((pos[idx[q3]] - pos[idx[p2]]) / dv);
|
|
2401
2401
|
}
|
|
@@ -2403,7 +2403,7 @@ function robustLine(v3, pos) {
|
|
|
2403
2403
|
if (slopes.length < 3) return null;
|
|
2404
2404
|
const b4 = median(slopes);
|
|
2405
2405
|
if (!Number.isFinite(b4) || Math.abs(b4) < 1e-12) return null;
|
|
2406
|
-
const a4 = median(pos.map((y5, i) => y5 - b4 *
|
|
2406
|
+
const a4 = median(pos.map((y5, i) => y5 - b4 * v4[i]));
|
|
2407
2407
|
return Number.isFinite(a4) ? { a: a4, b: b4 } : null;
|
|
2408
2408
|
}
|
|
2409
2409
|
function censusValuePlacement(container, data) {
|
|
@@ -2431,30 +2431,30 @@ function censusValuePlacement(container, data) {
|
|
|
2431
2431
|
for (let c2 = 0; c2 < columns.length; c2++) {
|
|
2432
2432
|
if (/^__.*__$/.test(String(columns[c2]?.name ?? ""))) continue;
|
|
2433
2433
|
const vals = dots.map((d2) => {
|
|
2434
|
-
const
|
|
2435
|
-
return
|
|
2434
|
+
const v4 = d2.row[c2];
|
|
2435
|
+
return v4 === null || v4 === void 0 || v4 === "" ? NaN : typeof v4 === "number" ? v4 : Number(v4);
|
|
2436
2436
|
});
|
|
2437
2437
|
const finite = vals.filter(Number.isFinite);
|
|
2438
2438
|
if (finite.length < dots.length * 0.9 || new Set(finite).size < 8) continue;
|
|
2439
|
-
const logs = finite.every((
|
|
2439
|
+
const logs = finite.every((v4) => v4 > 0) ? [false, true] : [false];
|
|
2440
2440
|
for (const log of logs) {
|
|
2441
2441
|
for (const axis of ["x", "y"]) {
|
|
2442
2442
|
const keep = [];
|
|
2443
|
-
const
|
|
2443
|
+
const v4 = [], pos = [];
|
|
2444
2444
|
dots.forEach((d2, k3) => {
|
|
2445
2445
|
if (!Number.isFinite(vals[k3])) return;
|
|
2446
2446
|
keep.push(k3);
|
|
2447
|
-
|
|
2447
|
+
v4.push(log ? Math.log10(vals[k3]) : vals[k3]);
|
|
2448
2448
|
pos.push(axis === "x" ? d2.x : d2.y);
|
|
2449
2449
|
});
|
|
2450
|
-
const line = robustLine(
|
|
2450
|
+
const line = robustLine(v4, pos);
|
|
2451
2451
|
if (!line) continue;
|
|
2452
2452
|
const lo = Math.min(...pos), hi = Math.max(...pos);
|
|
2453
2453
|
if (hi - lo < MIN_AXIS_SPAN_PX) continue;
|
|
2454
2454
|
const mean = pos.reduce((s, p2) => s + p2, 0) / pos.length;
|
|
2455
2455
|
let ssRes = 0, ssTot = 0;
|
|
2456
2456
|
const res = pos.map((p2, k3) => {
|
|
2457
|
-
const e = p2 - (line.a + line.b *
|
|
2457
|
+
const e = p2 - (line.a + line.b * v4[k3]);
|
|
2458
2458
|
ssRes += e * e;
|
|
2459
2459
|
ssTot += (p2 - mean) ** 2;
|
|
2460
2460
|
return e;
|
|
@@ -2830,8 +2830,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2830
2830
|
}
|
|
2831
2831
|
const pinSvg = doc.createElementNS(SVG_NS2, "svg");
|
|
2832
2832
|
for (const a4 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
|
|
2833
|
-
const
|
|
2834
|
-
if (
|
|
2833
|
+
const v4 = svg.getAttribute(a4);
|
|
2834
|
+
if (v4) pinSvg.setAttribute(a4, v4);
|
|
2835
2835
|
}
|
|
2836
2836
|
const styles = svg.querySelectorAll("style");
|
|
2837
2837
|
for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
|
|
@@ -3063,8 +3063,8 @@ function compositeOver(fg, bg) {
|
|
|
3063
3063
|
];
|
|
3064
3064
|
}
|
|
3065
3065
|
function relativeLuminance(rgb) {
|
|
3066
|
-
const lin = rgb.map((
|
|
3067
|
-
const s =
|
|
3066
|
+
const lin = rgb.map((v4) => {
|
|
3067
|
+
const s = v4 / 255;
|
|
3068
3068
|
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
3069
3069
|
});
|
|
3070
3070
|
return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
|
|
@@ -3112,9 +3112,9 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
|
3112
3112
|
}
|
|
3113
3113
|
return out;
|
|
3114
3114
|
}
|
|
3115
|
-
function clamp01(
|
|
3116
|
-
if (typeof
|
|
3117
|
-
return Math.max(0, Math.min(1,
|
|
3115
|
+
function clamp01(v4) {
|
|
3116
|
+
if (typeof v4 !== "number" || !isFinite(v4)) return 1;
|
|
3117
|
+
return Math.max(0, Math.min(1, v4));
|
|
3118
3118
|
}
|
|
3119
3119
|
function hexToRGB(hex2) {
|
|
3120
3120
|
const p2 = toRGBA(hex2);
|
|
@@ -3424,7 +3424,7 @@ function compileRenderFn(code, win, doc, d3) {
|
|
|
3424
3424
|
return fn;
|
|
3425
3425
|
}
|
|
3426
3426
|
var ASYNC_RENDER_TIMEOUT_MS = 15e3;
|
|
3427
|
-
var isThenable = (
|
|
3427
|
+
var isThenable = (v4) => !!v4 && (typeof v4 === "object" || typeof v4 === "function") && typeof v4.then === "function";
|
|
3428
3428
|
function createChartHost(container, config) {
|
|
3429
3429
|
const doc = container.ownerDocument;
|
|
3430
3430
|
const win = doc?.defaultView ?? globalThis;
|
|
@@ -3432,7 +3432,7 @@ function createChartHost(container, config) {
|
|
|
3432
3432
|
let data = config.data;
|
|
3433
3433
|
{
|
|
3434
3434
|
const stamped = config.data?.meta?.hostContract;
|
|
3435
|
-
const major = (
|
|
3435
|
+
const major = (v4) => (v4 || "").split(".")[0];
|
|
3436
3436
|
if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
|
|
3437
3437
|
try {
|
|
3438
3438
|
(win?.console ?? console)?.warn(
|
|
@@ -3858,7 +3858,7 @@ function toPayloadRows(rowMap, sourceRowIdxs) {
|
|
|
3858
3858
|
var sameRows = (a4, b4) => {
|
|
3859
3859
|
if (a4.length !== b4.length) return false;
|
|
3860
3860
|
const x2 = a4.slice().sort((p2, q3) => p2 - q3), y5 = b4.slice().sort((p2, q3) => p2 - q3);
|
|
3861
|
-
return x2.every((
|
|
3861
|
+
return x2.every((v4, i) => v4 === y5[i]);
|
|
3862
3862
|
};
|
|
3863
3863
|
function syncMemberSelection(host, selection, id, highlight, incoming, rowMap) {
|
|
3864
3864
|
const mine = selection.sourceId === id && selection.rows.length > 0;
|
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.6.
|
|
3
|
+
"version": "0.6.18",
|
|
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",
|