@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
|
@@ -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;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { SpreadsheetResolvedCellBorders } from './spreadsheet-cell-border';
|
|
3
|
+
import type { SpreadsheetCellRange, SpreadsheetCellRangeInput } from './spreadsheet-cell-range';
|
|
4
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetDataValidationItem, WorkSpreadsheetSheet } from '../work-types';
|
|
5
|
+
export declare const MAX_SPREADSHEET_PASTE_SPECIAL_CELLS = 50000;
|
|
6
|
+
export declare const MAX_SPREADSHEET_ROWS = 1048576;
|
|
7
|
+
export declare const MAX_SPREADSHEET_COLUMNS = 16384;
|
|
8
|
+
export declare const spreadsheetPasteContentOptions: readonly [{
|
|
9
|
+
readonly value: "all";
|
|
10
|
+
readonly label: "全部";
|
|
11
|
+
readonly richOnly: false;
|
|
12
|
+
}, {
|
|
13
|
+
readonly value: "formulas";
|
|
14
|
+
readonly label: "公式";
|
|
15
|
+
readonly richOnly: false;
|
|
16
|
+
}, {
|
|
17
|
+
readonly value: "values";
|
|
18
|
+
readonly label: "值";
|
|
19
|
+
readonly richOnly: false;
|
|
20
|
+
}, {
|
|
21
|
+
readonly value: "formats";
|
|
22
|
+
readonly label: "格式";
|
|
23
|
+
readonly richOnly: true;
|
|
24
|
+
}, {
|
|
25
|
+
readonly value: "comments";
|
|
26
|
+
readonly label: "批注";
|
|
27
|
+
readonly richOnly: true;
|
|
28
|
+
}, {
|
|
29
|
+
readonly value: "validation";
|
|
30
|
+
readonly label: "数据验证";
|
|
31
|
+
readonly richOnly: true;
|
|
32
|
+
}, {
|
|
33
|
+
readonly value: "all-except-borders";
|
|
34
|
+
readonly label: "边框除外的全部";
|
|
35
|
+
readonly richOnly: true;
|
|
36
|
+
}, {
|
|
37
|
+
readonly value: "formulas-and-number-formats";
|
|
38
|
+
readonly label: "公式和数字格式";
|
|
39
|
+
readonly richOnly: true;
|
|
40
|
+
}, {
|
|
41
|
+
readonly value: "values-and-number-formats";
|
|
42
|
+
readonly label: "值和数字格式";
|
|
43
|
+
readonly richOnly: true;
|
|
44
|
+
}, {
|
|
45
|
+
readonly value: "column-widths";
|
|
46
|
+
readonly label: "列宽";
|
|
47
|
+
readonly richOnly: true;
|
|
48
|
+
}];
|
|
49
|
+
export type SpreadsheetPasteContent = (typeof spreadsheetPasteContentOptions)[number]['value'];
|
|
50
|
+
export declare const spreadsheetPasteOperationOptions: readonly [{
|
|
51
|
+
readonly value: "none";
|
|
52
|
+
readonly label: "无";
|
|
53
|
+
}, {
|
|
54
|
+
readonly value: "add";
|
|
55
|
+
readonly label: "加";
|
|
56
|
+
}, {
|
|
57
|
+
readonly value: "subtract";
|
|
58
|
+
readonly label: "减";
|
|
59
|
+
}, {
|
|
60
|
+
readonly value: "multiply";
|
|
61
|
+
readonly label: "乘";
|
|
62
|
+
}, {
|
|
63
|
+
readonly value: "divide";
|
|
64
|
+
readonly label: "除";
|
|
65
|
+
}];
|
|
66
|
+
export type SpreadsheetPasteOperation = (typeof spreadsheetPasteOperationOptions)[number]['value'];
|
|
67
|
+
export interface SpreadsheetPasteSpecialOptions {
|
|
68
|
+
content: SpreadsheetPasteContent;
|
|
69
|
+
operation: SpreadsheetPasteOperation;
|
|
70
|
+
skipBlanks: boolean;
|
|
71
|
+
transpose: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface SpreadsheetClipboardCell {
|
|
74
|
+
cell: Cell | null;
|
|
75
|
+
borders: SpreadsheetResolvedCellBorders;
|
|
76
|
+
validation?: WorkSpreadsheetDataValidationItem;
|
|
77
|
+
protection?: {
|
|
78
|
+
locked: boolean;
|
|
79
|
+
hidden: boolean;
|
|
80
|
+
};
|
|
81
|
+
hyperlink?: NonNullable<WorkSpreadsheetSheet['hyperlink']>[string];
|
|
82
|
+
}
|
|
83
|
+
export interface SpreadsheetClipboardMerge {
|
|
84
|
+
row: number;
|
|
85
|
+
column: number;
|
|
86
|
+
rowSpan: number;
|
|
87
|
+
columnSpan: number;
|
|
88
|
+
}
|
|
89
|
+
export interface SpreadsheetClipboardSnapshot {
|
|
90
|
+
version: 1;
|
|
91
|
+
kind: 'rich' | 'text';
|
|
92
|
+
plainText: string;
|
|
93
|
+
sourceSheetId?: string;
|
|
94
|
+
sourceRange: SpreadsheetCellRange;
|
|
95
|
+
rowCount: number;
|
|
96
|
+
columnCount: number;
|
|
97
|
+
cells: SpreadsheetClipboardCell[][];
|
|
98
|
+
columnWidths?: number[];
|
|
99
|
+
merges: SpreadsheetClipboardMerge[];
|
|
100
|
+
containsUnsupportedFormulaState: boolean;
|
|
101
|
+
}
|
|
102
|
+
export interface SpreadsheetPasteSpecialRequest {
|
|
103
|
+
snapshot: SpreadsheetClipboardSnapshot;
|
|
104
|
+
targetSheetId: string;
|
|
105
|
+
targetSelection: SpreadsheetCellRangeInput;
|
|
106
|
+
options: SpreadsheetPasteSpecialOptions;
|
|
107
|
+
}
|
|
108
|
+
export interface SpreadsheetPasteSpecialResult {
|
|
109
|
+
content: WorkSpreadsheetContent;
|
|
110
|
+
targetRange: SpreadsheetCellRange;
|
|
111
|
+
firstCellValue: unknown;
|
|
112
|
+
}
|
|
113
|
+
export interface SpreadsheetPastePlan {
|
|
114
|
+
targetRange: SpreadsheetCellRange;
|
|
115
|
+
rowCount: number;
|
|
116
|
+
columnCount: number;
|
|
117
|
+
}
|
|
118
|
+
export interface SpreadsheetCellWriter {
|
|
119
|
+
get(row: number, column: number): Cell | null | undefined;
|
|
120
|
+
set(row: number, column: number, cell: Cell | null): void;
|
|
121
|
+
finish(sheet: WorkSpreadsheetSheet): WorkSpreadsheetSheet;
|
|
122
|
+
}
|
|
123
|
+
export interface SpreadsheetPasteSource {
|
|
124
|
+
cell: SpreadsheetClipboardCell;
|
|
125
|
+
sourceRow: number;
|
|
126
|
+
sourceColumn: number;
|
|
127
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
2
|
+
import { type SpreadsheetPasteSpecialRequest, type SpreadsheetPasteSpecialResult } from './spreadsheet-paste-special-types';
|
|
3
|
+
export { captureSpreadsheetClipboardSnapshot, createSpreadsheetTextClipboardSnapshot, normalizeSpreadsheetClipboardText, spreadsheetPasteSpecialModeAvailable, } from './spreadsheet-paste-special-snapshot';
|
|
4
|
+
export { MAX_SPREADSHEET_COLUMNS, MAX_SPREADSHEET_PASTE_SPECIAL_CELLS, MAX_SPREADSHEET_ROWS, spreadsheetPasteContentOptions, spreadsheetPasteOperationOptions, } from './spreadsheet-paste-special-types';
|
|
5
|
+
export type { SpreadsheetClipboardCell, SpreadsheetClipboardMerge, SpreadsheetClipboardSnapshot, SpreadsheetPasteContent, SpreadsheetPasteOperation, SpreadsheetPasteSpecialOptions, SpreadsheetPasteSpecialRequest, SpreadsheetPasteSpecialResult, } from './spreadsheet-paste-special-types';
|
|
6
|
+
export declare function spreadsheetPasteSpecialValidationError(content: WorkSpreadsheetContent, request: SpreadsheetPasteSpecialRequest): string | null;
|
|
7
|
+
export declare function applySpreadsheetPasteSpecial(content: WorkSpreadsheetContent, request: SpreadsheetPasteSpecialRequest): SpreadsheetPasteSpecialResult | null;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { MutableRefObject } from 'react';
|
|
2
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
3
|
+
import { type SpreadsheetClipboardPort } from './spreadsheet-clipboard';
|
|
4
|
+
import type { SpreadsheetClipboardCommandPort } from './spreadsheet-command-controller';
|
|
5
|
+
import type { SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
6
|
+
import { type SpreadsheetClipboardSnapshot, type SpreadsheetPasteContent, type SpreadsheetPasteSpecialOptions } from './spreadsheet-paste-special';
|
|
7
|
+
export interface SpreadsheetClipboardSelectionSource {
|
|
8
|
+
sheetId: string;
|
|
9
|
+
range: SpreadsheetCellRange;
|
|
10
|
+
plainText: string;
|
|
11
|
+
}
|
|
12
|
+
export interface SpreadsheetPasteSpecialDialogSource {
|
|
13
|
+
snapshot: SpreadsheetClipboardSnapshot;
|
|
14
|
+
targetSheetId: string;
|
|
15
|
+
targetRange: SpreadsheetCellRange;
|
|
16
|
+
invoker: HTMLElement | null;
|
|
17
|
+
}
|
|
18
|
+
export declare function useSpreadsheetClipboard({ clipboard, canAccessSelection, clearSelection, commit, contentRef, editable, fallbackFocusTarget, getSelection, }: {
|
|
19
|
+
clipboard?: SpreadsheetClipboardPort;
|
|
20
|
+
canAccessSelection: boolean;
|
|
21
|
+
clearSelection: () => boolean;
|
|
22
|
+
commit: (content: WorkSpreadsheetContent) => boolean;
|
|
23
|
+
contentRef: MutableRefObject<WorkSpreadsheetContent>;
|
|
24
|
+
editable: boolean;
|
|
25
|
+
fallbackFocusTarget: () => HTMLElement | null;
|
|
26
|
+
getSelection: () => SpreadsheetClipboardSelectionSource | null;
|
|
27
|
+
}): {
|
|
28
|
+
applyDialog: (options: SpreadsheetPasteSpecialOptions) => boolean;
|
|
29
|
+
closeDialog: () => void;
|
|
30
|
+
commandPort: SpreadsheetClipboardCommandPort;
|
|
31
|
+
copyToDataTransfer: (data: DataTransfer, cut: boolean) => boolean;
|
|
32
|
+
dialogSource: SpreadsheetPasteSpecialDialogSource | null;
|
|
33
|
+
pasteText: (plainText: string, content?: SpreadsheetPasteContent, notify?: boolean) => boolean;
|
|
34
|
+
restoreDialogFocusTarget: () => HTMLElement | null;
|
|
35
|
+
validateDialog: (options: SpreadsheetPasteSpecialOptions) => string | null;
|
|
36
|
+
};
|
package/dist/office-kernel.wasm
CHANGED
|
Binary file
|