@xlcalc/vue 0.0.0-stage → 0.21.2

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 (125) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +75 -2
  4. package/dist/abort.d.ts +6 -0
  5. package/dist/components/CellDraft.vue.d.ts +7 -0
  6. package/dist/components/CellEditor.vue.d.ts +3 -0
  7. package/dist/components/ColourSwatches.vue.d.ts +13 -0
  8. package/dist/components/DialogShell.vue.d.ts +37 -0
  9. package/dist/components/ExplainPanel.vue.d.ts +3 -0
  10. package/dist/components/FilterPopover.vue.d.ts +3 -0
  11. package/dist/components/FindBar.vue.d.ts +3 -0
  12. package/dist/components/FormatBorders.vue.d.ts +14 -0
  13. package/dist/components/FormatColour.vue.d.ts +19 -0
  14. package/dist/components/FormatDialog.vue.d.ts +24 -0
  15. package/dist/components/FormulaBar.vue.d.ts +3 -0
  16. package/dist/components/FunctionList.vue.d.ts +28 -0
  17. package/dist/components/FunctionTip.vue.d.ts +14 -0
  18. package/dist/components/InsertFunction.vue.d.ts +9 -0
  19. package/dist/components/OutlineCell.vue.d.ts +8 -0
  20. package/dist/components/OutlineLevels.vue.d.ts +7 -0
  21. package/dist/components/SheetGrid.vue.d.ts +3 -0
  22. package/dist/components/SheetMarks.vue.d.ts +3 -0
  23. package/dist/components/SheetMenu.vue.d.ts +3 -0
  24. package/dist/components/SheetRow.vue.d.ts +18 -0
  25. package/dist/components/SheetTabs.vue.d.ts +3 -0
  26. package/dist/components/SheetToolbar.vue.d.ts +43 -0
  27. package/dist/components/SheetView.vue.d.ts +56 -0
  28. package/dist/components/ValidationAlert.vue.d.ts +16 -0
  29. package/dist/components/ValidationDropdown.vue.d.ts +33 -0
  30. package/dist/components/ValidationPrompt.vue.d.ts +16 -0
  31. package/dist/components/cf-icons.d.ts +6 -0
  32. package/dist/components/context.d.ts +4 -0
  33. package/dist/components/dom.d.ts +7 -0
  34. package/dist/components/icons.d.ts +33 -0
  35. package/dist/components/popup.d.ts +29 -0
  36. package/dist/components/toolbar-icons.d.ts +24 -0
  37. package/dist/contract/memory.d.ts +108 -0
  38. package/dist/contract/messages.d.ts +260 -0
  39. package/dist/contract/source.d.ts +433 -0
  40. package/dist/contract/view.d.ts +108 -0
  41. package/dist/contract.d.ts +9 -0
  42. package/dist/core/ask.d.ts +2 -0
  43. package/dist/core/autocomplete.d.ts +28 -0
  44. package/dist/core/cell-style.d.ts +33 -0
  45. package/dist/core/cell-view.d.ts +104 -0
  46. package/dist/core/clip.d.ts +43 -0
  47. package/dist/core/commands.d.ts +47 -0
  48. package/dist/core/conditional.d.ts +16 -0
  49. package/dist/core/editing.d.ts +85 -0
  50. package/dist/core/explain.d.ts +36 -0
  51. package/dist/core/fill.d.ts +42 -0
  52. package/dist/core/filter.d.ts +72 -0
  53. package/dist/core/find.d.ts +53 -0
  54. package/dist/core/formula.d.ts +41 -0
  55. package/dist/core/function-tip.d.ts +34 -0
  56. package/dist/core/geometry.d.ts +55 -0
  57. package/dist/core/keys.d.ts +8 -0
  58. package/dist/core/list-keys.d.ts +4 -0
  59. package/dist/core/list.d.ts +17 -0
  60. package/dist/core/menu.d.ts +155 -0
  61. package/dist/core/merge.d.ts +19 -0
  62. package/dist/core/navigation.d.ts +72 -0
  63. package/dist/core/outline.d.ts +34 -0
  64. package/dist/core/point.d.ts +34 -0
  65. package/dist/core/ref-paint.d.ts +21 -0
  66. package/dist/core/selection.d.ts +45 -0
  67. package/dist/core/sheet.d.ts +774 -0
  68. package/dist/core/state.d.ts +107 -0
  69. package/dist/core/storage.d.ts +6 -0
  70. package/dist/core/totals.d.ts +16 -0
  71. package/dist/core/validation.d.ts +95 -0
  72. package/dist/core/viewport.d.ts +83 -0
  73. package/dist/core/windows.d.ts +102 -0
  74. package/dist/entry.d.ts +3 -0
  75. package/dist/failure.d.ts +5 -0
  76. package/dist/filter-key.d.ts +3 -0
  77. package/dist/find-match.d.ts +24 -0
  78. package/dist/format-cells.d.ts +85 -0
  79. package/dist/frame.d.ts +5 -0
  80. package/dist/grid-ref.d.ts +3 -0
  81. package/dist/index.d.ts +6 -0
  82. package/dist/index.js +12767 -0
  83. package/dist/lines.d.ts +16 -0
  84. package/dist/local/find.d.ts +15 -0
  85. package/dist/local/index.d.ts +3 -0
  86. package/dist/local/locale.d.ts +5 -0
  87. package/dist/local/outcome.d.ts +21 -0
  88. package/dist/local/query.d.ts +23 -0
  89. package/dist/local/source.d.ts +4 -0
  90. package/dist/local/types.d.ts +37 -0
  91. package/dist/local/validation.d.ts +8 -0
  92. package/dist/local/window.d.ts +16 -0
  93. package/dist/local/xlsx.d.ts +23 -0
  94. package/dist/local.js +1025 -0
  95. package/dist/locale-ref.d.ts +7 -0
  96. package/dist/locales.d.ts +3 -0
  97. package/dist/memory-outline.d.ts +31 -0
  98. package/dist/memory-query.d.ts +26 -0
  99. package/dist/memory-source.d.ts +3 -0
  100. package/dist/memory-validation.d.ts +17 -0
  101. package/dist/messages.d.ts +6 -0
  102. package/dist/number-formats.d.ts +13 -0
  103. package/dist/rect.d.ts +9 -0
  104. package/dist/ru-RU-BVeg6JGM.js +931 -0
  105. package/dist/sheet-query.d.ts +22 -0
  106. package/dist/stats.d.ts +8 -0
  107. package/dist/style.css +2 -0
  108. package/dist/toolbar.d.ts +39 -0
  109. package/dist/typed-entry-2l9Ay-hV.js +4559 -0
  110. package/dist/window-size.d.ts +4 -0
  111. package/docs/api.md +520 -0
  112. package/docs/autocomplete.md +60 -0
  113. package/docs/checks.md +40 -0
  114. package/docs/clipboard.md +48 -0
  115. package/docs/editing.md +97 -0
  116. package/docs/example-app.md +26 -0
  117. package/docs/find-replace.md +26 -0
  118. package/docs/list-mode.md +86 -0
  119. package/docs/local.md +94 -0
  120. package/docs/quick-start.md +221 -0
  121. package/docs/sheets.md +61 -0
  122. package/docs/toolbar.md +72 -0
  123. package/docs/validation.md +41 -0
  124. package/docs/view.md +50 -0
  125. package/package.json +92 -4
