@bicharts/chart-host 0.5.85 → 0.5.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-RD3DRWLL.mjs → chunk-R4STRHXO.mjs} +527 -527
- package/dist/index.mjs +9 -9
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
|
@@ -22,40 +22,40 @@ 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 d,
|
|
25
|
+
var d, s2 = !n.document && !!n.postMessage, a4 = n.IS_PAPA_WORKER || false, o = {}, h2 = 0, v3 = {};
|
|
26
26
|
function P4(e) {
|
|
27
27
|
return 65279 === e.charCodeAt(0) ? e.slice(1) : e;
|
|
28
28
|
}
|
|
29
|
-
function
|
|
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
31
|
var t = b2(e2);
|
|
32
32
|
t.chunkSize = parseInt(t.chunkSize), e2.step || e2.chunk || (t.chunkSize = null);
|
|
33
|
-
this._handle = new
|
|
33
|
+
this._handle = new i(t), (this._handle.streamer = this)._config = t;
|
|
34
34
|
}.call(this, e), this.parseChunk = function(t, e2) {
|
|
35
|
-
var
|
|
36
|
-
if (this.isFirstChunk && 0 <
|
|
35
|
+
var i2 = parseInt(this._config.skipFirstNLines) || 0;
|
|
36
|
+
if (this.isFirstChunk && 0 < i2) {
|
|
37
37
|
let e4 = this._config.newline;
|
|
38
|
-
e4 || (r2 = this._config.quoteChar || '"', e4 = this._handle.guessLineEndings(t, r2)), t = [...t.split(e4).slice(
|
|
38
|
+
e4 || (r2 = this._config.quoteChar || '"', e4 = this._handle.guessLineEndings(t, r2)), t = [...t.split(e4).slice(i2)].join(e4);
|
|
39
39
|
}
|
|
40
40
|
this.isFirstChunk && q3(this._config.beforeFirstChunk) && void 0 !== (r2 = this._config.beforeFirstChunk(t)) && (t = r2), this.isFirstChunk = false, this._halted = false;
|
|
41
|
-
var
|
|
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
|
-
t = r2.meta.cursor,
|
|
44
|
-
if (
|
|
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: v3.WORKER_ID, finished: i2 });
|
|
45
45
|
else if (q3(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;
|
|
48
48
|
}
|
|
49
|
-
return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(r2.data), this._completeResults.errors = this._completeResults.errors.concat(r2.errors), this._completeResults.meta = r2.meta), this._completed || !
|
|
49
|
+
return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(r2.data), this._completeResults.errors = this._completeResults.errors.concat(r2.errors), this._completeResults.meta = r2.meta), this._completed || !i2 || !q3(this._config.complete) || r2 && r2.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), i2 || r2 && r2.meta.paused || this._nextChunk(), r2;
|
|
50
50
|
}
|
|
51
51
|
this._halted = true;
|
|
52
52
|
}, this._sendError = function(e2) {
|
|
53
|
-
q3(this._config.error) ? this._config.error(e2) :
|
|
53
|
+
q3(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 f(e) {
|
|
57
57
|
var r2;
|
|
58
|
-
(e = e || {}).chunkSize || (e.chunkSize = v3.RemoteChunkSize),
|
|
58
|
+
(e = e || {}).chunkSize || (e.chunkSize = v3.RemoteChunkSize), u2.call(this, e), this._nextChunk = s2 ? function() {
|
|
59
59
|
this._readChunk(), this._chunkLoaded();
|
|
60
60
|
} : function() {
|
|
61
61
|
this._readChunk();
|
|
@@ -64,18 +64,18 @@ var require_papaparse_min = __commonJS({
|
|
|
64
64
|
}, this._readChunk = function() {
|
|
65
65
|
if (this._finished) this._chunkLoaded();
|
|
66
66
|
else {
|
|
67
|
-
if (r2 = new XMLHttpRequest(), this._config.withCredentials && (r2.withCredentials = this._config.withCredentials),
|
|
67
|
+
if (r2 = new XMLHttpRequest(), this._config.withCredentials && (r2.withCredentials = this._config.withCredentials), s2 || (r2.onload = y4(this._chunkLoaded, this), r2.onerror = y4(this._chunkError, this)), r2.open(this._config.downloadRequestBody ? "POST" : "GET", this._input, !s2), this._config.downloadRequestHeaders) {
|
|
68
68
|
var e2, t = this._config.downloadRequestHeaders;
|
|
69
69
|
for (e2 in t) r2.setRequestHeader(e2, t[e2]);
|
|
70
70
|
}
|
|
71
|
-
var
|
|
72
|
-
this._config.chunkSize && (
|
|
71
|
+
var i2;
|
|
72
|
+
this._config.chunkSize && (i2 = this._start + this._config.chunkSize - 1, r2.setRequestHeader("Range", "bytes=" + this._start + "-" + i2));
|
|
73
73
|
try {
|
|
74
74
|
r2.send(this._config.downloadRequestBody);
|
|
75
75
|
} catch (e4) {
|
|
76
76
|
this._chunkError(e4.message);
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
s2 && 0 === r2.status && this._chunkError();
|
|
79
79
|
}
|
|
80
80
|
}, this._chunkLoaded = function() {
|
|
81
81
|
4 === r2.readyState && (r2.status < 200 || 400 <= r2.status ? this._chunkError() : (this._start += this._config.chunkSize || r2.responseText.length, this._finished = !this._config.chunkSize || this._start >= ((e2) => null !== (e2 = e2.getResponseHeader("Content-Range")) ? parseInt(e2.substring(e2.lastIndexOf("/") + 1)) : -1)(r2), this.parseChunk(r2.responseText)));
|
|
@@ -85,46 +85,46 @@ var require_papaparse_min = __commonJS({
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
function l2(e) {
|
|
88
|
-
(e = e || {}).chunkSize || (e.chunkSize = v3.LocalChunkSize),
|
|
89
|
-
var
|
|
88
|
+
(e = e || {}).chunkSize || (e.chunkSize = v3.LocalChunkSize), u2.call(this, e);
|
|
89
|
+
var i2, r2, n2 = "undefined" != typeof FileReader;
|
|
90
90
|
this.stream = function(e2) {
|
|
91
|
-
this._input = e2, r2 = e2.slice || e2.webkitSlice || e2.mozSlice, n2 ? ((
|
|
91
|
+
this._input = e2, r2 = 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();
|
|
92
92
|
}, this._nextChunk = function() {
|
|
93
93
|
this._finished || this._config.preview && !(this._rowCount < this._config.preview) || this._readChunk();
|
|
94
94
|
}, this._readChunk = function() {
|
|
95
|
-
var e2 = this._input, t = (this._config.chunkSize && (t = Math.min(this._start + this._config.chunkSize, this._input.size), e2 = r2.call(e2, this._start, t)),
|
|
95
|
+
var e2 = this._input, t = (this._config.chunkSize && (t = Math.min(this._start + this._config.chunkSize, this._input.size), e2 = r2.call(e2, this._start, t)), i2.readAsText(e2, this._config.encoding));
|
|
96
96
|
n2 || this._chunkLoaded({ target: { result: t } });
|
|
97
97
|
}, this._chunkLoaded = function(e2) {
|
|
98
98
|
this._start += this._config.chunkSize, this._finished = !this._config.chunkSize || this._start >= this._input.size, this.parseChunk(e2.target.result);
|
|
99
99
|
}, this._chunkError = function() {
|
|
100
|
-
this._sendError(
|
|
100
|
+
this._sendError(i2.error);
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
|
-
function
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
return
|
|
103
|
+
function c2(e) {
|
|
104
|
+
var i2;
|
|
105
|
+
u2.call(this, e = e || {}), this.stream = function(e2) {
|
|
106
|
+
return i2 = e2, this._nextChunk();
|
|
107
107
|
}, this._nextChunk = function() {
|
|
108
108
|
var e2, t;
|
|
109
|
-
if (!this._finished) return e2 = this._config.chunkSize,
|
|
109
|
+
if (!this._finished) return e2 = this._config.chunkSize, i2 = e2 ? (t = i2.substring(0, e2), i2.substring(e2)) : (t = i2, ""), this._finished = !i2, this.parseChunk(t);
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
112
|
function p(e) {
|
|
113
|
-
|
|
114
|
-
var t = [],
|
|
113
|
+
u2.call(this, e = e || {});
|
|
114
|
+
var t = [], i2 = true, r2 = false;
|
|
115
115
|
this.pause = function() {
|
|
116
|
-
|
|
116
|
+
u2.prototype.pause.apply(this, arguments), this._input.pause();
|
|
117
117
|
}, this.resume = function() {
|
|
118
|
-
|
|
118
|
+
u2.prototype.resume.apply(this, arguments), this._input.resume();
|
|
119
119
|
}, this.stream = function(e2) {
|
|
120
120
|
this._input = e2, this._input.on("data", this._streamData), this._input.on("end", this._streamEnd), this._input.on("error", this._streamError);
|
|
121
121
|
}, this._checkIsFinished = function() {
|
|
122
122
|
r2 && 1 === t.length && (this._finished = true);
|
|
123
123
|
}, this._nextChunk = function() {
|
|
124
|
-
this._checkIsFinished(), t.length ? this.parseChunk(t.shift()) :
|
|
124
|
+
this._checkIsFinished(), t.length ? this.parseChunk(t.shift()) : i2 = true;
|
|
125
125
|
}, this._streamData = y4(function(e2) {
|
|
126
126
|
try {
|
|
127
|
-
t.push("string" == typeof e2 ? e2 : e2.toString(this._config.encoding)),
|
|
127
|
+
t.push("string" == typeof e2 ? e2 : e2.toString(this._config.encoding)), i2 && (i2 = false, this._checkIsFinished(), this.parseChunk(t.shift()));
|
|
128
128
|
} catch (e4) {
|
|
129
129
|
this._streamError(e4);
|
|
130
130
|
}
|
|
@@ -136,17 +136,17 @@ var require_papaparse_min = __commonJS({
|
|
|
136
136
|
this._input.removeListener("data", this._streamData), this._input.removeListener("end", this._streamEnd), this._input.removeListener("error", this._streamError);
|
|
137
137
|
}, this);
|
|
138
138
|
}
|
|
139
|
-
function
|
|
140
|
-
var n2,
|
|
139
|
+
function i(m2) {
|
|
140
|
+
var n2, s4, a5, t, o2 = Math.pow(2, 53), h3 = -o2, u4 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, d2 = /^((\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, f2 = 0, l3 = false, e = false, c4 = [], p2 = { data: [], errors: [], meta: {} };
|
|
141
141
|
function y5(e2) {
|
|
142
142
|
return "greedy" === m2.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length;
|
|
143
143
|
}
|
|
144
|
-
function
|
|
145
|
-
if (p2 &&
|
|
144
|
+
function g4() {
|
|
145
|
+
if (p2 && a5 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + v3.DefaultDelimiter + "'"), a5 = false), m2.skipEmptyLines && (p2.data = p2.data.filter(function(e4) {
|
|
146
146
|
return !y5(e4);
|
|
147
147
|
})), _3()) {
|
|
148
148
|
let t4 = function(e4, t5) {
|
|
149
|
-
e4 = P4(e4), q3(m2.transformHeader) && (e4 = m2.transformHeader(e4, t5)),
|
|
149
|
+
e4 = P4(e4), q3(m2.transformHeader) && (e4 = m2.transformHeader(e4, t5)), c4.push(e4);
|
|
150
150
|
};
|
|
151
151
|
var t2 = t4;
|
|
152
152
|
if (p2) if (Array.isArray(p2.data[0])) {
|
|
@@ -154,57 +154,57 @@ var require_papaparse_min = __commonJS({
|
|
|
154
154
|
p2.data.splice(0, 1);
|
|
155
155
|
} else p2.data.forEach(t4);
|
|
156
156
|
}
|
|
157
|
-
function
|
|
158
|
-
for (var
|
|
159
|
-
var n4 = r5,
|
|
160
|
-
if (
|
|
157
|
+
function i4(e4, t4) {
|
|
158
|
+
for (var i5 = m2.header ? {} : [], r5 = 0; r5 < e4.length; r5++) {
|
|
159
|
+
var n4 = r5, s5 = e4[r5], s5 = ((e5, t5) => ((e6) => (m2.dynamicTypingFunction && void 0 === m2.dynamicTyping[e6] && (m2.dynamicTyping[e6] = m2.dynamicTypingFunction(e6)), true === (m2.dynamicTyping[e6] || m2.dynamicTyping)))(e5) ? "true" === t5 || "TRUE" === t5 || "false" !== t5 && "FALSE" !== t5 && (((e6) => {
|
|
160
|
+
if (u4.test(e6)) {
|
|
161
161
|
e6 = parseFloat(e6);
|
|
162
|
-
if (h3 < e6 && e6 <
|
|
162
|
+
if (h3 < e6 && e6 < o2) return 1;
|
|
163
163
|
}
|
|
164
|
-
})(t5) ? parseFloat(t5) : d2.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(n4 = m2.header ? r5 >=
|
|
165
|
-
"__parsed_extra" === n4 ? (
|
|
164
|
+
})(t5) ? parseFloat(t5) : d2.test(t5) ? new Date(t5) : "" === t5 ? null : t5) : t5)(n4 = m2.header ? r5 >= c4.length ? "__parsed_extra" : c4[r5] : n4, s5 = m2.transform ? m2.transform(s5, n4) : s5);
|
|
165
|
+
"__parsed_extra" === n4 ? (i5[n4] = i5[n4] || [], i5[n4].push(s5)) : i5[n4] = s5;
|
|
166
166
|
}
|
|
167
|
-
return m2.header && (r5 >
|
|
167
|
+
return m2.header && (r5 > c4.length ? k2("FieldMismatch", "TooManyFields", "Too many fields: expected " + c4.length + " fields but parsed " + r5, f2 + t4) : r5 < c4.length && k2("FieldMismatch", "TooFewFields", "Too few fields: expected " + c4.length + " fields but parsed " + r5, f2 + t4)), i5;
|
|
168
168
|
}
|
|
169
169
|
var r4;
|
|
170
|
-
p2 && (m2.header || m2.dynamicTyping || m2.transform) && (r4 = 1, !p2.data.length || Array.isArray(p2.data[0]) ? (p2.data = p2.data.map(
|
|
170
|
+
p2 && (m2.header || m2.dynamicTyping || m2.transform) && (r4 = 1, !p2.data.length || Array.isArray(p2.data[0]) ? (p2.data = p2.data.map(i4), r4 = p2.data.length) : p2.data = i4(p2.data, 0), m2.header && p2.meta && (p2.meta.fields = c4), f2 += r4);
|
|
171
171
|
}
|
|
172
172
|
function _3() {
|
|
173
|
-
return m2.header && 0 ===
|
|
173
|
+
return m2.header && 0 === c4.length;
|
|
174
174
|
}
|
|
175
|
-
function k2(e2, t2,
|
|
176
|
-
e2 = { type: e2, code: t2, message:
|
|
175
|
+
function k2(e2, t2, i4, r4) {
|
|
176
|
+
e2 = { type: e2, code: t2, message: i4 };
|
|
177
177
|
void 0 !== r4 && (e2.row = r4), p2.errors.push(e2);
|
|
178
178
|
}
|
|
179
179
|
q3(m2.step) && (t = m2.step, m2.step = function(e2) {
|
|
180
|
-
p2 = e2, _3() ?
|
|
181
|
-
}), this.parse = function(e2, t2,
|
|
182
|
-
var r4 = m2.quoteChar || '"', r4 = (m2.newline || (m2.newline = this.guessLineEndings(e2, r4)),
|
|
183
|
-
var
|
|
180
|
+
p2 = e2, _3() ? g4() : (g4(), 0 !== p2.data.length && (r2 += e2.data.length, m2.preview && r2 > m2.preview ? s4.abort() : (p2.data = p2.data[0], t(p2, i2))));
|
|
181
|
+
}), this.parse = function(e2, t2, i4) {
|
|
182
|
+
var r4 = m2.quoteChar || '"', r4 = (m2.newline || (m2.newline = this.guessLineEndings(e2, r4)), a5 = false, m2.delimiter ? q3(m2.delimiter) && (m2.delimiter = m2.delimiter(e2), p2.meta.delimiter = m2.delimiter) : ((r4 = ((e4, t4, i5, r5, n4) => {
|
|
183
|
+
var s5, a6, o4, h4;
|
|
184
184
|
n4 = n4 || [",", " ", "|", ";", v3.RECORD_SEP, v3.UNIT_SEP];
|
|
185
|
-
for (var
|
|
186
|
-
for (var d3, f4 = n4[
|
|
187
|
-
0 <
|
|
185
|
+
for (var u5 = 0; u5 < n4.length; u5++) {
|
|
186
|
+
for (var d3, f4 = n4[u5], l4 = 0, c5 = 0, p4 = 0, g5 = (o4 = void 0, new E4({ comments: r5, delimiter: f4, newline: t4, preview: 10 }).parse(e4)), _4 = 0; _4 < g5.data.length; _4++) i5 && y5(g5.data[_4]) ? p4++ : (d3 = g5.data[_4].length, c5 += d3, void 0 === o4 ? o4 = d3 : 0 < d3 && (l4 += Math.abs(d3 - o4), o4 = d3));
|
|
187
|
+
0 < g5.data.length && (c5 /= g5.data.length - p4), (void 0 === a6 || l4 <= a6) && (void 0 === h4 || h4 < c5) && 1.99 < c5 && (a6 = l4, s5 = f4, h4 = c5);
|
|
188
188
|
}
|
|
189
|
-
return { successful: !!(m2.delimiter =
|
|
190
|
-
})(e2, m2.newline, m2.skipEmptyLines, m2.comments, m2.delimitersToGuess)).successful ? m2.delimiter = r4.bestDelimiter : (
|
|
191
|
-
return m2.preview && m2.header && r4.preview++, n2 = e2,
|
|
189
|
+
return { successful: !!(m2.delimiter = s5), bestDelimiter: s5 };
|
|
190
|
+
})(e2, m2.newline, m2.skipEmptyLines, m2.comments, m2.delimitersToGuess)).successful ? m2.delimiter = r4.bestDelimiter : (a5 = true, m2.delimiter = v3.DefaultDelimiter), p2.meta.delimiter = m2.delimiter), b2(m2));
|
|
191
|
+
return m2.preview && m2.header && r4.preview++, n2 = e2, s4 = new E4(r4), p2 = s4.parse(n2, t2, i4), g4(), l3 ? { meta: { paused: true } } : p2 || { meta: { paused: false } };
|
|
192
192
|
}, this.paused = function() {
|
|
193
193
|
return l3;
|
|
194
194
|
}, this.pause = function() {
|
|
195
|
-
l3 = true,
|
|
195
|
+
l3 = true, s4.abort(), n2 = q3(m2.chunk) ? "" : n2.substring(s4.getCharIndex());
|
|
196
196
|
}, this.resume = function() {
|
|
197
|
-
|
|
197
|
+
i2.streamer._halted ? (l3 = false, i2.streamer.parseChunk(n2, true)) : setTimeout(i2.resume, 3);
|
|
198
198
|
}, this.aborted = function() {
|
|
199
199
|
return e;
|
|
200
200
|
}, this.abort = function() {
|
|
201
|
-
e = true,
|
|
201
|
+
e = true, s4.abort(), p2.meta.aborted = true, q3(m2.complete) && m2.complete(p2), 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"),
|
|
205
|
-
if (1 ===
|
|
206
|
-
for (var r4 = 0, n4 = 0; n4 <
|
|
207
|
-
return r4 >=
|
|
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;
|
|
205
|
+
if (1 === i4.length || e2) return "\n";
|
|
206
|
+
for (var r4 = 0, n4 = 0; n4 < i4.length; n4++) "\n" === i4[n4][0] && r4++;
|
|
207
|
+
return r4 >= i4.length / 2 ? "\r\n" : "\r";
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
210
|
function U3(e) {
|
|
@@ -215,50 +215,50 @@ var require_papaparse_min = __commonJS({
|
|
|
215
215
|
if (void 0 !== C2.escapeChar && (j3 = C2.escapeChar), ("string" != typeof S || -1 < v3.BAD_DELIMITERS.indexOf(S)) && (S = ","), x2 === S) throw new Error("Comment character same as delimiter");
|
|
216
216
|
true === x2 ? x2 = "#" : ("string" != typeof x2 || -1 < v3.BAD_DELIMITERS.indexOf(x2)) && (x2 = false), "\n" !== O2 && "\r" !== O2 && "\r\n" !== O2 && (O2 = "\n");
|
|
217
217
|
var z3 = 0, M = false;
|
|
218
|
-
this.parse = function(
|
|
219
|
-
if ("string" != typeof
|
|
220
|
-
var n2 =
|
|
221
|
-
if (!
|
|
222
|
-
if (T2 || false !== T2 && -1 ===
|
|
223
|
-
for (var l3 =
|
|
224
|
-
if (d2 = l3[
|
|
218
|
+
this.parse = function(i2, t, r2) {
|
|
219
|
+
if ("string" != typeof i2) throw new Error("Input must be a string");
|
|
220
|
+
var n2 = i2.length, e = S.length, s4 = O2.length, a5 = x2.length, o2 = q3(I2), h3 = [], u4 = [], d2 = [], f2 = z3 = 0;
|
|
221
|
+
if (!i2) return w2();
|
|
222
|
+
if (T2 || false !== T2 && -1 === i2.indexOf(F3)) {
|
|
223
|
+
for (var l3 = i2.split(O2), c4 = 0; c4 < l3.length; c4++) {
|
|
224
|
+
if (d2 = l3[c4], z3 += d2.length, c4 !== l3.length - 1) z3 += O2.length;
|
|
225
225
|
else if (r2) return w2();
|
|
226
|
-
if (!x2 || d2.substring(0,
|
|
227
|
-
if (
|
|
226
|
+
if (!x2 || d2.substring(0, a5) !== x2) {
|
|
227
|
+
if (o2) {
|
|
228
228
|
if (h3 = [], k2(d2.split(S)), R(), M) return w2();
|
|
229
229
|
} else k2(d2.split(S));
|
|
230
|
-
if (A && A <=
|
|
230
|
+
if (A && A <= c4) return h3 = h3.slice(0, A), w2(true);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
return w2();
|
|
234
234
|
}
|
|
235
|
-
for (var p2 =
|
|
236
|
-
if (-1 === (m2 =
|
|
237
|
-
if (m2 === n2 - 1) return E5(
|
|
238
|
-
if (F3 === j3 &&
|
|
239
|
-
else if (F3 === j3 || 0 === m2 ||
|
|
240
|
-
-1 !== p2 && p2 < m2 + 1 && (p2 =
|
|
241
|
-
var y5 = v4(-1 === (
|
|
242
|
-
if (
|
|
243
|
-
d2.push(
|
|
235
|
+
for (var p2 = i2.indexOf(S, z3), g4 = i2.indexOf(O2, z3), _3 = new RegExp(U3(j3) + U3(F3), "g"), m2 = i2.indexOf(F3, z3); ; ) if (i2[z3] === F3) for (m2 = z3, z3++; ; ) {
|
|
236
|
+
if (-1 === (m2 = i2.indexOf(F3, m2 + 1))) return r2 || u4.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: h3.length, index: z3 }), E5();
|
|
237
|
+
if (m2 === n2 - 1) return E5(i2.substring(z3, m2).replace(_3, F3));
|
|
238
|
+
if (F3 === j3 && i2[m2 + 1] === j3) m2++;
|
|
239
|
+
else if (F3 === j3 || 0 === m2 || i2[m2 - 1] !== j3) {
|
|
240
|
+
-1 !== p2 && p2 < m2 + 1 && (p2 = i2.indexOf(S, m2 + 1));
|
|
241
|
+
var y5 = v4(-1 === (g4 = -1 !== g4 && g4 < m2 + 1 ? i2.indexOf(O2, m2 + 1) : g4) ? p2 : Math.min(p2, g4));
|
|
242
|
+
if (i2.substr(m2 + 1 + y5, e) === S) {
|
|
243
|
+
d2.push(i2.substring(z3, m2).replace(_3, F3)), i2[z3 = m2 + 1 + y5 + e] !== F3 && (m2 = i2.indexOf(F3, z3)), p2 = i2.indexOf(S, z3), g4 = i2.indexOf(O2, z3);
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
|
-
y5 = v4(
|
|
247
|
-
if (
|
|
248
|
-
if (d2.push(
|
|
246
|
+
y5 = v4(g4);
|
|
247
|
+
if (i2.substring(m2 + 1 + y5, m2 + 1 + y5 + s4) === O2) {
|
|
248
|
+
if (d2.push(i2.substring(z3, m2).replace(_3, F3)), b4(m2 + 1 + y5 + s4), p2 = i2.indexOf(S, z3), m2 = i2.indexOf(F3, z3), o2 && (R(), M)) return w2();
|
|
249
249
|
if (A && h3.length >= A) return w2(true);
|
|
250
250
|
break;
|
|
251
251
|
}
|
|
252
|
-
|
|
252
|
+
u4.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: h3.length, index: z3 }), m2++;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
else if (x2 && 0 === d2.length &&
|
|
256
|
-
if (-1 ===
|
|
257
|
-
z3 =
|
|
258
|
-
} else if (-1 !== p2 && (p2 <
|
|
255
|
+
else if (x2 && 0 === d2.length && i2.substring(z3, z3 + a5) === x2) {
|
|
256
|
+
if (-1 === g4) return w2();
|
|
257
|
+
z3 = g4 + s4, g4 = i2.indexOf(O2, z3), p2 = i2.indexOf(S, z3);
|
|
258
|
+
} else if (-1 !== p2 && (p2 < g4 || -1 === g4)) d2.push(i2.substring(z3, p2)), z3 = p2 + e, p2 = i2.indexOf(S, z3);
|
|
259
259
|
else {
|
|
260
|
-
if (-1 ===
|
|
261
|
-
if (d2.push(
|
|
260
|
+
if (-1 === g4) break;
|
|
261
|
+
if (d2.push(i2.substring(z3, g4)), b4(g4 + s4), o2 && (R(), M)) return w2();
|
|
262
262
|
if (A && h3.length >= A) return w2(true);
|
|
263
263
|
}
|
|
264
264
|
return E5();
|
|
@@ -267,33 +267,33 @@ var require_papaparse_min = __commonJS({
|
|
|
267
267
|
}
|
|
268
268
|
function v4(e2) {
|
|
269
269
|
var t2 = 0;
|
|
270
|
-
return t2 = -1 !== e2 && (e2 =
|
|
270
|
+
return t2 = -1 !== e2 && (e2 = i2.substring(m2 + 1, e2)) && "" === e2.trim() ? e2.length : t2;
|
|
271
271
|
}
|
|
272
272
|
function E5(e2) {
|
|
273
|
-
return r2 || (void 0 === e2 && (e2 =
|
|
273
|
+
return r2 || (void 0 === e2 && (e2 = i2.substring(z3)), d2.push(e2), z3 = n2, k2(d2), o2 && R()), w2();
|
|
274
274
|
}
|
|
275
275
|
function b4(e2) {
|
|
276
|
-
z3 = e2, k2(d2), d2 = [],
|
|
276
|
+
z3 = e2, k2(d2), d2 = [], g4 = i2.indexOf(O2, z3);
|
|
277
277
|
}
|
|
278
278
|
function w2(e2) {
|
|
279
279
|
if (C2.header && !t && h3.length && !L2) {
|
|
280
|
-
var
|
|
280
|
+
var s5 = h3[0], a6 = /* @__PURE__ */ Object.create(null), o4 = new Set(s5);
|
|
281
281
|
let n4 = false;
|
|
282
|
-
for (let r4 = 0; r4 <
|
|
283
|
-
let
|
|
284
|
-
if (
|
|
285
|
-
let e4, t2 =
|
|
286
|
-
for (; e4 =
|
|
287
|
-
|
|
288
|
-
} else
|
|
289
|
-
|
|
282
|
+
for (let r4 = 0; r4 < s5.length; r4++) {
|
|
283
|
+
let i4 = P4(s5[r4]);
|
|
284
|
+
if (a6[i4 = q3(C2.transformHeader) ? C2.transformHeader(i4, r4) : i4]) {
|
|
285
|
+
let e4, t2 = a6[i4];
|
|
286
|
+
for (; e4 = i4 + "_" + t2, t2++, o4.has(e4); ) ;
|
|
287
|
+
o4.add(e4), s5[r4] = e4, a6[i4]++, n4 = true, (D3 = null === D3 ? {} : D3)[e4] = i4;
|
|
288
|
+
} else a6[i4] = 1, s5[r4] = i4;
|
|
289
|
+
o4.add(i4);
|
|
290
290
|
}
|
|
291
291
|
n4 && console.warn("Duplicate headers found and renamed."), L2 = true;
|
|
292
292
|
}
|
|
293
|
-
return { data: h3, errors:
|
|
293
|
+
return { data: h3, errors: u4, meta: { delimiter: S, linebreak: O2, aborted: M, truncated: !!e2, cursor: f2 + (t || 0), renamedHeaders: D3 } };
|
|
294
294
|
}
|
|
295
295
|
function R() {
|
|
296
|
-
I2(w2()), h3 = [],
|
|
296
|
+
I2(w2()), h3 = [], u4 = [];
|
|
297
297
|
}
|
|
298
298
|
}, this.abort = function() {
|
|
299
299
|
M = true;
|
|
@@ -301,32 +301,32 @@ var require_papaparse_min = __commonJS({
|
|
|
301
301
|
return z3;
|
|
302
302
|
};
|
|
303
303
|
}
|
|
304
|
-
function
|
|
305
|
-
var t = e.data,
|
|
306
|
-
if (t.error)
|
|
304
|
+
function g3(e) {
|
|
305
|
+
var t = e.data, i2 = o[t.workerId], r2 = false;
|
|
306
|
+
if (t.error) i2.userError(t.error, t.file);
|
|
307
307
|
else if (t.results && t.results.data) {
|
|
308
308
|
var n2 = { abort: function() {
|
|
309
309
|
r2 = true, _2(t.workerId, { data: [], errors: [], meta: { aborted: true } });
|
|
310
310
|
}, pause: m, resume: m };
|
|
311
|
-
if (q3(
|
|
312
|
-
for (var
|
|
311
|
+
if (q3(i2.userStep)) {
|
|
312
|
+
for (var s4 = 0; s4 < t.results.data.length && (i2.userStep({ data: t.results.data[s4], errors: t.results.errors, meta: t.results.meta }, n2), !r2); s4++) ;
|
|
313
313
|
delete t.results;
|
|
314
|
-
} else q3(
|
|
314
|
+
} else q3(i2.userChunk) && (i2.userChunk(t.results, n2, t.file), delete t.results);
|
|
315
315
|
}
|
|
316
316
|
t.finished && !r2 && _2(t.workerId, t.results);
|
|
317
317
|
}
|
|
318
318
|
function _2(e, t) {
|
|
319
|
-
var
|
|
320
|
-
q3(
|
|
319
|
+
var i2 = o[e];
|
|
320
|
+
q3(i2.userComplete) && i2.userComplete(t), i2.terminate(), delete o[e];
|
|
321
321
|
}
|
|
322
322
|
function m() {
|
|
323
323
|
throw new Error("Not implemented.");
|
|
324
324
|
}
|
|
325
325
|
function b2(e) {
|
|
326
326
|
if ("object" != typeof e || null === e) return e;
|
|
327
|
-
var t,
|
|
328
|
-
for (t in e)
|
|
329
|
-
return
|
|
327
|
+
var t, i2 = Array.isArray(e) ? [] : {};
|
|
328
|
+
for (t in e) i2[t] = b2(e[t]);
|
|
329
|
+
return i2;
|
|
330
330
|
}
|
|
331
331
|
function y4(e, t) {
|
|
332
332
|
return function() {
|
|
@@ -337,99 +337,99 @@ var require_papaparse_min = __commonJS({
|
|
|
337
337
|
return "function" == typeof e;
|
|
338
338
|
}
|
|
339
339
|
return v3.parse = function(e, t) {
|
|
340
|
-
var
|
|
341
|
-
q3(
|
|
342
|
-
if (t.dynamicTyping =
|
|
343
|
-
(
|
|
340
|
+
var i2 = (t = t || {}).dynamicTyping || false;
|
|
341
|
+
q3(i2) && (t.dynamicTypingFunction = i2, i2 = {});
|
|
342
|
+
if (t.dynamicTyping = i2, t.transform = !!q3(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 ? f : c2)(t)) : true === e.readable && q3(e.read) && q3(e.on) ? i2 = new p(t) : (n.File && e instanceof File || e instanceof Object) && (i2 = new l2(t)), i2.stream(e);
|
|
343
|
+
(i2 = (() => {
|
|
344
344
|
var e2;
|
|
345
345
|
return !!v3.WORKERS_SUPPORTED && (e2 = (() => {
|
|
346
346
|
var e4 = n.URL || n.webkitURL || null, t2 = r.toString();
|
|
347
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 =
|
|
349
|
-
})()).userStep = t.step,
|
|
348
|
+
})(), (e2 = new n.Worker(e2)).onmessage = g3, e2.id = h2++, o[e2.id] = e2);
|
|
349
|
+
})()).userStep = t.step, i2.userChunk = t.chunk, i2.userComplete = t.complete, i2.userError = t.error, t.step = q3(t.step), t.chunk = q3(t.chunk), t.complete = q3(t.complete), t.error = q3(t.error), delete t.worker, i2.postMessage({ input: e, config: t, workerId: i2.id });
|
|
350
350
|
}, v3.unparse = function(e, t) {
|
|
351
|
-
var
|
|
351
|
+
var s4 = false, _3 = true, m2 = ",", y5 = "\r\n", a5 = '"', o2 = a5 + a5, i2 = false, r2 = null, h3 = false, u4 = ((() => {
|
|
352
352
|
if ("object" == typeof t) {
|
|
353
353
|
if ("string" != typeof t.delimiter || v3.BAD_DELIMITERS.filter(function(e2) {
|
|
354
354
|
return -1 !== t.delimiter.indexOf(e2);
|
|
355
|
-
}).length || (m2 = t.delimiter), "boolean" != typeof t.quotes && "function" != typeof t.quotes && !Array.isArray(t.quotes) || (
|
|
355
|
+
}).length || (m2 = t.delimiter), "boolean" != typeof t.quotes && "function" != typeof t.quotes && !Array.isArray(t.quotes) || (s4 = t.quotes), "boolean" != typeof t.skipEmptyLines && "string" != typeof t.skipEmptyLines || (i2 = t.skipEmptyLines), "string" == typeof t.newline && (y5 = 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 && (
|
|
359
|
+
void 0 !== t.escapeChar && (o2 = t.escapeChar + a5), t.escapeFormulae instanceof RegExp ? h3 = t.escapeFormulae : "boolean" == typeof t.escapeFormulae && t.escapeFormulae && (h3 = /^[=+\-@\t\r].*$/);
|
|
360
360
|
}
|
|
361
|
-
})(), new RegExp(U3(
|
|
361
|
+
})(), new RegExp(U3(a5), "g"));
|
|
362
362
|
"string" == typeof e && (e = JSON.parse(e));
|
|
363
363
|
if (Array.isArray(e)) {
|
|
364
|
-
if (!e.length || Array.isArray(e[0])) return n2(null, e,
|
|
365
|
-
if ("object" == typeof e[0]) return n2(r2 || Object.keys(e[0]), e,
|
|
366
|
-
} else if ("object" == typeof e) return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || r2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])), n2(e.fields || [], e.data || [],
|
|
364
|
+
if (!e.length || Array.isArray(e[0])) return n2(null, e, i2);
|
|
365
|
+
if ("object" == typeof e[0]) return n2(r2 || Object.keys(e[0]), e, i2);
|
|
366
|
+
} else if ("object" == typeof e) return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || r2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])), n2(e.fields || [], e.data || [], i2);
|
|
367
367
|
throw new Error("Unable to serialize unrecognized input");
|
|
368
|
-
function n2(e2, t2,
|
|
369
|
-
var r4 = "", n4 = ("string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t2 && (t2 = JSON.parse(t2)), Array.isArray(e2) && 0 < e2.length),
|
|
368
|
+
function n2(e2, t2, i4) {
|
|
369
|
+
var r4 = "", n4 = ("string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t2 && (t2 = JSON.parse(t2)), Array.isArray(e2) && 0 < e2.length), s5 = !Array.isArray(t2[0]);
|
|
370
370
|
if (n4 && _3) {
|
|
371
|
-
for (var
|
|
371
|
+
for (var a6 = 0; a6 < e2.length; a6++) 0 < a6 && (r4 += m2), r4 += k2(e2[a6], a6);
|
|
372
372
|
0 < t2.length && (r4 += y5);
|
|
373
373
|
}
|
|
374
|
-
for (var
|
|
375
|
-
var h4 = (n4 ? e2 : t2[
|
|
376
|
-
if (
|
|
374
|
+
for (var o4 = 0; o4 < t2.length; o4++) {
|
|
375
|
+
var h4 = (n4 ? e2 : t2[o4]).length, u5 = false, d2 = n4 ? 0 === Object.keys(t2[o4]).length : 0 === t2[o4].length;
|
|
376
|
+
if (i4 && !n4 && (u5 = "greedy" === i4 ? "" === t2[o4].join("").trim() : 1 === t2[o4].length && 0 === t2[o4][0].length), "greedy" === i4 && n4) {
|
|
377
377
|
for (var f2 = [], l3 = 0; l3 < h4; l3++) {
|
|
378
|
-
var
|
|
379
|
-
f2.push(t2[
|
|
378
|
+
var c4 = s5 ? e2[l3] : l3;
|
|
379
|
+
f2.push(t2[o4][c4]);
|
|
380
380
|
}
|
|
381
|
-
|
|
381
|
+
u5 = "" === f2.join("").trim();
|
|
382
382
|
}
|
|
383
|
-
if (!
|
|
383
|
+
if (!u5) {
|
|
384
384
|
for (var p2 = 0; p2 < h4; p2++) {
|
|
385
385
|
0 < p2 && !d2 && (r4 += m2);
|
|
386
|
-
var
|
|
387
|
-
r4 += k2(t2[
|
|
386
|
+
var g4 = n4 && s5 ? e2[p2] : p2;
|
|
387
|
+
r4 += k2(t2[o4][g4], p2);
|
|
388
388
|
}
|
|
389
|
-
|
|
389
|
+
o4 < t2.length - 1 && (!i4 || 0 < h4 && !d2) && (r4 += y5);
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
392
|
return r4;
|
|
393
393
|
}
|
|
394
394
|
function k2(e2, t2) {
|
|
395
|
-
var
|
|
396
|
-
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n4 = false, h3 && "string" == typeof e2 && h3.test(e2) && (e2 = "'" + e2, n4 = true), r4 = (
|
|
397
|
-
for (var
|
|
395
|
+
var i4, r4, n4;
|
|
396
|
+
return null == e2 ? "" : e2.constructor === Date ? JSON.stringify(e2).slice(1, 25) : (n4 = false, h3 && "string" == typeof e2 && h3.test(e2) && (e2 = "'" + e2, n4 = true), r4 = (i4 = e2.toString()).replace(u4, o2), (n4 = n4 || true === s4 || "function" == typeof s4 && s4(e2, t2) || Array.isArray(s4) && s4[t2] || ((e4, t4) => {
|
|
397
|
+
for (var i5 = 0; i5 < t4.length; i5++) if (-1 < e4.indexOf(t4[i5])) return true;
|
|
398
398
|
return false;
|
|
399
|
-
})(r4, v3.BAD_DELIMITERS) || -1 < r4.indexOf(m2) || -1 <
|
|
399
|
+
})(r4, v3.BAD_DELIMITERS) || -1 < r4.indexOf(m2) || -1 < i4.indexOf(a5) || " " === r4.charAt(0) || " " === r4.charAt(r4.length - 1)) ? a5 + r4 + a5 : r4);
|
|
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 = !
|
|
402
|
-
var
|
|
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 = !s2 && !!n.Worker, v3.NODE_STREAM_INPUT = 1, v3.LocalChunkSize = 10485760, v3.RemoteChunkSize = 5242880, v3.DefaultDelimiter = ",", v3.Parser = E4, v3.ParserHandle = i, v3.NetworkStreamer = f, v3.FileStreamer = l2, v3.StringStreamer = c2, v3.ReadableStreamStreamer = p, n.jQuery && ((d = n.jQuery).fn.parse = function(o2) {
|
|
402
|
+
var i2 = o2.config || {}, h3 = [];
|
|
403
403
|
return this.each(function(e2) {
|
|
404
404
|
if (!("INPUT" === d(this).prop("tagName").toUpperCase() && "file" === d(this).attr("type").toLowerCase() && n.FileReader) || !this.files || 0 === this.files.length) return true;
|
|
405
|
-
for (var t = 0; t < this.files.length; t++) h3.push({ file: this.files[t], inputElem: this, instanceConfig: d.extend({},
|
|
405
|
+
for (var t = 0; t < this.files.length; t++) h3.push({ file: this.files[t], inputElem: this, instanceConfig: d.extend({}, i2) });
|
|
406
406
|
}), e(), this;
|
|
407
407
|
function e() {
|
|
408
|
-
if (0 === h3.length) q3(
|
|
408
|
+
if (0 === h3.length) q3(o2.complete) && o2.complete();
|
|
409
409
|
else {
|
|
410
|
-
var e2, t,
|
|
411
|
-
if (q3(
|
|
412
|
-
var
|
|
413
|
-
if ("object" == typeof
|
|
414
|
-
if ("abort" ===
|
|
415
|
-
if ("skip" ===
|
|
416
|
-
"object" == typeof
|
|
417
|
-
} else if ("skip" ===
|
|
410
|
+
var e2, t, i4, r2, n2 = h3[0];
|
|
411
|
+
if (q3(o2.before)) {
|
|
412
|
+
var s4 = o2.before(n2.file, n2.inputElem);
|
|
413
|
+
if ("object" == typeof s4) {
|
|
414
|
+
if ("abort" === s4.action) return e2 = "AbortError", t = n2.file, i4 = n2.inputElem, r2 = s4.reason, void (q3(o2.error) && o2.error({ name: e2 }, t, i4, r2));
|
|
415
|
+
if ("skip" === s4.action) return void u4();
|
|
416
|
+
"object" == typeof s4.config && (n2.instanceConfig = d.extend(n2.instanceConfig, s4.config));
|
|
417
|
+
} else if ("skip" === s4) return void u4();
|
|
418
418
|
}
|
|
419
|
-
var
|
|
419
|
+
var a5 = n2.instanceConfig.complete;
|
|
420
420
|
n2.instanceConfig.complete = function(e4) {
|
|
421
|
-
q3(
|
|
421
|
+
q3(a5) && a5(e4, n2.file, n2.inputElem), u4();
|
|
422
422
|
}, v3.parse(n2.file, n2.instanceConfig);
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
|
-
function
|
|
425
|
+
function u4() {
|
|
426
426
|
h3.splice(0, 1), e();
|
|
427
427
|
}
|
|
428
|
-
}),
|
|
428
|
+
}), a4 && (n.onmessage = function(e) {
|
|
429
429
|
e = e.data;
|
|
430
430
|
void 0 === v3.WORKER_ID && e && (v3.WORKER_ID = e.workerId);
|
|
431
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
|
-
}), (f.prototype = Object.create(
|
|
432
|
+
}), (f.prototype = Object.create(u2.prototype)).constructor = f, (l2.prototype = Object.create(u2.prototype)).constructor = l2, (c2.prototype = Object.create(c2.prototype)).constructor = c2, (p.prototype = Object.create(u2.prototype)).constructor = p, v3;
|
|
433
433
|
});
|
|
434
434
|
}
|
|
435
435
|
});
|
|
@@ -709,8 +709,8 @@ var _ = "AD AND,AE ARE,AF AFG,AG ATG,AI AIA,AL ALB,AM ARM,AO AGO,AQ ATA,AR ARG,A
|
|
|
709
709
|
var N = (() => {
|
|
710
710
|
let n = /* @__PURE__ */ new Map();
|
|
711
711
|
for (let e of _.split(",")) {
|
|
712
|
-
let [t,
|
|
713
|
-
t &&
|
|
712
|
+
let [t, o] = e.split(" ");
|
|
713
|
+
t && o && n.set(t, o);
|
|
714
714
|
}
|
|
715
715
|
return n;
|
|
716
716
|
})();
|
|
@@ -723,27 +723,27 @@ function j() {
|
|
|
723
723
|
if (b) return b;
|
|
724
724
|
let n = /* @__PURE__ */ new Map(), e = ["en", ...v.filter((t) => t !== "en")];
|
|
725
725
|
for (let t of e) {
|
|
726
|
-
let
|
|
726
|
+
let o = null;
|
|
727
727
|
try {
|
|
728
|
-
|
|
728
|
+
o = new Intl.DisplayNames([t], { type: "region" });
|
|
729
729
|
} catch {
|
|
730
730
|
continue;
|
|
731
731
|
}
|
|
732
|
-
for (let [
|
|
733
|
-
let
|
|
732
|
+
for (let [i, r] of N) {
|
|
733
|
+
let a4;
|
|
734
734
|
try {
|
|
735
|
-
|
|
735
|
+
a4 = o.of(i);
|
|
736
736
|
} catch {
|
|
737
|
-
|
|
737
|
+
a4 = void 0;
|
|
738
738
|
}
|
|
739
|
-
if (!
|
|
740
|
-
let
|
|
741
|
-
|
|
739
|
+
if (!a4 || a4 === i) continue;
|
|
740
|
+
let s2 = u(a4);
|
|
741
|
+
s2 && !n.has(s2) && n.set(s2, r);
|
|
742
742
|
}
|
|
743
743
|
}
|
|
744
|
-
for (let [t,
|
|
745
|
-
let
|
|
746
|
-
|
|
744
|
+
for (let [t, o] of Object.entries(Q)) {
|
|
745
|
+
let i = u(t);
|
|
746
|
+
i && n.set(i, o);
|
|
747
747
|
}
|
|
748
748
|
return b = n, n;
|
|
749
749
|
}
|
|
@@ -764,7 +764,7 @@ function V(n) {
|
|
|
764
764
|
var m3 = 80;
|
|
765
765
|
var q = { "north-america": "N", world: "W" };
|
|
766
766
|
function F(n, e) {
|
|
767
|
-
let t = n.filter((
|
|
767
|
+
let t = n.filter((o) => o.row.kinds.includes(q[e || "north-america"]));
|
|
768
768
|
return t.length ? t : (e || "north-america") === "world" ? n : t;
|
|
769
769
|
}
|
|
770
770
|
var P = a;
|
|
@@ -778,20 +778,20 @@ var t3 = { US: "washington", CA: "ottawa", MX: "mexico city", GB: "london", FR:
|
|
|
778
778
|
var U = null;
|
|
779
779
|
function y() {
|
|
780
780
|
if (U) return U;
|
|
781
|
-
let n = /* @__PURE__ */ new Map(), e = P, t = (
|
|
782
|
-
if (!
|
|
783
|
-
let
|
|
784
|
-
|
|
781
|
+
let n = /* @__PURE__ */ new Map(), e = P, t = (o, i, r) => {
|
|
782
|
+
if (!o) return;
|
|
783
|
+
let a4 = n.get(o);
|
|
784
|
+
a4 ? a4.some((s2) => s2.row === i) || a4.push({ row: i, primary: r }) : n.set(o, [{ row: i, primary: r }]);
|
|
785
785
|
};
|
|
786
|
-
for (let
|
|
787
|
-
let
|
|
788
|
-
if (
|
|
789
|
-
let r = { a1:
|
|
790
|
-
|
|
791
|
-
let
|
|
792
|
-
if (
|
|
793
|
-
}
|
|
794
|
-
for (let
|
|
786
|
+
for (let o of e.split(",")) {
|
|
787
|
+
let i = o.split("|");
|
|
788
|
+
if (i.length < 7) continue;
|
|
789
|
+
let r = { a1: i[1], cc: i[2], lon: +i[3], lat: +i[4], pop: +i[5], kinds: i[6] || "N" };
|
|
790
|
+
i.length > 8 && i[8] && (r.tags = i[8].split(";").filter(Boolean));
|
|
791
|
+
let a4 = t3[r.cc];
|
|
792
|
+
if (a4 && u(i[0]) === a4 && (r.tags || (r.tags = []), r.tags.includes("capital") || r.tags.push("capital")), t(u(i[0]), r, true), i.length > 7 && i[7]) for (let s2 of i[7].split(";")) t(u(s2), r, false);
|
|
793
|
+
}
|
|
794
|
+
for (let o of n.values()) o.sort((i, r) => r.row.pop - i.row.pop);
|
|
795
795
|
return U = n, n;
|
|
796
796
|
}
|
|
797
797
|
var e3 = 200;
|
|
@@ -801,34 +801,34 @@ function i3() {
|
|
|
801
801
|
let n = /* @__PURE__ */ new Map();
|
|
802
802
|
for (let [e, t] of y()) {
|
|
803
803
|
if (!e.endsWith(" city")) continue;
|
|
804
|
-
let
|
|
805
|
-
!
|
|
804
|
+
let o = e.slice(0, -5);
|
|
805
|
+
!o || y().get(o)?.some((i) => i.primary) || t[0].row.pop < e3 || n.set(o, t);
|
|
806
806
|
}
|
|
807
807
|
return L = n, n;
|
|
808
808
|
}
|
|
809
809
|
function O(n) {
|
|
810
810
|
if (!n) return;
|
|
811
811
|
let e = y().get(n);
|
|
812
|
-
if (e?.some((
|
|
812
|
+
if (e?.some((i) => i.primary)) return e;
|
|
813
813
|
let t = i3().get(n);
|
|
814
814
|
if (!t) return e;
|
|
815
|
-
let
|
|
816
|
-
return e ? [...
|
|
815
|
+
let o = t.map((i) => ({ row: i.row, primary: true }));
|
|
816
|
+
return e ? [...o, ...e] : o;
|
|
817
817
|
}
|
|
818
818
|
var I = null;
|
|
819
819
|
function o3() {
|
|
820
820
|
if (I) return I;
|
|
821
821
|
let n = /* @__PURE__ */ new Map();
|
|
822
822
|
for (let t of k.split(",")) {
|
|
823
|
-
let
|
|
824
|
-
|
|
823
|
+
let o = t.split("|");
|
|
824
|
+
o.length < 3 || n.set(o[0], { lon: +o[1], lat: +o[2] });
|
|
825
825
|
}
|
|
826
826
|
let e = /* @__PURE__ */ new Map();
|
|
827
|
-
for (let t of y().values()) for (let
|
|
828
|
-
let
|
|
829
|
-
if (!
|
|
830
|
-
let r = e.get(
|
|
831
|
-
(r === void 0 ||
|
|
827
|
+
for (let t of y().values()) for (let o of t) {
|
|
828
|
+
let i = T(o.row.cc);
|
|
829
|
+
if (!i) continue;
|
|
830
|
+
let r = e.get(i);
|
|
831
|
+
(r === void 0 || o.row.pop > r) && (e.set(i, o.row.pop), n.set(i, { lon: o.row.lon, lat: o.row.lat }));
|
|
832
832
|
}
|
|
833
833
|
return I = n, n;
|
|
834
834
|
}
|
|
@@ -839,10 +839,10 @@ function D() {
|
|
|
839
839
|
for (let e of H.split(",")) {
|
|
840
840
|
let t = e.split("|");
|
|
841
841
|
if (t.length < 5) continue;
|
|
842
|
-
let
|
|
843
|
-
n.set(u(
|
|
844
|
-
let
|
|
845
|
-
|
|
842
|
+
let o = { key: t[0], cc: t[1], name: t[2], lon: +t[3], lat: +t[4] };
|
|
843
|
+
n.set(u(o.key), o);
|
|
844
|
+
let i = u(o.name);
|
|
845
|
+
i === "mexico" && o.cc === "MX" ? (n.set("estado de mexico", o), n.set("edomex", o)) : n.set(i, o);
|
|
846
846
|
}
|
|
847
847
|
return B = n, n;
|
|
848
848
|
}
|
|
@@ -882,8 +882,8 @@ function Z(n) {
|
|
|
882
882
|
let e = String(n).trim().replace(/\.0+$/, "");
|
|
883
883
|
if (!e) return [];
|
|
884
884
|
if (/^\d{3}$/.test(e)) {
|
|
885
|
-
let
|
|
886
|
-
return
|
|
885
|
+
let o = e.padStart(5, "0").slice(0, 3);
|
|
886
|
+
return o === e ? [e] : [e, o];
|
|
887
887
|
}
|
|
888
888
|
let t = M3(e);
|
|
889
889
|
return t ? [t.slice(0, 3)] : [];
|
|
@@ -892,72 +892,72 @@ function S3(n) {
|
|
|
892
892
|
return !!n && n.ambiguous === true && !("precision" in n);
|
|
893
893
|
}
|
|
894
894
|
function A3(n) {
|
|
895
|
-
let e = null, t = typeof n.lat == "string" ? n.lat.trim() : n.lat,
|
|
896
|
-
if (t != null && t !== "" &&
|
|
897
|
-
let
|
|
898
|
-
if (isFinite(
|
|
899
|
-
else return { lat:
|
|
900
|
-
}
|
|
901
|
-
let
|
|
902
|
-
if (r &&
|
|
903
|
-
let
|
|
895
|
+
let e = null, t = typeof n.lat == "string" ? n.lat.trim() : n.lat, o = typeof n.lon == "string" ? n.lon.trim() : n.lon;
|
|
896
|
+
if (t != null && t !== "" && o !== void 0 && o !== null && o !== "") {
|
|
897
|
+
let a4 = +t, s2 = +o;
|
|
898
|
+
if (isFinite(a4) && isFinite(s2) && a4 >= -90 && a4 <= 90 && s2 >= -180 && s2 <= 180) if (a4 === 0 && s2 === 0) e = { lat: 0, lon: 0, precision: "latlon" };
|
|
899
|
+
else return { lat: a4, lon: s2, precision: "latlon" };
|
|
900
|
+
}
|
|
901
|
+
let i = E(n.country), r = Y(n.state);
|
|
902
|
+
if (r && i && c3(r) !== i && (r = null), n.city !== void 0 && n.city !== null) {
|
|
903
|
+
let a4 = u(String(n.city)), s2 = O(a4), f = s2 ? F(s2, n.mapKind) : null;
|
|
904
904
|
if (f && f.length) {
|
|
905
|
-
let d = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R = d ? u(d) : "",
|
|
906
|
-
for (let
|
|
907
|
-
let l2 =
|
|
908
|
-
if (d && l2.a1 !== "") if (
|
|
905
|
+
let d = n.state === void 0 || n.state === null ? "" : String(n.state).trim(), R = d ? u(d) : "", g3 = d ? Y(d) : null, S = [], m = -1;
|
|
906
|
+
for (let c2 of f) {
|
|
907
|
+
let l2 = c2.row, A = 0;
|
|
908
|
+
if (d && l2.a1 !== "") if (g3 && l2.a1 === g3 || u(l2.a1) === R) A++;
|
|
909
909
|
else continue;
|
|
910
|
-
if (
|
|
910
|
+
if (i) if (T(l2.cc) === i) A++;
|
|
911
911
|
else continue;
|
|
912
|
-
A > m ? (m = A, S = [
|
|
912
|
+
A > m ? (m = A, S = [c2]) : A === m && S.push(c2);
|
|
913
913
|
}
|
|
914
|
-
S.some((
|
|
914
|
+
S.some((c2) => c2.primary) && (S = S.filter((c2) => c2.primary));
|
|
915
915
|
let p = /* @__PURE__ */ new Map();
|
|
916
|
-
for (let
|
|
916
|
+
for (let c2 of S) p.set(c2.row.lon.toFixed(2) + "," + c2.row.lat.toFixed(2), c2.row);
|
|
917
917
|
if (p.size === 1) {
|
|
918
|
-
let
|
|
919
|
-
return { lat:
|
|
918
|
+
let c2 = S[0].row;
|
|
919
|
+
return { lat: c2.lat, lon: c2.lon, precision: "city" };
|
|
920
920
|
}
|
|
921
921
|
if (p.size > 1) return { ambiguous: true, matches: p.size };
|
|
922
922
|
}
|
|
923
923
|
}
|
|
924
|
-
if (!
|
|
925
|
-
let
|
|
926
|
-
if (
|
|
924
|
+
if (!i || r3.has(i)) for (let a4 of Z(n.zip)) {
|
|
925
|
+
let s2 = a3().get(a4);
|
|
926
|
+
if (s2) return { lat: s2.lat, lon: s2.lon, precision: "zip3" };
|
|
927
927
|
}
|
|
928
928
|
if (r) {
|
|
929
|
-
let
|
|
930
|
-
if (
|
|
929
|
+
let a4 = D().get(u(r));
|
|
930
|
+
if (a4) return { lat: a4.lat, lon: a4.lon, precision: "state" };
|
|
931
931
|
}
|
|
932
|
-
if (
|
|
933
|
-
let
|
|
934
|
-
if (
|
|
932
|
+
if (i && (n.mapKind !== "north-america" || s3.has(i))) {
|
|
933
|
+
let a4 = o3().get(i);
|
|
934
|
+
if (a4) return { lat: a4.lat, lon: a4.lon, precision: "country" };
|
|
935
935
|
}
|
|
936
936
|
return e;
|
|
937
937
|
}
|
|
938
938
|
var G = { latlon: 0, city: 1, zip3: 2, state: 3, country: 4 };
|
|
939
939
|
var x = 8;
|
|
940
940
|
function y3(n, e) {
|
|
941
|
-
let t = new Array(n.length),
|
|
941
|
+
let t = new Array(n.length), o = new Array(n.length), i = new Array(n.length), r = /* @__PURE__ */ new Set(), a4 = [], s2 = /* @__PURE__ */ new Set(), f = [], d = /* @__PURE__ */ new Set(), R = [], g3 = { latlon: 0, city: 0, zip3: 0, state: 0, country: 0 }, S = 0, m = 0, p = null;
|
|
942
942
|
for (let l2 = 0; l2 < n.length; ++l2) {
|
|
943
943
|
let A = n[l2], C2 = A3({ ...A, mapKind: e });
|
|
944
944
|
if (S3(C2)) {
|
|
945
|
-
t[l2] = null,
|
|
945
|
+
t[l2] = null, o[l2] = null, i[l2] = null, m++;
|
|
946
946
|
let M = K(A);
|
|
947
947
|
M && !d.has(M.toLowerCase()) && (d.add(M.toLowerCase()), R.length < x && R.push(M));
|
|
948
948
|
} else if (C2) {
|
|
949
|
-
if (t[l2] = C2.lat,
|
|
949
|
+
if (t[l2] = C2.lat, o[l2] = C2.lon, i[l2] = C2.precision, S++, g3[C2.precision]++, (p === null || G[C2.precision] > G[p]) && (p = C2.precision), G[C2.precision] > G.city) {
|
|
950
950
|
let M = K(A);
|
|
951
|
-
M && !
|
|
951
|
+
M && !s2.has(M.toLowerCase()) && (s2.add(M.toLowerCase()), f.length < x && f.push(M));
|
|
952
952
|
}
|
|
953
953
|
} else {
|
|
954
|
-
t[l2] = null,
|
|
954
|
+
t[l2] = null, o[l2] = null, i[l2] = null;
|
|
955
955
|
let M = K(A);
|
|
956
|
-
M && !r.has(M.toLowerCase()) && (r.add(M.toLowerCase()),
|
|
956
|
+
M && !r.has(M.toLowerCase()) && (r.add(M.toLowerCase()), a4.push(M));
|
|
957
957
|
}
|
|
958
958
|
}
|
|
959
|
-
let
|
|
960
|
-
return { lat: t, lon:
|
|
959
|
+
let c2 = !n3() && n.some((l2) => l2.city !== null && l2.city !== void 0 && String(l2.city).trim() !== "");
|
|
960
|
+
return { lat: t, lon: o, precisions: i, precision: p, precisionCounts: g3, coarseExamples: f, unmatched: a4, ambiguousRows: m, ambiguousExamples: R, matchedRows: S, totalRows: n.length, ...c2 ? { cityTableMissing: true } : {} };
|
|
961
961
|
}
|
|
962
962
|
function K(n) {
|
|
963
963
|
let e = [n.city, n.state, n.zip, n.country].filter((t) => t != null && String(t).trim() !== "").map((t) => String(t).trim()).join(", ");
|
|
@@ -969,13 +969,13 @@ function p3(n, e) {
|
|
|
969
969
|
return t ? F(t, e).length > 0 : false;
|
|
970
970
|
}
|
|
971
971
|
|
|
972
|
-
// ../shape-core/dist/chunk-
|
|
972
|
+
// ../shape-core/dist/chunk-GLLNTEEM.mjs
|
|
973
973
|
/*! @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. */
|
|
974
|
-
function
|
|
975
|
-
return
|
|
974
|
+
function s(t) {
|
|
975
|
+
return t ? t.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[_\-./]+/g, " ").toLowerCase().split(/\s+/).filter((n) => n.length > 0) : [];
|
|
976
976
|
}
|
|
977
977
|
|
|
978
|
-
// ../shape-core/dist/chunk-
|
|
978
|
+
// ../shape-core/dist/chunk-KNCUJNVB.mjs
|
|
979
979
|
/*! @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. */
|
|
980
980
|
var St = "006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191193194195196197198199200201202203204205206207208209210211212214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310312313314315316317318319320321322323324325326327328329330331333334335336337338339341342344346347349350351352354355356357358359360361362363364365366367368369370371372373374376377378379380381382383384385386387388389390391392393394395396397398400401402403404405406407408409410411412413414415416417418420421422423424425426427430431432433434435436437438439440441442443444445446447448449450451452453454455456457458460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508510511512513514515516520521522523524525526527528530531532534535537538539540541542543544545546547548549550551553554556557558559560561562563564565566567570571572573574575576577580581582583584585586587588590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620622623624625626627628629630631633634635636637638639640641644645646647648650651652653654655656657658660661662664665666667668669670671672673674675676677678679680681683684685686687688689690691692693700701703704705706707708710711712713714716717718719720721722723724725726727728729730731734735736737738739740741743744745746747748749750751752753754755756757758759760761762763764765766767768769770772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816820821822823824825826827828829830831832833834835836837838840841843844845846847850851852853855856857859860863864865870871873874875877878879880881882883884890891893894895897898900902903904905906907908910911912913914915916917918919920921922923924925926927928930931932933934935936937939940941943944945946947948949950951952953954955956957958959960961967968969970971972973974975976977978979980981982983984985986988989990991992993994995996997998999";
|
|
981
981
|
var w = new Set(St.match(/.{3}/g) ?? []);
|
|
@@ -984,11 +984,11 @@ var ct = new Set(at.map((n) => n[0]));
|
|
|
984
984
|
var yt = { "Ala.": "AL", "Alab.": "AL", "Ariz.": "AZ", "Ark.": "AR", "Calif.": "CA", "Cal.": "CA", "Colo.": "CO", "Col.": "CO", "Conn.": "CT", "Del.": "DE", "Fla.": "FL", "Flor.": "FL", "Ga.": "GA", "Ill.": "IL", "Ind.": "IN", "Kan.": "KS", "Kans.": "KS", "Ky.": "KY", "La.": "LA", "Md.": "MD", "Mass.": "MA", "Mich.": "MI", "Minn.": "MN", "Miss.": "MS", "Mo.": "MO", "Mont.": "MT", "Neb.": "NE", "Nebr.": "NE", "Nev.": "NV", "N.H.": "NH", "N.J.": "NJ", "N.M.": "NM", "N.Mex.": "NM", "N. Mex.": "NM", "N.Y.": "NY", "N.C.": "NC", "N.D.": "ND", "N.Dak.": "ND", "N. Dak.": "ND", "Okla.": "OK", "Ore.": "OR", "Oreg.": "OR", "Pa.": "PA", "Penn.": "PA", "Penna.": "PA", "R.I.": "RI", "S.C.": "SC", "S.D.": "SD", "S.Dak.": "SD", "S. Dak.": "SD", "Tenn.": "TN", "Tex.": "TX", "Vt.": "VT", "Va.": "VA", "Wash.": "WA", "W.Va.": "WV", "W. Va.": "WV", "Wis.": "WI", "Wisc.": "WI", "Wyo.": "WY", "D.C.": "DC", "Wash. D.C.": "DC", "Wash., D.C.": "DC", "P.R.": "PR", "V.I.": "VI" };
|
|
985
985
|
var ut = (() => {
|
|
986
986
|
let n = /* @__PURE__ */ new Map();
|
|
987
|
-
for (let [
|
|
987
|
+
for (let [s2, i] of at) n.set(g(i), s2);
|
|
988
988
|
n.set(g("Washington DC"), "DC"), n.set(g("Washington D.C."), "DC"), n.set(g("US Virgin Islands"), "VI");
|
|
989
|
-
for (let [
|
|
990
|
-
let r = g(
|
|
991
|
-
r && !n.has(r) && n.set(r,
|
|
989
|
+
for (let [s2, i] of Object.entries(yt)) {
|
|
990
|
+
let r = g(s2);
|
|
991
|
+
r && !n.has(r) && n.set(r, i);
|
|
992
992
|
}
|
|
993
993
|
return n;
|
|
994
994
|
})();
|
|
@@ -1000,29 +1000,29 @@ function g(n) {
|
|
|
1000
1000
|
return u(n);
|
|
1001
1001
|
}
|
|
1002
1002
|
var rt = /* @__PURE__ */ new Set(["zip", "zipcode", "postal", "postcode", "plz"]);
|
|
1003
|
-
function y2(n,
|
|
1003
|
+
function y2(n, s2) {
|
|
1004
1004
|
if (!n) return false;
|
|
1005
|
-
for (let
|
|
1005
|
+
for (let i of s(n)) if (s2.has(i)) return true;
|
|
1006
1006
|
return false;
|
|
1007
1007
|
}
|
|
1008
|
-
function Mt(n,
|
|
1008
|
+
function Mt(n, s2) {
|
|
1009
1009
|
if (n == null) return null;
|
|
1010
|
-
let
|
|
1011
|
-
if (
|
|
1012
|
-
switch (
|
|
1010
|
+
let i = String(n).trim();
|
|
1011
|
+
if (i.length === 0) return null;
|
|
1012
|
+
switch (s2) {
|
|
1013
1013
|
case "country-iso3":
|
|
1014
1014
|
case "country-iso2":
|
|
1015
1015
|
case "country-name":
|
|
1016
|
-
return E(
|
|
1016
|
+
return E(i);
|
|
1017
1017
|
case "us-state-code":
|
|
1018
1018
|
case "us-state-name": {
|
|
1019
|
-
let r = ft(
|
|
1020
|
-
return ct.has(r) ? r : ut.get(g(
|
|
1019
|
+
let r = ft(i);
|
|
1020
|
+
return ct.has(r) ? r : ut.get(g(i)) ?? null;
|
|
1021
1021
|
}
|
|
1022
1022
|
case "us-zip5":
|
|
1023
|
-
return M3(
|
|
1023
|
+
return M3(i);
|
|
1024
1024
|
case "us-county-fips":
|
|
1025
|
-
return /^\d{5}$/.test(
|
|
1025
|
+
return /^\d{5}$/.test(i) && lt.has(i.slice(0, 2)) ? i : null;
|
|
1026
1026
|
default:
|
|
1027
1027
|
return null;
|
|
1028
1028
|
}
|
|
@@ -1041,14 +1041,14 @@ function Gt(n) {
|
|
|
1041
1041
|
return false;
|
|
1042
1042
|
}
|
|
1043
1043
|
}
|
|
1044
|
-
function It(n,
|
|
1045
|
-
return
|
|
1044
|
+
function It(n, s2) {
|
|
1045
|
+
return s2 === "us-zip5" ? w.has(n.slice(0, 3)) : true;
|
|
1046
1046
|
}
|
|
1047
|
-
function Wt(n,
|
|
1048
|
-
let
|
|
1047
|
+
function Wt(n, s2) {
|
|
1048
|
+
let i = new Array(n.length), r = /* @__PURE__ */ new Set(), M = [], h2 = 0;
|
|
1049
1049
|
for (let N2 = 0; N2 < n.length; ++N2) {
|
|
1050
|
-
let I2 = Mt(n[N2],
|
|
1051
|
-
if (
|
|
1050
|
+
let I2 = Mt(n[N2], s2), O2 = I2 !== null && It(I2, s2) ? I2 : null;
|
|
1051
|
+
if (i[N2] = O2, O2 !== null) h2++;
|
|
1052
1052
|
else {
|
|
1053
1053
|
let d = n[N2];
|
|
1054
1054
|
if (d != null) {
|
|
@@ -1060,80 +1060,80 @@ function Wt(n, s) {
|
|
|
1060
1060
|
}
|
|
1061
1061
|
}
|
|
1062
1062
|
}
|
|
1063
|
-
return { iso:
|
|
1063
|
+
return { iso: i, unmatched: M, matchedRows: h2, totalRows: n.length };
|
|
1064
1064
|
}
|
|
1065
1065
|
|
|
1066
|
-
// ../shape-core/dist/chunk-
|
|
1066
|
+
// ../shape-core/dist/chunk-RBHJL2XA.mjs
|
|
1067
1067
|
var import_papaparse = __toESM(require_papaparse_min(), 1);
|
|
1068
1068
|
/*! @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. */
|
|
1069
|
-
var
|
|
1069
|
+
var bt = { "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" };
|
|
1070
1070
|
var j2 = (() => {
|
|
1071
1071
|
let n = /* @__PURE__ */ new Map();
|
|
1072
|
-
for (let t of Object.keys(
|
|
1072
|
+
for (let t of Object.keys(bt)) for (let e of bt[t].split(/\s+/)) e && n.set(e, t);
|
|
1073
1073
|
return n;
|
|
1074
1074
|
})();
|
|
1075
|
-
function
|
|
1075
|
+
function Lt(n) {
|
|
1076
1076
|
for (let [t, e] of n) {
|
|
1077
1077
|
let r = j2.get(t);
|
|
1078
1078
|
r && !j2.has(e) && j2.set(e, r);
|
|
1079
1079
|
}
|
|
1080
1080
|
}
|
|
1081
|
-
|
|
1082
|
-
var
|
|
1083
|
-
var
|
|
1084
|
-
var Gt2 = ["latitude", "longitude"];
|
|
1081
|
+
Lt(N);
|
|
1082
|
+
var Pt = ["rate", "ratio", "pct", "percent", "percentage", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "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"];
|
|
1083
|
+
var Gt2 = ["pct", "percent", "percentage", "rate", "ratio", "rating", "share", "score", "index", "nps", "csat", "margin", "yield", "coverage", "utilization", "gpa", "percentile", "quantile", "bmi", "density", "pressure", "humidity", "velocity", "efficiency", "occupancy", "latency", "throughput", "bandwidth", "iops"];
|
|
1085
1084
|
var Wt2 = ["latitude", "longitude"];
|
|
1086
|
-
var
|
|
1087
|
-
var
|
|
1088
|
-
var Vt =
|
|
1089
|
-
var kt = new RegExp("\\b(" +
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
var
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
function Mt2(n, t) {
|
|
1103
|
-
if (!t) return false;
|
|
1104
|
-
let e = St2(t);
|
|
1105
|
-
return n.test(zt(t)) || n.test(e) || n.test(o(e).join(" "));
|
|
1085
|
+
var Ft = ["latitude", "longitude"];
|
|
1086
|
+
var St2 = /^\s*(sum|count|count\s+distinct|distinct\s+count)\s+of\s+/i;
|
|
1087
|
+
var Vt = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])/g;
|
|
1088
|
+
var kt = new RegExp("\\b(" + Pt.join("|") + ")\\b|(" + Gt2.join("|") + ")$", "i");
|
|
1089
|
+
var Ut = new RegExp("\\b(" + Wt2.join("|") + ")\\b|(" + Ft.join("|") + ")$", "i");
|
|
1090
|
+
function Ct(n) {
|
|
1091
|
+
return n ? String(n).replace(St2, "").trim() : "";
|
|
1092
|
+
}
|
|
1093
|
+
function Bt(n) {
|
|
1094
|
+
return !!n && St2.test(String(n));
|
|
1095
|
+
}
|
|
1096
|
+
var zt = ["count (distinct)", "count distinct", "distinct count", "standard deviation", "average", "variance", "median", "product", "stddev", "std dev", "count", "sum", "avg", "min", "minimum", "max", "maximum", "var"];
|
|
1097
|
+
var _t = new RegExp("^\\s*(" + [...zt].sort((n, t) => t.length - n.length).map((n) => n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s+")).join("|") + ")\\s+of\\s+", "i");
|
|
1098
|
+
function Ht(n) {
|
|
1099
|
+
let t = Ct(n);
|
|
1100
|
+
return t.length === 0 ? "" : t.replace(Vt, " ");
|
|
1106
1101
|
}
|
|
1107
|
-
function At(n) {
|
|
1108
|
-
|
|
1102
|
+
function At(n, t) {
|
|
1103
|
+
if (!t) return false;
|
|
1104
|
+
let e = Ct(t);
|
|
1105
|
+
return n.test(Ht(t)) || n.test(e) || n.test(s(e).join(" "));
|
|
1109
1106
|
}
|
|
1110
|
-
function
|
|
1111
|
-
return
|
|
1107
|
+
function Tt(n) {
|
|
1108
|
+
return At(Ut, n);
|
|
1112
1109
|
}
|
|
1113
|
-
var Tt = /int|double|decimal|single|float|number|currency|money/i;
|
|
1114
1110
|
function Kt(n) {
|
|
1115
|
-
|
|
1116
|
-
return t === "categorical" ? "Categorical" : t === "ordinal" ? "Ordinal" : t === "continuous" || n?.isMeasure === true || Tt.test(String(n?.dataType ?? "")) ? "Continuous" : "Categorical";
|
|
1111
|
+
return At(kt, n) || Tt(n);
|
|
1117
1112
|
}
|
|
1113
|
+
var Nt = /int|double|decimal|single|float|number|currency|money/i;
|
|
1118
1114
|
function Yt(n) {
|
|
1119
|
-
|
|
1115
|
+
let t = String(n?.valueNature ?? "").trim().toLowerCase();
|
|
1116
|
+
return t === "categorical" ? "Categorical" : t === "ordinal" ? "Ordinal" : t === "continuous" || n?.isMeasure === true || Nt.test(String(n?.dataType ?? "")) ? "Continuous" : "Categorical";
|
|
1120
1117
|
}
|
|
1121
|
-
function
|
|
1122
|
-
|
|
1118
|
+
function Zt(n) {
|
|
1119
|
+
return n?.isMeasure === true || Nt.test(String(n?.dataType ?? ""));
|
|
1120
|
+
}
|
|
1121
|
+
function Rt(n) {
|
|
1122
|
+
let t = n ?? {}, e = Yt(t);
|
|
1123
1123
|
if (e !== "Continuous") return { nature: e, additivity: "unknown", basis: "role", suppressed: false };
|
|
1124
|
-
if (
|
|
1124
|
+
if (Tt(t.name)) return { nature: e, additivity: "positional", basis: "name", suppressed: true };
|
|
1125
1125
|
let r = String(t.additivity ?? "").trim().toLowerCase();
|
|
1126
|
-
if (!(r === "additive" &&
|
|
1126
|
+
if (!(r === "additive" && Bt(t.name))) {
|
|
1127
1127
|
if (r === "additive") return { nature: e, additivity: "additive", basis: "measured", suppressed: false };
|
|
1128
1128
|
if (r === "part_of_whole") return { nature: e, additivity: "part_of_whole", basis: "measured", suppressed: false };
|
|
1129
1129
|
if (r === "intensive_rate") return { nature: e, additivity: "intensive_rate", basis: "measured", suppressed: false };
|
|
1130
1130
|
}
|
|
1131
|
-
return t.discourageAggregationAcrossGroups === true ? { nature: e, additivity: "intensive_rate", basis: "host-flag", suppressed: false } :
|
|
1131
|
+
return t.discourageAggregationAcrossGroups === true ? { nature: e, additivity: "intensive_rate", basis: "host-flag", suppressed: false } : Kt(t.name) ? { nature: e, additivity: "intensive_rate", basis: "name", suppressed: false } : { nature: e, additivity: "additive", basis: "default", suppressed: false };
|
|
1132
1132
|
}
|
|
1133
|
-
function
|
|
1134
|
-
let t =
|
|
1133
|
+
function vt(n) {
|
|
1134
|
+
let t = Rt(n), e = n ?? {};
|
|
1135
1135
|
if (t.nature === "Categorical") return ["first", "distinctcount", "count"];
|
|
1136
|
-
if (t.nature === "Ordinal") return
|
|
1136
|
+
if (t.nature === "Ordinal") return Zt(e) ? ["median", "average", "min", "max", "first", "distinctcount", "count"] : ["first", "distinctcount", "count"];
|
|
1137
1137
|
switch (t.additivity) {
|
|
1138
1138
|
case "positional":
|
|
1139
1139
|
return ["min", "max", "count", "distinctcount", "first"];
|
|
@@ -1143,13 +1143,13 @@ function Rt(n) {
|
|
|
1143
1143
|
return ["sum", "average", "median", "min", "max", "count", "distinctcount", "first"];
|
|
1144
1144
|
}
|
|
1145
1145
|
}
|
|
1146
|
-
function
|
|
1147
|
-
return
|
|
1146
|
+
function Ce(n) {
|
|
1147
|
+
return vt(n)[0];
|
|
1148
1148
|
}
|
|
1149
|
-
function
|
|
1149
|
+
function Ae(n, t) {
|
|
1150
1150
|
if (t !== "sum" && t !== "count") return false;
|
|
1151
1151
|
if (t === "count") return true;
|
|
1152
|
-
let e =
|
|
1152
|
+
let e = Rt(n);
|
|
1153
1153
|
return e.additivity === "additive" || e.additivity === "part_of_whole" || e.additivity === "unknown";
|
|
1154
1154
|
}
|
|
1155
1155
|
|
|
@@ -1164,16 +1164,16 @@ function C(r) {
|
|
|
1164
1164
|
let e = /* @__PURE__ */ new Set();
|
|
1165
1165
|
for (let n of r) {
|
|
1166
1166
|
if (n == null) continue;
|
|
1167
|
-
let
|
|
1168
|
-
if (!V(
|
|
1167
|
+
let s2 = u(String(n));
|
|
1168
|
+
if (!V(s2) && !e.has(s2) && (e.add(s2), e.size >= U2)) break;
|
|
1169
1169
|
}
|
|
1170
1170
|
return Array.from(e);
|
|
1171
1171
|
}
|
|
1172
1172
|
function P2(r) {
|
|
1173
1173
|
let e = C(r);
|
|
1174
1174
|
if (e.length === 0 || $2(r) < 95) return false;
|
|
1175
|
-
let n = e.filter((
|
|
1176
|
-
return n >= 1 && n >=
|
|
1175
|
+
let n = e.filter((c2) => G2(c2) && !Y(c2)).length, s2 = e.filter((c2) => !G2(c2) && !!Y(c2)).length;
|
|
1176
|
+
return n >= 1 && n >= s2;
|
|
1177
1177
|
}
|
|
1178
1178
|
function q2(r, e) {
|
|
1179
1179
|
if (!Y(r)) return false;
|
|
@@ -1184,22 +1184,22 @@ function $2(r) {
|
|
|
1184
1184
|
let e = C(r);
|
|
1185
1185
|
if (e.length === 0) return 0;
|
|
1186
1186
|
let n = 0;
|
|
1187
|
-
for (let
|
|
1187
|
+
for (let s2 of e) G2(s2) && n++;
|
|
1188
1188
|
return Math.round(n / e.length * 1e3) / 10;
|
|
1189
1189
|
}
|
|
1190
1190
|
function v2(r) {
|
|
1191
1191
|
let e = C(r);
|
|
1192
1192
|
if (e.length === 0) return 0;
|
|
1193
1193
|
let n = 0;
|
|
1194
|
-
for (let
|
|
1194
|
+
for (let s2 of e) Y(s2) && n++;
|
|
1195
1195
|
return Math.round(n / e.length * 1e3) / 10;
|
|
1196
1196
|
}
|
|
1197
1197
|
function F2(r) {
|
|
1198
1198
|
let e = /* @__PURE__ */ new Set();
|
|
1199
1199
|
for (let n of r) {
|
|
1200
1200
|
if (n == null) continue;
|
|
1201
|
-
let
|
|
1202
|
-
if (!V(u(
|
|
1201
|
+
let s2 = String(n).trim();
|
|
1202
|
+
if (!V(u(s2)) && !e.has(s2) && (e.add(s2), e.size >= U2)) break;
|
|
1203
1203
|
}
|
|
1204
1204
|
return Array.from(e);
|
|
1205
1205
|
}
|
|
@@ -1207,95 +1207,95 @@ function D2(r) {
|
|
|
1207
1207
|
let e = F2(r);
|
|
1208
1208
|
if (e.length === 0) return 0;
|
|
1209
1209
|
let n = 0;
|
|
1210
|
-
for (let
|
|
1210
|
+
for (let s2 of e) Z(s2).length > 0 && n++;
|
|
1211
1211
|
return Math.round(n / e.length * 1e3) / 10;
|
|
1212
1212
|
}
|
|
1213
1213
|
function Z2(r, e) {
|
|
1214
1214
|
return y2(e, rt) ? true : F2(r).some((n) => /^\d{5}(-\d{4})?$/.test(n.replace(/\.0+$/, "")));
|
|
1215
1215
|
}
|
|
1216
|
-
function
|
|
1216
|
+
function tn(r, e) {
|
|
1217
1217
|
let n = C(r);
|
|
1218
1218
|
if (n.length === 0) return 0;
|
|
1219
|
-
let
|
|
1220
|
-
for (let
|
|
1221
|
-
return Math.round(
|
|
1219
|
+
let s2 = 0;
|
|
1220
|
+
for (let c2 of n) p3(c2, e) && s2++;
|
|
1221
|
+
return Math.round(s2 / n.length * 1e3) / 10;
|
|
1222
1222
|
}
|
|
1223
1223
|
function z2(r, e) {
|
|
1224
1224
|
let n = 0;
|
|
1225
|
-
for (let
|
|
1225
|
+
for (let s2 of C(r)) e(s2) && n++;
|
|
1226
1226
|
return n;
|
|
1227
1227
|
}
|
|
1228
|
-
function
|
|
1228
|
+
function nn(r, e) {
|
|
1229
1229
|
let n = 0;
|
|
1230
|
-
for (let
|
|
1230
|
+
for (let s2 of F2(r)) e(s2) && n++;
|
|
1231
1231
|
return n;
|
|
1232
1232
|
}
|
|
1233
|
-
function
|
|
1234
|
-
let A = [],
|
|
1233
|
+
function en(r, e, n, s2, c2) {
|
|
1234
|
+
let A = [], u2 = [], o = {}, M = {}, _2 = new Set(r), l2 = (t) => e.map((i) => i[t]);
|
|
1235
1235
|
for (let t of ["city", "country"]) {
|
|
1236
|
-
let
|
|
1237
|
-
|
|
1236
|
+
let i = n?.[t];
|
|
1237
|
+
i && _2.has(i) && (o[t] = i);
|
|
1238
1238
|
}
|
|
1239
|
-
let X2 = new Set(
|
|
1239
|
+
let X2 = new Set(c2 ?? r);
|
|
1240
1240
|
for (let t of ["lat", "lon"]) {
|
|
1241
|
-
let
|
|
1242
|
-
|
|
1241
|
+
let i = n?.[t];
|
|
1242
|
+
i && X2.has(i) && (o[t] = i);
|
|
1243
1243
|
}
|
|
1244
|
-
let
|
|
1245
|
-
if (
|
|
1246
|
-
let t = l2(
|
|
1247
|
-
|
|
1244
|
+
let g3 = n?.zip;
|
|
1245
|
+
if (g3 && _2.has(g3)) {
|
|
1246
|
+
let t = l2(g3), i = D2(t);
|
|
1247
|
+
i < 95 ? u2.push(`zip=${g3} (only ${i}% of values read as ZIPs)`) : Z2(t, g3) ? o.zip = g3 : u2.push(`zip=${g3} (all values are 3-4 digits with nothing to say they are postal)`);
|
|
1248
1248
|
}
|
|
1249
1249
|
let p = n?.state;
|
|
1250
1250
|
if (p && _2.has(p)) {
|
|
1251
|
-
let t = l2(p),
|
|
1252
|
-
|
|
1251
|
+
let t = l2(p), i = C(t);
|
|
1252
|
+
i.length > 0 && i.every((a4) => q2(a4, s2)) ? u2.push(`state=${p} (every value is "CA", which is both Canada and California)`) : P2(t) ? (u2.push(`state=${p} (every value is a country, not a state)`), o.country || (o.country = p)) : v2(t) < 95 ? u2.push(`state=${p} (only ${v2(t)}% of values are states/provinces)`) : o.state = p;
|
|
1253
1253
|
}
|
|
1254
|
-
let d = new Set(Object.values(
|
|
1255
|
-
if (!
|
|
1254
|
+
let d = new Set(Object.values(o).filter(Boolean)), x2 = r.filter((t) => !d.has(t) && !t.startsWith("__"));
|
|
1255
|
+
if (!o.state) {
|
|
1256
1256
|
let t = null;
|
|
1257
|
-
for (let
|
|
1258
|
-
let
|
|
1259
|
-
if (P2(
|
|
1260
|
-
let f = v2(
|
|
1257
|
+
for (let i of x2) {
|
|
1258
|
+
let a4 = l2(i);
|
|
1259
|
+
if (P2(a4)) continue;
|
|
1260
|
+
let f = v2(a4);
|
|
1261
1261
|
if (f < 95) continue;
|
|
1262
|
-
let N2 = z2(
|
|
1263
|
-
N2 < E2 && Y2 < 1 || (!t || f > t.pct) && (t = { name:
|
|
1262
|
+
let N2 = z2(a4, (S) => !!Y(S)), Y2 = z2(a4, (S) => !!Y(S) && !q2(S, s2));
|
|
1263
|
+
N2 < E2 && Y2 < 1 || (!t || f > t.pct) && (t = { name: i, pct: f });
|
|
1264
1264
|
}
|
|
1265
|
-
t && (
|
|
1265
|
+
t && (o.state = t.name, d.add(t.name), A.push(`state=${t.name} (${t.pct}% states/provinces)`));
|
|
1266
1266
|
}
|
|
1267
|
-
if (!
|
|
1267
|
+
if (!o.zip) for (let t of x2) {
|
|
1268
1268
|
if (d.has(t)) continue;
|
|
1269
|
-
let
|
|
1270
|
-
if (!(
|
|
1271
|
-
|
|
1269
|
+
let i = l2(t), a4 = D2(i);
|
|
1270
|
+
if (!(a4 < 95) && Z2(i, t) && !(nn(i, (f) => Z(f).length > 0) < E2)) {
|
|
1271
|
+
o.zip = t, d.add(t), A.push(`zip=${t} (${a4}% ZIP codes)`);
|
|
1272
1272
|
break;
|
|
1273
1273
|
}
|
|
1274
1274
|
}
|
|
1275
|
-
let h2 =
|
|
1275
|
+
let h2 = o.country;
|
|
1276
1276
|
if (!h2 || !P2(l2(h2))) {
|
|
1277
1277
|
let t = null;
|
|
1278
|
-
for (let
|
|
1279
|
-
if (d.has(
|
|
1280
|
-
let
|
|
1281
|
-
(!t ||
|
|
1278
|
+
for (let i of x2) {
|
|
1279
|
+
if (d.has(i) || !P2(l2(i))) continue;
|
|
1280
|
+
let a4 = $2(l2(i));
|
|
1281
|
+
(!t || a4 > t.pct) && (t = { name: i, pct: a4 });
|
|
1282
1282
|
}
|
|
1283
|
-
t && (h2 && (
|
|
1283
|
+
t && (h2 && (u2.push(`country=${h2} (only ${$2(l2(h2))}% of values are country identifiers; using ${t.name} instead)`), M.country = h2), o.country = t.name, d.add(t.name), A.push(`country=${t.name}`));
|
|
1284
1284
|
}
|
|
1285
|
-
if (!
|
|
1285
|
+
if (!o.city) {
|
|
1286
1286
|
let t = null;
|
|
1287
|
-
for (let
|
|
1288
|
-
if (d.has(
|
|
1289
|
-
let
|
|
1290
|
-
f < m3 || z2(
|
|
1287
|
+
for (let i of x2) {
|
|
1288
|
+
if (d.has(i)) continue;
|
|
1289
|
+
let a4 = l2(i), f = tn(a4, s2);
|
|
1290
|
+
f < m3 || z2(a4, (N2) => p3(N2, s2)) < E2 || (!t || f > t.pct) && (t = { name: i, pct: f });
|
|
1291
1291
|
}
|
|
1292
|
-
t && (
|
|
1292
|
+
t && (o.city = t.name, A.push(`city=${t.name} (${t.pct}% known cities)`));
|
|
1293
1293
|
}
|
|
1294
|
-
let B2 =
|
|
1295
|
-
let
|
|
1296
|
-
return isFinite(
|
|
1294
|
+
let B2 = o.country ? l2(o.country) : [], k2 = !!o.country && P2(B2), j3 = k2 ? new Set(B2.map((t) => E(t == null ? null : String(t))).filter(Boolean)).size : 0, K2 = k2 && j3 >= 2, L2 = !!(o.lat && o.lon) && e.some((t) => {
|
|
1295
|
+
let i = +String(t[o.lat] ?? "").trim(), a4 = +String(t[o.lon] ?? "").trim();
|
|
1296
|
+
return isFinite(i) && isFinite(a4) && i >= -90 && i <= 90 && a4 >= -180 && a4 <= 180 && String(t[o.lat] ?? "").trim() !== "" && String(t[o.lon] ?? "").trim() !== "";
|
|
1297
1297
|
});
|
|
1298
|
-
return
|
|
1298
|
+
return o.lat && o.lon && !L2 && u2.push(`lat/lon=${o.lat}/${o.lon} (no row holds a usable coordinate pair)`), o.country && !K2 && !(o.city || o.state || o.zip || L2) && u2.push(k2 ? `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 || K2 || L2) ? o : null, backfilled: A, refused: u2, ...Object.keys(M).length ? { labelFallback: M } : {} };
|
|
1299
1299
|
}
|
|
1300
1300
|
|
|
1301
1301
|
// src/payload.ts
|
|
@@ -1309,8 +1309,8 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1309
1309
|
let rolesRefused = [];
|
|
1310
1310
|
let labelCol;
|
|
1311
1311
|
if (bind) {
|
|
1312
|
-
const dims = cols.filter((
|
|
1313
|
-
const res =
|
|
1312
|
+
const dims = cols.filter((c2) => !c2.isMeasure).map((c2) => c2.name);
|
|
1313
|
+
const res = en(dims, rowObjs, bind, point?.mapKind, cols.map((c2) => c2.name));
|
|
1314
1314
|
bind = res.bind;
|
|
1315
1315
|
rolesBackfilled = res.backfilled;
|
|
1316
1316
|
rolesRefused = res.refused;
|
|
@@ -1355,14 +1355,14 @@ function resolvePointChannel(cols, rowObjs, point) {
|
|
|
1355
1355
|
return { lat: pLat, lon: pLon, prec: pPrec, geoPoint, rolesRefused };
|
|
1356
1356
|
}
|
|
1357
1357
|
function buildRenderPayload(cols, rowObjs, geo, point, destination) {
|
|
1358
|
-
const colNames = cols.map((
|
|
1359
|
-
const
|
|
1358
|
+
const colNames = cols.map((c2) => c2.name);
|
|
1359
|
+
const o = resolvePointChannel(cols, rowObjs, point);
|
|
1360
1360
|
const d = resolvePointChannel(cols, rowObjs, destination);
|
|
1361
|
-
const pLat =
|
|
1361
|
+
const pLat = o.lat, pLon = o.lon, pPrec = o.prec;
|
|
1362
1362
|
const dLat = d.lat, dLon = d.lon, dPrec = d.prec;
|
|
1363
|
-
const geoPoint =
|
|
1363
|
+
const geoPoint = o.geoPoint;
|
|
1364
1364
|
const geoPointDest = d.geoPoint;
|
|
1365
|
-
const rolesRefused = [...
|
|
1365
|
+
const rolesRefused = [...o.rolesRefused, ...d.rolesRefused.map((s2) => `destination: ${s2}`)];
|
|
1366
1366
|
let geoIso = null;
|
|
1367
1367
|
let geoUnmatched;
|
|
1368
1368
|
let geoUnmatchedDistinct;
|
|
@@ -1376,29 +1376,29 @@ function buildRenderPayload(cols, rowObjs, geo, point, destination) {
|
|
|
1376
1376
|
const out = new Array(rowObjs.length);
|
|
1377
1377
|
for (let r = 0; r < rowObjs.length; r++) {
|
|
1378
1378
|
const row = rowObjs[r];
|
|
1379
|
-
const
|
|
1380
|
-
for (let
|
|
1381
|
-
const v3 = row[colNames[
|
|
1379
|
+
const a4 = new Array(cols.length + extra);
|
|
1380
|
+
for (let c2 = 0; c2 < cols.length; c2++) {
|
|
1381
|
+
const v3 = row[colNames[c2]];
|
|
1382
1382
|
if (v3 instanceof Date) {
|
|
1383
|
-
|
|
1383
|
+
a4[c2] = v3.toISOString();
|
|
1384
1384
|
} else {
|
|
1385
|
-
|
|
1385
|
+
a4[c2] = v3 ?? null;
|
|
1386
1386
|
}
|
|
1387
1387
|
}
|
|
1388
1388
|
let k2 = cols.length;
|
|
1389
|
-
|
|
1390
|
-
if (geoIso)
|
|
1389
|
+
a4[k2++] = r;
|
|
1390
|
+
if (geoIso) a4[k2++] = geoIso[r];
|
|
1391
1391
|
if (pLat && pLon) {
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1392
|
+
a4[k2++] = pLat[r];
|
|
1393
|
+
a4[k2++] = pLon[r];
|
|
1394
|
+
a4[k2++] = pPrec ? pPrec[r] : null;
|
|
1395
1395
|
}
|
|
1396
1396
|
if (dLat && dLon) {
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1397
|
+
a4[k2++] = dLat[r];
|
|
1398
|
+
a4[k2++] = dLon[r];
|
|
1399
|
+
a4[k2++] = dPrec ? dPrec[r] : null;
|
|
1400
1400
|
}
|
|
1401
|
-
out[r] =
|
|
1401
|
+
out[r] = a4;
|
|
1402
1402
|
}
|
|
1403
1403
|
const colsOut = [...cols, { name: "__rowIdx__", dataType: "Integer", isMeasure: false, modelDesc: "" }];
|
|
1404
1404
|
if (geoIso) colsOut.push({ name: "__geoIso__", dataType: "String", isMeasure: false, modelDesc: "" });
|
|
@@ -1450,9 +1450,9 @@ function createMarkResolver(env) {
|
|
|
1450
1450
|
if (el.tagName.toLowerCase() !== "path") return false;
|
|
1451
1451
|
const f = el.getAttribute("fill");
|
|
1452
1452
|
if (f !== null && f !== "" && f !== "none" && f !== "transparent") return false;
|
|
1453
|
-
const
|
|
1453
|
+
const s2 = (el.getAttribute("stroke") || "").trim().toLowerCase();
|
|
1454
1454
|
const so = parseFloat(el.getAttribute("stroke-opacity") || "1");
|
|
1455
|
-
return
|
|
1455
|
+
return s2 === "transparent" || s2 === "none" || so <= 0.01;
|
|
1456
1456
|
};
|
|
1457
1457
|
const distToPathCenterline = (el, x2, y4) => {
|
|
1458
1458
|
const L2 = el.getTotalLength();
|
|
@@ -1461,10 +1461,10 @@ function createMarkResolver(env) {
|
|
|
1461
1461
|
if (!m) return Number.MAX_VALUE;
|
|
1462
1462
|
let best = Number.MAX_VALUE;
|
|
1463
1463
|
const N2 = 64;
|
|
1464
|
-
for (let
|
|
1465
|
-
const
|
|
1466
|
-
const dx = m.a *
|
|
1467
|
-
const dy = m.b *
|
|
1464
|
+
for (let i = 0; i <= N2; i++) {
|
|
1465
|
+
const pt = el.getPointAtLength(L2 * i / N2);
|
|
1466
|
+
const dx = m.a * pt.x + m.c * pt.y + m.e - x2;
|
|
1467
|
+
const dy = m.b * pt.x + m.d * pt.y + m.f - y4;
|
|
1468
1468
|
const d = dx * dx + dy * dy;
|
|
1469
1469
|
if (d < best) best = d;
|
|
1470
1470
|
}
|
|
@@ -1561,8 +1561,8 @@ function createMarkResolver(env) {
|
|
|
1561
1561
|
for (const n of all) {
|
|
1562
1562
|
const tag = (n.tagName || "").toLowerCase();
|
|
1563
1563
|
if (!SHAPE.test(tag)) continue;
|
|
1564
|
-
const
|
|
1565
|
-
if (
|
|
1564
|
+
const pe = viewStyle(n);
|
|
1565
|
+
if (pe && pe !== "none") return true;
|
|
1566
1566
|
}
|
|
1567
1567
|
return false;
|
|
1568
1568
|
};
|
|
@@ -1682,15 +1682,15 @@ function censusMarks(container) {
|
|
|
1682
1682
|
return EMPTY;
|
|
1683
1683
|
}
|
|
1684
1684
|
}
|
|
1685
|
-
function isBlankRender(
|
|
1686
|
-
if (
|
|
1687
|
-
if (
|
|
1688
|
-
if (
|
|
1689
|
-
if (!(
|
|
1690
|
-
return
|
|
1685
|
+
function isBlankRender(i) {
|
|
1686
|
+
if (i.contractUntagged) return false;
|
|
1687
|
+
if (i.animated) return false;
|
|
1688
|
+
if (i.authoredNoDataText) return false;
|
|
1689
|
+
if (!(i.rows > 0)) return false;
|
|
1690
|
+
return i.markCount === 0;
|
|
1691
1691
|
}
|
|
1692
1692
|
function blankRenderFlag(lang, cause) {
|
|
1693
|
-
const clean = (
|
|
1693
|
+
const clean = (s2) => String(s2 || "unknown").toLowerCase().replace(/[^a-z0-9-]+/g, "-");
|
|
1694
1694
|
return `blankrender:${clean(lang)}:${clean(cause)}`;
|
|
1695
1695
|
}
|
|
1696
1696
|
|
|
@@ -1714,10 +1714,10 @@ function styleOf(el, doc) {
|
|
|
1714
1714
|
}
|
|
1715
1715
|
}
|
|
1716
1716
|
function attrOrComputed(el, name, cs) {
|
|
1717
|
-
const
|
|
1718
|
-
if (
|
|
1719
|
-
const
|
|
1720
|
-
return
|
|
1717
|
+
const a4 = el.getAttribute?.(name);
|
|
1718
|
+
if (a4 !== null && a4 !== void 0 && String(a4).trim() !== "") return String(a4).trim();
|
|
1719
|
+
const c2 = cs?.[name === "stroke-width" ? "strokeWidth" : name];
|
|
1720
|
+
return c2 === null || c2 === void 0 ? "" : String(c2).trim();
|
|
1721
1721
|
}
|
|
1722
1722
|
function isUnfilled(fill) {
|
|
1723
1723
|
const f = fill.toLowerCase();
|
|
@@ -1770,9 +1770,9 @@ function censusHitBands(container, doc) {
|
|
|
1770
1770
|
return EMPTY2;
|
|
1771
1771
|
}
|
|
1772
1772
|
}
|
|
1773
|
-
function hitBandFlag(
|
|
1774
|
-
if (
|
|
1775
|
-
return
|
|
1773
|
+
function hitBandFlag(c2) {
|
|
1774
|
+
if (c2.interactive === 0) return "";
|
|
1775
|
+
return c2.uncovered > 0 ? "hitband:d3:thin" : "hitband:d3:ok";
|
|
1776
1776
|
}
|
|
1777
1777
|
|
|
1778
1778
|
// src/fit.ts
|
|
@@ -1857,11 +1857,11 @@ function planAxisPin(candidates, viewportH, minLabels = AXIS_PIN_MIN_LABELS, max
|
|
|
1857
1857
|
const none = (reason) => ({ pin: false, index: -1, band: null, reason });
|
|
1858
1858
|
if (!isFinite(viewportH) || viewportH <= 0) return none("unmeasurable");
|
|
1859
1859
|
let sawAxis = false, best = null;
|
|
1860
|
-
for (const
|
|
1861
|
-
if (!
|
|
1860
|
+
for (const c2 of candidates || []) {
|
|
1861
|
+
if (!c2 || !c2.labels || c2.labels.length < minLabels) continue;
|
|
1862
1862
|
sawAxis = true;
|
|
1863
|
-
if (!isHorizontalLabelRow(
|
|
1864
|
-
if (!best ||
|
|
1863
|
+
if (!isHorizontalLabelRow(c2.labels)) continue;
|
|
1864
|
+
if (!best || c2.labels.length > best.labels.length) best = c2;
|
|
1865
1865
|
}
|
|
1866
1866
|
if (!best) return none(sawAxis ? "vertical-only" : "no-axis");
|
|
1867
1867
|
const band = labelBand(best.labels, best.tracks || []);
|
|
@@ -1881,8 +1881,8 @@ function axisPinPlacement(band, scrollTop, viewportH) {
|
|
|
1881
1881
|
var FIT_WALK_CAP = 8e3;
|
|
1882
1882
|
function ctmScaleOf(m) {
|
|
1883
1883
|
if (!m) return 0;
|
|
1884
|
-
const
|
|
1885
|
-
return isFinite(
|
|
1884
|
+
const s2 = Math.hypot(m.a, m.b);
|
|
1885
|
+
return isFinite(s2) && s2 > 0 ? s2 : 0;
|
|
1886
1886
|
}
|
|
1887
1887
|
function svgInkReach(svg) {
|
|
1888
1888
|
try {
|
|
@@ -1890,8 +1890,8 @@ function svgInkReach(svg) {
|
|
|
1890
1890
|
if (!(box.width > 0) || !(box.height > 0)) return null;
|
|
1891
1891
|
const els = svg.querySelectorAll(FIT_CONTENT_SELECTOR);
|
|
1892
1892
|
let right = -Infinity, bottom = -Infinity, seen = 0;
|
|
1893
|
-
for (let
|
|
1894
|
-
const r = els[
|
|
1893
|
+
for (let i = 0; i < els.length && seen < FIT_WALK_CAP; i++) {
|
|
1894
|
+
const r = els[i].getBoundingClientRect();
|
|
1895
1895
|
if (r.width <= 0 && r.height <= 0) continue;
|
|
1896
1896
|
if (isPhantomBox(r.width, r.height, box.width, box.height)) continue;
|
|
1897
1897
|
seen++;
|
|
@@ -1904,13 +1904,13 @@ function svgInkReach(svg) {
|
|
|
1904
1904
|
return null;
|
|
1905
1905
|
}
|
|
1906
1906
|
}
|
|
1907
|
-
function measureContainerBoxes(
|
|
1907
|
+
function measureContainerBoxes(c2, inkOf) {
|
|
1908
1908
|
const boxes = [];
|
|
1909
|
-
if (!
|
|
1910
|
-
const view =
|
|
1911
|
-
const cRect =
|
|
1912
|
-
for (let
|
|
1913
|
-
const el =
|
|
1909
|
+
if (!c2 || !c2.children) return boxes;
|
|
1910
|
+
const view = c2.ownerDocument && c2.ownerDocument.defaultView || globalThis;
|
|
1911
|
+
const cRect = c2.getBoundingClientRect();
|
|
1912
|
+
for (let i = 0; i < c2.children.length; i++) {
|
|
1913
|
+
const el = c2.children[i];
|
|
1914
1914
|
let floating = false;
|
|
1915
1915
|
try {
|
|
1916
1916
|
const cs = view.getComputedStyle(el);
|
|
@@ -1919,14 +1919,14 @@ function measureContainerBoxes(c, inkOf) {
|
|
|
1919
1919
|
} catch {
|
|
1920
1920
|
}
|
|
1921
1921
|
const r = el.getBoundingClientRect();
|
|
1922
|
-
let right = r.right - cRect.left -
|
|
1923
|
-
let bottom = r.bottom - cRect.top -
|
|
1922
|
+
let right = r.right - cRect.left - c2.clientLeft + c2.scrollLeft;
|
|
1923
|
+
let bottom = r.bottom - cRect.top - c2.clientTop + c2.scrollTop;
|
|
1924
1924
|
if (inkOf) {
|
|
1925
1925
|
try {
|
|
1926
1926
|
const ink = inkOf(el);
|
|
1927
1927
|
if (ink) {
|
|
1928
|
-
const originX = r.left - cRect.left -
|
|
1929
|
-
const originY = r.top - cRect.top -
|
|
1928
|
+
const originX = r.left - cRect.left - c2.clientLeft + c2.scrollLeft;
|
|
1929
|
+
const originY = r.top - cRect.top - c2.clientTop + c2.scrollTop;
|
|
1930
1930
|
if (isFinite(ink.right)) right = Math.max(right, originX + ink.right);
|
|
1931
1931
|
if (isFinite(ink.bottom)) bottom = Math.max(bottom, originY + ink.bottom);
|
|
1932
1932
|
}
|
|
@@ -1937,14 +1937,14 @@ function measureContainerBoxes(c, inkOf) {
|
|
|
1937
1937
|
}
|
|
1938
1938
|
return boxes;
|
|
1939
1939
|
}
|
|
1940
|
-
function fitReadingFor(lane,
|
|
1941
|
-
if (!
|
|
1942
|
-
const viewW =
|
|
1940
|
+
function fitReadingFor(lane, c2, slackPx = SCROLL_SLACK_PX, inkOf) {
|
|
1941
|
+
if (!c2) return null;
|
|
1942
|
+
const viewW = c2.clientWidth, viewH = c2.clientHeight;
|
|
1943
1943
|
if (!(viewW > 0) || !(viewH > 0)) return null;
|
|
1944
|
-
const boxes = measureContainerBoxes(
|
|
1944
|
+
const boxes = measureContainerBoxes(c2, inkOf);
|
|
1945
1945
|
const extent = contentExtentOf(boxes);
|
|
1946
|
-
const contentW = extent.source === "none" ?
|
|
1947
|
-
const contentH = extent.source === "none" ?
|
|
1946
|
+
const contentW = extent.source === "none" ? c2.scrollWidth : extent.w;
|
|
1947
|
+
const contentH = extent.source === "none" ? c2.scrollHeight : extent.h;
|
|
1948
1948
|
if (!isFinite(contentW) || !isFinite(contentH)) return null;
|
|
1949
1949
|
return {
|
|
1950
1950
|
lane,
|
|
@@ -1957,8 +1957,8 @@ function fitReadingFor(lane, c, slackPx = SCROLL_SLACK_PX, inkOf) {
|
|
|
1957
1957
|
extentSource: extent.source,
|
|
1958
1958
|
boxes: boxes.length,
|
|
1959
1959
|
floating: boxes.filter((b2) => b2.floating).length,
|
|
1960
|
-
scrollW:
|
|
1961
|
-
scrollH:
|
|
1960
|
+
scrollW: c2.scrollWidth,
|
|
1961
|
+
scrollH: c2.scrollHeight
|
|
1962
1962
|
};
|
|
1963
1963
|
}
|
|
1964
1964
|
var noPin = (reason) => ({ pinned: false, reason, bandPx: 0, axisAt: "", labels: 0, carried: 0, edge: null });
|
|
@@ -1994,8 +1994,8 @@ function textHidden(t, view) {
|
|
|
1994
1994
|
function backdropFill(svg, container, view, svgBox) {
|
|
1995
1995
|
try {
|
|
1996
1996
|
const rects = svg.querySelectorAll("rect");
|
|
1997
|
-
for (let
|
|
1998
|
-
const r = rects[
|
|
1997
|
+
for (let i = 0; i < rects.length && i < 6; i++) {
|
|
1998
|
+
const r = rects[i];
|
|
1999
1999
|
if (r.closest(".d3-mark")) continue;
|
|
2000
2000
|
const b2 = r.getBoundingClientRect();
|
|
2001
2001
|
if (b2.width >= svgBox.width * 0.9 && b2.height >= svgBox.height * 0.9) {
|
|
@@ -2030,13 +2030,13 @@ function cloneWithChain(el, svg, root) {
|
|
|
2030
2030
|
}
|
|
2031
2031
|
let parent = root;
|
|
2032
2032
|
for (const anc of chain) {
|
|
2033
|
-
const
|
|
2034
|
-
parent.appendChild(
|
|
2035
|
-
parent =
|
|
2033
|
+
const c2 = anc.cloneNode(false);
|
|
2034
|
+
parent.appendChild(c2);
|
|
2035
|
+
parent = c2;
|
|
2036
2036
|
}
|
|
2037
2037
|
parent.appendChild(el.cloneNode(true));
|
|
2038
2038
|
const ids = root.querySelectorAll("[id]");
|
|
2039
|
-
for (let
|
|
2039
|
+
for (let i = 0; i < ids.length; i++) ids[i].removeAttribute("id");
|
|
2040
2040
|
}
|
|
2041
2041
|
function pinScrolledAxis(container, svg) {
|
|
2042
2042
|
unpinScrolledAxis(container);
|
|
@@ -2054,8 +2054,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2054
2054
|
const rel = (r) => ({ left: r.left - svgBox.left, top: r.top - svgBox.top, right: r.right - svgBox.left, bottom: r.bottom - svgBox.top });
|
|
2055
2055
|
const ticks = svg.querySelectorAll(".tick");
|
|
2056
2056
|
const byAxis = /* @__PURE__ */ new Map();
|
|
2057
|
-
for (let
|
|
2058
|
-
const t = ticks[
|
|
2057
|
+
for (let i = 0; i < ticks.length; i++) {
|
|
2058
|
+
const t = ticks[i];
|
|
2059
2059
|
if (t.closest("svg") !== svg) continue;
|
|
2060
2060
|
const p = t.parentElement;
|
|
2061
2061
|
if (!p) continue;
|
|
@@ -2075,8 +2075,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2075
2075
|
labels.push(rel(r));
|
|
2076
2076
|
}
|
|
2077
2077
|
const tracks = [];
|
|
2078
|
-
for (let
|
|
2079
|
-
const ch = axis2.children[
|
|
2078
|
+
for (let i = 0; i < axis2.children.length; i++) {
|
|
2079
|
+
const ch = axis2.children[i];
|
|
2080
2080
|
if (ch.tagName.toLowerCase() !== "path" || !(ch.getAttribute("class") || "").split(/\s+/).includes("domain")) continue;
|
|
2081
2081
|
const r = ch.getBoundingClientRect();
|
|
2082
2082
|
if (r.width > 0 && r.height <= 4) tracks.push(rel(r));
|
|
@@ -2092,8 +2092,8 @@ function pinScrolledAxis(container, svg) {
|
|
|
2092
2092
|
if (!(bandPx > 0)) return noPin("unmeasurable");
|
|
2093
2093
|
const carried = [];
|
|
2094
2094
|
const texts = svg.querySelectorAll("text");
|
|
2095
|
-
for (let
|
|
2096
|
-
const t = texts[
|
|
2095
|
+
for (let i = 0; i < texts.length && carried.length < AXIS_PIN_MAX_CARRIED; i++) {
|
|
2096
|
+
const t = texts[i];
|
|
2097
2097
|
if (t.closest("svg") !== svg) continue;
|
|
2098
2098
|
if (t.closest(".tick") || t.closest(".d3-mark") || t.closest(".d3-legend-mark")) continue;
|
|
2099
2099
|
if (axis.contains(t) || textHidden(t, view)) continue;
|
|
@@ -2102,12 +2102,12 @@ function pinScrolledAxis(container, svg) {
|
|
|
2102
2102
|
if (r.top >= band.top && r.bottom <= band.bottom) carried.push(t);
|
|
2103
2103
|
}
|
|
2104
2104
|
const pinSvg = doc.createElementNS(SVG_NS2, "svg");
|
|
2105
|
-
for (const
|
|
2106
|
-
const v3 = svg.getAttribute(
|
|
2107
|
-
if (v3) pinSvg.setAttribute(
|
|
2105
|
+
for (const a4 of ["font-family", "font-size", "font-weight", "font", "fill", "color", "text-rendering"]) {
|
|
2106
|
+
const v3 = svg.getAttribute(a4);
|
|
2107
|
+
if (v3) pinSvg.setAttribute(a4, v3);
|
|
2108
2108
|
}
|
|
2109
2109
|
const styles = svg.querySelectorAll("style");
|
|
2110
|
-
for (let
|
|
2110
|
+
for (let i = 0; i < styles.length; i++) pinSvg.appendChild(styles[i].cloneNode(true));
|
|
2111
2111
|
const vbX = (svgBox.left - m.e) / m.a, vbY = (svgBox.top + band.top - m.f) / m.d;
|
|
2112
2112
|
const vbW = svgBox.width / m.a, vbH = bandPx / m.d;
|
|
2113
2113
|
pinSvg.setAttribute("viewBox", `${vbX} ${vbY} ${vbW} ${vbH}`);
|
|
@@ -2128,17 +2128,17 @@ function pinScrolledAxis(container, svg) {
|
|
|
2128
2128
|
for (const t of carried) cloneWithChain(t, svg, pinSvg);
|
|
2129
2129
|
const overlay = doc.createElement("div");
|
|
2130
2130
|
overlay.setAttribute("data-bic-axis-pin", "1");
|
|
2131
|
-
const
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2131
|
+
const o = overlay.style;
|
|
2132
|
+
o.position = "absolute";
|
|
2133
|
+
o.margin = "0";
|
|
2134
|
+
o.padding = "0";
|
|
2135
|
+
o.border = "0";
|
|
2136
|
+
o.width = `${svgBox.width}px`;
|
|
2137
|
+
o.height = `${bandPx}px`;
|
|
2138
|
+
o.overflow = "hidden";
|
|
2139
|
+
o.pointerEvents = "none";
|
|
2140
|
+
o.zIndex = "3";
|
|
2141
|
+
o.display = "none";
|
|
2142
2142
|
overlay.appendChild(pinSvg);
|
|
2143
2143
|
try {
|
|
2144
2144
|
const cs = view.getComputedStyle(container);
|
|
@@ -2155,12 +2155,12 @@ function pinScrolledAxis(container, svg) {
|
|
|
2155
2155
|
const st = container.scrollTop, vh = container.clientHeight;
|
|
2156
2156
|
const edge2 = axisPinPlacement(contentBand, st, vh);
|
|
2157
2157
|
if (!edge2) {
|
|
2158
|
-
|
|
2158
|
+
o.display = "none";
|
|
2159
2159
|
return null;
|
|
2160
2160
|
}
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2161
|
+
o.display = "block";
|
|
2162
|
+
o.left = `${svgLeft}px`;
|
|
2163
|
+
o.top = `${edge2 === "top" ? st : st + vh - bandPx}px`;
|
|
2164
2164
|
return edge2;
|
|
2165
2165
|
};
|
|
2166
2166
|
const onScroll = () => {
|
|
@@ -2207,8 +2207,8 @@ function fitRenderedChart(container, opts = {}) {
|
|
|
2207
2207
|
if (!container) return result;
|
|
2208
2208
|
try {
|
|
2209
2209
|
let svg = null;
|
|
2210
|
-
for (let
|
|
2211
|
-
const el = container.children[
|
|
2210
|
+
for (let i = 0; i < container.children.length && !svg; i++) {
|
|
2211
|
+
const el = container.children[i];
|
|
2212
2212
|
if (el.tagName && el.tagName.toLowerCase() === "svg") svg = el;
|
|
2213
2213
|
}
|
|
2214
2214
|
if (!svg) svg = container.querySelector("svg");
|
|
@@ -2280,12 +2280,12 @@ function fitRenderedChart(container, opts = {}) {
|
|
|
2280
2280
|
}
|
|
2281
2281
|
|
|
2282
2282
|
// src/labelContrast.ts
|
|
2283
|
-
function parseRGBA(
|
|
2284
|
-
if (typeof
|
|
2285
|
-
const
|
|
2286
|
-
const m =
|
|
2283
|
+
function parseRGBA(c2) {
|
|
2284
|
+
if (typeof c2 !== "string") return null;
|
|
2285
|
+
const s2 = c2.trim();
|
|
2286
|
+
const m = s2.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/i);
|
|
2287
2287
|
if (m) return [parseFloat(m[1]), parseFloat(m[2]), parseFloat(m[3]), m[4] !== void 0 ? parseFloat(m[4]) : 1];
|
|
2288
|
-
let h2 =
|
|
2288
|
+
let h2 = s2.replace(/^#/, "");
|
|
2289
2289
|
if (h2.length === 3) h2 = h2.split("").map((ch) => ch + ch).join("");
|
|
2290
2290
|
if (h2.length === 6 && /^[0-9a-fA-F]{6}$/.test(h2)) {
|
|
2291
2291
|
return [parseInt(h2.slice(0, 2), 16), parseInt(h2.slice(2, 4), 16), parseInt(h2.slice(4, 6), 16), 1];
|
|
@@ -2299,8 +2299,8 @@ var WHITE_TEXT_BG_LUM = 0.5;
|
|
|
2299
2299
|
var PILL_MIN_ALPHA = 0.05;
|
|
2300
2300
|
var PILL_OPAQUE_ALPHA = 0.85;
|
|
2301
2301
|
var PAGE_MATCH_TOLERANCE = 2;
|
|
2302
|
-
function isPillBackdropAlpha(
|
|
2303
|
-
return
|
|
2302
|
+
function isPillBackdropAlpha(a4) {
|
|
2303
|
+
return a4 >= PILL_MIN_ALPHA && a4 < PILL_OPAQUE_ALPHA;
|
|
2304
2304
|
}
|
|
2305
2305
|
var PILL_MIN_COVERAGE = 0.6;
|
|
2306
2306
|
function pillBacksGlyph(overlapArea, glyphArea) {
|
|
@@ -2321,24 +2321,24 @@ var NAMED = {
|
|
|
2321
2321
|
none: [0, 0, 0, 0],
|
|
2322
2322
|
transparent: [0, 0, 0, 0]
|
|
2323
2323
|
};
|
|
2324
|
-
function toRGBA(
|
|
2325
|
-
if (typeof
|
|
2326
|
-
const k2 =
|
|
2324
|
+
function toRGBA(c2) {
|
|
2325
|
+
if (typeof c2 !== "string") return null;
|
|
2326
|
+
const k2 = c2.trim().toLowerCase();
|
|
2327
2327
|
if (k2 in NAMED) return NAMED[k2];
|
|
2328
|
-
return parseRGBA(
|
|
2328
|
+
return parseRGBA(c2);
|
|
2329
2329
|
}
|
|
2330
2330
|
function compositeOver(fg, bg) {
|
|
2331
|
-
const
|
|
2331
|
+
const a4 = Math.max(0, Math.min(1, fg[3]));
|
|
2332
2332
|
return [
|
|
2333
|
-
Math.round(fg[0] *
|
|
2334
|
-
Math.round(fg[1] *
|
|
2335
|
-
Math.round(fg[2] *
|
|
2333
|
+
Math.round(fg[0] * a4 + bg[0] * (1 - a4)),
|
|
2334
|
+
Math.round(fg[1] * a4 + bg[1] * (1 - a4)),
|
|
2335
|
+
Math.round(fg[2] * a4 + bg[2] * (1 - a4))
|
|
2336
2336
|
];
|
|
2337
2337
|
}
|
|
2338
2338
|
function relativeLuminance(rgb) {
|
|
2339
2339
|
const lin = rgb.map((v3) => {
|
|
2340
|
-
const
|
|
2341
|
-
return
|
|
2340
|
+
const s2 = v3 / 255;
|
|
2341
|
+
return s2 <= 0.03928 ? s2 / 12.92 : Math.pow((s2 + 0.055) / 1.055, 2.4);
|
|
2342
2342
|
});
|
|
2343
2343
|
return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2];
|
|
2344
2344
|
}
|
|
@@ -2375,10 +2375,10 @@ function glyphSampleGrid(box, n = GLYPH_SAMPLE_N) {
|
|
|
2375
2375
|
const out = [];
|
|
2376
2376
|
if (!box || !(box.width > 0) || !(box.height > 0) || !(n >= 1)) return out;
|
|
2377
2377
|
const k2 = Math.floor(n);
|
|
2378
|
-
for (let
|
|
2378
|
+
for (let i = 0; i < k2; i++) {
|
|
2379
2379
|
for (let j3 = 0; j3 < k2; j3++) {
|
|
2380
2380
|
out.push({
|
|
2381
|
-
x: box.left + box.width * (
|
|
2381
|
+
x: box.left + box.width * (i + 0.5) / k2,
|
|
2382
2382
|
y: box.top + box.height * (j3 + 0.5) / k2
|
|
2383
2383
|
});
|
|
2384
2384
|
}
|
|
@@ -2408,10 +2408,10 @@ function backedSamples(el, pts) {
|
|
|
2408
2408
|
if (pts.length === 0) return null;
|
|
2409
2409
|
const inv = m.inverse();
|
|
2410
2410
|
const hit = [];
|
|
2411
|
-
for (let
|
|
2411
|
+
for (let i = 0; i < pts.length; i++) {
|
|
2412
2412
|
const p = svg.createSVGPoint();
|
|
2413
|
-
p.x = pts[
|
|
2414
|
-
p.y = pts[
|
|
2413
|
+
p.x = pts[i].x;
|
|
2414
|
+
p.y = pts[i].y;
|
|
2415
2415
|
hit.push(ge2.isPointInFill(p.matrixTransform(inv)));
|
|
2416
2416
|
}
|
|
2417
2417
|
return hit;
|
|
@@ -2454,7 +2454,7 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
2454
2454
|
report.skipped = "too-many-shapes";
|
|
2455
2455
|
return report;
|
|
2456
2456
|
}
|
|
2457
|
-
for (let
|
|
2457
|
+
for (let i = 0; i < shapeEls.length; i++) pushShape(shapeEls[i]);
|
|
2458
2458
|
if (rects.length === 0) {
|
|
2459
2459
|
report.skipped = "no-shapes";
|
|
2460
2460
|
return report;
|
|
@@ -2463,8 +2463,8 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
2463
2463
|
const pageRGBA = toRGBA(pageBg) || [255, 255, 255, 1];
|
|
2464
2464
|
const pageRGB = [pageRGBA[0], pageRGBA[1], pageRGBA[2]];
|
|
2465
2465
|
const effAlpha = (mk) => {
|
|
2466
|
-
const
|
|
2467
|
-
return (
|
|
2466
|
+
const c2 = toRGBA(mk.fill);
|
|
2467
|
+
return (c2 ? c2[3] : 1) * mk.op;
|
|
2468
2468
|
};
|
|
2469
2469
|
const texts = container.querySelectorAll("text");
|
|
2470
2470
|
if (texts.length > CAP) {
|
|
@@ -2491,10 +2491,10 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
2491
2491
|
}
|
|
2492
2492
|
let inside = 0;
|
|
2493
2493
|
const paints = effAlpha(x2.mk) >= PILL_MIN_ALPHA;
|
|
2494
|
-
for (let
|
|
2495
|
-
if (!mask[
|
|
2494
|
+
for (let i = 0; i < mask.length; i++) {
|
|
2495
|
+
if (!mask[i]) continue;
|
|
2496
2496
|
inside++;
|
|
2497
|
-
if (paints) painted[
|
|
2497
|
+
if (paints) painted[i] = true;
|
|
2498
2498
|
}
|
|
2499
2499
|
return { mk: x2.mk, ov: glyphArea * (inside / mask.length) };
|
|
2500
2500
|
}).filter((x2) => x2.ov > 0);
|
|
@@ -2502,7 +2502,7 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
2502
2502
|
if (under.length === 0) continue;
|
|
2503
2503
|
if (unmeasured === 0 && pts.length > 0) {
|
|
2504
2504
|
let held = 0;
|
|
2505
|
-
for (let
|
|
2505
|
+
for (let i = 0; i < painted.length; i++) if (painted[i]) held++;
|
|
2506
2506
|
if (!backingHoldsGlyph(glyphArea * (held / pts.length), glyphArea)) {
|
|
2507
2507
|
report.pageMajority++;
|
|
2508
2508
|
continue;
|
|
@@ -2510,7 +2510,7 @@ function applyLabelContrast(container, opts = {}) {
|
|
|
2510
2510
|
}
|
|
2511
2511
|
report.scanned++;
|
|
2512
2512
|
const opaqueUnder = under.filter((x2) => effAlpha(x2.mk) >= PILL_OPAQUE_ALPHA);
|
|
2513
|
-
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((
|
|
2513
|
+
const cellEntry = (opaqueUnder.length ? opaqueUnder : under).reduce((a4, b2) => b2.ov > a4.ov || b2.ov === a4.ov && b2.mk.ord > a4.mk.ord ? b2 : a4);
|
|
2514
2514
|
const cell = cellEntry.mk;
|
|
2515
2515
|
const pill = under.find((x2) => x2.mk !== cell && isPillBackdropAlpha(effAlpha(x2.mk)) && x2.mk.ord > cell.ord && pillBacksGlyph(x2.ov, glyphArea))?.mk;
|
|
2516
2516
|
const cellRGBA = toRGBA(cell.fill);
|
|
@@ -2558,7 +2558,7 @@ function noopViewStateProvider() {
|
|
|
2558
2558
|
return { load: () => ({}), save: () => {
|
|
2559
2559
|
} };
|
|
2560
2560
|
}
|
|
2561
|
-
var parseRowIdxs = (
|
|
2561
|
+
var parseRowIdxs = (s2) => (s2 || "").split(",").map((x2) => parseInt(x2, 10)).filter((n) => Number.isFinite(n));
|
|
2562
2562
|
var D3_PLUGIN_PACKAGES = {
|
|
2563
2563
|
sankey: "d3-sankey",
|
|
2564
2564
|
sankeyLinkHorizontal: "d3-sankey",
|
|
@@ -2651,10 +2651,10 @@ function createChartHost(container, config) {
|
|
|
2651
2651
|
if (raw.uiState && typeof raw.uiState === "object" && Object.keys(bag).length === 0)
|
|
2652
2652
|
Object.assign(bag, raw.uiState);
|
|
2653
2653
|
raw.uiState = bag;
|
|
2654
|
-
raw.setUiState = (
|
|
2655
|
-
if (!
|
|
2654
|
+
raw.setUiState = (s2) => {
|
|
2655
|
+
if (!s2 || typeof s2 !== "object") return;
|
|
2656
2656
|
try {
|
|
2657
|
-
provider.save(
|
|
2657
|
+
provider.save(s2);
|
|
2658
2658
|
} catch {
|
|
2659
2659
|
}
|
|
2660
2660
|
};
|
|
@@ -2804,10 +2804,10 @@ function createChartHost(container, config) {
|
|
|
2804
2804
|
const fitOpts = config.fit ?? true;
|
|
2805
2805
|
const labelContrastOpts = config.labelContrast ?? true;
|
|
2806
2806
|
const stopAnim = () => {
|
|
2807
|
-
const
|
|
2808
|
-
if (typeof
|
|
2807
|
+
const s2 = container[CONTAINER_SLOT_ANIM_STOP];
|
|
2808
|
+
if (typeof s2 === "function") {
|
|
2809
2809
|
try {
|
|
2810
|
-
|
|
2810
|
+
s2();
|
|
2811
2811
|
} catch {
|
|
2812
2812
|
}
|
|
2813
2813
|
}
|
|
@@ -2822,8 +2822,8 @@ function createChartHost(container, config) {
|
|
|
2822
2822
|
renderFn = compileRenderFn(config.code, win, doc, d3);
|
|
2823
2823
|
}
|
|
2824
2824
|
if (resolved.geo === void 0 && config.geoKind) {
|
|
2825
|
-
const
|
|
2826
|
-
if (
|
|
2825
|
+
const g3 = config.geoProvider?.(config.geoKind) ?? geoFromCache(config.geoKind);
|
|
2826
|
+
if (g3) resolved = { ...resolved, geo: g3 };
|
|
2827
2827
|
else if (!warnedGeo) {
|
|
2828
2828
|
warnedGeo = true;
|
|
2829
2829
|
try {
|
|
@@ -2909,10 +2909,10 @@ function createChartHost(container, config) {
|
|
|
2909
2909
|
return () => subs.delete(cb);
|
|
2910
2910
|
},
|
|
2911
2911
|
clear() {
|
|
2912
|
-
const
|
|
2913
|
-
if (typeof
|
|
2912
|
+
const s2 = container[CONTAINER_SLOT_XF_CLEAR];
|
|
2913
|
+
if (typeof s2 === "function") {
|
|
2914
2914
|
try {
|
|
2915
|
-
|
|
2915
|
+
s2();
|
|
2916
2916
|
} catch {
|
|
2917
2917
|
}
|
|
2918
2918
|
}
|
|
@@ -2987,10 +2987,10 @@ export {
|
|
|
2987
2987
|
registerGeoAsset,
|
|
2988
2988
|
clearGeoCache,
|
|
2989
2989
|
L3,
|
|
2990
|
-
Nt,
|
|
2991
2990
|
Rt,
|
|
2992
|
-
|
|
2993
|
-
|
|
2991
|
+
vt,
|
|
2992
|
+
Ce,
|
|
2993
|
+
Ae,
|
|
2994
2994
|
buildRenderPayload,
|
|
2995
2995
|
createMarkResolver,
|
|
2996
2996
|
ensureCrossfilterHitTargets,
|