@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
package/{lib/framework/document-selection.js → src/med_editor/framework/document-selection.ts}
RENAMED
@@ -1,17 +1,21 @@
|
|
1
1
|
import { Subject } from "rxjs";
|
2
|
-
import { BranchElement, LeafElement } from "./element-define";
|
2
|
+
import { BranchElement, LeafElement, Rect, Element, SelectionContentRange, Position } from "./element-define";
|
3
|
+
import { HitEventInfo, HitRegion } from "./element-event-define";
|
3
4
|
import { ElementUtil } from "./element-util";
|
4
5
|
import { DocumentContainerRender } from "./impl/document/doc-container-impl";
|
5
6
|
import { DocumentRenderObject } from "./impl/document/doc-impl";
|
6
|
-
import { TextGroupElement } from "./impl/text/text-impl";
|
7
|
-
import {
|
7
|
+
import { TextGroupElement, TextGroupRenderObject } from "./impl/text/text-impl";
|
8
|
+
import { RenderObject } from "./render-define";
|
9
|
+
import { DocumentBodyElement } from "./impl/document/doc-body-impl";
|
10
|
+
|
8
11
|
export class DocumentSelection {
|
9
12
|
constructor() {
|
10
13
|
this.selectionState = new SelectionState();
|
11
14
|
}
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
+
|
16
|
+
selectionState: SelectionState;
|
17
|
+
snapshotSelectionState!: SelectionState | null;
|
18
|
+
setSelectionState(hitInfo: { startHitInfo: HitEventInfo, endHitInfo: HitEventInfo }): void {
|
15
19
|
const { startHitInfo, endHitInfo } = hitInfo;
|
16
20
|
this.selectionState.clear();
|
17
21
|
this.selectionState.startHitInfo = startHitInfo;
|
@@ -22,16 +26,16 @@ export class DocumentSelection {
|
|
22
26
|
startRange.setStart(startHitInfo.element, startHitInfo.offset);
|
23
27
|
if (endHitInfo) {
|
24
28
|
startRange.setEnd(endHitInfo.element, endHitInfo.offset);
|
25
|
-
}
|
26
|
-
else {
|
29
|
+
} else {
|
27
30
|
startRange.setEnd(startHitInfo.element, startHitInfo.offset);
|
28
31
|
}
|
29
32
|
this.selectionState.addRange(startRange);
|
30
33
|
}
|
34
|
+
|
31
35
|
/**
|
32
36
|
* 获取选区共同的祖先控件
|
33
37
|
*/
|
34
|
-
static getAncestorCommonControl(startControl, endControl) {
|
38
|
+
static getAncestorCommonControl(startControl: LeafElement, endControl: LeafElement): BranchElement {
|
35
39
|
const startNestParents = this.getNestParents(startControl.parent);
|
36
40
|
const ancestorCommonControl = this.getCommonParenet(endControl.parent, startNestParents);
|
37
41
|
if (!ancestorCommonControl) {
|
@@ -39,18 +43,21 @@ export class DocumentSelection {
|
|
39
43
|
}
|
40
44
|
return ancestorCommonControl;
|
41
45
|
}
|
46
|
+
|
42
47
|
/**
|
43
48
|
* 获取向上的嵌套父级节点集合
|
44
|
-
* @param control
|
45
|
-
* @param array
|
49
|
+
* @param control
|
50
|
+
* @param array
|
46
51
|
*/
|
47
|
-
static getNestParents(control) {
|
52
|
+
static getNestParents(control: BranchElement | null): Array<BranchElement> {
|
48
53
|
if (control) {
|
49
54
|
return [control, ...this.getNestParents(control.parent)];
|
50
55
|
}
|
51
56
|
return [];
|
57
|
+
|
52
58
|
}
|
53
|
-
|
59
|
+
|
60
|
+
static getCommonParenet(control: BranchElement | null, array: Array<BranchElement>): BranchElement | null {
|
54
61
|
if (!control) {
|
55
62
|
return null;
|
56
63
|
}
|
@@ -59,7 +66,8 @@ export class DocumentSelection {
|
|
59
66
|
}
|
60
67
|
return this.getCommonParenet(control?.parent, array);
|
61
68
|
}
|
62
|
-
|
69
|
+
|
70
|
+
updateSelectionState(): boolean {
|
63
71
|
if (this.compareSelectionEquals()) {
|
64
72
|
return false;
|
65
73
|
}
|
@@ -80,25 +88,31 @@ export class DocumentSelection {
|
|
80
88
|
this.selectionState.addRange(clone);
|
81
89
|
}
|
82
90
|
this.selectionState.editable = range.editable;
|
83
|
-
|
91
|
+
|
92
|
+
this.selectionState.startControl = range.startControl as LeafElement;
|
84
93
|
this.selectionState.startOffset = range.startOffset;
|
85
94
|
this.selectionState.startControlIndex = ElementUtil.getControlIndex(range.startControl);
|
86
|
-
|
95
|
+
|
96
|
+
this.selectionState.endControl = range.endControl as LeafElement;
|
87
97
|
this.selectionState.endOffset = range.endOffset;
|
88
98
|
this.selectionState.endControlIndex = ElementUtil.getControlIndex(range.endControl);
|
99
|
+
|
89
100
|
this.selectionState.ancestorCommonControl = DocumentSelection.getAncestorCommonControl(this.selectionState.startControl, this.selectionState.endControl);
|
101
|
+
|
90
102
|
this.selectionState.enableTrackChanges = this.getEnableTrackChanges(range.startControl);
|
91
103
|
return true;
|
92
104
|
}
|
105
|
+
|
93
106
|
/**
|
94
107
|
* 获取当前选区区域内是否支持留痕
|
95
108
|
* @private
|
96
109
|
*/
|
97
|
-
getEnableTrackChanges(ele) {
|
110
|
+
private getEnableTrackChanges(ele: Element): boolean {
|
98
111
|
const body = ElementUtil.getParentByType(ele, DocumentBodyElement);
|
99
112
|
return body?.trackChanges || false;
|
100
113
|
}
|
101
|
-
|
114
|
+
|
115
|
+
private compareSelectionEquals(): boolean {
|
102
116
|
const range = this.selectionState.range;
|
103
117
|
const snap = this.snapshotSelectionState;
|
104
118
|
if (snap && range) {
|
@@ -109,11 +123,12 @@ export class DocumentSelection {
|
|
109
123
|
}
|
110
124
|
return false;
|
111
125
|
}
|
126
|
+
|
112
127
|
/**
|
113
128
|
* 转换选区内容
|
114
129
|
* 处理结束选区在开始选区之前
|
115
130
|
*/
|
116
|
-
transformRange() {
|
131
|
+
private transformRange(): void {
|
117
132
|
let range = this.selectionState.range;
|
118
133
|
if (!range) {
|
119
134
|
return;
|
@@ -131,7 +146,7 @@ export class DocumentSelection {
|
|
131
146
|
}
|
132
147
|
range = this.selectionState.range;
|
133
148
|
if (!range) {
|
134
|
-
throw new Error('range is null')
|
149
|
+
throw new Error('range is null')
|
135
150
|
}
|
136
151
|
range.calcRange();
|
137
152
|
if ((range.startControl === range.endControl && range.startOffset > range.endOffset)) {
|
@@ -141,52 +156,59 @@ export class DocumentSelection {
|
|
141
156
|
}
|
142
157
|
range.calcRange();
|
143
158
|
}
|
144
|
-
|
159
|
+
|
160
|
+
takeSnapshot(): void {
|
145
161
|
this.snapshotSelectionState = this.selectionState.clone();
|
146
162
|
}
|
147
|
-
|
163
|
+
|
164
|
+
clearSnapshot(): void {
|
148
165
|
this.snapshotSelectionState = null;
|
149
166
|
}
|
167
|
+
|
150
168
|
}
|
169
|
+
|
151
170
|
export class SelectionState {
|
152
|
-
get startControl() {
|
153
|
-
return this._startControl;
|
171
|
+
get startControl(): LeafElement {
|
172
|
+
return this._startControl as LeafElement;
|
154
173
|
}
|
155
|
-
|
174
|
+
|
175
|
+
set startControl(value: LeafElement | null) {
|
156
176
|
this._startControl = value;
|
157
177
|
}
|
158
|
-
|
159
|
-
|
178
|
+
|
179
|
+
get endControl(): LeafElement {
|
180
|
+
return this._endControl as LeafElement;
|
160
181
|
}
|
161
|
-
|
182
|
+
|
183
|
+
set endControl(value: LeafElement | null) {
|
162
184
|
this._endControl = value;
|
163
185
|
}
|
164
|
-
onChangedEvent = new Subject();
|
165
|
-
startControlIndex;
|
166
|
-
startOffset;
|
167
|
-
endControlIndex;
|
168
|
-
endOffset;
|
186
|
+
onChangedEvent: Subject<void> = new Subject();
|
187
|
+
startControlIndex!: number;
|
188
|
+
startOffset!: number;
|
189
|
+
endControlIndex!: number;
|
190
|
+
endOffset!: number;
|
169
191
|
get collapsed() {
|
170
192
|
const { startControlIndex, startOffset, endControlIndex, endOffset } = this;
|
171
193
|
return !(startControlIndex !== endControlIndex || (startControlIndex === endControlIndex && startOffset !== endOffset));
|
172
194
|
}
|
173
|
-
_startControl;
|
174
|
-
_endControl;
|
175
|
-
ancestorCommonControl;
|
176
|
-
range;
|
177
|
-
startHitInfo;
|
178
|
-
selectedRange;
|
179
|
-
editable = true;
|
180
|
-
renderContainer;
|
181
|
-
cursorPos;
|
195
|
+
private _startControl!: LeafElement | null;
|
196
|
+
private _endControl!: LeafElement | null;
|
197
|
+
ancestorCommonControl!: BranchElement | null;
|
198
|
+
range!: SelectionRange | null;
|
199
|
+
startHitInfo!: HitEventInfo | null;
|
200
|
+
selectedRange!: SelectionContentRange | null;
|
201
|
+
editable: boolean = true;
|
202
|
+
renderContainer!: DocumentContainerRender;
|
203
|
+
cursorPos!: Rect | null;
|
182
204
|
//选区重新计算,触发函数
|
183
|
-
afterSelectionChanged = null;
|
205
|
+
afterSelectionChanged: ((newVal: SelectionState) => boolean) | null = null;
|
184
206
|
//当前选区的上下文是否支持留痕修改
|
185
|
-
enableTrackChanges = false;
|
207
|
+
enableTrackChanges: boolean = false;
|
186
208
|
constructor() {
|
187
209
|
this.clear();
|
188
210
|
}
|
189
|
-
clear() {
|
211
|
+
clear(): void {
|
190
212
|
this.range = null;
|
191
213
|
this.startOffset = -1;
|
192
214
|
this.endOffset = -1;
|
@@ -198,25 +220,28 @@ export class SelectionState {
|
|
198
220
|
this.selectedRange = null;
|
199
221
|
this.cursorPos = null;
|
200
222
|
}
|
201
|
-
|
223
|
+
|
224
|
+
addRange(range: SelectionRange): void {
|
202
225
|
this.clear();
|
203
226
|
this.range = range;
|
204
227
|
this.onChangedEvent.next();
|
205
228
|
}
|
206
|
-
resetRange(startControl, startOffset) {
|
229
|
+
resetRange(startControl: Element, startOffset: number): SelectionRange {
|
207
230
|
const range = new SelectionRange();
|
208
231
|
range.setStart(startControl, startOffset);
|
209
232
|
range.setEnd(startControl, startOffset);
|
210
233
|
this.addRange(range);
|
211
234
|
return range;
|
212
235
|
}
|
213
|
-
|
236
|
+
|
237
|
+
surround(ele: Element): void {
|
214
238
|
const range = new SelectionRange();
|
215
239
|
range.setStart(ele, 0);
|
216
240
|
range.setEnd(ele, -1);
|
217
241
|
this.addRange(range);
|
218
242
|
}
|
219
|
-
|
243
|
+
|
244
|
+
clone(): SelectionState {
|
220
245
|
const clone = new SelectionState();
|
221
246
|
clone._startControl = this._startControl;
|
222
247
|
clone.startOffset = this.startOffset;
|
@@ -228,63 +253,69 @@ export class SelectionState {
|
|
228
253
|
clone.selectedRange = this.selectedRange;
|
229
254
|
return clone;
|
230
255
|
}
|
256
|
+
|
257
|
+
|
231
258
|
}
|
259
|
+
|
260
|
+
|
261
|
+
|
232
262
|
export class SelectionRange {
|
233
|
-
startControl;
|
234
|
-
startOffset;
|
235
|
-
endControl;
|
236
|
-
endOffset;
|
237
|
-
editable = true;
|
238
|
-
setStart(control, offset) {
|
263
|
+
startControl!: Element;
|
264
|
+
startOffset!: number;
|
265
|
+
endControl!: Element;
|
266
|
+
endOffset!: number;
|
267
|
+
editable: boolean = true;
|
268
|
+
setStart(control: Element, offset: number): void {
|
239
269
|
this.startControl = control;
|
240
270
|
this.startOffset = offset;
|
241
271
|
}
|
242
|
-
setEnd(control, offset) {
|
272
|
+
setEnd(control: Element, offset: number): void {
|
243
273
|
this.endControl = control;
|
244
274
|
this.endOffset = offset;
|
245
275
|
}
|
246
|
-
|
276
|
+
|
277
|
+
private calcStart(): void {
|
247
278
|
const res = this.setInfo(this.startControl, this.startOffset);
|
248
279
|
this.setStart(res.control, res.offset);
|
249
280
|
}
|
250
|
-
|
281
|
+
|
282
|
+
private calcEnd(): void {
|
251
283
|
const res = this.setInfo(this.endControl, this.endOffset);
|
252
284
|
this.setEnd(res.control, res.offset);
|
253
285
|
}
|
254
|
-
|
286
|
+
|
287
|
+
calcRange(): void {
|
255
288
|
this.calcStart();
|
256
289
|
this.calcEnd();
|
257
290
|
}
|
258
|
-
|
291
|
+
|
292
|
+
private setInfo(control: Element, offset: number): { control: LeafElement, offset: number } {
|
259
293
|
if (control instanceof LeafElement) {
|
260
294
|
if (control instanceof TextGroupElement) {
|
261
295
|
offset = offset === -1 ? control.text.length : offset;
|
262
296
|
}
|
263
297
|
offset = offset === -1 ? 1 : offset;
|
264
298
|
return { control, offset };
|
265
|
-
}
|
266
|
-
else if (control instanceof BranchElement) {
|
299
|
+
} else if (control instanceof BranchElement) {
|
267
300
|
if (offset > control.length) {
|
268
301
|
throw new Error('超索引');
|
269
302
|
}
|
270
303
|
if (offset === control.length) {
|
271
304
|
const child = control.getChild(offset - 1);
|
272
305
|
return this.setInfo(child, 1);
|
273
|
-
}
|
274
|
-
else if (offset === -1) {
|
306
|
+
} else if (offset === -1) {
|
275
307
|
const child = control.getChild(control.length - 1);
|
276
308
|
return this.setInfo(child, -1);
|
277
|
-
}
|
278
|
-
else {
|
309
|
+
} else {
|
279
310
|
const child = control.getChild(offset);
|
280
311
|
return this.setInfo(child, 0);
|
281
312
|
}
|
282
|
-
}
|
283
|
-
else {
|
313
|
+
} else {
|
284
314
|
throw new Error('未实现');
|
285
315
|
}
|
286
316
|
}
|
287
|
-
|
317
|
+
|
318
|
+
clone(): SelectionRange {
|
288
319
|
const clone = new SelectionRange();
|
289
320
|
clone.startControl = this.startControl;
|
290
321
|
clone.startOffset = this.startOffset;
|
@@ -292,29 +323,31 @@ export class SelectionRange {
|
|
292
323
|
clone.endOffset = this.endOffset;
|
293
324
|
return clone;
|
294
325
|
}
|
326
|
+
|
295
327
|
}
|
328
|
+
|
296
329
|
export class DocumentCursor {
|
297
|
-
static getElementCursorPos(ele, offset, hitRegion, docNum) {
|
330
|
+
static getElementCursorPos(ele: LeafElement, offset: number, hitRegion: HitRegion | undefined, docNum: number): { render: RenderObject, rect: Rect } {
|
298
331
|
if (hitRegion === 'body' || hitRegion === 'review') {
|
299
332
|
return this.getElementRenderPos(ele, offset, ele.paintRenders);
|
300
|
-
}
|
301
|
-
else if (hitRegion === 'footer' || hitRegion === 'header') {
|
333
|
+
} else if (hitRegion === 'footer' || hitRegion === 'header') {
|
302
334
|
const docContainer = ElementUtil.getParentRender(ele.paintRenders[0], DocumentContainerRender);
|
303
335
|
if (!docContainer) {
|
304
|
-
throw new Error('docContainer is null')
|
336
|
+
throw new Error('docContainer is null')
|
305
337
|
}
|
306
|
-
const docRender = docContainer.getChild(docNum);
|
338
|
+
const docRender = docContainer.getChild(docNum) as DocumentRenderObject;
|
307
339
|
const currDocPaintRenders = ele.paintRenders.filter(item => ElementUtil.getParentRender(item, DocumentRenderObject) === docRender);
|
308
340
|
return this.getElementRenderPos(ele, offset, currDocPaintRenders);
|
309
341
|
}
|
310
342
|
debugger;
|
311
|
-
throw new Error('未找到元素偏移量对应的光标位置')
|
343
|
+
throw new Error('未找到元素偏移量对应的光标位置')
|
312
344
|
}
|
313
|
-
|
345
|
+
|
346
|
+
private static getElementRenderPos(ele: LeafElement, offset: number, paints: Array<RenderObject>): { render: RenderObject, rect: Rect } {
|
314
347
|
if (ele instanceof TextGroupElement) {
|
315
348
|
let count = 0;
|
316
349
|
for (let i = 0; i < paints.length; i++) {
|
317
|
-
const paintRender = paints[i];
|
350
|
+
const paintRender = paints[i] as TextGroupRenderObject;
|
318
351
|
let horX = 0;
|
319
352
|
if (paintRender.textMeasures.length + count < offset) {
|
320
353
|
count += paintRender.textMeasures.length;
|
@@ -322,7 +355,7 @@ export class DocumentCursor {
|
|
322
355
|
}
|
323
356
|
for (let i = 0; i <= paintRender.textMeasures.length; i++) {
|
324
357
|
if (count === offset || (i === 0 && count + 0.5 === offset)) {
|
325
|
-
const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })
|
358
|
+
const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })
|
326
359
|
//上标、下标位置处理
|
327
360
|
if (['superscript', 'subscript'].indexOf(ele.props.vertAlign) >= 0) {
|
328
361
|
rect.height -= ele.props.fontSize / 2;
|
@@ -334,25 +367,23 @@ export class DocumentCursor {
|
|
334
367
|
return {
|
335
368
|
render: paintRender,
|
336
369
|
rect
|
337
|
-
}
|
370
|
+
}
|
338
371
|
}
|
339
372
|
count++;
|
340
373
|
horX += paintRender.textMeasures[i].actualSize;
|
341
374
|
}
|
342
375
|
}
|
343
|
-
}
|
344
|
-
else {
|
376
|
+
} else {
|
345
377
|
const paintRender = paints[0];
|
346
|
-
const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })
|
378
|
+
const rect = ElementUtil.getRenderAbsolutePaintRect(paintRender, { x: 0, y: 0 })
|
347
379
|
if (offset === 1) {
|
348
380
|
rect.x += rect.width;
|
349
381
|
}
|
350
382
|
return {
|
351
383
|
render: paintRender,
|
352
384
|
rect
|
353
|
-
}
|
385
|
+
}
|
354
386
|
}
|
355
|
-
throw new Error('未能定位到元素位置')
|
387
|
+
throw new Error('未能定位到元素位置')
|
356
388
|
}
|
357
389
|
}
|
358
|
-
//# sourceMappingURL=document-selection.js.map
|
package/{lib/framework/document-template.js → src/med_editor/framework/document-template.ts}
RENAMED
@@ -4,8 +4,9 @@ import { DocumentBodyElement } from "./impl/document/doc-body-impl";
|
|
4
4
|
import { DocumentFooterElement } from "./impl/document/doc-footer-impl";
|
5
5
|
import { DocumentHeaderElement } from "./impl/document/doc-header-impl";
|
6
6
|
import { DocumentElement } from "./impl/document/doc-impl";
|
7
|
+
|
7
8
|
export class DocumentTemplate {
|
8
|
-
static createA4Doc() {
|
9
|
+
static createA4Doc(): DocumentElement {
|
9
10
|
const doc = new DocumentElement();
|
10
11
|
doc.props = new DocumentProps();
|
11
12
|
doc.props.width = 210;
|
@@ -16,5 +17,4 @@ export class DocumentTemplate {
|
|
16
17
|
doc.addChild(new DocumentFooterElement());
|
17
18
|
return doc;
|
18
19
|
}
|
19
|
-
}
|
20
|
-
//# sourceMappingURL=document-template.js.map
|
20
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { BranchElement, ViewOptions, Element } from "./element-define";
|
2
|
+
import { ElementUtil } from "./element-util";
|
3
|
+
import { TableElement, textLineRenderMode } from "./impl/table/table-impl";
|
4
|
+
import { RenderContenxtType } from "./render-context";
|
5
|
+
import { BlockContainerRenderObject, RenderObject } from "./render-define";
|
6
|
+
|
7
|
+
/**
|
8
|
+
* 文字行渲染模式
|
9
|
+
用于医嘱打印模式
|
10
|
+
*/
|
11
|
+
export function runTextLineRender(ele: Element, options: ViewOptions, renderCtx: RenderContenxtType): void {
|
12
|
+
if (!options.textRowLineMode) {
|
13
|
+
return;
|
14
|
+
}
|
15
|
+
if (ele instanceof TableElement) {
|
16
|
+
textLineRenderMode(ele, options, renderCtx);
|
17
|
+
remeasureParentRenders(ele.measureRender)
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
if (ele instanceof BranchElement) {
|
21
|
+
for (let i = 0; i < ele.length; i++) {
|
22
|
+
runTextLineRender(ele.getChild(i), options, renderCtx);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
function remeasureParentRenders(render: RenderObject | null): void {
|
28
|
+
if (!render) {
|
29
|
+
return
|
30
|
+
}
|
31
|
+
ElementUtil.remeasure(render as BlockContainerRenderObject)
|
32
|
+
remeasureParentRenders(render.parent)
|
33
|
+
|
34
|
+
}
|