@hailin-zheng/editor-core 1.0.7 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -4
- package/{lib/doc-ruler.js → src/med_editor/doc-ruler.ts} +101 -74
- package/src/med_editor/framework/common-util.ts +200 -0
- package/{lib/framework/document-change.js → src/med_editor/framework/document-change.ts} +308 -259
- package/{lib/framework/document-combine.js → src/med_editor/framework/document-combine.ts} +15 -11
- package/{lib/framework/document-comment.js → src/med_editor/framework/document-comment.ts} +52 -37
- package/{lib/framework/document-context.js → src/med_editor/framework/document-context.ts} +181 -101
- package/{lib/framework/document-eval-func.js → src/med_editor/framework/document-eval-func.ts} +16 -11
- package/{lib/framework/document-event.js → src/med_editor/framework/document-event.ts} +244 -216
- package/{lib/framework/document-history.js → src/med_editor/framework/document-history.ts} +25 -14
- package/{lib/framework/document-images-loader.js → src/med_editor/framework/document-images-loader.ts} +25 -17
- package/{lib/framework/document-input-cursor.js → src/med_editor/framework/document-input-cursor.ts} +76 -71
- package/{lib/framework/document-paint.js → src/med_editor/framework/document-paint.ts} +35 -28
- package/{lib/framework/document-print-offscreen.js → src/med_editor/framework/document-print-offscreen.ts} +25 -19
- package/{lib/framework/document-print.js → src/med_editor/framework/document-print.ts} +57 -41
- package/src/med_editor/framework/document-segmenter.ts +211 -0
- package/{lib/framework/document-selection.js → src/med_editor/framework/document-selection.ts} +116 -85
- package/{lib/framework/document-template.js → src/med_editor/framework/document-template.ts} +3 -3
- package/src/med_editor/framework/document-textline-mode.ts +34 -0
- package/{lib/framework/element-define.js → src/med_editor/framework/element-define.ts} +301 -206
- package/src/med_editor/framework/element-event-define.ts +141 -0
- package/{lib/framework/element-measure.js → src/med_editor/framework/element-measure.ts} +143 -121
- package/{lib/framework/element-paint.js → src/med_editor/framework/element-paint.ts} +44 -38
- package/{lib/framework/element-props.js → src/med_editor/framework/element-props.ts} +331 -202
- package/{lib/framework/element-reader.js → src/med_editor/framework/element-reader.ts} +39 -31
- package/{lib/framework/element-render-cut.js → src/med_editor/framework/element-render-cut.ts} +113 -106
- package/{lib/framework/element-serialize.js → src/med_editor/framework/element-serialize.ts} +37 -24
- package/{lib/framework/element-util.js → src/med_editor/framework/element-util.ts} +317 -216
- package/{lib/framework/impl/checkbox/checkbox-impl.js → src/med_editor/framework/impl/checkbox/checkbox-impl.ts} +27 -20
- package/{lib/framework/impl/comments/comment-content-impl.js → src/med_editor/framework/impl/comments/comment-content-impl.ts} +45 -31
- package/{lib/framework/impl/comments/comment-element-impl.js → src/med_editor/framework/impl/comments/comment-element-impl.ts} +23 -20
- package/{lib/framework/impl/comments/comments-container-impl.js → src/med_editor/framework/impl/comments/comments-container-impl.ts} +22 -16
- package/{lib/framework/impl/comments/comments-util.js → src/med_editor/framework/impl/comments/comments-util.ts} +34 -17
- package/{lib/framework/impl/comments/validate-msg-impl.js → src/med_editor/framework/impl/comments/validate-msg-impl.ts} +28 -17
- package/{lib/framework/impl/data-element/data-decorate-impl.js → src/med_editor/framework/impl/data-element/data-decorate-impl.ts} +26 -22
- package/{lib/framework/impl/data-element/data-element-barcode.js → src/med_editor/framework/impl/data-element/data-element-barcode.ts} +41 -29
- package/{lib/framework/impl/data-element/data-element-base-impl.js → src/med_editor/framework/impl/data-element/data-element-base-impl.ts} +73 -44
- package/{lib/framework/impl/data-element/data-element-check-impl.js → src/med_editor/framework/impl/data-element/data-element-check-impl.ts} +48 -35
- package/{lib/framework/impl/data-element/data-element-date-impl.js → src/med_editor/framework/impl/data-element/data-element-date-impl.ts} +41 -24
- package/{lib/framework/impl/data-element/data-element-group-impl.js → src/med_editor/framework/impl/data-element/data-element-group-impl.ts} +52 -32
- package/{lib/framework/impl/data-element/data-element-image-impl.js → src/med_editor/framework/impl/data-element/data-element-image-impl.ts} +38 -28
- package/{lib/framework/impl/data-element/data-element-list-impl.js → src/med_editor/framework/impl/data-element/data-element-list-impl.ts} +42 -31
- package/{lib/framework/impl/data-element/data-element-text-impl.js → src/med_editor/framework/impl/data-element/data-element-text-impl.ts} +36 -22
- package/{lib/framework/impl/decorate/fill-null-space-imple.js → src/med_editor/framework/impl/decorate/fill-null-space-imple.ts} +15 -10
- package/{lib/framework/impl/document/doc-body-impl.js → src/med_editor/framework/impl/document/doc-body-impl.ts} +32 -16
- package/{lib/framework/impl/document/doc-body-part-impl.js → src/med_editor/framework/impl/document/doc-body-part-impl.ts} +27 -17
- package/src/med_editor/framework/impl/document/doc-container-impl.ts +24 -0
- package/{lib/framework/impl/document/doc-footer-impl.js → src/med_editor/framework/impl/document/doc-footer-impl.ts} +30 -19
- package/{lib/framework/impl/document/doc-header-impl.js → src/med_editor/framework/impl/document/doc-header-impl.ts} +34 -17
- package/{lib/framework/impl/document/doc-impl.js → src/med_editor/framework/impl/document/doc-impl.ts} +62 -45
- package/{lib/framework/impl/media-formula/menstrual-history.js → src/med_editor/framework/impl/media-formula/menstrual-history.ts} +58 -36
- package/{lib/framework/impl/paragraph/p-impl.js → src/med_editor/framework/impl/paragraph/p-impl.ts} +64 -30
- package/{lib/framework/impl/picture/image-impl.js → src/med_editor/framework/impl/picture/image-impl.ts} +37 -25
- package/{lib/framework/impl/radio/radio-impl.js → src/med_editor/framework/impl/radio/radio-impl.ts} +28 -21
- package/{lib/framework/impl/symbol/br-symbol-impl.js → src/med_editor/framework/impl/symbol/br-symbol-impl.ts} +21 -15
- package/{lib/framework/impl/symbol/p-symbol-impl.js → src/med_editor/framework/impl/symbol/p-symbol-impl.ts} +15 -12
- package/{lib/framework/impl/table/table-cell-impl.js → src/med_editor/framework/impl/table/table-cell-impl.ts} +41 -30
- package/{lib/framework/impl/table/table-impl.js → src/med_editor/framework/impl/table/table-impl.ts} +122 -84
- package/{lib/framework/impl/table/table-row-impl.js → src/med_editor/framework/impl/table/table-row-impl.ts} +26 -18
- package/{lib/framework/impl/table/table-split-cell-patch.js → src/med_editor/framework/impl/table/table-split-cell-patch.ts} +31 -22
- package/{lib/framework/impl/table/table-split-cell.js → src/med_editor/framework/impl/table/table-split-cell.ts} +105 -94
- package/{lib/framework/impl/table/table-util.js → src/med_editor/framework/impl/table/table-util.ts} +197 -159
- package/{lib/framework/impl/text/text-impl.js → src/med_editor/framework/impl/text/text-impl.ts} +49 -35
- package/{lib/framework/impl/text/track-run-impl.js → src/med_editor/framework/impl/text/track-run-impl.ts} +53 -30
- package/{lib/framework/notify.js → src/med_editor/framework/notify.ts} +50 -36
- package/{lib/framework/range-util.js → src/med_editor/framework/range-util.ts} +80 -71
- package/{lib/framework/render-context.js → src/med_editor/framework/render-context.ts} +111 -64
- package/{lib/framework/render-define.js → src/med_editor/framework/render-define.ts} +90 -61
- package/{lib/framework/selection-overlays.js → src/med_editor/framework/selection-overlays.ts} +25 -16
- package/{lib/texteditor.js → src/med_editor/texteditor.ts} +288 -191
- package/src/med_editor/util/subject.ts +118 -0
- package/{lib/util/table-bind.js → src/med_editor/util/table-bind.ts} +2 -2
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225.json +3573 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225.json +3573 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225bug.json +315 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/211/271/346/263/250.json +122 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/346/226/207/346/241/243/351/252/214/350/257/201.json +3599 -0
- package/src/med_editor//345/205/245/351/231/242/350/256/260/345/275/225/346/265/213/350/257/225/351/225/277/346/226/207/346/234/254.json +24586 -0
- package/src/med_editor//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225.json +2874 -0
- package/src/med_editor//346/211/213/346/234/257/350/256/260/345/275/225.json +341 -0
- package/src/med_editor//346/231/256/351/200/232doc/347/261/273/346/226/207/346/241/243.json +2201 -0
- package/src/med_editor//346/243/200/351/252/214/347/224/263/350/257/267/345/215/225.json +1069 -0
- package/src/med_editor//347/227/205/347/250/213/345/275/225//345/206/205/351/225/234/344/270/213/346/262/273/347/226/227/350/256/260/345/275/225.json +125 -0
- package/src/med_editor//347/227/205/347/250/213/345/275/225//345/220/210/345/271/266/347/227/205/347/250/213/345/275/225/346/250/241/346/235/277.json +86 -0
- package/src/med_editor//347/227/205/347/250/213/345/275/225//346/227/245/345/270/270/347/227/205/347/250/213/350/256/260/345/275/225.json +115 -0
- package/src/med_editor//347/227/205/347/250/213/345/275/225//346/237/245/346/210/277/350/256/260/345/275/2251.json +108 -0
- package/src/med_editor//347/227/205/347/250/213/345/275/225//351/246/226/346/254/241/344/270/212/347/272/247/345/214/273/345/270/210/346/237/245/346/210/277/350/256/260/345/275/225.json +272 -0
- package/src/med_editor//351/225/277/346/234/237/345/214/273/345/230/261/345/215/225.json +1070 -0
- package/lib/doc-ruler.d.ts +0 -51
- package/lib/doc-ruler.js.map +0 -1
- package/lib/framework/common-util.d.ts +0 -63
- package/lib/framework/common-util.js +0 -178
- package/lib/framework/common-util.js.map +0 -1
- package/lib/framework/document-change.d.ts +0 -265
- package/lib/framework/document-change.js.map +0 -1
- package/lib/framework/document-combine.d.ts +0 -24
- package/lib/framework/document-combine.js.map +0 -1
- package/lib/framework/document-comment.d.ts +0 -46
- package/lib/framework/document-comment.js.map +0 -1
- package/lib/framework/document-context.d.ts +0 -149
- package/lib/framework/document-context.js.map +0 -1
- package/lib/framework/document-eval-func.d.ts +0 -18
- package/lib/framework/document-eval-func.js.map +0 -1
- package/lib/framework/document-event.d.ts +0 -213
- package/lib/framework/document-event.js.map +0 -1
- package/lib/framework/document-history.d.ts +0 -26
- package/lib/framework/document-history.js.map +0 -1
- package/lib/framework/document-images-loader.d.ts +0 -16
- package/lib/framework/document-images-loader.js.map +0 -1
- package/lib/framework/document-input-cursor.d.ts +0 -78
- package/lib/framework/document-input-cursor.js.map +0 -1
- package/lib/framework/document-paint.d.ts +0 -34
- package/lib/framework/document-paint.js.map +0 -1
- package/lib/framework/document-print-offscreen.d.ts +0 -38
- package/lib/framework/document-print-offscreen.js.map +0 -1
- package/lib/framework/document-print.d.ts +0 -60
- package/lib/framework/document-print.js.map +0 -1
- package/lib/framework/document-segmenter.d.ts +0 -2
- package/lib/framework/document-segmenter.js +0 -106
- package/lib/framework/document-segmenter.js.map +0 -1
- package/lib/framework/document-selection.d.ts +0 -89
- package/lib/framework/document-selection.js.map +0 -1
- package/lib/framework/document-template.d.ts +0 -4
- package/lib/framework/document-template.js.map +0 -1
- package/lib/framework/document-textline-mode.d.ts +0 -7
- package/lib/framework/document-textline-mode.js +0 -30
- package/lib/framework/document-textline-mode.js.map +0 -1
- package/lib/framework/element-define.d.ts +0 -319
- package/lib/framework/element-define.js.map +0 -1
- package/lib/framework/element-event-define.d.ts +0 -99
- package/lib/framework/element-event-define.js +0 -108
- package/lib/framework/element-event-define.js.map +0 -1
- package/lib/framework/element-measure.d.ts +0 -97
- package/lib/framework/element-measure.js.map +0 -1
- package/lib/framework/element-paint.d.ts +0 -42
- package/lib/framework/element-paint.js.map +0 -1
- package/lib/framework/element-props.d.ts +0 -301
- package/lib/framework/element-props.js.map +0 -1
- package/lib/framework/element-reader.d.ts +0 -19
- package/lib/framework/element-reader.js.map +0 -1
- package/lib/framework/element-render-cut.d.ts +0 -55
- package/lib/framework/element-render-cut.js.map +0 -1
- package/lib/framework/element-serialize.d.ts +0 -30
- package/lib/framework/element-serialize.js.map +0 -1
- package/lib/framework/element-util.d.ts +0 -369
- package/lib/framework/element-util.js.map +0 -1
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts +0 -24
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-content-impl.d.ts +0 -40
- package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-element-impl.d.ts +0 -21
- package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-container-impl.d.ts +0 -22
- package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-util.d.ts +0 -12
- package/lib/framework/impl/comments/comments-util.js.map +0 -1
- package/lib/framework/impl/comments/validate-msg-impl.d.ts +0 -21
- package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-decorate-impl.d.ts +0 -30
- package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-barcode.d.ts +0 -31
- package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-base-impl.d.ts +0 -68
- package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-check-impl.d.ts +0 -35
- package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-date-impl.d.ts +0 -23
- package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-group-impl.d.ts +0 -23
- package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-image-impl.d.ts +0 -30
- package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-list-impl.d.ts +0 -22
- package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-text-impl.d.ts +0 -23
- package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
- package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +0 -21
- package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
- package/lib/framework/impl/document/doc-body-impl.d.ts +0 -27
- package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-body-part-impl.d.ts +0 -30
- package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-container-impl.d.ts +0 -16
- package/lib/framework/impl/document/doc-container-impl.js +0 -21
- package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-footer-impl.d.ts +0 -26
- package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-header-impl.d.ts +0 -26
- package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-impl.d.ts +0 -61
- package/lib/framework/impl/document/doc-impl.js.map +0 -1
- package/lib/framework/impl/media-formula/menstrual-history.d.ts +0 -35
- package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
- package/lib/framework/impl/paragraph/p-impl.d.ts +0 -45
- package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
- package/lib/framework/impl/picture/image-impl.d.ts +0 -31
- package/lib/framework/impl/picture/image-impl.js.map +0 -1
- package/lib/framework/impl/radio/radio-impl.d.ts +0 -22
- package/lib/framework/impl/radio/radio-impl.js.map +0 -1
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts +0 -22
- package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
- package/lib/framework/impl/symbol/p-symbol-impl.d.ts +0 -19
- package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
- package/lib/framework/impl/table/table-cell-impl.d.ts +0 -37
- package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
- package/lib/framework/impl/table/table-impl.d.ts +0 -55
- package/lib/framework/impl/table/table-impl.js.map +0 -1
- package/lib/framework/impl/table/table-row-impl.d.ts +0 -26
- package/lib/framework/impl/table/table-row-impl.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell-patch.d.ts +0 -20
- package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell.d.ts +0 -90
- package/lib/framework/impl/table/table-split-cell.js.map +0 -1
- package/lib/framework/impl/table/table-util.d.ts +0 -150
- package/lib/framework/impl/table/table-util.js.map +0 -1
- package/lib/framework/impl/text/text-impl.d.ts +0 -32
- package/lib/framework/impl/text/text-impl.js.map +0 -1
- package/lib/framework/impl/text/track-run-impl.d.ts +0 -27
- package/lib/framework/impl/text/track-run-impl.js.map +0 -1
- package/lib/framework/notify.d.ts +0 -13
- package/lib/framework/notify.js.map +0 -1
- package/lib/framework/range-util.d.ts +0 -40
- package/lib/framework/range-util.js.map +0 -1
- package/lib/framework/render-context.d.ts +0 -91
- package/lib/framework/render-context.js.map +0 -1
- package/lib/framework/render-define.d.ts +0 -109
- package/lib/framework/render-define.js.map +0 -1
- package/lib/framework/selection-overlays.d.ts +0 -30
- package/lib/framework/selection-overlays.js.map +0 -1
- package/lib/texteditor.d.ts +0 -318
- package/lib/texteditor.js.map +0 -1
- package/lib/util/subject.d.ts +0 -34
- package/lib/util/subject.js +0 -88
- package/lib/util/subject.js.map +0 -1
- package/lib/util/table-bind.d.ts +0 -5
- package/lib/util/table-bind.js.map +0 -1
- package/tsconfig.json +0 -25
@@ -1,4 +1,5 @@
|
|
1
|
-
import {
|
1
|
+
import { EditorContext } from "./document-context";
|
2
|
+
import { BranchElement, ElementFactory, Element, ViewOptions, PageOptions } from "./element-define";
|
2
3
|
import { CheckBoxFactory } from "./impl/checkbox/checkbox-impl";
|
3
4
|
import { CommentContentFactory } from "./impl/comments/comment-content-impl";
|
4
5
|
import { CommentFactory } from "./impl/comments/comment-element-impl";
|
@@ -22,27 +23,27 @@ import { TableFactory } from "./impl/table/table-impl";
|
|
22
23
|
import { TableRowFactory } from "./impl/table/table-row-impl";
|
23
24
|
import { RunElementFactory } from "./impl/text/track-run-impl";
|
24
25
|
import { TextGroupFactory } from "./impl/text/text-impl";
|
26
|
+
import { RenderContenxtType } from "./render-context";
|
25
27
|
import { INotifyPropertyChanged, TrackRunProps } from "./element-props";
|
26
|
-
import { DataElementGroupFactory } from "
|
28
|
+
import { DataElementGroupFactory } from "./impl/data-element/data-element-group-impl";
|
27
29
|
import { DocumentBodyPartFactory } from "./impl/document/doc-body-part-impl";
|
28
30
|
import { DataElementBarcodeFactory } from "./impl/data-element/data-element-barcode";
|
31
|
+
|
29
32
|
export class ElementReader {
|
30
|
-
docCtx
|
31
|
-
viewOptions;
|
32
|
-
renderCtx;
|
33
|
-
constructor(docCtx, viewOptions, renderCtx) {
|
34
|
-
this.docCtx = docCtx;
|
35
|
-
this.viewOptions = viewOptions;
|
36
|
-
this.renderCtx = renderCtx;
|
33
|
+
constructor(private docCtx: EditorContext, private viewOptions: ViewOptions, private renderCtx: RenderContenxtType) {
|
37
34
|
this.initFactory();
|
38
35
|
}
|
39
|
-
|
40
|
-
|
36
|
+
|
37
|
+
factories: Array<ElementFactory> = [];
|
38
|
+
|
39
|
+
addFactory<U extends null | object, T extends ElementFactory<U>>(c: new () => T): void {
|
41
40
|
const instance = new c();
|
42
41
|
instance.options = this.viewOptions;
|
43
|
-
this.factories.push(instance);
|
42
|
+
this.factories.push(instance as ElementFactory);
|
44
43
|
}
|
45
|
-
|
44
|
+
|
45
|
+
|
46
|
+
private initFactory(): void {
|
46
47
|
this.addFactory(DocumentFactory);
|
47
48
|
this.addFactory(DocumentHeaderFactory);
|
48
49
|
this.addFactory(DocumentBodyFactory);
|
@@ -61,7 +62,7 @@ export class ElementReader {
|
|
61
62
|
this.addFactory(DataElementCheckFactory);
|
62
63
|
this.addFactory(DataElementBarcodeFactory);
|
63
64
|
this.addFactory(BreakFactory);
|
64
|
-
this.addFactory(CommentsFactory)
|
65
|
+
this.addFactory(CommentsFactory)
|
65
66
|
this.addFactory(CommentContentFactory);
|
66
67
|
this.addFactory(CommentFactory);
|
67
68
|
this.addFactory(DataElementImgFactory);
|
@@ -69,35 +70,38 @@ export class ElementReader {
|
|
69
70
|
this.addFactory(RunElementFactory);
|
70
71
|
this.addFactory(DataElementGroupFactory);
|
71
72
|
this.addFactory(DocumentBodyPartFactory);
|
72
|
-
this.registerReadFunc('ins-run', (data) => {
|
73
|
+
this.registerReadFunc<TrackRunProps>('ins-run', (data) => {
|
73
74
|
const props = new TrackRunProps(data.type);
|
74
75
|
props.userId = data.userId;
|
75
76
|
props.userName = data.userName;
|
76
77
|
props.date = data.date;
|
77
78
|
return props;
|
78
|
-
})
|
79
|
-
this.registerReadFunc('del-run', (data) => {
|
79
|
+
})
|
80
|
+
this.registerReadFunc<TrackRunProps>('del-run', (data) => {
|
80
81
|
const props = new TrackRunProps(data.type);
|
81
82
|
props.userId = data.userId;
|
82
83
|
props.userName = data.userName;
|
83
84
|
props.date = data.date;
|
84
85
|
return props;
|
85
|
-
})
|
86
|
+
})
|
86
87
|
}
|
87
|
-
|
88
|
-
|
88
|
+
|
89
|
+
read(data: any | DocumentElement): void {
|
90
|
+
const document = data instanceof DocumentElement ? data.clone() : this.readElement(data) as DocumentElement;
|
89
91
|
this.setDocument(document);
|
90
92
|
}
|
91
|
-
|
93
|
+
|
94
|
+
|
95
|
+
setDocument(document: DocumentElement): void {
|
92
96
|
// if (this.docCtx.document) {
|
93
97
|
// this.docCtx.document.destroy();
|
94
98
|
// }
|
95
99
|
// this.document?.clearItems();
|
96
100
|
// document.docProps.clone(this.document.docProps);
|
97
|
-
document.bodyElement = document.find((item) => item instanceof DocumentBodyElement);
|
98
|
-
document.headerElement = document.find((item) => item instanceof DocumentHeaderElement);
|
99
|
-
document.footerElement = document.find((item) => item instanceof DocumentFooterElement);
|
100
|
-
document.commentsContainerElement = document.find((item) => item instanceof CommsContainerElement);
|
101
|
+
document.bodyElement = document.find((item) => item instanceof DocumentBodyElement) as DocumentBodyElement;
|
102
|
+
document.headerElement = document.find((item) => item instanceof DocumentHeaderElement) as DocumentHeaderElement;
|
103
|
+
document.footerElement = document.find((item) => item instanceof DocumentFooterElement) as DocumentFooterElement;
|
104
|
+
document.commentsContainerElement = document.find((item) => item instanceof CommsContainerElement) as CommsContainerElement;
|
101
105
|
if (!document.commentsContainerElement) {
|
102
106
|
document.commentsContainerElement = new CommsContainerElement();
|
103
107
|
}
|
@@ -113,8 +117,10 @@ export class ElementReader {
|
|
113
117
|
this.viewOptions.docPageSettings = new PageOptions(width, height, document.props.orient);
|
114
118
|
//this.viewOptions.viewSettings.width = this.viewOptions.docPageSettings.width + 10;
|
115
119
|
}
|
116
|
-
|
117
|
-
|
120
|
+
|
121
|
+
|
122
|
+
readElement(data: any): Element {
|
123
|
+
const type = data.type as string;
|
118
124
|
for (const factory of this.factories) {
|
119
125
|
if (factory.match(type)) {
|
120
126
|
const element = factory.createElement(data, this.renderCtx);
|
@@ -130,11 +136,14 @@ export class ElementReader {
|
|
130
136
|
}
|
131
137
|
throw new Error('未知的元素类型:' + type);
|
132
138
|
}
|
133
|
-
|
134
|
-
|
139
|
+
|
140
|
+
propsReadFuncs: Map<string, (data: any) => any> = new Map();
|
141
|
+
|
142
|
+
registerReadFunc<T>(propName: string, func: (data: T) => T): void {
|
135
143
|
this.propsReadFuncs.set(propName, func);
|
136
144
|
}
|
137
|
-
|
145
|
+
|
146
|
+
readExtendsProps(data: any, element: Element): void {
|
138
147
|
if (data.extendsProps && data.extendsProps.length) {
|
139
148
|
for (const prop of data.extendsProps) {
|
140
149
|
const func = this.propsReadFuncs.get(prop.name);
|
@@ -148,4 +157,3 @@ export class ElementReader {
|
|
148
157
|
}
|
149
158
|
}
|
150
159
|
}
|
151
|
-
//# sourceMappingURL=element-reader.js.map
|
package/{lib/framework/element-render-cut.js → src/med_editor/framework/element-render-cut.ts}
RENAMED
@@ -1,22 +1,28 @@
|
|
1
1
|
import { ElementUtil } from "./element-util";
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import {
|
2
|
+
import { DocumentBodyRenderObject } from "./impl/document/doc-body-impl";
|
3
|
+
import { DocumentHeaderRenderObject } from "./impl/document/doc-header-impl";
|
4
|
+
import { DocumentElement, DocumentRenderObject } from "./impl/document/doc-impl";
|
5
|
+
import { RenderContenxtType } from "./render-context";
|
6
|
+
import { BlockContentRenderObject, BlockLineRectRenderObject, MuiltBlockLineRenderObject, RenderObject } from "./render-define";
|
7
|
+
import { Rect, ViewOptions } from "./element-define";
|
8
|
+
import { TableRowElement, TableRowRenderObject } from "./impl/table/table-row-impl";
|
9
|
+
import { DocumentFooterRenderObject } from "./impl/document/doc-footer-impl";
|
10
|
+
import { TableCellElement, TableCellRenderObject } from "./impl/table/table-cell-impl";
|
11
|
+
import { TableElement, TableRenderObject } from "./impl/table/table-impl";
|
12
|
+
import { CommsContainerRenderObject } from "./impl/comments/comments-container-impl";
|
13
|
+
import { ParagraphElement } from "./impl/paragraph/p-impl";
|
14
|
+
|
5
15
|
export class ElementRenderCut {
|
6
|
-
options
|
7
|
-
|
8
|
-
|
9
|
-
this.options = options;
|
10
|
-
this.renderContext = renderContext;
|
11
|
-
}
|
12
|
-
cutPage(documentRender, documentElement) {
|
16
|
+
constructor(private options: ViewOptions, private renderContext: RenderContenxtType) { }
|
17
|
+
|
18
|
+
cutPage(documentRender: DocumentRenderObject, documentElement: DocumentElement): Array<DocumentRenderObject> {
|
13
19
|
if (this.options.fullPageView) {
|
14
20
|
return this.getFullViewDocRender(documentRender, documentElement);
|
15
21
|
}
|
16
|
-
const headerRender = documentRender.getChild(0);
|
17
|
-
const bodyRender = documentRender.getChild(1).clone();
|
18
|
-
const footerRender = documentRender.getChild(2);
|
19
|
-
const commentsRender = documentRender.getChild(3);
|
22
|
+
const headerRender = documentRender.getChild(0) as DocumentHeaderRenderObject;
|
23
|
+
const bodyRender = documentRender.getChild(1).clone() as DocumentBodyRenderObject;
|
24
|
+
const footerRender = documentRender.getChild(2) as DocumentFooterRenderObject;
|
25
|
+
const commentsRender = documentRender.getChild(3) as CommsContainerRenderObject;
|
20
26
|
const { headerLine, footerLine } = documentRender;
|
21
27
|
let bodyMarginTop = headerLine + headerRender.rect.height + 6;
|
22
28
|
let bodyMarginBottom = footerLine + footerRender.rect.height;
|
@@ -26,16 +32,18 @@ export class ElementRenderCut {
|
|
26
32
|
documentRender.padding.top = bodyMarginTop;
|
27
33
|
documentRender.padding.bottom = bodyMarginBottom;
|
28
34
|
const bodyLimitRect = documentRender.getInnnerRect();
|
29
|
-
const bodyArray = [];
|
35
|
+
const bodyArray: Array<DocumentBodyRenderObject> = [];
|
30
36
|
let { emptyBody: pageBodyRender, innerRect: bodyInnerLimitRect } = this.createEmptyBodyRender(bodyRender, bodyLimitRect);
|
31
37
|
bodyArray.push(pageBodyRender);
|
38
|
+
|
32
39
|
const createBodyHolder = () => {
|
33
40
|
const { emptyBody, innerRect } = this.createEmptyBodyRender(bodyRender, bodyLimitRect);
|
34
41
|
pageBodyRender = emptyBody;
|
35
42
|
bodyInnerLimitRect = innerRect;
|
36
43
|
bodyArray.push(pageBodyRender);
|
37
44
|
};
|
38
|
-
|
45
|
+
|
46
|
+
const appendToBody = (item: BlockContentRenderObject) => {
|
39
47
|
item.rect.y = bodyInnerLimitRect.height + item.margin.top;
|
40
48
|
pageBodyRender.addChild(item);
|
41
49
|
bodyInnerLimitRect.height += item.rect.height + item.margin.top + item.margin.bottom;
|
@@ -46,8 +54,10 @@ export class ElementRenderCut {
|
|
46
54
|
createBodyHolder();
|
47
55
|
}
|
48
56
|
};
|
57
|
+
|
58
|
+
|
49
59
|
let i = 0;
|
50
|
-
let cloneBlockContentRender = bodyRender.getChild(i);
|
60
|
+
let cloneBlockContentRender: null | BlockContentRenderObject = bodyRender.getChild(i) as BlockContentRenderObject;
|
51
61
|
while (cloneBlockContentRender) {
|
52
62
|
if (bodyInnerLimitRect.maxHeight - bodyInnerLimitRect.height - cloneBlockContentRender.rect.height - cloneBlockContentRender.margin.bottom - cloneBlockContentRender.margin.top < 0) {
|
53
63
|
//限制的外框尺寸
|
@@ -60,19 +70,18 @@ export class ElementRenderCut {
|
|
60
70
|
appendToBody(cutRenderObject);
|
61
71
|
}
|
62
72
|
createBodyHolder();
|
63
|
-
}
|
64
|
-
else {
|
73
|
+
} else {
|
65
74
|
appendToBody(cloneBlockContentRender);
|
66
75
|
if (++i < bodyRender.length) {
|
67
|
-
cloneBlockContentRender = bodyRender.getChild(i);
|
68
|
-
}
|
69
|
-
else {
|
76
|
+
cloneBlockContentRender = bodyRender.getChild(i) as BlockContentRenderObject;
|
77
|
+
} else {
|
70
78
|
cloneBlockContentRender = null;
|
71
79
|
}
|
72
80
|
}
|
73
81
|
}
|
74
|
-
|
75
|
-
|
82
|
+
|
83
|
+
const docPages: Array<DocumentRenderObject> = [];
|
84
|
+
let pageY: number = this.options.docSpace;
|
76
85
|
for (let i = 0; i < bodyArray.length; i++) {
|
77
86
|
const body = bodyArray[i];
|
78
87
|
const documentRender = documentElement.createRenderObject(this.options);
|
@@ -94,7 +103,7 @@ export class ElementRenderCut {
|
|
94
103
|
documentRender.addChild(cloneFooterRender);
|
95
104
|
//审阅模式,添加审阅窗口
|
96
105
|
if (this.options.showReviewWindow && commentsRender) {
|
97
|
-
const commentsContainer = commentsRender.element.createRenderObject(this.options, this.renderContext);
|
106
|
+
const commentsContainer = commentsRender.element.createRenderObject(this.options, this.renderContext) as CommsContainerRenderObject;
|
98
107
|
commentsContainer.padding.top = bodyMarginTop;
|
99
108
|
commentsContainer.rect.height = documentRender.rect.height;
|
100
109
|
documentRender.addChild(commentsContainer);
|
@@ -104,20 +113,22 @@ export class ElementRenderCut {
|
|
104
113
|
}
|
105
114
|
return docPages;
|
106
115
|
}
|
107
|
-
|
116
|
+
|
117
|
+
private checkPageBreak(item: RenderObject): boolean {
|
108
118
|
if (item.element && item.element.type === 'p') {
|
109
|
-
const p = item.element;
|
119
|
+
const p = item.element as ParagraphElement;
|
110
120
|
if (p.props.pageBreak) {
|
111
121
|
return true;
|
112
122
|
}
|
113
123
|
}
|
114
124
|
return false;
|
115
125
|
}
|
116
|
-
|
117
|
-
|
118
|
-
const
|
126
|
+
|
127
|
+
getFullViewDocRender(documentRender: DocumentRenderObject, documentElement: DocumentElement): Array<DocumentRenderObject> {
|
128
|
+
const commentsRender = documentRender.getChild(3) as CommsContainerRenderObject;
|
129
|
+
const commentsContainer = commentsRender.element.createRenderObject(this.options, this.renderContext) as CommsContainerRenderObject;
|
119
130
|
documentRender.rect.height -= commentsContainer.rect.height;
|
120
|
-
const bodyRender = documentRender.getChild(1);
|
131
|
+
const bodyRender = documentRender.getChild(1) as DocumentBodyRenderObject;
|
121
132
|
if (this.options.showReviewWindow) {
|
122
133
|
documentRender.removeChild(commentsRender);
|
123
134
|
documentRender.addChild(commentsContainer);
|
@@ -126,10 +137,11 @@ export class ElementRenderCut {
|
|
126
137
|
commentsContainer.rect.x = documentRender.rect.x + documentRender.rect.width;
|
127
138
|
documentRender.rect.width += this.options.reviewWindowWidth;
|
128
139
|
}
|
129
|
-
return [documentRender]
|
140
|
+
return [documentRender as DocumentRenderObject]
|
130
141
|
}
|
131
|
-
|
132
|
-
|
142
|
+
|
143
|
+
createEmptyBodyRender(bodyRender: DocumentBodyRenderObject, limitRect: Rect): { emptyBody: DocumentBodyRenderObject, innerRect: Rect & { prevMargin: number } } {
|
144
|
+
const pageBodyRender = bodyRender.element.createRenderObject(this.options, this.renderContext) as DocumentBodyRenderObject;
|
133
145
|
ElementUtil.setBlockElementLimitSize(pageBodyRender, limitRect);
|
134
146
|
const bodyInnerLimitRect = pageBodyRender.getInnnerRect();
|
135
147
|
if (this.options.fullPageView) {
|
@@ -137,21 +149,22 @@ export class ElementRenderCut {
|
|
137
149
|
}
|
138
150
|
return { emptyBody: pageBodyRender, innerRect: { ...bodyInnerLimitRect, prevMargin: 0 } };
|
139
151
|
}
|
152
|
+
|
140
153
|
/**
|
141
154
|
* 切割渲染元素
|
142
155
|
* @param render 被切割的对象
|
143
|
-
* @param limitHeight
|
144
|
-
* @param addFunc
|
145
|
-
* @returns
|
156
|
+
* @param limitHeight
|
157
|
+
* @param addFunc
|
158
|
+
* @returns
|
146
159
|
*/
|
147
|
-
cutRenderItem(render, limitHeight) {
|
160
|
+
cutRenderItem(render: BlockContentRenderObject, limitHeight: number): BlockContentRenderObject | null {
|
148
161
|
if (render instanceof TableRowRenderObject) {
|
149
162
|
return this.cutRowRenderItem(render, limitHeight);
|
150
163
|
}
|
151
164
|
if (render instanceof TableRenderObject) {
|
152
165
|
return this.cutTable(render, limitHeight);
|
153
166
|
}
|
154
|
-
const cloneRender = render.element.createRenderObject(this.options, this.renderContext);
|
167
|
+
const cloneRender = render.element.createRenderObject(this.options, this.renderContext) as MuiltBlockLineRenderObject;
|
155
168
|
cloneRender.setRenderWidth(render.rect.width);
|
156
169
|
if (render instanceof MuiltBlockLineRenderObject) {
|
157
170
|
let sumHeight = 0;
|
@@ -172,16 +185,13 @@ export class ElementRenderCut {
|
|
172
185
|
cloneRender.addChild(cutRenderObject);
|
173
186
|
sumHeight += cutRenderObject.rect.height;
|
174
187
|
blockLine = children[++j];
|
175
|
-
}
|
176
|
-
else {
|
188
|
+
} else {
|
177
189
|
break;
|
178
190
|
}
|
179
|
-
}
|
180
|
-
else {
|
191
|
+
} else {
|
181
192
|
break;
|
182
193
|
}
|
183
|
-
}
|
184
|
-
else {
|
194
|
+
} else {
|
185
195
|
render.removeChild(blockLine);
|
186
196
|
cloneRender.addChild(blockLine);
|
187
197
|
sumHeight += blockLine.rect.height;
|
@@ -192,24 +202,23 @@ export class ElementRenderCut {
|
|
192
202
|
ElementUtil.remeasure(render);
|
193
203
|
if (cloneRender.length === 0) {
|
194
204
|
return null;
|
195
|
-
}
|
196
|
-
else {
|
205
|
+
} else {
|
197
206
|
return cloneRender;
|
198
207
|
}
|
199
|
-
}
|
200
|
-
else {
|
208
|
+
} else {
|
201
209
|
throw new Error('未实现');
|
202
210
|
}
|
203
211
|
}
|
212
|
+
|
204
213
|
/**
|
205
214
|
* 切割渲染元素
|
206
215
|
* @param tbRender 被切割的对象
|
207
|
-
* @param limitHeight
|
208
|
-
* @param addFunc
|
209
|
-
* @returns
|
216
|
+
* @param limitHeight
|
217
|
+
* @param addFunc
|
218
|
+
* @returns
|
210
219
|
*/
|
211
|
-
cutTable(tbRender, limitHeight) {
|
212
|
-
const cloneTbRender = tbRender.element.createRenderObject(this.options, this.renderContext);
|
220
|
+
cutTable(tbRender: TableRenderObject, limitHeight: number): BlockContentRenderObject | null {
|
221
|
+
const cloneTbRender = tbRender.element.createRenderObject(this.options, this.renderContext) as TableRenderObject;
|
213
222
|
cloneTbRender.setRenderWidth(tbRender.rect.width);
|
214
223
|
let sumHeight = 0;
|
215
224
|
const rows = [...tbRender.getItems()];
|
@@ -223,7 +232,7 @@ export class ElementRenderCut {
|
|
223
232
|
const copyHeaderRows = headerRows.map(item => item.clone());
|
224
233
|
//获取最后一个截断行,需要根据截断行判断最后一个截断的行位置
|
225
234
|
const cutOffRows = rows.filter(row => limitHeight >= row.rect.y && limitHeight <= row.rect.y + row.rect.height)
|
226
|
-
.map((row) => ({ rowIndex: row.element.getIndex(), row }))
|
235
|
+
.map((row) => ({ rowIndex: (<TableRowElement>row.element).getIndex(), row }))
|
227
236
|
.sort((first, second) => second.rowIndex - first.rowIndex);
|
228
237
|
if (cutOffRows.length === 0) {
|
229
238
|
throw new Error('无法获取截断行');
|
@@ -231,7 +240,7 @@ export class ElementRenderCut {
|
|
231
240
|
const joinRow = cutOffRows[0].row;
|
232
241
|
let j = 0;
|
233
242
|
let currRow = rows[j];
|
234
|
-
const cutRows = [];
|
243
|
+
const cutRows: Array<TableRowRenderObject> = [];
|
235
244
|
while (currRow) {
|
236
245
|
const rowContentHeight = this.getBlockLineHeight(currRow);
|
237
246
|
if (rowContentHeight + sumHeight > limitHeight) {
|
@@ -240,7 +249,7 @@ export class ElementRenderCut {
|
|
240
249
|
const availHeight = limitHeight - sumHeight;
|
241
250
|
//限制的内框尺寸
|
242
251
|
const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(tbRender, availHeight);
|
243
|
-
const cutRow = this.cutRowRenderItem(currRow, limitRenderInnterHeight);
|
252
|
+
const cutRow = this.cutRowRenderItem(currRow, limitRenderInnterHeight) as TableRowRenderObject;
|
244
253
|
if (cutRow) {
|
245
254
|
cloneTbRender.addChild(cutRow);
|
246
255
|
sumHeight += cutRow.rect.height;
|
@@ -249,16 +258,13 @@ export class ElementRenderCut {
|
|
249
258
|
break;
|
250
259
|
}
|
251
260
|
currRow = rows[++j];
|
252
|
-
}
|
253
|
-
else {
|
261
|
+
} else {
|
254
262
|
break;
|
255
263
|
}
|
256
|
-
}
|
257
|
-
else {
|
264
|
+
} else {
|
258
265
|
break;
|
259
266
|
}
|
260
|
-
}
|
261
|
-
else {
|
267
|
+
} else {
|
262
268
|
tbRender.removeChild(currRow);
|
263
269
|
cloneTbRender.addChild(currRow);
|
264
270
|
sumHeight += currRow.rect.height;
|
@@ -269,25 +275,25 @@ export class ElementRenderCut {
|
|
269
275
|
ElementUtil.remeasure(cloneTbRender);
|
270
276
|
//存在跨页需要重复显示的行头,则需要重新放置行头
|
271
277
|
if (copyHeaderRows.length) {
|
272
|
-
copyHeaderRows.forEach((r, i) => tbRender.insertChild(r, i))
|
278
|
+
copyHeaderRows.forEach((r, i) => tbRender.insertChild(r, i))
|
273
279
|
}
|
274
280
|
ElementUtil.remeasure(tbRender);
|
275
281
|
if (cloneTbRender.length === 0) {
|
276
282
|
return null;
|
277
|
-
}
|
278
|
-
else {
|
283
|
+
} else {
|
279
284
|
return cloneTbRender;
|
280
285
|
}
|
281
286
|
}
|
282
|
-
|
287
|
+
|
288
|
+
cutRowRenderItem(render: TableRowRenderObject, limitHeight: number): TableRowRenderObject | null {
|
283
289
|
if (render.element.props.minHeight > 0 && render.rect.height > limitHeight) {
|
284
290
|
return null;
|
285
291
|
}
|
286
|
-
const cloneRowRender = render.element.createRenderObject();
|
292
|
+
const cloneRowRender = render.element.createRenderObject() as TableRowRenderObject;
|
287
293
|
cloneRowRender.rect.width = render.rect.width;
|
288
294
|
cloneRowRender.rect.maxWidth = render.rect.height;
|
289
|
-
const cellRenders = [...render.getItems()]
|
290
|
-
const cutCellRenders = [];
|
295
|
+
const cellRenders = [...render.getItems()] as Array<TableCellRenderObject>;
|
296
|
+
const cutCellRenders: Array<RenderObject | null> = [];
|
291
297
|
for (let i = 0; i < cellRenders.length; i++) {
|
292
298
|
const cellRender = cellRenders[i];
|
293
299
|
if (cellRender.rect.height > limitHeight) {
|
@@ -297,14 +303,12 @@ export class ElementRenderCut {
|
|
297
303
|
const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(cellRender, availHeight);
|
298
304
|
const cutCellRender = this.cutRenderItem(cellRender, limitRenderInnterHeight);
|
299
305
|
if (cutCellRender) {
|
300
|
-
cutCellRenders.push(cutCellRender)
|
306
|
+
cutCellRenders.push(cutCellRender)
|
307
|
+
} else {
|
308
|
+
cutCellRenders.push(null)
|
301
309
|
}
|
302
|
-
|
303
|
-
|
304
|
-
}
|
305
|
-
}
|
306
|
-
else {
|
307
|
-
const cloneCellRender = cellRender;
|
310
|
+
} else {
|
311
|
+
const cloneCellRender = cellRender as BlockLineRectRenderObject;
|
308
312
|
render.removeChild(cellRender);
|
309
313
|
cutCellRenders.push(cloneCellRender);
|
310
314
|
}
|
@@ -312,13 +316,12 @@ export class ElementRenderCut {
|
|
312
316
|
ElementUtil.remeasure(render);
|
313
317
|
if (cutCellRenders.filter(item => item).length === 0) {
|
314
318
|
return null;
|
315
|
-
}
|
316
|
-
else {
|
319
|
+
} else {
|
317
320
|
//补齐单元格
|
318
321
|
for (let i = 0; i < cutCellRenders.length; i++) {
|
319
|
-
let cellRender = cutCellRenders[i];
|
322
|
+
let cellRender = cutCellRenders[i] as TableCellRenderObject;
|
320
323
|
if (!cellRender) {
|
321
|
-
cellRender = cellRenders[i].clone();
|
324
|
+
cellRender = cellRenders[i].clone() as TableCellRenderObject;
|
322
325
|
ElementUtil.remeasure(cellRender);
|
323
326
|
}
|
324
327
|
cloneRowRender.addChild(cellRender);
|
@@ -329,19 +332,19 @@ export class ElementRenderCut {
|
|
329
332
|
}
|
330
333
|
/**
|
331
334
|
* 修复->已经截断的合并单元格要向下移动到合适的位置
|
332
|
-
* @param tbRender
|
333
|
-
* @param cutRows
|
334
|
-
* @returns
|
335
|
+
* @param tbRender
|
336
|
+
* @param cutRows
|
337
|
+
* @returns
|
335
338
|
*/
|
336
|
-
fixCutTable(tbRender, cutRows) {
|
339
|
+
private fixCutTable(tbRender: TableRenderObject, cutRows: Array<TableRowRenderObject>): void {
|
337
340
|
if (!cutRows.length) {
|
338
341
|
return;
|
339
342
|
}
|
340
|
-
const tbEle = tbRender.element;
|
341
|
-
const belowMergeRows = new Set();
|
343
|
+
const tbEle = tbRender.element as TableElement;
|
344
|
+
const belowMergeRows = new Set<TableRowRenderObject>();
|
342
345
|
for (let i = 0; i < tbRender.length; i++) {
|
343
|
-
const row = tbRender.getChild(i);
|
344
|
-
const nextRow = tbRender.getChild(i + 1);
|
346
|
+
const row = tbRender.getChild(i) as TableRowRenderObject;
|
347
|
+
const nextRow = tbRender.getChild(i + 1) as TableRowRenderObject;
|
345
348
|
if (!nextRow) {
|
346
349
|
break;
|
347
350
|
}
|
@@ -355,8 +358,8 @@ export class ElementRenderCut {
|
|
355
358
|
break;
|
356
359
|
}
|
357
360
|
for (let j = 0; j < row.length; j++) {
|
358
|
-
const cell = row.getChild(j);
|
359
|
-
const cellEle = cell.element;
|
361
|
+
const cell = row.getChild(j) as TableCellRenderObject;
|
362
|
+
const cellEle = cell.element as TableCellElement;
|
360
363
|
const colIndex = cellEle.getIndex();
|
361
364
|
if (!this.existsCellRender(nextRow, colIndex)) {
|
362
365
|
const insertColIndex = this.getRowInsertCellIndex(cell, nextRow);
|
@@ -379,11 +382,12 @@ export class ElementRenderCut {
|
|
379
382
|
ElementUtil.remeasure(tbRender);
|
380
383
|
}
|
381
384
|
}
|
385
|
+
|
382
386
|
/**
|
383
387
|
* 校验当前是否是一个完整的行,没有Null单元格,检查当前是否还需要向下合并
|
384
|
-
* @param row
|
388
|
+
* @param row
|
385
389
|
*/
|
386
|
-
checkFullRow(row) {
|
390
|
+
private checkFullRow(row: TableRowRenderObject): boolean {
|
387
391
|
let x = 0;
|
388
392
|
for (let i = 0; i < row.length; i++) {
|
389
393
|
const cell = row.getChild(i);
|
@@ -394,17 +398,19 @@ export class ElementRenderCut {
|
|
394
398
|
}
|
395
399
|
return x === row.rect.width;
|
396
400
|
}
|
397
|
-
|
401
|
+
|
402
|
+
private existsCellRender(rowRender: TableRowRenderObject, cellIndex: number): boolean {
|
398
403
|
for (let i = 0; i < rowRender.length; i++) {
|
399
|
-
const cellRender = rowRender.getChild(i);
|
400
|
-
const cellEle = cellRender.element;
|
404
|
+
const cellRender = rowRender.getChild(i) as TableCellRenderObject;
|
405
|
+
const cellEle = cellRender.element as TableCellElement;
|
401
406
|
if (cellEle.getIndex() === cellIndex) {
|
402
407
|
return true;
|
403
408
|
}
|
404
409
|
}
|
405
410
|
return false;
|
406
411
|
}
|
407
|
-
|
412
|
+
|
413
|
+
private getBlockLineHeight(render: RenderObject): number {
|
408
414
|
if (render instanceof TableRowRenderObject) {
|
409
415
|
let maxCellHeight = 0;
|
410
416
|
for (let i = 0; i < render.length; i++) {
|
@@ -417,9 +423,11 @@ export class ElementRenderCut {
|
|
417
423
|
}
|
418
424
|
return render.rect.height;
|
419
425
|
}
|
420
|
-
|
426
|
+
|
427
|
+
|
428
|
+
getRowInsertCellIndex(sourceCell: TableCellRenderObject, destRow: TableRowRenderObject): number {
|
421
429
|
for (let i = 0; i < destRow.length; i++) {
|
422
|
-
const cell = destRow.getChild(i);
|
430
|
+
const cell = destRow.getChild(i) as TableCellRenderObject;
|
423
431
|
const rect = cell.rect;
|
424
432
|
if (sourceCell.rect.x < rect.x) {
|
425
433
|
return i;
|
@@ -431,19 +439,18 @@ export class ElementRenderCut {
|
|
431
439
|
}
|
432
440
|
return -1;
|
433
441
|
}
|
434
|
-
|
435
|
-
|
442
|
+
|
443
|
+
private getHeaderRows(tb: TableRenderObject): Array<TableRowRenderObject> {
|
444
|
+
const rows: Array<TableRowRenderObject> = [];
|
436
445
|
for (let i = 0; i < tb.length; i++) {
|
437
|
-
const rowRender = tb.getChild(i);
|
438
|
-
const rowEle = rowRender.element;
|
446
|
+
const rowRender = tb.getChild(i) as TableRowRenderObject;
|
447
|
+
const rowEle = rowRender.element as TableRowElement;
|
439
448
|
if (rowEle.props.headerRow) {
|
440
449
|
rows.push(rowRender);
|
441
|
-
}
|
442
|
-
else {
|
450
|
+
} else {
|
443
451
|
break;
|
444
452
|
}
|
445
453
|
}
|
446
454
|
return rows;
|
447
455
|
}
|
448
456
|
}
|
449
|
-
//# sourceMappingURL=element-render-cut.js.map
|