@sheetpane/grid 0.1.0 → 0.4.0
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/README.md +294 -13
- package/custom-elements.json +292 -27
- package/dist/check.d.ts +75 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +151 -0
- package/dist/check.js.map +1 -0
- package/dist/errors/element.d.ts +90 -12
- package/dist/errors/element.d.ts.map +1 -1
- package/dist/errors/element.js +572 -50
- package/dist/errors/element.js.map +1 -1
- package/dist/excel/element.d.ts +168 -15
- package/dist/excel/element.d.ts.map +1 -1
- package/dist/excel/element.js +752 -90
- package/dist/excel/element.js.map +1 -1
- package/dist/excel/link.d.ts +40 -0
- package/dist/excel/link.d.ts.map +1 -0
- package/dist/excel/link.js +90 -0
- package/dist/excel/link.js.map +1 -0
- package/dist/excel/styles.d.ts.map +1 -1
- package/dist/excel/styles.js +37 -5
- package/dist/excel/styles.js.map +1 -1
- package/dist/frameworks/elements.d.ts +57 -17
- package/dist/frameworks/jsx.d.ts +15 -9
- package/dist/frameworks/solid.d.ts +51 -11
- package/dist/frameworks/svelte.d.ts +28 -16
- package/dist/frameworks/vue.d.ts +15 -9
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +3290 -544
- package/dist/llms.txt +92 -89
- package/dist/pane/protection.d.ts +61 -0
- package/dist/pane/protection.d.ts.map +1 -0
- package/dist/pane/protection.js +89 -0
- package/dist/pane/protection.js.map +1 -0
- package/dist/pane/rules.d.ts +1 -1
- package/dist/pane/rules.d.ts.map +1 -1
- package/dist/pane/store.d.ts +336 -15
- package/dist/pane/store.d.ts.map +1 -1
- package/dist/pane/store.js +891 -44
- package/dist/pane/store.js.map +1 -1
- package/dist/pane/structure.d.ts +58 -0
- package/dist/pane/structure.d.ts.map +1 -0
- package/dist/pane/structure.js +238 -0
- package/dist/pane/structure.js.map +1 -0
- package/dist/pane/types.d.ts +195 -6
- package/dist/pane/types.d.ts.map +1 -1
- package/dist/pane/types.js +57 -0
- package/dist/pane/types.js.map +1 -1
- package/dist/plugins/types.d.ts +34 -6
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/plugins/types.js.map +1 -1
- package/dist/shared/detail.d.ts +24 -0
- package/dist/shared/detail.d.ts.map +1 -0
- package/dist/shared/detail.js +75 -0
- package/dist/shared/detail.js.map +1 -0
- package/dist/shared/dom.d.ts +3 -0
- package/dist/shared/dom.d.ts.map +1 -1
- package/dist/shared/dom.js +3 -0
- package/dist/shared/dom.js.map +1 -1
- package/dist/static.d.ts +81 -0
- package/dist/static.d.ts.map +1 -0
- package/dist/static.js +352 -0
- package/dist/static.js.map +1 -0
- package/dist/style.css +3 -3
- package/dist/tokens.d.ts +1 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +2 -2
- package/dist/tokens.js.map +1 -1
- package/dist/vscode.css-custom-data.json +11 -1
- package/dist/vscode.html-custom-data.json +89 -2
- package/dist/web-types.json +204 -21
- package/package.json +13 -7
- package/dist/errors/index.d.ts +0 -2
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -3
- package/dist/errors/index.js.map +0 -1
- package/dist/excel/index.d.ts +0 -2
- package/dist/excel/index.d.ts.map +0 -1
- package/dist/excel/index.js +0 -3
- package/dist/excel/index.js.map +0 -1
- package/dist/pane/index.d.ts +0 -2
- package/dist/pane/index.d.ts.map +0 -1
- package/dist/pane/index.js +0 -3
- package/dist/pane/index.js.map +0 -1
package/dist/static.js
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
// @sheetpane/grid/static — a range of a sheet as one self-contained HTML <table> (W-67): the text
|
|
2
|
+
// the pane shows (the `format` hook), the look it draws (the `decorate` hooks, merges, the tokens
|
|
3
|
+
// as inline hex), hidden rows and columns left out, and the error marks with glyphs and labels.
|
|
4
|
+
// For a report or an email: no script, no class, no stylesheet, no URL, every value escaped, no
|
|
5
|
+
// font family (SR-LAW-5). It reads the same store the elements read and imports no element, so
|
|
6
|
+
// it runs in Node, a worker or a page (SR-GRID decision 22g).
|
|
7
|
+
import { cellRef, colName, parseRange, rangesIntersect, spError } from '@sheetpane/export';
|
|
8
|
+
import { sheetGeometry, HEAD_H, ROWHEAD_W } from './excel/geometry.js';
|
|
9
|
+
import { BUILTIN_TYPE_NAMES, DEFAULT_ERROR_TYPES, SEVERITY, SEVERITY_ORDER, errorScope, isResult } from './pane/types.js';
|
|
10
|
+
import { STYLE_PROPS } from './plugins/types.js';
|
|
11
|
+
import { DARK_TOKENS, TOKENS } from './tokens.js';
|
|
12
|
+
// what a DOM-free host needs to get a store to render
|
|
13
|
+
export { loadWorkbook } from './check.js';
|
|
14
|
+
export { WorkbookStore, createWorkbook } from './pane/store.js';
|
|
15
|
+
export { TOKENS, DARK_TOKENS } from './tokens.js';
|
|
16
|
+
/**
|
|
17
|
+
* Every mark a static table draws — the grid's `m-*` cell marks and glyphs: a ring in the solid
|
|
18
|
+
* colour, a tint of the soft one at 60 % over the cell's own fill, and a badge holding the glyph
|
|
19
|
+
* and the error's number, which the table's footer explains. Never colour alone. A result (`pass`,
|
|
20
|
+
* `skipped`) is the grid's corner glyph instead, and only where no problem covers the cell.
|
|
21
|
+
*/
|
|
22
|
+
export const STATIC_MARKS = {
|
|
23
|
+
error: { glyph: SEVERITY.error.glyph, label: SEVERITY.error.name, solid: 'fail', soft: 'fail-soft', rank: 5 },
|
|
24
|
+
warning: { glyph: SEVERITY.warning.glyph, label: SEVERITY.warning.name, solid: 'warn', soft: 'warn-soft', rank: 4 },
|
|
25
|
+
note: { glyph: SEVERITY.note.glyph, label: SEVERITY.note.name, solid: 'accent', soft: 'accent-soft', rank: 3 },
|
|
26
|
+
accepted: { glyph: 'A', label: 'Accepted', solid: 'ink-3', rank: 2, quiet: true },
|
|
27
|
+
resolved: { glyph: '✓', label: 'Resolved', solid: 'pass', rank: 1 },
|
|
28
|
+
skipped: { glyph: SEVERITY.skipped.glyph, label: SEVERITY.skipped.name, solid: 'skip', rank: 0, corner: true },
|
|
29
|
+
pass: { glyph: SEVERITY.pass.glyph, label: SEVERITY.pass.name, solid: 'pass', rank: 0, corner: true },
|
|
30
|
+
};
|
|
31
|
+
/** The one place an error becomes a mark: a result by its severity, then a problem by its status, then by its severity. A new status or result is a key here and in {@link STATIC_MARKS}. */
|
|
32
|
+
function markOf(e) {
|
|
33
|
+
if (isResult(e))
|
|
34
|
+
return e.severity;
|
|
35
|
+
return e.status === 'resolved' ? 'resolved' : e.status === 'accepted' ? 'accepted' : e.severity;
|
|
36
|
+
}
|
|
37
|
+
/** A static table holds at most this many cells; a larger range throws SP-3028 — pass a smaller `range`. */
|
|
38
|
+
export const STATIC_MAX_CELLS = 200_000;
|
|
39
|
+
/**
|
|
40
|
+
* A range of a sheet as one self-contained HTML `<table>` — the text the pane shows (the `format`
|
|
41
|
+
* plugin), the look it draws (every `decorate` plugin, merges, the tokens as inline hex), hidden
|
|
42
|
+
* rows and columns left out, and the given errors marked with a ring, a tint and a numbered glyph,
|
|
43
|
+
* listed in the footer (SR-GRID decision 22g). Made with no DOM, in Node, a worker or a page.
|
|
44
|
+
*
|
|
45
|
+
* The output is inert: no `<script>`, no event attribute, no `class`, no `<style>`, no URL — inline
|
|
46
|
+
* `style` only, every value escaped, no font family (the reader's font is the font, SR-LAW-5).
|
|
47
|
+
* What a plugin draws over the cells (`overlay`: pictures, charts) is not drawn; the footer says so
|
|
48
|
+
* and the table's `data-sp-skipped` names those plugins.
|
|
49
|
+
* @param book - A loaded workbook: `loadWorkbook()`'s, `createWorkbook()`'s after `load()`, or an element's `workbook`. Its plugins format and decorate; its changes and derived values show.
|
|
50
|
+
* @param options - `sheet`, `range`, `errors`, `theme` and `headers`.
|
|
51
|
+
* @returns The HTML of one `<table>` element.
|
|
52
|
+
* @throws SP-3027 when `book` is not a loaded workbook; SP-3028 for an unknown sheet, a range that is not A1, or one over {@link STATIC_MAX_CELLS} cells.
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* import { loadWorkbook, renderStatic } from '@sheetpane/grid/static';
|
|
56
|
+
* import { numfmt } from '@sheetpane/numfmt';
|
|
57
|
+
* import { styles } from '@sheetpane/styles';
|
|
58
|
+
* import { validation } from '@sheetpane/validation/check';
|
|
59
|
+
*
|
|
60
|
+
* // `bytes`: the file as your runtime reads it — `await readFile(path)` in Node
|
|
61
|
+
* const book = await loadWorkbook(bytes, { name: 'q3.xlsx', plugins: [numfmt(), styles(), validation()] });
|
|
62
|
+
* const html = renderStatic(book, { sheet: 'Holdings', range: 'A1:F12' }); // the workbook's own errors marked
|
|
63
|
+
* ```
|
|
64
|
+
* @see https://github.com/arpitarya/sheetpane/blob/main/records/0105_GRID.md
|
|
65
|
+
*/
|
|
66
|
+
export function renderStatic(book, options = {}) {
|
|
67
|
+
const loaded = book && typeof book.getSnapshot === 'function' && typeof book.text === 'function' ? book.getSnapshot() : undefined;
|
|
68
|
+
if (!loaded || loaded.load.status !== 'ready' || !loaded.book)
|
|
69
|
+
throw spError('SP-3027', 'renderStatic() takes a loaded workbook — loadWorkbook(bytes), or a store after load() has finished', TypeError);
|
|
70
|
+
const name = options.sheet ?? (loaded.selection.sheet || loaded.book.sheets[0]?.name || '');
|
|
71
|
+
const sheet = book.sheet(name);
|
|
72
|
+
if (!sheet)
|
|
73
|
+
throw spError('SP-3028', `renderStatic(): no sheet is named “${name}”`, RangeError);
|
|
74
|
+
const T = options.theme === 'dark' ? { ...TOKENS, ...DARK_TOKENS } : { ...TOKENS };
|
|
75
|
+
const merges = book.merges(name);
|
|
76
|
+
const hid = book.hidden(name);
|
|
77
|
+
const g = sheetGeometry(sheet, merges, {}, { rows: new Set(hid.rows), cols: new Set(hid.cols) });
|
|
78
|
+
const range = options.range === undefined ? usedRange(sheet.rows, g.merges) : parseRange(options.range);
|
|
79
|
+
if (!range)
|
|
80
|
+
throw spError('SP-3028', `renderStatic(): “${options.range}” is not an A1 range`, RangeError);
|
|
81
|
+
const rowShown = (r) => !hid.rows.includes(r), colShown = (c) => !hid.cols.includes(c);
|
|
82
|
+
const rows = span(range.top, range.bottom).filter(rowShown), cols = span(range.left, range.right).filter(colShown);
|
|
83
|
+
if (rows.length * cols.length > STATIC_MAX_CELLS)
|
|
84
|
+
throw spError('SP-3028', `renderStatic(): ${options.range ?? 'the used range'} holds ${rows.length * cols.length} cells — over ${STATIC_MAX_CELLS}; pass a smaller range`, RangeError);
|
|
85
|
+
const headers = options.headers !== false;
|
|
86
|
+
const rangeA1 = `${cellRef(range.top, range.left)}:${cellRef(range.bottom, range.right)}`;
|
|
87
|
+
// the errors: those of the visible layers (W-51) unless given. The workbook's and this sheet's own (W-55) head the
|
|
88
|
+
// footer and mark no cell; then the errors on this range in reading order — each cell takes its highest-ranked mark
|
|
89
|
+
const pool = (options.errors ?? loaded.visibleErrors).filter((e) => !isResult(e));
|
|
90
|
+
const scoped = sortedScoped(pool.filter((e) => errorScope(e) === 'workbook' || (errorScope(e) === 'sheet' && e.sheet === name)));
|
|
91
|
+
const marked = sortedErrors(pool.filter((e) => e.sheet === name && errorScope(e) === 'cell'), range);
|
|
92
|
+
const listed = [...scoped, ...marked.map((x) => x.e)];
|
|
93
|
+
const resultAt = book.results === 'marks' ? resultsOn(options.errors ?? loaded.visibleErrors, name) : () => undefined;
|
|
94
|
+
const markAt = new Map(), badges = new Map(), rowWorst = new Map();
|
|
95
|
+
marked.forEach(({ e, r }, j) => {
|
|
96
|
+
const i = scoped.length + j;
|
|
97
|
+
const k = markOf(e), clip = clipTo(r, range);
|
|
98
|
+
const first = firstShown(clip, rowShown, colShown);
|
|
99
|
+
if (first) {
|
|
100
|
+
const key = `${first.row},${first.col}`;
|
|
101
|
+
badges.set(key, [...(badges.get(key) ?? []), i]);
|
|
102
|
+
}
|
|
103
|
+
for (let rr = clip.top; rr <= clip.bottom; rr++) {
|
|
104
|
+
for (let cc = clip.left; cc <= clip.right; cc++) {
|
|
105
|
+
const p = markAt.get(`${rr},${cc}`);
|
|
106
|
+
if (!p || STATIC_MARKS[k].rank > STATIC_MARKS[p].rank)
|
|
107
|
+
markAt.set(`${rr},${cc}`, k);
|
|
108
|
+
}
|
|
109
|
+
const w = rowWorst.get(rr);
|
|
110
|
+
if (e.status === 'open' && (!w || STATIC_MARKS[k].rank > STATIC_MARKS[w].rank))
|
|
111
|
+
rowWorst.set(rr, k);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const decorating = book.plugins.some((p) => p.provides.includes('decorate'));
|
|
115
|
+
const skipped = book.plugins.filter((p) => p.provides.includes('overlay')).map((p) => p.id);
|
|
116
|
+
const width = (c) => g.colX[c + 1] - g.colX[c];
|
|
117
|
+
const height = (r) => g.rowY[r + 1] - g.rowY[r];
|
|
118
|
+
const cellFont = '.93em'; // --sp-cell-font-size's default (SR-GRID decision 15)
|
|
119
|
+
const badge = (k, text, label) => {
|
|
120
|
+
const s = STATIC_MARKS[k], look = s.quiet ? `background-color:${T.surface};color:${T['ink-2']};box-shadow:inset 0 0 0 1.5px ${T[s.solid]}` : `background-color:${T[s.solid]};color:${T['on-solid']}`;
|
|
121
|
+
return `<span data-sp-badge="${k}" aria-label="${esc(label)}" style="display:inline-block;min-width:16px;height:16px;padding:0 3px;border-radius:4px;${look};font-size:10px;font-weight:700;line-height:16px;text-align:center;font-style:normal;text-decoration:none;box-sizing:border-box">${esc(text)}</span>`;
|
|
122
|
+
};
|
|
123
|
+
/** A badge's text: the glyph and the error's number — accepted's `A` kept apart by a thin space, so `A 3` never reads as a cell. */
|
|
124
|
+
const numbered = (k, n) => `${STATIC_MARKS[k].glyph}${k === 'accepted' ? '\u2009' : ''}${n}`;
|
|
125
|
+
// a merge is drawn once, from its first shown cell in the range; the cells it covers are skipped
|
|
126
|
+
const mergeOf = (r, c) => g.merges.find((m) => r >= m.top && r <= m.bottom && c >= m.left && c <= m.right);
|
|
127
|
+
const cell = (r, c) => {
|
|
128
|
+
const m = mergeOf(r, c);
|
|
129
|
+
let rowspan = 1, colspan = 1, ref = cellRef(r, c);
|
|
130
|
+
if (m && (m.top !== m.bottom || m.left !== m.right)) {
|
|
131
|
+
const clip = clipTo(m, range), anchor = firstShown(clip, rowShown, colShown);
|
|
132
|
+
if (!anchor || anchor.row !== r || anchor.col !== c)
|
|
133
|
+
return '';
|
|
134
|
+
rowspan = rows.filter((x) => x >= clip.top && x <= clip.bottom).length;
|
|
135
|
+
colspan = cols.filter((x) => x >= clip.left && x <= clip.right).length;
|
|
136
|
+
ref = cellRef(m.top, m.left); // the merge's value is its top-left cell's
|
|
137
|
+
}
|
|
138
|
+
const text = book.text(name, ref), v = book.value(name, ref);
|
|
139
|
+
const merged = rowspan > 1 || colspan > 1 || (m !== undefined && (m.top !== m.bottom || m.left !== m.right));
|
|
140
|
+
const h = rows.filter((x) => x >= r && x < r + rowspan).reduce((s, x) => s + height(x), 0);
|
|
141
|
+
const css = {
|
|
142
|
+
'background-color': merged ? T.head : T.cell, padding: '0 .6em', 'border-right': `1px solid ${T.grid}`, 'border-bottom': `1px solid ${T.grid}`,
|
|
143
|
+
'font-size': cellFont, 'white-space': 'nowrap', overflow: 'hidden', 'text-overflow': 'ellipsis', 'vertical-align': 'middle', height: `${h}px`, 'box-sizing': 'border-box',
|
|
144
|
+
};
|
|
145
|
+
if (typeof v === 'number') {
|
|
146
|
+
css['text-align'] = 'right';
|
|
147
|
+
css['font-variant-numeric'] = 'tabular-nums';
|
|
148
|
+
}
|
|
149
|
+
if (merged) {
|
|
150
|
+
css['text-align'] = 'center';
|
|
151
|
+
css['font-weight'] = '600';
|
|
152
|
+
}
|
|
153
|
+
if (decorating) {
|
|
154
|
+
for (const [k, raw] of Object.entries(book.decorate(name, ref))) {
|
|
155
|
+
if (!ALLOWED.has(k))
|
|
156
|
+
continue;
|
|
157
|
+
const val = cssValue(raw, T);
|
|
158
|
+
if (val === undefined)
|
|
159
|
+
continue;
|
|
160
|
+
css[k] = k === 'vertical-align' ? (val === 'top' ? 'top' : val === 'bottom' ? 'bottom' : 'middle') : val;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const mk = markAt.get(`${r},${c}`);
|
|
164
|
+
const attrs = [`data-sp-ref="${ref}"`];
|
|
165
|
+
if (mk) {
|
|
166
|
+
const s = STATIC_MARKS[mk];
|
|
167
|
+
css['box-shadow'] = `inset 0 0 0 1.5px ${T[s.solid]}`;
|
|
168
|
+
if (s.soft)
|
|
169
|
+
css['background-color'] = blend(T[s.soft], css['background-color'], 0.6);
|
|
170
|
+
attrs.push(`data-sp-mark="${mk}"`);
|
|
171
|
+
}
|
|
172
|
+
if (book.changesAt(name, ref).length) {
|
|
173
|
+
const corner = `linear-gradient(225deg,${T.changed} 5px,transparent 5px)`;
|
|
174
|
+
css['background-image'] = css['background-image'] ? `${corner},${css['background-image']}` : corner;
|
|
175
|
+
attrs.push('data-sp-changed=""');
|
|
176
|
+
}
|
|
177
|
+
if (rowspan > 1)
|
|
178
|
+
attrs.push(`rowspan="${rowspan}"`);
|
|
179
|
+
if (colspan > 1)
|
|
180
|
+
attrs.push(`colspan="${colspan}"`);
|
|
181
|
+
const stale = book.mayBeStale(name, ref);
|
|
182
|
+
const derived = !stale && loaded.derived.has(`${name}!${ref}`) && !book.changeOf(name, ref);
|
|
183
|
+
if (stale)
|
|
184
|
+
attrs.push('title="May be stale — Excel recalculates on open"');
|
|
185
|
+
else if (text.length > 24)
|
|
186
|
+
attrs.push(`title="${esc(text)}"`);
|
|
187
|
+
// the text is clipped to the row, as the grid clips it: a table row would otherwise grow to fit wrapped or large text
|
|
188
|
+
const vStyle = ` style="display:block;overflow:hidden;text-overflow:ellipsis;max-height:${Math.max(0, h - 1)}px${stale ? `;color:${T['ink-3']};font-style:italic` : derived ? `;color:${T['accent-ink']}` : ''}"`;
|
|
189
|
+
const pre = stale ? `<span data-sp-stale="" style="color:${T.warn};font-style:normal">≈ </span>` : '';
|
|
190
|
+
const own = (badges.get(`${r},${c}`) ?? []).map((i) => { const k = markOf(listed[i]); return badge(k, numbered(k, i + 1), `${STATIC_MARKS[k].label} ${i + 1}`); }).join('');
|
|
191
|
+
const pins = own ? `<span style="float:right;margin-left:4px">${own}</span>` : '';
|
|
192
|
+
// a result (W-50) where no problem covers the cell: the grid's corner glyph, before the text (a mail client keeps a float, not a position)
|
|
193
|
+
const res = mk ? undefined : resultAt(r, c);
|
|
194
|
+
const rk = res && markOf(res);
|
|
195
|
+
const corner = rk ? `<span data-sp-result="${rk}" role="img" aria-label="${esc(`${STATIC_MARKS[rk].label}: ${checkOf(res)}`)}" title="${esc(checkOf(res))}" style="float:left;margin-right:3px;color:${T[STATIC_MARKS[rk].solid]};font-size:.69em;font-weight:700;line-height:1;font-style:normal">${STATIC_MARKS[rk].glyph}</span>` : '';
|
|
196
|
+
// a rich-text cell (W-53): its runs as spans when a decorate plugin draws them — the same allow-list, no font family
|
|
197
|
+
const pieces = decorating ? book.decorateRuns(name, ref) : undefined;
|
|
198
|
+
const inner = pieces ? pieces.map((x) => { const st = runStyle(x.style, T); return st ? `<span style="${st}">${esc(x.text)}</span>` : esc(x.text); }).join('') : esc(text);
|
|
199
|
+
return `<td ${attrs.join(' ')} style="${styleOf(css)}">${pins}${corner}<span data-sp-v=""${vStyle}>${pre}${inner}</span></td>`;
|
|
200
|
+
};
|
|
201
|
+
const head = `background-color:${T.head};color:${T['ink-3']};font-size:.85em;font-variant-numeric:tabular-nums;white-space:nowrap;box-sizing:border-box`;
|
|
202
|
+
const out = [];
|
|
203
|
+
const total = (headers ? ROWHEAD_W : 0) + cols.reduce((s, c) => s + width(c), 0);
|
|
204
|
+
out.push(`<table data-sp-static="1" data-sp-sheet="${esc(name)}" data-sp-range="${rangeA1}" data-sp-theme="${options.theme === 'dark' ? 'dark' : 'light'}"${skipped.length ? ` data-sp-skipped="${esc(skipped.join(' '))}"` : ''} aria-label="${esc(`${name}, ${rangeA1}`)}" style="border-collapse:separate;border-spacing:0;table-layout:fixed;width:${total}px;background-color:${T.cell};color:${T.ink};font-size:14px;line-height:1.45;text-align:left${headers ? '' : `;border-top:1px solid ${T.grid};border-left:1px solid ${T.grid}`}">`);
|
|
205
|
+
out.push(`<colgroup>${headers ? `<col style="width:${ROWHEAD_W}px">` : ''}${cols.map((c) => `<col style="width:${width(c)}px">`).join('')}</colgroup>`);
|
|
206
|
+
if (headers) {
|
|
207
|
+
out.push(`<thead><tr style="height:${HEAD_H}px"><th scope="col" style="${head};border-right:1px solid ${T.line};border-bottom:1px solid ${T.grid};padding:0 6px"></th>`);
|
|
208
|
+
for (const c of cols)
|
|
209
|
+
out.push(`<th scope="col" data-sp-col="${c}" style="${head};font-weight:500;text-align:center;border-right:1px solid ${T.grid};border-bottom:1px solid ${T.line};height:${HEAD_H}px;padding:0">${colName(c)}</th>`);
|
|
210
|
+
out.push('</tr></thead>');
|
|
211
|
+
}
|
|
212
|
+
out.push('<tbody>');
|
|
213
|
+
for (const r of rows) {
|
|
214
|
+
out.push(`<tr style="height:${height(r)}px">`);
|
|
215
|
+
if (headers) {
|
|
216
|
+
const w = rowWorst.get(r);
|
|
217
|
+
const g1 = w ? `${badge(w, STATIC_MARKS[w].glyph, STATIC_MARKS[w].label)} ` : '';
|
|
218
|
+
out.push(`<th scope="row" data-sp-row="${r}" style="${head};font-weight:400;text-align:right;padding:0 6px;border-right:1px solid ${T.line};border-bottom:1px solid ${T.grid}">${g1}${r + 1}</th>`);
|
|
219
|
+
}
|
|
220
|
+
for (const c of cols)
|
|
221
|
+
out.push(cell(r, c));
|
|
222
|
+
out.push('</tr>');
|
|
223
|
+
}
|
|
224
|
+
out.push('</tbody>');
|
|
225
|
+
const notes = footer(listed, skipped, drawingsIn(sheet.drawings ?? [], range), T, badge, numbered);
|
|
226
|
+
if (notes)
|
|
227
|
+
out.push(`<tfoot><tr><td colspan="${cols.length + (headers ? 1 : 0)}" style="padding:6px 8px;border-top:1px solid ${T.line};background-color:${T.surface};color:${T['ink-2']};font-size:12px;white-space:normal;text-align:left">${notes}</td></tr></tfoot>`);
|
|
228
|
+
out.push('</table>');
|
|
229
|
+
return out.join('');
|
|
230
|
+
}
|
|
231
|
+
/** The footer: each listed error — the workbook's and the sheet's first (W-55), then the marked cells' — with its badge, label, range (or *Whole sheet* / *Whole workbook*), type, message, expected and an acceptance's reason; then what was not drawn. */
|
|
232
|
+
function footer(errors, skipped, drawings, T, badge, numbered) {
|
|
233
|
+
const lines = errors.map((e, i) => {
|
|
234
|
+
const k = markOf(e), s = STATIC_MARKS[k], scope = errorScope(e);
|
|
235
|
+
const type = DEFAULT_ERROR_TYPES.find((t) => t.id === e.type)?.name ?? BUILTIN_TYPE_NAMES[e.type] ?? e.type;
|
|
236
|
+
const where = scope === 'workbook' ? 'Whole workbook' : scope === 'sheet' ? 'Whole sheet' : e.range;
|
|
237
|
+
const parts = [`<b style="color:${T.ink}">${esc(s.label)}</b>`, esc(where), esc(type)];
|
|
238
|
+
if (e.status === 'resolved' && k !== 'resolved')
|
|
239
|
+
parts.push('resolved');
|
|
240
|
+
const said = [e.message ? esc(e.message) : '', e.expected ? `should be ${esc(e.expected)}` : '', e.status === 'accepted' && e.reason ? `accepted: ${esc(e.reason)}` : ''].filter(Boolean).join(' · ');
|
|
241
|
+
return `<div data-sp-note="${i + 1}"${scope === 'cell' ? '' : ` data-sp-scope="${scope}"`} style="margin:2px 0">${badge(k, numbered(k, i + 1), `${s.label} ${i + 1}`)} ${parts.join(' · ')}${said ? ` — ${said}` : ''}</div>`;
|
|
242
|
+
});
|
|
243
|
+
if (skipped.length) {
|
|
244
|
+
const what = drawings ? `${drawings} picture${drawings === 1 ? '' : 's'} or chart${drawings === 1 ? '' : 's'} in this range` : 'what they draw over the cells';
|
|
245
|
+
lines.push(`<div data-sp-skipped-note="" style="margin:2px 0;color:${T['ink-3']}">Not drawn in a static copy: ${what} (${esc(skipped.join(', '))}).</div>`);
|
|
246
|
+
}
|
|
247
|
+
return lines.join('');
|
|
248
|
+
}
|
|
249
|
+
const ALLOWED = new Set(STYLE_PROPS);
|
|
250
|
+
/** A value from a `decorate` hook, kept only when it is plain CSS: `var(--sp-*)` resolved to the theme, then no URL, no function that loads or reads anything, no quote, semicolon, brace, comment or escape. */
|
|
251
|
+
const SAFE_VALUE = /^[\w\s#%.,()+\-/]*$/;
|
|
252
|
+
const LOADS = /(url|image|image-set|element|cross-fade|expression|attr|env|var|paint|src)\s*\(/i;
|
|
253
|
+
function cssValue(raw, T) {
|
|
254
|
+
if (typeof raw !== 'string')
|
|
255
|
+
return undefined;
|
|
256
|
+
const v = raw.replace(/var\(\s*--sp-([\w-]+)\s*(?:,[^()]*)?\)/g, (m, n) => T[n] ?? m).trim();
|
|
257
|
+
if (!v || v.length > 300 || !SAFE_VALUE.test(v) || LOADS.test(v) || v.includes('/*') || v.includes('*/'))
|
|
258
|
+
return undefined;
|
|
259
|
+
return v;
|
|
260
|
+
}
|
|
261
|
+
/** A rich-text run's style (W-53) through the same allow-list and value check as a cell's; `''` when nothing is left. */
|
|
262
|
+
function runStyle(style, T) {
|
|
263
|
+
const css = {};
|
|
264
|
+
for (const [k, raw] of Object.entries(style ?? {})) {
|
|
265
|
+
if (!ALLOWED.has(k))
|
|
266
|
+
continue;
|
|
267
|
+
const v = cssValue(raw, T);
|
|
268
|
+
if (v !== undefined)
|
|
269
|
+
css[k] = v;
|
|
270
|
+
}
|
|
271
|
+
return styleOf(css);
|
|
272
|
+
}
|
|
273
|
+
/** What a result checked, for its glyph's label: its message, else its type's name — as the grid says it. */
|
|
274
|
+
const checkOf = (e) => e.message || (DEFAULT_ERROR_TYPES.find((t) => t.id === e.type)?.name ?? BUILTIN_TYPE_NAMES[e.type] ?? e.type);
|
|
275
|
+
/**
|
|
276
|
+
* The result a cell shows at the `marks` level (W-50), as `store.resultAt` reads it from the same list: none where any
|
|
277
|
+
* problem's range covers the cell; else the highest-ranked one-cell result there, else the first range that holds it.
|
|
278
|
+
*/
|
|
279
|
+
function resultsOn(list, sheet) {
|
|
280
|
+
const problems = [], cells = new Map(), ranges = [];
|
|
281
|
+
for (const e of list) {
|
|
282
|
+
if (e.sheet !== sheet)
|
|
283
|
+
continue;
|
|
284
|
+
const r = parseRange(e.range);
|
|
285
|
+
if (!r)
|
|
286
|
+
continue;
|
|
287
|
+
if (!isResult(e)) {
|
|
288
|
+
problems.push(r);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (r.top !== r.bottom || r.left !== r.right) {
|
|
292
|
+
ranges.push({ r, e });
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const k = `${r.top},${r.left}`, was = cells.get(k);
|
|
296
|
+
if (!was || SEVERITY_ORDER[e.severity] > SEVERITY_ORDER[was.severity])
|
|
297
|
+
cells.set(k, e);
|
|
298
|
+
}
|
|
299
|
+
const inBox = (r, row, col) => row >= r.top && row <= r.bottom && col >= r.left && col <= r.right;
|
|
300
|
+
return (row, col) => (problems.some((r) => inBox(r, row, col)) ? undefined : cells.get(`${row},${col}`) ?? ranges.find((x) => inBox(x.r, row, col))?.e);
|
|
301
|
+
}
|
|
302
|
+
/** `{ prop: value }` → `prop:value;…`, escaped for a double-quoted attribute. */
|
|
303
|
+
const styleOf = (css) => esc(Object.entries(css).map(([k, v]) => `${k}:${v}`).join(';'));
|
|
304
|
+
/** HTML-escapes text and attribute values: `& < > " '`, and a carriage return (the parser would fold it) and NUL (it has no HTML form: U+FFFD, as the parser would read it). */
|
|
305
|
+
const ESC = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '\r': ' ', '\0': '�' };
|
|
306
|
+
const esc = (s) => String(s).replace(/[&<>"'\r\0]/g, (c) => ESC[c]);
|
|
307
|
+
/** `soft` laid over `base` at `alpha` — the grid's `::before` tint, flattened for mail; an unreadable `base` gives `soft`. */
|
|
308
|
+
function blend(soft, base, alpha) {
|
|
309
|
+
const a = rgb(soft), b = rgb(base);
|
|
310
|
+
if (!a || !b)
|
|
311
|
+
return soft;
|
|
312
|
+
return `#${a.map((x, i) => Math.round(x * alpha + b[i] * (1 - alpha)).toString(16).padStart(2, '0')).join('').toUpperCase()}`;
|
|
313
|
+
}
|
|
314
|
+
function rgb(c) {
|
|
315
|
+
const h = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(c.trim());
|
|
316
|
+
if (h) {
|
|
317
|
+
const x = h[1].length === 3 ? h[1].replace(/./g, '$&$&') : h[1];
|
|
318
|
+
return [0, 2, 4].map((i) => parseInt(x.slice(i, i + 2), 16));
|
|
319
|
+
}
|
|
320
|
+
const f = /^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*(?:[,/]\s*1(?:\.0*)?\s*)?\)$/i.exec(c.trim());
|
|
321
|
+
return f ? [Number(f[1]), Number(f[2]), Number(f[3])] : undefined;
|
|
322
|
+
}
|
|
323
|
+
const span = (a, b) => Array.from({ length: b - a + 1 }, (_, i) => a + i);
|
|
324
|
+
const clipTo = (r, to) => ({ top: Math.max(r.top, to.top), left: Math.max(r.left, to.left), bottom: Math.min(r.bottom, to.bottom), right: Math.min(r.right, to.right) });
|
|
325
|
+
/** The first cell of a range that is drawn (not hidden), reading row by row. */
|
|
326
|
+
function firstShown(r, row, col) {
|
|
327
|
+
const rr = span(r.top, r.bottom).find(row), cc = span(r.left, r.right).find(col);
|
|
328
|
+
return rr === undefined || cc === undefined ? undefined : { row: rr, col: cc };
|
|
329
|
+
}
|
|
330
|
+
/** The data's extent, widened to the merges: A1 for an empty sheet. */
|
|
331
|
+
function usedRange(rows, merges) {
|
|
332
|
+
const bottom = Math.max(rows.length, ...merges.map((m) => m.bottom + 1), 1) - 1;
|
|
333
|
+
const right = Math.max(rows.reduce((m, r) => Math.max(m, r.length), 0), ...merges.map((m) => m.right + 1), 1) - 1;
|
|
334
|
+
return { top: 0, left: 0, bottom, right };
|
|
335
|
+
}
|
|
336
|
+
/** The errors whose range meets the rendered one, in `check()`'s order — row, column, type, message — then by what else they say, so one review always numbers alike. */
|
|
337
|
+
function sortedErrors(list, range) {
|
|
338
|
+
const cmp = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
339
|
+
return list.map((e) => ({ e, r: parseRange(e.range) })).filter((x) => !!x.r && rangesIntersect(x.r, range))
|
|
340
|
+
.sort((a, b) => a.r.top - b.r.top || a.r.left - b.r.left || cmp(a.e.type, b.e.type) || cmp(a.e.message, b.e.message) || cmp(a.e.range, b.e.range) || cmp(a.e.severity, b.e.severity) || cmp(a.e.status, b.e.status) || cmp(a.e.expected, b.e.expected) || cmp(a.e.author, b.e.author));
|
|
341
|
+
}
|
|
342
|
+
/** The workbook's errors, then the sheet's (W-55), each group in `check()`'s order of what they say. */
|
|
343
|
+
function sortedScoped(list) {
|
|
344
|
+
const cmp = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
345
|
+
const rank = (e) => (errorScope(e) === 'workbook' ? 0 : 1);
|
|
346
|
+
return [...list].sort((a, b) => rank(a) - rank(b) || cmp(a.type, b.type) || cmp(a.message, b.message) || cmp(a.severity, b.severity) || cmp(a.status, b.status) || cmp(a.expected, b.expected) || cmp(a.author, b.author));
|
|
347
|
+
}
|
|
348
|
+
/** Pictures and charts anchored in the range (by their top-left cell). */
|
|
349
|
+
function drawingsIn(list, range) {
|
|
350
|
+
return list.filter((d) => d.kind !== 'shape' && d.from && d.from.row >= range.top && d.from.row <= range.bottom && d.from.col >= range.left && d.from.col <= range.right).length;
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,kGAAkG;AAClG,gGAAgG;AAChG,gGAAgG;AAChG,+FAA+F;AAC/F,8DAA8D;AAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAkE,MAAM,iBAAiB,CAAC;AAC1L,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAC;AAElE,sDAAsD;AACtD,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAkClE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAgD;IACvE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7G,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IACnH,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE;IAC9G,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;IACjF,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACnE,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9G,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;CACtG,CAAC;AAEF,6LAA6L;AAC7L,SAAS,MAAM,CAAC,CAAiB;IAC/B,IAAI,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,QAA0B,CAAC;IACrD,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,QAA4B,CAAC;AACvH,CAAC;AAED,4GAA4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAE,OAAO,GAAkB,EAAE;IAC3E,MAAM,MAAM,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,MAAM,OAAO,CAAC,SAAS,EAAE,oGAAoG,EAAE,SAAS,CAAC,CAAC;IACzM,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,OAAO,CAAC,SAAS,EAAE,sCAAsC,IAAI,GAAG,EAAE,UAAU,CAAC,CAAC;IAChG,MAAM,CAAC,GAA2B,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxG,IAAI,CAAC,KAAK;QAAE,MAAM,OAAO,CAAC,SAAS,EAAE,oBAAoB,OAAO,CAAC,KAAK,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC1G,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnH,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,gBAAgB;QAAE,MAAM,OAAO,CAAC,SAAS,EAAE,mBAAmB,OAAO,CAAC,KAAK,IAAI,gBAAgB,UAAU,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,iBAAiB,gBAAgB,wBAAwB,EAAE,UAAU,CAAC,CAAC;IACzO,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAE1F,mHAAmH;IACnH,oHAAoH;IACpH,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACjI,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;IACtH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,EAAE,MAAM,GAAG,IAAI,GAAG,EAAoB,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnI,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACzG,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAChD,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAC9K,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,sDAAsD;IAChF,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;QAC9D,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QACrM,OAAO,wBAAwB,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,4FAA4F,IAAI,oIAAoI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;IACpT,CAAC,CAAC;IACF,oIAAoI;IACpI,MAAM,QAAQ,GAAG,CAAC,CAAgB,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAEpH,iGAAiG;IACjG,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3H,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC/D,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YACvE,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACvE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2CAA2C;QAC3E,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7G,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,MAAM,GAAG,GAA2B;YAClC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;YAChJ,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY;SAC1K,CAAC;QACF,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAC,GAAG,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;YAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,cAAc,CAAC;QAAC,CAAC;QACzG,IAAI,MAAM,EAAE,CAAC;YAAC,GAAG,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;YAAC,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAAC,CAAC;QACzE,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC7B,IAAI,GAAG,KAAK,SAAS;oBAAE,SAAS;gBAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3G,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAC3B,GAAG,CAAC,YAAY,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,CAAC,IAAI;gBAAE,GAAG,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,EAAE,GAAG,CAAC,kBAAkB,CAAE,EAAE,GAAG,CAAC,CAAC;YACvF,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,0BAA0B,CAAC,CAAC,OAAO,uBAAuB,CAAC;YAC1E,GAAG,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACpG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,OAAO,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC;QACpD,IAAI,OAAO,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5F,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;aACtE,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,sHAAsH;QACtH,MAAM,MAAM,GAAG,2EAA2E,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAClN,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,IAAI,+BAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7K,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,6CAA6C,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,2IAA2I;QAC3I,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,yBAAyB,EAAE,4BAA4B,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,GAAI,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC,8CAA8C,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,qEAAqE,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5U,qHAAqH;QACrH,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3K,OAAO,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,qBAAqB,MAAM,IAAI,GAAG,GAAG,KAAK,cAAc,CAAC;IACjI,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,OAAO,CAAC,6FAA6F,CAAC;IACzJ,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,GAAG,CAAC,IAAI,CAAC,4CAA4C,GAAG,CAAC,IAAI,CAAC,oBAAoB,OAAO,oBAAoB,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,+EAA+E,KAAK,uBAAuB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,mDAAmD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnhB,GAAG,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,CAAC,CAAC,qBAAqB,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACxJ,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,4BAA4B,MAAM,8BAA8B,IAAI,2BAA2B,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACzK,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,YAAY,IAAI,6DAA6D,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC,IAAI,WAAW,MAAM,iBAAiB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1O,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,YAAY,IAAI,0EAA0E,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtM,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnG,IAAI,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,OAAO,CAAC,uDAAuD,KAAK,oBAAoB,CAAC,CAAC;IACzQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,6PAA6P;AAC7P,SAAS,MAAM,CAAC,MAAwB,EAAE,OAAiB,EAAE,QAAgB,EAAE,CAAyB,EAAE,KAAgE,EAAE,QAAiD;IAC3N,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC5G,MAAM,KAAK,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpG,MAAM,KAAK,GAAG,CAAC,mBAAmB,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,KAAK,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtM,OAAO,sBAAsB,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,GAAG,yBAAyB,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;IAChO,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,WAAW,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC;QAC/J,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,OAAO,CAAC,iCAAiC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9J,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,WAAW,CAAC,CAAC;AAC7C,iNAAiN;AACjN,MAAM,UAAU,GAAG,qBAAqB,CAAC;AACzC,MAAM,KAAK,GAAG,kFAAkF,CAAC;AACjG,SAAS,QAAQ,CAAC,GAAY,EAAE,CAAyB;IACvD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,yCAAyC,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3H,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yHAAyH;AACzH,SAAS,QAAQ,CAAC,KAA0C,EAAE,CAAyB;IACrF,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IACnJ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,6GAA6G;AAC7G,MAAM,OAAO,GAAG,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAErJ;;;GAGG;AACH,SAAS,SAAS,CAAC,IAA+B,EAAE,KAAa;IAC/D,MAAM,QAAQ,GAAe,EAAE,EAAE,KAAK,GAAG,IAAI,GAAG,EAA0B,EAAE,MAAM,GAAyC,EAAE,CAAC;IAC9H,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK;YAAE,SAAS;QAChC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACjD,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAClF,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAW,EAAE,GAAW,EAAE,GAAW,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC;IAC5H,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1J,CAAC;AAED,iFAAiF;AACjF,MAAM,OAAO,GAAG,CAAC,GAA2B,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjH,gLAAgL;AAChL,MAAM,GAAG,GAA2B,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC7I,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AAE7E,8HAA8H;AAC9H,SAAS,KAAK,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa;IACtD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AACjI,CAAC;AACD,SAAS,GAAG,CAAC,CAAS;IACpB,MAAM,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;QAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAA6B,CAAC;IAAC,CAAC;IACxK,MAAM,CAAC,GAAG,wEAAwE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1F,MAAM,MAAM,GAAG,CAAC,CAAW,EAAE,EAAY,EAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEvM,gFAAgF;AAChF,SAAS,UAAU,CAAC,CAAW,EAAE,GAA2B,EAAE,GAA2B;IACvF,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,OAAO,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACjF,CAAC;AAED,uEAAuE;AACvE,SAAS,SAAS,CAAC,IAAqC,EAAE,MAA2B;IACnF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAClH,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,yKAAyK;AACzK,SAAS,YAAY,CAAC,IAA+B,EAAE,KAAe;IACpE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SACjJ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3R,CAAC;AAED,wGAAwG;AACxG,SAAS,YAAY,CAAC,IAA+B;IACnD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7N,CAAC;AAED,0EAA0E;AAC1E,SAAS,UAAU,CAAC,IAAsE,EAAE,KAAe;IACzG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACnL,CAAC"}
|
package/dist/style.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
sheetpane-excel,sheetpane-errors{--sp-ground:#F6F6F4;--sp-surface:#FFFFFF;--sp-sunken:#EFEFEB;--sp-line:#E2E2DD;--sp-line-strong:#CBCBC5;--sp-cell:#FFFFFF;--sp-head:#F3F3F0;--sp-grid:#E6E6E1;--sp-ink:#16171A;--sp-ink-2:#45484F;--sp-ink-3:#63666E;--sp-accent:#2346C8;--sp-accent-ink:#1A36A0;--sp-accent-soft:#EBEEFB;--sp-pass:#16703E;--sp-pass-soft:#E6F2EA;--sp-fail:#B42318;--sp-fail-soft:#FBE9E7;--sp-warn:#875600;--sp-warn-soft:#FBF0D9;--sp-changed:#C46A00;--sp-changed-soft:#FDF1E3;--sp-note:#6B55CC;--sp-ref-1:#2346C8;--sp-ref-2:#6B55CC;--sp-ref-3:#C46A00;--sp-on-solid:#FFFFFF;--sp-hit:#FFF4C2;--sp-hit-current:#FFE07A;--sp-r-sm:4px;--sp-r:6px;--sp-r-lg:10px;--sp-r-xl:14px;--sp-shadow:0 1px 2px rgba(22,23,26,.06),0 6px 20px rgba(22,23,26,.08);--sp-shadow-lg:0 24px 64px rgba(22,23,26,.22);}
|
|
2
|
-
sheetpane-excel[theme=dark],sheetpane-errors[theme=dark]{--sp-ground:#16171A;--sp-surface:#262729;--sp-cell:#262729;--sp-sunken:#3A3B3D;--sp-head:#313234;--sp-grid:#3E3F41;--sp-line:#47484A;--sp-line-strong:#6B6C6D;--sp-ink:#F6F6F4;--sp-ink-2:#C9C9C8;--sp-ink-3:#A1A1A1;--sp-accent:#8C9EDE;--sp-accent-ink:#B7C1E7;--sp-accent-soft:#1A254E;--sp-pass:#86B399;--sp-pass-soft:#163225;--sp-fail:#D2827B;--sp-fail-soft:#451B19;--sp-warn:#CAB692;--sp-warn-soft:#412F10;--sp-changed:#D39449;--sp-changed-soft:#4A3012;--sp-note:#AA9DDE;--sp-ref-1:#8C9EDE;--sp-ref-2:#AA9DDE;--sp-ref-3:#D8A262;--sp-on-solid:#16171A;--sp-hit:#4A3D12;--sp-hit-current:#7A5F12;--sp-shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.45);--sp-shadow-lg:0 24px 64px rgba(0,0,0,.6);}
|
|
3
|
-
@media (prefers-color-scheme:dark){sheetpane-excel[theme=auto],sheetpane-errors[theme=auto]{--sp-ground:#16171A;--sp-surface:#262729;--sp-cell:#262729;--sp-sunken:#3A3B3D;--sp-head:#313234;--sp-grid:#3E3F41;--sp-line:#47484A;--sp-line-strong:#6B6C6D;--sp-ink:#F6F6F4;--sp-ink-2:#C9C9C8;--sp-ink-3:#A1A1A1;--sp-accent:#8C9EDE;--sp-accent-ink:#B7C1E7;--sp-accent-soft:#1A254E;--sp-pass:#86B399;--sp-pass-soft:#163225;--sp-fail:#D2827B;--sp-fail-soft:#451B19;--sp-warn:#CAB692;--sp-warn-soft:#412F10;--sp-changed:#D39449;--sp-changed-soft:#4A3012;--sp-note:#AA9DDE;--sp-ref-1:#8C9EDE;--sp-ref-2:#AA9DDE;--sp-ref-3:#D8A262;--sp-on-solid:#16171A;--sp-hit:#4A3D12;--sp-hit-current:#7A5F12;--sp-shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.45);--sp-shadow-lg:0 24px 64px rgba(0,0,0,.6);}}
|
|
1
|
+
sheetpane-excel,sheetpane-errors{--sp-ground:#F6F6F4;--sp-surface:#FFFFFF;--sp-sunken:#EFEFEB;--sp-line:#E2E2DD;--sp-line-strong:#CBCBC5;--sp-cell:#FFFFFF;--sp-head:#F3F3F0;--sp-grid:#E6E6E1;--sp-ink:#16171A;--sp-ink-2:#45484F;--sp-ink-3:#63666E;--sp-accent:#2346C8;--sp-accent-ink:#1A36A0;--sp-accent-soft:#EBEEFB;--sp-pass:#16703E;--sp-pass-soft:#E6F2EA;--sp-skip:#63666E;--sp-fail:#B42318;--sp-fail-soft:#FBE9E7;--sp-warn:#875600;--sp-warn-soft:#FBF0D9;--sp-changed:#C46A00;--sp-changed-soft:#FDF1E3;--sp-note:#6B55CC;--sp-ref-1:#2346C8;--sp-ref-2:#6B55CC;--sp-ref-3:#C46A00;--sp-on-solid:#FFFFFF;--sp-hit:#FFF4C2;--sp-hit-current:#FFE07A;--sp-r-sm:4px;--sp-r:6px;--sp-r-lg:10px;--sp-r-xl:14px;--sp-shadow:0 1px 2px rgba(22,23,26,.06),0 6px 20px rgba(22,23,26,.08);--sp-shadow-lg:0 24px 64px rgba(22,23,26,.22);}
|
|
2
|
+
sheetpane-excel[theme=dark],sheetpane-errors[theme=dark]{--sp-ground:#16171A;--sp-surface:#262729;--sp-cell:#262729;--sp-sunken:#3A3B3D;--sp-head:#313234;--sp-grid:#3E3F41;--sp-line:#47484A;--sp-line-strong:#6B6C6D;--sp-ink:#F6F6F4;--sp-ink-2:#C9C9C8;--sp-ink-3:#A1A1A1;--sp-accent:#8C9EDE;--sp-accent-ink:#B7C1E7;--sp-accent-soft:#1A254E;--sp-pass:#86B399;--sp-pass-soft:#163225;--sp-skip:#A1A1A1;--sp-fail:#D2827B;--sp-fail-soft:#451B19;--sp-warn:#CAB692;--sp-warn-soft:#412F10;--sp-changed:#D39449;--sp-changed-soft:#4A3012;--sp-note:#AA9DDE;--sp-ref-1:#8C9EDE;--sp-ref-2:#AA9DDE;--sp-ref-3:#D8A262;--sp-on-solid:#16171A;--sp-hit:#4A3D12;--sp-hit-current:#7A5F12;--sp-shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.45);--sp-shadow-lg:0 24px 64px rgba(0,0,0,.6);}
|
|
3
|
+
@media (prefers-color-scheme:dark){sheetpane-excel[theme=auto],sheetpane-errors[theme=auto]{--sp-ground:#16171A;--sp-surface:#262729;--sp-cell:#262729;--sp-sunken:#3A3B3D;--sp-head:#313234;--sp-grid:#3E3F41;--sp-line:#47484A;--sp-line-strong:#6B6C6D;--sp-ink:#F6F6F4;--sp-ink-2:#C9C9C8;--sp-ink-3:#A1A1A1;--sp-accent:#8C9EDE;--sp-accent-ink:#B7C1E7;--sp-accent-soft:#1A254E;--sp-pass:#86B399;--sp-pass-soft:#163225;--sp-skip:#A1A1A1;--sp-fail:#D2827B;--sp-fail-soft:#451B19;--sp-warn:#CAB692;--sp-warn-soft:#412F10;--sp-changed:#D39449;--sp-changed-soft:#4A3012;--sp-note:#AA9DDE;--sp-ref-1:#8C9EDE;--sp-ref-2:#AA9DDE;--sp-ref-3:#D8A262;--sp-on-solid:#16171A;--sp-hit:#4A3D12;--sp-hit-current:#7A5F12;--sp-shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.45);--sp-shadow-lg:0 24px 64px rgba(0,0,0,.6);}}
|
package/dist/tokens.d.ts
CHANGED
package/dist/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAOA,yGAAyG;AACzG,eAAO,MAAM,MAAM;aACjB,MAAM,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aAAE,MAAM,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,aAAa,EAAE,SAAS;aACnG,IAAI,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aACjD,GAAG,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aACtD,MAAM,EAAE,SAAS;aAAE,YAAY,EAAE,SAAS;aAAE,aAAa,EAAE,SAAS;aACpE,IAAI,EAAE,SAAS;aAAE,WAAW,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,WAAW,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,WAAW,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAOA,yGAAyG;AACzG,eAAO,MAAM,MAAM;aACjB,MAAM,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aAAE,MAAM,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,aAAa,EAAE,SAAS;aACnG,IAAI,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aACjD,GAAG,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aACtD,MAAM,EAAE,SAAS;aAAE,YAAY,EAAE,SAAS;aAAE,aAAa,EAAE,SAAS;aACpE,IAAI,EAAE,SAAS;aAAE,WAAW,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,WAAW,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAAE,WAAW,EAAE,SAAS;aAC1I,OAAO,EAAE,SAAS;aAAE,cAAc,EAAE,SAAS;aAAE,IAAI,EAAE,SAAS;aAC9D,OAAO,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aAAE,OAAO,EAAE,SAAS;aAAE,UAAU,EAAE,SAAS;aACjF,GAAG,EAAE,SAAS;aAAE,aAAa,EAAE,SAAS;aACxC,MAAM,EAAE,KAAK;aAAE,CAAC,EAAE,KAAK;aAAE,MAAM,EAAE,MAAM;aAAE,MAAM,EAAE,MAAM;aACvD,MAAM,EAAE,4DAA4D;aACpE,WAAW,EAAE,gCAAgC;CACrC,CAAC;AAEX,4DAA4D;AAC5D,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC;AAE5C,8CAA8C;AAC9C,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,qGAAqG;AACrG,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAU1D,CAAC;AAIF,gIAAgI;AAChI,eAAO,MAAM,UAAU,QAEyE,CAAC;AAEjG,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,QAG7B,CAAC"}
|
package/dist/tokens.js
CHANGED
|
@@ -10,7 +10,7 @@ export const TOKENS = {
|
|
|
10
10
|
cell: '#FFFFFF', head: '#F3F3F0', grid: '#E6E6E1',
|
|
11
11
|
ink: '#16171A', 'ink-2': '#45484F', 'ink-3': '#63666E',
|
|
12
12
|
accent: '#2346C8', 'accent-ink': '#1A36A0', 'accent-soft': '#EBEEFB',
|
|
13
|
-
pass: '#16703E', 'pass-soft': '#E6F2EA', fail: '#B42318', 'fail-soft': '#FBE9E7', warn: '#875600', 'warn-soft': '#FBF0D9',
|
|
13
|
+
pass: '#16703E', 'pass-soft': '#E6F2EA', skip: '#63666E', fail: '#B42318', 'fail-soft': '#FBE9E7', warn: '#875600', 'warn-soft': '#FBF0D9',
|
|
14
14
|
changed: '#C46A00', 'changed-soft': '#FDF1E3', note: '#6B55CC',
|
|
15
15
|
'ref-1': '#2346C8', 'ref-2': '#6B55CC', 'ref-3': '#C46A00', 'on-solid': '#FFFFFF',
|
|
16
16
|
hit: '#FFF4C2', 'hit-current': '#FFE07A',
|
|
@@ -23,7 +23,7 @@ export const DARK_TOKENS = {
|
|
|
23
23
|
ground: '#16171A', surface: '#262729', cell: '#262729', sunken: '#3A3B3D', head: '#313234', grid: '#3E3F41',
|
|
24
24
|
line: '#47484A', 'line-strong': '#6B6C6D', ink: '#F6F6F4', 'ink-2': '#C9C9C8', 'ink-3': '#A1A1A1',
|
|
25
25
|
accent: '#8C9EDE', 'accent-ink': '#B7C1E7', 'accent-soft': '#1A254E',
|
|
26
|
-
pass: '#86B399', 'pass-soft': '#163225', fail: '#D2827B', 'fail-soft': '#451B19', warn: '#CAB692', 'warn-soft': '#412F10',
|
|
26
|
+
pass: '#86B399', 'pass-soft': '#163225', skip: '#A1A1A1', fail: '#D2827B', 'fail-soft': '#451B19', warn: '#CAB692', 'warn-soft': '#412F10',
|
|
27
27
|
changed: '#D39449', 'changed-soft': '#4A3012', note: '#AA9DDE',
|
|
28
28
|
'ref-1': '#8C9EDE', 'ref-2': '#AA9DDE', 'ref-3': '#D8A262', 'on-solid': '#16171A',
|
|
29
29
|
hit: '#4A3D12', 'hit-current': '#7A5F12',
|
package/dist/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAE9E,yGAAyG;AACzG,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS;IACnG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IACjD,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS;IACtD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS;IACpE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
"name": "--sp-pass",
|
|
146
|
-
"description": "Resolved, passing. Dark theme: `#86B399`. Default: `#16703E`.",
|
|
146
|
+
"description": "Resolved, passing; the ✓ result mark. Dark theme: `#86B399`. Default: `#16703E`.",
|
|
147
147
|
"references": [
|
|
148
148
|
{
|
|
149
149
|
"name": "SR-GRID decision 15a",
|
|
@@ -161,6 +161,16 @@
|
|
|
161
161
|
}
|
|
162
162
|
]
|
|
163
163
|
},
|
|
164
|
+
{
|
|
165
|
+
"name": "--sp-skip",
|
|
166
|
+
"description": "Not checked: the — result mark (W-50). Dark theme: `#A1A1A1`. Default: `#63666E`.",
|
|
167
|
+
"references": [
|
|
168
|
+
{
|
|
169
|
+
"name": "SR-GRID decision 15a",
|
|
170
|
+
"url": "https://github.com/arpitarya/sheetpane/blob/main/records/0105_GRID.md"
|
|
171
|
+
}
|
|
172
|
+
]
|
|
173
|
+
},
|
|
164
174
|
{
|
|
165
175
|
"name": "--sp-fail",
|
|
166
176
|
"description": "Errors. Dark theme: `#D2827B`. Default: `#B42318`.",
|
|
@@ -135,6 +135,68 @@
|
|
|
135
135
|
"name": "off"
|
|
136
136
|
}
|
|
137
137
|
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "ref",
|
|
141
|
+
"description": {
|
|
142
|
+
"kind": "markdown",
|
|
143
|
+
"value": "The cell or range selected once a file is read, scrolled into view: `B4`, `Data!B4`, `'Q3 data'!B4:D8`; setting it later selects it then. One that names no cell is warned (SP-3019) and the sheet opens at A1. React, Vue and Solid keep `ref` for their own refs — set it with `setAttribute`."
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"name": "link",
|
|
148
|
+
"description": {
|
|
149
|
+
"kind": "markdown",
|
|
150
|
+
"value": "`none` (the default) or `hash`: the selection is kept in the URL fragment as `#sheetpane=<pane>:<Sheet>!<ref>`, read when a file is read and on back and forward, and *Copy link* joins the cell menu. The rest of the fragment is the host's and is kept as it was."
|
|
151
|
+
},
|
|
152
|
+
"values": [
|
|
153
|
+
{
|
|
154
|
+
"name": "none"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"name": "hash"
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "results",
|
|
163
|
+
"description": {
|
|
164
|
+
"kind": "markdown",
|
|
165
|
+
"value": "`summary` (the default), `marks` or `off`: how `pass` and `skipped` results show, pane-wide (W-50)."
|
|
166
|
+
},
|
|
167
|
+
"values": [
|
|
168
|
+
{
|
|
169
|
+
"name": "summary"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "marks"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"name": "off"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "layers",
|
|
181
|
+
"description": {
|
|
182
|
+
"kind": "markdown",
|
|
183
|
+
"value": "Space-separated review layers to show (W-51); none shows every layer. Shared by the pane's elements."
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"name": "protection",
|
|
188
|
+
"description": {
|
|
189
|
+
"kind": "markdown",
|
|
190
|
+
"value": "`honour` (the default) or `ignore`: whether a protected sheet's locked cells refuse edits and a protected structure keeps its sheets, pane-wide (W-62). `ignore` is the host's decision; the file is unchanged."
|
|
191
|
+
},
|
|
192
|
+
"values": [
|
|
193
|
+
{
|
|
194
|
+
"name": "honour"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"name": "ignore"
|
|
198
|
+
}
|
|
199
|
+
]
|
|
138
200
|
}
|
|
139
201
|
],
|
|
140
202
|
"references": [
|
|
@@ -166,7 +228,7 @@
|
|
|
166
228
|
"name": "readonly",
|
|
167
229
|
"description": {
|
|
168
230
|
"kind": "markdown",
|
|
169
|
-
"value": "Hides the form, Resolve, Delete, Undo and Redo (a sign-off screen)."
|
|
231
|
+
"value": "Hides the form, Resolve, Accept…, Delete, Undo and Redo (a sign-off screen)."
|
|
170
232
|
},
|
|
171
233
|
"valueSet": "v"
|
|
172
234
|
},
|
|
@@ -174,7 +236,7 @@
|
|
|
174
236
|
"name": "author",
|
|
175
237
|
"description": {
|
|
176
238
|
"kind": "markdown",
|
|
177
|
-
"value": "Written into the errors this element's user adds."
|
|
239
|
+
"value": "Written into the errors this element's user adds, and as who accepted one (W-69)."
|
|
178
240
|
}
|
|
179
241
|
},
|
|
180
242
|
{
|
|
@@ -201,6 +263,31 @@
|
|
|
201
263
|
"name": "auto"
|
|
202
264
|
}
|
|
203
265
|
]
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"name": "results",
|
|
269
|
+
"description": {
|
|
270
|
+
"kind": "markdown",
|
|
271
|
+
"value": "`summary` (the default), `marks` or `off`: how `pass` and `skipped` results show, pane-wide (W-50)."
|
|
272
|
+
},
|
|
273
|
+
"values": [
|
|
274
|
+
{
|
|
275
|
+
"name": "summary"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"name": "marks"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"name": "off"
|
|
282
|
+
}
|
|
283
|
+
]
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "layers",
|
|
287
|
+
"description": {
|
|
288
|
+
"kind": "markdown",
|
|
289
|
+
"value": "Space-separated review layers to show (W-51); none shows every layer. Shared by the pane's elements; with two or more layers the header shows a switch."
|
|
290
|
+
}
|
|
204
291
|
}
|
|
205
292
|
],
|
|
206
293
|
"references": [
|