@bicharts/chart-host 0.5.112 → 0.5.113

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.
@@ -22,8 +22,8 @@ var require_papaparse_min = __commonJS({
22
22
  "function" == typeof define && define.amd ? define([], t) : "object" == typeof module && "undefined" != typeof exports ? module.exports = t() : e.Papa = t();
23
23
  })(exports, function r() {
24
24
  var n = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : {};
25
- var d2, s = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {}, h3 = 0, v2 = {};
26
- function P2(e) {
25
+ var d2, s = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {}, h4 = 0, v3 = {};
26
+ function P4(e) {
27
27
  return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
28
28
  }
29
29
  function u2(e) {
@@ -41,7 +41,7 @@ var require_papaparse_min = __commonJS({
41
41
  var i2 = this._partialLine + t, r2 = (this._partialLine = "", this._handle.parse(i2, this._baseIndex, !this._finished));
42
42
  if (!this._handle.paused() && !this._handle.aborted()) {
43
43
  t = r2.meta.cursor, i2 = (this._finished || (this._partialLine = i2.substring(t - this._baseIndex), this._baseIndex = t), r2 && r2.data && (this._rowCount += r2.data.length), this._finished || this._config.preview && this._rowCount >= this._config.preview);
44
- if (a4) n.postMessage({ results: r2, workerId: v2.WORKER_ID, finished: i2 });
44
+ if (a4) n.postMessage({ results: r2, workerId: v3.WORKER_ID, finished: i2 });
45
45
  else if (q4(this._config.chunk) && !e2) {
46
46
  if (this._config.chunk(r2, this._handle), this._handle.paused() || this._handle.aborted()) return void (this._halted = true);
47
47
  this._completeResults = r2 = void 0;
@@ -50,12 +50,12 @@ var require_papaparse_min = __commonJS({
50
50
  }
51
51
  this._halted = true;
52
52
  }, this._sendError = function(e2) {
53
- q4(this._config.error) ? this._config.error(e2) : a4 && this._config.error && n.postMessage({ workerId: v2.WORKER_ID, error: e2, finished: false });
53
+ q4(this._config.error) ? this._config.error(e2) : a4 && this._config.error && n.postMessage({ workerId: v3.WORKER_ID, error: e2, finished: false });
54
54
  };
55
55
  }
56
56
  function f4(e) {
57
57
  var r2;
58
- (e = e || {}).chunkSize || (e.chunkSize = v2.RemoteChunkSize), u2.call(this, e), this._nextChunk = s ? function() {
58
+ (e = e || {}).chunkSize || (e.chunkSize = v3.RemoteChunkSize), u2.call(this, e), this._nextChunk = s ? function() {
59
59
  this._readChunk(), this._chunkLoaded();
60
60
  } : function() {
61
61
  this._readChunk();
@@ -85,7 +85,7 @@ var require_papaparse_min = __commonJS({
85
85
  };
86
86
  }
87
87
  function l(e) {
88
- (e = e || {}).chunkSize || (e.chunkSize = v2.LocalChunkSize), u2.call(this, e);
88
+ (e = e || {}).chunkSize || (e.chunkSize = v3.LocalChunkSize), u2.call(this, e);
89
89
  var i2, r2, n2 = "undefined" != typeof FileReader;
90
90
  this.stream = function(e2) {
91
91
  this._input = e2, r2 = e2.slice || e2.webkitSlice || e2.mozSlice, n2 ? ((i2 = new FileReader()).onload = y5(this._chunkLoaded, this), i2.onerror = y5(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk();
@@ -137,16 +137,16 @@ var require_papaparse_min = __commonJS({
137
137
  }, this);
138
138
  }
139
139
  function i(m4) {
140
- var n2, s2, a5, t, o2 = Math.pow(2, 53), h4 = -o2, u4 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, d3 = /^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/, i2 = this, r2 = 0, f5 = 0, l2 = false, e = false, c4 = [], p4 = { data: [], errors: [], meta: {} };
140
+ var n2, s2, a5, t, o2 = Math.pow(2, 53), h5 = -o2, u4 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, d3 = /^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/, i2 = this, r2 = 0, f5 = 0, l2 = false, e = false, c4 = [], p4 = { data: [], errors: [], meta: {} };
141
141
  function y6(e2) {
142
142
  return "greedy" === m4.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length;
143
143
  }
144
144
  function g4() {
145
- if (p4 && a5 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v2.DefaultDelimiter + "'"), a5 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
145
+ if (p4 && a5 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v3.DefaultDelimiter + "'"), a5 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
146
146
  return !y6(e4);
147
147
  })), _3()) {
148
148
  let t4 = function(e4, t5) {
149
- e4 = P2(e4), q4(m4.transformHeader) && (e4 = m4.transformHeader(e4, t5)), c4.push(e4);
149
+ e4 = P4(e4), q4(m4.transformHeader) && (e4 = m4.transformHeader(e4, t5)), c4.push(e4);
150
150
  };
151
151
  var t2 = t4;
152
152
  if (p4) if (Array.isArray(p4.data[0])) {
@@ -159,7 +159,7 @@ var require_papaparse_min = __commonJS({
159
159
  var n4 = r5, s4 = e4[r5], s4 = ((e5, t5) => ((e6) => (m4.dynamicTypingFunction && void 0 === m4.dynamicTyping[e6] && (m4.dynamicTyping[e6] = m4.dynamicTypingFunction(e6)), true === (m4.dynamicTyping[e6] || m4.dynamicTyping)))(e5) ? "true" === t5 || "TRUE" === t5 || "false" !== t5 && "FALSE" !== t5 && (((e6) => {
160
160
  if (u4.test(e6)) {
161
161
  e6 = parseFloat(e6);
162
- if (h4 < e6 && e6 < o2) return 1;
162
+ if (h5 < e6 && e6 < o2) return 1;
163
163
  }
164
164
  })(t5) ? parseFloat(t5) : d3.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(n4 = m4.header ? r5 >= c4.length ? "__parsed_extra" : c4[r5] : n4, s4 = m4.transform ? m4.transform(s4, n4) : s4);
165
165
  "__parsed_extra" === n4 ? (i5[n4] = i5[n4] || [], i5[n4].push(s4)) : i5[n4] = s4;
@@ -180,15 +180,15 @@ var require_papaparse_min = __commonJS({
180
180
  p4 = e2, _3() ? g4() : (g4(), 0 !== p4.data.length && (r2 += e2.data.length, m4.preview && r2 > m4.preview ? s2.abort() : (p4.data = p4.data[0], t(p4, i2))));
181
181
  }), this.parse = function(e2, t2, i4) {
182
182
  var r4 = m4.quoteChar || '"', r4 = (m4.newline || (m4.newline = this.guessLineEndings(e2, r4)), a5 = false, m4.delimiter ? q4(m4.delimiter) && (m4.delimiter = m4.delimiter(e2), p4.meta.delimiter = m4.delimiter) : ((r4 = ((e4, t4, i5, r5, n4) => {
183
- var s4, a6, o4, h5;
184
- n4 = n4 || [",", " ", "|", ";", v2.RECORD_SEP, v2.UNIT_SEP];
183
+ var s4, a6, o4, h6;
184
+ n4 = n4 || [",", " ", "|", ";", v3.RECORD_SEP, v3.UNIT_SEP];
185
185
  for (var u5 = 0; u5 < n4.length; u5++) {
186
- for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o4 = void 0, new E2({ comments: r5, delimiter: f6, newline: t4, preview: 10 }).parse(e4)), _4 = 0; _4 < g5.data.length; _4++) i5 && y6(g5.data[_4]) ? p5++ : (d4 = g5.data[_4].length, c5 += d4, void 0 === o4 ? o4 = d4 : 0 < d4 && (l3 += Math.abs(d4 - o4), o4 = d4));
187
- 0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a6 || l3 <= a6) && (void 0 === h5 || h5 < c5) && 1.99 < c5 && (a6 = l3, s4 = f6, h5 = c5);
186
+ for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o4 = void 0, new E4({ comments: r5, delimiter: f6, newline: t4, preview: 10 }).parse(e4)), _4 = 0; _4 < g5.data.length; _4++) i5 && y6(g5.data[_4]) ? p5++ : (d4 = g5.data[_4].length, c5 += d4, void 0 === o4 ? o4 = d4 : 0 < d4 && (l3 += Math.abs(d4 - o4), o4 = d4));
187
+ 0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a6 || l3 <= a6) && (void 0 === h6 || h6 < c5) && 1.99 < c5 && (a6 = l3, s4 = f6, h6 = c5);
188
188
  }
189
189
  return { successful: !!(m4.delimiter = s4), bestDelimiter: s4 };
190
- })(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r4.bestDelimiter : (a5 = true, m4.delimiter = v2.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b4(m4));
191
- return m4.preview && m4.header && r4.preview++, n2 = e2, s2 = new E2(r4), p4 = s2.parse(n2, t2, i4), g4(), l2 ? { meta: { paused: true } } : p4 || { meta: { paused: false } };
190
+ })(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r4.bestDelimiter : (a5 = true, m4.delimiter = v3.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b4(m4));
191
+ return m4.preview && m4.header && r4.preview++, n2 = e2, s2 = new E4(r4), p4 = s2.parse(n2, t2, i4), g4(), l2 ? { meta: { paused: true } } : p4 || { meta: { paused: false } };
192
192
  }, this.paused = function() {
193
193
  return l2;
194
194
  }, this.pause = function() {
@@ -210,78 +210,78 @@ var require_papaparse_min = __commonJS({
210
210
  function U2(e) {
211
211
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
212
212
  }
213
- function E2(C2) {
214
- var S = (C2 = C2 || {}).delimiter, O2 = C2.newline, x3 = C2.comments, I2 = C2.step, A2 = C2.preview, T3 = C2.fastMode, D4 = null, L2 = false, F4 = null == C2.quoteChar ? '"' : C2.quoteChar, j2 = F4;
215
- if (void 0 !== C2.escapeChar && (j2 = C2.escapeChar), ("string" != typeof S || -1 < v2.BAD_DELIMITERS.indexOf(S)) && (S = ","), x3 === S) throw new Error("Comment character same as delimiter");
216
- true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v2.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O2 && "\r" !== O2 && "\r\n" !== O2 && (O2 = "\n");
217
- var z3 = 0, M4 = false;
213
+ function E4(C) {
214
+ var S = (C = C || {}).delimiter, O2 = C.newline, x3 = C.comments, I2 = C.step, A = C.preview, T3 = C.fastMode, D4 = null, L2 = false, F4 = null == C.quoteChar ? '"' : C.quoteChar, j2 = F4;
215
+ if (void 0 !== C.escapeChar && (j2 = C.escapeChar), ("string" != typeof S || -1 < v3.BAD_DELIMITERS.indexOf(S)) && (S = ","), x3 === S) throw new Error("Comment character same as delimiter");
216
+ true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v3.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O2 && "\r" !== O2 && "\r\n" !== O2 && (O2 = "\n");
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 = O2.length, a5 = x3.length, o2 = q4(I2), h4 = [], u4 = [], d3 = [], f5 = z3 = 0;
221
- if (!i2) return w3();
220
+ var n2 = i2.length, e = S.length, s2 = O2.length, a5 = x3.length, o2 = q4(I2), h5 = [], u4 = [], d3 = [], f5 = z3 = 0;
221
+ if (!i2) return w2();
222
222
  if (T3 || false !== T3 && -1 === i2.indexOf(F4)) {
223
223
  for (var l2 = i2.split(O2), c4 = 0; c4 < l2.length; c4++) {
224
224
  if (d3 = l2[c4], z3 += d3.length, c4 !== l2.length - 1) z3 += O2.length;
225
- else if (r2) return w3();
225
+ else if (r2) return w2();
226
226
  if (!x3 || d3.substring(0, a5) !== x3) {
227
227
  if (o2) {
228
- if (h4 = [], k2(d3.split(S)), R2(), M4) return w3();
228
+ if (h5 = [], k2(d3.split(S)), R2(), M2) return w2();
229
229
  } else k2(d3.split(S));
230
- if (A2 && A2 <= c4) return h4 = h4.slice(0, A2), w3(true);
230
+ if (A && A <= c4) return h5 = h5.slice(0, A), w2(true);
231
231
  }
232
232
  }
233
- return w3();
233
+ return w2();
234
234
  }
235
235
  for (var p4 = i2.indexOf(S, z3), g4 = i2.indexOf(O2, z3), _3 = new RegExp(U2(j2) + 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 }), E4();
237
- if (m4 === n2 - 1) return E4(i2.substring(z3, m4).replace(_3, F4));
236
+ if (-1 === (m4 = i2.indexOf(F4, m4 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h5.length, index: z3 }), E5();
237
+ if (m4 === n2 - 1) return E5(i2.substring(z3, m4).replace(_3, F4));
238
238
  if (F4 === j2 && i2[m4 + 1] === j2) m4++;
239
239
  else if (F4 === j2 || 0 === m4 || i2[m4 - 1] !== j2) {
240
240
  -1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S, m4 + 1));
241
- var y6 = v3(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O2, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
241
+ var y6 = v4(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O2, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
242
242
  if (i2.substr(m4 + 1 + y6, e) === S) {
243
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(O2, z3);
244
244
  break;
245
245
  }
246
- y6 = v3(g4);
246
+ y6 = v4(g4);
247
247
  if (i2.substring(m4 + 1 + y6, m4 + 1 + y6 + s2) === O2) {
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(), M4)) return w3();
249
- if (A2 && h4.length >= A2) return w3(true);
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 w2();
249
+ if (A && h5.length >= A) return w2(true);
250
250
  break;
251
251
  }
252
- u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h4.length, index: z3 }), m4++;
252
+ u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h5.length, index: z3 }), m4++;
253
253
  }
254
254
  }
255
255
  else if (x3 && 0 === d3.length && i2.substring(z3, z3 + a5) === x3) {
256
- if (-1 === g4) return w3();
256
+ if (-1 === g4) return w2();
257
257
  z3 = g4 + s2, g4 = i2.indexOf(O2, z3), p4 = i2.indexOf(S, z3);
258
258
  } else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z3, p4)), z3 = p4 + e, p4 = i2.indexOf(S, z3);
259
259
  else {
260
260
  if (-1 === g4) break;
261
- if (d3.push(i2.substring(z3, g4)), b5(g4 + s2), o2 && (R2(), M4)) return w3();
262
- if (A2 && h4.length >= A2) return w3(true);
261
+ if (d3.push(i2.substring(z3, g4)), b5(g4 + s2), o2 && (R2(), M2)) return w2();
262
+ if (A && h5.length >= A) return w2(true);
263
263
  }
264
- return E4();
264
+ return E5();
265
265
  function k2(e2) {
266
- h4.push(e2), f5 = z3;
266
+ h5.push(e2), f5 = z3;
267
267
  }
268
- function v3(e2) {
268
+ function v4(e2) {
269
269
  var t2 = 0;
270
270
  return t2 = -1 !== e2 && (e2 = i2.substring(m4 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
271
271
  }
272
- function E4(e2) {
273
- return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d3.push(e2), z3 = n2, k2(d3), o2 && R2()), w3();
272
+ function E5(e2) {
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(O2, z3);
277
277
  }
278
- function w3(e2) {
279
- if (C2.header && !t && h4.length && !L2) {
280
- var s4 = h4[0], a6 = /* @__PURE__ */ Object.create(null), o4 = new Set(s4);
278
+ function w2(e2) {
279
+ if (C.header && !t && h5.length && !L2) {
280
+ var s4 = h5[0], a6 = /* @__PURE__ */ Object.create(null), o4 = new Set(s4);
281
281
  let n4 = false;
282
282
  for (let r4 = 0; r4 < s4.length; r4++) {
283
- let i4 = P2(s4[r4]);
284
- if (a6[i4 = q4(C2.transformHeader) ? C2.transformHeader(i4, r4) : i4]) {
283
+ let i4 = P4(s4[r4]);
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
287
  o4.add(e4), s4[r4] = e4, a6[i4]++, n4 = true, (D4 = null === D4 ? {} : D4)[e4] = i4;
@@ -290,13 +290,13 @@ var require_papaparse_min = __commonJS({
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: O2, aborted: M4, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D4 } };
293
+ return { data: h5, errors: u4, meta: { delimiter: S, linebreak: O2, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D4 } };
294
294
  }
295
295
  function R2() {
296
- I2(w3()), h4 = [], u4 = [];
296
+ I2(w2()), h5 = [], u4 = [];
297
297
  }
298
298
  }, this.abort = function() {
299
- M4 = true;
299
+ M2 = true;
300
300
  }, this.getCharIndex = function() {
301
301
  return z3;
302
302
  };
@@ -336,27 +336,27 @@ var require_papaparse_min = __commonJS({
336
336
  function q4(e) {
337
337
  return "function" == typeof e;
338
338
  }
339
- return v2.parse = function(e, t) {
339
+ return v3.parse = function(e, t) {
340
340
  var i2 = (t = t || {}).dynamicTyping || false;
341
341
  q4(i2) && (t.dynamicTypingFunction = i2, i2 = {});
342
- if (t.dynamicTyping = i2, t.transform = !!q4(t.transform) && t.transform, !t.worker || !v2.WORKERS_SUPPORTED) return i2 = null, v2.NODE_STREAM_INPUT, "string" == typeof e ? (e = P2(e), i2 = new (t.download ? f4 : c2)(t)) : true === e.readable && q4(e.read) && q4(e.on) ? i2 = new p2(t) : (n.File && e instanceof File || e instanceof Object) && (i2 = new l(t)), i2.stream(e);
342
+ if (t.dynamicTyping = i2, t.transform = !!q4(t.transform) && t.transform, !t.worker || !v3.WORKERS_SUPPORTED) return i2 = null, v3.NODE_STREAM_INPUT, "string" == typeof e ? (e = P4(e), i2 = new (t.download ? f4 : c2)(t)) : true === e.readable && q4(e.read) && q4(e.on) ? i2 = new p2(t) : (n.File && e instanceof File || e instanceof Object) && (i2 = new l(t)), i2.stream(e);
343
343
  (i2 = (() => {
344
344
  var e2;
345
- return !!v2.WORKERS_SUPPORTED && (e2 = (() => {
345
+ return !!v3.WORKERS_SUPPORTED && (e2 = (() => {
346
346
  var e4 = n.URL || n.webkitURL || null, t2 = r.toString();
347
- return v2.BLOB_URL || (v2.BLOB_URL = e4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", t2, ")();"], { type: "text/javascript" })));
348
- })(), (e2 = new n.Worker(e2)).onmessage = g3, e2.id = h3++, o[e2.id] = e2);
347
+ return v3.BLOB_URL || (v3.BLOB_URL = e4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", t2, ")();"], { type: "text/javascript" })));
348
+ })(), (e2 = new n.Worker(e2)).onmessage = g3, e2.id = h4++, o[e2.id] = e2);
349
349
  })()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step = q4(t.step), t.chunk = q4(t.chunk), t.complete = q4(t.complete), t.error = q4(t.error), delete t.worker, i2.postMessage({ input: e, config: t, workerId: i2.id });
350
- }, v2.unparse = function(e, t) {
351
- var s2 = false, _3 = true, m4 = ",", y6 = "\r\n", a5 = '"', o2 = a5 + a5, i2 = false, r2 = null, h4 = false, u4 = ((() => {
350
+ }, v3.unparse = function(e, t) {
351
+ var s2 = false, _3 = true, m4 = ",", y6 = "\r\n", a5 = '"', o2 = a5 + a5, i2 = false, r2 = null, h5 = false, u4 = ((() => {
352
352
  if ("object" == typeof t) {
353
- if ("string" != typeof t.delimiter || v2.BAD_DELIMITERS.filter(function(e2) {
353
+ if ("string" != typeof t.delimiter || v3.BAD_DELIMITERS.filter(function(e2) {
354
354
  return -1 !== t.delimiter.indexOf(e2);
355
355
  }).length || (m4 = t.delimiter), "boolean" != typeof t.quotes && "function" != typeof t.quotes && !Array.isArray(t.quotes) || (s2 = t.quotes), "boolean" != typeof t.skipEmptyLines && "string" != typeof t.skipEmptyLines || (i2 = t.skipEmptyLines), "string" == typeof t.newline && (y6 = t.newline), "string" == typeof t.quoteChar && (a5 = t.quoteChar, o2 = a5 + a5), "boolean" == typeof t.header && (_3 = t.header), Array.isArray(t.columns)) {
356
356
  if (0 === t.columns.length) throw new Error("Option columns is empty");
357
357
  r2 = t.columns;
358
358
  }
359
- void 0 !== t.escapeChar && (o2 = t.escapeChar + a5), t.escapeFormulae instanceof RegExp ? h4 = t.escapeFormulae : "boolean" == typeof t.escapeFormulae && t.escapeFormulae && (h4 = /^[=+\-@\t\r].*$/);
359
+ void 0 !== t.escapeChar && (o2 = t.escapeChar + a5), t.escapeFormulae instanceof RegExp ? h5 = t.escapeFormulae : "boolean" == typeof t.escapeFormulae && t.escapeFormulae && (h5 = /^[=+\-@\t\r].*$/);
360
360
  }
361
361
  })(), new RegExp(U2(a5), "g"));
362
362
  "string" == typeof e && (e = JSON.parse(e));
@@ -372,42 +372,42 @@ var require_papaparse_min = __commonJS({
372
372
  0 < t2.length && (r4 += y6);
373
373
  }
374
374
  for (var o4 = 0; o4 < t2.length; o4++) {
375
- var h5 = (n4 ? e2 : t2[o4]).length, u5 = false, d3 = n4 ? 0 === Object.keys(t2[o4]).length : 0 === t2[o4].length;
375
+ var h6 = (n4 ? e2 : t2[o4]).length, u5 = false, d3 = n4 ? 0 === Object.keys(t2[o4]).length : 0 === t2[o4].length;
376
376
  if (i4 && !n4 && (u5 = "greedy" === i4 ? "" === t2[o4].join("").trim() : 1 === t2[o4].length && 0 === t2[o4][0].length), "greedy" === i4 && n4) {
377
- for (var f5 = [], l2 = 0; l2 < h5; l2++) {
377
+ for (var f5 = [], l2 = 0; l2 < h6; l2++) {
378
378
  var c4 = s4 ? e2[l2] : l2;
379
379
  f5.push(t2[o4][c4]);
380
380
  }
381
381
  u5 = "" === f5.join("").trim();
382
382
  }
383
383
  if (!u5) {
384
- for (var p4 = 0; p4 < h5; p4++) {
384
+ for (var p4 = 0; p4 < h6; p4++) {
385
385
  0 < p4 && !d3 && (r4 += m4);
386
386
  var g4 = n4 && s4 ? e2[p4] : p4;
387
387
  r4 += k2(t2[o4][g4], p4);
388
388
  }
389
- o4 < t2.length - 1 && (!i4 || 0 < h5 && !d3) && (r4 += y6);
389
+ o4 < t2.length - 1 && (!i4 || 0 < h6 && !d3) && (r4 += y6);
390
390
  }
391
391
  }
392
392
  return r4;
393
393
  }
394
394
  function k2(e2, t2) {
395
395
  var i4, r4, n4;
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) => {
396
+ return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n4 = false, h5 && "string" == typeof e2 && h5.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;
398
398
  return false;
399
- })(r4, v2.BAD_DELIMITERS) || -1 < r4.indexOf(m4) || -1 < i4.indexOf(a5) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a5 + r4 + a5 : r4);
399
+ })(r4, v3.BAD_DELIMITERS) || -1 < r4.indexOf(m4) || -1 < i4.indexOf(a5) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a5 + r4 + a5 : r4);
400
400
  }
401
- }, v2.RECORD_SEP = String.fromCharCode(30), v2.UNIT_SEP = String.fromCharCode(31), v2.BYTE_ORDER_MARK = "\uFEFF", v2.BAD_DELIMITERS = ["\r", "\n", '"', v2.BYTE_ORDER_MARK], v2.WORKERS_SUPPORTED = !s && !!n.Worker, v2.NODE_STREAM_INPUT = 1, v2.LocalChunkSize = 10485760, v2.RemoteChunkSize = 5242880, v2.DefaultDelimiter = ",", v2.Parser = E2, v2.ParserHandle = i, v2.NetworkStreamer = f4, v2.FileStreamer = l, v2.StringStreamer = c2, v2.ReadableStreamStreamer = p2, n.jQuery && ((d2 = n.jQuery).fn.parse = function(o2) {
402
- var i2 = o2.config || {}, h4 = [];
401
+ }, v3.RECORD_SEP = String.fromCharCode(30), v3.UNIT_SEP = String.fromCharCode(31), v3.BYTE_ORDER_MARK = "\uFEFF", v3.BAD_DELIMITERS = ["\r", "\n", '"', v3.BYTE_ORDER_MARK], v3.WORKERS_SUPPORTED = !s && !!n.Worker, v3.NODE_STREAM_INPUT = 1, v3.LocalChunkSize = 10485760, v3.RemoteChunkSize = 5242880, v3.DefaultDelimiter = ",", v3.Parser = E4, v3.ParserHandle = i, v3.NetworkStreamer = f4, v3.FileStreamer = l, v3.StringStreamer = c2, v3.ReadableStreamStreamer = p2, n.jQuery && ((d2 = n.jQuery).fn.parse = function(o2) {
402
+ var i2 = o2.config || {}, h5 = [];
403
403
  return this.each(function(e2) {
404
404
  if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() && n.FileReader) || !this.files || 0 === this.files.length) return true;
405
- for (var t = 0; t < this.files.length; t++) h4.push({ file: this.files[t], inputElem: this, instanceConfig: d2.extend({}, i2) });
405
+ for (var t = 0; t < this.files.length; t++) h5.push({ file: this.files[t], inputElem: this, instanceConfig: d2.extend({}, i2) });
406
406
  }), e(), this;
407
407
  function e() {
408
- if (0 === h4.length) q4(o2.complete) && o2.complete();
408
+ if (0 === h5.length) q4(o2.complete) && o2.complete();
409
409
  else {
410
- var e2, t, i4, r2, n2 = h4[0];
410
+ var e2, t, i4, r2, n2 = h5[0];
411
411
  if (q4(o2.before)) {
412
412
  var s2 = o2.before(n2.file, n2.inputElem);
413
413
  if ("object" == typeof s2) {
@@ -419,17 +419,17 @@ var require_papaparse_min = __commonJS({
419
419
  var a5 = n2.instanceConfig.complete;
420
420
  n2.instanceConfig.complete = function(e4) {
421
421
  q4(a5) && a5(e4, n2.file, n2.inputElem), u4();
422
- }, v2.parse(n2.file, n2.instanceConfig);
422
+ }, v3.parse(n2.file, n2.instanceConfig);
423
423
  }
424
424
  }
425
425
  function u4() {
426
- h4.splice(0, 1), e();
426
+ h5.splice(0, 1), e();
427
427
  }
428
428
  }), a4 && (n.onmessage = function(e) {
429
429
  e = e.data;
430
- void 0 === v2.WORKER_ID && e && (v2.WORKER_ID = e.workerId);
431
- "string" == typeof e.input ? n.postMessage({ workerId: v2.WORKER_ID, results: v2.parse(e.input, e.config), finished: true }) : (n.File && e.input instanceof File || e.input instanceof Object) && (e = v2.parse(e.input, e.config)) && n.postMessage({ workerId: v2.WORKER_ID, results: e, finished: true });
432
- }), (f4.prototype = Object.create(u2.prototype)).constructor = f4, (l.prototype = Object.create(u2.prototype)).constructor = l, (c2.prototype = Object.create(c2.prototype)).constructor = c2, (p2.prototype = Object.create(u2.prototype)).constructor = p2, v2;
430
+ void 0 === v3.WORKER_ID && e && (v3.WORKER_ID = e.workerId);
431
+ "string" == typeof e.input ? n.postMessage({ workerId: v3.WORKER_ID, results: v3.parse(e.input, e.config), finished: true }) : (n.File && e.input instanceof File || e.input instanceof Object) && (e = v3.parse(e.input, e.config)) && n.postMessage({ workerId: v3.WORKER_ID, results: e, finished: true });
432
+ }), (f4.prototype = Object.create(u2.prototype)).constructor = f4, (l.prototype = Object.create(u2.prototype)).constructor = l, (c2.prototype = Object.create(c2.prototype)).constructor = c2, (p2.prototype = Object.create(u2.prototype)).constructor = p2, v3;
433
433
  });
434
434
  }
435
435
  });
@@ -487,8 +487,8 @@ var MAX_MAP_POINTS_DEFAULT = 2e3;
487
487
 
488
488
  // src/deltaE.ts
489
489
  function linearise(c2) {
490
- const v2 = c2 / 255;
491
- return v2 <= 0.04045 ? v2 / 12.92 : Math.pow((v2 + 0.055) / 1.055, 2.4);
490
+ const v3 = c2 / 255;
491
+ return v3 <= 0.04045 ? v3 / 12.92 : Math.pow((v3 + 0.055) / 1.055, 2.4);
492
492
  }
493
493
  var Xn = 0.95047;
494
494
  var Yn = 1;
@@ -509,8 +509,8 @@ function rgbToLab(r, g3, b4) {
509
509
  function hexToLab(hex2) {
510
510
  const m2 = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex2.trim());
511
511
  if (!m2) return null;
512
- const h3 = m2[1].length === 3 ? m2[1][0] + m2[1][0] + m2[1][1] + m2[1][1] + m2[1][2] + m2[1][2] : m2[1];
513
- return rgbToLab(parseInt(h3.slice(0, 2), 16), parseInt(h3.slice(2, 4), 16), parseInt(h3.slice(4, 6), 16));
512
+ const h4 = m2[1].length === 3 ? m2[1][0] + m2[1][0] + m2[1][1] + m2[1][1] + m2[1][2] + m2[1][2] : m2[1];
513
+ return rgbToLab(parseInt(h4.slice(0, 2), 16), parseInt(h4.slice(2, 4), 16), parseInt(h4.slice(4, 6), 16));
514
514
  }
515
515
  var RAD = Math.PI / 180;
516
516
  var DEG = 180 / Math.PI;
@@ -566,8 +566,8 @@ function labToHex(lab) {
566
566
  -0.969266 * X2 + 1.8760108 * Y2 + 0.041556 * Z3,
567
567
  0.0556434 * X2 - 0.2040259 * Y2 + 1.0572252 * Z3
568
568
  ];
569
- return "#" + lin.map((v2) => {
570
- const c2 = Math.max(0, Math.min(1, v2));
569
+ return "#" + lin.map((v3) => {
570
+ const c2 = Math.max(0, Math.min(1, v3));
571
571
  const g3 = c2 <= 31308e-7 ? 12.92 * c2 : 1.055 * Math.pow(c2, 1 / 2.4) - 0.055;
572
572
  return Math.round(g3 * 255).toString(16).padStart(2, "0");
573
573
  }).join("");
@@ -605,8 +605,8 @@ function toRgb(raw) {
605
605
  if (!s || s === "none" || s === "transparent") return null;
606
606
  const hex2 = /^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(s);
607
607
  if (hex2) {
608
- const h3 = hex2[1];
609
- const full = h3.length === 3 ? h3[0] + h3[0] + h3[1] + h3[1] + h3[2] + h3[2] : h3;
608
+ const h4 = hex2[1];
609
+ const full = h4.length === 3 ? h4[0] + h4[0] + h4[1] + h4[1] + h4[2] + h4[2] : h4;
610
610
  return [
611
611
  parseInt(full.slice(0, 2), 16),
612
612
  parseInt(full.slice(2, 4), 16),
@@ -626,7 +626,7 @@ function cellKey(rgb) {
626
626
  ].join(",");
627
627
  }
628
628
  function hex(rgb) {
629
- return "#" + rgb.map((v2) => Math.max(0, Math.min(255, v2)).toString(16).padStart(2, "0")).join("");
629
+ return "#" + rgb.map((v3) => Math.max(0, Math.min(255, v3)).toString(16).padStart(2, "0")).join("");
630
630
  }
631
631
  function censusColourSpread(container, doc) {
632
632
  if (!container || typeof container.querySelectorAll !== "function") return EMPTY;
@@ -670,11 +670,11 @@ function censusColourSpread(container, doc) {
670
670
  let span = 0, lo = 0, hi = 1;
671
671
  for (let i = 0; i < cs.length; i++) {
672
672
  for (let j2 = i + 1; j2 < cs.length; j2++) {
673
- const v2 = deltaE2000(cs[i], cs[j2]);
674
- d2[i][j2] = v2;
675
- d2[j2][i] = v2;
676
- if (v2 > span) {
677
- span = v2;
673
+ const v3 = deltaE2000(cs[i], cs[j2]);
674
+ d2[i][j2] = v3;
675
+ d2[j2][i] = v3;
676
+ if (v3 > span) {
677
+ span = v3;
678
678
  lo = i;
679
679
  hi = j2;
680
680
  }
@@ -722,8 +722,8 @@ function normHex(raw) {
722
722
  if (typeof raw !== "string") return null;
723
723
  const m2 = HEX.exec(raw.trim());
724
724
  if (!m2) return null;
725
- const h3 = m2[1].length === 3 ? m2[1].split("").map((c2) => c2 + c2).join("") : m2[1];
726
- return "#" + h3.toLowerCase();
725
+ const h4 = m2[1].length === 3 ? m2[1].split("").map((c2) => c2 + c2).join("") : m2[1];
726
+ return "#" + h4.toLowerCase();
727
727
  }
728
728
  function mixLab(a4, b4, t) {
729
729
  return { L: a4.L + (b4.L - a4.L) * t, a: a4.a + (b4.a - a4.a) * t, b: a4.b + (b4.b - a4.b) * t };
@@ -731,7 +731,7 @@ function mixLab(a4, b4, t) {
731
731
  function paintedOver(fg, canvas, alpha) {
732
732
  const f4 = [1, 3, 5].map((i) => parseInt(fg.slice(i, i + 2), 16));
733
733
  const c2 = [1, 3, 5].map((i) => parseInt(canvas.slice(i, i + 2), 16));
734
- const mixed = f4.map((v2, i) => Math.round(v2 * alpha + c2[i] * (1 - alpha))).map((v2) => v2.toString(16).padStart(2, "0"));
734
+ const mixed = f4.map((v3, i) => Math.round(v3 * alpha + c2[i] * (1 - alpha))).map((v3) => v3.toString(16).padStart(2, "0"));
735
735
  return hexToLab("#" + mixed.join(""));
736
736
  }
737
737
  function autoRampMinStep(low, high, canvas, classes = AUTO_RAMP_CLASSES, opacity = AUTO_RAMP_DRAWN_OPACITY) {
@@ -764,15 +764,15 @@ function resolveAutoColorScale(p2) {
764
764
  };
765
765
  const candidates = p2.isHighContrast ? [normHex(p2.themeAccent), normHex(p2.themeFg)] : [...palette.map(normHex), normHex(p2.themeAccent), normHex(p2.themeFg)];
766
766
  const accent = candidates.find(usable) ?? FALLBACK_ACCENT;
767
- const A2 = hexToLab(accent);
767
+ const A = hexToLab(accent);
768
768
  let t = 0.1;
769
- let low = mixLab(bg, A2, t);
769
+ let low = mixLab(bg, A, t);
770
770
  while (t < 0.6 && deltaE2000(paintedOver(labToHex(low), canvas, AUTO_RAMP_DRAWN_OPACITY), bg) < SAME_SHADE_DELTA_E) {
771
771
  t += 0.02;
772
- low = mixLab(bg, A2, t);
772
+ low = mixLab(bg, A, t);
773
773
  }
774
774
  const lowHex = labToHex(low);
775
- let high = { ...A2 };
775
+ let high = { ...A };
776
776
  let highHex = labToHex(high);
777
777
  for (let step = 0; step < 80 && autoRampMinStep(lowHex, highHex, canvas) < AUTO_RAMP_MIN_STEP_DELTA_E; step++) {
778
778
  const L2 = Math.max(4, Math.min(98, high.L + (darkCanvas ? 1 : -1)));
@@ -860,20 +860,20 @@ function resolveOptions(p2) {
860
860
  // never reach a chart as a live mode. Both of these are read on EVERY render, so a
861
861
  // reader can change their mind about a cached chart without regenerating it.
862
862
  approximatePositions: (() => {
863
- const v2 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
864
- return v2 === "mark" || v2 === "aggregate" || v2 === "skip" ? v2 : APPROXIMATE_POSITIONS_DEFAULT;
863
+ const v3 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
864
+ return v3 === "mark" || v3 === "aggregate" || v3 === "skip" ? v3 : APPROXIMATE_POSITIONS_DEFAULT;
865
865
  })(),
866
866
  valueAxisBaseline: (() => {
867
- const v2 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
868
- return v2 === "zero" || v2 === "fit" || v2 === "auto" ? v2 : VALUE_AXIS_BASELINE_DEFAULT;
867
+ const v3 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
868
+ return v3 === "zero" || v3 === "fit" || v3 === "auto" ? v3 : VALUE_AXIS_BASELINE_DEFAULT;
869
869
  })(),
870
870
  // Same shape, and the same reason for it: an unrecognised string must never reach a chart
871
871
  // as a live mode. Failing open to "auto" is the conservative direction here — "auto" is
872
872
  // the setting that makes the chart PROVE the grid before it names a period, so a garbled
873
873
  // value withdraws the claim rather than asserting one.
874
874
  seasonalMarkers: (() => {
875
- const v2 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
876
- return v2 === "auto" || v2 === "always" || v2 === "never" ? v2 : SEASONAL_MARKERS_DEFAULT;
875
+ const v3 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
876
+ return v3 === "auto" || v3 === "always" || v3 === "never" ? v3 : SEASONAL_MARKERS_DEFAULT;
877
877
  })(),
878
878
  // ---- animation: booleans, default+clamp numerics, "" default enum ----
879
879
  animAutoPlay: !!p2.animAutoPlay,
@@ -1228,12 +1228,12 @@ function A3(n) {
1228
1228
  if (f4 && f4.length) {
1229
1229
  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;
1230
1230
  for (let c2 of f4) {
1231
- let l = c2.row, A2 = 0;
1232
- if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2) A2++;
1231
+ let l = c2.row, A = 0;
1232
+ if (d2 && l.a1 !== "") if (g3 && l.a1 === g3 || u(l.a1) === R2) A++;
1233
1233
  else continue;
1234
- if (i) if (T(l.cc) === i) A2++;
1234
+ if (i) if (T(l.cc) === i) A++;
1235
1235
  else continue;
1236
- A2 > m2 ? (m2 = A2, S = [c2]) : A2 === m2 && S.push(c2);
1236
+ A > m2 ? (m2 = A, S = [c2]) : A === m2 && S.push(c2);
1237
1237
  }
1238
1238
  S.some((c2) => c2.primary) && (S = S.filter((c2) => c2.primary));
1239
1239
  let p2 = /* @__PURE__ */ new Map();
@@ -1264,20 +1264,20 @@ var x = 8;
1264
1264
  function y3(n, e) {
1265
1265
  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;
1266
1266
  for (let l = 0; l < n.length; ++l) {
1267
- let A2 = n[l], C2 = A3({ ...A2, mapKind: e });
1268
- if (S3(C2)) {
1267
+ let A = n[l], C = A3({ ...A, mapKind: e });
1268
+ if (S3(C)) {
1269
1269
  t[l] = null, o[l] = null, i[l] = null, m2++;
1270
- let M4 = K(A2);
1271
- M4 && !d2.has(M4.toLowerCase()) && (d2.add(M4.toLowerCase()), R2.length < x && R2.push(M4));
1272
- } else if (C2) {
1273
- if (t[l] = C2.lat, o[l] = C2.lon, i[l] = C2.precision, S++, g3[C2.precision]++, (p2 === null || G[C2.precision] > G[p2]) && (p2 = C2.precision), G[C2.precision] > G.city) {
1274
- let M4 = K(A2);
1275
- M4 && !s.has(M4.toLowerCase()) && (s.add(M4.toLowerCase()), f4.length < x && f4.push(M4));
1270
+ let M2 = K(A);
1271
+ M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
1272
+ } else if (C) {
1273
+ 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) {
1274
+ let M2 = K(A);
1275
+ M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
1276
1276
  }
1277
1277
  } else {
1278
1278
  t[l] = null, o[l] = null, i[l] = null;
1279
- let M4 = K(A2);
1280
- M4 && !r.has(M4.toLowerCase()) && (r.add(M4.toLowerCase()), a4.push(M4));
1279
+ let M2 = K(A);
1280
+ M2 && !r.has(M2.toLowerCase()) && (r.add(M2.toLowerCase()), a4.push(M2));
1281
1281
  }
1282
1282
  }
1283
1283
  let c2 = !n3() && n.some((l) => l.city !== null && l.city !== void 0 && String(l.city).trim() !== "");
@@ -1422,22 +1422,22 @@ function It(n, s) {
1422
1422
  return s === "us-zip5" ? w.has(n.slice(0, 3)) : true;
1423
1423
  }
1424
1424
  function Wt(n, s) {
1425
- let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M4 = [], h3 = 0;
1425
+ let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M2 = [], h4 = 0;
1426
1426
  for (let N2 = 0; N2 < n.length; ++N2) {
1427
1427
  let I2 = Mt(n[N2], s), O2 = I2 !== null && It(I2, s) ? I2 : null;
1428
- if (i[N2] = O2, O2 !== null) h3++;
1428
+ if (i[N2] = O2, O2 !== null) h4++;
1429
1429
  else {
1430
1430
  let d2 = n[N2];
1431
1431
  if (d2 != null) {
1432
1432
  let p2 = String(d2).trim();
1433
1433
  if (p2.length > 0) {
1434
1434
  let m2 = p2.toLowerCase();
1435
- r.has(m2) || (r.add(m2), M4.push(p2));
1435
+ r.has(m2) || (r.add(m2), M2.push(p2));
1436
1436
  }
1437
1437
  }
1438
1438
  }
1439
1439
  }
1440
- return { iso: i, unmatched: M4, matchedRows: h3, totalRows: n.length };
1440
+ return { iso: i, unmatched: M2, matchedRows: h4, totalRows: n.length };
1441
1441
  }
1442
1442
 
1443
1443
  // ../shape-core/dist/chunk-RS7LNZD7.mjs
@@ -1547,147 +1547,147 @@ var ct2 = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, Strin
1547
1547
 
1548
1548
  // ../shape-core/dist/index.mjs
1549
1549
  /*! @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. */
1550
- var w2 = 2;
1550
+ var E2 = 2;
1551
1551
  var Z2 = 400;
1552
- function z2(r) {
1553
- return !!E(r);
1552
+ function F3(i) {
1553
+ return !!E(i);
1554
1554
  }
1555
- function A(r) {
1555
+ function P2(i) {
1556
1556
  let n = /* @__PURE__ */ new Set();
1557
- for (let e of r) {
1558
- if (e == null) continue;
1559
- let s = u(String(e));
1557
+ for (let t of i) {
1558
+ if (t == null) continue;
1559
+ let s = u(String(t));
1560
1560
  if (!V(s) && !n.has(s) && (n.add(s), n.size >= Z2)) break;
1561
1561
  }
1562
1562
  return Array.from(n);
1563
1563
  }
1564
- function C(r) {
1565
- let n = A(r);
1566
- if (n.length === 0 || G2(r) < 95) return false;
1567
- let e = n.filter((c2) => z2(c2) && !Y(c2)).length, s = n.filter((c2) => !z2(c2) && !!Y(c2)).length;
1568
- return e >= 1 && e >= s;
1564
+ function h3(i) {
1565
+ let n = P2(i);
1566
+ if (n.length === 0 || G2(i) < 95) return false;
1567
+ let t = n.filter((l) => F3(l) && !Y(l)).length, s = n.filter((l) => !F3(l) && !!Y(l)).length;
1568
+ return t >= 1 && t >= s;
1569
1569
  }
1570
- function W2(r, n) {
1571
- if (!Y(r)) return false;
1572
- let e = E(r);
1573
- return e ? n === "world" ? true : s3.has(e) : false;
1570
+ function W2(i, n) {
1571
+ if (!Y(i)) return false;
1572
+ let t = E(i);
1573
+ return t ? n === "world" ? true : s3.has(t) : false;
1574
1574
  }
1575
- function G2(r) {
1576
- let n = A(r);
1575
+ function G2(i) {
1576
+ let n = P2(i);
1577
1577
  if (n.length === 0) return 0;
1578
- let e = 0;
1579
- for (let s of n) z2(s) && e++;
1580
- return Math.round(e / n.length * 1e3) / 10;
1578
+ let t = 0;
1579
+ for (let s of n) F3(s) && t++;
1580
+ return Math.round(t / n.length * 1e3) / 10;
1581
1581
  }
1582
- function M2(r) {
1583
- let n = A(r);
1582
+ function v2(i) {
1583
+ let n = P2(i);
1584
1584
  if (n.length === 0) return 0;
1585
- let e = 0;
1586
- for (let s of n) Y(s) && e++;
1587
- return Math.round(e / n.length * 1e3) / 10;
1585
+ let t = 0;
1586
+ for (let s of n) Y(s) && t++;
1587
+ return Math.round(t / n.length * 1e3) / 10;
1588
1588
  }
1589
- function F3(r) {
1589
+ function $2(i) {
1590
1590
  let n = /* @__PURE__ */ new Set();
1591
- for (let e of r) {
1592
- if (e == null) continue;
1593
- let s = String(e).trim();
1591
+ for (let t of i) {
1592
+ if (t == null) continue;
1593
+ let s = String(t).trim();
1594
1594
  if (!V(u(s)) && !n.has(s) && (n.add(s), n.size >= Z2)) break;
1595
1595
  }
1596
1596
  return Array.from(n);
1597
1597
  }
1598
- function $2(r) {
1599
- let n = F3(r);
1598
+ function z2(i) {
1599
+ let n = $2(i);
1600
1600
  if (n.length === 0) return 0;
1601
- let e = 0;
1602
- for (let s of n) Z(s).length > 0 && e++;
1603
- return Math.round(e / n.length * 1e3) / 10;
1601
+ let t = 0;
1602
+ for (let s of n) Z(s).length > 0 && t++;
1603
+ return Math.round(t / n.length * 1e3) / 10;
1604
1604
  }
1605
- function q3(r, n) {
1606
- return y2(n, rt) ? true : F3(r).some((e) => /^\d{5}(-\d{4})?$/.test(e.replace(/\.0+$/, "")));
1605
+ function q3(i, n) {
1606
+ return y2(n, rt) ? true : $2(i).some((t) => /^\d{5}(-\d{4})?$/.test(t.replace(/\.0+$/, "")));
1607
1607
  }
1608
- function de(r, n) {
1609
- let e = A(r);
1610
- if (e.length === 0) return 0;
1608
+ function gt(i, n) {
1609
+ let t = P2(i);
1610
+ if (t.length === 0) return 0;
1611
1611
  let s = 0;
1612
- for (let c2 of e) p3(c2, n) && s++;
1613
- return Math.round(s / e.length * 1e3) / 10;
1612
+ for (let l of t) p3(l, n) && s++;
1613
+ return Math.round(s / t.length * 1e3) / 10;
1614
1614
  }
1615
- function D3(r, n) {
1616
- let e = 0;
1617
- for (let s of A(r)) n(s) && e++;
1618
- return e;
1615
+ function D3(i, n) {
1616
+ let t = 0;
1617
+ for (let s of P2(i)) n(s) && t++;
1618
+ return t;
1619
1619
  }
1620
- function ge(r, n) {
1621
- let e = 0;
1622
- for (let s of F3(r)) n(s) && e++;
1623
- return e;
1620
+ function yt2(i, n) {
1621
+ let t = 0;
1622
+ for (let s of $2(i)) n(s) && t++;
1623
+ return t;
1624
1624
  }
1625
- function ye(r, n, e, s, c2) {
1626
- let P2 = [], u2 = [], o = {}, _2 = {}, v2 = new Set(r), l = (t) => n.map((i) => i[t]);
1627
- for (let t of ["city", "country"]) {
1628
- let i = e?.[t];
1629
- i && v2.has(i) && (o[t] = i);
1625
+ function Ct(i, n, t, s, l) {
1626
+ let x3 = [], c2 = [], o = {}, I2 = {}, _2 = new Set(i), u2 = (e) => n.map((r) => r[e]);
1627
+ for (let e of ["city", "country"]) {
1628
+ let r = t?.[e];
1629
+ r && _2.has(r) && (o[e] = r);
1630
1630
  }
1631
- let X2 = new Set(c2 ?? r);
1632
- for (let t of ["lat", "lon"]) {
1633
- let i = e?.[t];
1634
- i && X2.has(i) && (o[t] = i);
1631
+ let X2 = new Set(l ?? i);
1632
+ for (let e of ["lat", "lon"]) {
1633
+ let r = t?.[e];
1634
+ r && X2.has(r) && (o[e] = r);
1635
1635
  }
1636
- let d2 = e?.zip;
1637
- if (d2 && v2.has(d2)) {
1638
- let t = l(d2), i = $2(t);
1639
- i < 95 ? u2.push(`zip=${d2} (only ${i}% of values read as ZIPs)`) : q3(t, d2) ? o.zip = d2 : u2.push(`zip=${d2} (all values are 3-4 digits with nothing to say they are postal)`);
1636
+ let d2 = t?.zip;
1637
+ if (d2 && _2.has(d2)) {
1638
+ let e = u2(d2), r = z2(e);
1639
+ r < 95 ? c2.push(`zip=${d2} (only ${r}% of values read as ZIPs)`) : q3(e, d2) ? o.zip = d2 : c2.push(`zip=${d2} (all values are 3-4 digits with nothing to say they are postal)`);
1640
1640
  }
1641
- let m2 = e?.state;
1642
- if (m2 && v2.has(m2)) {
1643
- let t = l(m2), i = A(t);
1644
- i.length > 0 && i.every((a4) => W2(a4, s)) ? u2.push(`state=${m2} (every value is "CA", which is both Canada and California)`) : C(t) ? (u2.push(`state=${m2} (every value is a country, not a state)`), o.country || (o.country = m2)) : M2(t) < 95 ? u2.push(`state=${m2} (only ${M2(t)}% of values are states/provinces)`) : o.state = m2;
1641
+ let m2 = t?.state;
1642
+ if (m2 && _2.has(m2)) {
1643
+ let e = u2(m2), r = P2(e);
1644
+ r.length > 0 && r.every((a4) => W2(a4, s)) ? c2.push(`state=${m2} (every value is "CA", which is both Canada and California)`) : h3(e) ? (c2.push(`state=${m2} (every value is a country, not a state)`), o.country || (o.country = m2)) : v2(e) < 95 ? c2.push(`state=${m2} (only ${v2(e)}% of values are states/provinces)`) : o.state = m2;
1645
1645
  }
1646
- let g3 = new Set(Object.values(o).filter(Boolean)), T3 = r.filter((t) => !g3.has(t) && !t.startsWith("__"));
1646
+ let g3 = new Set(Object.values(o).filter(Boolean)), A = i.filter((e) => !g3.has(e) && !e.startsWith("__"));
1647
1647
  if (!o.state) {
1648
- let t = null;
1649
- for (let i of T3) {
1650
- let a4 = l(i);
1651
- if (C(a4)) continue;
1652
- let f4 = M2(a4);
1648
+ let e = null;
1649
+ for (let r of A) {
1650
+ let a4 = u2(r);
1651
+ if (h3(a4)) continue;
1652
+ let f4 = v2(a4);
1653
1653
  if (f4 < 95) continue;
1654
- let k2 = D3(a4, (x3) => !!Y(x3)), Y2 = D3(a4, (x3) => !!Y(x3) && !W2(x3, s));
1655
- k2 < w2 && Y2 < 1 || (!t || f4 > t.pct) && (t = { name: i, pct: f4 });
1654
+ let k2 = D3(a4, (R2) => !!Y(R2)), J2 = D3(a4, (R2) => !!Y(R2) && !W2(R2, s));
1655
+ k2 < E2 && J2 < 1 || (!e || f4 > e.pct) && (e = { name: r, pct: f4 });
1656
1656
  }
1657
- t && (o.state = t.name, g3.add(t.name), P2.push(`state=${t.name} (${t.pct}% states/provinces)`));
1657
+ e && (o.state = e.name, g3.add(e.name), x3.push(`state=${e.name} (${e.pct}% states/provinces)`));
1658
1658
  }
1659
- if (!o.zip) for (let t of T3) {
1660
- if (g3.has(t)) continue;
1661
- let i = l(t), a4 = $2(i);
1662
- if (!(a4 < 95) && q3(i, t) && !(ge(i, (f4) => Z(f4).length > 0) < w2)) {
1663
- o.zip = t, g3.add(t), P2.push(`zip=${t} (${a4}% ZIP codes)`);
1659
+ if (!o.zip) for (let e of A) {
1660
+ if (g3.has(e)) continue;
1661
+ let r = u2(e), a4 = z2(r);
1662
+ if (!(a4 < 95) && q3(r, e) && !(yt2(r, (f4) => Z(f4).length > 0) < E2)) {
1663
+ o.zip = e, g3.add(e), x3.push(`zip=${e} (${a4}% ZIP codes)`);
1664
1664
  break;
1665
1665
  }
1666
1666
  }
1667
- let h3 = o.country;
1668
- if (!h3 || !C(l(h3))) {
1669
- let t = null;
1670
- for (let i of T3) {
1671
- if (g3.has(i) || !C(l(i))) continue;
1672
- let a4 = G2(l(i));
1673
- (!t || a4 > t.pct) && (t = { name: i, pct: a4 });
1667
+ let C = o.country;
1668
+ if (!C || !h3(u2(C))) {
1669
+ let e = null;
1670
+ for (let r of A) {
1671
+ if (g3.has(r) || !h3(u2(r))) continue;
1672
+ let a4 = G2(u2(r));
1673
+ (!e || a4 > e.pct) && (e = { name: r, pct: a4 });
1674
1674
  }
1675
- t && (h3 && (u2.push(`country=${h3} (only ${G2(l(h3))}% of values are country identifiers; using ${t.name} instead)`), _2.country = h3), o.country = t.name, g3.add(t.name), P2.push(`country=${t.name}`));
1675
+ e && (C && (c2.push(`country=${C} (only ${G2(u2(C))}% of values are country identifiers; using ${e.name} instead)`), I2.country = C), o.country = e.name, g3.add(e.name), x3.push(`country=${e.name}`));
1676
1676
  }
1677
1677
  if (!o.city) {
1678
- let t = null;
1679
- for (let i of T3) {
1680
- if (g3.has(i)) continue;
1681
- let a4 = l(i), f4 = de(a4, s);
1682
- f4 < m3 || D3(a4, (k2) => p3(k2, s)) < w2 || (!t || f4 > t.pct) && (t = { name: i, pct: f4 });
1678
+ let e = null;
1679
+ for (let r of A) {
1680
+ if (g3.has(r)) continue;
1681
+ let a4 = u2(r), f4 = gt(a4, s);
1682
+ f4 < m3 || D3(a4, (k2) => p3(k2, s)) < E2 || (!e || f4 > e.pct) && (e = { name: r, pct: f4 });
1683
1683
  }
1684
- t && (o.city = t.name, P2.push(`city=${t.name} (${t.pct}% known cities)`));
1684
+ e && (o.city = e.name, x3.push(`city=${e.name} (${e.pct}% known cities)`));
1685
1685
  }
1686
- let B2 = o.country ? l(o.country) : [], L2 = !!o.country && C(B2), j2 = L2 ? new Set(B2.map((t) => E(t == null ? null : String(t))).filter(Boolean)).size : 0, K3 = L2 && j2 >= 2, N2 = !!(o.lat && o.lon) && n.some((t) => {
1687
- let i = +String(t[o.lat] ?? "").trim(), a4 = +String(t[o.lon] ?? "").trim();
1688
- return isFinite(i) && isFinite(a4) && i >= -90 && i <= 90 && a4 >= -180 && a4 <= 180 && String(t[o.lat] ?? "").trim() !== "" && String(t[o.lon] ?? "").trim() !== "";
1686
+ let B2 = o.country ? u2(o.country) : [], L2 = !!o.country && h3(B2), Y2 = L2 ? new Set(B2.map((e) => E(e == null ? null : String(e))).filter(Boolean)).size : 0, K3 = L2 && Y2 >= 2, N2 = !!(o.lat && o.lon) && n.some((e) => {
1687
+ let r = +String(e[o.lat] ?? "").trim(), a4 = +String(e[o.lon] ?? "").trim();
1688
+ return isFinite(r) && isFinite(a4) && r >= -90 && r <= 90 && a4 >= -180 && a4 <= 180 && String(e[o.lat] ?? "").trim() !== "" && String(e[o.lon] ?? "").trim() !== "";
1689
1689
  });
1690
- return o.lat && o.lon && !N2 && u2.push(`lat/lon=${o.lat}/${o.lon} (no row holds a usable coordinate pair)`), o.country && !K3 && !(o.city || o.state || o.zip || N2) && u2.push(L2 ? `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 || K3 || N2) ? o : null, backfilled: P2, refused: u2, ...Object.keys(_2).length ? { labelFallback: _2 } : {} };
1690
+ return o.lat && o.lon && !N2 && c2.push(`lat/lon=${o.lat}/${o.lon} (no row holds a usable coordinate pair)`), o.country && !K3 && !(o.city || o.state || o.zip || N2) && c2.push(L2 ? `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 || K3 || N2) ? o : null, backfilled: x3, refused: c2, ...Object.keys(I2).length ? { labelFallback: I2 } : {} };
1691
1691
  }
1692
1692
 
1693
1693
  // src/payload.ts
@@ -1702,7 +1702,7 @@ function resolvePointChannel(cols, rowObjs, point) {
1702
1702
  let labelCol;
1703
1703
  if (bind) {
1704
1704
  const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
1705
- const res = ye(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
1705
+ const res = Ct(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
1706
1706
  bind = res.bind;
1707
1707
  rolesBackfilled = res.backfilled;
1708
1708
  rolesRefused = res.refused;
@@ -1790,11 +1790,11 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
1790
1790
  const row = rowObjs[r];
1791
1791
  const a4 = new Array(cols.length + extra);
1792
1792
  for (let c2 = 0; c2 < cols.length; c2++) {
1793
- const v2 = row[colNames[c2]];
1794
- if (v2 instanceof Date) {
1795
- a4[c2] = v2.toISOString();
1793
+ const v3 = row[colNames[c2]];
1794
+ if (v3 instanceof Date) {
1795
+ a4[c2] = v3.toISOString();
1796
1796
  } else {
1797
- a4[c2] = v2 ?? null;
1797
+ a4[c2] = v3 ?? null;
1798
1798
  }
1799
1799
  }
1800
1800
  let k2 = cols.length;
@@ -1849,8 +1849,8 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
1849
1849
  function createMarkResolver(env) {
1850
1850
  const { root, doc, log } = env;
1851
1851
  const isElement = (t) => {
1852
- const E2 = doc?.defaultView?.Element ?? globalThis.Element;
1853
- if (E2 && t instanceof E2) return true;
1852
+ const E4 = doc?.defaultView?.Element ?? globalThis.Element;
1853
+ if (E4 && t instanceof E4) return true;
1854
1854
  return !!t && typeof t.closest === "function" && typeof t.getAttribute === "function";
1855
1855
  };
1856
1856
  const viewStyle = (n) => {
@@ -2159,13 +2159,13 @@ function censusHitBands(container, doc) {
2159
2159
  if (!OPEN_TAGS.has(tag)) continue;
2160
2160
  const cs = styleOf2(el, ownerDoc);
2161
2161
  const open = isUnfilled(attrOrComputed(el, "fill", cs));
2162
- const w3 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
2162
+ const w2 = widthPx(attrOrComputed(el, "stroke-width", cs) || "1");
2163
2163
  const geom = String(el.getAttribute?.("d") ?? "") || `${tag}#${String(el.getAttribute?.(ROW_IDX_ATTR) ?? "")}`;
2164
2164
  const inert = String(cs?.pointerEvents ?? el.style?.pointerEvents ?? "") === "none";
2165
- rows.push({ el, geom, w: w3, open, inert });
2166
- if (isFinite(w3)) {
2165
+ rows.push({ el, geom, w: w2, open, inert });
2166
+ if (isFinite(w2)) {
2167
2167
  const prev = widestByGeom.get(geom);
2168
- if (prev === void 0 || w3 > prev) widestByGeom.set(geom, w3);
2168
+ if (prev === void 0 || w2 > prev) widestByGeom.set(geom, w2);
2169
2169
  }
2170
2170
  }
2171
2171
  const out = { ...EMPTY3 };
@@ -2198,9 +2198,9 @@ var VALUE_AXIS_MIN_FIT = 0.8;
2198
2198
  var MIN_AXIS_SPAN_PX = 40;
2199
2199
  var EMPTY4 = { marks: 0, axis: "", column: "", fit: 0, offShare: 0, medianOffRadii: 0 };
2200
2200
  function num(el, name) {
2201
- const v2 = el.getAttribute?.(name);
2202
- if (v2 === null || v2 === void 0 || String(v2).trim() === "") return NaN;
2203
- return parseFloat(String(v2));
2201
+ const v3 = el.getAttribute?.(name);
2202
+ if (v3 === null || v3 === void 0 || String(v3).trim() === "") return NaN;
2203
+ return parseFloat(String(v3));
2204
2204
  }
2205
2205
  function median(xs) {
2206
2206
  if (!xs.length) return NaN;
@@ -2208,15 +2208,15 @@ function median(xs) {
2208
2208
  const m2 = s.length >> 1;
2209
2209
  return s.length % 2 ? s[m2] : (s[m2 - 1] + s[m2]) / 2;
2210
2210
  }
2211
- function robustLine(v2, pos) {
2212
- const n = v2.length;
2211
+ function robustLine(v3, pos) {
2212
+ const n = v3.length;
2213
2213
  const step = Math.max(1, Math.floor(n / FIT_SAMPLE));
2214
2214
  const idx = [];
2215
2215
  for (let i = 0; i < n; i += step) idx.push(i);
2216
2216
  const slopes = [];
2217
2217
  for (let p2 = 0; p2 < idx.length; p2++) {
2218
2218
  for (let q4 = p2 + 1; q4 < idx.length; q4++) {
2219
- const dv = v2[idx[q4]] - v2[idx[p2]];
2219
+ const dv = v3[idx[q4]] - v3[idx[p2]];
2220
2220
  if (Math.abs(dv) < 1e-12) continue;
2221
2221
  slopes.push((pos[idx[q4]] - pos[idx[p2]]) / dv);
2222
2222
  }
@@ -2224,7 +2224,7 @@ function robustLine(v2, pos) {
2224
2224
  if (slopes.length < 3) return null;
2225
2225
  const b4 = median(slopes);
2226
2226
  if (!Number.isFinite(b4) || Math.abs(b4) < 1e-12) return null;
2227
- const a4 = median(pos.map((y5, i) => y5 - b4 * v2[i]));
2227
+ const a4 = median(pos.map((y5, i) => y5 - b4 * v3[i]));
2228
2228
  return Number.isFinite(a4) ? { a: a4, b: b4 } : null;
2229
2229
  }
2230
2230
  function censusValuePlacement(container, data) {
@@ -2252,30 +2252,30 @@ function censusValuePlacement(container, data) {
2252
2252
  for (let c2 = 0; c2 < columns.length; c2++) {
2253
2253
  if (/^__.*__$/.test(String(columns[c2]?.name ?? ""))) continue;
2254
2254
  const vals = dots.map((d2) => {
2255
- const v2 = d2.row[c2];
2256
- return v2 === null || v2 === void 0 || v2 === "" ? NaN : typeof v2 === "number" ? v2 : Number(v2);
2255
+ const v3 = d2.row[c2];
2256
+ return v3 === null || v3 === void 0 || v3 === "" ? NaN : typeof v3 === "number" ? v3 : Number(v3);
2257
2257
  });
2258
2258
  const finite = vals.filter(Number.isFinite);
2259
2259
  if (finite.length < dots.length * 0.9 || new Set(finite).size < 8) continue;
2260
- const logs = finite.every((v2) => v2 > 0) ? [false, true] : [false];
2260
+ const logs = finite.every((v3) => v3 > 0) ? [false, true] : [false];
2261
2261
  for (const log of logs) {
2262
2262
  for (const axis of ["x", "y"]) {
2263
2263
  const keep = [];
2264
- const v2 = [], pos = [];
2264
+ const v3 = [], pos = [];
2265
2265
  dots.forEach((d2, k2) => {
2266
2266
  if (!Number.isFinite(vals[k2])) return;
2267
2267
  keep.push(k2);
2268
- v2.push(log ? Math.log10(vals[k2]) : vals[k2]);
2268
+ v3.push(log ? Math.log10(vals[k2]) : vals[k2]);
2269
2269
  pos.push(axis === "x" ? d2.x : d2.y);
2270
2270
  });
2271
- const line = robustLine(v2, pos);
2271
+ const line = robustLine(v3, pos);
2272
2272
  if (!line) continue;
2273
2273
  const lo = Math.min(...pos), hi = Math.max(...pos);
2274
2274
  if (hi - lo < MIN_AXIS_SPAN_PX) continue;
2275
2275
  const mean = pos.reduce((s, p2) => s + p2, 0) / pos.length;
2276
2276
  let ssRes = 0, ssTot = 0;
2277
2277
  const res = pos.map((p2, k2) => {
2278
- const e = p2 - (line.a + line.b * v2[k2]);
2278
+ const e = p2 - (line.a + line.b * v3[k2]);
2279
2279
  ssRes += e * e;
2280
2280
  ssTot += (p2 - mean) ** 2;
2281
2281
  return e;
@@ -2336,12 +2336,12 @@ function contentExtentOf(boxes) {
2336
2336
  if (usable.length === 0) return { w: 0, h: 0, source: "none" };
2337
2337
  const inFlow = usable.filter((b4) => !b4.floating);
2338
2338
  const counted = inFlow.length > 0 ? inFlow : usable;
2339
- let w3 = 0, h3 = 0;
2339
+ let w2 = 0, h4 = 0;
2340
2340
  for (const b4 of counted) {
2341
- if (b4.right > w3) w3 = b4.right;
2342
- if (b4.bottom > h3) h3 = b4.bottom;
2341
+ if (b4.right > w2) w2 = b4.right;
2342
+ if (b4.bottom > h4) h4 = b4.bottom;
2343
2343
  }
2344
- return { w: w3, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
2344
+ return { w: w2, h: h4, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
2345
2345
  }
2346
2346
  function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL_SLACK_PX) {
2347
2347
  return {
@@ -2351,8 +2351,8 @@ function scrollFitFor(contentW, contentH, viewportW, viewportH, slackPx = SCROLL
2351
2351
  }
2352
2352
  var FIT_CONTENT_SELECTOR = "text, .d3-mark, .d3-legend-mark";
2353
2353
  var PHANTOM_FRACTION = 0.95;
2354
- function isPhantomBox(w3, h3, refW, refH) {
2355
- return w3 > refW * PHANTOM_FRACTION || h3 > refH * PHANTOM_FRACTION;
2354
+ function isPhantomBox(w2, h4, refW, refH) {
2355
+ return w2 > refW * PHANTOM_FRACTION || h4 > refH * PHANTOM_FRACTION;
2356
2356
  }
2357
2357
  var MAX_FRAME_GROW_FACTOR = 20;
2358
2358
  function planFrameGrow(inkBottomPx, elHeightPx, viewBoxH, ctmScale, slackPx = SCROLL_SLACK_PX, maxFactor = MAX_FRAME_GROW_FACTOR) {
@@ -2651,8 +2651,8 @@ function pinScrolledAxis(container, svg) {
2651
2651
  }
2652
2652
  const pinSvg = doc.createElementNS(SVG_NS2, "svg");
2653
2653
  for (const a4 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
2654
- const v2 = svg.getAttribute(a4);
2655
- if (v2) pinSvg.setAttribute(a4, v2);
2654
+ const v3 = svg.getAttribute(a4);
2655
+ if (v3) pinSvg.setAttribute(a4, v3);
2656
2656
  }
2657
2657
  const styles = svg.querySelectorAll("style");
2658
2658
  for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
@@ -2833,10 +2833,10 @@ function parseRGBA(c2) {
2833
2833
  const s = c2.trim();
2834
2834
  const m2 = s.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/i);
2835
2835
  if (m2) return [parseFloat(m2[1]), parseFloat(m2[2]), parseFloat(m2[3]), m2[4] !== void 0 ? parseFloat(m2[4]) : 1];
2836
- let h3 = s.replace(/^#/, "");
2837
- if (h3.length === 3) h3 = h3.split("").map((ch) => ch + ch).join("");
2838
- if (h3.length === 6 && /^[0-9a-fA-F]{6}$/.test(h3)) {
2839
- return [parseInt(h3.slice(0, 2), 16), parseInt(h3.slice(2, 4), 16), parseInt(h3.slice(4, 6), 16), 1];
2836
+ let h4 = s.replace(/^#/, "");
2837
+ if (h4.length === 3) h4 = h4.split("").map((ch) => ch + ch).join("");
2838
+ if (h4.length === 6 && /^[0-9a-fA-F]{6}$/.test(h4)) {
2839
+ return [parseInt(h4.slice(0, 2), 16), parseInt(h4.slice(2, 4), 16), parseInt(h4.slice(4, 6), 16), 1];
2840
2840
  }
2841
2841
  return null;
2842
2842
  }
@@ -2884,8 +2884,8 @@ function compositeOver(fg, bg) {
2884
2884
  ];
2885
2885
  }
2886
2886
  function relativeLuminance(rgb) {
2887
- const lin = rgb.map((v2) => {
2888
- const s = v2 / 255;
2887
+ const lin = rgb.map((v3) => {
2888
+ const s = v3 / 255;
2889
2889
  return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
2890
2890
  });
2891
2891
  return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
@@ -2933,9 +2933,9 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
2933
2933
  }
2934
2934
  return out;
2935
2935
  }
2936
- function clamp01(v2) {
2937
- if (typeof v2 !== "number" || !isFinite(v2)) return 1;
2938
- return Math.max(0, Math.min(1, v2));
2936
+ function clamp01(v3) {
2937
+ if (typeof v3 !== "number" || !isFinite(v3)) return 1;
2938
+ return Math.max(0, Math.min(1, v3));
2939
2939
  }
2940
2940
  function hexToRGB(hex2) {
2941
2941
  const p2 = toRGBA(hex2);
@@ -2948,10 +2948,10 @@ var LABEL_CONTRAST_CAP = 2e3;
2948
2948
  var EMPTY5 = { rects: 0, scanned: 0, fixed: 0, pillsBoosted: 0, offFill: 0, pageMajority: 0, paintedOver: 0 };
2949
2949
  function backedSamples(el, pts) {
2950
2950
  try {
2951
- const ge2 = el;
2952
- if (typeof ge2.isPointInFill !== "function" || typeof ge2.getScreenCTM !== "function") return null;
2953
- const m2 = ge2.getScreenCTM();
2954
- const svg = ge2.ownerSVGElement;
2951
+ const ge = el;
2952
+ if (typeof ge.isPointInFill !== "function" || typeof ge.getScreenCTM !== "function") return null;
2953
+ const m2 = ge.getScreenCTM();
2954
+ const svg = ge.ownerSVGElement;
2955
2955
  if (!m2 || !svg || typeof svg.createSVGPoint !== "function") return null;
2956
2956
  if (pts.length === 0) return null;
2957
2957
  const inv = m2.inverse();
@@ -2960,7 +2960,7 @@ function backedSamples(el, pts) {
2960
2960
  const p2 = svg.createSVGPoint();
2961
2961
  p2.x = pts[i].x;
2962
2962
  p2.y = pts[i].y;
2963
- hit.push(ge2.isPointInFill(p2.matrixTransform(inv)));
2963
+ hit.push(ge.isPointInFill(p2.matrixTransform(inv)));
2964
2964
  }
2965
2965
  return hit;
2966
2966
  } catch {
@@ -3222,7 +3222,7 @@ function createChartHost(container, config) {
3222
3222
  let data = config.data;
3223
3223
  {
3224
3224
  const stamped = config.data?.meta?.hostContract;
3225
- const major = (v2) => (v2 || "").split(".")[0];
3225
+ const major = (v3) => (v3 || "").split(".")[0];
3226
3226
  if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
3227
3227
  try {
3228
3228
  (win?.console ?? console)?.warn(
package/dist/index.mjs CHANGED
@@ -130,7 +130,7 @@ import {
130
130
  toRGBA,
131
131
  unpinScrolledAxis,
132
132
  valuePlacementFlag
133
- } from "./chunk-X3HRLEDK.mjs";
133
+ } from "./chunk-IXJYGTAY.mjs";
134
134
  import "./chunk-A2GMXZP7.mjs";
135
135
  import "./chunk-GHODWOAL.mjs";
136
136
 
package/dist/react.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  createChartHost,
5
5
  geoFromCache,
6
6
  loadGeo
7
- } from "./chunk-X3HRLEDK.mjs";
7
+ } from "./chunk-IXJYGTAY.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.5.112",
3
+ "version": "0.5.113",
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",