@bicharts/chart-host 0.6.2 → 0.6.3
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-HC2IREJL.mjs → chunk-BNVHRDDL.mjs} +190 -190
- package/dist/index.mjs +1 -1
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
216
|
-
true ===
|
|
214
|
+
var S2 = (C = C || {}).delimiter, O3 = C.newline, x3 = C.comments, I2 = C.step, A = C.preview, T3 = C.fastMode, D4 = null, L2 = false, F3 = null == C.quoteChar ? '"' : C.quoteChar, j3 = F3;
|
|
215
|
+
if (void 0 !== C.escapeChar && (j3 = C.escapeChar), ("string" != typeof S2 || -1 < v2.BAD_DELIMITERS.indexOf(S2)) && (S2 = ","), x3 === S2) throw new Error("Comment character same as delimiter");
|
|
216
|
+
true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v2.BAD_DELIMITERS.indexOf(x3)) && (x3 = 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
|
|
222
|
-
if (T3 || false !== T3 && -1 === i2.indexOf(
|
|
220
|
+
var n2 = i2.length, e = S2.length, s2 = O3.length, a5 = x3.length, o2 = q4(I2), h4 = [], u4 = [], d3 = [], f5 = z3 = 0;
|
|
221
|
+
if (!i2) return w2();
|
|
222
|
+
if (T3 || false !== T3 && -1 === i2.indexOf(F3)) {
|
|
223
223
|
for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
|
|
224
224
|
if (d3 = l2[c4], z3 += d3.length, c4 !== l2.length - 1) z3 += O3.length;
|
|
225
|
-
else if (r2) return
|
|
226
|
-
if (!
|
|
225
|
+
else if (r2) return w2();
|
|
226
|
+
if (!x3 || d3.substring(0, a5) !== x3) {
|
|
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(S2)), R2(), M2) return w2();
|
|
229
|
+
} else k2(d3.split(S2));
|
|
230
|
+
if (A && A <= c4) return h4 = h4.slice(0, A), w2(true);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
return
|
|
233
|
+
return w2();
|
|
234
234
|
}
|
|
235
|
-
for (var p4 = i2.indexOf(
|
|
236
|
-
if (-1 === (m4 = i2.indexOf(
|
|
237
|
-
if (m4 === n2 - 1) return E5(i2.substring(z3, m4).replace(_3,
|
|
238
|
-
if (
|
|
239
|
-
else if (
|
|
240
|
-
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(
|
|
235
|
+
for (var p4 = i2.indexOf(S2, z3), g4 = i2.indexOf(O3, z3), _3 = new RegExp(U2(j3) + U2(F3), "g"), m4 = i2.indexOf(F3, z3); ; ) if (i2[z3] === F3) for (m4 = z3, z3++; ; ) {
|
|
236
|
+
if (-1 === (m4 = i2.indexOf(F3, m4 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z3 }), E5();
|
|
237
|
+
if (m4 === n2 - 1) return E5(i2.substring(z3, m4).replace(_3, F3));
|
|
238
|
+
if (F3 === j3 && i2[m4 + 1] === j3) m4++;
|
|
239
|
+
else if (F3 === j3 || 0 === m4 || i2[m4 - 1] !== j3) {
|
|
240
|
+
-1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S2, 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,
|
|
242
|
+
if (i2.substr(m4 + 1 + y6, e) === S2) {
|
|
243
|
+
d3.push(i2.substring(z3, m4).replace(_3, F3)), i2[z3 = m4 + 1 + y6 + e] !== F3 && (m4 = i2.indexOf(F3, z3)), p4 = i2.indexOf(S2, 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,
|
|
249
|
-
if (A && h4.length >= A) return
|
|
248
|
+
if (d3.push(i2.substring(z3, m4).replace(_3, F3)), b5(m4 + 1 + y6 + s2), p4 = i2.indexOf(S2, z3), m4 = i2.indexOf(F3, z3), o2 && (R2(), M2)) return w2();
|
|
249
|
+
if (A && h4.length >= A) return w2(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
|
-
else if (
|
|
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(
|
|
255
|
+
else if (x3 && 0 === d3.length && i2.substring(z3, z3 + a5) === x3) {
|
|
256
|
+
if (-1 === g4) return w2();
|
|
257
|
+
z3 = g4 + s2, g4 = i2.indexOf(O3, z3), p4 = i2.indexOf(S2, z3);
|
|
258
|
+
} else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z3, p4)), z3 = p4 + e, p4 = i2.indexOf(S2, 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 w2();
|
|
262
|
+
if (A && h4.length >= A) return w2(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
265
265
|
function k2(e2) {
|
|
@@ -270,12 +270,12 @@ 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()), w2();
|
|
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 w2(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;
|
|
@@ -284,16 +284,16 @@ var require_papaparse_min = __commonJS({
|
|
|
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, (D4 = null === D4 ? {} : D4)[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: S2, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D4 } };
|
|
294
294
|
}
|
|
295
295
|
function R2() {
|
|
296
|
-
I2(
|
|
296
|
+
I2(w2()), h4 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
299
|
M2 = true;
|
|
@@ -508,11 +508,11 @@ function f(t) {
|
|
|
508
508
|
return t > EPS ? Math.cbrt(t) : (KAPPA * t + 16) / 116;
|
|
509
509
|
}
|
|
510
510
|
function rgbToLab(r, g3, b4) {
|
|
511
|
-
const R2 = linearise(r),
|
|
512
|
-
const X2 = 0.4124564 * R2 + 0.3575761 *
|
|
513
|
-
const Y2 = 0.2126729 * R2 + 0.7151522 *
|
|
514
|
-
const
|
|
515
|
-
const fx = f(X2 / Xn), fy = f(Y2 / Yn), fz = f(
|
|
511
|
+
const R2 = linearise(r), G3 = linearise(g3), B2 = linearise(b4);
|
|
512
|
+
const X2 = 0.4124564 * R2 + 0.3575761 * G3 + 0.1804375 * B2;
|
|
513
|
+
const Y2 = 0.2126729 * R2 + 0.7151522 * G3 + 0.072175 * B2;
|
|
514
|
+
const Z2 = 0.0193339 * R2 + 0.119192 * G3 + 0.9503041 * B2;
|
|
515
|
+
const fx = f(X2 / Xn), fy = f(Y2 / Yn), fz = f(Z2 / Zn);
|
|
516
516
|
return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
|
|
517
517
|
}
|
|
518
518
|
function hexToLab(hex2) {
|
|
@@ -528,8 +528,8 @@ function deltaE2000(c1, c2) {
|
|
|
528
528
|
const C1 = Math.hypot(c1.a, c1.b), C2 = Math.hypot(c2.a, c2.b);
|
|
529
529
|
const Cbar = (C1 + C2) / 2;
|
|
530
530
|
const C7 = Math.pow(Cbar, 7);
|
|
531
|
-
const
|
|
532
|
-
const a1p = (1 +
|
|
531
|
+
const G3 = 0.5 * (1 - Math.sqrt(C7 / (C7 + Math.pow(25, 7))));
|
|
532
|
+
const a1p = (1 + G3) * c1.a, a2p = (1 + G3) * c2.a;
|
|
533
533
|
const C1p = Math.hypot(a1p, c1.b), C2p = Math.hypot(a2p, c2.b);
|
|
534
534
|
const neutral = C1p < NEUTRAL_CHROMA || C2p < NEUTRAL_CHROMA;
|
|
535
535
|
const h1p = C1p < NEUTRAL_CHROMA ? 0 : (Math.atan2(c1.b, a1p) * DEG + 360) % 360;
|
|
@@ -569,11 +569,11 @@ function labToHex(lab) {
|
|
|
569
569
|
const fy = (lab.L + 16) / 116, fx = fy + lab.a / 500, fz = fy - lab.b / 200;
|
|
570
570
|
const X2 = Xn * finv(fx);
|
|
571
571
|
const Y2 = Yn * (lab.L > KAPPA * EPS ? fy * fy * fy : lab.L / KAPPA);
|
|
572
|
-
const
|
|
572
|
+
const Z2 = Zn * finv(fz);
|
|
573
573
|
const lin = [
|
|
574
|
-
3.2404542 * X2 - 1.5371385 * Y2 - 0.4985314 *
|
|
575
|
-
-0.969266 * X2 + 1.8760108 * Y2 + 0.041556 *
|
|
576
|
-
0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 *
|
|
574
|
+
3.2404542 * X2 - 1.5371385 * Y2 - 0.4985314 * Z2,
|
|
575
|
+
-0.969266 * X2 + 1.8760108 * Y2 + 0.041556 * Z2,
|
|
576
|
+
0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 * Z2
|
|
577
577
|
];
|
|
578
578
|
return "#" + lin.map((v2) => {
|
|
579
579
|
const c2 = Math.max(0, Math.min(1, v2));
|
|
@@ -1238,20 +1238,20 @@ function A3(n) {
|
|
|
1238
1238
|
if (r && i && c3(r) !== i && (r = null), n.city !== void 0 && n.city !== null) {
|
|
1239
1239
|
let a4 = u(String(n.city)), s = O(a4), f4 = s ? F(s, n.mapKind) : null;
|
|
1240
1240
|
if (f4 && f4.length) {
|
|
1241
|
-
let d2 = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R2 = d2 ? u(d2) : "", g3 = d2 ? Y(d2) : null,
|
|
1241
|
+
let d2 = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R2 = d2 ? u(d2) : "", g3 = d2 ? Y(d2) : null, S2 = [], m2 = -1;
|
|
1242
1242
|
for (let c2 of f4) {
|
|
1243
1243
|
let l = c2.row, A = 0;
|
|
1244
1244
|
if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2) A++;
|
|
1245
1245
|
else continue;
|
|
1246
1246
|
if (i) if (T(l.cc) === i) A++;
|
|
1247
1247
|
else continue;
|
|
1248
|
-
A > m2 ? (m2 = A,
|
|
1248
|
+
A > m2 ? (m2 = A, S2 = [c2]) : A === m2 && S2.push(c2);
|
|
1249
1249
|
}
|
|
1250
|
-
|
|
1250
|
+
S2.some((c2) => c2.primary) && (S2 = S2.filter((c2) => c2.primary));
|
|
1251
1251
|
let p2 = /* @__PURE__ */ new Map();
|
|
1252
|
-
for (let c2 of
|
|
1252
|
+
for (let c2 of S2) p2.set(c2.row.lon.toFixed(2) + "," + c2.row.lat.toFixed(2), c2.row);
|
|
1253
1253
|
if (p2.size === 1) {
|
|
1254
|
-
let c2 =
|
|
1254
|
+
let c2 = S2[0].row;
|
|
1255
1255
|
return { lat: c2.lat, lon: c2.lon, precision: "city" };
|
|
1256
1256
|
}
|
|
1257
1257
|
if (p2.size > 1) return { ambiguous: true, matches: p2.size };
|
|
@@ -1274,7 +1274,7 @@ function A3(n) {
|
|
|
1274
1274
|
var G = { latlon: 0, city: 1, zip3: 2, state: 3, country: 4 };
|
|
1275
1275
|
var x = 8;
|
|
1276
1276
|
function y3(n, e) {
|
|
1277
|
-
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 },
|
|
1277
|
+
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 }, S2 = 0, m2 = 0, p2 = null;
|
|
1278
1278
|
for (let l = 0; l < n.length; ++l) {
|
|
1279
1279
|
let A = n[l], C = A3({ ...A, mapKind: e });
|
|
1280
1280
|
if (S3(C)) {
|
|
@@ -1282,7 +1282,7 @@ function y3(n, e) {
|
|
|
1282
1282
|
let M2 = K(A);
|
|
1283
1283
|
M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
|
|
1284
1284
|
} else if (C) {
|
|
1285
|
-
if (t[l] = C.lat, o[l] = C.lon, i[l] = C.precision,
|
|
1285
|
+
if (t[l] = C.lat, o[l] = C.lon, i[l] = C.precision, S2++, g3[C.precision]++, (p2 === null || G[C.precision] > G[p2]) && (p2 = C.precision), G[C.precision] > G.city) {
|
|
1286
1286
|
let M2 = K(A);
|
|
1287
1287
|
M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
|
|
1288
1288
|
}
|
|
@@ -1293,7 +1293,7 @@ function y3(n, e) {
|
|
|
1293
1293
|
}
|
|
1294
1294
|
}
|
|
1295
1295
|
let c2 = !n3() && n.some((l) => l.city !== null && l.city !== void 0 && String(l.city).trim() !== "");
|
|
1296
|
-
return { lat: t, lon: o, precisions: i, precision: p2, precisionCounts: g3, coarseExamples: f4, unmatched: a4, ambiguousRows: m2, ambiguousExamples: R2, matchedRows:
|
|
1296
|
+
return { lat: t, lon: o, precisions: i, precision: p2, precisionCounts: g3, coarseExamples: f4, unmatched: a4, ambiguousRows: m2, ambiguousExamples: R2, matchedRows: S2, totalRows: n.length, ...c2 ? { cityTableMissing: true } : {} };
|
|
1297
1297
|
}
|
|
1298
1298
|
function K(n) {
|
|
1299
1299
|
let e = [n.city, n.state, n.zip, n.country].filter((t) => t != null && String(t).trim() !== "").map((t) => String(t).trim()).join(", ");
|
|
@@ -1435,11 +1435,11 @@ function It(n, s) {
|
|
|
1435
1435
|
}
|
|
1436
1436
|
function Wt(n, s) {
|
|
1437
1437
|
let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M2 = [], h3 = 0;
|
|
1438
|
-
for (let
|
|
1439
|
-
let I2 = Mt(n[
|
|
1440
|
-
if (i[
|
|
1438
|
+
for (let N3 = 0; N3 < n.length; ++N3) {
|
|
1439
|
+
let I2 = Mt(n[N3], s), O3 = I2 !== null && It(I2, s) ? I2 : null;
|
|
1440
|
+
if (i[N3] = O3, O3 !== null) h3++;
|
|
1441
1441
|
else {
|
|
1442
|
-
let d2 = n[
|
|
1442
|
+
let d2 = n[N3];
|
|
1443
1443
|
if (d2 != null) {
|
|
1444
1444
|
let p2 = String(d2).trim();
|
|
1445
1445
|
if (p2.length > 0) {
|
|
@@ -1559,147 +1559,147 @@ var ct2 = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, Strin
|
|
|
1559
1559
|
|
|
1560
1560
|
// ../shape-core/dist/index.mjs
|
|
1561
1561
|
/*! @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. */
|
|
1562
|
-
var
|
|
1563
|
-
var
|
|
1564
|
-
function
|
|
1565
|
-
return !!E(
|
|
1566
|
-
}
|
|
1567
|
-
function
|
|
1568
|
-
let
|
|
1569
|
-
for (let t of
|
|
1562
|
+
var G2 = 2;
|
|
1563
|
+
var q3 = 400;
|
|
1564
|
+
function E2(i) {
|
|
1565
|
+
return !!E(i);
|
|
1566
|
+
}
|
|
1567
|
+
function S(i) {
|
|
1568
|
+
let n = /* @__PURE__ */ new Set();
|
|
1569
|
+
for (let t of i) {
|
|
1570
1570
|
if (t == null) continue;
|
|
1571
|
-
let
|
|
1572
|
-
if (!V(
|
|
1571
|
+
let r = u(String(t));
|
|
1572
|
+
if (!V(r) && !n.has(r) && (n.add(r), n.size >= q3)) break;
|
|
1573
1573
|
}
|
|
1574
|
-
return Array.from(
|
|
1574
|
+
return Array.from(n);
|
|
1575
1575
|
}
|
|
1576
|
-
function
|
|
1577
|
-
let
|
|
1578
|
-
if (
|
|
1579
|
-
let t =
|
|
1580
|
-
return t >= 1 && t >=
|
|
1576
|
+
function P2(i) {
|
|
1577
|
+
let n = S(i);
|
|
1578
|
+
if (n.length === 0 || O2(i) < 95) return false;
|
|
1579
|
+
let t = n.filter((c2) => E2(c2) && !Y(c2)).length, r = n.filter((c2) => !E2(c2) && !!Y(c2)).length;
|
|
1580
|
+
return t >= 1 && t >= r;
|
|
1581
1581
|
}
|
|
1582
|
-
function
|
|
1583
|
-
if (!Y(
|
|
1584
|
-
let t = E(
|
|
1585
|
-
return t ?
|
|
1582
|
+
function V2(i, n) {
|
|
1583
|
+
if (!Y(i)) return false;
|
|
1584
|
+
let t = E(i);
|
|
1585
|
+
return t ? n === "world" ? true : s3.has(t) : false;
|
|
1586
1586
|
}
|
|
1587
|
-
function
|
|
1588
|
-
let
|
|
1589
|
-
if (
|
|
1587
|
+
function O2(i) {
|
|
1588
|
+
let n = S(i);
|
|
1589
|
+
if (n.length === 0) return 0;
|
|
1590
1590
|
let t = 0;
|
|
1591
|
-
for (let
|
|
1592
|
-
return Math.round(t /
|
|
1591
|
+
for (let r of n) E2(r) && t++;
|
|
1592
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1593
1593
|
}
|
|
1594
|
-
function
|
|
1595
|
-
let
|
|
1596
|
-
if (
|
|
1594
|
+
function D3(i) {
|
|
1595
|
+
let n = S(i);
|
|
1596
|
+
if (n.length === 0) return 0;
|
|
1597
1597
|
let t = 0;
|
|
1598
|
-
for (let
|
|
1599
|
-
return Math.round(t /
|
|
1598
|
+
for (let r of n) Y(r) && t++;
|
|
1599
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1600
1600
|
}
|
|
1601
|
-
function
|
|
1602
|
-
let
|
|
1603
|
-
for (let t of
|
|
1601
|
+
function $2(i) {
|
|
1602
|
+
let n = /* @__PURE__ */ new Set();
|
|
1603
|
+
for (let t of i) {
|
|
1604
1604
|
if (t == null) continue;
|
|
1605
|
-
let
|
|
1606
|
-
if (!V(u(
|
|
1605
|
+
let r = String(t).trim();
|
|
1606
|
+
if (!V(u(r)) && !n.has(r) && (n.add(r), n.size >= q3)) break;
|
|
1607
1607
|
}
|
|
1608
|
-
return Array.from(
|
|
1608
|
+
return Array.from(n);
|
|
1609
1609
|
}
|
|
1610
|
-
function
|
|
1611
|
-
let
|
|
1612
|
-
if (
|
|
1610
|
+
function z2(i) {
|
|
1611
|
+
let n = $2(i);
|
|
1612
|
+
if (n.length === 0) return 0;
|
|
1613
1613
|
let t = 0;
|
|
1614
|
-
for (let
|
|
1615
|
-
return Math.round(t /
|
|
1614
|
+
for (let r of n) Z(r).length > 0 && t++;
|
|
1615
|
+
return Math.round(t / n.length * 1e3) / 10;
|
|
1616
1616
|
}
|
|
1617
|
-
function
|
|
1618
|
-
return y2(
|
|
1617
|
+
function j2(i, n) {
|
|
1618
|
+
return y2(n, rt) ? true : $2(i).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
|
|
1619
1619
|
}
|
|
1620
|
-
function
|
|
1621
|
-
let t =
|
|
1620
|
+
function At2(i, n) {
|
|
1621
|
+
let t = S(i);
|
|
1622
1622
|
if (t.length === 0) return 0;
|
|
1623
|
-
let
|
|
1624
|
-
for (let c2 of t) p3(c2,
|
|
1625
|
-
return Math.round(
|
|
1623
|
+
let r = 0;
|
|
1624
|
+
for (let c2 of t) p3(c2, n) && r++;
|
|
1625
|
+
return Math.round(r / t.length * 1e3) / 10;
|
|
1626
1626
|
}
|
|
1627
|
-
function
|
|
1627
|
+
function N2(i, n) {
|
|
1628
1628
|
let t = 0;
|
|
1629
|
-
for (let
|
|
1629
|
+
for (let r of S(i)) n(r) && t++;
|
|
1630
1630
|
return t;
|
|
1631
1631
|
}
|
|
1632
|
-
function
|
|
1632
|
+
function Tt(i, n) {
|
|
1633
1633
|
let t = 0;
|
|
1634
|
-
for (let
|
|
1634
|
+
for (let r of $2(i)) n(r) && t++;
|
|
1635
1635
|
return t;
|
|
1636
1636
|
}
|
|
1637
|
-
function
|
|
1638
|
-
let
|
|
1639
|
-
for (let
|
|
1640
|
-
let s = t?.[
|
|
1641
|
-
s && h3.has(s) && (
|
|
1637
|
+
function bt(i, n, t, r, c2) {
|
|
1638
|
+
let l = [], a4 = [], o = {}, R2 = {}, h3 = new Set(i), f4 = (e) => n.map((s) => s[e]);
|
|
1639
|
+
for (let e of ["city", "country"]) {
|
|
1640
|
+
let s = t?.[e];
|
|
1641
|
+
s && h3.has(s) && (o[e] = s);
|
|
1642
1642
|
}
|
|
1643
|
-
let Y2 = new Set(c2 ??
|
|
1644
|
-
for (let
|
|
1645
|
-
let s = t?.[
|
|
1646
|
-
s && Y2.has(s) && (
|
|
1643
|
+
let Y2 = new Set(c2 ?? i);
|
|
1644
|
+
for (let e of ["lat", "lon"]) {
|
|
1645
|
+
let s = t?.[e];
|
|
1646
|
+
s && Y2.has(s) && (o[e] = s);
|
|
1647
1647
|
}
|
|
1648
1648
|
let g3 = t?.zip;
|
|
1649
1649
|
if (g3 && h3.has(g3)) {
|
|
1650
|
-
let
|
|
1651
|
-
s < 95 ? a4.push(`zip=${g3} (only ${s}% of values read as ZIPs)`) :
|
|
1650
|
+
let e = f4(g3), s = z2(e);
|
|
1651
|
+
s < 95 ? a4.push(`zip=${g3} (only ${s}% of values read as ZIPs)`) : j2(e, g3) ? o.zip = g3 : a4.push(`zip=${g3} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1652
1652
|
}
|
|
1653
1653
|
let p2 = t?.state;
|
|
1654
1654
|
if (p2 && h3.has(p2)) {
|
|
1655
|
-
let
|
|
1656
|
-
s.length > 0 && s.every((
|
|
1655
|
+
let e = f4(p2), s = S(e);
|
|
1656
|
+
s.length > 0 && s.every((u2) => V2(u2, r)) ? a4.push(`state=${p2} (every value is "CA", which is both Canada and California)`) : P2(e) ? (a4.push(`state=${p2} (every value is a country, not a state)`), o.country || (o.country = p2)) : D3(e) < 95 ? a4.push(`state=${p2} (only ${D3(e)}% of values are states/provinces)`) : o.state = p2;
|
|
1657
1657
|
}
|
|
1658
|
-
let y5 = new Set(Object.values(
|
|
1659
|
-
if (!
|
|
1660
|
-
let
|
|
1658
|
+
let y5 = new Set(Object.values(o).filter(Boolean)), A = i.filter((e) => !y5.has(e) && !e.startsWith("__"));
|
|
1659
|
+
if (!o.state) {
|
|
1660
|
+
let e = null;
|
|
1661
1661
|
for (let s of A) {
|
|
1662
|
-
let
|
|
1663
|
-
if (
|
|
1664
|
-
let m2 =
|
|
1662
|
+
let u2 = f4(s);
|
|
1663
|
+
if (P2(u2)) continue;
|
|
1664
|
+
let m2 = D3(u2);
|
|
1665
1665
|
if (m2 < 95) continue;
|
|
1666
|
-
let
|
|
1667
|
-
|
|
1666
|
+
let F3 = N2(u2, (T3) => !!Y(T3)), Q3 = N2(u2, (T3) => !!Y(T3) && !V2(T3, r));
|
|
1667
|
+
F3 < G2 && Q3 < 1 || (!e || m2 > e.pct) && (e = { name: s, pct: m2 });
|
|
1668
1668
|
}
|
|
1669
|
-
|
|
1669
|
+
e && (o.state = e.name, y5.add(e.name), l.push(`state=${e.name} (${e.pct}% states/provinces)`));
|
|
1670
1670
|
}
|
|
1671
|
-
if (!
|
|
1672
|
-
if (y5.has(
|
|
1673
|
-
let s = f4(
|
|
1674
|
-
if (!(
|
|
1675
|
-
|
|
1671
|
+
if (!o.zip) for (let e of A) {
|
|
1672
|
+
if (y5.has(e)) continue;
|
|
1673
|
+
let s = f4(e), u2 = z2(s);
|
|
1674
|
+
if (!(u2 < 95) && j2(s, e) && !(Tt(s, (m2) => Z(m2).length > 0) < G2)) {
|
|
1675
|
+
o.zip = e, y5.add(e), l.push(`zip=${e} (${u2}% ZIP codes)`);
|
|
1676
1676
|
break;
|
|
1677
1677
|
}
|
|
1678
1678
|
}
|
|
1679
|
-
let
|
|
1680
|
-
if (!
|
|
1681
|
-
let
|
|
1679
|
+
let x3 = o.country;
|
|
1680
|
+
if (!x3 || !P2(f4(x3))) {
|
|
1681
|
+
let e = null;
|
|
1682
1682
|
for (let s of A) {
|
|
1683
|
-
if (y5.has(s) || !
|
|
1684
|
-
let
|
|
1685
|
-
(!
|
|
1683
|
+
if (y5.has(s) || !P2(f4(s))) continue;
|
|
1684
|
+
let u2 = O2(f4(s));
|
|
1685
|
+
(!e || u2 > e.pct) && (e = { name: s, pct: u2 });
|
|
1686
1686
|
}
|
|
1687
|
-
|
|
1687
|
+
e && (x3 && (a4.push(`country=${x3} (only ${O2(f4(x3))}% of values are country identifiers; using ${e.name} instead)`), R2.country = x3), o.country = e.name, y5.add(e.name), l.push(`country=${e.name}`));
|
|
1688
1688
|
}
|
|
1689
|
-
if (!
|
|
1690
|
-
let
|
|
1689
|
+
if (!o.city) {
|
|
1690
|
+
let e = null;
|
|
1691
1691
|
for (let s of A) {
|
|
1692
1692
|
if (y5.has(s)) continue;
|
|
1693
|
-
let
|
|
1694
|
-
m2 < m3 ||
|
|
1693
|
+
let u2 = f4(s), m2 = At2(u2, r);
|
|
1694
|
+
m2 < m3 || N2(u2, (F3) => p3(F3, r)) < G2 || (!e || m2 > e.pct) && (e = { name: s, pct: m2 });
|
|
1695
1695
|
}
|
|
1696
|
-
|
|
1696
|
+
e && (o.city = e.name, l.push(`city=${e.name} (${e.pct}% known cities)`));
|
|
1697
1697
|
}
|
|
1698
|
-
let B2 =
|
|
1699
|
-
let s = +String(
|
|
1700
|
-
return isFinite(s) && isFinite(
|
|
1698
|
+
let B2 = o.country ? f4(o.country) : [], _2 = !!o.country && P2(B2), J2 = _2 ? new Set(B2.map((e) => E(e == null ? null : String(e))).filter(Boolean)).size : 0, H2 = _2 && J2 >= 2, w2 = !!(o.lat && o.lon) && n.some((e) => {
|
|
1699
|
+
let s = +String(e[o.lat] ?? "").trim(), u2 = +String(e[o.lon] ?? "").trim();
|
|
1700
|
+
return isFinite(s) && isFinite(u2) && s >= -90 && s <= 90 && u2 >= -180 && u2 <= 180 && String(e[o.lat] ?? "").trim() !== "" && String(e[o.lon] ?? "").trim() !== "";
|
|
1701
1701
|
});
|
|
1702
|
-
return
|
|
1702
|
+
return o.lat && o.lon && !w2 && a4.push(`lat/lon=${o.lat}/${o.lon} (no row holds a usable coordinate pair)`), o.country && !H2 && !(o.city || o.state || o.zip || w2) && a4.push(_2 ? `country=${o.country} (every row resolves to the same country - nothing to place apart)` : `country=${o.country} (values are not country identifiers)`), { bind: !!(o.city || o.state || o.zip || H2 || w2) ? o : null, backfilled: l, refused: a4, ...Object.keys(R2).length ? { labelFallback: R2 } : {} };
|
|
1703
1703
|
}
|
|
1704
1704
|
|
|
1705
1705
|
// src/payload.ts
|
|
@@ -1714,7 +1714,7 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1714
1714
|
let labelCol;
|
|
1715
1715
|
if (bind) {
|
|
1716
1716
|
const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
|
|
1717
|
-
const res =
|
|
1717
|
+
const res = bt(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
|
|
1718
1718
|
bind = res.bind;
|
|
1719
1719
|
rolesBackfilled = res.backfilled;
|
|
1720
1720
|
rolesRefused = res.refused;
|
|
@@ -2025,26 +2025,26 @@ function createMarkResolver(env) {
|
|
|
2025
2025
|
const so = parseFloat(el.getAttribute("stroke-opacity") || "1");
|
|
2026
2026
|
return s === "transparent" || s === "none" || so <= 0.01;
|
|
2027
2027
|
};
|
|
2028
|
-
const distToPathCenterline = (el,
|
|
2028
|
+
const distToPathCenterline = (el, x3, y5) => {
|
|
2029
2029
|
const L2 = el.getTotalLength();
|
|
2030
2030
|
if (!(L2 > 0)) return Number.MAX_VALUE;
|
|
2031
2031
|
const m2 = el.getScreenCTM();
|
|
2032
2032
|
if (!m2) return Number.MAX_VALUE;
|
|
2033
2033
|
let best = Number.MAX_VALUE;
|
|
2034
|
-
const
|
|
2035
|
-
for (let i = 0; i <=
|
|
2036
|
-
const pt = el.getPointAtLength(L2 * i /
|
|
2037
|
-
const dx = m2.a * pt.x + m2.c * pt.y + m2.e -
|
|
2034
|
+
const N3 = 64;
|
|
2035
|
+
for (let i = 0; i <= N3; i++) {
|
|
2036
|
+
const pt = el.getPointAtLength(L2 * i / N3);
|
|
2037
|
+
const dx = m2.a * pt.x + m2.c * pt.y + m2.e - x3;
|
|
2038
2038
|
const dy = m2.b * pt.x + m2.d * pt.y + m2.f - y5;
|
|
2039
2039
|
const d2 = dx * dx + dy * dy;
|
|
2040
2040
|
if (d2 < best) best = d2;
|
|
2041
2041
|
}
|
|
2042
2042
|
return Math.sqrt(best);
|
|
2043
2043
|
};
|
|
2044
|
-
const refineHitCorridor = (mark,
|
|
2044
|
+
const refineHitCorridor = (mark, x3, y5, sel) => {
|
|
2045
2045
|
try {
|
|
2046
2046
|
if (!mark || !isInvisibleStrokePath(mark) || !mark.getAttribute("data-row-idx")) return mark;
|
|
2047
|
-
const stack = doc.elementsFromPoint(
|
|
2047
|
+
const stack = doc.elementsFromPoint(x3, y5);
|
|
2048
2048
|
const candidates = [];
|
|
2049
2049
|
for (const el of stack) {
|
|
2050
2050
|
if (!root.contains(el)) continue;
|
|
@@ -2058,7 +2058,7 @@ function createMarkResolver(env) {
|
|
|
2058
2058
|
let best = mark;
|
|
2059
2059
|
let bestD = Number.MAX_VALUE;
|
|
2060
2060
|
for (const el of candidates) {
|
|
2061
|
-
const d2 = distToPathCenterline(el,
|
|
2061
|
+
const d2 = distToPathCenterline(el, x3, y5);
|
|
2062
2062
|
if (d2 < bestD) {
|
|
2063
2063
|
bestD = d2;
|
|
2064
2064
|
best = el;
|
|
@@ -2095,9 +2095,9 @@ function createMarkResolver(env) {
|
|
|
2095
2095
|
}
|
|
2096
2096
|
return out;
|
|
2097
2097
|
};
|
|
2098
|
-
const penetrateOverlayAt = (
|
|
2098
|
+
const penetrateOverlayAt = (x3, y5, sel) => {
|
|
2099
2099
|
try {
|
|
2100
|
-
const stack = doc.elementsFromPoint(
|
|
2100
|
+
const stack = doc.elementsFromPoint(x3, y5);
|
|
2101
2101
|
for (const el of stack) {
|
|
2102
2102
|
if (!root.contains(el) || !isElement(el)) continue;
|
|
2103
2103
|
const cand = el.matches(sel) ? el : el.closest(sel);
|
|
@@ -2109,7 +2109,7 @@ function createMarkResolver(env) {
|
|
|
2109
2109
|
}
|
|
2110
2110
|
return null;
|
|
2111
2111
|
};
|
|
2112
|
-
const resolveByGeometry = (
|
|
2112
|
+
const resolveByGeometry = (x3, y5, sel) => {
|
|
2113
2113
|
try {
|
|
2114
2114
|
const cands = root.querySelectorAll(sel);
|
|
2115
2115
|
let best = null, bestArea = Number.MAX_VALUE;
|
|
@@ -2118,7 +2118,7 @@ function createMarkResolver(env) {
|
|
|
2118
2118
|
if (!el.getAttribute("data-row-idx")) continue;
|
|
2119
2119
|
const r = el.getBoundingClientRect ? el.getBoundingClientRect() : null;
|
|
2120
2120
|
if (!r || r.width <= 0 || r.height <= 0) continue;
|
|
2121
|
-
if (
|
|
2121
|
+
if (x3 < r.left || x3 > r.right || y5 < r.top || y5 > r.bottom) continue;
|
|
2122
2122
|
const area = r.width * r.height;
|
|
2123
2123
|
if (area < bestArea) {
|
|
2124
2124
|
bestArea = area;
|
|
@@ -2315,13 +2315,13 @@ function censusHitBands(container, doc) {
|
|
|
2315
2315
|
if (!OPEN_TAGS.has(tag)) continue;
|
|
2316
2316
|
const cs = styleOf2(el, ownerDoc);
|
|
2317
2317
|
const open = isUnfilled(attrOrComputed(el, "fill", cs));
|
|
2318
|
-
const
|
|
2318
|
+
const w2 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
|
|
2319
2319
|
const geom = String(el.getAttribute?.("d") ?? "") || `${tag}#${String(el.getAttribute?.(ROW_IDX_ATTR) ?? "")}`;
|
|
2320
2320
|
const inert = String(cs?.pointerEvents ?? el.style?.pointerEvents ?? "") === "none";
|
|
2321
|
-
rows.push({ el, geom, w:
|
|
2322
|
-
if (isFinite(
|
|
2321
|
+
rows.push({ el, geom, w: w2, open, inert });
|
|
2322
|
+
if (isFinite(w2)) {
|
|
2323
2323
|
const prev = widestByGeom.get(geom);
|
|
2324
|
-
if (prev === void 0 ||
|
|
2324
|
+
if (prev === void 0 || w2 > prev) widestByGeom.set(geom, w2);
|
|
2325
2325
|
}
|
|
2326
2326
|
}
|
|
2327
2327
|
const out = { ...EMPTY3 };
|
|
@@ -2398,10 +2398,10 @@ function censusValuePlacement(container, data) {
|
|
|
2398
2398
|
if (!/^\d+$/.test(raw)) continue;
|
|
2399
2399
|
const i = +raw;
|
|
2400
2400
|
const row = rows[i];
|
|
2401
|
-
const
|
|
2402
|
-
if (!row || !Number.isFinite(
|
|
2401
|
+
const x3 = num(el, "cx"), y5 = num(el, "cy"), r = num(el, "r");
|
|
2402
|
+
if (!row || !Number.isFinite(x3) || !Number.isFinite(y5) || !(r > 0)) continue;
|
|
2403
2403
|
seen.add(i);
|
|
2404
|
-
dots.push({ row, x:
|
|
2404
|
+
dots.push({ row, x: x3, y: y5, r });
|
|
2405
2405
|
}
|
|
2406
2406
|
if (dots.length < MIN_MARKS2 || seen.size < dots.length * 0.9) return EMPTY4;
|
|
2407
2407
|
let best = null;
|
|
@@ -2492,12 +2492,12 @@ function contentExtentOf(boxes) {
|
|
|
2492
2492
|
if (usable.length === 0) return { w: 0, h: 0, source: "none" };
|
|
2493
2493
|
const inFlow = usable.filter((b4) => !b4.floating);
|
|
2494
2494
|
const counted = inFlow.length > 0 ? inFlow : usable;
|
|
2495
|
-
let
|
|
2495
|
+
let w2 = 0, h3 = 0;
|
|
2496
2496
|
for (const b4 of counted) {
|
|
2497
|
-
if (b4.right >
|
|
2497
|
+
if (b4.right > w2) w2 = b4.right;
|
|
2498
2498
|
if (b4.bottom > h3) h3 = b4.bottom;
|
|
2499
2499
|
}
|
|
2500
|
-
return { w:
|
|
2500
|
+
return { w: w2, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
|
|
2501
2501
|
}
|
|
2502
2502
|
function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL_SLACK_PX) {
|
|
2503
2503
|
return {
|
|
@@ -2507,8 +2507,8 @@ function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL
|
|
|
2507
2507
|
}
|
|
2508
2508
|
var FIT_CONTENT_SELECTOR = "text, .d3-mark, .d3-legend-mark";
|
|
2509
2509
|
var PHANTOM_FRACTION = 0.95;
|
|
2510
|
-
function isPhantomBox(
|
|
2511
|
-
return
|
|
2510
|
+
function isPhantomBox(w2, h3, refW, refH) {
|
|
2511
|
+
return w2 > refW * PHANTOM_FRACTION || h3 > refH * PHANTOM_FRACTION;
|
|
2512
2512
|
}
|
|
2513
2513
|
var MAX_FRAME_GROW_FACTOR = 20;
|
|
2514
2514
|
function planFrameGrow(inkBottomPx, elHeightPx, viewBoxH, ctmScale, slackPx = SCROLL_SLACK_PX, maxFactor = MAX_FRAME_GROW_FACTOR) {
|
|
@@ -3207,31 +3207,31 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
3207
3207
|
const glyphArea = tr.width * tr.height;
|
|
3208
3208
|
const txRoot = paintRoot(tx, container);
|
|
3209
3209
|
let over = 0;
|
|
3210
|
-
const boxed = rects.map((mk) => ({ mk, ov: ovArea(mk.r) })).filter((
|
|
3211
|
-
if (!(
|
|
3212
|
-
if (drawnBeneath(
|
|
3213
|
-
if (effAlpha(
|
|
3210
|
+
const boxed = rects.map((mk) => ({ mk, ov: ovArea(mk.r) })).filter((x3) => {
|
|
3211
|
+
if (!(x3.ov > 0)) return false;
|
|
3212
|
+
if (drawnBeneath(x3.mk, tx, txRoot)) return true;
|
|
3213
|
+
if (effAlpha(x3.mk) >= PILL_MIN_ALPHA) over++;
|
|
3214
3214
|
return false;
|
|
3215
3215
|
});
|
|
3216
3216
|
if (over > 0) report.paintedOver++;
|
|
3217
3217
|
const pts = glyphSampleGrid({ left: tr.left, top: tr.top, width: tr.width, height: tr.height });
|
|
3218
3218
|
const painted = pts.map(() => false);
|
|
3219
3219
|
let unmeasured = 0;
|
|
3220
|
-
const under = boxed.map((
|
|
3221
|
-
const mask = backedSamples(
|
|
3220
|
+
const under = boxed.map((x3) => {
|
|
3221
|
+
const mask = backedSamples(x3.mk.el, pts);
|
|
3222
3222
|
if (mask === null) {
|
|
3223
3223
|
unmeasured++;
|
|
3224
|
-
return
|
|
3224
|
+
return x3;
|
|
3225
3225
|
}
|
|
3226
3226
|
let inside = 0;
|
|
3227
|
-
const paints = effAlpha(
|
|
3227
|
+
const paints = effAlpha(x3.mk) >= PILL_MIN_ALPHA;
|
|
3228
3228
|
for (let i = 0; i < mask.length; i++) {
|
|
3229
3229
|
if (!mask[i]) continue;
|
|
3230
3230
|
inside++;
|
|
3231
3231
|
if (paints) painted[i] = true;
|
|
3232
3232
|
}
|
|
3233
|
-
return { mk:
|
|
3234
|
-
}).filter((
|
|
3233
|
+
return { mk: x3.mk, ov: glyphArea * (inside / mask.length) };
|
|
3234
|
+
}).filter((x3) => x3.ov > 0);
|
|
3235
3235
|
if (under.length === 0 && boxed.length > 0) report.offFill++;
|
|
3236
3236
|
if (under.length === 0) continue;
|
|
3237
3237
|
if (unmeasured === 0 && pts.length > 0) {
|
|
@@ -3243,10 +3243,10 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
3243
3243
|
}
|
|
3244
3244
|
}
|
|
3245
3245
|
report.scanned++;
|
|
3246
|
-
const opaqueUnder = under.filter((
|
|
3246
|
+
const opaqueUnder = under.filter((x3) => effAlpha(x3.mk) >= PILL_OPAQUE_ALPHA);
|
|
3247
3247
|
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a4, b4) => b4.ov > a4.ov || b4.ov === a4.ov && b4.mk.ord > a4.mk.ord ? b4 : a4);
|
|
3248
3248
|
const cell = cellEntry.mk;
|
|
3249
|
-
const pill = under.find((
|
|
3249
|
+
const pill = under.find((x3) => x3.mk !== cell && isPillBackdropAlpha(effAlpha(x3.mk)) && x3.mk.ord > cell.ord && pillBacksGlyph(x3.ov, glyphArea))?.mk;
|
|
3250
3250
|
const cellRGBA = toRGBA(cell.fill);
|
|
3251
3251
|
let bgRGB = cellRGBA ? compositeOver([cellRGBA[0], cellRGBA[1], cellRGBA[2], cellRGBA[3] * cell.op], pageRGB) : pageRGB;
|
|
3252
3252
|
if (pill) {
|
|
@@ -3307,7 +3307,7 @@ function noopViewStateProvider() {
|
|
|
3307
3307
|
return { load: () => ({}), save: () => {
|
|
3308
3308
|
} };
|
|
3309
3309
|
}
|
|
3310
|
-
var parseRowIdxs = (s) => (s || "").split(",").map((
|
|
3310
|
+
var parseRowIdxs = (s) => (s || "").split(",").map((x3) => parseInt(x3, 10)).filter((n) => Number.isFinite(n));
|
|
3311
3311
|
var D3_PLUGIN_PACKAGES = {
|
|
3312
3312
|
sankey: "d3-sankey",
|
|
3313
3313
|
sankeyLinkHorizontal: "d3-sankey",
|
|
@@ -3875,9 +3875,9 @@ export {
|
|
|
3875
3875
|
registerGeo,
|
|
3876
3876
|
registerGeoAsset,
|
|
3877
3877
|
clearGeoCache,
|
|
3878
|
-
L3,
|
|
3879
3878
|
M,
|
|
3880
3879
|
a2 as a,
|
|
3880
|
+
L3,
|
|
3881
3881
|
Oe,
|
|
3882
3882
|
Le,
|
|
3883
3883
|
Qt,
|
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.3",
|
|
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",
|