@bicharts/chart-host 0.5.83 → 0.5.85
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-5EX2EOOE.mjs → chunk-RD3DRWLL.mjs} +198 -198
- package/dist/index.mjs +8 -8
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -22,8 +22,8 @@ var require_papaparse_min = __commonJS({
|
|
|
22
22
|
"function" == typeof define && define.amd ? define([], t) : "object" == typeof module && "undefined" != typeof exports ? module.exports = t() : e.Papa = t();
|
|
23
23
|
})(exports, function r() {
|
|
24
24
|
var n = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : {};
|
|
25
|
-
var d, s = !n.document && !!n.postMessage, a2 = n.IS_PAPA_WORKER || false, o2 = {}, h2 = 0,
|
|
26
|
-
function
|
|
25
|
+
var d, s = !n.document && !!n.postMessage, a2 = n.IS_PAPA_WORKER || false, o2 = {}, h2 = 0, v3 = {};
|
|
26
|
+
function P4(e) {
|
|
27
27
|
return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
|
|
28
28
|
}
|
|
29
29
|
function u4(e) {
|
|
@@ -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(i4)].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 i4 = this._partialLine + t, r2 = (this._partialLine = "", this._handle.parse(i4, this._baseIndex, !this._finished));
|
|
42
42
|
if (!this._handle.paused() && !this._handle.aborted()) {
|
|
43
43
|
t = r2.meta.cursor, i4 = (this._finished || (this._partialLine = i4.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 (a2) n.postMessage({ results: r2, workerId:
|
|
45
|
-
else if (
|
|
44
|
+
if (a2) n.postMessage({ results: r2, workerId: v3.WORKER_ID, finished: i4 });
|
|
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 || !i4 || !
|
|
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 || !i4 || !q3(this._config.complete) || r2 && r2.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), i4 || 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) : a2 && this._config.error && n.postMessage({ workerId: v3.WORKER_ID, error: e2, finished: false });
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
function f(e) {
|
|
57
57
|
var r2;
|
|
58
|
-
(e = e || {}).chunkSize || (e.chunkSize =
|
|
58
|
+
(e = e || {}).chunkSize || (e.chunkSize = v3.RemoteChunkSize), u4.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 l2(e) {
|
|
88
|
-
(e = e || {}).chunkSize || (e.chunkSize =
|
|
88
|
+
(e = e || {}).chunkSize || (e.chunkSize = v3.LocalChunkSize), u4.call(this, e);
|
|
89
89
|
var i4, r2, n2 = "undefined" != typeof FileReader;
|
|
90
90
|
this.stream = function(e2) {
|
|
91
91
|
this._input = e2, r2 = e2.slice || e2.webkitSlice || e2.mozSlice, n2 ? ((i4 = new FileReader()).onload = y4(this._chunkLoaded, this), i4.onerror = y4(this._chunkError, this)) : i4 = 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 g3() {
|
|
145
|
-
if (p2 && a4 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" +
|
|
145
|
+
if (p2 && a4 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v3.DefaultDelimiter + "'"), a4 = false), m2.skipEmptyLines && (p2.data = p2.data.filter(function(e4) {
|
|
146
146
|
return !y5(e4);
|
|
147
147
|
})), _3()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
149
|
-
e4 =
|
|
149
|
+
e4 = P4(e4), q3(m2.transformHeader) && (e4 = m2.transformHeader(e4, t5)), c2.push(e4);
|
|
150
150
|
};
|
|
151
151
|
var t2 = t4;
|
|
152
152
|
if (p2) if (Array.isArray(p2.data[0])) {
|
|
@@ -176,29 +176,29 @@ var require_papaparse_min = __commonJS({
|
|
|
176
176
|
e2 = { type: e2, code: t2, message: i5 };
|
|
177
177
|
void 0 !== r4 && (e2.row = r4), p2.errors.push(e2);
|
|
178
178
|
}
|
|
179
|
-
|
|
179
|
+
q3(m2.step) && (t = m2.step, m2.step = function(e2) {
|
|
180
180
|
p2 = e2, _3() ? g3() : (g3(), 0 !== p2.data.length && (r2 += e2.data.length, m2.preview && r2 > m2.preview ? s2.abort() : (p2.data = p2.data[0], t(p2, i4))));
|
|
181
181
|
}), this.parse = function(e2, t2, i5) {
|
|
182
|
-
var r4 = m2.quoteChar || '"', r4 = (m2.newline || (m2.newline = this.guessLineEndings(e2, r4)), a4 = false, m2.delimiter ?
|
|
182
|
+
var r4 = m2.quoteChar || '"', r4 = (m2.newline || (m2.newline = this.guessLineEndings(e2, r4)), a4 = false, m2.delimiter ? q3(m2.delimiter) && (m2.delimiter = m2.delimiter(e2), p2.meta.delimiter = m2.delimiter) : ((r4 = ((e4, t4, i6, r5, n4) => {
|
|
183
183
|
var s4, a5, o5, h4;
|
|
184
|
-
n4 = n4 || [",", " ", "|", ";",
|
|
184
|
+
n4 = n4 || [",", " ", "|", ";", v3.RECORD_SEP, v3.UNIT_SEP];
|
|
185
185
|
for (var u6 = 0; u6 < n4.length; u6++) {
|
|
186
186
|
for (var d3, f4 = n4[u6], l4 = 0, c4 = 0, p4 = 0, g4 = (o5 = void 0, new E4({ comments: r5, delimiter: f4, newline: t4, preview: 10 }).parse(e4)), _4 = 0; _4 < g4.data.length; _4++) i6 && y5(g4.data[_4]) ? p4++ : (d3 = g4.data[_4].length, c4 += d3, void 0 === o5 ? o5 = d3 : 0 < d3 && (l4 += Math.abs(d3 - o5), o5 = d3));
|
|
187
187
|
0 < g4.data.length && (c4 /= g4.data.length - p4), (void 0 === a5 || l4 <= a5) && (void 0 === h4 || h4 < c4) && 1.99 < c4 && (a5 = l4, s4 = f4, h4 = c4);
|
|
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 : (a4 = true, m2.delimiter =
|
|
190
|
+
})(e2, m2.newline, m2.skipEmptyLines, m2.comments, m2.delimitersToGuess)).successful ? m2.delimiter = r4.bestDelimiter : (a4 = true, m2.delimiter = v3.DefaultDelimiter), p2.meta.delimiter = m2.delimiter), b2(m2));
|
|
191
191
|
return m2.preview && m2.header && r4.preview++, n2 = e2, s2 = new E4(r4), p2 = s2.parse(n2, t2, i5), g3(), l3 ? { meta: { paused: true } } : p2 || { meta: { paused: false } };
|
|
192
192
|
}, this.paused = function() {
|
|
193
193
|
return l3;
|
|
194
194
|
}, this.pause = function() {
|
|
195
|
-
l3 = true, s2.abort(), n2 =
|
|
195
|
+
l3 = true, s2.abort(), n2 = q3(m2.chunk) ? "" : n2.substring(s2.getCharIndex());
|
|
196
196
|
}, this.resume = function() {
|
|
197
197
|
i4.streamer._halted ? (l3 = false, i4.streamer.parseChunk(n2, true)) : setTimeout(i4.resume, 3);
|
|
198
198
|
}, this.aborted = function() {
|
|
199
199
|
return e;
|
|
200
200
|
}, this.abort = function() {
|
|
201
|
-
e = true, s2.abort(), p2.meta.aborted = true,
|
|
201
|
+
e = true, s2.abort(), p2.meta.aborted = true, q3(m2.complete) && m2.complete(p2), 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"), i5 = (e2 = e2.replace(t2, "")).split("\r"), t2 = e2.split("\n"), e2 = 1 < t2.length && t2[0].length < i5[0].length;
|
|
@@ -211,13 +211,13 @@ var require_papaparse_min = __commonJS({
|
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
213
|
function E4(C2) {
|
|
214
|
-
var S = (C2 = C2 || {}).delimiter, O2 = C2.newline, x2 = C2.comments, I2 = C2.step,
|
|
215
|
-
if (void 0 !== C2.escapeChar && (
|
|
216
|
-
true === x2 ? x2 = "#" : ("string" != typeof x2 || -1 <
|
|
217
|
-
var z3 = 0,
|
|
214
|
+
var S = (C2 = C2 || {}).delimiter, O2 = C2.newline, x2 = C2.comments, I2 = C2.step, A = C2.preview, T2 = 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 < v3.BAD_DELIMITERS.indexOf(S)) && (S = ","), x2 === S) throw new Error("Comment character same as delimiter");
|
|
216
|
+
true === x2 ? x2 = "#" : ("string" != typeof x2 || -1 < v3.BAD_DELIMITERS.indexOf(x2)) && (x2 = false), "\n" !== O2 && "\r" !== O2 && "\r\n" !== O2 && (O2 = "\n");
|
|
217
|
+
var z3 = 0, M = false;
|
|
218
218
|
this.parse = function(i4, t, r2) {
|
|
219
219
|
if ("string" != typeof i4) throw new Error("Input must be a string");
|
|
220
|
-
var n2 = i4.length, e = S.length, s2 = O2.length, a4 = x2.length, o4 =
|
|
220
|
+
var n2 = i4.length, e = S.length, s2 = O2.length, a4 = x2.length, o4 = q3(I2), h3 = [], u5 = [], d2 = [], f2 = z3 = 0;
|
|
221
221
|
if (!i4) return w2();
|
|
222
222
|
if (T2 || false !== T2 && -1 === i4.indexOf(F3)) {
|
|
223
223
|
for (var l3 = i4.split(O2), c2 = 0; c2 < l3.length; c2++) {
|
|
@@ -225,28 +225,28 @@ var require_papaparse_min = __commonJS({
|
|
|
225
225
|
else if (r2) return w2();
|
|
226
226
|
if (!x2 || d2.substring(0, a4) !== x2) {
|
|
227
227
|
if (o4) {
|
|
228
|
-
if (h3 = [], k2(d2.split(S)), R(),
|
|
228
|
+
if (h3 = [], k2(d2.split(S)), R(), M) return w2();
|
|
229
229
|
} else k2(d2.split(S));
|
|
230
|
-
if (
|
|
230
|
+
if (A && A <= c2) return h3 = h3.slice(0, A), w2(true);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
return w2();
|
|
234
234
|
}
|
|
235
|
-
for (var p2 = i4.indexOf(S, z3), g3 = i4.indexOf(O2, z3), _3 = new RegExp(U3(
|
|
235
|
+
for (var p2 = i4.indexOf(S, z3), g3 = i4.indexOf(O2, z3), _3 = new RegExp(U3(j3) + U3(F3), "g"), m2 = i4.indexOf(F3, z3); ; ) if (i4[z3] === F3) for (m2 = z3, z3++; ; ) {
|
|
236
236
|
if (-1 === (m2 = i4.indexOf(F3, m2 + 1))) return r2 || u5.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h3.length, index: z3 }), E5();
|
|
237
237
|
if (m2 === n2 - 1) return E5(i4.substring(z3, m2).replace(_3, F3));
|
|
238
|
-
if (F3 ===
|
|
239
|
-
else if (F3 ===
|
|
238
|
+
if (F3 === j3 && i4[m2 + 1] === j3) m2++;
|
|
239
|
+
else if (F3 === j3 || 0 === m2 || i4[m2 - 1] !== j3) {
|
|
240
240
|
-1 !== p2 && p2 < m2 + 1 && (p2 = i4.indexOf(S, m2 + 1));
|
|
241
|
-
var y5 =
|
|
241
|
+
var y5 = v4(-1 === (g3 = -1 !== g3 && g3 < m2 + 1 ? i4.indexOf(O2, m2 + 1) : g3) ? p2 : Math.min(p2, g3));
|
|
242
242
|
if (i4.substr(m2 + 1 + y5, e) === S) {
|
|
243
243
|
d2.push(i4.substring(z3, m2).replace(_3, F3)), i4[z3 = m2 + 1 + y5 + e] !== F3 && (m2 = i4.indexOf(F3, z3)), p2 = i4.indexOf(S, z3), g3 = i4.indexOf(O2, z3);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
|
-
y5 =
|
|
246
|
+
y5 = v4(g3);
|
|
247
247
|
if (i4.substring(m2 + 1 + y5, m2 + 1 + y5 + s2) === O2) {
|
|
248
|
-
if (d2.push(i4.substring(z3, m2).replace(_3, F3)), b4(m2 + 1 + y5 + s2), p2 = i4.indexOf(S, z3), m2 = i4.indexOf(F3, z3), o4 && (R(),
|
|
249
|
-
if (
|
|
248
|
+
if (d2.push(i4.substring(z3, m2).replace(_3, F3)), b4(m2 + 1 + y5 + s2), p2 = i4.indexOf(S, z3), m2 = i4.indexOf(F3, z3), o4 && (R(), M)) return w2();
|
|
249
|
+
if (A && h3.length >= A) return w2(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
252
252
|
u5.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h3.length, index: z3 }), m2++;
|
|
@@ -258,14 +258,14 @@ var require_papaparse_min = __commonJS({
|
|
|
258
258
|
} else if (-1 !== p2 && (p2 < g3 || -1 === g3)) d2.push(i4.substring(z3, p2)), z3 = p2 + e, p2 = i4.indexOf(S, z3);
|
|
259
259
|
else {
|
|
260
260
|
if (-1 === g3) break;
|
|
261
|
-
if (d2.push(i4.substring(z3, g3)), b4(g3 + s2), o4 && (R(),
|
|
262
|
-
if (
|
|
261
|
+
if (d2.push(i4.substring(z3, g3)), b4(g3 + s2), o4 && (R(), M)) return w2();
|
|
262
|
+
if (A && h3.length >= A) return w2(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
265
265
|
function k2(e2) {
|
|
266
266
|
h3.push(e2), f2 = z3;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function v4(e2) {
|
|
269
269
|
var t2 = 0;
|
|
270
270
|
return t2 = -1 !== e2 && (e2 = i4.substring(m2 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
@@ -280,8 +280,8 @@ var require_papaparse_min = __commonJS({
|
|
|
280
280
|
var s4 = h3[0], a5 = /* @__PURE__ */ Object.create(null), o5 = new Set(s4);
|
|
281
281
|
let n4 = false;
|
|
282
282
|
for (let r4 = 0; r4 < s4.length; r4++) {
|
|
283
|
-
let i5 =
|
|
284
|
-
if (a5[i5 =
|
|
283
|
+
let i5 = P4(s4[r4]);
|
|
284
|
+
if (a5[i5 = q3(C2.transformHeader) ? C2.transformHeader(i5, r4) : i5]) {
|
|
285
285
|
let e4, t2 = a5[i5];
|
|
286
286
|
for (; e4 = i5 + "_" + t2, t2++, o5.has(e4); ) ;
|
|
287
287
|
o5.add(e4), s4[r4] = e4, a5[i5]++, n4 = true, (D3 = null === D3 ? {} : D3)[e4] = i5;
|
|
@@ -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: h3, errors: u5, meta: { delimiter: S, linebreak: O2, aborted:
|
|
293
|
+
return { data: h3, errors: u5, meta: { delimiter: S, linebreak: O2, aborted: M, truncated: !!e2, cursor: f2 + (t || 0), renamedHeaders: D3 } };
|
|
294
294
|
}
|
|
295
295
|
function R() {
|
|
296
296
|
I2(w2()), h3 = [], u5 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
|
-
|
|
299
|
+
M = true;
|
|
300
300
|
}, this.getCharIndex = function() {
|
|
301
301
|
return z3;
|
|
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(i4.userStep)) {
|
|
312
312
|
for (var s2 = 0; s2 < t.results.data.length && (i4.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(i4.userChunk) && (i4.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 i4 = o2[e];
|
|
320
|
-
|
|
320
|
+
q3(i4.userComplete) && i4.userComplete(t), i4.terminate(), delete o2[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 v3.parse = function(e, t) {
|
|
340
340
|
var i4 = (t = t || {}).dynamicTyping || false;
|
|
341
|
-
|
|
342
|
-
if (t.dynamicTyping = i4, t.transform = !!
|
|
341
|
+
q3(i4) && (t.dynamicTypingFunction = i4, i4 = {});
|
|
342
|
+
if (t.dynamicTyping = i4, t.transform = !!q3(t.transform) && t.transform, !t.worker || !v3.WORKERS_SUPPORTED) return i4 = null, v3.NODE_STREAM_INPUT, "string" == typeof e ? (e = P4(e), i4 = new (t.download ? f : c)(t)) : true === e.readable && q3(e.read) && q3(e.on) ? i4 = new p(t) : (n.File && e instanceof File || e instanceof Object) && (i4 = new l2(t)), i4.stream(e);
|
|
343
343
|
(i4 = (() => {
|
|
344
344
|
var e2;
|
|
345
|
-
return !!
|
|
345
|
+
return !!v3.WORKERS_SUPPORTED && (e2 = (() => {
|
|
346
346
|
var e4 = n.URL || n.webkitURL || null, t2 = r.toString();
|
|
347
|
-
return
|
|
347
|
+
return v3.BLOB_URL || (v3.BLOB_URL = e4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", t2, ")();"], { type: "text/javascript" })));
|
|
348
348
|
})(), (e2 = new n.Worker(e2)).onmessage = g2, e2.id = h2++, o2[e2.id] = e2);
|
|
349
|
-
})()).userStep = t.step, i4.userChunk = t.chunk, i4.userComplete = t.complete, i4.userError = t.error, t.step =
|
|
350
|
-
},
|
|
349
|
+
})()).userStep = t.step, i4.userChunk = t.chunk, i4.userComplete = t.complete, i4.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, i4.postMessage({ input: e, config: t, workerId: i4.id });
|
|
350
|
+
}, v3.unparse = function(e, t) {
|
|
351
351
|
var s2 = false, _3 = true, m2 = ",", y5 = "\r\n", a4 = '"', o4 = a4 + a4, i4 = false, r2 = null, h3 = false, u5 = ((() => {
|
|
352
352
|
if ("object" == typeof t) {
|
|
353
|
-
if ("string" != typeof t.delimiter ||
|
|
353
|
+
if ("string" != typeof t.delimiter || v3.BAD_DELIMITERS.filter(function(e2) {
|
|
354
354
|
return -1 !== t.delimiter.indexOf(e2);
|
|
355
355
|
}).length || (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 || (i4 = t.skipEmptyLines), "string" == typeof t.newline && (y5 = t.newline), "string" == typeof t.quoteChar && (a4 = t.quoteChar, o4 = a4 + a4), "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, h3 && "string" == typeof e2 && h3.test(e2) && (e2 = "'" + e2, n4 = true), r4 = (i5 = e2.toString()).replace(u5, o4), (n4 = n4 || true === s2 || "function" == typeof s2 && s2(e2, t2) || Array.isArray(s2) && s2[t2] || ((e4, t4) => {
|
|
397
397
|
for (var i6 = 0; i6 < t4.length; i6++) if (-1 < e4.indexOf(t4[i6])) return true;
|
|
398
398
|
return false;
|
|
399
|
-
})(r4,
|
|
399
|
+
})(r4, v3.BAD_DELIMITERS) || -1 < r4.indexOf(m2) || -1 < i5.indexOf(a4) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a4 + r4 + a4 : r4);
|
|
400
400
|
}
|
|
401
|
-
},
|
|
401
|
+
}, v3.RECORD_SEP = String.fromCharCode(30), v3.UNIT_SEP = String.fromCharCode(31), v3.BYTE_ORDER_MARK = "\uFEFF", v3.BAD_DELIMITERS = ["\r", "\n", '"', v3.BYTE_ORDER_MARK], v3.WORKERS_SUPPORTED = !s && !!n.Worker, v3.NODE_STREAM_INPUT = 1, v3.LocalChunkSize = 10485760, v3.RemoteChunkSize = 5242880, v3.DefaultDelimiter = ",", v3.Parser = E4, v3.ParserHandle = i2, v3.NetworkStreamer = f, v3.FileStreamer = l2, v3.StringStreamer = c, v3.ReadableStreamStreamer = p, n.jQuery && ((d = n.jQuery).fn.parse = function(o4) {
|
|
402
402
|
var i4 = o4.config || {}, h3 = [];
|
|
403
403
|
return this.each(function(e2) {
|
|
404
404
|
if (!("INPUT" === d(this).prop("tagName").toUpperCase() && "file" === d(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++) h3.push({ file: this.files[t], inputElem: this, instanceConfig: d.extend({}, i4) });
|
|
406
406
|
}), e(), this;
|
|
407
407
|
function e() {
|
|
408
|
-
if (0 === h3.length)
|
|
408
|
+
if (0 === h3.length) q3(o4.complete) && o4.complete();
|
|
409
409
|
else {
|
|
410
410
|
var e2, t, i5, r2, n2 = h3[0];
|
|
411
|
-
if (
|
|
411
|
+
if (q3(o4.before)) {
|
|
412
412
|
var s2 = o4.before(n2.file, n2.inputElem);
|
|
413
413
|
if ("object" == typeof s2) {
|
|
414
|
-
if ("abort" === s2.action) return e2 = "AbortError", t = n2.file, i5 = n2.inputElem, r2 = s2.reason, void (
|
|
414
|
+
if ("abort" === s2.action) return e2 = "AbortError", t = n2.file, i5 = n2.inputElem, r2 = s2.reason, void (q3(o4.error) && o4.error({ name: e2 }, t, i5, r2));
|
|
415
415
|
if ("skip" === s2.action) return void u5();
|
|
416
416
|
"object" == typeof s2.config && (n2.instanceConfig = d.extend(n2.instanceConfig, s2.config));
|
|
417
417
|
} else if ("skip" === s2) return void u5();
|
|
418
418
|
}
|
|
419
419
|
var a4 = n2.instanceConfig.complete;
|
|
420
420
|
n2.instanceConfig.complete = function(e4) {
|
|
421
|
-
|
|
422
|
-
},
|
|
421
|
+
q3(a4) && a4(e4, n2.file, n2.inputElem), u5();
|
|
422
|
+
}, v3.parse(n2.file, n2.instanceConfig);
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
function u5() {
|
|
@@ -427,9 +427,9 @@ var require_papaparse_min = __commonJS({
|
|
|
427
427
|
}
|
|
428
428
|
}), a2 && (n.onmessage = function(e) {
|
|
429
429
|
e = e.data;
|
|
430
|
-
void 0 ===
|
|
431
|
-
"string" == typeof e.input ? n.postMessage({ workerId:
|
|
432
|
-
}), (f.prototype = Object.create(u4.prototype)).constructor = f, (l2.prototype = Object.create(u4.prototype)).constructor = l2, (c.prototype = Object.create(c.prototype)).constructor = c, (p.prototype = Object.create(u4.prototype)).constructor = p,
|
|
430
|
+
void 0 === v3.WORKER_ID && e && (v3.WORKER_ID = e.workerId);
|
|
431
|
+
"string" == typeof e.input ? n.postMessage({ workerId: v3.WORKER_ID, results: v3.parse(e.input, e.config), finished: true }) : (n.File && e.input instanceof File || e.input instanceof Object) && (e = v3.parse(e.input, e.config)) && n.postMessage({ workerId: v3.WORKER_ID, results: e, finished: true });
|
|
432
|
+
}), (f.prototype = Object.create(u4.prototype)).constructor = f, (l2.prototype = Object.create(u4.prototype)).constructor = l2, (c.prototype = Object.create(c.prototype)).constructor = c, (p.prototype = Object.create(u4.prototype)).constructor = p, v3;
|
|
433
433
|
});
|
|
434
434
|
}
|
|
435
435
|
});
|
|
@@ -536,20 +536,20 @@ function resolveOptions(p) {
|
|
|
536
536
|
// never reach a chart as a live mode. Both of these are read on EVERY render, so a
|
|
537
537
|
// reader can change their mind about a cached chart without regenerating it.
|
|
538
538
|
approximatePositions: (() => {
|
|
539
|
-
const
|
|
540
|
-
return
|
|
539
|
+
const v3 = (p.approximatePositions == null ? "" : String(p.approximatePositions)).toLowerCase();
|
|
540
|
+
return v3 === "mark" || v3 === "aggregate" || v3 === "skip" ? v3 : APPROXIMATE_POSITIONS_DEFAULT;
|
|
541
541
|
})(),
|
|
542
542
|
valueAxisBaseline: (() => {
|
|
543
|
-
const
|
|
544
|
-
return
|
|
543
|
+
const v3 = (p.valueAxisBaseline == null ? "" : String(p.valueAxisBaseline)).toLowerCase();
|
|
544
|
+
return v3 === "zero" || v3 === "fit" || v3 === "auto" ? v3 : VALUE_AXIS_BASELINE_DEFAULT;
|
|
545
545
|
})(),
|
|
546
546
|
// Same shape, and the same reason for it: an unrecognised string must never reach a chart
|
|
547
547
|
// as a live mode. Failing open to "auto" is the conservative direction here — "auto" is
|
|
548
548
|
// the setting that makes the chart PROVE the grid before it names a period, so a garbled
|
|
549
549
|
// value withdraws the claim rather than asserting one.
|
|
550
550
|
seasonalMarkers: (() => {
|
|
551
|
-
const
|
|
552
|
-
return
|
|
551
|
+
const v3 = (p.seasonalMarkers == null ? "" : String(p.seasonalMarkers)).toLowerCase();
|
|
552
|
+
return v3 === "auto" || v3 === "always" || v3 === "never" ? v3 : SEASONAL_MARKERS_DEFAULT;
|
|
553
553
|
})(),
|
|
554
554
|
// ---- animation: booleans, default+clamp numerics, "" default enum ----
|
|
555
555
|
animAutoPlay: !!p.animAutoPlay,
|
|
@@ -904,12 +904,12 @@ function A3(n) {
|
|
|
904
904
|
if (f && f.length) {
|
|
905
905
|
let d = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R = d ? u(d) : "", g2 = d ? Y(d) : null, S = [], m = -1;
|
|
906
906
|
for (let c of f) {
|
|
907
|
-
let l2 = c.row,
|
|
908
|
-
if (d && l2.a1 !== "") if (g2 && l2.a1 === g2 || u(l2.a1) === R)
|
|
907
|
+
let l2 = c.row, A = 0;
|
|
908
|
+
if (d && l2.a1 !== "") if (g2 && l2.a1 === g2 || u(l2.a1) === R) A++;
|
|
909
909
|
else continue;
|
|
910
|
-
if (i2) if (T(l2.cc) === i2)
|
|
910
|
+
if (i2) if (T(l2.cc) === i2) A++;
|
|
911
911
|
else continue;
|
|
912
|
-
|
|
912
|
+
A > m ? (m = A, S = [c]) : A === m && S.push(c);
|
|
913
913
|
}
|
|
914
914
|
S.some((c) => c.primary) && (S = S.filter((c) => c.primary));
|
|
915
915
|
let p = /* @__PURE__ */ new Map();
|
|
@@ -940,20 +940,20 @@ var x = 8;
|
|
|
940
940
|
function y3(n, e) {
|
|
941
941
|
let t = new Array(n.length), o2 = new Array(n.length), i2 = new Array(n.length), r = /* @__PURE__ */ new Set(), a2 = [], s = /* @__PURE__ */ new Set(), f = [], d = /* @__PURE__ */ new Set(), R = [], g2 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 }, S = 0, m = 0, p = null;
|
|
942
942
|
for (let l2 = 0; l2 < n.length; ++l2) {
|
|
943
|
-
let
|
|
943
|
+
let A = n[l2], C2 = A3({ ...A, mapKind: e });
|
|
944
944
|
if (S3(C2)) {
|
|
945
945
|
t[l2] = null, o2[l2] = null, i2[l2] = null, m++;
|
|
946
|
-
let
|
|
947
|
-
|
|
946
|
+
let M = K(A);
|
|
947
|
+
M && !d.has(M.toLowerCase()) && (d.add(M.toLowerCase()), R.length < x && R.push(M));
|
|
948
948
|
} else if (C2) {
|
|
949
949
|
if (t[l2] = C2.lat, o2[l2] = C2.lon, i2[l2] = C2.precision, S++, g2[C2.precision]++, (p === null || G[C2.precision] > G[p]) && (p = C2.precision), G[C2.precision] > G.city) {
|
|
950
|
-
let
|
|
951
|
-
|
|
950
|
+
let M = K(A);
|
|
951
|
+
M && !s.has(M.toLowerCase()) && (s.add(M.toLowerCase()), f.length < x && f.push(M));
|
|
952
952
|
}
|
|
953
953
|
} else {
|
|
954
954
|
t[l2] = null, o2[l2] = null, i2[l2] = null;
|
|
955
|
-
let
|
|
956
|
-
|
|
955
|
+
let M = K(A);
|
|
956
|
+
M && !r.has(M.toLowerCase()) && (r.add(M.toLowerCase()), a2.push(M));
|
|
957
957
|
}
|
|
958
958
|
}
|
|
959
959
|
let c = !n3() && n.some((l2) => l2.city !== null && l2.city !== void 0 && String(l2.city).trim() !== "");
|
|
@@ -1045,7 +1045,7 @@ function It(n, s) {
|
|
|
1045
1045
|
return s === "us-zip5" ? w.has(n.slice(0, 3)) : true;
|
|
1046
1046
|
}
|
|
1047
1047
|
function Wt(n, s) {
|
|
1048
|
-
let i2 = new Array(n.length), r = /* @__PURE__ */ new Set(),
|
|
1048
|
+
let i2 = new Array(n.length), r = /* @__PURE__ */ new Set(), M = [], h2 = 0;
|
|
1049
1049
|
for (let N2 = 0; N2 < n.length; ++N2) {
|
|
1050
1050
|
let I2 = Mt(n[N2], s), O2 = I2 !== null && It(I2, s) ? I2 : null;
|
|
1051
1051
|
if (i2[N2] = O2, O2 !== null) h2++;
|
|
@@ -1055,85 +1055,85 @@ function Wt(n, s) {
|
|
|
1055
1055
|
let p = String(d).trim();
|
|
1056
1056
|
if (p.length > 0) {
|
|
1057
1057
|
let m = p.toLowerCase();
|
|
1058
|
-
r.has(m) || (r.add(m),
|
|
1058
|
+
r.has(m) || (r.add(m), M.push(p));
|
|
1059
1059
|
}
|
|
1060
1060
|
}
|
|
1061
1061
|
}
|
|
1062
1062
|
}
|
|
1063
|
-
return { iso: i2, unmatched:
|
|
1063
|
+
return { iso: i2, unmatched: M, matchedRows: h2, totalRows: n.length };
|
|
1064
1064
|
}
|
|
1065
1065
|
|
|
1066
|
-
// ../shape-core/dist/chunk-
|
|
1066
|
+
// ../shape-core/dist/chunk-VLKG6RD7.mjs
|
|
1067
1067
|
var import_papaparse = __toESM(require_papaparse_min(), 1);
|
|
1068
1068
|
/*! @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. */
|
|
1069
1069
|
var pt = { "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" };
|
|
1070
|
-
var
|
|
1070
|
+
var j2 = (() => {
|
|
1071
1071
|
let n = /* @__PURE__ */ new Map();
|
|
1072
1072
|
for (let t of Object.keys(pt)) for (let e of pt[t].split(/\s+/)) e && n.set(e, t);
|
|
1073
1073
|
return n;
|
|
1074
1074
|
})();
|
|
1075
|
-
function
|
|
1075
|
+
function Ot(n) {
|
|
1076
1076
|
for (let [t, e] of n) {
|
|
1077
|
-
let
|
|
1078
|
-
|
|
1077
|
+
let r = j2.get(t);
|
|
1078
|
+
r && !j2.has(e) && j2.set(e, r);
|
|
1079
1079
|
}
|
|
1080
1080
|
}
|
|
1081
|
-
|
|
1082
|
-
var
|
|
1083
|
-
var
|
|
1084
|
-
var Pt = ["latitude", "longitude"];
|
|
1081
|
+
Ot(N);
|
|
1082
|
+
var Lt = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "z[_-]?score", "average", "avg", "mean", "median", "stddev", "variance", "gpa", "percentile", "quantile", "efficiency", "accuracy", "probability", "multiplier", "coefficient", "correlation", "occupancy", "age", "bmi", "temperature", "density", "pressure", "humidity", "ph", "velocity", "speed", "elevation", "altitude", "latency", "throughput", "bandwidth", "iops"];
|
|
1083
|
+
var Pt = ["pct", "percent", "percentage", "rate", "ratio", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "gpa", "percentile", "quantile", "bmi", "density", "pressure", "humidity", "velocity", "efficiency", "occupancy", "latency", "throughput", "bandwidth", "iops"];
|
|
1085
1084
|
var Gt2 = ["latitude", "longitude"];
|
|
1086
|
-
var
|
|
1087
|
-
var
|
|
1088
|
-
var Ft =
|
|
1089
|
-
var Vt = new RegExp("\\b(" +
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
var
|
|
1085
|
+
var Wt2 = ["latitude", "longitude"];
|
|
1086
|
+
var _t = /^\s*(sum|count|count\s+distinct|distinct\s+count)\s+of\s+/i;
|
|
1087
|
+
var Ft = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])/g;
|
|
1088
|
+
var Vt = new RegExp("\\b(" + Lt.join("|") + ")\\b|(" + Pt.join("|") + ")$", "i");
|
|
1089
|
+
var kt = new RegExp("\\b(" + Gt2.join("|") + ")\\b|(" + Wt2.join("|") + ")$", "i");
|
|
1090
|
+
function St2(n) {
|
|
1091
|
+
return n ? String(n).replace(_t, "").trim() : "";
|
|
1092
|
+
}
|
|
1093
|
+
function Ut(n) {
|
|
1094
|
+
return !!n && _t.test(String(n));
|
|
1095
|
+
}
|
|
1096
|
+
var Bt = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
|
|
1097
|
+
var yt2 = new RegExp("^\\s*(" + [...Bt].sort((n, t) => t.length - n.length).map((n) => n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
|
|
1098
1098
|
function zt(n) {
|
|
1099
|
-
let t =
|
|
1100
|
-
return t.length === 0 ? "" : t.replace(
|
|
1099
|
+
let t = St2(n);
|
|
1100
|
+
return t.length === 0 ? "" : t.replace(Ft, " ");
|
|
1101
1101
|
}
|
|
1102
|
-
function
|
|
1102
|
+
function Mt2(n, t) {
|
|
1103
1103
|
if (!t) return false;
|
|
1104
|
-
let e =
|
|
1104
|
+
let e = St2(t);
|
|
1105
1105
|
return n.test(zt(t)) || n.test(e) || n.test(o(e).join(" "));
|
|
1106
1106
|
}
|
|
1107
|
-
function
|
|
1108
|
-
return
|
|
1107
|
+
function At(n) {
|
|
1108
|
+
return Mt2(kt, n);
|
|
1109
1109
|
}
|
|
1110
|
-
function Bt(n) {
|
|
1111
|
-
return Ct(Ft, n) || Mt2(n);
|
|
1112
|
-
}
|
|
1113
|
-
var At = /int|double|decimal|single|float|number|currency|money/i;
|
|
1114
1110
|
function Ht(n) {
|
|
1115
|
-
|
|
1116
|
-
return t === "categorical" ? "Categorical" : t === "ordinal" ? "Ordinal" : t === "continuous" || n?.isMeasure === true || At.test(String(n?.dataType ?? "")) ? "Continuous" : "Categorical";
|
|
1111
|
+
return Mt2(Vt, n) || At(n);
|
|
1117
1112
|
}
|
|
1113
|
+
var Tt = /int|double|decimal|single|float|number|currency|money/i;
|
|
1118
1114
|
function Kt(n) {
|
|
1119
|
-
|
|
1115
|
+
let t = String(n?.valueNature ?? "").trim().toLowerCase();
|
|
1116
|
+
return t === "categorical" ? "Categorical" : t === "ordinal" ? "Ordinal" : t === "continuous" || n?.isMeasure === true || Tt.test(String(n?.dataType ?? "")) ? "Continuous" : "Categorical";
|
|
1117
|
+
}
|
|
1118
|
+
function Yt(n) {
|
|
1119
|
+
return n?.isMeasure === true || Tt.test(String(n?.dataType ?? ""));
|
|
1120
1120
|
}
|
|
1121
|
-
function
|
|
1122
|
-
let t = n ?? {}, e =
|
|
1121
|
+
function Nt(n) {
|
|
1122
|
+
let t = n ?? {}, e = Kt(t);
|
|
1123
1123
|
if (e !== "Continuous") return { nature: e, additivity: "unknown", basis: "role", suppressed: false };
|
|
1124
|
-
if (
|
|
1125
|
-
let
|
|
1126
|
-
if (!(
|
|
1127
|
-
if (
|
|
1128
|
-
if (
|
|
1129
|
-
if (
|
|
1124
|
+
if (At(t.name)) return { nature: e, additivity: "positional", basis: "name", suppressed: true };
|
|
1125
|
+
let r = String(t.additivity ?? "").trim().toLowerCase();
|
|
1126
|
+
if (!(r === "additive" && Ut(t.name))) {
|
|
1127
|
+
if (r === "additive") return { nature: e, additivity: "additive", basis: "measured", suppressed: false };
|
|
1128
|
+
if (r === "part_of_whole") return { nature: e, additivity: "part_of_whole", basis: "measured", suppressed: false };
|
|
1129
|
+
if (r === "intensive_rate") return { nature: e, additivity: "intensive_rate", basis: "measured", suppressed: false };
|
|
1130
1130
|
}
|
|
1131
|
-
return t.discourageAggregationAcrossGroups === true ? { nature: e, additivity: "intensive_rate", basis: "host-flag", suppressed: false } :
|
|
1131
|
+
return t.discourageAggregationAcrossGroups === true ? { nature: e, additivity: "intensive_rate", basis: "host-flag", suppressed: false } : Ht(t.name) ? { nature: e, additivity: "intensive_rate", basis: "name", suppressed: false } : { nature: e, additivity: "additive", basis: "default", suppressed: false };
|
|
1132
1132
|
}
|
|
1133
|
-
function
|
|
1134
|
-
let t =
|
|
1133
|
+
function Rt(n) {
|
|
1134
|
+
let t = Nt(n), e = n ?? {};
|
|
1135
1135
|
if (t.nature === "Categorical") return ["first", "distinctcount", "count"];
|
|
1136
|
-
if (t.nature === "Ordinal") return
|
|
1136
|
+
if (t.nature === "Ordinal") return Yt(e) ? ["median", "average", "min", "max", "first", "distinctcount", "count"] : ["first", "distinctcount", "count"];
|
|
1137
1137
|
switch (t.additivity) {
|
|
1138
1138
|
case "positional":
|
|
1139
1139
|
return ["min", "max", "count", "distinctcount", "first"];
|
|
@@ -1143,24 +1143,24 @@ function Nt(n) {
|
|
|
1143
1143
|
return ["sum", "average", "median", "min", "max", "count", "distinctcount", "first"];
|
|
1144
1144
|
}
|
|
1145
1145
|
}
|
|
1146
|
-
function
|
|
1147
|
-
return
|
|
1146
|
+
function Se(n) {
|
|
1147
|
+
return Rt(n)[0];
|
|
1148
1148
|
}
|
|
1149
|
-
function
|
|
1149
|
+
function Me(n, t) {
|
|
1150
1150
|
if (t !== "sum" && t !== "count") return false;
|
|
1151
1151
|
if (t === "count") return true;
|
|
1152
|
-
let e =
|
|
1152
|
+
let e = Nt(n);
|
|
1153
1153
|
return e.additivity === "additive" || e.additivity === "part_of_whole" || e.additivity === "unknown";
|
|
1154
1154
|
}
|
|
1155
1155
|
|
|
1156
1156
|
// ../shape-core/dist/index.mjs
|
|
1157
1157
|
/*! @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. */
|
|
1158
|
-
var
|
|
1158
|
+
var E2 = 2;
|
|
1159
1159
|
var U2 = 400;
|
|
1160
|
-
function
|
|
1160
|
+
function G2(r) {
|
|
1161
1161
|
return !!E(r);
|
|
1162
1162
|
}
|
|
1163
|
-
function
|
|
1163
|
+
function C(r) {
|
|
1164
1164
|
let e = /* @__PURE__ */ new Set();
|
|
1165
1165
|
for (let n of r) {
|
|
1166
1166
|
if (n == null) continue;
|
|
@@ -1169,26 +1169,26 @@ function A(r) {
|
|
|
1169
1169
|
}
|
|
1170
1170
|
return Array.from(e);
|
|
1171
1171
|
}
|
|
1172
|
-
function
|
|
1173
|
-
let e =
|
|
1174
|
-
if (e.length === 0 || $
|
|
1175
|
-
let n = e.filter((c) =>
|
|
1172
|
+
function P2(r) {
|
|
1173
|
+
let e = C(r);
|
|
1174
|
+
if (e.length === 0 || $2(r) < 95) return false;
|
|
1175
|
+
let n = e.filter((c) => G2(c) && !Y(c)).length, s = e.filter((c) => !G2(c) && !!Y(c)).length;
|
|
1176
1176
|
return n >= 1 && n >= s;
|
|
1177
1177
|
}
|
|
1178
|
-
function
|
|
1178
|
+
function q2(r, e) {
|
|
1179
1179
|
if (!Y(r)) return false;
|
|
1180
1180
|
let n = E(r);
|
|
1181
1181
|
return n ? e === "world" ? true : s3.has(n) : false;
|
|
1182
1182
|
}
|
|
1183
|
-
function $
|
|
1184
|
-
let e =
|
|
1183
|
+
function $2(r) {
|
|
1184
|
+
let e = C(r);
|
|
1185
1185
|
if (e.length === 0) return 0;
|
|
1186
1186
|
let n = 0;
|
|
1187
|
-
for (let s of e)
|
|
1187
|
+
for (let s of e) G2(s) && n++;
|
|
1188
1188
|
return Math.round(n / e.length * 1e3) / 10;
|
|
1189
1189
|
}
|
|
1190
|
-
function
|
|
1191
|
-
let e =
|
|
1190
|
+
function v2(r) {
|
|
1191
|
+
let e = C(r);
|
|
1192
1192
|
if (e.length === 0) return 0;
|
|
1193
1193
|
let n = 0;
|
|
1194
1194
|
for (let s of e) Y(s) && n++;
|
|
@@ -1213,89 +1213,89 @@ function D2(r) {
|
|
|
1213
1213
|
function Z2(r, e) {
|
|
1214
1214
|
return y2(e, rt) ? true : F2(r).some((n) => /^\d{5}(-\d{4})?$/.test(n.replace(/\.0+$/, "")));
|
|
1215
1215
|
}
|
|
1216
|
-
function
|
|
1217
|
-
let n =
|
|
1216
|
+
function Qt(r, e) {
|
|
1217
|
+
let n = C(r);
|
|
1218
1218
|
if (n.length === 0) return 0;
|
|
1219
1219
|
let s = 0;
|
|
1220
1220
|
for (let c of n) p3(c, e) && s++;
|
|
1221
1221
|
return Math.round(s / n.length * 1e3) / 10;
|
|
1222
1222
|
}
|
|
1223
|
-
function
|
|
1223
|
+
function z2(r, e) {
|
|
1224
1224
|
let n = 0;
|
|
1225
|
-
for (let s of
|
|
1225
|
+
for (let s of C(r)) e(s) && n++;
|
|
1226
1226
|
return n;
|
|
1227
1227
|
}
|
|
1228
|
-
function
|
|
1228
|
+
function tn(r, e) {
|
|
1229
1229
|
let n = 0;
|
|
1230
1230
|
for (let s of F2(r)) e(s) && n++;
|
|
1231
1231
|
return n;
|
|
1232
1232
|
}
|
|
1233
|
-
function
|
|
1234
|
-
let
|
|
1233
|
+
function nn(r, e, n, s, c) {
|
|
1234
|
+
let A = [], u4 = [], o2 = {}, M = {}, _2 = new Set(r), l2 = (t) => e.map((i2) => i2[t]);
|
|
1235
1235
|
for (let t of ["city", "country"]) {
|
|
1236
1236
|
let i2 = n?.[t];
|
|
1237
|
-
i2 &&
|
|
1237
|
+
i2 && _2.has(i2) && (o2[t] = i2);
|
|
1238
1238
|
}
|
|
1239
1239
|
let X2 = new Set(c ?? r);
|
|
1240
1240
|
for (let t of ["lat", "lon"]) {
|
|
1241
1241
|
let i2 = n?.[t];
|
|
1242
1242
|
i2 && X2.has(i2) && (o2[t] = i2);
|
|
1243
1243
|
}
|
|
1244
|
-
let
|
|
1245
|
-
if (
|
|
1246
|
-
let t = l2(
|
|
1247
|
-
i2 < 95 ? u4.push(`zip=${
|
|
1244
|
+
let g2 = n?.zip;
|
|
1245
|
+
if (g2 && _2.has(g2)) {
|
|
1246
|
+
let t = l2(g2), i2 = D2(t);
|
|
1247
|
+
i2 < 95 ? u4.push(`zip=${g2} (only ${i2}% of values read as ZIPs)`) : Z2(t, g2) ? o2.zip = g2 : u4.push(`zip=${g2} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1248
1248
|
}
|
|
1249
|
-
let
|
|
1250
|
-
if (
|
|
1251
|
-
let t = l2(
|
|
1252
|
-
i2.length > 0 && i2.every((a2) =>
|
|
1249
|
+
let p = n?.state;
|
|
1250
|
+
if (p && _2.has(p)) {
|
|
1251
|
+
let t = l2(p), i2 = C(t);
|
|
1252
|
+
i2.length > 0 && i2.every((a2) => q2(a2, s)) ? u4.push(`state=${p} (every value is "CA", which is both Canada and California)`) : P2(t) ? (u4.push(`state=${p} (every value is a country, not a state)`), o2.country || (o2.country = p)) : v2(t) < 95 ? u4.push(`state=${p} (only ${v2(t)}% of values are states/provinces)`) : o2.state = p;
|
|
1253
1253
|
}
|
|
1254
1254
|
let d = new Set(Object.values(o2).filter(Boolean)), x2 = r.filter((t) => !d.has(t) && !t.startsWith("__"));
|
|
1255
1255
|
if (!o2.state) {
|
|
1256
1256
|
let t = null;
|
|
1257
1257
|
for (let i2 of x2) {
|
|
1258
1258
|
let a2 = l2(i2);
|
|
1259
|
-
if (
|
|
1260
|
-
let f =
|
|
1259
|
+
if (P2(a2)) continue;
|
|
1260
|
+
let f = v2(a2);
|
|
1261
1261
|
if (f < 95) continue;
|
|
1262
|
-
let N2 =
|
|
1263
|
-
N2 <
|
|
1262
|
+
let N2 = z2(a2, (S) => !!Y(S)), Y2 = z2(a2, (S) => !!Y(S) && !q2(S, s));
|
|
1263
|
+
N2 < E2 && Y2 < 1 || (!t || f > t.pct) && (t = { name: i2, pct: f });
|
|
1264
1264
|
}
|
|
1265
|
-
t && (o2.state = t.name, d.add(t.name),
|
|
1265
|
+
t && (o2.state = t.name, d.add(t.name), A.push(`state=${t.name} (${t.pct}% states/provinces)`));
|
|
1266
1266
|
}
|
|
1267
1267
|
if (!o2.zip) for (let t of x2) {
|
|
1268
1268
|
if (d.has(t)) continue;
|
|
1269
1269
|
let i2 = l2(t), a2 = D2(i2);
|
|
1270
|
-
if (!(a2 < 95) && Z2(i2, t) && !(
|
|
1271
|
-
o2.zip = t, d.add(t),
|
|
1270
|
+
if (!(a2 < 95) && Z2(i2, t) && !(tn(i2, (f) => Z(f).length > 0) < E2)) {
|
|
1271
|
+
o2.zip = t, d.add(t), A.push(`zip=${t} (${a2}% ZIP codes)`);
|
|
1272
1272
|
break;
|
|
1273
1273
|
}
|
|
1274
1274
|
}
|
|
1275
1275
|
let h2 = o2.country;
|
|
1276
|
-
if (!h2 || !
|
|
1276
|
+
if (!h2 || !P2(l2(h2))) {
|
|
1277
1277
|
let t = null;
|
|
1278
1278
|
for (let i2 of x2) {
|
|
1279
|
-
if (d.has(i2) || !
|
|
1280
|
-
let a2 = $
|
|
1279
|
+
if (d.has(i2) || !P2(l2(i2))) continue;
|
|
1280
|
+
let a2 = $2(l2(i2));
|
|
1281
1281
|
(!t || a2 > t.pct) && (t = { name: i2, pct: a2 });
|
|
1282
1282
|
}
|
|
1283
|
-
t && (h2 && (u4.push(`country=${h2} (only ${$
|
|
1283
|
+
t && (h2 && (u4.push(`country=${h2} (only ${$2(l2(h2))}% of values are country identifiers; using ${t.name} instead)`), M.country = h2), o2.country = t.name, d.add(t.name), A.push(`country=${t.name}`));
|
|
1284
1284
|
}
|
|
1285
1285
|
if (!o2.city) {
|
|
1286
1286
|
let t = null;
|
|
1287
1287
|
for (let i2 of x2) {
|
|
1288
1288
|
if (d.has(i2)) continue;
|
|
1289
|
-
let a2 = l2(i2), f =
|
|
1290
|
-
f < m3 ||
|
|
1289
|
+
let a2 = l2(i2), f = Qt(a2, s);
|
|
1290
|
+
f < m3 || z2(a2, (N2) => p3(N2, s)) < E2 || (!t || f > t.pct) && (t = { name: i2, pct: f });
|
|
1291
1291
|
}
|
|
1292
|
-
t && (o2.city = t.name,
|
|
1292
|
+
t && (o2.city = t.name, A.push(`city=${t.name} (${t.pct}% known cities)`));
|
|
1293
1293
|
}
|
|
1294
|
-
let B2 = o2.country ? l2(o2.country) : [],
|
|
1294
|
+
let B2 = o2.country ? l2(o2.country) : [], k2 = !!o2.country && P2(B2), j3 = k2 ? new Set(B2.map((t) => E(t == null ? null : String(t))).filter(Boolean)).size : 0, K2 = k2 && j3 >= 2, L2 = !!(o2.lat && o2.lon) && e.some((t) => {
|
|
1295
1295
|
let i2 = +String(t[o2.lat] ?? "").trim(), a2 = +String(t[o2.lon] ?? "").trim();
|
|
1296
1296
|
return isFinite(i2) && isFinite(a2) && i2 >= -90 && i2 <= 90 && a2 >= -180 && a2 <= 180 && String(t[o2.lat] ?? "").trim() !== "" && String(t[o2.lon] ?? "").trim() !== "";
|
|
1297
1297
|
});
|
|
1298
|
-
return o2.lat && o2.lon && !L2 && u4.push(`lat/lon=${o2.lat}/${o2.lon} (no row holds a usable coordinate pair)`), o2.country && !K2 && !(o2.city || o2.state || o2.zip || L2) && u4.push(
|
|
1298
|
+
return o2.lat && o2.lon && !L2 && u4.push(`lat/lon=${o2.lat}/${o2.lon} (no row holds a usable coordinate pair)`), o2.country && !K2 && !(o2.city || o2.state || o2.zip || L2) && u4.push(k2 ? `country=${o2.country} (every row resolves to the same country - nothing to place apart)` : `country=${o2.country} (values are not country identifiers)`), { bind: !!(o2.city || o2.state || o2.zip || K2 || L2) ? o2 : null, backfilled: A, refused: u4, ...Object.keys(M).length ? { labelFallback: M } : {} };
|
|
1299
1299
|
}
|
|
1300
1300
|
|
|
1301
1301
|
// src/payload.ts
|
|
@@ -1310,7 +1310,7 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1310
1310
|
let labelCol;
|
|
1311
1311
|
if (bind) {
|
|
1312
1312
|
const dims = cols.filter((c) => !c.isMeasure).map((c) => c.name);
|
|
1313
|
-
const res =
|
|
1313
|
+
const res = nn(dims, rowObjs, bind, point?.mapKind, cols.map((c) => c.name));
|
|
1314
1314
|
bind = res.bind;
|
|
1315
1315
|
rolesBackfilled = res.backfilled;
|
|
1316
1316
|
rolesRefused = res.refused;
|
|
@@ -1378,11 +1378,11 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination) {
|
|
|
1378
1378
|
const row = rowObjs[r];
|
|
1379
1379
|
const a2 = new Array(cols.length + extra);
|
|
1380
1380
|
for (let c = 0; c < cols.length; c++) {
|
|
1381
|
-
const
|
|
1382
|
-
if (
|
|
1383
|
-
a2[c] =
|
|
1381
|
+
const v3 = row[colNames[c]];
|
|
1382
|
+
if (v3 instanceof Date) {
|
|
1383
|
+
a2[c] = v3.toISOString();
|
|
1384
1384
|
} else {
|
|
1385
|
-
a2[c] =
|
|
1385
|
+
a2[c] = v3 ?? null;
|
|
1386
1386
|
}
|
|
1387
1387
|
}
|
|
1388
1388
|
let k2 = cols.length;
|
|
@@ -2103,8 +2103,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2103
2103
|
}
|
|
2104
2104
|
const pinSvg = doc.createElementNS(SVG_NS2, "svg");
|
|
2105
2105
|
for (const a2 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
|
|
2106
|
-
const
|
|
2107
|
-
if (
|
|
2106
|
+
const v3 = svg.getAttribute(a2);
|
|
2107
|
+
if (v3) pinSvg.setAttribute(a2, v3);
|
|
2108
2108
|
}
|
|
2109
2109
|
const styles = svg.querySelectorAll("style");
|
|
2110
2110
|
for (let i2 = 0; i2 < styles.length; i2++) pinSvg.appendChild(styles[i2].cloneNode(true));
|
|
@@ -2336,8 +2336,8 @@ function compositeOver(fg, bg) {
|
|
|
2336
2336
|
];
|
|
2337
2337
|
}
|
|
2338
2338
|
function relativeLuminance(rgb) {
|
|
2339
|
-
const lin = rgb.map((
|
|
2340
|
-
const s =
|
|
2339
|
+
const lin = rgb.map((v3) => {
|
|
2340
|
+
const s = v3 / 255;
|
|
2341
2341
|
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
2342
2342
|
});
|
|
2343
2343
|
return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
|
|
@@ -2376,18 +2376,18 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
|
2376
2376
|
if (!box || !(box.width > 0) || !(box.height > 0) || !(n >= 1)) return out;
|
|
2377
2377
|
const k2 = Math.floor(n);
|
|
2378
2378
|
for (let i2 = 0; i2 < k2; i2++) {
|
|
2379
|
-
for (let
|
|
2379
|
+
for (let j3 = 0; j3 < k2; j3++) {
|
|
2380
2380
|
out.push({
|
|
2381
2381
|
x: box.left + box.width * (i2 + 0.5) / k2,
|
|
2382
|
-
y: box.top + box.height * (
|
|
2382
|
+
y: box.top + box.height * (j3 + 0.5) / k2
|
|
2383
2383
|
});
|
|
2384
2384
|
}
|
|
2385
2385
|
}
|
|
2386
2386
|
return out;
|
|
2387
2387
|
}
|
|
2388
|
-
function clamp01(
|
|
2389
|
-
if (typeof
|
|
2390
|
-
return Math.max(0, Math.min(1,
|
|
2388
|
+
function clamp01(v3) {
|
|
2389
|
+
if (typeof v3 !== "number" || !isFinite(v3)) return 1;
|
|
2390
|
+
return Math.max(0, Math.min(1, v3));
|
|
2391
2391
|
}
|
|
2392
2392
|
function hexToRGB(hex) {
|
|
2393
2393
|
const p = toRGBA(hex);
|
|
@@ -2400,10 +2400,10 @@ var LABEL_CONTRAST_CAP = 2e3;
|
|
|
2400
2400
|
var EMPTY3 = { rects: 0, scanned: 0, fixed: 0, pillsBoosted: 0, offFill: 0, pageMajority: 0 };
|
|
2401
2401
|
function backedSamples(el, pts) {
|
|
2402
2402
|
try {
|
|
2403
|
-
const
|
|
2404
|
-
if (typeof
|
|
2405
|
-
const m =
|
|
2406
|
-
const svg =
|
|
2403
|
+
const ge2 = el;
|
|
2404
|
+
if (typeof ge2.isPointInFill !== "function" || typeof ge2.getScreenCTM !== "function") return null;
|
|
2405
|
+
const m = ge2.getScreenCTM();
|
|
2406
|
+
const svg = ge2.ownerSVGElement;
|
|
2407
2407
|
if (!m || !svg || typeof svg.createSVGPoint !== "function") return null;
|
|
2408
2408
|
if (pts.length === 0) return null;
|
|
2409
2409
|
const inv = m.inverse();
|
|
@@ -2412,7 +2412,7 @@ function backedSamples(el, pts) {
|
|
|
2412
2412
|
const p = svg.createSVGPoint();
|
|
2413
2413
|
p.x = pts[i2].x;
|
|
2414
2414
|
p.y = pts[i2].y;
|
|
2415
|
-
hit.push(
|
|
2415
|
+
hit.push(ge2.isPointInFill(p.matrixTransform(inv)));
|
|
2416
2416
|
}
|
|
2417
2417
|
return hit;
|
|
2418
2418
|
} catch {
|
|
@@ -2629,7 +2629,7 @@ function createChartHost(container, config) {
|
|
|
2629
2629
|
let data = config.data;
|
|
2630
2630
|
{
|
|
2631
2631
|
const stamped = config.data?.meta?.hostContract;
|
|
2632
|
-
const major = (
|
|
2632
|
+
const major = (v3) => (v3 || "").split(".")[0];
|
|
2633
2633
|
if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
|
|
2634
2634
|
try {
|
|
2635
2635
|
(win?.console ?? console)?.warn(
|
|
@@ -2987,10 +2987,10 @@ export {
|
|
|
2987
2987
|
registerGeoAsset,
|
|
2988
2988
|
clearGeoCache,
|
|
2989
2989
|
L3,
|
|
2990
|
-
Tt,
|
|
2991
2990
|
Nt,
|
|
2992
|
-
|
|
2993
|
-
|
|
2991
|
+
Rt,
|
|
2992
|
+
Se,
|
|
2993
|
+
Me,
|
|
2994
2994
|
buildRenderPayload,
|
|
2995
2995
|
createMarkResolver,
|
|
2996
2996
|
ensureCrossfilterHitTargets,
|
package/dist/index.mjs
CHANGED
|
@@ -23,7 +23,6 @@ import {
|
|
|
23
23
|
CONTAINER_SLOT_INITIAL_XF_MARK,
|
|
24
24
|
CONTAINER_SLOT_UI_STATE,
|
|
25
25
|
CONTAINER_SLOT_XF_CLEAR,
|
|
26
|
-
Ce,
|
|
27
26
|
DARK_TEXT,
|
|
28
27
|
DIM_OPACITY_DEFAULT,
|
|
29
28
|
DIM_OPACITY_VAR,
|
|
@@ -44,6 +43,7 @@ import {
|
|
|
44
43
|
MAX_FRAME_GROW_FACTOR,
|
|
45
44
|
MIN_CONTRAST,
|
|
46
45
|
MIN_HIT_BAND_PX,
|
|
46
|
+
Me,
|
|
47
47
|
Nt,
|
|
48
48
|
PAGE_MATCH_TOLERANCE,
|
|
49
49
|
PHANTOM_FRACTION,
|
|
@@ -51,14 +51,14 @@ import {
|
|
|
51
51
|
PILL_MIN_COVERAGE,
|
|
52
52
|
PILL_OPAQUE_ALPHA,
|
|
53
53
|
ROW_IDX_ATTR,
|
|
54
|
+
Rt,
|
|
54
55
|
SCROLL_SLACK_PX,
|
|
55
56
|
SEASONAL_MARKERS_DEFAULT,
|
|
56
57
|
SELECTION_ACTIVE_CLASS,
|
|
57
|
-
|
|
58
|
+
Se,
|
|
58
59
|
VALUE_AXIS_BASELINE_DEFAULT,
|
|
59
60
|
WHITE_TEXT_BG_LUM,
|
|
60
61
|
XFILTER_REFRESH_EVENT,
|
|
61
|
-
_e,
|
|
62
62
|
applyLabelContrast,
|
|
63
63
|
axisPinPlacement,
|
|
64
64
|
backingHoldsGlyph,
|
|
@@ -110,7 +110,7 @@ import {
|
|
|
110
110
|
svgInkReach,
|
|
111
111
|
toRGBA,
|
|
112
112
|
unpinScrolledAxis
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-RD3DRWLL.mjs";
|
|
114
114
|
import "./chunk-A2GMXZP7.mjs";
|
|
115
115
|
import "./chunk-GHODWOAL.mjs";
|
|
116
116
|
|
|
@@ -864,15 +864,15 @@ function isRealColumn(col) {
|
|
|
864
864
|
return !!col && !isSynthetic(col.name);
|
|
865
865
|
}
|
|
866
866
|
function isSuppressed(col) {
|
|
867
|
-
return
|
|
867
|
+
return Nt(col).suppressed;
|
|
868
868
|
}
|
|
869
869
|
function resolveAgg(col, requested, auto) {
|
|
870
870
|
const fallback = () => {
|
|
871
|
-
const d =
|
|
871
|
+
const d = Se(col);
|
|
872
872
|
return d === "first" ? "count" : d;
|
|
873
873
|
};
|
|
874
874
|
if (auto) return fallback();
|
|
875
|
-
return
|
|
875
|
+
return Rt(col).indexOf(requested) >= 0 ? requested : fallback();
|
|
876
876
|
}
|
|
877
877
|
function toNumber(v) {
|
|
878
878
|
if (v == null || v === "") return null;
|
|
@@ -976,7 +976,7 @@ function computeSelectionCard(payload, selectedRowIdxs, opts = {}) {
|
|
|
976
976
|
}
|
|
977
977
|
const value = reduce(selVals, colAgg, selRaw);
|
|
978
978
|
let sharePct = null;
|
|
979
|
-
if (
|
|
979
|
+
if (Me(col, colAgg) && value != null) {
|
|
980
980
|
const allVals = [];
|
|
981
981
|
const allRaw = [];
|
|
982
982
|
for (let r = 0; r < rows.length; r++) {
|
package/dist/react.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bicharts/chart-host",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.85",
|
|
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",
|