@bicharts/chart-host 0.6.19 → 0.6.20

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