@hailin-zheng/editor-core 1.0.9 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/doc-ruler.d.ts +51 -0
- package/{src/med_editor/doc-ruler.ts → lib/doc-ruler.js} +73 -100
- package/lib/doc-ruler.js.map +1 -0
- package/lib/framework/common-util.d.ts +63 -0
- package/lib/framework/common-util.js +178 -0
- package/lib/framework/common-util.js.map +1 -0
- package/lib/framework/document-change.d.ts +265 -0
- package/{src/med_editor/framework/document-change.ts → lib/framework/document-change.js} +257 -306
- package/lib/framework/document-change.js.map +1 -0
- package/lib/framework/document-combine.d.ts +24 -0
- package/{src/med_editor/framework/document-combine.ts → lib/framework/document-combine.js} +11 -15
- package/lib/framework/document-combine.js.map +1 -0
- package/lib/framework/document-comment.d.ts +46 -0
- package/{src/med_editor/framework/document-comment.ts → lib/framework/document-comment.js} +37 -52
- package/lib/framework/document-comment.js.map +1 -0
- package/lib/framework/document-context.d.ts +149 -0
- package/{src/med_editor/framework/document-context.ts → lib/framework/document-context.js} +101 -181
- package/lib/framework/document-context.js.map +1 -0
- package/lib/framework/document-eval-func.d.ts +18 -0
- package/{src/med_editor/framework/document-eval-func.ts → lib/framework/document-eval-func.js} +11 -16
- package/lib/framework/document-eval-func.js.map +1 -0
- package/lib/framework/document-event.d.ts +213 -0
- package/{src/med_editor/framework/document-event.ts → lib/framework/document-event.js} +216 -244
- package/lib/framework/document-event.js.map +1 -0
- package/lib/framework/document-history.d.ts +26 -0
- package/{src/med_editor/framework/document-history.ts → lib/framework/document-history.js} +14 -25
- package/lib/framework/document-history.js.map +1 -0
- package/lib/framework/document-images-loader.d.ts +16 -0
- package/{src/med_editor/framework/document-images-loader.ts → lib/framework/document-images-loader.js} +17 -25
- package/lib/framework/document-images-loader.js.map +1 -0
- package/lib/framework/document-input-cursor.d.ts +78 -0
- package/{src/med_editor/framework/document-input-cursor.ts → lib/framework/document-input-cursor.js} +71 -76
- package/lib/framework/document-input-cursor.js.map +1 -0
- package/lib/framework/document-paint.d.ts +34 -0
- package/{src/med_editor/framework/document-paint.ts → lib/framework/document-paint.js} +28 -35
- package/lib/framework/document-paint.js.map +1 -0
- package/lib/framework/document-print-offscreen.d.ts +38 -0
- package/{src/med_editor/framework/document-print-offscreen.ts → lib/framework/document-print-offscreen.js} +19 -25
- package/lib/framework/document-print-offscreen.js.map +1 -0
- package/lib/framework/document-print.d.ts +60 -0
- package/{src/med_editor/framework/document-print.ts → lib/framework/document-print.js} +41 -57
- package/lib/framework/document-print.js.map +1 -0
- package/lib/framework/document-segmenter.d.ts +2 -0
- package/lib/framework/document-segmenter.js +106 -0
- package/lib/framework/document-segmenter.js.map +1 -0
- package/lib/framework/document-selection.d.ts +89 -0
- package/{src/med_editor/framework/document-selection.ts → lib/framework/document-selection.js} +84 -115
- package/lib/framework/document-selection.js.map +1 -0
- package/lib/framework/document-template.d.ts +4 -0
- package/{src/med_editor/framework/document-template.ts → lib/framework/document-template.js} +3 -3
- package/lib/framework/document-template.js.map +1 -0
- package/lib/framework/document-textline-mode.d.ts +7 -0
- package/lib/framework/document-textline-mode.js +30 -0
- package/lib/framework/document-textline-mode.js.map +1 -0
- package/lib/framework/element-define.d.ts +319 -0
- package/{src/med_editor/framework/element-define.ts → lib/framework/element-define.js} +206 -301
- package/lib/framework/element-define.js.map +1 -0
- package/lib/framework/element-event-define.d.ts +98 -0
- package/lib/framework/element-event-define.js +108 -0
- package/lib/framework/element-event-define.js.map +1 -0
- package/lib/framework/element-measure.d.ts +97 -0
- package/{src/med_editor/framework/element-measure.ts → lib/framework/element-measure.js} +121 -143
- package/lib/framework/element-measure.js.map +1 -0
- package/lib/framework/element-paint.d.ts +42 -0
- package/{src/med_editor/framework/element-paint.ts → lib/framework/element-paint.js} +37 -43
- package/lib/framework/element-paint.js.map +1 -0
- package/lib/framework/element-props.d.ts +301 -0
- package/{src/med_editor/framework/element-props.ts → lib/framework/element-props.js} +202 -331
- package/lib/framework/element-props.js.map +1 -0
- package/lib/framework/element-reader.d.ts +19 -0
- package/{src/med_editor/framework/element-reader.ts → lib/framework/element-reader.js} +30 -38
- package/lib/framework/element-reader.js.map +1 -0
- package/lib/framework/element-render-cut.d.ts +55 -0
- package/{src/med_editor/framework/element-render-cut.ts → lib/framework/element-render-cut.js} +106 -113
- package/lib/framework/element-render-cut.js.map +1 -0
- package/lib/framework/element-serialize.d.ts +30 -0
- package/{src/med_editor/framework/element-serialize.ts → lib/framework/element-serialize.js} +24 -37
- package/lib/framework/element-serialize.js.map +1 -0
- package/lib/framework/element-util.d.ts +369 -0
- package/{src/med_editor/framework/element-util.ts → lib/framework/element-util.js} +216 -317
- package/lib/framework/element-util.js.map +1 -0
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts +24 -0
- package/{src/med_editor/framework/impl/checkbox/checkbox-impl.ts → lib/framework/impl/checkbox/checkbox-impl.js} +18 -25
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +1 -0
- package/lib/framework/impl/comments/comment-content-impl.d.ts +40 -0
- package/{src/med_editor/framework/impl/comments/comment-content-impl.ts → lib/framework/impl/comments/comment-content-impl.js} +31 -45
- package/lib/framework/impl/comments/comment-content-impl.js.map +1 -0
- package/lib/framework/impl/comments/comment-element-impl.d.ts +21 -0
- package/{src/med_editor/framework/impl/comments/comment-element-impl.ts → lib/framework/impl/comments/comment-element-impl.js} +18 -21
- package/lib/framework/impl/comments/comment-element-impl.js.map +1 -0
- package/lib/framework/impl/comments/comments-container-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/comments/comments-container-impl.ts → lib/framework/impl/comments/comments-container-impl.js} +15 -21
- package/lib/framework/impl/comments/comments-container-impl.js.map +1 -0
- package/lib/framework/impl/comments/comments-util.d.ts +12 -0
- package/{src/med_editor/framework/impl/comments/comments-util.ts → lib/framework/impl/comments/comments-util.js} +17 -34
- package/lib/framework/impl/comments/comments-util.js.map +1 -0
- package/lib/framework/impl/comments/validate-msg-impl.d.ts +21 -0
- package/{src/med_editor/framework/impl/comments/validate-msg-impl.ts → lib/framework/impl/comments/validate-msg-impl.js} +15 -26
- package/lib/framework/impl/comments/validate-msg-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-decorate-impl.d.ts +30 -0
- package/{src/med_editor/framework/impl/data-element/data-decorate-impl.ts → lib/framework/impl/data-element/data-decorate-impl.js} +21 -25
- package/lib/framework/impl/data-element/data-decorate-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-barcode.d.ts +31 -0
- package/{src/med_editor/framework/impl/data-element/data-element-barcode.ts → lib/framework/impl/data-element/data-element-barcode.js} +27 -39
- package/lib/framework/impl/data-element/data-element-barcode.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-base-impl.d.ts +68 -0
- package/{src/med_editor/framework/impl/data-element/data-element-base-impl.ts → lib/framework/impl/data-element/data-element-base-impl.js} +44 -73
- package/lib/framework/impl/data-element/data-element-base-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-check-impl.d.ts +35 -0
- package/{src/med_editor/framework/impl/data-element/data-element-check-impl.ts → lib/framework/impl/data-element/data-element-check-impl.js} +33 -46
- package/lib/framework/impl/data-element/data-element-check-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-date-impl.d.ts +23 -0
- package/{src/med_editor/framework/impl/data-element/data-element-date-impl.ts → lib/framework/impl/data-element/data-element-date-impl.js} +22 -39
- package/lib/framework/impl/data-element/data-element-date-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-group-impl.d.ts +23 -0
- package/{src/med_editor/framework/impl/data-element/data-element-group-impl.ts → lib/framework/impl/data-element/data-element-group-impl.js} +29 -49
- package/lib/framework/impl/data-element/data-element-group-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-image-impl.d.ts +30 -0
- package/{src/med_editor/framework/impl/data-element/data-element-image-impl.ts → lib/framework/impl/data-element/data-element-image-impl.js} +26 -36
- package/lib/framework/impl/data-element/data-element-image-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-list-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/data-element/data-element-list-impl.ts → lib/framework/impl/data-element/data-element-list-impl.js} +30 -41
- package/lib/framework/impl/data-element/data-element-list-impl.js.map +1 -0
- package/lib/framework/impl/data-element/data-element-text-impl.d.ts +23 -0
- package/{src/med_editor/framework/impl/data-element/data-element-text-impl.ts → lib/framework/impl/data-element/data-element-text-impl.js} +20 -34
- package/lib/framework/impl/data-element/data-element-text-impl.js.map +1 -0
- package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +21 -0
- package/{src/med_editor/framework/impl/decorate/fill-null-space-imple.ts → lib/framework/impl/decorate/fill-null-space-imple.js} +10 -15
- package/lib/framework/impl/decorate/fill-null-space-imple.js.map +1 -0
- package/lib/framework/impl/document/doc-body-impl.d.ts +27 -0
- package/{src/med_editor/framework/impl/document/doc-body-impl.ts → lib/framework/impl/document/doc-body-impl.js} +15 -31
- package/lib/framework/impl/document/doc-body-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-body-part-impl.d.ts +30 -0
- package/{src/med_editor/framework/impl/document/doc-body-part-impl.ts → lib/framework/impl/document/doc-body-part-impl.js} +16 -26
- package/lib/framework/impl/document/doc-body-part-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-container-impl.d.ts +16 -0
- package/lib/framework/impl/document/doc-container-impl.js +21 -0
- package/lib/framework/impl/document/doc-container-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-footer-impl.d.ts +26 -0
- package/{src/med_editor/framework/impl/document/doc-footer-impl.ts → lib/framework/impl/document/doc-footer-impl.js} +18 -29
- package/lib/framework/impl/document/doc-footer-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-header-impl.d.ts +26 -0
- package/{src/med_editor/framework/impl/document/doc-header-impl.ts → lib/framework/impl/document/doc-header-impl.js} +16 -33
- package/lib/framework/impl/document/doc-header-impl.js.map +1 -0
- package/lib/framework/impl/document/doc-impl.d.ts +61 -0
- package/{src/med_editor/framework/impl/document/doc-impl.ts → lib/framework/impl/document/doc-impl.js} +42 -59
- package/lib/framework/impl/document/doc-impl.js.map +1 -0
- package/lib/framework/impl/media-formula/menstrual-history.d.ts +35 -0
- package/{src/med_editor/framework/impl/media-formula/menstrual-history.ts → lib/framework/impl/media-formula/menstrual-history.js} +35 -57
- package/lib/framework/impl/media-formula/menstrual-history.js.map +1 -0
- package/lib/framework/impl/paragraph/p-impl.d.ts +45 -0
- package/{src/med_editor/framework/impl/paragraph/p-impl.ts → lib/framework/impl/paragraph/p-impl.js} +28 -62
- package/lib/framework/impl/paragraph/p-impl.js.map +1 -0
- package/lib/framework/impl/picture/image-impl.d.ts +31 -0
- package/{src/med_editor/framework/impl/picture/image-impl.ts → lib/framework/impl/picture/image-impl.js} +23 -35
- package/lib/framework/impl/picture/image-impl.js.map +1 -0
- package/lib/framework/impl/radio/radio-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/radio/radio-impl.ts → lib/framework/impl/radio/radio-impl.js} +19 -26
- package/lib/framework/impl/radio/radio-impl.js.map +1 -0
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts +22 -0
- package/{src/med_editor/framework/impl/symbol/br-symbol-impl.ts → lib/framework/impl/symbol/br-symbol-impl.js} +14 -20
- package/lib/framework/impl/symbol/br-symbol-impl.js.map +1 -0
- package/lib/framework/impl/symbol/p-symbol-impl.d.ts +19 -0
- package/{src/med_editor/framework/impl/symbol/p-symbol-impl.ts → lib/framework/impl/symbol/p-symbol-impl.js} +11 -14
- package/lib/framework/impl/symbol/p-symbol-impl.js.map +1 -0
- package/lib/framework/impl/table/table-cell-impl.d.ts +37 -0
- package/{src/med_editor/framework/impl/table/table-cell-impl.ts → lib/framework/impl/table/table-cell-impl.js} +28 -39
- package/lib/framework/impl/table/table-cell-impl.js.map +1 -0
- package/lib/framework/impl/table/table-impl.d.ts +55 -0
- package/{src/med_editor/framework/impl/table/table-impl.ts → lib/framework/impl/table/table-impl.js} +82 -120
- package/lib/framework/impl/table/table-impl.js.map +1 -0
- package/lib/framework/impl/table/table-row-impl.d.ts +26 -0
- package/{src/med_editor/framework/impl/table/table-row-impl.ts → lib/framework/impl/table/table-row-impl.js} +16 -24
- package/lib/framework/impl/table/table-row-impl.js.map +1 -0
- package/lib/framework/impl/table/table-split-cell-patch.d.ts +20 -0
- package/{src/med_editor/framework/impl/table/table-split-cell-patch.ts → lib/framework/impl/table/table-split-cell-patch.js} +22 -31
- package/lib/framework/impl/table/table-split-cell-patch.js.map +1 -0
- package/lib/framework/impl/table/table-split-cell.d.ts +90 -0
- package/{src/med_editor/framework/impl/table/table-split-cell.ts → lib/framework/impl/table/table-split-cell.js} +94 -105
- package/lib/framework/impl/table/table-split-cell.js.map +1 -0
- package/lib/framework/impl/table/table-util.d.ts +150 -0
- package/{src/med_editor/framework/impl/table/table-util.ts → lib/framework/impl/table/table-util.js} +157 -195
- package/lib/framework/impl/table/table-util.js.map +1 -0
- package/lib/framework/impl/text/text-impl.d.ts +32 -0
- package/{src/med_editor/framework/impl/text/text-impl.ts → lib/framework/impl/text/text-impl.js} +32 -46
- package/lib/framework/impl/text/text-impl.js.map +1 -0
- package/lib/framework/impl/text/track-run-impl.d.ts +27 -0
- package/{src/med_editor/framework/impl/text/track-run-impl.ts → lib/framework/impl/text/track-run-impl.js} +28 -51
- package/lib/framework/impl/text/track-run-impl.js.map +1 -0
- package/lib/framework/notify.d.ts +13 -0
- package/{src/med_editor/framework/notify.ts → lib/framework/notify.js} +36 -50
- package/lib/framework/notify.js.map +1 -0
- package/lib/framework/range-util.d.ts +40 -0
- package/{src/med_editor/framework/range-util.ts → lib/framework/range-util.js} +71 -80
- package/lib/framework/range-util.js.map +1 -0
- package/lib/framework/render-context.d.ts +91 -0
- package/{src/med_editor/framework/render-context.ts → lib/framework/render-context.js} +64 -111
- package/lib/framework/render-context.js.map +1 -0
- package/lib/framework/render-define.d.ts +109 -0
- package/{src/med_editor/framework/render-define.ts → lib/framework/render-define.js} +61 -90
- package/lib/framework/render-define.js.map +1 -0
- package/lib/framework/selection-overlays.d.ts +30 -0
- package/{src/med_editor/framework/selection-overlays.ts → lib/framework/selection-overlays.js} +16 -25
- package/lib/framework/selection-overlays.js.map +1 -0
- package/lib/texteditor.d.ts +318 -0
- package/{src/med_editor/texteditor.ts → lib/texteditor.js} +189 -286
- package/lib/texteditor.js.map +1 -0
- package/lib/util/subject.d.ts +34 -0
- package/lib/util/subject.js +88 -0
- package/lib/util/subject.js.map +1 -0
- package/lib/util/table-bind.d.ts +5 -0
- package/{src/med_editor/util/table-bind.ts → lib/util/table-bind.js} +2 -2
- package/lib/util/table-bind.js.map +1 -0
- package/package.json +2 -2
- package/src/med_editor/framework/common-util.ts +0 -200
- package/src/med_editor/framework/document-segmenter.ts +0 -211
- package/src/med_editor/framework/document-textline-mode.ts +0 -34
- package/src/med_editor/framework/element-event-define.ts +0 -141
- package/src/med_editor/framework/impl/document/doc-container-impl.ts +0 -24
- package/src/med_editor/util/subject.ts +0 -118
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +0 -3573
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +0 -3573
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +0 -315
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/211/271/346/263/250.json +0 -122
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/226/207/346/241/243/351/252/214/350/257/201.json +0 -3599
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/351/225/277/346/226/207/346/234/254.json +0 -24586
- package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +0 -2874
- package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +0 -341
- package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +0 -2201
- package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +0 -1069
- package/src/med_editor//347/227/205/347/250/213/345/275/225//345/206/205/351/225/234/344/270/213/346/262/273/347/226/227/350/256/260/345/275/225.json +0 -125
- package/src/med_editor//347/227/205/347/250/213/345/275/225//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225/346/250/241/346/235/277.json +0 -86
- package/src/med_editor//347/227/205/347/250/213/345/275/225//346/227/245/345/270/270/347/227/205/347/250/213/350/256/260/345/275/225.json +0 -115
- package/src/med_editor//347/227/205/347/250/213/345/275/225//346/237/245/346/210/277/350/256/260/345/275/2251.json +0 -108
- package/src/med_editor//347/227/205/347/250/213/345/275/225//351/246/226/346/254/241/344/270/212/347/272/247/345/214/273/345/270/210/346/237/245/346/210/277/350/256/260/345/275/225.json +0 -272
- package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +0 -1070
@@ -1,91 +1,91 @@
|
|
1
1
|
import { CommonUtil } from "./common-util";
|
2
|
-
import { fromEvent, Subject
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import { DropElementEvent, ElementEvent, EventStage, EventTypes, GetTrackTipsEvent, GotCursorEvent, HitEventInfo, HitRegion, ITrackTips, LostCursorEvent, MousedownElementEvent, MouseElementEvent } from "./element-event-define";
|
2
|
+
import { fromEvent, Subject } from "rxjs";
|
3
|
+
import { SelectionRange } from "./document-selection";
|
4
|
+
import { LeafElement, ResizeLeafRenderObject, DocMode } from "./element-define";
|
5
|
+
import { DropElementEvent, GetTrackTipsEvent, GotCursorEvent, LostCursorEvent, MousedownElementEvent, MouseElementEvent } from "./element-event-define";
|
7
6
|
import { ElementUtil } from "./element-util";
|
8
|
-
import { DocumentRenderObject } from "./impl/document/doc-impl";
|
9
7
|
import { PictureElement } from "./impl/picture/image-impl";
|
10
8
|
import { BreakElement } from "./impl/symbol/br-symbol-impl";
|
11
9
|
import { PSymbolElement } from "./impl/symbol/p-symbol-impl";
|
12
10
|
import { TableCellElement, TableCellRenderObject } from "./impl/table/table-cell-impl";
|
13
|
-
import {
|
14
|
-
import {
|
15
|
-
import { BorderType, BranchRenderObject, CursorType, LeafRenderObject, RenderObject } from "./render-define";
|
16
|
-
import { EditorContext } from "./document-context";
|
11
|
+
import { TableRowRenderObject } from "./impl/table/table-row-impl";
|
12
|
+
import { BranchRenderObject, LeafRenderObject } from "./render-define";
|
17
13
|
import { ParagraphLineRectRenderObject } from "./impl/paragraph/p-impl";
|
18
14
|
import { TextGroupElement } from "./impl/text/text-impl";
|
19
15
|
import { DocumentHeaderRenderObject } from "./impl/document/doc-header-impl";
|
20
16
|
import { DocumentFooterRenderObject } from "./impl/document/doc-footer-impl";
|
21
17
|
import { debounceTime } from "rxjs/operators";
|
22
|
-
interface EdgeRenderInfo { renderElement: Element, relativePos: Position, mousedown: boolean, mousedownPos?: Position, border: BorderType }
|
23
18
|
/**
|
24
19
|
* 事件系统
|
25
20
|
*/
|
26
21
|
export class DocumentEvent {
|
27
|
-
|
22
|
+
canvas;
|
23
|
+
documentPaint;
|
24
|
+
viewOptions;
|
25
|
+
selectionState;
|
26
|
+
docCtx;
|
27
|
+
ismousedown;
|
28
28
|
//开始点击时的元素信息
|
29
|
-
startHitInfo
|
29
|
+
startHitInfo;
|
30
30
|
//当前位置点击的元素信息
|
31
|
-
endHitInfo
|
31
|
+
endHitInfo;
|
32
32
|
//当前定位的焦点元素,例如图片等
|
33
|
-
focusedElement
|
34
|
-
focusedRect
|
33
|
+
focusedElement;
|
34
|
+
focusedRect;
|
35
35
|
//当前光标所在的元素
|
36
|
-
currentMouseoverRender
|
37
|
-
hitInfoChanged
|
38
|
-
clickEvent
|
39
|
-
dblClickEvent
|
40
|
-
changeCursor
|
41
|
-
contextMenu
|
42
|
-
trackTipsChanged
|
36
|
+
currentMouseoverRender;
|
37
|
+
hitInfoChanged = new Subject();
|
38
|
+
clickEvent = new Subject();
|
39
|
+
dblClickEvent = new Subject();
|
40
|
+
changeCursor = new Subject();
|
41
|
+
contextMenu = new Subject();
|
42
|
+
trackTipsChanged = new Subject();
|
43
43
|
//光标处于边框的绘制元素
|
44
|
-
edgeRenderInfo
|
44
|
+
edgeRenderInfo;
|
45
45
|
//当前鼠标所在的page-position
|
46
|
-
currentPos
|
46
|
+
currentPos;
|
47
47
|
//鼠标按下的位置
|
48
|
-
mousedownPos
|
49
|
-
subs
|
50
|
-
|
51
|
-
|
48
|
+
mousedownPos;
|
49
|
+
subs = [];
|
50
|
+
constructor(canvas, documentPaint, viewOptions, selectionState, docCtx) {
|
51
|
+
this.canvas = canvas;
|
52
|
+
this.documentPaint = documentPaint;
|
53
|
+
this.viewOptions = viewOptions;
|
54
|
+
this.selectionState = selectionState;
|
55
|
+
this.docCtx = docCtx;
|
52
56
|
this.bindEvent();
|
53
57
|
}
|
54
|
-
|
55
|
-
|
56
|
-
this.addSubEvent(fromEvent<MouseEvent>(this.canvas, 'mousedown').subscribe((evt) => {
|
58
|
+
bindEvent() {
|
59
|
+
this.addSubEvent(fromEvent(this.canvas, 'mousedown').subscribe((evt) => {
|
57
60
|
this.mousedown(evt);
|
58
61
|
}));
|
59
|
-
this.addSubEvent(fromEvent
|
62
|
+
this.addSubEvent(fromEvent(this.canvas, 'mouseup').subscribe((evt) => {
|
60
63
|
this.mouseup(evt);
|
61
64
|
}));
|
62
|
-
this.addSubEvent(fromEvent
|
65
|
+
this.addSubEvent(fromEvent(this.canvas, 'click').subscribe((evt) => {
|
63
66
|
this.mouseClickHandle(evt);
|
64
67
|
}));
|
65
|
-
this.addSubEvent(fromEvent
|
68
|
+
this.addSubEvent(fromEvent(this.canvas, 'contextmenu').subscribe((evt) => {
|
66
69
|
this.contextMenu.next(evt);
|
67
70
|
}));
|
68
|
-
this.addSubEvent(fromEvent
|
71
|
+
this.addSubEvent(fromEvent(this.canvas, 'mousemove').subscribe((evt) => {
|
69
72
|
this.mousemove(evt);
|
70
73
|
}));
|
71
|
-
this.addSubEvent(fromEvent
|
74
|
+
this.addSubEvent(fromEvent(this.canvas, 'mousemove').pipe(debounceTime(500)).subscribe((evt) => {
|
72
75
|
this.getTips();
|
73
76
|
}));
|
74
|
-
this.addSubEvent(fromEvent
|
77
|
+
this.addSubEvent(fromEvent(this.canvas, 'dblclick').subscribe((evt) => {
|
75
78
|
this.mouseDblClickHandle(evt);
|
76
79
|
}));
|
77
80
|
}
|
78
|
-
|
79
|
-
addSubEvent(sub: Subscription): void {
|
81
|
+
addSubEvent(sub) {
|
80
82
|
this.subs.push(sub);
|
81
83
|
}
|
82
|
-
|
83
|
-
clearSubEvent(): void {
|
84
|
+
clearSubEvent() {
|
84
85
|
this.subs.forEach(item => item.unsubscribe());
|
85
86
|
this.subs.length = 0;
|
86
87
|
}
|
87
|
-
|
88
|
-
clear(): void {
|
88
|
+
clear() {
|
89
89
|
this.selectionState.clear();
|
90
90
|
this.startHitInfo = null;
|
91
91
|
this.endHitInfo = null;
|
@@ -94,8 +94,7 @@ export class DocumentEvent {
|
|
94
94
|
this.currentMouseoverRender = null;
|
95
95
|
this.edgeRenderInfo = null;
|
96
96
|
}
|
97
|
-
|
98
|
-
private mousedown(evt: MouseEvent): void {
|
97
|
+
mousedown(evt) {
|
99
98
|
const docEvent = new MouseElementEvent(this.docCtx);
|
100
99
|
docEvent.globalX = evt.offsetX;
|
101
100
|
docEvent.globalY = evt.offsetY;
|
@@ -105,8 +104,7 @@ export class DocumentEvent {
|
|
105
104
|
this.mousedownPos = { x: evt.offsetX, y: evt.offsetY };
|
106
105
|
this.mousedownHandle(docEvent);
|
107
106
|
}
|
108
|
-
|
109
|
-
private mouseup(evt: MouseEvent): void {
|
107
|
+
mouseup(evt) {
|
110
108
|
const docEvent = new MouseElementEvent(this.docCtx);
|
111
109
|
docEvent.globalX = evt.offsetX;
|
112
110
|
docEvent.globalY = evt.offsetY;
|
@@ -115,8 +113,7 @@ export class DocumentEvent {
|
|
115
113
|
this.ismousedown = false;
|
116
114
|
this.edgeRenderInfo = null;
|
117
115
|
}
|
118
|
-
|
119
|
-
private mousemove(evt: MouseEvent): void {
|
116
|
+
mousemove(evt) {
|
120
117
|
const docEvent = new MouseElementEvent(this.docCtx);
|
121
118
|
docEvent.globalX = evt.offsetX;
|
122
119
|
docEvent.globalY = evt.offsetY;
|
@@ -127,13 +124,12 @@ export class DocumentEvent {
|
|
127
124
|
}
|
128
125
|
this.mousemoveHandle(docEvent);
|
129
126
|
}
|
130
|
-
|
131
|
-
private prevTrackInfo: boolean = false;
|
127
|
+
prevTrackInfo = false;
|
132
128
|
/**
|
133
129
|
* 显示提示信息
|
134
130
|
* 显示留痕提示信息等
|
135
131
|
*/
|
136
|
-
|
132
|
+
getTips() {
|
137
133
|
if (!this.currentMouseoverRender) {
|
138
134
|
return;
|
139
135
|
}
|
@@ -147,7 +143,8 @@ export class DocumentEvent {
|
|
147
143
|
if (event.trackTips) {
|
148
144
|
this.trackTipsChanged.next({ pos: { ...this.currentPos }, tips: event.trackTips });
|
149
145
|
this.prevTrackInfo = true;
|
150
|
-
}
|
146
|
+
}
|
147
|
+
else {
|
151
148
|
if (!this.prevTrackInfo) {
|
152
149
|
return;
|
153
150
|
}
|
@@ -155,12 +152,10 @@ export class DocumentEvent {
|
|
155
152
|
this.prevTrackInfo = false;
|
156
153
|
}
|
157
154
|
}
|
158
|
-
|
159
|
-
|
160
155
|
/**
|
161
156
|
* 滚动视图的时候,需要手动触发mousemove
|
162
157
|
*/
|
163
|
-
onScrollView()
|
158
|
+
onScrollView() {
|
164
159
|
if (!this.currentPos) {
|
165
160
|
return;
|
166
161
|
}
|
@@ -169,13 +164,12 @@ export class DocumentEvent {
|
|
169
164
|
docEvent.globalY = this.currentPos.y;
|
170
165
|
this.mousemoveHandle(docEvent);
|
171
166
|
}
|
172
|
-
|
173
167
|
/**
|
174
168
|
* 处理鼠标按下事件
|
175
|
-
* @param evt
|
176
|
-
* @returns
|
169
|
+
* @param evt
|
170
|
+
* @returns
|
177
171
|
*/
|
178
|
-
|
172
|
+
mousedownHandle(evt) {
|
179
173
|
//点击右键时,存在选区,直接返回
|
180
174
|
if (evt.buttons === 2 && this.startHitInfo && !this.selectionState.collapsed) {
|
181
175
|
return;
|
@@ -197,7 +191,8 @@ export class DocumentEvent {
|
|
197
191
|
const mousedownEvent = new MousedownElementEvent(this.docCtx);
|
198
192
|
mousedownEvent.source = startElement;
|
199
193
|
DocumentEvent.invokeEvent('ElementMousedown', startElement, mousedownEvent, 'All', this.docCtx);
|
200
|
-
}
|
194
|
+
}
|
195
|
+
else {
|
201
196
|
this.clearHitInfo();
|
202
197
|
}
|
203
198
|
if (this.edgeRenderInfo) {
|
@@ -205,14 +200,13 @@ export class DocumentEvent {
|
|
205
200
|
this.edgeRenderInfo.mousedownPos = this.currentPos;
|
206
201
|
this.clearHitInfo();
|
207
202
|
}
|
208
|
-
this.hitInfoChanged.next({ startHitInfo: this.startHitInfo
|
203
|
+
this.hitInfoChanged.next({ startHitInfo: this.startHitInfo, endHitInfo: this.endHitInfo });
|
209
204
|
this.selectionState.startHitInfo = this.startHitInfo;
|
210
205
|
}
|
211
|
-
|
212
206
|
/**
|
213
207
|
* 设置元素焦点状态
|
214
208
|
*/
|
215
|
-
|
209
|
+
switchElementFocus() {
|
216
210
|
if (!this.startHitInfo) {
|
217
211
|
return;
|
218
212
|
}
|
@@ -224,22 +218,20 @@ export class DocumentEvent {
|
|
224
218
|
}
|
225
219
|
if (startElement && startElement.focusable) {
|
226
220
|
startElement.isFocused = true;
|
227
|
-
this.focusedElement = startElement
|
221
|
+
this.focusedElement = startElement;
|
228
222
|
this.focusedRect = ElementUtil.getRenderAbsolutePaintRect(this.startHitInfo.render);
|
229
223
|
}
|
230
224
|
}
|
231
|
-
|
232
|
-
clearHitInfo(): void {
|
225
|
+
clearHitInfo() {
|
233
226
|
this.startHitInfo = null;
|
234
227
|
this.endHitInfo = null;
|
235
228
|
}
|
236
|
-
|
237
229
|
/**
|
238
230
|
* 获取当前鼠标所在位置的元素信息
|
239
|
-
* @param evt
|
240
|
-
* @returns
|
231
|
+
* @param evt
|
232
|
+
* @returns
|
241
233
|
*/
|
242
|
-
|
234
|
+
getHitInfo(evt) {
|
243
235
|
const hitDocInfo = this.getHitDocPage(evt);
|
244
236
|
if (!hitDocInfo) {
|
245
237
|
return null;
|
@@ -248,12 +240,11 @@ export class DocumentEvent {
|
|
248
240
|
//设置文档页中的相对位置
|
249
241
|
evt.pageX = hitPagePos.x;
|
250
242
|
evt.pageY = hitPagePos.y;
|
251
|
-
|
252
243
|
const hitInfo = this.getHitLeafRender(docRender, { x: -docRender.rect.x, y: -docRender.rect.y }, { x: evt.pageX, y: evt.pageY });
|
253
244
|
if (!hitInfo) {
|
254
245
|
return null;
|
255
246
|
}
|
256
|
-
const element = hitInfo.render.element
|
247
|
+
const element = hitInfo.render.element;
|
257
248
|
return {
|
258
249
|
hitDocIndex: docIndex,
|
259
250
|
offset: hitInfo.offset,
|
@@ -265,8 +256,7 @@ export class DocumentEvent {
|
|
265
256
|
startRegion: ElementUtil.getRenderObjectRegion(hitInfo.render)
|
266
257
|
};
|
267
258
|
}
|
268
|
-
|
269
|
-
private getMouseoverRenderInfo(evt: MouseElementEvent): { render: RenderObject, absoluteRenderRect: Rect } | null {
|
259
|
+
getMouseoverRenderInfo(evt) {
|
270
260
|
const hitDocInfo = this.getHitDocPage(evt);
|
271
261
|
if (!hitDocInfo) {
|
272
262
|
return null;
|
@@ -280,16 +270,15 @@ export class DocumentEvent {
|
|
280
270
|
const mouseoverInfo = this.getHitLeafRender(docRender, { x: -docRender.rect.x, y: -docRender.rect.y }, { x: evt.pageX, y: evt.pageY });
|
281
271
|
return mouseoverInfo;
|
282
272
|
}
|
283
|
-
|
284
273
|
/**
|
285
274
|
* 鼠标移动事件
|
286
275
|
* 主要处理选区改变
|
287
276
|
*/
|
288
|
-
|
277
|
+
mousemoveHandle(evt) {
|
289
278
|
//console.time('mousemove计时')
|
290
|
-
let edgeRenderInfo
|
291
|
-
const mousePos
|
292
|
-
let cursorType
|
279
|
+
let edgeRenderInfo = null;
|
280
|
+
const mousePos = { x: evt.globalX, y: evt.globalY };
|
281
|
+
let cursorType = 'text';
|
293
282
|
this.currentPos = mousePos;
|
294
283
|
if (this.ismousedown && this.startHitInfo) {
|
295
284
|
this.endHitInfo = this.getHitInfo(evt);
|
@@ -302,26 +291,27 @@ export class DocumentEvent {
|
|
302
291
|
this.currentMouseoverRender = currMouseoverRenderInfo;
|
303
292
|
//当前有元素有焦点时,需要首先判断当前位置是否在焦点元素上
|
304
293
|
//如果单元格中包含图片等可缩放的元素,并且元素的大小超过单元格,则当前图片的某一部分就无法缩放
|
305
|
-
if (!this.ismousedown && this.focusedElement && this.focusedRect &&
|
306
|
-
const relativePos
|
294
|
+
if (!this.ismousedown && this.focusedElement && this.focusedRect && this.focusedElement['resizeable']) {
|
295
|
+
const relativePos = { x: mousePos.x - this.focusedRect.x, y: mousePos.y - this.focusedRect.y };
|
307
296
|
const isInCellBorder = CommonUtil.isInPictureResizePoint(this.focusedRect, relativePos, 4);
|
308
297
|
if (isInCellBorder) {
|
309
298
|
cursorType = ElementUtil.getBorderCursor(isInCellBorder.borderType);
|
310
299
|
if (isInCellBorder?.borderType === 'none') {
|
311
300
|
edgeRenderInfo = null;
|
312
|
-
}
|
301
|
+
}
|
302
|
+
else {
|
313
303
|
edgeRenderInfo = { renderElement: this.focusedElement, relativePos, mousedown: false, border: isInCellBorder.borderType };
|
314
304
|
}
|
315
305
|
}
|
316
|
-
}//当前鼠标不处于mousedown并且鼠标位于单元格边界时,获取边界信息
|
306
|
+
} //当前鼠标不处于mousedown并且鼠标位于单元格边界时,获取边界信息
|
317
307
|
else if (!this.ismousedown && this.isInCellRenderObject(this.currentMouseoverRender?.render)) {
|
318
|
-
const cellRender = ElementUtil.getParentRender(this.currentMouseoverRender?.render
|
308
|
+
const cellRender = ElementUtil.getParentRender(this.currentMouseoverRender?.render, TableCellRenderObject);
|
319
309
|
//const cellRender = this.currentMouseoverRender?.render as TableCellRenderObject;
|
320
310
|
//const { render: { renderPosition: { x: rx, y: ry } } } = this.currentMouseoverRender;
|
321
311
|
//const rp = this.currentMouseoverRender?.absoluteRenderRect as Rect;
|
322
312
|
const rp = ElementUtil.getRenderAbsolutePaintRect(cellRender);
|
323
313
|
rp.y -= this.viewOptions.translateY;
|
324
|
-
const relativePos
|
314
|
+
const relativePos = { x: mousePos.x - rp.x, y: mousePos.y - rp.y };
|
325
315
|
const isInCellBorder = CommonUtil.isInRectBorder(cellRender.rect, 2, relativePos);
|
326
316
|
if (isInCellBorder) {
|
327
317
|
//console.log('是否在边框上' + isInCellBorder?.borderType);
|
@@ -330,7 +320,8 @@ export class DocumentEvent {
|
|
330
320
|
this.changeCursor.next(cursorType);
|
331
321
|
if (isInCellBorder?.borderType === 'none') {
|
332
322
|
edgeRenderInfo = null;
|
333
|
-
}
|
323
|
+
}
|
324
|
+
else {
|
334
325
|
edgeRenderInfo = { renderElement: cellRender.element, relativePos, mousedown: false, border: isInCellBorder.borderType };
|
335
326
|
}
|
336
327
|
}
|
@@ -347,38 +338,33 @@ export class DocumentEvent {
|
|
347
338
|
}
|
348
339
|
this.changeCursor.next(cursorType);
|
349
340
|
}
|
350
|
-
|
351
|
-
|
352
|
-
private isCellRenderObject(render: RenderObject | undefined): boolean {
|
341
|
+
isCellRenderObject(render) {
|
353
342
|
return render instanceof TableCellRenderObject;
|
354
343
|
}
|
355
|
-
|
356
344
|
/**
|
357
345
|
* 当前绘制元素是否在单元格上面
|
358
|
-
* @param render
|
359
|
-
* @returns
|
346
|
+
* @param render
|
347
|
+
* @returns
|
360
348
|
*/
|
361
|
-
|
349
|
+
isInCellRenderObject(render) {
|
362
350
|
if (!render) {
|
363
351
|
return false;
|
364
352
|
}
|
365
353
|
return ElementUtil.getParentRender(render, TableCellRenderObject) !== null;
|
366
354
|
}
|
367
|
-
|
368
|
-
private isResizeRenderObject(render: RenderObject | undefined): boolean {
|
355
|
+
isResizeRenderObject(render) {
|
369
356
|
return render instanceof ResizeLeafRenderObject;
|
370
357
|
}
|
371
|
-
|
372
358
|
/**
|
373
359
|
* 触发鼠标移动事件
|
374
360
|
*/
|
375
|
-
|
361
|
+
invokeMousemoveEvent(oldRender, newRender, mousePos) {
|
376
362
|
const oldParentRenders = oldRender ? ElementUtil.getRenderMapElements(oldRender) : [];
|
377
363
|
const newParentRenders = newRender ? ElementUtil.getRenderMapElements(newRender) : [];
|
378
364
|
const mouseleaveRenders = oldParentRenders.filter(item => newParentRenders.every(oldItem => item !== oldItem));
|
379
365
|
const mouseenterRenders = newParentRenders.filter(item => oldParentRenders.every(oldItem => item !== oldItem));
|
380
366
|
const mousemoveRenders = oldParentRenders.filter(item => mouseleaveRenders.every(oldItem => item !== oldItem));
|
381
|
-
const loopInvokeEvent = (eventName
|
367
|
+
const loopInvokeEvent = (eventName, array) => {
|
382
368
|
for (const element of array) {
|
383
369
|
const mouseEvent = new MouseElementEvent(this.docCtx);
|
384
370
|
mouseEvent.source = element;
|
@@ -390,26 +376,23 @@ export class DocumentEvent {
|
|
390
376
|
loopInvokeEvent('ElementMouseEnter', mouseenterRenders);
|
391
377
|
loopInvokeEvent('ElementMousemove', mousemoveRenders);
|
392
378
|
}
|
393
|
-
|
394
|
-
|
395
|
-
prevCursorItems: Array<Element> = [];
|
379
|
+
prevCursorItems = [];
|
396
380
|
/**
|
397
381
|
* 触发获取焦点事件
|
398
382
|
* 需要根据上次获取焦点的元素,比较触发失去焦点事件
|
399
|
-
* @param focusElement
|
383
|
+
* @param focusElement
|
400
384
|
*/
|
401
|
-
invokeCursor(focusElement
|
385
|
+
invokeCursor(focusElement) {
|
402
386
|
if (focusElement === this.prevCursorItems[0]) {
|
403
387
|
return;
|
404
388
|
}
|
405
389
|
const getCursorEvent = new GotCursorEvent(this.docCtx);
|
406
390
|
getCursorEvent.source = focusElement;
|
407
|
-
|
408
391
|
const oldParents = this.prevCursorItems;
|
409
392
|
const newParents = ElementUtil.getParentElements(focusElement);
|
410
393
|
const leaveParents = oldParents.filter(item => newParents.every(oldItem => item !== oldItem));
|
411
394
|
const enterParents = newParents.filter(item => oldParents.every(oldItem => item !== oldItem));
|
412
|
-
const loopInvokeEvent = (eventName
|
395
|
+
const loopInvokeEvent = (eventName, array) => {
|
413
396
|
for (const element of array) {
|
414
397
|
const mouseEvent = new LostCursorEvent(this.docCtx);
|
415
398
|
mouseEvent.source = focusElement;
|
@@ -420,20 +403,18 @@ export class DocumentEvent {
|
|
420
403
|
};
|
421
404
|
loopInvokeEvent('LostCursor', leaveParents);
|
422
405
|
loopInvokeEvent('GotCursor', enterParents);
|
423
|
-
|
424
406
|
this.prevCursorItems = newParents;
|
425
407
|
//dDocumentEvent.invokeEvent('GotCursor', focusElement, getCursorEvent, 'All', this.docCtx);
|
426
408
|
}
|
427
|
-
|
428
409
|
/**
|
429
410
|
* mousedown-mouseup-click
|
430
411
|
*/
|
431
|
-
|
412
|
+
mouseClickHandle(evt) {
|
432
413
|
if (this.viewOptions.docMode === DocMode.View) {
|
433
414
|
return;
|
434
415
|
}
|
435
416
|
if (this.startHitInfo && this.endHitInfo && this.startHitInfo.element === this.endHitInfo.element) {
|
436
|
-
const startElement = this.startHitInfo.render.element
|
417
|
+
const startElement = this.startHitInfo.render.element;
|
437
418
|
const mousedownEvent = new MousedownElementEvent(this.docCtx);
|
438
419
|
mousedownEvent.source = startElement;
|
439
420
|
DocumentEvent.invokeEvent('ElementClick', startElement, mousedownEvent, "All", this.docCtx);
|
@@ -460,11 +441,10 @@ export class DocumentEvent {
|
|
460
441
|
}
|
461
442
|
this.clickEvent.next(evt);
|
462
443
|
}
|
463
|
-
|
464
444
|
/**
|
465
445
|
* 鼠标双击事件
|
466
446
|
*/
|
467
|
-
|
447
|
+
mouseDblClickHandle(evt) {
|
468
448
|
const docEvent = new MouseElementEvent(this.docCtx);
|
469
449
|
docEvent.globalX = evt.offsetX;
|
470
450
|
docEvent.globalY = evt.offsetY;
|
@@ -473,7 +453,8 @@ export class DocumentEvent {
|
|
473
453
|
if ((hitRegion === 'footer' || hitRegion === 'header') && !this.docCtx.document.headerEditState) {
|
474
454
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|
475
455
|
return;
|
476
|
-
}
|
456
|
+
}
|
457
|
+
else if (hitRegion === 'body' && this.docCtx.document.headerEditState) {
|
477
458
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|
478
459
|
return;
|
479
460
|
}
|
@@ -482,28 +463,29 @@ export class DocumentEvent {
|
|
482
463
|
docEvent.source = hitInfo.element;
|
483
464
|
docEvent.sourceRender = hitInfo.render;
|
484
465
|
const res = DocumentEvent.invokeEvent('ElementDblClick', hitInfo.element, docEvent, 'All', this.docCtx);
|
485
|
-
if (res) {
|
466
|
+
if (res) {
|
467
|
+
return;
|
468
|
+
}
|
486
469
|
this.dblClickEvent.next(evt);
|
487
470
|
}
|
488
471
|
}
|
489
|
-
|
490
472
|
/**
|
491
473
|
* 获取点击的渲染元素对象
|
492
|
-
* @param renderObject
|
493
|
-
* @param parPos
|
494
|
-
* @param hitPos
|
495
|
-
* @returns
|
474
|
+
* @param renderObject
|
475
|
+
* @param parPos
|
476
|
+
* @param hitPos
|
477
|
+
* @returns
|
496
478
|
*/
|
497
|
-
|
479
|
+
getHitLeafRender(renderObject, parPos, hitPos) {
|
498
480
|
//处理单元格合并,被合并的单元格当前属于被隐藏状态,不能被选择
|
499
481
|
//if (renderObject.element && renderObject.element.visiable === false || renderObject instanceof FillNullSpaceRenderObject) {
|
500
482
|
if (!ElementUtil.checkAvailHitRender(renderObject)) {
|
501
483
|
return null;
|
502
484
|
}
|
503
485
|
if (!renderObject.rect) {
|
504
|
-
throw new Error('renderObject.rect is null')
|
486
|
+
throw new Error('renderObject.rect is null');
|
505
487
|
}
|
506
|
-
const renderObjectRect
|
488
|
+
const renderObjectRect = { x: parPos.x + renderObject.rect.x, y: parPos.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
|
507
489
|
if (renderObject instanceof TableRowRenderObject) {
|
508
490
|
return this.getTRowHitLeafRender(renderObject, parPos, hitPos);
|
509
491
|
}
|
@@ -517,7 +499,8 @@ export class DocumentEvent {
|
|
517
499
|
absoluteRenderRect: renderObjectRect
|
518
500
|
};
|
519
501
|
}
|
520
|
-
}
|
502
|
+
}
|
503
|
+
else if (renderObject instanceof BranchRenderObject) {
|
521
504
|
if (CommonUtil.isInsideRectByPosition(renderObjectRect, hitPos)) {
|
522
505
|
for (let i = 0; i < renderObject.length; i++) {
|
523
506
|
const childRender = renderObject.getChild(i);
|
@@ -529,16 +512,14 @@ export class DocumentEvent {
|
|
529
512
|
//如果当前范围未击中任何元素,则需要匹配最近的元素
|
530
513
|
return this.getRecentHitRender(renderObject, parPos, hitPos);
|
531
514
|
}
|
532
|
-
}
|
515
|
+
}
|
516
|
+
else {
|
533
517
|
throw new Error('未实现');
|
534
518
|
}
|
535
519
|
return null;
|
536
520
|
}
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
private getTRowHitLeafRender(renderObject: TableRowRenderObject, parent: Position, position: Position): { render: LeafRenderObject, offset: number, absoluteRenderRect: Rect } | null {
|
541
|
-
const rowEle = renderObject.element as TableRowElement;
|
521
|
+
getTRowHitLeafRender(renderObject, parent, position) {
|
522
|
+
const rowEle = renderObject.element;
|
542
523
|
//跨页重复显示的头行,属于不可点击区域
|
543
524
|
//只有表第一页部分可以点击
|
544
525
|
if (rowEle.props.headerRow) {
|
@@ -546,7 +527,7 @@ export class DocumentEvent {
|
|
546
527
|
return null;
|
547
528
|
}
|
548
529
|
}
|
549
|
-
const renderObjectRect
|
530
|
+
const renderObjectRect = { x: parent.x + renderObject.rect.x, y: parent.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
|
550
531
|
for (let i = 0; i < renderObject.length; i++) {
|
551
532
|
const childRender = renderObject.getChild(i);
|
552
533
|
const res = this.getHitLeafRender(childRender, { x: renderObjectRect.x, y: renderObjectRect.y }, position);
|
@@ -556,19 +537,17 @@ export class DocumentEvent {
|
|
556
537
|
}
|
557
538
|
return null;
|
558
539
|
}
|
559
|
-
|
560
|
-
|
561
540
|
/**
|
562
541
|
* 如果当前范围未击中任何元素,则需要匹配最近的元素
|
563
|
-
* @param renderObject
|
564
|
-
* @param parent
|
565
|
-
* @param position
|
542
|
+
* @param renderObject
|
543
|
+
* @param parent
|
544
|
+
* @param position
|
566
545
|
*/
|
567
|
-
|
568
|
-
const currentRenderPos
|
546
|
+
getRecentHitRender(renderObject, parent, position) {
|
547
|
+
const currentRenderPos = { x: renderObject.rect.x + parent.x, y: renderObject.rect.y + parent.y };
|
569
548
|
let childRenders = ElementUtil.getAvailHitRenderObjects(renderObject, parent);
|
570
549
|
childRenders = childRenders.filter(item => !item.render.disableClick);
|
571
|
-
let childrenRenderMap = childRenders.map(item => ({ rect: item.rect, distance: ElementUtil.getDistanceToRect(item.rect, position), render: item.render }))
|
550
|
+
let childrenRenderMap = childRenders.map(item => ({ rect: item.rect, distance: ElementUtil.getDistanceToRect(item.rect, position), render: item.render }));
|
572
551
|
//rects = rects.concat(childRenders.map(item => ({ rect: item.rect, distance: ElementUtil.getDistance({ x: item.rect.x + item.rect.width, y: item.rect.y }, position), render: item.render })));
|
573
552
|
childrenRenderMap.sort((item1, item2) => item1.distance - item2.distance);
|
574
553
|
for (let i = 0; i < childrenRenderMap.length; i++) {
|
@@ -581,13 +560,16 @@ export class DocumentEvent {
|
|
581
560
|
if (res) {
|
582
561
|
return res;
|
583
562
|
}
|
584
|
-
}
|
563
|
+
}
|
564
|
+
else if (adjacentRender.render instanceof LeafRenderObject) {
|
585
565
|
let x = 0;
|
586
566
|
if (adjacentRender.rect.x > position.x) {
|
587
567
|
x = 0;
|
588
|
-
}
|
568
|
+
}
|
569
|
+
else if (adjacentRender.rect.x + adjacentRender.rect.width < position.x) {
|
589
570
|
x = adjacentRender.rect.width;
|
590
|
-
}
|
571
|
+
}
|
572
|
+
else {
|
591
573
|
x = position.x - adjacentRender.rect.x;
|
592
574
|
}
|
593
575
|
const offset = ElementUtil.getHitRenderOffset(adjacentRender.render, x);
|
@@ -600,21 +582,18 @@ export class DocumentEvent {
|
|
600
582
|
}
|
601
583
|
return null;
|
602
584
|
}
|
603
|
-
|
604
|
-
|
605
|
-
|
606
585
|
/**
|
607
586
|
* 获取点击的doc-page
|
608
587
|
*/
|
609
|
-
|
610
|
-
const hitPos
|
588
|
+
getHitDocPage(evt) {
|
589
|
+
const hitPos = { x: evt.globalX, y: evt.globalY };
|
611
590
|
const docContainer = this.documentPaint.getDocContainer();
|
612
591
|
let { x, y } = docContainer.rect;
|
613
592
|
y -= this.viewOptions.translateY;
|
614
593
|
let i = 0;
|
615
594
|
for (; i < docContainer.length; i++) {
|
616
|
-
const docRender = docContainer.getChild(i)
|
617
|
-
const docRenderPos
|
595
|
+
const docRender = docContainer.getChild(i);
|
596
|
+
const docRenderPos = { x: docRender.rect.x + x, y: docRender.rect.y + y };
|
618
597
|
if (docRenderPos.y + docRender.rect.height > hitPos.y) {
|
619
598
|
break;
|
620
599
|
}
|
@@ -623,23 +602,22 @@ export class DocumentEvent {
|
|
623
602
|
}
|
624
603
|
}
|
625
604
|
i = i === docContainer.length ? i - 1 : i;
|
626
|
-
const hitDoc = docContainer.getChild(i)
|
605
|
+
const hitDoc = docContainer.getChild(i);
|
627
606
|
const docPos = { x: hitDoc.rect.x + x, y: hitDoc.rect.y + y };
|
628
|
-
const hitPagePos
|
607
|
+
const hitPagePos = { x: hitPos.x - docPos.x, y: hitPos.y - docPos.y };
|
629
608
|
return {
|
630
609
|
docRender: hitDoc,
|
631
610
|
paintAbsoluteRect: docPos,
|
632
611
|
docIndex: i,
|
633
612
|
hitPagePos
|
634
|
-
}
|
613
|
+
};
|
635
614
|
}
|
636
|
-
|
637
615
|
/**
|
638
616
|
* 触发事件
|
639
|
-
* @param type
|
640
|
-
* @param sourceElement
|
617
|
+
* @param type
|
618
|
+
* @param sourceElement
|
641
619
|
*/
|
642
|
-
static invokeEvent(type
|
620
|
+
static invokeEvent(type, sourceElement, event, eventStage, docCtx) {
|
643
621
|
const parents = ElementUtil.getParentElements(sourceElement);
|
644
622
|
//先执行捕获阶段,在执行冒泡
|
645
623
|
for (let i = parents.length - 1; i > -parents.length; i--) {
|
@@ -664,24 +642,21 @@ export class DocumentEvent {
|
|
664
642
|
}
|
665
643
|
return null;
|
666
644
|
}
|
667
|
-
|
668
|
-
|
669
645
|
/**
|
670
646
|
* 发布当前的点击信息
|
671
647
|
*/
|
672
|
-
|
673
|
-
this.hitInfoChanged.next({ startHitInfo: this.startHitInfo
|
648
|
+
pubHitInfo() {
|
649
|
+
this.hitInfoChanged.next({ startHitInfo: this.startHitInfo, endHitInfo: this.endHitInfo });
|
674
650
|
}
|
675
|
-
|
676
651
|
/**
|
677
652
|
* 获取鼠标所在的渲染元素对象
|
678
|
-
* @param renderObject
|
679
|
-
* @param parent
|
680
|
-
* @param position
|
681
|
-
* @returns
|
653
|
+
* @param renderObject
|
654
|
+
* @param parent
|
655
|
+
* @param position
|
656
|
+
* @returns
|
682
657
|
*/
|
683
|
-
|
684
|
-
const renderObjectRect
|
658
|
+
getMouseoverRender(renderObject, parent, position) {
|
659
|
+
const renderObjectRect = { x: parent.x + renderObject.rect.x, y: parent.y + renderObject.rect.y, width: renderObject.rect.width, height: renderObject.rect.height, maxWidth: 0, maxHeight: 0 };
|
685
660
|
if (renderObject instanceof LeafRenderObject) {
|
686
661
|
if (CommonUtil.isInsideRectByPosition(renderObjectRect, position)) {
|
687
662
|
return {
|
@@ -689,7 +664,8 @@ export class DocumentEvent {
|
|
689
664
|
absoluteRenderRect: renderObjectRect
|
690
665
|
};
|
691
666
|
}
|
692
|
-
}
|
667
|
+
}
|
668
|
+
else if (renderObject instanceof BranchRenderObject) {
|
693
669
|
if (CommonUtil.isInsideRectByPosition(renderObjectRect, position)) {
|
694
670
|
//当前为表单元格,但是表格不存在上下padding,
|
695
671
|
//则表格上边框和下边框可能会和内容(paragraph)重叠,
|
@@ -698,7 +674,7 @@ export class DocumentEvent {
|
|
698
674
|
return {
|
699
675
|
render: renderObject,
|
700
676
|
absoluteRenderRect: renderObjectRect
|
701
|
-
}
|
677
|
+
};
|
702
678
|
}
|
703
679
|
for (let i = 0; i < renderObject.length; i++) {
|
704
680
|
const childRender = renderObject.getChild(i);
|
@@ -710,29 +686,29 @@ export class DocumentEvent {
|
|
710
686
|
return {
|
711
687
|
render: renderObject,
|
712
688
|
absoluteRenderRect: renderObjectRect
|
713
|
-
}
|
689
|
+
};
|
714
690
|
}
|
715
|
-
}
|
691
|
+
}
|
692
|
+
else {
|
716
693
|
throw new Error('未实现');
|
717
694
|
}
|
718
695
|
return null;
|
719
696
|
}
|
720
|
-
|
721
697
|
/**
|
722
698
|
* 缩放元素
|
723
699
|
*/
|
724
|
-
|
725
|
-
if (
|
700
|
+
resizeRender(e) {
|
701
|
+
if (this.edgeRenderInfo?.renderElement['resizeable']) {
|
726
702
|
this.resizeElement(e);
|
727
|
-
}
|
703
|
+
}
|
704
|
+
else if (this.edgeRenderInfo?.renderElement instanceof TableCellElement) {
|
728
705
|
this.resizeTableCell();
|
729
706
|
}
|
730
707
|
}
|
731
|
-
|
732
708
|
/**
|
733
709
|
* 缩放表格
|
734
710
|
*/
|
735
|
-
|
711
|
+
resizeTableCell() {
|
736
712
|
if (!this.edgeRenderInfo || !this.edgeRenderInfo.mousedownPos) {
|
737
713
|
return;
|
738
714
|
}
|
@@ -742,9 +718,9 @@ export class DocumentEvent {
|
|
742
718
|
const moveDistanceX = this.currentPos.x - mousedownPos.x;
|
743
719
|
const moveDistanceY = this.currentPos.y - mousedownPos.y;
|
744
720
|
const row = cellElement.parent;
|
745
|
-
const table = row?.parent
|
721
|
+
const table = row?.parent;
|
746
722
|
if (!row || !table) {
|
747
|
-
throw new Error('row | table is null')
|
723
|
+
throw new Error('row | table is null');
|
748
724
|
}
|
749
725
|
const cellIndex = row.getChildIndex(cellElement);
|
750
726
|
let cellWidth = table.getCellWidth(cellIndex);
|
@@ -760,7 +736,8 @@ export class DocumentEvent {
|
|
760
736
|
resizeColWidth = table.getCellWidth(resizeColIndex);
|
761
737
|
resizeColWidth += moveDistanceX;
|
762
738
|
cellWidth -= moveDistanceX;
|
763
|
-
}
|
739
|
+
}
|
740
|
+
else if (border === 'right') {
|
764
741
|
resizeColIndex = cellIndex + 1;
|
765
742
|
//移动最后一列时,右侧没有列了,resizeColWidth的值为-1
|
766
743
|
resizeColWidth = table.getCellWidth(resizeColIndex);
|
@@ -776,17 +753,18 @@ export class DocumentEvent {
|
|
776
753
|
table.setCellWidth(cellIndex, cellWidth);
|
777
754
|
this.edgeRenderInfo.mousedownPos = this.currentPos;
|
778
755
|
table.pubOnChange('self');
|
779
|
-
}
|
756
|
+
}
|
757
|
+
else if (['bottom', 'top'].includes(border)) {
|
780
758
|
let rowIndex = row.getIndex();
|
781
759
|
if (rowIndex === 0 && border === 'top') {
|
782
760
|
return;
|
783
761
|
}
|
784
762
|
//按照移动底边计算
|
785
763
|
rowIndex = border === 'top' ? rowIndex - 1 : rowIndex;
|
786
|
-
const resizeRowEle = table.getChild(rowIndex)
|
787
|
-
let resizeRowRender = resizeRowEle.measureRender
|
764
|
+
const resizeRowEle = table.getChild(rowIndex);
|
765
|
+
let resizeRowRender = resizeRowEle.measureRender;
|
788
766
|
if (resizeRowRender.element !== resizeRowEle) {
|
789
|
-
console.error('缩放表格行高度出现错误,绘制元素和表格对象不对应')
|
767
|
+
console.error('缩放表格行高度出现错误,绘制元素和表格对象不对应');
|
790
768
|
return;
|
791
769
|
}
|
792
770
|
const minHeight = resizeRowEle.props.minHeight ?? 0;
|
@@ -799,7 +777,8 @@ export class DocumentEvent {
|
|
799
777
|
let resizeRowMinHeight = 0;
|
800
778
|
if (minHeight <= 0) {
|
801
779
|
resizeRowMinHeight = resizeRowRenderContentHeight + moveDistanceY;
|
802
|
-
}
|
780
|
+
}
|
781
|
+
else {
|
803
782
|
resizeRowMinHeight = minHeight + moveDistanceY;
|
804
783
|
}
|
805
784
|
//缩放的高度小于内容高度,则重置行最小高度
|
@@ -812,38 +791,36 @@ export class DocumentEvent {
|
|
812
791
|
table.pubOnChange('self');
|
813
792
|
}
|
814
793
|
}
|
815
|
-
|
816
|
-
private getResizeTableCell(): TableCellElement {
|
794
|
+
getResizeTableCell() {
|
817
795
|
if (!this.edgeRenderInfo) {
|
818
|
-
throw new Error('edgeRenderInfo is null')
|
796
|
+
throw new Error('edgeRenderInfo is null');
|
819
797
|
}
|
820
|
-
const cellElement = this.edgeRenderInfo.renderElement
|
798
|
+
const cellElement = this.edgeRenderInfo.renderElement;
|
821
799
|
const row = cellElement.parent;
|
822
800
|
if (!row) {
|
823
|
-
throw new Error('row is null')
|
801
|
+
throw new Error('row is null');
|
824
802
|
}
|
825
|
-
const table = row.parent
|
803
|
+
const table = row.parent;
|
826
804
|
const cellIndex = row.getChildIndex(cellElement);
|
827
805
|
const border = this.edgeRenderInfo.border;
|
828
806
|
if (cellElement.props.hMerge === 'restart' || border === 'right') {
|
829
807
|
for (let i = cellIndex + 1; i < table.getColsCount(); i++) {
|
830
|
-
const cell = row.getChild(i)
|
808
|
+
const cell = row.getChild(i);
|
831
809
|
if (cell.props.hMerge !== 'continue') {
|
832
|
-
return row.getChild(i - 1)
|
810
|
+
return row.getChild(i - 1);
|
833
811
|
}
|
834
812
|
}
|
835
813
|
}
|
836
814
|
return cellElement;
|
837
815
|
}
|
838
|
-
|
839
816
|
/**
|
840
817
|
* 调整元素大小
|
841
818
|
*/
|
842
|
-
|
819
|
+
resizeElement(e) {
|
843
820
|
if (!this.edgeRenderInfo || !this.edgeRenderInfo.mousedownPos) {
|
844
821
|
return;
|
845
822
|
}
|
846
|
-
const imgElement =
|
823
|
+
const imgElement = this.edgeRenderInfo.renderElement;
|
847
824
|
const border = this.edgeRenderInfo.border;
|
848
825
|
const mousedownPos = this.edgeRenderInfo.mousedownPos;
|
849
826
|
let moveDistanceX = this.currentPos.x - mousedownPos.x;
|
@@ -861,7 +838,8 @@ export class DocumentEvent {
|
|
861
838
|
if (Math.abs(moveDistanceX) > Math.abs(moveDistanceY)) {
|
862
839
|
scale = moveDistanceX / imgElement.props.width;
|
863
840
|
moveDistanceY = Math.floor(scale * imgElement.props.height);
|
864
|
-
}
|
841
|
+
}
|
842
|
+
else {
|
865
843
|
scale = moveDistanceY / imgElement.props.height;
|
866
844
|
moveDistanceX = Math.floor(scale * imgElement.props.width);
|
867
845
|
}
|
@@ -876,13 +854,11 @@ export class DocumentEvent {
|
|
876
854
|
}
|
877
855
|
this.edgeRenderInfo.mousedownPos = this.currentPos;
|
878
856
|
}
|
879
|
-
|
880
857
|
}
|
881
|
-
|
882
858
|
/**
|
883
859
|
* 选中当前全部 ctrl+A
|
884
860
|
*/
|
885
|
-
selectAll()
|
861
|
+
selectAll() {
|
886
862
|
const { startControl } = this.selectionState;
|
887
863
|
const regionTarget = ElementUtil.getElementRegionTarget(startControl);
|
888
864
|
if (!startControl || !regionTarget) {
|
@@ -891,7 +867,7 @@ export class DocumentEvent {
|
|
891
867
|
const firstLeaf = ElementUtil.getFirstLeafElement(regionTarget.target);
|
892
868
|
const lastLeaf = ElementUtil.getLastLeafElement(regionTarget.target);
|
893
869
|
if (!firstLeaf || !lastLeaf) {
|
894
|
-
throw new Error('firstLeaf or lastLeaf is null')
|
870
|
+
throw new Error('firstLeaf or lastLeaf is null');
|
895
871
|
}
|
896
872
|
this.selectionState.clear();
|
897
873
|
const newSelectionRange = new SelectionRange();
|
@@ -900,28 +876,24 @@ export class DocumentEvent {
|
|
900
876
|
this.selectionState.addRange(newSelectionRange);
|
901
877
|
//const doc=
|
902
878
|
}
|
903
|
-
|
904
|
-
|
905
879
|
/**
|
906
880
|
* 移动光标到行首
|
907
881
|
*/
|
908
|
-
moveCursorToLineStart()
|
882
|
+
moveCursorToLineStart() {
|
909
883
|
this.moveCursorToHomeOrEnd();
|
910
884
|
}
|
911
|
-
|
912
885
|
/**
|
913
886
|
* 移动光标到行尾
|
914
887
|
*/
|
915
|
-
moveCursorToLineEnd()
|
888
|
+
moveCursorToLineEnd() {
|
916
889
|
this.moveCursorToHomeOrEnd(false);
|
917
890
|
}
|
918
|
-
|
919
891
|
/**
|
920
892
|
* 处理移动光标到行尾或行首
|
921
|
-
* @param home
|
922
|
-
* @returns
|
893
|
+
* @param home
|
894
|
+
* @returns
|
923
895
|
*/
|
924
|
-
|
896
|
+
moveCursorToHomeOrEnd(home = true) {
|
925
897
|
const { startControl } = this.selectionState;
|
926
898
|
if (!startControl || !this.docCtx.cursorRect) {
|
927
899
|
return;
|
@@ -935,8 +907,8 @@ export class DocumentEvent {
|
|
935
907
|
if (!hitInfo) {
|
936
908
|
return;
|
937
909
|
}
|
938
|
-
const paraRender = ElementUtil.getParentRender(hitInfo.render, ParagraphLineRectRenderObject)
|
939
|
-
const linePosRect = ElementUtil.getRenderAbsolutePaintRect(paraRender)
|
910
|
+
const paraRender = ElementUtil.getParentRender(hitInfo.render, ParagraphLineRectRenderObject);
|
911
|
+
const linePosRect = ElementUtil.getRenderAbsolutePaintRect(paraRender);
|
940
912
|
docEvent.globalX = linePosRect.x + (home ? 0 : linePosRect.width);
|
941
913
|
docEvent.globalY = linePosRect.y + linePosRect.height / 2;
|
942
914
|
this.mousedownPos = { x: docEvent.globalX, y: docEvent.globalY };
|
@@ -944,12 +916,10 @@ export class DocumentEvent {
|
|
944
916
|
this.ismousedown = false;
|
945
917
|
this.edgeRenderInfo = null;
|
946
918
|
}
|
947
|
-
|
948
|
-
|
949
919
|
/**
|
950
920
|
* 向左移动光标
|
951
921
|
*/
|
952
|
-
moveCursorToLeft()
|
922
|
+
moveCursorToLeft() {
|
953
923
|
const { startControl, startOffset } = this.selectionState;
|
954
924
|
if (startOffset === 0) {
|
955
925
|
const oldRegion = ElementUtil.getElementRegion(startControl);
|
@@ -962,19 +932,20 @@ export class DocumentEvent {
|
|
962
932
|
this.selectionState.resetRange(prevEle, -1);
|
963
933
|
return;
|
964
934
|
}
|
965
|
-
}
|
935
|
+
}
|
936
|
+
else {
|
966
937
|
if (startControl instanceof TextGroupElement) {
|
967
938
|
this.selectionState.resetRange(startControl, startOffset - 1);
|
968
|
-
}
|
939
|
+
}
|
940
|
+
else {
|
969
941
|
this.selectionState.resetRange(startControl, 0);
|
970
942
|
}
|
971
943
|
}
|
972
944
|
}
|
973
|
-
|
974
945
|
/**
|
975
946
|
* 向右移动光标
|
976
947
|
*/
|
977
|
-
moveCursorToRight()
|
948
|
+
moveCursorToRight() {
|
978
949
|
const { startControl, startOffset } = this.selectionState;
|
979
950
|
if (this.isLeafEleEndOffset(startControl, startOffset)) {
|
980
951
|
const oldRegion = ElementUtil.getElementRegion(startControl);
|
@@ -987,19 +958,20 @@ export class DocumentEvent {
|
|
987
958
|
this.selectionState.resetRange(nextEle, 0);
|
988
959
|
return;
|
989
960
|
}
|
990
|
-
}
|
961
|
+
}
|
962
|
+
else {
|
991
963
|
if (startControl instanceof TextGroupElement) {
|
992
964
|
this.selectionState.resetRange(startControl, startOffset + 1);
|
993
|
-
}
|
965
|
+
}
|
966
|
+
else {
|
994
967
|
this.selectionState.resetRange(startControl, 1);
|
995
968
|
}
|
996
969
|
}
|
997
970
|
}
|
998
|
-
|
999
971
|
/**
|
1000
972
|
* 向上移动光标
|
1001
973
|
*/
|
1002
|
-
moveCursorToUpOrDown(up
|
974
|
+
moveCursorToUpOrDown(up = true) {
|
1003
975
|
if (!this.selectionState.cursorPos) {
|
1004
976
|
return;
|
1005
977
|
}
|
@@ -1024,40 +996,39 @@ export class DocumentEvent {
|
|
1024
996
|
}
|
1025
997
|
}
|
1026
998
|
}
|
1027
|
-
|
1028
|
-
|
1029
999
|
/**
|
1030
1000
|
* 当前偏移量是否处于当前元素的末尾
|
1031
|
-
* @param ele
|
1032
|
-
* @param offset
|
1033
|
-
* @returns
|
1001
|
+
* @param ele
|
1002
|
+
* @param offset
|
1003
|
+
* @returns
|
1034
1004
|
*/
|
1035
|
-
|
1005
|
+
isLeafEleEndOffset(ele, offset) {
|
1036
1006
|
if (ele instanceof TextGroupElement) {
|
1037
1007
|
return ele.textMeasures.length === offset;
|
1038
|
-
}
|
1008
|
+
}
|
1009
|
+
else {
|
1039
1010
|
if (ele instanceof PSymbolElement) {
|
1040
1011
|
return true;
|
1041
|
-
}
|
1012
|
+
}
|
1013
|
+
else {
|
1042
1014
|
return offset === 1;
|
1043
1015
|
}
|
1044
1016
|
}
|
1045
1017
|
}
|
1046
|
-
|
1047
1018
|
/**
|
1048
1019
|
* 获取点击的文档区域
|
1049
|
-
* @param docRender
|
1050
|
-
* @param pos
|
1051
|
-
* @returns
|
1020
|
+
* @param docRender
|
1021
|
+
* @param pos
|
1022
|
+
* @returns
|
1052
1023
|
*/
|
1053
|
-
getHitRegion(docEvent
|
1024
|
+
getHitRegion(docEvent) {
|
1054
1025
|
const hitDocInfo = this.getHitDocPage(docEvent);
|
1055
1026
|
if (!hitDocInfo) {
|
1056
1027
|
return null;
|
1057
1028
|
}
|
1058
1029
|
const { docRender, hitPagePos } = hitDocInfo;
|
1059
|
-
const headerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentHeaderRenderObject)
|
1060
|
-
const footerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentFooterRenderObject)
|
1030
|
+
const headerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentHeaderRenderObject);
|
1031
|
+
const footerRender = ElementUtil.findChildRender(docRender, (item) => item instanceof DocumentFooterRenderObject);
|
1061
1032
|
if (!headerRender) {
|
1062
1033
|
throw new Error('header is null');
|
1063
1034
|
}
|
@@ -1068,15 +1039,16 @@ export class DocumentEvent {
|
|
1068
1039
|
const footerLine = footerRender.rect.y;
|
1069
1040
|
if (hitPagePos.y <= headerLine) {
|
1070
1041
|
return 'header';
|
1071
|
-
}
|
1042
|
+
}
|
1043
|
+
else if (hitPagePos.y <= footerLine) {
|
1072
1044
|
return 'body';
|
1073
|
-
}
|
1045
|
+
}
|
1046
|
+
else if (hitPagePos.y > footerLine && hitPagePos.y < docRender.rect.height) {
|
1074
1047
|
return 'footer';
|
1075
|
-
}
|
1048
|
+
}
|
1049
|
+
else {
|
1076
1050
|
return null;
|
1077
1051
|
}
|
1078
1052
|
}
|
1079
|
-
|
1080
1053
|
}
|
1081
|
-
|
1082
|
-
|
1054
|
+
//# sourceMappingURL=document-event.js.map
|