@bicharts/chart-host 0.6.0 → 0.6.1
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-DTAYO46G.mjs → chunk-RO6O22YG.mjs} +151 -151
- package/dist/index.mjs +1 -1
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -23,7 +23,7 @@ var require_papaparse_min = __commonJS({
|
|
|
23
23
|
})(exports, function r() {
|
|
24
24
|
var n = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : {};
|
|
25
25
|
var d2, s = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {}, h3 = 0, v2 = {};
|
|
26
|
-
function
|
|
26
|
+
function P4(e) {
|
|
27
27
|
return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
|
|
28
28
|
}
|
|
29
29
|
function u2(e) {
|
|
@@ -146,7 +146,7 @@ var require_papaparse_min = __commonJS({
|
|
|
146
146
|
return !y6(e4);
|
|
147
147
|
})), _3()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
149
|
-
e4 =
|
|
149
|
+
e4 = P4(e4), q4(m4.transformHeader) && (e4 = m4.transformHeader(e4, t5)), c4.push(e4);
|
|
150
150
|
};
|
|
151
151
|
var t2 = t4;
|
|
152
152
|
if (p4) if (Array.isArray(p4.data[0])) {
|
|
@@ -211,55 +211,55 @@ var require_papaparse_min = __commonJS({
|
|
|
211
211
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
212
212
|
}
|
|
213
213
|
function E4(C) {
|
|
214
|
-
var
|
|
215
|
-
if (void 0 !== C.escapeChar && (j3 = C.escapeChar), ("string" != typeof
|
|
214
|
+
var S = (C = C || {}).delimiter, O3 = C.newline, x4 = C.comments, I2 = C.step, A = C.preview, T3 = C.fastMode, D3 = null, L2 = false, F4 = null == C.quoteChar ? '"' : C.quoteChar, j3 = F4;
|
|
215
|
+
if (void 0 !== C.escapeChar && (j3 = C.escapeChar), ("string" != typeof S || -1 < v2.BAD_DELIMITERS.indexOf(S)) && (S = ","), x4 === S) throw new Error("Comment character same as delimiter");
|
|
216
216
|
true === x4 ? x4 = "#" : ("string" != typeof x4 || -1 < v2.BAD_DELIMITERS.indexOf(x4)) && (x4 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
|
|
217
217
|
var z3 = 0, M2 = false;
|
|
218
218
|
this.parse = function(i2, t, r2) {
|
|
219
219
|
if ("string" != typeof i2) throw new Error("Input must be a string");
|
|
220
|
-
var n2 = i2.length, e =
|
|
221
|
-
if (!i2) return
|
|
220
|
+
var n2 = i2.length, e = S.length, s2 = O3.length, a5 = x4.length, o2 = q4(I2), h4 = [], u4 = [], d3 = [], f5 = z3 = 0;
|
|
221
|
+
if (!i2) return w3();
|
|
222
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], z3 += d3.length, c4 !== l2.length - 1) z3 += O3.length;
|
|
225
|
-
else if (r2) return
|
|
225
|
+
else if (r2) return w3();
|
|
226
226
|
if (!x4 || d3.substring(0, a5) !== x4) {
|
|
227
227
|
if (o2) {
|
|
228
|
-
if (h4 = [], k2(d3.split(
|
|
229
|
-
} else k2(d3.split(
|
|
230
|
-
if (A && A <= c4) return h4 = h4.slice(0, A),
|
|
228
|
+
if (h4 = [], k2(d3.split(S)), R2(), M2) return w3();
|
|
229
|
+
} else k2(d3.split(S));
|
|
230
|
+
if (A && A <= c4) return h4 = h4.slice(0, A), w3(true);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
return
|
|
233
|
+
return w3();
|
|
234
234
|
}
|
|
235
|
-
for (var p4 = i2.indexOf(
|
|
235
|
+
for (var p4 = i2.indexOf(S, z3), g4 = i2.indexOf(O3, z3), _3 = new RegExp(U2(j3) + U2(F4), "g"), m4 = i2.indexOf(F4, z3); ; ) if (i2[z3] === F4) for (m4 = z3, z3++; ; ) {
|
|
236
236
|
if (-1 === (m4 = i2.indexOf(F4, m4 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z3 }), E5();
|
|
237
237
|
if (m4 === n2 - 1) return E5(i2.substring(z3, m4).replace(_3, F4));
|
|
238
238
|
if (F4 === j3 && i2[m4 + 1] === j3) m4++;
|
|
239
239
|
else if (F4 === j3 || 0 === m4 || i2[m4 - 1] !== j3) {
|
|
240
|
-
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(
|
|
240
|
+
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S, m4 + 1));
|
|
241
241
|
var y6 = v3(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O3, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
|
|
242
|
-
if (i2.substr(m4 + 1 + y6, e) ===
|
|
243
|
-
d3.push(i2.substring(z3, m4).replace(_3, F4)), i2[z3 = m4 + 1 + y6 + e] !== F4 && (m4 = i2.indexOf(F4, z3)), p4 = i2.indexOf(
|
|
242
|
+
if (i2.substr(m4 + 1 + y6, e) === S) {
|
|
243
|
+
d3.push(i2.substring(z3, m4).replace(_3, F4)), i2[z3 = m4 + 1 + y6 + e] !== F4 && (m4 = i2.indexOf(F4, z3)), p4 = i2.indexOf(S, z3), g4 = i2.indexOf(O3, z3);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
246
|
y6 = v3(g4);
|
|
247
247
|
if (i2.substring(m4 + 1 + y6, m4 + 1 + y6 + s2) === O3) {
|
|
248
|
-
if (d3.push(i2.substring(z3, m4).replace(_3, F4)), b5(m4 + 1 + y6 + s2), p4 = i2.indexOf(
|
|
249
|
-
if (A && h4.length >= A) return
|
|
248
|
+
if (d3.push(i2.substring(z3, m4).replace(_3, F4)), b5(m4 + 1 + y6 + s2), p4 = i2.indexOf(S, z3), m4 = i2.indexOf(F4, z3), o2 && (R2(), M2)) return w3();
|
|
249
|
+
if (A && h4.length >= A) return w3(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
252
252
|
u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h4.length, index: z3 }), m4++;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
else if (x4 && 0 === d3.length && i2.substring(z3, z3 + a5) === x4) {
|
|
256
|
-
if (-1 === g4) return
|
|
257
|
-
z3 = g4 + s2, g4 = i2.indexOf(O3, z3), p4 = i2.indexOf(
|
|
258
|
-
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z3, p4)), z3 = p4 + e, p4 = i2.indexOf(
|
|
256
|
+
if (-1 === g4) return w3();
|
|
257
|
+
z3 = g4 + s2, g4 = i2.indexOf(O3, z3), p4 = i2.indexOf(S, z3);
|
|
258
|
+
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z3, p4)), z3 = p4 + e, p4 = i2.indexOf(S, z3);
|
|
259
259
|
else {
|
|
260
260
|
if (-1 === g4) break;
|
|
261
|
-
if (d3.push(i2.substring(z3, g4)), b5(g4 + s2), o2 && (R2(), M2)) return
|
|
262
|
-
if (A && h4.length >= A) return
|
|
261
|
+
if (d3.push(i2.substring(z3, g4)), b5(g4 + s2), o2 && (R2(), M2)) return w3();
|
|
262
|
+
if (A && h4.length >= A) return w3(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
265
265
|
function k2(e2) {
|
|
@@ -270,30 +270,30 @@ var require_papaparse_min = __commonJS({
|
|
|
270
270
|
return t2 = -1 !== e2 && (e2 = i2.substring(m4 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
272
272
|
function E5(e2) {
|
|
273
|
-
return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d3.push(e2), z3 = n2, k2(d3), o2 && R2()),
|
|
273
|
+
return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d3.push(e2), z3 = n2, k2(d3), o2 && R2()), w3();
|
|
274
274
|
}
|
|
275
275
|
function b5(e2) {
|
|
276
276
|
z3 = e2, k2(d3), d3 = [], g4 = i2.indexOf(O3, z3);
|
|
277
277
|
}
|
|
278
|
-
function
|
|
278
|
+
function w3(e2) {
|
|
279
279
|
if (C.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++) {
|
|
283
|
-
let i4 =
|
|
283
|
+
let i4 = P4(s4[r4]);
|
|
284
284
|
if (a6[i4 = q4(C.transformHeader) ? C.transformHeader(i4, r4) : i4]) {
|
|
285
285
|
let e4, t2 = a6[i4];
|
|
286
286
|
for (; e4 = i4 + "_" + t2, t2++, o4.has(e4); ) ;
|
|
287
|
-
o4.add(e4), s4[r4] = e4, a6[i4]++, n4 = true, (
|
|
287
|
+
o4.add(e4), s4[r4] = e4, a6[i4]++, n4 = true, (D3 = null === D3 ? {} : D3)[e4] = i4;
|
|
288
288
|
} else a6[i4] = 1, s4[r4] = i4;
|
|
289
289
|
o4.add(i4);
|
|
290
290
|
}
|
|
291
291
|
n4 && console.warn("Duplicate headers found and renamed."), L2 = true;
|
|
292
292
|
}
|
|
293
|
-
return { data: h4, errors: u4, meta: { delimiter:
|
|
293
|
+
return { data: h4, errors: u4, meta: { delimiter: S, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D3 } };
|
|
294
294
|
}
|
|
295
295
|
function R2() {
|
|
296
|
-
I2(
|
|
296
|
+
I2(w3()), h4 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
299
|
M2 = true;
|
|
@@ -339,7 +339,7 @@ var require_papaparse_min = __commonJS({
|
|
|
339
339
|
return v2.parse = function(e, t) {
|
|
340
340
|
var i2 = (t = t || {}).dynamicTyping || false;
|
|
341
341
|
q4(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
342
|
-
if (t.dynamicTyping = i2, t.transform = !!q4(t.transform) && t.transform, !t.worker || !v2.WORKERS_SUPPORTED) return i2 = null, v2.NODE_STREAM_INPUT, "string" == typeof e ? (e =
|
|
342
|
+
if (t.dynamicTyping = i2, t.transform = !!q4(t.transform) && t.transform, !t.worker || !v2.WORKERS_SUPPORTED) return i2 = null, v2.NODE_STREAM_INPUT, "string" == typeof e ? (e = P4(e), i2 = new (t.download ? f4 : c2)(t)) : true === e.readable && q4(e.read) && q4(e.on) ? i2 = new p2(t) : (n.File && e instanceof File || e instanceof Object) && (i2 = new l(t)), i2.stream(e);
|
|
343
343
|
(i2 = (() => {
|
|
344
344
|
var e2;
|
|
345
345
|
return !!v2.WORKERS_SUPPORTED && (e2 = (() => {
|
|
@@ -507,11 +507,11 @@ function f(t) {
|
|
|
507
507
|
return t > EPS ? Math.cbrt(t) : (KAPPA * t + 16) / 116;
|
|
508
508
|
}
|
|
509
509
|
function rgbToLab(r, g3, b4) {
|
|
510
|
-
const R2 = linearise(r),
|
|
511
|
-
const X2 = 0.4124564 * R2 + 0.3575761 *
|
|
512
|
-
const Y2 = 0.2126729 * R2 + 0.7151522 *
|
|
513
|
-
const
|
|
514
|
-
const fx = f(X2 / Xn), fy = f(Y2 / Yn), fz = f(
|
|
510
|
+
const R2 = linearise(r), G2 = linearise(g3), B2 = linearise(b4);
|
|
511
|
+
const X2 = 0.4124564 * R2 + 0.3575761 * G2 + 0.1804375 * B2;
|
|
512
|
+
const Y2 = 0.2126729 * R2 + 0.7151522 * G2 + 0.072175 * B2;
|
|
513
|
+
const Z3 = 0.0193339 * R2 + 0.119192 * G2 + 0.9503041 * B2;
|
|
514
|
+
const fx = f(X2 / Xn), fy = f(Y2 / Yn), fz = f(Z3 / Zn);
|
|
515
515
|
return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
|
|
516
516
|
}
|
|
517
517
|
function hexToLab(hex2) {
|
|
@@ -527,8 +527,8 @@ function deltaE2000(c1, c2) {
|
|
|
527
527
|
const C1 = Math.hypot(c1.a, c1.b), C2 = Math.hypot(c2.a, c2.b);
|
|
528
528
|
const Cbar = (C1 + C2) / 2;
|
|
529
529
|
const C7 = Math.pow(Cbar, 7);
|
|
530
|
-
const
|
|
531
|
-
const a1p = (1 +
|
|
530
|
+
const G2 = 0.5 * (1 - Math.sqrt(C7 / (C7 + Math.pow(25, 7))));
|
|
531
|
+
const a1p = (1 + G2) * c1.a, a2p = (1 + G2) * c2.a;
|
|
532
532
|
const C1p = Math.hypot(a1p, c1.b), C2p = Math.hypot(a2p, c2.b);
|
|
533
533
|
const neutral = C1p < NEUTRAL_CHROMA || C2p < NEUTRAL_CHROMA;
|
|
534
534
|
const h1p = C1p < NEUTRAL_CHROMA ? 0 : (Math.atan2(c1.b, a1p) * DEG + 360) % 360;
|
|
@@ -568,11 +568,11 @@ function labToHex(lab) {
|
|
|
568
568
|
const fy = (lab.L + 16) / 116, fx = fy + lab.a / 500, fz = fy - lab.b / 200;
|
|
569
569
|
const X2 = Xn * finv(fx);
|
|
570
570
|
const Y2 = Yn * (lab.L > KAPPA * EPS ? fy * fy * fy : lab.L / KAPPA);
|
|
571
|
-
const
|
|
571
|
+
const Z3 = Zn * finv(fz);
|
|
572
572
|
const lin = [
|
|
573
|
-
3.2404542 * X2 - 1.5371385 * Y2 - 0.4985314 *
|
|
574
|
-
-0.969266 * X2 + 1.8760108 * Y2 + 0.041556 *
|
|
575
|
-
0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 *
|
|
573
|
+
3.2404542 * X2 - 1.5371385 * Y2 - 0.4985314 * Z3,
|
|
574
|
+
-0.969266 * X2 + 1.8760108 * Y2 + 0.041556 * Z3,
|
|
575
|
+
0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 * Z3
|
|
576
576
|
];
|
|
577
577
|
return "#" + lin.map((v2) => {
|
|
578
578
|
const c2 = Math.max(0, Math.min(1, v2));
|
|
@@ -1237,20 +1237,20 @@ function A3(n) {
|
|
|
1237
1237
|
if (r && i && c3(r) !== i && (r = null), n.city !== void 0 && n.city !== null) {
|
|
1238
1238
|
let a4 = u(String(n.city)), s = O(a4), f4 = s ? F(s, n.mapKind) : null;
|
|
1239
1239
|
if (f4 && f4.length) {
|
|
1240
|
-
let d2 = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R2 = d2 ? u(d2) : "", g3 = d2 ? Y(d2) : null,
|
|
1240
|
+
let d2 = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R2 = d2 ? u(d2) : "", g3 = d2 ? Y(d2) : null, S = [], m2 = -1;
|
|
1241
1241
|
for (let c2 of f4) {
|
|
1242
1242
|
let l = c2.row, A = 0;
|
|
1243
1243
|
if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2) A++;
|
|
1244
1244
|
else continue;
|
|
1245
1245
|
if (i) if (T(l.cc) === i) A++;
|
|
1246
1246
|
else continue;
|
|
1247
|
-
A > m2 ? (m2 = A,
|
|
1247
|
+
A > m2 ? (m2 = A, S = [c2]) : A === m2 && S.push(c2);
|
|
1248
1248
|
}
|
|
1249
|
-
|
|
1249
|
+
S.some((c2) => c2.primary) && (S = S.filter((c2) => c2.primary));
|
|
1250
1250
|
let p2 = /* @__PURE__ */ new Map();
|
|
1251
|
-
for (let c2 of
|
|
1251
|
+
for (let c2 of S) p2.set(c2.row.lon.toFixed(2) + "," + c2.row.lat.toFixed(2), c2.row);
|
|
1252
1252
|
if (p2.size === 1) {
|
|
1253
|
-
let c2 =
|
|
1253
|
+
let c2 = S[0].row;
|
|
1254
1254
|
return { lat: c2.lat, lon: c2.lon, precision: "city" };
|
|
1255
1255
|
}
|
|
1256
1256
|
if (p2.size > 1) return { ambiguous: true, matches: p2.size };
|
|
@@ -1273,7 +1273,7 @@ function A3(n) {
|
|
|
1273
1273
|
var G = { latlon: 0, city: 1, zip3: 2, state: 3, country: 4 };
|
|
1274
1274
|
var x = 8;
|
|
1275
1275
|
function y3(n, e) {
|
|
1276
|
-
let t = new Array(n.length), o = new Array(n.length), i = new Array(n.length), r = /* @__PURE__ */ new Set(), a4 = [], s = /* @__PURE__ */ new Set(), f4 = [], d2 = /* @__PURE__ */ new Set(), R2 = [], g3 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 },
|
|
1276
|
+
let t = new Array(n.length), o = new Array(n.length), i = new Array(n.length), r = /* @__PURE__ */ new Set(), a4 = [], s = /* @__PURE__ */ new Set(), f4 = [], d2 = /* @__PURE__ */ new Set(), R2 = [], g3 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 }, S = 0, m2 = 0, p2 = null;
|
|
1277
1277
|
for (let l = 0; l < n.length; ++l) {
|
|
1278
1278
|
let A = n[l], C = A3({ ...A, mapKind: e });
|
|
1279
1279
|
if (S3(C)) {
|
|
@@ -1281,7 +1281,7 @@ function y3(n, e) {
|
|
|
1281
1281
|
let M2 = K(A);
|
|
1282
1282
|
M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
|
|
1283
1283
|
} else if (C) {
|
|
1284
|
-
if (t[l] = C.lat, o[l] = C.lon, i[l] = C.precision,
|
|
1284
|
+
if (t[l] = C.lat, o[l] = C.lon, i[l] = C.precision, S++, g3[C.precision]++, (p2 === null || G[C.precision] > G[p2]) && (p2 = C.precision), G[C.precision] > G.city) {
|
|
1285
1285
|
let M2 = K(A);
|
|
1286
1286
|
M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
|
|
1287
1287
|
}
|
|
@@ -1292,7 +1292,7 @@ function y3(n, e) {
|
|
|
1292
1292
|
}
|
|
1293
1293
|
}
|
|
1294
1294
|
let c2 = !n3() && n.some((l) => l.city !== null && l.city !== void 0 && String(l.city).trim() !== "");
|
|
1295
|
-
return { lat: t, lon: o, precisions: i, precision: p2, precisionCounts: g3, coarseExamples: f4, unmatched: a4, ambiguousRows: m2, ambiguousExamples: R2, matchedRows:
|
|
1295
|
+
return { lat: t, lon: o, precisions: i, precision: p2, precisionCounts: g3, coarseExamples: f4, unmatched: a4, ambiguousRows: m2, ambiguousExamples: R2, matchedRows: S, totalRows: n.length, ...c2 ? { cityTableMissing: true } : {} };
|
|
1296
1296
|
}
|
|
1297
1297
|
function K(n) {
|
|
1298
1298
|
let e = [n.city, n.state, n.zip, n.country].filter((t) => t != null && String(t).trim() !== "").map((t) => String(t).trim()).join(", ");
|
|
@@ -1558,147 +1558,147 @@ var ct2 = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, Strin
|
|
|
1558
1558
|
|
|
1559
1559
|
// ../shape-core/dist/index.mjs
|
|
1560
1560
|
/*! @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. */
|
|
1561
|
-
var
|
|
1562
|
-
var
|
|
1563
|
-
function
|
|
1564
|
-
return !!E(
|
|
1565
|
-
}
|
|
1566
|
-
function
|
|
1567
|
-
let
|
|
1568
|
-
for (let t of
|
|
1561
|
+
var E2 = 2;
|
|
1562
|
+
var Z2 = 400;
|
|
1563
|
+
function O2(o) {
|
|
1564
|
+
return !!E(o);
|
|
1565
|
+
}
|
|
1566
|
+
function P2(o) {
|
|
1567
|
+
let e = /* @__PURE__ */ new Set();
|
|
1568
|
+
for (let t of o) {
|
|
1569
1569
|
if (t == null) continue;
|
|
1570
|
-
let
|
|
1571
|
-
if (!V(
|
|
1570
|
+
let i = u(String(t));
|
|
1571
|
+
if (!V(i) && !e.has(i) && (e.add(i), e.size >= Z2)) break;
|
|
1572
1572
|
}
|
|
1573
|
-
return Array.from(
|
|
1573
|
+
return Array.from(e);
|
|
1574
1574
|
}
|
|
1575
|
-
function x3(
|
|
1576
|
-
let
|
|
1577
|
-
if (
|
|
1578
|
-
let t =
|
|
1579
|
-
return t >= 1 && t >=
|
|
1575
|
+
function x3(o) {
|
|
1576
|
+
let e = P2(o);
|
|
1577
|
+
if (e.length === 0 || z2(o) < 95) return false;
|
|
1578
|
+
let t = e.filter((c2) => O2(c2) && !Y(c2)).length, i = e.filter((c2) => !O2(c2) && !!Y(c2)).length;
|
|
1579
|
+
return t >= 1 && t >= i;
|
|
1580
1580
|
}
|
|
1581
|
-
function
|
|
1582
|
-
if (!Y(
|
|
1583
|
-
let t = E(
|
|
1584
|
-
return t ?
|
|
1581
|
+
function j2(o, e) {
|
|
1582
|
+
if (!Y(o)) return false;
|
|
1583
|
+
let t = E(o);
|
|
1584
|
+
return t ? e === "world" ? true : s3.has(t) : false;
|
|
1585
1585
|
}
|
|
1586
|
-
function
|
|
1587
|
-
let
|
|
1588
|
-
if (
|
|
1586
|
+
function z2(o) {
|
|
1587
|
+
let e = P2(o);
|
|
1588
|
+
if (e.length === 0) return 0;
|
|
1589
1589
|
let t = 0;
|
|
1590
|
-
for (let
|
|
1591
|
-
return Math.round(t /
|
|
1590
|
+
for (let i of e) O2(i) && t++;
|
|
1591
|
+
return Math.round(t / e.length * 1e3) / 10;
|
|
1592
1592
|
}
|
|
1593
|
-
function
|
|
1594
|
-
let
|
|
1595
|
-
if (
|
|
1593
|
+
function w2(o) {
|
|
1594
|
+
let e = P2(o);
|
|
1595
|
+
if (e.length === 0) return 0;
|
|
1596
1596
|
let t = 0;
|
|
1597
|
-
for (let
|
|
1598
|
-
return Math.round(t /
|
|
1597
|
+
for (let i of e) Y(i) && t++;
|
|
1598
|
+
return Math.round(t / e.length * 1e3) / 10;
|
|
1599
1599
|
}
|
|
1600
|
-
function
|
|
1601
|
-
let
|
|
1602
|
-
for (let t of
|
|
1600
|
+
function H2(o) {
|
|
1601
|
+
let e = /* @__PURE__ */ new Set();
|
|
1602
|
+
for (let t of o) {
|
|
1603
1603
|
if (t == null) continue;
|
|
1604
|
-
let
|
|
1605
|
-
if (!V(u(
|
|
1604
|
+
let i = String(t).trim();
|
|
1605
|
+
if (!V(u(i)) && !e.has(i) && (e.add(i), e.size >= Z2)) break;
|
|
1606
1606
|
}
|
|
1607
|
-
return Array.from(
|
|
1607
|
+
return Array.from(e);
|
|
1608
1608
|
}
|
|
1609
|
-
function
|
|
1610
|
-
let
|
|
1611
|
-
if (
|
|
1609
|
+
function $2(o) {
|
|
1610
|
+
let e = H2(o);
|
|
1611
|
+
if (e.length === 0) return 0;
|
|
1612
1612
|
let t = 0;
|
|
1613
|
-
for (let
|
|
1614
|
-
return Math.round(t /
|
|
1613
|
+
for (let i of e) Z(i).length > 0 && t++;
|
|
1614
|
+
return Math.round(t / e.length * 1e3) / 10;
|
|
1615
1615
|
}
|
|
1616
|
-
function
|
|
1617
|
-
return y2(
|
|
1616
|
+
function q3(o, e) {
|
|
1617
|
+
return y2(e, rt) ? true : H2(o).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
|
|
1618
1618
|
}
|
|
1619
|
-
function yt2(
|
|
1620
|
-
let t =
|
|
1619
|
+
function yt2(o, e) {
|
|
1620
|
+
let t = P2(o);
|
|
1621
1621
|
if (t.length === 0) return 0;
|
|
1622
|
-
let
|
|
1623
|
-
for (let c2 of t) p3(c2,
|
|
1624
|
-
return Math.round(
|
|
1622
|
+
let i = 0;
|
|
1623
|
+
for (let c2 of t) p3(c2, e) && i++;
|
|
1624
|
+
return Math.round(i / t.length * 1e3) / 10;
|
|
1625
1625
|
}
|
|
1626
|
-
function
|
|
1626
|
+
function F3(o, e) {
|
|
1627
1627
|
let t = 0;
|
|
1628
|
-
for (let
|
|
1628
|
+
for (let i of P2(o)) e(i) && t++;
|
|
1629
1629
|
return t;
|
|
1630
1630
|
}
|
|
1631
|
-
function Ct(
|
|
1631
|
+
function Ct(o, e) {
|
|
1632
1632
|
let t = 0;
|
|
1633
|
-
for (let
|
|
1633
|
+
for (let i of H2(o)) e(i) && t++;
|
|
1634
1634
|
return t;
|
|
1635
1635
|
}
|
|
1636
|
-
function ht(
|
|
1637
|
-
let
|
|
1638
|
-
for (let
|
|
1639
|
-
let s = t?.[
|
|
1640
|
-
s && h3.has(s) && (
|
|
1636
|
+
function ht(o, e, t, i, c2) {
|
|
1637
|
+
let u2 = [], a4 = [], r = {}, T3 = {}, h3 = new Set(o), f4 = (n) => e.map((s) => s[n]);
|
|
1638
|
+
for (let n of ["city", "country"]) {
|
|
1639
|
+
let s = t?.[n];
|
|
1640
|
+
s && h3.has(s) && (r[n] = s);
|
|
1641
1641
|
}
|
|
1642
|
-
let Y2 = new Set(c2 ??
|
|
1643
|
-
for (let
|
|
1644
|
-
let s = t?.[
|
|
1645
|
-
s && Y2.has(s) && (
|
|
1642
|
+
let Y2 = new Set(c2 ?? o);
|
|
1643
|
+
for (let n of ["lat", "lon"]) {
|
|
1644
|
+
let s = t?.[n];
|
|
1645
|
+
s && Y2.has(s) && (r[n] = s);
|
|
1646
1646
|
}
|
|
1647
1647
|
let g3 = t?.zip;
|
|
1648
1648
|
if (g3 && h3.has(g3)) {
|
|
1649
|
-
let
|
|
1650
|
-
s < 95 ? a4.push(`zip=${g3} (only ${s}% of values read as ZIPs)`) :
|
|
1649
|
+
let n = f4(g3), s = $2(n);
|
|
1650
|
+
s < 95 ? a4.push(`zip=${g3} (only ${s}% of values read as ZIPs)`) : q3(n, g3) ? r.zip = g3 : a4.push(`zip=${g3} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1651
1651
|
}
|
|
1652
1652
|
let p2 = t?.state;
|
|
1653
1653
|
if (p2 && h3.has(p2)) {
|
|
1654
|
-
let
|
|
1655
|
-
s.length > 0 && s.every((
|
|
1654
|
+
let n = f4(p2), s = P2(n);
|
|
1655
|
+
s.length > 0 && s.every((l) => j2(l, i)) ? a4.push(`state=${p2} (every value is "CA", which is both Canada and California)`) : x3(n) ? (a4.push(`state=${p2} (every value is a country, not a state)`), r.country || (r.country = p2)) : w2(n) < 95 ? a4.push(`state=${p2} (only ${w2(n)}% of values are states/provinces)`) : r.state = p2;
|
|
1656
1656
|
}
|
|
1657
|
-
let y5 = new Set(Object.values(
|
|
1658
|
-
if (!
|
|
1659
|
-
let
|
|
1657
|
+
let y5 = new Set(Object.values(r).filter(Boolean)), A = o.filter((n) => !y5.has(n) && !n.startsWith("__"));
|
|
1658
|
+
if (!r.state) {
|
|
1659
|
+
let n = null;
|
|
1660
1660
|
for (let s of A) {
|
|
1661
|
-
let
|
|
1662
|
-
if (x3(
|
|
1663
|
-
let m2 =
|
|
1661
|
+
let l = f4(s);
|
|
1662
|
+
if (x3(l)) continue;
|
|
1663
|
+
let m2 = w2(l);
|
|
1664
1664
|
if (m2 < 95) continue;
|
|
1665
|
-
let
|
|
1666
|
-
|
|
1665
|
+
let D3 = F3(l, (R2) => !!Y(R2)), ee = F3(l, (R2) => !!Y(R2) && !j2(R2, i));
|
|
1666
|
+
D3 < E2 && ee < 1 || (!n || m2 > n.pct) && (n = { name: s, pct: m2 });
|
|
1667
1667
|
}
|
|
1668
|
-
|
|
1668
|
+
n && (r.state = n.name, y5.add(n.name), u2.push(`state=${n.name} (${n.pct}% states/provinces)`));
|
|
1669
1669
|
}
|
|
1670
|
-
if (!
|
|
1671
|
-
if (y5.has(
|
|
1672
|
-
let s = f4(
|
|
1673
|
-
if (!(
|
|
1674
|
-
|
|
1670
|
+
if (!r.zip) for (let n of A) {
|
|
1671
|
+
if (y5.has(n)) continue;
|
|
1672
|
+
let s = f4(n), l = $2(s);
|
|
1673
|
+
if (!(l < 95) && q3(s, n) && !(Ct(s, (m2) => Z(m2).length > 0) < E2)) {
|
|
1674
|
+
r.zip = n, y5.add(n), u2.push(`zip=${n} (${l}% ZIP codes)`);
|
|
1675
1675
|
break;
|
|
1676
1676
|
}
|
|
1677
1677
|
}
|
|
1678
|
-
let
|
|
1679
|
-
if (!
|
|
1680
|
-
let
|
|
1678
|
+
let S = r.country;
|
|
1679
|
+
if (!S || !x3(f4(S))) {
|
|
1680
|
+
let n = null;
|
|
1681
1681
|
for (let s of A) {
|
|
1682
1682
|
if (y5.has(s) || !x3(f4(s))) continue;
|
|
1683
|
-
let
|
|
1684
|
-
(!
|
|
1683
|
+
let l = z2(f4(s));
|
|
1684
|
+
(!n || l > n.pct) && (n = { name: s, pct: l });
|
|
1685
1685
|
}
|
|
1686
|
-
|
|
1686
|
+
n && (S && (a4.push(`country=${S} (only ${z2(f4(S))}% of values are country identifiers; using ${n.name} instead)`), T3.country = S), r.country = n.name, y5.add(n.name), u2.push(`country=${n.name}`));
|
|
1687
1687
|
}
|
|
1688
|
-
if (!
|
|
1689
|
-
let
|
|
1688
|
+
if (!r.city) {
|
|
1689
|
+
let n = null;
|
|
1690
1690
|
for (let s of A) {
|
|
1691
1691
|
if (y5.has(s)) continue;
|
|
1692
|
-
let
|
|
1693
|
-
m2 < m3 ||
|
|
1692
|
+
let l = f4(s), m2 = yt2(l, i);
|
|
1693
|
+
m2 < m3 || F3(l, (D3) => p3(D3, i)) < E2 || (!n || m2 > n.pct) && (n = { name: s, pct: m2 });
|
|
1694
1694
|
}
|
|
1695
|
-
|
|
1695
|
+
n && (r.city = n.name, u2.push(`city=${n.name} (${n.pct}% known cities)`));
|
|
1696
1696
|
}
|
|
1697
|
-
let B2 =
|
|
1698
|
-
let s = +String(
|
|
1699
|
-
return isFinite(s) && isFinite(
|
|
1697
|
+
let B2 = r.country ? f4(r.country) : [], k2 = !!r.country && x3(B2), Q3 = k2 ? new Set(B2.map((n) => E(n == null ? null : String(n))).filter(Boolean)).size : 0, K3 = k2 && Q3 >= 2, _2 = !!(r.lat && r.lon) && e.some((n) => {
|
|
1698
|
+
let s = +String(n[r.lat] ?? "").trim(), l = +String(n[r.lon] ?? "").trim();
|
|
1699
|
+
return isFinite(s) && isFinite(l) && s >= -90 && s <= 90 && l >= -180 && l <= 180 && String(n[r.lat] ?? "").trim() !== "" && String(n[r.lon] ?? "").trim() !== "";
|
|
1700
1700
|
});
|
|
1701
|
-
return
|
|
1701
|
+
return r.lat && r.lon && !_2 && a4.push(`lat/lon=${r.lat}/${r.lon} (no row holds a usable coordinate pair)`), r.country && !K3 && !(r.city || r.state || r.zip || _2) && a4.push(k2 ? `country=${r.country} (every row resolves to the same country - nothing to place apart)` : `country=${r.country} (values are not country identifiers)`), { bind: !!(r.city || r.state || r.zip || K3 || _2) ? r : null, backfilled: u2, refused: a4, ...Object.keys(T3).length ? { labelFallback: T3 } : {} };
|
|
1702
1702
|
}
|
|
1703
1703
|
|
|
1704
1704
|
// src/payload.ts
|
|
@@ -2305,13 +2305,13 @@ function censusHitBands(container, doc) {
|
|
|
2305
2305
|
if (!OPEN_TAGS.has(tag)) continue;
|
|
2306
2306
|
const cs = styleOf2(el, ownerDoc);
|
|
2307
2307
|
const open = isUnfilled(attrOrComputed(el, "fill", cs));
|
|
2308
|
-
const
|
|
2308
|
+
const w3 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
|
|
2309
2309
|
const geom = String(el.getAttribute?.("d") ?? "") || `${tag}#${String(el.getAttribute?.(ROW_IDX_ATTR) ?? "")}`;
|
|
2310
2310
|
const inert = String(cs?.pointerEvents ?? el.style?.pointerEvents ?? "") === "none";
|
|
2311
|
-
rows.push({ el, geom, w:
|
|
2312
|
-
if (isFinite(
|
|
2311
|
+
rows.push({ el, geom, w: w3, open, inert });
|
|
2312
|
+
if (isFinite(w3)) {
|
|
2313
2313
|
const prev = widestByGeom.get(geom);
|
|
2314
|
-
if (prev === void 0 ||
|
|
2314
|
+
if (prev === void 0 || w3 > prev) widestByGeom.set(geom, w3);
|
|
2315
2315
|
}
|
|
2316
2316
|
}
|
|
2317
2317
|
const out = { ...EMPTY3 };
|
|
@@ -2482,12 +2482,12 @@ function contentExtentOf(boxes) {
|
|
|
2482
2482
|
if (usable.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2483
2483
|
const inFlow = usable.filter((b4) => !b4.floating);
|
|
2484
2484
|
const counted = inFlow.length > 0 ? inFlow : usable;
|
|
2485
|
-
let
|
|
2485
|
+
let w3 = 0, h3 = 0;
|
|
2486
2486
|
for (const b4 of counted) {
|
|
2487
|
-
if (b4.right >
|
|
2487
|
+
if (b4.right > w3) w3 = b4.right;
|
|
2488
2488
|
if (b4.bottom > h3) h3 = b4.bottom;
|
|
2489
2489
|
}
|
|
2490
|
-
return { w:
|
|
2490
|
+
return { w: w3, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
|
|
2491
2491
|
}
|
|
2492
2492
|
function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL_SLACK_PX) {
|
|
2493
2493
|
return {
|
|
@@ -2497,8 +2497,8 @@ function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL
|
|
|
2497
2497
|
}
|
|
2498
2498
|
var FIT_CONTENT_SELECTOR = "text, .d3-mark, .d3-legend-mark";
|
|
2499
2499
|
var PHANTOM_FRACTION = 0.95;
|
|
2500
|
-
function isPhantomBox(
|
|
2501
|
-
return
|
|
2500
|
+
function isPhantomBox(w3, h3, refW, refH) {
|
|
2501
|
+
return w3 > refW * PHANTOM_FRACTION || h3 > refH * PHANTOM_FRACTION;
|
|
2502
2502
|
}
|
|
2503
2503
|
var MAX_FRAME_GROW_FACTOR = 20;
|
|
2504
2504
|
function planFrameGrow(inkBottomPx, elHeightPx, viewBoxH, ctmScale, slackPx = SCROLL_SLACK_PX, maxFactor = MAX_FRAME_GROW_FACTOR) {
|
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.1",
|
|
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",
|