@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,3 @@
1
+ // errors — not built yet. Spec: work/open/W-02-sheetpane-errors.md
2
+ export {};
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,434 @@
1
+ import type { Geometry } from '../plugins/types.js';
2
+ import { type WorkbookStore } from '../pane/store.js';
3
+ import { type ErrorType, type Mode, type SheetpaneError } from '../pane/types.js';
4
+ import { ElementBase } from '../shared/dom.js';
5
+ import type { Theme } from '../tokens.js';
6
+ import type { ColumnRules, OnInvalid, ValidateFn } from '../pane/rules.js';
7
+ import { COL_VIRTUAL_AFTER, colAt } from './geometry.js';
8
+ /** Turns a `src` attribute value into bytes: a data URL, raw base64, or a URL to fetch (a read; nothing is sent). */
9
+ export declare function bytesFromSrc(src: string): Promise<{
10
+ bytes: Uint8Array;
11
+ name: string;
12
+ }>;
13
+ /**
14
+ * `<sheetpane-excel>` — the sheet: views and edits a `.xlsx` or `.csv` file held in the pane's
15
+ * in-memory workbook (SR-GRID decisions 9–22e). Every change stays in memory and `export()`
16
+ * writes a copy of the upload with it (SR-LAW-6); a `<sheetpane-errors>` on the same `pane`
17
+ * reads the same store, so the two are always in step (SR-LAW-7). It registers on import.
18
+ *
19
+ * Attributes:
20
+ * - `pane` — the pane id shared with other elements; none gives the element its own store.
21
+ * - `src` — a URL (read with a GET; nothing is sent), a data URL or base64.
22
+ * - `mode` — `view` (the default) or `edit`.
23
+ * - `display` — `tab` (the default) or `popup` (a modal dialog, shown by `open`).
24
+ * - `open` — shows the pop-up.
25
+ * - `author` — written into the errors this element's user flags.
26
+ * - `plugins` — space-separated registered plugin ids; fixed per pane.
27
+ * - `theme` — `light` (the default), `dark` or `auto`.
28
+ * - `header-row` — the 1-based row holding column titles (default 1).
29
+ * - `on-invalid` — `flag` (the default) or `block`: what a failing column rule does.
30
+ * - `rules-src` — a URL to a rules file (read with a GET).
31
+ * - `flagging` — `on` (the default) or `off`: no Flag issue anywhere.
32
+ *
33
+ * Properties: `workbook`, `errors`, `errorTypes`, `file`, `mode`, `theme`, `open`, `src`, `sizes`,
34
+ * `rules`, `flagging`, `columns`, `validate`, `onInvalid`.
35
+ *
36
+ * Methods: `load()`, `export()`, `select()`, `getErrors()`, `setErrors()`, `undo()`, `redo()`,
37
+ * `shortcuts()`, `column()`, `renderNow()`, `geometryFor()`, `reveal()`, `unreveal()`.
38
+ *
39
+ * Every event bubbles and is composed; an action's event fires once, on the element where it
40
+ * happened. Cell payloads also carry `column: { index, letter, header }`.
41
+ *
42
+ * @fires sheetpane-load `{ status: 'ready', name, kind, sheets, readMs }` when a file is read, or the refusal `{ status: 'error', code, spCode, message, name, detail? }`.
43
+ * @fires sheetpane-change `{ sheet, ref, kind, was, now }` for each change, undo and redo included.
44
+ * @fires sheetpane-errors `{ errors, plugins }` when the pane's errors change.
45
+ * @fires sheetpane-select `{ sheet, ref, range, column, value }` when the selection settles — `range` (`B3:D8`) when more than one cell is selected; a drag fires once, on release.
46
+ * @fires sheetpane-visibility `{ sheet, axis, indexes, hidden, via }` when rows, columns or a sheet are hidden, unhidden or shown for viewing (`via: 'reveal'`) (W-49).
47
+ * @fires sheetpane-resize `{ sheet, axis, indexes, px, via }` when a column width or row height is set by a drag, a fit, the header menu or a reset — on release, never during a drag (W-47).
48
+ * @fires sheetpane-sheet `{ sheet }` when the selection moves to another sheet.
49
+ * @fires sheetpane-mode `{ mode }` when the pane switches between View and Edit.
50
+ * @fires sheetpane-history `{ reason, canUndo, canRedo }` on undo, redo, or the stack cleared by `setErrors()`.
51
+ * @fires sheetpane-editstart `{ sheet, ref, column, value }` before a cell edit starts; cancellable — the cell stays read-only.
52
+ * @fires sheetpane-input `{ sheet, ref, column, draft, was }` as the cell-bar draft is typed.
53
+ * @fires sheetpane-beforechange `{ sheet, ref, column, was, now }` before a value is stored; cancellable — the value is refused.
54
+ * @fires sheetpane-editcancel `{ sheet, ref }` when Esc restores a draft, or `{ sheet, ref, reason: 'blocked', code: 'SP-6003', message }` when a `block` rule refuses it.
55
+ * @fires sheetpane-export `{ blob, kind, name, guarded, format, converted, original? }` on `export()` and Download; cancellable — the Download control then saves nothing.
56
+ * @fires sheetpane-close `{}` when the pop-up closes.
57
+ *
58
+ * @slot format-row - Host controls for the format row (Edit only); the row shows when a plugin or this slot puts something in it.
59
+ * @csspart root - The sheet's frame: toolbar, cell bar, format row, grid, sheet tabs and status line.
60
+ * @csspart toolbar - The top bar: file, View/Edit, counts, find, zoom, undo, redo, freeze, Download.
61
+ * @csspart cellbar - The cell bar: the reference, the value being edited and the docked selection actions.
62
+ * @csspart format-row - The format row (Edit): plugin controls and the `format-row` slot.
63
+ * @csspart status - The status line under the sheet tabs.
64
+ * @csspart dialog - The modal `<dialog>` the root moves into when `display="popup"`.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * import '@sheetpane/grid';
69
+ * const sheet = document.createElement('sheetpane-excel');
70
+ * sheet.setAttribute('pane', 'q3');
71
+ * sheet.setAttribute('mode', 'edit');
72
+ * document.body.append(sheet);
73
+ * sheet.addEventListener('sheetpane-change', (e) => console.log((e as CustomEvent).detail));
74
+ * await sheet.load(file);
75
+ * const blob = await sheet.export();
76
+ * ```
77
+ * @see https://github.com/arpitarya/sheetpane/blob/main/records/0105_GRID.md
78
+ * @see https://github.com/arpitarya/sheetpane/blob/main/packages/grid/README.md#sheetpane-excel
79
+ */
80
+ export declare class SheetpaneExcel extends ElementBase {
81
+ /** The attributes the element reacts to. */
82
+ static observedAttributes: string[];
83
+ private _store;
84
+ private _explicitStore;
85
+ private _paneId;
86
+ private _errorTypes;
87
+ private unsub;
88
+ private shadow;
89
+ private q;
90
+ private built;
91
+ private raf;
92
+ private zoom;
93
+ private findText;
94
+ private findHits;
95
+ private findIdx;
96
+ private findVersion;
97
+ private scrollToSel;
98
+ private anchor;
99
+ /** A drag in progress (W-46): drawn by the selection layer each frame; the store hears of it on release. */
100
+ private drag;
101
+ private dragRaf;
102
+ /** The last pointer was a finger: a range shows its two handles. */
103
+ private touchUi;
104
+ /** The range Ctrl/⌘+C copied, outlined until Esc, an edit or the next copy. */
105
+ private copied;
106
+ private selKey;
107
+ private ariaOn;
108
+ private sayTimer;
109
+ private totalsKey;
110
+ /** Column widths and row heights the user set, per sheet, px at 100 % — a view setting, never a change (W-47). */
111
+ private _sizes;
112
+ private sizesVer;
113
+ /** A header-edge drag in progress (W-47). */
114
+ private rz;
115
+ private rzRaf;
116
+ /** What this element shows of what the file hides, per sheet — a view setting, never a change (W-49). */
117
+ private revealed;
118
+ /** Hidden sheets opened for viewing from the hidden-sheets list (W-49). */
119
+ private openedSheets;
120
+ /** The note after an automatic reveal: "Shown for ERR-0004 · Hide again". */
121
+ private revealNote;
122
+ private hiddenMenuOpen;
123
+ /** The tab menu (W-49): right-click a tab or Shift+F10 on it; only plugin items, so it opens only when there are some. */
124
+ private tabMenu;
125
+ private revealVer;
126
+ /** The header menu (W-47 DoD 4): which axis and indexes it acts on, and the exact-size popover's state. */
127
+ private hdrMenu;
128
+ private totalsText;
129
+ private composerKey;
130
+ private draft;
131
+ private geom;
132
+ private lastBody;
133
+ private cellFocusStart;
134
+ private overlayCache;
135
+ private readonly onUnload;
136
+ /** The pane's store; assigning one replaces the `pane` lookup and applies this element's `mode` to it. */
137
+ get workbook(): WorkbookStore | undefined;
138
+ set workbook(s: WorkbookStore | undefined);
139
+ /** A copy of the pane's errors; assigning restores a saved review, like `setErrors()`. */
140
+ get errors(): SheetpaneError[];
141
+ set errors(list: SheetpaneError[]);
142
+ /** The types offered in the Flag issue form; an empty list falls back to `DEFAULT_ERROR_TYPES`. */
143
+ get errorTypes(): readonly ErrorType[];
144
+ set errorTypes(t: readonly ErrorType[]);
145
+ /** Loads a file, like `load()`; `null` does nothing. */
146
+ set file(f: File | Blob | ArrayBuffer | Uint8Array | null);
147
+ /** The pane's mode, `view` or `edit`; setting it sets the `mode` attribute. */
148
+ get mode(): Mode;
149
+ set mode(m: Mode);
150
+ /** `light` (the default), `dark`, or `auto` (follows `prefers-color-scheme`) — colour only; the file's own colours never change (W-29). */
151
+ get theme(): Theme;
152
+ set theme(t: Theme);
153
+ private rulesCfg;
154
+ /** A rules file (W-33) as an object: `{ version: 1, sheets: { "*": …, "Accounts": { headerRow, columns, cells } } }`. Also `rules-src`. */
155
+ get rules(): unknown;
156
+ set rules(doc: unknown);
157
+ /** `rules-src`: a URL read with a GET, like `src` (nothing is sent); a failure is a note in the errors, never a throw. */
158
+ private loadRules;
159
+ /** `flagging="off"`: no Flag issue anywhere, no composer, no callout card — the errors panel is the one place errors are read. */
160
+ get flagging(): 'on' | 'off';
161
+ set flagging(v: 'on' | 'off');
162
+ /** Rules by column title, as plain JSON (`required`, `type`, `min`, `max`, `minLength`, `maxLength`, `pattern`, `oneOf`, `unique`, `message`, `severity`, `onInvalid`). */
163
+ get columns(): ColumnRules | undefined;
164
+ set columns(c: ColumnRules | undefined);
165
+ /** `validate(ctx, signal)`, sync or async: `null`, or `{ severity, message, expected? }`. */
166
+ get validate(): ValidateFn | undefined;
167
+ set validate(f: ValidateFn | undefined);
168
+ /** The default for every rule: `flag` (store and add an error) or `block` (refuse the value). Also the `on-invalid` attribute. */
169
+ get onInvalid(): OnInvalid;
170
+ set onInvalid(v: OnInvalid);
171
+ /** Rules belong to the pane: only an element that was given rules sets them. */
172
+ private applyRules;
173
+ /** Whether the pop-up is shown (the `open` attribute). */
174
+ get open(): boolean;
175
+ set open(v: boolean);
176
+ /**
177
+ * The column widths and row heights a user set, px at 100 % zoom: `{ [sheet]: { cols: { B: 120 }, rows: { 4: 40 } } }`
178
+ * (columns by letter, rows by number). A view setting like zoom — not a change, not undone, not in the
179
+ * download; a new file clears it. Set it to restore what a host saved from `sheetpane-resize` (W-47).
180
+ */
181
+ get sizes(): Record<string, {
182
+ cols: Record<string, number>;
183
+ rows: Record<string, number>;
184
+ }>;
185
+ set sizes(v: Record<string, {
186
+ cols?: Record<string, number>;
187
+ rows?: Record<string, number>;
188
+ }> | null | undefined);
189
+ /** The `src` attribute; `null`, `undefined` or `''` removes it. */
190
+ get src(): string | null;
191
+ set src(v: string | null | undefined);
192
+ /** Reads a file into the pane: a File, Blob, bytes, a URL, or base64. */
193
+ load(src: string | File | Blob | ArrayBuffer | Uint8Array, name?: string): Promise<void>;
194
+ /** Every change applied; the upload untouched. Also dispatches `sheetpane-export`. */
195
+ export(options?: Readonly<Record<string, unknown>>, o?: {
196
+ format?: 'xlsx' | 'csv';
197
+ sheet?: string;
198
+ }): Promise<Blob>;
199
+ private lastExport;
200
+ private lastSheet;
201
+ /** Selects a cell and scrolls to it. */
202
+ select(sheet: string, ref: string): void;
203
+ /** A copy of the pane's errors, to save a review. */
204
+ getErrors(): SheetpaneError[];
205
+ /** Restores a saved review; not a user action, so the undo stack is cleared. */
206
+ setErrors(list: SheetpaneError[]): void;
207
+ /** Undoes the pane's last step. */
208
+ undo(): void;
209
+ /** Redoes the last undone step. */
210
+ redo(): void;
211
+ /** Binds to the pane's store, applies `mode`, and reads `src` and `rules-src`. */
212
+ connectedCallback(): void;
213
+ /** Releases the pane's store. */
214
+ disconnectedCallback(): void;
215
+ /** Reacts to an observed attribute. */
216
+ attributeChangedCallback(name: string, old: string | null, val: string | null): void;
217
+ private ensureStore;
218
+ private bind;
219
+ private unbind;
220
+ /** One DOM event per action, on the element where it happened (or the pane's first sheet when nobody owns it). */
221
+ private onStoreEvent;
222
+ private build;
223
+ /** Tab or pop-up (W-01 DoD 5): the root moves into a modal <dialog> for `display="popup"`. */
224
+ private place;
225
+ private returnFocus;
226
+ private closeDialog;
227
+ private wire;
228
+ private showEmpty;
229
+ private helpOpen;
230
+ private editing;
231
+ /** The column a payload names: index, letter and the title from the header row (`header-row`, default 1). */
232
+ column(sheet: string, ref: string): {
233
+ index: number;
234
+ letter: string;
235
+ header: string;
236
+ };
237
+ /** `sheetpane-beforechange` (cancellable) for one cell; the value it would store is `now`. Then a column rule set to `block` (W-27). */
238
+ private allowChange;
239
+ private ruleMsg;
240
+ private ruleTimer;
241
+ private ruleAbort;
242
+ private checkDraft;
243
+ private clearRuleMsg;
244
+ /** Commits the cell bar's draft: beforechange, then the store (change map → undo → derive → validate → sheetpane-change). */
245
+ private commitDraft;
246
+ /** Paste (Edit): tab- and line-separated text from the active cell, beforechange per cell, one undo step. */
247
+ private onPaste;
248
+ private ctxOpen;
249
+ private moreOpen;
250
+ private notice;
251
+ private noticeTimer;
252
+ /** Copies to the clipboard; without a secure context it says so in the status line. */
253
+ private copy;
254
+ /** Copy ref: `B3`, `B3:D8`, `B:D`, `4:12`, or the sheet's name (W-46 DoD 4). */
255
+ private refOf;
256
+ private openContextMenu;
257
+ /** The actions as menu items: Flag issue (Edit), Copy ref, Copy value, then the `selbar` plugin controls. */
258
+ private actionItems;
259
+ private contextMenuHtml;
260
+ /** Arrow keys move through a menu's items; Esc closes it and returns focus. True when handled. */
261
+ private onMenuKey;
262
+ private onDockClick;
263
+ /** Untouched: no change, and nothing a plugin would write (a review exported as comments). */
264
+ private untouched;
265
+ private dlOpen;
266
+ private exportChoice;
267
+ /** Each plugin export option, its default unless the reviewer flipped it in the menu. */
268
+ private exportChoices;
269
+ /** The upload's format: the original bytes when untouched, else `export()` with every change. Another format converts. All fire `sheetpane-export`. */
270
+ private downloadFile;
271
+ private downloadMenuHtml;
272
+ /** The grid's keys, then every plugin control's shortcut (W-14 DoD 8). */
273
+ shortcuts(): {
274
+ keys: string;
275
+ what: string;
276
+ }[];
277
+ /** Does a key event match a control's shortcut, e.g. `Mod+B`, `Ctrl+Shift+5`, `B`? */
278
+ private matchesShortcut;
279
+ /** A click without a pointer sequence before it: a finger's tap, or a synthetic event. Selects; never drags. */
280
+ private onPointer;
281
+ /** A column header, a row header or the corner under the pointer. */
282
+ private headerHit;
283
+ /** Mouse or pen: select, then follow the pointer until release (W-46 DoD 3). */
284
+ private onPointerDown;
285
+ /** A touch handle: extend the range from its other corner. */
286
+ private startHandleDrag;
287
+ private queueDrag;
288
+ /** One frame of a drag: autoscroll at an edge, the cell under the pointer, the layer redrawn. */
289
+ private dragStep;
290
+ /** Release commits the range to the store once; a cancel (Esc, pointercancel) restores the selection from before. */
291
+ private endDrag;
292
+ /** The range a drag spans: corners for cells (grown over merges), whole columns or rows for headers. */
293
+ private dragRange;
294
+ /** Groups collapsed in this element only (view), per sheet. */
295
+ private viewHidden;
296
+ private gutter;
297
+ /** The row-header column's width at 100 %: the header, plus the row outline gutter. */
298
+ private rowHeadW;
299
+ /** The header row's height at 100 %: the header, plus the column outline gutter. */
300
+ private headH;
301
+ /** The groups of an outline axis: runs of a level or deeper, `[level, first, last]`, around a window. */
302
+ private groupsOf;
303
+ /** Expands (shows) or collapses (hides, in view) a group's rows or columns. */
304
+ private toggleGroup;
305
+ /** Level n: groups deeper than n collapse, the others expand. */
306
+ private showLevel;
307
+ /** The outline gutter's brackets, +/− buttons and level buttons, for the rendered window. */
308
+ private outlineMarks;
309
+ /** Is a row (column) drawn — not hidden, or revealed? */
310
+ private shownRow;
311
+ private shownCol;
312
+ /** The nearest drawn row (column) from `i`, stepping `dir` first, then back (W-49 DoD 7). */
313
+ private nearestShown;
314
+ /** How many cells of a range are hidden. */
315
+ private hiddenIn;
316
+ private isRevealed;
317
+ /** Whether a `visibility` plugin can change hiding here (Edit). */
318
+ private canUnhide;
319
+ /**
320
+ * Shows hidden rows or columns for viewing, in this element only — never a change (W-49).
321
+ * @param sheet - The sheet's name.
322
+ * @param axis - `rows` or `cols`.
323
+ * @param indexes - The 0-based rows or columns.
324
+ */
325
+ reveal(sheet: string, axis: 'rows' | 'cols', indexes: readonly number[]): void;
326
+ /**
327
+ * Hides again what this element revealed for viewing on a sheet (W-49).
328
+ * @param sheet - The sheet's name.
329
+ */
330
+ unreveal(sheet: string): void;
331
+ private spanName;
332
+ /** The ◂▸ / ▴▾ markers and the double lines where hidden rows and columns sit (W-49 DoD 4). */
333
+ private hiddenMarks;
334
+ private onHidbar;
335
+ /** How the last hiding change was asked for: a shortcut, a marker, else a menu or a host call. */
336
+ private visVia;
337
+ /** `sheetpane-visibility` for a hiding change, with what changed, and said politely (W-49 DoD 11, 12). */
338
+ private visibilityEvent;
339
+ /** A marker: unhide (Edit, with the visibility plugin — a change) or reveal for viewing. */
340
+ private onHiddenMarker;
341
+ /** A selection landing somewhere hidden shows it — nothing can hide an error from a reviewer (W-49 DoD 5). */
342
+ private revealFor;
343
+ /** The hidden-sheets button and its menu, at the end of the tabs (W-49 DoD 6). */
344
+ private hiddenSheetsHtml;
345
+ /** The hidden-sheets menu, or the tab menu, above the tabs. */
346
+ private hiddenMenuHtml;
347
+ private sheetSizes;
348
+ /** The indexes an edge acts on: every selected whole column (row) when the edge's own is one of them. */
349
+ private sizeTargets;
350
+ /** Sets sizes (px at 100 %, or `undefined` for the file's) and redraws; with `via`, fires `sheetpane-resize` and says it. */
351
+ private setSizes;
352
+ /** Pointer down on a header edge: follow it until release; Esc puts the sizes back. */
353
+ private startResize;
354
+ private moveResize;
355
+ private endResize;
356
+ /** Double-click on an edge, or Fit to data: each column to its widest text, each row to its tallest wrapped text (W-47 DoD 2). */
357
+ private fit;
358
+ private measureCtx;
359
+ /** The widest display text in a column, in each cell's own size and weight, padding included; merges ignored. */
360
+ private fitWidth;
361
+ /** The tallest wrapped text in a row at the current column widths, at least 28 px. */
362
+ private fitHeight;
363
+ /** The exact-size field: arrows ±1, Shift+arrows ±10, Enter applies, Esc cancels. True when handled. */
364
+ private onSizeKey;
365
+ private applySizeField;
366
+ /** The `selbar` controls that join a menu (W-49 `menus`), as menu items under a separator. */
367
+ private pluginMenuItems;
368
+ /** The header menu (right-click a header; Shift+F10 on a whole column or row): Fit · Width… · Reset (W-47 DoD 4). */
369
+ private openHeaderMenu;
370
+ private headerMenuHtml;
371
+ /** A header click: the whole column, row or sheet; with Shift, out to it from the anchor. */
372
+ private selectHeader;
373
+ /** Says the settled range once, politely (W-46 DoD 9). */
374
+ private say;
375
+ private selectCell;
376
+ /** The APG grid keyboard model (grid verdict decision 4). */
377
+ private onKey;
378
+ /** Esc cancels the innermost thing open; false when nothing was. */
379
+ private escape;
380
+ private move;
381
+ /** Enter / Tab inside a range: the active cell moves within it and wraps, as in Excel (W-46 DoD 5). */
382
+ private stepInRange;
383
+ /** Ctrl/⌘+C: one cell's value, or a range as TSV and an HTML table; the copied range is outlined (W-46 DoD 6). */
384
+ private copySelection;
385
+ /** A status-line notice for a few seconds. */
386
+ private say0;
387
+ /** Delete / Backspace over a range (Edit): every filled cell through `sheetpane-beforechange`, refused ones skipped, one undo step. */
388
+ private clearRange;
389
+ private rangeEnd;
390
+ private editCell;
391
+ /** Flag issue (`F`): the store decides which form opens (contract decision 4). */
392
+ private flag;
393
+ private toggleFreeze;
394
+ private findNext;
395
+ /** Find covers every row of every sheet, not just the rendered window. */
396
+ private computeHits;
397
+ private onOverlayClick;
398
+ private onComposerInput;
399
+ private addFromComposer;
400
+ private stepError;
401
+ private errorAt;
402
+ private chooseControl;
403
+ private runControl;
404
+ private runCellControl;
405
+ private menu;
406
+ private focusMenu;
407
+ private schedule;
408
+ /** Renders now (tests and the first frame). */
409
+ renderNow(): void;
410
+ private geometry;
411
+ private geomMerges;
412
+ /** Geometry as plugins see it: pixels at 100 % zoom from A1's top-left. */
413
+ geometryFor(sheet: string): Geometry | undefined;
414
+ private render;
415
+ /** Count · Sum · Average of a range of two or more cells (W-46 DoD 8), cached until the range or the cells change. */
416
+ private totalsFor;
417
+ private controlsHtml;
418
+ private renderState;
419
+ private renderGrid;
420
+ /**
421
+ * The selection layer (W-46 DoD 1, 2): per pane part a fill (a hole at the active cell), one border on
422
+ * the range's own edges, the active cell's ring, the copied outline and — after a touch — two handles.
423
+ * The scrolling part sits in `.sellayer`; the frozen-column part sticks left there; the frozen-row
424
+ * parts are bands inside the frozen rows. No cell is re-created: only `aria-selected` changes on them.
425
+ */
426
+ private drawSelection;
427
+ private scrollSelIntoView;
428
+ private renderOverlay;
429
+ private renderPluginOverlays;
430
+ private calloutHtml;
431
+ private composerHtml;
432
+ }
433
+ export { COL_VIRTUAL_AFTER, colAt };
434
+ //# sourceMappingURL=element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/excel/element.ts"],"names":[],"mappings":"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"}