@bicharts/chart-host 0.6.2 → 0.6.4

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.
@@ -211,55 +211,55 @@ var require_papaparse_min = __commonJS({
211
211
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
212
212
  }
213
213
  function E4(C) {
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
- true === x4 ? x4 = "#" : ("string" != typeof x4 || -1 < v2.BAD_DELIMITERS.indexOf(x4)) && (x4 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
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 = S.length, s2 = O3.length, a5 = x4.length, o2 = q4(I2), h4 = [], u4 = [], d3 = [], f5 = z3 = 0;
221
- if (!i2) return w3();
222
- if (T3 || false !== T3 && -1 === i2.indexOf(F4)) {
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 w3();
226
- if (!x4 || d3.substring(0, a5) !== x4) {
225
+ else if (r2) return w2();
226
+ if (!x3 || d3.substring(0, a5) !== x3) {
227
227
  if (o2) {
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);
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 w3();
233
+ return w2();
234
234
  }
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
- 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
- if (m4 === n2 - 1) return E5(i2.substring(z3, m4).replace(_3, F4));
238
- if (F4 === j3 && i2[m4 + 1] === j3) m4++;
239
- else if (F4 === j3 || 0 === m4 || i2[m4 - 1] !== j3) {
240
- -1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S, m4 + 1));
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) === 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);
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, 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);
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 (x4 && 0 === d3.length && i2.substring(z3, z3 + a5) === x4) {
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);
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 w3();
262
- if (A && h4.length >= A) return w3(true);
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()), w3();
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 w3(e2) {
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, (D3 = null === D3 ? {} : D3)[e4] = i4;
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: S, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D3 } };
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(w3()), h4 = [], u4 = [];
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), G2 = linearise(g3), B2 = linearise(b4);
512
- const X2 = 0.4124564 * R2 + 0.3575761 * G2 + 0.1804375 * B2;
513
- const Y2 = 0.2126729 * R2 + 0.7151522 * G2 + 0.072175 * B2;
514
- const Z3 = 0.0193339 * R2 + 0.119192 * G2 + 0.9503041 * B2;
515
- const fx = f(X2 / Xn), fy = f(Y2 / Yn), fz = f(Z3 / Zn);
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 G2 = 0.5 * (1 - Math.sqrt(C7 / (C7 + Math.pow(25, 7))));
532
- const a1p = (1 + G2) * c1.a, a2p = (1 + G2) * c2.a;
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 Z3 = Zn * finv(fz);
572
+ const Z2 = Zn * finv(fz);
573
573
  const lin = [
574
- 3.2404542 * X2 - 1.5371385 * Y2 - 0.4985314 * Z3,
575
- -0.969266 * X2 + 1.8760108 * Y2 + 0.041556 * Z3,
576
- 0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 * Z3
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, S = [], m2 = -1;
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, S = [c2]) : A === m2 && S.push(c2);
1248
+ A > m2 ? (m2 = A, S2 = [c2]) : A === m2 && S2.push(c2);
1249
1249
  }
1250
- S.some((c2) => c2.primary) && (S = S.filter((c2) => c2.primary));
1250
+ S2.some((c2) => c2.primary) && (S2 = S2.filter((c2) => c2.primary));
1251
1251
  let p2 = /* @__PURE__ */ new Map();
