@xiee/utils 1.14.52 → 1.14.54
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/css/lt.css +1 -1
- package/css/lt.min.css +1 -1
- package/css/lt.min.css.map +1 -1
- package/js/lt.js +159 -221
- package/js/lt.min.js +1 -1
- package/js/lt.min.js.map +1 -1
- package/package.json +1 -1
package/css/lt.css
CHANGED
|
@@ -20,7 +20,7 @@ th, td{ padding: 5px; }
|
|
|
20
20
|
tbody {
|
|
21
21
|
:not(:last-child) :is(td, th) { border-bottom: 1px solid #ddd; }
|
|
22
22
|
.lt-row-group :is(td, th) { border-bottom: 1.5px solid #ddd; }
|
|
23
|
-
.lt-
|
|
23
|
+
.lt-row-group { text-align: left; }
|
|
24
24
|
.lt-row-group { vertical-align: top; }
|
|
25
25
|
}
|
|
26
26
|
thead th {
|
package/css/lt.min.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
th,td{padding:5px}.lt-table{--bg:4px solid transparent;border-collapse:separate;caption-side:top;border-spacing:0;border-top:1.5px solid #888;border-bottom:1.5px solid #888;margin:1em auto;& caption{text-align:center;padding:.5em;& .lt-title{font-size:1.2em}& .lt-subtitle{font-size:.9em}}& th{font-weight:400}& tbody{& :not(:last-child) :is(td,th){border-bottom:1px solid #ddd}& .lt-row-group :is(td,th){border-bottom:1.5px solid #ddd}& .lt-
|
|
1
|
+
th,td{padding:5px}.lt-table{--bg:4px solid transparent;border-collapse:separate;caption-side:top;border-spacing:0;border-top:1.5px solid #888;border-bottom:1.5px solid #888;margin:1em auto;& caption{text-align:center;padding:.5em;& .lt-title{font-size:1.2em}& .lt-subtitle{font-size:.9em}}& th{font-weight:400}& tbody{& :not(:last-child) :is(td,th){border-bottom:1px solid #ddd}& .lt-row-group :is(td,th){border-bottom:1.5px solid #ddd}& .lt-row-group{text-align:left;vertical-align:top}}& thead th{border-bottom:1px solid #888;&:not(:first-child){border-left:var(--bg)}&:not(:last-child){border-right:var(--bg)}}& .lt-indent{padding-left:1em}& .lt-spanner-row{& .lt-spanner{text-align:center;border-bottom:1px solid #bbb}& .lt-spanner-empty{border-bottom:none}}& .lt-footer{font-size:.85em;& .lt-footnote:first-child td{border-top:1px solid #aaa}& .lt-source-note:first-child td{border-top:1px dashed #aaa}& .lt-source-note td{font-style:italic}}& .al-r{text-align:right;white-space:nowrap}& .al-c{text-align:center}& .lt-fnref{color:#06c;&:before{content:" ["}&:after{content:"]"}}}
|
|
2
2
|
/*# sourceMappingURL=lt.min.css.map */
|
package/css/lt.min.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AAAA,kBACA,2KAUE,yCAGE,4BACA,+BAGF,qBACA,QACE,4DACA,0DACA,
|
|
1
|
+
{"version":3,"mappings":"AAAA,kBACA,2KAUE,yCAGE,4BACA,+BAGF,qBACA,QACE,4DACA,0DACA,oDAGF,wCAEE,0CACA,2CAEF,8BACA,kBACE,6DACA,wCAGF,6BAEE,wDACA,4DACA,wCAGF,4CACA,0BAEA,uBAEE,sBACA","sources":["lt.css"],"sourcesContent":["th, td{ padding: 5px; }\n.lt-table {\n --bg: 4px solid transparent;\n\n border-collapse: separate;\n caption-side: top;\n margin: 1em auto;\n border-spacing: 0;\n border-top: 1.5px solid #888;\n border-bottom: 1.5px solid #888;\n\n caption {\n padding: .5em;\n text-align: center;\n .lt-title { font-size: 1.2em; }\n .lt-subtitle { font-size: 0.9em; }\n }\n\n th { font-weight: normal; }\n tbody {\n :not(:last-child) :is(td, th) { border-bottom: 1px solid #ddd; }\n .lt-row-group :is(td, th) { border-bottom: 1.5px solid #ddd; }\n .lt-row-group { text-align: left; }\n .lt-row-group { vertical-align: top; }\n }\n thead th {\n border-bottom: 1px solid #888;\n &:not(:first-child) { border-left: var(--bg); }\n &:not(:last-child) { border-right: var(--bg); }\n }\n .lt-indent { padding-left: 1em; }\n .lt-spanner-row {\n .lt-spanner { border-bottom: 1px solid #bbb; text-align: center; }\n .lt-spanner-empty { border-bottom: none; }\n }\n\n .lt-footer {\n font-size: 0.85em;\n .lt-footnote:first-child td { border-top: 1px solid #aaa; }\n .lt-source-note:first-child td { border-top: 1px dashed #aaa; }\n .lt-source-note td { font-style: italic; }\n }\n\n .al-r { text-align: right; white-space: nowrap; }\n .al-c { text-align: center; }\n\n .lt-fnref {\n color: #06c;\n &::before { content: \" [\"; }\n &::after { content: \"]\"; }\n }\n}\n"],"names":[]}
|
package/js/lt.js
CHANGED
|
@@ -4,19 +4,23 @@
|
|
|
4
4
|
*/
|
|
5
5
|
(root => {
|
|
6
6
|
"use strict";
|
|
7
|
-
if (root.LT
|
|
7
|
+
if (root.LT?.buildHtml) return; // duplicate inclusion is a no-op
|
|
8
8
|
|
|
9
9
|
// `[<]` (not `<`) avoids `</…` so this file is safe to inline in <script>.
|
|
10
10
|
const esc = s => String(s)
|
|
11
11
|
.replace(/&/g, "&").replace(/[<]/g, "<")
|
|
12
12
|
.replace(/>/g, ">").replace(/"/g, """);
|
|
13
13
|
const sup = i => `<sup class="lt-fnref">${i}</sup>`;
|
|
14
|
+
// Stringify, mapping null/undefined to "" (0 and false stringify normally).
|
|
15
|
+
const str = v => String(v ?? "");
|
|
14
16
|
|
|
15
17
|
// --- Number formatting ---
|
|
16
18
|
const isNum = v => typeof v === "number" && !isNaN(v);
|
|
19
|
+
// A column is "numeric" if its first non-null value is a number.
|
|
20
|
+
const numCol = col => col?.length && typeof col.find(v => v != null) === "number";
|
|
17
21
|
|
|
18
22
|
function fmtNumber(v, decimals, bigMark) {
|
|
19
|
-
if (
|
|
23
|
+
if (!isNum(v)) return null;
|
|
20
24
|
let s = decimals != null ? v.toFixed(decimals) : String(v);
|
|
21
25
|
if (/^-0(\.0+)?$/.test(s)) s = s.slice(1);
|
|
22
26
|
if (bigMark) {
|
|
@@ -63,7 +67,7 @@
|
|
|
63
67
|
|
|
64
68
|
const getLabel = c => {
|
|
65
69
|
for (const op of ops) {
|
|
66
|
-
if (op.type === "label" && op.labels
|
|
70
|
+
if (op.type === "label" && op.labels?.[c] != null) return op.labels[c];
|
|
67
71
|
}
|
|
68
72
|
return c;
|
|
69
73
|
};
|
|
@@ -71,8 +75,7 @@
|
|
|
71
75
|
for (const c of colNames) {
|
|
72
76
|
if (fmtCols.has(c)) continue;
|
|
73
77
|
const col = data[c];
|
|
74
|
-
if (!col
|
|
75
|
-
if (typeof col.find(v => v != null) !== "number") continue;
|
|
78
|
+
if (!numCol(col)) continue;
|
|
76
79
|
|
|
77
80
|
const lbl = getLabel(c),
|
|
78
81
|
pct = /%|[ _](pct|percent)$/i.test(lbl);
|
|
@@ -96,8 +99,9 @@
|
|
|
96
99
|
const d = m[1].replace(/0+$/, "").length - (pct ? 2 : 0);
|
|
97
100
|
if (d > n) n = d;
|
|
98
101
|
}
|
|
99
|
-
// Cap: 4 decimals max, minus integer width (so large numbers get fewer)
|
|
100
|
-
|
|
102
|
+
// Cap: 4 decimals max, minus integer width (so large numbers get fewer).
|
|
103
|
+
// n is already >= 0, so only the upper cap is needed.
|
|
104
|
+
n = Math.min(n, Math.max(4 - maxInt, 0));
|
|
101
105
|
|
|
102
106
|
for (let i = 0; i < nRow; i++) {
|
|
103
107
|
const v = col[i];
|
|
@@ -118,50 +122,50 @@
|
|
|
118
122
|
// Working copy: display[col][row] = string
|
|
119
123
|
const display = {};
|
|
120
124
|
for (const c of colNames) {
|
|
121
|
-
display[c] = data[c].map(
|
|
125
|
+
display[c] = data[c].map(str);
|
|
122
126
|
}
|
|
123
127
|
|
|
124
128
|
autoFmt(spec, display, nRow);
|
|
125
129
|
|
|
130
|
+
// Run fn(col, row, rawValue) over each existing cell of the given columns.
|
|
131
|
+
const eachCell = (cols, fn) => {
|
|
132
|
+
for (const c of cols) {
|
|
133
|
+
if (!data[c]) continue;
|
|
134
|
+
for (let i = 0; i < nRow; i++) fn(c, i, data[c][i]);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
126
138
|
for (const op of ops) {
|
|
127
139
|
const cols = op.columns || colNames;
|
|
128
140
|
switch (op.type) {
|
|
129
141
|
case "fmt_number":
|
|
130
|
-
|
|
131
|
-
if (!
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (f != null) display[c][i] = f + sfx;
|
|
139
|
-
else if (sfx) display[c][i] = String(v) + sfx;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
+
eachCell(cols, (c, i, raw) => {
|
|
143
|
+
if (!isNum(raw)) return;
|
|
144
|
+
const v = op.percent === true ? raw * 100 : raw,
|
|
145
|
+
sfx = op.percent ? "%" : "",
|
|
146
|
+
f = fmtNumber(v, op.decimals, op.big_mark ?? "");
|
|
147
|
+
if (f != null) display[c][i] = f + sfx;
|
|
148
|
+
else if (sfx) display[c][i] = String(v) + sfx;
|
|
149
|
+
});
|
|
142
150
|
break;
|
|
143
151
|
case "sub":
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
display[c][i] = op.zero;
|
|
153
|
-
} else if (op.missing != null && raw == null) {
|
|
154
|
-
display[c][i] = op.missing;
|
|
155
|
-
}
|
|
152
|
+
eachCell(cols, (c, i, raw) => {
|
|
153
|
+
if (op.small != null && isNum(raw) && raw !== 0 &&
|
|
154
|
+
Math.abs(raw) < op.small) {
|
|
155
|
+
display[c][i] = op.small_text ?? ("<" + op.small);
|
|
156
|
+
} else if (op.zero != null && raw === 0) {
|
|
157
|
+
display[c][i] = op.zero;
|
|
158
|
+
} else if (op.missing != null && raw == null) {
|
|
159
|
+
display[c][i] = op.missing;
|
|
156
160
|
}
|
|
157
|
-
}
|
|
161
|
+
});
|
|
158
162
|
break;
|
|
159
163
|
case "merge": {
|
|
160
164
|
const mCols = op.columns;
|
|
161
165
|
if (!mCols || mCols.length < 2) break;
|
|
162
166
|
const target = mCols[0];
|
|
163
167
|
for (let i = 0; i < nRow; i++) {
|
|
164
|
-
const vals = mCols.map(c => display[c]
|
|
168
|
+
const vals = mCols.map(c => display[c]?.[i] ?? "");
|
|
165
169
|
display[target][i] = mergeVals(vals, op.pattern);
|
|
166
170
|
}
|
|
167
171
|
break;
|
|
@@ -176,33 +180,32 @@
|
|
|
176
180
|
const data = spec.data || {},
|
|
177
181
|
ops = spec.ops || [],
|
|
178
182
|
colNames = Object.keys(data),
|
|
179
|
-
nRow = colNames.length ? data[colNames[0]].length : 0
|
|
183
|
+
nRow = colNames.length ? data[colNames[0]].length : 0,
|
|
184
|
+
// Run fn on each op of the given type, in document order.
|
|
185
|
+
onOp = (t, fn) => { for (const op of ops) if (op.type === t) fn(op); };
|
|
180
186
|
|
|
181
187
|
// row_group: array → rowspan mode; string → separator-row mode
|
|
182
188
|
let rowGroupSep = typeof spec.row_group === "string";
|
|
183
189
|
const rowGroupCols = Array.isArray(spec.row_group) ? spec.row_group
|
|
184
|
-
: (spec.row_group ? [spec.row_group] : [])
|
|
185
|
-
rowLabelCol = spec.row_label || null;
|
|
190
|
+
: (spec.row_group ? [spec.row_group] : []);
|
|
186
191
|
if (!rowGroupSep && rowGroupCols.length === 1 &&
|
|
187
192
|
data[rowGroupCols[0]]?.some(v => (v + "").length > 20)) rowGroupSep = true;
|
|
188
193
|
|
|
189
|
-
// Hidden columns: row_group,
|
|
194
|
+
// Hidden columns: row_group, merge sources
|
|
190
195
|
const hidden = new Set();
|
|
191
196
|
for (const g of rowGroupCols) hidden.add(g);
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (op.type === "merge" && op.hide !== false && op.columns)
|
|
197
|
+
onOp("merge", op => {
|
|
198
|
+
if (op.hide !== false && op.columns)
|
|
195
199
|
op.columns.slice(1).forEach(c => hidden.add(c));
|
|
196
|
-
}
|
|
200
|
+
});
|
|
197
201
|
|
|
198
202
|
// Visible columns after hiding
|
|
199
203
|
let visible = colNames.filter(c => !hidden.has(c));
|
|
200
204
|
|
|
201
205
|
// Apply move
|
|
202
|
-
|
|
203
|
-
if (op.type !== "move") continue;
|
|
206
|
+
onOp("move", op => {
|
|
204
207
|
const toMove = (op.columns || []).filter(c => visible.includes(c));
|
|
205
|
-
if (!toMove.length)
|
|
208
|
+
if (!toMove.length) return;
|
|
206
209
|
const rest = visible.filter(c => !toMove.includes(c));
|
|
207
210
|
if (op.after == null) {
|
|
208
211
|
visible = [...toMove, ...rest];
|
|
@@ -210,132 +213,80 @@
|
|
|
210
213
|
const pos = rest.indexOf(op.after);
|
|
211
214
|
if (pos >= 0) visible = [...rest.slice(0, pos + 1), ...toMove, ...rest.slice(pos + 1)];
|
|
212
215
|
}
|
|
213
|
-
}
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
// Set arr[i] = val where i is the position of column c in `visible`.
|
|
219
|
+
const setByCol = (arr, c, val) => { const i = visible.indexOf(c); if (i >= 0) arr[i] = val; };
|
|
214
220
|
|
|
215
221
|
// Alignment: default from data type (number→right, else left), then overrides
|
|
216
|
-
const align = visible.map(c =>
|
|
217
|
-
|
|
218
|
-
return col && col.length && typeof col.find(v => v != null) === "number" ? "right" : "left";
|
|
219
|
-
});
|
|
220
|
-
for (const op of ops) {
|
|
221
|
-
if (op.type !== "align") continue;
|
|
222
|
-
for (const c of (op.columns || [])) {
|
|
223
|
-
const i = visible.indexOf(c);
|
|
224
|
-
if (i >= 0) align[i] = op.align;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
222
|
+
const align = visible.map(c => numCol(data[c]) ? "right" : "left");
|
|
223
|
+
onOp("align", op => { for (const c of (op.columns || [])) setByCol(align, c, op.align); });
|
|
227
224
|
|
|
228
225
|
// Column labels
|
|
229
226
|
const colLabels = [...visible];
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const i = visible.indexOf(c);
|
|
234
|
-
if (i >= 0) colLabels[i] = lbl;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
227
|
+
onOp("label", op => {
|
|
228
|
+
for (const [c, lbl] of Object.entries(op.labels || {})) setByCol(colLabels, c, lbl);
|
|
229
|
+
});
|
|
237
230
|
|
|
238
231
|
// Column widths
|
|
239
232
|
let colWidths = null;
|
|
240
|
-
|
|
241
|
-
if (
|
|
233
|
+
onOp("width", op => {
|
|
234
|
+
if (!op.widths) return;
|
|
242
235
|
if (!colWidths) colWidths = visible.map(() => "");
|
|
243
|
-
for (const [c, w] of Object.entries(op.widths))
|
|
244
|
-
|
|
245
|
-
if (i >= 0) colWidths[i] = w;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
236
|
+
for (const [c, w] of Object.entries(op.widths)) setByCol(colWidths, c, w);
|
|
237
|
+
});
|
|
248
238
|
|
|
249
239
|
// Indent
|
|
250
240
|
const indent = new Array(nRow).fill(0);
|
|
251
|
-
|
|
252
|
-
if (op.
|
|
253
|
-
|
|
254
|
-
}
|
|
241
|
+
onOp("indent", op => {
|
|
242
|
+
if (op.rows) for (const r of op.rows) indent[r - 1] = op.level ?? 1;
|
|
243
|
+
});
|
|
255
244
|
|
|
256
|
-
//
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
245
|
+
// Runs of equal consecutive values in col → [{ label, rows (1-based) }].
|
|
246
|
+
// Used for both separator-row groups and rowspan span sizes.
|
|
247
|
+
const runs = col => {
|
|
248
|
+
const out = [];
|
|
249
|
+
for (let i = 0; i < nRow;) {
|
|
250
|
+
const label = str(col[i]), rows = [i + 1];
|
|
251
|
+
while (++i < nRow && str(col[i]) === label) rows.push(i + 1);
|
|
252
|
+
out.push({ label, rows });
|
|
253
|
+
}
|
|
254
|
+
return out;
|
|
255
|
+
};
|
|
261
256
|
|
|
262
257
|
// Row groups from data column (separator-row mode only)
|
|
263
258
|
let groups = [];
|
|
264
|
-
if (rowGroupSep && rowGroupCols.length && data[rowGroupCols[0]])
|
|
265
|
-
|
|
266
|
-
let i = 0;
|
|
267
|
-
while (i < nRow) {
|
|
268
|
-
const label = gCol[i] == null ? "" : String(gCol[i]);
|
|
269
|
-
const rows = [i + 1];
|
|
270
|
-
while (++i < nRow && String(gCol[i] ?? "") === label) rows.push(i + 1);
|
|
271
|
-
groups.push({ label, rows });
|
|
272
|
-
}
|
|
273
|
-
}
|
|
259
|
+
if (rowGroupSep && rowGroupCols.length && data[rowGroupCols[0]])
|
|
260
|
+
groups.push(...runs(data[rowGroupCols[0]]));
|
|
274
261
|
// Manual groups
|
|
275
|
-
|
|
276
|
-
if (op.type === "row_group") groups.push({ label: op.label, rows: op.rows });
|
|
277
|
-
}
|
|
262
|
+
onOp("row_group", op => groups.push({ label: op.label, rows: op.rows }));
|
|
278
263
|
// Group ordering
|
|
279
|
-
|
|
280
|
-
if (
|
|
281
|
-
const order = op.order || [];
|
|
264
|
+
onOp("group_order", op => {
|
|
265
|
+
if (!groups.length) return;
|
|
282
266
|
const ordered = [], rest = [];
|
|
283
|
-
for (const lbl of order) {
|
|
267
|
+
for (const lbl of (op.order || [])) {
|
|
284
268
|
const g = groups.find(x => x.label === lbl);
|
|
285
269
|
if (g) ordered.push(g);
|
|
286
270
|
}
|
|
287
271
|
for (const g of groups) if (!ordered.includes(g)) rest.push(g);
|
|
288
272
|
groups = [...ordered, ...rest];
|
|
289
|
-
}
|
|
273
|
+
});
|
|
290
274
|
|
|
291
275
|
// Rowspan groups: compute span sizes for each group column
|
|
292
276
|
const rowSpans = [];
|
|
293
277
|
if (!rowGroupSep && rowGroupCols.length) {
|
|
294
278
|
for (const gc of rowGroupCols) {
|
|
295
|
-
const
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
const label = String(col[i] ?? "");
|
|
299
|
-
let j = i + 1;
|
|
300
|
-
while (j < nRow && String(col[j] ?? "") === label) j++;
|
|
301
|
-
spans[i] = j - i;
|
|
302
|
-
i = j;
|
|
303
|
-
}
|
|
304
|
-
// Resolve display label from label ops
|
|
279
|
+
const spans = new Array(nRow).fill(0);
|
|
280
|
+
for (const r of runs(data[gc] || [])) spans[r.rows[0] - 1] = r.rows.length;
|
|
281
|
+
// Resolve display label from label ops (last wins)
|
|
305
282
|
let hdr = gc;
|
|
306
|
-
|
|
307
|
-
if (op.type === "label" && op.labels && op.labels[gc] != null) hdr = op.labels[gc];
|
|
308
|
-
}
|
|
283
|
+
onOp("label", op => { if (op.labels?.[gc] != null) hdr = op.labels[gc]; });
|
|
309
284
|
rowSpans.push({ col: gc, label: hdr, spans });
|
|
310
285
|
}
|
|
311
286
|
}
|
|
312
287
|
|
|
313
|
-
// Styles
|
|
314
|
-
const styles =
|
|
315
|
-
for (const op of ops) {
|
|
316
|
-
if (op.type !== "style") continue;
|
|
317
|
-
const s = {};
|
|
318
|
-
if (op.css) s.css = op.css;
|
|
319
|
-
if (op.class) s.class = op.class;
|
|
320
|
-
if (op.columns) s.columns = op.columns;
|
|
321
|
-
if (op.rows) s.rows = op.rows;
|
|
322
|
-
if (op.test) s.test = op.test;
|
|
323
|
-
styles.push(s);
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
// Stub: explicit row_label, or auto-promote first visible non-numeric column when groups exist
|
|
327
|
-
const autoStub = groups.length && !rowLabelCol && visible.length
|
|
328
|
-
? visible.find(c => !data[c] || !data[c].length || typeof data[c].find(v => v != null) !== "number")
|
|
329
|
-
: null;
|
|
330
|
-
const stubCol = rowLabelCol || autoStub || null;
|
|
331
|
-
const stub = stubCol && data[stubCol]
|
|
332
|
-
? data[stubCol].map(v => v == null ? "" : String(v))
|
|
333
|
-
: null;
|
|
334
|
-
if (stubCol && !rowLabelCol) {
|
|
335
|
-
align.shift(); colLabels.shift(); visible = visible.slice(1);
|
|
336
|
-
if (colWidths) colWidths.shift();
|
|
337
|
-
}
|
|
338
|
-
if (stubCol && !stubLabel) stubLabel = stubCol;
|
|
288
|
+
// Styles: the style ops are consumed directly (css/class/columns/rows/test).
|
|
289
|
+
const styles = ops.filter(op => op.type === "style");
|
|
339
290
|
|
|
340
291
|
// Auto-spanners: split column names on separator, group contiguous prefixes
|
|
341
292
|
let spanners = spec.spanners || [];
|
|
@@ -364,7 +315,7 @@
|
|
|
364
315
|
}
|
|
365
316
|
|
|
366
317
|
return {
|
|
367
|
-
visible, align, colLabels, colWidths, indent,
|
|
318
|
+
visible, align, colLabels, colWidths, indent,
|
|
368
319
|
groups, rowSpans, styles, spanners,
|
|
369
320
|
footnotes: spec.footnotes || [],
|
|
370
321
|
notes: spec.notes || [],
|
|
@@ -382,20 +333,21 @@
|
|
|
382
333
|
return { order, idx };
|
|
383
334
|
}
|
|
384
335
|
|
|
385
|
-
|
|
336
|
+
// Find the footnote index for a (type, value) location; 0 if none.
|
|
337
|
+
// `val` is a scalar: the title group, a single column, a spanner label,
|
|
338
|
+
// or a row-group label, depending on `type`.
|
|
339
|
+
const matcher = (fns, idx) => (type, val) => {
|
|
386
340
|
for (const f of fns) {
|
|
387
341
|
const loc = f.location;
|
|
388
342
|
if (loc.type !== type) continue;
|
|
389
343
|
const hit = idx[f.text];
|
|
390
|
-
if (type === "title" && loc.group ===
|
|
391
|
-
if (type === "column_labels" &&
|
|
392
|
-
|
|
393
|
-
if (type === "column_spanners" &&
|
|
394
|
-
p.spanners.every(s => loc.spanners.indexOf(s) >= 0)) return hit;
|
|
344
|
+
if (type === "title" && loc.group === val) return hit;
|
|
345
|
+
if (type === "column_labels" && loc.columns.includes(val)) return hit;
|
|
346
|
+
if (type === "column_spanners" && loc.spanners.includes(val)) return hit;
|
|
395
347
|
if (type === "row_groups") {
|
|
396
348
|
if (loc.match === "all") return hit;
|
|
397
|
-
if (loc.match === "exact" && loc.values.
|
|
398
|
-
if (loc.match === "starts_with" &&
|
|
349
|
+
if (loc.match === "exact" && loc.values.includes(val)) return hit;
|
|
350
|
+
if (loc.match === "starts_with" && val.startsWith(loc.value)) return hit;
|
|
399
351
|
}
|
|
400
352
|
}
|
|
401
353
|
return 0;
|
|
@@ -433,69 +385,73 @@
|
|
|
433
385
|
sortByGroups(spec);
|
|
434
386
|
const data = spec.data || {},
|
|
435
387
|
{ display, nRow } = applyOps(spec),
|
|
436
|
-
{ visible: cols, align, colLabels, colWidths, indent,
|
|
437
|
-
|
|
388
|
+
{ visible: cols, align, colLabels, colWidths, indent,
|
|
389
|
+
groups, rowSpans, styles, spanners, footnotes: fns, notes, header: hdr } = resolveSpec(spec),
|
|
438
390
|
reg = indexFootnotes(fns),
|
|
439
391
|
fIdx = matcher(fns, reg.idx),
|
|
440
392
|
nGrp = rowSpans.length,
|
|
441
|
-
nCol = cols.length +
|
|
393
|
+
nCol = cols.length + nGrp,
|
|
442
394
|
out = [`<table class="lt-table">`];
|
|
443
|
-
const mark = (type,
|
|
444
|
-
const
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
395
|
+
const mark = (type, val) => { const i = fIdx(type, val); return i ? sup(i) : ""; };
|
|
396
|
+
const cell = (c, r) => display[c]?.[r - 1] ?? "";
|
|
397
|
+
// ` name="val"` for a truthy val, else "" — for optional HTML attributes.
|
|
398
|
+
const attr = (n, v) => v ? ` ${n}="${v}"` : "";
|
|
399
|
+
// Plain class names per column (alignment + leading-indent), "" if none.
|
|
400
|
+
const colCls = cols.map((_, i) => (
|
|
401
|
+
(i === 0 && groups.length ? "lt-indent " : "") +
|
|
402
|
+
({right: "al-r", center: "al-c"}[align[i]] || "")
|
|
403
|
+
).trimEnd());
|
|
404
|
+
|
|
405
|
+
// Visit each cell at (rows × cols) that exists in the table, calling
|
|
406
|
+
// fn(key, c, r). rows null = all rows; cols falls back to all columns.
|
|
407
|
+
const eachLoc = (rows, locCols, fn) => {
|
|
454
408
|
for (let r = 1; r <= nRow; r++) {
|
|
455
|
-
if (
|
|
456
|
-
for (const c of
|
|
409
|
+
if (rows && !rows.includes(r)) continue;
|
|
410
|
+
for (const c of (locCols || cols)) {
|
|
457
411
|
const ci = cols.indexOf(c);
|
|
458
|
-
if (ci
|
|
459
|
-
if (s.test && !s.test(data[c][r - 1])) continue;
|
|
460
|
-
const key = `${r},${ci}`;
|
|
461
|
-
if (s.css) styleMap[key] = styleMap[key] ? styleMap[key] + ";" + s.css : s.css;
|
|
462
|
-
if (s.class) classMap[key] = classMap[key] ? classMap[key] + " " + s.class : s.class;
|
|
412
|
+
if (ci >= 0) fn(`${r},${ci}`, c, r);
|
|
463
413
|
}
|
|
464
414
|
}
|
|
465
|
-
}
|
|
415
|
+
};
|
|
416
|
+
|
|
417
|
+
// Style map: accumulate css (";") and class (" ") per cell.
|
|
418
|
+
const styleMap = {}, classMap = {};
|
|
419
|
+
const addTo = (map, key, val, sep) => { map[key] = map[key] ? map[key] + sep + val : val; };
|
|
420
|
+
for (const s of styles)
|
|
421
|
+
eachLoc(s.rows, s.columns ? [].concat(s.columns) : null, (key, c, r) => {
|
|
422
|
+
if (s.test && !s.test(data[c][r - 1])) return;
|
|
423
|
+
if (s.css) addTo(styleMap, key, s.css, ";");
|
|
424
|
+
if (s.class) addTo(classMap, key, s.class, " ");
|
|
425
|
+
});
|
|
466
426
|
|
|
467
427
|
// <colgroup>
|
|
468
428
|
if (colWidths && colWidths.some(w => w)) {
|
|
469
429
|
out.push(`<colgroup>`);
|
|
470
|
-
if (stub) out.push(`<col>`);
|
|
471
430
|
for (let i = 0; i < cols.length; i++)
|
|
472
|
-
out.push(colWidths[i] ?
|
|
431
|
+
out.push(`<col${attr("style", colWidths[i] ? "width:" + colWidths[i] : "")}>`);
|
|
473
432
|
out.push(`</colgroup>`);
|
|
474
433
|
}
|
|
475
434
|
|
|
476
|
-
// <caption>
|
|
477
|
-
const
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
if (hasS) out.push(`<div class="lt-subtitle">${esc(hdr.subtitle)}${mark("title", { group: "subtitle" })}</div>`);
|
|
483
|
-
out.push(`</caption>`);
|
|
484
|
-
}
|
|
435
|
+
// <caption>: title + subtitle, each a <div> rendered only when non-empty.
|
|
436
|
+
const caption = [["title", "lt-title"], ["subtitle", "lt-subtitle"]]
|
|
437
|
+
.filter(([g]) => hdr[g] != null && hdr[g] !== "")
|
|
438
|
+
.map(([g, cls]) => `<div class="${cls}">${esc(hdr[g])}${mark("title", g)}</div>`);
|
|
439
|
+
if (caption.length)
|
|
440
|
+
out.push(`<caption class="lt-caption">`, ...caption, `</caption>`);
|
|
485
441
|
|
|
486
442
|
// <thead>
|
|
487
443
|
out.push(`<thead>`);
|
|
488
444
|
if (spanners.length) {
|
|
445
|
+
const emptyTh = `<th class="lt-spanner-empty"></th>`;
|
|
489
446
|
out.push(`<tr class="lt-spanner-row">`);
|
|
490
|
-
|
|
491
|
-
if (stub) out.push(`<th class="lt-spanner-empty"></th>`);
|
|
447
|
+
out.push(emptyTh.repeat(nGrp));
|
|
492
448
|
for (let k = 0; k < cols.length;) {
|
|
493
449
|
const sp = spanners.find(s => s.columns[0] === cols[k]);
|
|
494
450
|
if (sp) {
|
|
495
|
-
out.push(`<th colspan="${sp.columns.length}" scope="colgroup" class="lt-spanner">${esc(sp.label)}${mark("column_spanners",
|
|
451
|
+
out.push(`<th colspan="${sp.columns.length}" scope="colgroup" class="lt-spanner">${esc(sp.label)}${mark("column_spanners", sp.label)}</th>`);
|
|
496
452
|
k += sp.columns.length;
|
|
497
453
|
} else {
|
|
498
|
-
out.push(
|
|
454
|
+
out.push(emptyTh);
|
|
499
455
|
k++;
|
|
500
456
|
}
|
|
501
457
|
}
|
|
@@ -503,25 +459,16 @@
|
|
|
503
459
|
}
|
|
504
460
|
out.push(`<tr>`);
|
|
505
461
|
for (const rs of rowSpans) out.push(`<th scope="col">${esc(rs.label)}</th>`);
|
|
506
|
-
if (stub) out.push(`<th scope="col"${groups.length ? ` class="lt-indent"` : ""}>${esc(stubLabel)}</th>`);
|
|
507
462
|
for (let i = 0; i < cols.length; i++)
|
|
508
|
-
out.push(`<th scope="col"${colCls[i]}>${esc(colLabels[i])}${mark("column_labels",
|
|
463
|
+
out.push(`<th scope="col"${attr("class", colCls[i])}>${esc(colLabels[i])}${mark("column_labels", cols[i])}</th>`);
|
|
509
464
|
out.push(`</tr></thead>`);
|
|
510
465
|
|
|
511
466
|
// Body footnote markers
|
|
512
467
|
const bodyMarks = {};
|
|
513
468
|
for (const f of fns) {
|
|
514
469
|
if (f.location.type !== "body") continue;
|
|
515
|
-
const fi = reg.idx[f.text]
|
|
516
|
-
|
|
517
|
-
frows = f.location.rows;
|
|
518
|
-
for (let r = 1; r <= nRow; r++) {
|
|
519
|
-
if (frows && frows.indexOf(r) < 0) continue;
|
|
520
|
-
for (const c of fcols) {
|
|
521
|
-
const ci = cols.indexOf(c);
|
|
522
|
-
if (ci >= 0) bodyMarks[`${r},${ci}`] = fi;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
470
|
+
const fi = reg.idx[f.text];
|
|
471
|
+
eachLoc(f.location.rows, f.location.columns || [], key => { bodyMarks[key] = fi; });
|
|
525
472
|
}
|
|
526
473
|
|
|
527
474
|
// Row rendering
|
|
@@ -530,23 +477,16 @@
|
|
|
530
477
|
// Rowspan group cells
|
|
531
478
|
for (const rs of rowSpans) {
|
|
532
479
|
const span = rs.spans[r - 1];
|
|
533
|
-
if (span > 0) out.push(`<th scope="row" class="lt-row-group"${span > 1 ?
|
|
534
|
-
}
|
|
535
|
-
if (stub) {
|
|
536
|
-
const ind = indent[r - 1] || 0,
|
|
537
|
-
cls = `lt-stub${groups.length ? " lt-indent" : ""}`,
|
|
538
|
-
style = ind ? ` style="padding-left:${ind + 1}em"` : "";
|
|
539
|
-
out.push(`<th scope="row" class="${cls}"${style}>${esc(stub[r - 1])}</th>`);
|
|
480
|
+
if (span > 0) out.push(`<th scope="row" class="lt-row-group"${attr("rowspan", span > 1 ? span : 0)}>${esc(cell(rs.col, r))}</th>`);
|
|
540
481
|
}
|
|
482
|
+
const ind = indent[r - 1] || 0;
|
|
541
483
|
for (let ci = 0; ci < cols.length; ci++) {
|
|
542
|
-
const
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
: (cc ? ` class="${cc}"` : "");
|
|
549
|
-
out.push(`<td${cls}${s ? ` style="${s}"` : ""}>${esc(val)}${m ? sup(m) : ""}</td>`);
|
|
484
|
+
const k = `${r},${ci}`,
|
|
485
|
+
m = bodyMarks[k], cc = classMap[k],
|
|
486
|
+
cls = [colCls[ci], cc].filter(Boolean).join(" ");
|
|
487
|
+
let s = styleMap[k] || "";
|
|
488
|
+
if (ci === 0 && ind) s = (s ? s + ";" : "") + `padding-left:${ind + 1}em`;
|
|
489
|
+
out.push(`<td${attr("class", cls)}${attr("style", s)}>${esc(cell(cols[ci], r))}${m ? sup(m) : ""}</td>`);
|
|
550
490
|
}
|
|
551
491
|
out.push(`</tr>`);
|
|
552
492
|
};
|
|
@@ -556,7 +496,7 @@
|
|
|
556
496
|
if (groups.length) {
|
|
557
497
|
const seen = {};
|
|
558
498
|
for (const g of groups) {
|
|
559
|
-
out.push(`<tr class="lt-row-group"><th colspan="${nCol}" scope="colgroup">${esc(g.label)}${mark("row_groups",
|
|
499
|
+
out.push(`<tr class="lt-row-group"><th colspan="${nCol}" scope="colgroup">${esc(g.label)}${mark("row_groups", g.label)}</th></tr>`);
|
|
560
500
|
for (const r of g.rows) { seen[r] = 1; pushRow(r); }
|
|
561
501
|
}
|
|
562
502
|
for (let r = 1; r <= nRow; r++) if (!seen[r]) pushRow(r);
|
|
@@ -565,13 +505,12 @@
|
|
|
565
505
|
}
|
|
566
506
|
out.push(`</tbody>`);
|
|
567
507
|
|
|
568
|
-
// <tfoot
|
|
508
|
+
// <tfoot>: footnotes then source notes, each a full-width row.
|
|
569
509
|
if (reg.order.length || notes.length) {
|
|
510
|
+
const footRow = (cls, html) => `<tr class="${cls}"><td colspan="${nCol}">${html}</td></tr>`;
|
|
570
511
|
out.push(`<tfoot class="lt-footer">`);
|
|
571
|
-
reg.order.forEach((txt, i) => out.push(
|
|
572
|
-
|
|
573
|
-
for (const n of notes)
|
|
574
|
-
out.push(`<tr class="lt-source-note"><td colspan="${nCol}">${esc(n)}</td></tr>`);
|
|
512
|
+
reg.order.forEach((txt, i) => out.push(footRow("lt-footnote", `${sup(i + 1)} ${esc(txt)}`)));
|
|
513
|
+
for (const n of notes) out.push(footRow("lt-source-note", esc(n)));
|
|
575
514
|
out.push(`</tfoot>`);
|
|
576
515
|
}
|
|
577
516
|
|
|
@@ -580,9 +519,8 @@
|
|
|
580
519
|
}
|
|
581
520
|
|
|
582
521
|
const mount = (s, spec) => s.insertAdjacentHTML("afterend", buildHtml(spec));
|
|
583
|
-
|
|
584
|
-
const q =
|
|
585
|
-
|
|
586
|
-
root.LT = { build
|
|
587
|
-
q: { push(e) { mount(e.s, e.d); } } };
|
|
522
|
+
// q.push renders immediately; replay any entries queued before we loaded.
|
|
523
|
+
const q = { push: e => mount(e.s, e.d) };
|
|
524
|
+
(root.LT?.q || []).forEach(q.push);
|
|
525
|
+
root.LT = { build: spec => mount(document.currentScript, spec), buildHtml, q };
|
|
588
526
|
})(window);
|
package/js/lt.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(t=>{"use strict";if(t.LT&&t.LT.buildHtml)return;const n=t=>String(t).replace(/&/g,"&").replace(/[<]/g,"<").replace(/>/g,">").replace(/"/g,"""),o=t=>`<sup class="lt-fnref">${t}</sup>`,s=t=>"number"==typeof t&&!isNaN(t);function e(t,n,o){if(null==t||!s(t))return null;let e=null!=n?t.toFixed(n):String(t);if(/^-0(\.0+)?$/.test(e)&&(e=e.slice(1)),o){const t=e.split(".");t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,o),e=t.join(".")}return"-"===e[0]&&(e="−"+e.slice(1)),null!=n||o?e:null}function l(t,n){if(!n)return t.filter(t=>""!==t).join(" ");let o=n,s="";for(;o;){const n=o.match(/<<(.*?)>>/);if(!n){s+=r(o,t);break}n.index>0&&(s+=r(o.slice(0,n.index),t));const e=n[1],l=[...e.matchAll(/\{(\d+)\}/g)].map(t=>+t[1]);l.length&&!l.every(n=>""!==t[n-1])||(s+=r(e,t)),o=o.slice(n.index+n[0].length)}return s}function r(t,n){for(let o=0;o<n.length;o++)t=t.split("{"+(o+1)+"}").join(n[o]);return t}function c(t){const n=t.data||{},o=t.ops||[],r=Object.keys(n),c=r.length?n[r[0]].length:0,f={};for(const t of r)f[t]=n[t].map(t=>null==t?"":String(t));!function(t,n,o){if(!1===t.auto_fmt)return;const l=t.data||{},r=t.ops||[],c=Object.keys(l),f=new Set;for(const t of r)if("fmt_number"===t.type)for(const n of t.columns||c)f.add(n);const i=t=>{for(const n of r)if("label"===n.type&&n.labels&&null!=n.labels[t])return n.labels[t];return t};for(const t of c){if(f.has(t))continue;const r=l[t];if(!r||!r.length)continue;if("number"!=typeof r.find(t=>null!=t))continue;const c=i(t),u=/%|[ _](pct|percent)$/i.test(c);if(/year/i.test(c)&&r.every(t=>null==t||/^\d{4}$/.test(String(t))))continue;let a=0,p=0;for(const t of r){if(!s(t))continue;const n=Math.abs(u?100*t:t),o=n<1?0:Math.floor(Math.log10(n))+1;o>a&&(a=o);const e=String(t).match(/\.(\d+)/);if(!e)continue;const l=e[1].replace(/0+$/,"").length-(u?2:0);l>p&&(p=l)}p=Math.max(Math.min(p,Math.max(4-a,0)),0);for(let l=0;l<o;l++){const o=r[l];if(!s(o))continue;const c=e(u?100*o:o,p," ");null!=c&&(n[t][l]=c+(u?"%":""))}}}(t,f,c);for(const t of o){const o=t.columns||r;switch(t.type){case"fmt_number":for(const l of o)if(n[l])for(let o=0;o<c;o++){const r=n[l][o];if(null==r||!s(r))continue;const c=!0===t.percent?100*r:r,i=t.percent?"%":"",u=e(c,t.decimals,t.big_mark??"");null!=u?f[l][o]=u+i:i&&(f[l][o]=String(c)+i)}break;case"sub":for(const e of o)if(n[e])for(let o=0;o<c;o++){const l=n[e][o];null!=t.small&&s(l)&&0!==l&&Math.abs(l)<t.small?f[e][o]=t.small_text??"<"+t.small:null!=t.zero&&0===l?f[e][o]=t.zero:null!=t.missing&&null==l&&(f[e][o]=t.missing)}break;case"merge":{const n=t.columns;if(!n||n.length<2)break;const o=n[0];for(let s=0;s<c;s++){const e=n.map(t=>f[t]?f[t][s]:"");f[o][s]=l(e,t.pattern)}break}}}return{display:f,nRow:c}}function f(t){!function(t){if(!1===t.sort||!t.row_group)return;const n=t.data||{},o=[].concat(t.row_group),s=Object.keys(n),e=s.length?n[s[0]].length:0;if(!e)return;const l=Array.from({length:e},(t,n)=>n);l.sort((t,s)=>{for(const e of o){const o=n[e]?.[t],l=n[e]?.[s];if(o!=l){if(null==o)return 1;if(null==l)return-1;if(o<l)return-1;if(o>l)return 1}}return 0});for(const t of s)n[t]=l.map(o=>n[t][o]);const r=new Array(e);for(let t=0;t<e;t++)r[l[t]]=t+1;for(const n of t.ops||[])n.rows&&(n.rows=n.rows.map(t=>r[t-1]))}(t);const s=t.data||{},{display:e,nRow:l}=c(t),{visible:r,align:f,colLabels:i,colWidths:u,indent:a,stubLabel:p,stub:h,groups:d,rowSpans:g,styles:b,spanners:m,footnotes:$,notes:y,header:w}=function(t){const n=t.data||{},o=t.ops||[],s=Object.keys(n),e=s.length?n[s[0]].length:0;let l="string"==typeof t.row_group;const r=Array.isArray(t.row_group)?t.row_group:t.row_group?[t.row_group]:[],c=t.row_label||null;!l&&1===r.length&&n[r[0]]?.some(t=>(t+"").length>20)&&(l=!0);const f=new Set;for(const t of r)f.add(t);c&&f.add(c);for(const t of o)"merge"===t.type&&!1!==t.hide&&t.columns&&t.columns.slice(1).forEach(t=>f.add(t));let i=s.filter(t=>!f.has(t));for(const t of o){if("move"!==t.type)continue;const n=(t.columns||[]).filter(t=>i.includes(t));if(!n.length)continue;const o=i.filter(t=>!n.includes(t));if(null==t.after)i=[...n,...o];else{const s=o.indexOf(t.after);s>=0&&(i=[...o.slice(0,s+1),...n,...o.slice(s+1)])}}const u=i.map(t=>{const o=n[t];return o&&o.length&&"number"==typeof o.find(t=>null!=t)?"right":"left"});for(const t of o)if("align"===t.type)for(const n of t.columns||[]){const o=i.indexOf(n);o>=0&&(u[o]=t.align)}const a=[...i];for(const t of o)if("label"===t.type&&t.labels)for(const[n,o]of Object.entries(t.labels)){const t=i.indexOf(n);t>=0&&(a[t]=o)}let p=null;for(const t of o)if("width"===t.type&&t.widths){p||(p=i.map(()=>""));for(const[n,o]of Object.entries(t.widths)){const t=i.indexOf(n);t>=0&&(p[t]=o)}}const h=new Array(e).fill(0);for(const t of o)if("indent"===t.type&&t.rows)for(const n of t.rows)h[n-1]=t.level??1;let d="";for(const t of o)"stubhead"===t.type&&(d=t.label);let g=[];if(l&&r.length&&n[r[0]]){const t=n[r[0]];let o=0;for(;o<e;){const n=null==t[o]?"":String(t[o]),s=[o+1];for(;++o<e&&String(t[o]??"")===n;)s.push(o+1);g.push({label:n,rows:s})}}for(const t of o)"row_group"===t.type&&g.push({label:t.label,rows:t.rows});for(const t of o){if("group_order"!==t.type||!g.length)continue;const n=t.order||[],o=[],s=[];for(const t of n){const n=g.find(n=>n.label===t);n&&o.push(n)}for(const t of g)o.includes(t)||s.push(t);g=[...o,...s]}const b=[];if(!l&&r.length)for(const t of r){const s=n[t]||[],l=new Array(e).fill(0);let r=0;for(;r<e;){const t=String(s[r]??"");let n=r+1;for(;n<e&&String(s[n]??"")===t;)n++;l[r]=n-r,r=n}let c=t;for(const n of o)"label"===n.type&&n.labels&&null!=n.labels[t]&&(c=n.labels[t]);b.push({col:t,label:c,spans:l})}const m=[];for(const t of o){if("style"!==t.type)continue;const n={};t.css&&(n.css=t.css),t.class&&(n.class=t.class),t.columns&&(n.columns=t.columns),t.rows&&(n.rows=t.rows),t.test&&(n.test=t.test),m.push(n)}const $=g.length&&!c&&i.length?i.find(t=>!n[t]||!n[t].length||"number"!=typeof n[t].find(t=>null!=t)):null,y=c||$||null,w=y&&n[y]?n[y].map(t=>null==t?"":String(t)):null;y&&!c&&(u.shift(),a.shift(),i=i.slice(1),p&&p.shift()),y&&!d&&(d=y);let x=t.spanners||[];if(t.auto_span){const n="string"==typeof t.auto_span?new RegExp(t.auto_span):/[._]/;x=[...x];for(let t=0;t<i.length;){const o=i[t].match(n);if(!o){t++;continue}const s=i[t].slice(0,o.index);let e=t+1;for(;e<i.length;){const t=i[e].match(n);if(!t||i[e].slice(0,t.index)!==s)break;e++}if(e-t>=2){x.push({label:s,columns:i.slice(t,e)});for(let o=t;o<e;o++){const t=a[o].match(n);t&&(a[o]=a[o].slice(t.index+t[0].length))}}t=e}}return{visible:i,align:u,colLabels:a,colWidths:p,indent:h,stubLabel:d,stub:w,groups:g,rowSpans:b,styles:m,spanners:x,footnotes:t.footnotes||[],notes:t.notes||[],header:t.header||{},nRow:e}}(t),x=function(t){const n=[],o={};return t.forEach(t=>{null==o[t.text]&&(o[t.text]=n.length+1,n.push(t.text))}),{order:n,idx:o}}($),_=((t,n)=>(o,s)=>{for(const e of t){const t=e.location;if(t.type!==o)continue;const l=n[e.text];if("title"===o&&t.group===s.group)return l;if("column_labels"===o&&s.columns.every(n=>t.columns.indexOf(n)>=0))return l;if("column_spanners"===o&&s.spanners.every(n=>t.spanners.indexOf(n)>=0))return l;if("row_groups"===o){if("all"===t.match)return l;if("exact"===t.match&&t.values.indexOf(s.label)>=0)return l;if("starts_with"===t.match&&0===s.label.indexOf(t.value))return l}}return 0})($,x.idx),O=g.length,S=r.length+(h?1:0)+O,v=['<table class="lt-table">'],j=(t,n)=>{const s=_(t,n);return s?o(s):""},k=r.map((t,n)=>{const o=(!h&&0===n&&d.length?"lt-indent ":"")+({right:"al-r",center:"al-c"}[f[n]]||"");return o?` class="${o.trimEnd()}"`:""}),L={},A={};for(const t of b){const n=t.columns?[].concat(t.columns):r,o=t.rows;for(let e=1;e<=l;e++)if(!(o&&o.indexOf(e)<0))for(const o of n){const n=r.indexOf(o);if(n<0)continue;if(t.test&&!t.test(s[o][e-1]))continue;const l=`${e},${n}`;t.css&&(L[l]=L[l]?L[l]+";"+t.css:t.css),t.class&&(A[l]=A[l]?A[l]+" "+t.class:t.class)}}if(u&&u.some(t=>t)){v.push("<colgroup>"),h&&v.push("<col>");for(let t=0;t<r.length;t++)v.push(u[t]?`<col style="width:${u[t]}">`:"<col>");v.push("</colgroup>")}const M=null!=w.title&&""!==w.title,T=null!=w.subtitle&&""!==w.subtitle;if((M||T)&&(v.push('<caption class="lt-caption">'),M&&v.push(`<div class="lt-title">${n(w.title)}${j("title",{group:"title"})}</div>`),T&&v.push(`<div class="lt-subtitle">${n(w.subtitle)}${j("title",{group:"subtitle"})}</div>`),v.push("</caption>")),v.push("<thead>"),m.length){v.push('<tr class="lt-spanner-row">');for(let t=0;t<O;t++)v.push('<th class="lt-spanner-empty"></th>');h&&v.push('<th class="lt-spanner-empty"></th>');for(let t=0;t<r.length;){const o=m.find(n=>n.columns[0]===r[t]);o?(v.push(`<th colspan="${o.columns.length}" scope="colgroup" class="lt-spanner">${n(o.label)}${j("column_spanners",{spanners:[o.label]})}</th>`),t+=o.columns.length):(v.push('<th class="lt-spanner-empty"></th>'),t++)}v.push("</tr>")}v.push("<tr>");for(const t of g)v.push(`<th scope="col">${n(t.label)}</th>`);h&&v.push(`<th scope="col"${d.length?' class="lt-indent"':""}>${n(p)}</th>`);for(let t=0;t<r.length;t++)v.push(`<th scope="col"${k[t]}>${n(i[t])}${j("column_labels",{columns:[r[t]]})}</th>`);v.push("</tr></thead>");const E={};for(const t of $){if("body"!==t.location.type)continue;const n=x.idx[t.text],o=t.location.columns||[],s=t.location.rows;for(let t=1;t<=l;t++)if(!(s&&s.indexOf(t)<0))for(const s of o){const o=r.indexOf(s);o>=0&&(E[`${t},${o}`]=n)}}const R=t=>{v.push("<tr>");for(const o of g){const s=o.spans[t-1];s>0&&v.push(`<th scope="row" class="lt-row-group"${s>1?` rowspan="${s}"`:""}>${n(e[o.col]?e[o.col][t-1]:"")}</th>`)}if(h){const o=a[t-1]||0,s="lt-stub"+(d.length?" lt-indent":""),e=o?` style="padding-left:${o+1}em"`:"";v.push(`<th scope="row" class="${s}"${e}>${n(h[t-1])}</th>`)}for(let s=0;s<r.length;s++){const l=E[`${t},${s}`],c=L[`${t},${s}`],f=A[`${t},${s}`],i=e[r[s]]?e[r[s]][t-1]:"",u=k[s]?f?k[s].replace(/"$/,` ${f}"`):k[s]:f?` class="${f}"`:"";v.push(`<td${u}${c?` style="${c}"`:""}>${n(i)}${l?o(l):""}</td>`)}v.push("</tr>")};if(v.push("<tbody>"),d.length){const t={};for(const o of d){v.push(`<tr class="lt-row-group"><th colspan="${S}" scope="colgroup">${n(o.label)}${j("row_groups",{label:o.label})}</th></tr>`);for(const n of o.rows)t[n]=1,R(n)}for(let n=1;n<=l;n++)t[n]||R(n)}else for(let t=1;t<=l;t++)R(t);if(v.push("</tbody>"),x.order.length||y.length){v.push('<tfoot class="lt-footer">'),x.order.forEach((t,s)=>v.push(`<tr class="lt-footnote"><td colspan="${S}">${o(s+1)} ${n(t)}</td></tr>`));for(const t of y)v.push(`<tr class="lt-source-note"><td colspan="${S}">${n(t)}</td></tr>`);v.push("</tfoot>")}return v.push("</table>"),v.join("")}const i=(t,n)=>t.insertAdjacentHTML("afterend",f(n)),u=t.LT&&t.LT.q||[];for(;u.length;){const t=u.shift();i(t.s,t.d)}t.LT={build(t){i(document.currentScript,t)},buildHtml:f,q:{push(t){i(t.s,t.d)}}}})(window);
|
|
1
|
+
(t=>{"use strict";if(t.LT?.buildHtml)return;const o=t=>String(t).replace(/&/g,"&").replace(/[<]/g,"<").replace(/>/g,">").replace(/"/g,"""),n=t=>`<sup class="lt-fnref">${t}</sup>`,e=t=>String(t??""),s=t=>"number"==typeof t&&!isNaN(t),l=t=>t?.length&&"number"==typeof t.find(t=>null!=t);function r(t,o,n){if(!s(t))return null;let e=null!=o?t.toFixed(o):String(t);if(/^-0(\.0+)?$/.test(e)&&(e=e.slice(1)),n){const t=e.split(".");t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,n),e=t.join(".")}return"-"===e[0]&&(e="−"+e.slice(1)),null!=o||n?e:null}function c(t,o){if(!o)return t.filter(t=>""!==t).join(" ");let n=o,e="";for(;n;){const o=n.match(/<<(.*?)>>/);if(!o){e+=i(n,t);break}o.index>0&&(e+=i(n.slice(0,o.index),t));const s=o[1],l=[...s.matchAll(/\{(\d+)\}/g)].map(t=>+t[1]);l.length&&!l.every(o=>""!==t[o-1])||(e+=i(s,t)),n=n.slice(o.index+o[0].length)}return e}function i(t,o){for(let n=0;n<o.length;n++)t=t.split("{"+(n+1)+"}").join(o[n]);return t}function a(t){const o=t.data||{},n=t.ops||[],i=Object.keys(o),a=i.length?o[i[0]].length:0,f={};for(const t of i)f[t]=o[t].map(e);!function(t,o,n){if(!1===t.auto_fmt)return;const e=t.data||{},c=t.ops||[],i=Object.keys(e),a=new Set;for(const t of c)if("fmt_number"===t.type)for(const o of t.columns||i)a.add(o);const f=t=>{for(const o of c)if("label"===o.type&&null!=o.labels?.[t])return o.labels[t];return t};for(const t of i){if(a.has(t))continue;const c=e[t];if(!l(c))continue;const i=f(t),u=/%|[ _](pct|percent)$/i.test(i);if(/year/i.test(i)&&c.every(t=>null==t||/^\d{4}$/.test(String(t))))continue;let p=0,h=0;for(const t of c){if(!s(t))continue;const o=Math.abs(u?100*t:t),n=o<1?0:Math.floor(Math.log10(o))+1;n>p&&(p=n);const e=String(t).match(/\.(\d+)/);if(!e)continue;const l=e[1].replace(/0+$/,"").length-(u?2:0);l>h&&(h=l)}h=Math.min(h,Math.max(4-p,0));for(let e=0;e<n;e++){const n=c[e];if(!s(n))continue;const l=r(u?100*n:n,h," ");null!=l&&(o[t][e]=l+(u?"%":""))}}}(t,f,a);const u=(t,n)=>{for(const e of t)if(o[e])for(let t=0;t<a;t++)n(e,t,o[e][t])};for(const t of n){const o=t.columns||i;switch(t.type){case"fmt_number":u(o,(o,n,e)=>{if(!s(e))return;const l=!0===t.percent?100*e:e,c=t.percent?"%":"",i=r(l,t.decimals,t.big_mark??"");null!=i?f[o][n]=i+c:c&&(f[o][n]=String(l)+c)});break;case"sub":u(o,(o,n,e)=>{null!=t.small&&s(e)&&0!==e&&Math.abs(e)<t.small?f[o][n]=t.small_text??"<"+t.small:null!=t.zero&&0===e?f[o][n]=t.zero:null!=t.missing&&null==e&&(f[o][n]=t.missing)});break;case"merge":{const o=t.columns;if(!o||o.length<2)break;const n=o[0];for(let e=0;e<a;e++){const s=o.map(t=>f[t]?.[e]??"");f[n][e]=c(s,t.pattern)}break}}}return{display:f,nRow:a}}function f(t){!function(t){if(!1===t.sort||!t.row_group)return;const o=t.data||{},n=[].concat(t.row_group),e=Object.keys(o),s=e.length?o[e[0]].length:0;if(!s)return;const l=Array.from({length:s},(t,o)=>o);l.sort((t,e)=>{for(const s of n){const n=o[s]?.[t],l=o[s]?.[e];if(n!=l){if(null==n)return 1;if(null==l)return-1;if(n<l)return-1;if(n>l)return 1}}return 0});for(const t of e)o[t]=l.map(n=>o[t][n]);const r=new Array(s);for(let t=0;t<s;t++)r[l[t]]=t+1;for(const o of t.ops||[])o.rows&&(o.rows=o.rows.map(t=>r[t-1]))}(t);const s=t.data||{},{display:r,nRow:c}=a(t),{visible:i,align:f,colLabels:u,colWidths:p,indent:h,groups:g,rowSpans:d,styles:m,spanners:b,footnotes:w,notes:$,header:y}=function(t){const o=t.data||{},n=t.ops||[],s=Object.keys(o),r=s.length?o[s[0]].length:0,c=(t,o)=>{for(const e of n)e.type===t&&o(e)};let i="string"==typeof t.row_group;const a=Array.isArray(t.row_group)?t.row_group:t.row_group?[t.row_group]:[];!i&&1===a.length&&o[a[0]]?.some(t=>(t+"").length>20)&&(i=!0);const f=new Set;for(const t of a)f.add(t);c("merge",t=>{!1!==t.hide&&t.columns&&t.columns.slice(1).forEach(t=>f.add(t))});let u=s.filter(t=>!f.has(t));c("move",t=>{const o=(t.columns||[]).filter(t=>u.includes(t));if(!o.length)return;const n=u.filter(t=>!o.includes(t));if(null==t.after)u=[...o,...n];else{const e=n.indexOf(t.after);e>=0&&(u=[...n.slice(0,e+1),...o,...n.slice(e+1)])}});const p=(t,o,n)=>{const e=u.indexOf(o);e>=0&&(t[e]=n)},h=u.map(t=>l(o[t])?"right":"left");c("align",t=>{for(const o of t.columns||[])p(h,o,t.align)});const g=[...u];c("label",t=>{for(const[o,n]of Object.entries(t.labels||{}))p(g,o,n)});let d=null;c("width",t=>{if(t.widths){d||(d=u.map(()=>""));for(const[o,n]of Object.entries(t.widths))p(d,o,n)}});const m=new Array(r).fill(0);c("indent",t=>{if(t.rows)for(const o of t.rows)m[o-1]=t.level??1});const b=t=>{const o=[];for(let n=0;n<r;){const s=e(t[n]),l=[n+1];for(;++n<r&&e(t[n])===s;)l.push(n+1);o.push({label:s,rows:l})}return o};let w=[];i&&a.length&&o[a[0]]&&w.push(...b(o[a[0]])),c("row_group",t=>w.push({label:t.label,rows:t.rows})),c("group_order",t=>{if(!w.length)return;const o=[],n=[];for(const n of t.order||[]){const t=w.find(t=>t.label===n);t&&o.push(t)}for(const t of w)o.includes(t)||n.push(t);w=[...o,...n]});const $=[];if(!i&&a.length)for(const t of a){const n=new Array(r).fill(0);for(const e of b(o[t]||[]))n[e.rows[0]-1]=e.rows.length;let e=t;c("label",o=>{null!=o.labels?.[t]&&(e=o.labels[t])}),$.push({col:t,label:e,spans:n})}const y=n.filter(t=>"style"===t.type);let _=t.spanners||[];if(t.auto_span){const o="string"==typeof t.auto_span?new RegExp(t.auto_span):/[._]/;_=[..._];for(let t=0;t<u.length;){const n=u[t].match(o);if(!n){t++;continue}const e=u[t].slice(0,n.index);let s=t+1;for(;s<u.length;){const t=u[s].match(o);if(!t||u[s].slice(0,t.index)!==e)break;s++}if(s-t>=2){_.push({label:e,columns:u.slice(t,s)});for(let n=t;n<s;n++){const t=g[n].match(o);t&&(g[n]=g[n].slice(t.index+t[0].length))}}t=s}}return{visible:u,align:h,colLabels:g,colWidths:d,indent:m,groups:w,rowSpans:$,styles:y,spanners:_,footnotes:t.footnotes||[],notes:t.notes||[],header:t.header||{},nRow:r}}(t),_=function(t){const o=[],n={};return t.forEach(t=>{null==n[t.text]&&(n[t.text]=o.length+1,o.push(t.text))}),{order:o,idx:n}}(w),x=((t,o)=>(n,e)=>{for(const s of t){const t=s.location;if(t.type!==n)continue;const l=o[s.text];if("title"===n&&t.group===e)return l;if("column_labels"===n&&t.columns.includes(e))return l;if("column_spanners"===n&&t.spanners.includes(e))return l;if("row_groups"===n){if("all"===t.match)return l;if("exact"===t.match&&t.values.includes(e))return l;if("starts_with"===t.match&&e.startsWith(t.value))return l}}return 0})(w,_.idx),j=d.length,k=i.length+j,S=['<table class="lt-table">'],v=(t,o)=>{const e=x(t,o);return e?n(e):""},O=(t,o)=>r[t]?.[o-1]??"",A=(t,o)=>o?` ${t}="${o}"`:"",M=i.map((t,o)=>((0===o&&g.length?"lt-indent ":"")+({right:"al-r",center:"al-c"}[f[o]]||"")).trimEnd()),E=(t,o,n)=>{for(let e=1;e<=c;e++)if(!t||t.includes(e))for(const t of o||i){const o=i.indexOf(t);o>=0&&n(`${e},${o}`,t,e)}},L={},R={},T=(t,o,n,e)=>{t[o]=t[o]?t[o]+e+n:n};for(const t of m)E(t.rows,t.columns?[].concat(t.columns):null,(o,n,e)=>{t.test&&!t.test(s[n][e-1])||(t.css&&T(L,o,t.css,";"),t.class&&T(R,o,t.class," "))});if(p&&p.some(t=>t)){S.push("<colgroup>");for(let t=0;t<i.length;t++)S.push(`<col${A("style",p[t]?"width:"+p[t]:"")}>`);S.push("</colgroup>")}const q=[["title","lt-title"],["subtitle","lt-subtitle"]].filter(([t])=>null!=y[t]&&""!==y[t]).map(([t,n])=>`<div class="${n}">${o(y[t])}${v("title",t)}</div>`);if(q.length&&S.push('<caption class="lt-caption">',...q,"</caption>"),S.push("<thead>"),b.length){const t='<th class="lt-spanner-empty"></th>';S.push('<tr class="lt-spanner-row">'),S.push(t.repeat(j));for(let n=0;n<i.length;){const e=b.find(t=>t.columns[0]===i[n]);e?(S.push(`<th colspan="${e.columns.length}" scope="colgroup" class="lt-spanner">${o(e.label)}${v("column_spanners",e.label)}</th>`),n+=e.columns.length):(S.push(t),n++)}S.push("</tr>")}S.push("<tr>");for(const t of d)S.push(`<th scope="col">${o(t.label)}</th>`);for(let t=0;t<i.length;t++)S.push(`<th scope="col"${A("class",M[t])}>${o(u[t])}${v("column_labels",i[t])}</th>`);S.push("</tr></thead>");const H={};for(const t of w){if("body"!==t.location.type)continue;const o=_.idx[t.text];E(t.location.rows,t.location.columns||[],t=>{H[t]=o})}const W=t=>{S.push("<tr>");for(const n of d){const e=n.spans[t-1];e>0&&S.push(`<th scope="row" class="lt-row-group"${A("rowspan",e>1?e:0)}>${o(O(n.col,t))}</th>`)}const e=h[t-1]||0;for(let s=0;s<i.length;s++){const l=`${t},${s}`,r=H[l],c=R[l],a=[M[s],c].filter(Boolean).join(" ");let f=L[l]||"";0===s&&e&&(f=(f?f+";":"")+`padding-left:${e+1}em`),S.push(`<td${A("class",a)}${A("style",f)}>${o(O(i[s],t))}${r?n(r):""}</td>`)}S.push("</tr>")};if(S.push("<tbody>"),g.length){const t={};for(const n of g){S.push(`<tr class="lt-row-group"><th colspan="${k}" scope="colgroup">${o(n.label)}${v("row_groups",n.label)}</th></tr>`);for(const o of n.rows)t[o]=1,W(o)}for(let o=1;o<=c;o++)t[o]||W(o)}else for(let t=1;t<=c;t++)W(t);if(S.push("</tbody>"),_.order.length||$.length){const t=(t,o)=>`<tr class="${t}"><td colspan="${k}">${o}</td></tr>`;S.push('<tfoot class="lt-footer">'),_.order.forEach((e,s)=>S.push(t("lt-footnote",`${n(s+1)} ${o(e)}`)));for(const n of $)S.push(t("lt-source-note",o(n)));S.push("</tfoot>")}return S.push("</table>"),S.join("")}const u=(t,o)=>t.insertAdjacentHTML("afterend",f(o)),p={push:t=>u(t.s,t.d)};(t.LT?.q||[]).forEach(p.push),t.LT={build:t=>u(document.currentScript,t),buildHtml:f,q:p}})(window);
|
|
2
2
|
//# sourceMappingURL=lt.min.js.map
|
package/js/lt.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["root","LT","buildHtml","esc","s","String","replace","sup","i","isNum","v","isNaN","fmtNumber","decimals","bigMark","toFixed","test","slice","parts","split","join","mergeVals","vals","pattern","filter","remaining","result","m","match","subRefs","index","block","refs","matchAll","map","x","length","every","applyOps","spec","data","ops","colNames","Object","keys","nRow","display","c","auto_fmt","fmtCols","Set","op","type","columns","add","getLabel","labels","has","col","find","lbl","pct","maxInt","n","a","Math","abs","intW","floor","log10","d","max","min","autoFmt","cols","raw","percent","sfx","f","big_mark","small","small_text","zero","missing","mCols","target","sort","row_group","concat","idx","Array","from","_","b","va","vb","newPos","rows","r","sortByGroups","visible","align","colLabels","colWidths","indent","stubLabel","stub","groups","rowSpans","styles","spanners","footnotes","fns","notes","header","hdr","rowGroupSep","rowGroupCols","isArray","rowLabelCol","row_label","some","hidden","g","hide","forEach","toMove","includes","rest","after","pos","indexOf","entries","widths","w","fill","level","label","gCol","push","order","ordered","gc","spans","j","css","class","autoStub","stubCol","shift","auto_span","sep","RegExp","prefix","m2","k","mk","resolveSpec","reg","text","indexFootnotes","fIdx","p","loc","location","hit","group","values","value","matcher","nGrp","nCol","out","mark","colCls","right","center","trimEnd","styleMap","classMap","sCols","sRows","ci","key","hasT","title","hasS","subtitle","sp","rs","bodyMarks","fi","fcols","frows","pushRow","span","ind","cls","style","cc","val","seen","txt","mount","insertAdjacentHTML","q","e","build","document","currentScript","window"],"sources":["lt.js"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["root","LT","buildHtml","esc","s","String","replace","sup","i","str","v","isNum","isNaN","numCol","col","length","find","fmtNumber","decimals","bigMark","toFixed","test","slice","parts","split","join","mergeVals","vals","pattern","filter","remaining","result","m","match","subRefs","index","block","refs","matchAll","map","x","every","applyOps","spec","data","ops","colNames","Object","keys","nRow","display","c","auto_fmt","fmtCols","Set","op","type","columns","add","getLabel","labels","has","lbl","pct","maxInt","n","a","Math","abs","intW","floor","log10","d","min","max","autoFmt","eachCell","cols","fn","raw","percent","sfx","f","big_mark","small","small_text","zero","missing","mCols","target","sort","row_group","concat","idx","Array","from","_","b","va","vb","newPos","rows","r","sortByGroups","visible","align","colLabels","colWidths","indent","groups","rowSpans","styles","spanners","footnotes","fns","notes","header","hdr","onOp","t","rowGroupSep","rowGroupCols","isArray","some","hidden","g","hide","forEach","toMove","includes","rest","after","pos","indexOf","setByCol","arr","val","entries","widths","w","fill","level","runs","out","label","push","ordered","order","gc","spans","auto_span","sep","RegExp","prefix","j","m2","k","mk","resolveSpec","reg","text","indexFootnotes","fIdx","loc","location","hit","group","values","startsWith","value","matcher","nGrp","nCol","mark","cell","attr","colCls","right","center","trimEnd","eachLoc","locCols","ci","styleMap","classMap","addTo","key","css","class","caption","cls","emptyTh","repeat","sp","rs","bodyMarks","fi","pushRow","span","ind","cc","Boolean","seen","footRow","html","txt","mount","insertAdjacentHTML","q","e","build","document","currentScript","window"],"sources":["lt.js"],"mappings":"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","ignoreList":[]}
|