@a3s-lab/office 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -5
- package/dist/0~7048.js +14 -4
- package/dist/0~spreadsheet-editor.js +9329 -5294
- package/dist/internal/features/work/editors/office-checkbox.d.ts +3 -2
- package/dist/internal/features/work/editors/spreadsheet-auto-sum-command.d.ts +3 -0
- package/dist/internal/features/work/editors/spreadsheet-auto-sum.d.ts +19 -0
- package/dist/internal/features/work/editors/spreadsheet-cell-format-command.d.ts +3 -0
- package/dist/internal/features/work/editors/spreadsheet-cell-format.d.ts +36 -0
- package/dist/internal/features/work/editors/spreadsheet-cell-mutation-guard.d.ts +4 -0
- package/dist/internal/features/work/editors/spreadsheet-clipboard-shortcuts.d.ts +1 -0
- package/dist/internal/features/work/editors/spreadsheet-clipboard.d.ts +13 -0
- package/dist/internal/features/work/editors/spreadsheet-command-catalog.d.ts +119 -0
- package/dist/internal/features/work/editors/spreadsheet-command-controller.d.ts +38 -0
- package/dist/internal/features/work/editors/spreadsheet-context-menu.d.ts +5 -15
- package/dist/internal/features/work/editors/spreadsheet-editor-ribbon.d.ts +1 -2
- package/dist/internal/features/work/editors/spreadsheet-format-cells-dialog-model.d.ts +86 -0
- package/dist/internal/features/work/editors/spreadsheet-format-cells-dialog-panels.d.ts +15 -0
- package/dist/internal/features/work/editors/spreadsheet-format-cells-dialog.d.ts +8 -0
- package/dist/internal/features/work/editors/spreadsheet-go-to.d.ts +24 -0
- package/dist/internal/features/work/editors/spreadsheet-keyboard-navigation.d.ts +4 -0
- package/dist/internal/features/work/editors/spreadsheet-navigation-command.d.ts +3 -0
- package/dist/internal/features/work/editors/spreadsheet-number-format-command.d.ts +24 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-cell.d.ts +17 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-dialog.d.ts +9 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-mode.d.ts +11 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-plan.d.ts +4 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-sheet.d.ts +23 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-snapshot.d.ts +10 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special-types.d.ts +127 -0
- package/dist/internal/features/work/editors/spreadsheet-paste-special.d.ts +7 -0
- package/dist/internal/features/work/editors/use-spreadsheet-clipboard.d.ts +36 -0
- package/dist/office-kernel.wasm +0 -0
- package/dist/styles.css +548 -1
- package/docs/latest/en/browser-editor-architecture.md +12 -1
- package/package.json +9 -3
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export declare function OfficeCheckbox({ ariaLabel, checked, onCheckedChange, children, disabled, className, }: {
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export declare function OfficeCheckbox({ ariaLabel, checked, onCheckedChange, children, disabled, className, indeterminate, }: {
|
|
3
3
|
ariaLabel: string;
|
|
4
4
|
checked: boolean;
|
|
5
5
|
onCheckedChange: (checked: boolean) => void;
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
className?: string;
|
|
9
|
+
indeterminate?: boolean;
|
|
9
10
|
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SpreadsheetCommandContext, SpreadsheetEditorCommands } from './spreadsheet-command-controller';
|
|
2
|
+
import { type OfficeEditorExtension } from './office-editor-extension';
|
|
3
|
+
export declare function createSpreadsheetAutoSumExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { WorkSpreadsheetSheet } from '../work-types';
|
|
2
|
+
import { type SpreadsheetCellRange, type SpreadsheetCellRangeInput } from './spreadsheet-cell-range';
|
|
3
|
+
export declare const spreadsheetAutoSumMaximumTargets = 1000;
|
|
4
|
+
export type SpreadsheetAutoSumFunction = 'sum' | 'average' | 'count' | 'max' | 'min';
|
|
5
|
+
export interface SpreadsheetAutoSumWrite {
|
|
6
|
+
range: SpreadsheetCellRange;
|
|
7
|
+
values: string[][];
|
|
8
|
+
}
|
|
9
|
+
export interface SpreadsheetAutoSumPlan {
|
|
10
|
+
formulaBarValue: string;
|
|
11
|
+
function: SpreadsheetAutoSumFunction;
|
|
12
|
+
selection: SpreadsheetCellRange & {
|
|
13
|
+
row_focus: number;
|
|
14
|
+
column_focus: number;
|
|
15
|
+
};
|
|
16
|
+
targetCellCount: number;
|
|
17
|
+
writes: SpreadsheetAutoSumWrite[];
|
|
18
|
+
}
|
|
19
|
+
export declare function planSpreadsheetAutoSum(sheet: WorkSpreadsheetSheet | undefined, selection: SpreadsheetCellRangeInput, functionName: SpreadsheetAutoSumFunction): SpreadsheetAutoSumPlan | null;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SpreadsheetCommandContext, SpreadsheetEditorCommands } from './spreadsheet-command-controller';
|
|
2
|
+
import { type OfficeEditorExtension } from './office-editor-extension';
|
|
3
|
+
export declare function createSpreadsheetCellFormatExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetSheet } from '../work-types';
|
|
3
|
+
import { type SpreadsheetCellBorderFormat } from './spreadsheet-cell-border';
|
|
4
|
+
import { type SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
5
|
+
export declare const MAX_SPREADSHEET_CELL_FORMAT_CELLS = 10000;
|
|
6
|
+
export type SpreadsheetHorizontalAlignment = 'general' | 'left' | 'center' | 'right';
|
|
7
|
+
export type SpreadsheetVerticalAlignment = 'top' | 'middle' | 'bottom';
|
|
8
|
+
export interface SpreadsheetCellFormatPatch {
|
|
9
|
+
numberFormat?: string;
|
|
10
|
+
horizontalAlignment?: SpreadsheetHorizontalAlignment;
|
|
11
|
+
verticalAlignment?: SpreadsheetVerticalAlignment;
|
|
12
|
+
wrapText?: boolean;
|
|
13
|
+
rotation?: number;
|
|
14
|
+
fontFamily?: string;
|
|
15
|
+
fontSize?: number;
|
|
16
|
+
fontColor?: string;
|
|
17
|
+
bold?: boolean;
|
|
18
|
+
italic?: boolean;
|
|
19
|
+
underline?: boolean;
|
|
20
|
+
strike?: boolean;
|
|
21
|
+
fillColor?: string | null;
|
|
22
|
+
borders?: readonly SpreadsheetCellBorderFormat[];
|
|
23
|
+
locked?: boolean;
|
|
24
|
+
hidden?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface SpreadsheetCellFormatRequest {
|
|
27
|
+
sheetId: string;
|
|
28
|
+
range: SpreadsheetCellRange;
|
|
29
|
+
patch: SpreadsheetCellFormatPatch;
|
|
30
|
+
}
|
|
31
|
+
export declare function canApplySpreadsheetCellFormat(content: WorkSpreadsheetContent, request: SpreadsheetCellFormatRequest): boolean;
|
|
32
|
+
export declare function applySpreadsheetCellFormat(content: WorkSpreadsheetContent, request: SpreadsheetCellFormatRequest): WorkSpreadsheetContent | null;
|
|
33
|
+
export declare function spreadsheetCellProtectionAt(sheet: WorkSpreadsheetSheet, row: number, column: number, cell?: Cell | null | undefined): {
|
|
34
|
+
locked: boolean;
|
|
35
|
+
hidden: boolean;
|
|
36
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkSpreadsheetSheet } from '../work-types';
|
|
2
|
+
import { type SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
3
|
+
export declare function canMutateSpreadsheetCellRange(sheet: WorkSpreadsheetSheet | undefined, range: SpreadsheetCellRange): boolean;
|
|
4
|
+
export declare function canMutateSpreadsheetCellRanges(sheet: WorkSpreadsheetSheet | undefined, ranges: readonly SpreadsheetCellRange[]): boolean;
|
|
@@ -3,3 +3,4 @@ export interface SpreadsheetClipboardShortcutOptions {
|
|
|
3
3
|
execute(): boolean;
|
|
4
4
|
}
|
|
5
5
|
export declare function runSpreadsheetClipboardShortcut(event: KeyboardEvent, canExecute: SpreadsheetClipboardShortcutOptions['canExecute'], execute: SpreadsheetClipboardShortcutOptions['execute']): boolean;
|
|
6
|
+
export declare function runSpreadsheetPasteSpecialShortcut(event: KeyboardEvent, canExecute: SpreadsheetClipboardShortcutOptions['canExecute'], execute: SpreadsheetClipboardShortcutOptions['execute']): boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type SpreadsheetClipboardSnapshot } from './spreadsheet-paste-special';
|
|
2
|
+
export interface SpreadsheetClipboardPort {
|
|
3
|
+
readText(): Promise<string>;
|
|
4
|
+
writeText(value: string): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare function parseSpreadsheetClipboardText(value: string): string[][];
|
|
7
|
+
export declare const browserSpreadsheetClipboard: SpreadsheetClipboardPort;
|
|
8
|
+
export declare function storeRichSpreadsheetClipboard(snapshot: SpreadsheetClipboardSnapshot): void;
|
|
9
|
+
export declare function spreadsheetClipboardSnapshotForText(plainText: string): SpreadsheetClipboardSnapshot | null;
|
|
10
|
+
export declare function clearRichSpreadsheetClipboard(): void;
|
|
11
|
+
export declare function readSpreadsheetClipboardText(readSystem: (() => Promise<string>) | undefined, readLocal: () => string, timeoutMs?: number, canReadSystem?: () => boolean | Promise<boolean>): Promise<string>;
|
|
12
|
+
export declare function writeSpreadsheetClipboardText(value: string, writeSystem: ((value: string) => Promise<void>) | undefined, writeLocal: (value: string) => void, timeoutMs?: number, onSystemWriteResult?: (succeeded: boolean) => void): Promise<void>;
|
|
13
|
+
export declare function copySpreadsheetSelection(clipboard: SpreadsheetClipboardPort, value: string, cut: boolean): Promise<boolean>;
|
|
@@ -80,6 +80,20 @@ export declare const spreadsheetCommandCatalog: {
|
|
|
80
80
|
readonly editor: readonly ["Mod-v"];
|
|
81
81
|
};
|
|
82
82
|
};
|
|
83
|
+
readonly pasteSpecial: {
|
|
84
|
+
readonly id: "clipboard.pasteSpecial";
|
|
85
|
+
readonly label: "选择性粘贴";
|
|
86
|
+
readonly location: {
|
|
87
|
+
readonly area: "ribbon";
|
|
88
|
+
readonly tab: "home";
|
|
89
|
+
readonly group: "clipboard";
|
|
90
|
+
};
|
|
91
|
+
readonly shortcut: {
|
|
92
|
+
readonly label: "Cmd/Ctrl+Alt+V";
|
|
93
|
+
readonly aria: "Control+Alt+V Meta+Alt+V";
|
|
94
|
+
readonly editor: readonly ["Mod-Alt-v"];
|
|
95
|
+
};
|
|
96
|
+
};
|
|
83
97
|
readonly cut: {
|
|
84
98
|
readonly id: "clipboard.cut";
|
|
85
99
|
readonly label: "剪切";
|
|
@@ -298,6 +312,38 @@ export declare const spreadsheetCommandCatalog: {
|
|
|
298
312
|
readonly group: "number";
|
|
299
313
|
};
|
|
300
314
|
};
|
|
315
|
+
readonly decreaseDecimalPlaces: {
|
|
316
|
+
readonly id: "number.decreaseDecimalPlaces";
|
|
317
|
+
readonly label: "减少小数位";
|
|
318
|
+
readonly location: {
|
|
319
|
+
readonly area: "ribbon";
|
|
320
|
+
readonly tab: "home";
|
|
321
|
+
readonly group: "number";
|
|
322
|
+
};
|
|
323
|
+
};
|
|
324
|
+
readonly increaseDecimalPlaces: {
|
|
325
|
+
readonly id: "number.increaseDecimalPlaces";
|
|
326
|
+
readonly label: "增加小数位";
|
|
327
|
+
readonly location: {
|
|
328
|
+
readonly area: "ribbon";
|
|
329
|
+
readonly tab: "home";
|
|
330
|
+
readonly group: "number";
|
|
331
|
+
};
|
|
332
|
+
};
|
|
333
|
+
readonly formatCells: {
|
|
334
|
+
readonly id: "number.formatCells";
|
|
335
|
+
readonly label: "设置单元格格式";
|
|
336
|
+
readonly location: {
|
|
337
|
+
readonly area: "ribbon";
|
|
338
|
+
readonly tab: "home";
|
|
339
|
+
readonly group: "number";
|
|
340
|
+
};
|
|
341
|
+
readonly shortcut: {
|
|
342
|
+
readonly label: "Cmd/Ctrl+1";
|
|
343
|
+
readonly aria: "Control+1 Meta+1";
|
|
344
|
+
readonly editor: readonly ["Mod-1"];
|
|
345
|
+
};
|
|
346
|
+
};
|
|
301
347
|
readonly borderTop: {
|
|
302
348
|
readonly id: "font.borderTop";
|
|
303
349
|
readonly label: "上框线";
|
|
@@ -519,6 +565,56 @@ export declare const spreadsheetCommandCatalog: {
|
|
|
519
565
|
readonly group: "cells";
|
|
520
566
|
};
|
|
521
567
|
};
|
|
568
|
+
readonly autoSum: {
|
|
569
|
+
readonly id: "editing.autoSum";
|
|
570
|
+
readonly label: "自动求和";
|
|
571
|
+
readonly location: {
|
|
572
|
+
readonly area: "ribbon";
|
|
573
|
+
readonly tab: "home";
|
|
574
|
+
readonly group: "editing";
|
|
575
|
+
};
|
|
576
|
+
readonly shortcut: {
|
|
577
|
+
readonly label: "Alt+=";
|
|
578
|
+
readonly aria: "Alt+=";
|
|
579
|
+
readonly editor: readonly ["Alt-equal"];
|
|
580
|
+
};
|
|
581
|
+
};
|
|
582
|
+
readonly autoAverage: {
|
|
583
|
+
readonly id: "editing.autoAverage";
|
|
584
|
+
readonly label: "平均值";
|
|
585
|
+
readonly location: {
|
|
586
|
+
readonly area: "ribbon";
|
|
587
|
+
readonly tab: "home";
|
|
588
|
+
readonly group: "editing";
|
|
589
|
+
};
|
|
590
|
+
};
|
|
591
|
+
readonly autoCount: {
|
|
592
|
+
readonly id: "editing.autoCount";
|
|
593
|
+
readonly label: "计数";
|
|
594
|
+
readonly location: {
|
|
595
|
+
readonly area: "ribbon";
|
|
596
|
+
readonly tab: "home";
|
|
597
|
+
readonly group: "editing";
|
|
598
|
+
};
|
|
599
|
+
};
|
|
600
|
+
readonly autoMaximum: {
|
|
601
|
+
readonly id: "editing.autoMaximum";
|
|
602
|
+
readonly label: "最大值";
|
|
603
|
+
readonly location: {
|
|
604
|
+
readonly area: "ribbon";
|
|
605
|
+
readonly tab: "home";
|
|
606
|
+
readonly group: "editing";
|
|
607
|
+
};
|
|
608
|
+
};
|
|
609
|
+
readonly autoMinimum: {
|
|
610
|
+
readonly id: "editing.autoMinimum";
|
|
611
|
+
readonly label: "最小值";
|
|
612
|
+
readonly location: {
|
|
613
|
+
readonly area: "ribbon";
|
|
614
|
+
readonly tab: "home";
|
|
615
|
+
readonly group: "editing";
|
|
616
|
+
};
|
|
617
|
+
};
|
|
522
618
|
readonly fillDown: {
|
|
523
619
|
readonly id: "editing.fillDown";
|
|
524
620
|
readonly label: "向下填充";
|
|
@@ -629,6 +725,29 @@ export declare const spreadsheetCommandCatalog: {
|
|
|
629
725
|
readonly editor: readonly ["Mod-f"];
|
|
630
726
|
};
|
|
631
727
|
};
|
|
728
|
+
readonly findAndSelect: {
|
|
729
|
+
readonly id: "editing.findAndSelect";
|
|
730
|
+
readonly label: "查找和选择";
|
|
731
|
+
readonly location: {
|
|
732
|
+
readonly area: "ribbon";
|
|
733
|
+
readonly tab: "home";
|
|
734
|
+
readonly group: "editing";
|
|
735
|
+
};
|
|
736
|
+
};
|
|
737
|
+
readonly goTo: {
|
|
738
|
+
readonly id: "editing.goTo";
|
|
739
|
+
readonly label: "定位";
|
|
740
|
+
readonly location: {
|
|
741
|
+
readonly area: "ribbon";
|
|
742
|
+
readonly tab: "home";
|
|
743
|
+
readonly group: "editing";
|
|
744
|
+
};
|
|
745
|
+
readonly shortcut: {
|
|
746
|
+
readonly label: "Ctrl+G 或 F5";
|
|
747
|
+
readonly aria: "Control+G F5";
|
|
748
|
+
readonly editor: readonly ["Control-g", "F5"];
|
|
749
|
+
};
|
|
750
|
+
};
|
|
632
751
|
readonly insertChart: {
|
|
633
752
|
readonly id: "insert.chart";
|
|
634
753
|
readonly label: "插入图表";
|
|
@@ -2,14 +2,19 @@ import type { Cell, Selection, Sheet } from '@fortune-sheet/core';
|
|
|
2
2
|
import { type SpreadsheetGridSize } from '../spreadsheet-sparse';
|
|
3
3
|
import type { WorkSpreadsheetContent } from '../work-types';
|
|
4
4
|
import { type OfficeEditorCanCommands, type OfficeEditorExtension } from './office-editor-extension';
|
|
5
|
+
import type { SpreadsheetAutoSumFunction } from './spreadsheet-auto-sum';
|
|
5
6
|
import { type SpreadsheetCellClearMode } from './spreadsheet-cell-clear';
|
|
6
7
|
import type { SpreadsheetCellBorderFormat } from './spreadsheet-cell-border';
|
|
8
|
+
import type { SpreadsheetCellFormatRequest } from './spreadsheet-cell-format';
|
|
9
|
+
import type { SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
7
10
|
import type { SpreadsheetCellStyleChoice } from './spreadsheet-cell-style';
|
|
8
11
|
import type { SpreadsheetCellFillDirection } from './spreadsheet-cell-fill';
|
|
9
12
|
import { type SpreadsheetCellMergeCommand } from './spreadsheet-cell-merge';
|
|
10
13
|
import type { SpreadsheetFormatPainterMode } from './spreadsheet-format-painter';
|
|
11
14
|
import { type SpreadsheetFreezePanePreset } from './spreadsheet-freeze-panes';
|
|
12
15
|
import { type SpreadsheetKeyboardSelection, type SpreadsheetSelectionMove, type SpreadsheetSelectionScope } from './spreadsheet-keyboard-navigation';
|
|
16
|
+
import type { SpreadsheetPasteContent } from './spreadsheet-paste-special';
|
|
17
|
+
import { type SpreadsheetDecimalPlacesDirection } from './spreadsheet-number-format-command';
|
|
13
18
|
import { type SpreadsheetSheetMoveDirection } from './spreadsheet-sheet-model';
|
|
14
19
|
export interface SpreadsheetWorkbookCommandPort {
|
|
15
20
|
autoFillCell: (copyRange: SpreadsheetCommandRange, applyRange: SpreadsheetCommandRange, direction: SpreadsheetCellFillDirection) => void;
|
|
@@ -75,10 +80,14 @@ export interface SpreadsheetHistoryCommandPort {
|
|
|
75
80
|
export interface SpreadsheetClipboardCommandPort {
|
|
76
81
|
canCopySelection: boolean;
|
|
77
82
|
canCutSelection: boolean;
|
|
83
|
+
canOpenPasteSpecial: boolean;
|
|
78
84
|
canPasteSelection: boolean;
|
|
85
|
+
canPasteSpecial: (content: SpreadsheetPasteContent) => boolean;
|
|
79
86
|
copySelection: () => boolean;
|
|
80
87
|
cutSelection: () => boolean;
|
|
88
|
+
openPasteSpecial: () => boolean;
|
|
81
89
|
pasteSelection: () => boolean;
|
|
90
|
+
pasteSpecial: (content: SpreadsheetPasteContent) => boolean;
|
|
82
91
|
}
|
|
83
92
|
export interface SpreadsheetAutoFilterCommandPort {
|
|
84
93
|
active: boolean;
|
|
@@ -95,6 +104,25 @@ export interface SpreadsheetFormatPainterCommandPort {
|
|
|
95
104
|
applySelection: (target: SpreadsheetCommandSelection) => boolean;
|
|
96
105
|
cancel: () => boolean;
|
|
97
106
|
}
|
|
107
|
+
export interface SpreadsheetFormatCellsOpenRequest {
|
|
108
|
+
sheetId: string;
|
|
109
|
+
range: SpreadsheetCellRange;
|
|
110
|
+
activeCell: {
|
|
111
|
+
row: number;
|
|
112
|
+
column: number;
|
|
113
|
+
};
|
|
114
|
+
cells: (Cell | null)[][];
|
|
115
|
+
}
|
|
116
|
+
export interface SpreadsheetFormatCellsCommandPort {
|
|
117
|
+
canOpen: boolean;
|
|
118
|
+
open: (request: SpreadsheetFormatCellsOpenRequest) => boolean;
|
|
119
|
+
}
|
|
120
|
+
export interface SpreadsheetNavigationCommandPort {
|
|
121
|
+
canOpenFind: boolean;
|
|
122
|
+
canOpenGoTo: boolean;
|
|
123
|
+
openFind: () => boolean;
|
|
124
|
+
openGoTo: () => boolean;
|
|
125
|
+
}
|
|
98
126
|
export interface SpreadsheetFormulaBarCommandPort {
|
|
99
127
|
setValue: (value: unknown) => void;
|
|
100
128
|
}
|
|
@@ -105,7 +133,10 @@ export interface SpreadsheetEditorCommands {
|
|
|
105
133
|
activateSheet: (sheetId: string) => boolean;
|
|
106
134
|
activateFormatPainter: (mode: SpreadsheetFormatPainterMode) => boolean;
|
|
107
135
|
addSheet: () => boolean;
|
|
136
|
+
adjustDecimalPlaces: (direction: SpreadsheetDecimalPlacesDirection) => boolean;
|
|
108
137
|
applyCellStyle: (preset: SpreadsheetCellStyleChoice) => boolean;
|
|
138
|
+
applyCellFormat: (request: SpreadsheetCellFormatRequest) => boolean;
|
|
139
|
+
applyAutoSum: (functionName: SpreadsheetAutoSumFunction) => boolean;
|
|
109
140
|
applyFormatPainter: (target: SpreadsheetCommandSelection) => boolean;
|
|
110
141
|
cancelFormatPainter: () => boolean;
|
|
111
142
|
clearSelectedCells: (mode?: SpreadsheetCellClearMode) => boolean;
|
|
@@ -121,8 +152,13 @@ export interface SpreadsheetEditorCommands {
|
|
|
121
152
|
moveSheet: (sheetId: string, direction: SpreadsheetSheetMoveDirection) => boolean;
|
|
122
153
|
moveSelection: (move: SpreadsheetSelectionMove, extend: boolean) => boolean;
|
|
123
154
|
openAutoFilterMenu: () => boolean;
|
|
155
|
+
openFind: () => boolean;
|
|
156
|
+
openFormatCells: () => boolean;
|
|
157
|
+
openGoTo: () => boolean;
|
|
158
|
+
openPasteSpecial: () => boolean;
|
|
124
159
|
pasteCells: (values: readonly (readonly unknown[])[]) => boolean;
|
|
125
160
|
pasteSelection: () => boolean;
|
|
161
|
+
pasteSpecial: (content: SpreadsheetPasteContent) => boolean;
|
|
126
162
|
recalculateFormula: (scope: 'selection' | 'workbook') => boolean;
|
|
127
163
|
renameSheet: (sheetId: string, name: string) => boolean;
|
|
128
164
|
redo: () => boolean;
|
|
@@ -151,7 +187,9 @@ export interface SpreadsheetCommandContext {
|
|
|
151
187
|
fallbackRange: SpreadsheetCommandRange;
|
|
152
188
|
formulaBar: SpreadsheetFormulaBarCommandPort | null;
|
|
153
189
|
formatPainter: SpreadsheetFormatPainterCommandPort;
|
|
190
|
+
formatCells: SpreadsheetFormatCellsCommandPort;
|
|
154
191
|
history: SpreadsheetHistoryCommandPort | null;
|
|
192
|
+
navigation: SpreadsheetNavigationCommandPort;
|
|
155
193
|
onChange: (content: WorkSpreadsheetContent) => void;
|
|
156
194
|
selection: SpreadsheetCommandSelection | null;
|
|
157
195
|
targetSheetGridSize?: SpreadsheetGridSize | null;
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import type { WorkspaceContextMenuItem } from '../../workspace/components/workspace-context-menu';
|
|
2
2
|
import type { WorkSpreadsheetAgentSelection } from '../work-spreadsheet-agent-context';
|
|
3
3
|
import type { SpreadsheetEditorCanCommands, SpreadsheetEditorCommands, SpreadsheetStructureAxis } from './spreadsheet-command-controller';
|
|
4
|
-
type SpreadsheetContextCan = Pick<SpreadsheetEditorCanCommands, 'clearSelectedCells' | '
|
|
5
|
-
type SpreadsheetContextCommands = Pick<SpreadsheetEditorCommands, 'clearSelectedCells' | '
|
|
4
|
+
type SpreadsheetContextCan = Pick<SpreadsheetEditorCanCommands, 'clearSelectedCells' | 'copySelection' | 'cutSelection' | 'openPasteSpecial' | 'pasteSelection'>;
|
|
5
|
+
type SpreadsheetContextCommands = Pick<SpreadsheetEditorCommands, 'clearSelectedCells' | 'copySelection' | 'cutSelection' | 'openPasteSpecial' | 'pasteSelection'>;
|
|
6
6
|
type SpreadsheetStructureCan = Pick<SpreadsheetEditorCanCommands, 'deleteSelectedStructure' | 'insertSelectedStructure' | 'setSelectedStructureHidden' | 'setSelectedStructureSize' | 'sortSelectedCells'>;
|
|
7
7
|
type SpreadsheetStructureCommands = Pick<SpreadsheetEditorCommands, 'deleteSelectedStructure' | 'insertSelectedStructure' | 'setSelectedStructureHidden' | 'setSelectedStructureSize' | 'sortSelectedCells'>;
|
|
8
8
|
type SpreadsheetSortCan = Pick<SpreadsheetEditorCanCommands, 'sortSelectedCells'>;
|
|
9
9
|
type SpreadsheetSortCommands = Pick<SpreadsheetEditorCommands, 'sortSelectedCells'>;
|
|
10
|
-
export
|
|
11
|
-
readText(): Promise<string>;
|
|
12
|
-
writeText(value: string): Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
export declare function spreadsheetCoreContextMenuItems({ can, clipboard, commands, selection, }: {
|
|
10
|
+
export declare function spreadsheetCoreContextMenuItems({ can, commands, selection, }: {
|
|
15
11
|
can: SpreadsheetContextCan;
|
|
16
|
-
clipboard?: SpreadsheetClipboardPort;
|
|
17
12
|
commands: SpreadsheetContextCommands;
|
|
18
13
|
selection: Pick<WorkSpreadsheetAgentSelection, 'clipboard' | 'reference'>;
|
|
19
14
|
}): WorkspaceContextMenuItem[];
|
|
@@ -29,10 +24,5 @@ export declare function spreadsheetSortContextMenuItems({ can, commands, idSuffi
|
|
|
29
24
|
idSuffix?: string;
|
|
30
25
|
separatorBefore?: boolean;
|
|
31
26
|
}): WorkspaceContextMenuItem[];
|
|
32
|
-
export
|
|
33
|
-
export
|
|
34
|
-
export declare function readSpreadsheetClipboardText(readSystem: (() => Promise<string>) | undefined, readLocal: () => string, timeoutMs?: number, canReadSystem?: () => boolean | Promise<boolean>): Promise<string>;
|
|
35
|
-
export declare function writeSpreadsheetClipboardText(value: string, writeSystem: ((value: string) => Promise<void>) | undefined, writeLocal: (value: string) => void, timeoutMs?: number): Promise<void>;
|
|
36
|
-
export declare function copySpreadsheetSelection(clipboard: SpreadsheetClipboardPort, value: string, cut: boolean): Promise<boolean>;
|
|
37
|
-
export declare function pasteSpreadsheetSelection(clipboard: SpreadsheetClipboardPort, paste: SpreadsheetContextCommands['pasteCells']): Promise<void>;
|
|
38
|
-
export {};
|
|
27
|
+
export { browserSpreadsheetClipboard, copySpreadsheetSelection, parseSpreadsheetClipboardText, readSpreadsheetClipboardText, writeSpreadsheetClipboardText, } from './spreadsheet-clipboard';
|
|
28
|
+
export type { SpreadsheetClipboardPort } from './spreadsheet-clipboard';
|
|
@@ -7,7 +7,7 @@ import type { SpreadsheetFormatPainterMode } from './spreadsheet-format-painter'
|
|
|
7
7
|
import type { SpreadsheetWorkbookPanelView } from './spreadsheet-workbook-panel';
|
|
8
8
|
import { type WorkOfficeFileAction } from './work-office-chrome';
|
|
9
9
|
export type { SpreadsheetRibbonTabId } from './spreadsheet-command-catalog';
|
|
10
|
-
export declare function SpreadsheetEditorRibbon({ activeTab, autoFilterActive, can, commands, content, fileActions, findOpen, formatPainterMode, freezePanesActive, freezePanesSelection, gridLinesVisible, panelId,
|
|
10
|
+
export declare function SpreadsheetEditorRibbon({ activeTab, autoFilterActive, can, commands, content, fileActions, findOpen, formatPainterMode, freezePanesActive, freezePanesSelection, gridLinesVisible, panelId, onTabChange, onTogglePanel, panel, toolbarCell, toolbarCellBorders, }: {
|
|
11
11
|
activeTab: SpreadsheetRibbonTabId;
|
|
12
12
|
autoFilterActive?: boolean;
|
|
13
13
|
can: SpreadsheetEditorCanCommands;
|
|
@@ -20,7 +20,6 @@ export declare function SpreadsheetEditorRibbon({ activeTab, autoFilterActive, c
|
|
|
20
20
|
freezePanesSelection?: Selection;
|
|
21
21
|
gridLinesVisible: boolean;
|
|
22
22
|
panelId: string;
|
|
23
|
-
onOpenFind: () => void;
|
|
24
23
|
onTabChange: (tab: SpreadsheetRibbonTabId) => void;
|
|
25
24
|
onTogglePanel: (panel: SpreadsheetWorkbookPanelView, trigger: HTMLButtonElement) => void;
|
|
26
25
|
panel: SpreadsheetWorkbookPanelView | null;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
3
|
+
import { type SpreadsheetCellBorderFormat, type SpreadsheetCellBorderStyle } from './spreadsheet-cell-border';
|
|
4
|
+
import { type SpreadsheetCellFormatPatch, type SpreadsheetHorizontalAlignment, type SpreadsheetVerticalAlignment } from './spreadsheet-cell-format';
|
|
5
|
+
import { type SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
6
|
+
export declare const spreadsheetFormatCellsTabs: readonly [{
|
|
7
|
+
readonly id: "number";
|
|
8
|
+
readonly label: "数字";
|
|
9
|
+
}, {
|
|
10
|
+
readonly id: "alignment";
|
|
11
|
+
readonly label: "对齐";
|
|
12
|
+
}, {
|
|
13
|
+
readonly id: "font";
|
|
14
|
+
readonly label: "字体";
|
|
15
|
+
}, {
|
|
16
|
+
readonly id: "border";
|
|
17
|
+
readonly label: "边框";
|
|
18
|
+
}, {
|
|
19
|
+
readonly id: "fill";
|
|
20
|
+
readonly label: "填充";
|
|
21
|
+
}, {
|
|
22
|
+
readonly id: "protection";
|
|
23
|
+
readonly label: "保护";
|
|
24
|
+
}];
|
|
25
|
+
export type SpreadsheetFormatCellsTabId = (typeof spreadsheetFormatCellsTabs)[number]['id'];
|
|
26
|
+
export interface SpreadsheetFormatCellsField<T> {
|
|
27
|
+
value: T;
|
|
28
|
+
mixed: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface SpreadsheetFormatCellsFields {
|
|
31
|
+
numberFormat: SpreadsheetFormatCellsField<string>;
|
|
32
|
+
horizontalAlignment: SpreadsheetFormatCellsField<SpreadsheetHorizontalAlignment>;
|
|
33
|
+
verticalAlignment: SpreadsheetFormatCellsField<SpreadsheetVerticalAlignment>;
|
|
34
|
+
wrapText: SpreadsheetFormatCellsField<boolean>;
|
|
35
|
+
rotation: SpreadsheetFormatCellsField<number>;
|
|
36
|
+
fontFamily: SpreadsheetFormatCellsField<string>;
|
|
37
|
+
fontSize: SpreadsheetFormatCellsField<number>;
|
|
38
|
+
fontColor: SpreadsheetFormatCellsField<string>;
|
|
39
|
+
bold: SpreadsheetFormatCellsField<boolean>;
|
|
40
|
+
italic: SpreadsheetFormatCellsField<boolean>;
|
|
41
|
+
underline: SpreadsheetFormatCellsField<boolean>;
|
|
42
|
+
strike: SpreadsheetFormatCellsField<boolean>;
|
|
43
|
+
fillColor: SpreadsheetFormatCellsField<string | null>;
|
|
44
|
+
borders: SpreadsheetFormatCellsField<readonly SpreadsheetCellBorderFormat[]>;
|
|
45
|
+
locked: SpreadsheetFormatCellsField<boolean>;
|
|
46
|
+
hidden: SpreadsheetFormatCellsField<boolean>;
|
|
47
|
+
}
|
|
48
|
+
export interface SpreadsheetFormatCellsDialogSource {
|
|
49
|
+
sheetId: string;
|
|
50
|
+
range: SpreadsheetCellRange;
|
|
51
|
+
activeCell: Cell | null;
|
|
52
|
+
fields: SpreadsheetFormatCellsFields;
|
|
53
|
+
}
|
|
54
|
+
export interface SpreadsheetFormatCellsDraft {
|
|
55
|
+
numberFormat: string;
|
|
56
|
+
horizontalAlignment: SpreadsheetHorizontalAlignment;
|
|
57
|
+
verticalAlignment: SpreadsheetVerticalAlignment;
|
|
58
|
+
wrapText: boolean;
|
|
59
|
+
rotation: number;
|
|
60
|
+
fontFamily: string;
|
|
61
|
+
fontSize: number;
|
|
62
|
+
fontColor: string;
|
|
63
|
+
bold: boolean;
|
|
64
|
+
italic: boolean;
|
|
65
|
+
underline: boolean;
|
|
66
|
+
strike: boolean;
|
|
67
|
+
fillColor: string | null;
|
|
68
|
+
borders: SpreadsheetCellBorderFormat[];
|
|
69
|
+
borderColor: string;
|
|
70
|
+
borderStyle: SpreadsheetCellBorderStyle;
|
|
71
|
+
locked: boolean;
|
|
72
|
+
hidden: boolean;
|
|
73
|
+
}
|
|
74
|
+
export type SpreadsheetFormatCellsTouched = Partial<Record<keyof SpreadsheetCellFormatPatch, true>>;
|
|
75
|
+
export interface SpreadsheetFormatCellsDraftErrors {
|
|
76
|
+
numberFormat?: string;
|
|
77
|
+
fontSize?: string;
|
|
78
|
+
rotation?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function createSpreadsheetFormatCellsDialogSource(content: WorkSpreadsheetContent, sheetId: string, rangeInput: SpreadsheetCellRange, cells: readonly (readonly (Cell | null)[])[], requestedActiveCell: {
|
|
81
|
+
row: number;
|
|
82
|
+
column: number;
|
|
83
|
+
}): SpreadsheetFormatCellsDialogSource | null;
|
|
84
|
+
export declare function createSpreadsheetFormatCellsDraft(source: SpreadsheetFormatCellsDialogSource): SpreadsheetFormatCellsDraft;
|
|
85
|
+
export declare function spreadsheetFormatCellsPatch(source: SpreadsheetFormatCellsDialogSource, draft: SpreadsheetFormatCellsDraft, touched: SpreadsheetFormatCellsTouched): SpreadsheetCellFormatPatch;
|
|
86
|
+
export declare function spreadsheetFormatCellsDraftErrors(draft: SpreadsheetFormatCellsDraft): SpreadsheetFormatCellsDraftErrors;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Dispatch, SetStateAction } from 'react';
|
|
2
|
+
import type { SpreadsheetCellFormatPatch } from './spreadsheet-cell-format';
|
|
3
|
+
import type { SpreadsheetFormatCellsDialogSource, SpreadsheetFormatCellsDraft, SpreadsheetFormatCellsDraftErrors, SpreadsheetFormatCellsTabId, SpreadsheetFormatCellsTouched } from './spreadsheet-format-cells-dialog-model';
|
|
4
|
+
interface PanelProps {
|
|
5
|
+
activeTab: SpreadsheetFormatCellsTabId;
|
|
6
|
+
idBase: string;
|
|
7
|
+
source: SpreadsheetFormatCellsDialogSource;
|
|
8
|
+
draft: SpreadsheetFormatCellsDraft;
|
|
9
|
+
errors: SpreadsheetFormatCellsDraftErrors;
|
|
10
|
+
touched: SpreadsheetFormatCellsTouched;
|
|
11
|
+
setDraft: Dispatch<SetStateAction<SpreadsheetFormatCellsDraft>>;
|
|
12
|
+
touch: (field: keyof SpreadsheetCellFormatPatch) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function SpreadsheetFormatCellsPanel(props: PanelProps): import("react").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SpreadsheetCellFormatPatch } from './spreadsheet-cell-format';
|
|
2
|
+
import { type SpreadsheetFormatCellsDialogSource } from './spreadsheet-format-cells-dialog-model';
|
|
3
|
+
export declare function SpreadsheetFormatCellsDialog({ source, restoreFocusTarget, onApply, onClose, }: {
|
|
4
|
+
source: SpreadsheetFormatCellsDialogSource;
|
|
5
|
+
restoreFocusTarget: () => HTMLElement | null;
|
|
6
|
+
onApply: (patch: SpreadsheetCellFormatPatch) => boolean;
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
2
|
+
import type { SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
3
|
+
export type SpreadsheetGoToErrorCode = 'ambiguous-name' | 'empty' | 'hidden-sheet' | 'invalid-reference' | 'multiple-ranges' | 'out-of-bounds' | 'sheet-not-found' | 'unsupported-name';
|
|
4
|
+
export interface SpreadsheetGoToTarget {
|
|
5
|
+
displayReference: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
range: SpreadsheetCellRange;
|
|
8
|
+
selection: SpreadsheetCellRange & {
|
|
9
|
+
row_focus: number;
|
|
10
|
+
column_focus: number;
|
|
11
|
+
};
|
|
12
|
+
sheetId: string;
|
|
13
|
+
source: 'named-range' | 'reference';
|
|
14
|
+
}
|
|
15
|
+
export type SpreadsheetGoToResolution = {
|
|
16
|
+
ok: true;
|
|
17
|
+
target: SpreadsheetGoToTarget;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
code: SpreadsheetGoToErrorCode;
|
|
21
|
+
message: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function resolveSpreadsheetGoToTarget(content: WorkSpreadsheetContent, activeSheetId: string, input: string): SpreadsheetGoToResolution;
|
|
24
|
+
export declare function spreadsheetGoToValidationMessage(content: WorkSpreadsheetContent, activeSheetId: string, input: string): string | null;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SpreadsheetCommandContext, SpreadsheetEditorCommands } from './spreadsheet-command-controller';
|
|
2
|
+
import { type OfficeEditorExtension } from './office-editor-extension';
|
|
3
|
+
export declare function createSpreadsheetNavigationExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
3
|
+
import { type SpreadsheetCellRange, type SpreadsheetCellRangeInput } from './spreadsheet-cell-range';
|
|
4
|
+
import type { SpreadsheetCommandContext, SpreadsheetEditorCommands } from './spreadsheet-command-controller';
|
|
5
|
+
import { type OfficeEditorExtension } from './office-editor-extension';
|
|
6
|
+
export type SpreadsheetDecimalPlacesDirection = 'decrease' | 'increase';
|
|
7
|
+
export declare const MAX_SPREADSHEET_DECIMAL_FORMAT_CELLS = 10000;
|
|
8
|
+
export interface SpreadsheetDecimalFormatApiCall {
|
|
9
|
+
name: 'setCellFormatByRange';
|
|
10
|
+
args: [
|
|
11
|
+
'ct',
|
|
12
|
+
NonNullable<Cell['ct']> & {
|
|
13
|
+
fa: string;
|
|
14
|
+
t: string;
|
|
15
|
+
},
|
|
16
|
+
SpreadsheetCellRange,
|
|
17
|
+
{
|
|
18
|
+
id: string;
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
export declare function createSpreadsheetNumberFormatExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
23
|
+
export declare function canAdjustSpreadsheetDecimalPlaces(content: WorkSpreadsheetContent, sheetId: string, range: SpreadsheetCellRangeInput, direction: SpreadsheetDecimalPlacesDirection): boolean;
|
|
24
|
+
export declare function spreadsheetDecimalFormatApiCalls(cells: readonly (readonly (Cell | null)[])[], range: SpreadsheetCellRangeInput, sheetId: string, direction: SpreadsheetDecimalPlacesDirection): SpreadsheetDecimalFormatApiCall[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { SpreadsheetClipboardCell, SpreadsheetPasteContent, SpreadsheetPasteOperation } from './spreadsheet-paste-special-types';
|
|
3
|
+
export declare const spreadsheetPasteCellInvalid: unique symbol;
|
|
4
|
+
export type SpreadsheetPasteCellResult = Cell | null | typeof spreadsheetPasteCellInvalid;
|
|
5
|
+
export declare function pasteSpreadsheetSpecialCell({ source, destination, content, operation, rowOffset, columnOffset, }: {
|
|
6
|
+
source: SpreadsheetClipboardCell;
|
|
7
|
+
destination: Cell | null | undefined;
|
|
8
|
+
content: SpreadsheetPasteContent;
|
|
9
|
+
operation: SpreadsheetPasteOperation;
|
|
10
|
+
rowOffset: number;
|
|
11
|
+
columnOffset: number;
|
|
12
|
+
}): SpreadsheetPasteCellResult;
|
|
13
|
+
export declare function spreadsheetClipboardCellIsBlank(source: SpreadsheetClipboardCell, content: SpreadsheetPasteContent): boolean;
|
|
14
|
+
export declare function spreadsheetPasteContentSupportsOperation(content: SpreadsheetPasteContent): boolean;
|
|
15
|
+
export declare function numericSpreadsheetCellValue(cell: Cell | null | undefined): number | null;
|
|
16
|
+
export declare function spreadsheetCellHasContent(cell: Cell | null | undefined): boolean;
|
|
17
|
+
export declare function translateSpreadsheetFormula(formula: string, rowOffset: number, columnOffset: number): string | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type SpreadsheetPasteSpecialOptions } from './spreadsheet-paste-special';
|
|
2
|
+
import type { SpreadsheetPasteSpecialDialogSource } from './use-spreadsheet-clipboard';
|
|
3
|
+
export declare function SpreadsheetPasteSpecialDialog({ source, restoreFocusTarget, onApply, onClose, onValidate, }: {
|
|
4
|
+
source: SpreadsheetPasteSpecialDialogSource;
|
|
5
|
+
restoreFocusTarget: () => HTMLElement | null;
|
|
6
|
+
onApply: (options: SpreadsheetPasteSpecialOptions) => boolean;
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
onValidate: (options: SpreadsheetPasteSpecialOptions) => string | null;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WorkSpreadsheetSheet } from '../work-types';
|
|
2
|
+
import type { SpreadsheetPasteContent } from './spreadsheet-paste-special-types';
|
|
3
|
+
export declare function pasteContentCopiesFormulas(content: SpreadsheetPasteContent): boolean;
|
|
4
|
+
export declare function pasteContentCopiesBorders(content: SpreadsheetPasteContent): boolean;
|
|
5
|
+
export declare function pasteContentCopiesMerges(content: SpreadsheetPasteContent): boolean;
|
|
6
|
+
export declare function pasteContentCopiesValidation(content: SpreadsheetPasteContent): boolean;
|
|
7
|
+
export declare function pasteContentCopiesHyperlinks(content: SpreadsheetPasteContent): boolean;
|
|
8
|
+
export declare function pasteContentCopiesProtection(content: SpreadsheetPasteContent): boolean;
|
|
9
|
+
export declare function columnsContainReadOnlyState(sheet: WorkSpreadsheetSheet, range: {
|
|
10
|
+
column: [number, number];
|
|
11
|
+
}): boolean;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
2
|
+
import { type SpreadsheetClipboardSnapshot, type SpreadsheetPastePlan, type SpreadsheetPasteSource } from './spreadsheet-paste-special-types';
|
|
3
|
+
export declare function planSpreadsheetPaste(snapshot: SpreadsheetClipboardSnapshot, selection: SpreadsheetCellRange, transpose: boolean): SpreadsheetPastePlan | null;
|
|
4
|
+
export declare function spreadsheetPasteSourceAt(snapshot: SpreadsheetClipboardSnapshot, plan: SpreadsheetPastePlan, row: number, column: number, transpose: boolean): SpreadsheetPasteSource;
|