1252
- for (let c2 of S) p2.set(c2.row.lon.toFixed(2) + "," + c2.row.lat.toFixed(2), c2.row);
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 = S[0].row;
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 }, S = 0, m2 = 0, p2 = null;
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, S++, g3[C.precision]++, (p2 === null || G[C.precision] > G[p2]) && (p2 = C.precision), G[C.precision] > G.city) {
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: S, totalRows: n.length, ...c2 ? { cityTableMissing: true } : {} };
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 N2 = 0; N2 < n.length; ++N2) {
1439
- let I2 = Mt(n[N2], s), O3 = I2 !== null && It(I2, s) ? I2 : null;
1440
- if (i[N2] = O3, O3 !== null) h3++;
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[N2];
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 E2 = 2;
1563
- var Z2 = 400;
1564
- function O2(o) {
1565
- return !!E(o);
1566
- }
1567
- function P2(o) {
1568
- let e = /* @__PURE__ */ new Set();
1569
- for (let t of o) {
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 i = u(String(t));
1572
- if (!V(i) && !e.has(i) && (e.add(i), e.size >= Z2)) break;
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(e);
1574
+ return Array.from(n);
1575
1575
  }
1576
- function x3(o) {
1577
- let e = P2(o);
1578
- if (e.length === 0 || z2(o) < 95) return false;
1579
- let t = e.filter((c2) => O2(c2) && !Y(c2)).length, i = e.filter((c2) => !O2(c2) && !!Y(c2)).length;
1580
- return t >= 1 && t >= i;
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 j2(o, e) {
1583
- if (!Y(o)) return false;
1584
- let t = E(o);
1585
- return t ? e === "world" ? true : s3.has(t) : false;
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 z2(o) {
1588
- let e = P2(o);
1589
- if (e.length === 0) return 0;
1587
+ function O2(i) {
1588
+ let n = S(i);
1589
+ if (n.length === 0) return 0;
1590
1590
  let t = 0;
1591
- for (let i of e) O2(i) && t++;
1592
- return Math.round(t / e.length * 1e3) / 10;
1591
+ for (let r of n) E2(r) && t++;
1592
+ return Math.round(t / n.length * 1e3) / 10;
1593
1593
  }
1594
- function w2(o) {
1595
- let e = P2(o);
1596
- if (e.length === 0) return 0;
1594
+ function D3(i) {
1595
+ let n = S(i);
1596
+ if (n.length === 0) return 0;
1597
1597
  let t = 0;
1598
- for (let i of e) Y(i) && t++;
1599
- return Math.round(t / e.length * 1e3) / 10;
1598
+ for (let r of n) Y(r) && t++;
1599
+ return Math.round(t / n.length * 1e3) / 10;
1600
1600
  }
1601
- function H2(o) {
1602
- let e = /* @__PURE__ */ new Set();
1603
- for (let t of o) {
1601
+ function $2(i) {
1602
+ let n = /* @__PURE__ */ new Set();
1603
+ for (let t of i) {
1604
1604
  if (t == null) continue;
1605
- let i = String(t).trim();
1606
- if (!V(u(i)) && !e.has(i) && (e.add(i), e.size >= Z2)) break;
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(e);
1608
+ return Array.from(n);
1609
1609
  }
1610
- function $2(o) {
1611
- let e = H2(o);
1612
- if (e.length === 0) return 0;
1610
+ function z2(i) {
1611
+ let n = $2(i);
1612
+ if (n.length === 0) return 0;
1613
1613
  let t = 0;
1614
- for (let i of e) Z(i).length > 0 && t++;
1615
- return Math.round(t / e.length * 1e3) / 10;
1614
+ for (let r of n) Z(r).length > 0 && t++;
1615
+ return Math.round(t / n.length * 1e3) / 10;
1616
1616
  }
1617
- function q3(o, e) {
1618
- return y2(e, rt) ? true : H2(o).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
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 yt2(o, e) {
1621
- let t = P2(o);
1620
+ function At2(i, n) {
1621
+ let t = S(i);
1622
1622
  if (t.length === 0) return 0;
1623
- let i = 0;
1624
- for (let c2 of t) p3(c2, e) && i++;
1625
- return Math.round(i / t.length * 1e3) / 10;
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 F3(o, e) {
1627
+ function N2(i, n) {
1628
1628
  let t = 0;
1629
- for (let i of P2(o)) e(i) && t++;
1629
+ for (let r of S(i)) n(r) && t++;
1630
1630
  return t;
1631
1631
  }
1632
- function Ct(o, e) {
1632
+ function bt(i, n) {
1633
1633
  let t = 0;
1634
- for (let i of H2(o)) e(i) && t++;
1634
+ for (let r of $2(i)) n(r) && t++;
1635
1635
  return t;
1636
1636
  }
1637
- function ht(o, e, t, i, c2) {
1638
- let u2 = [], a4 = [], r = {}, T3 = {}, h3 = new Set(o), f4 = (n) => e.map((s) => s[n]);
1639
- for (let n of ["city", "country"]) {
1640
- let s = t?.[n];
1641
- s && h3.has(s) && (r[n] = s);
1637
+ function Mt2(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 ?? o);
1644
- for (let n of ["lat", "lon"]) {
1645
- let s = t?.[n];
1646
- s && Y2.has(s) && (r[n] = 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 n = f4(g3), s = $2(n);
1651
- 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)`);
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 n = f4(p2), s = P2(n);
1656
- 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;
1657
- }
1658
- let y5 = new Set(Object.values(r).filter(Boolean)), A = o.filter((n) => !y5.has(n) && !n.startsWith("__"));
1659
- if (!r.state) {
1660
- let n = null;
1661
- for (let s of A) {
1662
- let l = f4(s);
1663
- if (x3(l)) continue;
1664
- let m2 = w2(l);
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
+ }
1658
+ let y5 = new Set(Object.values(o).filter(Boolean)), T3 = i.filter((e) => !y5.has(e) && !e.startsWith("__"));
1659
+ if (!o.state) {
1660
+ let e = null;
1661
+ for (let s of T3) {
1662
+ let u2 = f4(s);
1663
+ if (P2(u2)) continue;
1664
+ let m2 = D3(u2);
1665
1665
  if (m2 < 95) continue;
1666
- let D3 = F3(l, (R2) => !!Y(R2)), ee = F3(l, (R2) => !!Y(R2) && !j2(R2, i));
1667
- D3 < E2 && ee < 1 || (!n || m2 > n.pct) && (n = { name: s, pct: m2 });
1666
+ let F3 = N2(u2, (A) => !!Y(A)), Q3 = N2(u2, (A) => !!Y(A) && !V2(A, r));
1667
+ F3 < G2 && Q3 < 1 || (!e || m2 > e.pct) && (e = { name: s, pct: m2 });
1668
1668
  }
1669
- n && (r.state = n.name, y5.add(n.name), u2.push(`state=${n.name} (${n.pct}% states/provinces)`));
1669
+ e && (o.state = e.name, y5.add(e.name), l.push(`state=${e.name} (${e.pct}% states/provinces)`));
1670
1670
  }
1671
- if (!r.zip) for (let n of A) {
1672
- if (y5.has(n)) continue;
1673
- let s = f4(n), l = $2(s);
1674
- if (!(l < 95) && q3(s, n) && !(Ct(s, (m2) => Z(m2).length > 0) < E2)) {
1675
- r.zip = n, y5.add(n), u2.push(`zip=${n} (${l}% ZIP codes)`);
1671
+ if (!o.zip) for (let e of T3) {
1672
+ if (y5.has(e)) continue;
1673
+ let s = f4(e), u2 = z2(s);
1674
+ if (!(u2 < 95) && j2(s, e) && !(bt(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 S = r.country;
1680
- if (!S || !x3(f4(S))) {
1681
- let n = null;
1682
- for (let s of A) {
1683
- if (y5.has(s) || !x3(f4(s))) continue;
1684
- let l = z2(f4(s));
1685
- (!n || l > n.pct) && (n = { name: s, pct: l });
1679
+ let x3 = o.country;
1680
+ if (!x3 || !P2(f4(x3))) {
1681
+ let e = null;
1682
+ for (let s of T3) {
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
- 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
+ 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 (!r.city) {
1690
- let n = null;
1691
- for (let s of A) {
1689
+ if (!o.city) {
1690
+ let e = null;
1691
+ for (let s of T3) {
1692
1692
  if (y5.has(s)) continue;
1693
- let l = f4(s), m2 = yt2(l, i);
1694
- m2 < m3 || F3(l, (D3) => p3(D3, i)) < E2 || (!n || m2 > n.pct) && (n = { name: s, pct: m2 });
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
- n && (r.city = n.name, u2.push(`city=${n.name} (${n.pct}% known cities)`));
1696
+ e && (o.city = e.name, l.push(`city=${e.name} (${e.pct}% known cities)`));
1697
1697
  }
1698
- 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) => {
1699
- let s = +String(n[r.lat] ?? "").trim(), l = +String(n[r.lon] ?? "").trim();
1700
- return isFinite(s) && isFinite(l) && s >= -90 && s <= 90 && l >= -180 && l <= 180 && String(n[r.lat] ?? "").trim() !== "" && String(n[r.lon] ?? "").trim() !== "";
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 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
+ 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 = ht(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
1717
+ const res = Mt2(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, x4, y5) => {
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 N2 = 64;
2035
- for (let i = 0; i <= N2; i++) {
2036
- const pt = el.getPointAtLength(L2 * i / N2);
2037
- const dx = m2.a * pt.x + m2.c * pt.y + m2.e - x4;
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, x4, y5, sel) => {
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(x4, y5);
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, x4, y5);
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 = (x4, y5, sel) => {
2098
+ const penetrateOverlayAt = (x3, y5, sel) => {
2099
2099
  try {
2100
- const stack = doc.elementsFromPoint(x4, y5);
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 = (x4, y5, sel) => {
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 (x4 < r.left || x4 > r.right || y5 < r.top || y5 > r.bottom) continue;
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 w3 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
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: w3, open, inert });
2322
- if (isFinite(w3)) {
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 || w3 > prev) widestByGeom.set(geom, w3);
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 x4 = num(el, "cx"), y5 = num(el, "cy"), r = num(el, "r");
2402
- if (!row || !Number.isFinite(x4) || !Number.isFinite(y5) || !(r > 0)) continue;
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: x4, y: y5, r });
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 w3 = 0, h3 = 0;
2495
+ let w2 = 0, h3 = 0;
2496
2496
  for (const b4 of counted) {
2497
- if (b4.right > w3) w3 = b4.right;
2497
+ if (b4.right > w2) w2 = b4.right;
2498
2498
  if (b4.bottom > h3) h3 = b4.bottom;
2499
2499
  }
2500
- return { w: w3, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
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(w3, h3, refW, refH) {
2511
- return w3 > refW * PHANTOM_FRACTION || h3 > refH * PHANTOM_FRACTION;
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((x4) => {
3211
- if (!(x4.ov > 0)) return false;
3212
- if (drawnBeneath(x4.mk, tx, txRoot)) return true;
3213
- if (effAlpha(x4.mk) >= PILL_MIN_ALPHA) over++;
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((x4) => {
3221
- const mask = backedSamples(x4.mk.el, pts);
3220
+ const under = boxed.map((x3) => {
3221
+ const mask = backedSamples(x3.mk.el, pts);
3222
3222
  if (mask === null) {
3223
3223
  unmeasured++;
3224
- return x4;
3224
+ return x3;
3225
3225
  }
3226
3226
  let inside = 0;
3227
- const paints = effAlpha(x4.mk) >= PILL_MIN_ALPHA;
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: x4.mk, ov: glyphArea * (inside / mask.length) };
3234
- }).filter((x4) => x4.ov > 0);
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((x4) => effAlpha(x4.mk) >= PILL_OPAQUE_ALPHA);
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((x4) => x4.mk !== cell && isPillBackdropAlpha(effAlpha(x4.mk)) && x4.mk.ord > cell.ord && pillBacksGlyph(x4.ov, glyphArea))?.mk;
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((x4) => parseInt(x4, 10)).filter((n) => Number.isFinite(n));
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
@@ -135,7 +135,7 @@ import {
135
135
  unpinScrolledAxis,
136
136
  valuePlacementFlag,
137
137
  withoutViewOnlyKeys
138
- } from "./chunk-HC2IREJL.mjs";
138
+ } from "./chunk-AQMNNUBY.mjs";
139
139
  import "./chunk-A2GMXZP7.mjs";
140
140
  import "./chunk-GHODWOAL.mjs";
141
141
 
package/dist/react.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  createChartHost,
5
5
  geoFromCache,
6
6
  loadGeo
7
- } from "./chunk-HC2IREJL.mjs";
7
+ } from "./chunk-AQMNNUBY.mjs";
8
8
  import "./chunk-A2GMXZP7.mjs";
9
9
  import "./chunk-GHODWOAL.mjs";
10
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bicharts/chart-host",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
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",