@leankylin-sheet/core 0.3.1
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 +19 -0
- package/dist/api/cell.d.ts +10 -0
- package/dist/api/common.d.ts +57 -0
- package/dist/api/errors.d.ts +2 -0
- package/dist/api/index.d.ts +9 -0
- package/dist/api/merge.d.ts +5 -0
- package/dist/api/range.d.ts +22 -0
- package/dist/api/rowcol.d.ts +12 -0
- package/dist/api/sheet.d.ts +10 -0
- package/dist/api/workbook.d.ts +15 -0
- package/dist/canvas.d.ts +46 -0
- package/dist/context.d.ts +178 -0
- package/dist/events/copy.d.ts +2 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/keyboard.d.ts +6 -0
- package/dist/events/mouse.d.ts +22 -0
- package/dist/events/paste.d.ts +3 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.esm.js +69044 -0
- package/dist/index.js +69376 -0
- package/dist/locale/en.d.ts +1028 -0
- package/dist/locale/es.d.ts +1132 -0
- package/dist/locale/index.d.ts +1046 -0
- package/dist/locale/zh.d.ts +1045 -0
- package/dist/locale/zh_tw.d.ts +1185 -0
- package/dist/modules/ConditionFormat.d.ts +17 -0
- package/dist/modules/border.d.ts +3 -0
- package/dist/modules/cell.d.ts +32 -0
- package/dist/modules/clipboard.d.ts +3 -0
- package/dist/modules/color.d.ts +1 -0
- package/dist/modules/comment.d.ts +96 -0
- package/dist/modules/conditionalFormat.d.ts +2 -0
- package/dist/modules/cursor.d.ts +3 -0
- package/dist/modules/dataVerification.d.ts +11 -0
- package/dist/modules/dropCell.d.ts +10 -0
- package/dist/modules/filter.d.ts +45 -0
- package/dist/modules/format.d.ts +6 -0
- package/dist/modules/formula.d.ts +53 -0
- package/dist/modules/freeze.d.ts +5 -0
- package/dist/modules/hyperlink.d.ts +21 -0
- package/dist/modules/image.d.ts +31 -0
- package/dist/modules/index.d.ts +35 -0
- package/dist/modules/inline-string.d.ts +36 -0
- package/dist/modules/location.d.ts +6 -0
- package/dist/modules/locationCondition.d.ts +21 -0
- package/dist/modules/merge.d.ts +3 -0
- package/dist/modules/mobile.d.ts +5 -0
- package/dist/modules/moveCells.d.ts +5 -0
- package/dist/modules/protection.d.ts +5 -0
- package/dist/modules/refresh.d.ts +3 -0
- package/dist/modules/rowcol.d.ts +19 -0
- package/dist/modules/screenshot.d.ts +2 -0
- package/dist/modules/searchReplace.d.ts +36 -0
- package/dist/modules/selection.d.ts +46 -0
- package/dist/modules/sheet.d.ts +10 -0
- package/dist/modules/sort.d.ts +7 -0
- package/dist/modules/splitColumn.d.ts +5 -0
- package/dist/modules/text.d.ts +10 -0
- package/dist/modules/toolbar.d.ts +32 -0
- package/dist/modules/validation.d.ts +19 -0
- package/dist/modules/zoom.d.ts +3 -0
- package/dist/settings.d.ts +94 -0
- package/dist/types.d.ts +352 -0
- package/dist/utils/index.d.ts +17 -0
- package/dist/utils/patch.d.ts +37 -0
- package/package.json +42 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Context } from "../context";
|
|
2
|
+
import { Cell } from "../types";
|
|
3
|
+
export declare function hasChinaword(s: string): boolean;
|
|
4
|
+
export declare function clearMeasureTextCache(): void;
|
|
5
|
+
export declare function defaultFont(defaultFontSize: number): string;
|
|
6
|
+
export declare function getFontSet(format: any, defaultFontSize: number, ctx?: Context): string;
|
|
7
|
+
export declare function getMeasureText(value: any, renderCtx: CanvasRenderingContext2D, sheetCtx: Context, fontset?: string): any;
|
|
8
|
+
export declare function isSupportBoundingBox(ctx: CanvasRenderingContext2D): boolean;
|
|
9
|
+
export declare function drawLineInfo(wordGroup: any, cancelLine: string, underLine: string, option: any): void;
|
|
10
|
+
export declare function getCellTextInfo(cell: Cell, renderCtx: CanvasRenderingContext2D, sheetCtx: Context, option: any, ctx?: Context): any;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Context } from "../context";
|
|
2
|
+
import { Cell, CellMatrix, GlobalCache } from "../types";
|
|
3
|
+
type ToolbarItemClickHandler = (ctx: Context, cellInput: HTMLDivElement, cache?: GlobalCache) => void;
|
|
4
|
+
type ToolbarItemSelectedFunc = (cell: Cell | null | undefined) => boolean;
|
|
5
|
+
export declare function updateFormatCell(ctx: Context, d: CellMatrix, attr: keyof Cell, foucsStatus: any, row_st: number, row_ed: number, col_st: number, col_ed: number, canvas?: CanvasRenderingContext2D): void;
|
|
6
|
+
export declare function updateFormat(ctx: Context, $input: HTMLDivElement, d: CellMatrix, attr: keyof Cell, foucsStatus: any, canvas?: CanvasRenderingContext2D): void;
|
|
7
|
+
export declare function autoSelectionFormula(ctx: Context, cellInput: HTMLDivElement, fxInput: HTMLDivElement | null | undefined, formula: string, cache: GlobalCache): void;
|
|
8
|
+
export declare function cancelPaintModel(ctx: Context): void;
|
|
9
|
+
export declare function handleCurrencyFormat(ctx: Context, cellInput: HTMLDivElement): void;
|
|
10
|
+
export declare function handlePercentageFormat(ctx: Context, cellInput: HTMLDivElement): void;
|
|
11
|
+
export declare function handleNumberDecrease(ctx: Context, cellInput: HTMLDivElement): void;
|
|
12
|
+
export declare function handleNumberIncrease(ctx: Context, cellInput: HTMLDivElement): void;
|
|
13
|
+
export declare function handleBold(ctx: Context, cellInput: HTMLDivElement): void;
|
|
14
|
+
export declare function handleItalic(ctx: Context, cellInput: HTMLDivElement): void;
|
|
15
|
+
export declare function handleStrikeThrough(ctx: Context, cellInput: HTMLDivElement): void;
|
|
16
|
+
export declare function handleUnderline(ctx: Context, cellInput: HTMLDivElement): void;
|
|
17
|
+
export declare function handleHorizontalAlign(ctx: Context, cellInput: HTMLDivElement, value: string): void;
|
|
18
|
+
export declare function handleVerticalAlign(ctx: Context, cellInput: HTMLDivElement, value: string): void;
|
|
19
|
+
export declare function handleFormatPainter(ctx: Context): void;
|
|
20
|
+
export declare function handleClearFormat(ctx: Context): void;
|
|
21
|
+
export declare function handleTextColor(ctx: Context, cellInput: HTMLDivElement, color: string): void;
|
|
22
|
+
export declare function handleTextBackground(ctx: Context, cellInput: HTMLDivElement, color: string): void;
|
|
23
|
+
export declare function handleBorder(ctx: Context, type: string, borderColor?: string, borderStyle?: string): void;
|
|
24
|
+
export declare function handleMerge(ctx: Context, type: string): void;
|
|
25
|
+
export declare function handleSort(ctx: Context, isAsc: boolean): void;
|
|
26
|
+
export declare function handleFreeze(ctx: Context, type: string): void;
|
|
27
|
+
export declare function handleTextSize(ctx: Context, cellInput: HTMLDivElement, size: number, canvas?: CanvasRenderingContext2D): void;
|
|
28
|
+
export declare function handleSum(ctx: Context, cellInput: HTMLDivElement, fxInput: HTMLDivElement | null | undefined, cache?: GlobalCache): void;
|
|
29
|
+
export declare function handleLink(ctx: Context): void;
|
|
30
|
+
export declare function toolbarItemClickHandler(name: string): ToolbarItemClickHandler;
|
|
31
|
+
export declare function toolbarItemSelectedFunc(name: string): ToolbarItemSelectedFunc;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Context } from "../context";
|
|
2
|
+
export declare const error: {
|
|
3
|
+
v: string;
|
|
4
|
+
n: string;
|
|
5
|
+
na: string;
|
|
6
|
+
r: string;
|
|
7
|
+
d: string;
|
|
8
|
+
nm: string;
|
|
9
|
+
nl: string;
|
|
10
|
+
sp: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function valueIsError(value: string): boolean;
|
|
13
|
+
export declare function isRealNull(val: any): boolean;
|
|
14
|
+
export declare function isRealNum(val: any): boolean;
|
|
15
|
+
export declare function isdatetime(s: any): boolean;
|
|
16
|
+
export declare function diff(now: any, then: any): number;
|
|
17
|
+
export declare function isdatatypemulti(s: any): any;
|
|
18
|
+
export declare function isdatatype(s: any): string;
|
|
19
|
+
export declare function hasPartMC(ctx: Context, cfg: any, r1: number, r2: number, c1: number, c2: number): boolean;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Sheet, Selection, CellMatrix, Cell } from "./types";
|
|
3
|
+
export type Hooks = {
|
|
4
|
+
beforeUpdateCell?: (r: number, c: number, value: any) => boolean;
|
|
5
|
+
afterUpdateCell?: (row: number, column: number, oldValue: any, newValue: any) => void;
|
|
6
|
+
afterSelectionChange?: (sheetId: string, selection: Selection) => void;
|
|
7
|
+
beforeRenderRowHeaderCell?: (rowNumber: string, rowIndex: number, top: number, width: number, height: number, ctx: CanvasRenderingContext2D) => boolean;
|
|
8
|
+
afterRenderRowHeaderCell?: (rowNumber: string, rowIndex: number, top: number, width: number, height: number, ctx: CanvasRenderingContext2D) => void;
|
|
9
|
+
beforeRenderColumnHeaderCell?: (columnChar: string, columnIndex: number, left: number, width: number, height: number, ctx: CanvasRenderingContext2D) => boolean;
|
|
10
|
+
afterRenderColumnHeaderCell?: (columnChar: string, columnIndex: number, left: number, width: number, height: number, ctx: CanvasRenderingContext2D) => void;
|
|
11
|
+
beforeRenderCellArea?: (cells: CellMatrix, ctx: CanvasRenderingContext2D) => boolean;
|
|
12
|
+
beforeRenderCell?: (cell: Cell | null, cellInfo: {
|
|
13
|
+
row: number;
|
|
14
|
+
column: number;
|
|
15
|
+
startX: number;
|
|
16
|
+
startY: number;
|
|
17
|
+
endX: number;
|
|
18
|
+
endY: number;
|
|
19
|
+
}, ctx: CanvasRenderingContext2D) => boolean;
|
|
20
|
+
afterRenderCell?: (cell: Cell | null, cellInfo: {
|
|
21
|
+
row: number;
|
|
22
|
+
column: number;
|
|
23
|
+
startX: number;
|
|
24
|
+
startY: number;
|
|
25
|
+
endX: number;
|
|
26
|
+
endY: number;
|
|
27
|
+
}, ctx: CanvasRenderingContext2D) => void;
|
|
28
|
+
beforeCellMouseDown?: (cell: Cell | null, cellInfo: {
|
|
29
|
+
row: number;
|
|
30
|
+
column: number;
|
|
31
|
+
startRow: number;
|
|
32
|
+
startColumn: number;
|
|
33
|
+
endRow: number;
|
|
34
|
+
endColumn: number;
|
|
35
|
+
}) => boolean;
|
|
36
|
+
afterCellMouseDown?: (cell: Cell | null, cellInfo: {
|
|
37
|
+
row: number;
|
|
38
|
+
column: number;
|
|
39
|
+
startRow: number;
|
|
40
|
+
startColumn: number;
|
|
41
|
+
endRow: number;
|
|
42
|
+
endColumn: number;
|
|
43
|
+
}) => void;
|
|
44
|
+
beforePaste?: (selection: Selection[] | undefined, content: string) => boolean;
|
|
45
|
+
beforeUpdateComment?: (row: number, column: number, value: any) => boolean;
|
|
46
|
+
afterUpdateComment?: (row: number, column: number, oldValue: any, value: any) => void;
|
|
47
|
+
beforeInsertComment?: (row: number, column: number) => boolean;
|
|
48
|
+
afterInsertComment?: (row: number, column: number) => void;
|
|
49
|
+
beforeDeleteComment?: (row: number, column: number) => boolean;
|
|
50
|
+
afterDeleteComment?: (row: number, column: number) => void;
|
|
51
|
+
beforeAddSheet?: (sheet: Sheet) => boolean;
|
|
52
|
+
afterAddSheet?: (sheet: Sheet) => void;
|
|
53
|
+
beforeActivateSheet?: (id: string) => boolean;
|
|
54
|
+
afterActivateSheet?: (id: string) => void;
|
|
55
|
+
beforeDeleteSheet?: (id: string) => boolean;
|
|
56
|
+
afterDeleteSheet?: (id: string) => void;
|
|
57
|
+
beforeUpdateSheetName?: (id: string, oldName: string, newName: string) => boolean;
|
|
58
|
+
afterUpdateSheetName?: (id: string, oldName: string, newName: string) => void;
|
|
59
|
+
};
|
|
60
|
+
export type Settings = {
|
|
61
|
+
column?: number;
|
|
62
|
+
row?: number;
|
|
63
|
+
addRows?: number;
|
|
64
|
+
allowEdit?: boolean;
|
|
65
|
+
showToolbar?: boolean;
|
|
66
|
+
showFormulaBar?: boolean;
|
|
67
|
+
showSheetTabs?: boolean;
|
|
68
|
+
data: Sheet[];
|
|
69
|
+
config?: any;
|
|
70
|
+
devicePixelRatio?: number;
|
|
71
|
+
lang?: string | null;
|
|
72
|
+
forceCalculation?: boolean;
|
|
73
|
+
rowHeaderWidth?: number;
|
|
74
|
+
columnHeaderHeight?: number;
|
|
75
|
+
defaultColWidth?: number;
|
|
76
|
+
defaultRowHeight?: number;
|
|
77
|
+
defaultFontSize?: number;
|
|
78
|
+
toolbarItems?: string[];
|
|
79
|
+
cellContextMenu?: string[];
|
|
80
|
+
headerContextMenu?: string[];
|
|
81
|
+
sheetTabContextMenu?: string[];
|
|
82
|
+
filterContextMenu?: string[];
|
|
83
|
+
generateSheetId?: () => string;
|
|
84
|
+
hooks?: Hooks;
|
|
85
|
+
customToolbarItems?: {
|
|
86
|
+
key: string;
|
|
87
|
+
tooltip?: string;
|
|
88
|
+
children?: React.ReactNode;
|
|
89
|
+
iconName?: string;
|
|
90
|
+
icon?: React.ReactNode;
|
|
91
|
+
onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
|
92
|
+
}[];
|
|
93
|
+
};
|
|
94
|
+
export declare const defaultSettings: Required<Settings>;
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import { Patch as ImmerPatch } from "immer";
|
|
2
|
+
import { PatchOptions } from "./utils";
|
|
3
|
+
export type Op = {
|
|
4
|
+
op: "replace" | "remove" | "add" | "insertRowCol" | "deleteRowCol" | "addSheet" | "deleteSheet";
|
|
5
|
+
id?: string;
|
|
6
|
+
path: (string | number)[];
|
|
7
|
+
value?: any;
|
|
8
|
+
};
|
|
9
|
+
export type Rect = {
|
|
10
|
+
top: number;
|
|
11
|
+
left: number;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
export type CellStyle = {
|
|
16
|
+
bl?: number;
|
|
17
|
+
it?: number;
|
|
18
|
+
ff?: number | string;
|
|
19
|
+
fs?: number;
|
|
20
|
+
fc?: string;
|
|
21
|
+
ht?: number;
|
|
22
|
+
vt?: number;
|
|
23
|
+
tb?: string;
|
|
24
|
+
cl?: number;
|
|
25
|
+
un?: number;
|
|
26
|
+
tr?: string;
|
|
27
|
+
};
|
|
28
|
+
export type Cell = {
|
|
29
|
+
v?: string | number | boolean;
|
|
30
|
+
m?: string | number;
|
|
31
|
+
mc?: {
|
|
32
|
+
r: number;
|
|
33
|
+
c: number;
|
|
34
|
+
rs?: number;
|
|
35
|
+
cs?: number;
|
|
36
|
+
};
|
|
37
|
+
f?: string;
|
|
38
|
+
ct?: {
|
|
39
|
+
fa?: string;
|
|
40
|
+
t?: string;
|
|
41
|
+
s?: any;
|
|
42
|
+
};
|
|
43
|
+
qp?: number;
|
|
44
|
+
spl?: any;
|
|
45
|
+
bg?: string;
|
|
46
|
+
lo?: number;
|
|
47
|
+
rt?: number;
|
|
48
|
+
ps?: {
|
|
49
|
+
left: number | null;
|
|
50
|
+
top: number | null;
|
|
51
|
+
width: number | null;
|
|
52
|
+
height: number | null;
|
|
53
|
+
value: string;
|
|
54
|
+
isShow: boolean;
|
|
55
|
+
};
|
|
56
|
+
hl?: {
|
|
57
|
+
r: number;
|
|
58
|
+
c: number;
|
|
59
|
+
id: string;
|
|
60
|
+
};
|
|
61
|
+
} & CellStyle;
|
|
62
|
+
export type CellWithRowAndCol = {
|
|
63
|
+
r: number;
|
|
64
|
+
c: number;
|
|
65
|
+
v: Cell | null;
|
|
66
|
+
};
|
|
67
|
+
export type CellMatrix = (Cell | null)[][];
|
|
68
|
+
export type Selection = {
|
|
69
|
+
left?: number;
|
|
70
|
+
width?: number;
|
|
71
|
+
top?: number;
|
|
72
|
+
height?: number;
|
|
73
|
+
left_move?: number;
|
|
74
|
+
width_move?: number;
|
|
75
|
+
top_move?: number;
|
|
76
|
+
height_move?: number;
|
|
77
|
+
row: number[];
|
|
78
|
+
column: number[];
|
|
79
|
+
row_focus?: number;
|
|
80
|
+
column_focus?: number;
|
|
81
|
+
moveXY?: {
|
|
82
|
+
x: number;
|
|
83
|
+
y: number;
|
|
84
|
+
};
|
|
85
|
+
row_select?: boolean;
|
|
86
|
+
column_select?: boolean;
|
|
87
|
+
};
|
|
88
|
+
export type Presence = {
|
|
89
|
+
sheetId: string;
|
|
90
|
+
username: string;
|
|
91
|
+
userId?: string;
|
|
92
|
+
color: string;
|
|
93
|
+
selection: {
|
|
94
|
+
r: number;
|
|
95
|
+
c: number;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export type SheetConfig = {
|
|
99
|
+
merge?: Record<string, {
|
|
100
|
+
r: number;
|
|
101
|
+
c: number;
|
|
102
|
+
rs: number;
|
|
103
|
+
cs: number;
|
|
104
|
+
}>;
|
|
105
|
+
rowlen?: Record<string, number>;
|
|
106
|
+
columnlen?: Record<string, number>;
|
|
107
|
+
rowhidden?: Record<string, number>;
|
|
108
|
+
colhidden?: Record<string, number>;
|
|
109
|
+
customHeight?: Record<string, number>;
|
|
110
|
+
customWidth?: Record<string, number>;
|
|
111
|
+
borderInfo?: any[];
|
|
112
|
+
authority?: any;
|
|
113
|
+
rowReadOnly?: Record<number, number>;
|
|
114
|
+
colReadOnly?: Record<number, number>;
|
|
115
|
+
};
|
|
116
|
+
export type Image = {
|
|
117
|
+
id: string;
|
|
118
|
+
width: number;
|
|
119
|
+
height: number;
|
|
120
|
+
left: number;
|
|
121
|
+
top: number;
|
|
122
|
+
src: string;
|
|
123
|
+
};
|
|
124
|
+
export type Sheet = {
|
|
125
|
+
name: string;
|
|
126
|
+
config?: SheetConfig;
|
|
127
|
+
order?: number;
|
|
128
|
+
color?: string;
|
|
129
|
+
data?: CellMatrix;
|
|
130
|
+
celldata?: CellWithRowAndCol[];
|
|
131
|
+
id?: string;
|
|
132
|
+
images?: Image[];
|
|
133
|
+
zoomRatio?: number;
|
|
134
|
+
column?: number;
|
|
135
|
+
row?: number;
|
|
136
|
+
addRows?: number;
|
|
137
|
+
status?: number;
|
|
138
|
+
hide?: number;
|
|
139
|
+
luckysheet_select_save?: Selection[];
|
|
140
|
+
luckysheet_selection_range?: {
|
|
141
|
+
row: number[];
|
|
142
|
+
column: number[];
|
|
143
|
+
}[];
|
|
144
|
+
calcChain?: any[];
|
|
145
|
+
defaultRowHeight?: number;
|
|
146
|
+
defaultColWidth?: number;
|
|
147
|
+
showGridLines?: boolean | number;
|
|
148
|
+
pivotTable?: any;
|
|
149
|
+
isPivotTable?: boolean;
|
|
150
|
+
filter?: Record<string, any>;
|
|
151
|
+
filter_select?: {
|
|
152
|
+
row: number[];
|
|
153
|
+
column: number[];
|
|
154
|
+
};
|
|
155
|
+
luckysheet_conditionformat_save?: any[];
|
|
156
|
+
luckysheet_alternateformat_save?: any[];
|
|
157
|
+
dataVerification?: any;
|
|
158
|
+
hyperlink?: Record<string, {
|
|
159
|
+
linkType: string;
|
|
160
|
+
linkAddress: string;
|
|
161
|
+
}>;
|
|
162
|
+
dynamicArray_compute?: any;
|
|
163
|
+
dynamicArray?: any[];
|
|
164
|
+
frozen?: {
|
|
165
|
+
type: "row" | "column" | "both" | "rangeRow" | "rangeColumn" | "rangeBoth";
|
|
166
|
+
range?: {
|
|
167
|
+
row_focus: number;
|
|
168
|
+
column_focus: number;
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
export type CommentBox = {
|
|
173
|
+
r: number;
|
|
174
|
+
c: number;
|
|
175
|
+
rc: string;
|
|
176
|
+
autoFocus: boolean;
|
|
177
|
+
value: string;
|
|
178
|
+
size: {
|
|
179
|
+
fromX: number;
|
|
180
|
+
fromY: number;
|
|
181
|
+
toX: number;
|
|
182
|
+
toY: number;
|
|
183
|
+
} & Rect;
|
|
184
|
+
} & Rect;
|
|
185
|
+
export type SearchResult = {
|
|
186
|
+
r: number;
|
|
187
|
+
c: number;
|
|
188
|
+
sheetName: string;
|
|
189
|
+
sheetId: string;
|
|
190
|
+
cellPosition: string;
|
|
191
|
+
value: string;
|
|
192
|
+
};
|
|
193
|
+
export type LinkCardProps = {
|
|
194
|
+
sheetId: string;
|
|
195
|
+
r: number;
|
|
196
|
+
c: number;
|
|
197
|
+
rc: string;
|
|
198
|
+
originText: string;
|
|
199
|
+
originType: string;
|
|
200
|
+
originAddress: string;
|
|
201
|
+
position: {
|
|
202
|
+
cellLeft: number;
|
|
203
|
+
cellBottom: number;
|
|
204
|
+
};
|
|
205
|
+
isEditing: boolean;
|
|
206
|
+
selectingCellRange?: boolean;
|
|
207
|
+
};
|
|
208
|
+
export type RangeDialogProps = {
|
|
209
|
+
show: boolean;
|
|
210
|
+
rangeTxt: string;
|
|
211
|
+
type: string;
|
|
212
|
+
singleSelect: boolean;
|
|
213
|
+
};
|
|
214
|
+
export type DataRegulationProps = {
|
|
215
|
+
type: string;
|
|
216
|
+
type2: string;
|
|
217
|
+
rangeTxt: string;
|
|
218
|
+
value1: string;
|
|
219
|
+
value2: string;
|
|
220
|
+
validity: string;
|
|
221
|
+
remote: boolean;
|
|
222
|
+
prohibitInput: boolean;
|
|
223
|
+
hintShow: boolean;
|
|
224
|
+
hintValue: string;
|
|
225
|
+
};
|
|
226
|
+
export type ConditionRulesProps = {
|
|
227
|
+
rulesType: string;
|
|
228
|
+
rulesValue: string;
|
|
229
|
+
textColor: {
|
|
230
|
+
check: boolean;
|
|
231
|
+
color: string;
|
|
232
|
+
};
|
|
233
|
+
cellColor: {
|
|
234
|
+
check: boolean;
|
|
235
|
+
color: string;
|
|
236
|
+
};
|
|
237
|
+
betweenValue: {
|
|
238
|
+
value1: string;
|
|
239
|
+
value2: string;
|
|
240
|
+
};
|
|
241
|
+
dateValue: string;
|
|
242
|
+
repeatValue: string;
|
|
243
|
+
projectValue: string;
|
|
244
|
+
};
|
|
245
|
+
export type FilterOptions = {
|
|
246
|
+
startRow: number;
|
|
247
|
+
endRow: number;
|
|
248
|
+
startCol: number;
|
|
249
|
+
endCol: number;
|
|
250
|
+
left: number;
|
|
251
|
+
top: number;
|
|
252
|
+
width: number;
|
|
253
|
+
height: number;
|
|
254
|
+
items: {
|
|
255
|
+
col: number;
|
|
256
|
+
left: number;
|
|
257
|
+
top: number;
|
|
258
|
+
}[];
|
|
259
|
+
};
|
|
260
|
+
export type History = {
|
|
261
|
+
patches: ImmerPatch[];
|
|
262
|
+
inversePatches: ImmerPatch[];
|
|
263
|
+
options?: PatchOptions;
|
|
264
|
+
};
|
|
265
|
+
export type Freezen = {
|
|
266
|
+
horizontal?: {
|
|
267
|
+
freezenhorizontaldata: any[];
|
|
268
|
+
top: number;
|
|
269
|
+
};
|
|
270
|
+
vertical?: {
|
|
271
|
+
freezenverticaldata: any[];
|
|
272
|
+
left: number;
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
export type GlobalCache = {
|
|
276
|
+
overwriteCell?: boolean;
|
|
277
|
+
ignoreWriteCell?: boolean;
|
|
278
|
+
doNotFocus?: boolean;
|
|
279
|
+
doNotUpdateCell?: boolean;
|
|
280
|
+
recentTextColor?: string;
|
|
281
|
+
recentBackgroundColor?: string;
|
|
282
|
+
visibleColumnsUnique?: number[];
|
|
283
|
+
visibleRowsUnique?: number[];
|
|
284
|
+
undoList: History[];
|
|
285
|
+
redoList: History[];
|
|
286
|
+
editingCommentBoxEle?: HTMLDivElement;
|
|
287
|
+
freezen?: Record<string, Freezen>;
|
|
288
|
+
image?: {
|
|
289
|
+
imgInitialPosition: Rect | undefined;
|
|
290
|
+
cursorMoveStartPosition: {
|
|
291
|
+
x: number;
|
|
292
|
+
y: number;
|
|
293
|
+
} | undefined;
|
|
294
|
+
resizingSide: string | undefined;
|
|
295
|
+
};
|
|
296
|
+
commentBox?: {
|
|
297
|
+
movingId: string | undefined;
|
|
298
|
+
resizingId: string | undefined;
|
|
299
|
+
resizingSide: string | undefined;
|
|
300
|
+
commentRC: {
|
|
301
|
+
r: number;
|
|
302
|
+
c: number;
|
|
303
|
+
rc: string;
|
|
304
|
+
};
|
|
305
|
+
boxInitialPosition: Rect | undefined;
|
|
306
|
+
cursorMoveStartPosition: {
|
|
307
|
+
x: number;
|
|
308
|
+
y: number;
|
|
309
|
+
} | undefined;
|
|
310
|
+
};
|
|
311
|
+
searchDialog?: {
|
|
312
|
+
mouseEnter?: boolean;
|
|
313
|
+
moveProps?: {
|
|
314
|
+
initialPosition: Rect | undefined;
|
|
315
|
+
cursorMoveStartPosition: {
|
|
316
|
+
x: number;
|
|
317
|
+
y: number;
|
|
318
|
+
} | undefined;
|
|
319
|
+
};
|
|
320
|
+
};
|
|
321
|
+
linkCard?: {
|
|
322
|
+
mouseEnter?: boolean;
|
|
323
|
+
rangeSelectionModal?: {
|
|
324
|
+
initialPosition: Rect | undefined;
|
|
325
|
+
cursorMoveStartPosition: {
|
|
326
|
+
x: number;
|
|
327
|
+
y: number;
|
|
328
|
+
} | undefined;
|
|
329
|
+
};
|
|
330
|
+
};
|
|
331
|
+
dragCellStartPos?: {
|
|
332
|
+
x: number;
|
|
333
|
+
y: number;
|
|
334
|
+
};
|
|
335
|
+
touchMoveStatus?: boolean;
|
|
336
|
+
touchHandleStatus?: boolean;
|
|
337
|
+
touchMoveStartPos?: {
|
|
338
|
+
x: number;
|
|
339
|
+
y: number;
|
|
340
|
+
vy: number;
|
|
341
|
+
moveType: string;
|
|
342
|
+
vy_x?: number;
|
|
343
|
+
vy_y?: number;
|
|
344
|
+
scrollTop?: number;
|
|
345
|
+
scrollLeft?: number;
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
export type SingleRange = {
|
|
349
|
+
row: number[];
|
|
350
|
+
column: number[];
|
|
351
|
+
};
|
|
352
|
+
export type Range = SingleRange[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Context } from "../context";
|
|
2
|
+
import { Sheet } from "../types";
|
|
3
|
+
export * from "./patch";
|
|
4
|
+
export declare function generateRandomSheetName(file: Sheet[], isPivotTable: boolean, ctx: Context): string;
|
|
5
|
+
export declare function rgbToHex(color: string): string;
|
|
6
|
+
export declare function indexToColumnChar(n: number): string;
|
|
7
|
+
export declare function columnCharToIndex(a: string): number;
|
|
8
|
+
export declare function escapeScriptTag(str: string): string;
|
|
9
|
+
export declare function escapeHTMLTag(str: string): string;
|
|
10
|
+
export declare function getSheetIndex(ctx: Context, id: string): number | null;
|
|
11
|
+
export declare function getSheetIdByName(ctx: Context, name: string): string | null | undefined;
|
|
12
|
+
export declare function getSheetByIndex(ctx: Context, id: string): Sheet | null;
|
|
13
|
+
export declare function getNowDateTime(format: number): string;
|
|
14
|
+
export declare function replaceHtml(temp: string, dataarry: any): string;
|
|
15
|
+
export declare function getRegExpStr(str: string): string;
|
|
16
|
+
export declare function chatatABC(n: number): string;
|
|
17
|
+
export declare function isAllowEdit(ctx: Context, range?: Sheet["luckysheet_select_save"]): boolean;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Patch } from "immer";
|
|
2
|
+
import { Context } from "../context";
|
|
3
|
+
import { Op, Sheet } from "../types";
|
|
4
|
+
export type ChangedSheet = {
|
|
5
|
+
index?: number;
|
|
6
|
+
id?: string;
|
|
7
|
+
value?: Sheet;
|
|
8
|
+
order?: number;
|
|
9
|
+
};
|
|
10
|
+
export type PatchOptions = {
|
|
11
|
+
insertRowColOp?: {
|
|
12
|
+
type: "row" | "column";
|
|
13
|
+
index: number;
|
|
14
|
+
count: number;
|
|
15
|
+
direction: "lefttop" | "rightbottom";
|
|
16
|
+
id: string;
|
|
17
|
+
};
|
|
18
|
+
deleteRowColOp?: {
|
|
19
|
+
type: "row" | "column";
|
|
20
|
+
start: number;
|
|
21
|
+
end: number;
|
|
22
|
+
id: string;
|
|
23
|
+
};
|
|
24
|
+
restoreDeletedCells?: boolean;
|
|
25
|
+
addSheetOp?: boolean;
|
|
26
|
+
deleteSheetOp?: {
|
|
27
|
+
id: string;
|
|
28
|
+
};
|
|
29
|
+
addSheet?: ChangedSheet;
|
|
30
|
+
deletedSheet?: ChangedSheet;
|
|
31
|
+
id?: string;
|
|
32
|
+
};
|
|
33
|
+
export declare function filterPatch(patches: Patch[]): Patch[];
|
|
34
|
+
export declare function extractFormulaCellOps(ops: Op[]): Op[];
|
|
35
|
+
export declare function patchToOp(ctx: Context, patches: Patch[], options?: PatchOptions, undo?: boolean): Op[];
|
|
36
|
+
export declare function opToPatch(ctx: Context, ops: Op[]): [Patch[], Op[]];
|
|
37
|
+
export declare function inverseRowColOptions(options?: PatchOptions): PatchOptions | undefined;
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@leankylin-sheet/core",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"module": "dist/index.esm.js",
|
|
6
|
+
"typings": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"repository": "http://114.55.85.79:19999/leankylin-front/leankylin-sheet",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@leankylin-sheet/formula-parser": "^0.3.1",
|
|
14
|
+
"dayjs": "^1.11.0",
|
|
15
|
+
"immer": "^9.0.12",
|
|
16
|
+
"lodash": "^4.17.21",
|
|
17
|
+
"numeral": "^2.0.6",
|
|
18
|
+
"uuid": "^8.3.2"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/lodash": "^4.14.179",
|
|
22
|
+
"@types/numeral": "^2.0.2",
|
|
23
|
+
"@types/uuid": "^8.3.4"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"spreadsheet",
|
|
27
|
+
"sheet",
|
|
28
|
+
"excel",
|
|
29
|
+
"data table",
|
|
30
|
+
"table",
|
|
31
|
+
"data grid",
|
|
32
|
+
"react",
|
|
33
|
+
"reactjs",
|
|
34
|
+
"react component",
|
|
35
|
+
"collabration",
|
|
36
|
+
"collabrative"
|
|
37
|
+
],
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"gitHead": "3c2ca6f23b671f025ae33763d2b30e5b407b6f8b"
|
|
42
|
+
}
|