@a3s-lab/office 0.13.1 → 0.15.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 +40 -5
- package/dist/0~7048.js +14 -4
- package/dist/0~spreadsheet-editor.js +14748 -8939
- package/dist/0~work-office-diagnostics.js +1 -1
- package/dist/{4476.js → 2180.js} +34 -1
- package/dist/4104.js +41 -19
- package/dist/core.js +1 -1
- package/dist/index.js +1 -1
- 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 +142 -0
- package/dist/internal/features/work/editors/spreadsheet-command-controller.d.ts +56 -0
- package/dist/internal/features/work/editors/spreadsheet-context-menu.d.ts +5 -15
- package/dist/internal/features/work/editors/spreadsheet-data-validation-command.d.ts +3 -0
- package/dist/internal/features/work/editors/spreadsheet-data-validation-dialog.d.ts +9 -0
- package/dist/internal/features/work/editors/spreadsheet-data-validation.d.ts +50 -0
- package/dist/internal/features/work/editors/spreadsheet-editor-ribbon.d.ts +1 -2
- package/dist/internal/features/work/editors/spreadsheet-editor-support.d.ts +1 -0
- 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-hyperlink-command.d.ts +3 -0
- package/dist/internal/features/work/editors/spreadsheet-hyperlink-dialog.d.ts +9 -0
- package/dist/internal/features/work/editors/spreadsheet-hyperlink.d.ts +44 -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/internal/features/work/editors/use-spreadsheet-data-validation.d.ts +23 -0
- package/dist/internal/features/work/editors/use-spreadsheet-hyperlink.d.ts +24 -0
- package/dist/internal/features/work/work-spreadsheet-data-validation.d.ts +2 -0
- package/dist/office-kernel.wasm +0 -0
- package/dist/styles.css +845 -1
- package/docs/latest/en/browser-editor-architecture.md +12 -1
- package/package.json +15 -3
|
@@ -2,14 +2,21 @@ 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';
|
|
12
|
+
import type { SpreadsheetDataValidationRequest, SpreadsheetDataValidationTarget } from './spreadsheet-data-validation';
|
|
9
13
|
import { type SpreadsheetCellMergeCommand } from './spreadsheet-cell-merge';
|
|
10
14
|
import type { SpreadsheetFormatPainterMode } from './spreadsheet-format-painter';
|
|
15
|
+
import type { SpreadsheetHyperlinkCell, SpreadsheetHyperlinkRequest } from './spreadsheet-hyperlink';
|
|
11
16
|
import { type SpreadsheetFreezePanePreset } from './spreadsheet-freeze-panes';
|
|
12
17
|
import { type SpreadsheetKeyboardSelection, type SpreadsheetSelectionMove, type SpreadsheetSelectionScope } from './spreadsheet-keyboard-navigation';
|
|
18
|
+
import type { SpreadsheetPasteContent } from './spreadsheet-paste-special';
|
|
19
|
+
import { type SpreadsheetDecimalPlacesDirection } from './spreadsheet-number-format-command';
|
|
13
20
|
import { type SpreadsheetSheetMoveDirection } from './spreadsheet-sheet-model';
|
|
14
21
|
export interface SpreadsheetWorkbookCommandPort {
|
|
15
22
|
autoFillCell: (copyRange: SpreadsheetCommandRange, applyRange: SpreadsheetCommandRange, direction: SpreadsheetCellFillDirection) => void;
|
|
@@ -75,10 +82,14 @@ export interface SpreadsheetHistoryCommandPort {
|
|
|
75
82
|
export interface SpreadsheetClipboardCommandPort {
|
|
76
83
|
canCopySelection: boolean;
|
|
77
84
|
canCutSelection: boolean;
|
|
85
|
+
canOpenPasteSpecial: boolean;
|
|
78
86
|
canPasteSelection: boolean;
|
|
87
|
+
canPasteSpecial: (content: SpreadsheetPasteContent) => boolean;
|
|
79
88
|
copySelection: () => boolean;
|
|
80
89
|
cutSelection: () => boolean;
|
|
90
|
+
openPasteSpecial: () => boolean;
|
|
81
91
|
pasteSelection: () => boolean;
|
|
92
|
+
pasteSpecial: (content: SpreadsheetPasteContent) => boolean;
|
|
82
93
|
}
|
|
83
94
|
export interface SpreadsheetAutoFilterCommandPort {
|
|
84
95
|
active: boolean;
|
|
@@ -95,6 +106,33 @@ export interface SpreadsheetFormatPainterCommandPort {
|
|
|
95
106
|
applySelection: (target: SpreadsheetCommandSelection) => boolean;
|
|
96
107
|
cancel: () => boolean;
|
|
97
108
|
}
|
|
109
|
+
export interface SpreadsheetFormatCellsOpenRequest {
|
|
110
|
+
sheetId: string;
|
|
111
|
+
range: SpreadsheetCellRange;
|
|
112
|
+
activeCell: {
|
|
113
|
+
row: number;
|
|
114
|
+
column: number;
|
|
115
|
+
};
|
|
116
|
+
cells: (Cell | null)[][];
|
|
117
|
+
}
|
|
118
|
+
export interface SpreadsheetFormatCellsCommandPort {
|
|
119
|
+
canOpen: boolean;
|
|
120
|
+
open: (request: SpreadsheetFormatCellsOpenRequest) => boolean;
|
|
121
|
+
}
|
|
122
|
+
export interface SpreadsheetDataValidationCommandPort {
|
|
123
|
+
canOpen: boolean;
|
|
124
|
+
open: (request: SpreadsheetDataValidationTarget) => boolean;
|
|
125
|
+
}
|
|
126
|
+
export interface SpreadsheetHyperlinkCommandPort {
|
|
127
|
+
canOpen: boolean;
|
|
128
|
+
open: (request: SpreadsheetHyperlinkCell) => boolean;
|
|
129
|
+
}
|
|
130
|
+
export interface SpreadsheetNavigationCommandPort {
|
|
131
|
+
canOpenFind: boolean;
|
|
132
|
+
canOpenGoTo: boolean;
|
|
133
|
+
openFind: () => boolean;
|
|
134
|
+
openGoTo: () => boolean;
|
|
135
|
+
}
|
|
98
136
|
export interface SpreadsheetFormulaBarCommandPort {
|
|
99
137
|
setValue: (value: unknown) => void;
|
|
100
138
|
}
|
|
@@ -105,8 +143,13 @@ export interface SpreadsheetEditorCommands {
|
|
|
105
143
|
activateSheet: (sheetId: string) => boolean;
|
|
106
144
|
activateFormatPainter: (mode: SpreadsheetFormatPainterMode) => boolean;
|
|
107
145
|
addSheet: () => boolean;
|
|
146
|
+
adjustDecimalPlaces: (direction: SpreadsheetDecimalPlacesDirection) => boolean;
|
|
108
147
|
applyCellStyle: (preset: SpreadsheetCellStyleChoice) => boolean;
|
|
148
|
+
applyCellFormat: (request: SpreadsheetCellFormatRequest) => boolean;
|
|
149
|
+
applyDataValidation: (request: SpreadsheetDataValidationRequest) => boolean;
|
|
150
|
+
applyAutoSum: (functionName: SpreadsheetAutoSumFunction) => boolean;
|
|
109
151
|
applyFormatPainter: (target: SpreadsheetCommandSelection) => boolean;
|
|
152
|
+
applyHyperlink: (request: SpreadsheetHyperlinkRequest) => boolean;
|
|
110
153
|
cancelFormatPainter: () => boolean;
|
|
111
154
|
clearSelectedCells: (mode?: SpreadsheetCellClearMode) => boolean;
|
|
112
155
|
copySelection: () => boolean;
|
|
@@ -121,9 +164,18 @@ export interface SpreadsheetEditorCommands {
|
|
|
121
164
|
moveSheet: (sheetId: string, direction: SpreadsheetSheetMoveDirection) => boolean;
|
|
122
165
|
moveSelection: (move: SpreadsheetSelectionMove, extend: boolean) => boolean;
|
|
123
166
|
openAutoFilterMenu: () => boolean;
|
|
167
|
+
openDataValidation: () => boolean;
|
|
168
|
+
openFind: () => boolean;
|
|
169
|
+
openFormatCells: () => boolean;
|
|
170
|
+
openGoTo: () => boolean;
|
|
171
|
+
openHyperlink: () => boolean;
|
|
172
|
+
openPasteSpecial: () => boolean;
|
|
124
173
|
pasteCells: (values: readonly (readonly unknown[])[]) => boolean;
|
|
125
174
|
pasteSelection: () => boolean;
|
|
175
|
+
pasteSpecial: (content: SpreadsheetPasteContent) => boolean;
|
|
126
176
|
recalculateFormula: (scope: 'selection' | 'workbook') => boolean;
|
|
177
|
+
removeHyperlink: (target: SpreadsheetHyperlinkCell) => boolean;
|
|
178
|
+
removeDataValidation: (target: SpreadsheetDataValidationTarget) => boolean;
|
|
127
179
|
renameSheet: (sheetId: string, name: string) => boolean;
|
|
128
180
|
redo: () => boolean;
|
|
129
181
|
setCellFormat: (attribute: keyof Cell, value: unknown) => boolean;
|
|
@@ -147,11 +199,15 @@ export interface SpreadsheetCommandContext {
|
|
|
147
199
|
calculation: SpreadsheetCalculationCommandPort | null;
|
|
148
200
|
clipboard: SpreadsheetClipboardCommandPort;
|
|
149
201
|
content: WorkSpreadsheetContent;
|
|
202
|
+
dataValidation: SpreadsheetDataValidationCommandPort;
|
|
150
203
|
editable: boolean;
|
|
151
204
|
fallbackRange: SpreadsheetCommandRange;
|
|
152
205
|
formulaBar: SpreadsheetFormulaBarCommandPort | null;
|
|
153
206
|
formatPainter: SpreadsheetFormatPainterCommandPort;
|
|
207
|
+
formatCells: SpreadsheetFormatCellsCommandPort;
|
|
208
|
+
hyperlink: SpreadsheetHyperlinkCommandPort;
|
|
154
209
|
history: SpreadsheetHistoryCommandPort | null;
|
|
210
|
+
navigation: SpreadsheetNavigationCommandPort;
|
|
155
211
|
onChange: (content: WorkSpreadsheetContent) => void;
|
|
156
212
|
selection: SpreadsheetCommandSelection | null;
|
|
157
213
|
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';
|
|
@@ -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 createSpreadsheetDataValidationExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type SpreadsheetDataValidationDialogSource, type SpreadsheetDataValidationDialogValue } from './spreadsheet-data-validation';
|
|
2
|
+
export declare function SpreadsheetDataValidationDialog({ source, restoreFocusTarget, onApply, onClose, onRemove, onValidate, }: {
|
|
3
|
+
source: SpreadsheetDataValidationDialogSource;
|
|
4
|
+
restoreFocusTarget: () => HTMLElement | null;
|
|
5
|
+
onApply: (value: SpreadsheetDataValidationDialogValue) => boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onRemove: () => boolean;
|
|
8
|
+
onValidate: (value: SpreadsheetDataValidationDialogValue) => string | null;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetDataValidationItem, WorkSpreadsheetSheet } from '../work-types';
|
|
2
|
+
import { type SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
3
|
+
export declare const MAX_SPREADSHEET_DATA_VALIDATION_CELLS = 10000;
|
|
4
|
+
export type SpreadsheetDataValidationType = 'date' | 'dropdown' | 'number' | 'number_integer' | 'text_length';
|
|
5
|
+
export type SpreadsheetDataValidationOperator = 'between' | 'equal' | 'greaterOrEqualTo' | 'lessThan' | 'lessThanOrEqualTo' | 'moreThanThe' | 'noEarlierThan' | 'noLaterThan' | 'notBetween' | 'notEqualTo' | 'earlierThan' | 'laterThan';
|
|
6
|
+
export interface SpreadsheetDataValidationDialogValue {
|
|
7
|
+
hintShow: boolean;
|
|
8
|
+
hintValue: string;
|
|
9
|
+
prohibitInput: boolean;
|
|
10
|
+
type: SpreadsheetDataValidationType;
|
|
11
|
+
type2: SpreadsheetDataValidationOperator | '';
|
|
12
|
+
value1: string;
|
|
13
|
+
value2: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SpreadsheetDataValidationTarget {
|
|
16
|
+
activeCell: {
|
|
17
|
+
row: number;
|
|
18
|
+
column: number;
|
|
19
|
+
};
|
|
20
|
+
ranges: readonly SpreadsheetCellRange[];
|
|
21
|
+
sheetId: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SpreadsheetDataValidationRequest extends SpreadsheetDataValidationTarget {
|
|
24
|
+
value: SpreadsheetDataValidationDialogValue;
|
|
25
|
+
}
|
|
26
|
+
export interface SpreadsheetDataValidationDialogSource extends SpreadsheetDataValidationTarget {
|
|
27
|
+
hasValidation: boolean;
|
|
28
|
+
mixed: boolean;
|
|
29
|
+
rangeReference: string;
|
|
30
|
+
sheetName: string;
|
|
31
|
+
value: SpreadsheetDataValidationDialogValue;
|
|
32
|
+
}
|
|
33
|
+
export type SpreadsheetDataValidationResult = {
|
|
34
|
+
item: WorkSpreadsheetDataValidationItem;
|
|
35
|
+
ok: true;
|
|
36
|
+
ranges: SpreadsheetCellRange[];
|
|
37
|
+
sheet: WorkSpreadsheetSheet;
|
|
38
|
+
} | {
|
|
39
|
+
code: SpreadsheetDataValidationErrorCode;
|
|
40
|
+
message: string;
|
|
41
|
+
ok: false;
|
|
42
|
+
};
|
|
43
|
+
export type SpreadsheetDataValidationErrorCode = 'invalid-date' | 'invalid-list-source' | 'invalid-number' | 'invalid-operator' | 'invalid-range' | 'invalid-text-length' | 'missing-value' | 'multiple-list-columns' | 'out-of-bounds' | 'protected-range' | 'range-too-large' | 'sheet-not-found' | 'value-order';
|
|
44
|
+
export declare function spreadsheetDataValidationOperators(type: SpreadsheetDataValidationType): readonly SpreadsheetDataValidationOperator[];
|
|
45
|
+
export declare function createSpreadsheetDataValidationDialogSource(content: WorkSpreadsheetContent, target: SpreadsheetDataValidationTarget): SpreadsheetDataValidationDialogSource | null;
|
|
46
|
+
export declare function validateSpreadsheetDataValidationRequest(content: WorkSpreadsheetContent, request: SpreadsheetDataValidationRequest): SpreadsheetDataValidationResult;
|
|
47
|
+
export declare function applySpreadsheetDataValidation(content: WorkSpreadsheetContent, request: SpreadsheetDataValidationRequest): WorkSpreadsheetContent | null;
|
|
48
|
+
export declare function removeSpreadsheetDataValidation(content: WorkSpreadsheetContent, target: SpreadsheetDataValidationTarget): WorkSpreadsheetContent | null;
|
|
49
|
+
export declare function canRemoveSpreadsheetDataValidation(content: WorkSpreadsheetContent, target: SpreadsheetDataValidationTarget): boolean;
|
|
50
|
+
export declare function spreadsheetDataValidationFailureMessage(content: WorkSpreadsheetContent, request: SpreadsheetDataValidationRequest): string | null;
|
|
@@ -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;
|
|
@@ -32,6 +32,7 @@ export declare function sameSpreadsheetWorkbookState(changed: WorkSpreadsheetCon
|
|
|
32
32
|
export declare function sameSpreadsheetWorkbookStateAfterOperations(changed: WorkSpreadsheetContent['sheets'], rendered: WorkSpreadsheetContent['sheets'], operations: readonly Op[]): boolean | null;
|
|
33
33
|
export declare function sameSpreadsheetHistoryContent(left: WorkSpreadsheetContent, right: WorkSpreadsheetContent): boolean;
|
|
34
34
|
export declare function spreadsheetContentWithSelection(content: WorkSpreadsheetContent, sheetId: string, selection: Selection | null | undefined): WorkSpreadsheetContent;
|
|
35
|
+
export declare function spreadsheetContentWithSelections(content: WorkSpreadsheetContent, sheetId: string, selections: readonly Selection[]): WorkSpreadsheetContent;
|
|
35
36
|
export declare function isSpreadsheetNativeTextUndoTarget(target: EventTarget | null): boolean;
|
|
36
37
|
export declare function isSpreadsheetCellEditingTarget(target: EventTarget | null): boolean;
|
|
37
38
|
export declare function spreadsheetFormulaBarSelectAllTarget(event: KeyboardEvent): HTMLElement | 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 createSpreadsheetHyperlinkExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SpreadsheetHyperlinkDialogSource, SpreadsheetHyperlinkDialogValue } from './spreadsheet-hyperlink';
|
|
2
|
+
export declare function SpreadsheetHyperlinkDialog({ source, restoreFocusTarget, onApply, onClose, onRemove, onValidate, }: {
|
|
3
|
+
source: SpreadsheetHyperlinkDialogSource;
|
|
4
|
+
restoreFocusTarget: () => HTMLElement | null;
|
|
5
|
+
onApply: (value: SpreadsheetHyperlinkDialogValue) => boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onRemove: () => boolean;
|
|
8
|
+
onValidate: (value: SpreadsheetHyperlinkDialogValue) => string | null;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
2
|
+
export type SpreadsheetHyperlinkType = 'webpage' | 'cellrange' | 'sheet';
|
|
3
|
+
export interface SpreadsheetHyperlinkTarget {
|
|
4
|
+
linkType: SpreadsheetHyperlinkType;
|
|
5
|
+
linkAddress: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SpreadsheetHyperlinkCell {
|
|
8
|
+
sheetId: string;
|
|
9
|
+
row: number;
|
|
10
|
+
column: number;
|
|
11
|
+
}
|
|
12
|
+
export interface SpreadsheetHyperlinkRequest extends SpreadsheetHyperlinkCell {
|
|
13
|
+
linkType: SpreadsheetHyperlinkType;
|
|
14
|
+
linkAddress: string;
|
|
15
|
+
displayText?: string;
|
|
16
|
+
}
|
|
17
|
+
export type SpreadsheetHyperlinkDialogValue = Pick<SpreadsheetHyperlinkRequest, 'linkType' | 'linkAddress' | 'displayText'>;
|
|
18
|
+
export type SpreadsheetHyperlinkErrorCode = 'empty-address' | 'formula-display-text' | 'invalid-cell-range' | 'invalid-display-text' | 'invalid-web-address' | 'pivot-cell' | 'protected-cell' | 'source-out-of-bounds' | 'source-sheet-not-found' | 'target-out-of-bounds' | 'target-sheet-hidden' | 'target-sheet-not-found' | 'unsupported-link-type';
|
|
19
|
+
export type SpreadsheetHyperlinkValidation = {
|
|
20
|
+
ok: true;
|
|
21
|
+
target: SpreadsheetHyperlinkTarget;
|
|
22
|
+
displayText?: string;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
code: SpreadsheetHyperlinkErrorCode;
|
|
26
|
+
message: string;
|
|
27
|
+
};
|
|
28
|
+
export interface SpreadsheetHyperlinkDialogSource extends SpreadsheetHyperlinkCell {
|
|
29
|
+
sheetName: string;
|
|
30
|
+
cellReference: string;
|
|
31
|
+
displayText: string;
|
|
32
|
+
displayTextEditable: boolean;
|
|
33
|
+
hasHyperlink: boolean;
|
|
34
|
+
link: SpreadsheetHyperlinkTarget | null;
|
|
35
|
+
sheetOptions: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
export declare function validateSpreadsheetHyperlinkRequest(content: WorkSpreadsheetContent, request: SpreadsheetHyperlinkRequest): SpreadsheetHyperlinkValidation;
|
|
41
|
+
export declare function applySpreadsheetHyperlink(content: WorkSpreadsheetContent, request: SpreadsheetHyperlinkRequest): WorkSpreadsheetContent | null;
|
|
42
|
+
export declare function removeSpreadsheetHyperlink(content: WorkSpreadsheetContent, target: SpreadsheetHyperlinkCell): WorkSpreadsheetContent | null;
|
|
43
|
+
export declare function canRemoveSpreadsheetHyperlink(content: WorkSpreadsheetContent, target: SpreadsheetHyperlinkCell): boolean;
|
|
44
|
+
export declare function createSpreadsheetHyperlinkDialogSource(content: WorkSpreadsheetContent, target: SpreadsheetHyperlinkCell): SpreadsheetHyperlinkDialogSource | 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;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetSheet } from '../work-types';
|
|
2
|
+
import { type SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
3
|
+
import type { SpreadsheetCellWriter, SpreadsheetClipboardSnapshot, SpreadsheetPastePlan, SpreadsheetPasteSpecialOptions } from './spreadsheet-paste-special-types';
|
|
4
|
+
type NativeMerge = {
|
|
5
|
+
r: number;
|
|
6
|
+
c: number;
|
|
7
|
+
rs: number;
|
|
8
|
+
cs: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function applySpreadsheetPasteSheetMetadata(sheet: WorkSpreadsheetSheet, snapshot: SpreadsheetClipboardSnapshot, plan: SpreadsheetPastePlan, processed: Array<{
|
|
11
|
+
row: number;
|
|
12
|
+
column: number;
|
|
13
|
+
}>, options: SpreadsheetPasteSpecialOptions): WorkSpreadsheetSheet;
|
|
14
|
+
export declare function applySpreadsheetPasteBorders(content: WorkSpreadsheetContent, sheetId: string, snapshot: SpreadsheetClipboardSnapshot, plan: SpreadsheetPastePlan, processed: Array<{
|
|
15
|
+
row: number;
|
|
16
|
+
column: number;
|
|
17
|
+
}>, transpose: boolean): WorkSpreadsheetContent;
|
|
18
|
+
export declare function applySpreadsheetPasteMerges(writer: SpreadsheetCellWriter, snapshot: SpreadsheetClipboardSnapshot, plan: SpreadsheetPastePlan, transpose: boolean): Record<string, NativeMerge>;
|
|
19
|
+
export declare function withSpreadsheetPasteMerges(sheet: WorkSpreadsheetSheet, merges: Record<string, NativeMerge>): WorkSpreadsheetSheet;
|
|
20
|
+
export declare function pasteSpreadsheetColumnWidths(sheet: WorkSpreadsheetSheet, snapshot: SpreadsheetClipboardSnapshot, plan: SpreadsheetPastePlan): WorkSpreadsheetSheet;
|
|
21
|
+
export declare function createSpreadsheetCellWriter(source: WorkSpreadsheetSheet): SpreadsheetCellWriter;
|
|
22
|
+
export declare function withSpreadsheetPasteSelection(sheet: WorkSpreadsheetSheet, range: SpreadsheetCellRange): WorkSpreadsheetSheet;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetSheet } from '../work-types';
|
|
3
|
+
import { type SpreadsheetCellRangeInput } from './spreadsheet-cell-range';
|
|
4
|
+
import { type SpreadsheetClipboardSnapshot, type SpreadsheetPasteContent } from './spreadsheet-paste-special-types';
|
|
5
|
+
export declare function captureSpreadsheetClipboardSnapshot(content: WorkSpreadsheetContent, sheetId: string, selection: SpreadsheetCellRangeInput, plainText: string): SpreadsheetClipboardSnapshot | null;
|
|
6
|
+
export declare function createSpreadsheetTextClipboardSnapshot(plainText: string): SpreadsheetClipboardSnapshot | null;
|
|
7
|
+
export declare function spreadsheetPasteSpecialModeAvailable(snapshot: SpreadsheetClipboardSnapshot, content: SpreadsheetPasteContent): boolean;
|
|
8
|
+
export declare function validSpreadsheetClipboardSnapshot(snapshot: SpreadsheetClipboardSnapshot): boolean;
|
|
9
|
+
export declare function createSpreadsheetCellReader(sheet: WorkSpreadsheetSheet): (row: number, column: number) => Cell | null | undefined;
|
|
10
|
+
export declare function normalizeSpreadsheetClipboardText(value: string): string;
|