@hailin-zheng/editor-core 2.1.19 → 2.1.20
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/index-cjs.js +273 -1077
- package/index-cjs.js.map +1 -1
- package/index.js +270 -1078
- package/index.js.map +1 -1
- package/med_editor/framework/document-paint.d.ts +0 -2
- package/med_editor/framework/element-define.d.ts +1 -1
- package/med_editor/framework/element-props.d.ts +8 -0
- package/med_editor/framework/impl/checkbox/checkbox-impl.d.ts +2 -3
- package/med_editor/framework/impl/comments/comment-content-impl.d.ts +1 -2
- package/med_editor/framework/impl/comments/comment-element-impl.d.ts +1 -2
- package/med_editor/framework/impl/comments/comments-container-impl.d.ts +2 -6
- package/med_editor/framework/impl/comments/validate-msg-impl.d.ts +1 -2
- package/med_editor/framework/impl/data-element/data-decorate-impl.d.ts +1 -2
- package/med_editor/framework/impl/data-element/data-element-barcode.d.ts +2 -5
- package/med_editor/framework/impl/data-element/data-element-base-impl.d.ts +0 -1
- package/med_editor/framework/impl/data-element/data-element-check-impl.d.ts +1 -2
- package/med_editor/framework/impl/data-element/data-element-group-impl.d.ts +1 -2
- package/med_editor/framework/impl/data-element/data-element-image-impl.d.ts +2 -5
- package/med_editor/framework/impl/decorate/fill-null-space-imple.d.ts +1 -2
- package/med_editor/framework/impl/document/doc-body-impl.d.ts +1 -2
- package/med_editor/framework/impl/document/doc-body-part-impl.d.ts +1 -2
- package/med_editor/framework/impl/document/doc-container-impl.d.ts +1 -2
- package/med_editor/framework/impl/document/doc-footer-impl.d.ts +1 -2
- package/med_editor/framework/impl/document/doc-header-impl.d.ts +1 -2
- package/med_editor/framework/impl/document/doc-impl.d.ts +1 -2
- package/med_editor/framework/impl/index.d.ts +1 -0
- package/med_editor/framework/impl/media-formula/menstrual-history.d.ts +1 -2
- package/med_editor/framework/impl/media-formula/permanent-teeth.d.ts +1 -2
- package/med_editor/framework/impl/paragraph/p-impl.d.ts +0 -2
- package/med_editor/framework/impl/picture/RectEle.d.ts +1 -6
- package/med_editor/framework/impl/picture/image-impl.d.ts +2 -5
- package/med_editor/framework/impl/radio/radio-impl.d.ts +1 -2
- package/med_editor/framework/impl/svg/svg-impl.d.ts +20 -0
- package/med_editor/framework/impl/symbol/br-symbol-impl.d.ts +1 -2
- package/med_editor/framework/impl/symbol/p-symbol-impl.d.ts +1 -2
- package/med_editor/framework/impl/symbol/page-br-symbol-impl.d.ts +1 -2
- package/med_editor/framework/impl/symbol/tab-symbol-impl.d.ts +1 -2
- package/med_editor/framework/impl/table/table-cell-impl.d.ts +1 -2
- package/med_editor/framework/impl/table/table-impl.d.ts +1 -2
- package/med_editor/framework/impl/table/table-row-impl.d.ts +1 -2
- package/med_editor/framework/impl/text/text-impl.d.ts +1 -2
- package/med_editor/framework/impl/text/track-run-impl.d.ts +1 -2
- package/med_editor/framework/render-define.d.ts +0 -2
- package/package.json +1 -1
package/index.js
CHANGED
@@ -246,8 +246,6 @@ class RenderObject {
|
|
246
246
|
this.margin = new MarginProps();
|
247
247
|
this.padding = new PaddingProps();
|
248
248
|
}
|
249
|
-
pagePaintCompleted(e) {
|
250
|
-
}
|
251
249
|
destroy() {
|
252
250
|
//this.parent = null;
|
253
251
|
//this.margin = null;
|
@@ -2223,6 +2221,32 @@ class PictureProps extends INotifyPropertyChanged {
|
|
2223
2221
|
return props;
|
2224
2222
|
}
|
2225
2223
|
}
|
2224
|
+
class SVGProps extends INotifyPropertyChanged {
|
2225
|
+
title;
|
2226
|
+
width = 5;
|
2227
|
+
height = 5;
|
2228
|
+
value;
|
2229
|
+
clone(dest) {
|
2230
|
+
const clone = dest ?? new SVGProps();
|
2231
|
+
super.cloneAttachedProperty(clone);
|
2232
|
+
clone.width = this.width;
|
2233
|
+
clone.height = this.height;
|
2234
|
+
clone.value = this.value;
|
2235
|
+
clone.title = this.title;
|
2236
|
+
return clone;
|
2237
|
+
}
|
2238
|
+
getSerializeProps(viewOptions) {
|
2239
|
+
const props = {
|
2240
|
+
width: this.width,
|
2241
|
+
height: this.height,
|
2242
|
+
value: this.value,
|
2243
|
+
};
|
2244
|
+
if (this.title) {
|
2245
|
+
props['title'] = this.title;
|
2246
|
+
}
|
2247
|
+
return props;
|
2248
|
+
}
|
2249
|
+
}
|
2226
2250
|
class DataDecorateProps extends INotifyPropertyChanged {
|
2227
2251
|
content;
|
2228
2252
|
size;
|
@@ -2777,15 +2801,7 @@ class CommsContainerElement extends BlockContainerElement {
|
|
2777
2801
|
class CommsContainerRenderObject extends BlockContainerRenderObject {
|
2778
2802
|
//批注内容是否已经重组,只要重新绘制的时候组合一次即可
|
2779
2803
|
isMeasureComm;
|
2780
|
-
selectedSet;
|
2781
|
-
commentRangeStatus = [];
|
2782
2804
|
commsMarks = [];
|
2783
|
-
render(e) {
|
2784
|
-
if (this.rect.height === 0) {
|
2785
|
-
return;
|
2786
|
-
}
|
2787
|
-
e.render.contentContext.strokeRect(e.position.x, e.position.y, this.rect.width, this.rect.height, 'black', 0.5);
|
2788
|
-
}
|
2789
2805
|
clone() {
|
2790
2806
|
const clone = new CommsContainerRenderObject(this.element);
|
2791
2807
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
@@ -2866,9 +2882,6 @@ class DataDecorateElement extends LeafElement {
|
|
2866
2882
|
}
|
2867
2883
|
}
|
2868
2884
|
class DataDecorateRenderObject extends LeafRenderObject {
|
2869
|
-
render(e) {
|
2870
|
-
this.renderDecorRect(e.render, e.position);
|
2871
|
-
}
|
2872
2885
|
renderDecorRect(ctx, position) {
|
2873
2886
|
if (ctx.drawMode === 'print') {
|
2874
2887
|
return;
|
@@ -3078,10 +3091,6 @@ class ParagraphElement extends BlockContentElement {
|
|
3078
3091
|
}
|
3079
3092
|
}
|
3080
3093
|
class ParagraphRenderObject extends MuiltBlockLineRenderObject {
|
3081
|
-
render(e) {
|
3082
|
-
e.nextRender();
|
3083
|
-
this.drawProjectNumber(e.render, e.docCtx.viewOptions, e);
|
3084
|
-
}
|
3085
3094
|
/**
|
3086
3095
|
* 绘制项目符号
|
3087
3096
|
*/
|
@@ -3159,8 +3168,6 @@ class ParagraphLineRectRenderObject extends BlockLineRectRenderObject {
|
|
3159
3168
|
baseTopLine = 0;
|
3160
3169
|
baseBottomLine = 0;
|
3161
3170
|
startX = 0;
|
3162
|
-
render(e) {
|
3163
|
-
}
|
3164
3171
|
clone() {
|
3165
3172
|
const cloneRender = new ParagraphLineRectRenderObject(this.element);
|
3166
3173
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -3362,21 +3369,6 @@ class DocumentRenderObject extends BlockContainerRenderObject {
|
|
3362
3369
|
}
|
3363
3370
|
headerLine;
|
3364
3371
|
footerLine;
|
3365
|
-
render(e) {
|
3366
|
-
const { render, position, docCtx: { viewOptions } } = e;
|
3367
|
-
const { width: docWidth, height: docHeight } = viewOptions.docPageSettings;
|
3368
|
-
render.overlaysContext.fillRect(position.x, position.y, docWidth, this.rect.height, 'white', 5, 'black');
|
3369
|
-
e.render.tran(() => {
|
3370
|
-
e.render.contentContext.ctx.fillStyle = e.docCtx.viewOptions.defaultColor;
|
3371
|
-
this.checkPrintMode(e);
|
3372
|
-
e.nextRender();
|
3373
|
-
this.drawCopyRight(viewOptions, render, position);
|
3374
|
-
this.drawDocPageNum(render, viewOptions, position);
|
3375
|
-
//绘制文档边距线
|
3376
|
-
this.drawMarginLine(position, render, docWidth, docHeight);
|
3377
|
-
this.drawWatermark(render, viewOptions, position);
|
3378
|
-
});
|
3379
|
-
}
|
3380
3372
|
/**
|
3381
3373
|
* 打印模式检查
|
3382
3374
|
* 如果是续打模式,需要进行裁剪打印范围,页眉页脚都不需要打印
|
@@ -3812,45 +3804,6 @@ function getCurrOptions(ele) {
|
|
3812
3804
|
return doc?.viewOptions;
|
3813
3805
|
}
|
3814
3806
|
class DataElementRenderObject extends InlineGroupRenderObject {
|
3815
|
-
render(e) {
|
3816
|
-
const { render, position, docCtx: { viewOptions } } = e;
|
3817
|
-
this.paintPos = e.position;
|
3818
|
-
//数据元不打印
|
3819
|
-
if (!this.element.props.printable && render.drawMode === 'print') {
|
3820
|
-
return;
|
3821
|
-
}
|
3822
|
-
render.contentContext.tran(() => {
|
3823
|
-
//绘制数据元区域底色
|
3824
|
-
let bgColor = '';
|
3825
|
-
if (this.element.isMouseenter) {
|
3826
|
-
bgColor = this.element.props.editable ? viewOptions.dataEleOverlaysColor : viewOptions.dataEleReadOnlyOverlayColor;
|
3827
|
-
}
|
3828
|
-
if (this.element.isFocused) {
|
3829
|
-
bgColor = e.docCtx.viewOptions.dataEleFocusedBgColor;
|
3830
|
-
}
|
3831
|
-
if (this.element.errorTip) {
|
3832
|
-
bgColor = viewOptions.dataEleErrorBgColor;
|
3833
|
-
}
|
3834
|
-
if (bgColor) {
|
3835
|
-
render.contentContext.fillRect(position.x, position.y, this.rect.width, this.rect.height, bgColor);
|
3836
|
-
}
|
3837
|
-
if (this.element.props.secretBrowse && viewOptions.secretBrowse) {
|
3838
|
-
render.contentContext.ctx.filter = "blur(10px)";
|
3839
|
-
}
|
3840
|
-
if (this.element.props.underline) {
|
3841
|
-
const y = position.y + 2 + this.rect.height;
|
3842
|
-
render.contentContext.strokeLines([{ x: position.x, y }, {
|
3843
|
-
x: position.x + this.rect.width,
|
3844
|
-
y
|
3845
|
-
}], 1, '#595959');
|
3846
|
-
}
|
3847
|
-
e.nextRender();
|
3848
|
-
this.drawCaption(e);
|
3849
|
-
});
|
3850
|
-
e.render.onRenderCompleted.subscribe(() => {
|
3851
|
-
drawDecorator(e, this);
|
3852
|
-
});
|
3853
|
-
}
|
3854
3807
|
exportHTML(event) {
|
3855
3808
|
const node = super.exportHTML(event);
|
3856
3809
|
exportDecoratorHTML(event, this);
|
@@ -4136,15 +4089,6 @@ class DocumentBodyElement extends BlockContainerElement {
|
|
4136
4089
|
}
|
4137
4090
|
}
|
4138
4091
|
class DocumentBodyRenderObject extends MuiltBlockLineRenderObject {
|
4139
|
-
render(e) {
|
4140
|
-
const { render, position } = e;
|
4141
|
-
render.tran(() => {
|
4142
|
-
if (this.element.disableClick && render.drawMode === 'view') {
|
4143
|
-
render.contentContext.setGlobalAlpha(0.5);
|
4144
|
-
}
|
4145
|
-
e.nextRender();
|
4146
|
-
});
|
4147
|
-
}
|
4148
4092
|
clone(cloneData = true) {
|
4149
4093
|
const cloneRender = new DocumentBodyRenderObject(this.element);
|
4150
4094
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -4214,22 +4158,6 @@ class DocumentFooterElement extends BlockContainerElement {
|
|
4214
4158
|
}
|
4215
4159
|
}
|
4216
4160
|
class DocumentFooterRenderObject extends BlockContainerRenderObject {
|
4217
|
-
render(e) {
|
4218
|
-
const { render, position } = e;
|
4219
|
-
render.tran(() => {
|
4220
|
-
//判断页眉是否为输入内容
|
4221
|
-
const isFooterEmpty = ElementUtil.checkEmptyRenderContent(this);
|
4222
|
-
if (this.element.disableClick && render.drawMode === 'view') {
|
4223
|
-
if (isFooterEmpty) {
|
4224
|
-
render.contentContext.setGlobalAlpha(0);
|
4225
|
-
}
|
4226
|
-
else {
|
4227
|
-
render.contentContext.setGlobalAlpha(0.5);
|
4228
|
-
}
|
4229
|
-
}
|
4230
|
-
e.nextRender();
|
4231
|
-
});
|
4232
|
-
}
|
4233
4161
|
clone() {
|
4234
4162
|
const cloneRender = new DocumentFooterRenderObject(this.element);
|
4235
4163
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -4310,27 +4238,6 @@ class DocumentHeaderElement extends BlockContainerElement {
|
|
4310
4238
|
}
|
4311
4239
|
}
|
4312
4240
|
class DocumentHeaderRenderObject extends BlockContainerRenderObject {
|
4313
|
-
render(e) {
|
4314
|
-
const { render, position } = e;
|
4315
|
-
render.tran(() => {
|
4316
|
-
//判断页眉是否为输入内容
|
4317
|
-
const isHeaderEmpty = ElementUtil.checkEmptyRenderContent(this);
|
4318
|
-
//存在输入内容时,绘制页眉-页体分割线
|
4319
|
-
if (!isHeaderEmpty || !this.element.disableClick) {
|
4320
|
-
const headerLineY = this.rect.height;
|
4321
|
-
render.contentContext.drawHoriLine(position.x, position.y + headerLineY, this.rect.width, 'black', 0.5);
|
4322
|
-
}
|
4323
|
-
if (this.element.disableClick && render.drawMode === 'view') {
|
4324
|
-
if (isHeaderEmpty) {
|
4325
|
-
render.contentContext.setGlobalAlpha(0);
|
4326
|
-
}
|
4327
|
-
else {
|
4328
|
-
render.contentContext.setGlobalAlpha(0.5);
|
4329
|
-
}
|
4330
|
-
}
|
4331
|
-
e.nextRender();
|
4332
|
-
});
|
4333
|
-
}
|
4334
4241
|
clone() {
|
4335
4242
|
const cloneRender = new DocumentHeaderRenderObject(this.element);
|
4336
4243
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -4410,13 +4317,6 @@ class PSymbolElement extends LeafElement {
|
|
4410
4317
|
}
|
4411
4318
|
}
|
4412
4319
|
class PSymbolRenderObject extends LeafRenderObject {
|
4413
|
-
render(e) {
|
4414
|
-
const { render, position } = e;
|
4415
|
-
if (render.drawMode === 'print' || !e.docCtx.viewOptions.showParaSymbol) {
|
4416
|
-
return;
|
4417
|
-
}
|
4418
|
-
render.contentContext.drawText('↩', this.element.textProps, position.x, position.y, 20, this.rect.height);
|
4419
|
-
}
|
4420
4320
|
exportHTML(event) {
|
4421
4321
|
if (!event.options.showEnterSymbol || event.mode === 'print') {
|
4422
4322
|
return null;
|
@@ -4529,22 +4429,6 @@ class TableCellElement extends BlockContainerElement {
|
|
4529
4429
|
}
|
4530
4430
|
}
|
4531
4431
|
class TableCellRenderObject extends InlineMuiltBlockLineRenderObject {
|
4532
|
-
render(e) {
|
4533
|
-
const { render, position } = e;
|
4534
|
-
render.tran(() => {
|
4535
|
-
render.contentContext.clip(position.x, position.y, this.rect.width, this.rect.height);
|
4536
|
-
const { hMerge, vMerge, backgroundColor, diagonal } = this.element.props;
|
4537
|
-
if (hMerge === 'continue' || vMerge === 'continue') {
|
4538
|
-
render.contentContext.setGlobalAlpha(0);
|
4539
|
-
render.overlaysContext.setGlobalAlpha(0);
|
4540
|
-
}
|
4541
|
-
if (backgroundColor && this.rect.width && this.rect.height) {
|
4542
|
-
render.contentContext.fillRect(position.x, position.y, this.rect.width, this.rect.height, backgroundColor);
|
4543
|
-
}
|
4544
|
-
this.renderDiagonal(render, diagonal, position);
|
4545
|
-
e.nextRender();
|
4546
|
-
});
|
4547
|
-
}
|
4548
4432
|
/**
|
4549
4433
|
* 绘制对角线
|
4550
4434
|
* @private
|
@@ -4713,8 +4597,6 @@ class TableRowRenderObject extends MuiltBlockLineRenderObject {
|
|
4713
4597
|
remeasureState = true;
|
4714
4598
|
//当前行是否存在合并单元格
|
4715
4599
|
hasMergeCells = undefined;
|
4716
|
-
render(e) {
|
4717
|
-
}
|
4718
4600
|
clone() {
|
4719
4601
|
const cloneRender = new TableRowRenderObject(this.element);
|
4720
4602
|
cloneRender.remeasureState = this.remeasureState;
|
@@ -4743,17 +4625,6 @@ class DocumentContainerRender extends BlockContainerRenderObject {
|
|
4743
4625
|
constructor() {
|
4744
4626
|
super(null);
|
4745
4627
|
}
|
4746
|
-
render(e) {
|
4747
|
-
const { render, nextRender, docCtx: { viewOptions } } = e;
|
4748
|
-
const { viewSettings, docPageSettings, viewBackcolor, scale } = viewOptions;
|
4749
|
-
render.clear();
|
4750
|
-
//render.overlaysContext.fillRect(0, 0, viewSettings.width, viewSettings.height, viewBackcolor);
|
4751
|
-
render.tran(() => {
|
4752
|
-
render.overlaysContext.ctx.scale(scale, scale);
|
4753
|
-
render.contentContext.ctx.scale(scale, scale);
|
4754
|
-
nextRender();
|
4755
|
-
});
|
4756
|
-
}
|
4757
4628
|
clone() {
|
4758
4629
|
throw new Error("Method not implemented.");
|
4759
4630
|
}
|
@@ -4870,17 +4741,6 @@ class TextGroupElement extends LeafElement {
|
|
4870
4741
|
}
|
4871
4742
|
class TextGroupRenderObject extends LeafRenderObject {
|
4872
4743
|
textMeasures;
|
4873
|
-
render(e) {
|
4874
|
-
const { render, position } = e;
|
4875
|
-
//null-text不打印
|
4876
|
-
if (render.drawMode === 'print' && this.element.isDecorate) {
|
4877
|
-
return;
|
4878
|
-
}
|
4879
|
-
if (this.element.props.border) {
|
4880
|
-
render.contentContext.strokeRect(position.x, position.y, this.rect.width, this.rect.height);
|
4881
|
-
}
|
4882
|
-
render.contentContext.drawTextUnits(this, position.x, position.y + (this.rect.height - this.element.props.fontSize) / 2);
|
4883
|
-
}
|
4884
4744
|
constructor(element) {
|
4885
4745
|
super(element);
|
4886
4746
|
}
|
@@ -6596,56 +6456,6 @@ class TableRenderObject extends MuiltBlockLineRenderObject {
|
|
6596
6456
|
setRenderWidth(maxWidth) {
|
6597
6457
|
super.setRenderWidth(maxWidth);
|
6598
6458
|
}
|
6599
|
-
render(e) {
|
6600
|
-
const { render, position } = e;
|
6601
|
-
//绘制表格线
|
6602
|
-
const border = this.element.props.border;
|
6603
|
-
if (border === 'none') {
|
6604
|
-
return;
|
6605
|
-
}
|
6606
|
-
const lineDash = border === 'dashed' ? [2, 2] : [];
|
6607
|
-
for (let i = 0; i < this.length; i++) {
|
6608
|
-
const rowRender = this.getChild(i);
|
6609
|
-
const rowPos = { x: rowRender.rect.x + position.x, y: rowRender.rect.y + position.y };
|
6610
|
-
for (let j = 0; j < rowRender.length; j++) {
|
6611
|
-
const cellRender = rowRender.getChild(j);
|
6612
|
-
const cellPos = { x: cellRender.rect.x + rowPos.x, y: cellRender.rect.y + rowPos.y };
|
6613
|
-
//绘制单元格上边框
|
6614
|
-
if (i === 0) {
|
6615
|
-
//ctx.contentContext.fillRect(cellPos.x, cellPos.y, cellRender.rect.width, 1);
|
6616
|
-
render.contentContext.fillLines([{ x: cellPos.x, y: cellPos.y }, {
|
6617
|
-
x: cellPos.x + cellRender.rect.width,
|
6618
|
-
y: cellPos.y
|
6619
|
-
}], 1, '#000', lineDash);
|
6620
|
-
//this.drawLine(ctx, { x: cellPos.x, y: cellPos.y }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y });
|
6621
|
-
}
|
6622
|
-
//绘制左边框
|
6623
|
-
if (j === 0) {
|
6624
|
-
//ctx.contentContext.fillRect(cellPos.x, cellPos.y, 1, cellRender.rect.height);
|
6625
|
-
render.contentContext.fillLines([{ x: cellPos.x, y: cellPos.y }, {
|
6626
|
-
x: cellPos.x,
|
6627
|
-
y: cellPos.y + cellRender.rect.height
|
6628
|
-
}], 1, '#000', lineDash);
|
6629
|
-
//this.drawLine(ctx, { x: cellPos.x, y: cellPos.y }, { x: cellPos.x, y: cellPos.y + cellRender.rect.height });
|
6630
|
-
}
|
6631
|
-
//绘制右边框
|
6632
|
-
//ctx.contentContext.fillRect(cellPos.x + cellRender.rect.width, cellPos.y, 1, cellRender.rect.height);
|
6633
|
-
render.contentContext.fillLines([{
|
6634
|
-
x: cellPos.x + cellRender.rect.width,
|
6635
|
-
y: cellPos.y
|
6636
|
-
}, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height }], 1, '#000', lineDash);
|
6637
|
-
//this.drawLine(ctx, { x: cellPos.x + cellRender.rect.width, y: cellPos.y }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height });
|
6638
|
-
//绘制下边框
|
6639
|
-
//ctx.contentContext.fillRect(cellPos.x, cellPos.y + cellRender.rect.height, cellRender.rect.width, 1);
|
6640
|
-
render.contentContext.fillLines([{
|
6641
|
-
x: cellPos.x,
|
6642
|
-
y: cellPos.y + cellRender.rect.height
|
6643
|
-
}, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height }], 1, '#000', lineDash);
|
6644
|
-
//this.drawLine(ctx, { x: cellPos.x, y: cellPos.y + cellRender.rect.height }, { x: cellPos.x + cellRender.rect.width, y: cellPos.y + cellRender.rect.height });
|
6645
|
-
//cellRender.beginRender(ctx, { x: position.x + cellRender.offsetX, y: position.y + cellRender.offsetY });
|
6646
|
-
}
|
6647
|
-
}
|
6648
|
-
}
|
6649
6459
|
exportTableBorder() {
|
6650
6460
|
//绘制表格线
|
6651
6461
|
const border = this.element.props.border;
|
@@ -6930,10 +6740,7 @@ class CheckBoxFactory extends ElementFactory {
|
|
6930
6740
|
}
|
6931
6741
|
}
|
6932
6742
|
class CheckBoxRenderObject extends LeafRenderObject {
|
6933
|
-
|
6934
|
-
e.render.contentContext.drawCheckBox(e.position.x + 2, e.position.y, this.element.props.size, this.element.props.size, this.element.props.isChecked);
|
6935
|
-
}
|
6936
|
-
clone(cloneData = true) {
|
6743
|
+
clone() {
|
6937
6744
|
const clone = new CheckBoxRenderObject(this.element);
|
6938
6745
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
6939
6746
|
return clone;
|
@@ -7032,34 +6839,6 @@ class CommContentElement extends CommContentBaseElement {
|
|
7032
6839
|
}
|
7033
6840
|
}
|
7034
6841
|
class CommContentRenderObject extends CommContentBaseRenderObject {
|
7035
|
-
render(e) {
|
7036
|
-
let borderColor = this.element.focus ? '#fa8c16' : '#ffd591';
|
7037
|
-
e.render.contentContext.strokeRect(e.position.x, e.position.y, this.rect.width, this.rect.height, borderColor);
|
7038
|
-
e.render.contentContext.fillRect(e.position.x, e.position.y, 8, this.rect.height, '#871400');
|
7039
|
-
const docRender = ElementUtil.getParentRender(this.commMarkRender.render, DocumentRenderObject);
|
7040
|
-
//获取审阅标记的绘制坐标
|
7041
|
-
let commMarkPos = ElementUtil.getRenderAbsolutePaintPos(this.commMarkRender.render, {
|
7042
|
-
x: 0,
|
7043
|
-
y: -e.docCtx.viewOptions.pageOffset.y
|
7044
|
-
});
|
7045
|
-
const commMarkLinePos = ElementUtil.getParaLinePos(this.commMarkRender.render, commMarkPos);
|
7046
|
-
commMarkPos.y = commMarkLinePos.y + 2;
|
7047
|
-
const docRenderPos = ElementUtil.getRenderAbsolutePaintPos(docRender, {
|
7048
|
-
x: 0,
|
7049
|
-
y: -e.docCtx.viewOptions.pageOffset.y
|
7050
|
-
});
|
7051
|
-
const marginLeft = commMarkPos.x - docRenderPos.x - docRender.padding.left;
|
7052
|
-
const marginRight = e.docCtx.viewOptions.docPageSettings.width - marginLeft - docRender.padding.right * 2;
|
7053
|
-
e.render.overlaysContext.drawDashLine([commMarkPos, {
|
7054
|
-
x: commMarkPos.x + marginRight,
|
7055
|
-
y: commMarkPos.y
|
7056
|
-
}], [1, 1], 'red');
|
7057
|
-
e.render.overlaysContext.drawDashLine([{
|
7058
|
-
x: commMarkPos.x + marginRight,
|
7059
|
-
y: commMarkPos.y
|
7060
|
-
}, e.position], [1, 1], 'red');
|
7061
|
-
this.renderTitle(e.render, e.position);
|
7062
|
-
}
|
7063
6842
|
exportHTML(event) {
|
7064
6843
|
const t = super.exportHTML(event);
|
7065
6844
|
t.children = [];
|
@@ -7330,16 +7109,6 @@ class CommentElement extends LeafElement {
|
|
7330
7109
|
}
|
7331
7110
|
}
|
7332
7111
|
class CommentRenderObject extends LeafRenderObject {
|
7333
|
-
//renderPos!: Position;
|
7334
|
-
render(e) {
|
7335
|
-
// if (!e.docCtx.viewOptions.showReviewWindow) {
|
7336
|
-
// return;
|
7337
|
-
// }
|
7338
|
-
// this.renderPos = e.position;
|
7339
|
-
// const paraLinePos = ElementUtil.getParaLinePos(this, {x: e.position.x, y: e.position.y});
|
7340
|
-
// const color = '#ff4d4f';
|
7341
|
-
// e.render.contentContext.fillRect(e.position.x - 1, paraLinePos.y, 2, paraLinePos.height, color)
|
7342
|
-
}
|
7343
7112
|
exportHTML(event) {
|
7344
7113
|
const renderPos = { ...event.relativePagePos };
|
7345
7114
|
const paraLinePos = ElementUtil.getParaLinePos(this, { x: renderPos.x, y: renderPos.y });
|
@@ -7505,31 +7274,6 @@ class ValidateElement extends CommContentBaseElement {
|
|
7505
7274
|
}
|
7506
7275
|
}
|
7507
7276
|
class ValidateRenderObject extends CommContentBaseRenderObject {
|
7508
|
-
render(e) {
|
7509
|
-
let borderColor = this.element.focus ? '#fa8c16' : '#ffd591';
|
7510
|
-
e.render.contentContext.strokeRect(e.position.x, e.position.y, this.rect.width, this.rect.height, borderColor);
|
7511
|
-
e.render.contentContext.fillRect(e.position.x, e.position.y, 8, this.rect.height, '#871400');
|
7512
|
-
const docRender = ElementUtil.getParentRender(this.commMarkRender.render, DocumentRenderObject);
|
7513
|
-
//获取审阅标记的绘制坐标
|
7514
|
-
let commMarkPos = ElementUtil.getRenderAbsolutePaintPos(this.commMarkRender.render, {
|
7515
|
-
x: 0,
|
7516
|
-
y: -e.docCtx.viewOptions.pageOffset.y
|
7517
|
-
});
|
7518
|
-
const commMarkLinePos = ElementUtil.getParaLinePos(this.commMarkRender.render, commMarkPos);
|
7519
|
-
commMarkPos.y = commMarkLinePos.y + 2;
|
7520
|
-
const docRenderPos = ElementUtil.getRenderAbsolutePaintPos(docRender, { x: 0, y: -e.docCtx.viewOptions.pageOffset.y });
|
7521
|
-
const marginLeft = commMarkPos.x - docRenderPos.x - docRender.padding.left;
|
7522
|
-
const marginRight = e.docCtx.viewOptions.docPageSettings.width - marginLeft - docRender.padding.right * 2;
|
7523
|
-
e.render.overlaysContext.drawDashLine([commMarkPos, {
|
7524
|
-
x: commMarkPos.x + marginRight,
|
7525
|
-
y: commMarkPos.y
|
7526
|
-
}], [1, 1], 'red');
|
7527
|
-
e.render.overlaysContext.drawDashLine([{
|
7528
|
-
x: commMarkPos.x + marginRight,
|
7529
|
-
y: commMarkPos.y
|
7530
|
-
}, e.position], [1, 1], 'red');
|
7531
|
-
this.renderTitle(e.render, e.position);
|
7532
|
-
}
|
7533
7277
|
renderTitle(ctx, position) {
|
7534
7278
|
const topPadding = 24;
|
7535
7279
|
const textProps = new TextProps();
|
@@ -8455,40 +8199,11 @@ class DataElementBarcode extends DataElementLeaf {
|
|
8455
8199
|
}
|
8456
8200
|
}
|
8457
8201
|
class DataElementBarcodeRenderObject extends ResizeLeafRenderObject {
|
8458
|
-
render(e) {
|
8459
|
-
// const barcodeEle = this.element as DataElementBarcode;
|
8460
|
-
// barcodeEle.drawBarcode(e.render, e.position);
|
8461
|
-
}
|
8462
8202
|
clone() {
|
8463
8203
|
const clone = new DataElementBarcodeRenderObject(this.element);
|
8464
8204
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
8465
8205
|
return clone;
|
8466
8206
|
}
|
8467
|
-
pagePaintCompleted(e) {
|
8468
|
-
if (this.element.isFocused) {
|
8469
|
-
const { render, position: pos } = e;
|
8470
|
-
const { width, height } = this.rect;
|
8471
|
-
render.contentContext.strokeRect(pos.x, pos.y, this.rect.width, this.rect.height, '#1890ff', 0.5);
|
8472
|
-
this.drawResizeCircle(render, pos.x, pos.y);
|
8473
|
-
this.drawResizeCircle(render, pos.x + width, pos.y);
|
8474
|
-
this.drawResizeCircle(render, pos.x, pos.y + height);
|
8475
|
-
this.drawResizeCircle(render, pos.x + width, pos.y + height);
|
8476
|
-
this.drawResizeCircle(render, pos.x + (Math.floor(width / 2)), pos.y);
|
8477
|
-
this.drawResizeCircle(render, pos.x + (Math.floor(width / 2)), pos.y + height);
|
8478
|
-
this.drawResizeCircle(render, pos.x, pos.y + (Math.floor(height / 2)));
|
8479
|
-
this.drawResizeCircle(render, pos.x + width, pos.y + (Math.floor(height / 2)));
|
8480
|
-
}
|
8481
|
-
}
|
8482
|
-
drawResizeCircle(ctx, x, y) {
|
8483
|
-
const ctxNative = ctx.contentContext.ctx;
|
8484
|
-
ctxNative.save();
|
8485
|
-
ctxNative.fillStyle = '#69c0ff';
|
8486
|
-
ctxNative.beginPath();
|
8487
|
-
ctxNative.arc(x, y, Math.floor(4 / 5 * 4), 0, 2 * Math.PI);
|
8488
|
-
ctxNative.closePath();
|
8489
|
-
ctxNative.fill();
|
8490
|
-
ctxNative.restore();
|
8491
|
-
}
|
8492
8207
|
exportHTML(event) {
|
8493
8208
|
const t = super.exportHTML(event);
|
8494
8209
|
if (this.element.props.type === 'qrcode') {
|
@@ -8653,27 +8368,6 @@ class DataElementCheckRenderObject extends LeafRenderObject {
|
|
8653
8368
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
8654
8369
|
return cloneRender;
|
8655
8370
|
}
|
8656
|
-
render(e) {
|
8657
|
-
const { render, position } = e;
|
8658
|
-
const element = this.element;
|
8659
|
-
if (element.props.drawStateChar) {
|
8660
|
-
const font = `${element.props.size - 2}px 微软雅黑`;
|
8661
|
-
const str = element.props.checked ? element.props.trueChar : element.props.falseChar;
|
8662
|
-
const color = element.props.checked ? element.props.trueStateColor : element.props.falseStateColor;
|
8663
|
-
e.render.contentContext.drawText2(str, font, color, position.x, position.y, element.props.size, element.props.size);
|
8664
|
-
if (element.props.border) {
|
8665
|
-
e.render.contentContext.strokeRect(position.x + 2, position.y, element.props.size, element.props.size);
|
8666
|
-
}
|
8667
|
-
}
|
8668
|
-
else {
|
8669
|
-
if (element.props.multiSelect) {
|
8670
|
-
render.contentContext.drawCheckBox(position.x + 2, position.y, element.props.size, element.props.size, element.props.checked);
|
8671
|
-
}
|
8672
|
-
else {
|
8673
|
-
render.contentContext.drawRadioBox(position.x + 2, position.y, element.props.size, element.props.size, element.props.checked);
|
8674
|
-
}
|
8675
|
-
}
|
8676
|
-
}
|
8677
8371
|
exportHTML(event) {
|
8678
8372
|
const t = super.exportHTML(event);
|
8679
8373
|
const props = this.element.props;
|
@@ -8964,12 +8658,6 @@ class DataElementGroupElement extends InlineGroupInputElement {
|
|
8964
8658
|
}
|
8965
8659
|
}
|
8966
8660
|
class DataElementGroupRenderObject extends InlineGroupRenderObject {
|
8967
|
-
render(e) {
|
8968
|
-
this.paintPos = e.position;
|
8969
|
-
e.render.onRenderCompleted.subscribe(() => {
|
8970
|
-
drawDecorator(e, this);
|
8971
|
-
});
|
8972
|
-
}
|
8973
8661
|
clone() {
|
8974
8662
|
const cloneRender = new DataElementGroupRenderObject(this.element);
|
8975
8663
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -9037,38 +8725,11 @@ class DataElementImage extends DataElementLeaf {
|
|
9037
8725
|
}
|
9038
8726
|
}
|
9039
8727
|
class DataImageRenderObject extends ResizeLeafRenderObject {
|
9040
|
-
render(e) {
|
9041
|
-
}
|
9042
8728
|
clone() {
|
9043
8729
|
const clone = new DataImageRenderObject(this.element);
|
9044
8730
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
9045
8731
|
return clone;
|
9046
8732
|
}
|
9047
|
-
pagePaintCompleted(e) {
|
9048
|
-
if (this.element.isFocused) {
|
9049
|
-
const { render, position: pos } = e;
|
9050
|
-
const { width, height } = this.rect;
|
9051
|
-
render.contentContext.strokeRect(pos.x, pos.y, this.rect.width, this.rect.height, '#1890ff', 0.5);
|
9052
|
-
this.drawResizeCircle(render, pos.x, pos.y);
|
9053
|
-
this.drawResizeCircle(render, pos.x + width, pos.y);
|
9054
|
-
this.drawResizeCircle(render, pos.x, pos.y + height);
|
9055
|
-
this.drawResizeCircle(render, pos.x + width, pos.y + height);
|
9056
|
-
this.drawResizeCircle(render, pos.x + (Math.floor(width / 2)), pos.y);
|
9057
|
-
this.drawResizeCircle(render, pos.x + (Math.floor(width / 2)), pos.y + height);
|
9058
|
-
this.drawResizeCircle(render, pos.x, pos.y + (Math.floor(height / 2)));
|
9059
|
-
this.drawResizeCircle(render, pos.x + width, pos.y + (Math.floor(height / 2)));
|
9060
|
-
}
|
9061
|
-
}
|
9062
|
-
drawResizeCircle(ctx, x, y) {
|
9063
|
-
const ctxNative = ctx.contentContext.ctx;
|
9064
|
-
ctxNative.save();
|
9065
|
-
ctxNative.fillStyle = '#69c0ff';
|
9066
|
-
ctxNative.beginPath();
|
9067
|
-
ctxNative.arc(x, y, Math.floor(4 / 5 * 4), 0, 2 * Math.PI);
|
9068
|
-
ctxNative.closePath();
|
9069
|
-
ctxNative.fill();
|
9070
|
-
ctxNative.restore();
|
9071
|
-
}
|
9072
8733
|
exportHTML(event) {
|
9073
8734
|
const t = super.exportHTML(event);
|
9074
8735
|
t.children = [{
|
@@ -9304,13 +8965,6 @@ class BreakElement extends LeafElement {
|
|
9304
8965
|
}
|
9305
8966
|
}
|
9306
8967
|
class BreakRenderObject extends LeafRenderObject {
|
9307
|
-
render(e) {
|
9308
|
-
const { render, position } = e;
|
9309
|
-
if (render.drawMode === 'print') {
|
9310
|
-
return;
|
9311
|
-
}
|
9312
|
-
render.contentContext.drawText('↓', this.element.textProps, position.x, position.y, 20, this.rect.height);
|
9313
|
-
}
|
9314
8968
|
exportHTML(event) {
|
9315
8969
|
if (!event.options.showEnterSymbol || event.mode === 'print') {
|
9316
8970
|
return null;
|
@@ -9476,8 +9130,6 @@ class FillNullSpaceRenderObject extends LeafRenderObject {
|
|
9476
9130
|
super(null);
|
9477
9131
|
this.disableClick = true;
|
9478
9132
|
}
|
9479
|
-
render(e) {
|
9480
|
-
}
|
9481
9133
|
clone() {
|
9482
9134
|
const clone = new FillNullSpaceRenderObject();
|
9483
9135
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
@@ -9538,11 +9190,6 @@ class DocumentBodyPartElement extends BlockContainerElement {
|
|
9538
9190
|
}
|
9539
9191
|
}
|
9540
9192
|
class DocumentBodyPartRenderObject extends MuiltBlockLineRenderObject {
|
9541
|
-
render(e) {
|
9542
|
-
const { render, position } = e;
|
9543
|
-
const bgColor = (this.element.isFocused || this.element.isMouseenter) ? '#d9d9d9' : '#ffffff';
|
9544
|
-
render.overlaysContext.fillRect(position.x - 2, position.y - 2, this.rect.width + 4, this.rect.height + 4, bgColor, 5, 'black');
|
9545
|
-
}
|
9546
9193
|
clone(cloneData = true) {
|
9547
9194
|
const cloneRender = new DocumentBodyPartRenderObject(this.element);
|
9548
9195
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -9682,9 +9329,6 @@ function getMHItem(kind) {
|
|
9682
9329
|
return mhLayoutItems[kindIndex];
|
9683
9330
|
}
|
9684
9331
|
class DataRenderMH extends LeafRenderObject {
|
9685
|
-
render(e) {
|
9686
|
-
renderMH(this.element, e.render, e.position, true);
|
9687
|
-
}
|
9688
9332
|
exportHTML(event) {
|
9689
9333
|
const t = super.exportHTML(event);
|
9690
9334
|
const children = [];
|
@@ -9919,36 +9563,11 @@ class PictureElement extends LeafElement {
|
|
9919
9563
|
}
|
9920
9564
|
}
|
9921
9565
|
class PictureRenderObject extends ResizeLeafRenderObject {
|
9922
|
-
render(e) {
|
9923
|
-
}
|
9924
9566
|
clone() {
|
9925
9567
|
const clone = new PictureRenderObject(this.element);
|
9926
9568
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
9927
9569
|
return clone;
|
9928
9570
|
}
|
9929
|
-
pagePaintCompleted(e) {
|
9930
|
-
if (this.element.isFocused) {
|
9931
|
-
const { render, position: pos } = e;
|
9932
|
-
const { width, height } = this.rect;
|
9933
|
-
render.contentContext.strokeRect(pos.x, pos.y, width, height, '#1890ff', 0.5);
|
9934
|
-
this.drawResizeCircle(render, pos.x, pos.y);
|
9935
|
-
this.drawResizeCircle(render, pos.x + width, pos.y);
|
9936
|
-
this.drawResizeCircle(render, pos.x, pos.y + height);
|
9937
|
-
this.drawResizeCircle(render, pos.x + width, pos.y + height);
|
9938
|
-
this.drawResizeCircle(render, pos.x + (Math.floor(width / 2)), pos.y);
|
9939
|
-
this.drawResizeCircle(render, pos.x + (Math.floor(width / 2)), pos.y + height);
|
9940
|
-
this.drawResizeCircle(render, pos.x, pos.y + (Math.floor(height / 2)));
|
9941
|
-
this.drawResizeCircle(render, pos.x + width, pos.y + (Math.floor(height / 2)));
|
9942
|
-
}
|
9943
|
-
}
|
9944
|
-
drawResizeCircle(ctx, x, y) {
|
9945
|
-
const ctxNative = ctx.contentContext.ctx;
|
9946
|
-
ctxNative.fillStyle = '#69c0ff';
|
9947
|
-
ctxNative.beginPath();
|
9948
|
-
ctxNative.arc(x, y, Math.floor(4 / 5 * 4), 0, 2 * Math.PI);
|
9949
|
-
ctxNative.closePath();
|
9950
|
-
ctxNative.fill();
|
9951
|
-
}
|
9952
9571
|
exportHTML(event) {
|
9953
9572
|
const picElement = this.element;
|
9954
9573
|
const picProps = picElement.props;
|
@@ -10080,10 +9699,6 @@ class RadioBoxFactory extends ElementFactory {
|
|
10080
9699
|
}
|
10081
9700
|
}
|
10082
9701
|
class RadioBoxRenderObject extends LeafRenderObject {
|
10083
|
-
render(e) {
|
10084
|
-
const { render, position } = e;
|
10085
|
-
render.contentContext.drawRadioBox(position.x + 2, position.y, this.element.props.size, this.element.props.size, this.element.props.isChecked);
|
10086
|
-
}
|
10087
9702
|
clone(cloneData = true) {
|
10088
9703
|
const clone = new RadioBoxRenderObject(this.element);
|
10089
9704
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
@@ -10122,13 +9737,6 @@ class PageBreakElement extends LeafElement {
|
|
10122
9737
|
}
|
10123
9738
|
}
|
10124
9739
|
class PageBreakRenderObject extends LeafRenderObject {
|
10125
|
-
render(e) {
|
10126
|
-
const { render, position } = e;
|
10127
|
-
if (render.drawMode === 'print') {
|
10128
|
-
return;
|
10129
|
-
}
|
10130
|
-
render.contentContext.drawText('↩', this.element.textProps, position.x, position.y, 20, this.rect.height);
|
10131
|
-
}
|
10132
9740
|
clone() {
|
10133
9741
|
const render = new PageBreakRenderObject(this.element);
|
10134
9742
|
render.rect = ElementUtil.cloneRect(this.rect);
|
@@ -10165,13 +9773,6 @@ class TabElement extends LeafElement {
|
|
10165
9773
|
}
|
10166
9774
|
}
|
10167
9775
|
class TabRenderObject extends LeafRenderObject {
|
10168
|
-
render(e) {
|
10169
|
-
const { render, position } = e;
|
10170
|
-
if (render.drawMode === 'print') {
|
10171
|
-
return;
|
10172
|
-
}
|
10173
|
-
//render.contentContext.fillRect(position.x,position.y,this.rect.width,this.rect.height,'red');
|
10174
|
-
}
|
10175
9776
|
clone() {
|
10176
9777
|
const render = new TabRenderObject(this.element);
|
10177
9778
|
render.rect = ElementUtil.cloneRect(this.rect);
|
@@ -10737,58 +10338,170 @@ class TableSplitCell {
|
|
10737
10338
|
}
|
10738
10339
|
}
|
10739
10340
|
|
10740
|
-
class
|
10741
|
-
|
10742
|
-
|
10743
|
-
|
10744
|
-
|
10745
|
-
|
10746
|
-
|
10747
|
-
|
10748
|
-
if (!result) {
|
10749
|
-
return null;
|
10750
|
-
}
|
10751
|
-
if (result.complete) {
|
10752
|
-
return result;
|
10753
|
-
}
|
10754
|
-
if (element instanceof BranchElement) {
|
10755
|
-
result.children = [];
|
10756
|
-
let prevEle = null;
|
10757
|
-
for (let i = 0; i < element.length; i++) {
|
10758
|
-
const child = element.getChild(i);
|
10759
|
-
const serializeChild = this.serialize(child, viewOptions);
|
10760
|
-
if (child.type === 'text' && prevEle && prevEle.ele.type === 'text') {
|
10761
|
-
if (child.props.equals(prevEle.ele.props)) {
|
10762
|
-
prevEle.props.content += serializeChild.content;
|
10763
|
-
continue;
|
10764
|
-
}
|
10765
|
-
}
|
10766
|
-
if (serializeChild) {
|
10767
|
-
delete serializeChild.complete;
|
10768
|
-
serializeChild.props = serializeChild.props || {};
|
10769
|
-
if (Object.keys(serializeChild.props).length === 0) {
|
10770
|
-
delete serializeChild.props;
|
10771
|
-
}
|
10772
|
-
if (serializeChild.children && serializeChild.children.length === 0) {
|
10773
|
-
delete serializeChild.children;
|
10774
|
-
}
|
10775
|
-
result.children.push(serializeChild);
|
10776
|
-
prevEle = { ele: child, props: serializeChild };
|
10777
|
-
}
|
10778
|
-
}
|
10779
|
-
}
|
10780
|
-
if (element.props && element.props['__attachedProperty'] && !result.props['__attachedProperty']) {
|
10781
|
-
result.props['__attachedProperty'] = CommonUtil.cloneValue(element.props['__attachedProperty']);
|
10782
|
-
}
|
10783
|
-
return result;
|
10341
|
+
class SVGElement extends LeafElement {
|
10342
|
+
resizeable = true;
|
10343
|
+
constructor() {
|
10344
|
+
super('svg');
|
10345
|
+
this.props = new SVGProps();
|
10346
|
+
//this.addPropValueChangedSub(this.props);
|
10347
|
+
this.cursorType = 'move';
|
10348
|
+
this.focusable = true;
|
10784
10349
|
}
|
10785
|
-
|
10786
|
-
|
10787
|
-
|
10788
|
-
|
10789
|
-
|
10350
|
+
createRenderObject() {
|
10351
|
+
const render = new SVGRenderObject(this);
|
10352
|
+
render.rect.width = this.props.width;
|
10353
|
+
render.rect.height = this.props.height;
|
10354
|
+
return render;
|
10355
|
+
}
|
10356
|
+
serialize(options) {
|
10357
|
+
return {
|
10358
|
+
type: 'svg',
|
10359
|
+
props: {
|
10360
|
+
...this.props.getSerializeProps(options)
|
10361
|
+
}
|
10362
|
+
};
|
10363
|
+
}
|
10364
|
+
clone(data) {
|
10365
|
+
const clone = new SVGElement();
|
10366
|
+
this.props.clone(clone.props);
|
10367
|
+
return clone;
|
10368
|
+
}
|
10369
|
+
destroy() {
|
10370
|
+
super.destroy();
|
10371
|
+
}
|
10372
|
+
}
|
10373
|
+
class SVGRenderObject extends ResizeLeafRenderObject {
|
10374
|
+
clone() {
|
10375
|
+
const clone = new SVGRenderObject(this.element);
|
10376
|
+
clone.rect = ElementUtil.cloneRect(this.rect);
|
10377
|
+
return clone;
|
10378
|
+
}
|
10379
|
+
drawResizeCircle(ctx, x, y) {
|
10380
|
+
const ctxNative = ctx.contentContext.ctx;
|
10381
|
+
ctxNative.fillStyle = '#69c0ff';
|
10382
|
+
ctxNative.beginPath();
|
10383
|
+
ctxNative.arc(x, y, Math.floor(4 / 5 * 4), 0, 2 * Math.PI);
|
10384
|
+
ctxNative.closePath();
|
10385
|
+
ctxNative.fill();
|
10386
|
+
}
|
10387
|
+
exportHTML(event) {
|
10388
|
+
const props = this.element.props;
|
10389
|
+
const t = super.exportHTML(event);
|
10390
|
+
t.children = [{
|
10391
|
+
sel: 'svg',
|
10392
|
+
data: {
|
10393
|
+
ns: "http://www.w3.org/2000/svg",
|
10394
|
+
attrs: {
|
10395
|
+
width: this.rect.width,
|
10396
|
+
height: this.rect.height
|
10397
|
+
}
|
10398
|
+
},
|
10399
|
+
children: [{
|
10400
|
+
sel: 'image',
|
10401
|
+
data: {
|
10402
|
+
ns: "http://www.w3.org/2000/svg",
|
10403
|
+
attrs: {
|
10404
|
+
"xlink:href": props.value,
|
10405
|
+
width: Math.min(this.rect.width, this.rect.height),
|
10406
|
+
height: Math.min(this.rect.width, this.rect.height)
|
10407
|
+
}
|
10408
|
+
}
|
10409
|
+
}]
|
10410
|
+
}];
|
10411
|
+
//绘制拖动圆圈
|
10412
|
+
if (this.element.isFocused) {
|
10413
|
+
const { width, height } = this.rect;
|
10414
|
+
const circlePoints = [{ x: 0, y: 0 }, { x: width, y: 0 }, { x: 0, y: height }, { x: width, y: height }, { x: Math.floor(width / 2), y: 0 }, { x: Math.floor(width / 2), y: height }, { x: 0, y: Math.floor(height / 2) }, { x: width, y: Math.floor(height / 2) }];
|
10415
|
+
circlePoints.forEach((p) => {
|
10416
|
+
t.children.push({
|
10417
|
+
sel: 'circle',
|
10418
|
+
data: {
|
10419
|
+
ns: "http://www.w3.org/2000/svg",
|
10420
|
+
attrs: {
|
10421
|
+
cx: p.x,
|
10422
|
+
cy: p.y,
|
10423
|
+
r: Math.floor(4 / 5 * 4),
|
10424
|
+
fill: '#69c0ff'
|
10425
|
+
}
|
10426
|
+
}
|
10427
|
+
});
|
10428
|
+
});
|
10429
|
+
}
|
10430
|
+
return t;
|
10431
|
+
}
|
10432
|
+
}
|
10433
|
+
class SVGFactory extends ElementFactory {
|
10434
|
+
match(type) {
|
10435
|
+
return type === 'svg';
|
10436
|
+
}
|
10437
|
+
createElement(data) {
|
10438
|
+
const props = data.props;
|
10439
|
+
const pic = new SVGElement();
|
10440
|
+
const picProps = pic.props;
|
10441
|
+
picProps.width = props.width;
|
10442
|
+
picProps.height = props.height;
|
10443
|
+
picProps.value = props.value;
|
10444
|
+
picProps.title = props.title;
|
10445
|
+
pic.props = picProps;
|
10446
|
+
return pic;
|
10447
|
+
}
|
10448
|
+
}
|
10449
|
+
|
10450
|
+
class ElementSerialize {
|
10451
|
+
/**
|
10452
|
+
* 将当前文档对象构建并输出到标准的JSON对象
|
10453
|
+
* @param element
|
10454
|
+
* @param viewOptions
|
10455
|
+
*/
|
10456
|
+
static serialize(element, viewOptions) {
|
10457
|
+
const result = element.serialize(viewOptions);
|
10458
|
+
if (!result) {
|
10459
|
+
return null;
|
10460
|
+
}
|
10461
|
+
if (result.complete) {
|
10462
|
+
return result;
|
10463
|
+
}
|
10464
|
+
if (element instanceof BranchElement) {
|
10465
|
+
result.children = [];
|
10466
|
+
let prevEle = null;
|
10467
|
+
for (let i = 0; i < element.length; i++) {
|
10468
|
+
const child = element.getChild(i);
|
10469
|
+
const serializeChild = this.serialize(child, viewOptions);
|
10470
|
+
if (child.type === 'text' && prevEle && prevEle.ele.type === 'text') {
|
10471
|
+
if (child.props.equals(prevEle.ele.props)) {
|
10472
|
+
prevEle.props.content += serializeChild.content;
|
10473
|
+
continue;
|
10474
|
+
}
|
10475
|
+
}
|
10476
|
+
if (serializeChild) {
|
10477
|
+
delete serializeChild.complete;
|
10478
|
+
serializeChild.props = serializeChild.props || {};
|
10479
|
+
if (Object.keys(serializeChild.props).length === 0) {
|
10480
|
+
delete serializeChild.props;
|
10481
|
+
}
|
10482
|
+
if (serializeChild.children && serializeChild.children.length === 0) {
|
10483
|
+
delete serializeChild.children;
|
10484
|
+
}
|
10485
|
+
result.children.push(serializeChild);
|
10486
|
+
prevEle = { ele: child, props: serializeChild };
|
10487
|
+
}
|
10488
|
+
}
|
10489
|
+
}
|
10490
|
+
if (element.props && element.props['__attachedProperty'] && !result.props['__attachedProperty']) {
|
10491
|
+
result.props['__attachedProperty'] = CommonUtil.cloneValue(element.props['__attachedProperty']);
|
10492
|
+
}
|
10493
|
+
return result;
|
10494
|
+
}
|
10495
|
+
static serializeString(element, options = { all: false }) {
|
10496
|
+
if (!options.all && element instanceof TrackRunElement && element.type === TrackRunTypeEnum.Deleted) {
|
10497
|
+
return '';
|
10498
|
+
}
|
10499
|
+
if (element instanceof TextGroupElement && !element.isDecorate) {
|
10790
10500
|
return element.text;
|
10791
10501
|
}
|
10502
|
+
if (element instanceof PSymbolElement) {
|
10503
|
+
return '\n';
|
10504
|
+
}
|
10792
10505
|
if (element instanceof BranchElement) {
|
10793
10506
|
const items = [];
|
10794
10507
|
for (let i = 0; i < element.length; i++) {
|
@@ -10939,32 +10652,6 @@ class TrackRunRenderObject extends InlineGroupRenderObject {
|
|
10939
10652
|
constructor(ele) {
|
10940
10653
|
super(ele);
|
10941
10654
|
}
|
10942
|
-
render(e) {
|
10943
|
-
const { render, position, docCtx: { viewOptions } } = e;
|
10944
|
-
render.tran(() => {
|
10945
|
-
let fillColor = viewOptions.showTrackChanges ? this.element.type === 'ins-run' ? viewOptions.trackInsColor : viewOptions.trackDelColor : '';
|
10946
|
-
if (fillColor) {
|
10947
|
-
render.contentContext.ctx.fillStyle = fillColor;
|
10948
|
-
}
|
10949
|
-
e.nextRender();
|
10950
|
-
});
|
10951
|
-
const { x, y } = position;
|
10952
|
-
//不显示痕迹
|
10953
|
-
if (!viewOptions.showTrackChanges) {
|
10954
|
-
return;
|
10955
|
-
}
|
10956
|
-
const color = this.element.type === 'ins-run' ? 'green' : 'red';
|
10957
|
-
for (let i = 0; i < this.length; i++) {
|
10958
|
-
const childRender = this.getChild(i);
|
10959
|
-
const { rect } = childRender;
|
10960
|
-
if (childRender.element && childRender.element.type === 'del-run') {
|
10961
|
-
continue;
|
10962
|
-
}
|
10963
|
-
let lineY = y + rect.y + rect.height;
|
10964
|
-
lineY = this.element.type === 'ins-run' ? lineY : lineY - rect.height / 2;
|
10965
|
-
render.contentContext.drawHoriLine(x + rect.x, lineY, rect.width, color, 1);
|
10966
|
-
}
|
10967
|
-
}
|
10968
10655
|
exportHTML(event) {
|
10969
10656
|
const { options } = event;
|
10970
10657
|
const t = super.exportHTML(event);
|
@@ -12527,9 +12214,9 @@ class ElementUtil {
|
|
12527
12214
|
return this.getTextRenderOffset(render, x);
|
12528
12215
|
}
|
12529
12216
|
else {
|
12530
|
-
if (render.element && render.element.type === 'psym') {
|
12531
|
-
|
12532
|
-
}
|
12217
|
+
// if (render.element && render.element.type === 'psym') {
|
12218
|
+
// return 0;
|
12219
|
+
// }
|
12533
12220
|
return (render.rect.width / 2) >= x ? 0 : 1;
|
12534
12221
|
}
|
12535
12222
|
}
|
@@ -13259,12 +12946,12 @@ class ElementPaint {
|
|
13259
12946
|
}
|
13260
12947
|
}
|
13261
12948
|
});
|
13262
|
-
docContainer.render({
|
13263
|
-
|
13264
|
-
|
13265
|
-
|
13266
|
-
|
13267
|
-
})
|
12949
|
+
// docContainer.render({
|
12950
|
+
// render: this.renderCtx,
|
12951
|
+
// position: { x: docContainer.rect.x, y: docContainer.rect.y },
|
12952
|
+
// nextRender: nextRenderFn,
|
12953
|
+
// docCtx: this.docCtx
|
12954
|
+
// })
|
13268
12955
|
nextRenderFn();
|
13269
12956
|
const { scale, viewSettings: { width, height } } = this.viewOptions;
|
13270
12957
|
while (this.renderCtx.onRenderCompleted.subs.length > 0) {
|
@@ -13293,25 +12980,25 @@ class ElementPaint {
|
|
13293
12980
|
this.drawRenderObject(child, currPosition, inViewPort);
|
13294
12981
|
}
|
13295
12982
|
});
|
13296
|
-
|
12983
|
+
({
|
13297
12984
|
position: currPosition,
|
13298
12985
|
nextRender: nextRenderFn,
|
13299
12986
|
render: this.renderCtx,
|
13300
12987
|
docCtx: this.docCtx
|
13301
|
-
};
|
13302
|
-
renderObject.render(renderData);
|
12988
|
+
});
|
12989
|
+
//renderObject.render(renderData);
|
13303
12990
|
nextRenderFn();
|
13304
12991
|
}
|
13305
12992
|
}
|
13306
12993
|
else if (renderObject instanceof LeafRenderObject) {
|
13307
12994
|
if (inViewPort) {
|
13308
|
-
|
12995
|
+
({
|
13309
12996
|
position: currPosition,
|
13310
12997
|
nextRender: () => { },
|
13311
12998
|
render: this.renderCtx,
|
13312
12999
|
docCtx: this.docCtx
|
13313
|
-
};
|
13314
|
-
renderObject.render(renderData);
|
13000
|
+
});
|
13001
|
+
//renderObject.render(renderData);
|
13315
13002
|
}
|
13316
13003
|
}
|
13317
13004
|
//处理选中拖蓝
|
@@ -13364,14 +13051,14 @@ class ElementPaint {
|
|
13364
13051
|
* 触发页面绘制结束事件
|
13365
13052
|
*/
|
13366
13053
|
invokedPagePaintCompleted(renderObject, parent) {
|
13367
|
-
const { x: rx, y: ry, width: rw, height: rh } = renderObject.rect;
|
13368
|
-
const currPosition = { x: rx + parent.x, y: ry + parent.y };
|
13369
|
-
renderObject.pagePaintCompleted({ render: this.renderCtx, position: currPosition, docCtx: this.docCtx })
|
13370
|
-
if (renderObject instanceof BranchRenderObject) {
|
13371
|
-
|
13372
|
-
|
13373
|
-
|
13374
|
-
}
|
13054
|
+
// const { x: rx, y: ry, width: rw, height: rh } = renderObject.rect;
|
13055
|
+
// const currPosition = { x: rx + parent.x, y: ry + parent.y };
|
13056
|
+
// renderObject.pagePaintCompleted({ render: this.renderCtx, position: currPosition, docCtx: this.docCtx })
|
13057
|
+
// if (renderObject instanceof BranchRenderObject) {
|
13058
|
+
// for (let i = 0; i < renderObject.length; i++) {
|
13059
|
+
// this.invokedPagePaintCompleted(renderObject.getChild(i), currPosition);
|
13060
|
+
// }
|
13061
|
+
// }
|
13375
13062
|
}
|
13376
13063
|
static drawPage(renderCtx, docCtx, renderObject, parent) {
|
13377
13064
|
const { x: rx, y: ry } = renderObject.rect;
|
@@ -13383,24 +13070,9 @@ class ElementPaint {
|
|
13383
13070
|
this.drawPage(renderCtx, docCtx, child, currPosition);
|
13384
13071
|
}
|
13385
13072
|
});
|
13386
|
-
|
13387
|
-
position: currPosition,
|
13388
|
-
nextRender: nextRenderFn,
|
13389
|
-
render: renderCtx,
|
13390
|
-
docCtx
|
13391
|
-
};
|
13392
|
-
renderObject.render(renderData);
|
13073
|
+
//renderObject.render(renderData);
|
13393
13074
|
nextRenderFn();
|
13394
13075
|
}
|
13395
|
-
else if (renderObject instanceof LeafRenderObject) {
|
13396
|
-
const renderData = {
|
13397
|
-
position: currPosition,
|
13398
|
-
nextRender: () => { },
|
13399
|
-
render: renderCtx,
|
13400
|
-
docCtx: docCtx
|
13401
|
-
};
|
13402
|
-
renderObject.render(renderData);
|
13403
|
-
}
|
13404
13076
|
}
|
13405
13077
|
}
|
13406
13078
|
|
@@ -14964,10 +14636,11 @@ class DocumentArrange {
|
|
14964
14636
|
let currRow = rows[j];
|
14965
14637
|
const cutRows = [];
|
14966
14638
|
while (currRow) {
|
14639
|
+
const minHeight = currRow.element.props.minHeight;
|
14967
14640
|
const rowContentHeight = this.getBlockLineHeight(currRow);
|
14968
14641
|
if (rowContentHeight + sumHeight > limitHeight) {
|
14969
|
-
|
14970
|
-
if (
|
14642
|
+
//行存在最小高度,且当前行内容的高度小于最小高度,且当前行跨页的情况下,不截断该行
|
14643
|
+
if (minHeight > 0 && minHeight > rowContentHeight) {
|
14971
14644
|
break;
|
14972
14645
|
}
|
14973
14646
|
//限制的外框尺寸
|
@@ -15842,539 +15515,52 @@ class ElementMeasure {
|
|
15842
15515
|
}
|
15843
15516
|
}
|
15844
15517
|
|
15845
|
-
class
|
15846
|
-
options;
|
15518
|
+
class DocumentPaint {
|
15847
15519
|
renderContext;
|
15848
|
-
|
15849
|
-
|
15520
|
+
docCtx;
|
15521
|
+
seo;
|
15522
|
+
elementMeasure;
|
15523
|
+
//elementRenderCut: ElementRenderCut;
|
15524
|
+
elementPaint;
|
15525
|
+
docPages;
|
15526
|
+
docContainer;
|
15527
|
+
//commsContainer!: CommsContainerRenderObject;
|
15528
|
+
viewOptions;
|
15529
|
+
constructor(renderContext, docCtx, seo) {
|
15850
15530
|
this.renderContext = renderContext;
|
15531
|
+
this.docCtx = docCtx;
|
15532
|
+
this.seo = seo;
|
15533
|
+
this.viewOptions = this.docCtx.viewOptions;
|
15534
|
+
this.elementMeasure = new ElementMeasure(this.docCtx, this.renderContext);
|
15535
|
+
//this.elementRenderCut = new ElementRenderCut(this.viewOptions, this.renderContext);
|
15536
|
+
this.elementPaint = new ElementPaint(this.renderContext, this.docCtx);
|
15851
15537
|
}
|
15852
|
-
|
15853
|
-
if (this.
|
15854
|
-
return
|
15855
|
-
}
|
15856
|
-
const headerRender = documentRender.getChild(0);
|
15857
|
-
const bodyRender = documentRender.getChild(1).clone();
|
15858
|
-
const footerRender = documentRender.getChild(2);
|
15859
|
-
const commentsRender = documentRender.getChild(3);
|
15860
|
-
const { headerLine, footerLine } = documentRender;
|
15861
|
-
let bodyMarginTop = headerLine + headerRender.rect.height + 6;
|
15862
|
-
let bodyMarginBottom = footerLine + footerRender.rect.height;
|
15863
|
-
const { top: bodyTop, bottom: bodyBottom } = documentRender.padding;
|
15864
|
-
bodyMarginTop = bodyMarginTop > bodyTop ? bodyMarginTop : bodyTop;
|
15865
|
-
bodyMarginBottom = bodyMarginBottom > bodyBottom ? bodyMarginBottom : bodyBottom;
|
15866
|
-
documentRender.padding.top = bodyMarginTop;
|
15867
|
-
documentRender.padding.bottom = bodyMarginBottom;
|
15868
|
-
const bodyLimitRect = this.getDocInnerRect(documentRender);
|
15869
|
-
const bodyArray = [];
|
15870
|
-
let { emptyBody: pageBodyRender, innerRect: bodyInnerLimitRect } = this.createEmptyBodyRender(bodyRender, bodyLimitRect);
|
15871
|
-
bodyArray.push(pageBodyRender);
|
15872
|
-
const createBodyHolder = () => {
|
15873
|
-
const { emptyBody, innerRect } = this.createEmptyBodyRender(bodyRender, bodyLimitRect);
|
15874
|
-
pageBodyRender = emptyBody;
|
15875
|
-
bodyInnerLimitRect = innerRect;
|
15876
|
-
bodyArray.push(pageBodyRender);
|
15877
|
-
};
|
15878
|
-
const appendToBody = (item) => {
|
15879
|
-
item.rect.y = bodyInnerLimitRect.height + item.margin.top;
|
15880
|
-
pageBodyRender.addChild(item);
|
15881
|
-
bodyInnerLimitRect.height += item.rect.height + item.margin.top + item.margin.bottom;
|
15882
|
-
//上一个元素的bottom-margin
|
15883
|
-
//bodyInnerLimitRect.prevMargin = item.margin.bottom;
|
15884
|
-
ElementUtil.updateRenderHeightByInnerRect(pageBodyRender, bodyInnerLimitRect);
|
15885
|
-
};
|
15886
|
-
let i = 0;
|
15887
|
-
let cloneBlockContentRender = bodyRender.getChild(i);
|
15888
|
-
while (cloneBlockContentRender) {
|
15889
|
-
if (bodyInnerLimitRect.maxHeight - bodyInnerLimitRect.height - cloneBlockContentRender.rect.height - cloneBlockContentRender.margin.bottom - cloneBlockContentRender.margin.top < 0) {
|
15890
|
-
//限制的外框尺寸
|
15891
|
-
const bodyAvailHeight = bodyInnerLimitRect.maxHeight - bodyInnerLimitRect.height - cloneBlockContentRender.margin.bottom - cloneBlockContentRender.margin.top;
|
15892
|
-
//限制的内框尺寸
|
15893
|
-
const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(cloneBlockContentRender, bodyAvailHeight);
|
15894
|
-
const cutRenderObject = this.cutRenderItem(cloneBlockContentRender, limitRenderInnterHeight);
|
15895
|
-
//至少有一个块级行元素被切割出来
|
15896
|
-
if (cutRenderObject) {
|
15897
|
-
appendToBody(cutRenderObject);
|
15898
|
-
}
|
15899
|
-
createBodyHolder();
|
15900
|
-
}
|
15901
|
-
else {
|
15902
|
-
appendToBody(cloneBlockContentRender);
|
15903
|
-
if (++i < bodyRender.length) {
|
15904
|
-
cloneBlockContentRender = bodyRender.getChild(i);
|
15905
|
-
}
|
15906
|
-
else {
|
15907
|
-
cloneBlockContentRender = null;
|
15908
|
-
}
|
15909
|
-
}
|
15910
|
-
}
|
15911
|
-
const docPages = [];
|
15912
|
-
let pageY = this.options.docSpace;
|
15913
|
-
for (let i = 0; i < bodyArray.length; i++) {
|
15914
|
-
const body = bodyArray[i];
|
15915
|
-
const documentRender = documentElement.createRenderObject();
|
15916
|
-
docPages.push(documentRender);
|
15917
|
-
documentRender.rect.y = pageY;
|
15918
|
-
const limitRect = documentRender.getInnerRect();
|
15919
|
-
const cloneHeaderRender = headerRender.clone();
|
15920
|
-
cloneHeaderRender.rect.x = limitRect.x;
|
15921
|
-
cloneHeaderRender.rect.y = headerLine;
|
15922
|
-
documentRender.addChild(cloneHeaderRender);
|
15923
|
-
body.rect.x = limitRect.x;
|
15924
|
-
body.rect.y = bodyMarginTop;
|
15925
|
-
body.rect.height = bodyInnerLimitRect.maxHeight;
|
15926
|
-
documentRender.addChild(body);
|
15927
|
-
pageY += documentRender.rect.height + this.options.docSpace;
|
15928
|
-
const cloneFooterRender = footerRender.clone();
|
15929
|
-
cloneFooterRender.rect.x = limitRect.x;
|
15930
|
-
cloneFooterRender.rect.y = documentRender.rect.height - bodyMarginBottom;
|
15931
|
-
documentRender.addChild(cloneFooterRender);
|
15932
|
-
//审阅模式,添加审阅窗口
|
15933
|
-
if (this.options.showReviewWindow && commentsRender) {
|
15934
|
-
const commentsContainer = commentsRender.element.createRenderObject({
|
15935
|
-
options: this.options,
|
15936
|
-
renderCtx: this.renderContext
|
15937
|
-
});
|
15938
|
-
commentsContainer.padding.top = bodyMarginTop;
|
15939
|
-
commentsContainer.rect.height = documentRender.rect.height;
|
15940
|
-
documentRender.addChild(commentsContainer);
|
15941
|
-
commentsContainer.rect.x = documentRender.rect.x + documentRender.rect.width;
|
15942
|
-
documentRender.rect.width += this.options.reviewWindowWidth;
|
15943
|
-
}
|
15538
|
+
rePages() {
|
15539
|
+
if (!this.docCtx.document.length) {
|
15540
|
+
return;
|
15944
15541
|
}
|
15945
|
-
|
15946
|
-
|
15947
|
-
|
15948
|
-
|
15949
|
-
|
15950
|
-
|
15951
|
-
|
15952
|
-
|
15953
|
-
|
15954
|
-
|
15955
|
-
|
15956
|
-
const
|
15957
|
-
const
|
15958
|
-
|
15959
|
-
|
15960
|
-
|
15961
|
-
|
15962
|
-
|
15963
|
-
|
15964
|
-
|
15965
|
-
|
15966
|
-
|
15967
|
-
commentsContainer.rect.height = documentRender.rect.height;
|
15968
|
-
commentsContainer.rect.x = documentRender.rect.x + documentRender.rect.width;
|
15969
|
-
documentRender.rect.width += this.options.reviewWindowWidth;
|
15970
|
-
}
|
15971
|
-
return [documentRender];
|
15972
|
-
}
|
15973
|
-
createEmptyBodyRender(bodyRender, limitRect) {
|
15974
|
-
const pageBodyRender = bodyRender.element.createRenderObject({
|
15975
|
-
options: this.options,
|
15976
|
-
renderCtx: this.renderContext
|
15977
|
-
});
|
15978
|
-
pageBodyRender.rect.width = limitRect.width;
|
15979
|
-
const bodyInnerLimitRect = pageBodyRender.getInnerRect();
|
15980
|
-
if (this.options.fullPageView) {
|
15981
|
-
bodyInnerLimitRect.height = Number.MAX_VALUE;
|
15982
|
-
}
|
15983
|
-
return {
|
15984
|
-
emptyBody: pageBodyRender,
|
15985
|
-
innerRect: { ...bodyInnerLimitRect, prevMargin: 0, maxWidth: limitRect.width, maxHeight: limitRect.height }
|
15986
|
-
};
|
15987
|
-
}
|
15988
|
-
/**
|
15989
|
-
* 切割渲染元素
|
15990
|
-
* @param render 被切割的对象
|
15991
|
-
* @param limitHeight
|
15992
|
-
* @returns
|
15993
|
-
*/
|
15994
|
-
cutRenderItem(render, limitHeight) {
|
15995
|
-
if (render instanceof TableRowRenderObject) {
|
15996
|
-
return this.cutRowRenderItem(render, limitHeight);
|
15997
|
-
}
|
15998
|
-
if (render instanceof TableRenderObject) {
|
15999
|
-
return this.cutTable(render, limitHeight);
|
16000
|
-
}
|
16001
|
-
const cloneRender = render.element.createRenderObject({
|
16002
|
-
options: this.options,
|
16003
|
-
renderCtx: this.renderContext
|
16004
|
-
});
|
16005
|
-
cloneRender.setRenderWidth(render.rect.width);
|
16006
|
-
if (render instanceof MuiltBlockLineRenderObject) {
|
16007
|
-
let sumHeight = 0;
|
16008
|
-
const children = [...render.getItems()];
|
16009
|
-
let j = 0;
|
16010
|
-
let blockLine = children[j];
|
16011
|
-
while (blockLine) {
|
16012
|
-
//sumHeight = ElementUtil.remeasure(cloneRender);
|
16013
|
-
const calcBlockLineHeight = this.getBlockLineHeight(blockLine);
|
16014
|
-
if (calcBlockLineHeight + sumHeight > limitHeight) {
|
16015
|
-
if (blockLine instanceof MuiltBlockLineRenderObject) {
|
16016
|
-
//限制的外框尺寸
|
16017
|
-
const availHeight = limitHeight - sumHeight;
|
16018
|
-
//限制的内框尺寸
|
16019
|
-
const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(render, availHeight);
|
16020
|
-
const cutRenderObject = this.cutRenderItem(blockLine, limitRenderInnterHeight);
|
16021
|
-
if (cutRenderObject) {
|
16022
|
-
cloneRender.addChild(cutRenderObject);
|
16023
|
-
sumHeight += cutRenderObject.rect.height;
|
16024
|
-
blockLine = children[++j];
|
16025
|
-
break;
|
16026
|
-
}
|
16027
|
-
else {
|
16028
|
-
break;
|
16029
|
-
}
|
16030
|
-
}
|
16031
|
-
else {
|
16032
|
-
break;
|
16033
|
-
}
|
16034
|
-
}
|
16035
|
-
else {
|
16036
|
-
render.removeChild(blockLine);
|
16037
|
-
cloneRender.addChild(blockLine);
|
16038
|
-
sumHeight += blockLine.rect.height;
|
16039
|
-
blockLine = children[++j];
|
16040
|
-
}
|
16041
|
-
}
|
16042
|
-
ElementUtil.remeasure(cloneRender);
|
16043
|
-
ElementUtil.remeasure(render);
|
16044
|
-
if (cloneRender.length === 0) {
|
16045
|
-
return null;
|
16046
|
-
}
|
16047
|
-
else {
|
16048
|
-
return cloneRender;
|
16049
|
-
}
|
16050
|
-
}
|
16051
|
-
else {
|
16052
|
-
throw new Error('未实现');
|
16053
|
-
}
|
16054
|
-
}
|
16055
|
-
/**
|
16056
|
-
* 切割渲染元素
|
16057
|
-
* @param tbRender 被切割的对象
|
16058
|
-
* @param limitHeight
|
16059
|
-
* @param addFunc
|
16060
|
-
* @returns
|
16061
|
-
*/
|
16062
|
-
cutTable(tbRender, limitHeight) {
|
16063
|
-
const cloneTbRender = tbRender.element.createRenderObject();
|
16064
|
-
cloneTbRender.setRenderWidth(tbRender.rect.width);
|
16065
|
-
let sumHeight = 0;
|
16066
|
-
const rows = [...tbRender.getItems()];
|
16067
|
-
//获取跨页需要重复显示的行
|
16068
|
-
const headerRows = this.getHeaderRows(tbRender);
|
16069
|
-
//跨页头的高度
|
16070
|
-
const headerHeight = headerRows.reduce((prev, curr) => prev + curr.rect.height, 0);
|
16071
|
-
if (headerHeight > limitHeight) {
|
16072
|
-
return null;
|
16073
|
-
}
|
16074
|
-
const copyHeaderRows = headerRows.map(item => item.clone());
|
16075
|
-
//获取最后一个截断行,需要根据截断行判断最后一个截断的行位置
|
16076
|
-
const cutOffRows = rows.filter(row => limitHeight >= row.rect.y && limitHeight <= row.rect.y + row.rect.height)
|
16077
|
-
.map((row) => ({ rowIndex: row.element.getIndex(), row }))
|
16078
|
-
.sort((first, second) => second.rowIndex - first.rowIndex);
|
16079
|
-
if (cutOffRows.length === 0) {
|
16080
|
-
throw new Error('无法获取截断行');
|
16081
|
-
}
|
16082
|
-
const joinRow = cutOffRows[0].row;
|
16083
|
-
let j = 0;
|
16084
|
-
let currRow = rows[j];
|
16085
|
-
const cutRows = [];
|
16086
|
-
while (currRow) {
|
16087
|
-
const rowContentHeight = this.getBlockLineHeight(currRow);
|
16088
|
-
if (rowContentHeight + sumHeight > limitHeight) {
|
16089
|
-
if (currRow instanceof MuiltBlockLineRenderObject) {
|
16090
|
-
//限制的外框尺寸
|
16091
|
-
const availHeight = limitHeight - sumHeight;
|
16092
|
-
//限制的内框尺寸
|
16093
|
-
const limitRenderInnterHeight = ElementUtil.innerRectMaxHeight(tbRender, availHeight);
|
16094
|
-
const cutRow = this.cutRowRenderItem(currRow, limitRenderInnterHeight);
|
16095
|
-
if (cutRow) {
|
16096
|
-
cloneTbRender.addChild(cutRow);
|
16097
|
-
sumHeight += cutRow.rect.height;
|
16098
|
-
cutRows.push(currRow);
|
16099
|
-
if (currRow === joinRow) {
|
16100
|
-
break;
|
16101
|
-
}
|
16102
|
-
currRow = rows[++j];
|
16103
|
-
}
|
16104
|
-
else {
|
16105
|
-
break;
|
16106
|
-
}
|
16107
|
-
}
|
16108
|
-
else {
|
16109
|
-
break;
|
16110
|
-
}
|
16111
|
-
}
|
16112
|
-
else {
|
16113
|
-
tbRender.removeChild(currRow);
|
16114
|
-
cloneTbRender.addChild(currRow);
|
16115
|
-
sumHeight += currRow.rect.height;
|
16116
|
-
currRow = rows[++j];
|
16117
|
-
}
|
16118
|
-
}
|
16119
|
-
this.fixCutTable(tbRender, cutRows);
|
16120
|
-
ElementUtil.remeasure(cloneTbRender);
|
16121
|
-
//存在跨页需要重复显示的行头,则需要重新放置行头
|
16122
|
-
if (copyHeaderRows.length) {
|
16123
|
-
copyHeaderRows.forEach((r, i) => tbRender.insertChild(r, i));
|
16124
|
-
}
|
16125
|
-
ElementUtil.remeasure(tbRender);
|
16126
|
-
if (cloneTbRender.length === 0) {
|
16127
|
-
return null;
|
16128
|
-
}
|
16129
|
-
else {
|
16130
|
-
return cloneTbRender;
|
16131
|
-
}
|
16132
|
-
}
|
16133
|
-
cutRowRenderItem(render, limitHeight) {
|
16134
|
-
if (render.element.props.minHeight > 0 && render.rect.height > limitHeight) {
|
16135
|
-
return null;
|
16136
|
-
}
|
16137
|
-
const cloneRowRender = render.element.createRenderObject();
|
16138
|
-
cloneRowRender.rect.width = render.rect.width;
|
16139
|
-
render.remeasureState = true;
|
16140
|
-
//cloneRowRender.rect.maxWidth = render.rect.height;
|
16141
|
-
const cellRenders = [...render.getItems()];
|
16142
|
-
const cutCellRenders = [];
|
16143
|
-
for (let i = 0; i < cellRenders.length; i++) {
|
16144
|
-
const cellRender = cellRenders[i];
|
16145
|
-
this.markMergeRowRenderDirty(cellRender);
|
16146
|
-
if (cellRender.rect.height > limitHeight) {
|
16147
|
-
//限制的内框尺寸
|
16148
|
-
const limitCellHeight = ElementUtil.innerRectMaxHeight(cellRender, limitHeight);
|
16149
|
-
const cutCellRender = this.cutRenderItem(cellRender, limitCellHeight);
|
16150
|
-
if (cutCellRender) {
|
16151
|
-
cutCellRenders.push(cutCellRender);
|
16152
|
-
}
|
16153
|
-
else {
|
16154
|
-
cutCellRenders.push(null);
|
16155
|
-
}
|
16156
|
-
}
|
16157
|
-
else {
|
16158
|
-
const cloneCellRender = cellRender;
|
16159
|
-
render.removeChild(cellRender);
|
16160
|
-
cutCellRenders.push(cloneCellRender);
|
16161
|
-
}
|
16162
|
-
}
|
16163
|
-
ElementUtil.remeasure(render);
|
16164
|
-
if (cutCellRenders.filter(item => item).length === 0) {
|
16165
|
-
return null;
|
16166
|
-
}
|
16167
|
-
else {
|
16168
|
-
//补齐单元格
|
16169
|
-
for (let i = 0; i < cutCellRenders.length; i++) {
|
16170
|
-
let cellRender = cutCellRenders[i];
|
16171
|
-
if (!cellRender) {
|
16172
|
-
cellRender = cellRenders[i].element.createRenderObject({
|
16173
|
-
options: this.options,
|
16174
|
-
renderCtx: this.renderContext
|
16175
|
-
});
|
16176
|
-
cellRender.rect = ElementUtil.cloneRect(cellRenders[i].rect);
|
16177
|
-
ElementUtil.remeasure(cellRender);
|
16178
|
-
}
|
16179
|
-
cloneRowRender.addChild(cellRender);
|
16180
|
-
}
|
16181
|
-
ElementUtil.remeasure(cloneRowRender);
|
16182
|
-
return cloneRowRender;
|
16183
|
-
}
|
16184
|
-
}
|
16185
|
-
/**
|
16186
|
-
* 标记合并单元格所在行需要重新计算
|
16187
|
-
* @param cellRender
|
16188
|
-
* @private
|
16189
|
-
*/
|
16190
|
-
markMergeRowRenderDirty(cellRender) {
|
16191
|
-
const cellEle = cellRender.element;
|
16192
|
-
if (cellEle.props.vMerge !== 'restart') {
|
16193
|
-
return;
|
16194
|
-
}
|
16195
|
-
const rowRender = cellRender.parent;
|
16196
|
-
rowRender.element;
|
16197
|
-
const tb = rowRender.parent;
|
16198
|
-
const cellYPos = cellRender.rect.y;
|
16199
|
-
for (let i = rowRender.getIndex() + 1; i < tb.length; i++) {
|
16200
|
-
const nextRowRender = tb.getChild(i);
|
16201
|
-
if (nextRowRender.rect.y <= cellYPos) {
|
16202
|
-
nextRowRender.remeasureState = true;
|
16203
|
-
nextRowRender.getItems().forEach(item => {
|
16204
|
-
this.markMergeRowRenderDirty(item);
|
16205
|
-
});
|
16206
|
-
}
|
16207
|
-
else {
|
16208
|
-
break;
|
16209
|
-
}
|
16210
|
-
}
|
16211
|
-
}
|
16212
|
-
/**
|
16213
|
-
* 修复->已经截断的合并单元格要向下移动到合适的位置
|
16214
|
-
* @param tbRender
|
16215
|
-
* @param cutRows
|
16216
|
-
* @returns
|
16217
|
-
*/
|
16218
|
-
fixCutTable(tbRender, cutRows) {
|
16219
|
-
if (!cutRows.length) {
|
16220
|
-
return;
|
16221
|
-
}
|
16222
|
-
const tbEle = tbRender.element;
|
16223
|
-
const belowMergeRows = new Set();
|
16224
|
-
for (let i = 0; i < tbRender.length; i++) {
|
16225
|
-
const row = tbRender.getChild(i);
|
16226
|
-
const nextRow = tbRender.getChild(i + 1);
|
16227
|
-
if (!nextRow) {
|
16228
|
-
break;
|
16229
|
-
}
|
16230
|
-
if (!cutRows.some(item => item === row)) {
|
16231
|
-
break;
|
16232
|
-
}
|
16233
|
-
if (row.length === tbEle.getColsCount()) {
|
16234
|
-
break;
|
16235
|
-
}
|
16236
|
-
if (this.checkFullRow(row)) {
|
16237
|
-
break;
|
16238
|
-
}
|
16239
|
-
for (let j = 0; j < row.length; j++) {
|
16240
|
-
const cell = row.getChild(j);
|
16241
|
-
const cellEle = cell.element;
|
16242
|
-
const colIndex = cellEle.getIndex();
|
16243
|
-
if (!this.existsCellRender(nextRow, colIndex)) {
|
16244
|
-
const insertColIndex = this.getRowInsertCellIndex(cell, nextRow);
|
16245
|
-
if (insertColIndex === -1) {
|
16246
|
-
this.getRowInsertCellIndex(cell, nextRow);
|
16247
|
-
throw new Error('未在紧挨下方找到可以放置的位置');
|
16248
|
-
}
|
16249
|
-
//row.removeChild(cell);
|
16250
|
-
nextRow.insertChild(cell, insertColIndex);
|
16251
|
-
belowMergeRows.add(row);
|
16252
|
-
ElementUtil.remeasure(nextRow);
|
16253
|
-
}
|
16254
|
-
}
|
16255
|
-
}
|
16256
|
-
if (belowMergeRows.size) {
|
16257
|
-
for (const row of belowMergeRows) {
|
16258
|
-
tbRender.removeChild(row);
|
16259
|
-
row.clear();
|
16260
|
-
}
|
16261
|
-
ElementUtil.remeasure(tbRender);
|
16262
|
-
}
|
16263
|
-
}
|
16264
|
-
/**
|
16265
|
-
* 校验当前是否是一个完整的行,没有Null单元格,检查当前是否还需要向下合并
|
16266
|
-
* @param row
|
16267
|
-
*/
|
16268
|
-
checkFullRow(row) {
|
16269
|
-
let x = 0;
|
16270
|
-
for (let i = 0; i < row.length; i++) {
|
16271
|
-
const cell = row.getChild(i);
|
16272
|
-
if (cell.rect.x !== x) {
|
16273
|
-
return false;
|
16274
|
-
}
|
16275
|
-
x += cell.rect.width;
|
16276
|
-
}
|
16277
|
-
return x === row.rect.width;
|
16278
|
-
}
|
16279
|
-
existsCellRender(rowRender, cellIndex) {
|
16280
|
-
for (let i = 0; i < rowRender.length; i++) {
|
16281
|
-
const cellRender = rowRender.getChild(i);
|
16282
|
-
const cellEle = cellRender.element;
|
16283
|
-
if (cellEle.getIndex() === cellIndex) {
|
16284
|
-
return true;
|
16285
|
-
}
|
16286
|
-
}
|
16287
|
-
return false;
|
16288
|
-
}
|
16289
|
-
getBlockLineHeight(render) {
|
16290
|
-
if (render instanceof TableRowRenderObject) {
|
16291
|
-
let maxCellHeight = 0;
|
16292
|
-
for (let i = 0; i < render.length; i++) {
|
16293
|
-
const itemHeight = render.getChild(i).rect.height;
|
16294
|
-
if (itemHeight > maxCellHeight) {
|
16295
|
-
maxCellHeight = itemHeight;
|
16296
|
-
}
|
16297
|
-
}
|
16298
|
-
return maxCellHeight;
|
16299
|
-
}
|
16300
|
-
return render.rect.height;
|
16301
|
-
}
|
16302
|
-
getRowInsertCellIndex(sourceCell, destRow) {
|
16303
|
-
for (let i = 0; i < destRow.length; i++) {
|
16304
|
-
const cell = destRow.getChild(i);
|
16305
|
-
const rect = cell.rect;
|
16306
|
-
if (sourceCell.rect.x < rect.x) {
|
16307
|
-
return i;
|
16308
|
-
}
|
16309
|
-
}
|
16310
|
-
const lastCell = destRow.getChild(destRow.length - 1);
|
16311
|
-
if (sourceCell.rect.x >= lastCell.rect.x + lastCell.rect.width) {
|
16312
|
-
return destRow.length;
|
16313
|
-
}
|
16314
|
-
return -1;
|
16315
|
-
}
|
16316
|
-
getHeaderRows(tb) {
|
16317
|
-
const rows = [];
|
16318
|
-
for (let i = 0; i < tb.length; i++) {
|
16319
|
-
const rowRender = tb.getChild(i);
|
16320
|
-
const rowEle = rowRender.element;
|
16321
|
-
if (rowEle.props.headerRow) {
|
16322
|
-
rows.push(rowRender);
|
16323
|
-
}
|
16324
|
-
else {
|
16325
|
-
break;
|
16326
|
-
}
|
16327
|
-
}
|
16328
|
-
return rows;
|
16329
|
-
}
|
16330
|
-
}
|
16331
|
-
|
16332
|
-
class DocumentPaint {
|
16333
|
-
renderContext;
|
16334
|
-
docCtx;
|
16335
|
-
seo;
|
16336
|
-
elementMeasure;
|
16337
|
-
elementRenderCut;
|
16338
|
-
elementPaint;
|
16339
|
-
docPages;
|
16340
|
-
docContainer;
|
16341
|
-
//commsContainer!: CommsContainerRenderObject;
|
16342
|
-
viewOptions;
|
16343
|
-
constructor(renderContext, docCtx, seo) {
|
16344
|
-
this.renderContext = renderContext;
|
16345
|
-
this.docCtx = docCtx;
|
16346
|
-
this.seo = seo;
|
16347
|
-
this.viewOptions = this.docCtx.viewOptions;
|
16348
|
-
this.elementMeasure = new ElementMeasure(this.docCtx, this.renderContext);
|
16349
|
-
this.elementRenderCut = new ElementRenderCut(this.viewOptions, this.renderContext);
|
16350
|
-
this.elementPaint = new ElementPaint(this.renderContext, this.docCtx);
|
16351
|
-
}
|
16352
|
-
rePages() {
|
16353
|
-
if (!this.docCtx.document.length) {
|
16354
|
-
return;
|
16355
|
-
}
|
16356
|
-
this.docContainer = new DocumentContainerRender();
|
16357
|
-
this.docCtx.selectionState.renderContainer = this.docContainer;
|
16358
|
-
this.docContainer.rect.width = this.viewOptions.docPageSettings.width;
|
16359
|
-
// console.time('排版计时');
|
16360
|
-
// const documentRender = this.elementMeasure.measureDocument(this.docCtx.document);
|
16361
|
-
// this.commsContainer = documentRender.getChild(3) as CommsContainerRenderObject;
|
16362
|
-
// if (this.commsContainer) {
|
16363
|
-
// this.commsContainer = this.commsContainer.clone() as CommsContainerRenderObject;
|
16364
|
-
// }
|
16365
|
-
// //console.timeEnd('排版计时');
|
16366
|
-
// //console.time('断页计时');
|
16367
|
-
// const docPages = this.elementRenderCut.cutPage(documentRender, this.docCtx.document);
|
16368
|
-
const newMeasure = new DocumentArrange(this.docCtx, this.renderContext, this.seo);
|
16369
|
-
const docPages = newMeasure.measureDoc();
|
16370
|
-
// this.commsContainer = newMeasure.commentsRender as CommsContainerRenderObject;
|
16371
|
-
// if (this.commsContainer) {
|
16372
|
-
// this.commsContainer = this.commsContainer.clone() as CommsContainerRenderObject;
|
16373
|
-
// }
|
16374
|
-
//console.timeEnd('断页计时');
|
16375
|
-
this.setCommRangeMark();
|
16376
|
-
this.docPages = docPages;
|
16377
|
-
this.layoutPages();
|
15542
|
+
this.docContainer = new DocumentContainerRender();
|
15543
|
+
this.docCtx.selectionState.renderContainer = this.docContainer;
|
15544
|
+
this.docContainer.rect.width = this.viewOptions.docPageSettings.width;
|
15545
|
+
// console.time('排版计时');
|
15546
|
+
// const documentRender = this.elementMeasure.measureDocument(this.docCtx.document);
|
15547
|
+
// this.commsContainer = documentRender.getChild(3) as CommsContainerRenderObject;
|
15548
|
+
// if (this.commsContainer) {
|
15549
|
+
// this.commsContainer = this.commsContainer.clone() as CommsContainerRenderObject;
|
15550
|
+
// }
|
15551
|
+
// //console.timeEnd('排版计时');
|
15552
|
+
// //console.time('断页计时');
|
15553
|
+
// const docPages = this.elementRenderCut.cutPage(documentRender, this.docCtx.document);
|
15554
|
+
const newMeasure = new DocumentArrange(this.docCtx, this.renderContext, this.seo);
|
15555
|
+
const docPages = newMeasure.measureDoc();
|
15556
|
+
// this.commsContainer = newMeasure.commentsRender as CommsContainerRenderObject;
|
15557
|
+
// if (this.commsContainer) {
|
15558
|
+
// this.commsContainer = this.commsContainer.clone() as CommsContainerRenderObject;
|
15559
|
+
// }
|
15560
|
+
//console.timeEnd('断页计时');
|
15561
|
+
this.setCommRangeMark();
|
15562
|
+
this.docPages = docPages;
|
15563
|
+
this.layoutPages();
|
16378
15564
|
}
|
16379
15565
|
/**
|
16380
15566
|
* 文档页面显示布局
|
@@ -16540,8 +15726,6 @@ class PermanentTeethElement extends LeafElement {
|
|
16540
15726
|
}
|
16541
15727
|
}
|
16542
15728
|
class PermanentTeethRenderObject extends LeafRenderObject {
|
16543
|
-
render(e) {
|
16544
|
-
}
|
16545
15729
|
clone() {
|
16546
15730
|
const clone = new PermanentTeethRenderObject(this.element);
|
16547
15731
|
clone.rect = ElementUtil.cloneRect(this.rect);
|
@@ -16673,6 +15857,7 @@ class ElementReader {
|
|
16673
15857
|
this.addFactory(PageBreakFactory);
|
16674
15858
|
this.addFactory(TabFactory);
|
16675
15859
|
this.addFactory(PermanentTeethFactory);
|
15860
|
+
this.addFactory(SVGFactory);
|
16676
15861
|
// this.registerReadFunc<TrackRunProps>('ins-run', (data) => {
|
16677
15862
|
// const props = new TrackRunProps(data.type);
|
16678
15863
|
// props.userId = data.userId;
|
@@ -17813,7 +16998,10 @@ class DocumentEvent {
|
|
17813
16998
|
if (renderObject instanceof LeafRenderObject) {
|
17814
16999
|
if (CommonUtil.isInsideRectByPosition(renderObjectRect, hitPos)) {
|
17815
17000
|
const x = hitPos.x - renderObjectRect.x;
|
17816
|
-
|
17001
|
+
let offset = ElementUtil.getHitRenderOffset(renderObject, x);
|
17002
|
+
if (!this.ismousedown && renderObject.element && renderObject.element.type === 'psym') {
|
17003
|
+
offset = 0;
|
17004
|
+
}
|
17817
17005
|
return {
|
17818
17006
|
render: renderObject,
|
17819
17007
|
offset,
|
@@ -17905,7 +17093,10 @@ class DocumentEvent {
|
|
17905
17093
|
else {
|
17906
17094
|
x = position.x - adjacentRender.rect.x;
|
17907
17095
|
}
|
17908
|
-
|
17096
|
+
let offset = ElementUtil.getHitRenderOffset(adjacentRender.render, x);
|
17097
|
+
if (!this.ismousedown && renderObject.element && renderObject.element.type === 'psym') {
|
17098
|
+
offset = 0;
|
17099
|
+
}
|
17909
17100
|
return {
|
17910
17101
|
render: adjacentRender.render,
|
17911
17102
|
absoluteRenderRect: adjacentRender.rect,
|
@@ -17995,6 +17186,7 @@ class DocumentEvent {
|
|
17995
17186
|
startHitInfo: this.startHitInfo,
|
17996
17187
|
endHitInfo: this.endHitInfo
|
17997
17188
|
});
|
17189
|
+
console.log(this.endHitInfo);
|
17998
17190
|
}
|
17999
17191
|
/**
|
18000
17192
|
* 获取鼠标所在的渲染元素对象
|
@@ -28927,7 +28119,7 @@ class DocEditor {
|
|
28927
28119
|
rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
|
28928
28120
|
}
|
28929
28121
|
version() {
|
28930
|
-
return "2.1.
|
28122
|
+
return "2.1.20";
|
28931
28123
|
}
|
28932
28124
|
switchPageHeaderEditor() {
|
28933
28125
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|
@@ -28935,7 +28127,7 @@ class DocEditor {
|
|
28935
28127
|
getTextContent() {
|
28936
28128
|
const paras = this.docCtx.document.treeFilter(item => item instanceof ParagraphElement);
|
28937
28129
|
const paraTexts = paras.map(item => ElementSerialize.serializeString(item, { all: false }));
|
28938
|
-
return paraTexts.join('
|
28130
|
+
return paraTexts.join('');
|
28939
28131
|
}
|
28940
28132
|
emit(event, args) {
|
28941
28133
|
this.eventBus.emit(event, args);
|
@@ -29111,5 +28303,5 @@ function removeDuplicatesEvent(events) {
|
|
29111
28303
|
return arr;
|
29112
28304
|
}
|
29113
28305
|
|
29114
|
-
export { BlockContainerElement, BlockContainerRenderObject, BlockContentElement, BlockContentRenderObject, BlockLineRectRenderObject, BodyPartProps, BooleanEnum, BorderProps, BranchElement, BranchRenderObject, BreakElement, BreakFactory, BreakRenderObject, CheckBoxElement, CheckBoxFactory, CheckBoxProps, CheckBoxRenderObject, ColumnPatchUtil, CommContentBaseElement, CommContentBaseRenderObject, CommContentElement, CommContentProps, CommContentRenderObject, CommProps, CommentContentFactory, CommentElement, CommentFactory, CommentRenderObject, CommentsFactory, CommentsUtil, CommonUtil, CommsContainerElement, CommsContainerRenderObject, ContentMenuItem, ContextMenuElementEvent, CopyElementEvent, DOMEventSource, DOMSubscription, DataDecorateElement, DataDecorateProps, DataDecorateRenderObject, DataEleBaseProps, DataEleBaseTextProps, DataEleCheckProps, DataEleDateProps, DataEleImageProps, DataEleListProps, DataEleMHProps, DataElementBarcode, DataElementBarcodeFactory, DataElementBarcodeProps, DataElementBarcodeRenderObject, DataElementBaseFactory, DataElementCheck, DataElementCheckFactory, DataElementCheckRenderObject, DataElementDate, DataElementDateFactory, DataElementDateRenderObject, DataElementGroupElement, DataElementGroupFactory, DataElementGroupProps, DataElementGroupRenderObject, DataElementImage, DataElementImgFactory, DataElementInlineGroup, DataElementLeaf, DataElementList, DataElementListFactory, DataElementListRenderObject, DataElementMH, DataElementMHFactory, DataElementRenderObject, DataElementText, DataElementTextFactory, DataElementTextRenderObject, DataImageRenderObject, DataRenderMH, DocEditor, DocMode, DocumentBodyElement, DocumentBodyFactory, DocumentBodyPartElement, DocumentBodyPartFactory, DocumentBodyPartRenderObject, DocumentBodyRenderObject, DocumentChange, DocumentCombine, DocumentComment, DocumentContainerRender, DocumentContext, DocumentCursor, DocumentElement, DocumentEvalFunc, DocumentEvent, DocumentFactory, DocumentFooterElement, DocumentFooterFactory, DocumentFooterRenderObject, DocumentHeaderElement, DocumentHeaderFactory, DocumentHeaderRenderObject, DocumentInput, DocumentPaint, DocumentPrintOffscreen, DocumentPrintOffscreenBase, DocumentProps, DocumentRenderObject, DocumentSelection, DocumentTemplate, DropElementEvent, EditMode, EditorContext, Element, ElementEvent, ElementFactory, ElementPaint, ElementReader, ElementSerialize, ElementUtil, EventBus, EventMap, EventSourceCore$1 as EventSourceCore, FillNullSpaceElement, FillNullSpaceRenderObject, GetTrackTipsEvent, GotCursorEvent, IDispose, INotifyPropertyChanged, InlineBlockContainer, InlineGroupElement, InlineGroupInputElement, InlineGroupRenderObject, InlineMuiltBlockLineRenderObject, InputElementEvent, IsInSideDataElement, IsInSideInlineGroupInputElement, KeyboradElementEvent, LeafElement, LeafRenderObject, LostCursorEvent, MarginProps, ModifyFlag$1 as ModifyFlag, MouseElementEvent, MousedownElementEvent, MuiltBlockLineRenderObject, OnceSubject, PSymbolElement, PSymbolRenderObject, PaddingProps, PageBreakElement, PageBreakFactory, PageBreakRenderObject, PageOptions, PaintContent, ParagraphElement, ParagraphFactory, ParagraphLineRectRenderObject, ParagraphNumberType, ParagraphProps, ParagraphRenderObject, PasteElementEvent, PictureElement, PictureFactory, PictureProps, PictureRenderObject, RadioBoxElement, RadioBoxFactory, RadioBoxProps, RadioBoxRenderObject, RangeUtil, Rect, RenderContext, RenderObject, RenderObjectType, ResizeLeafRenderObject, RunElementFactory, SelectionOverlays, SelectionRange, SelectionState, Subject$1 as Subject, SubjectSubscription$1 as SubjectSubscription, Subscription$1 as Subscription, TabElement, TabFactory, TabRenderObject, TableCellElement, TableCellFactory, TableCellProps, TableCellRenderObject, TableElement, TableFactory, TableProps, TableRenderObject, TableRowElement, TableRowFactory, TableRowProps, TableRowRenderObject, TableSplitCell, TableUtil, TextGroupElement, TextGroupFactory, TextGroupRenderObject, TextProps, TrackRunElement, TrackRunProps, TrackRunRenderObject, TrackRunTypeEnum, ValidateCondition, ValidateElement, ValidateProps, ValidateRenderObject, ViewOptions, clearChildrenRenderCache, clearTraces, createPrintTemplate, defaultParaHanging, deleteCurrentParagraph, docOpsMap, documentPrint, drawDecorator, elementTypeEventHandler, exportDecoratorHTML, falseChar, fontMapFunc, formatEle, fromEvent, generatePatch, getCalleeName, getFocusTextSegment, inputText, insertEle, invokeTypeHandler, isDate, logUpdateEleProps, objectToString$4 as objectToString, onTableContextmenu, onceTask, parser, printNodes, reactiveMap, removeEle, removeText, runTextLineRender, setChildrenModifyFlag, setDataElementProps, setNotifyChangedCallback, setTraceTrackingFlag, suppressTracking, targetMaps, textLineRenderMode, toRawType, toTypeString, trueChar, validateDataEle, validateDataEleRenderObj, validateInlineInputRenderObj, watchChanged };
|
28306
|
+
export { BlockContainerElement, BlockContainerRenderObject, BlockContentElement, BlockContentRenderObject, BlockLineRectRenderObject, BodyPartProps, BooleanEnum, BorderProps, BranchElement, BranchRenderObject, BreakElement, BreakFactory, BreakRenderObject, CheckBoxElement, CheckBoxFactory, CheckBoxProps, CheckBoxRenderObject, ColumnPatchUtil, CommContentBaseElement, CommContentBaseRenderObject, CommContentElement, CommContentProps, CommContentRenderObject, CommProps, CommentContentFactory, CommentElement, CommentFactory, CommentRenderObject, CommentsFactory, CommentsUtil, CommonUtil, CommsContainerElement, CommsContainerRenderObject, ContentMenuItem, ContextMenuElementEvent, CopyElementEvent, DOMEventSource, DOMSubscription, DataDecorateElement, DataDecorateProps, DataDecorateRenderObject, DataEleBaseProps, DataEleBaseTextProps, DataEleCheckProps, DataEleDateProps, DataEleImageProps, DataEleListProps, DataEleMHProps, DataElementBarcode, DataElementBarcodeFactory, DataElementBarcodeProps, DataElementBarcodeRenderObject, DataElementBaseFactory, DataElementCheck, DataElementCheckFactory, DataElementCheckRenderObject, DataElementDate, DataElementDateFactory, DataElementDateRenderObject, DataElementGroupElement, DataElementGroupFactory, DataElementGroupProps, DataElementGroupRenderObject, DataElementImage, DataElementImgFactory, DataElementInlineGroup, DataElementLeaf, DataElementList, DataElementListFactory, DataElementListRenderObject, DataElementMH, DataElementMHFactory, DataElementRenderObject, DataElementText, DataElementTextFactory, DataElementTextRenderObject, DataImageRenderObject, DataRenderMH, DocEditor, DocMode, DocumentBodyElement, DocumentBodyFactory, DocumentBodyPartElement, DocumentBodyPartFactory, DocumentBodyPartRenderObject, DocumentBodyRenderObject, DocumentChange, DocumentCombine, DocumentComment, DocumentContainerRender, DocumentContext, DocumentCursor, DocumentElement, DocumentEvalFunc, DocumentEvent, DocumentFactory, DocumentFooterElement, DocumentFooterFactory, DocumentFooterRenderObject, DocumentHeaderElement, DocumentHeaderFactory, DocumentHeaderRenderObject, DocumentInput, DocumentPaint, DocumentPrintOffscreen, DocumentPrintOffscreenBase, DocumentProps, DocumentRenderObject, DocumentSelection, DocumentTemplate, DropElementEvent, EditMode, EditorContext, Element, ElementEvent, ElementFactory, ElementPaint, ElementReader, ElementSerialize, ElementUtil, EventBus, EventMap, EventSourceCore$1 as EventSourceCore, FillNullSpaceElement, FillNullSpaceRenderObject, GetTrackTipsEvent, GotCursorEvent, IDispose, INotifyPropertyChanged, InlineBlockContainer, InlineGroupElement, InlineGroupInputElement, InlineGroupRenderObject, InlineMuiltBlockLineRenderObject, InputElementEvent, IsInSideDataElement, IsInSideInlineGroupInputElement, KeyboradElementEvent, LeafElement, LeafRenderObject, LostCursorEvent, MarginProps, ModifyFlag$1 as ModifyFlag, MouseElementEvent, MousedownElementEvent, MuiltBlockLineRenderObject, OnceSubject, PSymbolElement, PSymbolRenderObject, PaddingProps, PageBreakElement, PageBreakFactory, PageBreakRenderObject, PageOptions, PaintContent, ParagraphElement, ParagraphFactory, ParagraphLineRectRenderObject, ParagraphNumberType, ParagraphProps, ParagraphRenderObject, PasteElementEvent, PictureElement, PictureFactory, PictureProps, PictureRenderObject, RadioBoxElement, RadioBoxFactory, RadioBoxProps, RadioBoxRenderObject, RangeUtil, Rect, RenderContext, RenderObject, RenderObjectType, ResizeLeafRenderObject, RunElementFactory, SVGElement, SVGFactory, SVGProps, SVGRenderObject, SelectionOverlays, SelectionRange, SelectionState, Subject$1 as Subject, SubjectSubscription$1 as SubjectSubscription, Subscription$1 as Subscription, TabElement, TabFactory, TabRenderObject, TableCellElement, TableCellFactory, TableCellProps, TableCellRenderObject, TableElement, TableFactory, TableProps, TableRenderObject, TableRowElement, TableRowFactory, TableRowProps, TableRowRenderObject, TableSplitCell, TableUtil, TextGroupElement, TextGroupFactory, TextGroupRenderObject, TextProps, TrackRunElement, TrackRunProps, TrackRunRenderObject, TrackRunTypeEnum, ValidateCondition, ValidateElement, ValidateProps, ValidateRenderObject, ViewOptions, clearChildrenRenderCache, clearTraces, createPrintTemplate, defaultParaHanging, deleteCurrentParagraph, docOpsMap, documentPrint, drawDecorator, elementTypeEventHandler, exportDecoratorHTML, falseChar, fontMapFunc, formatEle, fromEvent, generatePatch, getCalleeName, getFocusTextSegment, inputText, insertEle, invokeTypeHandler, isDate, logUpdateEleProps, objectToString$4 as objectToString, onTableContextmenu, onceTask, parser, printNodes, reactiveMap, removeEle, removeText, runTextLineRender, setChildrenModifyFlag, setDataElementProps, setNotifyChangedCallback, setTraceTrackingFlag, suppressTracking, targetMaps, textLineRenderMode, toRawType, toTypeString, trueChar, validateDataEle, validateDataEleRenderObj, validateInlineInputRenderObj, watchChanged };
|
29115
28307
|
//# sourceMappingURL=index.js.map
|