@hailin-zheng/editor-core 1.0.9 → 1.0.13
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/lib/doc-ruler.d.ts +51 -0
- package/{src/med_editor/doc-ruler.ts → lib/doc-ruler.js} +73 -100
- package/lib/doc-ruler.js.map +1 -0
- package/lib/framework/common-util.d.ts +63 -0
- package/lib/framework/common-util.js +178 -0
- package/lib/framework/common-util.js.map +1 -0
- package/lib/framework/document-change.d.ts +265 -0
- package/{src/med_editor/framework/document-change.ts → lib/framework/document-change.js} +257 -306
- package/lib/framework/document-change.js.map +1 -0
- package/lib/framework/document-combine.d.ts +24 -0
- package/{src/med_editor/framework/document-combine.ts → lib/framework/document-combine.js} +11 -15
- package/lib/framework/document-combine.js.map +1 -0
- package/lib/framework/document-comment.d.ts +46 -0
- package/{src/med_editor/framework/document-comment.ts → lib/framework/document-comment.js} +37 -52
- package/lib/framework/document-comment.js.map +1 -0
- package/lib/framework/document-context.d.ts +149 -0
- package/{src/med_editor/framework/document-context.ts → lib/framework/document-context.js} +101 -181
- package/lib/framework/document-context.js.map +1 -0
- package/lib/framework/document-eval-func.d.ts +18 -0
- package/{src/med_editor/framework/document-eval-func.ts → lib/framework/document-eval-func.js} +11 -16
- package/lib/framework/document-eval-func.js.map +1 -0
- package/lib/framework/document-event.d.ts +213 -0
- package/{src/med_editor/framework/document-event.ts → lib/framework/document-event.js} +216 -244
- package/lib/framework/document-event.js.map +1 -0
- package/lib/framework/document-history.d.ts +26 -0
- package/{src/med_editor/framework/document-history.ts → lib/framework/document-history.js} +14 -25
- package/lib/framework/document-history.js.map +1 -0
- package/lib/framework/document-images-loader.d.ts +16 -0
- package/{src/med_editor/framework/document-images-loader.ts → lib/framework/document-images-loader.js} +17 -25
- package/lib/framework/document-images-loader.js.map +1 -0
- package/lib/framework/document-input-cursor.d.ts +78 -0
- package/{src/med_editor/framework/document-input-cursor.ts → lib/framework/document-input-cursor.js} +71 -76
- package/lib/framework/document-input-cursor.js.map +1 -0
- package/lib/framework/document-paint.d.ts +34 -0
- package/{src/med_editor/framework/document-paint.ts → lib/framework/document-paint.js} +28 -35
- package/lib/framework/document-paint.js.map +1 -0
- package/lib/framework/document-print-offscreen.d.ts +38 -0
- package/{src/med_editor/framework/document-print-offscreen.ts → lib/framework/document-print-offscreen.js} +19 -25
- package/lib/framework/document-print-offscreen.js.map +1 -0
- package/lib/framework/document-print.d.ts +60 -0
- package/{src/med_editor/framework/document-print.ts → lib/framework/document-print.js} +41 -57
- package/lib/framework/document-print.js.map +1 -0
- package/lib/framework/document-segmenter.d.ts +2 -0
- package/lib/framework/document-segmenter.js +106 -0
- package/lib/framework/document-segmenter.js.map +1 -0
- package/lib/framework/document-selection.d.ts +89 -0
- package/{src/med_editor/framework/document-selection.ts → lib/framework/document-selection.js} +84 -115
- package/lib/framework/document-selection.js.map +1 -0
- package/lib/framework/document-template.d.ts +4 -0
- package/{src/med_editor/framework/document-template.ts → lib/framework/document-template.js} +3 -3
- package/lib/framework/document-template.js.map +1 -0
- package/lib/framework/document-textline-mode.d.ts +7 -0
- package/lib/framework/document-textline-mode.js +30 -0
- package/lib/framework/document-textline-mode.js.map +1 -0
- package/lib/framework/element-define.d.ts +319 -0
- package/{src/med_editor/framework/element-define.ts → lib/framework/element-define.js} +206 -301
- package/lib/framework/element-define.js.map +1 -0
- package/lib/framework/element-event-define.d.ts +98 -0
- package/lib/framework/element-event-define.js +108 -0
- package/lib/framework/element-event-define.js.map +1 -0
- package/lib/framework/element-measure.d.ts +97 -0
- package/{src/med_editor/framework/element-measure.ts → lib/framework/element-measure.js} +121 -143
- package/lib/framework/element-measure.js.map +1 -0
- package/lib/framework/element-paint.d.ts +42 -0
- package/{src/med_editor/framework/element-paint.ts → lib/framework/element-paint.js} +37 -43
- package/lib/framework/element-paint.js.map +1 -0
- package/lib/framework/element-props.d.ts +301 -0
- package/{src/med_editor/framework/element-props.ts → lib/framework/element-props.js} +202 -331
- package/lib/framework/element-props.js.map +1 -0
- package/lib/framework/element-reader.d.ts +19 -0
- package/{src/med_editor/framework/element-reader.ts → lib/framework/element-reader.js} +30 -38
- package/lib/framework/element-reader.js.map +1 -0
- package/lib/framework/element-render-cut.d.ts +55 -0
- package/{src/med_editor/framework/element-render-cut.ts → lib/framework/element-render-cut.js} +106 -113
- package/lib/framework/element-render-cut.js.map +1 -0
- package/lib/framework/element-serialize.d.ts +30 -0
- package/{src/med_editor/framework/element-serialize.ts → lib/framework/element-serialize.js} +24 -37
- package/lib/framework/element-serialize.js.map +1 -0
- package/lib/framework/element-util.d.ts +369 -0
- package/{src/med_editor/framework/element-util.ts → lib/framework/element-util.js} +216 -317
- package/lib/framework/element-util.js.map +1 -0
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts +24 -0
- package/{src/med_editor/framework/impl/checkbox/checkbox-impl.ts → lib/framework/impl/checkbox/checkbox-impl.js} +18 -25
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +1 -0
- package/lib/framework/impl/comments/comment-content-impl.d.ts +40 -0
- package/{src/med_editor/framework/impl/comments/comment-content-impl.ts → lib/framework/impl/comments/comment-content-impl.js} +31 -45
- package/lib/framework/impl/comments/comment-content-impl.js.map +1 -0
- package/lib/framework/impl/comments/comment-element-impl.d.ts +21 -0
- package/{src/med_editor/framework/impl/comments/comment-element-impl.ts → lib/framework/impl/comments/comment-element-impl.js} +18 -21
- package/lib/framework/impl/comments/comment-element-impl.js.map +1 -0
- package/lib/framework/impl/comments/comments-container-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/comments/comments-container-impl.ts → lib/framework/impl/comments/comments-container-impl.js} +15 -21
- package/lib/framework/impl/comments/comments-container-impl.js.map +1 -0
- package/lib/framework/impl/comments/comments-util.d.ts +12 -0
- package/{src/med_editor/framework/impl/comments/comments-util.ts → lib/framework/impl/comments/comments-util.js} +17 -34
- package/lib/framework/impl/comments/comments-util.js.map +1 -0
- package/lib/framework/impl/comments/validate-msg-impl.d.ts +21 -0
- package/{src/med_editor/framework/impl/comments/validate-msg-impl.ts → lib/framework/impl/comments/validate-msg-impl.js} +15 -26
- package/lib/framework/impl/comments/validate-msg-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-decorate-impl.d.ts +30 -0
- package/{src/med_editor/framework/impl/data-element/data-decorate-impl.ts → lib/framework/impl/data-element/data-decorate-impl.js} +21 -25
- package/lib/framework/impl/data-element/data-decorate-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-barcode.d.ts +31 -0
- package/{src/med_editor/framework/impl/data-element/data-element-barcode.ts → lib/framework/impl/data-element/data-element-barcode.js} +27 -39
- package/lib/framework/impl/data-element/data-element-barcode.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-base-impl.d.ts +68 -0
- package/{src/med_editor/framework/impl/data-element/data-element-base-impl.ts → lib/framework/impl/data-element/data-element-base-impl.js} +44 -73
- package/lib/framework/impl/data-element/data-element-base-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-check-impl.d.ts +35 -0
- package/{src/med_editor/framework/impl/data-element/data-element-check-impl.ts → lib/framework/impl/data-element/data-element-check-impl.js} +33 -46
- package/lib/framework/impl/data-element/data-element-check-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-date-impl.d.ts +23 -0
- package/{src/med_editor/framework/impl/data-element/data-element-date-impl.ts → lib/framework/impl/data-element/data-element-date-impl.js} +22 -39
- package/lib/framework/impl/data-element/data-element-date-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-group-impl.d.ts +23 -0
- package/{src/med_editor/framework/impl/data-element/data-element-group-impl.ts → lib/framework/impl/data-element/data-element-group-impl.js} +29 -49
- package/lib/framework/impl/data-element/data-element-group-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-image-impl.d.ts +30 -0
- package/{src/med_editor/framework/impl/data-element/data-element-image-impl.ts → lib/framework/impl/data-element/data-element-image-impl.js} +26 -36
- package/lib/framework/impl/data-element/data-element-image-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-list-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/data-element/data-element-list-impl.ts → lib/framework/impl/data-element/data-element-list-impl.js} +30 -41
- package/lib/framework/impl/data-element/data-element-list-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-text-impl.d.ts +23 -0
- package/{src/med_editor/framework/impl/data-element/data-element-text-impl.ts → lib/framework/impl/data-element/data-element-text-impl.js} +20 -34
- package/lib/framework/impl/data-element/data-element-text-impl.js.map +1 -0
- package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +21 -0
- package/{src/med_editor/framework/impl/decorate/fill-null-space-imple.ts → lib/framework/impl/decorate/fill-null-space-imple.js} +10 -15
- package/lib/framework/impl/decorate/fill-null-space-imple.js.map +1 -0
- package/lib/framework/impl/document/doc-body-impl.d.ts +27 -0
- package/{src/med_editor/framework/impl/document/doc-body-impl.ts → lib/framework/impl/document/doc-body-impl.js} +15 -31
- package/lib/framework/impl/document/doc-body-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-body-part-impl.d.ts +30 -0
- package/{src/med_editor/framework/impl/document/doc-body-part-impl.ts → lib/framework/impl/document/doc-body-part-impl.js} +16 -26
- package/lib/framework/impl/document/doc-body-part-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-container-impl.d.ts +16 -0
- package/lib/framework/impl/document/doc-container-impl.js +21 -0
- package/lib/framework/impl/document/doc-container-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-footer-impl.d.ts +26 -0
- package/{src/med_editor/framework/impl/document/doc-footer-impl.ts → lib/framework/impl/document/doc-footer-impl.js} +18 -29
- package/lib/framework/impl/document/doc-footer-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-header-impl.d.ts +26 -0
- package/{src/med_editor/framework/impl/document/doc-header-impl.ts → lib/framework/impl/document/doc-header-impl.js} +16 -33
- package/lib/framework/impl/document/doc-header-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-impl.d.ts +61 -0
- package/{src/med_editor/framework/impl/document/doc-impl.ts → lib/framework/impl/document/doc-impl.js} +42 -59
- package/lib/framework/impl/document/doc-impl.js.map +1 -0
- package/lib/framework/impl/media-formula/menstrual-history.d.ts +35 -0
- package/{src/med_editor/framework/impl/media-formula/menstrual-history.ts → lib/framework/impl/media-formula/menstrual-history.js} +35 -57
- package/lib/framework/impl/media-formula/menstrual-history.js.map +1 -0
- package/lib/framework/impl/paragraph/p-impl.d.ts +45 -0
- package/{src/med_editor/framework/impl/paragraph/p-impl.ts → lib/framework/impl/paragraph/p-impl.js} +28 -62
- package/lib/framework/impl/paragraph/p-impl.js.map +1 -0
- package/lib/framework/impl/picture/image-impl.d.ts +31 -0
- package/{src/med_editor/framework/impl/picture/image-impl.ts → lib/framework/impl/picture/image-impl.js} +23 -35
- package/lib/framework/impl/picture/image-impl.js.map +1 -0
- package/lib/framework/impl/radio/radio-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/radio/radio-impl.ts → lib/framework/impl/radio/radio-impl.js} +19 -26
- package/lib/framework/impl/radio/radio-impl.js.map +1 -0
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/symbol/br-symbol-impl.ts → lib/framework/impl/symbol/br-symbol-impl.js} +14 -20
- package/lib/framework/impl/symbol/br-symbol-impl.js.map +1 -0
- package/lib/framework/impl/symbol/p-symbol-impl.d.ts +19 -0
- package/{src/med_editor/framework/impl/symbol/p-symbol-impl.ts → lib/framework/impl/symbol/p-symbol-impl.js} +11 -14
- package/lib/framework/impl/symbol/p-symbol-impl.js.map +1 -0
- package/lib/framework/impl/table/table-cell-impl.d.ts +37 -0
- package/{src/med_editor/framework/impl/table/table-cell-impl.ts → lib/framework/impl/table/table-cell-impl.js} +28 -39
- package/lib/framework/impl/table/table-cell-impl.js.map +1 -0
- package/lib/framework/impl/table/table-impl.d.ts +55 -0
- package/{src/med_editor/framework/impl/table/table-impl.ts → lib/framework/impl/table/table-impl.js} +82 -120
- package/lib/framework/impl/table/table-impl.js.map +1 -0
- package/lib/framework/impl/table/table-row-impl.d.ts +26 -0
- package/{src/med_editor/framework/impl/table/table-row-impl.ts → lib/framework/impl/table/table-row-impl.js} +16 -24
- package/lib/framework/impl/table/table-row-impl.js.map +1 -0
- package/lib/framework/impl/table/table-split-cell-patch.d.ts +20 -0
- package/{src/med_editor/framework/impl/table/table-split-cell-patch.ts → lib/framework/impl/table/table-split-cell-patch.js} +22 -31
- package/lib/framework/impl/table/table-split-cell-patch.js.map +1 -0
- package/lib/framework/impl/table/table-split-cell.d.ts +90 -0
- package/{src/med_editor/framework/impl/table/table-split-cell.ts → lib/framework/impl/table/table-split-cell.js} +94 -105
- package/lib/framework/impl/table/table-split-cell.js.map +1 -0
- package/lib/framework/impl/table/table-util.d.ts +150 -0
- package/{src/med_editor/framework/impl/table/table-util.ts → lib/framework/impl/table/table-util.js} +157 -195
- package/lib/framework/impl/table/table-util.js.map +1 -0
- package/lib/framework/impl/text/text-impl.d.ts +32 -0
- package/{src/med_editor/framework/impl/text/text-impl.ts → lib/framework/impl/text/text-impl.js} +32 -46
- package/lib/framework/impl/text/text-impl.js.map +1 -0
- package/lib/framework/impl/text/track-run-impl.d.ts +27 -0
- package/{src/med_editor/framework/impl/text/track-run-impl.ts → lib/framework/impl/text/track-run-impl.js} +28 -51
- package/lib/framework/impl/text/track-run-impl.js.map +1 -0
- package/lib/framework/notify.d.ts +13 -0
- package/{src/med_editor/framework/notify.ts → lib/framework/notify.js} +36 -50
- package/lib/framework/notify.js.map +1 -0
- package/lib/framework/range-util.d.ts +40 -0
- package/{src/med_editor/framework/range-util.ts → lib/framework/range-util.js} +71 -80
- package/lib/framework/range-util.js.map +1 -0
- package/lib/framework/render-context.d.ts +91 -0
- package/{src/med_editor/framework/render-context.ts → lib/framework/render-context.js} +64 -111
- package/lib/framework/render-context.js.map +1 -0
- package/lib/framework/render-define.d.ts +109 -0
- package/{src/med_editor/framework/render-define.ts → lib/framework/render-define.js} +61 -90
- package/lib/framework/render-define.js.map +1 -0
- package/lib/framework/selection-overlays.d.ts +30 -0
- package/{src/med_editor/framework/selection-overlays.ts → lib/framework/selection-overlays.js} +16 -25
- package/lib/framework/selection-overlays.js.map +1 -0
- package/lib/texteditor.d.ts +318 -0
- package/{src/med_editor/texteditor.ts → lib/texteditor.js} +189 -286
- package/lib/texteditor.js.map +1 -0
- package/lib/util/subject.d.ts +34 -0
- package/lib/util/subject.js +88 -0
- package/lib/util/subject.js.map +1 -0
- package/lib/util/table-bind.d.ts +5 -0
- package/{src/med_editor/util/table-bind.ts → lib/util/table-bind.js} +2 -2
- package/lib/util/table-bind.js.map +1 -0
- package/package.json +2 -2
- package/src/med_editor/framework/common-util.ts +0 -200
- package/src/med_editor/framework/document-segmenter.ts +0 -211
- package/src/med_editor/framework/document-textline-mode.ts +0 -34
- package/src/med_editor/framework/element-event-define.ts +0 -141
- package/src/med_editor/framework/impl/document/doc-container-impl.ts +0 -24
- package/src/med_editor/util/subject.ts +0 -118
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +0 -3573
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +0 -3573
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +0 -315
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/211/271/346/263/250.json +0 -122
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/226/207/346/241/243/351/252/214/350/257/201.json +0 -3599
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/351/225/277/346/226/207/346/234/254.json +0 -24586
- package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +0 -2874
- package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +0 -341
- package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +0 -2201
- package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +0 -1069
- package/src/med_editor//347/227/205/347/250/213/345/275/225//345/206/205/351/225/234/344/270/213/346/262/273/347/226/227/350/256/260/345/275/225.json +0 -125
- package/src/med_editor//347/227/205/347/250/213/345/275/225//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225/346/250/241/346/235/277.json +0 -86
- package/src/med_editor//347/227/205/347/250/213/345/275/225//346/227/245/345/270/270/347/227/205/347/250/213/350/256/260/345/275/225.json +0 -115
- package/src/med_editor//347/227/205/347/250/213/345/275/225//346/237/245/346/210/277/350/256/260/345/275/2251.json +0 -108
- package/src/med_editor//347/227/205/347/250/213/345/275/225//351/246/226/346/254/241/344/270/212/347/272/247/345/214/273/345/270/210/346/237/245/346/210/277/350/256/260/345/275/225.json +0 -272
- package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +0 -1070
@@ -1,30 +1,30 @@
|
|
1
|
-
import { SelectionState } from "../../document-selection";
|
2
1
|
import { ElementUtil } from "../../element-util";
|
3
2
|
import { TableCellElement } from "./table-cell-impl";
|
4
3
|
import { TableElement } from "./table-impl";
|
5
4
|
import { TableRowElement } from "./table-row-impl";
|
6
|
-
import {
|
5
|
+
import { ColumnPatchUtil } from "./table-split-cell-patch";
|
7
6
|
import { TableUtil } from "./table-util";
|
8
7
|
/**
|
9
8
|
* 拆分单元格
|
10
9
|
* 蜀道难,难于上青天;拆分单元格,头发秃,精神衰,眼睛昏,身体废。
|
11
|
-
*
|
10
|
+
*
|
12
11
|
* 1.拆分为多列规则:不影响其他列宽度,将当前列宽度均分
|
13
12
|
*/
|
14
13
|
export class TableSplitCell {
|
15
14
|
/**
|
16
|
-
*
|
15
|
+
*
|
17
16
|
* 普通单元格可以任意拆分行和列
|
18
17
|
* 已合并的单元格,可以拆分任意数量的列;可以拆分的数量必须为合并单元格数量的约数
|
19
18
|
*/
|
20
|
-
static splitCell(ss
|
19
|
+
static splitCell(ss, rows, cols) {
|
21
20
|
const focusCell = ElementUtil.getParentByType(ss.startControl, TableCellElement);
|
22
21
|
if (!focusCell) {
|
23
|
-
throw new Error('focusCell is null')
|
22
|
+
throw new Error('focusCell is null');
|
24
23
|
}
|
25
24
|
if (!focusCell.props.hMerge && !focusCell.props.vMerge) {
|
26
25
|
this.splitNormalCell(ss, rows, cols);
|
27
|
-
}
|
26
|
+
}
|
27
|
+
else {
|
28
28
|
this.splitMergeCell(ss, rows, cols);
|
29
29
|
}
|
30
30
|
// else if (!focusCell.cellProps.hMerge) {
|
@@ -37,12 +37,10 @@ export class TableSplitCell {
|
|
37
37
|
// this.verSplitVerMergeCell(ss, rows, endColIndex);
|
38
38
|
// }
|
39
39
|
}
|
40
|
-
|
41
|
-
|
42
40
|
/**
|
43
41
|
* 拆分普通的单元格
|
44
42
|
*/
|
45
|
-
|
43
|
+
static splitNormalCell(ss, rows, cols) {
|
46
44
|
rows = rows < 1 ? 1 : rows;
|
47
45
|
cols = cols < 1 ? 1 : cols;
|
48
46
|
if (rows === 1 && cols === 1) {
|
@@ -68,9 +66,9 @@ export class TableSplitCell {
|
|
68
66
|
tb.insertCol(focusCellIndex + i, splitCellWidths[i].width);
|
69
67
|
}
|
70
68
|
for (let i = 0; i < tb.length; i++) {
|
71
|
-
const row = tb.getChild(i)
|
69
|
+
const row = tb.getChild(i);
|
72
70
|
//获取主单元格
|
73
|
-
const masterCell = row.getChild(focusCellIndex)
|
71
|
+
const masterCell = row.getChild(focusCellIndex);
|
74
72
|
for (let j = 1; j < cols; j++) {
|
75
73
|
const newCell = new TableCellElement();
|
76
74
|
row.addChild(newCell, focusCellIndex + j);
|
@@ -87,24 +85,25 @@ export class TableSplitCell {
|
|
87
85
|
if (rows > 1) {
|
88
86
|
for (let i = 1; i < rows; i++) {
|
89
87
|
const newRow = TableRowElement.createRow(tb.getColsCount());
|
90
|
-
tb.addChild(newRow, focusRowIndex + i)
|
88
|
+
tb.addChild(newRow, focusRowIndex + i);
|
91
89
|
for (let j = 0; j < newRow.length; j++) {
|
92
|
-
const cell = newRow.getChild
|
93
|
-
const masterCell = focusRow.getChild
|
90
|
+
const cell = newRow.getChild(j);
|
91
|
+
const masterCell = focusRow.getChild(j);
|
94
92
|
if (j < focusCellIndex || j > focusCellIndex + cols - 1)
|
95
93
|
//紧挨上级的单元格存在横向合并
|
96
94
|
if (masterCell.props.hMerge) {
|
97
95
|
if (masterCell.props.hMerge === 'restart') {
|
98
96
|
if (!masterCell.props.vMerge) {
|
99
|
-
masterCell.props.vMerge = 'restart'
|
97
|
+
masterCell.props.vMerge = 'restart';
|
100
98
|
}
|
101
99
|
cell.props.vMerge = 'continue';
|
102
100
|
}
|
103
|
-
}
|
101
|
+
}
|
102
|
+
else {
|
104
103
|
if (!masterCell.props.vMerge) {
|
105
|
-
masterCell.props.vMerge = 'restart'
|
104
|
+
masterCell.props.vMerge = 'restart';
|
106
105
|
}
|
107
|
-
cell.props.vMerge = 'continue'
|
106
|
+
cell.props.vMerge = 'continue';
|
108
107
|
}
|
109
108
|
}
|
110
109
|
}
|
@@ -112,14 +111,13 @@ export class TableSplitCell {
|
|
112
111
|
tb.pubOnChange('self');
|
113
112
|
tb.refreshView();
|
114
113
|
}
|
115
|
-
|
116
114
|
/**
|
117
115
|
* 拆分合并的单元格
|
118
|
-
* @param ss
|
119
|
-
* @param rows
|
120
|
-
* @param cols
|
116
|
+
* @param ss
|
117
|
+
* @param rows
|
118
|
+
* @param cols
|
121
119
|
*/
|
122
|
-
static splitMergeCell(ss
|
120
|
+
static splitMergeCell(ss, rows, cols) {
|
123
121
|
rows = rows < 1 ? 1 : rows;
|
124
122
|
cols = cols < 1 ? 1 : cols;
|
125
123
|
if (rows === 1 && cols === 1) {
|
@@ -142,7 +140,7 @@ export class TableSplitCell {
|
|
142
140
|
//只有拆分的行数需要满足此条件
|
143
141
|
if (mergeRows > 1 && rows > 1) {
|
144
142
|
if (rows % mergeRows !== 0) {
|
145
|
-
throw new Error(`当前合并的行数为:${mergeRows},当前可拆分的行数是${mergeRows}的约数`)
|
143
|
+
throw new Error(`当前合并的行数为:${mergeRows},当前可拆分的行数是${mergeRows}的约数`);
|
146
144
|
}
|
147
145
|
}
|
148
146
|
//拆分的行数、列数等于合并的行数、列数
|
@@ -151,7 +149,6 @@ export class TableSplitCell {
|
|
151
149
|
TableUtil.restoreCell(ss);
|
152
150
|
return;
|
153
151
|
}
|
154
|
-
|
155
152
|
if (mergeCols === 1) {
|
156
153
|
const { endColIndex } = this.horSplitHorNormalCell(ss, rows, cols);
|
157
154
|
this.verSplitVerMergeCell(ss, rows, endColIndex);
|
@@ -162,14 +159,13 @@ export class TableSplitCell {
|
|
162
159
|
this.verSplitVerMergeCell(ss, rows, endColIndex);
|
163
160
|
}
|
164
161
|
}
|
165
|
-
|
166
162
|
/**
|
167
163
|
* 拆分横向正常的单元格
|
168
|
-
* @param ss
|
169
|
-
* @param rows
|
170
|
-
* @param cols
|
164
|
+
* @param ss
|
165
|
+
* @param rows
|
166
|
+
* @param cols
|
171
167
|
*/
|
172
|
-
static horSplitHorNormalCell(ss
|
168
|
+
static horSplitHorNormalCell(ss, rows, cols) {
|
173
169
|
const focusCell = ElementUtil.getParentByType(ss.startControl, TableCellElement);
|
174
170
|
const focusRow = ElementUtil.getParentByType(focusCell, TableRowElement);
|
175
171
|
const tb = ElementUtil.getParentByType(focusRow, TableElement);
|
@@ -189,9 +185,9 @@ export class TableSplitCell {
|
|
189
185
|
//向指定的列插入拆分单元格
|
190
186
|
if (cols > 1) {
|
191
187
|
for (let i = 0; i < tb.length; i++) {
|
192
|
-
const currRow = tb.getChild(i)
|
188
|
+
const currRow = tb.getChild(i);
|
193
189
|
//获取主单元格
|
194
|
-
const masterCell = currRow.getChild(focusCellIndex)
|
190
|
+
const masterCell = currRow.getChild(focusCellIndex);
|
195
191
|
for (let j = 1; j < cols; j++) {
|
196
192
|
const newCell = new TableCellElement();
|
197
193
|
currRow.addChild(newCell, focusCellIndex + j);
|
@@ -201,7 +197,8 @@ export class TableSplitCell {
|
|
201
197
|
masterCell.props.hMerge = 'restart';
|
202
198
|
}
|
203
199
|
newCell.props.hMerge = 'continue';
|
204
|
-
}
|
200
|
+
}
|
201
|
+
else {
|
205
202
|
newCell.props.vMerge = masterCell.props.vMerge;
|
206
203
|
}
|
207
204
|
}
|
@@ -210,7 +207,7 @@ export class TableSplitCell {
|
|
210
207
|
//在选中行下插入拆分行
|
211
208
|
//如果当前是普通单元格
|
212
209
|
if (!focusCell.props.vMerge) {
|
213
|
-
debugger
|
210
|
+
debugger;
|
214
211
|
for (let i = 1; i < rows; i++) {
|
215
212
|
const newRow = TableRowElement.createRow(tb.getColsCount());
|
216
213
|
tb.addChild(newRow, focusRowIndex + i);
|
@@ -221,16 +218,15 @@ export class TableSplitCell {
|
|
221
218
|
return {
|
222
219
|
startColIndex: focusCellIndex,
|
223
220
|
endColIndex: focusCellIndex + cols - 1
|
224
|
-
}
|
221
|
+
};
|
225
222
|
}
|
226
|
-
|
227
223
|
/**
|
228
|
-
* 横向拆分合并的单元格
|
229
|
-
* @param ss
|
230
|
-
* @param rows
|
231
|
-
* @param cols
|
224
|
+
* 横向拆分合并的单元格
|
225
|
+
* @param ss
|
226
|
+
* @param rows
|
227
|
+
* @param cols
|
232
228
|
*/
|
233
|
-
static horSplitHorMergeCell(ss
|
229
|
+
static horSplitHorMergeCell(ss, rows, cols) {
|
234
230
|
const focusCell = ElementUtil.getParentByType(ss.startControl, TableCellElement);
|
235
231
|
const focusRow = ElementUtil.getParentByType(focusCell, TableRowElement);
|
236
232
|
const tb = ElementUtil.getParentByType(focusRow, TableElement);
|
@@ -240,7 +236,7 @@ export class TableSplitCell {
|
|
240
236
|
const focusCellIndex = focusRow.getChildIndex(focusCell);
|
241
237
|
const focusRowIndex = focusRow.getIndex();
|
242
238
|
const hMergeCols = this.getHMergeCols(tb, focusRowIndex, focusCellIndex, cols);
|
243
|
-
const colsWidth = hMergeCols.reduce((prev, curr) => prev + curr.width, 0)
|
239
|
+
const colsWidth = hMergeCols.reduce((prev, curr) => prev + curr.width, 0);
|
244
240
|
const splitCols = this.getSplitCols(colsWidth, cols);
|
245
241
|
const [otherPacks, currPacks] = ColumnPatchUtil.getPatchPacks(hMergeCols, splitCols);
|
246
242
|
this.applyHorSplitColumnPatchPacks(tb, focusRowIndex, 1, otherPacks);
|
@@ -250,13 +246,12 @@ export class TableSplitCell {
|
|
250
246
|
return {
|
251
247
|
startColIndex: focusCellIndex,
|
252
248
|
endColIndex: this.getPrepareNewColCounts(otherPacks, hMergeCols)
|
253
|
-
}
|
249
|
+
};
|
254
250
|
}
|
255
|
-
|
256
251
|
/**
|
257
252
|
* 获取需要新创建的列数量
|
258
253
|
*/
|
259
|
-
|
254
|
+
static getPrepareNewColCounts(packs, hMergeCols) {
|
260
255
|
const lastColIndex = hMergeCols[hMergeCols.length - 1].index;
|
261
256
|
if (packs.length === 0) {
|
262
257
|
return lastColIndex;
|
@@ -265,13 +260,12 @@ export class TableSplitCell {
|
|
265
260
|
if (!lastColPack) {
|
266
261
|
return lastColIndex;
|
267
262
|
}
|
268
|
-
return lastColIndex + lastColPack.patchs.filter(item => item.type === 'insert').length
|
263
|
+
return lastColIndex + lastColPack.patchs.filter(item => item.type === 'insert').length;
|
269
264
|
}
|
270
|
-
|
271
265
|
/**
|
272
266
|
* 应用横向拆分单元格补丁
|
273
267
|
*/
|
274
|
-
|
268
|
+
static applyHorSplitColumnPatchPacks(tb, focusRowIndex, splitRows, packs) {
|
275
269
|
for (let i = packs.length - 1; i >= 0; i--) {
|
276
270
|
const pack = packs[i];
|
277
271
|
const colIndex = pack.part.index;
|
@@ -279,13 +273,14 @@ export class TableSplitCell {
|
|
279
273
|
const patch = pack.patchs[j];
|
280
274
|
if (patch.type === 'modify') {
|
281
275
|
tb.setCellWidth(colIndex, patch.data.width);
|
282
|
-
}
|
276
|
+
}
|
277
|
+
else if (patch.type === 'insert') {
|
283
278
|
tb.insertCol(colIndex + 1, patch.data.width);
|
284
279
|
//向指定的列插入拆分单元格
|
285
280
|
for (let i = 0; i < tb.length; i++) {
|
286
|
-
const currRow = tb.getChild(i)
|
281
|
+
const currRow = tb.getChild(i);
|
287
282
|
//获取主单元格
|
288
|
-
const masterCell = currRow.getChild(colIndex)
|
283
|
+
const masterCell = currRow.getChild(colIndex);
|
289
284
|
const newCell = new TableCellElement();
|
290
285
|
currRow.addChild(newCell, colIndex + 1);
|
291
286
|
if (!masterCell.props.hMerge) {
|
@@ -297,46 +292,44 @@ export class TableSplitCell {
|
|
297
292
|
}
|
298
293
|
}
|
299
294
|
}
|
300
|
-
|
301
295
|
/**
|
302
296
|
* 存在横向合并的单元格,进行单元格分拆,打补丁
|
303
|
-
* @param tb
|
304
|
-
* @param focusRowIndex
|
305
|
-
* @param focusColInex
|
306
|
-
* @param splitRows
|
307
|
-
* @param packs
|
297
|
+
* @param tb
|
298
|
+
* @param focusRowIndex
|
299
|
+
* @param focusColInex
|
300
|
+
* @param splitRows
|
301
|
+
* @param packs
|
308
302
|
*/
|
309
|
-
|
303
|
+
static applyHorSplitColumnCurrPatchPacks(tb, focusRowIndex, focusColInex, splitRows, packs) {
|
310
304
|
//获取当前列的合并行数
|
311
305
|
let vMergeRows = this.getVMergeRowsCount(tb, focusRowIndex, focusColInex);
|
312
306
|
vMergeRows = vMergeRows === 1 ? 0 : vMergeRows;
|
313
|
-
const startRow = tb.getChild(focusRowIndex)
|
314
|
-
const endRow = tb.getChild(focusRowIndex + vMergeRows - 1)
|
307
|
+
const startRow = tb.getChild(focusRowIndex);
|
308
|
+
const endRow = tb.getChild(focusRowIndex + vMergeRows - 1);
|
315
309
|
for (let i = 0; i < packs.length; i++) {
|
316
310
|
const mergeCols = packs[i];
|
317
311
|
if (mergeCols.length === 1) {
|
318
|
-
const startCell = startRow.getChild(focusColInex + mergeCols[0].index)
|
319
|
-
const endCell = endRow.getChild(focusColInex + mergeCols[0].index)
|
312
|
+
const startCell = startRow.getChild(focusColInex + mergeCols[0].index);
|
313
|
+
const endCell = endRow.getChild(focusColInex + mergeCols[0].index);
|
320
314
|
TableUtil.combineCells(tb, startCell, endCell);
|
321
|
-
}
|
315
|
+
}
|
316
|
+
else {
|
322
317
|
// for (let j = 0; j < mergeCols.length; j++) {
|
323
318
|
// const cell = focusRow.getChild(focusColInex + mergeCols[j].index) as TableCellElement;
|
324
319
|
// cell.cellProps.hMerge = j === 0 ? 'restart' : 'continue';
|
325
320
|
// }
|
326
|
-
const startCell = startRow.getChild(focusColInex + mergeCols[0].index)
|
327
|
-
const endCell = endRow.getChild(focusColInex + mergeCols[mergeCols.length - 1].index)
|
321
|
+
const startCell = startRow.getChild(focusColInex + mergeCols[0].index);
|
322
|
+
const endCell = endRow.getChild(focusColInex + mergeCols[mergeCols.length - 1].index);
|
328
323
|
TableUtil.combineCells(tb, startCell, endCell);
|
329
324
|
}
|
330
325
|
}
|
331
326
|
}
|
332
|
-
|
333
|
-
|
334
327
|
/**
|
335
328
|
* 纵向拆分合并的单元格
|
336
329
|
* 在指定行下插入复制行
|
337
330
|
* 存在
|
338
331
|
*/
|
339
|
-
|
332
|
+
static verSplitVerMergeCell(ss, rows, endColIndex) {
|
340
333
|
if (rows === 1) {
|
341
334
|
return;
|
342
335
|
}
|
@@ -360,7 +353,7 @@ export class TableSplitCell {
|
|
360
353
|
for (let i = 0; i < rows - 1; i++) {
|
361
354
|
const newRow = new TableRowElement();
|
362
355
|
for (let i = 0; i < focusRow.length; i++) {
|
363
|
-
const focusRowCell = focusRow.getChild(i)
|
356
|
+
const focusRowCell = focusRow.getChild(i);
|
364
357
|
const cell = new TableCellElement();
|
365
358
|
//其他列要纵向合并
|
366
359
|
if (i < focusCellIndex || i > endColIndex) {
|
@@ -380,96 +373,92 @@ export class TableSplitCell {
|
|
380
373
|
//拆分行和合并行相等,则执行还原
|
381
374
|
if (rows === mergeRows) {
|
382
375
|
for (let i = 0; i < mergeRows; i++) {
|
383
|
-
const row = tb.getChild(focusRowIndex + i)
|
376
|
+
const row = tb.getChild(focusRowIndex + i);
|
384
377
|
for (let j = focusCellIndex; j <= endColIndex; j++) {
|
385
|
-
const cell = row.getChild(j)
|
378
|
+
const cell = row.getChild(j);
|
386
379
|
cell.props.vMerge = null;
|
387
380
|
}
|
388
381
|
}
|
389
|
-
}
|
382
|
+
}
|
383
|
+
else {
|
390
384
|
for (let i = 0; i < mergeRows; i++) {
|
391
385
|
if (i % rows === 0) {
|
392
|
-
const row = tb.getChild(focusRowIndex + i)
|
393
|
-
const cell = row.getChild(focusCellIndex)
|
386
|
+
const row = tb.getChild(focusRowIndex + i);
|
387
|
+
const cell = row.getChild(focusCellIndex);
|
394
388
|
cell.props.vMerge = 'restart';
|
395
389
|
}
|
396
390
|
}
|
397
391
|
}
|
398
392
|
}
|
399
393
|
}
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
private static getSplitCols(width: number, cols: number): Array<ColumnPart> {
|
404
|
-
const items: Array<ColumnPart> = [];
|
394
|
+
static getSplitCols(width, cols) {
|
395
|
+
const items = [];
|
405
396
|
for (let i = 0; i < cols; i++) {
|
406
397
|
items.push({ width: Math.floor(width / cols), index: i });
|
407
398
|
}
|
408
399
|
items[items.length - 1].width += width - items.reduce((prev, curr) => prev + curr.width, 0);
|
409
400
|
return items;
|
410
401
|
}
|
411
|
-
|
412
402
|
/**
|
413
403
|
* 获取横向合并的列
|
414
|
-
* @param tb
|
415
|
-
* @param currRowIndex
|
416
|
-
* @param currColIndex
|
417
|
-
* @param splitCols
|
404
|
+
* @param tb
|
405
|
+
* @param currRowIndex
|
406
|
+
* @param currColIndex
|
407
|
+
* @param splitCols
|
418
408
|
*/
|
419
|
-
|
420
|
-
const row = tb.getChild(currRowIndex)
|
421
|
-
const items
|
409
|
+
static getHMergeCols(tb, currRowIndex, currColIndex, splitCols) {
|
410
|
+
const row = tb.getChild(currRowIndex);
|
411
|
+
const items = [{ width: tb.getCellWidth(currColIndex), index: currColIndex }];
|
422
412
|
for (let i = currColIndex + 1; i < tb.getColsCount(); i++) {
|
423
|
-
const cell = row.getChild(i)
|
413
|
+
const cell = row.getChild(i);
|
424
414
|
if (cell.props.hMerge === 'continue') {
|
425
415
|
items.push({ width: tb.getCellWidth(i), index: i });
|
426
|
-
}
|
416
|
+
}
|
417
|
+
else {
|
427
418
|
break;
|
428
419
|
}
|
429
420
|
}
|
430
421
|
return items;
|
431
422
|
}
|
432
|
-
|
433
423
|
/**
|
434
424
|
* 获取纵向合并的行数
|
435
|
-
* @param tb
|
436
|
-
* @param currRowIndex
|
425
|
+
* @param tb
|
426
|
+
* @param currRowIndex
|
437
427
|
*/
|
438
|
-
|
439
|
-
const startCell =
|
428
|
+
static getVMergeRowsCount(tb, rowIndex, colIndex) {
|
429
|
+
const startCell = tb.getChild(rowIndex).getChild(colIndex);
|
440
430
|
if (startCell.props.vMerge !== 'restart') {
|
441
431
|
return 1;
|
442
432
|
}
|
443
433
|
let i = 0;
|
444
434
|
for (i = rowIndex + 1; i < tb.length; i++) {
|
445
|
-
const row = tb.getChild(i)
|
446
|
-
const cell = row.getChild(colIndex)
|
435
|
+
const row = tb.getChild(i);
|
436
|
+
const cell = row.getChild(colIndex);
|
447
437
|
if (cell.props.vMerge !== 'continue') {
|
448
438
|
return i - rowIndex;
|
449
439
|
}
|
450
440
|
}
|
451
441
|
return i - rowIndex;
|
452
442
|
}
|
453
|
-
|
454
443
|
/**
|
455
444
|
* 获取纵向合并的行数
|
456
|
-
* @param tb
|
457
|
-
* @param currRowIndex
|
445
|
+
* @param tb
|
446
|
+
* @param currRowIndex
|
458
447
|
*/
|
459
|
-
|
460
|
-
const row = tb.getChild
|
461
|
-
const startCell = row.getChild
|
448
|
+
static getHMergeColsCount(tb, rowIndex, colIndex) {
|
449
|
+
const row = tb.getChild(rowIndex);
|
450
|
+
const startCell = row.getChild(colIndex);
|
462
451
|
if (startCell.props.hMerge !== 'restart') {
|
463
452
|
return 1;
|
464
453
|
}
|
465
454
|
let i = 0;
|
466
455
|
for (i = colIndex + 1; i < row.length; i++) {
|
467
|
-
const cell = row.getChild(i)
|
456
|
+
const cell = row.getChild(i);
|
468
457
|
if (cell.props.hMerge !== 'continue') {
|
469
458
|
return i - colIndex;
|
470
459
|
}
|
471
460
|
}
|
472
461
|
return i - colIndex;
|
473
462
|
}
|
474
|
-
|
475
463
|
}
|
464
|
+
//# sourceMappingURL=table-split-cell.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"table-split-cell.js","sourceRoot":"lib/","sources":["framework/impl/table/table-split-cell.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,150 @@
|
|
1
|
+
import { SelectionState } from "../../document-selection";
|
2
|
+
import { TableCellElement } from "./table-cell-impl";
|
3
|
+
import { TableElement } from "./table-impl";
|
4
|
+
import { TableRowElement } from "./table-row-impl";
|
5
|
+
export declare class TableUtil {
|
6
|
+
static canDeleteTable(ss: SelectionState): boolean;
|
7
|
+
/**
|
8
|
+
* 校验当前选区是否可以执行合并单元格操作
|
9
|
+
* @param ss
|
10
|
+
* @returns
|
11
|
+
*/
|
12
|
+
static canMergeCells(ss: SelectionState): boolean;
|
13
|
+
/**
|
14
|
+
* 获取横向合并当前单元格合并结束索引位置
|
15
|
+
* @param tb
|
16
|
+
* @param rowIndex
|
17
|
+
* @param colIndex
|
18
|
+
*/
|
19
|
+
static getHMergeEndIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
|
20
|
+
/**
|
21
|
+
* 获取横向合并当前单元格合并开始索引位置
|
22
|
+
* @param tb
|
23
|
+
* @param rowIndex
|
24
|
+
* @param colIndex
|
25
|
+
*/
|
26
|
+
static getHMergeStartIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
|
27
|
+
/**
|
28
|
+
* 获取纵向合并当前单元格合并结束索引位置
|
29
|
+
* @param tb
|
30
|
+
* @param rowIndex
|
31
|
+
* @param colIndex i
|
32
|
+
*/
|
33
|
+
static getVMergeEndIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
|
34
|
+
/**
|
35
|
+
* 获取纵向合并当前单元格合并开始索引位置
|
36
|
+
* @param tb
|
37
|
+
* @param rowIndex
|
38
|
+
* @param colIndex i
|
39
|
+
*/
|
40
|
+
static getVMergeStartIndex(tb: TableElement, rowIndex: number, colIndex: number): number;
|
41
|
+
/**
|
42
|
+
* 合并单元格
|
43
|
+
* @param ss
|
44
|
+
* @returns
|
45
|
+
*/
|
46
|
+
static mergeCells(ss: SelectionState): void;
|
47
|
+
/**
|
48
|
+
* 在合并单元格后需要校验
|
49
|
+
* 1.如果某个行的所有单元格都不是normal,则需要删除当前行
|
50
|
+
* 2.如果某个列的所有的单元格都不是normal,则需要删除当前列
|
51
|
+
*/
|
52
|
+
private static checkRowBeMerged;
|
53
|
+
/**
|
54
|
+
* 移除行
|
55
|
+
* @param row
|
56
|
+
*/
|
57
|
+
private static removeRow;
|
58
|
+
/**
|
59
|
+
* 移除列
|
60
|
+
* @param tb
|
61
|
+
* @param colIndex
|
62
|
+
*/
|
63
|
+
private static removeCol;
|
64
|
+
/**
|
65
|
+
* 移除光标所在的当前行
|
66
|
+
* @param ss
|
67
|
+
*/
|
68
|
+
static removeCurrRow(ss: SelectionState): void;
|
69
|
+
/**
|
70
|
+
* 移除光标所在的当前列
|
71
|
+
* @param ss
|
72
|
+
*/
|
73
|
+
static removeCurrCol(ss: SelectionState): void;
|
74
|
+
/**
|
75
|
+
* 合并单元格
|
76
|
+
*/
|
77
|
+
static combineCells(tbElement: TableElement, startCell: TableCellElement, endCell: TableCellElement): void;
|
78
|
+
static canSplitCell(ss: SelectionState): boolean;
|
79
|
+
/**
|
80
|
+
* 将合并的单元格合并还原
|
81
|
+
* @param ss
|
82
|
+
*/
|
83
|
+
static restoreCell(ss: SelectionState): void;
|
84
|
+
private static restoreCellMerge;
|
85
|
+
private static getVMergeRows;
|
86
|
+
static insertCol(ss: SelectionState, insertColIndex: number): void;
|
87
|
+
static insertRow(ss: SelectionState, insertRowIndex: number): TableRowElement;
|
88
|
+
/**
|
89
|
+
* 在下方插入行
|
90
|
+
*/
|
91
|
+
static insertRowBelow(ss: SelectionState): void;
|
92
|
+
/**
|
93
|
+
* 在上方插入行
|
94
|
+
*/
|
95
|
+
static insertRowAbove(ss: SelectionState): void;
|
96
|
+
/**
|
97
|
+
* 在右侧插入列
|
98
|
+
*/
|
99
|
+
static insertColToRight(ss: SelectionState): void;
|
100
|
+
/**
|
101
|
+
* 在左侧插入列
|
102
|
+
*/
|
103
|
+
static insertColToLeft(ss: SelectionState): void;
|
104
|
+
/**
|
105
|
+
* 跳转到下一个单元格中
|
106
|
+
* @param ss
|
107
|
+
*/
|
108
|
+
static moveNextCell(ss: SelectionState): void;
|
109
|
+
/**
|
110
|
+
* 获取下一个可定位的单元格
|
111
|
+
* @param ss
|
112
|
+
* @returns
|
113
|
+
*/
|
114
|
+
static getNextCell(ss: SelectionState): TableCellElement | undefined;
|
115
|
+
/**
|
116
|
+
* 当前光标是否在最后一个单元格中
|
117
|
+
*/
|
118
|
+
static isLastVisiableCell(ss: SelectionState): boolean;
|
119
|
+
/**
|
120
|
+
* 移除当前table
|
121
|
+
*/
|
122
|
+
static removeTable(ss: SelectionState): void;
|
123
|
+
/**
|
124
|
+
* 设置表格单元格对角线
|
125
|
+
* @param ss
|
126
|
+
* @param diagonal
|
127
|
+
* @returns
|
128
|
+
*/
|
129
|
+
static setTableCellDiagonal(ss: SelectionState, diagonal: 'main' | 'sub'): void;
|
130
|
+
/**
|
131
|
+
* 将当前表格截断成两个相邻的表格
|
132
|
+
* @param tb
|
133
|
+
* @param rowIndex
|
134
|
+
*/
|
135
|
+
static cutTable(tb: TableElement, rowIndex: number): void;
|
136
|
+
/**
|
137
|
+
* 获取表格选区区域最大的矩形区域
|
138
|
+
* @param tb
|
139
|
+
* @param startCell
|
140
|
+
* @param endCell
|
141
|
+
* @returns
|
142
|
+
*/
|
143
|
+
static getTableRectSelectedRegion(tb: TableElement, startCell: TableCellElement, endCell: TableCellElement): ITableSelectedRegion;
|
144
|
+
}
|
145
|
+
export interface ITableSelectedRegion {
|
146
|
+
startRow: number;
|
147
|
+
endRow: number;
|
148
|
+
startCol: number;
|
149
|
+
endCol: number;
|
150
|
+
}
|