@bicharts/chart-host 0.6.12 → 0.6.14
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-5IE7AWZY.mjs → chunk-4ZG5X2QP.mjs} +207 -207
- 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
|
}
|
|
@@ -37,25 +37,25 @@ var require_papaparse_min = __commonJS({
|
|
|
37
37
|
let e4 = this._config.newline;
|
|
38
38
|
e4 || (r2 = this._config.quoteChar || '"', e4 = this._handle.guessLineEndings(t, r2)), t = [...t.split(e4).slice(i2)].join(e4);
|
|
39
39
|
}
|
|
40
|
-
this.isFirstChunk &&
|
|
40
|
+
this.isFirstChunk && q3(this._config.beforeFirstChunk) && void 0 !== (r2 = this._config.beforeFirstChunk(t)) && (t = r2), this.isFirstChunk = false, this._halted = false;
|
|
41
41
|
var i2 = this._partialLine + t, r2 = (this._partialLine = "", this._handle.parse(i2, this._baseIndex, !this._finished));
|
|
42
42
|
if (!this._handle.paused() && !this._handle.aborted()) {
|
|
43
43
|
t = r2.meta.cursor, i2 = (this._finished || (this._partialLine = i2.substring(t - this._baseIndex), this._baseIndex = t), r2 && r2.data && (this._rowCount += r2.data.length), this._finished || this._config.preview && this._rowCount >= this._config.preview);
|
|
44
|
-
if (a4) n.postMessage({ results: r2, workerId:
|
|
45
|
-
else if (
|
|
44
|
+
if (a4) n.postMessage({ results: r2, workerId: v4.WORKER_ID, finished: i2 });
|
|
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;
|
|
48
48
|
}
|
|
49
|
-
return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(r2.data), this._completeResults.errors = this._completeResults.errors.concat(r2.errors), this._completeResults.meta = r2.meta), this._completed || !i2 || !
|
|
49
|
+
return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(r2.data), this._completeResults.errors = this._completeResults.errors.concat(r2.errors), this._completeResults.meta = r2.meta), this._completed || !i2 || !q3(this._config.complete) || r2 && r2.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), i2 || r2 && r2.meta.paused || this._nextChunk(), r2;
|
|
50
50
|
}
|
|
51
51
|
this._halted = true;
|
|
52
52
|
}, this._sendError = function(e2) {
|
|
53
|
-
|
|
53
|
+
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,11 +142,11 @@ 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) {
|
|
149
|
-
e4 = P4(e4),
|
|
149
|
+
e4 = P4(e4), q3(m2.transformHeader) && (e4 = m2.transformHeader(e4, t5)), c4.push(e4);
|
|
150
150
|
};
|
|
151
151
|
var t2 = t4;
|
|
152
152
|
if (p4) if (Array.isArray(p4.data[0])) {
|
|
@@ -176,29 +176,29 @@ var require_papaparse_min = __commonJS({
|
|
|
176
176
|
e2 = { type: e2, code: t2, message: i4 };
|
|
177
177
|
void 0 !== r4 && (e2.row = r4), p4.errors.push(e2);
|
|
178
178
|
}
|
|
179
|
-
|
|
179
|
+
q3(m2.step) && (t = m2.step, m2.step = function(e2) {
|
|
180
180
|
p4 = e2, _3() ? g4() : (g4(), 0 !== p4.data.length && (r2 += e2.data.length, m2.preview && r2 > m2.preview ? s2.abort() : (p4.data = p4.data[0], t(p4, i2))));
|
|
181
181
|
}), this.parse = function(e2, t2, i4) {
|
|
182
|
-
var r4 = m2.quoteChar || '"', r4 = (m2.newline || (m2.newline = this.guessLineEndings(e2, r4)), a5 = false, m2.delimiter ?
|
|
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
186
|
for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o4 = void 0, new E5({ 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 =
|
|
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
191
|
return m2.preview && m2.header && r4.preview++, n2 = e2, s2 = new E5(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() {
|
|
195
|
-
l2 = true, s2.abort(), n2 =
|
|
195
|
+
l2 = true, s2.abort(), n2 = q3(m2.chunk) ? "" : n2.substring(s2.getCharIndex());
|
|
196
196
|
}, this.resume = function() {
|
|
197
197
|
i2.streamer._halted ? (l2 = false, i2.streamer.parseChunk(n2, true)) : setTimeout(i2.resume, 3);
|
|
198
198
|
}, this.aborted = function() {
|
|
199
199
|
return e;
|
|
200
200
|
}, this.abort = function() {
|
|
201
|
-
e = true, s2.abort(), p4.meta.aborted = true,
|
|
201
|
+
e = true, s2.abort(), p4.meta.aborted = true, q3(m2.complete) && m2.complete(p4), n2 = "";
|
|
202
202
|
}, this.guessLineEndings = function(e2, t2) {
|
|
203
203
|
e2 = e2.substring(0, 1048576);
|
|
204
204
|
var t2 = new RegExp(U3(t2) + "([^]*?)" + U3(t2), "gm"), i4 = (e2 = e2.replace(t2, "")).split("\r"), t2 = e2.split("\n"), e2 = 1 < t2.length && t2[0].length < i4[0].length;
|
|
@@ -211,13 +211,13 @@ var require_papaparse_min = __commonJS({
|
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
213
|
function E5(C2) {
|
|
214
|
-
var S = (C2 = C2 || {}).delimiter, O3 = C2.newline, x2 = C2.comments, I4 = C2.step, A2 = C2.preview, T4 = C2.fastMode, D3 = null, L2 = false, F3 = null == C2.quoteChar ? '"' : C2.quoteChar,
|
|
215
|
-
if (void 0 !== C2.escapeChar && (
|
|
216
|
-
true === x2 ? x2 = "#" : ("string" != typeof x2 || -1 <
|
|
217
|
-
var z4 = 0,
|
|
214
|
+
var S = (C2 = C2 || {}).delimiter, O3 = C2.newline, x2 = C2.comments, I4 = C2.step, A2 = C2.preview, T4 = C2.fastMode, D3 = null, L2 = 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
|
-
var n2 = i2.length, e = S.length, s2 = O3.length, a5 = x2.length, o2 =
|
|
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
222
|
if (T4 || false !== T4 && -1 === i2.indexOf(F3)) {
|
|
223
223
|
for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
|
|
@@ -225,27 +225,27 @@ var require_papaparse_min = __commonJS({
|
|
|
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
|
}
|
|
232
232
|
}
|
|
233
233
|
return w3();
|
|
234
234
|
}
|
|
235
|
-
for (var p4 = i2.indexOf(S, z4), g4 = i2.indexOf(O3, z4), _3 = new RegExp(U3(
|
|
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
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 }), E6();
|
|
237
237
|
if (m2 === n2 - 1) return E6(i2.substring(z4, m2).replace(_3, F3));
|
|
238
|
-
if (F3 ===
|
|
239
|
-
else if (F3 ===
|
|
238
|
+
if (F3 === j3 && i2[m2 + 1] === j3) m2++;
|
|
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,14 +258,14 @@ 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
264
|
return E6();
|
|
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
|
}
|
|
@@ -281,7 +281,7 @@ var require_papaparse_min = __commonJS({
|
|
|
281
281
|
let n4 = false;
|
|
282
282
|
for (let r4 = 0; r4 < s4.length; r4++) {
|
|
283
283
|
let i4 = P4(s4[r4]);
|
|
284
|
-
if (a6[i4 =
|
|
284
|
+
if (a6[i4 = q3(C2.transformHeader) ? C2.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, (D3 = null === D3 ? {} : D3)[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: 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
|
};
|
|
@@ -308,16 +308,16 @@ var require_papaparse_min = __commonJS({
|
|
|
308
308
|
var n2 = { abort: function() {
|
|
309
309
|
r2 = true, _2(t.workerId, { data: [], errors: [], meta: { aborted: true } });
|
|
310
310
|
}, pause: m, resume: m };
|
|
311
|
-
if (
|
|
311
|
+
if (q3(i2.userStep)) {
|
|
312
312
|
for (var s2 = 0; s2 < t.results.data.length && (i2.userStep({ data: t.results.data[s2], errors: t.results.errors, meta: t.results.meta }, n2), !r2); s2++) ;
|
|
313
313
|
delete t.results;
|
|
314
|
-
} else
|
|
314
|
+
} else q3(i2.userChunk) && (i2.userChunk(t.results, n2, t.file), delete t.results);
|
|
315
315
|
}
|
|
316
316
|
t.finished && !r2 && _2(t.workerId, t.results);
|
|
317
317
|
}
|
|
318
318
|
function _2(e, t) {
|
|
319
319
|
var i2 = o[e];
|
|
320
|
-
|
|
320
|
+
q3(i2.userComplete) && i2.userComplete(t), i2.terminate(), delete o[e];
|
|
321
321
|
}
|
|
322
322
|
function m() {
|
|
323
323
|
throw new Error("Not implemented.");
|
|
@@ -333,24 +333,24 @@ var require_papaparse_min = __commonJS({
|
|
|
333
333
|
e.apply(t, arguments);
|
|
334
334
|
};
|
|
335
335
|
}
|
|
336
|
-
function
|
|
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
|
-
|
|
342
|
-
if (t.dynamicTyping = i2, t.transform = !!
|
|
341
|
+
q3(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
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
|
-
})()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step =
|
|
350
|
-
},
|
|
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
|
+
}, 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,30 +396,30 @@ 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 = E5, 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;
|
|
405
405
|
for (var t = 0; t < this.files.length; t++) h4.push({ file: this.files[t], inputElem: this, instanceConfig: d2.extend({}, i2) });
|
|
406
406
|
}), e(), this;
|
|
407
407
|
function e() {
|
|
408
|
-
if (0 === h4.length)
|
|
408
|
+
if (0 === h4.length) q3(o2.complete) && o2.complete();
|
|
409
409
|
else {
|
|
410
410
|
var e2, t, i4, r2, n2 = h4[0];
|
|
411
|
-
if (
|
|
411
|
+
if (q3(o2.before)) {
|
|
412
412
|
var s2 = o2.before(n2.file, n2.inputElem);
|
|
413
413
|
if ("object" == typeof s2) {
|
|
414
|
-
if ("abort" === s2.action) return e2 = "AbortError", t = n2.file, i4 = n2.inputElem, r2 = s2.reason, void (
|
|
414
|
+
if ("abort" === s2.action) return e2 = "AbortError", t = n2.file, i4 = n2.inputElem, r2 = s2.reason, void (q3(o2.error) && o2.error({ name: e2 }, t, i4, r2));
|
|
415
415
|
if ("skip" === s2.action) return void u4();
|
|
416
416
|
"object" == typeof s2.config && (n2.instanceConfig = d2.extend(n2.instanceConfig, s2.config));
|
|
417
417
|
} else if ("skip" === s2) return void u4();
|
|
418
418
|
}
|
|
419
419
|
var a5 = n2.instanceConfig.complete;
|
|
420
420
|
n2.instanceConfig.complete = function(e4) {
|
|
421
|
-
|
|
422
|
-
},
|
|
421
|
+
q3(a5) && a5(e4, n2.file, n2.inputElem), u4();
|
|
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;
|
|
@@ -509,10 +509,10 @@ function f(t) {
|
|
|
509
509
|
}
|
|
510
510
|
function rgbToLab(r, g3, b4) {
|
|
511
511
|
const R2 = linearise(r), G3 = linearise(g3), B4 = linearise(b4);
|
|
512
|
-
const
|
|
512
|
+
const X4 = 0.4124564 * R2 + 0.3575761 * G3 + 0.1804375 * B4;
|
|
513
513
|
const Y4 = 0.2126729 * R2 + 0.7151522 * G3 + 0.072175 * B4;
|
|
514
514
|
const Z4 = 0.0193339 * R2 + 0.119192 * G3 + 0.9503041 * B4;
|
|
515
|
-
const fx = f(
|
|
515
|
+
const fx = f(X4 / Xn), fy = f(Y4 / Yn), fz = f(Z4 / Zn);
|
|
516
516
|
return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
|
|
517
517
|
}
|
|
518
518
|
function hexToLab(hex2) {
|
|
@@ -567,16 +567,16 @@ function labToHex(lab) {
|
|
|
567
567
|
return t32 > EPS ? t32 : (116 * t - 16) / KAPPA;
|
|
568
568
|
};
|
|
569
569
|
const fy = (lab.L + 16) / 116, fx = fy + lab.a / 500, fz = fy - lab.b / 200;
|
|
570
|
-
const
|
|
570
|
+
const X4 = Xn * finv(fx);
|
|
571
571
|
const Y4 = Yn * (lab.L > KAPPA * EPS ? fy * fy * fy : lab.L / KAPPA);
|
|
572
572
|
const Z4 = Zn * finv(fz);
|
|
573
573
|
const lin = [
|
|
574
|
-
3.2404542 *
|
|
575
|
-
-0.969266 *
|
|
576
|
-
0.0556434 *
|
|
574
|
+
3.2404542 * X4 - 1.5371385 * Y4 - 0.4985314 * Z4,
|
|
575
|
+
-0.969266 * X4 + 1.8760108 * Y4 + 0.041556 * Z4,
|
|
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;
|
|
@@ -678,14 +678,14 @@ function censusColourSpread(container, doc) {
|
|
|
678
678
|
const d2 = cs.map(() => new Array(cs.length).fill(0));
|
|
679
679
|
let span = 0, lo = 0, hi = 1;
|
|
680
680
|
for (let i = 0; i < cs.length; i++) {
|
|
681
|
-
for (let
|
|
682
|
-
const
|
|
683
|
-
d2[i][
|
|
684
|
-
d2[
|
|
685
|
-
if (
|
|
686
|
-
span =
|
|
681
|
+
for (let j3 = i + 1; j3 < cs.length; j3++) {
|
|
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
|
-
hi =
|
|
688
|
+
hi = j3;
|
|
689
689
|
}
|
|
690
690
|
}
|
|
691
691
|
}
|
|
@@ -700,8 +700,8 @@ function censusColourSpread(container, doc) {
|
|
|
700
700
|
let crowd = 0;
|
|
701
701
|
for (let i = 0; i < cs.length; i++) {
|
|
702
702
|
let n = 0;
|
|
703
|
-
for (let
|
|
704
|
-
if (i ===
|
|
703
|
+
for (let j3 = 0; j3 < cs.length; j3++) {
|
|
704
|
+
if (i === j3 || d2[i][j3] <= SAME_SHADE_DELTA_E) n += top[j3].n;
|
|
705
705
|
}
|
|
706
706
|
if (n > crowd) crowd = n;
|
|
707
707
|
}
|
|
@@ -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) {
|
|
@@ -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,7 +1460,7 @@ 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(),
|
|
1463
|
+
let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M = [], h3 = 0;
|
|
1464
1464
|
for (let N3 = 0; N3 < n.length; ++N3) {
|
|
1465
1465
|
let I4 = Mt(n[N3], s), O3 = I4 !== null && It(I4, s) ? I4 : null;
|
|
1466
1466
|
if (i[N3] = O3, O3 !== null) h3++;
|
|
@@ -1470,27 +1470,27 @@ function Wt(n, s) {
|
|
|
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
|
-
// ../shape-core/dist/chunk-
|
|
1481
|
+
// ../shape-core/dist/chunk-ZVHCLXKO.mjs
|
|
1482
1482
|
var import_papaparse = __toESM(require_papaparse_min(), 1);
|
|
1483
1483
|
/*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
|
|
1484
1484
|
var ve = { "north-america": "AG AI AW BB BL BM BQ BS BZ CA CR CU CW DM DO GD GL GP GT HN HT JM KN KY LC MF MQ MS MX NI PA PM PR SV SX TC TT US VC VG VI", "south-america": "AR BO BR CL CO EC FK GF GY PE PY SR UY VE", europe: "AD AL AT AX BA BE BG BY CH CY CZ DE DK EE ES FI FO FR GB GG GI GR HR HU IE IM IS IT JE LI LT LU LV MC MD ME MK MT NL NO PL PT RO RS RU SE SI SJ SK SM UA VA", africa: "AO BF BI BJ BW CD CF CG CI CM CV DJ DZ EG EH ER ET GA GH GM GN GQ GW KE KM LR LS LY MA MG ML MR MU MW MZ NA NE NG RE RW SC SD SH SL SN SO SS ST SZ TD TG TN TZ UG YT ZA ZM ZW", asia: "AE AF AM AZ BD BH BN BT CC CN CX GE HK ID IL IN IO IQ IR JO JP KG KH KP KR KW KZ LA LB LK MM MN MO MV MY NP OM PH PK PS QA SA SG SY TH TJ TL TM TR TW UZ VN YE", oceania: "AS AU CK FJ FM GU KI MH MP NC NF NR NU NZ PF PG PN PW SB TK TO TV UM VU WF WS", antarctica: "AQ BV GS HM TF" };
|
|
1485
|
-
var
|
|
1485
|
+
var J3 = (() => {
|
|
1486
1486
|
let t = /* @__PURE__ */ new Map();
|
|
1487
1487
|
for (let e of Object.keys(ve)) for (let n of ve[e].split(/\s+/)) n && t.set(n, e);
|
|
1488
1488
|
return t;
|
|
1489
1489
|
})();
|
|
1490
1490
|
function at2(t) {
|
|
1491
1491
|
for (let [e, n] of t) {
|
|
1492
|
-
let r =
|
|
1493
|
-
r && !
|
|
1492
|
+
let r = J3.get(e);
|
|
1493
|
+
r && !J3.has(n) && J3.set(n, r);
|
|
1494
1494
|
}
|
|
1495
1495
|
}
|
|
1496
1496
|
at2(N);
|
|
@@ -1498,7 +1498,7 @@ var gt = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "s
|
|
|
1498
1498
|
var pt = ["pct", "percent", "percentage", "rate", "ratio", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "gpa", "percentile", "quantile", "bmi", "density", "pressure", "humidity", "velocity", "efficiency", "occupancy", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps"];
|
|
1499
1499
|
var ht = ["latitude", "longitude"];
|
|
1500
1500
|
var bt = ["latitude", "longitude"];
|
|
1501
|
-
function
|
|
1501
|
+
function j2(t) {
|
|
1502
1502
|
return f2(t);
|
|
1503
1503
|
}
|
|
1504
1504
|
var de = ["somme de", "suma de", "soma de", "summe von", "som van", "somma di", "summa av", "sum av", "sum af", "soucet z", "suma z", "totaal van", "total de", "toplam", "osszeg", "nombre de", "recuento de", "contagem de", "anzahl von", "aantal van", "conteggio di", "antal av", "lukumaara", "pocet z"];
|
|
@@ -1511,11 +1511,11 @@ var _t = new RegExp("\\b(" + gt.join("|") + ")\\b|(" + pt.join("|") + ")$", "i")
|
|
|
1511
1511
|
var At = new RegExp("\\b(" + ht.join("|") + ")\\b|(" + bt.join("|") + ")$", "i");
|
|
1512
1512
|
function Fe(t) {
|
|
1513
1513
|
if (!t) return "";
|
|
1514
|
-
let e = String(t), n = ke.exec(
|
|
1514
|
+
let e = String(t), n = ke.exec(j2(e));
|
|
1515
1515
|
return (n ? e.slice(n[0].length) : e).trim();
|
|
1516
1516
|
}
|
|
1517
1517
|
function Ct(t) {
|
|
1518
|
-
return !!t && ke.test(
|
|
1518
|
+
return !!t && ke.test(j2(String(t)));
|
|
1519
1519
|
}
|
|
1520
1520
|
var Mt2 = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
|
|
1521
1521
|
var Oe = new RegExp("^\\s*(" + [...Mt2].sort((t, e) => e.length - t.length).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
|
|
@@ -1528,7 +1528,7 @@ function Rt(t) {
|
|
|
1528
1528
|
function ze(t, e) {
|
|
1529
1529
|
if (!e) return false;
|
|
1530
1530
|
let n = Fe(e);
|
|
1531
|
-
return t.test(
|
|
1531
|
+
return t.test(j2(Rt(e))) || t.test(j2(n)) || t.test(j2(d(n).join(" ")));
|
|
1532
1532
|
}
|
|
1533
1533
|
function $e(t) {
|
|
1534
1534
|
return ze(At, t);
|
|
@@ -1584,10 +1584,10 @@ var wt = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, String
|
|
|
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
1585
|
var z3 = 2;
|
|
1586
1586
|
var Y3 = 400;
|
|
1587
|
-
function
|
|
1587
|
+
function B3(n) {
|
|
1588
1588
|
return !!E(n);
|
|
1589
1589
|
}
|
|
1590
|
-
function
|
|
1590
|
+
function v3(n) {
|
|
1591
1591
|
let e = /* @__PURE__ */ new Set();
|
|
1592
1592
|
for (let t of n) {
|
|
1593
1593
|
if (t == null) continue;
|
|
@@ -1597,31 +1597,31 @@ function M(n) {
|
|
|
1597
1597
|
return Array.from(e);
|
|
1598
1598
|
}
|
|
1599
1599
|
function T3(n) {
|
|
1600
|
-
let e =
|
|
1600
|
+
let e = v3(n);
|
|
1601
1601
|
if (e.length === 0 || W2(n) < 95) return false;
|
|
1602
|
-
let t = e.filter((c2) =>
|
|
1602
|
+
let t = e.filter((c2) => B3(c2) && !Y(c2)).length, i = e.filter((c2) => !B3(c2) && !!Y(c2)).length;
|
|
1603
1603
|
return t >= 1 && t >= i;
|
|
1604
1604
|
}
|
|
1605
|
-
function
|
|
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
1610
|
function W2(n) {
|
|
1611
|
-
let e =
|
|
1611
|
+
let e = v3(n);
|
|
1612
1612
|
if (e.length === 0) return 0;
|
|
1613
1613
|
let t = 0;
|
|
1614
|
-
for (let i of e)
|
|
1614
|
+
for (let i of e) B3(i) && t++;
|
|
1615
1615
|
return Math.round(t / e.length * 1e3) / 10;
|
|
1616
1616
|
}
|
|
1617
1617
|
function E4(n) {
|
|
1618
|
-
let e =
|
|
1618
|
+
let e = v3(n);
|
|
1619
1619
|
if (e.length === 0) return 0;
|
|
1620
1620
|
let t = 0;
|
|
1621
1621
|
for (let i of e) Y(i) && t++;
|
|
1622
1622
|
return Math.round(t / e.length * 1e3) / 10;
|
|
1623
1623
|
}
|
|
1624
|
-
function
|
|
1624
|
+
function $2(n) {
|
|
1625
1625
|
let e = /* @__PURE__ */ new Set();
|
|
1626
1626
|
for (let t of n) {
|
|
1627
1627
|
if (t == null) continue;
|
|
@@ -1630,99 +1630,99 @@ function V3(n) {
|
|
|
1630
1630
|
}
|
|
1631
1631
|
return Array.from(e);
|
|
1632
1632
|
}
|
|
1633
|
-
function
|
|
1634
|
-
let e =
|
|
1633
|
+
function K3(n) {
|
|
1634
|
+
let e = $2(n);
|
|
1635
1635
|
if (e.length === 0) return 0;
|
|
1636
1636
|
let t = 0;
|
|
1637
1637
|
for (let i of e) Z(i).length > 0 && t++;
|
|
1638
1638
|
return Math.round(t / e.length * 1e3) / 10;
|
|
1639
1639
|
}
|
|
1640
1640
|
function Z3(n, e) {
|
|
1641
|
-
return y4(e, rt) ? true :
|
|
1641
|
+
return y4(e, rt) ? true : $2(n).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
|
|
1642
1642
|
}
|
|
1643
1643
|
function et2(n, e) {
|
|
1644
|
-
let t =
|
|
1644
|
+
let t = v3(n);
|
|
1645
1645
|
if (t.length === 0) return 0;
|
|
1646
1646
|
let i = 0;
|
|
1647
1647
|
for (let c2 of t) p3(c2, e) && i++;
|
|
1648
1648
|
return Math.round(i / t.length * 1e3) / 10;
|
|
1649
1649
|
}
|
|
1650
|
-
function
|
|
1650
|
+
function V3(n, e) {
|
|
1651
1651
|
let t = 0;
|
|
1652
|
-
for (let i of
|
|
1652
|
+
for (let i of v3(n)) e(i) && t++;
|
|
1653
1653
|
return t;
|
|
1654
1654
|
}
|
|
1655
1655
|
function nt2(n, e) {
|
|
1656
1656
|
let t = 0;
|
|
1657
|
-
for (let i of
|
|
1657
|
+
for (let i of $2(n)) e(i) && t++;
|
|
1658
1658
|
return t;
|
|
1659
1659
|
}
|
|
1660
1660
|
function tt2(n, e, t, i, c2) {
|
|
1661
|
-
let a4 = [], s = [],
|
|
1662
|
-
for (let
|
|
1663
|
-
let u2 = t?.[
|
|
1664
|
-
u2 && x2.has(u2) && (r
|
|
1661
|
+
let a4 = [], s = [], o = {}, C2 = {}, x2 = new Set(n), d2 = (r) => e.map((u2) => u2[r]);
|
|
1662
|
+
for (let r of ["city", "country"]) {
|
|
1663
|
+
let u2 = t?.[r];
|
|
1664
|
+
u2 && x2.has(u2) && (o[r] = u2);
|
|
1665
1665
|
}
|
|
1666
|
-
let
|
|
1667
|
-
for (let
|
|
1668
|
-
let u2 = t?.[
|
|
1669
|
-
u2 &&
|
|
1666
|
+
let oe = new Set(c2 ?? n);
|
|
1667
|
+
for (let r of ["lat", "lon"]) {
|
|
1668
|
+
let u2 = t?.[r];
|
|
1669
|
+
u2 && oe.has(u2) && (o[r] = u2);
|
|
1670
1670
|
}
|
|
1671
|
-
let
|
|
1672
|
-
if (
|
|
1673
|
-
let
|
|
1674
|
-
u2 < 95 ? s.push(`zip=${
|
|
1671
|
+
let h3 = t?.zip;
|
|
1672
|
+
if (h3 && x2.has(h3)) {
|
|
1673
|
+
let r = d2(h3), u2 = K3(r);
|
|
1674
|
+
u2 < 95 ? s.push(`zip=${h3} (only ${u2}% of values read as ZIPs)`) : Z3(r, h3) ? o.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
|
|
1679
|
-
u2.length > 0 && u2.every((m) =>
|
|
1678
|
+
let r = d2(g3), u2 = v3(r);
|
|
1679
|
+
u2.length > 0 && u2.every((m) => X3(m, i)) ? s.push(`state=${g3} (every value is "CA", which is both Canada and California)`) : T3(r) ? (s.push(`state=${g3} (every value is a country, not a state)`), o.country || (o.country = g3)) : E4(r) < 95 ? s.push(`state=${g3} (only ${E4(r)}% of values are states/provinces)`) : o.state = g3;
|
|
1680
1680
|
}
|
|
1681
|
-
let S = new Set(Object.values(
|
|
1682
|
-
if (!
|
|
1683
|
-
let
|
|
1684
|
-
for (let u2 of
|
|
1681
|
+
let S = new Set(Object.values(o).filter(Boolean)), M = n.filter((r) => !S.has(r) && !r.startsWith("__"));
|
|
1682
|
+
if (!o.state) {
|
|
1683
|
+
let r = null;
|
|
1684
|
+
for (let u2 of M) {
|
|
1685
1685
|
let m = d2(u2);
|
|
1686
1686
|
if (T3(m)) continue;
|
|
1687
1687
|
let p2 = E4(m);
|
|
1688
1688
|
if (p2 < 95) continue;
|
|
1689
|
-
let
|
|
1690
|
-
|
|
1689
|
+
let D3 = V3(m, (A2) => !!Y(A2)), se = V3(m, (A2) => !!Y(A2) && !X3(A2, i));
|
|
1690
|
+
D3 < z3 && se < 1 || (!r || p2 > r.pct) && (r = { name: u2, pct: p2 });
|
|
1691
1691
|
}
|
|
1692
|
-
|
|
1692
|
+
r && (o.state = r.name, S.add(r.name), a4.push(`state=${r.name} (${r.pct}% states/provinces)`));
|
|
1693
1693
|
}
|
|
1694
|
-
if (!
|
|
1695
|
-
if (S.has(
|
|
1696
|
-
let u2 = d2(
|
|
1697
|
-
if (!(m < 95) && Z3(u2,
|
|
1698
|
-
|
|
1694
|
+
if (!o.zip) for (let r of M) {
|
|
1695
|
+
if (S.has(r)) continue;
|
|
1696
|
+
let u2 = d2(r), m = K3(u2);
|
|
1697
|
+
if (!(m < 95) && Z3(u2, r) && !(nt2(u2, (p2) => Z(p2).length > 0) < z3)) {
|
|
1698
|
+
o.zip = r, S.add(r), a4.push(`zip=${r} (${m}% ZIP codes)`);
|
|
1699
1699
|
break;
|
|
1700
1700
|
}
|
|
1701
1701
|
}
|
|
1702
|
-
let b4 =
|
|
1702
|
+
let b4 = o.country;
|
|
1703
1703
|
if (!b4 || !T3(d2(b4))) {
|
|
1704
|
-
let
|
|
1705
|
-
for (let u2 of
|
|
1704
|
+
let r = null;
|
|
1705
|
+
for (let u2 of M) {
|
|
1706
1706
|
if (S.has(u2) || !T3(d2(u2))) continue;
|
|
1707
1707
|
let m = W2(d2(u2));
|
|
1708
|
-
(!
|
|
1708
|
+
(!r || m > r.pct) && (r = { name: u2, pct: m });
|
|
1709
1709
|
}
|
|
1710
|
-
|
|
1710
|
+
r && (b4 && (s.push(`country=${b4} (only ${W2(d2(b4))}% of values are country identifiers; using ${r.name} instead)`), C2.country = b4), o.country = r.name, S.add(r.name), a4.push(`country=${r.name}`));
|
|
1711
1711
|
}
|
|
1712
|
-
if (!
|
|
1713
|
-
let
|
|
1714
|
-
for (let u2 of
|
|
1712
|
+
if (!o.city) {
|
|
1713
|
+
let r = null;
|
|
1714
|
+
for (let u2 of M) {
|
|
1715
1715
|
if (S.has(u2)) continue;
|
|
1716
1716
|
let m = d2(u2), p2 = et2(m, i);
|
|
1717
|
-
p2 < m3 ||
|
|
1717
|
+
p2 < m3 || V3(m, (D3) => p3(D3, i)) < z3 || (!r || p2 > r.pct) && (r = { name: u2, pct: p2 });
|
|
1718
1718
|
}
|
|
1719
|
-
|
|
1719
|
+
r && (o.city = r.name, a4.push(`city=${r.name} (${r.pct}% known cities)`));
|
|
1720
1720
|
}
|
|
1721
|
-
let U3 =
|
|
1722
|
-
let u2 = +String(o
|
|
1723
|
-
return isFinite(u2) && isFinite(m) && u2 >= -90 && u2 <= 90 && m >= -180 && m <= 180 && String(o
|
|
1721
|
+
let U3 = o.country ? d2(o.country) : [], _2 = !!o.country && T3(U3), ie = _2 ? new Set(U3.map((r) => E(r == null ? null : String(r))).filter(Boolean)).size : 0, H3 = _2 && ie >= 2, F3 = !!(o.lat && o.lon) && e.some((r) => {
|
|
1722
|
+
let u2 = +String(r[o.lat] ?? "").trim(), m = +String(r[o.lon] ?? "").trim();
|
|
1723
|
+
return isFinite(u2) && isFinite(m) && u2 >= -90 && u2 <= 90 && m >= -180 && m <= 180 && String(r[o.lat] ?? "").trim() !== "" && String(r[o.lon] ?? "").trim() !== "";
|
|
1724
1724
|
});
|
|
1725
|
-
return
|
|
1725
|
+
return o.lat && o.lon && !F3 && s.push(`lat/lon=${o.lat}/${o.lon} (no row holds a usable coordinate pair)`), o.country && !H3 && !(o.city || o.state || o.zip || F3) && s.push(_2 ? `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 || H3 || F3) ? o : null, backfilled: a4, refused: s, ...Object.keys(C2).length ? { labelFallback: C2 } : {} };
|
|
1726
1726
|
}
|
|
1727
1727
|
|
|
1728
1728
|
// src/payload.ts
|
|
@@ -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;
|
|
@@ -1928,10 +1928,10 @@ function stripJsComments(code) {
|
|
|
1928
1928
|
continue;
|
|
1929
1929
|
}
|
|
1930
1930
|
if (ch === "/" && next === "/") {
|
|
1931
|
-
let
|
|
1932
|
-
while (
|
|
1931
|
+
let j3 = i + 2;
|
|
1932
|
+
while (j3 < n && src[j3] !== "\n" && src[j3] !== "\r") j3++;
|
|
1933
1933
|
out += " ";
|
|
1934
|
-
i =
|
|
1934
|
+
i = j3;
|
|
1935
1935
|
wordOpen = false;
|
|
1936
1936
|
continue;
|
|
1937
1937
|
}
|
|
@@ -1945,10 +1945,10 @@ function stripJsComments(code) {
|
|
|
1945
1945
|
continue;
|
|
1946
1946
|
}
|
|
1947
1947
|
if (ch === "'" || ch === '"') {
|
|
1948
|
-
let
|
|
1949
|
-
while (
|
|
1950
|
-
out += src.slice(i, Math.min(
|
|
1951
|
-
i =
|
|
1948
|
+
let j3 = i + 1;
|
|
1949
|
+
while (j3 < n && src[j3] !== ch && src[j3] !== "\n") j3 += src[j3] === "\\" ? 2 : 1;
|
|
1950
|
+
out += src.slice(i, Math.min(j3 + 1, n));
|
|
1951
|
+
i = j3 + 1;
|
|
1952
1952
|
prevSig = ch;
|
|
1953
1953
|
prevWord = "";
|
|
1954
1954
|
wordOpen = false;
|
|
@@ -1962,23 +1962,23 @@ function stripJsComments(code) {
|
|
|
1962
1962
|
continue;
|
|
1963
1963
|
}
|
|
1964
1964
|
if (ch === "/" && regexMayFollow()) {
|
|
1965
|
-
let
|
|
1966
|
-
while (
|
|
1967
|
-
const c2 = src[
|
|
1965
|
+
let j3 = i + 1, inClass = false;
|
|
1966
|
+
while (j3 < n && src[j3] !== "\n") {
|
|
1967
|
+
const c2 = src[j3];
|
|
1968
1968
|
if (c2 === "\\") {
|
|
1969
|
-
|
|
1969
|
+
j3 += 2;
|
|
1970
1970
|
continue;
|
|
1971
1971
|
}
|
|
1972
1972
|
if (c2 === "[") inClass = true;
|
|
1973
1973
|
else if (c2 === "]") inClass = false;
|
|
1974
1974
|
else if (c2 === "/" && !inClass) break;
|
|
1975
|
-
|
|
1975
|
+
j3++;
|
|
1976
1976
|
}
|
|
1977
|
-
if (
|
|
1978
|
-
|
|
1979
|
-
while (
|
|
1980
|
-
out += src.slice(i,
|
|
1981
|
-
i =
|
|
1977
|
+
if (j3 < n && src[j3] === "/") {
|
|
1978
|
+
j3++;
|
|
1979
|
+
while (j3 < n && /[A-Za-z]/.test(src[j3])) j3++;
|
|
1980
|
+
out += src.slice(i, j3);
|
|
1981
|
+
i = j3;
|
|
1982
1982
|
prevSig = "/";
|
|
1983
1983
|
prevWord = "";
|
|
1984
1984
|
wordOpen = false;
|
|
@@ -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,23 +2387,23 @@ 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
|
-
for (let
|
|
2398
|
-
const dv =
|
|
2397
|
+
for (let q3 = p2 + 1; q3 < idx.length; q3++) {
|
|
2398
|
+
const dv = v4[idx[q3]] - v4[idx[p2]];
|
|
2399
2399
|
if (Math.abs(dv) < 1e-12) continue;
|
|
2400
|
-
slopes.push((pos[idx[
|
|
2400
|
+
slopes.push((pos[idx[q3]] - pos[idx[p2]]) / dv);
|
|
2401
2401
|
}
|
|
2402
2402
|
}
|
|
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;
|
|
@@ -2463,8 +2463,8 @@ function censusValuePlacement(container, data) {
|
|
|
2463
2463
|
const fit = 1 - ssRes / ssTot;
|
|
2464
2464
|
if (fit >= VALUE_AXIS_MIN_FIT && (!best || fit > best.fit)) {
|
|
2465
2465
|
const full = new Array(dots.length).fill(NaN);
|
|
2466
|
-
keep.forEach((k3,
|
|
2467
|
-
full[k3] = res[
|
|
2466
|
+
keep.forEach((k3, j3) => {
|
|
2467
|
+
full[k3] = res[j3];
|
|
2468
2468
|
});
|
|
2469
2469
|
best = { col: c2, axis, fit, res: full, log };
|
|
2470
2470
|
}
|
|
@@ -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];
|
|
@@ -3103,18 +3103,18 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
|
3103
3103
|
if (!box || !(box.width > 0) || !(box.height > 0) || !(n >= 1)) return out;
|
|
3104
3104
|
const k3 = Math.floor(n);
|
|
3105
3105
|
for (let i = 0; i < k3; i++) {
|
|
3106
|
-
for (let
|
|
3106
|
+
for (let j3 = 0; j3 < k3; j3++) {
|
|
3107
3107
|
out.push({
|
|
3108
3108
|
x: box.left + box.width * (i + 0.5) / k3,
|
|
3109
|
-
y: box.top + box.height * (
|
|
3109
|
+
y: box.top + box.height * (j3 + 0.5) / k3
|
|
3110
3110
|
});
|
|
3111
3111
|
}
|
|
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(
|
|
@@ -3857,8 +3857,8 @@ function toPayloadRows(rowMap, sourceRowIdxs) {
|
|
|
3857
3857
|
}
|
|
3858
3858
|
var sameRows = (a4, b4) => {
|
|
3859
3859
|
if (a4.length !== b4.length) return false;
|
|
3860
|
-
const x2 = a4.slice().sort((p2,
|
|
3861
|
-
return x2.every((
|
|
3860
|
+
const x2 = a4.slice().sort((p2, q3) => p2 - q3), y5 = b4.slice().sort((p2, q3) => p2 - q3);
|
|
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.14",
|
|
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",
|