@hailin-zheng/editor-core 1.0.15 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1613 -0
- package/lib/framework/element-props.d.ts +2 -2
- package/lib/framework/impl/index.d.ts +36 -0
- package/lib/index.d.ts +34 -0
- package/lib/index.js +15672 -0
- package/lib/texteditor.d.ts +3 -3
- package/package.json +27 -26
- package/lib/doc-ruler.js +0 -313
- package/lib/doc-ruler.js.map +0 -1
- package/lib/framework/common-util.js +0 -178
- package/lib/framework/common-util.js.map +0 -1
- package/lib/framework/document-change.js +0 -1342
- package/lib/framework/document-change.js.map +0 -1
- package/lib/framework/document-combine.js +0 -40
- package/lib/framework/document-combine.js.map +0 -1
- package/lib/framework/document-comment.js +0 -148
- package/lib/framework/document-comment.js.map +0 -1
- package/lib/framework/document-context.js +0 -330
- package/lib/framework/document-context.js.map +0 -1
- package/lib/framework/document-eval-func.js +0 -48
- package/lib/framework/document-eval-func.js.map +0 -1
- package/lib/framework/document-event.js +0 -1054
- package/lib/framework/document-event.js.map +0 -1
- package/lib/framework/document-history.js +0 -65
- package/lib/framework/document-history.js.map +0 -1
- package/lib/framework/document-images-loader.js +0 -66
- package/lib/framework/document-images-loader.js.map +0 -1
- package/lib/framework/document-input-cursor.js +0 -239
- package/lib/framework/document-input-cursor.js.map +0 -1
- package/lib/framework/document-paint.js +0 -103
- package/lib/framework/document-paint.js.map +0 -1
- package/lib/framework/document-print-offscreen.js +0 -128
- package/lib/framework/document-print-offscreen.js.map +0 -1
- package/lib/framework/document-print.js +0 -203
- package/lib/framework/document-print.js.map +0 -1
- package/lib/framework/document-segmenter.js +0 -106
- package/lib/framework/document-segmenter.js.map +0 -1
- package/lib/framework/document-selection.js +0 -358
- package/lib/framework/document-selection.js.map +0 -1
- package/lib/framework/document-template.js +0 -20
- package/lib/framework/document-template.js.map +0 -1
- package/lib/framework/document-textline-mode.js +0 -30
- package/lib/framework/document-textline-mode.js.map +0 -1
- package/lib/framework/element-define.js +0 -579
- package/lib/framework/element-define.js.map +0 -1
- package/lib/framework/element-event-define.js +0 -108
- package/lib/framework/element-event-define.js.map +0 -1
- package/lib/framework/element-measure.js +0 -551
- package/lib/framework/element-measure.js.map +0 -1
- package/lib/framework/element-paint.js +0 -170
- package/lib/framework/element-paint.js.map +0 -1
- package/lib/framework/element-props.js +0 -809
- package/lib/framework/element-props.js.map +0 -1
- package/lib/framework/element-reader.js +0 -151
- package/lib/framework/element-reader.js.map +0 -1
- package/lib/framework/element-render-cut.js +0 -449
- package/lib/framework/element-render-cut.js.map +0 -1
- package/lib/framework/element-serialize.js +0 -113
- package/lib/framework/element-serialize.js.map +0 -1
- package/lib/framework/element-util.js +0 -1463
- package/lib/framework/element-util.js.map +0 -1
- package/lib/framework/impl/checkbox/checkbox-impl.js +0 -64
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-content-impl.js +0 -105
- package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-element-impl.js +0 -62
- package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-container-impl.js +0 -62
- package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-util.js +0 -67
- package/lib/framework/impl/comments/comments-util.js.map +0 -1
- package/lib/framework/impl/comments/validate-msg-impl.js +0 -83
- package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-decorate-impl.js +0 -91
- package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-barcode.js +0 -115
- package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-base-impl.js +0 -205
- package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-check-impl.js +0 -133
- package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-date-impl.js +0 -111
- package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-group-impl.js +0 -130
- package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-image-impl.js +0 -137
- package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-list-impl.js +0 -131
- package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-text-impl.js +0 -103
- package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
- package/lib/framework/impl/decorate/fill-null-space-imple.js +0 -43
- package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
- package/lib/framework/impl/document/doc-body-impl.js +0 -79
- package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-body-part-impl.js +0 -94
- package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
- 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.js +0 -77
- package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-header-impl.js +0 -83
- package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-impl.js +0 -209
- package/lib/framework/impl/document/doc-impl.js.map +0 -1
- package/lib/framework/impl/media-formula/menstrual-history.js +0 -153
- package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
- package/lib/framework/impl/paragraph/p-impl.js +0 -156
- package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
- package/lib/framework/impl/picture/image-impl.js +0 -124
- package/lib/framework/impl/picture/image-impl.js.map +0 -1
- package/lib/framework/impl/radio/radio-impl.js +0 -72
- package/lib/framework/impl/radio/radio-impl.js.map +0 -1
- package/lib/framework/impl/symbol/br-symbol-impl.js +0 -54
- package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
- package/lib/framework/impl/symbol/p-symbol-impl.js +0 -54
- package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
- package/lib/framework/impl/table/table-cell-impl.js +0 -145
- package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
- package/lib/framework/impl/table/table-impl.js +0 -363
- package/lib/framework/impl/table/table-impl.js.map +0 -1
- package/lib/framework/impl/table/table-row-impl.js +0 -75
- package/lib/framework/impl/table/table-row-impl.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell-patch.js +0 -89
- package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell.js +0 -464
- package/lib/framework/impl/table/table-split-cell.js.map +0 -1
- package/lib/framework/impl/table/table-util.js +0 -678
- package/lib/framework/impl/table/table-util.js.map +0 -1
- package/lib/framework/impl/text/text-impl.js +0 -149
- package/lib/framework/impl/text/text-impl.js.map +0 -1
- package/lib/framework/impl/text/track-run-impl.js +0 -112
- package/lib/framework/impl/text/track-run-impl.js.map +0 -1
- package/lib/framework/notify.js +0 -116
- package/lib/framework/notify.js.map +0 -1
- package/lib/framework/range-util.js +0 -312
- package/lib/framework/range-util.js.map +0 -1
- package/lib/framework/render-context.js +0 -384
- package/lib/framework/render-context.js.map +0 -1
- package/lib/framework/render-define.js +0 -195
- package/lib/framework/render-define.js.map +0 -1
- package/lib/framework/selection-overlays.js +0 -124
- package/lib/framework/selection-overlays.js.map +0 -1
- package/lib/texteditor.js +0 -913
- package/lib/texteditor.js.map +0 -1
- package/lib/util/subject.js +0 -88
- package/lib/util/subject.js.map +0 -1
- package/lib/util/table-bind.js +0 -6
- package/lib/util/table-bind.js.map +0 -1
@@ -1,358 +0,0 @@
|
|
1
|
-
import { Subject } from "rxjs";
|
2
|
-
import { BranchElement, LeafElement } from "./element-define";
|
3
|
-
import { ElementUtil } from "./element-util";
|
4
|
-
import { DocumentContainerRender } from "./impl/document/doc-container-impl";
|
5
|
-
import { DocumentRenderObject } from "./impl/document/doc-impl";
|
6
|
-
import { TextGroupElement } from "./impl/text/text-impl";
|
7
|
-
import { DocumentBodyElement } from "./impl/document/doc-body-impl";
|
8
|
-
export class DocumentSelection {
|
9
|
-
constructor() {
|
10
|
-
this.selectionState = new SelectionState();
|
11
|
-
}
|
12
|
-
selectionState;
|
13
|
-
snapshotSelectionState;
|
14
|
-
setSelectionState(hitInfo) {
|
15
|
-
const { startHitInfo, endHitInfo } = hitInfo;
|
16
|
-
this.selectionState.clear();
|
17
|
-
this.selectionState.startHitInfo = startHitInfo;
|
18
|
-
if (!startHitInfo) {
|
19
|
-
return;
|
20
|
-
}
|
21
|
-
const startRange = new SelectionRange();
|
22
|
-
startRange.setStart(startHitInfo.element, startHitInfo.offset);
|
23
|
-
if (endHitInfo) {
|
24
|
-
startRange.setEnd(endHitInfo.element, endHitInfo.offset);
|
25
|
-
}
|
26
|
-
else {
|
27
|
-
startRange.setEnd(startHitInfo.element, startHitInfo.offset);
|
28
|
-
}
|
29
|
-
this.selectionState.addRange(startRange);
|
30
|
-
}
|
31
|
-
/**
|
32
|
-
* 获取选区共同的祖先控件
|
33
|
-
*/
|
34
|
-
static getAncestorCommonControl(startControl, endControl) {
|
35
|
-
const startNestParents = this.getNestParents(startControl.parent);
|
36
|
-
const ancestorCommonControl = this.getCommonParenet(endControl.parent, startNestParents);
|
37
|
-
if (!ancestorCommonControl) {
|
38
|
-
throw new Error('未找到公共的祖先组件');
|
39
|
-
}
|
40
|
-
return ancestorCommonControl;
|
41
|
-
}
|
42
|
-
/**
|
43
|
-
* 获取向上的嵌套父级节点集合
|
44
|
-
* @param control
|
45
|
-
* @param array
|
46
|
-
*/
|
47
|
-
static getNestParents(control) {
|
48
|
-
if (control) {
|
49
|
-
return [control, ...this.getNestParents(control.parent)];
|
50
|
-
}
|
51
|
-
return [];
|
52
|
-
}
|
53
|
-
static getCommonParenet(control, array) {
|
54
|
-
if (!control) {
|
55
|
-
return null;
|
56
|
-
}
|
57
|
-
if (array.some(item => item === control)) {
|
58
|
-
return control;
|
59
|
-
}
|
60
|
-
return this.getCommonParenet(control?.parent, array);
|
61
|
-
}
|
62
|
-
updateSelectionState() {
|
63
|
-
if (this.compareSelectionEquals()) {
|
64
|
-
return false;
|
65
|
-
}
|
66
|
-
const range = this.selectionState.range;
|
67
|
-
this.transformRange();
|
68
|
-
if (!range) {
|
69
|
-
return false;
|
70
|
-
}
|
71
|
-
const startControlIndex = ElementUtil.getControlIndex(range.startControl);
|
72
|
-
const endControlIndex = ElementUtil.getControlIndex(range.endControl);
|
73
|
-
if (endControlIndex < startControlIndex) {
|
74
|
-
const clone = range.clone();
|
75
|
-
clone.startControl = range.endControl;
|
76
|
-
clone.startOffset = range.endOffset;
|
77
|
-
clone.endControl = range.startControl;
|
78
|
-
clone.endOffset = range.startOffset;
|
79
|
-
clone.editable = range.editable;
|
80
|
-
this.selectionState.addRange(clone);
|
81
|
-
}
|
82
|
-
this.selectionState.editable = range.editable;
|
83
|
-
this.selectionState.startControl = range.startControl;
|
84
|
-
this.selectionState.startOffset = range.startOffset;
|
85
|
-
this.selectionState.startControlIndex = ElementUtil.getControlIndex(range.startControl);
|
86
|
-
this.selectionState.endControl = range.endControl;
|
87
|
-
this.selectionState.endOffset = range.endOffset;
|
88
|
-
this.selectionState.endControlIndex = ElementUtil.getControlIndex(range.endControl);
|
89
|
-
this.selectionState.ancestorCommonControl = DocumentSelection.getAncestorCommonControl(this.selectionState.startControl, this.selectionState.endControl);
|
90
|
-
this.selectionState.enableTrackChanges = this.getEnableTrackChanges(range.startControl);
|
91
|
-
return true;
|
92
|
-
}
|
93
|
-
/**
|
94
|
-
* 获取当前选区区域内是否支持留痕
|
95
|
-
* @private
|
96
|
-
*/
|
97
|
-
getEnableTrackChanges(ele) {
|
98
|
-
const body = ElementUtil.getParentByType(ele, DocumentBodyElement);
|
99
|
-
return body?.trackChanges || false;
|
100
|
-
}
|
101
|
-
compareSelectionEquals() {
|
102
|
-
const range = this.selectionState.range;
|
103
|
-
const snap = this.snapshotSelectionState;
|
104
|
-
if (snap && range) {
|
105
|
-
return range.startControl === snap.startControl
|
106
|
-
&& range.startOffset === snap.startOffset
|
107
|
-
&& range.endControl === snap.endControl
|
108
|
-
&& range.endOffset === snap.endOffset;
|
109
|
-
}
|
110
|
-
return false;
|
111
|
-
}
|
112
|
-
/**
|
113
|
-
* 转换选区内容
|
114
|
-
* 处理结束选区在开始选区之前
|
115
|
-
*/
|
116
|
-
transformRange() {
|
117
|
-
let range = this.selectionState.range;
|
118
|
-
if (!range) {
|
119
|
-
return;
|
120
|
-
}
|
121
|
-
const { startControl, startOffset, endControl, endOffset } = range;
|
122
|
-
const startControlIndex = ElementUtil.getControlIndex(startControl);
|
123
|
-
const endControlIndex = ElementUtil.getControlIndex(endControl);
|
124
|
-
if ((endControlIndex < startControlIndex)) {
|
125
|
-
const clone = range.clone();
|
126
|
-
clone.startControl = endControl;
|
127
|
-
clone.startOffset = endOffset;
|
128
|
-
clone.endControl = startControl;
|
129
|
-
clone.endOffset = startOffset;
|
130
|
-
this.selectionState.addRange(clone);
|
131
|
-
}
|
132
|
-
range = this.selectionState.range;
|
133
|
-
if (!range) {
|
134
|
-
throw new Error('range is null');
|
135
|
-
}
|
136
|
-
range.calcRange();
|
137
|
-
if ((range.startControl === range.endControl && range.startOffset > range.endOffset)) {
|
138
|
-
const { startOffset, endOffset } = range;
|
139
|
-
range.startOffset = endOffset;
|
140
|
-
range.endOffset = startOffset;
|
141
|
-
}
|
142
|
-
range.calcRange();
|
143
|
-
}
|
144
|
-
takeSnapshot() {
|
145
|
-
this.snapshotSelectionState = this.selectionState.clone();
|
146
|
-
}
|
147
|
-
clearSnapshot() {
|
148
|
-
this.snapshotSelectionState = null;
|
149
|
-
}
|
150
|
-
}
|
151
|
-
export class SelectionState {
|
152
|
-
get startControl() {
|
153
|
-
return this._startControl;
|
154
|
-
}
|
155
|
-
set startControl(value) {
|
156
|
-
this._startControl = value;
|
157
|
-
}
|
158
|
-
get endControl() {
|
159
|
-
return this._endControl;
|
160
|
-
}
|
161
|
-
set endControl(value) {
|
162
|
-
this._endControl = value;
|
163
|
-
}
|
164
|
-
onChangedEvent = new Subject();
|
165
|
-
startControlIndex;
|
166
|
-
startOffset;
|
167
|
-
endControlIndex;
|
168
|
-
endOffset;
|
169
|
-
get collapsed() {
|
170
|
-
const { startControlIndex, startOffset, endControlIndex, endOffset } = this;
|
171
|
-
return !(startControlIndex !== endControlIndex || (startControlIndex === endControlIndex && startOffset !== endOffset));
|
172
|
-
}
|
173
|
-
_startControl;
|
174
|
-
_endControl;
|
175
|
-
ancestorCommonControl;
|
176
|
-
range;
|
177
|
-
startHitInfo;
|
178
|
-
selectedRange;
|
179
|
-
editable = true;
|
180
|
-
renderContainer;
|
181
|
-
cursorPos;
|
182
|
-
//选区重新计算,触发函数
|
183
|
-
afterSelectionChanged = null;
|
184
|
-
//当前选区的上下文是否支持留痕修改
|
185
|
-
enableTrackChanges = false;
|
186
|
-
constructor() {
|
187
|
-
this.clear();
|
188
|
-
}
|
189
|
-
clear() {
|
190
|
-
this.range = null;
|
191
|
-
this.startOffset = -1;
|
192
|
-
this.endOffset = -1;
|
193
|
-
this._startControl = null;
|
194
|
-
this._endControl = null;
|
195
|
-
this.ancestorCommonControl = null;
|
196
|
-
this.startControlIndex = -1;
|
197
|
-
this.endControlIndex = -1;
|
198
|
-
this.selectedRange = null;
|
199
|
-
this.cursorPos = null;
|
200
|
-
}
|
201
|
-
addRange(range) {
|
202
|
-
this.clear();
|
203
|
-
this.range = range;
|
204
|
-
this.onChangedEvent.next();
|
205
|
-
}
|
206
|
-
resetRange(startControl, startOffset) {
|
207
|
-
const range = new SelectionRange();
|
208
|
-
range.setStart(startControl, startOffset);
|
209
|
-
range.setEnd(startControl, startOffset);
|
210
|
-
this.addRange(range);
|
211
|
-
return range;
|
212
|
-
}
|
213
|
-
surround(ele) {
|
214
|
-
const range = new SelectionRange();
|
215
|
-
range.setStart(ele, 0);
|
216
|
-
range.setEnd(ele, -1);
|
217
|
-
this.addRange(range);
|
218
|
-
}
|
219
|
-
clone() {
|
220
|
-
const clone = new SelectionState();
|
221
|
-
clone._startControl = this._startControl;
|
222
|
-
clone.startOffset = this.startOffset;
|
223
|
-
clone._endControl = this._endControl;
|
224
|
-
clone.endOffset = this.endOffset;
|
225
|
-
clone.ancestorCommonControl = this.ancestorCommonControl;
|
226
|
-
clone.startControlIndex = this.startControlIndex;
|
227
|
-
clone.endControlIndex = this.endControlIndex;
|
228
|
-
clone.selectedRange = this.selectedRange;
|
229
|
-
return clone;
|
230
|
-
}
|
231
|
-
}
|
232
|
-
export class SelectionRange {
|
233
|
-
startControl;
|
234
|
-
startOffset;
|
235
|
-
endControl;
|
236
|
-
endOffset;
|
237
|
-
editable = true;
|
238
|
-
setStart(control, offset) {
|
239
|
-
this.startControl = control;
|
240
|
-
this.startOffset = offset;
|
241
|
-
}
|
242
|
-
setEnd(control, offset) {
|
243
|
-
this.endControl = control;
|
244
|
-
this.endOffset = offset;
|
245
|
-
}
|
246
|
-
calcStart() {
|
247
|
-
const res = this.setInfo(this.startControl, this.startOffset);
|
248
|
-
this.setStart(res.control, res.offset);
|
249
|
-
}
|
250
|
-
calcEnd() {
|
251
|
-
const res = this.setInfo(this.endControl, this.endOffset);
|
252
|
-
this.setEnd(res.control, res.offset);
|
253
|
-
}
|
254
|
-
calcRange() {
|
255
|
-
this.calcStart();
|
256
|
-
this.calcEnd();
|
257
|
-
}
|
258
|
-
setInfo(control, offset) {
|
259
|
-
if (control instanceof LeafElement) {
|
260
|
-
if (control instanceof TextGroupElement) {
|
261
|
-
offset = offset === -1 ? control.text.length : offset;
|
262
|
-
}
|
263
|
-
offset = offset === -1 ? 1 : offset;
|
264
|
-
return { control, offset };
|
265
|
-
}
|
266
|
-
else if (control instanceof BranchElement) {
|
267
|
-
if (offset > control.length) {
|
268
|
-
throw new Error('超索引');
|
269
|
-
}
|
270
|
-
if (offset === control.length) {
|
271
|
-
const child = control.getChild(offset - 1);
|
272
|
-
return this.setInfo(child, 1);
|
273
|
-
}
|
274
|
-
else if (offset === -1) {
|
275
|
-
const child = control.getChild(control.length - 1);
|
276
|
-
return this.setInfo(child, -1);
|
277
|
-
}
|
278
|
-
else {
|
279
|
-
const child = control.getChild(offset);
|
280
|
-
return this.setInfo(child, 0);
|
281
|
-
}
|
282
|
-
}
|
283
|
-
else {
|
284
|
-
throw new Error('未实现');
|
285
|
-
}
|
286
|
-
}
|
287
|
-
clone() {
|
288
|
-
const clone = new SelectionRange();
|
289
|
-
clone.startControl = this.startControl;
|
290
|
-
clone.startOffset = this.startOffset;
|
291
|
-
clone.endControl = this.endControl;
|
292
|
-
clone.endOffset = this.endOffset;
|
293
|
-
return clone;
|
294
|
-
}
|
295
|
-
}
|
296
|
-
export class DocumentCursor {
|
297
|
-
static getElementCursorPos(ele, offset, hitRegion, docNum) {
|
298
|
-
if (hitRegion === 'body' || hitRegion === 'review') {
|
299
|
-
return this.getElementRenderPos(ele, offset, ele.paintRenders);
|
300
|
-
}
|
301
|
-
else if (hitRegion === 'footer' || hitRegion === 'header') {
|
302
|
-
const docContainer = ElementUtil.getParentRender(ele.paintRenders[0], DocumentContainerRender);
|
303
|
-
if (!docContainer) {
|
304
|
-
throw new Error('docContainer is null');
|
305
|
-
}
|
306
|
-
const docRender = docContainer.getChild(docNum);
|
307
|
-
const currDocPaintRenders = ele.paintRenders.filter(item => ElementUtil.getParentRender(item, DocumentRenderObject) === docRender);
|
308
|
-
return this.getElementRenderPos(ele, offset, currDocPaintRenders);
|
309
|
-
}
|
310
|
-
debugger;
|
311
|
-
throw new Error('未找到元素偏移量对应的光标位置');
|
312
|
-
}
|
313
|
-
static getElementRenderPos(ele, offset, paints) {
|
314
|
-
if (ele instanceof TextGroupElement) {
|
315
|
-
let count = 0;
|
316
|
-
for (let i = 0; i < paints.length; i++) {
|
317
|
-
const paintRender = paints[i];
|
318
|
-
let horX = 0;
|
319
|
-
if (paintRender.textMeasures.length + count < offset) {
|
320
|
-
count += paintRender.textMeasures.length;
|
321
|
-
continue;
|
322
|
-
}
|
323
|
-
for (let i = 0; i <= paintRender.textMeasures.length; i++) {
|
324
|
-
if (count === offset || (i === 0 && count + 0.5 === offset)) {
|
325
|
-
const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 });
|
326
|
-
//上标、下标位置处理
|
327
|
-
if (['superscript', 'subscript'].indexOf(ele.props.vertAlign) >= 0) {
|
328
|
-
rect.height -= ele.props.fontSize / 2;
|
329
|
-
if (ele.props.vertAlign === 'subscript') {
|
330
|
-
rect.y += rect.height;
|
331
|
-
}
|
332
|
-
}
|
333
|
-
rect.x += horX;
|
334
|
-
return {
|
335
|
-
render: paintRender,
|
336
|
-
rect
|
337
|
-
};
|
338
|
-
}
|
339
|
-
count++;
|
340
|
-
horX += paintRender.textMeasures[i].actualSize;
|
341
|
-
}
|
342
|
-
}
|
343
|
-
}
|
344
|
-
else {
|
345
|
-
const paintRender = paints[0];
|
346
|
-
const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 });
|
347
|
-
if (offset === 1) {
|
348
|
-
rect.x += rect.width;
|
349
|
-
}
|
350
|
-
return {
|
351
|
-
render: paintRender,
|
352
|
-
rect
|
353
|
-
};
|
354
|
-
}
|
355
|
-
throw new Error('未能定位到元素位置');
|
356
|
-
}
|
357
|
-
}
|
358
|
-
//# sourceMappingURL=document-selection.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"document-selection.js","sourceRoot":"lib/","sources":["framework/document-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAkD,MAAM,kBAAkB,CAAC;AAE9G,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAyB,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,OAAO,iBAAiB;IAC1B;QACI,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED,cAAc,CAAiB;IAC/B,sBAAsB,CAAyB;IAC/C,iBAAiB,CAAC,OAAiE;QAC/E,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;SACV;QACD,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;QACxC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;SAC5D;aAAM;YACH,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;MAEE;IACF,MAAM,CAAC,wBAAwB,CAAC,YAAyB,EAAE,UAAuB;QAC9E,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACzF,IAAI,CAAC,qBAAqB,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;SACjC;QACD,OAAO,qBAAqB,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAA6B;QAC/C,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5D;QACD,OAAO,EAAE,CAAC;IAEd,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAA6B,EAAE,KAA2B;QAC9E,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,IAAI,CAAC;SACf;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;YACtC,OAAO,OAAO,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAC/B,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,eAAe,GAAG,iBAAiB,EAAE;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC;YACtC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;YACpC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;YACtC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;YACpC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAE9C,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC,YAA2B,CAAC;QACrE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAExF,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,UAAyB,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEpF,IAAI,CAAC,cAAc,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAEzJ,IAAI,CAAC,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,GAAY;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACnE,OAAO,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC;IACvC,CAAC;IAEO,sBAAsB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACzC,IAAI,IAAI,IAAI,KAAK,EAAE;YACf,OAAO,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;mBACxC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;mBACtC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;mBACpC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;SAC7C;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,cAAc;QAClB,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QACD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QACnE,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,EAAE;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;YAChC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;YAC9B,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC;YAChC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACvC;QACD,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;SACnC;QACD,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;YAClF,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YACzC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;YAC9B,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;SACjC;QACD,KAAK,CAAC,SAAS,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACR,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,aAAa;QACT,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACvC,CAAC;CAEJ;AAED,MAAM,OAAO,cAAc;IACvB,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAA4B,CAAC;IAC7C,CAAC;IAED,IAAI,YAAY,CAAC,KAAyB;QACtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAA0B,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,CAAC,KAAyB;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,cAAc,GAAkB,IAAI,OAAO,EAAE,CAAC;IAC9C,iBAAiB,CAAU;IAC3B,WAAW,CAAU;IACrB,eAAe,CAAU;IACzB,SAAS,CAAU;IACnB,IAAI,SAAS;QACT,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC5E,OAAO,CAAC,CAAC,iBAAiB,KAAK,eAAe,IAAI,CAAC,iBAAiB,KAAK,eAAe,IAAI,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC;IAC5H,CAAC;IACO,aAAa,CAAsB;IACnC,WAAW,CAAsB;IACzC,qBAAqB,CAAwB;IAC7C,KAAK,CAAyB;IAC9B,YAAY,CAAuB;IACnC,aAAa,CAAgC;IAC7C,QAAQ,GAAY,IAAI,CAAC;IACzB,eAAe,CAA2B;IAC1C,SAAS,CAAe;IACxB,aAAa;IACb,qBAAqB,GAAiD,IAAI,CAAC;IAC3E,kBAAkB;IAClB,kBAAkB,GAAY,KAAK,CAAC;IACpC;QACI,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IACD,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,KAAqB;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,UAAU,CAAC,YAAqB,EAAE,WAAmB;QACjD,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,GAAY;QACjB,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACD,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACzD,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACjD,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,OAAO,KAAK,CAAC;IACjB,CAAC;CAGJ;AAID,MAAM,OAAO,cAAc;IACvB,YAAY,CAAW;IACvB,WAAW,CAAU;IACrB,UAAU,CAAW;IACrB,SAAS,CAAU;IACnB,QAAQ,GAAY,IAAI,CAAC;IACzB,QAAQ,CAAC,OAAgB,EAAE,MAAc;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC9B,CAAC;IACD,MAAM,CAAC,OAAgB,EAAE,MAAc;QACnC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;IAC5B,CAAC;IAEO,SAAS;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEO,OAAO;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,SAAS;QACL,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,OAAO,CAAC,OAAgB,EAAE,MAAc;QAC5C,IAAI,OAAO,YAAY,WAAW,EAAE;YAChC,IAAI,OAAO,YAAY,gBAAgB,EAAE;gBACrC,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;aACzD;YACD,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SAC9B;aAAM,IAAI,OAAO,YAAY,aAAa,EAAE;YACzC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;aAC1B;YACD,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjC;iBAAM,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;gBACtB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;aAClC;iBAAM;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjC;SACJ;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;IACL,CAAC;IAED,KAAK;QACD,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;CAEJ;AAED,MAAM,OAAO,cAAc;IACvB,MAAM,CAAC,mBAAmB,CAAC,GAAgB,EAAE,MAAc,EAAE,SAAgC,EAAE,MAAc;QACzG,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,EAAE;YAChD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;SAClE;aAAM,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE;YACzD,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;aAC1C;YACD,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAyB,CAAC;YACxE,MAAM,mBAAmB,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,oBAAoB,CAAC,KAAK,SAAS,CAAC,CAAC;YACnI,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;SACrE;QACD,QAAQ,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACtC,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,GAAgB,EAAE,MAAc,EAAE,MAA2B;QAC5F,IAAI,GAAG,YAAY,gBAAgB,EAAE;YACjC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAA0B,CAAC;gBACvD,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,EAAE;oBAClD,KAAK,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;oBACzC,SAAS;iBACZ;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvD,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,EAAE;wBACzD,MAAM,IAAI,GAAG,WAAW,CAAC,0BAA0B,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;wBAChF,WAAW;wBACX,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;4BAChE,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;4BACtC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,WAAW,EAAE;gCACrC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;6BACzB;yBACJ;wBACD,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;wBACf,OAAO;4BACH,MAAM,EAAE,WAAW;4BACnB,IAAI;yBACP,CAAA;qBACJ;oBACD,KAAK,EAAE,CAAC;oBACR,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;iBAClD;aACJ;SACJ;aAAM;YACH,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,0BAA0B,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAChF,IAAI,MAAM,KAAK,CAAC,EAAE;gBACd,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;aACxB;YACD,OAAO;gBACH,MAAM,EAAE,WAAW;gBACnB,IAAI;aACP,CAAA;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;IAChC,CAAC;CACJ","sourcesContent":["import { Subject } from \"rxjs\";\nimport { BranchElement, LeafElement, Rect, Element, SelectionContentRange, Position } from \"./element-define\";\nimport { HitEventInfo, HitRegion } from \"./element-event-define\";\nimport { ElementUtil } from \"./element-util\";\nimport { DocumentContainerRender } from \"./impl/document/doc-container-impl\";\nimport { DocumentRenderObject } from \"./impl/document/doc-impl\";\nimport { TextGroupElement, TextGroupRenderObject } from \"./impl/text/text-impl\";\nimport { RenderObject } from \"./render-define\";\nimport { DocumentBodyElement } from \"./impl/document/doc-body-impl\";\n\nexport class DocumentSelection {\n constructor() {\n this.selectionState = new SelectionState();\n }\n\n selectionState: SelectionState;\n snapshotSelectionState!: SelectionState | null;\n setSelectionState(hitInfo: { startHitInfo: HitEventInfo, endHitInfo: HitEventInfo }): void {\n const { startHitInfo, endHitInfo } = hitInfo;\n this.selectionState.clear();\n this.selectionState.startHitInfo = startHitInfo;\n if (!startHitInfo) {\n return;\n }\n const startRange = new SelectionRange();\n startRange.setStart(startHitInfo.element, startHitInfo.offset);\n if (endHitInfo) {\n startRange.setEnd(endHitInfo.element, endHitInfo.offset);\n } else {\n startRange.setEnd(startHitInfo.element, startHitInfo.offset);\n }\n this.selectionState.addRange(startRange);\n }\n\n /**\n * 获取选区共同的祖先控件\n */\n static getAncestorCommonControl(startControl: LeafElement, endControl: LeafElement): BranchElement {\n const startNestParents = this.getNestParents(startControl.parent);\n const ancestorCommonControl = this.getCommonParenet(endControl.parent, startNestParents);\n if (!ancestorCommonControl) {\n throw new Error('未找到公共的祖先组件');\n }\n return ancestorCommonControl;\n }\n\n /**\n * 获取向上的嵌套父级节点集合\n * @param control \n * @param array \n */\n static getNestParents(control: BranchElement | null): Array<BranchElement> {\n if (control) {\n return [control, ...this.getNestParents(control.parent)];\n }\n return [];\n\n }\n\n static getCommonParenet(control: BranchElement | null, array: Array<BranchElement>): BranchElement | null {\n if (!control) {\n return null;\n }\n if (array.some(item => item === control)) {\n return control;\n }\n return this.getCommonParenet(control?.parent, array);\n }\n\n updateSelectionState(): boolean {\n if (this.compareSelectionEquals()) {\n return false;\n }\n const range = this.selectionState.range;\n this.transformRange();\n if (!range) {\n return false;\n }\n const startControlIndex = ElementUtil.getControlIndex(range.startControl);\n const endControlIndex = ElementUtil.getControlIndex(range.endControl);\n if (endControlIndex < startControlIndex) {\n const clone = range.clone();\n clone.startControl = range.endControl;\n clone.startOffset = range.endOffset;\n clone.endControl = range.startControl;\n clone.endOffset = range.startOffset;\n clone.editable = range.editable;\n this.selectionState.addRange(clone);\n }\n this.selectionState.editable = range.editable;\n\n this.selectionState.startControl = range.startControl as LeafElement;\n this.selectionState.startOffset = range.startOffset;\n this.selectionState.startControlIndex = ElementUtil.getControlIndex(range.startControl);\n\n this.selectionState.endControl = range.endControl as LeafElement;\n this.selectionState.endOffset = range.endOffset;\n this.selectionState.endControlIndex = ElementUtil.getControlIndex(range.endControl);\n\n this.selectionState.ancestorCommonControl = DocumentSelection.getAncestorCommonControl(this.selectionState.startControl, this.selectionState.endControl);\n\n this.selectionState.enableTrackChanges = this.getEnableTrackChanges(range.startControl);\n return true;\n }\n\n /**\n * 获取当前选区区域内是否支持留痕\n * @private\n */\n private getEnableTrackChanges(ele: Element): boolean {\n const body = ElementUtil.getParentByType(ele, DocumentBodyElement);\n return body?.trackChanges || false;\n }\n\n private compareSelectionEquals(): boolean {\n const range = this.selectionState.range;\n const snap = this.snapshotSelectionState;\n if (snap && range) {\n return range.startControl === snap.startControl\n && range.startOffset === snap.startOffset\n && range.endControl === snap.endControl\n && range.endOffset === snap.endOffset;\n }\n return false;\n }\n\n /**\n * 转换选区内容\n * 处理结束选区在开始选区之前\n */\n private transformRange(): void {\n let range = this.selectionState.range;\n if (!range) {\n return;\n }\n const { startControl, startOffset, endControl, endOffset } = range;\n const startControlIndex = ElementUtil.getControlIndex(startControl);\n const endControlIndex = ElementUtil.getControlIndex(endControl);\n if ((endControlIndex < startControlIndex)) {\n const clone = range.clone();\n clone.startControl = endControl;\n clone.startOffset = endOffset;\n clone.endControl = startControl;\n clone.endOffset = startOffset;\n this.selectionState.addRange(clone);\n }\n range = this.selectionState.range;\n if (!range) {\n throw new Error('range is null')\n }\n range.calcRange();\n if ((range.startControl === range.endControl && range.startOffset > range.endOffset)) {\n const { startOffset, endOffset } = range;\n range.startOffset = endOffset;\n range.endOffset = startOffset;\n }\n range.calcRange();\n }\n\n takeSnapshot(): void {\n this.snapshotSelectionState = this.selectionState.clone();\n }\n\n clearSnapshot(): void {\n this.snapshotSelectionState = null;\n }\n\n}\n\nexport class SelectionState {\n get startControl(): LeafElement {\n return this._startControl as LeafElement;\n }\n\n set startControl(value: LeafElement | null) {\n this._startControl = value;\n }\n\n get endControl(): LeafElement {\n return this._endControl as LeafElement;\n }\n\n set endControl(value: LeafElement | null) {\n this._endControl = value;\n }\n onChangedEvent: Subject<void> = new Subject();\n startControlIndex!: number;\n startOffset!: number;\n endControlIndex!: number;\n endOffset!: number;\n get collapsed() {\n const { startControlIndex, startOffset, endControlIndex, endOffset } = this;\n return !(startControlIndex !== endControlIndex || (startControlIndex === endControlIndex && startOffset !== endOffset));\n }\n private _startControl!: LeafElement | null;\n private _endControl!: LeafElement | null;\n ancestorCommonControl!: BranchElement | null;\n range!: SelectionRange | null;\n startHitInfo!: HitEventInfo | null;\n selectedRange!: SelectionContentRange | null;\n editable: boolean = true;\n renderContainer!: DocumentContainerRender;\n cursorPos!: Rect | null;\n //选区重新计算,触发函数\n afterSelectionChanged: ((newVal: SelectionState) => boolean) | null = null;\n //当前选区的上下文是否支持留痕修改\n enableTrackChanges: boolean = false;\n constructor() {\n this.clear();\n }\n clear(): void {\n this.range = null;\n this.startOffset = -1;\n this.endOffset = -1;\n this._startControl = null;\n this._endControl = null;\n this.ancestorCommonControl = null;\n this.startControlIndex = -1;\n this.endControlIndex = -1;\n this.selectedRange = null;\n this.cursorPos = null;\n }\n\n addRange(range: SelectionRange): void {\n this.clear();\n this.range = range;\n this.onChangedEvent.next();\n }\n resetRange(startControl: Element, startOffset: number): SelectionRange {\n const range = new SelectionRange();\n range.setStart(startControl, startOffset);\n range.setEnd(startControl, startOffset);\n this.addRange(range);\n return range;\n }\n\n surround(ele: Element): void {\n const range = new SelectionRange();\n range.setStart(ele, 0);\n range.setEnd(ele, -1);\n this.addRange(range);\n }\n\n clone(): SelectionState {\n const clone = new SelectionState();\n clone._startControl = this._startControl;\n clone.startOffset = this.startOffset;\n clone._endControl = this._endControl;\n clone.endOffset = this.endOffset;\n clone.ancestorCommonControl = this.ancestorCommonControl;\n clone.startControlIndex = this.startControlIndex;\n clone.endControlIndex = this.endControlIndex;\n clone.selectedRange = this.selectedRange;\n return clone;\n }\n\n\n}\n\n\n\nexport class SelectionRange {\n startControl!: Element;\n startOffset!: number;\n endControl!: Element;\n endOffset!: number;\n editable: boolean = true;\n setStart(control: Element, offset: number): void {\n this.startControl = control;\n this.startOffset = offset;\n }\n setEnd(control: Element, offset: number): void {\n this.endControl = control;\n this.endOffset = offset;\n }\n\n private calcStart(): void {\n const res = this.setInfo(this.startControl, this.startOffset);\n this.setStart(res.control, res.offset);\n }\n\n private calcEnd(): void {\n const res = this.setInfo(this.endControl, this.endOffset);\n this.setEnd(res.control, res.offset);\n }\n\n calcRange(): void {\n this.calcStart();\n this.calcEnd();\n }\n\n private setInfo(control: Element, offset: number): { control: LeafElement, offset: number } {\n if (control instanceof LeafElement) {\n if (control instanceof TextGroupElement) {\n offset = offset === -1 ? control.text.length : offset;\n }\n offset = offset === -1 ? 1 : offset;\n return { control, offset };\n } else if (control instanceof BranchElement) {\n if (offset > control.length) {\n throw new Error('超索引');\n }\n if (offset === control.length) {\n const child = control.getChild(offset - 1);\n return this.setInfo(child, 1);\n } else if (offset === -1) {\n const child = control.getChild(control.length - 1);\n return this.setInfo(child, -1);\n } else {\n const child = control.getChild(offset);\n return this.setInfo(child, 0);\n }\n } else {\n throw new Error('未实现');\n }\n }\n\n clone(): SelectionRange {\n const clone = new SelectionRange();\n clone.startControl = this.startControl;\n clone.startOffset = this.startOffset;\n clone.endControl = this.endControl;\n clone.endOffset = this.endOffset;\n return clone;\n }\n\n}\n\nexport class DocumentCursor {\n static getElementCursorPos(ele: LeafElement, offset: number, hitRegion: HitRegion | undefined, docNum: number): { render: RenderObject, rect: Rect } {\n if (hitRegion === 'body' || hitRegion === 'review') {\n return this.getElementRenderPos(ele, offset, ele.paintRenders);\n } else if (hitRegion === 'footer' || hitRegion === 'header') {\n const docContainer = ElementUtil.getParentRender(ele.paintRenders[0], DocumentContainerRender);\n if (!docContainer) {\n throw new Error('docContainer is null')\n }\n const docRender = docContainer.getChild(docNum) as DocumentRenderObject;\n const currDocPaintRenders = ele.paintRenders.filter(item => ElementUtil.getParentRender(item, DocumentRenderObject) === docRender);\n return this.getElementRenderPos(ele, offset, currDocPaintRenders);\n }\n debugger;\n throw new Error('未找到元素偏移量对应的光标位置')\n }\n\n private static getElementRenderPos(ele: LeafElement, offset: number, paints: Array<RenderObject>): { render: RenderObject, rect: Rect } {\n if (ele instanceof TextGroupElement) {\n let count = 0;\n for (let i = 0; i < paints.length; i++) {\n const paintRender = paints[i] as TextGroupRenderObject;\n let horX = 0;\n if (paintRender.textMeasures.length + count < offset) {\n count += paintRender.textMeasures.length;\n continue;\n }\n for (let i = 0; i <= paintRender.textMeasures.length; i++) {\n if (count === offset || (i === 0 && count + 0.5 === offset)) {\n const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })\n //上标、下标位置处理\n if (['superscript', 'subscript'].indexOf(ele.props.vertAlign) >= 0) {\n rect.height -= ele.props.fontSize / 2;\n if (ele.props.vertAlign === 'subscript') {\n rect.y += rect.height;\n }\n }\n rect.x += horX;\n return {\n render: paintRender,\n rect\n }\n }\n count++;\n horX += paintRender.textMeasures[i].actualSize;\n }\n }\n } else {\n const paintRender = paints[0];\n const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })\n if (offset === 1) {\n rect.x += rect.width;\n }\n return {\n render: paintRender,\n rect\n }\n }\n throw new Error('未能定位到元素位置')\n }\n}\n"]}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { PaddingProps } from "./element-define";
|
2
|
-
import { DocumentProps } from "./element-props";
|
3
|
-
import { DocumentBodyElement } from "./impl/document/doc-body-impl";
|
4
|
-
import { DocumentFooterElement } from "./impl/document/doc-footer-impl";
|
5
|
-
import { DocumentHeaderElement } from "./impl/document/doc-header-impl";
|
6
|
-
import { DocumentElement } from "./impl/document/doc-impl";
|
7
|
-
export class DocumentTemplate {
|
8
|
-
static createA4Doc() {
|
9
|
-
const doc = new DocumentElement();
|
10
|
-
doc.props = new DocumentProps();
|
11
|
-
doc.props.width = 210;
|
12
|
-
doc.props.height = 297;
|
13
|
-
doc.props.padding = new PaddingProps(25.4, 25.4, 19.1, 19.1);
|
14
|
-
doc.addChild(new DocumentHeaderElement());
|
15
|
-
doc.addChild(new DocumentBodyElement());
|
16
|
-
doc.addChild(new DocumentFooterElement());
|
17
|
-
return doc;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
//# sourceMappingURL=document-template.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"document-template.js","sourceRoot":"lib/","sources":["framework/document-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,OAAO,gBAAgB;IACzB,MAAM,CAAC,WAAW;QACd,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,GAAG,CAAC,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACf,CAAC;CACJ","sourcesContent":["import { PaddingProps } from \"./element-define\";\nimport { DocumentProps } from \"./element-props\";\nimport { DocumentBodyElement } from \"./impl/document/doc-body-impl\";\nimport { DocumentFooterElement } from \"./impl/document/doc-footer-impl\";\nimport { DocumentHeaderElement } from \"./impl/document/doc-header-impl\";\nimport { DocumentElement } from \"./impl/document/doc-impl\";\n\nexport class DocumentTemplate {\n static createA4Doc(): DocumentElement {\n const doc = new DocumentElement();\n doc.props = new DocumentProps();\n doc.props.width = 210;\n doc.props.height = 297;\n doc.props.padding = new PaddingProps(25.4, 25.4, 19.1, 19.1);\n doc.addChild(new DocumentHeaderElement());\n doc.addChild(new DocumentBodyElement());\n doc.addChild(new DocumentFooterElement());\n return doc;\n }\n}"]}
|
@@ -1,30 +0,0 @@
|
|
1
|
-
import { BranchElement } from "./element-define";
|
2
|
-
import { ElementUtil } from "./element-util";
|
3
|
-
import { TableElement, textLineRenderMode } from "./impl/table/table-impl";
|
4
|
-
/**
|
5
|
-
* 文字行渲染模式
|
6
|
-
用于医嘱打印模式
|
7
|
-
*/
|
8
|
-
export function runTextLineRender(ele, options, renderCtx) {
|
9
|
-
if (!options.textRowLineMode) {
|
10
|
-
return;
|
11
|
-
}
|
12
|
-
if (ele instanceof TableElement) {
|
13
|
-
textLineRenderMode(ele, options, renderCtx);
|
14
|
-
remeasureParentRenders(ele.measureRender);
|
15
|
-
return;
|
16
|
-
}
|
17
|
-
if (ele instanceof BranchElement) {
|
18
|
-
for (let i = 0; i < ele.length; i++) {
|
19
|
-
runTextLineRender(ele.getChild(i), options, renderCtx);
|
20
|
-
}
|
21
|
-
}
|
22
|
-
}
|
23
|
-
function remeasureParentRenders(render) {
|
24
|
-
if (!render) {
|
25
|
-
return;
|
26
|
-
}
|
27
|
-
ElementUtil.remeasure(render);
|
28
|
-
remeasureParentRenders(render.parent);
|
29
|
-
}
|
30
|
-
//# sourceMappingURL=document-textline-mode.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"document-textline-mode.js","sourceRoot":"lib/","sources":["framework/document-textline-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI3E;;;EAGE;AACF,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,OAAoB,EAAE,SAA6B;IAC/F,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QAC1B,OAAO;KACV;IACD,IAAI,GAAG,YAAY,YAAY,EAAE;QAC7B,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5C,sBAAsB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACzC,OAAO;KACV;IACD,IAAI,GAAG,YAAY,aAAa,EAAE;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAC1D;KACJ;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA2B;IACvD,IAAI,CAAC,MAAM,EAAE;QACT,OAAM;KACT;IACD,WAAW,CAAC,SAAS,CAAC,MAAoC,CAAC,CAAA;IAC3D,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAEzC,CAAC","sourcesContent":["import { BranchElement, ViewOptions, Element } from \"./element-define\";\nimport { ElementUtil } from \"./element-util\";\nimport { TableElement, textLineRenderMode } from \"./impl/table/table-impl\";\nimport { RenderContenxtType } from \"./render-context\";\nimport { BlockContainerRenderObject, RenderObject } from \"./render-define\";\n\n/**\n* 文字行渲染模式\n用于医嘱打印模式\n*/\nexport function runTextLineRender(ele: Element, options: ViewOptions, renderCtx: RenderContenxtType): void {\n if (!options.textRowLineMode) {\n return;\n }\n if (ele instanceof TableElement) {\n textLineRenderMode(ele, options, renderCtx);\n remeasureParentRenders(ele.measureRender)\n return;\n }\n if (ele instanceof BranchElement) {\n for (let i = 0; i < ele.length; i++) {\n runTextLineRender(ele.getChild(i), options, renderCtx);\n }\n }\n}\n\nfunction remeasureParentRenders(render: RenderObject | null): void {\n if (!render) {\n return\n }\n ElementUtil.remeasure(render as BlockContainerRenderObject)\n remeasureParentRenders(render.parent)\n\n}"]}
|