@a3s-lab/office 0.14.0 → 0.16.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/COLLABORATION_ROADMAP.md +15 -5
- package/README.md +34 -1
- package/dist/0~6090.js +7 -8
- package/dist/0~spreadsheet-editor.js +6869 -3427
- package/dist/0~work-office-diagnostics.js +1 -1
- package/dist/{4476.js → 2180.js} +404 -35
- package/dist/4104.js +698 -41
- package/dist/5184.js +1 -1
- package/dist/8715.js +156 -156
- package/dist/core.js +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/collaboration/office-spreadsheet-collaboration-records.d.ts +2 -0
- package/dist/internal/collaboration/office-spreadsheet-collaboration-validation-support.d.ts +6 -0
- package/dist/internal/features/work/editors/spreadsheet-auto-filter.d.ts +1 -0
- package/dist/internal/features/work/editors/spreadsheet-command-catalog.d.ts +44 -1
- package/dist/internal/features/work/editors/spreadsheet-command-controller.d.ts +28 -0
- 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 +4 -2
- package/dist/internal/features/work/editors/spreadsheet-editor-support.d.ts +1 -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-table-command.d.ts +3 -0
- package/dist/internal/features/work/editors/spreadsheet-table-conversion.d.ts +7 -0
- package/dist/internal/features/work/editors/spreadsheet-table-dialog.d.ts +8 -0
- package/dist/internal/features/work/editors/spreadsheet-table-limits.d.ts +1 -0
- package/dist/internal/features/work/editors/spreadsheet-table-reconciliation.d.ts +21 -0
- package/dist/internal/features/work/editors/spreadsheet-table-render.d.ts +16 -0
- package/dist/internal/features/work/editors/spreadsheet-table-ribbon.d.ts +8 -0
- package/dist/internal/features/work/editors/spreadsheet-table-style.d.ts +31 -0
- package/dist/internal/features/work/editors/spreadsheet-table.d.ts +55 -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/editors/use-spreadsheet-table.d.ts +23 -0
- package/dist/internal/features/work/work-spreadsheet-data-validation.d.ts +2 -0
- package/dist/internal/features/work/work-types.d.ts +100 -0
- package/dist/internal/features/work/work-xlsx-interop.d.ts +2 -0
- package/dist/internal/features/work/work-xlsx-table-filters.d.ts +3 -0
- package/dist/internal/features/work/work-xlsx-tables.d.ts +4 -0
- package/dist/office-kernel.wasm +0 -0
- package/dist/styles.css +486 -0
- package/dist/work-spreadsheet-package-scan.worker.js +3 -2
- package/docs/latest/en/browser-editor-architecture.md +43 -0
- package/package.json +12 -3
|
@@ -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 createSpreadsheetTableExtension(): OfficeEditorExtension<SpreadsheetCommandContext, SpreadsheetEditorCommands>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetTable } from '../work-types';
|
|
2
|
+
export declare function canMaterializeSpreadsheetTableAppearance(table: WorkSpreadsheetTable): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Convert to Range removes ListObject semantics, so the render-only style must
|
|
5
|
+
* become native cell formatting to preserve the appearance users confirmed.
|
|
6
|
+
*/
|
|
7
|
+
export declare function materializeSpreadsheetTableAppearance(content: WorkSpreadsheetContent, sheetId: string, table: WorkSpreadsheetTable): WorkSpreadsheetContent | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SpreadsheetTableDialogSource, SpreadsheetTableDialogValue } from './spreadsheet-table';
|
|
2
|
+
export declare function SpreadsheetTableDialog({ source, restoreFocusTarget, onApply, onClose, onValidate, }: {
|
|
3
|
+
source: SpreadsheetTableDialogSource;
|
|
4
|
+
restoreFocusTarget: () => HTMLElement | null;
|
|
5
|
+
onApply: (value: SpreadsheetTableDialogValue) => boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onValidate: (value: SpreadsheetTableDialogValue) => string | null;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MAX_SPREADSHEET_TABLE_CELLS = 100000;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Op } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetSheet } from '../work-types';
|
|
3
|
+
export type SpreadsheetTableStructureChange = {
|
|
4
|
+
axis: 'column' | 'row';
|
|
5
|
+
count: number;
|
|
6
|
+
direction: 'lefttop' | 'rightbottom';
|
|
7
|
+
index: number;
|
|
8
|
+
kind: 'insert';
|
|
9
|
+
} | {
|
|
10
|
+
axis: 'column' | 'row';
|
|
11
|
+
end: number;
|
|
12
|
+
kind: 'delete';
|
|
13
|
+
start: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function canApplySpreadsheetTableStructureChange(sheet: WorkSpreadsheetSheet | undefined, change: SpreadsheetTableStructureChange): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Reconciles Fortune's cell and whole-row/column operation stream with the
|
|
18
|
+
* browser-owned ListObject model. Fortune preserves unknown sheet metadata,
|
|
19
|
+
* but it cannot update table ranges, column identities, or filter offsets.
|
|
20
|
+
*/
|
|
21
|
+
export declare function reconcileSpreadsheetTablesAfterFortune(sheets: WorkSpreadsheetSheet[], sourceSheets: WorkSpreadsheetSheet[], operations?: readonly Op[]): WorkSpreadsheetSheet[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Cell } from '@fortune-sheet/core';
|
|
2
|
+
import type { SpreadsheetTableCellRenderStyle } from './spreadsheet-table-style';
|
|
3
|
+
export interface SpreadsheetTableRenderCellInfo {
|
|
4
|
+
column: number;
|
|
5
|
+
endX: number;
|
|
6
|
+
endY: number;
|
|
7
|
+
row: number;
|
|
8
|
+
startX: number;
|
|
9
|
+
startY: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SpreadsheetTableConditionalStyle {
|
|
12
|
+
cellColor?: string;
|
|
13
|
+
textColor?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function beginSpreadsheetTableCellRender(_cell: Cell | null, tableStyle: SpreadsheetTableCellRenderStyle | null, conditionalStyle: SpreadsheetTableConditionalStyle | undefined, context: CanvasRenderingContext2D): void;
|
|
16
|
+
export declare function finishSpreadsheetTableCellRender(_cell: Cell | null, cellInfo: SpreadsheetTableRenderCellInfo, tableStyle: SpreadsheetTableCellRenderStyle | null, context: CanvasRenderingContext2D): void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WorkSpreadsheetTable } from '../work-types';
|
|
2
|
+
import type { SpreadsheetEditorCanCommands, SpreadsheetEditorCommands } from './spreadsheet-command-controller';
|
|
3
|
+
export declare function SpreadsheetTableDesignRibbon({ can, commands, sheetId, table, }: {
|
|
4
|
+
can: SpreadsheetEditorCanCommands;
|
|
5
|
+
commands: SpreadsheetEditorCommands;
|
|
6
|
+
sheetId: string;
|
|
7
|
+
table: WorkSpreadsheetTable;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { WorkSpreadsheetTable, WorkSpreadsheetTableStyle } from '../work-types';
|
|
2
|
+
export interface SpreadsheetTableStylePalette {
|
|
3
|
+
border: string;
|
|
4
|
+
header: string;
|
|
5
|
+
headerText: string;
|
|
6
|
+
primaryRow: string;
|
|
7
|
+
secondaryRow: string;
|
|
8
|
+
stripeColumn: string;
|
|
9
|
+
text: string;
|
|
10
|
+
total: string;
|
|
11
|
+
totalText: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SpreadsheetTableStyleChoice {
|
|
14
|
+
label: string;
|
|
15
|
+
ooxmlName: string;
|
|
16
|
+
palette: SpreadsheetTableStylePalette;
|
|
17
|
+
style: Exclude<WorkSpreadsheetTableStyle, {
|
|
18
|
+
family: 'none';
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
export interface SpreadsheetTableCellRenderStyle {
|
|
22
|
+
background: string;
|
|
23
|
+
bold: boolean;
|
|
24
|
+
borderColor: string;
|
|
25
|
+
role: 'body' | 'header' | 'totals';
|
|
26
|
+
tableId: string;
|
|
27
|
+
textColor: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function spreadsheetTableStyleChoices(): readonly SpreadsheetTableStyleChoice[];
|
|
30
|
+
export declare function spreadsheetTableStylePalette(style: WorkSpreadsheetTableStyle): SpreadsheetTableStylePalette | null;
|
|
31
|
+
export declare function createSpreadsheetTableRenderResolver(tables: readonly WorkSpreadsheetTable[]): (row: number, column: number) => SpreadsheetTableCellRenderStyle | null;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Selection } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetSheet, WorkSpreadsheetTable, WorkSpreadsheetTableStyle } from '../work-types';
|
|
3
|
+
import { type SpreadsheetCellRange } from './spreadsheet-cell-range';
|
|
4
|
+
export { MAX_SPREADSHEET_TABLE_CELLS } from './spreadsheet-table-limits';
|
|
5
|
+
export interface SpreadsheetTableTarget {
|
|
6
|
+
sheetId: string;
|
|
7
|
+
selection: Selection;
|
|
8
|
+
}
|
|
9
|
+
export interface SpreadsheetTableDialogValue {
|
|
10
|
+
headerRow: boolean;
|
|
11
|
+
rangeReference: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SpreadsheetTableDialogSource {
|
|
14
|
+
name: string;
|
|
15
|
+
range: SpreadsheetCellRange;
|
|
16
|
+
rangeReference: string;
|
|
17
|
+
sheetId: string;
|
|
18
|
+
sheetName: string;
|
|
19
|
+
value: SpreadsheetTableDialogValue;
|
|
20
|
+
}
|
|
21
|
+
export interface SpreadsheetTableRequest {
|
|
22
|
+
headerRow: boolean;
|
|
23
|
+
name: string;
|
|
24
|
+
range: SpreadsheetCellRange;
|
|
25
|
+
sheetId: string;
|
|
26
|
+
style?: WorkSpreadsheetTableStyle;
|
|
27
|
+
}
|
|
28
|
+
export type SpreadsheetTableValidation = {
|
|
29
|
+
columns: string[];
|
|
30
|
+
name: string;
|
|
31
|
+
ok: true;
|
|
32
|
+
range: SpreadsheetCellRange;
|
|
33
|
+
sheet: WorkSpreadsheetSheet;
|
|
34
|
+
} | {
|
|
35
|
+
code: SpreadsheetTableErrorCode;
|
|
36
|
+
message: string;
|
|
37
|
+
ok: false;
|
|
38
|
+
};
|
|
39
|
+
export type SpreadsheetTableErrorCode = 'auto-filter-overlap' | 'invalid-column-name' | 'invalid-name' | 'invalid-range' | 'invalid-style' | 'merged-range' | 'name-conflict' | 'out-of-bounds' | 'protected-range' | 'pivot-table' | 'range-too-large' | 'sheet-not-found' | 'table-overlap';
|
|
40
|
+
export interface SpreadsheetTableDesignPatch {
|
|
41
|
+
name?: string;
|
|
42
|
+
showColumnStripes?: boolean;
|
|
43
|
+
showFirstColumn?: boolean;
|
|
44
|
+
showLastColumn?: boolean;
|
|
45
|
+
showRowStripes?: boolean;
|
|
46
|
+
style?: WorkSpreadsheetTableStyle;
|
|
47
|
+
}
|
|
48
|
+
export declare function createSpreadsheetTableDialogSource(content: WorkSpreadsheetContent, target: SpreadsheetTableTarget): SpreadsheetTableDialogSource | null;
|
|
49
|
+
export declare function spreadsheetTableRangeFromText(value: string): SpreadsheetCellRange | null;
|
|
50
|
+
export declare function validateSpreadsheetTableRequest(content: WorkSpreadsheetContent, request: SpreadsheetTableRequest): SpreadsheetTableValidation;
|
|
51
|
+
export declare function applySpreadsheetTable(content: WorkSpreadsheetContent, request: SpreadsheetTableRequest): WorkSpreadsheetContent | null;
|
|
52
|
+
export declare function updateSpreadsheetTable(content: WorkSpreadsheetContent, sheetId: string, tableId: string, patch: SpreadsheetTableDesignPatch): WorkSpreadsheetContent | null;
|
|
53
|
+
export declare function convertSpreadsheetTableToRange(content: WorkSpreadsheetContent, sheetId: string, tableId: string): WorkSpreadsheetContent | null;
|
|
54
|
+
export declare function spreadsheetTableAtCell(sheet: WorkSpreadsheetSheet | undefined, row: number, column: number): WorkSpreadsheetTable | null;
|
|
55
|
+
export declare function spreadsheetTableFailureMessage(content: WorkSpreadsheetContent, request: SpreadsheetTableRequest): string | null;
|
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Selection } from '@fortune-sheet/core';
|
|
2
|
+
import type { WorkSpreadsheetContent } from '../work-types';
|
|
3
|
+
import type { SpreadsheetEditorCommands, SpreadsheetTableCommandPort } from './spreadsheet-command-controller';
|
|
4
|
+
export interface SpreadsheetTableSelectionState {
|
|
5
|
+
selection: Selection;
|
|
6
|
+
sheetId: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function useSpreadsheetTable({ commandsRef, contentRef, focusGrid, getGridFocusTarget, getLiveSelection, 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
|
+
getLiveSelection: () => Selection | undefined;
|
|
18
|
+
preview: boolean;
|
|
19
|
+
}): {
|
|
20
|
+
commandPort: SpreadsheetTableCommandPort;
|
|
21
|
+
selectionForChange: () => SpreadsheetTableSelectionState | null;
|
|
22
|
+
dialog: import("react").JSX.Element | null;
|
|
23
|
+
};
|
|
@@ -213,12 +213,112 @@ export interface WorkSpreadsheetDataValidationRange {
|
|
|
213
213
|
ranges: WorkSpreadsheetCellRange[];
|
|
214
214
|
item: WorkSpreadsheetDataValidationItem;
|
|
215
215
|
}
|
|
216
|
+
export type WorkSpreadsheetTableStyle = {
|
|
217
|
+
family: 'none';
|
|
218
|
+
} | {
|
|
219
|
+
family: 'light';
|
|
220
|
+
number: number;
|
|
221
|
+
} | {
|
|
222
|
+
family: 'medium';
|
|
223
|
+
number: number;
|
|
224
|
+
} | {
|
|
225
|
+
family: 'dark';
|
|
226
|
+
number: number;
|
|
227
|
+
};
|
|
228
|
+
export interface WorkSpreadsheetTableColumn {
|
|
229
|
+
name: string;
|
|
230
|
+
}
|
|
231
|
+
export type WorkSpreadsheetDynamicFilter = 'above-average' | 'below-average' | 'tomorrow' | 'today' | 'yesterday' | 'next-week' | 'this-week' | 'last-week' | 'next-month' | 'this-month' | 'last-month' | 'next-quarter' | 'this-quarter' | 'last-quarter' | 'next-year' | 'this-year' | 'last-year' | 'year-to-date' | 'quarter-1' | 'quarter-2' | 'quarter-3' | 'quarter-4' | 'month-1' | 'month-2' | 'month-3' | 'month-4' | 'month-5' | 'month-6' | 'month-7' | 'month-8' | 'month-9' | 'month-10' | 'month-11' | 'month-12';
|
|
232
|
+
export type WorkSpreadsheetTableFilterCriteria = {
|
|
233
|
+
type: 'values';
|
|
234
|
+
values: string[];
|
|
235
|
+
includeBlanks: boolean;
|
|
236
|
+
} | {
|
|
237
|
+
type: 'equals';
|
|
238
|
+
value: string;
|
|
239
|
+
} | {
|
|
240
|
+
type: 'not-equals';
|
|
241
|
+
value: string;
|
|
242
|
+
} | {
|
|
243
|
+
type: 'contains';
|
|
244
|
+
value: string;
|
|
245
|
+
} | {
|
|
246
|
+
type: 'does-not-contain';
|
|
247
|
+
value: string;
|
|
248
|
+
} | {
|
|
249
|
+
type: 'begins-with';
|
|
250
|
+
value: string;
|
|
251
|
+
} | {
|
|
252
|
+
type: 'ends-with';
|
|
253
|
+
value: string;
|
|
254
|
+
} | {
|
|
255
|
+
type: 'greater-than';
|
|
256
|
+
value: string;
|
|
257
|
+
} | {
|
|
258
|
+
type: 'greater-than-or-equal';
|
|
259
|
+
value: string;
|
|
260
|
+
} | {
|
|
261
|
+
type: 'less-than';
|
|
262
|
+
value: string;
|
|
263
|
+
} | {
|
|
264
|
+
type: 'less-than-or-equal';
|
|
265
|
+
value: string;
|
|
266
|
+
} | {
|
|
267
|
+
type: 'between';
|
|
268
|
+
lower: string;
|
|
269
|
+
upper: string;
|
|
270
|
+
} | {
|
|
271
|
+
type: 'not-between';
|
|
272
|
+
lower: string;
|
|
273
|
+
upper: string;
|
|
274
|
+
} | {
|
|
275
|
+
type: 'blanks';
|
|
276
|
+
} | {
|
|
277
|
+
type: 'non-blanks';
|
|
278
|
+
} | {
|
|
279
|
+
type: 'top';
|
|
280
|
+
count: number;
|
|
281
|
+
} | {
|
|
282
|
+
type: 'top-percent';
|
|
283
|
+
percent: number;
|
|
284
|
+
} | {
|
|
285
|
+
type: 'bottom';
|
|
286
|
+
count: number;
|
|
287
|
+
} | {
|
|
288
|
+
type: 'bottom-percent';
|
|
289
|
+
percent: number;
|
|
290
|
+
} | {
|
|
291
|
+
type: 'dynamic';
|
|
292
|
+
kind: WorkSpreadsheetDynamicFilter;
|
|
293
|
+
};
|
|
294
|
+
export interface WorkSpreadsheetTableFilter {
|
|
295
|
+
column: number;
|
|
296
|
+
criteria: WorkSpreadsheetTableFilterCriteria;
|
|
297
|
+
}
|
|
298
|
+
export interface WorkSpreadsheetTable {
|
|
299
|
+
/** Stable browser-model identity. OOXML numeric identity is kept separately. */
|
|
300
|
+
id: string;
|
|
301
|
+
ooxmlId?: number;
|
|
302
|
+
name: string;
|
|
303
|
+
displayName?: string;
|
|
304
|
+
range: WorkSpreadsheetCellRange;
|
|
305
|
+
columns: WorkSpreadsheetTableColumn[];
|
|
306
|
+
filters: WorkSpreadsheetTableFilter[];
|
|
307
|
+
headerRow: boolean;
|
|
308
|
+
totalsRow: boolean;
|
|
309
|
+
style: WorkSpreadsheetTableStyle;
|
|
310
|
+
showFirstColumn: boolean;
|
|
311
|
+
showLastColumn: boolean;
|
|
312
|
+
showRowStripes: boolean;
|
|
313
|
+
showColumnStripes: boolean;
|
|
314
|
+
}
|
|
216
315
|
export type WorkSpreadsheetSheet = Omit<Sheet, 'images'> & {
|
|
217
316
|
images?: WorkSpreadsheetImage[];
|
|
218
317
|
charts?: WorkSpreadsheetChart[];
|
|
219
318
|
pivotTables?: WorkSpreadsheetPivotTable[];
|
|
220
319
|
formulaMetadata?: WorkSpreadsheetFormulaMetadata;
|
|
221
320
|
dataValidationRanges?: WorkSpreadsheetDataValidationRange[];
|
|
321
|
+
tables?: WorkSpreadsheetTable[];
|
|
222
322
|
};
|
|
223
323
|
export type WorkSpreadsheetPivotAggregation = 'sum' | 'count' | 'counta' | 'average' | 'max' | 'min' | 'product' | 'stdDev' | 'stdDevP' | 'var' | 'varP';
|
|
224
324
|
export interface WorkSpreadsheetPivotValue {
|
|
@@ -9,6 +9,7 @@ import { type XlsxManualPageBreaks } from './work-xlsx-page-breaks';
|
|
|
9
9
|
import { type XlsxPageSetup } from './work-xlsx-page-setup';
|
|
10
10
|
import { type XlsxProtectionFeatures } from './work-xlsx-protection';
|
|
11
11
|
import { type XlsxWorksheetXmlScan } from './work-xlsx-worksheet-scan';
|
|
12
|
+
import type { WorkSpreadsheetTable } from './work-types';
|
|
12
13
|
type FrozenPane = NonNullable<Sheet['frozen']>;
|
|
13
14
|
export interface XlsxDataValidation {
|
|
14
15
|
references: string[];
|
|
@@ -24,6 +25,7 @@ export interface XlsxSheetFeatures {
|
|
|
24
25
|
pageSetup?: XlsxPageSetup;
|
|
25
26
|
images: XlsxWorksheetImage[];
|
|
26
27
|
charts: XlsxWorksheetChart[];
|
|
28
|
+
tables: WorkSpreadsheetTable[];
|
|
27
29
|
}
|
|
28
30
|
export type FortuneDataValidationItem = WorkSpreadsheetDataValidationItem;
|
|
29
31
|
export declare function readXlsxSheetFeatures(buffer: ArrayBuffer): Promise<Map<string, XlsxSheetFeatures>>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { WorkSpreadsheetTableFilter } from './work-types';
|
|
2
|
+
export declare function readXlsxTableFilters(table: Document, width: number): WorkSpreadsheetTableFilter[];
|
|
3
|
+
export declare function xlsxTableAutoFilterXml(filters: readonly WorkSpreadsheetTableFilter[], rangeReference: string, totalsRow: boolean): string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { OoxmlPackage } from './work-ooxml-package';
|
|
2
|
+
import type { WorkSpreadsheetContent, WorkSpreadsheetTable } from './work-types';
|
|
3
|
+
export declare function readXlsxWorksheetTables(archive: OoxmlPackage, worksheetPart: string): Promise<WorkSpreadsheetTable[]>;
|
|
4
|
+
export declare function patchXlsxSpreadsheetTables(buffer: ArrayBuffer, content: WorkSpreadsheetContent): Promise<ArrayBuffer>;
|
package/dist/office-kernel.wasm
CHANGED
|
Binary file
|