@xiee/utils 1.14.72 → 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.
@@ -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 => {
@@ -352,8 +353,16 @@
352
353
  // Styles: the style ops are consumed directly (css/class/columns/rows/test).
353
354
  const styles = ops.filter(op => op.type === "style");
354
355
 
355
- // Auto-spanners: split column names on separator, group contiguous prefixes
356
- let spanners = spec.spanners || [];
356
+ // Explicit spanners: reorder each spanner's columns to match the final
357
+ // (post-move) body order, so a spanner is recorded/rendered correctly
358
+ // regardless of the order in which its columns were listed. A spanner is
359
+ // matched to the visual position of its first column and then spans the
360
+ // next columns.length cells, so a first column that is not the leftmost in
361
+ // `visible` would otherwise misalign the header row.
362
+ let spanners = (spec.spanners || []).map(sp => {
363
+ const cols = sp.columns.slice().sort((a, b) => visible.indexOf(a) - visible.indexOf(b));
364
+ return { ...sp, columns: cols };
365
+ });
357
366
  if (spec.auto_span) {
358
367
  const sep = typeof spec.auto_span === "string" ? new RegExp(spec.auto_span) : /[._]/;
359
368
  spanners = [...spanners];
@@ -569,7 +578,11 @@
569
578
  out.push(`</tr>`);
570
579
  };
571
580
 
572
- // <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.
573
586
  out.push(`<tbody>`);
574
587
  if (groups.length) {
575
588
  const seen = {};
@@ -578,6 +591,8 @@
578
591
  for (const r of g.rows) { seen[r] = 1; pushRow(r); }
579
592
  }
580
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);
581
596
  } else {
582
597
  for (let r = 1; r <= nRow; r++) pushRow(r);
583
598
  }
@@ -593,20 +608,57 @@
593
608
  }
594
609
 
595
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;
596
615
  // Wrap in a div so a wide table can scroll horizontally (`overflow-x`)
597
616
  // instead of overflowing the page.
598
617
  return `<div class="lt-wrap">${out.join("")}</div>`;
599
618
  }
600
619
 
601
- const mount = (s, spec) => {
602
- s.insertAdjacentHTML("afterend", buildHtml(spec));
603
- const tbl = s.nextElementSibling.querySelector("table"),
604
- raw = (e, el) => e.altKey && el.classList.toggle("lt-raw");
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");
605
628
  tbl.onclick = e => e.detail === 1 && raw(e, tbl);
606
629
  tbl.ondblclick = e => raw(e, tbl.ownerDocument.documentElement);
607
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
+ };
608
657
  // q.push renders immediately; replay any entries queued before we loaded.
609
658
  const q = { push: e => mount(e.s, e.d) };
610
659
  (root.LT?.q || []).forEach(q.push);
611
- root.LT = { build: spec => mount(document.currentScript, spec), buildHtml, q };
660
+ root.LT = {
661
+ build: spec => mount(document.currentScript, spec),
662
+ render, buildHtml, plugins, onMount, q,
663
+ };
612
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,"&amp;").replace(/[<]/g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),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: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 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 k=t.spanners||[];if(t.auto_span){const o="string"==typeof t.auto_span?new RegExp(t.auto_span):/[._]/;k=[...k];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){k.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: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"}[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)){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],g=[T[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)}"`:"";D.push(`<td${R("class",g)}${R("style",d)}${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,"&amp;").replace(/[<]/g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),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","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","sp","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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiee/utils",
3
- "version": "1.14.72",
3
+ "version": "1.14.74",
4
4
  "description": "Miscellaneous tools and utilities to manipulate HTML pages",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"