@sheetpane/grid 0.0.0-stage → 0.1.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.
Files changed (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +429 -2
  3. package/custom-elements.json +1246 -0
  4. package/dist/errors/element.d.ts +108 -0
  5. package/dist/errors/element.d.ts.map +1 -0
  6. package/dist/errors/element.js +456 -0
  7. package/dist/errors/element.js.map +1 -0
  8. package/dist/errors/index.d.ts +2 -0
  9. package/dist/errors/index.d.ts.map +1 -0
  10. package/dist/errors/index.js +3 -0
  11. package/dist/errors/index.js.map +1 -0
  12. package/dist/excel/element.d.ts +434 -0
  13. package/dist/excel/element.d.ts.map +1 -0
  14. package/dist/excel/element.js +3382 -0
  15. package/dist/excel/element.js.map +1 -0
  16. package/dist/excel/geometry.d.ts +81 -0
  17. package/dist/excel/geometry.d.ts.map +1 -0
  18. package/dist/excel/geometry.js +137 -0
  19. package/dist/excel/geometry.js.map +1 -0
  20. package/dist/excel/index.d.ts +2 -0
  21. package/dist/excel/index.d.ts.map +1 -0
  22. package/dist/excel/index.js +3 -0
  23. package/dist/excel/index.js.map +1 -0
  24. package/dist/excel/selection.d.ts +103 -0
  25. package/dist/excel/selection.d.ts.map +1 -0
  26. package/dist/excel/selection.js +189 -0
  27. package/dist/excel/selection.js.map +1 -0
  28. package/dist/excel/styles.d.ts +3 -0
  29. package/dist/excel/styles.d.ts.map +1 -0
  30. package/dist/excel/styles.js +206 -0
  31. package/dist/excel/styles.js.map +1 -0
  32. package/dist/frameworks/elements.d.ts +136 -0
  33. package/dist/frameworks/jsx.d.ts +64 -0
  34. package/dist/frameworks/jsx.js +2 -0
  35. package/dist/frameworks/solid.d.ts +133 -0
  36. package/dist/frameworks/solid.js +2 -0
  37. package/dist/frameworks/svelte.d.ts +102 -0
  38. package/dist/frameworks/svelte.js +2 -0
  39. package/dist/frameworks/vue.d.ts +69 -0
  40. package/dist/frameworks/vue.js +2 -0
  41. package/dist/index.d.ts +23 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +25 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/llms-full.txt +8028 -0
  46. package/dist/llms.txt +111 -0
  47. package/dist/pane/index.d.ts +2 -0
  48. package/dist/pane/index.d.ts.map +1 -0
  49. package/dist/pane/index.js +3 -0
  50. package/dist/pane/index.js.map +1 -0
  51. package/dist/pane/registry.d.ts +33 -0
  52. package/dist/pane/registry.d.ts.map +1 -0
  53. package/dist/pane/registry.js +73 -0
  54. package/dist/pane/registry.js.map +1 -0
  55. package/dist/pane/rules.d.ts +231 -0
  56. package/dist/pane/rules.d.ts.map +1 -0
  57. package/dist/pane/rules.js +792 -0
  58. package/dist/pane/rules.js.map +1 -0
  59. package/dist/pane/store.d.ts +385 -0
  60. package/dist/pane/store.d.ts.map +1 -0
  61. package/dist/pane/store.js +1028 -0
  62. package/dist/pane/store.js.map +1 -0
  63. package/dist/pane/types.d.ts +130 -0
  64. package/dist/pane/types.d.ts.map +1 -0
  65. package/dist/pane/types.js +22 -0
  66. package/dist/pane/types.js.map +1 -0
  67. package/dist/plugins/host.d.ts +56 -0
  68. package/dist/plugins/host.d.ts.map +1 -0
  69. package/dist/plugins/host.js +124 -0
  70. package/dist/plugins/host.js.map +1 -0
  71. package/dist/plugins/types.d.ts +159 -0
  72. package/dist/plugins/types.d.ts.map +1 -0
  73. package/dist/plugins/types.js +12 -0
  74. package/dist/plugins/types.js.map +1 -0
  75. package/dist/rules.schema.json +52 -0
  76. package/dist/shared/dom.d.ts +23 -0
  77. package/dist/shared/dom.d.ts.map +1 -0
  78. package/dist/shared/dom.js +32 -0
  79. package/dist/shared/dom.js.map +1 -0
  80. package/dist/skills-bin.d.ts +3 -0
  81. package/dist/skills-bin.d.ts.map +1 -0
  82. package/dist/skills-bin.js +9 -0
  83. package/dist/skills-bin.js.map +1 -0
  84. package/dist/style.css +3 -0
  85. package/dist/tokens.d.ts +49 -0
  86. package/dist/tokens.d.ts.map +1 -0
  87. package/dist/tokens.js +43 -0
  88. package/dist/tokens.js.map +1 -0
  89. package/dist/vscode.css-custom-data.json +365 -0
  90. package/dist/vscode.html-custom-data.json +218 -0
  91. package/dist/web-types.json +914 -0
  92. package/package.json +72 -3
@@ -0,0 +1,108 @@
1
+ import type { Theme } from '../tokens.js';
2
+ import { type WorkbookStore } from '../pane/store.js';
3
+ import { type ErrorType, type SheetpaneError, type Severity } from '../pane/types.js';
4
+ import { ElementBase } from '../shared/dom.js';
5
+ declare const sevOrder: Record<Severity, number>;
6
+ /**
7
+ * `<sheetpane-errors>` — the error list and the Flag issue form, on the same in-memory
8
+ * workbook as `<sheetpane-excel>` (SR-ERRORS). It keeps no private copy: every render reads
9
+ * the pane's store, so the two are always in step (SR-LAW-7). It registers on import.
10
+ *
11
+ * Attributes:
12
+ * - `pane` — the pane id shared with the sheet; none gives the element its own store.
13
+ * - `readonly` — hides the form, Resolve, Delete, Undo and Redo (a sign-off screen).
14
+ * - `author` — written into the errors this element's user adds.
15
+ * - `plugins` — space-separated registered plugin ids; fixed per pane.
16
+ * - `theme` — `light` (the default), `dark` or `auto`.
17
+ *
18
+ * Properties: `workbook`, `errors`, `errorTypes`, `readOnly`, `theme`.
19
+ *
20
+ * Methods: `getErrors()`, `setErrors(list, { plugins? })`, `renderNow()`.
21
+ *
22
+ * Every event bubbles and is composed; an action's event fires once, on the element where it
23
+ * happened.
24
+ *
25
+ * @fires sheetpane-errors `{ errors, plugins }` when the pane's errors change — the envelope to save a review.
26
+ * @fires sheetpane-change `{ sheet, ref, kind, was, now }` when a cell changes from here ("Also change the cell", undo, redo).
27
+ * @fires sheetpane-select `{ sheet, ref }` when picking a row selects its cell.
28
+ * @fires sheetpane-history `{ reason, canUndo, canRedo }` on undo, redo, or the stack cleared by `setErrors()`.
29
+ * @fires sheetpane-reveal `{ error }` on Show in sheet, so the host can switch tab or open the pop-up.
30
+ *
31
+ * @csspart root - The panel's frame: the header, the form, the filters and the list.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import '@sheetpane/grid';
36
+ * const list = document.createElement('sheetpane-errors');
37
+ * list.setAttribute('pane', 'q3');
38
+ * list.setAttribute('author', 'reviewer@example.com');
39
+ * document.body.append(list);
40
+ * list.addEventListener('sheetpane-errors', (e) => localStorage.setItem('review', JSON.stringify((e as CustomEvent).detail)));
41
+ * const saved = JSON.parse(localStorage.getItem('review') ?? 'null');
42
+ * if (saved) list.setErrors(saved.errors, { plugins: saved.plugins });
43
+ * ```
44
+ * @see https://github.com/arpitarya/sheetpane/blob/main/records/0106_ERRORS.md
45
+ * @see https://github.com/arpitarya/sheetpane/blob/main/packages/grid/README.md#sheetpane-errors
46
+ */
47
+ export declare class SheetpaneErrors extends ElementBase {
48
+ /** The attributes the element reacts to. */
49
+ static observedAttributes: string[];
50
+ private _store;
51
+ private _explicitStore;
52
+ private _paneId;
53
+ private _errorTypes;
54
+ private unsub;
55
+ private shadow;
56
+ private raf;
57
+ private filter;
58
+ private authorFilter;
59
+ private expanded;
60
+ private draft;
61
+ private formKey;
62
+ private savedPlugins;
63
+ /** The pane's store; assigning one replaces the `pane` lookup. */
64
+ get workbook(): WorkbookStore | undefined;
65
+ set workbook(s: WorkbookStore | undefined);
66
+ /** A copy of the pane's errors; assigning restores a saved review, like `setErrors()`. */
67
+ get errors(): SheetpaneError[];
68
+ set errors(list: SheetpaneError[]);
69
+ /** The types offered in the form; an empty list falls back to `DEFAULT_ERROR_TYPES`. */
70
+ get errorTypes(): readonly ErrorType[];
71
+ set errorTypes(t: readonly ErrorType[]);
72
+ /** Whether the list is read-only (the `readonly` attribute). */
73
+ get readOnly(): boolean;
74
+ set readOnly(v: boolean);
75
+ /** `light` (the default), `dark` or `auto` — the same tokens as the sheet (W-29). */
76
+ get theme(): Theme;
77
+ set theme(t: Theme);
78
+ /** A copy of the pane's errors, to save a review. */
79
+ getErrors(): SheetpaneError[];
80
+ /** Restores a saved review. `plugins` (from the saved `sheetpane-errors` envelope) shows a notice when it differs from this pane's set. */
81
+ setErrors(list: SheetpaneError[], o?: {
82
+ plugins?: string[];
83
+ }): void;
84
+ /** Builds the shadow root once and binds to the pane's store. */
85
+ connectedCallback(): void;
86
+ /** Releases the pane's store. */
87
+ disconnectedCallback(): void;
88
+ /** Reacts to an observed attribute. */
89
+ attributeChangedCallback(name: string, old: string | null, val: string | null): void;
90
+ private ensureStore;
91
+ private bind;
92
+ private unbind;
93
+ private onStoreEvent;
94
+ private schedule;
95
+ /** Renders now (tests and the first frame). */
96
+ renderNow(): void;
97
+ private onClick;
98
+ private onInput;
99
+ private onKey;
100
+ private add;
101
+ private authorKind;
102
+ private render;
103
+ private formHtml;
104
+ }
105
+ /** The column's header text: the nearest row above with two or more text cells. */
106
+ export declare function headerFor(text: string[][], row: number, col: number): string;
107
+ export { sevOrder };
108
+ //# sourceMappingURL=element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/errors/element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,456 @@
1
+ // <sheetpane-errors> — the error component (W-02): the list and the New error
2
+ // form, on the same store as <sheetpane-excel> (SR-LAW-7). It keeps no private
3
+ // copy of errors or workbook data; no "linked" chip, no export footer.
4
+ import { cellRef, colName, parseRange, parseRef } from '@sheetpane/export';
5
+ import { pluginsFromIds } from '../plugins/host.js';
6
+ import { acquirePane, attach, detach, isPrimary, releasePane } from '../pane/registry.js';
7
+ import { createWorkbook } from '../pane/store.js';
8
+ import { BUILTIN_TYPE_NAMES, DEFAULT_ERROR_TYPES, SEVERITY, machineAuthored } from '../pane/types.js';
9
+ import { BASE_CSS } from '../excel/styles.js';
10
+ import { ElementBase, ICON, esc, fire } from '../shared/dom.js';
11
+ const CSS = `.grp{padding:8px 12px 2px;font-size:11px;font-weight:600;color:var(--sp-ink-3);text-transform:uppercase;letter-spacing:.04em}
12
+ ${BASE_CSS}
13
+ :host{display:block}
14
+ .spe{display:flex;flex-direction:column;height:100%;min-height:240px;background:var(--sp-surface);border:1px solid var(--sp-line);border-radius:var(--sp-r-lg);overflow:hidden}
15
+ .hd{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--sp-line);flex-wrap:wrap}
16
+ .hd .t{font-weight:600}
17
+ .filters{display:flex;gap:4px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--sp-line)}
18
+ .filters button{height:26px;padding:0 10px;border:1px solid var(--sp-line-strong);border-radius:999px;background:var(--sp-surface);color:var(--sp-ink-2);font-size:12px;font-weight:500;cursor:pointer}
19
+ .filters button[aria-pressed=true]{background:var(--sp-ink);border-color:var(--sp-ink);color:var(--sp-cell)}
20
+ .filters .sep{width:1px;background:var(--sp-line);margin:2px 4px}
21
+ .scrollarea{flex:1;min-height:0;overflow:auto}
22
+ .empty{padding:24px 16px;color:var(--sp-ink-3);font-size:13px;text-align:center}
23
+ .item{border-bottom:1px solid var(--sp-line)}
24
+ .issue{display:flex;gap:10px;padding:10px 12px;align-items:flex-start;width:100%;border:0;background:none;text-align:left;cursor:pointer;color:var(--sp-ink);font:inherit}
25
+ .issue:hover{background:var(--sp-ground)}
26
+ .item.on .issue{background:var(--sp-accent-soft)}
27
+ .issue .n{font-size:11px;font-weight:700;min-width:22px;height:20px;border-radius:10px;color:var(--sp-on-solid);display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;flex:none}
28
+ .n.error{background:var(--sp-fail)}.n.warning{background:var(--sp-warn)}.n.note{background:var(--sp-accent)}.n.resolved{background:var(--sp-pass)}
29
+ .issue .bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
30
+ .issue .ty{font-weight:600;font-size:13px}
31
+ .item.done .ty{color:var(--sp-ink-3);text-decoration:line-through}
32
+ .issue .ba{font-size:12px;overflow-wrap:anywhere}
33
+ .issue .m{font-size:12px;color:var(--sp-ink-3)}
34
+ .found{color:var(--sp-fail);text-decoration:line-through;background:var(--sp-fail-soft);padding:0 3px;border-radius:3px}
35
+ .want{color:var(--sp-pass);background:var(--sp-pass-soft);padding:0 3px;border-radius:3px}
36
+ .detail{padding:4px 12px 12px 44px;display:flex;flex-direction:column;gap:8px;background:var(--sp-accent-soft)}
37
+ .detail .why{font-size:13px;margin:0}
38
+ .detail .acts{display:flex;gap:6px;flex-wrap:wrap}
39
+ .form{border-bottom:1px solid var(--sp-line);display:flex;flex-direction:column;background:var(--sp-surface)}
40
+ .form .fhd{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--sp-line)}
41
+ .form .fbd{padding:12px;display:flex;flex-direction:column;gap:10px}
42
+ .form .fft{display:flex;gap:6px;padding:8px 12px;border-top:1px solid var(--sp-line);background:var(--sp-ground);align-items:center}
43
+ .kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;font-size:13px;margin:0}
44
+ .kv dt{color:var(--sp-ink-3)}.kv dd{margin:0;overflow-wrap:anywhere}
45
+ .tchips{display:flex;flex-wrap:wrap;gap:6px}
46
+ .tchip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--sp-line-strong);border-radius:999px;background:var(--sp-surface);color:var(--sp-ink-2);font-size:12px;font-weight:500;cursor:pointer}
47
+ .tchip[aria-pressed=true]{background:var(--sp-ink);border-color:var(--sp-ink);color:var(--sp-cell)}
48
+ .field{display:flex;flex-direction:column;gap:4px}
49
+ .field>span{font-size:12px;font-weight:500;color:var(--sp-ink-2)}
50
+ .ex{padding:10px;border-radius:var(--sp-r);background:var(--sp-ground);border:1px dashed var(--sp-line-strong);font-size:12px;color:var(--sp-ink-2);display:flex;flex-direction:column;gap:4px}
51
+ .notice{margin:8px 12px 0;padding:8px 10px;border-radius:var(--sp-r);background:var(--sp-warn-soft);border:1px solid var(--sp-warn);font-size:12px}
52
+ `;
53
+ const sevOrder = { error: 3, warning: 2, note: 1 };
54
+ const errNum = (e) => Number(/(\d+)$/.exec(e.id)?.[1] ?? 0);
55
+ /**
56
+ * `<sheetpane-errors>` — the error list and the Flag issue form, on the same in-memory
57
+ * workbook as `<sheetpane-excel>` (SR-ERRORS). It keeps no private copy: every render reads
58
+ * the pane's store, so the two are always in step (SR-LAW-7). It registers on import.
59
+ *
60
+ * Attributes:
61
+ * - `pane` — the pane id shared with the sheet; none gives the element its own store.
62
+ * - `readonly` — hides the form, Resolve, Delete, Undo and Redo (a sign-off screen).
63
+ * - `author` — written into the errors this element's user adds.
64
+ * - `plugins` — space-separated registered plugin ids; fixed per pane.
65
+ * - `theme` — `light` (the default), `dark` or `auto`.
66
+ *
67
+ * Properties: `workbook`, `errors`, `errorTypes`, `readOnly`, `theme`.
68
+ *
69
+ * Methods: `getErrors()`, `setErrors(list, { plugins? })`, `renderNow()`.
70
+ *
71
+ * Every event bubbles and is composed; an action's event fires once, on the element where it
72
+ * happened.
73
+ *
74
+ * @fires sheetpane-errors `{ errors, plugins }` when the pane's errors change — the envelope to save a review.
75
+ * @fires sheetpane-change `{ sheet, ref, kind, was, now }` when a cell changes from here ("Also change the cell", undo, redo).
76
+ * @fires sheetpane-select `{ sheet, ref }` when picking a row selects its cell.
77
+ * @fires sheetpane-history `{ reason, canUndo, canRedo }` on undo, redo, or the stack cleared by `setErrors()`.
78
+ * @fires sheetpane-reveal `{ error }` on Show in sheet, so the host can switch tab or open the pop-up.
79
+ *
80
+ * @csspart root - The panel's frame: the header, the form, the filters and the list.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * import '@sheetpane/grid';
85
+ * const list = document.createElement('sheetpane-errors');
86
+ * list.setAttribute('pane', 'q3');
87
+ * list.setAttribute('author', 'reviewer@example.com');
88
+ * document.body.append(list);
89
+ * list.addEventListener('sheetpane-errors', (e) => localStorage.setItem('review', JSON.stringify((e as CustomEvent).detail)));
90
+ * const saved = JSON.parse(localStorage.getItem('review') ?? 'null');
91
+ * if (saved) list.setErrors(saved.errors, { plugins: saved.plugins });
92
+ * ```
93
+ * @see https://github.com/arpitarya/sheetpane/blob/main/records/0106_ERRORS.md
94
+ * @see https://github.com/arpitarya/sheetpane/blob/main/packages/grid/README.md#sheetpane-errors
95
+ */
96
+ export class SheetpaneErrors extends ElementBase {
97
+ /** The attributes the element reacts to. */
98
+ static observedAttributes = ['pane', 'readonly', 'author', 'plugins'];
99
+ _store;
100
+ _explicitStore;
101
+ _paneId;
102
+ _errorTypes = DEFAULT_ERROR_TYPES;
103
+ unsub = [];
104
+ shadow;
105
+ raf = 0;
106
+ filter = 'all';
107
+ authorFilter = 'all';
108
+ expanded;
109
+ draft = { type: DEFAULT_ERROR_TYPES[0].id, message: '', expected: '', severity: DEFAULT_ERROR_TYPES[0].severity, change: false };
110
+ formKey = '';
111
+ savedPlugins;
112
+ // ── properties ───────────────────────────────────────────────────────────
113
+ /** The pane's store; assigning one replaces the `pane` lookup. */
114
+ get workbook() { return this._store; }
115
+ set workbook(s) { this._explicitStore = s; if (this.isConnected) {
116
+ this.unbind();
117
+ this.bind();
118
+ this.schedule();
119
+ } }
120
+ /** A copy of the pane's errors; assigning restores a saved review, like `setErrors()`. */
121
+ get errors() { return this._store?.getErrors() ?? []; }
122
+ set errors(list) { this.setErrors(list); }
123
+ /** The types offered in the form; an empty list falls back to `DEFAULT_ERROR_TYPES`. */
124
+ get errorTypes() { return this._errorTypes; }
125
+ set errorTypes(t) { this._errorTypes = t.length ? t : DEFAULT_ERROR_TYPES; this.formKey = ''; this.schedule(); }
126
+ /** Whether the list is read-only (the `readonly` attribute). */
127
+ get readOnly() { return this.hasAttribute('readonly'); }
128
+ set readOnly(v) { this.toggleAttribute('readonly', v); }
129
+ /** `light` (the default), `dark` or `auto` — the same tokens as the sheet (W-29). */
130
+ get theme() { const t = this.getAttribute('theme'); return t === 'dark' || t === 'auto' ? t : 'light'; }
131
+ set theme(t) { this.setAttribute('theme', t); }
132
+ /** A copy of the pane's errors, to save a review. */
133
+ getErrors() { return this.errors; }
134
+ /** Restores a saved review. `plugins` (from the saved `sheetpane-errors` envelope) shows a notice when it differs from this pane's set. */
135
+ setErrors(list, o = {}) {
136
+ this.savedPlugins = o.plugins;
137
+ this.ensureStore().setErrors(list, this);
138
+ }
139
+ /** Builds the shadow root once and binds to the pane's store. */
140
+ connectedCallback() {
141
+ if (!this.shadow) {
142
+ this.shadow = this.attachShadow({ mode: 'open' });
143
+ this.shadow.innerHTML = `<style>${CSS}</style><div class="spe" part="root"><div class="hd"><span class="t">Errors</span><span class="chip opencount"></span><span class="spacer" style="flex:1"></span><button type="button" class="btn btn-g btn-i" data-act="undo" aria-label="Undo (Ctrl+Z)" title="Undo">${ICON.undo}</button><button type="button" class="btn btn-g btn-i" data-act="redo" aria-label="Redo (Ctrl+Shift+Z)" title="Redo">${ICON.redo}</button></div><div class="scrollarea"><div class="noticebox"></div><div class="formbox"></div><div class="filters" role="toolbar" aria-label="Filter errors"></div><div class="list" role="list"></div></div></div>`;
144
+ this.shadow.addEventListener('click', (e) => this.onClick(e));
145
+ this.shadow.addEventListener('input', (e) => this.onInput(e));
146
+ this.shadow.addEventListener('change', (e) => this.onInput(e));
147
+ this.shadow.addEventListener('keydown', (e) => this.onKey(e));
148
+ }
149
+ this.bind();
150
+ this.schedule();
151
+ }
152
+ /** Releases the pane's store. */
153
+ disconnectedCallback() { this.unbind(); cancelAnimationFrame(this.raf); }
154
+ /** Reacts to an observed attribute. */
155
+ attributeChangedCallback(name, old, val) {
156
+ if (!this.isConnected || old === val)
157
+ return;
158
+ if (name === 'pane' || name === 'plugins') {
159
+ this.unbind();
160
+ this.bind();
161
+ }
162
+ this.schedule();
163
+ }
164
+ ensureStore() { if (!this._store)
165
+ this.bind(); return this._store; }
166
+ bind() {
167
+ if (this._store)
168
+ return;
169
+ const pane = this.getAttribute('pane');
170
+ const plugins = (this.getAttribute('plugins') ?? '').split(/\s+/).filter(Boolean);
171
+ if (this._explicitStore)
172
+ this._store = this._explicitStore;
173
+ else if (pane) {
174
+ this._store = acquirePane(pane, this, plugins);
175
+ this._paneId = pane;
176
+ }
177
+ else
178
+ this._store = createWorkbook({ plugins: pluginsFromIds(plugins) });
179
+ const s = this._store;
180
+ attach(s, this);
181
+ const detachView = s.attachErrorsView();
182
+ this.unsub.push(s.subscribe(() => this.schedule()), s.on((e) => this.onStoreEvent(e)), () => detach(s, this), detachView);
183
+ }
184
+ unbind() {
185
+ for (const u of this.unsub)
186
+ u();
187
+ this.unsub = [];
188
+ if (this._paneId)
189
+ releasePane(this._paneId, this);
190
+ this._paneId = undefined;
191
+ this._store = undefined;
192
+ }
193
+ onStoreEvent(e) {
194
+ const mine = e.origin === this || (e.origin === undefined && isPrimary(this._store, this));
195
+ if (!mine)
196
+ return;
197
+ const s = this._store;
198
+ if (e.type === 'errors')
199
+ fire(this, 'sheetpane-errors', { errors: s.getErrors(), plugins: s.pluginIds });
200
+ else if (e.type === 'change')
201
+ fire(this, 'sheetpane-change', { sheet: e.sheet, ref: e.ref, kind: e.kind, was: e.was, now: e.now });
202
+ else if (e.type === 'select')
203
+ fire(this, 'sheetpane-select', { sheet: e.sheet, ref: e.ref });
204
+ else if (e.type === 'history')
205
+ fire(this, 'sheetpane-history', { reason: e.reason, canUndo: s.getSnapshot().canUndo, canRedo: s.getSnapshot().canRedo });
206
+ }
207
+ schedule() {
208
+ if (this.raf || !this.shadow)
209
+ return;
210
+ this.raf = requestAnimationFrame(() => { this.raf = 0; this.render(); });
211
+ }
212
+ /** Renders now (tests and the first frame). */
213
+ renderNow() { cancelAnimationFrame(this.raf); this.raf = 0; this.render(); }
214
+ // ── interactions ─────────────────────────────────────────────────────────
215
+ onClick(e) {
216
+ const t = e.target, s = this._store;
217
+ const el = t.closest('[data-act]');
218
+ if (!el)
219
+ return;
220
+ const id = el.closest('[data-id]')?.dataset.id;
221
+ const err = id ? s.getSnapshot().errors.find((x) => x.id === id) : undefined;
222
+ switch (el.dataset.act) {
223
+ case 'filter':
224
+ this.filter = el.dataset.v;
225
+ this.schedule();
226
+ break;
227
+ case 'author':
228
+ this.authorFilter = el.dataset.v;
229
+ this.schedule();
230
+ break;
231
+ case 'pick':
232
+ if (!err)
233
+ return;
234
+ this.expanded = this.expanded === err.id ? undefined : err.id;
235
+ {
236
+ const r = parseRange(err.range);
237
+ s.select({ sheet: err.sheet, ref: cellRef(r.top, r.left) }, this);
238
+ }
239
+ this.schedule();
240
+ break;
241
+ case 'reveal':
242
+ if (!err)
243
+ return;
244
+ {
245
+ const r = parseRange(err.range);
246
+ s.select({ sheet: err.sheet, ref: cellRef(r.top, r.left) }, this);
247
+ }
248
+ fire(this, 'sheetpane-reveal', { error: { ...err } });
249
+ break;
250
+ case 'resolve':
251
+ if (err && !this.readOnly)
252
+ s.updateError(err.id, { status: err.status === 'open' ? 'resolved' : 'open' }, this);
253
+ break;
254
+ case 'delete':
255
+ if (err && !this.readOnly) {
256
+ s.deleteError(err.id, this);
257
+ if (this.expanded === err.id)
258
+ this.expanded = undefined;
259
+ }
260
+ break;
261
+ case 'type': {
262
+ const ty = this._errorTypes.find((x) => x.id === el.dataset.v);
263
+ if (ty) {
264
+ this.draft.type = ty.id;
265
+ this.draft.severity = ty.severity;
266
+ this.formKey = '';
267
+ this.schedule();
268
+ }
269
+ break;
270
+ }
271
+ case 'sev':
272
+ this.draft.severity = el.dataset.v;
273
+ this.formKey = '';
274
+ this.schedule();
275
+ break;
276
+ case 'add':
277
+ this.add();
278
+ break;
279
+ case 'undo':
280
+ s.undo(this);
281
+ break;
282
+ case 'redo':
283
+ s.redo(this);
284
+ break;
285
+ case 'cancel':
286
+ s.compose(null);
287
+ break;
288
+ }
289
+ }
290
+ onInput(e) {
291
+ const t = e.target, f = t.dataset.field;
292
+ if (f === 'message')
293
+ this.draft.message = t.value;
294
+ else if (f === 'expected')
295
+ this.draft.expected = t.value;
296
+ else if (f === 'change')
297
+ this.draft.change = t.checked;
298
+ }
299
+ onKey(e) {
300
+ const typing = e.composedPath()[0]?.matches?.('input, textarea');
301
+ if (!typing && (e.metaKey || e.ctrlKey) && (e.key === 'z' || e.key === 'Z')) {
302
+ e.preventDefault();
303
+ if (e.shiftKey)
304
+ this._store.redo(this);
305
+ else
306
+ this._store.undo(this);
307
+ return;
308
+ }
309
+ if (!typing && e.ctrlKey && (e.key === 'y' || e.key === 'Y')) {
310
+ e.preventDefault();
311
+ this._store.redo(this);
312
+ return;
313
+ }
314
+ if ((e.metaKey || e.ctrlKey) && e.key === 'Enter' && this.shadow.querySelector('.form')) {
315
+ e.preventDefault();
316
+ this.add();
317
+ }
318
+ if (e.key === 'Escape' && this.shadow.querySelector('.form')) {
319
+ e.preventDefault();
320
+ this._store.compose(null);
321
+ }
322
+ }
323
+ add() {
324
+ const s = this._store, c = s.getSnapshot().composing;
325
+ if (!c || this.readOnly)
326
+ return;
327
+ let range = c.range ?? c.ref;
328
+ if (this.draft.type === 'duplicate-row') {
329
+ const p = parseRef(c.ref), sh = s.sheet(c.sheet);
330
+ const width = Math.max(1, ...(sh?.rows.map((r) => r.length) ?? [1]));
331
+ range = `${cellRef(p.row, 0)}:${cellRef(p.row, width - 1)}`;
332
+ }
333
+ s.addError({ sheet: c.sheet, range, type: this.draft.type, severity: this.draft.severity, expected: this.draft.expected, message: this.draft.message, cellChanged: this.draft.change, author: this.getAttribute('author') ?? '' }, this);
334
+ const t = this._errorTypes[0];
335
+ this.draft = { type: t.id, message: '', expected: '', severity: t.severity, change: false };
336
+ this.formKey = '';
337
+ }
338
+ // ── rendering ────────────────────────────────────────────────────────────
339
+ authorKind(e) { return e.author === 'workbook' ? 'workbook' : e.author === 'host' ? 'host' : e.author === 'file' ? 'file' : 'person'; }
340
+ render() {
341
+ const s = this._store;
342
+ if (!s || !this.shadow)
343
+ return;
344
+ const snap = s.getSnapshot();
345
+ const q = (sel) => this.shadow.querySelector(sel);
346
+ const errors = snap.errors;
347
+ const open = errors.filter((e) => e.status === 'open');
348
+ q('.opencount').textContent = `${open.length} open`;
349
+ q('[data-act=undo]').disabled = !snap.canUndo || this.readOnly;
350
+ q('[data-act=redo]').disabled = !snap.canRedo || this.readOnly;
351
+ q('[data-act=undo]').hidden = q('[data-act=redo]').hidden = this.readOnly || snap.mode !== 'edit';
352
+ // the saved review was made with a different plugin set (plugins verdict decision 3)
353
+ const differ = this.savedPlugins !== undefined && this.savedPlugins.join(' ') !== s.pluginIds.join(' ');
354
+ q('.noticebox').innerHTML = differ ? `<div class="notice" role="status">This review was saved with ${this.savedPlugins.length ? esc(this.savedPlugins.join(', ')) : 'no plugins'}; this pane runs ${s.pluginIds.length ? esc(s.pluginIds.join(', ')) : 'none'} — cells may be formatted differently.</div>` : '';
355
+ // filters: severity, and author once more than people write errors (W-18 DoD 5)
356
+ const counts = { all: errors.length, error: errors.filter((e) => e.severity === 'error').length, warning: errors.filter((e) => e.severity === 'warning').length, note: errors.filter((e) => e.severity === 'note').length };
357
+ const authors = new Set(errors.map((e) => this.authorKind(e)));
358
+ const sevBtns = [['all', `All ${counts.all}`, 'All severities'], ['error', `✕ ${counts.error}`, 'Errors'], ['warning', `! ${counts.warning}`, 'Warnings'], ['note', `i ${counts.note}`, 'Notes']]
359
+ .map(([v, label, name]) => `<button type="button" data-act="filter" data-v="${v}" aria-pressed="${this.filter === v}" aria-label="${name}: ${counts[v]}">${label}</button>`).join('');
360
+ const authorBtns = authors.size > 1 || (authors.size === 1 && !authors.has('person'))
361
+ ? `<span class="sep" aria-hidden="true"></span>${['all', 'person', 'workbook', 'host', 'file'].filter((a) => a === 'all' || authors.has(a)).map((a) => `<button type="button" data-act="author" data-v="${a}" aria-pressed="${this.authorFilter === a}">${a === 'all' ? 'Anyone' : a === 'person' ? 'People' : a === 'workbook' ? 'Workbook rules' : a === 'host' ? (s.hasRulesDocument ? 'Rules file' : 'Column rules') : 'File comments'}</button>`).join('')}`
362
+ : '';
363
+ q('.filters').innerHTML = sevBtns + authorBtns;
364
+ // the form (contract decision 4: this element shows it whenever it is connected to the pane)
365
+ const formbox = q('.formbox');
366
+ const c = snap.composing;
367
+ if (c && !this.readOnly && snap.mode === 'edit' && s.flagging) { // flagging="off" (W-33): no New error
368
+ const key = `${c.sheet}!${c.range ?? c.ref}|${this.draft.type}|${this.draft.severity}|${this._errorTypes.length}`;
369
+ if (key !== this.formKey) {
370
+ this.formKey = key;
371
+ formbox.innerHTML = this.formHtml();
372
+ formbox.querySelector('textarea')?.focus();
373
+ }
374
+ }
375
+ else if (formbox.innerHTML) {
376
+ formbox.innerHTML = '';
377
+ this.formKey = '';
378
+ }
379
+ // the list
380
+ const list = errors
381
+ .filter((e) => (this.filter === 'all' || e.severity === this.filter) && (this.authorFilter === 'all' || this.authorKind(e) === this.authorFilter))
382
+ .sort((a, b) => (a.status === b.status ? errNum(a) - errNum(b) : a.status === 'open' ? -1 : 1));
383
+ // rule rows are read by sheet (W-33): under the host filter, grouped by the workbook's sheet order
384
+ const grouped = this.authorFilter === 'host' && new Set(list.map((e) => e.sheet)).size > 1;
385
+ if (grouped) {
386
+ const order = (snap.book?.sheets ?? []).map((x) => x.name);
387
+ list.sort((a, b) => order.indexOf(a.sheet) - order.indexOf(b.sheet));
388
+ }
389
+ let lastSheet = '';
390
+ const types = new Map([...Object.entries(BUILTIN_TYPE_NAMES), ...this._errorTypes.map((t) => [t.id, t.name])]);
391
+ const sel = snap.selection;
392
+ const html = list.length ? list.map((e) => {
393
+ const head = grouped && e.sheet !== lastSheet ? `<div class="grp" role="presentation">${esc(e.sheet)}</div>` : '';
394
+ lastSheet = e.sheet;
395
+ const r = parseRange(e.range);
396
+ const on = this.expanded === e.id || (!!r && e.sheet === sel.sheet && parseRef(sel.ref) && r.top === parseRef(sel.ref).row && r.left <= parseRef(sel.ref).col && r.right >= parseRef(sel.ref).col);
397
+ const tags = [e.cellChanged ? 'cell changed' : '', e.status === 'resolved' ? 'resolved' : '', e.matchesExpected ? 'matches suggestion' : '', s.isStale(e) ? 'stale' : '', ...hiddenTags(s, e)].filter(Boolean);
398
+ const ro = this.readOnly || machineAuthored(e.author);
399
+ const sv = SEVERITY[e.severity];
400
+ const time = e.createdAt ? new Date(e.createdAt).toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' }) : '';
401
+ const detail = this.expanded === e.id ? `<div class="detail">${e.message ? `<p class="why">${esc(e.message)}</p>` : ''}<span class="xs faint">${esc([e.author === 'workbook' ? 'Workbook rule' : e.author === 'file' ? 'File comment' : e.author === 'host' ? (s.hasRulesDocument ? 'Rules file' : 'Column rule') : e.author, e.code, time].filter(Boolean).join(' · '))}</span><div class="acts"><button type="button" class="btn" data-act="reveal">Show in sheet</button>${ro ? '' : `<button type="button" class="btn" data-act="resolve" data-sp="resolve">${e.status === 'resolved' ? 'Reopen' : '✓ Resolve'}</button><span class="spacer" style="flex:1"></span><button type="button" class="btn btn-g btn-d" data-act="delete">Delete</button>`}</div></div>` : '';
402
+ return `${head}<div class="item${e.status === 'resolved' ? ' done' : ''}${on ? ' on' : ''}" role="listitem" data-id="${esc(e.id)}" data-sp-error="${esc(e.id)}" data-sp-ref="${esc(e.sheet)}!${esc(e.range)}"><button type="button" class="issue" data-act="pick" aria-expanded="${this.expanded === e.id}" aria-label="Error ${errNum(e)}: ${esc(types.get(e.type) ?? e.type)}, ${esc(e.sheet)} ${esc(e.range)}, ${sv.name}${e.status === 'resolved' ? ', resolved' : ''}"><span class="n ${e.status === 'resolved' ? 'resolved' : e.severity}" aria-hidden="true">${e.status === 'resolved' ? '✓' : errNum(e)}</span><span class="bd"><span class="ty">${esc(types.get(e.type) ?? e.type)}</span><span class="ba"><span class="found">${esc(e.found)}</span> → <span class="want">${esc(e.expected || '—')}</span></span><span class="m">${esc(e.range)} · <span class="g g-${e.severity}" aria-hidden="true">${sv.glyph}</span> ${sv.name}${tags.length ? ` · ${esc(tags.join(' · '))}` : ''}</span></span></button>${detail}</div>`;
403
+ }).join('') : `<p class="empty">${errors.length ? 'Nothing matches this filter.' : 'Nothing flagged yet. Select a cell in the sheet, then Flag issue.'}</p>`;
404
+ const listEl = q('.list');
405
+ if (listEl.dataset.html !== html) {
406
+ listEl.innerHTML = html;
407
+ listEl.dataset.html = html;
408
+ }
409
+ }
410
+ formHtml() {
411
+ const s = this._store, snap = s.getSnapshot(), c = snap.composing;
412
+ const p = parseRef(c.ref);
413
+ const sheet = s.sheet(c.sheet);
414
+ const header = sheet ? headerFor(sheet.text, p.row, p.col) : '';
415
+ const rowFirst = sheet?.text[p.row]?.find((x) => x) ?? '';
416
+ const ex = this._errorTypes.find((t) => t.id === this.draft.type) ?? this._errorTypes[0];
417
+ const sevs = ['error', 'warning', 'note'].map((v) => `<button type="button" data-act="sev" data-v="${v}" aria-pressed="${this.draft.severity === v}"><span class="g g-${v}" aria-hidden="true">${SEVERITY[v].glyph}</span>${SEVERITY[v].name}</button>`).join('');
418
+ return `<div class="form" role="group" aria-label="New error">
419
+ <div class="fhd"><span class="t" style="font-weight:600">New error</span><span class="xs faint">${esc(c.sheet)}!${esc(c.range ?? c.ref)}</span><span class="spacer" style="flex:1"></span><button type="button" class="btn btn-g btn-i" data-act="cancel" aria-label="Cancel">${ICON.close}</button></div>
420
+ <div class="fbd">
421
+ <dl class="kv"><dt>Found</dt><dd><span class="found">${esc(s.foundFor(c.sheet, c.range ?? c.ref))}</span></dd><dt>Column</dt><dd>${esc(header ? `${header} (${colName(p.col)})` : colName(p.col))}</dd><dt>Row</dt><dd>${p.row + 1}${rowFirst ? ` · ${esc(rowFirst)}` : ''}</dd></dl>
422
+ <div class="field"><span id="tlbl">What kind of problem?</span><div class="tchips" role="group" aria-labelledby="tlbl">${this._errorTypes.map((t) => `<button type="button" class="tchip" data-act="type" data-v="${esc(t.id)}" aria-pressed="${t.id === this.draft.type}">${esc(t.name)}</button>`).join('')}</div></div>
423
+ <label class="field"><span>What’s wrong</span><textarea class="input" rows="2" data-field="message" placeholder="${esc(ex.why)}">${esc(this.draft.message)}</textarea></label>
424
+ <label class="field"><span>What it should be</span><input class="input" data-field="expected" placeholder="${esc(ex.expected)}" value="${esc(this.draft.expected)}"></label>
425
+ <label style="display:flex;gap:8px;align-items:center;font-size:13px"><input type="checkbox" data-field="change"${this.draft.change ? ' checked' : ''}>Also change the cell to this value</label>
426
+ <div class="field"><span id="slbl">Severity</span><div class="seg" role="group" aria-labelledby="slbl">${sevs}</div><span class="xs faint">${esc(SEVERITY[this.draft.severity].help)}</span></div>
427
+ <div class="ex"><span style="font-weight:600">Example · ${esc(ex.name)}</span><span>What’s wrong: “${esc(ex.why)}”</span>${ex.expected ? `<span>Should be: <span class="want">${esc(ex.expected)}</span></span>` : ''}</div>
428
+ </div>
429
+ <div class="fft"><span class="xs faint">⌘ ↵</span><span class="spacer" style="flex:1"></span><button type="button" class="btn" data-act="cancel">Cancel</button><button type="button" class="btn btn-p" data-act="add" data-sp="add-error">Add error</button></div></div>`;
430
+ }
431
+ }
432
+ /** The column's header text: the nearest row above with two or more text cells. */
433
+ export function headerFor(text, row, col) {
434
+ for (let r = 0; r < Math.min(row, 10); r++) {
435
+ const cells = text[r] ?? [];
436
+ if (cells.filter((x) => x).length >= 2 && cells[col])
437
+ return cells[col];
438
+ }
439
+ return '';
440
+ }
441
+ export { sevOrder };
442
+ /** Where an error sits out of sight: a hidden sheet, row or column (W-49). Selecting it shows it in the sheet. */
443
+ function hiddenTags(s, e) {
444
+ const h = s.hidden(e.sheet), r = parseRange(e.range);
445
+ if (h.state !== 'visible')
446
+ return ['hidden sheet'];
447
+ if (!r)
448
+ return [];
449
+ const out = [];
450
+ if (h.rows.some((i) => i >= r.top && i <= r.bottom))
451
+ out.push('hidden row');
452
+ if (h.cols.some((i) => i >= r.left && i <= r.right))
453
+ out.push('hidden column');
454
+ return out;
455
+ }
456
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/errors/element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}