@hailin-zheng/editor-core 1.0.7 → 1.0.10
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/package.json +3 -4
- package/{lib/doc-ruler.js → src/med_editor/doc-ruler.ts} +101 -74
- package/src/med_editor/framework/common-util.ts +200 -0
- package/{lib/framework/document-change.js → src/med_editor/framework/document-change.ts} +308 -259
- package/{lib/framework/document-combine.js → src/med_editor/framework/document-combine.ts} +15 -11
- package/{lib/framework/document-comment.js → src/med_editor/framework/document-comment.ts} +52 -37
- package/{lib/framework/document-context.js → src/med_editor/framework/document-context.ts} +181 -101
- package/{lib/framework/document-eval-func.js → src/med_editor/framework/document-eval-func.ts} +16 -11
- package/{lib/framework/document-event.js → src/med_editor/framework/document-event.ts} +244 -216
- package/{lib/framework/document-history.js → src/med_editor/framework/document-history.ts} +25 -14
- package/{lib/framework/document-images-loader.js → src/med_editor/framework/document-images-loader.ts} +25 -17
- package/{lib/framework/document-input-cursor.js → src/med_editor/framework/document-input-cursor.ts} +76 -71
- package/{lib/framework/document-paint.js → src/med_editor/framework/document-paint.ts} +35 -28
- package/{lib/framework/document-print-offscreen.js → src/med_editor/framework/document-print-offscreen.ts} +25 -19
- package/{lib/framework/document-print.js → src/med_editor/framework/document-print.ts} +57 -41
- package/src/med_editor/framework/document-segmenter.ts +211 -0
- package/{lib/framework/document-selection.js → src/med_editor/framework/document-selection.ts} +116 -85
- package/{lib/framework/document-template.js → src/med_editor/framework/document-template.ts} +3 -3
- package/src/med_editor/framework/document-textline-mode.ts +34 -0
- package/{lib/framework/element-define.js → src/med_editor/framework/element-define.ts} +301 -206
- package/src/med_editor/framework/element-event-define.ts +141 -0
- package/{lib/framework/element-measure.js → src/med_editor/framework/element-measure.ts} +143 -121
- package/{lib/framework/element-paint.js → src/med_editor/framework/element-paint.ts} +44 -38
- package/{lib/framework/element-props.js → src/med_editor/framework/element-props.ts} +331 -202
- package/{lib/framework/element-reader.js → src/med_editor/framework/element-reader.ts} +39 -31
- package/{lib/framework/element-render-cut.js → src/med_editor/framework/element-render-cut.ts} +113 -106
- package/{lib/framework/element-serialize.js → src/med_editor/framework/element-serialize.ts} +37 -24
- package/{lib/framework/element-util.js → src/med_editor/framework/element-util.ts} +317 -216
- package/{lib/framework/impl/checkbox/checkbox-impl.js → src/med_editor/framework/impl/checkbox/checkbox-impl.ts} +27 -20
- package/{lib/framework/impl/comments/comment-content-impl.js → src/med_editor/framework/impl/comments/comment-content-impl.ts} +45 -31
- package/{lib/framework/impl/comments/comment-element-impl.js → src/med_editor/framework/impl/comments/comment-element-impl.ts} +23 -20
- package/{lib/framework/impl/comments/comments-container-impl.js → src/med_editor/framework/impl/comments/comments-container-impl.ts} +22 -16
- package/{lib/framework/impl/comments/comments-util.js → src/med_editor/framework/impl/comments/comments-util.ts} +34 -17
- package/{lib/framework/impl/comments/validate-msg-impl.js → src/med_editor/framework/impl/comments/validate-msg-impl.ts} +28 -17
- package/{lib/framework/impl/data-element/data-decorate-impl.js → src/med_editor/framework/impl/data-element/data-decorate-impl.ts} +26 -22
- package/{lib/framework/impl/data-element/data-element-barcode.js → src/med_editor/framework/impl/data-element/data-element-barcode.ts} +41 -29
- package/{lib/framework/impl/data-element/data-element-base-impl.js → src/med_editor/framework/impl/data-element/data-element-base-impl.ts} +73 -44
- package/{lib/framework/impl/data-element/data-element-check-impl.js → src/med_editor/framework/impl/data-element/data-element-check-impl.ts} +48 -35
- package/{lib/framework/impl/data-element/data-element-date-impl.js → src/med_editor/framework/impl/data-element/data-element-date-impl.ts} +41 -24
- package/{lib/framework/impl/data-element/data-element-group-impl.js → src/med_editor/framework/impl/data-element/data-element-group-impl.ts} +52 -32
- package/{lib/framework/impl/data-element/data-element-image-impl.js → src/med_editor/framework/impl/data-element/data-element-image-impl.ts} +38 -28
- package/{lib/framework/impl/data-element/data-element-list-impl.js → src/med_editor/framework/impl/data-element/data-element-list-impl.ts} +42 -31
- package/{lib/framework/impl/data-element/data-element-text-impl.js → src/med_editor/framework/impl/data-element/data-element-text-impl.ts} +36 -22
- package/{lib/framework/impl/decorate/fill-null-space-imple.js → src/med_editor/framework/impl/decorate/fill-null-space-imple.ts} +15 -10
- package/{lib/framework/impl/document/doc-body-impl.js → src/med_editor/framework/impl/document/doc-body-impl.ts} +32 -16
- package/{lib/framework/impl/document/doc-body-part-impl.js → src/med_editor/framework/impl/document/doc-body-part-impl.ts} +27 -17
- package/src/med_editor/framework/impl/document/doc-container-impl.ts +24 -0
- package/{lib/framework/impl/document/doc-footer-impl.js → src/med_editor/framework/impl/document/doc-footer-impl.ts} +30 -19
- package/{lib/framework/impl/document/doc-header-impl.js → src/med_editor/framework/impl/document/doc-header-impl.ts} +34 -17
- package/{lib/framework/impl/document/doc-impl.js → src/med_editor/framework/impl/document/doc-impl.ts} +62 -45
- package/{lib/framework/impl/media-formula/menstrual-history.js → src/med_editor/framework/impl/media-formula/menstrual-history.ts} +58 -36
- package/{lib/framework/impl/paragraph/p-impl.js → src/med_editor/framework/impl/paragraph/p-impl.ts} +64 -30
- package/{lib/framework/impl/picture/image-impl.js → src/med_editor/framework/impl/picture/image-impl.ts} +37 -25
- package/{lib/framework/impl/radio/radio-impl.js → src/med_editor/framework/impl/radio/radio-impl.ts} +28 -21
- package/{lib/framework/impl/symbol/br-symbol-impl.js → src/med_editor/framework/impl/symbol/br-symbol-impl.ts} +21 -15
- package/{lib/framework/impl/symbol/p-symbol-impl.js → src/med_editor/framework/impl/symbol/p-symbol-impl.ts} +15 -12
- package/{lib/framework/impl/table/table-cell-impl.js → src/med_editor/framework/impl/table/table-cell-impl.ts} +41 -30
- package/{lib/framework/impl/table/table-impl.js → src/med_editor/framework/impl/table/table-impl.ts} +122 -84
- package/{lib/framework/impl/table/table-row-impl.js → src/med_editor/framework/impl/table/table-row-impl.ts} +26 -18
- package/{lib/framework/impl/table/table-split-cell-patch.js → src/med_editor/framework/impl/table/table-split-cell-patch.ts} +31 -22
- package/{lib/framework/impl/table/table-split-cell.js → src/med_editor/framework/impl/table/table-split-cell.ts} +105 -94
- package/{lib/framework/impl/table/table-util.js → src/med_editor/framework/impl/table/table-util.ts} +197 -159
- package/{lib/framework/impl/text/text-impl.js → src/med_editor/framework/impl/text/text-impl.ts} +49 -35
- package/{lib/framework/impl/text/track-run-impl.js → src/med_editor/framework/impl/text/track-run-impl.ts} +53 -30
- package/{lib/framework/notify.js → src/med_editor/framework/notify.ts} +50 -36
- package/{lib/framework/range-util.js → src/med_editor/framework/range-util.ts} +80 -71
- package/{lib/framework/render-context.js → src/med_editor/framework/render-context.ts} +111 -64
- package/{lib/framework/render-define.js → src/med_editor/framework/render-define.ts} +90 -61
- package/{lib/framework/selection-overlays.js → src/med_editor/framework/selection-overlays.ts} +25 -16
- package/{lib/texteditor.js → src/med_editor/texteditor.ts} +288 -191
- package/src/med_editor/util/subject.ts +118 -0
- package/{lib/util/table-bind.js → src/med_editor/util/table-bind.ts} +2 -2
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +3573 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +3573 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +315 -0
- 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 +122 -0
- 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 +3599 -0
- 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 +24586 -0
- package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +2874 -0
- package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +341 -0
- package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +2201 -0
- package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +1069 -0
- 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 +125 -0
- 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 +86 -0
- 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 +115 -0
- 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 +108 -0
- 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 +272 -0
- package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +1070 -0
- package/lib/doc-ruler.d.ts +0 -51
- package/lib/doc-ruler.js.map +0 -1
- package/lib/framework/common-util.d.ts +0 -63
- package/lib/framework/common-util.js +0 -178
- package/lib/framework/common-util.js.map +0 -1
- package/lib/framework/document-change.d.ts +0 -265
- package/lib/framework/document-change.js.map +0 -1
- package/lib/framework/document-combine.d.ts +0 -24
- package/lib/framework/document-combine.js.map +0 -1
- package/lib/framework/document-comment.d.ts +0 -46
- package/lib/framework/document-comment.js.map +0 -1
- package/lib/framework/document-context.d.ts +0 -149
- package/lib/framework/document-context.js.map +0 -1
- package/lib/framework/document-eval-func.d.ts +0 -18
- package/lib/framework/document-eval-func.js.map +0 -1
- package/lib/framework/document-event.d.ts +0 -213
- package/lib/framework/document-event.js.map +0 -1
- package/lib/framework/document-history.d.ts +0 -26
- package/lib/framework/document-history.js.map +0 -1
- package/lib/framework/document-images-loader.d.ts +0 -16
- package/lib/framework/document-images-loader.js.map +0 -1
- package/lib/framework/document-input-cursor.d.ts +0 -78
- package/lib/framework/document-input-cursor.js.map +0 -1
- package/lib/framework/document-paint.d.ts +0 -34
- package/lib/framework/document-paint.js.map +0 -1
- package/lib/framework/document-print-offscreen.d.ts +0 -38
- package/lib/framework/document-print-offscreen.js.map +0 -1
- package/lib/framework/document-print.d.ts +0 -60
- package/lib/framework/document-print.js.map +0 -1
- package/lib/framework/document-segmenter.d.ts +0 -2
- package/lib/framework/document-segmenter.js +0 -106
- package/lib/framework/document-segmenter.js.map +0 -1
- package/lib/framework/document-selection.d.ts +0 -89
- package/lib/framework/document-selection.js.map +0 -1
- package/lib/framework/document-template.d.ts +0 -4
- package/lib/framework/document-template.js.map +0 -1
- package/lib/framework/document-textline-mode.d.ts +0 -7
- package/lib/framework/document-textline-mode.js +0 -30
- package/lib/framework/document-textline-mode.js.map +0 -1
- package/lib/framework/element-define.d.ts +0 -319
- package/lib/framework/element-define.js.map +0 -1
- package/lib/framework/element-event-define.d.ts +0 -99
- package/lib/framework/element-event-define.js +0 -108
- package/lib/framework/element-event-define.js.map +0 -1
- package/lib/framework/element-measure.d.ts +0 -97
- package/lib/framework/element-measure.js.map +0 -1
- package/lib/framework/element-paint.d.ts +0 -42
- package/lib/framework/element-paint.js.map +0 -1
- package/lib/framework/element-props.d.ts +0 -301
- package/lib/framework/element-props.js.map +0 -1
- package/lib/framework/element-reader.d.ts +0 -19
- package/lib/framework/element-reader.js.map +0 -1
- package/lib/framework/element-render-cut.d.ts +0 -55
- package/lib/framework/element-render-cut.js.map +0 -1
- package/lib/framework/element-serialize.d.ts +0 -30
- package/lib/framework/element-serialize.js.map +0 -1
- package/lib/framework/element-util.d.ts +0 -369
- package/lib/framework/element-util.js.map +0 -1
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts +0 -24
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-content-impl.d.ts +0 -40
- package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-element-impl.d.ts +0 -21
- package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-container-impl.d.ts +0 -22
- package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-util.d.ts +0 -12
- package/lib/framework/impl/comments/comments-util.js.map +0 -1
- package/lib/framework/impl/comments/validate-msg-impl.d.ts +0 -21
- package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-decorate-impl.d.ts +0 -30
- package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-barcode.d.ts +0 -31
- package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-base-impl.d.ts +0 -68
- package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-check-impl.d.ts +0 -35
- package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-date-impl.d.ts +0 -23
- package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-group-impl.d.ts +0 -23
- package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-image-impl.d.ts +0 -30
- package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-list-impl.d.ts +0 -22
- package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-text-impl.d.ts +0 -23
- package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
- package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +0 -21
- package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
- package/lib/framework/impl/document/doc-body-impl.d.ts +0 -27
- package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-body-part-impl.d.ts +0 -30
- package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-container-impl.d.ts +0 -16
- package/lib/framework/impl/document/doc-container-impl.js +0 -21
- package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-footer-impl.d.ts +0 -26
- package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-header-impl.d.ts +0 -26
- package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-impl.d.ts +0 -61
- package/lib/framework/impl/document/doc-impl.js.map +0 -1
- package/lib/framework/impl/media-formula/menstrual-history.d.ts +0 -35
- package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
- package/lib/framework/impl/paragraph/p-impl.d.ts +0 -45
- package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
- package/lib/framework/impl/picture/image-impl.d.ts +0 -31
- package/lib/framework/impl/picture/image-impl.js.map +0 -1
- package/lib/framework/impl/radio/radio-impl.d.ts +0 -22
- package/lib/framework/impl/radio/radio-impl.js.map +0 -1
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts +0 -22
- package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
- package/lib/framework/impl/symbol/p-symbol-impl.d.ts +0 -19
- package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
- package/lib/framework/impl/table/table-cell-impl.d.ts +0 -37
- package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
- package/lib/framework/impl/table/table-impl.d.ts +0 -55
- package/lib/framework/impl/table/table-impl.js.map +0 -1
- package/lib/framework/impl/table/table-row-impl.d.ts +0 -26
- package/lib/framework/impl/table/table-row-impl.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell-patch.d.ts +0 -20
- package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell.d.ts +0 -90
- package/lib/framework/impl/table/table-split-cell.js.map +0 -1
- package/lib/framework/impl/table/table-util.d.ts +0 -150
- package/lib/framework/impl/table/table-util.js.map +0 -1
- package/lib/framework/impl/text/text-impl.d.ts +0 -32
- package/lib/framework/impl/text/text-impl.js.map +0 -1
- package/lib/framework/impl/text/track-run-impl.d.ts +0 -27
- package/lib/framework/impl/text/track-run-impl.js.map +0 -1
- package/lib/framework/notify.d.ts +0 -13
- package/lib/framework/notify.js.map +0 -1
- package/lib/framework/range-util.d.ts +0 -40
- package/lib/framework/range-util.js.map +0 -1
- package/lib/framework/render-context.d.ts +0 -91
- package/lib/framework/render-context.js.map +0 -1
- package/lib/framework/render-define.d.ts +0 -109
- package/lib/framework/render-define.js.map +0 -1
- package/lib/framework/selection-overlays.d.ts +0 -30
- package/lib/framework/selection-overlays.js.map +0 -1
- package/lib/texteditor.d.ts +0 -318
- package/lib/texteditor.js.map +0 -1
- package/lib/util/subject.d.ts +0 -34
- package/lib/util/subject.js +0 -88
- package/lib/util/subject.js.map +0 -1
- package/lib/util/table-bind.d.ts +0 -5
- package/lib/util/table-bind.js.map +0 -1
- package/tsconfig.json +0 -25
@@ -1,14 +1,17 @@
|
|
1
|
-
import { BranchElement, LeafElement } from "./element-define";
|
1
|
+
import { BranchElement, Element, LeafElement, SelectionContentRange } from "./element-define";
|
2
2
|
import { ElementUtil } from "./element-util";
|
3
3
|
import { TableCellElement } from "./impl/table/table-cell-impl";
|
4
4
|
import { TableElement } from "./impl/table/table-impl";
|
5
5
|
import { TableRowElement } from "./impl/table/table-row-impl";
|
6
|
-
import { SelectionRange } from './document-selection'
|
6
|
+
import { SelectionRange, SelectionState } from './document-selection'
|
7
7
|
import { TextGroupElement } from "./impl/text/text-impl";
|
8
|
+
|
9
|
+
|
8
10
|
export class RangeUtil {
|
9
|
-
|
11
|
+
|
12
|
+
static getSelctionRange(startControl: LeafElement, startOffset: number, endControl: LeafElement, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange {
|
10
13
|
if (ancestorCommonControl instanceof TableElement || ancestorCommonControl instanceof TableRowElement) {
|
11
|
-
const tbElement = ancestorCommonControl instanceof TableElement ? ancestorCommonControl : ancestorCommonControl.parent;
|
14
|
+
const tbElement = ancestorCommonControl instanceof TableElement ? ancestorCommonControl : ancestorCommonControl.parent as TableElement;
|
12
15
|
return this.getTableSelectionRange(startControl, startOffset, endControl, endOffset, tbElement);
|
13
16
|
}
|
14
17
|
if (startControl === endControl && startControl.parent === ancestorCommonControl) {
|
@@ -21,34 +24,36 @@ export class RangeUtil {
|
|
21
24
|
const commonRange = this.getChildTreeData(ancestorCommonControl, startIndex + 1, endIndex);
|
22
25
|
if (this.rangeEquals(startRange, endRange)) {
|
23
26
|
commonRange.selectedChildren.unshift(startRange);
|
24
|
-
}
|
25
|
-
else {
|
27
|
+
} else {
|
26
28
|
commonRange.selectedChildren.unshift(startRange);
|
27
29
|
commonRange.selectedChildren.push(endRange);
|
28
30
|
}
|
29
31
|
this.setRangeFullSelected(commonRange);
|
30
32
|
return commonRange;
|
31
33
|
}
|
32
|
-
|
34
|
+
|
35
|
+
static getCollapsedRange(startControl: LeafElement, startOffset: number, endOffset: number, ancestorCommonControl: BranchElement): SelectionContentRange {
|
33
36
|
const range = {
|
34
37
|
target: ancestorCommonControl,
|
35
38
|
isFullSelected: false,
|
36
39
|
startOffset: startControl.getIndex(),
|
37
40
|
endOffset: startControl.getIndex() + 1,
|
38
41
|
selectedChildren: [this.getChildTreeData(startControl, startOffset, endOffset)]
|
39
|
-
}
|
42
|
+
}
|
40
43
|
this.setRangeFullSelected(range);
|
41
44
|
return range;
|
45
|
+
|
42
46
|
}
|
47
|
+
|
43
48
|
/**
|
44
49
|
* 获取表格选区的内容
|
45
|
-
* @param startControl
|
46
|
-
* @param startOffset
|
47
|
-
* @param endControl
|
48
|
-
* @param endOffset
|
49
|
-
* @param tb
|
50
|
+
* @param startControl
|
51
|
+
* @param startOffset
|
52
|
+
* @param endControl
|
53
|
+
* @param endOffset
|
54
|
+
* @param tb
|
50
55
|
*/
|
51
|
-
static getTableSelectionRange(startControl, startOffset, endControl, endOffset, tb) {
|
56
|
+
static getTableSelectionRange(startControl: LeafElement, startOffset: number, endControl: LeafElement, endOffset: number, tb: TableElement): SelectionContentRange {
|
52
57
|
const startCell = ElementUtil.getParentByType(startControl, TableCellElement);
|
53
58
|
const endCell = ElementUtil.getParentByType(endControl, TableCellElement);
|
54
59
|
if (startCell && endCell && startCell.parent.parent === tb && endCell.parent.parent === tb) {
|
@@ -62,19 +67,19 @@ export class RangeUtil {
|
|
62
67
|
if (startRowIndex > endRowIndex) {
|
63
68
|
[startRowIndex, endRowIndex] = [endRowIndex, startRowIndex];
|
64
69
|
}
|
65
|
-
const region = { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex }
|
70
|
+
const region = { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex };//this.getTableRectSelectedRegion(tb, { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex });
|
66
71
|
startRowIndex = region.startRow;
|
67
72
|
endRowIndex = region.endRow;
|
68
73
|
startColIndex = region.startCol;
|
69
74
|
endColIndex = region.endCol;
|
70
|
-
const rowRanges = [];
|
75
|
+
const rowRanges: Array<SelectionContentRange> = [];
|
71
76
|
for (let i = startRowIndex; i <= endRowIndex; i++) {
|
72
|
-
const cellRanges = [];
|
73
|
-
const row = tb.getChild(i);
|
77
|
+
const cellRanges: Array<SelectionContentRange> = [];
|
78
|
+
const row = tb.getChild(i) as TableRowElement;
|
74
79
|
for (let j = startColIndex; j <= endColIndex; j++) {
|
75
|
-
const cell = row.getChild(j);
|
76
|
-
const cellFirstLeafElement = ElementUtil.getFirstLeafElement(cell);
|
77
|
-
const cellLastLeafElement = ElementUtil.getLastLeafElement(cell);
|
80
|
+
const cell = row.getChild(j) as TableCellElement;
|
81
|
+
const cellFirstLeafElement = ElementUtil.getFirstLeafElement(cell) as LeafElement;
|
82
|
+
const cellLastLeafElement = ElementUtil.getLastLeafElement(cell) as LeafElement;
|
78
83
|
if (!cellFirstLeafElement && !cell.isNotBeMergedCell()) {
|
79
84
|
cellRanges.push({
|
80
85
|
target: cell,
|
@@ -83,13 +88,12 @@ export class RangeUtil {
|
|
83
88
|
endOffset: 1,
|
84
89
|
selectedChildren: []
|
85
90
|
});
|
86
|
-
}
|
87
|
-
else {
|
91
|
+
} else {
|
88
92
|
const cellRange = this.getSelctionRange(cellFirstLeafElement, 0, cellLastLeafElement, 1, cell);
|
89
93
|
cellRanges.push(cellRange);
|
90
94
|
}
|
91
95
|
}
|
92
|
-
const rowRange = {
|
96
|
+
const rowRange: SelectionContentRange = {
|
93
97
|
target: row,
|
94
98
|
isFullSelected: false,
|
95
99
|
startOffset: startColIndex,
|
@@ -99,7 +103,7 @@ export class RangeUtil {
|
|
99
103
|
rowRange.isFullSelected = startColIndex === 0 && endColIndex === row.length - 1;
|
100
104
|
rowRanges.push(rowRange);
|
101
105
|
}
|
102
|
-
const tableRange = {
|
106
|
+
const tableRange: SelectionContentRange = {
|
103
107
|
target: tb,
|
104
108
|
isFullSelected: false,
|
105
109
|
startOffset: startRowIndex,
|
@@ -108,12 +112,14 @@ export class RangeUtil {
|
|
108
112
|
};
|
109
113
|
tableRange.isFullSelected = startRowIndex === 0 && endRowIndex === tb.length - 1 && tableRange.selectedChildren.every(item => item.isFullSelected);
|
110
114
|
return tableRange;
|
111
|
-
}
|
112
|
-
else {
|
115
|
+
} else {
|
113
116
|
throw new Error('当前单元格和表格不对应');
|
114
117
|
}
|
115
118
|
}
|
116
|
-
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
private static getStartForbackTreeData(control: Element, ancestorCommonControl: BranchElement, childData: SelectionContentRange | null, offset: number): SelectionContentRange {
|
117
123
|
if (!control) {
|
118
124
|
debugger;
|
119
125
|
}
|
@@ -122,15 +128,13 @@ export class RangeUtil {
|
|
122
128
|
const range = this.getChildTreeData(parent, parent.getChildIndex(control) + 1, -1);
|
123
129
|
if (childData) {
|
124
130
|
range.selectedChildren.unshift(childData);
|
125
|
-
}
|
126
|
-
else {
|
131
|
+
} else {
|
127
132
|
range.selectedChildren.unshift(this.getChildTreeData(control, offset, -1));
|
128
133
|
}
|
129
134
|
this.setRangeFullSelected(range);
|
130
135
|
return this.getStartForbackTreeData(parent, ancestorCommonControl, range, -99);
|
131
|
-
}
|
132
|
-
|
133
|
-
const ancestorRange = {
|
136
|
+
} else {
|
137
|
+
const ancestorRange: SelectionContentRange = {
|
134
138
|
target: ancestorCommonControl,
|
135
139
|
startOffset: -1,
|
136
140
|
endOffset: -1,
|
@@ -145,21 +149,22 @@ export class RangeUtil {
|
|
145
149
|
return ancestorRange;
|
146
150
|
}
|
147
151
|
}
|
148
|
-
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
private static getEndForwardTreeData(control: Element, ancestorCommonControl: BranchElement, childData: SelectionContentRange | null, offset: number): SelectionContentRange {
|
149
156
|
const parent = control.parent;
|
150
157
|
if (parent !== ancestorCommonControl) {
|
151
158
|
const range = this.getChildTreeData(parent, 0, parent.getChildIndex(control));
|
152
159
|
if (childData) {
|
153
160
|
range.selectedChildren.push(childData);
|
154
|
-
}
|
155
|
-
else {
|
161
|
+
} else {
|
156
162
|
range.selectedChildren.push(this.getChildTreeData(control, 0, offset));
|
157
163
|
}
|
158
164
|
this.setRangeFullSelected(range);
|
159
165
|
return this.getEndForwardTreeData(parent, ancestorCommonControl, range, -99);
|
160
|
-
}
|
161
|
-
|
162
|
-
const ancestorRange = {
|
166
|
+
} else {
|
167
|
+
const ancestorRange: SelectionContentRange = {
|
163
168
|
target: ancestorCommonControl,
|
164
169
|
startOffset: 0,
|
165
170
|
endOffset: 0,
|
@@ -167,15 +172,16 @@ export class RangeUtil {
|
|
167
172
|
selectedChildren: []
|
168
173
|
};
|
169
174
|
if (!childData) {
|
170
|
-
childData = this.getChildTreeData(control, 0, offset)
|
175
|
+
childData = this.getChildTreeData(control, 0, offset)
|
171
176
|
}
|
172
177
|
ancestorRange.selectedChildren.push(childData);
|
173
178
|
this.setRangeFullSelected(ancestorRange);
|
174
179
|
return ancestorRange;
|
175
180
|
}
|
176
181
|
}
|
177
|
-
|
178
|
-
|
182
|
+
|
183
|
+
private static getChildTreeData(control: Element, start: number, end: number): SelectionContentRange {
|
184
|
+
const range: SelectionContentRange = {
|
179
185
|
target: control,
|
180
186
|
isFullSelected: false,
|
181
187
|
startOffset: start,
|
@@ -185,12 +191,11 @@ export class RangeUtil {
|
|
185
191
|
if (control instanceof LeafElement) {
|
186
192
|
if (control instanceof TextGroupElement) {
|
187
193
|
range.endOffset = end === -1 ? control.text.length : end;
|
188
|
-
}
|
189
|
-
else {
|
194
|
+
} else {
|
190
195
|
range.endOffset = end === -1 ? 1 : end;
|
191
196
|
}
|
192
|
-
|
193
|
-
else if (control instanceof BranchElement) {
|
197
|
+
|
198
|
+
} else if (control instanceof BranchElement) {
|
194
199
|
end = end === -1 ? control.length : end;
|
195
200
|
for (let i = start; i < end; i++) {
|
196
201
|
const child = control.getChild(i);
|
@@ -200,17 +205,16 @@ export class RangeUtil {
|
|
200
205
|
this.setRangeFullSelected(range);
|
201
206
|
return range;
|
202
207
|
}
|
203
|
-
|
208
|
+
|
209
|
+
private static setRangeFullSelected(selectionRange: SelectionContentRange): void {
|
204
210
|
if (selectionRange.target instanceof LeafElement) {
|
205
211
|
const { startOffset, endOffset } = selectionRange;
|
206
212
|
if (selectionRange.target instanceof TextGroupElement) {
|
207
|
-
selectionRange.isFullSelected = startOffset === 0 && endOffset === selectionRange.target.text.length
|
208
|
-
}
|
209
|
-
else {
|
213
|
+
selectionRange.isFullSelected = startOffset === 0 && endOffset === selectionRange.target.text.length
|
214
|
+
} else {
|
210
215
|
selectionRange.isFullSelected = startOffset === 0 && endOffset === 1;
|
211
216
|
}
|
212
|
-
}
|
213
|
-
else if (selectionRange.target instanceof BranchElement) {
|
217
|
+
} else if (selectionRange.target instanceof BranchElement) {
|
214
218
|
const parent = selectionRange.target;
|
215
219
|
const selectedChildren = selectionRange.selectedChildren;
|
216
220
|
//被合并的table-cell,内容为empty
|
@@ -231,21 +235,24 @@ export class RangeUtil {
|
|
231
235
|
selectionRange.isFullSelected = firstItemIndex === 0 && firstItem.isFullSelected && lastItemIndex === parent.length - 1 && lastItem.isFullSelected;
|
232
236
|
}
|
233
237
|
}
|
234
|
-
|
238
|
+
|
239
|
+
static rangeEquals(selRange1: SelectionContentRange, selRange2: SelectionContentRange): boolean {
|
235
240
|
return selRange1.target === selRange2.target && selRange1.startOffset === selRange2.startOffset && selRange1.endOffset === selRange2.endOffset;
|
236
241
|
}
|
242
|
+
|
243
|
+
|
237
244
|
/**
|
238
245
|
* 根据选区范围更正选区内容状态
|
239
|
-
* @param selectedRange
|
240
|
-
* @param selectionState
|
246
|
+
* @param selectedRange
|
247
|
+
* @param selectionState
|
241
248
|
*/
|
242
|
-
static fixSelectionStateByRange(selectionState) {
|
249
|
+
static fixSelectionStateByRange(selectionState: SelectionState): boolean {
|
243
250
|
const { startControl, startOffset, endControl, endOffset, selectedRange } = selectionState;
|
244
251
|
if (!selectedRange || !startControl) {
|
245
252
|
return false;
|
246
253
|
}
|
247
|
-
const startRange = this.getStartRangeTarget(selectedRange);
|
248
|
-
const endRange = this.getEndRangeTarget(selectedRange);
|
254
|
+
const startRange = this.getStartRangeTarget(selectedRange) as SelectionContentRange;
|
255
|
+
const endRange = this.getEndRangeTarget(selectedRange) as SelectionContentRange;
|
249
256
|
if (startRange.target !== startControl || startRange.startOffset !== startOffset || endRange.target !== endControl || endRange.endOffset !== endOffset) {
|
250
257
|
selectionState.clear();
|
251
258
|
const ssRange = new SelectionRange();
|
@@ -256,11 +263,11 @@ export class RangeUtil {
|
|
256
263
|
}
|
257
264
|
return false;
|
258
265
|
}
|
259
|
-
|
266
|
+
|
267
|
+
static getStartRangeTarget(parentRange: SelectionContentRange): SelectionContentRange | null {
|
260
268
|
if (parentRange.target instanceof LeafElement) {
|
261
269
|
return parentRange;
|
262
|
-
}
|
263
|
-
else {
|
270
|
+
} else {
|
264
271
|
for (let i = 0; i < parentRange.selectedChildren.length; i++) {
|
265
272
|
const res = this.getStartRangeTarget(parentRange.selectedChildren[i]);
|
266
273
|
if (res) {
|
@@ -270,11 +277,11 @@ export class RangeUtil {
|
|
270
277
|
}
|
271
278
|
return null;
|
272
279
|
}
|
273
|
-
|
280
|
+
|
281
|
+
static getEndRangeTarget(parentRange: SelectionContentRange): SelectionContentRange | null {
|
274
282
|
if (parentRange.target instanceof LeafElement) {
|
275
283
|
return parentRange;
|
276
|
-
}
|
277
|
-
else {
|
284
|
+
} else {
|
278
285
|
for (let i = parentRange.selectedChildren.length - 1; i >= 0; i--) {
|
279
286
|
const res = this.getEndRangeTarget(parentRange.selectedChildren[i]);
|
280
287
|
if (res) {
|
@@ -284,22 +291,24 @@ export class RangeUtil {
|
|
284
291
|
}
|
285
292
|
return null;
|
286
293
|
}
|
294
|
+
|
287
295
|
/**
|
288
296
|
* 循环递归执行选区对象方法
|
289
|
-
* @param range
|
290
|
-
* @param handler
|
297
|
+
* @param range
|
298
|
+
* @param handler
|
291
299
|
*/
|
292
|
-
static recursionTraversalRangeHandler(range, handler) {
|
300
|
+
static recursionTraversalRangeHandler(range: SelectionContentRange, handler: (range: SelectionContentRange) => void): void {
|
293
301
|
handler(range);
|
294
302
|
for (let i = 0; i < range.selectedChildren.length; i++) {
|
295
303
|
this.recursionTraversalRangeHandler(range.selectedChildren[i], handler);
|
296
304
|
}
|
297
305
|
}
|
306
|
+
|
298
307
|
/**
|
299
308
|
* 判断元素是否被完全选中
|
300
|
-
* @param range
|
309
|
+
* @param range
|
301
310
|
*/
|
302
|
-
static checkElementFullInRange(range, ele) {
|
311
|
+
static checkElementFullInRange(range: SelectionContentRange, ele: Element): boolean {
|
303
312
|
let res = false;
|
304
313
|
this.recursionTraversalRangeHandler(range, (childRange) => {
|
305
314
|
if (childRange.target === ele && childRange.isFullSelected) {
|
@@ -308,5 +317,5 @@ export class RangeUtil {
|
|
308
317
|
});
|
309
318
|
return res;
|
310
319
|
}
|
311
|
-
|
312
|
-
|
320
|
+
|
321
|
+
}
|