@xiee/utils 1.14.73 → 1.14.74
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-interactive.css +77 -0
- package/css/lt-interactive.min.css +2 -0
- package/css/lt-interactive.min.css.map +1 -0
- package/js/lt-interactive.js +391 -0
- package/js/lt-interactive.min.js +2 -0
- package/js/lt-interactive.min.js.map +1 -0
- package/js/lt.js +51 -7
- package/js/lt.min.js +1 -1
- package/js/lt.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/* lt-interactive.css — controls for lt-interactive.js (search box, sortable
|
|
2
|
+
* headers, column filters, pager). Classes are namespaced `lti-*` to avoid
|
|
3
|
+
* clashing with core `lt-*`. Only properties that change a default are
|
|
4
|
+
* declared. */
|
|
5
|
+
|
|
6
|
+
.lt-table {
|
|
7
|
+
/* the search box and the pager are full-width rows of the table, so they line
|
|
8
|
+
* up with its edges rather than the cell text */
|
|
9
|
+
:is(.lti-head, .lti-pager-row) td {
|
|
10
|
+
padding-left: 0;
|
|
11
|
+
padding-right: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* each box fills its cell: the whole table for the search, one column for a
|
|
15
|
+
* filter */
|
|
16
|
+
.lti-search,
|
|
17
|
+
.lti-filters input {
|
|
18
|
+
width: 100%;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.lti-sortable {
|
|
22
|
+
cursor: pointer;
|
|
23
|
+
user-select: none;
|
|
24
|
+
}
|
|
25
|
+
/* the ▲/▼ indicator, set off from the column label */
|
|
26
|
+
.lti-sort {
|
|
27
|
+
margin-left: 0.3em;
|
|
28
|
+
font-size: 0.8em;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.lti-empty td {
|
|
32
|
+
text-align: center;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* the drag grip sits on a column's right edge, inside its header cell */
|
|
36
|
+
th:has(.lti-resizer) {
|
|
37
|
+
position: relative;
|
|
38
|
+
}
|
|
39
|
+
.lti-resizer {
|
|
40
|
+
position: absolute;
|
|
41
|
+
top: 0;
|
|
42
|
+
right: 0;
|
|
43
|
+
width: 5px;
|
|
44
|
+
height: 100%;
|
|
45
|
+
cursor: col-resize;
|
|
46
|
+
user-select: none;
|
|
47
|
+
touch-action: none;
|
|
48
|
+
}
|
|
49
|
+
.lti-resizer:hover {
|
|
50
|
+
background: currentColor;
|
|
51
|
+
opacity: 0.3;
|
|
52
|
+
}
|
|
53
|
+
/* while dragging, the pointer keeps the resize cursor anywhere on the table,
|
|
54
|
+
* and the drag selects no text */
|
|
55
|
+
&.lti-resizing {
|
|
56
|
+
cursor: col-resize;
|
|
57
|
+
user-select: none;
|
|
58
|
+
}
|
|
59
|
+
/* column widths are authoritative once frozen, so a drag moves one edge only */
|
|
60
|
+
&.lti-fixed {
|
|
61
|
+
table-layout: fixed;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.lti-pager {
|
|
65
|
+
display: flex;
|
|
66
|
+
align-items: center;
|
|
67
|
+
gap: 0.3em;
|
|
68
|
+
}
|
|
69
|
+
.lti-pager :is(button, select) {
|
|
70
|
+
font: inherit;
|
|
71
|
+
cursor: pointer;
|
|
72
|
+
}
|
|
73
|
+
/* push the row count away from the arrows, and the page size to the far end */
|
|
74
|
+
.lti-pos {
|
|
75
|
+
margin: 0 auto 0 0.3em;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
.lt-table{& :is(.lti-head,.lti-pager-row) td{padding-left:0;padding-right:0}& .lti-search,& .lti-filters input{width:100%}& .lti-sortable{cursor:pointer;user-select:none}& .lti-sort{margin-left:.3em;font-size:.8em}& .lti-empty td{text-align:center}& th:has(.lti-resizer){position:relative}& .lti-resizer{cursor:col-resize;user-select:none;touch-action:none;width:5px;height:100%;position:absolute;top:0;right:0}& .lti-resizer:hover{opacity:.3;background:currentColor}&.lti-resizing{cursor:col-resize;user-select:none}&.lti-fixed{table-layout:fixed}& .lti-pager{align-items:center;gap:.3em;display:flex}& .lti-pager :is(button,select){font:inherit;cursor:pointer}& .lti-pos{margin:0 auto 0 .3em}}
|
|
2
|
+
/*# sourceMappingURL=lt-interactive.min.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":"AAKA,UAGE,kEAOA,8CAKA,gDAKA,4CAKA,kCAKA,yCAGA,0HAUA,wDAMA,kDAKA,+BAIA,sDAKA,4DAKA","sources":["lt-interactive.css"],"sourcesContent":["/* lt-interactive.css — controls for lt-interactive.js (search box, sortable\n * headers, column filters, pager). Classes are namespaced `lti-*` to avoid\n * clashing with core `lt-*`. Only properties that change a default are\n * declared. */\n\n.lt-table {\n /* the search box and the pager are full-width rows of the table, so they line\n * up with its edges rather than the cell text */\n :is(.lti-head, .lti-pager-row) td {\n padding-left: 0;\n padding-right: 0;\n }\n\n /* each box fills its cell: the whole table for the search, one column for a\n * filter */\n .lti-search,\n .lti-filters input {\n width: 100%;\n }\n\n .lti-sortable {\n cursor: pointer;\n user-select: none;\n }\n /* the ▲/▼ indicator, set off from the column label */\n .lti-sort {\n margin-left: 0.3em;\n font-size: 0.8em;\n }\n\n .lti-empty td {\n text-align: center;\n }\n\n /* the drag grip sits on a column's right edge, inside its header cell */\n th:has(.lti-resizer) {\n position: relative;\n }\n .lti-resizer {\n position: absolute;\n top: 0;\n right: 0;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n user-select: none;\n touch-action: none;\n }\n .lti-resizer:hover {\n background: currentColor;\n opacity: 0.3;\n }\n /* while dragging, the pointer keeps the resize cursor anywhere on the table,\n * and the drag selects no text */\n &.lti-resizing {\n cursor: col-resize;\n user-select: none;\n }\n /* column widths are authoritative once frozen, so a drag moves one edge only */\n &.lti-fixed {\n table-layout: fixed;\n }\n\n .lti-pager {\n display: flex;\n align-items: center;\n gap: 0.3em;\n }\n .lti-pager :is(button, select) {\n font: inherit;\n cursor: pointer;\n }\n /* push the row count away from the arrows, and the page size to the far end */\n .lti-pos {\n margin: 0 auto 0 0.3em;\n }\n}\n"],"names":[]}
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/* lt-interactive.js — opt-in interactivity for lt tables (search, sort, column
|
|
2
|
+
* filters, pagination, column resizing).
|
|
3
|
+
*
|
|
4
|
+
* A plugin on the existing LT global (see lt.js): it adds no new global. For a
|
|
5
|
+
* table whose spec carries `interactive`, it adds the requested controls and
|
|
6
|
+
* re-renders <tbody> through the core `spec._viewRows` seam. Every control is a
|
|
7
|
+
* row of the table itself — the search box in <thead>, the pager in <tfoot> —
|
|
8
|
+
* so it is exactly as wide as the table and scrolls with it. Flat rows only (no
|
|
9
|
+
* row groups or indentation); such tables stay static, with a console warning.
|
|
10
|
+
*/
|
|
11
|
+
(root => {
|
|
12
|
+
"use strict";
|
|
13
|
+
const LT = root.LT;
|
|
14
|
+
// Bail out if core is absent or too old, or the plugin already loaded.
|
|
15
|
+
if (!LT?.onMount || LT.plugins.interactive) return;
|
|
16
|
+
|
|
17
|
+
const MIN_COL = 24; // px: a dragged column never gets narrower than this
|
|
18
|
+
let coll; // locale-aware comparator, built on first use and reused
|
|
19
|
+
// A column is numeric if its first non-null value is a number (how core
|
|
20
|
+
// lt.js decides alignment and formatting).
|
|
21
|
+
const numCol = col => typeof col.find(v => v != null) === "number";
|
|
22
|
+
|
|
23
|
+
// Compile a search term into a predicate over one row's cells (`{raw, disp}`
|
|
24
|
+
// objects), or null to keep every row. Ported from forestly's
|
|
25
|
+
// inst/js/search-filter.js so results stay consistent across the projects.
|
|
26
|
+
// - Expression mode, when the term references the cell variable `x` (e.g.
|
|
27
|
+
// `x > 5`, `x !== "Rash"`): evaluated as JavaScript against the *raw*
|
|
28
|
+
// value, as a string and (when finite) as a number. A leading `!` or an
|
|
29
|
+
// `!=` is negation, which keeps a row only when *every* cell satisfies the
|
|
30
|
+
// test; otherwise *any* matching cell keeps the row.
|
|
31
|
+
// - Substring mode otherwise: case-insensitive match against the *display*
|
|
32
|
+
// text, with a leading `!` negating.
|
|
33
|
+
function matcher(term) {
|
|
34
|
+
const v = String(term ?? "").trim();
|
|
35
|
+
if (v === "") return null;
|
|
36
|
+
if (/(^|[^\w$])x([^\w$]|$)/.test(v)) {
|
|
37
|
+
let fn;
|
|
38
|
+
try { fn = new Function("x", `return (${v});`); } catch (e) {}
|
|
39
|
+
if (fn) {
|
|
40
|
+
const neg = /^\s*!|!=/.test(v), test = raw => {
|
|
41
|
+
if (raw == null) return neg;
|
|
42
|
+
try {
|
|
43
|
+
const num = Number(raw);
|
|
44
|
+
return !!fn(String(raw)) || (raw !== "" && isFinite(num) && !!fn(num));
|
|
45
|
+
} catch (e) { return false; }
|
|
46
|
+
};
|
|
47
|
+
return cells => cells[neg ? "every" : "some"](c => test(c.raw));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const neg = v[0] === "!", needle = (neg ? v.slice(1).trim() : v).toLowerCase();
|
|
51
|
+
if (needle === "") return null;
|
|
52
|
+
return cells => neg !== cells.some(
|
|
53
|
+
c => c.disp != null && String(c.disp).toLowerCase().includes(needle)
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// The view pipeline (pure — no DOM): per-column filters, then the table-wide
|
|
58
|
+
// search, then sort, yielding the 1-based original row indices for
|
|
59
|
+
// `spec._viewRows`. `disp[col][i]` is a cell's displayed text (what substring
|
|
60
|
+
// search matches); `state` holds the filter terms (`filters[col]`), the
|
|
61
|
+
// search term, and the sorted column/direction. Filters and the search are
|
|
62
|
+
// combined with AND: a row must pass all of them.
|
|
63
|
+
function computeView(spec, disp, state) {
|
|
64
|
+
const cols = spec._cols || [], data = spec.data || {},
|
|
65
|
+
cell = (c, r) => ({
|
|
66
|
+
raw: data[c]?.[r - 1] ?? null, disp: disp[c]?.[r - 1] ?? ""
|
|
67
|
+
});
|
|
68
|
+
let idx = Array.from({ length: (data[cols[0]] || []).length }, (_, i) => i + 1);
|
|
69
|
+
|
|
70
|
+
// filters first: each looks at one cell, so they are the cheapest
|
|
71
|
+
for (const c in state.filters || {}) {
|
|
72
|
+
const pred = matcher(state.filters[c]);
|
|
73
|
+
if (pred) idx = idx.filter(r => pred([cell(c, r)]));
|
|
74
|
+
}
|
|
75
|
+
const pred = matcher(state.term);
|
|
76
|
+
if (pred) idx = idx.filter(r => pred(cols.map(c => cell(c, r))));
|
|
77
|
+
|
|
78
|
+
const col = data[state.sortCol];
|
|
79
|
+
if (col && state.sortDir) {
|
|
80
|
+
const num = numCol(col), dir = state.sortDir === "desc" ? -1 : 1;
|
|
81
|
+
coll ||= new Intl.Collator();
|
|
82
|
+
idx.sort((a, b) => {
|
|
83
|
+
const x = col[a - 1], y = col[b - 1];
|
|
84
|
+
// nulls sort last in both directions
|
|
85
|
+
if (x == null || y == null) return x == y ? 0 : x == null ? 1 : -1;
|
|
86
|
+
return dir * (num ? x - y : coll.compare(String(x), String(y)));
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return idx;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// The rows of `view` on the current page. `state.page` is clamped into range
|
|
93
|
+
// first (in place, so the pager reads back the page actually shown): the row
|
|
94
|
+
// count shrinks as filters are typed. A `state.pageSize` of 0 means every row
|
|
95
|
+
// on one page.
|
|
96
|
+
function pageSlice(view, state) {
|
|
97
|
+
const n = state.pageSize;
|
|
98
|
+
if (!n) { state.page = 0; return view; }
|
|
99
|
+
const last = Math.max(0, Math.ceil(view.length / n) - 1);
|
|
100
|
+
state.page = Math.min(Math.max(state.page || 0, 0), last);
|
|
101
|
+
return view.slice(state.page * n, (state.page + 1) * n);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Enhanceable only when the rows are flat: row groups and indentation give the
|
|
105
|
+
// row order a meaning of its own (grouping, hierarchy) that reordering or
|
|
106
|
+
// dropping rows would destroy. Column spanners, explicit or from `auto_span`,
|
|
107
|
+
// are no obstacle: they are <thead> rows, and only <tbody> is ever re-rendered.
|
|
108
|
+
// Row-keyed styles and footnotes are fine too — core keys them to the original
|
|
109
|
+
// row indices, which is what the view carries.
|
|
110
|
+
const isFlat = spec => !spec.row_group &&
|
|
111
|
+
!(spec.ops || []).some(o => o.type === "row_group" || o.type === "indent");
|
|
112
|
+
|
|
113
|
+
// Displayed text per column, keyed to the original row order. It does not
|
|
114
|
+
// change with the view, so capture it once from the initial full render.
|
|
115
|
+
function captureDisplay(el, cols) {
|
|
116
|
+
const disp = {};
|
|
117
|
+
cols.forEach(c => disp[c] = []);
|
|
118
|
+
el.querySelectorAll("tbody tr").forEach((tr, ri) => cols.forEach(
|
|
119
|
+
(c, ci) => disp[c][ri] = tr.children[ci]?.textContent ?? ""
|
|
120
|
+
));
|
|
121
|
+
return disp;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function enhance(el, spec) {
|
|
125
|
+
if (!isFlat(spec)) return console.warn(
|
|
126
|
+
"lt: interactive tables need flat rows (no row groups or indentation); " +
|
|
127
|
+
"rendering a static table."
|
|
128
|
+
);
|
|
129
|
+
const opts = spec.interactive, cols = spec._cols || [],
|
|
130
|
+
disp = captureDisplay(el, cols),
|
|
131
|
+
// the bottom header row: the one whose cells line up with `cols`
|
|
132
|
+
hrow = [...el.querySelectorAll("thead tr")].pop(),
|
|
133
|
+
state = { filters: {}, page: 0, pageSize: 0 };
|
|
134
|
+
let view, // filtered + sorted indices, cached across page turns
|
|
135
|
+
sync = () => {}; // pager readout, replaced by addPaginate()
|
|
136
|
+
|
|
137
|
+
// `stale` means the view itself changed (a term or the sort), as opposed to
|
|
138
|
+
// only the page: recompute it and go back to the first page.
|
|
139
|
+
const refresh = (stale = true) => {
|
|
140
|
+
if (stale) { view = computeView(spec, disp, state); state.page = 0; }
|
|
141
|
+
const rows = pageSlice(view, state),
|
|
142
|
+
tmp = el.ownerDocument.createElement("template");
|
|
143
|
+
tmp.innerHTML = LT.buildHtml({ ...spec, _viewRows: rows });
|
|
144
|
+
const body = tmp.content.querySelector("tbody");
|
|
145
|
+
if (!rows.length) // no matches: a neutral symbol spanning all columns
|
|
146
|
+
body.innerHTML = `<tr class="lti-empty"><td colspan="${cols.length}">—</td></tr>`;
|
|
147
|
+
el.querySelector("tbody").replaceWith(body);
|
|
148
|
+
sync(view.length);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
if (opts.search !== false) addSearch(el, cols, state, refresh);
|
|
152
|
+
// wire sort before adding the filter row, so it sees the header row only
|
|
153
|
+
if (opts.sort !== false) addSort(hrow, cols, state, refresh);
|
|
154
|
+
if (opts.filter) addFilter(hrow, cols, opts.filter, state, refresh);
|
|
155
|
+
if (opts.resize) addResize(el, hrow, cols.length);
|
|
156
|
+
// `pager` is the page sizes to offer, the first one being the initial
|
|
157
|
+
if (opts.pager) {
|
|
158
|
+
const sizes = Array.isArray(opts.pager) ? opts.pager : [10, 25, 50, 100];
|
|
159
|
+
sync = addPaginate(el, cols, sizes, state, () => refresh(false));
|
|
160
|
+
refresh(); // cut the full render down to the first page
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// A search input: `type="search"` lets the browser supply the affordance (and
|
|
165
|
+
// a clear button), so there is no icon or placeholder text to translate; the
|
|
166
|
+
// label is for screen readers only.
|
|
167
|
+
function searchInput(doc, label) {
|
|
168
|
+
const input = doc.createElement("input");
|
|
169
|
+
input.type = "search";
|
|
170
|
+
input.setAttribute("aria-label", label);
|
|
171
|
+
return input;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// A full-width row of the table, for a control that belongs to the table as a
|
|
175
|
+
// whole. Living inside the table (instead of beside it) is what keeps the
|
|
176
|
+
// controls exactly as wide as the table, however narrow that is, and keeps
|
|
177
|
+
// everything inside the core `.lt-wrap` scroll box. Returns its single cell.
|
|
178
|
+
function fullRow(sect, cls, nCol, pos) {
|
|
179
|
+
const cell = sect.insertRow(pos).appendChild(
|
|
180
|
+
sect.ownerDocument.createElement("td")
|
|
181
|
+
);
|
|
182
|
+
cell.parentNode.className = cls;
|
|
183
|
+
cell.colSpan = nCol;
|
|
184
|
+
return cell;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Debounce typing so a long list is not re-rendered per keystroke; Enter (or
|
|
188
|
+
// leaving the box) applies at once.
|
|
189
|
+
function onType(input, apply) {
|
|
190
|
+
let timer;
|
|
191
|
+
const go = () => apply(input.value);
|
|
192
|
+
input.oninput = () => { clearTimeout(timer); timer = setTimeout(go, 150); };
|
|
193
|
+
input.onchange = () => { clearTimeout(timer); go(); };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Table-wide search box, as the first row of <thead>.
|
|
197
|
+
function addSearch(el, cols, state, refresh) {
|
|
198
|
+
const cell = fullRow(el.tHead || el.createTHead(), "lti-head", cols.length, 0),
|
|
199
|
+
input = cell.appendChild(searchInput(el.ownerDocument, "Search"));
|
|
200
|
+
input.className = "lti-search";
|
|
201
|
+
onType(input, v => { state.term = v; refresh(); });
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Click-to-sort headers, one column at a time: clicking cycles asc → desc →
|
|
205
|
+
// unsorted. The indicator and aria-sort live on the <th>, which survives the
|
|
206
|
+
// <tbody> swap, so they need no re-render.
|
|
207
|
+
function addSort(hrow, cols, state, refresh) {
|
|
208
|
+
const doc = hrow.ownerDocument, marks = [];
|
|
209
|
+
hrow.querySelectorAll("th").forEach((th, ci) => {
|
|
210
|
+
const col = cols[ci];
|
|
211
|
+
if (col == null) return;
|
|
212
|
+
th.classList.add("lti-sortable");
|
|
213
|
+
const ind = th.appendChild(doc.createElement("span"));
|
|
214
|
+
ind.className = "lti-sort";
|
|
215
|
+
marks.push([th, ind]);
|
|
216
|
+
th.onclick = () => {
|
|
217
|
+
const dir = state.sortCol !== col ? "asc" : state.sortDir === "asc" ?
|
|
218
|
+
"desc" : state.sortDir === "desc" ? null : "asc";
|
|
219
|
+
state.sortCol = col;
|
|
220
|
+
state.sortDir = dir;
|
|
221
|
+
marks.forEach(([t, m]) => {
|
|
222
|
+
t.removeAttribute("aria-sort");
|
|
223
|
+
m.textContent = "";
|
|
224
|
+
});
|
|
225
|
+
if (dir) {
|
|
226
|
+
th.setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending");
|
|
227
|
+
ind.textContent = dir === "asc" ? "▲" : "▼";
|
|
228
|
+
}
|
|
229
|
+
refresh();
|
|
230
|
+
};
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// A row of per-column search boxes below the headers, inside <thead> so the
|
|
235
|
+
// <tbody> swap leaves it (and what has been typed into it) alone.
|
|
236
|
+
// `opt.columns`, when an array, restricts which columns get a box.
|
|
237
|
+
function addFilter(hrow, cols, opt, state, refresh) {
|
|
238
|
+
const doc = hrow.ownerDocument, only = opt.columns,
|
|
239
|
+
row = doc.createElement("tr");
|
|
240
|
+
row.className = "lti-filters";
|
|
241
|
+
cols.forEach(c => {
|
|
242
|
+
const cell = row.appendChild(doc.createElement("td"));
|
|
243
|
+
if (Array.isArray(only) && !only.includes(c)) return;
|
|
244
|
+
const input = cell.appendChild(searchInput(doc, `Filter ${c}`));
|
|
245
|
+
onType(input, v => { state.filters[c] = v; refresh(); });
|
|
246
|
+
});
|
|
247
|
+
hrow.parentNode.appendChild(row);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// The table's <colgroup>, created (one <col> per column) when core emitted
|
|
251
|
+
// none — it only does so for a table given explicit widths on the R side.
|
|
252
|
+
function colGroup(el, nCol) {
|
|
253
|
+
let g = el.querySelector("colgroup");
|
|
254
|
+
if (!g) {
|
|
255
|
+
const doc = el.ownerDocument;
|
|
256
|
+
g = doc.createElement("colgroup");
|
|
257
|
+
for (let i = 0; i < nCol; i++) g.appendChild(doc.createElement("col"));
|
|
258
|
+
// <colgroup> comes after <caption> (the title), before <thead>
|
|
259
|
+
el.insertBefore(g, el.caption?.nextSibling || el.firstChild);
|
|
260
|
+
}
|
|
261
|
+
return [...g.children];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Drag-to-resize column edges: a grip on the right edge of each header cell.
|
|
265
|
+
// The widths live on the <colgroup>, which is outside <tbody> and so survives
|
|
266
|
+
// every re-render. On the first drag the table is switched to fixed layout
|
|
267
|
+
// with every column frozen at the width it has then, so that dragging one
|
|
268
|
+
// edge moves that edge alone instead of reflowing the whole table. A
|
|
269
|
+
// double-click on a grip fits its column to its content.
|
|
270
|
+
function addResize(el, hrow, nCol) {
|
|
271
|
+
const doc = el.ownerDocument, ths = [...hrow.querySelectorAll("th")],
|
|
272
|
+
cs = colGroup(el, nCol), wOf = e => e.getBoundingClientRect().width;
|
|
273
|
+
const freeze = () => {
|
|
274
|
+
if (el.classList.contains("lti-fixed")) return;
|
|
275
|
+
const w = ths.map(wOf);
|
|
276
|
+
el.style.width = wOf(el) + "px";
|
|
277
|
+
cs.forEach((c, i) => c.style.width = w[i] + "px");
|
|
278
|
+
el.classList.add("lti-fixed");
|
|
279
|
+
};
|
|
280
|
+
// What column `i` is wide when nothing constrains it: its content width.
|
|
281
|
+
// Measuring it means laying the table out unconstrained and putting the
|
|
282
|
+
// widths back, so only do this on demand (a double-click).
|
|
283
|
+
const natural = i => {
|
|
284
|
+
const keep = cs.map(c => c.style.width), tw = el.style.width;
|
|
285
|
+
cs.forEach(c => c.style.width = "");
|
|
286
|
+
el.style.width = "";
|
|
287
|
+
el.classList.remove("lti-fixed");
|
|
288
|
+
const w = wOf(ths[i]); // forces the reflow
|
|
289
|
+
cs.forEach((c, j) => c.style.width = keep[j]);
|
|
290
|
+
el.style.width = tw;
|
|
291
|
+
el.classList.add("lti-fixed");
|
|
292
|
+
return w;
|
|
293
|
+
};
|
|
294
|
+
// Give column `i` a width of `w` px, widening or narrowing the table by as
|
|
295
|
+
// much: the other columns keep the widths they have (the wrapper scrolls).
|
|
296
|
+
const setWidth = (i, w) => {
|
|
297
|
+
const old = parseFloat(cs[i].style.width);
|
|
298
|
+
cs[i].style.width = Math.max(w, MIN_COL) + "px";
|
|
299
|
+
el.style.width =
|
|
300
|
+
parseFloat(el.style.width) + parseFloat(cs[i].style.width) - old + "px";
|
|
301
|
+
};
|
|
302
|
+
ths.forEach((th, i) => {
|
|
303
|
+
const grip = th.appendChild(doc.createElement("div"));
|
|
304
|
+
grip.className = "lti-resizer";
|
|
305
|
+
// the grip sits in a header cell that may sort on click: its own events
|
|
306
|
+
// stop here, or a drag would sort the column as well
|
|
307
|
+
grip.onclick = e => e.stopPropagation();
|
|
308
|
+
grip.ondblclick = e => {
|
|
309
|
+
e.stopPropagation();
|
|
310
|
+
freeze();
|
|
311
|
+
setWidth(i, natural(i));
|
|
312
|
+
};
|
|
313
|
+
grip.onpointerdown = e => {
|
|
314
|
+
e.preventDefault(); // no text selection while dragging
|
|
315
|
+
e.stopPropagation();
|
|
316
|
+
freeze();
|
|
317
|
+
const x0 = e.clientX, w0 = parseFloat(cs[i].style.width),
|
|
318
|
+
move = ev => setWidth(i, w0 + ev.clientX - x0);
|
|
319
|
+
el.classList.add("lti-resizing");
|
|
320
|
+
doc.addEventListener("pointermove", move);
|
|
321
|
+
doc.addEventListener("pointerup", () => {
|
|
322
|
+
doc.removeEventListener("pointermove", move);
|
|
323
|
+
el.classList.remove("lti-resizing");
|
|
324
|
+
}, { once: true });
|
|
325
|
+
};
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Pager as the last row of <tfoot> (after any footnotes), with a page-size
|
|
330
|
+
// <select> when there is more than one size to offer. Both are symbols or
|
|
331
|
+
// numbers only: « ‹ › » for first/previous/next/last and `from–to / total`
|
|
332
|
+
// for the position. Returns the callback that updates them for a new row
|
|
333
|
+
// count.
|
|
334
|
+
function addPaginate(el, cols, sizes, state, repage) {
|
|
335
|
+
const doc = el.ownerDocument;
|
|
336
|
+
let foot = el.tFoot;
|
|
337
|
+
// reuse the core footer if there is one, so the pager is sized like it
|
|
338
|
+
if (!foot) (foot = el.createTFoot()).className = "lt-footer";
|
|
339
|
+
const bar = fullRow(foot, "lti-pager-row", cols.length, -1)
|
|
340
|
+
.appendChild(doc.createElement("div")),
|
|
341
|
+
pos = doc.createElement("span");
|
|
342
|
+
state.pageSize = sizes[0];
|
|
343
|
+
bar.className = "lti-pager";
|
|
344
|
+
pos.className = "lti-pos";
|
|
345
|
+
// the last page is clamped by pageSlice(), so a large number will do
|
|
346
|
+
const steps = [() => 0, p => p - 1, p => p + 1, () => 1e9];
|
|
347
|
+
const btns = ["«", "‹", "›", "»"].map((glyph, i) => {
|
|
348
|
+
const b = bar.appendChild(doc.createElement("button"));
|
|
349
|
+
b.type = "button";
|
|
350
|
+
b.textContent = glyph;
|
|
351
|
+
b.setAttribute("aria-label", ["First", "Previous", "Next", "Last"][i]);
|
|
352
|
+
b.onclick = () => { state.page = steps[i](state.page); repage(); };
|
|
353
|
+
return b;
|
|
354
|
+
});
|
|
355
|
+
bar.appendChild(pos);
|
|
356
|
+
if (sizes.length > 1) {
|
|
357
|
+
const sel = bar.appendChild(doc.createElement("select"));
|
|
358
|
+
sel.setAttribute("aria-label", "Rows per page");
|
|
359
|
+
sizes.forEach(n => {
|
|
360
|
+
const o = sel.appendChild(doc.createElement("option"));
|
|
361
|
+
o.value = n;
|
|
362
|
+
o.textContent = n || "∞"; // 0: every row
|
|
363
|
+
});
|
|
364
|
+
sel.onchange = () => { state.pageSize = +sel.value; state.page = 0; repage(); };
|
|
365
|
+
}
|
|
366
|
+
return total => {
|
|
367
|
+
// a page size of 0 is one page holding everything
|
|
368
|
+
const n = state.pageSize || total || 1,
|
|
369
|
+
last = Math.max(0, Math.ceil(total / n) - 1);
|
|
370
|
+
pos.textContent = total ?
|
|
371
|
+
`${state.page * n + 1}–${Math.min(total, (state.page + 1) * n)} / ${total}` :
|
|
372
|
+
"0 / 0";
|
|
373
|
+
btns.forEach((b, i) => b.disabled = i < 2 ? !state.page : state.page === last);
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Enhance a mounted table that opted in (idempotent via the dataset flag).
|
|
378
|
+
const onMount = (el, spec) => {
|
|
379
|
+
if (!spec?.interactive || el.dataset.ltiOn) return;
|
|
380
|
+
el.dataset.ltiOn = "1";
|
|
381
|
+
enhance(el, spec);
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
LT.plugins.interactive = { matcher, computeView, pageSlice, enhance };
|
|
385
|
+
LT.onMount.push(onMount);
|
|
386
|
+
// Core drains its render queue before this file loads, so the callback above
|
|
387
|
+
// only sees later renders; enhance the tables already on the page now.
|
|
388
|
+
// (Skipped in non-DOM hosts, e.g. the Node.js tests.)
|
|
389
|
+
if (typeof document !== "undefined")
|
|
390
|
+
document.querySelectorAll(".lt-table").forEach(el => onMount(el, el._ltSpec));
|
|
391
|
+
})(typeof window !== "undefined" ? window : globalThis);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(()=>{"use strict";const t=(typeof window!=="undefined"?window:globalThis).LT;if(!t?.onMount||t.plugins.interactive)return;let e;function n(t){const e=String(t??"").trim();if(""===e)return null;if(/(^|[^\w$])x([^\w$]|$)/.test(e)){let t;try{t=new Function("x",`return (${e});`)}catch(t){}if(t){const n=/^\s*!|!=/.test(e),r=e=>{if(null==e)return n;try{const n=Number(e);return!!t(String(e))||""!==e&&isFinite(n)&&!!t(n)}catch(t){return!1}};return t=>t[n?"every":"some"](t=>r(t.raw))}}const n="!"===e[0],r=(n?e.slice(1).trim():e).toLowerCase();return""===r?null:t=>n!==t.some(t=>null!=t.disp&&String(t.disp).toLowerCase().includes(r))}function r(t,r,o){const i=t._cols||[],l=t.data||{},a=(t,e)=>({raw:l[t]?.[e-1]??null,disp:r[t]?.[e-1]??""});let s=Array.from({length:(l[i[0]]||[]).length},(t,e)=>e+1);for(const t in o.filters||{}){const e=n(o.filters[t]);e&&(s=s.filter(n=>e([a(t,n)])))}const c=n(o.term);c&&(s=s.filter(t=>c(i.map(e=>a(e,t)))));const p=l[o.sortCol];if(p&&o.sortDir){const t=(t=>"number"==typeof t.find(t=>null!=t))(p),n="desc"===o.sortDir?-1:1;e||=new Intl.Collator,s.sort((r,o)=>{const i=p[r-1],l=p[o-1];return null==i||null==l?i==l?0:null==i?1:-1:n*(t?i-l:e.compare(String(i),String(l)))})}return s}function o(t,e){const n=e.pageSize;if(!n)return e.page=0,t;const r=Math.max(0,Math.ceil(t.length/n)-1);return e.page=Math.min(Math.max(e.page||0,0),r),t.slice(e.page*n,(e.page+1)*n)}function i(e,n){if(!(t=>!t.row_group&&!(t.ops||[]).some(t=>"row_group"===t.type||"indent"===t.type))(n))return console.warn("lt: interactive tables need flat rows (no row groups or indentation); rendering a static table.");const i=n.interactive,c=n._cols||[],p=function(t,e){const n={};return e.forEach(t=>n[t]=[]),t.querySelectorAll("tbody tr").forEach((t,r)=>e.forEach((e,o)=>n[e][r]=t.children[o]?.textContent??"")),n}(e,c),d=[...e.querySelectorAll("thead tr")].pop(),u={filters:{},page:0,pageSize:0};let h,f=()=>{};const m=(i=!0)=>{i&&(h=r(n,p,u),u.page=0);const l=o(h,u),a=e.ownerDocument.createElement("template");a.innerHTML=t.buildHtml({...n,_viewRows:l});const s=a.content.querySelector("tbody");l.length||(s.innerHTML=`<tr class="lti-empty"><td colspan="${c.length}">—</td></tr>`),e.querySelector("tbody").replaceWith(s),f(h.length)};if(!1!==i.search&&function(t,e,n,r){const o=a(t.tHead||t.createTHead(),"lti-head",e.length,0),i=o.appendChild(l(t.ownerDocument,"Search"));i.className="lti-search",s(i,t=>{n.term=t,r()})}(e,c,u,m),!1!==i.sort&&function(t,e,n,r){const o=t.ownerDocument,i=[];t.querySelectorAll("th").forEach((t,l)=>{const a=e[l];if(null==a)return;t.classList.add("lti-sortable");const s=t.appendChild(o.createElement("span"));s.className="lti-sort",i.push([t,s]),t.onclick=()=>{const e=n.sortCol!==a?"asc":"asc"===n.sortDir?"desc":"desc"===n.sortDir?null:"asc";n.sortCol=a,n.sortDir=e,i.forEach(([t,e])=>{t.removeAttribute("aria-sort"),e.textContent=""}),e&&(t.setAttribute("aria-sort","asc"===e?"ascending":"descending"),s.textContent="asc"===e?"▲":"▼"),r()}})}(d,c,u,m),i.filter&&function(t,e,n,r,o){const i=t.ownerDocument,a=n.columns,c=i.createElement("tr");c.className="lti-filters",e.forEach(t=>{const e=c.appendChild(i.createElement("td"));if(Array.isArray(a)&&!a.includes(t))return;s(e.appendChild(l(i,`Filter ${t}`)),e=>{r.filters[t]=e,o()})}),t.parentNode.appendChild(c)}(d,c,i.filter,u,m),i.resize&&function(t,e,n){const r=t.ownerDocument,o=[...e.querySelectorAll("th")],i=function(t,e){let n=t.querySelector("colgroup");if(!n){const r=t.ownerDocument;n=r.createElement("colgroup");for(let t=0;t<e;t++)n.appendChild(r.createElement("col"));t.insertBefore(n,t.caption?.nextSibling||t.firstChild)}return[...n.children]}(t,n),l=t=>t.getBoundingClientRect().width,a=()=>{if(t.classList.contains("lti-fixed"))return;const e=o.map(l);t.style.width=l(t)+"px",i.forEach((t,n)=>t.style.width=e[n]+"px"),t.classList.add("lti-fixed")},s=e=>{const n=i.map(t=>t.style.width),r=t.style.width;i.forEach(t=>t.style.width=""),t.style.width="",t.classList.remove("lti-fixed");const a=l(o[e]);return i.forEach((t,e)=>t.style.width=n[e]),t.style.width=r,t.classList.add("lti-fixed"),a},c=(e,n)=>{const r=parseFloat(i[e].style.width);i[e].style.width=Math.max(n,24)+"px",t.style.width=parseFloat(t.style.width)+parseFloat(i[e].style.width)-r+"px"};o.forEach((e,n)=>{const o=e.appendChild(r.createElement("div"));o.className="lti-resizer",o.onclick=t=>t.stopPropagation(),o.ondblclick=t=>{t.stopPropagation(),a(),c(n,s(n))},o.onpointerdown=e=>{e.preventDefault(),e.stopPropagation(),a();const o=e.clientX,l=parseFloat(i[n].style.width),s=t=>c(n,l+t.clientX-o);t.classList.add("lti-resizing"),r.addEventListener("pointermove",s),r.addEventListener("pointerup",()=>{r.removeEventListener("pointermove",s),t.classList.remove("lti-resizing")},{once:!0})}})}(e,d,c.length),i.pager){const t=Array.isArray(i.pager)?i.pager:[10,25,50,100];f=function(t,e,n,r,o){const i=t.ownerDocument;let l=t.tFoot;l||((l=t.createTFoot()).className="lt-footer");const s=a(l,"lti-pager-row",e.length,-1).appendChild(i.createElement("div")),c=i.createElement("span");r.pageSize=n[0],s.className="lti-pager",c.className="lti-pos";const p=[()=>0,t=>t-1,t=>t+1,()=>1e9],d=["«","‹","›","»"].map((t,e)=>{const n=s.appendChild(i.createElement("button"));return n.type="button",n.textContent=t,n.setAttribute("aria-label",["First","Previous","Next","Last"][e]),n.onclick=()=>{r.page=p[e](r.page),o()},n});if(s.appendChild(c),n.length>1){const t=s.appendChild(i.createElement("select"));t.setAttribute("aria-label","Rows per page"),n.forEach(e=>{const n=t.appendChild(i.createElement("option"));n.value=e,n.textContent=e||"∞"}),t.onchange=()=>{r.pageSize=+t.value,r.page=0,o()}}return t=>{const e=r.pageSize||t||1,n=Math.max(0,Math.ceil(t/e)-1);c.textContent=t?`${r.page*e+1}–${Math.min(t,(r.page+1)*e)} / ${t}`:"0 / 0",d.forEach((t,e)=>t.disabled=e<2?!r.page:r.page===n)}}(e,c,t,u,()=>m(!1)),m()}}function l(t,e){const n=t.createElement("input");return n.type="search",n.setAttribute("aria-label",e),n}function a(t,e,n,r){const o=t.insertRow(r).appendChild(t.ownerDocument.createElement("td"));return o.parentNode.className=e,o.colSpan=n,o}function s(t,e){let n;const r=()=>e(t.value);t.oninput=()=>{clearTimeout(n),n=setTimeout(r,150)},t.onchange=()=>{clearTimeout(n),r()}}const c=(t,e)=>{e?.interactive&&!t.dataset.ltiOn&&(t.dataset.ltiOn="1",i(t,e))};t.plugins.interactive={matcher:n,computeView:r,pageSlice:o,enhance:i},t.onMount.push(c),"undefined"!=typeof document&&document.querySelectorAll(".lt-table").forEach(t=>c(t,t._ltSpec))})();
|
|
2
|
+
//# sourceMappingURL=lt-interactive.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LT","window","globalThis","onMount","plugins","interactive","coll","matcher","term","v","String","trim","test","fn","Function","e","neg","raw","num","Number","isFinite","cells","c","needle","slice","toLowerCase","some","disp","includes","computeView","spec","state","cols","_cols","data","cell","r","idx","Array","from","length","_","i","filters","pred","filter","map","col","sortCol","sortDir","find","numCol","dir","Intl","Collator","sort","a","b","x","y","compare","pageSlice","view","n","pageSize","page","last","Math","max","ceil","min","enhance","el","row_group","ops","o","type","isFlat","console","warn","opts","forEach","querySelectorAll","tr","ri","ci","children","textContent","captureDisplay","hrow","pop","sync","refresh","stale","rows","tmp","ownerDocument","createElement","innerHTML","buildHtml","_viewRows","body","content","querySelector","replaceWith","search","fullRow","tHead","createTHead","input","appendChild","searchInput","className","onType","addSearch","doc","marks","th","classList","add","ind","push","onclick","t","m","removeAttribute","setAttribute","addSort","opt","only","columns","row","isArray","parentNode","addFilter","resize","nCol","ths","cs","g","insertBefore","caption","nextSibling","firstChild","colGroup","wOf","getBoundingClientRect","width","freeze","contains","w","style","natural","keep","tw","remove","j","setWidth","old","parseFloat","grip","stopPropagation","ondblclick","onpointerdown","preventDefault","x0","clientX","w0","move","ev","addEventListener","removeEventListener","once","addResize","pager","sizes","repage","foot","tFoot","createTFoot","bar","pos","steps","p","btns","glyph","sel","value","onchange","total","disabled","addPaginate","label","sect","cls","insertRow","colSpan","apply","timer","go","oninput","clearTimeout","setTimeout","dataset","ltiOn","document","_ltSpec"],"sources":["lt-interactive.js"],"mappings":"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","ignoreList":[]}
|
package/js/lt.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* lt.js — build a semantic <table> from a JSON spec.
|
|
2
|
-
* Call LT.build(spec) from an inline <script> to render a table in place
|
|
2
|
+
* Call LT.build(spec) from an inline <script> to render a table in place, or
|
|
3
|
+
* LT.render(el, spec) to render one into a container at any later time.
|
|
3
4
|
* One runtime per page renders any number of tables.
|
|
4
5
|
*/
|
|
5
6
|
(root => {
|
|
@@ -577,7 +578,11 @@
|
|
|
577
578
|
out.push(`</tr>`);
|
|
578
579
|
};
|
|
579
580
|
|
|
580
|
-
// <tbody
|
|
581
|
+
// <tbody>. An optional `spec._viewRows` (1-based original row indices) sets
|
|
582
|
+
// the order/subset of rows for the flat case — the seam the interactive
|
|
583
|
+
// plugin uses to sort/filter without re-implementing row rendering. Absent
|
|
584
|
+
// ⇒ all rows in original order (the default). Row-indexed styles/footnotes/
|
|
585
|
+
// indent stay correct because they remain keyed to the original indices.
|
|
581
586
|
out.push(`<tbody>`);
|
|
582
587
|
if (groups.length) {
|
|
583
588
|
const seen = {};
|
|
@@ -586,6 +591,8 @@
|
|
|
586
591
|
for (const r of g.rows) { seen[r] = 1; pushRow(r); }
|
|
587
592
|
}
|
|
588
593
|
for (let r = 1; r <= nRow; r++) if (!seen[r]) pushRow(r);
|
|
594
|
+
} else if (spec._viewRows) {
|
|
595
|
+
for (const r of spec._viewRows) pushRow(r);
|
|
589
596
|
} else {
|
|
590
597
|
for (let r = 1; r <= nRow; r++) pushRow(r);
|
|
591
598
|
}
|
|
@@ -601,20 +608,57 @@
|
|
|
601
608
|
}
|
|
602
609
|
|
|
603
610
|
out.push(`</table>`);
|
|
611
|
+
// Expose the resolved visible column order (after hide/move) so plugins can
|
|
612
|
+
// sort/filter without re-deriving it. Set as a side effect, never read by
|
|
613
|
+
// core; harmless for the static/Node render path.
|
|
614
|
+
spec._cols = cols;
|
|
604
615
|
// Wrap in a div so a wide table can scroll horizontally (`overflow-x`)
|
|
605
616
|
// instead of overflowing the page.
|
|
606
617
|
return `<div class="lt-wrap">${out.join("")}</div>`;
|
|
607
618
|
}
|
|
608
619
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
620
|
+
// Plugin seam (see lt-interactive.js): a plugin attaches its handle under
|
|
621
|
+
// LT.plugins and pushes a callback onto LT.onMount, which core calls with
|
|
622
|
+
// each table element and its spec right after the table is mounted.
|
|
623
|
+
const plugins = root.LT?.plugins || {}, onMount = root.LT?.onMount || [];
|
|
624
|
+
|
|
625
|
+
// Alt-click toggles raw values in this table; alt-dblclick toggles page-wide.
|
|
626
|
+
const wireRaw = tbl => {
|
|
627
|
+
const raw = (e, el) => e.altKey && el.classList.toggle("lt-raw");
|
|
613
628
|
tbl.onclick = e => e.detail === 1 && raw(e, tbl);
|
|
614
629
|
tbl.ondblclick = e => raw(e, tbl.ownerDocument.documentElement);
|
|
615
630
|
};
|
|
631
|
+
|
|
632
|
+
// Finish a freshly inserted table: remember its spec, wire the raw-value
|
|
633
|
+
// toggle, and let the plugins enhance it. Returns the table element.
|
|
634
|
+
const ready = (tbl, spec) => {
|
|
635
|
+
// Stash the spec so a plugin loaded *after* this table mounted (the usual
|
|
636
|
+
// case — core drains the queue before a plugin file runs) can still find
|
|
637
|
+
// and enhance it by scanning `.lt-table`.
|
|
638
|
+
tbl._ltSpec = spec;
|
|
639
|
+
wireRaw(tbl);
|
|
640
|
+
onMount.forEach(f => f(tbl, spec));
|
|
641
|
+
return tbl;
|
|
642
|
+
};
|
|
643
|
+
|
|
644
|
+
const mount = (s, spec) => {
|
|
645
|
+
s.insertAdjacentHTML("afterend", buildHtml(spec));
|
|
646
|
+
ready(s.nextElementSibling.querySelector("table"), spec);
|
|
647
|
+
};
|
|
648
|
+
|
|
649
|
+
// Render a spec into `el` (replacing its content) at any time, e.g. long
|
|
650
|
+
// after the page loaded, for a table built on demand. Unlike build(), it
|
|
651
|
+
// needs no inline <script> to anchor to, and the caller may hold on to the
|
|
652
|
+
// returned table element.
|
|
653
|
+
const render = (el, spec) => {
|
|
654
|
+
el.innerHTML = buildHtml(spec);
|
|
655
|
+
return ready(el.querySelector("table"), spec);
|
|
656
|
+
};
|
|
616
657
|
// q.push renders immediately; replay any entries queued before we loaded.
|
|
617
658
|
const q = { push: e => mount(e.s, e.d) };
|
|
618
659
|
(root.LT?.q || []).forEach(q.push);
|
|
619
|
-
root.LT = {
|
|
660
|
+
root.LT = {
|
|
661
|
+
build: spec => mount(document.currentScript, spec),
|
|
662
|
+
render, buildHtml, plugins, onMount, q,
|
|
663
|
+
};
|
|
620
664
|
})(window);
|
package/js/lt.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(t=>{"use strict";if(t.LT?.buildHtml)return;const o=t=>String(t).replace(/&/g,"&").replace(/[<]/g,"<").replace(/>/g,">").replace(/"/g,"""),n=t=>Array.isArray(t)?String(t[0]??""):o(t),e=(t,n)=>t?String(n??""):o(n),s=(t,o)=>!0===t||Array.isArray(t)&&t.includes(o),l=t=>`<sup class="lt-fnref">${t}</sup>`,r=t=>t===1/0?"∞":t===-1/0?"-∞":String(t??""),c=t=>"number"==typeof t&&isFinite(t),i=t=>c(t)||Math.abs(t)===1/0,a=t=>t?.length&&"number"==typeof t.find(t=>null!=t),u=t=>(t.columns||Object.keys(t.data||{})).filter(o=>o in(t.data||{})),f=(t,o)=>{let n=o;for(const e of t)"label"===e.type&&null!=e.labels?.[o]&&(n=e.labels[o]);return n};function p(t,o,n,e){if(t===1/0)return"∞";if(t===-1/0)return"−∞";if(!c(t))return null;let s=null!=e?function(t){if(!/e/i.test(t))return t;const[,o,n,e="",s]=t.match(/^(-?)(\d+)(?:\.(\d+))?e([+-]?\d+)$/i),l=+s,r=n+e,c=n.length+l;let i;return i=c<=0?"0."+"0".repeat(-c)+r:c>=r.length?r+"0".repeat(c-r.length):r.slice(0,c)+"."+r.slice(c),o+i}(t.toPrecision(e)):null!=o?t.toFixed(o):String(t);if(/^-0(\.0+)?$/.test(s)&&(s=s.slice(1)),n){const t=s.split(".");t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,n),s=t.join(".")}return"-"===s[0]&&(s="−"+s.slice(1)),null!=o||n||null!=e?s:null}function h(t,o){if(!o)return t.filter(t=>""!==t).join(" ");let n=o,e="";for(;n;){const o=n.match(/<<(.*?)>>/);if(!o){e+=d(n,t);break}o.index>0&&(e+=d(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+=d(s,t)),n=n.slice(o.index+o[0].length)}return e}function d(t,o){for(let n=0;n<o.length;n++)t=t.split("{"+(n+1)+"}").join(o[n]);return t}function g(t){const o=t.data||{},n=t.ops||[],e=u(t),s=e.length?o[e[0]].length:0,l={};for(const t of e)l[t]=o[t].map(r);!function(t,o,n){if(!1===t.auto_format)return;const e=t.data||{},s=t.ops||[],l=u(t),r=new Set;for(const t of s)if("fmt_number"===t.type)for(const o of t.columns||l)r.add(o);for(const t of l){if(r.has(t))continue;const l=e[t];if(!a(l))continue;const u=f(s,t),h=/%|[ _](pct|percent)$/i.test(u);if(/year/i.test(u)&&l.every(t=>null==t||/^\d{4}$/.test(String(t))))continue;let d=0,g=0;for(const t of l){if(!c(t))continue;const o=Math.abs(h?100*t:t),n=o<1?0:Math.floor(Math.log10(o))+1;n>d&&(d=n);const e=String(t).match(/\.(\d+)/);if(!e)continue;const s=e[1].replace(/0+$/,"").length-(h?2:0);s>g&&(g=s)}g=Math.min(g,Math.max(4-d,0));for(let e=0;e<n;e++){const n=l[e];if(!i(n))continue;const s=p(h?100*n:n,g," ");null!=s&&(o[t][e]=s+(h?"%":""))}}}(t,l,s);const d=(t,n)=>{for(const e of t)if(o[e])for(let t=0;t<s;t++)n(e,t,o[e][t])};for(const t of n){const o=t.columns||e;switch(t.type){case"fmt_number":d(o,(o,n,e)=>{if(!i(e))return;const s=!0===t.percent?100*e:e,r=t.percent?"%":"",c=p(s,t.decimals,t.big_mark??"",t.sig_digits),a=t.prefix||"",u=(t.suffix||"")+r;null!=c?l[o][n]=a+c+u:(a||u)&&(l[o][n]=a+String(s)+u)});break;case"fmt_date":d(o,(o,n,e)=>{if(null==e)return;const s=e instanceof Date?e:new Date(e);isNaN(s)||(l[o][n]=t.method?s[t.method]():t.options?s.toLocaleDateString(t.locale,t.options):s.toLocaleDateString(t.locale))});break;case"sub":d(o,(o,n,e)=>{null!=t.small&&c(e)&&0!==e&&Math.abs(e)<t.small?l[o][n]=t.small_text??"<"+t.small:null!=t.zero&&0===e?l[o][n]=t.zero:null!=t.missing&&null==e&&(l[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<s;e++){const s=o.map(t=>l[t]?.[e]??"");l[n][e]=h(s,t.pattern)}break}}}const g=void 0===t.missing?"—":t.missing;if(g)for(const t of e)for(let n=0;n<s;n++)null==o[t][n]&&""===l[t][n]&&(l[t][n]=g);return{display:l,nRow:s}}function m(t){!function(t){if(!1===t.sort||!t.row_group)return;const o=t.data||{},n=[].concat(t.row_group),e=u(t),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 c=t.data||{},{display:i,nRow:p}=g(t),{visible:h,align:d,colLabels:m,colWidths:b,tableWidth:w,indent:$,groups:y,rowSpans:_,styles:x,spanners:S,footnotes:v,notes:A,header:k}=function(t){const o=t.data||{},n=t.ops||[],e=u(t),l=e.length?o[e[0]].length:0,c=(t,o)=>{for(const e of n)e.type===t&&o(e)};let i="string"==typeof t.row_group;const p=Array.isArray(t.row_group)?t.row_group:t.row_group?[t.row_group]:[];i||1!==p.length||!1===t.auto_sep||a(o[p[0]])||!o[p[0]]?.some(t=>(t+"").length>20)||(i=!0);const h=new Set;for(const t of p)h.add(t);c("merge",t=>{!1!==t.hide&&t.columns&&t.columns.slice(1).forEach(t=>h.add(t))});let d=e.filter(t=>!h.has(t));c("move",t=>{const o=(t.columns||[]).filter(t=>d.includes(t));if(!o.length)return;const n=d.filter(t=>!o.includes(t));if(null==t.after)d=[...o,...n];else{const e=n.indexOf(t.after);e>=0&&(d=[...n.slice(0,e+1),...o,...n.slice(e+1)])}});const g=(t,o,n)=>{const e=d.indexOf(o);e>=0&&(t[e]=n)},m=d.map(t=>a(o[t])?"right":"left");c("align",t=>{for(const o of t.columns||[])g(m,o,t.align)});const b=o=>!1===t.auto_label?o:o.replace(/[._]/g," "),w=d.map(b);let $,y;c("label",t=>{for(const[o,n]of Object.entries(t.labels||{}))g(w,o,n)}),c("width",t=>{if(t.table&&(y=t.table),t.widths){$||($=d.map(()=>""));for(const[o,n]of Object.entries(t.widths))g($,o,n)}});const _=new Array(l).fill(0);c("indent",t=>{if(t.rows)for(const o of t.rows)_[o-1]=t.level??1});const x=t=>{const o=[];for(let n=0;n<l;){const e=r(t[n]),s=[n+1];for(;++n<l&&r(t[n])===e;)s.push(n+1);o.push({label:e,rows:s})}return o};let S=[];if(i&&p.length&&o[p[0]]){const n=s(t.html_cols,p[0]);S.push(...x(o[p[0]]).map(t=>({...t,raw:n})))}c("row_group",t=>S.push({label:t.label,rows:t.rows})),c("group_order",t=>{if(!S.length)return;const o=[],n=[];for(const n of t.order||[]){const t=S.find(t=>t.label===n);t&&o.push(t)}for(const t of S)o.includes(t)||n.push(t);S=[...o,...n]});const v=[];if(!i&&p.length)for(const t of p){const e=new Array(l).fill(0);for(const n of x(o[t]||[]))e[n.rows[0]-1]=n.rows.length;v.push({col:t,label:f(n,t),spans:e})}const A=n.filter(t=>"style"===t.type);let k=(t.spanners||[]).map(t=>{const o=t.columns.slice().sort((t,o)=>d.indexOf(t)-d.indexOf(o));return{...t,columns:o}});if(t.auto_span){const o="string"==typeof t.auto_span?new RegExp(t.auto_span):/[._]/;k=[...k];for(let t=0;t<d.length;){const n=d[t].match(o);if(!n){t++;continue}const e=d[t].slice(0,n.index);let s=t+1;for(;s<d.length;){const t=d[s].match(o);if(!t||d[s].slice(0,t.index)!==e)break;s++}if(s-t>=2){k.push({label:e,columns:d.slice(t,s)});for(let n=t;n<s;n++){const t=d[n].match(o);t&&(w[n]=b(d[n].slice(t.index+t[0].length)))}}t=s}}return{visible:d,align:m,colLabels:w,colWidths:$,tableWidth:y,indent:_,groups:S,rowSpans:v,styles:A,spanners:k,footnotes:t.footnotes||[],notes:t.notes||[],header:t.header||{},nRow:l}}(t),j=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}}(v),L=((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})(v,j.idx),E=_.length,M=h.length+E,O=o=>s(t.html_cols,o),D=[`<table class="lt-table"${w?` style="width:${w}"`:""}>`],W=(t,o)=>{const n=L(t,o);return n?l(n):""},q=(t,o)=>i[t]?.[o-1]??"",R=(t,o)=>o?` ${t}="${o}"`:"",T=h.map((t,o)=>((0===o&&y.length?"lt-indent ":"")+({right:"al-r",center:"al-c"}[d[o]]||"")).trimEnd()),H=(t,o,n)=>{for(let e=1;e<=p;e++)if(!t||t.includes(e))for(const t of o||h){const o=h.indexOf(t);o>=0&&n(`${e},${o}`,t,e)}},z={},B={},F=(t,o,n,e)=>{t[o]=t[o]?t[o]+e+n:n};for(const t of x)H(t.rows,t.columns?[].concat(t.columns):null,(o,n,e)=>{t.test&&!t.test(c[n][e-1])||(t.css&&F(z,o,t.css,";"),t.class&&F(B,o,t.class," "))});if(b&&b.some(t=>t)){D.push("<colgroup>");for(let t=0;t<E;t++)D.push("<col>");for(let t=0;t<h.length;t++)D.push(`<col${R("style",b[t]?"width:"+b[t]:"")}>`);D.push("</colgroup>")}const N=[["title","lt-title"],["subtitle","lt-subtitle"]].filter(([t])=>null!=k[t]&&""!==k[t]).map(([t,o])=>`<div class="${o}">${n(k[t])}${W("title",t)}</div>`);if(N.length&&D.push('<caption class="lt-caption">',...N,"</caption>"),D.push("<thead>"),S.length){const t='<th class="lt-spanner-empty"></th>';D.push('<tr class="lt-spanner-row">'),D.push(t.repeat(E));for(let o=0;o<h.length;){const e=S.find(t=>t.columns[0]===h[o]);e?(D.push(`<th colspan="${e.columns.length}" scope="colgroup" class="lt-spanner">${n(e.label)}${W("column_spanners",e.label)}</th>`),o+=e.columns.length):(D.push(t),o++)}D.push("</tr>")}D.push("<tr>");for(const t of _)D.push(`<th scope="col">${n(t.label)}</th>`);for(let t=0;t<h.length;t++)D.push(`<th scope="col"${R("class",T[t])}>${n(m[t])}${W("column_labels",h[t])}</th>`);D.push("</tr></thead>");const K={};for(const t of v){if("body"!==t.location.type)continue;const o=j.idx[t.text];H(t.location.rows,t.location.columns||[],t=>{K[t]=o})}const P=t=>{D.push("<tr>");for(const o of _){const n=o.spans[t-1],s=(o.spans[t-2]||0)-1;n>0?D.push(`<th scope="row" class="lt-row-group${n>1?" lt-row-open":""}">${e(O(o.col),q(o.col,t))}${W("row_groups",r(c[o.col][t-1]))}</th>`):s>0&&D.push(`<th class="lt-row-group"${R("rowspan",s>1?s:0)}></th>`)}const n=$[t-1]||0;for(let s=0;s<h.length;s++){const a=`${t},${s}`,u=h[s],f=K[a],p=B[a],d=[T[s],p].filter(Boolean).join(" ");let g=z[a]||"";0===s&&n&&(g=(g?g+";":"")+`padding-left:${n+1}em`);const m=r(c[u][t-1]),b=i[u][t-1],w=m!==b?` title="${o(m)}"`:"";D.push(`<td${R("class",d)}${R("style",g)}${w}>${e(O(u),b)}${f?l(f):""}</td>`)}D.push("</tr>")};if(D.push("<tbody>"),y.length){const t={};for(const o of y){D.push(`<tr class="lt-row-group"><th colspan="${M}" scope="colgroup">${e(o.raw,o.label)}${W("row_groups",o.label)}</th></tr>`);for(const n of o.rows)t[n]=1,P(n)}for(let o=1;o<=p;o++)t[o]||P(o)}else for(let t=1;t<=p;t++)P(t);if(D.push("</tbody>"),j.order.length||A.length){const t=(t,o)=>`<tr class="${t}"><td colspan="${M}">${o}</td></tr>`;D.push('<tfoot class="lt-footer">'),j.order.forEach((o,e)=>D.push(t("lt-footnote",`${l(e+1)} ${n(o)}`)));for(const o of A)D.push(t("lt-source-note",n(o)));D.push("</tfoot>")}return D.push("</table>"),`<div class="lt-wrap">${D.join("")}</div>`}const b=(t,o)=>{t.insertAdjacentHTML("afterend",m(o));const n=t.nextElementSibling.querySelector("table"),e=(t,o)=>t.altKey&&o.classList.toggle("lt-raw");n.onclick=t=>1===t.detail&&e(t,n),n.ondblclick=t=>e(t,n.ownerDocument.documentElement)},w={push:t=>b(t.s,t.d)};(t.LT?.q||[]).forEach(w.push),t.LT={build:t=>b(document.currentScript,t),buildHtml:m,q:w}})(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=>Array.isArray(t)?String(t[0]??""):o(t),e=(t,n)=>t?String(n??""):o(n),s=(t,o)=>!0===t||Array.isArray(t)&&t.includes(o),l=t=>`<sup class="lt-fnref">${t}</sup>`,r=t=>t===1/0?"∞":t===-1/0?"-∞":String(t??""),c=t=>"number"==typeof t&&isFinite(t),i=t=>c(t)||Math.abs(t)===1/0,a=t=>t?.length&&"number"==typeof t.find(t=>null!=t),u=t=>(t.columns||Object.keys(t.data||{})).filter(o=>o in(t.data||{})),f=(t,o)=>{let n=o;for(const e of t)"label"===e.type&&null!=e.labels?.[o]&&(n=e.labels[o]);return n};function p(t,o,n,e){if(t===1/0)return"∞";if(t===-1/0)return"−∞";if(!c(t))return null;let s=null!=e?function(t){if(!/e/i.test(t))return t;const[,o,n,e="",s]=t.match(/^(-?)(\d+)(?:\.(\d+))?e([+-]?\d+)$/i),l=+s,r=n+e,c=n.length+l;let i;return i=c<=0?"0."+"0".repeat(-c)+r:c>=r.length?r+"0".repeat(c-r.length):r.slice(0,c)+"."+r.slice(c),o+i}(t.toPrecision(e)):null!=o?t.toFixed(o):String(t);if(/^-0(\.0+)?$/.test(s)&&(s=s.slice(1)),n){const t=s.split(".");t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,n),s=t.join(".")}return"-"===s[0]&&(s="−"+s.slice(1)),null!=o||n||null!=e?s:null}function h(t,o){if(!o)return t.filter(t=>""!==t).join(" ");let n=o,e="";for(;n;){const o=n.match(/<<(.*?)>>/);if(!o){e+=g(n,t);break}o.index>0&&(e+=g(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+=g(s,t)),n=n.slice(o.index+o[0].length)}return e}function g(t,o){for(let n=0;n<o.length;n++)t=t.split("{"+(n+1)+"}").join(o[n]);return t}function d(t){const o=t.data||{},n=t.ops||[],e=u(t),s=e.length?o[e[0]].length:0,l={};for(const t of e)l[t]=o[t].map(r);!function(t,o,n){if(!1===t.auto_format)return;const e=t.data||{},s=t.ops||[],l=u(t),r=new Set;for(const t of s)if("fmt_number"===t.type)for(const o of t.columns||l)r.add(o);for(const t of l){if(r.has(t))continue;const l=e[t];if(!a(l))continue;const u=f(s,t),h=/%|[ _](pct|percent)$/i.test(u);if(/year/i.test(u)&&l.every(t=>null==t||/^\d{4}$/.test(String(t))))continue;let g=0,d=0;for(const t of l){if(!c(t))continue;const o=Math.abs(h?100*t:t),n=o<1?0:Math.floor(Math.log10(o))+1;n>g&&(g=n);const e=String(t).match(/\.(\d+)/);if(!e)continue;const s=e[1].replace(/0+$/,"").length-(h?2:0);s>d&&(d=s)}d=Math.min(d,Math.max(4-g,0));for(let e=0;e<n;e++){const n=l[e];if(!i(n))continue;const s=p(h?100*n:n,d," ");null!=s&&(o[t][e]=s+(h?"%":""))}}}(t,l,s);const g=(t,n)=>{for(const e of t)if(o[e])for(let t=0;t<s;t++)n(e,t,o[e][t])};for(const t of n){const o=t.columns||e;switch(t.type){case"fmt_number":g(o,(o,n,e)=>{if(!i(e))return;const s=!0===t.percent?100*e:e,r=t.percent?"%":"",c=p(s,t.decimals,t.big_mark??"",t.sig_digits),a=t.prefix||"",u=(t.suffix||"")+r;null!=c?l[o][n]=a+c+u:(a||u)&&(l[o][n]=a+String(s)+u)});break;case"fmt_date":g(o,(o,n,e)=>{if(null==e)return;const s=e instanceof Date?e:new Date(e);isNaN(s)||(l[o][n]=t.method?s[t.method]():t.options?s.toLocaleDateString(t.locale,t.options):s.toLocaleDateString(t.locale))});break;case"sub":g(o,(o,n,e)=>{null!=t.small&&c(e)&&0!==e&&Math.abs(e)<t.small?l[o][n]=t.small_text??"<"+t.small:null!=t.zero&&0===e?l[o][n]=t.zero:null!=t.missing&&null==e&&(l[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<s;e++){const s=o.map(t=>l[t]?.[e]??"");l[n][e]=h(s,t.pattern)}break}}}const d=void 0===t.missing?"—":t.missing;if(d)for(const t of e)for(let n=0;n<s;n++)null==o[t][n]&&""===l[t][n]&&(l[t][n]=d);return{display:l,nRow:s}}function m(t){!function(t){if(!1===t.sort||!t.row_group)return;const o=t.data||{},n=[].concat(t.row_group),e=u(t),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 c=t.data||{},{display:i,nRow:p}=d(t),{visible:h,align:g,colLabels:m,colWidths:b,tableWidth:w,indent:$,groups:y,rowSpans:_,styles:x,spanners:S,footnotes:v,notes:A,header:L}=function(t){const o=t.data||{},n=t.ops||[],e=u(t),l=e.length?o[e[0]].length:0,c=(t,o)=>{for(const e of n)e.type===t&&o(e)};let i="string"==typeof t.row_group;const p=Array.isArray(t.row_group)?t.row_group:t.row_group?[t.row_group]:[];i||1!==p.length||!1===t.auto_sep||a(o[p[0]])||!o[p[0]]?.some(t=>(t+"").length>20)||(i=!0);const h=new Set;for(const t of p)h.add(t);c("merge",t=>{!1!==t.hide&&t.columns&&t.columns.slice(1).forEach(t=>h.add(t))});let g=e.filter(t=>!h.has(t));c("move",t=>{const o=(t.columns||[]).filter(t=>g.includes(t));if(!o.length)return;const n=g.filter(t=>!o.includes(t));if(null==t.after)g=[...o,...n];else{const e=n.indexOf(t.after);e>=0&&(g=[...n.slice(0,e+1),...o,...n.slice(e+1)])}});const d=(t,o,n)=>{const e=g.indexOf(o);e>=0&&(t[e]=n)},m=g.map(t=>a(o[t])?"right":"left");c("align",t=>{for(const o of t.columns||[])d(m,o,t.align)});const b=o=>!1===t.auto_label?o:o.replace(/[._]/g," "),w=g.map(b);let $,y;c("label",t=>{for(const[o,n]of Object.entries(t.labels||{}))d(w,o,n)}),c("width",t=>{if(t.table&&(y=t.table),t.widths){$||($=g.map(()=>""));for(const[o,n]of Object.entries(t.widths))d($,o,n)}});const _=new Array(l).fill(0);c("indent",t=>{if(t.rows)for(const o of t.rows)_[o-1]=t.level??1});const x=t=>{const o=[];for(let n=0;n<l;){const e=r(t[n]),s=[n+1];for(;++n<l&&r(t[n])===e;)s.push(n+1);o.push({label:e,rows:s})}return o};let S=[];if(i&&p.length&&o[p[0]]){const n=s(t.html_cols,p[0]);S.push(...x(o[p[0]]).map(t=>({...t,raw:n})))}c("row_group",t=>S.push({label:t.label,rows:t.rows})),c("group_order",t=>{if(!S.length)return;const o=[],n=[];for(const n of t.order||[]){const t=S.find(t=>t.label===n);t&&o.push(t)}for(const t of S)o.includes(t)||n.push(t);S=[...o,...n]});const v=[];if(!i&&p.length)for(const t of p){const e=new Array(l).fill(0);for(const n of x(o[t]||[]))e[n.rows[0]-1]=n.rows.length;v.push({col:t,label:f(n,t),spans:e})}const A=n.filter(t=>"style"===t.type);let L=(t.spanners||[]).map(t=>{const o=t.columns.slice().sort((t,o)=>g.indexOf(t)-g.indexOf(o));return{...t,columns:o}});if(t.auto_span){const o="string"==typeof t.auto_span?new RegExp(t.auto_span):/[._]/;L=[...L];for(let t=0;t<g.length;){const n=g[t].match(o);if(!n){t++;continue}const e=g[t].slice(0,n.index);let s=t+1;for(;s<g.length;){const t=g[s].match(o);if(!t||g[s].slice(0,t.index)!==e)break;s++}if(s-t>=2){L.push({label:e,columns:g.slice(t,s)});for(let n=t;n<s;n++){const t=g[n].match(o);t&&(w[n]=b(g[n].slice(t.index+t[0].length)))}}t=s}}return{visible:g,align:m,colLabels:w,colWidths:$,tableWidth:y,indent:_,groups:S,rowSpans:v,styles:A,spanners:L,footnotes:t.footnotes||[],notes:t.notes||[],header:t.header||{},nRow:l}}(t),k=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}}(v),M=((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})(v,k.idx),j=_.length,E=h.length+j,O=o=>s(t.html_cols,o),T=[`<table class="lt-table"${w?` style="width:${w}"`:""}>`],R=(t,o)=>{const n=M(t,o);return n?l(n):""},q=(t,o)=>i[t]?.[o-1]??"",D=(t,o)=>o?` ${t}="${o}"`:"",W=h.map((t,o)=>((0===o&&y.length?"lt-indent ":"")+({right:"al-r",center:"al-c"}[g[o]]||"")).trimEnd()),H=(t,o,n)=>{for(let e=1;e<=p;e++)if(!t||t.includes(e))for(const t of o||h){const o=h.indexOf(t);o>=0&&n(`${e},${o}`,t,e)}},z={},B={},F=(t,o,n,e)=>{t[o]=t[o]?t[o]+e+n:n};for(const t of x)H(t.rows,t.columns?[].concat(t.columns):null,(o,n,e)=>{t.test&&!t.test(c[n][e-1])||(t.css&&F(z,o,t.css,";"),t.class&&F(B,o,t.class," "))});if(b&&b.some(t=>t)){T.push("<colgroup>");for(let t=0;t<j;t++)T.push("<col>");for(let t=0;t<h.length;t++)T.push(`<col${D("style",b[t]?"width:"+b[t]:"")}>`);T.push("</colgroup>")}const N=[["title","lt-title"],["subtitle","lt-subtitle"]].filter(([t])=>null!=L[t]&&""!==L[t]).map(([t,o])=>`<div class="${o}">${n(L[t])}${R("title",t)}</div>`);if(N.length&&T.push('<caption class="lt-caption">',...N,"</caption>"),T.push("<thead>"),S.length){const t='<th class="lt-spanner-empty"></th>';T.push('<tr class="lt-spanner-row">'),T.push(t.repeat(j));for(let o=0;o<h.length;){const e=S.find(t=>t.columns[0]===h[o]);e?(T.push(`<th colspan="${e.columns.length}" scope="colgroup" class="lt-spanner">${n(e.label)}${R("column_spanners",e.label)}</th>`),o+=e.columns.length):(T.push(t),o++)}T.push("</tr>")}T.push("<tr>");for(const t of _)T.push(`<th scope="col">${n(t.label)}</th>`);for(let t=0;t<h.length;t++)T.push(`<th scope="col"${D("class",W[t])}>${n(m[t])}${R("column_labels",h[t])}</th>`);T.push("</tr></thead>");const K={};for(const t of v){if("body"!==t.location.type)continue;const o=k.idx[t.text];H(t.location.rows,t.location.columns||[],t=>{K[t]=o})}const P=t=>{T.push("<tr>");for(const o of _){const n=o.spans[t-1],s=(o.spans[t-2]||0)-1;n>0?T.push(`<th scope="row" class="lt-row-group${n>1?" lt-row-open":""}">${e(O(o.col),q(o.col,t))}${R("row_groups",r(c[o.col][t-1]))}</th>`):s>0&&T.push(`<th class="lt-row-group"${D("rowspan",s>1?s:0)}></th>`)}const n=$[t-1]||0;for(let s=0;s<h.length;s++){const a=`${t},${s}`,u=h[s],f=K[a],p=B[a],g=[W[s],p].filter(Boolean).join(" ");let d=z[a]||"";0===s&&n&&(d=(d?d+";":"")+`padding-left:${n+1}em`);const m=r(c[u][t-1]),b=i[u][t-1],w=m!==b?` title="${o(m)}"`:"";T.push(`<td${D("class",g)}${D("style",d)}${w}>${e(O(u),b)}${f?l(f):""}</td>`)}T.push("</tr>")};if(T.push("<tbody>"),y.length){const t={};for(const o of y){T.push(`<tr class="lt-row-group"><th colspan="${E}" scope="colgroup">${e(o.raw,o.label)}${R("row_groups",o.label)}</th></tr>`);for(const n of o.rows)t[n]=1,P(n)}for(let o=1;o<=p;o++)t[o]||P(o)}else if(t._viewRows)for(const o of t._viewRows)P(o);else for(let t=1;t<=p;t++)P(t);if(T.push("</tbody>"),k.order.length||A.length){const t=(t,o)=>`<tr class="${t}"><td colspan="${E}">${o}</td></tr>`;T.push('<tfoot class="lt-footer">'),k.order.forEach((o,e)=>T.push(t("lt-footnote",`${l(e+1)} ${n(o)}`)));for(const o of A)T.push(t("lt-source-note",n(o)));T.push("</tfoot>")}return T.push("</table>"),t._cols=h,`<div class="lt-wrap">${T.join("")}</div>`}const b=t.LT?.plugins||{},w=t.LT?.onMount||[],$=(t,o)=>(t._ltSpec=o,(t=>{const o=(t,o)=>t.altKey&&o.classList.toggle("lt-raw");t.onclick=n=>1===n.detail&&o(n,t),t.ondblclick=n=>o(n,t.ownerDocument.documentElement)})(t),w.forEach(n=>n(t,o)),t),y=(t,o)=>{t.insertAdjacentHTML("afterend",m(o)),$(t.nextElementSibling.querySelector("table"),o)},_={push:t=>y(t.s,t.d)};(t.LT?.q||[]).forEach(_.push),t.LT={build:t=>y(document.currentScript,t),render:(t,o)=>(t.innerHTML=m(o),$(t.querySelector("table"),o)),buildHtml:m,plugins:b,onMount:w,q:_}})(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","txt","v","Array","isArray","escIf","raw","rawCol","hc","c","includes","sup","i","str","Infinity","isNum","isFinite","isNumInf","Math","abs","numCol","col","length","find","colOrder","spec","columns","Object","keys","data","filter","colLabel","ops","lbl","op","type","labels","fmtNumber","decimals","bigMark","sigDigits","test","sign","int","frac","expStr","match","exp","digits","point","out","repeat","slice","expandExp","toPrecision","toFixed","parts","split","join","mergeVals","vals","pattern","remaining","result","m","subRefs","index","block","refs","matchAll","map","x","every","applyOps","colNames","nRow","display","auto_format","fmtCols","Set","add","has","pct","maxInt","n","a","intW","floor","log10","d","min","max","autoFmt","eachCell","cols","fn","percent","psfx","f","big_mark","sig_digits","pfx","prefix","sfx","suffix","Date","isNaN","method","options","toLocaleDateString","locale","small","small_text","zero","missing","mCols","target","miss","undefined","sort","row_group","concat","idx","from","_","b","va","vb","newPos","rows","r","sortByGroups","visible","align","colLabels","colWidths","tableWidth","indent","groups","rowSpans","styles","spanners","footnotes","fns","notes","header","hdr","onOp","t","rowGroupSep","rowGroupCols","auto_sep","some","hidden","g","hide","forEach","toMove","rest","after","pos","indexOf","setByCol","arr","val","autoLbl","auto_label","entries","table","widths","w","fill","level","runs","label","push","html_cols","ordered","order","gc","spans","sp","auto_span","sep","RegExp","j","m2","k","mk","resolveSpec","reg","text","indexFootnotes","fIdx","loc","location","hit","group","values","startsWith","value","matcher","nGrp","nCol","isRaw","mark","cell","attr","colCls","right","center","trimEnd","eachLoc","locCols","ci","styleMap","classMap","addTo","key","css","class","caption","cls","emptyTh","rs","bodyMarks","fi","pushRow","span","ind","cc","Boolean","disp","tip","seen","footRow","html","mount","insertAdjacentHTML","tbl","nextElementSibling","querySelector","e","el","altKey","classList","toggle","onclick","detail","ondblclick","ownerDocument","documentElement","q","build","document","currentScript","window"],"sources":["lt.js"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["root","LT","buildHtml","esc","s","String","replace","txt","v","Array","isArray","escIf","raw","rawCol","hc","c","includes","sup","i","str","Infinity","isNum","isFinite","isNumInf","Math","abs","numCol","col","length","find","colOrder","spec","columns","Object","keys","data","filter","colLabel","ops","lbl","op","type","labels","fmtNumber","decimals","bigMark","sigDigits","test","sign","int","frac","expStr","match","exp","digits","point","out","repeat","slice","expandExp","toPrecision","toFixed","parts","split","join","mergeVals","vals","pattern","remaining","result","m","subRefs","index","block","refs","matchAll","map","x","every","applyOps","colNames","nRow","display","auto_format","fmtCols","Set","add","has","pct","maxInt","n","a","intW","floor","log10","d","min","max","autoFmt","eachCell","cols","fn","percent","psfx","f","big_mark","sig_digits","pfx","prefix","sfx","suffix","Date","isNaN","method","options","toLocaleDateString","locale","small","small_text","zero","missing","mCols","target","miss","undefined","sort","row_group","concat","idx","from","_","b","va","vb","newPos","rows","r","sortByGroups","visible","align","colLabels","colWidths","tableWidth","indent","groups","rowSpans","styles","spanners","footnotes","fns","notes","header","hdr","onOp","t","rowGroupSep","rowGroupCols","auto_sep","some","hidden","g","hide","forEach","toMove","rest","after","pos","indexOf","setByCol","arr","val","autoLbl","auto_label","entries","table","widths","w","fill","level","runs","label","push","html_cols","ordered","order","gc","spans","sp","auto_span","sep","RegExp","j","m2","k","mk","resolveSpec","reg","text","indexFootnotes","fIdx","loc","location","hit","group","values","startsWith","value","matcher","nGrp","nCol","isRaw","mark","cell","attr","colCls","right","center","trimEnd","eachLoc","locCols","ci","styleMap","classMap","addTo","key","css","class","caption","cls","emptyTh","rs","bodyMarks","fi","pushRow","span","ind","cc","Boolean","disp","tip","seen","_viewRows","footRow","html","_cols","plugins","onMount","ready","tbl","_ltSpec","e","el","altKey","classList","toggle","onclick","detail","ondblclick","ownerDocument","documentElement","wireRaw","mount","insertAdjacentHTML","nextElementSibling","querySelector","q","build","document","currentScript","render","innerHTML","window"],"sources":["lt.js"],"mappings":"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","ignoreList":[]}
|