@licium/editor-plugin-table-merged-cell 3.1.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/LICENSE +21 -0
- package/README.md +181 -0
- package/dist/toastui-editor-plugin-table-merged-cell.css +27 -0
- package/dist/toastui-editor-plugin-table-merged-cell.js +1235 -0
- package/package.json +49 -0
- package/types/index.d.ts +105 -0
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@licium/editor-plugin-table-merged-cell",
|
|
3
|
+
"version": "3.1.0",
|
|
4
|
+
"description": "TOAST UI Editor : Table Merged Cell Plugin",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"nhn",
|
|
7
|
+
"nhn cloud",
|
|
8
|
+
"toast",
|
|
9
|
+
"toastui",
|
|
10
|
+
"toast-ui",
|
|
11
|
+
"editor",
|
|
12
|
+
"plugin",
|
|
13
|
+
"table",
|
|
14
|
+
"merged-cell"
|
|
15
|
+
],
|
|
16
|
+
"main": "dist/toastui-editor-plugin-table-merged-cell.js",
|
|
17
|
+
"files": [
|
|
18
|
+
"dist/*.js",
|
|
19
|
+
"dist/*.css",
|
|
20
|
+
"types/index.d.ts"
|
|
21
|
+
],
|
|
22
|
+
"types": "types/index.d.ts",
|
|
23
|
+
"author": "NHN Cloud FE Development Lab <dl_javascript@nhn.com>",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/nhn/tui.editor.git",
|
|
28
|
+
"directory": "plugins/table-merged-cell"
|
|
29
|
+
},
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/nhn/tui.editor/issues"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://ui.toast.com",
|
|
34
|
+
"browserslist": "last 2 versions, not ie <= 10",
|
|
35
|
+
"scripts": {
|
|
36
|
+
"lint": "eslint .",
|
|
37
|
+
"test:types": "tsc",
|
|
38
|
+
"test": "jest --watch",
|
|
39
|
+
"test:ci": "jest",
|
|
40
|
+
"serve": "snowpack dev",
|
|
41
|
+
"serve:ie": "webpack serve",
|
|
42
|
+
"build:cdn": "webpack build --env cdn & webpack build --env cdn minify",
|
|
43
|
+
"build": "webpack build && npm run build:cdn"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
},
|
|
48
|
+
"gitHead": "cbc7cab7b3f081a1aaf1d338b8138512ace132b9"
|
|
49
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
PluginCommandMap,
|
|
3
|
+
TableMdNode,
|
|
4
|
+
TableCellMdNode,
|
|
5
|
+
MdNode,
|
|
6
|
+
PluginContext,
|
|
7
|
+
PluginInfo,
|
|
8
|
+
} from '@licium/editor';
|
|
9
|
+
import type { Selection } from 'prosemirror-state';
|
|
10
|
+
import type { Node, ResolvedPos } from 'prosemirror-model';
|
|
11
|
+
|
|
12
|
+
interface TableBodyMdNode extends MdNode {
|
|
13
|
+
parent: TableMdNode;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface TableHeadMdNode extends MdNode {
|
|
17
|
+
parent: TableMdNode;
|
|
18
|
+
firstChild: MergedTableRowMdNode;
|
|
19
|
+
lastChild: MergedTableRowMdNode;
|
|
20
|
+
next: TableBodyMdNode;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type SpanType = '@cols' | '@rows';
|
|
24
|
+
|
|
25
|
+
export interface MergedTableRowMdNode extends MdNode {
|
|
26
|
+
firstChild: MergedTableCellMdNode | null;
|
|
27
|
+
lastChild: MergedTableCellMdNode | null;
|
|
28
|
+
parent: TableBodyMdNode | TableHeadMdNode;
|
|
29
|
+
prev: MergedTableRowMdNode | null;
|
|
30
|
+
next: MergedTableRowMdNode | null;
|
|
31
|
+
rowspanMap: { [key: string]: number };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface MergedTableCellMdNode extends TableCellMdNode {
|
|
35
|
+
prev: MergedTableCellMdNode | null;
|
|
36
|
+
next: MergedTableCellMdNode | null;
|
|
37
|
+
parent: MergedTableRowMdNode;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface CellSelection extends Selection {
|
|
41
|
+
startCell: ResolvedPos;
|
|
42
|
+
endCell: ResolvedPos;
|
|
43
|
+
isCellSelection: boolean;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
interface CellInfo {
|
|
47
|
+
offset: number;
|
|
48
|
+
nodeSize: number;
|
|
49
|
+
extended?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface SelectionInfo {
|
|
53
|
+
startRowIdx: number;
|
|
54
|
+
startColIdx: number;
|
|
55
|
+
endRowIdx: number;
|
|
56
|
+
endColIdx: number;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface SpanMap {
|
|
60
|
+
[key: number]: { count: number; startSpanIdx: number };
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface RowInfo {
|
|
64
|
+
[key: number]: CellInfo;
|
|
65
|
+
length: number;
|
|
66
|
+
rowspanMap: SpanMap;
|
|
67
|
+
colspanMap: SpanMap;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
interface SpanInfo {
|
|
71
|
+
node: Node;
|
|
72
|
+
pos: number;
|
|
73
|
+
count: number;
|
|
74
|
+
startSpanIdx: number;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface TableOffsetMapFactory {
|
|
78
|
+
create(pos: ResolvedPos): TableOffsetMap;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface TableOffsetMap {
|
|
82
|
+
rowInfo: RowInfo[];
|
|
83
|
+
table: Node;
|
|
84
|
+
totalRowCount: number;
|
|
85
|
+
totalColumnCount: number;
|
|
86
|
+
tableStartOffset: number;
|
|
87
|
+
tableEndOffset: number;
|
|
88
|
+
getCellInfo(rowIdx: number, colIdx: number): CellInfo;
|
|
89
|
+
posAt(rowIdx: number, colIdx: number): number;
|
|
90
|
+
getNodeAndPos(rowIdx: number, colIdx: number): { node: Node; pos: number };
|
|
91
|
+
extendedRowspan(rowIdx: number, colIdx: number): boolean;
|
|
92
|
+
extendedColspan(rowIdx: number, colIdx: number): boolean;
|
|
93
|
+
getRowspanCount(rowIdx: number, colIdx: number): number;
|
|
94
|
+
getColspanCount(rowIdx: number, colIdx: number): number;
|
|
95
|
+
decreaseColspanCount(rowIdx: number, colIdx: number): number;
|
|
96
|
+
decreaseRowspanCount(rowIdx: number, colIdx: number): number;
|
|
97
|
+
getColspanStartInfo(rowIdx: number, colIdx: number): SpanInfo | null;
|
|
98
|
+
getRowspanStartInfo(rowIdx: number, colIdx: number): SpanInfo | null;
|
|
99
|
+
getRectOffsets(startCellPos: ResolvedPos, endCellPos?: ResolvedPos): SelectionInfo;
|
|
100
|
+
getSpannedOffsets(selectionInfo: SelectionInfo): SelectionInfo;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export type CommandFn = PluginCommandMap[keyof PluginCommandMap];
|
|
104
|
+
|
|
105
|
+
export default function tableMergedCellPlugin(context: PluginContext): PluginInfo;
|