@hailin-zheng/editor-core 1.0.1 → 1.0.3
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/lib/doc-ruler.js +313 -0
- 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/lib/framework/document-change.js +1342 -0
- package/lib/framework/document-change.js.map +1 -0
- package/lib/framework/document-combine.d.ts +24 -0
- package/lib/framework/document-combine.js +40 -0
- package/lib/framework/document-combine.js.map +1 -0
- package/lib/framework/document-comment.d.ts +46 -0
- package/lib/framework/document-comment.js +148 -0
- package/lib/framework/document-comment.js.map +1 -0
- package/lib/framework/document-context.d.ts +149 -0
- package/lib/framework/document-context.js +330 -0
- package/lib/framework/document-context.js.map +1 -0
- package/lib/framework/document-eval-func.d.ts +18 -0
- package/lib/framework/document-eval-func.js +48 -0
- package/lib/framework/document-eval-func.js.map +1 -0
- package/lib/framework/document-event.d.ts +213 -0
- package/lib/framework/document-event.js +1054 -0
- package/lib/framework/document-event.js.map +1 -0
- package/lib/framework/document-history.d.ts +26 -0
- package/lib/framework/document-history.js +65 -0
- package/lib/framework/document-history.js.map +1 -0
- package/lib/framework/document-images-loader.d.ts +16 -0
- package/lib/framework/document-images-loader.js +66 -0
- package/lib/framework/document-images-loader.js.map +1 -0
- package/lib/framework/document-input-cursor.d.ts +78 -0
- package/lib/framework/document-input-cursor.js +239 -0
- package/lib/framework/document-input-cursor.js.map +1 -0
- package/lib/framework/document-paint.d.ts +34 -0
- package/lib/framework/document-paint.js +103 -0
- package/lib/framework/document-paint.js.map +1 -0
- package/lib/framework/document-print-offscreen.d.ts +38 -0
- package/lib/framework/document-print-offscreen.js +128 -0
- package/lib/framework/document-print-offscreen.js.map +1 -0
- package/lib/framework/document-print.d.ts +60 -0
- package/lib/framework/document-print.js +203 -0
- 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/lib/framework/document-selection.js +358 -0
- package/lib/framework/document-selection.js.map +1 -0
- package/lib/framework/document-template.d.ts +4 -0
- package/lib/framework/document-template.js +20 -0
- 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/lib/framework/element-define.js +579 -0
- package/lib/framework/element-define.js.map +1 -0
- package/lib/framework/element-event-define.d.ts +99 -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/lib/framework/element-measure.js +551 -0
- package/lib/framework/element-measure.js.map +1 -0
- package/lib/framework/element-paint.d.ts +42 -0
- package/lib/framework/element-paint.js +170 -0
- package/lib/framework/element-paint.js.map +1 -0
- package/lib/framework/element-props.d.ts +301 -0
- package/lib/framework/element-props.js +809 -0
- package/lib/framework/element-props.js.map +1 -0
- package/lib/framework/element-reader.d.ts +19 -0
- package/lib/framework/element-reader.js +151 -0
- package/lib/framework/element-reader.js.map +1 -0
- package/lib/framework/element-render-cut.d.ts +55 -0
- package/lib/framework/element-render-cut.js +449 -0
- package/lib/framework/element-render-cut.js.map +1 -0
- package/lib/framework/element-serialize.d.ts +30 -0
- package/lib/framework/element-serialize.js +113 -0
- package/lib/framework/element-serialize.js.map +1 -0
- package/lib/framework/element-util.d.ts +369 -0
- package/lib/framework/element-util.js +1463 -0
- package/lib/framework/element-util.js.map +1 -0
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts +24 -0
- package/lib/framework/impl/checkbox/checkbox-impl.js +64 -0
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +1 -0
- package/lib/framework/impl/comments/comment-content-impl.d.ts +40 -0
- package/lib/framework/impl/comments/comment-content-impl.js +105 -0
- 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/lib/framework/impl/comments/comment-element-impl.js +62 -0
- 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/lib/framework/impl/comments/comments-container-impl.js +62 -0
- package/lib/framework/impl/comments/comments-container-impl.js.map +1 -0
- package/lib/framework/impl/comments/comments-util.d.ts +12 -0
- package/lib/framework/impl/comments/comments-util.js +67 -0
- package/lib/framework/impl/comments/comments-util.js.map +1 -0
- package/lib/framework/impl/comments/validate-msg-impl.d.ts +21 -0
- package/lib/framework/impl/comments/validate-msg-impl.js +83 -0
- 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/lib/framework/impl/data-element/data-decorate-impl.js +91 -0
- 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/lib/framework/impl/data-element/data-element-barcode.js +115 -0
- 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/lib/framework/impl/data-element/data-element-base-impl.js +205 -0
- 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/lib/framework/impl/data-element/data-element-check-impl.js +133 -0
- 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/lib/framework/impl/data-element/data-element-date-impl.js +111 -0
- 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/lib/framework/impl/data-element/data-element-group-impl.js +130 -0
- 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/lib/framework/impl/data-element/data-element-image-impl.js +137 -0
- 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/lib/framework/impl/data-element/data-element-list-impl.js +131 -0
- 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/lib/framework/impl/data-element/data-element-text-impl.js +103 -0
- 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/lib/framework/impl/decorate/fill-null-space-imple.js +43 -0
- 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/lib/framework/impl/document/doc-body-impl.js +79 -0
- 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/lib/framework/impl/document/doc-body-part-impl.js +94 -0
- 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/lib/framework/impl/document/doc-footer-impl.js +77 -0
- 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/lib/framework/impl/document/doc-header-impl.js +83 -0
- package/lib/framework/impl/document/doc-header-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-impl.d.ts +61 -0
- package/lib/framework/impl/document/doc-impl.js +209 -0
- package/lib/framework/impl/document/doc-impl.js.map +1 -0
- package/lib/framework/impl/media-formula/menstrual-history.d.ts +35 -0
- package/lib/framework/impl/media-formula/menstrual-history.js +153 -0
- package/lib/framework/impl/media-formula/menstrual-history.js.map +1 -0
- package/lib/framework/impl/paragraph/p-impl.d.ts +45 -0
- package/lib/framework/impl/paragraph/p-impl.js +156 -0
- package/lib/framework/impl/paragraph/p-impl.js.map +1 -0
- package/lib/framework/impl/picture/image-impl.d.ts +31 -0
- package/lib/framework/impl/picture/image-impl.js +124 -0
- package/lib/framework/impl/picture/image-impl.js.map +1 -0
- package/lib/framework/impl/radio/radio-impl.d.ts +22 -0
- package/lib/framework/impl/radio/radio-impl.js +72 -0
- package/lib/framework/impl/radio/radio-impl.js.map +1 -0
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts +22 -0
- package/lib/framework/impl/symbol/br-symbol-impl.js +54 -0
- 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/lib/framework/impl/symbol/p-symbol-impl.js +54 -0
- 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/lib/framework/impl/table/table-cell-impl.js +145 -0
- package/lib/framework/impl/table/table-cell-impl.js.map +1 -0
- package/lib/framework/impl/table/table-impl.d.ts +55 -0
- package/lib/framework/impl/table/table-impl.js +363 -0
- package/lib/framework/impl/table/table-impl.js.map +1 -0
- package/lib/framework/impl/table/table-row-impl.d.ts +26 -0
- package/lib/framework/impl/table/table-row-impl.js +75 -0
- 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/lib/framework/impl/table/table-split-cell-patch.js +89 -0
- 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/lib/framework/impl/table/table-split-cell.js +464 -0
- package/lib/framework/impl/table/table-split-cell.js.map +1 -0
- package/lib/framework/impl/table/table-util.d.ts +150 -0
- package/lib/framework/impl/table/table-util.js +678 -0
- package/lib/framework/impl/table/table-util.js.map +1 -0
- package/lib/framework/impl/text/text-impl.d.ts +32 -0
- package/lib/framework/impl/text/text-impl.js +149 -0
- package/lib/framework/impl/text/text-impl.js.map +1 -0
- package/lib/framework/impl/text/track-run-impl.d.ts +27 -0
- package/lib/framework/impl/text/track-run-impl.js +112 -0
- package/lib/framework/impl/text/track-run-impl.js.map +1 -0
- package/lib/framework/notify.d.ts +13 -0
- package/lib/framework/notify.js +116 -0
- package/lib/framework/notify.js.map +1 -0
- package/lib/framework/range-util.d.ts +40 -0
- package/lib/framework/range-util.js +312 -0
- package/lib/framework/range-util.js.map +1 -0
- package/lib/framework/render-context.d.ts +91 -0
- package/lib/framework/render-context.js +384 -0
- package/lib/framework/render-context.js.map +1 -0
- package/lib/framework/render-define.d.ts +109 -0
- package/lib/framework/render-define.js +195 -0
- package/lib/framework/render-define.js.map +1 -0
- package/lib/framework/selection-overlays.d.ts +30 -0
- package/lib/framework/selection-overlays.js +124 -0
- package/lib/framework/selection-overlays.js.map +1 -0
- package/lib/texteditor.d.ts +318 -0
- package/lib/texteditor.js +913 -0
- 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/lib/util/table-bind.js +6 -0
- package/lib/util/table-bind.js.map +1 -0
- package/package.json +1 -1
- package/tsconfig.json +1 -1
- package/webpack.config.js +0 -1
@@ -0,0 +1,312 @@
|
|
1
|
+
import { BranchElement, LeafElement } from "./element-define";
|
2
|
+
import { ElementUtil } from "./element-util";
|
3
|
+
import { TableCellElement } from "./impl/table/table-cell-impl";
|
4
|
+
import { TableElement } from "./impl/table/table-impl";
|
5
|
+
import { TableRowElement } from "./impl/table/table-row-impl";
|
6
|
+
import { SelectionRange } from './document-selection';
|
7
|
+
import { TextGroupElement } from "./impl/text/text-impl";
|
8
|
+
export class RangeUtil {
|
9
|
+
static getSelctionRange(startControl, startOffset, endControl, endOffset, ancestorCommonControl) {
|
10
|
+
if (ancestorCommonControl instanceof TableElement || ancestorCommonControl instanceof TableRowElement) {
|
11
|
+
const tbElement = ancestorCommonControl instanceof TableElement ? ancestorCommonControl : ancestorCommonControl.parent;
|
12
|
+
return this.getTableSelectionRange(startControl, startOffset, endControl, endOffset, tbElement);
|
13
|
+
}
|
14
|
+
if (startControl === endControl && startControl.parent === ancestorCommonControl) {
|
15
|
+
return this.getCollapsedRange(startControl, startOffset, endOffset, ancestorCommonControl);
|
16
|
+
}
|
17
|
+
const startRange = this.getStartForbackTreeData(startControl, ancestorCommonControl, null, startOffset).selectedChildren[0];
|
18
|
+
const endRange = this.getEndForwardTreeData(endControl, ancestorCommonControl, null, endOffset).selectedChildren[0];
|
19
|
+
const startIndex = ancestorCommonControl.getChildIndex(startRange.target);
|
20
|
+
const endIndex = ancestorCommonControl.getChildIndex(endRange.target);
|
21
|
+
const commonRange = this.getChildTreeData(ancestorCommonControl, startIndex + 1, endIndex);
|
22
|
+
if (this.rangeEquals(startRange, endRange)) {
|
23
|
+
commonRange.selectedChildren.unshift(startRange);
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
commonRange.selectedChildren.unshift(startRange);
|
27
|
+
commonRange.selectedChildren.push(endRange);
|
28
|
+
}
|
29
|
+
this.setRangeFullSelected(commonRange);
|
30
|
+
return commonRange;
|
31
|
+
}
|
32
|
+
static getCollapsedRange(startControl, startOffset, endOffset, ancestorCommonControl) {
|
33
|
+
const range = {
|
34
|
+
target: ancestorCommonControl,
|
35
|
+
isFullSelected: false,
|
36
|
+
startOffset: startControl.getIndex(),
|
37
|
+
endOffset: startControl.getIndex() + 1,
|
38
|
+
selectedChildren: [this.getChildTreeData(startControl, startOffset, endOffset)]
|
39
|
+
};
|
40
|
+
this.setRangeFullSelected(range);
|
41
|
+
return range;
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* 获取表格选区的内容
|
45
|
+
* @param startControl
|
46
|
+
* @param startOffset
|
47
|
+
* @param endControl
|
48
|
+
* @param endOffset
|
49
|
+
* @param tb
|
50
|
+
*/
|
51
|
+
static getTableSelectionRange(startControl, startOffset, endControl, endOffset, tb) {
|
52
|
+
const startCell = ElementUtil.getParentByType(startControl, TableCellElement);
|
53
|
+
const endCell = ElementUtil.getParentByType(endControl, TableCellElement);
|
54
|
+
if (startCell && endCell && startCell.parent.parent === tb && endCell.parent.parent === tb) {
|
55
|
+
let startRowIndex = startCell.parent.getIndex();
|
56
|
+
let endRowIndex = endCell.parent.getIndex();
|
57
|
+
let startColIndex = startCell.getIndex();
|
58
|
+
let endColIndex = endCell.getIndex();
|
59
|
+
if (startColIndex > endColIndex) {
|
60
|
+
[startColIndex, endColIndex] = [endColIndex, startColIndex];
|
61
|
+
}
|
62
|
+
if (startRowIndex > endRowIndex) {
|
63
|
+
[startRowIndex, endRowIndex] = [endRowIndex, startRowIndex];
|
64
|
+
}
|
65
|
+
const region = { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex }; //this.getTableRectSelectedRegion(tb, { startRow: startRowIndex, endRow: endRowIndex, startCol: startColIndex, endCol: endColIndex });
|
66
|
+
startRowIndex = region.startRow;
|
67
|
+
endRowIndex = region.endRow;
|
68
|
+
startColIndex = region.startCol;
|
69
|
+
endColIndex = region.endCol;
|
70
|
+
const rowRanges = [];
|
71
|
+
for (let i = startRowIndex; i <= endRowIndex; i++) {
|
72
|
+
const cellRanges = [];
|
73
|
+
const row = tb.getChild(i);
|
74
|
+
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);
|
78
|
+
if (!cellFirstLeafElement && !cell.isNotBeMergedCell()) {
|
79
|
+
cellRanges.push({
|
80
|
+
target: cell,
|
81
|
+
isFullSelected: true,
|
82
|
+
startOffset: 0,
|
83
|
+
endOffset: 1,
|
84
|
+
selectedChildren: []
|
85
|
+
});
|
86
|
+
}
|
87
|
+
else {
|
88
|
+
const cellRange = this.getSelctionRange(cellFirstLeafElement, 0, cellLastLeafElement, 1, cell);
|
89
|
+
cellRanges.push(cellRange);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
const rowRange = {
|
93
|
+
target: row,
|
94
|
+
isFullSelected: false,
|
95
|
+
startOffset: startColIndex,
|
96
|
+
endOffset: endColIndex,
|
97
|
+
selectedChildren: [...cellRanges]
|
98
|
+
};
|
99
|
+
rowRange.isFullSelected = startColIndex === 0 && endColIndex === row.length - 1;
|
100
|
+
rowRanges.push(rowRange);
|
101
|
+
}
|
102
|
+
const tableRange = {
|
103
|
+
target: tb,
|
104
|
+
isFullSelected: false,
|
105
|
+
startOffset: startRowIndex,
|
106
|
+
endOffset: endRowIndex,
|
107
|
+
selectedChildren: [...rowRanges]
|
108
|
+
};
|
109
|
+
tableRange.isFullSelected = startRowIndex === 0 && endRowIndex === tb.length - 1 && tableRange.selectedChildren.every(item => item.isFullSelected);
|
110
|
+
return tableRange;
|
111
|
+
}
|
112
|
+
else {
|
113
|
+
throw new Error('当前单元格和表格不对应');
|
114
|
+
}
|
115
|
+
}
|
116
|
+
static getStartForbackTreeData(control, ancestorCommonControl, childData, offset) {
|
117
|
+
if (!control) {
|
118
|
+
debugger;
|
119
|
+
}
|
120
|
+
const parent = control.parent;
|
121
|
+
if (parent !== ancestorCommonControl) {
|
122
|
+
const range = this.getChildTreeData(parent, parent.getChildIndex(control) + 1, -1);
|
123
|
+
if (childData) {
|
124
|
+
range.selectedChildren.unshift(childData);
|
125
|
+
}
|
126
|
+
else {
|
127
|
+
range.selectedChildren.unshift(this.getChildTreeData(control, offset, -1));
|
128
|
+
}
|
129
|
+
this.setRangeFullSelected(range);
|
130
|
+
return this.getStartForbackTreeData(parent, ancestorCommonControl, range, -99);
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
const ancestorRange = {
|
134
|
+
target: ancestorCommonControl,
|
135
|
+
startOffset: -1,
|
136
|
+
endOffset: -1,
|
137
|
+
isFullSelected: false,
|
138
|
+
selectedChildren: []
|
139
|
+
};
|
140
|
+
if (!childData) {
|
141
|
+
childData = this.getChildTreeData(control, offset, -1);
|
142
|
+
}
|
143
|
+
ancestorRange.selectedChildren.push(childData);
|
144
|
+
this.setRangeFullSelected(ancestorRange);
|
145
|
+
return ancestorRange;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
static getEndForwardTreeData(control, ancestorCommonControl, childData, offset) {
|
149
|
+
const parent = control.parent;
|
150
|
+
if (parent !== ancestorCommonControl) {
|
151
|
+
const range = this.getChildTreeData(parent, 0, parent.getChildIndex(control));
|
152
|
+
if (childData) {
|
153
|
+
range.selectedChildren.push(childData);
|
154
|
+
}
|
155
|
+
else {
|
156
|
+
range.selectedChildren.push(this.getChildTreeData(control, 0, offset));
|
157
|
+
}
|
158
|
+
this.setRangeFullSelected(range);
|
159
|
+
return this.getEndForwardTreeData(parent, ancestorCommonControl, range, -99);
|
160
|
+
}
|
161
|
+
else {
|
162
|
+
const ancestorRange = {
|
163
|
+
target: ancestorCommonControl,
|
164
|
+
startOffset: 0,
|
165
|
+
endOffset: 0,
|
166
|
+
isFullSelected: false,
|
167
|
+
selectedChildren: []
|
168
|
+
};
|
169
|
+
if (!childData) {
|
170
|
+
childData = this.getChildTreeData(control, 0, offset);
|
171
|
+
}
|
172
|
+
ancestorRange.selectedChildren.push(childData);
|
173
|
+
this.setRangeFullSelected(ancestorRange);
|
174
|
+
return ancestorRange;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
static getChildTreeData(control, start, end) {
|
178
|
+
const range = {
|
179
|
+
target: control,
|
180
|
+
isFullSelected: false,
|
181
|
+
startOffset: start,
|
182
|
+
endOffset: end,
|
183
|
+
selectedChildren: []
|
184
|
+
};
|
185
|
+
if (control instanceof LeafElement) {
|
186
|
+
if (control instanceof TextGroupElement) {
|
187
|
+
range.endOffset = end === -1 ? control.text.length : end;
|
188
|
+
}
|
189
|
+
else {
|
190
|
+
range.endOffset = end === -1 ? 1 : end;
|
191
|
+
}
|
192
|
+
}
|
193
|
+
else if (control instanceof BranchElement) {
|
194
|
+
end = end === -1 ? control.length : end;
|
195
|
+
for (let i = start; i < end; i++) {
|
196
|
+
const child = control.getChild(i);
|
197
|
+
range.selectedChildren.push(this.getChildTreeData(child, 0, -1));
|
198
|
+
}
|
199
|
+
}
|
200
|
+
this.setRangeFullSelected(range);
|
201
|
+
return range;
|
202
|
+
}
|
203
|
+
static setRangeFullSelected(selectionRange) {
|
204
|
+
if (selectionRange.target instanceof LeafElement) {
|
205
|
+
const { startOffset, endOffset } = selectionRange;
|
206
|
+
if (selectionRange.target instanceof TextGroupElement) {
|
207
|
+
selectionRange.isFullSelected = startOffset === 0 && endOffset === selectionRange.target.text.length;
|
208
|
+
}
|
209
|
+
else {
|
210
|
+
selectionRange.isFullSelected = startOffset === 0 && endOffset === 1;
|
211
|
+
}
|
212
|
+
}
|
213
|
+
else if (selectionRange.target instanceof BranchElement) {
|
214
|
+
const parent = selectionRange.target;
|
215
|
+
const selectedChildren = selectionRange.selectedChildren;
|
216
|
+
//被合并的table-cell,内容为empty
|
217
|
+
if (selectedChildren.length === 0) {
|
218
|
+
if (selectionRange.startOffset === 0 && selectionRange.endOffset === -1) {
|
219
|
+
selectionRange.isFullSelected = true;
|
220
|
+
return;
|
221
|
+
}
|
222
|
+
selectionRange.isFullSelected = false;
|
223
|
+
return;
|
224
|
+
}
|
225
|
+
const firstItem = selectedChildren[0];
|
226
|
+
const firstItemIndex = parent.getChildIndex(firstItem.target);
|
227
|
+
const lastItem = selectedChildren[selectedChildren.length - 1];
|
228
|
+
const lastItemIndex = parent.getChildIndex(lastItem.target);
|
229
|
+
selectionRange.startOffset = firstItemIndex;
|
230
|
+
selectionRange.endOffset = lastItemIndex;
|
231
|
+
selectionRange.isFullSelected = firstItemIndex === 0 && firstItem.isFullSelected && lastItemIndex === parent.length - 1 && lastItem.isFullSelected;
|
232
|
+
}
|
233
|
+
}
|
234
|
+
static rangeEquals(selRange1, selRange2) {
|
235
|
+
return selRange1.target === selRange2.target && selRange1.startOffset === selRange2.startOffset && selRange1.endOffset === selRange2.endOffset;
|
236
|
+
}
|
237
|
+
/**
|
238
|
+
* 根据选区范围更正选区内容状态
|
239
|
+
* @param selectedRange
|
240
|
+
* @param selectionState
|
241
|
+
*/
|
242
|
+
static fixSelectionStateByRange(selectionState) {
|
243
|
+
const { startControl, startOffset, endControl, endOffset, selectedRange } = selectionState;
|
244
|
+
if (!selectedRange || !startControl) {
|
245
|
+
return false;
|
246
|
+
}
|
247
|
+
const startRange = this.getStartRangeTarget(selectedRange);
|
248
|
+
const endRange = this.getEndRangeTarget(selectedRange);
|
249
|
+
if (startRange.target !== startControl || startRange.startOffset !== startOffset || endRange.target !== endControl || endRange.endOffset !== endOffset) {
|
250
|
+
selectionState.clear();
|
251
|
+
const ssRange = new SelectionRange();
|
252
|
+
ssRange.setStart(startRange.target, startRange.startOffset);
|
253
|
+
ssRange.setEnd(endRange.target, endRange.endOffset);
|
254
|
+
selectionState.addRange(ssRange);
|
255
|
+
return true;
|
256
|
+
}
|
257
|
+
return false;
|
258
|
+
}
|
259
|
+
static getStartRangeTarget(parentRange) {
|
260
|
+
if (parentRange.target instanceof LeafElement) {
|
261
|
+
return parentRange;
|
262
|
+
}
|
263
|
+
else {
|
264
|
+
for (let i = 0; i < parentRange.selectedChildren.length; i++) {
|
265
|
+
const res = this.getStartRangeTarget(parentRange.selectedChildren[i]);
|
266
|
+
if (res) {
|
267
|
+
return res;
|
268
|
+
}
|
269
|
+
}
|
270
|
+
}
|
271
|
+
return null;
|
272
|
+
}
|
273
|
+
static getEndRangeTarget(parentRange) {
|
274
|
+
if (parentRange.target instanceof LeafElement) {
|
275
|
+
return parentRange;
|
276
|
+
}
|
277
|
+
else {
|
278
|
+
for (let i = parentRange.selectedChildren.length - 1; i >= 0; i--) {
|
279
|
+
const res = this.getEndRangeTarget(parentRange.selectedChildren[i]);
|
280
|
+
if (res) {
|
281
|
+
return res;
|
282
|
+
}
|
283
|
+
}
|
284
|
+
}
|
285
|
+
return null;
|
286
|
+
}
|
287
|
+
/**
|
288
|
+
* 循环递归执行选区对象方法
|
289
|
+
* @param range
|
290
|
+
* @param handler
|
291
|
+
*/
|
292
|
+
static recursionTraversalRangeHandler(range, handler) {
|
293
|
+
handler(range);
|
294
|
+
for (let i = 0; i < range.selectedChildren.length; i++) {
|
295
|
+
this.recursionTraversalRangeHandler(range.selectedChildren[i], handler);
|
296
|
+
}
|
297
|
+
}
|
298
|
+
/**
|
299
|
+
* 判断元素是否被完全选中
|
300
|
+
* @param range
|
301
|
+
*/
|
302
|
+
static checkElementFullInRange(range, ele) {
|
303
|
+
let res = false;
|
304
|
+
this.recursionTraversalRangeHandler(range, (childRange) => {
|
305
|
+
if (childRange.target === ele && childRange.isFullSelected) {
|
306
|
+
res = true;
|
307
|
+
}
|
308
|
+
});
|
309
|
+
return res;
|
310
|
+
}
|
311
|
+
}
|
312
|
+
//# sourceMappingURL=range-util.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"range-util.js","sourceRoot":"","sources":["../../src/med_editor/framework/range-util.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
import { EditorContext } from "./document-context";
|
2
|
+
import { Position, ViewOptions } from "./element-define";
|
3
|
+
import { TextProps } from "./element-props";
|
4
|
+
import { TextGroupElement, TextGroupRenderObject } from "./impl/text/text-impl";
|
5
|
+
export interface TextUnits {
|
6
|
+
sourceSize: number;
|
7
|
+
actualSize: number;
|
8
|
+
char: string;
|
9
|
+
}
|
10
|
+
export declare type RenderContenxtType = {
|
11
|
+
contentContext: PaintContent;
|
12
|
+
overlaysContext: PaintContent;
|
13
|
+
drawMode: 'view' | 'print';
|
14
|
+
clear(): void;
|
15
|
+
viewOptions: ViewOptions;
|
16
|
+
docCtx: EditorContext;
|
17
|
+
commit(pageSetting: {
|
18
|
+
width: number;
|
19
|
+
height: number;
|
20
|
+
} | null): void;
|
21
|
+
};
|
22
|
+
export declare class RenderContenxt {
|
23
|
+
mainCtx: CanvasRenderingContext2D;
|
24
|
+
viewOptions: ViewOptions;
|
25
|
+
docCtx: EditorContext;
|
26
|
+
contentContext: PaintContent;
|
27
|
+
overlaysContext: PaintContent;
|
28
|
+
drawMode: 'view' | 'print';
|
29
|
+
private contentOffCanvas;
|
30
|
+
private overlayOffCanvas;
|
31
|
+
constructor(mainCtx: CanvasRenderingContext2D, viewOptions: ViewOptions, docCtx: EditorContext);
|
32
|
+
private createNativeCanvas;
|
33
|
+
setCanvasProps(pageSetting?: {
|
34
|
+
width: number;
|
35
|
+
height: number;
|
36
|
+
} | null): void;
|
37
|
+
clear(): void;
|
38
|
+
commit(pageSetting?: {
|
39
|
+
width: number;
|
40
|
+
height: number;
|
41
|
+
} | null): void;
|
42
|
+
}
|
43
|
+
export declare class PaintContent {
|
44
|
+
ctx: CanvasRenderingContext2D;
|
45
|
+
private viewOptions;
|
46
|
+
constructor(ctx: CanvasRenderingContext2D, viewOptions: ViewOptions);
|
47
|
+
init(): void;
|
48
|
+
setGlobalAlpha(alpha: number): void;
|
49
|
+
getGlobalAlpha(): number;
|
50
|
+
clear(): void;
|
51
|
+
drawText(text: string, textProps: TextProps, x: number, y: number, width: number, height: number): void;
|
52
|
+
fillCircular(x: number, y: number, r: number, color?: string): void;
|
53
|
+
drawTextUnits(textGroupRender: TextGroupRenderObject, x: number, y: number): void;
|
54
|
+
getParaLineHeight(textEle: TextGroupElement): number;
|
55
|
+
measureText(text: string, textProps: TextProps): {
|
56
|
+
width: number;
|
57
|
+
height: number;
|
58
|
+
};
|
59
|
+
measureTextUnits(units: Array<TextUnits>, textProps: TextProps): void;
|
60
|
+
clearRect(x: number, y: number, width: number, height: number): void;
|
61
|
+
save(): void;
|
62
|
+
restore(): void;
|
63
|
+
strokeRect(x: number, y: number, width: number, height: number, strokeColor?: string, strokeWidth?: number): void;
|
64
|
+
drawLine(x: number, y: number, width: number, lineColor?: string, lineWidth?: number): void;
|
65
|
+
fillRect(x: number, y: number, width: number, height: number, fillColor?: string, shadowBlur?: number, shadowColor?: string): void;
|
66
|
+
strokeLines(lines: Array<Position>, width?: number, strokeColor?: string): void;
|
67
|
+
fillLines(lines: Array<Position>, width?: number, fillColor?: string): void;
|
68
|
+
drawCheckBox(x: number, y: number, width: number, height: number, isChecked: boolean): void;
|
69
|
+
drawRadioBox(x: number, y: number, width: number, height: number, isChecked: boolean): void;
|
70
|
+
/**
|
71
|
+
* 绘制图片
|
72
|
+
* @param image
|
73
|
+
* @param sx image的矩形(裁剪)选择框的左上角 X 轴坐标
|
74
|
+
* @param sy image的矩形(裁剪)选择框的左上角 Y 轴坐标
|
75
|
+
* @param sWidth image的矩形(裁剪)选择框的宽度
|
76
|
+
* @param sHeight image的矩形(裁剪)选择框的高度
|
77
|
+
* @param dx image的左上角在目标canvas上 X 轴坐标
|
78
|
+
* @param dy image的左上角在目标canvas上 Y 轴坐标
|
79
|
+
* @param dWidth image在目标canvas上绘制的宽度
|
80
|
+
* @param dHeight image在目标canvas上绘制的高度
|
81
|
+
*/
|
82
|
+
drawImage(image: HTMLImageElement, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number): void;
|
83
|
+
drawDashLine(points: Array<Position>, lineDash: Array<number>, lineColor?: string, lineWidth?: number): void;
|
84
|
+
roundRect(x: number, y: number, width: number, height: number, radius: number | {
|
85
|
+
tl: number;
|
86
|
+
tr: number;
|
87
|
+
br: number;
|
88
|
+
bl: number;
|
89
|
+
}, fill: boolean, stroke: boolean): void;
|
90
|
+
clip(x: number, y: number, width: number, height: number): void;
|
91
|
+
}
|