@bicharts/chart-host 0.6.19 → 0.6.21
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-DN3CPQ7B.mjs → chunk-GOZQBCDW.mjs} +143 -143
- package/dist/index.mjs +1 -1
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -142,7 +142,7 @@ var require_papaparse_min = __commonJS({
|
|
|
142
142
|
return "greedy" === m2.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length;
|
|
143
143
|
}
|
|
144
144
|
function g4() {
|
|
145
|
-
if (p4 && a5 && (
|
|
145
|
+
if (p4 && a5 && (k4("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) {
|
|
@@ -164,7 +164,7 @@ var require_papaparse_min = __commonJS({
|
|
|
164
164
|
})(t5) ? parseFloat(t5) : d3.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(n4 = m2.header ? r5 >= c4.length ? "__parsed_extra" : c4[r5] : n4, s4 = m2.transform ? m2.transform(s4, n4) : s4);
|
|
165
165
|
"__parsed_extra" === n4 ? (i5[n4] = i5[n4] || [], i5[n4].push(s4)) : i5[n4] = s4;
|
|
166
166
|
}
|
|
167
|
-
return m2.header && (r5 > c4.length ?
|
|
167
|
+
return m2.header && (r5 > c4.length ? k4("FieldMismatch", "TooManyFields", "Too many fields: expected " + c4.length + " fields but parsed " + r5, f5 + t4) : r5 < c4.length && k4("FieldMismatch", "TooFewFields", "Too few fields: expected " + c4.length + " fields but parsed " + r5, f5 + t4)), i5;
|
|
168
168
|
}
|
|
169
169
|
var r4;
|
|
170
170
|
p4 && (m2.header || m2.dynamicTyping || m2.transform) && (r4 = 1, !p4.data.length || Array.isArray(p4.data[0]) ? (p4.data = p4.data.map(i4), r4 = p4.data.length) : p4.data = i4(p4.data, 0), m2.header && p4.meta && (p4.meta.fields = c4), f5 += r4);
|
|
@@ -172,7 +172,7 @@ var require_papaparse_min = __commonJS({
|
|
|
172
172
|
function _3() {
|
|
173
173
|
return m2.header && 0 === c4.length;
|
|
174
174
|
}
|
|
175
|
-
function
|
|
175
|
+
function k4(e2, t2, i4, r4) {
|
|
176
176
|
e2 = { type: e2, code: t2, message: i4 };
|
|
177
177
|
void 0 !== r4 && (e2.row = r4), p4.errors.push(e2);
|
|
178
178
|
}
|
|
@@ -211,7 +211,7 @@ var require_papaparse_min = __commonJS({
|
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
213
|
function E4(C2) {
|
|
214
|
-
var S = (C2 = C2 || {}).delimiter, O3 = C2.newline, x2 = C2.comments, I4 = C2.step, A2 = C2.preview, T3 = C2.fastMode, D3 = null,
|
|
214
|
+
var S = (C2 = C2 || {}).delimiter, O3 = C2.newline, x2 = C2.comments, I4 = C2.step, A2 = C2.preview, T3 = C2.fastMode, D3 = null, L2 = false, F4 = null == C2.quoteChar ? '"' : C2.quoteChar, j3 = F4;
|
|
215
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
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
217
|
var z4 = 0, M = false;
|
|
@@ -219,33 +219,33 @@ var require_papaparse_min = __commonJS({
|
|
|
219
219
|
if ("string" != typeof i2) throw new Error("Input must be a string");
|
|
220
220
|
var n2 = i2.length, e = S.length, s2 = O3.length, a5 = x2.length, o2 = q3(I4), h4 = [], u4 = [], d3 = [], f5 = z4 = 0;
|
|
221
221
|
if (!i2) return w3();
|
|
222
|
-
if (T3 || false !== T3 && -1 === i2.indexOf(
|
|
222
|
+
if (T3 || false !== T3 && -1 === i2.indexOf(F4)) {
|
|
223
223
|
for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
|
|
224
224
|
if (d3 = l2[c4], z4 += d3.length, c4 !== l2.length - 1) z4 += O3.length;
|
|
225
225
|
else if (r2) return w3();
|
|
226
226
|
if (!x2 || d3.substring(0, a5) !== x2) {
|
|
227
227
|
if (o2) {
|
|
228
|
-
if (h4 = [],
|
|
229
|
-
} else
|
|
228
|
+
if (h4 = [], k4(d3.split(S)), R2(), M) return w3();
|
|
229
|
+
} else k4(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(j3) + U3(
|
|
236
|
-
if (-1 === (m2 = i2.indexOf(
|
|
237
|
-
if (m2 === n2 - 1) return E5(i2.substring(z4, m2).replace(_3,
|
|
238
|
-
if (
|
|
239
|
-
else if (
|
|
235
|
+
for (var p4 = i2.indexOf(S, z4), g4 = i2.indexOf(O3, z4), _3 = new RegExp(U3(j3) + U3(F4), "g"), m2 = i2.indexOf(F4, z4); ; ) if (i2[z4] === F4) for (m2 = z4, z4++; ; ) {
|
|
236
|
+
if (-1 === (m2 = i2.indexOf(F4, m2 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z4 }), E5();
|
|
237
|
+
if (m2 === n2 - 1) return E5(i2.substring(z4, m2).replace(_3, F4));
|
|
238
|
+
if (F4 === j3 && i2[m2 + 1] === j3) m2++;
|
|
239
|
+
else if (F4 === j3 || 0 === m2 || i2[m2 - 1] !== j3) {
|
|
240
240
|
-1 !== p4 && p4 < m2 + 1 && (p4 = i2.indexOf(S, m2 + 1));
|
|
241
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
|
-
d3.push(i2.substring(z4, m2).replace(_3,
|
|
243
|
+
d3.push(i2.substring(z4, m2).replace(_3, F4)), i2[z4 = m2 + 1 + y6 + e] !== F4 && (m2 = i2.indexOf(F4, z4)), p4 = i2.indexOf(S, z4), g4 = i2.indexOf(O3, z4);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
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,
|
|
248
|
+
if (d3.push(i2.substring(z4, m2).replace(_3, F4)), b5(m2 + 1 + y6 + s2), p4 = i2.indexOf(S, z4), m2 = i2.indexOf(F4, z4), o2 && (R2(), M)) return w3();
|
|
249
249
|
if (A2 && h4.length >= A2) return w3(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
@@ -262,7 +262,7 @@ var require_papaparse_min = __commonJS({
|
|
|
262
262
|
if (A2 && h4.length >= A2) return w3(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
265
|
-
function
|
|
265
|
+
function k4(e2) {
|
|
266
266
|
h4.push(e2), f5 = z4;
|
|
267
267
|
}
|
|
268
268
|
function v5(e2) {
|
|
@@ -270,13 +270,13 @@ var require_papaparse_min = __commonJS({
|
|
|
270
270
|
return t2 = -1 !== e2 && (e2 = i2.substring(m2 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
272
272
|
function E5(e2) {
|
|
273
|
-
return r2 || (void 0 === e2 && (e2 = i2.substring(z4)), d3.push(e2), z4 = n2,
|
|
273
|
+
return r2 || (void 0 === e2 && (e2 = i2.substring(z4)), d3.push(e2), z4 = n2, k4(d3), o2 && R2()), w3();
|
|
274
274
|
}
|
|
275
275
|
function b5(e2) {
|
|
276
|
-
z4 = e2,
|
|
276
|
+
z4 = e2, k4(d3), d3 = [], g4 = i2.indexOf(O3, z4);
|
|
277
277
|
}
|
|
278
278
|
function w3(e2) {
|
|
279
|
-
if (C2.header && !t && h4.length && !
|
|
279
|
+
if (C2.header && !t && h4.length && !L2) {
|
|
280
280
|
var s4 = h4[0], a6 = /* @__PURE__ */ Object.create(null), o4 = new Set(s4);
|
|
281
281
|
let n4 = false;
|
|
282
282
|
for (let r4 = 0; r4 < s4.length; r4++) {
|
|
@@ -288,7 +288,7 @@ var require_papaparse_min = __commonJS({
|
|
|
288
288
|
} else a6[i4] = 1, s4[r4] = i4;
|
|
289
289
|
o4.add(i4);
|
|
290
290
|
}
|
|
291
|
-
n4 && console.warn("Duplicate headers found and renamed."),
|
|
291
|
+
n4 && console.warn("Duplicate headers found and renamed."), L2 = true;
|
|
292
292
|
}
|
|
293
293
|
return { data: h4, errors: u4, meta: { delimiter: S, linebreak: O3, aborted: M, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D3 } };
|
|
294
294
|
}
|
|
@@ -368,7 +368,7 @@ var require_papaparse_min = __commonJS({
|
|
|
368
368
|
function n2(e2, t2, i4) {
|
|
369
369
|
var r4 = "", n4 = ("string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t2 && (t2 = JSON.parse(t2)), Array.isArray(e2) && 0 < e2.length), s4 = !Array.isArray(t2[0]);
|
|
370
370
|
if (n4 && _3) {
|
|
371
|
-
for (var a6 = 0; a6 < e2.length; a6++) 0 < a6 && (r4 += m2), r4 +=
|
|
371
|
+
for (var a6 = 0; a6 < e2.length; a6++) 0 < a6 && (r4 += m2), r4 += k4(e2[a6], a6);
|
|
372
372
|
0 < t2.length && (r4 += y6);
|
|
373
373
|
}
|
|
374
374
|
for (var o4 = 0; o4 < t2.length; o4++) {
|
|
@@ -384,14 +384,14 @@ var require_papaparse_min = __commonJS({
|
|
|
384
384
|
for (var p4 = 0; p4 < h5; p4++) {
|
|
385
385
|
0 < p4 && !d3 && (r4 += m2);
|
|
386
386
|
var g4 = n4 && s4 ? e2[p4] : p4;
|
|
387
|
-
r4 +=
|
|
387
|
+
r4 += k4(t2[o4][g4], p4);
|
|
388
388
|
}
|
|
389
389
|
o4 < t2.length - 1 && (!i4 || 0 < h5 && !d3) && (r4 += y6);
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
392
|
return r4;
|
|
393
393
|
}
|
|
394
|
-
function
|
|
394
|
+
function k4(e2, t2) {
|
|
395
395
|
var i4, r4, n4;
|
|
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;
|
|
@@ -451,9 +451,9 @@ var CONTAINER_SLOT_UI_STATE = "__lchUiState";
|
|
|
451
451
|
var VIEW_ONLY_UI_STATE_KEYS = Object.freeze(["camera", "llmZoom"]);
|
|
452
452
|
function withoutViewOnlyKeys(bag) {
|
|
453
453
|
if (!bag || typeof bag !== "object") return bag;
|
|
454
|
-
if (!VIEW_ONLY_UI_STATE_KEYS.some((
|
|
454
|
+
if (!VIEW_ONLY_UI_STATE_KEYS.some((k4) => Object.prototype.hasOwnProperty.call(bag, k4))) return bag;
|
|
455
455
|
const out = { ...bag };
|
|
456
|
-
for (const
|
|
456
|
+
for (const k4 of VIEW_ONLY_UI_STATE_KEYS) delete out[k4];
|
|
457
457
|
return out;
|
|
458
458
|
}
|
|
459
459
|
var HOST_CONTAINER_CLASS = "bic-chart-host";
|
|
@@ -666,10 +666,10 @@ function censusColourSpread(container, doc) {
|
|
|
666
666
|
for (const { rgb } of counted) {
|
|
667
667
|
marks++;
|
|
668
668
|
distinct.add(rgb.join(","));
|
|
669
|
-
const
|
|
670
|
-
const cur = cells.get(
|
|
669
|
+
const k4 = cellKey(rgb);
|
|
670
|
+
const cur = cells.get(k4);
|
|
671
671
|
if (cur) cur.n++;
|
|
672
|
-
else cells.set(
|
|
672
|
+
else cells.set(k4, { rgb, n: 1 });
|
|
673
673
|
}
|
|
674
674
|
if (marks < MIN_MARKS || distinct.size < MIN_RAMP_FILLS) return EMPTY;
|
|
675
675
|
const top = [...cells.values()].sort((a4, b4) => b4.n - a4.n).slice(0, MAX_CELLS);
|
|
@@ -748,8 +748,8 @@ function autoRampMinStep(low, high, canvas, classes = AUTO_RAMP_CLASSES, opacity
|
|
|
748
748
|
const bg = normHex(canvas);
|
|
749
749
|
if (!lo || !hi || !bg || classes < 2) return NaN;
|
|
750
750
|
let prev = null, min = Infinity;
|
|
751
|
-
for (let
|
|
752
|
-
const painted = paintedOver(labToHex(mixLab(lo, hi,
|
|
751
|
+
for (let k4 = 0; k4 < classes; k4++) {
|
|
752
|
+
const painted = paintedOver(labToHex(mixLab(lo, hi, k4 / (classes - 1))), bg, opacity);
|
|
753
753
|
if (prev) min = Math.min(min, deltaE2000(prev, painted));
|
|
754
754
|
prev = painted;
|
|
755
755
|
}
|
|
@@ -784,9 +784,9 @@ function resolveAutoColorScale(p2) {
|
|
|
784
784
|
let high = { ...A2 };
|
|
785
785
|
let highHex = labToHex(high);
|
|
786
786
|
for (let step = 0; step < 80 && autoRampMinStep(lowHex, highHex, canvas) < AUTO_RAMP_MIN_STEP_DELTA_E; step++) {
|
|
787
|
-
const
|
|
788
|
-
if (
|
|
789
|
-
high = { ...high, L:
|
|
787
|
+
const L2 = Math.max(4, Math.min(98, high.L + (darkCanvas ? 1 : -1)));
|
|
788
|
+
if (L2 === high.L) break;
|
|
789
|
+
high = { ...high, L: L2 };
|
|
790
790
|
highHex = labToHex(high);
|
|
791
791
|
}
|
|
792
792
|
memoKey = key;
|
|
@@ -953,12 +953,12 @@ var byAsset = /* @__PURE__ */ new Map();
|
|
|
953
953
|
var _na;
|
|
954
954
|
function geoAssetFor(geoKind) {
|
|
955
955
|
if (!geoKind) return null;
|
|
956
|
-
const
|
|
957
|
-
if (/^country/.test(
|
|
958
|
-
if (
|
|
959
|
-
if (
|
|
960
|
-
if (
|
|
961
|
-
if (
|
|
956
|
+
const k4 = geoKind.toLowerCase();
|
|
957
|
+
if (/^country/.test(k4)) return "world";
|
|
958
|
+
if (k4 === "north-america") return "world";
|
|
959
|
+
if (k4 === "world") return "world";
|
|
960
|
+
if (k4 === "us-state-code" || k4 === "us-state-name") return "us-states";
|
|
961
|
+
if (k4 === "us-zip5") return "us-zip3";
|
|
962
962
|
return null;
|
|
963
963
|
}
|
|
964
964
|
var _worldBase;
|
|
@@ -1461,11 +1461,11 @@ function It(n, s) {
|
|
|
1461
1461
|
}
|
|
1462
1462
|
function Wt(n, s) {
|
|
1463
1463
|
let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M = [], h3 = 0;
|
|
1464
|
-
for (let
|
|
1465
|
-
let I4 = Mt(n[
|
|
1466
|
-
if (i[
|
|
1464
|
+
for (let N3 = 0; N3 < n.length; ++N3) {
|
|
1465
|
+
let I4 = Mt(n[N3], s), O3 = I4 !== null && It(I4, s) ? I4 : null;
|
|
1466
|
+
if (i[N3] = O3, O3 !== null) h3++;
|
|
1467
1467
|
else {
|
|
1468
|
-
let d2 = n[
|
|
1468
|
+
let d2 = n[N3];
|
|
1469
1469
|
if (d2 != null) {
|
|
1470
1470
|
let p2 = String(d2).trim();
|
|
1471
1471
|
if (p2.length > 0) {
|
|
@@ -1584,141 +1584,141 @@ 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 V3 = 2;
|
|
1586
1586
|
var Y3 = 400;
|
|
1587
|
-
function z3(
|
|
1588
|
-
return !!E(
|
|
1587
|
+
function z3(e) {
|
|
1588
|
+
return !!E(e);
|
|
1589
1589
|
}
|
|
1590
|
-
function
|
|
1591
|
-
let
|
|
1592
|
-
for (let t of
|
|
1590
|
+
function F3(e) {
|
|
1591
|
+
let n = /* @__PURE__ */ new Set();
|
|
1592
|
+
for (let t of e) {
|
|
1593
1593
|
if (t == null) continue;
|
|
1594
1594
|
let o = u(String(t));
|
|
1595
|
-
if (!V(o) && !
|
|
1595
|
+
if (!V(o) && !n.has(o) && (n.add(o), n.size >= Y3)) break;
|
|
1596
1596
|
}
|
|
1597
|
-
return Array.from(
|
|
1597
|
+
return Array.from(n);
|
|
1598
1598
|
}
|
|
1599
|
-
function v3(
|
|
1600
|
-
let
|
|
1601
|
-
if (
|
|
1602
|
-
let t =
|
|
1599
|
+
function v3(e) {
|
|
1600
|
+
let n = F3(e);
|
|
1601
|
+
if (n.length === 0 || B3(e) < 95) return false;
|
|
1602
|
+
let t = n.filter((u2) => z3(u2) && !Y(u2)).length, o = n.filter((u2) => !z3(u2) && !!Y(u2)).length;
|
|
1603
1603
|
return t >= 1 && t >= o;
|
|
1604
1604
|
}
|
|
1605
|
-
function X3(
|
|
1606
|
-
if (!Y(
|
|
1607
|
-
let t = E(
|
|
1608
|
-
return t ?
|
|
1605
|
+
function X3(e, n) {
|
|
1606
|
+
if (!Y(e)) return false;
|
|
1607
|
+
let t = E(e);
|
|
1608
|
+
return t ? n === "world" ? true : s3.has(t) : false;
|
|
1609
1609
|
}
|
|
1610
|
-
function B3(
|
|
1611
|
-
let
|
|
1612
|
-
if (
|
|
1610
|
+
function B3(e) {
|
|
1611
|
+
let n = F3(e);
|
|
1612
|
+
if (n.length === 0) return 0;
|
|
1613
1613
|
let t = 0;
|
|
1614
|
-
for (let o of
|
|
1615
|
-
return Math.round(t /
|
|
1614
|
+
for (let o of n) z3(o) && t++;
|
|
1615
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1616
1616
|
}
|
|
1617
|
-
function
|
|
1618
|
-
let
|
|
1619
|
-
if (
|
|
1617
|
+
function k3(e) {
|
|
1618
|
+
let n = F3(e);
|
|
1619
|
+
if (n.length === 0) return 0;
|
|
1620
1620
|
let t = 0;
|
|
1621
|
-
for (let o of
|
|
1622
|
-
return Math.round(t /
|
|
1621
|
+
for (let o of n) Y(o) && t++;
|
|
1622
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1623
1623
|
}
|
|
1624
|
-
function $2(
|
|
1625
|
-
let
|
|
1626
|
-
for (let t of
|
|
1624
|
+
function $2(e) {
|
|
1625
|
+
let n = /* @__PURE__ */ new Set();
|
|
1626
|
+
for (let t of e) {
|
|
1627
1627
|
if (t == null) continue;
|
|
1628
1628
|
let o = String(t).trim();
|
|
1629
|
-
if (!V(u(o)) && !
|
|
1629
|
+
if (!V(u(o)) && !n.has(o) && (n.add(o), n.size >= Y3)) break;
|
|
1630
1630
|
}
|
|
1631
|
-
return Array.from(
|
|
1631
|
+
return Array.from(n);
|
|
1632
1632
|
}
|
|
1633
|
-
function W2(
|
|
1634
|
-
let
|
|
1635
|
-
if (
|
|
1633
|
+
function W2(e) {
|
|
1634
|
+
let n = $2(e);
|
|
1635
|
+
if (n.length === 0) return 0;
|
|
1636
1636
|
let t = 0;
|
|
1637
|
-
for (let o of
|
|
1638
|
-
return Math.round(t /
|
|
1637
|
+
for (let o of n) Z(o).length > 0 && t++;
|
|
1638
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1639
1639
|
}
|
|
1640
|
-
function Z3(
|
|
1641
|
-
return y4(
|
|
1640
|
+
function Z3(e, n) {
|
|
1641
|
+
return y4(n, rt) ? true : $2(e).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
|
|
1642
1642
|
}
|
|
1643
|
-
function nt2(
|
|
1644
|
-
let t =
|
|
1643
|
+
function nt2(e, n) {
|
|
1644
|
+
let t = F3(e);
|
|
1645
1645
|
if (t.length === 0) return 0;
|
|
1646
1646
|
let o = 0;
|
|
1647
|
-
for (let u2 of t) p3(u2,
|
|
1647
|
+
for (let u2 of t) p3(u2, n) && o++;
|
|
1648
1648
|
return Math.round(o / t.length * 1e3) / 10;
|
|
1649
1649
|
}
|
|
1650
|
-
function K3(
|
|
1650
|
+
function K3(e, n) {
|
|
1651
1651
|
let t = 0;
|
|
1652
|
-
for (let o of
|
|
1652
|
+
for (let o of F3(e)) n(o) && t++;
|
|
1653
1653
|
return t;
|
|
1654
1654
|
}
|
|
1655
|
-
function tt2(
|
|
1655
|
+
function tt2(e, n) {
|
|
1656
1656
|
let t = 0;
|
|
1657
|
-
for (let o of $2(
|
|
1657
|
+
for (let o of $2(e)) n(o) && t++;
|
|
1658
1658
|
return t;
|
|
1659
1659
|
}
|
|
1660
|
-
function rt3(
|
|
1661
|
-
let a4 = [], s = [], i = {}, C2 = {},
|
|
1660
|
+
function rt3(e, n, t, o, u2) {
|
|
1661
|
+
let a4 = [], s = [], i = {}, C2 = {}, R2 = new Set(e), m = (r) => n.map((l) => l[r]);
|
|
1662
1662
|
for (let r of ["city", "country"]) {
|
|
1663
1663
|
let l = t?.[r];
|
|
1664
|
-
l &&
|
|
1664
|
+
l && R2.has(l) && (i[r] = l);
|
|
1665
1665
|
}
|
|
1666
|
-
let ie = new Set(u2 ??
|
|
1666
|
+
let ie = new Set(u2 ?? e);
|
|
1667
1667
|
for (let r of ["lat", "lon"]) {
|
|
1668
1668
|
let l = t?.[r];
|
|
1669
1669
|
l && ie.has(l) && (i[r] = l);
|
|
1670
1670
|
}
|
|
1671
1671
|
let h3 = t?.zip;
|
|
1672
|
-
if (h3 &&
|
|
1672
|
+
if (h3 && R2.has(h3)) {
|
|
1673
1673
|
let r = m(h3), l = W2(r);
|
|
1674
1674
|
l < 95 ? s.push(`zip=${h3} (only ${l}% of values read as ZIPs)`) : Z3(r, h3) ? i.zip = h3 : s.push(`zip=${h3} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1675
1675
|
}
|
|
1676
1676
|
let g3 = t?.state;
|
|
1677
|
-
if (g3 &&
|
|
1678
|
-
let r = m(g3), l =
|
|
1679
|
-
l.length > 0 && l.every((d2) => X3(d2, o)) ? s.push(`state=${g3} (every value is "CA", which is both Canada and California)`) : v3(r) ? (s.push(`state=${g3} (every value is a country, not a state)`), i.country || (i.country = g3)) :
|
|
1677
|
+
if (g3 && R2.has(g3)) {
|
|
1678
|
+
let r = m(g3), l = F3(r);
|
|
1679
|
+
l.length > 0 && l.every((d2) => X3(d2, o)) ? s.push(`state=${g3} (every value is "CA", which is both Canada and California)`) : v3(r) ? (s.push(`state=${g3} (every value is a country, not a state)`), i.country || (i.country = g3)) : k3(r) < 95 ? s.push(`state=${g3} (only ${k3(r)}% of values are states/provinces)`) : i.state = g3;
|
|
1680
1680
|
}
|
|
1681
|
-
let
|
|
1681
|
+
let b4 = new Set(Object.values(i).filter(Boolean)), w3 = e.filter((r) => !b4.has(r) && !r.startsWith("__"));
|
|
1682
1682
|
if (!i.state) {
|
|
1683
1683
|
let r = null;
|
|
1684
|
-
for (let l of
|
|
1684
|
+
for (let l of w3) {
|
|
1685
1685
|
let d2 = m(l);
|
|
1686
1686
|
if (v3(d2)) continue;
|
|
1687
|
-
let p2 =
|
|
1687
|
+
let p2 = k3(d2);
|
|
1688
1688
|
if (p2 < 95) continue;
|
|
1689
1689
|
let _2 = K3(d2, (T3) => !!Y(T3)), ae2 = K3(d2, (T3) => !!Y(T3) && !X3(T3, o));
|
|
1690
1690
|
_2 < V3 && ae2 < 1 || (!r || p2 > r.pct) && (r = { name: l, pct: p2 });
|
|
1691
1691
|
}
|
|
1692
|
-
r && (i.state = r.name,
|
|
1692
|
+
r && (i.state = r.name, b4.add(r.name), a4.push(`state=${r.name} (${r.pct}% states/provinces)`));
|
|
1693
1693
|
}
|
|
1694
|
-
if (!i.zip) for (let r of
|
|
1695
|
-
if (
|
|
1694
|
+
if (!i.zip) for (let r of w3) {
|
|
1695
|
+
if (b4.has(r)) continue;
|
|
1696
1696
|
let l = m(r), d2 = W2(l);
|
|
1697
1697
|
if (!(d2 < 95) && Z3(l, r) && !(tt2(l, (p2) => Z(p2).length > 0) < V3)) {
|
|
1698
|
-
i.zip = r,
|
|
1698
|
+
i.zip = r, b4.add(r), a4.push(`zip=${r} (${d2}% ZIP codes)`);
|
|
1699
1699
|
break;
|
|
1700
1700
|
}
|
|
1701
1701
|
}
|
|
1702
1702
|
let x2 = i.country;
|
|
1703
1703
|
if (!x2 || !v3(m(x2))) {
|
|
1704
1704
|
let r = null;
|
|
1705
|
-
for (let l of
|
|
1706
|
-
if (
|
|
1705
|
+
for (let l of w3) {
|
|
1706
|
+
if (b4.has(l) || !v3(m(l))) continue;
|
|
1707
1707
|
let d2 = B3(m(l));
|
|
1708
1708
|
(!r || d2 > r.pct) && (r = { name: l, pct: d2 });
|
|
1709
1709
|
}
|
|
1710
|
-
r && (x2 && (s.push(`country=${x2} (only ${B3(m(x2))}% of values are country identifiers; using ${r.name} instead)`), C2.country = x2), i.country = r.name,
|
|
1710
|
+
r && (x2 && (s.push(`country=${x2} (only ${B3(m(x2))}% of values are country identifiers; using ${r.name} instead)`), C2.country = x2), i.country = r.name, b4.add(r.name), a4.push(`country=${r.name}`));
|
|
1711
1711
|
}
|
|
1712
1712
|
if (!i.city) {
|
|
1713
1713
|
let r = null;
|
|
1714
|
-
for (let l of
|
|
1715
|
-
if (
|
|
1714
|
+
for (let l of w3) {
|
|
1715
|
+
if (b4.has(l)) continue;
|
|
1716
1716
|
let d2 = m(l), p2 = nt2(d2, o);
|
|
1717
1717
|
p2 < m3 || K3(d2, (_2) => p3(_2, o)) < V3 || (!r || p2 > r.pct) && (r = { name: l, pct: p2 });
|
|
1718
1718
|
}
|
|
1719
1719
|
r && (i.city = r.name, a4.push(`city=${r.name} (${r.pct}% known cities)`));
|
|
1720
1720
|
}
|
|
1721
|
-
let H3 = i.country ? m(i.country) : [], E4 = !!i.country && v3(H3), se = E4 ? new Set(H3.map((r) => E(r == null ? null : String(r))).filter(Boolean)).size : 0, U3 = E4 && se >= 2, O3 = !!(i.lat && i.lon) &&
|
|
1721
|
+
let H3 = i.country ? m(i.country) : [], E4 = !!i.country && v3(H3), se = E4 ? new Set(H3.map((r) => E(r == null ? null : String(r))).filter(Boolean)).size : 0, U3 = E4 && se >= 2, O3 = !!(i.lat && i.lon) && n.some((r) => {
|
|
1722
1722
|
let l = +String(r[i.lat] ?? "").trim(), d2 = +String(r[i.lon] ?? "").trim();
|
|
1723
1723
|
return isFinite(l) && isFinite(d2) && l >= -90 && l <= 90 && d2 >= -180 && d2 <= 180 && String(r[i.lat] ?? "").trim() !== "" && String(r[i.lon] ?? "").trim() !== "";
|
|
1724
1724
|
});
|
|
@@ -1832,20 +1832,20 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
|
|
|
1832
1832
|
a4[c2] = v4 ?? null;
|
|
1833
1833
|
}
|
|
1834
1834
|
}
|
|
1835
|
-
let
|
|
1836
|
-
a4[
|
|
1837
|
-
if (geoIso) a4[
|
|
1835
|
+
let k4 = cols.length;
|
|
1836
|
+
a4[k4++] = r;
|
|
1837
|
+
if (geoIso) a4[k4++] = geoIso[r];
|
|
1838
1838
|
if (pLat && pLon) {
|
|
1839
|
-
a4[
|
|
1840
|
-
a4[
|
|
1841
|
-
a4[
|
|
1839
|
+
a4[k4++] = pLat[r];
|
|
1840
|
+
a4[k4++] = pLon[r];
|
|
1841
|
+
a4[k4++] = pPrec ? pPrec[r] : null;
|
|
1842
1842
|
}
|
|
1843
1843
|
if (dLat && dLon) {
|
|
1844
|
-
a4[
|
|
1845
|
-
a4[
|
|
1846
|
-
a4[
|
|
1844
|
+
a4[k4++] = dLat[r];
|
|
1845
|
+
a4[k4++] = dLon[r];
|
|
1846
|
+
a4[k4++] = dPrec ? dPrec[r] : null;
|
|
1847
1847
|
}
|
|
1848
|
-
for (const ac of aliasCols) a4[
|
|
1848
|
+
for (const ac of aliasCols) a4[k4++] = a4[ac.from];
|
|
1849
1849
|
out[r] = a4;
|
|
1850
1850
|
}
|
|
1851
1851
|
const colsOut = [...cols, { name: "__rowIdx__", dataType: "Integer", isMeasure: false, modelDesc: "" }];
|
|
@@ -2049,14 +2049,14 @@ function createMarkResolver(env) {
|
|
|
2049
2049
|
return s === "transparent" || s === "none" || so <= 0.01;
|
|
2050
2050
|
};
|
|
2051
2051
|
const distToPathCenterline = (el, x2, y5) => {
|
|
2052
|
-
const
|
|
2053
|
-
if (!(
|
|
2052
|
+
const L2 = el.getTotalLength();
|
|
2053
|
+
if (!(L2 > 0)) return Number.MAX_VALUE;
|
|
2054
2054
|
const m = el.getScreenCTM();
|
|
2055
2055
|
if (!m) return Number.MAX_VALUE;
|
|
2056
2056
|
let best = Number.MAX_VALUE;
|
|
2057
|
-
const
|
|
2058
|
-
for (let i = 0; i <=
|
|
2059
|
-
const pt2 = el.getPointAtLength(
|
|
2057
|
+
const N3 = 64;
|
|
2058
|
+
for (let i = 0; i <= N3; i++) {
|
|
2059
|
+
const pt2 = el.getPointAtLength(L2 * i / N3);
|
|
2060
2060
|
const dx = m.a * pt2.x + m.c * pt2.y + m.e - x2;
|
|
2061
2061
|
const dy = m.b * pt2.x + m.d * pt2.y + m.f - y5;
|
|
2062
2062
|
const d2 = dx * dx + dy * dy;
|
|
@@ -2441,10 +2441,10 @@ function censusValuePlacement(container, data) {
|
|
|
2441
2441
|
for (const axis of ["x", "y"]) {
|
|
2442
2442
|
const keep = [];
|
|
2443
2443
|
const v4 = [], pos = [];
|
|
2444
|
-
dots.forEach((d2,
|
|
2445
|
-
if (!Number.isFinite(vals[
|
|
2446
|
-
keep.push(
|
|
2447
|
-
v4.push(log ? Math.log10(vals[
|
|
2444
|
+
dots.forEach((d2, k4) => {
|
|
2445
|
+
if (!Number.isFinite(vals[k4])) return;
|
|
2446
|
+
keep.push(k4);
|
|
2447
|
+
v4.push(log ? Math.log10(vals[k4]) : vals[k4]);
|
|
2448
2448
|
pos.push(axis === "x" ? d2.x : d2.y);
|
|
2449
2449
|
});
|
|
2450
2450
|
const line = robustLine(v4, pos);
|
|
@@ -2453,8 +2453,8 @@ function censusValuePlacement(container, data) {
|
|
|
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
|
-
const res = pos.map((p2,
|
|
2457
|
-
const e = p2 - (line.a + line.b * v4[
|
|
2456
|
+
const res = pos.map((p2, k4) => {
|
|
2457
|
+
const e = p2 - (line.a + line.b * v4[k4]);
|
|
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((
|
|
2467
|
-
full[
|
|
2466
|
+
keep.forEach((k4, j3) => {
|
|
2467
|
+
full[k4] = res[j3];
|
|
2468
2468
|
});
|
|
2469
2469
|
best = { col: c2, axis, fit, res: full, log };
|
|
2470
2470
|
}
|
|
@@ -2474,8 +2474,8 @@ function censusValuePlacement(container, data) {
|
|
|
2474
2474
|
if (!best) return EMPTY4;
|
|
2475
2475
|
let off = 0, measured = 0;
|
|
2476
2476
|
const radii = [];
|
|
2477
|
-
dots.forEach((d2,
|
|
2478
|
-
const e = best.res[
|
|
2477
|
+
dots.forEach((d2, k4) => {
|
|
2478
|
+
const e = best.res[k4];
|
|
2479
2479
|
if (!Number.isFinite(e)) return;
|
|
2480
2480
|
measured++;
|
|
2481
2481
|
const inRadii = Math.abs(e) / Math.max(d2.r, 1);
|
|
@@ -3050,8 +3050,8 @@ var NAMED = {
|
|
|
3050
3050
|
};
|
|
3051
3051
|
function toRGBA(c2) {
|
|
3052
3052
|
if (typeof c2 !== "string") return null;
|
|
3053
|
-
const
|
|
3054
|
-
if (
|
|
3053
|
+
const k4 = c2.trim().toLowerCase();
|
|
3054
|
+
if (k4 in NAMED) return NAMED[k4];
|
|
3055
3055
|
return parseRGBA(c2);
|
|
3056
3056
|
}
|
|
3057
3057
|
function compositeOver(fg, bg) {
|
|
@@ -3101,12 +3101,12 @@ var GLYPH_SAMPLE_N = 3;
|
|
|
3101
3101
|
function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
3102
3102
|
const out = [];
|
|
3103
3103
|
if (!box || !(box.width > 0) || !(box.height > 0) || !(n >= 1)) return out;
|
|
3104
|
-
const
|
|
3105
|
-
for (let i = 0; i <
|
|
3106
|
-
for (let j3 = 0; j3 <
|
|
3104
|
+
const k4 = Math.floor(n);
|
|
3105
|
+
for (let i = 0; i < k4; i++) {
|
|
3106
|
+
for (let j3 = 0; j3 < k4; j3++) {
|
|
3107
3107
|
out.push({
|
|
3108
|
-
x: box.left + box.width * (i + 0.5) /
|
|
3109
|
-
y: box.top + box.height * (j3 + 0.5) /
|
|
3108
|
+
x: box.left + box.width * (i + 0.5) / k4,
|
|
3109
|
+
y: box.top + box.height * (j3 + 0.5) / k4
|
|
3110
3110
|
});
|
|
3111
3111
|
}
|
|
3112
3112
|
}
|
|
@@ -3321,7 +3321,7 @@ function sessionViewStateProvider(container) {
|
|
|
3321
3321
|
load: () => store,
|
|
3322
3322
|
save: (next) => {
|
|
3323
3323
|
if (!next || typeof next !== "object") return;
|
|
3324
|
-
for (const
|
|
3324
|
+
for (const k4 of Object.keys(store)) delete store[k4];
|
|
3325
3325
|
Object.assign(store, next);
|
|
3326
3326
|
}
|
|
3327
3327
|
};
|
|
@@ -3850,10 +3850,10 @@ function toSourceRows(rowMap, payloadRowIdxs) {
|
|
|
3850
3850
|
}
|
|
3851
3851
|
function toPayloadRows(rowMap, sourceRowIdxs) {
|
|
3852
3852
|
const at3 = /* @__PURE__ */ new Map();
|
|
3853
|
-
rowMap.forEach((src,
|
|
3854
|
-
if (!at3.has(src)) at3.set(src,
|
|
3853
|
+
rowMap.forEach((src, k4) => {
|
|
3854
|
+
if (!at3.has(src)) at3.set(src, k4);
|
|
3855
3855
|
});
|
|
3856
|
-
return sourceRowIdxs.map((s) => at3.get(s)).filter((
|
|
3856
|
+
return sourceRowIdxs.map((s) => at3.get(s)).filter((k4) => k4 !== void 0);
|
|
3857
3857
|
}
|
|
3858
3858
|
var sameRows = (a4, b4) => {
|
|
3859
3859
|
if (a4.length !== b4.length) return false;
|
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.21",
|
|
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",
|