@bicharts/chart-host 0.6.37 → 0.6.39

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,13 +22,13 @@ 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 r2() {
24
24
  var n = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : {};
25
- var d2, s = !n.document && !!n.postMessage, a2 = n.IS_PAPA_WORKER || false, o2 = {}, h3 = 0, v3 = {};
25
+ var d2, s = !n.document && !!n.postMessage, a2 = n.IS_PAPA_WORKER || false, o2 = {}, h3 = 0, v2 = {};
26
26
  function P4(e) {
27
27
  return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
28
28
  }
29
29
  function u2(e) {
30
30
  this._handle = null, this._finished = false, this._completed = false, this._halted = false, this._input = null, this._baseIndex = 0, this._partialLine = "", this._rowCount = 0, this._start = 0, this._nextChunk = null, this.isFirstChunk = true, this._completeResults = { data: [], errors: [], meta: {} }, function(e2) {
31
- var t = b2(e2);
31
+ var t = b4(e2);
32
32
  t.chunkSize = parseInt(t.chunkSize), e2.step || e2.chunk || (t.chunkSize = null);
33
33
  this._handle = new i(t), (this._handle.streamer = this)._config = t;
34
34
  }.call(this, e), this.parseChunk = function(t, e2) {
@@ -41,7 +41,7 @@ var require_papaparse_min = __commonJS({
41
41
  var i2 = this._partialLine + t, r4 = (this._partialLine = "", this._handle.parse(i2, this._baseIndex, !this._finished));
42
42
  if (!this._handle.paused() && !this._handle.aborted()) {
43
43
  t = r4.meta.cursor, i2 = (this._finished || (this._partialLine = i2.substring(t - this._baseIndex), this._baseIndex = t), r4 && r4.data && (this._rowCount += r4.data.length), this._finished || this._config.preview && this._rowCount >= this._config.preview);
44
- if (a2) n.postMessage({ results: r4, workerId: v3.WORKER_ID, finished: i2 });
44
+ if (a2) n.postMessage({ results: r4, workerId: v2.WORKER_ID, finished: i2 });
45
45
  else if (q2(this._config.chunk) && !e2) {
46
46
  if (this._config.chunk(r4, this._handle), this._handle.paused() || this._handle.aborted()) return void (this._halted = true);
47
47
  this._completeResults = r4 = 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
- q2(this._config.error) ? this._config.error(e2) : a2 && this._config.error && n.postMessage({ workerId: v3.WORKER_ID, error: e2, finished: false });
53
+ q2(this._config.error) ? this._config.error(e2) : a2 && this._config.error && n.postMessage({ workerId: v2.WORKER_ID, error: e2, finished: false });
54
54
  };
55
55
  }
56
56
  function f4(e) {
57
57
  var r4;
58
- (e = e || {}).chunkSize || (e.chunkSize = v3.RemoteChunkSize), u2.call(this, e), this._nextChunk = s ? function() {
58
+ (e = e || {}).chunkSize || (e.chunkSize = v2.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 = v3.LocalChunkSize), u2.call(this, e);
88
+ (e = e || {}).chunkSize || (e.chunkSize = v2.LocalChunkSize), u2.call(this, e);
89
89
  var i2, r4, n2 = "undefined" != typeof FileReader;
90
90
  this.stream = function(e2) {
91
91
  this._input = e2, r4 = e2.slice || e2.webkitSlice || e2.mozSlice, n2 ? ((i2 = new FileReader()).onload = y4(this._chunkLoaded, this), i2.onerror = y4(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk();
@@ -142,7 +142,7 @@ var require_papaparse_min = __commonJS({
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 && a4 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v3.DefaultDelimiter + "'"), a4 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
145
+ if (p4 && a4 && (k3("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v2.DefaultDelimiter + "'"), a4 = false), m4.skipEmptyLines && (p4.data = p4.data.filter(function(e4) {
146
146
  return !y5(e4);
147
147
  })), _4()) {
148
148
  let t4 = function(e4, t5) {
@@ -181,13 +181,13 @@ var require_papaparse_min = __commonJS({
181
181
  }), this.parse = function(e2, t2, i4) {
182
182
  var r5 = m4.quoteChar || '"', r5 = (m4.newline || (m4.newline = this.guessLineEndings(e2, r5)), a4 = false, m4.delimiter ? q2(m4.delimiter) && (m4.delimiter = m4.delimiter(e2), p4.meta.delimiter = m4.delimiter) : ((r5 = ((e4, t4, i5, r6, n4) => {
183
183
  var s4, a5, o5, h5;
184
- n4 = n4 || [",", " ", "|", ";", v3.RECORD_SEP, v3.UNIT_SEP];
184
+ n4 = n4 || [",", " ", "|", ";", v2.RECORD_SEP, v2.UNIT_SEP];
185
185
  for (var u5 = 0; u5 < n4.length; u5++) {
186
186
  for (var d4, f6 = n4[u5], l3 = 0, c5 = 0, p5 = 0, g5 = (o5 = void 0, new E4({ comments: r6, delimiter: f6, newline: t4, preview: 10 }).parse(e4)), _5 = 0; _5 < g5.data.length; _5++) i5 && y5(g5.data[_5]) ? p5++ : (d4 = g5.data[_5].length, c5 += d4, void 0 === o5 ? o5 = d4 : 0 < d4 && (l3 += Math.abs(d4 - o5), o5 = d4));
187
187
  0 < g5.data.length && (c5 /= g5.data.length - p5), (void 0 === a5 || l3 <= a5) && (void 0 === h5 || h5 < c5) && 1.99 < c5 && (a5 = l3, s4 = f6, h5 = 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 = r5.bestDelimiter : (a4 = true, m4.delimiter = v3.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b2(m4));
190
+ })(e2, m4.newline, m4.skipEmptyLines, m4.comments, m4.delimitersToGuess)).successful ? m4.delimiter = r5.bestDelimiter : (a4 = true, m4.delimiter = v2.DefaultDelimiter), p4.meta.delimiter = m4.delimiter), b4(m4));
191
191
  return m4.preview && m4.header && r5.preview++, n2 = e2, s2 = new E4(r5), p4 = s2.parse(n2, t2, i4), g4(), l2 ? { meta: { paused: true } } : p4 || { meta: { paused: false } };
192
192
  }, this.paused = function() {
193
193
  return l2;
@@ -201,23 +201,23 @@ var require_papaparse_min = __commonJS({
201
201
  e = true, s2.abort(), p4.meta.aborted = true, q2(m4.complete) && m4.complete(p4), n2 = "";
202
202
  }, this.guessLineEndings = function(e2, t2) {
203
203
  e2 = e2.substring(0, 1048576);
204
- var t2 = new RegExp(U3(t2) + "([^]*?)" + U3(t2), "gm"), i4 = (e2 = e2.replace(t2, "")).split("\r"), t2 = e2.split("\n"), e2 = 1 < t2.length && t2[0].length < i4[0].length;
204
+ var t2 = new RegExp(U2(t2) + "([^]*?)" + U2(t2), "gm"), i4 = (e2 = e2.replace(t2, "")).split("\r"), t2 = e2.split("\n"), e2 = 1 < t2.length && t2[0].length < i4[0].length;
205
205
  if (1 === i4.length || e2) return "\n";
206
206
  for (var r5 = 0, n4 = 0; n4 < i4.length; n4++) "\n" === i4[n4][0] && r5++;
207
207
  return r5 >= i4.length / 2 ? "\r\n" : "\r";
208
208
  };
209
209
  }
210
- function U3(e) {
210
+ function U2(e) {
211
211
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
212
212
  }
213
- function E4(C) {
214
- var S2 = (C = C || {}).delimiter, O3 = C.newline, x3 = C.comments, I4 = C.step, A2 = C.preview, T2 = C.fastMode, D3 = null, L4 = false, F4 = null == C.quoteChar ? '"' : C.quoteChar, j4 = F4;
215
- if (void 0 !== C.escapeChar && (j4 = C.escapeChar), ("string" != typeof S2 || -1 < v3.BAD_DELIMITERS.indexOf(S2)) && (S2 = ","), x3 === S2) throw new Error("Comment character same as delimiter");
216
- true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v3.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
213
+ function E4(C2) {
214
+ var S2 = (C2 = C2 || {}).delimiter, O3 = C2.newline, x3 = C2.comments, I5 = C2.step, A2 = C2.preview, T2 = C2.fastMode, D2 = null, L4 = false, F4 = null == C2.quoteChar ? '"' : C2.quoteChar, j4 = F4;
215
+ if (void 0 !== C2.escapeChar && (j4 = C2.escapeChar), ("string" != typeof S2 || -1 < v2.BAD_DELIMITERS.indexOf(S2)) && (S2 = ","), x3 === S2) throw new Error("Comment character same as delimiter");
216
+ true === x3 ? x3 = "#" : ("string" != typeof x3 || -1 < v2.BAD_DELIMITERS.indexOf(x3)) && (x3 = false), "\n" !== O3 && "\r" !== O3 && "\r\n" !== O3 && (O3 = "\n");
217
217
  var z4 = 0, M2 = false;
218
218
  this.parse = function(i2, t, r4) {
219
219
  if ("string" != typeof i2) throw new Error("Input must be a string");
220
- var n2 = i2.length, e = S2.length, s2 = O3.length, a4 = x3.length, o4 = q2(I4), h4 = [], u4 = [], d3 = [], f5 = z4 = 0;
220
+ var n2 = i2.length, e = S2.length, s2 = O3.length, a4 = x3.length, o4 = q2(I5), h4 = [], u4 = [], d3 = [], f5 = z4 = 0;
221
221
  if (!i2) return w2();
222
222
  if (T2 || false !== T2 && -1 === i2.indexOf(F4)) {
223
223
  for (var l2 = i2.split(O3), c4 = 0; c4 < l2.length; c4++) {
@@ -232,20 +232,20 @@ var require_papaparse_min = __commonJS({
232
232
  }
233
233
  return w2();
234
234
  }
235
- for (var p4 = i2.indexOf(S2, z4), g4 = i2.indexOf(O3, z4), _4 = new RegExp(U3(j4) + U3(F4), "g"), m4 = i2.indexOf(F4, z4); ; ) if (i2[z4] === F4) for (m4 = z4, z4++; ; ) {
235
+ for (var p4 = i2.indexOf(S2, z4), g4 = i2.indexOf(O3, z4), _4 = new RegExp(U2(j4) + U2(F4), "g"), m4 = i2.indexOf(F4, z4); ; ) if (i2[z4] === F4) for (m4 = z4, z4++; ; ) {
236
236
  if (-1 === (m4 = i2.indexOf(F4, m4 + 1))) return r4 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h4.length, index: z4 }), E5();
237
237
  if (m4 === n2 - 1) return E5(i2.substring(z4, m4).replace(_4, F4));
238
238
  if (F4 === j4 && i2[m4 + 1] === j4) m4++;
239
239
  else if (F4 === j4 || 0 === m4 || i2[m4 - 1] !== j4) {
240
240
  -1 !== p4 && p4 < m4 + 1 && (p4 = i2.indexOf(S2, m4 + 1));
241
- var y5 = v4(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O3, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
241
+ var y5 = v3(-1 === (g4 = -1 !== g4 && g4 < m4 + 1 ? i2.indexOf(O3, m4 + 1) : g4) ? p4 : Math.min(p4, g4));
242
242
  if (i2.substr(m4 + 1 + y5, e) === S2) {
243
243
  d3.push(i2.substring(z4, m4).replace(_4, F4)), i2[z4 = m4 + 1 + y5 + e] !== F4 && (m4 = i2.indexOf(F4, z4)), p4 = i2.indexOf(S2, z4), g4 = i2.indexOf(O3, z4);
244
244
  break;
245
245
  }
246
- y5 = v4(g4);
246
+ y5 = v3(g4);
247
247
  if (i2.substring(m4 + 1 + y5, m4 + 1 + y5 + s2) === O3) {
248
- if (d3.push(i2.substring(z4, m4).replace(_4, F4)), b4(m4 + 1 + y5 + s2), p4 = i2.indexOf(S2, z4), m4 = i2.indexOf(F4, z4), o4 && (R2(), M2)) return w2();
248
+ if (d3.push(i2.substring(z4, m4).replace(_4, F4)), b5(m4 + 1 + y5 + s2), p4 = i2.indexOf(S2, z4), m4 = i2.indexOf(F4, z4), o4 && (R2(), M2)) return w2();
249
249
  if (A2 && h4.length >= A2) return w2(true);
250
250
  break;
251
251
  }
@@ -258,42 +258,42 @@ var require_papaparse_min = __commonJS({
258
258
  } else if (-1 !== p4 && (p4 < g4 || -1 === g4)) d3.push(i2.substring(z4, p4)), z4 = p4 + e, p4 = i2.indexOf(S2, z4);
259
259
  else {
260
260
  if (-1 === g4) break;
261
- if (d3.push(i2.substring(z4, g4)), b4(g4 + s2), o4 && (R2(), M2)) return w2();
261
+ if (d3.push(i2.substring(z4, g4)), b5(g4 + s2), o4 && (R2(), M2)) return w2();
262
262
  if (A2 && h4.length >= A2) return w2(true);
263
263
  }
264
264
  return E5();
265
265
  function k3(e2) {
266
266
  h4.push(e2), f5 = z4;
267
267
  }
268
- function v4(e2) {
268
+ function v3(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
272
  function E5(e2) {
273
273
  return r4 || (void 0 === e2 && (e2 = i2.substring(z4)), d3.push(e2), z4 = n2, k3(d3), o4 && R2()), w2();
274
274
  }
275
- function b4(e2) {
275
+ function b5(e2) {
276
276
  z4 = e2, k3(d3), d3 = [], g4 = i2.indexOf(O3, z4);
277
277
  }
278
278
  function w2(e2) {
279
- if (C.header && !t && h4.length && !L4) {
279
+ if (C2.header && !t && h4.length && !L4) {
280
280
  var s4 = h4[0], a5 = /* @__PURE__ */ Object.create(null), o5 = new Set(s4);
281
281
  let n4 = false;
282
282
  for (let r5 = 0; r5 < s4.length; r5++) {
283
283
  let i4 = P4(s4[r5]);
284
- if (a5[i4 = q2(C.transformHeader) ? C.transformHeader(i4, r5) : i4]) {
284
+ if (a5[i4 = q2(C2.transformHeader) ? C2.transformHeader(i4, r5) : i4]) {
285
285
  let e4, t2 = a5[i4];
286
286
  for (; e4 = i4 + "_" + t2, t2++, o5.has(e4); ) ;
287
- o5.add(e4), s4[r5] = e4, a5[i4]++, n4 = true, (D3 = null === D3 ? {} : D3)[e4] = i4;
287
+ o5.add(e4), s4[r5] = e4, a5[i4]++, n4 = true, (D2 = null === D2 ? {} : D2)[e4] = i4;
288
288
  } else a5[i4] = 1, s4[r5] = i4;
289
289
  o5.add(i4);
290
290
  }
291
291
  n4 && console.warn("Duplicate headers found and renamed."), L4 = true;
292
292
  }
293
- return { data: h4, errors: u4, meta: { delimiter: S2, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D3 } };
293
+ return { data: h4, errors: u4, meta: { delimiter: S2, linebreak: O3, aborted: M2, truncated: !!e2, cursor: f5 + (t || 0), renamedHeaders: D2 } };
294
294
  }
295
295
  function R2() {
296
- I4(w2()), h4 = [], u4 = [];
296
+ I5(w2()), h4 = [], u4 = [];
297
297
  }
298
298
  }, this.abort = function() {
299
299
  M2 = true;
@@ -322,10 +322,10 @@ var require_papaparse_min = __commonJS({
322
322
  function m2() {
323
323
  throw new Error("Not implemented.");
324
324
  }
325
- function b2(e) {
325
+ function b4(e) {
326
326
  if ("object" != typeof e || null === e) return e;
327
327
  var t, i2 = Array.isArray(e) ? [] : {};
328
- for (t in e) i2[t] = b2(e[t]);
328
+ for (t in e) i2[t] = b4(e[t]);
329
329
  return i2;
330
330
  }
331
331
  function y4(e, t) {
@@ -336,21 +336,21 @@ var require_papaparse_min = __commonJS({
336
336
  function q2(e) {
337
337
  return "function" == typeof e;
338
338
  }
339
- return v3.parse = function(e, t) {
339
+ return v2.parse = function(e, t) {
340
340
  var i2 = (t = t || {}).dynamicTyping || false;
341
341
  q2(i2) && (t.dynamicTypingFunction = i2, i2 = {});
342
- if (t.dynamicTyping = i2, t.transform = !!q2(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 && q2(e.read) && q2(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 = !!q2(t.transform) && t.transform, !t.worker || !v2.WORKERS_SUPPORTED) return i2 = null, v2.NODE_STREAM_INPUT, "string" == typeof e ? (e = P4(e), i2 = new (t.download ? f4 : c2)(t)) : true === e.readable && q2(e.read) && q2(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 !!v3.WORKERS_SUPPORTED && (e2 = (() => {
345
+ return !!v2.WORKERS_SUPPORTED && (e2 = (() => {
346
346
  var e4 = n.URL || n.webkitURL || null, t2 = r2.toString();
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" })));
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
348
  })(), (e2 = new n.Worker(e2)).onmessage = g3, e2.id = h3++, o2[e2.id] = e2);
349
349
  })()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step = q2(t.step), t.chunk = q2(t.chunk), t.complete = q2(t.complete), t.error = q2(t.error), delete t.worker, i2.postMessage({ input: e, config: t, workerId: i2.id });
350
- }, v3.unparse = function(e, t) {
350
+ }, v2.unparse = function(e, t) {
351
351
  var s2 = false, _4 = true, m4 = ",", y5 = "\r\n", a4 = '"', o4 = a4 + a4, i2 = false, r4 = null, h4 = false, u4 = ((() => {
352
352
  if ("object" == typeof t) {
353
- if ("string" != typeof t.delimiter || v3.BAD_DELIMITERS.filter(function(e2) {
353
+ if ("string" != typeof t.delimiter || v2.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 && (y5 = t.newline), "string" == typeof t.quoteChar && (a4 = t.quoteChar, o4 = a4 + a4), "boolean" == typeof t.header && (_4 = t.header), Array.isArray(t.columns)) {
356
356
  if (0 === t.columns.length) throw new Error("Option columns is empty");
@@ -358,7 +358,7 @@ var require_papaparse_min = __commonJS({
358
358
  }
359
359
  void 0 !== t.escapeChar && (o4 = t.escapeChar + a4), t.escapeFormulae instanceof RegExp ? h4 = t.escapeFormulae : "boolean" == typeof t.escapeFormulae && t.escapeFormulae && (h4 = /^[=+\-@\t\r].*$/);
360
360
  }
361
- })(), new RegExp(U3(a4), "g"));
361
+ })(), new RegExp(U2(a4), "g"));
362
362
  "string" == typeof e && (e = JSON.parse(e));
363
363
  if (Array.isArray(e)) {
364
364
  if (!e.length || Array.isArray(e[0])) return n2(null, e, i2);
@@ -396,9 +396,9 @@ var require_papaparse_min = __commonJS({
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), r5 = (i4 = e2.toString()).replace(u4, o4), (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
- })(r5, v3.BAD_DELIMITERS) || -1 < r5.indexOf(m4) || -1 < i4.indexOf(a4) || " " === r5.charAt(0) || " " === r5.charAt(r5.length - 1)) ? a4 + r5 + a4 : r5);
399
+ })(r5, v2.BAD_DELIMITERS) || -1 < r5.indexOf(m4) || -1 < i4.indexOf(a4) || " " === r5.charAt(0) || " " === r5.charAt(r5.length - 1)) ? a4 + r5 + a4 : r5);
400
400
  }
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(o4) {
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 = E4, v2.ParserHandle = i, v2.NetworkStreamer = f4, v2.FileStreamer = l, v2.StringStreamer = c2, v2.ReadableStreamStreamer = p2, n.jQuery && ((d2 = n.jQuery).fn.parse = function(o4) {
402
402
  var i2 = o4.config || {}, h4 = [];
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;
@@ -419,7 +419,7 @@ var require_papaparse_min = __commonJS({
419
419
  var a4 = n2.instanceConfig.complete;
420
420
  n2.instanceConfig.complete = function(e4) {
421
421
  q2(a4) && a4(e4, n2.file, n2.inputElem), u4();
422
- }, v3.parse(n2.file, n2.instanceConfig);
422
+ }, v2.parse(n2.file, n2.instanceConfig);
423
423
  }
424
424
  }
425
425
  function u4() {
@@ -427,9 +427,9 @@ var require_papaparse_min = __commonJS({
427
427
  }
428
428
  }), a2 && (n.onmessage = function(e) {
429
429
  e = e.data;
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;
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;
433
433
  });
434
434
  }
435
435
  });
@@ -496,8 +496,8 @@ var MAX_MAP_POINTS_DEFAULT = 2e3;
496
496
 
497
497
  // src/deltaE.ts
498
498
  function linearise(c2) {
499
- const v3 = c2 / 255;
500
- return v3 <= 0.04045 ? v3 / 12.92 : Math.pow((v3 + 0.055) / 1.055, 2.4);
499
+ const v2 = c2 / 255;
500
+ return v2 <= 0.04045 ? v2 / 12.92 : Math.pow((v2 + 0.055) / 1.055, 2.4);
501
501
  }
502
502
  var Xn = 0.95047;
503
503
  var Yn = 1;
@@ -507,12 +507,12 @@ var KAPPA = 24389 / 27;
507
507
  function f(t) {
508
508
  return t > EPS ? Math.cbrt(t) : (KAPPA * t + 16) / 116;
509
509
  }
510
- function rgbToLab(r2, g3, b2) {
511
- const R2 = linearise(r2), G3 = linearise(g3), B3 = linearise(b2);
510
+ function rgbToLab(r2, g3, b4) {
511
+ const R2 = linearise(r2), G3 = linearise(g3), B3 = linearise(b4);
512
512
  const X4 = 0.4124564 * R2 + 0.3575761 * G3 + 0.1804375 * B3;
513
513
  const Y3 = 0.2126729 * R2 + 0.7151522 * G3 + 0.072175 * B3;
514
- const Z3 = 0.0193339 * R2 + 0.119192 * G3 + 0.9503041 * B3;
515
- const fx = f(X4 / Xn), fy = f(Y3 / Yn), fz = f(Z3 / Zn);
514
+ const Z4 = 0.0193339 * R2 + 0.119192 * G3 + 0.9503041 * B3;
515
+ const fx = f(X4 / Xn), fy = f(Y3 / Yn), fz = f(Z4 / Zn);
516
516
  return { L: 116 * fy - 16, a: 500 * (fx - fy), b: 200 * (fy - fz) };
517
517
  }
518
518
  function hexToLab(hex2) {
@@ -569,20 +569,20 @@ function labToHex(lab) {
569
569
  const fy = (lab.L + 16) / 116, fx = fy + lab.a / 500, fz = fy - lab.b / 200;
570
570
  const X4 = Xn * finv(fx);
571
571
  const Y3 = Yn * (lab.L > KAPPA * EPS ? fy * fy * fy : lab.L / KAPPA);
572
- const Z3 = Zn * finv(fz);
572
+ const Z4 = Zn * finv(fz);
573
573
  const lin = [
574
- 3.2404542 * X4 - 1.5371385 * Y3 - 0.4985314 * Z3,
575
- -0.969266 * X4 + 1.8760108 * Y3 + 0.041556 * Z3,
576
- 0.0556434 * X4 - 0.2040259 * Y3 + 1.0572252 * Z3
574
+ 3.2404542 * X4 - 1.5371385 * Y3 - 0.4985314 * Z4,
575
+ -0.969266 * X4 + 1.8760108 * Y3 + 0.041556 * Z4,
576
+ 0.0556434 * X4 - 0.2040259 * Y3 + 1.0572252 * Z4
577
577
  ];
578
- return "#" + lin.map((v3) => {
579
- const c2 = Math.max(0, Math.min(1, v3));
578
+ return "#" + lin.map((v2) => {
579
+ const c2 = Math.max(0, Math.min(1, v2));
580
580
  const g3 = c2 <= 31308e-7 ? 12.92 * c2 : 1.055 * Math.pow(c2, 1 / 2.4) - 0.055;
581
581
  return Math.round(g3 * 255).toString(16).padStart(2, "0");
582
582
  }).join("");
583
583
  }
584
- function deltaEHex(a2, b2) {
585
- const la = hexToLab(a2), lb = hexToLab(b2);
584
+ function deltaEHex(a2, b4) {
585
+ const la = hexToLab(a2), lb = hexToLab(b4);
586
586
  return la && lb ? deltaE2000(la, lb) : NaN;
587
587
  }
588
588
 
@@ -635,7 +635,7 @@ function cellKey(rgb) {
635
635
  ].join(",");
636
636
  }
637
637
  function hex(rgb) {
638
- return "#" + rgb.map((v3) => Math.max(0, Math.min(255, v3)).toString(16).padStart(2, "0")).join("");
638
+ return "#" + rgb.map((v2) => Math.max(0, Math.min(255, v2)).toString(16).padStart(2, "0")).join("");
639
639
  }
640
640
  function censusColourSpread(container, doc) {
641
641
  if (!container || typeof container.querySelectorAll !== "function") return EMPTY;
@@ -672,18 +672,18 @@ function censusColourSpread(container, doc) {
672
672
  else cells.set(k3, { rgb, n: 1 });
673
673
  }
674
674
  if (marks < MIN_MARKS || distinct.size < MIN_RAMP_FILLS) return EMPTY;
675
- const top = [...cells.values()].sort((a2, b2) => b2.n - a2.n).slice(0, MAX_CELLS);
675
+ const top = [...cells.values()].sort((a2, b4) => b4.n - a2.n).slice(0, MAX_CELLS);
676
676
  const cs = top.map((c2) => hexToLab(hex(c2.rgb))).filter((l) => l !== null);
677
677
  if (cs.length < MIN_RAMP_FILLS) return EMPTY;
678
678
  const d2 = cs.map(() => new Array(cs.length).fill(0));
679
679
  let span = 0, lo = 0, hi = 1;
680
680
  for (let i = 0; i < cs.length; i++) {
681
681
  for (let j4 = i + 1; j4 < cs.length; j4++) {
682
- const v3 = deltaE2000(cs[i], cs[j4]);
683
- d2[i][j4] = v3;
684
- d2[j4][i] = v3;
685
- if (v3 > span) {
686
- span = v3;
682
+ const v2 = deltaE2000(cs[i], cs[j4]);
683
+ d2[i][j4] = v2;
684
+ d2[j4][i] = v2;
685
+ if (v2 > span) {
686
+ span = v2;
687
687
  lo = i;
688
688
  hi = j4;
689
689
  }
@@ -734,13 +734,13 @@ function normHex(raw) {
734
734
  const h3 = m2[1].length === 3 ? m2[1].split("").map((c2) => c2 + c2).join("") : m2[1];
735
735
  return "#" + h3.toLowerCase();
736
736
  }
737
- function mixLab(a2, b2, t) {
738
- return { L: a2.L + (b2.L - a2.L) * t, a: a2.a + (b2.a - a2.a) * t, b: a2.b + (b2.b - a2.b) * t };
737
+ function mixLab(a2, b4, t) {
738
+ return { L: a2.L + (b4.L - a2.L) * t, a: a2.a + (b4.a - a2.a) * t, b: a2.b + (b4.b - a2.b) * t };
739
739
  }
740
740
  function paintedOver(fg, canvas, alpha) {
741
741
  const f4 = [1, 3, 5].map((i) => parseInt(fg.slice(i, i + 2), 16));
742
742
  const c2 = [1, 3, 5].map((i) => parseInt(canvas.slice(i, i + 2), 16));
743
- const mixed = f4.map((v3, i) => Math.round(v3 * alpha + c2[i] * (1 - alpha))).map((v3) => v3.toString(16).padStart(2, "0"));
743
+ const mixed = f4.map((v2, i) => Math.round(v2 * alpha + c2[i] * (1 - alpha))).map((v2) => v2.toString(16).padStart(2, "0"));
744
744
  return hexToLab("#" + mixed.join(""));
745
745
  }
746
746
  function autoRampMinStep(low, high, canvas, classes = AUTO_RAMP_CLASSES, opacity = AUTO_RAMP_DRAWN_OPACITY) {
@@ -872,20 +872,20 @@ function resolveOptions(p2) {
872
872
  // never reach a chart as a live mode. Both of these are read on EVERY render, so a
873
873
  // reader can change their mind about a cached chart without regenerating it.
874
874
  approximatePositions: (() => {
875
- const v3 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
876
- return v3 === "mark" || v3 === "aggregate" || v3 === "skip" ? v3 : APPROXIMATE_POSITIONS_DEFAULT;
875
+ const v2 = (p2.approximatePositions == null ? "" : String(p2.approximatePositions)).toLowerCase();
876
+ return v2 === "mark" || v2 === "aggregate" || v2 === "skip" ? v2 : APPROXIMATE_POSITIONS_DEFAULT;
877
877
  })(),
878
878
  valueAxisBaseline: (() => {
879
- const v3 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
880
- return v3 === "zero" || v3 === "fit" || v3 === "auto" ? v3 : VALUE_AXIS_BASELINE_DEFAULT;
879
+ const v2 = (p2.valueAxisBaseline == null ? "" : String(p2.valueAxisBaseline)).toLowerCase();
880
+ return v2 === "zero" || v2 === "fit" || v2 === "auto" ? v2 : VALUE_AXIS_BASELINE_DEFAULT;
881
881
  })(),
882
882
  // Same shape, and the same reason for it: an unrecognised string must never reach a chart
883
883
  // as a live mode. Failing open to "auto" is the conservative direction here — "auto" is
884
884
  // the setting that makes the chart PROVE the grid before it names a period, so a garbled
885
885
  // value withdraws the claim rather than asserting one.
886
886
  seasonalMarkers: (() => {
887
- const v3 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
888
- return v3 === "auto" || v3 === "always" || v3 === "never" ? v3 : SEASONAL_MARKERS_DEFAULT;
887
+ const v2 = (p2.seasonalMarkers == null ? "" : String(p2.seasonalMarkers)).toLowerCase();
888
+ return v2 === "auto" || v2 === "always" || v2 === "never" ? v2 : SEASONAL_MARKERS_DEFAULT;
889
889
  })(),
890
890
  // ---- animation: booleans, default+clamp numerics, "" default enum ----
891
891
  animAutoPlay: !!p2.animAutoPlay,
@@ -1276,13 +1276,13 @@ var x = 8;
1276
1276
  function y3(n, e) {
1277
1277
  let t = new Array(n.length), o2 = new Array(n.length), i = new Array(n.length), r2 = /* @__PURE__ */ new Set(), a2 = [], s = /* @__PURE__ */ new Set(), f4 = [], d2 = /* @__PURE__ */ new Set(), R2 = [], g3 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 }, S2 = 0, m2 = 0, p2 = null;
1278
1278
  for (let l = 0; l < n.length; ++l) {
1279
- let A2 = n[l], C = A3({ ...A2, mapKind: e });
1280
- if (S3(C)) {
1279
+ let A2 = n[l], C2 = A3({ ...A2, mapKind: e });
1280
+ if (S3(C2)) {
1281
1281
  t[l] = null, o2[l] = null, i[l] = null, m2++;
1282
1282
  let M2 = K(A2);
1283
1283
  M2 && !d2.has(M2.toLowerCase()) && (d2.add(M2.toLowerCase()), R2.length < x && R2.push(M2));
1284
- } else if (C) {
1285
- if (t[l] = C.lat, o2[l] = C.lon, i[l] = C.precision, S2++, g3[C.precision]++, (p2 === null || G[C.precision] > G[p2]) && (p2 = C.precision), G[C.precision] > G.city) {
1284
+ } else if (C2) {
1285
+ if (t[l] = C2.lat, o2[l] = C2.lon, i[l] = C2.precision, S2++, g3[C2.precision]++, (p2 === null || G[C2.precision] > G[p2]) && (p2 = C2.precision), G[C2.precision] > G.city) {
1286
1286
  let M2 = K(A2);
1287
1287
  M2 && !s.has(M2.toLowerCase()) && (s.add(M2.toLowerCase()), f4.length < x && f4.push(M2));
1288
1288
  }
@@ -1305,56 +1305,56 @@ function p3(n, e) {
1305
1305
  return t ? F(t, e).length > 0 : false;
1306
1306
  }
1307
1307
 
1308
- // ../shape-core/dist/chunk-NFSQ4O5R.mjs
1308
+ // ../shape-core/dist/chunk-4VN252CK.mjs
1309
1309
  /*! @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. */
1310
1310
  var o = (e, n, t, r2 = {}) => ({ code: e, name: n, script: t, dir: "ltr", intl: e, aliases: [], wordBreaks: true, compounds: false, gluedPrefixes: [], foldSensitive: false, ...r2 });
1311
1311
  var g = Object.freeze([o("en", "English", "Latn"), o("nl", "Dutch", "Latn", { compounds: true }), o("de", "German", "Latn", { compounds: true }), o("fr", "French", "Latn"), o("es", "Spanish", "Latn"), o("pt", "Portuguese", "Latn"), o("it", "Italian", "Latn"), o("pl", "Polish", "Latn"), o("cs", "Czech", "Latn"), o("sk", "Slovak", "Latn"), o("sv", "Swedish", "Latn", { compounds: true }), o("da", "Danish", "Latn", { compounds: true }), o("nb", "Norwegian Bokmal", "Latn", { compounds: true, aliases: ["no"] }), o("fi", "Finnish", "Latn", { compounds: true }), o("hu", "Hungarian", "Latn", { compounds: true }), o("tr", "Turkish", "Latn"), o("ro", "Romanian", "Latn"), o("hr", "Croatian", "Latn"), o("id", "Indonesian", "Latn", { aliases: ["in"] }), o("vi", "Vietnamese", "Latn", { foldSensitive: true }), o("ru", "Russian", "Cyrl"), o("uk", "Ukrainian", "Cyrl"), o("el", "Greek", "Grek"), o("zh", "Chinese (Simplified)", "Hani", { intl: "zh-Hans", wordBreaks: false }), o("ja", "Japanese", "Jpan", { wordBreaks: false }), o("ko", "Korean", "Hang"), o("ar", "Arabic", "Arab", { dir: "rtl", gluedPrefixes: ["\u0627\u0644", "\u0648\u0627\u0644", "\u0628\u0627\u0644", "\u0641\u0627\u0644", "\u0643\u0627\u0644", "\u0644\u0644", "\u0648", "\u0641", "\u0628", "\u0643", "\u0644"] }), o("he", "Hebrew", "Hebr", { dir: "rtl", aliases: ["iw"], gluedPrefixes: ["\u05D4", "\u05D5", "\u05D1", "\u05DC", "\u05DE", "\u05E9", "\u05DB", "\u05D5\u05D4", "\u05E9\u05D4", "\u05DE\u05D4", "\u05D5\u05D1", "\u05D5\u05DC", "\u05D5\u05DE", "\u05D1\u05D4", "\u05DC\u05D4"] }), o("hi", "Hindi", "Deva"), o("th", "Thai", "Thai", { wordBreaks: false })]);
1312
- var m = Object.freeze(g.map((e) => e.code));
1312
+ var S = Object.freeze(g.map((e) => e.code));
1313
1313
  var c = new Map(g.map((e) => [e.code, e]));
1314
- var L2 = new Map(g.flatMap((e) => e.aliases.map((n) => [n, e])));
1314
+ var F2 = new Map(g.flatMap((e) => e.aliases.map((n) => [n, e])));
1315
1315
  var h2 = Object.freeze([o("fa", "Persian", "Arab", { dir: "rtl" })]);
1316
- var j2 = Object.freeze([...m, ...h2.map((e) => e.code)]);
1317
- var S = new Map(h2.map((e) => [e.code, e]));
1318
- var N2 = { \u0142: "l", \u0141: "L", \u0131: "i", \u00F8: "o", \u00D8: "O", \u0111: "d", \u0110: "D", \u00F0: "d", \u00D0: "D" };
1319
- var D2 = [1632, 1776, 2406, 3664, 65296];
1320
- var R = /[\u0300-\u036F]/g;
1321
- function E2(e) {
1322
- let n = N2[e];
1316
+ var Z2 = Object.freeze([...S, ...h2.map((e) => e.code)]);
1317
+ var b2 = new Map(h2.map((e) => [e.code, e]));
1318
+ var E2 = { \u0142: "l", \u0141: "L", \u0131: "i", \u00F8: "o", \u00D8: "O", \u0111: "d", \u0110: "D", \u00F0: "d", \u00D0: "D" };
1319
+ var R = [1632, 1776, 2406, 3664, 65296];
1320
+ var A = /[\u0300-\u036F]/g;
1321
+ function _2(e) {
1322
+ let n = E2[e];
1323
1323
  if (n) return n;
1324
1324
  let t = e.codePointAt(0);
1325
- for (let a2 of D2) if (t >= a2 && t <= a2 + 9) return String.fromCharCode(48 + t - a2);
1325
+ for (let a2 of R) if (t >= a2 && t <= a2 + 9) return String.fromCharCode(48 + t - a2);
1326
1326
  if (t >= 65313 && t <= 65338 || t >= 65345 && t <= 65370) return String.fromCharCode(t - 65248);
1327
- let r2 = e.normalize("NFD").replace(R, "");
1327
+ let r2 = e.normalize("NFD").replace(A, "");
1328
1328
  return r2.length === 1 ? r2 : e;
1329
1329
  }
1330
- function f2(e) {
1330
+ function p(e) {
1331
1331
  if (!e) return e ?? "";
1332
1332
  let n = "";
1333
- for (let t of e) n += E2(t);
1333
+ for (let t of e) n += _2(t);
1334
1334
  return n;
1335
1335
  }
1336
- var A = /([\p{Ll}\p{Nd}])(\p{Lu})/gu;
1337
- var _2 = /[_\-./]+/g;
1338
- var M = /[^\p{L}\p{M}\p{N}\x00-\x7F]/gu;
1339
- function p(e) {
1340
- return e ? String(e).normalize("NFC").replace(A, "$1 $2").replace(_2, " ").replace(M, " ").toLowerCase().split(/\s+/).filter((n) => n.length > 0) : [];
1336
+ var m = /([\p{Ll}\p{Nd}])(\p{Lu})/gu;
1337
+ var M = /[_\-./]+/g;
1338
+ var O2 = /[^\p{L}\p{M}\p{N}\x00-\x7F]/gu;
1339
+ function d(e) {
1340
+ return e ? String(e).normalize("NFC").replace(m, "$1 $2").replace(M, " ").replace(O2, " ").toLowerCase().split(/\s+/).filter((n) => n.length > 0) : [];
1341
1341
  }
1342
- function oe(e) {
1342
+ function le(e) {
1343
1343
  let n = Date.parse(e);
1344
1344
  if (isNaN(n)) return null;
1345
1345
  let t = new Date(n);
1346
- if (Y2.test(e) || W2.test(e.trim()) || $2.test(e)) return t;
1346
+ if (j2.test(e) || K2.test(e.trim()) || J2.test(e)) return t;
1347
1347
  let r2 = new Date(Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds())), a2 = t.getFullYear();
1348
1348
  return a2 >= 0 && a2 < 100 && r2.setUTCFullYear(a2), r2;
1349
1349
  }
1350
- function F2(e) {
1350
+ function L2(e) {
1351
1351
  return !(e instanceof Date) || isNaN(e.getTime()) ? null : e.getUTCHours() === 0 && e.getUTCMinutes() === 0 && e.getUTCSeconds() === 0 && e.getUTCMilliseconds() === 0 ? "utc" : e.getHours() === 0 && e.getMinutes() === 0 && e.getSeconds() === 0 && e.getMilliseconds() === 0 ? "local" : null;
1352
1352
  }
1353
- function v2(e) {
1353
+ function W2(e) {
1354
1354
  let n = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), t = e.getFullYear();
1355
1355
  return t >= 0 && t < 100 && n.setUTCFullYear(t), n;
1356
1356
  }
1357
- function B2(e, n) {
1357
+ function $2(e, n) {
1358
1358
  let t = [];
1359
1359
  for (let r2 of e) {
1360
1360
  if (!r2 || !/date|time/i.test(String(r2.dataType ?? ""))) continue;
@@ -1366,7 +1366,7 @@ function B2(e, n) {
1366
1366
  i = false;
1367
1367
  break;
1368
1368
  }
1369
- let l = F2(s);
1369
+ let l = L2(s);
1370
1370
  if (l === null) {
1371
1371
  i = false;
1372
1372
  break;
@@ -1377,23 +1377,23 @@ function B2(e, n) {
1377
1377
  }
1378
1378
  return t;
1379
1379
  }
1380
- function se(e, n) {
1381
- let t = B2(e, n);
1380
+ function ge(e, n) {
1381
+ let t = $2(e, n);
1382
1382
  return t.length === 0 ? { rows: n, columns: t } : { rows: n.map((a2) => {
1383
1383
  if (!a2) return a2;
1384
1384
  let i = { ...a2 };
1385
1385
  for (let u2 of t) {
1386
1386
  let s = i[u2];
1387
- s instanceof Date && F2(s) === "local" && (i[u2] = v2(s));
1387
+ s instanceof Date && L2(s) === "local" && (i[u2] = W2(s));
1388
1388
  }
1389
1389
  return i;
1390
1390
  }), columns: t };
1391
1391
  }
1392
- var Y2 = /^\s*\d{4}(-\d{2}(-\d{2})?)?\s*$/;
1393
- var W2 = /(?:Z|[+-]\d{2}:?\d{2})$/i;
1394
- var $2 = /\b(?:GMT|UTC)\b/i;
1392
+ var j2 = /^\s*\d{4}(-\d{2}(-\d{2})?)?\s*$/;
1393
+ var K2 = /(?:Z|[+-]\d{2}:?\d{2})$/i;
1394
+ var J2 = /\b(?:GMT|UTC)\b/i;
1395
1395
 
1396
- // ../shape-core/dist/chunk-6TVBXT4G.mjs
1396
+ // ../shape-core/dist/chunk-VIWJJUDA.mjs
1397
1397
  /*! @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. */
1398
1398
  var St = "006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191193194195196197198199200201202203204205206207208209210211212214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310312313314315316317318319320321322323324325326327328329330331333334335336337338339341342344346347349350351352354355356357358359360361362363364365366367368369370371372373374376377378379380381382383384385386387388389390391392393394395396397398400401402403404405406407408409410411412413414415416417418420421422423424425426427430431432433434435436437438439440441442443444445446447448449450451452453454455456457458460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508510511512513514515516520521522523524525526527528530531532534535537538539540541542543544545546547548549550551553554556557558559560561562563564565566567570571572573574575576577580581582583584585586587588590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620622623624625626627628629630631633634635636637638639640641644645646647648650651652653654655656657658660661662664665666667668669670671672673674675676677678679680681683684685686687688689690691692693700701703704705706707708710711712713714716717718719720721722723724725726727728729730731734735736737738739740741743744745746747748749750751752753754755756757758759760761762763764765766767768769770772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816820821822823824825826827828829830831832833834835836837838840841843844845846847850851852853855856857859860863864865870871873874875877878879880881882883884890891893894895897898900902903904905906907908910911912913914915916917918919920921922923924925926927928930931932933934935936937939940941943944945946947948949950951952953954955956957958959960961967968969970971972973974975976977978979980981982983984985986988989990991992993994995996997998999";
1399
1399
  var w = new Set(St.match(/.{3}/g) ?? []);
@@ -1420,7 +1420,7 @@ function g2(n) {
1420
1420
  var rt = /* @__PURE__ */ new Set(["zip", "zipcode", "postal", "postcode", "plz"]);
1421
1421
  function y2(n, s) {
1422
1422
  if (!n) return false;
1423
- for (let i of p(n)) if (s.has(i)) return true;
1423
+ for (let i of d(n)) if (s.has(i)) return true;
1424
1424
  return false;
1425
1425
  }
1426
1426
  function Mt(n, s) {
@@ -1464,11 +1464,11 @@ function It(n, s) {
1464
1464
  }
1465
1465
  function Wt(n, s) {
1466
1466
  let i = new Array(n.length), r2 = /* @__PURE__ */ new Set(), M2 = [], h3 = 0;
1467
- for (let N3 = 0; N3 < n.length; ++N3) {
1468
- let I4 = Mt(n[N3], s), O3 = I4 !== null && It(I4, s) ? I4 : null;
1469
- if (i[N3] = O3, O3 !== null) h3++;
1467
+ for (let N2 = 0; N2 < n.length; ++N2) {
1468
+ let I5 = Mt(n[N2], s), O3 = I5 !== null && It(I5, s) ? I5 : null;
1469
+ if (i[N2] = O3, O3 !== null) h3++;
1470
1470
  else {
1471
- let d2 = n[N3];
1471
+ let d2 = n[N2];
1472
1472
  if (d2 != null) {
1473
1473
  let p2 = String(d2).trim();
1474
1474
  if (p2.length > 0) {
@@ -1481,88 +1481,88 @@ function Wt(n, s) {
1481
1481
  return { iso: i, unmatched: M2, matchedRows: h3, totalRows: n.length };
1482
1482
  }
1483
1483
 
1484
- // ../shape-core/dist/chunk-KKSQBV76.mjs
1484
+ // ../shape-core/dist/chunk-M7OKMBJS.mjs
1485
1485
  var import_papaparse = __toESM(require_papaparse_min(), 1);
1486
1486
  /*! @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. */
1487
- var ve = { "north-america": "AG AI AW BB BL BM BQ BS BZ CA CR CU CW DM DO GD GL GP GT HN HT JM KN KY LC MF MQ MS MX NI PA PM PR SV SX TC TT US VC VG VI", "south-america": "AR BO BR CL CO EC FK GF GY PE PY SR UY VE", europe: "AD AL AT AX BA BE BG BY CH CY CZ DE DK EE ES FI FO FR GB GG GI GR HR HU IE IM IS IT JE LI LT LU LV MC MD ME MK MT NL NO PL PT RO RS RU SE SI SJ SK SM UA VA", africa: "AO BF BI BJ BW CD CF CG CI CM CV DJ DZ EG EH ER ET GA GH GM GN GQ GW KE KM LR LS LY MA MG ML MR MU MW MZ NA NE NG RE RW SC SD SH SL SN SO SS ST SZ TD TG TN TZ UG YT ZA ZM ZW", asia: "AE AF AM AZ BD BH BN BT CC CN CX GE HK ID IL IN IO IQ IR JO JP KG KH KP KR KW KZ LA LB LK MM MN MO MV MY NP OM PH PK PS QA SA SG SY TH TJ TL TM TR TW UZ VN YE", oceania: "AS AU CK FJ FM GU KI MH MP NC NF NR NU NZ PF PG PN PW SB TK TO TV UM VU WF WS", antarctica: "AQ BV GS HM TF" };
1488
- var J2 = (() => {
1487
+ var we = { "north-america": "AG AI AW BB BL BM BQ BS BZ CA CR CU CW DM DO GD GL GP GT HN HT JM KN KY LC MF MQ MS MX NI PA PM PR SV SX TC TT US VC VG VI", "south-america": "AR BO BR CL CO EC FK GF GY PE PY SR UY VE", europe: "AD AL AT AX BA BE BG BY CH CY CZ DE DK EE ES FI FO FR GB GG GI GR HR HU IE IM IS IT JE LI LT LU LV MC MD ME MK MT NL NO PL PT RO RS RU SE SI SJ SK SM UA VA", africa: "AO BF BI BJ BW CD CF CG CI CM CV DJ DZ EG EH ER ET GA GH GM GN GQ GW KE KM LR LS LY MA MG ML MR MU MW MZ NA NE NG RE RW SC SD SH SL SN SO SS ST SZ TD TG TN TZ UG YT ZA ZM ZW", asia: "AE AF AM AZ BD BH BN BT CC CN CX GE HK ID IL IN IO IQ IR JO JP KG KH KP KR KW KZ LA LB LK MM MN MO MV MY NP OM PH PK PS QA SA SG SY TH TJ TL TM TR TW UZ VN YE", oceania: "AS AU CK FJ FM GU KI MH MP NC NF NR NU NZ PF PG PN PW SB TK TO TV UM VU WF WS", antarctica: "AQ BV GS HM TF" };
1488
+ var J3 = (() => {
1489
1489
  let t = /* @__PURE__ */ new Map();
1490
- for (let e of Object.keys(ve)) for (let n of ve[e].split(/\s+/)) n && t.set(n, e);
1490
+ for (let e of Object.keys(we)) for (let n of we[e].split(/\s+/)) n && t.set(n, e);
1491
1491
  return t;
1492
1492
  })();
1493
- function at2(t) {
1493
+ function lt2(t) {
1494
1494
  for (let [e, n] of t) {
1495
- let r2 = J2.get(e);
1496
- r2 && !J2.has(n) && J2.set(n, r2);
1495
+ let r2 = J3.get(e);
1496
+ r2 && !J3.has(n) && J3.set(n, r2);
1497
1497
  }
1498
1498
  }
1499
- at2(N);
1500
- var gt = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "z[_-]?score", "average", "avg", "mean", "median", "stddev", "variance", "gpa", "percentile", "quantile", "efficiency", "accuracy", "probability", "multiplier", "coefficient", "correlation", "occupancy", "age", "bmi", "temperature", "density", "pressure", "humidity", "ph", "velocity", "speed", "elevation", "altitude", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps", "temperatuur", "temperatur", "temperatura", "teplota", "lampotila", "homerseklet", "sicaklik", "pression", "presion", "pressao", "pressione", "druck", "tryck", "tlak", "paine", "nyomas", "presiune", "humidite", "humedad", "umidade", "umidita", "feuchtigkeit", "vochtigheid", "kosteus", "vlhkost", "vitesse", "velocidad", "velocidade", "velocita", "geschwindigkeit", "snelheid", "hastighet", "hastighed", "rychlost", "nopeus", "sebesseg", "brzina", "predkosc", "densite", "densidad", "densidade", "densita", "dichte", "dichtheid", "hustota", "tiheys", "gustoca", "moyenne", "mediane", "promedio", "mediana", "gemiddelde", "durchschnitt", "mittelwert", "genomsnitt", "gennemsnit", "gjennomsnitt", "keskiarvo", "atlag", "ortalama", "prosjek", "srednia", "prumer", "priemer", "medie", "taux", "tasa", "taxa", "tasso", "verhaltnis", "verhouding", "aandeel", "anteil", "andel", "osuus", "podil", "udzial", "udio", "pourcentage", "porcentaje", "percentual", "prozent", "procent", "prosentti", "szazalek", "yuzde", "participacion", "participacao", "pondere", "omjer", "arany", "oran", "rata", "leeftijd", "edad", "idade", "wiek", "eletkor", "varsta", "puntuacion", "pontuacao", "punteggio", "betyg", "ocena", "indice", "indeks", "wskaznik", "puan"];
1501
- var pt = ["pct", "percent", "percentage", "rate", "ratio", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "gpa", "percentile", "quantile", "bmi", "density", "pressure", "humidity", "velocity", "efficiency", "occupancy", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps"];
1502
- var ht = ["latitude", "longitude"];
1503
- var bt = ["latitude", "longitude"];
1499
+ lt2(N);
1500
+ var ht = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "z[_-]?score", "average", "avg", "mean", "median", "stddev", "variance", "gpa", "percentile", "quantile", "efficiency", "accuracy", "probability", "multiplier", "coefficient", "correlation", "occupancy", "age", "bmi", "temperature", "density", "pressure", "humidity", "ph", "velocity", "speed", "elevation", "altitude", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps", "temperatuur", "temperatur", "temperatura", "teplota", "lampotila", "homerseklet", "sicaklik", "pression", "presion", "pressao", "pressione", "druck", "tryck", "tlak", "paine", "nyomas", "presiune", "humidite", "humedad", "umidade", "umidita", "feuchtigkeit", "vochtigheid", "kosteus", "vlhkost", "vitesse", "velocidad", "velocidade", "velocita", "geschwindigkeit", "snelheid", "hastighet", "hastighed", "rychlost", "nopeus", "sebesseg", "brzina", "predkosc", "densite", "densidad", "densidade", "densita", "dichte", "dichtheid", "hustota", "tiheys", "gustoca", "moyenne", "mediane", "promedio", "mediana", "gemiddelde", "durchschnitt", "mittelwert", "genomsnitt", "gennemsnit", "gjennomsnitt", "keskiarvo", "atlag", "ortalama", "prosjek", "srednia", "prumer", "priemer", "medie", "taux", "tasa", "taxa", "tasso", "verhaltnis", "verhouding", "aandeel", "anteil", "andel", "osuus", "podil", "udzial", "udio", "pourcentage", "porcentaje", "percentual", "prozent", "procent", "prosentti", "szazalek", "yuzde", "participacion", "participacao", "pondere", "omjer", "arany", "oran", "rata", "leeftijd", "edad", "idade", "wiek", "eletkor", "varsta", "puntuacion", "pontuacao", "punteggio", "betyg", "ocena", "indice", "indeks", "wskaznik", "puan"];
1501
+ var bt = ["pct", "percent", "percentage", "rate", "ratio", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "utilisation", "gpa", "percentile", "quantile", "bmi", "density", "pressure", "humidity", "velocity", "efficiency", "occupancy", "latency", "throughput", "bandwidth", "iops", "ppm", "ppb", "dpmo", "bps"];
1502
+ var yt2 = ["latitude", "longitude"];
1503
+ var St2 = ["latitude", "longitude"];
1504
1504
  function j3(t) {
1505
- return f2(t);
1505
+ return p(t);
1506
1506
  }
1507
1507
  var de = ["somme de", "suma de", "soma de", "summe von", "som van", "somma di", "summa av", "sum av", "sum af", "soucet z", "suma z", "totaal van", "total de", "toplam", "osszeg", "nombre de", "recuento de", "contagem de", "anzahl von", "aantal van", "conteggio di", "antal av", "lukumaara", "pocet z"];
1508
- function yt2(t) {
1508
+ function _t(t) {
1509
1509
  return [...t].sort((e, n) => n.length - e.length).map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|");
1510
1510
  }
1511
- var ke = new RegExp("^\\s*(?:(?:sum|count|count\\s+distinct|distinct\\s+count)\\s+of\\s+|(?:" + yt2(de) + ")\\s+)", "i");
1512
- var St2 = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])/g;
1513
- var _t = new RegExp("\\b(" + gt.join("|") + ")\\b|(" + pt.join("|") + ")$", "i");
1514
- var At = new RegExp("\\b(" + ht.join("|") + ")\\b|(" + bt.join("|") + ")$", "i");
1515
- function Fe(t) {
1511
+ var Ge = new RegExp("^\\s*(?:(?:sum|count|count\\s+distinct|distinct\\s+count)\\s+of\\s+|(?:" + _t(de) + ")\\s+)", "i");
1512
+ var At = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])/g;
1513
+ var Ct = new RegExp("\\b(" + ht.join("|") + ")\\b|(" + bt.join("|") + ")$", "i");
1514
+ var Mt2 = new RegExp("\\b(" + yt2.join("|") + ")\\b|(" + St2.join("|") + ")$", "i");
1515
+ function We(t) {
1516
1516
  if (!t) return "";
1517
- let e = String(t), n = ke.exec(j3(e));
1517
+ let e = String(t), n = Ge.exec(j3(e));
1518
1518
  return (n ? e.slice(n[0].length) : e).trim();
1519
1519
  }
1520
- function Ct(t) {
1521
- return !!t && ke.test(j3(String(t)));
1520
+ function xt(t) {
1521
+ return !!t && Ge.test(j3(String(t)));
1522
1522
  }
1523
- var Mt2 = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
1524
- var Oe = new RegExp("^\\s*(" + [...Mt2].sort((t, e) => e.length - t.length).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
1525
- var We = { Sum: ["Sum of "], Avg: ["Average of "], Average: ["Average of "], Count: ["Count of "], CountNonNull: ["Count of "], Min: ["Min of ", "First ", "Earliest "], Max: ["Max of ", "Last ", "Latest "], Median: ["Median of "], StandardDeviation: ["Standard deviation of "], Variance: ["Variance of "] };
1526
- var xt = new RegExp("^(" + Object.keys(We).join("|") + ")\\((.+)\\)$");
1527
- function Rt(t) {
1528
- let e = Fe(t);
1529
- return e.length === 0 ? "" : e.replace(St2, " ");
1523
+ var Rt = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
1524
+ var ke = new RegExp("^\\s*(" + [...Rt].sort((t, e) => e.length - t.length).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
1525
+ var ze = { Sum: ["Sum of "], Avg: ["Average of "], Average: ["Average of "], Count: ["Count of "], CountNonNull: ["Count of "], Min: ["Min of ", "First ", "Earliest "], Max: ["Max of ", "Last ", "Latest "], Median: ["Median of "], StandardDeviation: ["Standard deviation of "], Variance: ["Variance of "] };
1526
+ var Tt = new RegExp("^(" + Object.keys(ze).join("|") + ")\\((.+)\\)$");
1527
+ function Nt(t) {
1528
+ let e = We(t);
1529
+ return e.length === 0 ? "" : e.replace(At, " ");
1530
1530
  }
1531
- function ze(t, e) {
1531
+ function Ue(t, e) {
1532
1532
  if (!e) return false;
1533
- let n = Fe(e);
1534
- return t.test(j3(Rt(e))) || t.test(j3(n)) || t.test(j3(p(n).join(" ")));
1533
+ let n = We(e);
1534
+ return t.test(j3(Nt(e))) || t.test(j3(n)) || t.test(j3(d(n).join(" ")));
1535
1535
  }
1536
- function $e(t) {
1537
- return ze(At, t);
1536
+ function Ve(t) {
1537
+ return Ue(Mt2, t);
1538
1538
  }
1539
- function Tt(t) {
1540
- return ze(_t, t) || $e(t);
1539
+ function Et(t) {
1540
+ return Ue(Ct, t) || Ve(t);
1541
1541
  }
1542
- var Ue = /int|double|decimal|single|float|number|currency|money/i;
1543
- function Nt(t) {
1542
+ var Ke = /int|double|decimal|single|float|number|currency|money/i;
1543
+ function vt(t) {
1544
1544
  let e = String(t?.valueNature ?? "").trim().toLowerCase();
1545
- return e === "categorical" ? "Categorical" : e === "ordinal" ? "Ordinal" : e === "continuous" || t?.isMeasure === true || Ue.test(String(t?.dataType ?? "")) ? "Continuous" : "Categorical";
1545
+ return e === "categorical" ? "Categorical" : e === "ordinal" ? "Ordinal" : e === "continuous" || t?.isMeasure === true || Ke.test(String(t?.dataType ?? "")) ? "Continuous" : "Categorical";
1546
1546
  }
1547
- function Et(t) {
1548
- return t?.isMeasure === true || Ue.test(String(t?.dataType ?? ""));
1547
+ function It2(t) {
1548
+ return t?.isMeasure === true || Ke.test(String(t?.dataType ?? ""));
1549
1549
  }
1550
- function Ve(t) {
1551
- let e = t ?? {}, n = Nt(e);
1550
+ function Ye(t) {
1551
+ let e = t ?? {}, n = vt(e);
1552
1552
  if (n !== "Continuous") return { nature: n, additivity: "unknown", basis: "role", suppressed: false };
1553
- if ($e(e.name)) return { nature: n, additivity: "positional", basis: "name", suppressed: true };
1553
+ if (Ve(e.name)) return { nature: n, additivity: "positional", basis: "name", suppressed: true };
1554
1554
  let r2 = String(e.additivity ?? "").trim().toLowerCase();
1555
- if (!(r2 === "additive" && Ct(e.name))) {
1555
+ if (!(r2 === "additive" && xt(e.name))) {
1556
1556
  if (r2 === "additive") return { nature: n, additivity: "additive", basis: "measured", suppressed: false };
1557
1557
  if (r2 === "part_of_whole") return { nature: n, additivity: "part_of_whole", basis: "measured", suppressed: false };
1558
1558
  if (r2 === "intensive_rate") return { nature: n, additivity: "intensive_rate", basis: "measured", suppressed: false };
1559
1559
  }
1560
- return e.discourageAggregationAcrossGroups === true ? { nature: n, additivity: "intensive_rate", basis: "host-flag", suppressed: false } : Tt(e.name) ? { nature: n, additivity: "intensive_rate", basis: "name", suppressed: false } : { nature: n, additivity: "additive", basis: "default", suppressed: false };
1560
+ return e.discourageAggregationAcrossGroups === true ? { nature: n, additivity: "intensive_rate", basis: "host-flag", suppressed: false } : Et(e.name) ? { nature: n, additivity: "intensive_rate", basis: "name", suppressed: false } : { nature: n, additivity: "additive", basis: "default", suppressed: false };
1561
1561
  }
1562
- function Ke(t) {
1563
- let e = Ve(t), n = t ?? {};
1562
+ function He(t) {
1563
+ let e = Ye(t), n = t ?? {};
1564
1564
  if (e.nature === "Categorical") return ["first", "distinctcount", "count"];
1565
- if (e.nature === "Ordinal") return Et(n) ? ["median", "average", "min", "max", "first", "distinctcount", "count"] : ["first", "distinctcount", "count"];
1565
+ if (e.nature === "Ordinal") return It2(n) ? ["median", "average", "min", "max", "first", "distinctcount", "count"] : ["first", "distinctcount", "count"];
1566
1566
  switch (e.additivity) {
1567
1567
  case "positional":
1568
1568
  return ["min", "max", "count", "distinctcount", "first"];
@@ -1572,22 +1572,22 @@ function Ke(t) {
1572
1572
  return ["sum", "average", "median", "min", "max", "count", "distinctcount", "first"];
1573
1573
  }
1574
1574
  }
1575
- function Ln(t) {
1576
- return Ke(t)[0];
1575
+ function On(t) {
1576
+ return He(t)[0];
1577
1577
  }
1578
- function On(t, e) {
1578
+ function kn(t, e) {
1579
1579
  if (e !== "sum" && e !== "count") return false;
1580
1580
  if (e === "count") return true;
1581
- let n = Ve(t);
1581
+ let n = Ye(t);
1582
1582
  return n.additivity === "additive" || n.additivity === "part_of_whole" || n.additivity === "unknown";
1583
1583
  }
1584
- var wt = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, String.raw`\bcolumns\s*\[\s*-?\d`, String.raw`\.iloc\s*\[[^\]]*,`, String.raw`\.iat\s*\[`, String.raw`\bselect_dtypes\b`, String.raw`\b_get_numeric_data\b`, String.raw`\bis_numeric_dtype\b`, String.raw`\bfor\s+\w+\s+in\s+(?:list\s*\(\s*)?df\.columns\b`, String.raw`\bdf\.columns\s*\.\s*(?:tolist|to_list|difference|drop)\b`, String.raw`\bdf\.dtypes\b`, String.raw`\bObject\s*\.\s*(?:keys|values|entries)\s*\(\s*(?:rows|data|df)?\s*\[\s*0\s*\]`, String.raw`\b(?:row|rw|r)\s*\[\s*\d+\s*\]`].join("|"));
1584
+ var Dt = new RegExp([String.raw`\bisMeasure\b`, String.raw`\bdataType\b`, String.raw`\bcolumns\s*\[\s*-?\d`, String.raw`\.iloc\s*\[[^\]]*,`, String.raw`\.iat\s*\[`, String.raw`\bselect_dtypes\b`, String.raw`\b_get_numeric_data\b`, String.raw`\bis_numeric_dtype\b`, String.raw`\bfor\s+\w+\s+in\s+(?:list\s*\(\s*)?df\.columns\b`, String.raw`\bdf\.columns\s*\.\s*(?:tolist|to_list|difference|drop)\b`, String.raw`\bdf\.dtypes\b`, String.raw`\bObject\s*\.\s*(?:keys|values|entries)\s*\(\s*(?:rows|data|df)?\s*\[\s*0\s*\]`, String.raw`\b(?:row|rw|r)\s*\[\s*\d+\s*\]`].join("|"));
1585
1585
 
1586
1586
  // ../shape-core/dist/index.mjs
1587
1587
  /*! @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. */
1588
1588
  var X3 = 2;
1589
1589
  var de2 = 400;
1590
- function Z2(t) {
1590
+ function Z3(t) {
1591
1591
  return !!E(t);
1592
1592
  }
1593
1593
  function F3(t) {
@@ -1599,13 +1599,13 @@ function F3(t) {
1599
1599
  }
1600
1600
  return Array.from(e);
1601
1601
  }
1602
- function I2(t) {
1602
+ function I4(t) {
1603
1603
  let e = F3(t);
1604
1604
  if (e.length === 0 || ee3(t) < 95) return false;
1605
- let n = e.filter((u2) => Z2(u2) && !Y(u2)).length, o2 = e.filter((u2) => !Z2(u2) && !!Y(u2)).length;
1605
+ let n = e.filter((u2) => Z3(u2) && !Y(u2)).length, o2 = e.filter((u2) => !Z3(u2) && !!Y(u2)).length;
1606
1606
  return n >= 1 && n >= o2;
1607
1607
  }
1608
- function ue(t, e) {
1608
+ function ue2(t, e) {
1609
1609
  if (!Y(t)) return false;
1610
1610
  let n = E(t);
1611
1611
  return n ? e === "world" ? true : s3.has(n) : false;
@@ -1614,7 +1614,7 @@ function ee3(t) {
1614
1614
  let e = F3(t);
1615
1615
  if (e.length === 0) return 0;
1616
1616
  let n = 0;
1617
- for (let o2 of e) Z2(o2) && n++;
1617
+ for (let o2 of e) Z3(o2) && n++;
1618
1618
  return Math.round(n / e.length * 1e3) / 10;
1619
1619
  }
1620
1620
  function z3(t) {
@@ -1633,35 +1633,35 @@ function ne2(t) {
1633
1633
  }
1634
1634
  return Array.from(e);
1635
1635
  }
1636
- function te2(t) {
1636
+ function te(t) {
1637
1637
  let e = ne2(t);
1638
1638
  if (e.length === 0) return 0;
1639
1639
  let n = 0;
1640
1640
  for (let o2 of e) Z(o2).length > 0 && n++;
1641
1641
  return Math.round(n / e.length * 1e3) / 10;
1642
1642
  }
1643
- function ce(t, e) {
1643
+ function ce2(t, e) {
1644
1644
  return y2(e, rt) ? true : ne2(t).some((n) => /^\d{5}(-\d{4})?$/.test(n.replace(/\.0+$/, "")));
1645
1645
  }
1646
- function Cn2(t, e) {
1646
+ function Pn2(t, e) {
1647
1647
  let n = F3(t);
1648
1648
  if (n.length === 0) return 0;
1649
1649
  let o2 = 0;
1650
1650
  for (let u2 of n) p3(u2, e) && o2++;
1651
1651
  return Math.round(o2 / n.length * 1e3) / 10;
1652
1652
  }
1653
- function J3(t, e) {
1653
+ function J4(t, e) {
1654
1654
  let n = 0;
1655
1655
  for (let o2 of F3(t)) e(o2) && n++;
1656
1656
  return n;
1657
1657
  }
1658
- function bn(t, e) {
1658
+ function Ln(t, e) {
1659
1659
  let n = 0;
1660
1660
  for (let o2 of ne2(t)) e(o2) && n++;
1661
1661
  return n;
1662
1662
  }
1663
- function Tn(t, e, n, o2, u2) {
1664
- let l = [], a2 = [], i = {}, S2 = {}, T2 = new Set(t), b2 = (s) => e.map((d2) => d2[s]);
1663
+ function Mn2(t, e, n, o2, u2) {
1664
+ let l = [], a2 = [], i = {}, S2 = {}, T2 = new Set(t), b4 = (s) => e.map((d2) => d2[s]);
1665
1665
  for (let s of ["city", "country"]) {
1666
1666
  let d2 = n?.[s];
1667
1667
  d2 && T2.has(d2) && (i[s] = d2);
@@ -1673,66 +1673,66 @@ function Tn(t, e, n, o2, u2) {
1673
1673
  }
1674
1674
  let m2 = n?.zip;
1675
1675
  if (m2 && T2.has(m2)) {
1676
- let s = b2(m2), d2 = te2(s);
1677
- d2 < 95 ? a2.push(`zip=${m2} (only ${d2}% of values read as ZIPs)`) : ce(s, m2) ? i.zip = m2 : a2.push(`zip=${m2} (all values are 3-4 digits with nothing to say they are postal)`);
1676
+ let s = b4(m2), d2 = te(s);
1677
+ d2 < 95 ? a2.push(`zip=${m2} (only ${d2}% of values read as ZIPs)`) : ce2(s, m2) ? i.zip = m2 : a2.push(`zip=${m2} (all values are 3-4 digits with nothing to say they are postal)`);
1678
1678
  }
1679
1679
  let p2 = n?.state;
1680
1680
  if (p2 && T2.has(p2)) {
1681
- let s = b2(p2), d2 = F3(s);
1682
- d2.length > 0 && d2.every((E4) => ue(E4, o2)) ? a2.push(`state=${p2} (every value is "CA", which is both Canada and California)`) : I2(s) ? (a2.push(`state=${p2} (every value is a country, not a state)`), i.country || (i.country = p2)) : z3(s) < 95 ? a2.push(`state=${p2} (only ${z3(s)}% of values are states/provinces)`) : i.state = p2;
1681
+ let s = b4(p2), d2 = F3(s);
1682
+ d2.length > 0 && d2.every((E4) => ue2(E4, o2)) ? a2.push(`state=${p2} (every value is "CA", which is both Canada and California)`) : I4(s) ? (a2.push(`state=${p2} (every value is a country, not a state)`), i.country || (i.country = p2)) : z3(s) < 95 ? a2.push(`state=${p2} (only ${z3(s)}% of values are states/provinces)`) : i.state = p2;
1683
1683
  }
1684
- let c2 = new Set(Object.values(i).filter(Boolean)), C = t.filter((s) => !c2.has(s) && !s.startsWith("__"));
1684
+ let c2 = new Set(Object.values(i).filter(Boolean)), C2 = t.filter((s) => !c2.has(s) && !s.startsWith("__"));
1685
1685
  if (!i.state) {
1686
1686
  let s = null;
1687
- for (let d2 of C) {
1688
- let E4 = b2(d2);
1689
- if (I2(E4)) continue;
1687
+ for (let d2 of C2) {
1688
+ let E4 = b4(d2);
1689
+ if (I4(E4)) continue;
1690
1690
  let P4 = z3(E4);
1691
1691
  if (P4 < 95) continue;
1692
- let K3 = J3(E4, (V3) => !!Y(V3)), Pe = J3(E4, (V3) => !!Y(V3) && !ue(V3, o2));
1692
+ let K3 = J4(E4, (V3) => !!Y(V3)), Pe = J4(E4, (V3) => !!Y(V3) && !ue2(V3, o2));
1693
1693
  K3 < X3 && Pe < 1 || (!s || P4 > s.pct) && (s = { name: d2, pct: P4 });
1694
1694
  }
1695
1695
  s && (i.state = s.name, c2.add(s.name), l.push(`state=${s.name} (${s.pct}% states/provinces)`));
1696
1696
  }
1697
- if (!i.zip) for (let s of C) {
1697
+ if (!i.zip) for (let s of C2) {
1698
1698
  if (c2.has(s)) continue;
1699
- let d2 = b2(s), E4 = te2(d2);
1700
- if (!(E4 < 95) && ce(d2, s) && !(bn(d2, (P4) => Z(P4).length > 0) < X3)) {
1699
+ let d2 = b4(s), E4 = te(d2);
1700
+ if (!(E4 < 95) && ce2(d2, s) && !(Ln(d2, (P4) => Z(P4).length > 0) < X3)) {
1701
1701
  i.zip = s, c2.add(s), l.push(`zip=${s} (${E4}% ZIP codes)`);
1702
1702
  break;
1703
1703
  }
1704
1704
  }
1705
1705
  let R2 = i.country;
1706
- if (!R2 || !I2(b2(R2))) {
1706
+ if (!R2 || !I4(b4(R2))) {
1707
1707
  let s = null;
1708
- for (let d2 of C) {
1709
- if (c2.has(d2) || !I2(b2(d2))) continue;
1710
- let E4 = ee3(b2(d2));
1708
+ for (let d2 of C2) {
1709
+ if (c2.has(d2) || !I4(b4(d2))) continue;
1710
+ let E4 = ee3(b4(d2));
1711
1711
  (!s || E4 > s.pct) && (s = { name: d2, pct: E4 });
1712
1712
  }
1713
- s && (R2 && (a2.push(`country=${R2} (only ${ee3(b2(R2))}% of values are country identifiers; using ${s.name} instead)`), S2.country = R2), i.country = s.name, c2.add(s.name), l.push(`country=${s.name}`));
1713
+ s && (R2 && (a2.push(`country=${R2} (only ${ee3(b4(R2))}% of values are country identifiers; using ${s.name} instead)`), S2.country = R2), i.country = s.name, c2.add(s.name), l.push(`country=${s.name}`));
1714
1714
  }
1715
1715
  if (!i.city) {
1716
1716
  let s = null;
1717
- for (let d2 of C) {
1717
+ for (let d2 of C2) {
1718
1718
  if (c2.has(d2)) continue;
1719
- let E4 = b2(d2), P4 = Cn2(E4, o2);
1720
- P4 < m3 || J3(E4, (K3) => p3(K3, o2)) < X3 || (!s || P4 > s.pct) && (s = { name: d2, pct: P4 });
1719
+ let E4 = b4(d2), P4 = Pn2(E4, o2);
1720
+ P4 < m3 || J4(E4, (K3) => p3(K3, o2)) < X3 || (!s || P4 > s.pct) && (s = { name: d2, pct: P4 });
1721
1721
  }
1722
1722
  s && (i.city = s.name, l.push(`city=${s.name} (${s.pct}% known cities)`));
1723
1723
  }
1724
- let w2 = i.country ? b2(i.country) : [], v3 = !!i.country && I2(w2), _3 = v3 ? new Set(w2.map((s) => E(s == null ? null : String(s))).filter(Boolean)).size : 0, x3 = v3 && _3 >= 2, g3 = !!(i.lat && i.lon) && e.some((s) => {
1724
+ let w2 = i.country ? b4(i.country) : [], v2 = !!i.country && I4(w2), _3 = v2 ? new Set(w2.map((s) => E(s == null ? null : String(s))).filter(Boolean)).size : 0, x3 = v2 && _3 >= 2, g3 = !!(i.lat && i.lon) && e.some((s) => {
1725
1725
  let d2 = +String(s[i.lat] ?? "").trim(), E4 = +String(s[i.lon] ?? "").trim();
1726
1726
  return isFinite(d2) && isFinite(E4) && d2 >= -90 && d2 <= 90 && E4 >= -180 && E4 <= 180 && String(s[i.lat] ?? "").trim() !== "" && String(s[i.lon] ?? "").trim() !== "";
1727
1727
  });
1728
- return i.lat && i.lon && !g3 && a2.push(`lat/lon=${i.lat}/${i.lon} (no row holds a usable coordinate pair)`), i.country && !x3 && !(i.city || i.state || i.zip || g3) && a2.push(v3 ? `country=${i.country} (every row resolves to the same country - nothing to place apart)` : `country=${i.country} (values are not country identifiers)`), { bind: !!(i.city || i.state || i.zip || x3 || g3) ? i : null, backfilled: l, refused: a2, ...Object.keys(S2).length ? { labelFallback: S2 } : {} };
1728
+ return i.lat && i.lon && !g3 && a2.push(`lat/lon=${i.lat}/${i.lon} (no row holds a usable coordinate pair)`), i.country && !x3 && !(i.city || i.state || i.zip || g3) && a2.push(v2 ? `country=${i.country} (every row resolves to the same country - nothing to place apart)` : `country=${i.country} (values are not country identifiers)`), { bind: !!(i.city || i.state || i.zip || x3 || g3) ? i : null, backfilled: l, refused: a2, ...Object.keys(S2).length ? { labelFallback: S2 } : {} };
1729
1729
  }
1730
1730
  var r = (t, ...e) => ({ part: t, langs: Object.freeze(e) });
1731
1731
  var re2 = Object.freeze({ jaar: r("year", "nl"), kwartaal: r("quarter", "nl"), maand: r("month", "nl"), dag: r("day", "nl", "sv", "da", "nb"), jahr: r("year", "de"), quartal: r("quarter", "de"), monat: r("month", "de"), tag: r("day", "de"), ann\u00E9e: r("year", "fr"), mois: r("month", "fr"), jour: r("day", "fr"), trimestre: r("quarter", "fr", "es", "pt", "it"), a\u00F1o: r("year", "es"), mes: r("month", "es"), d\u00EDa: r("day", "es"), ano: r("year", "pt"), m\u00EAs: r("month", "pt"), dia: r("day", "pt"), anno: r("year", "it"), mese: r("month", "it"), giorno: r("day", "it"), \u0433\u043E\u0434: r("year", "ru"), \u043C\u0435\u0441\u044F\u0446: r("month", "ru"), \u0440\u0456\u043A: r("year", "uk"), \u043C\u0456\u0441\u044F\u0446\u044C: r("month", "uk"), \u043A\u0432\u0430\u0440\u0442\u0430\u043B: r("quarter", "ru", "uk"), \u0434\u0435\u043D\u044C: r("day", "ru", "uk"), rok: r("year", "pl", "cs", "sk"), kwarta\u0142: r("quarter", "pl"), miesi\u0105c: r("month", "pl"), dzie\u0144: r("day", "pl"), \u010Dtvrtlet\u00ED: r("quarter", "cs"), m\u011Bs\u00EDc: r("month", "cs"), den: r("day", "cs"), \u0161tvr\u0165rok: r("quarter", "sk"), mesiac: r("month", "sk"), de\u0148: r("day", "sk"), \u00E5r: r("year", "sv", "da", "nb"), kvartal: r("quarter", "sv", "da", "nb"), m\u00E5nad: r("month", "sv"), m\u00E5ned: r("month", "da", "nb"), vuosi: r("year", "fi"), vuosinelj\u00E4nnes: r("quarter", "fi"), kuukausi: r("month", "fi"), p\u00E4iv\u00E4: r("day", "fi"), \u00E9v: r("year", "hu"), negyed\u00E9v: r("quarter", "hu"), h\u00F3nap: r("month", "hu"), nap: r("day", "hu"), y\u0131l: r("year", "tr"), \u00E7eyrek: r("quarter", "tr"), ay: r("month", "tr"), g\u00FCn: r("day", "tr"), \u03AD\u03C4\u03BF\u03C2: r("year", "el"), \u03C4\u03C1\u03AF\u03BC\u03B7\u03BD\u03BF: r("quarter", "el"), \u03BC\u03AE\u03BD\u03B1\u03C2: r("month", "el"), \u03B7\u03BC\u03AD\u03C1\u03B1: r("day", "el"), an: r("year", "ro"), trimestru: r("quarter", "ro"), lun\u0103: r("month", "ro"), zi: r("day", "ro"), godina: r("year", "hr"), tromjese\u010Dje: r("quarter", "hr"), mjesec: r("month", "hr"), dan: r("day", "hr"), \u5E74: r("year", "ja", "zh"), \u56DB\u534A\u671F: r("quarter", "ja"), \u5B63\u5EA6: r("quarter", "zh"), \u6708: r("month", "ja", "zh"), \u65E5: r("day", "ja", "zh"), \uC5F0\uB3C4: r("year", "ko"), \uBD84\uAE30: r("quarter", "ko"), \uC6D4: r("month", "ko"), \uC77C: r("day", "ko"), tahun: r("year", "id"), kuartal: r("quarter", "id"), triwulan: r("quarter", "id"), bulan: r("month", "id"), hari: r("day", "id"), n\u0103m: r("year", "vi"), qu\u00FD: r("quarter", "vi"), th\u00E1ng: r("month", "vi"), ng\u00E0y: r("day", "vi"), \u0E1B\u0E35: r("year", "th"), \u0E44\u0E15\u0E23\u0E21\u0E32\u0E2A: r("quarter", "th"), \u0E40\u0E14\u0E37\u0E2D\u0E19: r("month", "th"), \u0E27\u0E31\u0E19: r("day", "th"), \u0627\u0644\u0633\u0646\u0629: r("year", "ar"), \u0633\u0646\u0629: r("year", "ar"), \u0627\u0644\u0639\u0627\u0645: r("year", "ar"), \u0639\u0627\u0645: r("year", "ar"), \u0627\u0644\u0631\u0628\u0639: r("quarter", "ar"), \u0631\u0628\u0639: r("quarter", "ar"), "\u0631\u0628\u0639 \u0627\u0644\u0633\u0646\u0629": r("quarter", "ar"), \u0627\u0644\u0634\u0647\u0631: r("month", "ar"), \u0634\u0647\u0631: r("month", "ar"), \u0627\u0644\u064A\u0648\u0645: r("day", "ar"), \u064A\u0648\u0645: r("day", "ar"), \u05E9\u05E0\u05D4: r("year", "he"), \u05E8\u05D1\u05E2\u05D5\u05DF: r("quarter", "he"), \u05D7\u05D5\u05D3\u05E9: r("month", "he"), \u05D9\u05D5\u05DD: r("day", "he"), \u0935\u0930\u094D\u0937: r("year", "hi"), \u0938\u093E\u0932: r("year", "hi"), \u0924\u093F\u092E\u093E\u0939\u0940: r("quarter", "hi"), \u092E\u0939\u0940\u0928\u093E: r("month", "hi"), \u092E\u093E\u0939: r("month", "hi"), \u0926\u093F\u0928: r("day", "hi"), \u0633\u0627\u0644: r("year", "fa"), \u0645\u0627\u0647: r("month", "fa"), \u0631\u0648\u0632: r("day", "fa") });
1732
- var En = Object.freeze(Array.from(new Set(Object.values(re2).flatMap((t) => t.langs))));
1732
+ var _n = Object.freeze(Array.from(new Set(Object.values(re2).flatMap((t) => t.langs))));
1733
1733
  var me = Object.freeze(["fa", "ar", "he", "th"]);
1734
- var Kn = Object.freeze({ integer: "number", decimal: "number", double: "number", datetime: "date", date: "date", boolean: "boolean", string: "text" });
1735
- var Jn = Object.freeze({ RENDER_START: "render-start", RENDER_OK: "render-ok", RENDER_ERROR: "render-error", VIEW: "view", VIEW_VERDICT: "view-verdict" });
1734
+ var Zn2 = Object.freeze({ integer: "number", decimal: "number", double: "number", datetime: "date", date: "date", boolean: "boolean", string: "text" });
1735
+ var ar = Object.freeze({ RENDER_START: "render-start", RENDER_OK: "render-ok", RENDER_ERROR: "render-error", VIEW: "view", VIEW_VERDICT: "view-verdict" });
1736
1736
 
1737
1737
  // src/payload.ts
1738
1738
  var ROW_IDX_COLUMN = "__rowIdx__";
@@ -1747,7 +1747,7 @@ function resolvePointChannel(cols, rowObjs, point) {
1747
1747
  let labelCol;
1748
1748
  if (bind) {
1749
1749
  const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
1750
- const res = Tn(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
1750
+ const res = Mn2(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
1751
1751
  bind = res.bind;
1752
1752
  rolesBackfilled = res.backfilled;
1753
1753
  rolesRefused = res.refused;
@@ -1795,7 +1795,7 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
1795
1795
  cols = cols.filter((c2) => c2.name !== ROW_IDX_COLUMN);
1796
1796
  let utcDayColumns = null;
1797
1797
  if (opts?.utcDays) {
1798
- const norm = se(cols, rowObjs);
1798
+ const norm = ge(cols, rowObjs);
1799
1799
  rowObjs = norm.rows;
1800
1800
  utcDayColumns = norm.columns;
1801
1801
  }
@@ -1838,11 +1838,11 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination, opts) {
1838
1838
  const row = rowObjs[r2];
1839
1839
  const a2 = new Array(cols.length + extra);
1840
1840
  for (let c2 = 0; c2 < cols.length; c2++) {
1841
- const v3 = row[colNames[c2]];
1842
- if (v3 instanceof Date) {
1843
- a2[c2] = v3.toISOString();
1841
+ const v2 = row[colNames[c2]];
1842
+ if (v2 instanceof Date) {
1843
+ a2[c2] = v2.toISOString();
1844
1844
  } else {
1845
- a2[c2] = v3 ?? null;
1845
+ a2[c2] = v2 ?? null;
1846
1846
  }
1847
1847
  }
1848
1848
  let k3 = cols.length;
@@ -2067,11 +2067,11 @@ function createMarkResolver(env) {
2067
2067
  const m2 = el.getScreenCTM();
2068
2068
  if (!m2) return Number.MAX_VALUE;
2069
2069
  let best = Number.MAX_VALUE;
2070
- const N3 = 64;
2071
- for (let i = 0; i <= N3; i++) {
2072
- const pt2 = el.getPointAtLength(L4 * i / N3);
2073
- const dx = m2.a * pt2.x + m2.c * pt2.y + m2.e - x3;
2074
- const dy = m2.b * pt2.x + m2.d * pt2.y + m2.f - y4;
2070
+ const N2 = 64;
2071
+ for (let i = 0; i <= N2; i++) {
2072
+ const pt = el.getPointAtLength(L4 * i / N2);
2073
+ const dx = m2.a * pt.x + m2.c * pt.y + m2.e - x3;
2074
+ const dy = m2.b * pt.x + m2.d * pt.y + m2.f - y4;
2075
2075
  const d2 = dx * dx + dy * dy;
2076
2076
  if (d2 < best) best = d2;
2077
2077
  }
@@ -2390,34 +2390,34 @@ var VALUE_AXIS_MIN_FIT = 0.8;
2390
2390
  var MIN_AXIS_SPAN_PX = 40;
2391
2391
  var EMPTY4 = { marks: 0, axis: "", column: "", fit: 0, offShare: 0, medianOffRadii: 0 };
2392
2392
  function num(el, name) {
2393
- const v3 = el.getAttribute?.(name);
2394
- if (v3 === null || v3 === void 0 || String(v3).trim() === "") return NaN;
2395
- return parseFloat(String(v3));
2393
+ const v2 = el.getAttribute?.(name);
2394
+ if (v2 === null || v2 === void 0 || String(v2).trim() === "") return NaN;
2395
+ return parseFloat(String(v2));
2396
2396
  }
2397
2397
  function median(xs) {
2398
2398
  if (!xs.length) return NaN;
2399
- const s = [...xs].sort((a2, b2) => a2 - b2);
2399
+ const s = [...xs].sort((a2, b4) => a2 - b4);
2400
2400
  const m2 = s.length >> 1;
2401
2401
  return s.length % 2 ? s[m2] : (s[m2 - 1] + s[m2]) / 2;
2402
2402
  }
2403
- function robustLine(v3, pos) {
2404
- const n = v3.length;
2403
+ function robustLine(v2, pos) {
2404
+ const n = v2.length;
2405
2405
  const step = Math.max(1, Math.floor(n / FIT_SAMPLE));
2406
2406
  const idx = [];
2407
2407
  for (let i = 0; i < n; i += step) idx.push(i);
2408
2408
  const slopes = [];
2409
2409
  for (let p2 = 0; p2 < idx.length; p2++) {
2410
2410
  for (let q2 = p2 + 1; q2 < idx.length; q2++) {
2411
- const dv = v3[idx[q2]] - v3[idx[p2]];
2411
+ const dv = v2[idx[q2]] - v2[idx[p2]];
2412
2412
  if (Math.abs(dv) < 1e-12) continue;
2413
2413
  slopes.push((pos[idx[q2]] - pos[idx[p2]]) / dv);
2414
2414
  }
2415
2415
  }
2416
2416
  if (slopes.length < 3) return null;
2417
- const b2 = median(slopes);
2418
- if (!Number.isFinite(b2) || Math.abs(b2) < 1e-12) return null;
2419
- const a2 = median(pos.map((y4, i) => y4 - b2 * v3[i]));
2420
- return Number.isFinite(a2) ? { a: a2, b: b2 } : null;
2417
+ const b4 = median(slopes);
2418
+ if (!Number.isFinite(b4) || Math.abs(b4) < 1e-12) return null;
2419
+ const a2 = median(pos.map((y4, i) => y4 - b4 * v2[i]));
2420
+ return Number.isFinite(a2) ? { a: a2, b: b4 } : null;
2421
2421
  }
2422
2422
  function censusValuePlacement(container, data) {
2423
2423
  try {
@@ -2444,30 +2444,30 @@ function censusValuePlacement(container, data) {
2444
2444
  for (let c2 = 0; c2 < columns.length; c2++) {
2445
2445
  if (/^__.*__$/.test(String(columns[c2]?.name ?? ""))) continue;
2446
2446
  const vals = dots.map((d2) => {
2447
- const v3 = d2.row[c2];
2448
- return v3 === null || v3 === void 0 || v3 === "" ? NaN : typeof v3 === "number" ? v3 : Number(v3);
2447
+ const v2 = d2.row[c2];
2448
+ return v2 === null || v2 === void 0 || v2 === "" ? NaN : typeof v2 === "number" ? v2 : Number(v2);
2449
2449
  });
2450
2450
  const finite = vals.filter(Number.isFinite);
2451
2451
  if (finite.length < dots.length * 0.9 || new Set(finite).size < 8) continue;
2452
- const logs = finite.every((v3) => v3 > 0) ? [false, true] : [false];
2452
+ const logs = finite.every((v2) => v2 > 0) ? [false, true] : [false];
2453
2453
  for (const log of logs) {
2454
2454
  for (const axis of ["x", "y"]) {
2455
2455
  const keep = [];
2456
- const v3 = [], pos = [];
2456
+ const v2 = [], pos = [];
2457
2457
  dots.forEach((d2, k3) => {
2458
2458
  if (!Number.isFinite(vals[k3])) return;
2459
2459
  keep.push(k3);
2460
- v3.push(log ? Math.log10(vals[k3]) : vals[k3]);
2460
+ v2.push(log ? Math.log10(vals[k3]) : vals[k3]);
2461
2461
  pos.push(axis === "x" ? d2.x : d2.y);
2462
2462
  });
2463
- const line = robustLine(v3, pos);
2463
+ const line = robustLine(v2, pos);
2464
2464
  if (!line) continue;
2465
2465
  const lo = Math.min(...pos), hi = Math.max(...pos);
2466
2466
  if (hi - lo < MIN_AXIS_SPAN_PX) continue;
2467
2467
  const mean = pos.reduce((s, p2) => s + p2, 0) / pos.length;
2468
2468
  let ssRes = 0, ssTot = 0;
2469
2469
  const res = pos.map((p2, k3) => {
2470
- const e = p2 - (line.a + line.b * v3[k3]);
2470
+ const e = p2 - (line.a + line.b * v2[k3]);
2471
2471
  ssRes += e * e;
2472
2472
  ssTot += (p2 - mean) ** 2;
2473
2473
  return e;
@@ -2524,14 +2524,14 @@ function needsScroll(contentPx, viewportPx, slackPx = SCROLL_SLACK_PX) {
2524
2524
  }
2525
2525
  function contentExtentOf(boxes) {
2526
2526
  if (!boxes || boxes.length === 0) return { w: 0, h: 0, source: "none" };
2527
- const usable = boxes.filter((b2) => b2 && isFinite(b2.right) && isFinite(b2.bottom) && (b2.right > 0 || b2.bottom > 0));
2527
+ const usable = boxes.filter((b4) => b4 && isFinite(b4.right) && isFinite(b4.bottom) && (b4.right > 0 || b4.bottom > 0));
2528
2528
  if (usable.length === 0) return { w: 0, h: 0, source: "none" };
2529
- const inFlow = usable.filter((b2) => !b2.floating);
2529
+ const inFlow = usable.filter((b4) => !b4.floating);
2530
2530
  const counted = inFlow.length > 0 ? inFlow : usable;
2531
2531
  let w2 = 0, h3 = 0;
2532
- for (const b2 of counted) {
2533
- if (b2.right > w2) w2 = b2.right;
2534
- if (b2.bottom > h3) h3 = b2.bottom;
2532
+ for (const b4 of counted) {
2533
+ if (b4.right > w2) w2 = b4.right;
2534
+ if (b4.bottom > h3) h3 = b4.bottom;
2535
2535
  }
2536
2536
  return { w: w2, h: h3, source: inFlow.length > 0 ? "in-flow" : "all-floating" };
2537
2537
  }
@@ -2565,8 +2565,8 @@ var AXIS_PIN_TRACK_REACH_PX = 12;
2565
2565
  function isHorizontalLabelRow(boxes) {
2566
2566
  if (!boxes || boxes.length < 2) return false;
2567
2567
  let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
2568
- for (const b2 of boxes) {
2569
- const cx = (b2.left + b2.right) / 2, cy = (b2.top + b2.bottom) / 2;
2568
+ for (const b4 of boxes) {
2569
+ const cx = (b4.left + b4.right) / 2, cy = (b4.top + b4.bottom) / 2;
2570
2570
  if (!isFinite(cx) || !isFinite(cy)) return false;
2571
2571
  if (cx < minX) minX = cx;
2572
2572
  if (cx > maxX) maxX = cx;
@@ -2578,10 +2578,10 @@ function isHorizontalLabelRow(boxes) {
2578
2578
  function labelBand(boxes, tracks = [], pad = AXIS_PIN_BAND_PAD_PX, trackReach = AXIS_PIN_TRACK_REACH_PX) {
2579
2579
  if (!boxes || boxes.length === 0) return null;
2580
2580
  let top = Infinity, bottom = -Infinity;
2581
- for (const b2 of boxes) {
2582
- if (!isFinite(b2.top) || !isFinite(b2.bottom)) continue;
2583
- if (b2.top < top) top = b2.top;
2584
- if (b2.bottom > bottom) bottom = b2.bottom;
2581
+ for (const b4 of boxes) {
2582
+ if (!isFinite(b4.top) || !isFinite(b4.bottom)) continue;
2583
+ if (b4.top < top) top = b4.top;
2584
+ if (b4.bottom > bottom) bottom = b4.bottom;
2585
2585
  }
2586
2586
  if (!isFinite(top) || !isFinite(bottom) || bottom <= top) return null;
2587
2587
  for (const t of tracks || []) {
@@ -2696,7 +2696,7 @@ function fitReadingFor(lane, c2, slackPx = SCROLL_SLACK_PX, inkOf) {
2696
2696
  overflowsY: needsScroll(contentH, viewH, slackPx),
2697
2697
  extentSource: extent.source,
2698
2698
  boxes: boxes.length,
2699
- floating: boxes.filter((b2) => b2.floating).length,
2699
+ floating: boxes.filter((b4) => b4.floating).length,
2700
2700
  scrollW: c2.scrollWidth,
2701
2701
  scrollH: c2.scrollHeight
2702
2702
  };
@@ -2707,14 +2707,14 @@ var SVG_NS2 = "http://www.w3.org/2000/svg";
2707
2707
  var AXIS_PIN_MAX_CARRIED = 12;
2708
2708
  function unpinScrolledAxis(container) {
2709
2709
  if (!container) return;
2710
- const st = container[CONTAINER_SLOT_AXIS_PIN];
2711
- if (!st) return;
2710
+ const st2 = container[CONTAINER_SLOT_AXIS_PIN];
2711
+ if (!st2) return;
2712
2712
  try {
2713
- container.removeEventListener("scroll", st.onScroll);
2713
+ container.removeEventListener("scroll", st2.onScroll);
2714
2714
  } catch {
2715
2715
  }
2716
2716
  try {
2717
- if (st.overlay.parentNode) st.overlay.parentNode.removeChild(st.overlay);
2717
+ if (st2.overlay.parentNode) st2.overlay.parentNode.removeChild(st2.overlay);
2718
2718
  } catch {
2719
2719
  }
2720
2720
  try {
@@ -2737,8 +2737,8 @@ function backdropFill(svg, container, view, svgBox) {
2737
2737
  for (let i = 0; i < rects.length && i < 6; i++) {
2738
2738
  const r2 = rects[i];
2739
2739
  if (r2.closest(".d3-mark")) continue;
2740
- const b2 = r2.getBoundingClientRect();
2741
- if (b2.width >= svgBox.width * 0.9 && b2.height >= svgBox.height * 0.9) {
2740
+ const b4 = r2.getBoundingClientRect();
2741
+ if (b4.width >= svgBox.width * 0.9 && b4.height >= svgBox.height * 0.9) {
2742
2742
  let fill = "";
2743
2743
  try {
2744
2744
  fill = view.getComputedStyle(r2).fill || "";
@@ -2843,8 +2843,8 @@ function pinScrolledAxis(container, svg) {
2843
2843
  }
2844
2844
  const pinSvg = doc.createElementNS(SVG_NS2, "svg");
2845
2845
  for (const a2 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
2846
- const v3 = svg.getAttribute(a2);
2847
- if (v3) pinSvg.setAttribute(a2, v3);
2846
+ const v2 = svg.getAttribute(a2);
2847
+ if (v2) pinSvg.setAttribute(a2, v2);
2848
2848
  }
2849
2849
  const styles = svg.querySelectorAll("style");
2850
2850
  for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
@@ -2892,15 +2892,15 @@ function pinScrolledAxis(container, svg) {
2892
2892
  const svgTop = svgBox.top - cRect.top - container.clientTop + container.scrollTop;
2893
2893
  const contentBand = { top: svgTop + band.top, bottom: svgTop + band.bottom };
2894
2894
  const place = () => {
2895
- const st = container.scrollTop, vh = container.clientHeight;
2896
- const edge2 = axisPinPlacement(contentBand, st, vh);
2895
+ const st2 = container.scrollTop, vh = container.clientHeight;
2896
+ const edge2 = axisPinPlacement(contentBand, st2, vh);
2897
2897
  if (!edge2) {
2898
2898
  o2.display = "none";
2899
2899
  return null;
2900
2900
  }
2901
2901
  o2.display = "block";
2902
2902
  o2.left = `${svgLeft}px`;
2903
- o2.top = `${edge2 === "top" ? st : st + vh - bandPx}px`;
2903
+ o2.top = `${edge2 === "top" ? st2 : st2 + vh - bandPx}px`;
2904
2904
  return edge2;
2905
2905
  };
2906
2906
  const onScroll = () => {
@@ -2977,8 +2977,8 @@ function fitRenderedChart(container, opts = {}) {
2977
2977
  if (plan.grow) {
2978
2978
  svg.setAttribute("height", String(plan.heightPx));
2979
2979
  if (vb > 0) {
2980
- const b2 = svg.viewBox.baseVal;
2981
- svg.setAttribute("viewBox", `${b2.x} ${b2.y} ${b2.width} ${plan.viewBoxH}`);
2980
+ const b4 = svg.viewBox.baseVal;
2981
+ svg.setAttribute("viewBox", `${b4.x} ${b4.y} ${b4.width} ${plan.viewBoxH}`);
2982
2982
  }
2983
2983
  result.grew = true;
2984
2984
  }
@@ -3076,8 +3076,8 @@ function compositeOver(fg, bg) {
3076
3076
  ];
3077
3077
  }
3078
3078
  function relativeLuminance(rgb) {
3079
- const lin = rgb.map((v3) => {
3080
- const s = v3 / 255;
3079
+ const lin = rgb.map((v2) => {
3080
+ const s = v2 / 255;
3081
3081
  return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
3082
3082
  });
3083
3083
  return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
@@ -3125,9 +3125,9 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
3125
3125
  }
3126
3126
  return out;
3127
3127
  }
3128
- function clamp01(v3) {
3129
- if (typeof v3 !== "number" || !isFinite(v3)) return 1;
3130
- return Math.max(0, Math.min(1, v3));
3128
+ function clamp01(v2) {
3129
+ if (typeof v2 !== "number" || !isFinite(v2)) return 1;
3130
+ return Math.max(0, Math.min(1, v2));
3131
3131
  }
3132
3132
  function hexToRGB(hex2) {
3133
3133
  const p2 = toRGBA(hex2);
@@ -3140,10 +3140,10 @@ var LABEL_CONTRAST_CAP = 2e3;
3140
3140
  var EMPTY5 = { rects: 0, scanned: 0, fixed: 0, pillsBoosted: 0, offFill: 0, pageMajority: 0, paintedOver: 0 };
3141
3141
  function backedSamples(el, pts) {
3142
3142
  try {
3143
- const ge2 = el;
3144
- if (typeof ge2.isPointInFill !== "function" || typeof ge2.getScreenCTM !== "function") return null;
3145
- const m2 = ge2.getScreenCTM();
3146
- const svg = ge2.ownerSVGElement;
3143
+ const ge3 = el;
3144
+ if (typeof ge3.isPointInFill !== "function" || typeof ge3.getScreenCTM !== "function") return null;
3145
+ const m2 = ge3.getScreenCTM();
3146
+ const svg = ge3.ownerSVGElement;
3147
3147
  if (!m2 || !svg || typeof svg.createSVGPoint !== "function") return null;
3148
3148
  if (pts.length === 0) return null;
3149
3149
  const inv = m2.inverse();
@@ -3152,7 +3152,7 @@ function backedSamples(el, pts) {
3152
3152
  const p2 = svg.createSVGPoint();
3153
3153
  p2.x = pts[i].x;
3154
3154
  p2.y = pts[i].y;
3155
- hit.push(ge2.isPointInFill(p2.matrixTransform(inv)));
3155
+ hit.push(ge3.isPointInFill(p2.matrixTransform(inv)));
3156
3156
  }
3157
3157
  return hit;
3158
3158
  } catch {
@@ -3280,7 +3280,7 @@ function applyLabelContrast(container, opts = {}) {
3280
3280
  }
3281
3281
  report.scanned++;
3282
3282
  const opaqueUnder = under.filter((x3) => effAlpha(x3.mk) >= PILL_OPAQUE_ALPHA);
3283
- const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a2, b2) => b2.ov > a2.ov || b2.ov === a2.ov && b2.mk.ord > a2.mk.ord ? b2 : a2);
3283
+ const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a2, b4) => b4.ov > a2.ov || b4.ov === a2.ov && b4.mk.ord > a2.mk.ord ? b4 : a2);
3284
3284
  const cell = cellEntry.mk;
3285
3285
  const pill = under.find((x3) => x3.mk !== cell && isPillBackdropAlpha(effAlpha(x3.mk)) && x3.mk.ord > cell.ord && pillBacksGlyph(x3.ov, glyphArea))?.mk;
3286
3286
  const cellRGBA = toRGBA(cell.fill);
@@ -3437,7 +3437,7 @@ function compileRenderFn(code, win, doc, d3) {
3437
3437
  return fn;
3438
3438
  }
3439
3439
  var ASYNC_RENDER_TIMEOUT_MS = 15e3;
3440
- var isThenable = (v3) => !!v3 && (typeof v3 === "object" || typeof v3 === "function") && typeof v3.then === "function";
3440
+ var isThenable = (v2) => !!v2 && (typeof v2 === "object" || typeof v2 === "function") && typeof v2.then === "function";
3441
3441
  function createChartHost(container, config) {
3442
3442
  const doc = container.ownerDocument;
3443
3443
  const win = doc?.defaultView ?? globalThis;
@@ -3445,7 +3445,7 @@ function createChartHost(container, config) {
3445
3445
  let data = config.data;
3446
3446
  {
3447
3447
  const stamped = config.data?.meta?.hostContract;
3448
- const major = (v3) => (v3 || "").split(".")[0];
3448
+ const major = (v2) => (v2 || "").split(".")[0];
3449
3449
  if (stamped && major(stamped) !== major(HOST_CONTRACT_VERSION)) {
3450
3450
  try {
3451
3451
  (win?.console ?? console)?.warn(
@@ -3499,9 +3499,9 @@ function createChartHost(container, config) {
3499
3499
  const ensureAffordanceStyles = () => {
3500
3500
  try {
3501
3501
  if (!doc || doc.getElementById("bic-chart-host-affordances")) return;
3502
- const st = doc.createElement("style");
3503
- st.id = "bic-chart-host-affordances";
3504
- st.textContent = `
3502
+ const st2 = doc.createElement("style");
3503
+ st2.id = "bic-chart-host-affordances";
3504
+ st2.textContent = `
3505
3505
  /* TYPOGRAPHY FIREWALL. Generated charts set font-size but almost never line-height or
3506
3506
  letter-spacing, so they INHERIT whatever the host page cascades in. A page with
3507
3507
  \`:root { font: 18px/145% }\` (the stock Vite template does exactly this) hands every
@@ -3550,7 +3550,7 @@ function createChartHost(container, config) {
3550
3550
  font-weight: 700 !important;
3551
3551
  text-decoration: underline !important;
3552
3552
  }`;
3553
- (doc.head || doc.documentElement)?.appendChild(st);
3553
+ (doc.head || doc.documentElement)?.appendChild(st2);
3554
3554
  } catch {
3555
3555
  }
3556
3556
  };
@@ -3862,16 +3862,16 @@ function toSourceRows(rowMap, payloadRowIdxs) {
3862
3862
  return payloadRowIdxs.map((i) => rowMap[i]).filter((i) => i !== void 0);
3863
3863
  }
3864
3864
  function toPayloadRows(rowMap, sourceRowIdxs) {
3865
- const at3 = /* @__PURE__ */ new Map();
3865
+ const at2 = /* @__PURE__ */ new Map();
3866
3866
  rowMap.forEach((src, k3) => {
3867
- if (!at3.has(src)) at3.set(src, k3);
3867
+ if (!at2.has(src)) at2.set(src, k3);
3868
3868
  });
3869
- return sourceRowIdxs.map((s) => at3.get(s)).filter((k3) => k3 !== void 0);
3869
+ return sourceRowIdxs.map((s) => at2.get(s)).filter((k3) => k3 !== void 0);
3870
3870
  }
3871
- var sameRows = (a2, b2) => {
3872
- if (a2.length !== b2.length) return false;
3873
- const x3 = a2.slice().sort((p2, q2) => p2 - q2), y4 = b2.slice().sort((p2, q2) => p2 - q2);
3874
- return x3.every((v3, i) => v3 === y4[i]);
3871
+ var sameRows = (a2, b4) => {
3872
+ if (a2.length !== b4.length) return false;
3873
+ const x3 = a2.slice().sort((p2, q2) => p2 - q2), y4 = b4.slice().sort((p2, q2) => p2 - q2);
3874
+ return x3.every((v2, i) => v2 === y4[i]);
3875
3875
  };
3876
3876
  function syncMemberSelection(host, selection, id, highlight, incoming, rowMap) {
3877
3877
  const mine = selection.sourceId === id && selection.rows.length > 0;
@@ -4048,13 +4048,13 @@ export {
4048
4048
  registerGeo,
4049
4049
  registerGeoAsset,
4050
4050
  clearGeoCache,
4051
- oe,
4052
- F2 as F,
4051
+ le,
4052
+ L2 as L,
4053
4053
  L3,
4054
- Ve,
4055
- Ke,
4056
- Ln,
4054
+ Ye,
4055
+ He,
4057
4056
  On,
4057
+ kn,
4058
4058
  buildRenderPayload,
4059
4059
  stripJsComments,
4060
4060
  isInsideControl,