@@ -0,0 +1,774 @@
1
+ import type { CellStyle } from 'xlcalc/contract';
2
+ import type { SheetInfo, SheetWindow } from '../contract/source.js';
3
+ import type { ListSort, SheetLinkEvent, SheetViewApi, SheetViewProps, SheetViewState } from '../contract/view.js';
4
+ import { type EditorState } from './editing.js';
5
+ export interface SheetEmit {
6
+ (e: 'state', state: SheetViewState | null): void;
7
+ (e: 'openLink', link: SheetLinkEvent): void;
8
+ (e: 'sort', sort: ListSort): void;
9
+ (e: 'cellDrill', cell: {
10
+ sheet: string;
11
+ cell: string;
12
+ }): void;
13
+ (e: 'rowOpen', row: {
14
+ sheet: string;
15
+ row: number;
16
+ }): void;
17
+ }
18
+ export declare function useSheet(props: SheetViewProps, emit: SheetEmit, hostLinks: () => boolean): {
19
+ geo: {
20
+ widthOf: (c: number) => number;
21
+ heightOf: (d: number) => number;
22
+ offsets: import("vue").ComputedRef<Float64Array<ArrayBufferLike>>;
23
+ setHeights: (rows: Iterable<readonly [number, number | undefined]>) => boolean;
24
+ rowOffsets: import("vue").ComputedRef<Float64Array<ArrayBufferLike>>;
25
+ colAt: (x: number) => number;
26
+ rowAt: (y: number) => number;
27
+ nextRow: (d: number, dir: 1 | -1) => number;
28
+ nextCol: (c: number, dir: 1 | -1) => number;
29
+ hasRow: (d: number, dir: 1 | -1) => boolean;
30
+ hasCol: (c: number, dir: 1 | -1) => boolean;
31
+ spanHeight: (d: number, rs?: number) => number;
32
+ spanWidth: (c: number, cs?: number) => number;
33
+ };
34
+ v: {
35
+ showNums: import("vue").ComputedRef<boolean>;
36
+ narrow: import("vue").ComputedRef<boolean>;
37
+ touch: import("vue").ComputedRef<boolean>;
38
+ numW: import("vue").ComputedRef<number>;
39
+ outlineSlots: import("vue").ComputedRef<{
40
+ rows: number;
41
+ cols: number;
42
+ }>;
43
+ slotPx: import("vue").ComputedRef<16 | 22>;
44
+ barW: import("vue").ComputedRef<number>;
45
+ barH: import("vue").ComputedRef<number>;
46
+ headH: import("vue").ComputedRef<number>;
47
+ footH: import("vue").ComputedRef<0 | 24>;
48
+ leadW: import("vue").ComputedRef<number>;
49
+ bookFreeze: import("vue").ComputedRef<boolean>;
50
+ freezeOn: import("vue").ComputedRef<boolean>;
51
+ readFreeze: () => boolean | null;
52
+ toggleFreeze: () => void;
53
+ showFreeze: (sheet: string, on: boolean) => void;
54
+ middlePanes: () => {
55
+ rows: number;
56
+ cols: number;
57
+ };
58
+ frozenRows: import("vue").ComputedRef<number>;
59
+ frozenCols: import("vue").ComputedRef<number>;
60
+ frozenH: import("vue").ComputedRef<number>;
61
+ frozenW: import("vue").ComputedRef<number>;
62
+ frozenRowList: import("vue").ComputedRef<number[]>;
63
+ frozenColList: import("vue").ComputedRef<number[]>;
64
+ stickyTop: (d: number) => string;
65
+ stickyLeft: (c: number) => string;
66
+ firstRow: import("vue").ComputedRef<number>;
67
+ lastRow: import("vue").ComputedRef<number>;
68
+ firstCol: import("vue").ComputedRef<number>;
69
+ lastCol: import("vue").ComputedRef<number>;
70
+ shownRows: import("vue").ComputedRef<number[]>;
71
+ shownCols: import("vue").ComputedRef<number[]>;
72
+ topPad: import("vue").ComputedRef<number>;
73
+ bottomPad: import("vue").ComputedRef<number>;
74
+ leftPad: import("vue").ComputedRef<number>;
75
+ rightPad: import("vue").ComputedRef<number>;
76
+ tableWidth: import("vue").ComputedRef<number>;
77
+ boxOf: (d1: number, c1: number, d2: number, c2: number) => {
78
+ top: number;
79
+ left: number;
80
+ width: number;
81
+ height: number;
82
+ frozen: boolean;
83
+ };
84
+ viewBox: import("vue").ComputedRef<{
85
+ top: number;
86
+ left: number;
87
+ width: number;
88
+ height: number;
89
+ }>;
90
+ cellAt: (px: number, py: number) => {
91
+ d: number;
92
+ col: number;
93
+ x: number;
94
+ y: number;
95
+ };
96
+ };
97
+ w: {
98
+ slots: Record<import("./windows.js").SlotKind, import("vue").ShallowRef<import("./windows.js").Slot>>;
99
+ viewKey: () => string;
100
+ revision: import("vue").ShallowRef<number, number>;
101
+ slotAt: (d: number, col: number) => import("./windows.js").Slot | null;
102
+ textAt: (d: number, col: number) => string;
103
+ styleAt: (d: number, col: number, addr: string) => CellStyle | undefined;
104
+ cellData: (d: number, col: number, addr: string) => import("./windows.js").CellData;
105
+ emptyAt: (d: number, col: number) => boolean;
106
+ textOfRow: (r: number, col: number) => string;
107
+ drillOfRow: (r: number, col: number) => boolean;
108
+ valueOfRow: (r: number, col: number) => import("xlcalc").CellValue | undefined;
109
+ formulaOfRow: (r: number, col: number) => string | undefined;
110
+ emptyAtRow: (r: number, col: number) => boolean;
111
+ editTextOfRow: (r: number, col: number) => string | undefined;
112
+ lookOfRow: (r: number, col: number) => {
113
+ style?: CellStyle;
114
+ numberFormat?: string;
115
+ } | null;
116
+ merges: import("vue").ComputedRef<import("xlcalc").CellRect[]>;
117
+ tables: import("vue").ComputedRef<import("./windows.js").SheetTable[]>;
118
+ notice: import("vue").ComputedRef<string>;
119
+ wait: import("vue").Ref<{
120
+ since: number;
121
+ elapsedMs: number;
122
+ } | null, {
123
+ since: number;
124
+ elapsedMs: number;
125
+ } | {
126
+ since: number;
127
+ elapsedMs: number;
128
+ } | null>;
129
+ waitSeconds: import("vue").Ref<number, number>;
130
+ ensure: () => void;
131
+ reset: () => void;
132
+ resetSizes: () => void;
133
+ applyChanges: (changes: import("../index.js").CellUpdate[]) => void;
134
+ repaint: (ranges: {
135
+ sheet: string;
136
+ range: string;
137
+ }[]) => void;
138
+ };
139
+ sel: {
140
+ fullRect: import("vue").ComputedRef<import("xlcalc").CellRect | null>;
141
+ selRect: import("vue").ComputedRef<import("xlcalc").CellRect | null>;
142
+ wholeColumns: import("vue").ComputedRef<{
143
+ first: number;
144
+ last: number;
145
+ } | null>;
146
+ wholeRows: import("vue").ComputedRef<{
147
+ first: number;
148
+ last: number;
149
+ } | null>;
150
+ linesOf: (whole: {
151
+ first: number;
152
+ last: number;
153
+ } | null, line: number) => {
154
+ first: number;
155
+ last: number;
156
+ };
157
+ multi: import("vue").ComputedRef<boolean>;
158
+ selectionRef: import("vue").ComputedRef<string>;
159
+ gridRef: import("vue").ComputedRef<string>;
160
+ isActive: (row: number, col: number) => boolean;
161
+ pickCell: (row: number, col: number, extend?: boolean) => void;
162
+ pickColumn: (col: number, extend?: boolean) => void;
163
+ pickRow: (row: number, extend?: boolean) => void;
164
+ selectAll: () => void;
165
+ stretchTo: (r: import("xlcalc").CellRect) => void;
166
+ selectRect: (r: import("xlcalc").CellRect) => void;
167
+ onCellDown: (e: PointerEvent, row: number, col: number) => void;
168
+ onCellTap: (e: MouseEvent, row: number, col: number) => boolean;
169
+ onGridMove: (e: PointerEvent) => void;
170
+ onGridUp: () => void;
171
+ revealCell: (row: number, col: number) => void;
172
+ measure: () => void;
173
+ navKey: (e: KeyboardEvent) => boolean;
174
+ keyTarget: (a: import("xlcalc").CellPosition, e: KeyboardEvent) => import("xlcalc").CellPosition | Promise<import("xlcalc").CellPosition | null> | null;
175
+ step: (dr: -1 | 0 | 1, dc: -1 | 0 | 1) => void;
176
+ };
177
+ f: {
178
+ formulaAt: (row: number, col: number) => string | undefined;
179
+ selectedFormula: import("vue").ComputedRef<string>;
180
+ selectedValue: import("vue").ComputedRef<string>;
181
+ shownFormula: import("vue").ComputedRef<string>;
182
+ scanOptions: () => import("xlcalc").ScanOptions | null;
183
+ formulaParts: import("vue").ComputedRef<import("./formula.js").FormulaPart[]>;
184
+ refSheet: (ref: {
185
+ sheet?: string;
186
+ }) => number;
187
+ sheetIndexByName: (name: string) => number;
188
+ highlights: import("vue").ComputedRef<{
189
+ ref: import("xlcalc").GridReference;
190
+ color: string;
191
+ bottom: number;
192
+ right: number;
193
+ top: string;
194
+ under: string;
195
+ start: string;
196
+ end: string;
197
+ tint: string;
198
+ }[]>;
199
+ highlightAt: (row: number, col: number, hl?: readonly import("./formula.js").Highlight[]) => {
200
+ edges: string[];
201
+ tints: string[];
202
+ } | null;
203
+ };
204
+ nav: {
205
+ history: import("vue").Ref<{
206
+ sheet: number;
207
+ selected: {
208
+ row: number;
209
+ col: number;
210
+ } | null;
211
+ extent: {
212
+ row: number;
213
+ col: number;
214
+ } | null;
215
+ scrollTop: number;
216
+ scrollLeft: number;
217
+ }[], import("./navigation.js").Place[] | {
218
+ sheet: number;
219
+ selected: {
220
+ row: number;
221
+ col: number;
222
+ } | null;
223
+ extent: {
224
+ row: number;
225
+ col: number;
226
+ } | null;
227
+ scrollTop: number;
228
+ scrollLeft: number;
229
+ }[]>;
230
+ flash: import("vue").Ref<{
231
+ sheet: string;
232
+ rect: {
233
+ top: number;
234
+ left: number;
235
+ bottom: number;
236
+ right: number;
237
+ };
238
+ } | null, {
239
+ sheet: string;
240
+ rect: import("xlcalc").CellRect;
241
+ } | {
242
+ sheet: string;
243
+ rect: {
244
+ top: number;
245
+ left: number;
246
+ bottom: number;
247
+ right: number;
248
+ };
249
+ } | null>;
250
+ goBack: () => Promise<void>;
251
+ goPlace: (text: string) => Promise<boolean>;
252
+ goRef: (r: import("xlcalc").GridReference) => Promise<void>;
253
+ addressDraft: import("vue").Ref<string, string>;
254
+ addressFocused: import("vue").Ref<boolean, boolean>;
255
+ goAddress: () => Promise<boolean>;
256
+ takePendingFocus: () => string | null;
257
+ copyCellLink: () => Promise<void>;
258
+ };
259
+ ed: {
260
+ pendingAt: (row: number, col: number) => string | null | undefined;
261
+ forget: () => void;
262
+ lockIn: (rect: import("xlcalc").CellRect) => string | null;
263
+ lockAt: (row: number, col: number) => string | null;
264
+ editText: (row: number, col: number) => string;
265
+ startEdit: (opts: {
266
+ text?: string;
267
+ mode: "enter" | "edit";
268
+ place?: "cell" | "bar";
269
+ caret?: number;
270
+ caretEnd?: number;
271
+ }) => boolean;
272
+ inputOf: () => HTMLTextAreaElement | null;
273
+ focusEditor: () => void;
274
+ insertFunction: (name: string) => void;
275
+ ac: {
276
+ items: import("vue").ShallowRef<readonly string[], readonly string[]>;
277
+ index: import("vue").Ref<number, number>;
278
+ open: import("vue").ComputedRef<boolean>;
279
+ update: (text: string, caret: number | null) => void;
280
+ follow: () => void;
281
+ accept: (i?: number) => boolean;
282
+ close: () => void;
283
+ onKey: (e: KeyboardEvent) => boolean;
284
+ };
285
+ tip: {
286
+ parts: import("vue").ComputedRef<import("./function-tip.js").TipPart[] | null>;
287
+ update: (text: string, caret: number | null) => void;
288
+ follow: () => void;
289
+ close: () => void;
290
+ signature: (name: string) => Promise<import("../index.js").SheetFunctionSignature | null>;
291
+ };
292
+ onEditorInput: (e: Event) => void;
293
+ onEditorClick: () => void;
294
+ commit: (dr: -1 | 0 | 1, dc: -1 | 0 | 1, refocus?: boolean) => void;
295
+ cancel: () => void;
296
+ send: (entries: import("../index.js").CellEntry[], draft: EditorState | null, opts?: import("../index.js").EditOptions, retype?: (text: string) => Promise<import("../index.js").EditOutcome | undefined>) => Promise<import("../index.js").EditOutcome | undefined>;
297
+ run: (call: (opts?: import("../index.js").EditOptions) => Promise<import("../index.js").EditOutcome>, marks: import("../index.js").CellEntry[], draft: EditorState | null, extent: import("xlcalc").CellPosition | null, endsCopy?: boolean, retype?: (text: string) => Promise<import("../index.js").EditOutcome | undefined>) => Promise<import("../index.js").EditOutcome>;
298
+ stepHistory: (kind: "undo" | "redo") => Promise<import("../index.js").EditOutcome | null>;
299
+ pasteText: (text: string) => void;
300
+ onGridKey: (e: KeyboardEvent) => void;
301
+ onEditorKey: (e: KeyboardEvent) => void;
302
+ onEditorBlur: (e: FocusEvent, place: "cell" | "bar") => void;
303
+ };
304
+ point: {
305
+ down: (e: PointerEvent, at: {
306
+ kind: import("./point.js").PointKind;
307
+ row: number;
308
+ col: number;
309
+ } | null) => boolean;
310
+ move: (e: PointerEvent) => void;
311
+ up: () => void;
312
+ key: (e: KeyboardEvent) => boolean;
313
+ onMouseDown: (e: MouseEvent) => void;
314
+ took: () => boolean;
315
+ };
316
+ totals: {
317
+ statsText: import("vue").ComputedRef<string>;
318
+ shownRows: (r1: number, r2: number) => import("./totals.js").ShownRows;
319
+ inWindows: (ds: import("./totals.js").ShownRows, c1: number, c2: number) => boolean;
320
+ };
321
+ filter: {
322
+ cols: import("vue").Ref<Record<number, {
323
+ values?: string[];
324
+ text?: string;
325
+ }>, Record<number, {
326
+ values?: string[];
327
+ text?: string;
328
+ }>>;
329
+ sort: import("vue").Ref<{
330
+ col: number;
331
+ dir: "asc" | "desc";
332
+ } | null, {
333
+ col: number;
334
+ dir: "asc" | "desc";
335
+ } | {
336
+ col: number;
337
+ dir: "asc" | "desc";
338
+ } | null>;
339
+ available: import("vue").ComputedRef<boolean>;
340
+ head: import("vue").ComputedRef<number>;
341
+ active: import("vue").ComputedRef<boolean>;
342
+ spec: import("vue").ComputedRef<import("../index.js").SheetFilter | null>;
343
+ status: import("vue").ComputedRef<string>;
344
+ restore: () => void;
345
+ refresh: () => Promise<void>;
346
+ reapply: () => Promise<boolean>;
347
+ clear: () => void;
348
+ open: import("vue").Ref<number | null, number | null>;
349
+ pos: import("vue").Ref<{
350
+ left: number;
351
+ top: number;
352
+ }, {
353
+ left: number;
354
+ top: number;
355
+ } | {
356
+ left: number;
357
+ top: number;
358
+ }>;
359
+ values: import("vue").Ref<{
360
+ text: string;
361
+ count: number;
362
+ }[], {
363
+ text: string;
364
+ count: number;
365
+ }[] | {
366
+ text: string;
367
+ count: number;
368
+ }[]>;
369
+ more: import("vue").Ref<number, number>;
370
+ busy: import("vue").Ref<boolean, boolean>;
371
+ draftText: import("vue").Ref<string, string>;
372
+ draftSearch: import("vue").Ref<string, string>;
373
+ title: import("vue").ComputedRef<string>;
374
+ shownValues: import("vue").ComputedRef<{
375
+ text: string;
376
+ count: number;
377
+ }[]>;
378
+ isChecked: (text: string) => boolean;
379
+ allChecked: import("vue").ComputedRef<boolean>;
380
+ openFunnel: (col: number, anchor?: DOMRect) => Promise<void>;
381
+ close: () => void;
382
+ toggleValue: (text: string) => void;
383
+ toggleAll: () => void;
384
+ applyDraft: () => void;
385
+ clearColumn: (c: number) => void;
386
+ sortBy: (c: number, dir: "asc" | "desc") => void;
387
+ onFunnelKey: (e: KeyboardEvent) => void;
388
+ };
389
+ find: {
390
+ available: import("vue").ComputedRef<boolean>;
391
+ canReplace: import("vue").ComputedRef<boolean>;
392
+ isOpen: import("vue").Ref<boolean, boolean>;
393
+ replacing: import("vue").Ref<boolean, boolean>;
394
+ optionsOpen: import("vue").Ref<boolean, boolean>;
395
+ text: import("vue").Ref<string, string>;
396
+ by: import("vue").Ref<string, string>;
397
+ options: {
398
+ matchCase: boolean;
399
+ wholeCell: boolean;
400
+ lookIn: "formulas" | "values";
401
+ byColumns: boolean;
402
+ };
403
+ lookIn: import("vue").ComputedRef<"formulas" | "values">;
404
+ scope: import("vue").Ref<string | null, string | null>;
405
+ hits: import("vue").Ref<{
406
+ row: number;
407
+ col: number;
408
+ }[], import("xlcalc").CellPosition[] | {
409
+ row: number;
410
+ col: number;
411
+ }[]>;
412
+ total: import("vue").Ref<number, number>;
413
+ index: import("vue").ComputedRef<number>;
414
+ busy: import("vue").Ref<boolean, boolean>;
415
+ writing: import("vue").Ref<boolean, boolean>;
416
+ input: import("vue").Ref<HTMLInputElement | null, HTMLInputElement | null>;
417
+ hitSet: import("vue").ComputedRef<Set<string>>;
418
+ current: import("vue").ComputedRef<string>;
419
+ openFind: () => void;
420
+ openReplace: () => void;
421
+ closeFind: () => void;
422
+ step: (dir: 1 | -1) => void;
423
+ replaceOne: (run: import("./find.js").FindRunner) => Promise<void>;
424
+ replaceAll: (run: import("./find.js").FindRunner) => Promise<void>;
425
+ onFindKey: (e: KeyboardEvent) => void;
426
+ status: import("vue").ComputedRef<string>;
427
+ };
428
+ explain: {
429
+ available: import("vue").ComputedRef<boolean>;
430
+ open: import("vue").Ref<boolean, boolean>;
431
+ place: import("vue").Ref<string, string>;
432
+ lines: import("vue").ShallowRef<import("./explain.js").ExplainLine[], import("./explain.js").ExplainLine[]>;
433
+ busy: import("vue").Ref<boolean, boolean>;
434
+ failed: import("vue").Ref<boolean, boolean>;
435
+ show: () => boolean;
436
+ close: () => void;
437
+ refresh: () => void;
438
+ };
439
+ views: {
440
+ spanOf: (r: number, c: number) => import("./cell-view.js").MergeSpan | null | undefined;
441
+ coveredByMerge: (r: number, c: number) => boolean;
442
+ rowState: (d: number, r: number) => import("./cell-view.js").RowState;
443
+ cellView: (d: number, r: number, c: number, frozen: boolean, row: import("./cell-view.js").RowState) => import("./cell-view.js").CellView;
444
+ };
445
+ list: {
446
+ sortable: (c: number) => boolean;
447
+ sortOf: (c: number) => ListSort["dir"] | null;
448
+ toggleSort: (c: number) => void;
449
+ alignOf: (c: number) => "left" | "right" | "center" | undefined;
450
+ click: (r: number, c: number) => boolean;
451
+ key: (e: KeyboardEvent) => boolean;
452
+ totals: import("vue").ComputedRef<(string | null)[] | null>;
453
+ };
454
+ cmd: {
455
+ can: (name: "outline" | "freeze" | "structure" | "layout" | "format") => boolean;
456
+ canRanges: import("vue").ComputedRef<boolean>;
457
+ format: (patches: import("../index.js").SheetFormatPatch[]) => Promise<import("../index.js").EditOutcome | null>;
458
+ structure: (op: import("../index.js").SheetOp, endsCopy?: boolean) => Promise<import("../index.js").EditOutcome | null>;
459
+ layout: (edit: import("../index.js").LayoutChange) => Promise<import("../index.js").EditOutcome | null>;
460
+ outline: (command: import("../index.js").OutlineChange) => Promise<import("../index.js").EditOutcome | null>;
461
+ freeze: (mode?: import("../index.js").FreezeMode) => Promise<import("../index.js").EditOutcome | null>;
462
+ fontKey: (e: KeyboardEvent) => boolean;
463
+ formatOpen: import("vue").Ref<boolean, boolean>;
464
+ openFormat: () => boolean;
465
+ closeFormat: () => void;
466
+ };
467
+ api: SheetViewApi;
468
+ clip: {
469
+ mark: import("vue").ShallowRef<import("./clip.js").ClipMark | null, import("./clip.js").ClipMark | null>;
470
+ ants: import("vue").ComputedRef<{
471
+ top: number;
472
+ left: number;
473
+ width: number;
474
+ height: number;
475
+ frozen: boolean;
476
+ } | null>;
477
+ canCut: import("vue").ComputedRef<boolean>;
478
+ canPaste: import("vue").ComputedRef<boolean>;
479
+ clear: () => void;
480
+ onCopy: (e: ClipboardEvent) => void;
481
+ onCut: (e: ClipboardEvent) => void;
482
+ onPaste: (e: ClipboardEvent) => void;
483
+ copy: (cut: boolean) => void;
484
+ paste: () => Promise<void>;
485
+ };
486
+ fill: {
487
+ source: import("vue").ComputedRef<import("xlcalc").CellRect | null>;
488
+ drag: import("vue").ShallowRef<import("./fill.js").FillDrag | null, import("./fill.js").FillDrag | null>;
489
+ handle: import("vue").ComputedRef<{
490
+ x: number;
491
+ y: number;
492
+ frozen: boolean;
493
+ dragging: boolean;
494
+ } | null>;
495
+ frame: import("vue").ComputedRef<{
496
+ top: number;
497
+ left: number;
498
+ width: number;
499
+ height: number;
500
+ frozen: boolean;
501
+ } | null>;
502
+ onDown: (e: PointerEvent) => void;
503
+ onMove: (e: PointerEvent) => void;
504
+ onUp: (e: PointerEvent) => void;
505
+ onCancel: () => void;
506
+ autofill: () => Promise<void>;
507
+ };
508
+ viewState: import("vue").ComputedRef<SheetViewState | null>;
509
+ validation: {
510
+ current: import("vue").ShallowRef<import("../index.js").SheetValidation | null, import("../index.js").SheetValidation | null>;
511
+ place: import("vue").ShallowRef<import("./validation.js").ValidationPlace | null, import("./validation.js").ValidationPlace | null>;
512
+ list: import("vue").ComputedRef<string[] | null>;
513
+ prompt: import("vue").ComputedRef<{
514
+ title?: string;
515
+ text: string;
516
+ } | null>;
517
+ open: import("vue").Ref<boolean, boolean>;
518
+ index: import("vue").Ref<number, number>;
519
+ refresh: (wait?: number) => void;
520
+ openList: () => boolean;
521
+ close: () => void;
522
+ toggle: () => boolean | void;
523
+ choose: (i?: number) => boolean;
524
+ onKey: (e: KeyboardEvent) => boolean;
525
+ };
526
+ alerts: {
527
+ alert: import("vue").ShallowRef<import("./validation.js").SheetAlert | null, import("./validation.js").SheetAlert | null>;
528
+ ask: (next: import("./validation.js").SheetAlert) => Promise<import("./validation.js").AlertAnswer>;
529
+ answer: (a: import("./validation.js").AlertAnswer) => void;
530
+ };
531
+ outline: {
532
+ outline: import("vue").ComputedRef<import("../index.js").SheetOutline | null>;
533
+ can: import("vue").ComputedRef<boolean>;
534
+ marks: (axis: import("./outline.js").OutlineAxis, line: number) => import("./outline.js").OutlineMark[];
535
+ at: (level: number) => number;
536
+ toggle: (axis: import("./outline.js").OutlineAxis, g: import("../index.js").OutlineGroup) => void;
537
+ showLevel: (axis: import("./outline.js").OutlineAxis, level: number) => void;
538
+ lines: (op: import("./outline.js").OutlineOp, axis: import("./outline.js").OutlineAxis, first: number, last: number) => void;
539
+ key: (e: KeyboardEvent) => boolean;
540
+ tap: (e: MouseEvent) => void;
541
+ };
542
+ menu: {
543
+ open: import("vue").ShallowRef<import("./menu.js").OpenMenu | null, import("./menu.js").OpenMenu | null>;
544
+ items: import("vue").ComputedRef<import("./menu.js").MenuItem[]>;
545
+ caption: import("vue").ComputedRef<string>;
546
+ dialog: import("vue").Ref<{
547
+ kind: "size";
548
+ axis: "columns" | "rows";
549
+ first: number;
550
+ last: number;
551
+ draft: string;
552
+ error: string;
553
+ } | {
554
+ kind: "deleteSheet";
555
+ sheet: string;
556
+ } | {
557
+ kind: "unhide";
558
+ sheets: string[];
559
+ } | {
560
+ kind: "outline";
561
+ op: import("./outline.js").OutlineOp;
562
+ axis: import("./outline.js").OutlineAxis;
563
+ rect: {
564
+ top: number;
565
+ left: number;
566
+ bottom: number;
567
+ right: number;
568
+ };
569
+ } | null, import("./menu.js").MenuDialog | {
570
+ kind: "size";
571
+ axis: "columns" | "rows";
572
+ first: number;
573
+ last: number;
574
+ draft: string;
575
+ error: string;
576
+ } | {
577
+ kind: "deleteSheet";
578
+ sheet: string;
579
+ } | {
580
+ kind: "unhide";
581
+ sheets: string[];
582
+ } | {
583
+ kind: "outline";
584
+ op: import("./outline.js").OutlineOp;
585
+ axis: import("./outline.js").OutlineAxis;
586
+ rect: {
587
+ top: number;
588
+ left: number;
589
+ bottom: number;
590
+ right: number;
591
+ };
592
+ } | null>;
593
+ renaming: import("vue").Ref<{
594
+ index: number;
595
+ draft: string;
596
+ } | null, {
597
+ index: number;
598
+ draft: string;
599
+ } | {
600
+ index: number;
601
+ draft: string;
602
+ } | null>;
603
+ renameInput: import("vue").Ref<HTMLInputElement | null, HTMLInputElement | null>;
604
+ close: () => null;
605
+ choose: (item: import("./menu.js").MenuItem) => void;
606
+ openLines: (kind: "rows" | "columns", line: number, x: number, y: number) => boolean;
607
+ openSheet: (index: number, x: number, y: number) => Promise<boolean>;
608
+ openCells: (row: number, col: number, x: number, y: number) => void;
609
+ linesAvailable: import("vue").ComputedRef<boolean>;
610
+ applySize: () => void;
611
+ askOutline: (op: import("./outline.js").OutlineOp) => void;
612
+ applyOutline: () => void;
613
+ addSheet: () => Promise<import("../index.js").EditOutcome | null>;
614
+ confirmDelete: () => void;
615
+ unhide: (name: string) => void;
616
+ startRename: (index: number) => void;
617
+ commitRename: (left?: boolean) => Promise<void>;
618
+ cancelRename: () => null;
619
+ press: {
620
+ start: (e: PointerEvent, open: (x: number, y: number) => void) => void;
621
+ move: (e: PointerEvent) => void;
622
+ cancel: () => void;
623
+ after: () => boolean;
624
+ pressing: () => boolean;
625
+ context: (e: MouseEvent) => boolean;
626
+ };
627
+ };
628
+ editor: import("vue").Ref<{
629
+ sheet: string;
630
+ row: number;
631
+ col: number;
632
+ text: string;
633
+ initial: string;
634
+ mode: "enter" | "edit";
635
+ place: "cell" | "bar";
636
+ caret: number | null;
637
+ caretEnd?: number | undefined;
638
+ inPlace: boolean;
639
+ } | null, EditorState | {
640
+ sheet: string;
641
+ row: number;
642
+ col: number;
643
+ text: string;
644
+ initial: string;
645
+ mode: "enter" | "edit";
646
+ place: "cell" | "bar";
647
+ caret: number | null;
648
+ caretEnd?: number | undefined;
649
+ inPlace: boolean;
650
+ } | null>;
651
+ message: import("vue").Ref<string | null, string | null>;
652
+ notify: (text: string) => void;
653
+ dismiss: () => null;
654
+ cellInput: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
655
+ barInput: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
656
+ barOpen: import("vue").Ref<boolean, boolean>;
657
+ toggleBar: () => boolean;
658
+ tabs: import("vue").ComputedRef<{
659
+ sheet: SheetInfo;
660
+ i: number;
661
+ }[]>;
662
+ showTabs: import("vue").ComputedRef<boolean>;
663
+ pickSheet: (index: number) => Promise<void>;
664
+ reload: () => Promise<void>;
665
+ retry: () => void;
666
+ startResize: (e: PointerEvent, col: number) => void;
667
+ onResizeMove: (e: PointerEvent) => void;
668
+ endResize: () => void;
669
+ rowsResizable: import("vue").ComputedRef<boolean>;
670
+ startRowResize: (e: PointerEvent, row: number) => void;
671
+ onRowResizeMove: (e: PointerEvent) => void;
672
+ endRowResize: () => Promise<void>;
673
+ onRowEdgeDouble: (row: number) => void;
674
+ fitsOnEdge: import("vue").ComputedRef<boolean>;
675
+ onEdgeDouble: (col: number) => void;
676
+ onLink: (e: MouseEvent, link: NonNullable<SheetWindow["links"]>[string], row: number, col: number) => void;
677
+ onScroll: () => void;
678
+ onGridKey: (e: KeyboardEvent) => void;
679
+ props: SheetViewProps;
680
+ source: () => import("../index.js").SheetSource;
681
+ sourceMethod: <K extends import("./state.js").SourceMethod>(name: K) => NonNullable<import("../index.js").SheetSource[K]> | null;
682
+ outdated: () => () => boolean;
683
+ endWorkbook: () => undefined;
684
+ messages: import("vue").ComputedRef<import("../index.js").SheetMessages>;
685
+ locale: import("vue").ComputedRef<string>;
686
+ memory: import("./storage.js").Memory;
687
+ editable: import("vue").ComputedRef<boolean>;
688
+ sheets: import("vue").ShallowRef<SheetInfo[], SheetInfo[]>;
689
+ active: import("vue").Ref<number, number>;
690
+ sheet: import("vue").ComputedRef<SheetInfo | null>;
691
+ sheetName: import("vue").ComputedRef<string>;
692
+ grown: import("vue").Ref<{
693
+ rows: number;
694
+ cols: number;
695
+ }, {
696
+ rows: number;
697
+ cols: number;
698
+ } | {
699
+ rows: number;
700
+ cols: number;
701
+ }>;
702
+ reach: import("vue").Ref<{
703
+ rows: number;
704
+ cols: number;
705
+ }, {
706
+ rows: number;
707
+ cols: number;
708
+ } | {
709
+ rows: number;
710
+ cols: number;
711
+ }>;
712
+ dataRows: import("vue").ComputedRef<number>;
713
+ dataCols: import("vue").ComputedRef<number>;
714
+ visible: import("vue").ShallowRef<{
715
+ key: string;
716
+ spec: import("../index.js").SheetFilter;
717
+ rows: Int32Array;
718
+ index: Int32Array;
719
+ } | null, {
720
+ key: string;
721
+ spec: import("../index.js").SheetFilter;
722
+ rows: Int32Array;
723
+ index: Int32Array;
724
+ } | null>;
725
+ filterWait: import("vue").Ref<boolean, boolean>;
726
+ rowOf: (d: number) => number;
727
+ indexOf: (r: number) => number | undefined;
728
+ dataShown: import("vue").ComputedRef<number>;
729
+ rowCount: import("vue").ComputedRef<number>;
730
+ lastRow: import("vue").ComputedRef<number>;
731
+ colCount: import("vue").ComputedRef<number>;
732
+ failure: import("vue").ShallowRef<import("../index.js").SheetFailure | null, import("../index.js").SheetFailure | null>;
733
+ failureOf: (error: unknown) => import("../index.js").SheetFailure;
734
+ loading: import("vue").Ref<boolean, boolean>;
735
+ scroller: import("vue").Ref<HTMLElement | null, HTMLElement | null>;
736
+ scrollTop: import("vue").Ref<number, number>;
737
+ scrollLeft: import("vue").Ref<number, number>;
738
+ viewH: import("vue").Ref<number, number>;
739
+ viewW: import("vue").Ref<number, number>;
740
+ bookWidths: import("vue").ShallowRef<Map<number, number | null>, Map<number, number | null>>;
741
+ userWidths: import("vue").ShallowRef<Record<number, number>, Record<number, number>>;
742
+ heights: import("vue").ShallowRef<Map<number, number>, Map<number, number>>;
743
+ defaultRowPx: import("vue").Ref<number, number>;
744
+ selected: import("vue").Ref<{
745
+ row: number;
746
+ col: number;
747
+ } | null, import("xlcalc").CellPosition | {
748
+ row: number;
749
+ col: number;
750
+ } | null>;
751
+ extent: import("vue").Ref<{
752
+ row: number;
753
+ col: number;
754
+ } | null, import("xlcalc").CellPosition | {
755
+ row: number;
756
+ col: number;
757
+ } | null>;
758
+ anchor: import("vue").Ref<{
759
+ row: number;
760
+ col: number;
761
+ } | null, import("xlcalc").CellPosition | {
762
+ row: number;
763
+ col: number;
764
+ } | null>;
765
+ hooks: {
766
+ unfilter: (_row: number) => void;
767
+ changing: () => void;
768
+ };
769
+ focusGrid: () => void;
770
+ scrollGridTo: (top: number, left: number) => void;
771
+ grow: (row: number, col: number) => void;
772
+ stretch: (row: number, col: number) => void;
773
+ };
774
+ export type SheetContext = ReturnType<typeof useSheet>;