@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
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Selection } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
3
|
+
import type { SpreadsheetDataValidationCommandPort, SpreadsheetEditorCommands } from './spreadsheet-command-controller';
|
|
4
|
+
export interface SpreadsheetDataValidationSelectionState {
|
|
5
|
+
selections: Selection[];
|
|
6
|
+
sheetId: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function useSpreadsheetDataValidation({ commandsRef, contentRef, focusGrid, getGridFocusTarget, getLiveSelections, preview, }: {
|
|
9
|
+
commandsRef: {
|
|
10
|
+
current: SpreadsheetEditorCommands | null;
|
|
11
|
+
};
|
|
12
|
+
contentRef: {
|
|
13
|
+
current: WorkSpreadsheetContent;
|
|
14
|
+
};
|
|
15
|
+
focusGrid: (focusOrigin: Element | null) => void;
|
|
16
|
+
getGridFocusTarget: () => HTMLElement | null;
|
|
17
|
+
getLiveSelections: () => Selection[] | undefined;
|
|
18
|
+
preview: boolean;
|
|
19
|
+
}): {
|
|
20
|
+
commandPort: SpreadsheetDataValidationCommandPort;
|
|
21
|
+
selectionForChange: () => SpreadsheetDataValidationSelectionState | null;
|
|
22
|
+
dialog: import("react").JSX.Element | null;
|
|
23
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Selection } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
3
|
+
import type { SpreadsheetEditorCommands, SpreadsheetHyperlinkCommandPort } from './spreadsheet-command-controller';
|
|
4
|
+
export interface SpreadsheetHyperlinkSelectionState {
|
|
5
|
+
sheetId: string;
|
|
6
|
+
selection: Selection;
|
|
7
|
+
}
|
|
8
|
+
export declare function useSpreadsheetHyperlink({ commandsRef, contentRef, focusGrid, getGridFocusTarget, getLiveSelection, preview, selectionState, }: {
|
|
9
|
+
commandsRef: {
|
|
10
|
+
current: SpreadsheetEditorCommands | null;
|
|
11
|
+
};
|
|
12
|
+
contentRef: {
|
|
13
|
+
current: WorkSpreadsheetContent;
|
|
14
|
+
};
|
|
15
|
+
focusGrid: (focusOrigin: Element | null) => void;
|
|
16
|
+
getGridFocusTarget: () => HTMLElement | null;
|
|
17
|
+
getLiveSelection: () => Selection | undefined;
|
|
18
|
+
preview: boolean;
|
|
19
|
+
selectionState: SpreadsheetHyperlinkSelectionState | null;
|
|
20
|
+
}): {
|
|
21
|
+
commandPort: SpreadsheetHyperlinkCommandPort;
|
|
22
|
+
selectionForChange: () => SpreadsheetHyperlinkSelectionState | null;
|
|
23
|
+
dialog: import("react").JSX.Element | null;
|
|
24
|
+
};
|
package/dist/office-kernel.wasm
CHANGED
|
Binary file
|