@hailin-zheng/editor-core 2.1.17 → 2.1.18
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 +90 -33
- package/index-cjs.js.map +1 -1
- package/index.js +90 -33
- package/index.js.map +1 -1
- package/med_editor/doc-editor.d.ts +1 -1
- package/med_editor/framework/element-render-cut.d.ts +7 -5
- package/med_editor/framework/element-util.d.ts +1 -1
- package/med_editor/framework/impl/table/table-row-impl.d.ts +2 -0
- package/med_editor/framework/render-define.d.ts +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
@@ -4674,10 +4674,16 @@ class TableRowElement extends BlockContainerElement {
|
|
4674
4674
|
}
|
4675
4675
|
}
|
4676
4676
|
class TableRowRenderObject extends MuiltBlockLineRenderObject {
|
4677
|
+
//被截断的行是否需要重新计算高度
|
4678
|
+
remeasureState = true;
|
4679
|
+
//当前行是否存在合并单元格
|
4680
|
+
hasMergeCells = false;
|
4677
4681
|
render(e) {
|
4678
4682
|
}
|
4679
4683
|
clone() {
|
4680
4684
|
const cloneRender = new TableRowRenderObject(this.element);
|
4685
|
+
cloneRender.remeasureState = this.remeasureState;
|
4686
|
+
cloneRender.hasMergeCells = this.hasMergeCells;
|
4681
4687
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
4682
4688
|
for (let i = 0; i < this.length; i++) {
|
4683
4689
|
cloneRender.addChild(this.getChild(i).clone());
|
@@ -11189,7 +11195,12 @@ class ElementUtil {
|
|
11189
11195
|
if (render instanceof TableRenderObject) {
|
11190
11196
|
//this.setTableAlign(render);
|
11191
11197
|
this.remeasureTableMerge(render);
|
11192
|
-
render.getItems().forEach(item =>
|
11198
|
+
render.getItems().forEach(item => {
|
11199
|
+
if (item.remeasureState) {
|
11200
|
+
this.remeasure(item, false);
|
11201
|
+
item.remeasureState = false;
|
11202
|
+
}
|
11203
|
+
}, null);
|
11193
11204
|
}
|
11194
11205
|
const innerRect = render.getInnerRect();
|
11195
11206
|
innerRect.height = 0;
|
@@ -11205,7 +11216,7 @@ class ElementUtil {
|
|
11205
11216
|
render.updateRenderHeight(innerRect);
|
11206
11217
|
return innerRect.height;
|
11207
11218
|
}
|
11208
|
-
static remeasureTableRow(rowRender,
|
11219
|
+
static remeasureTableRow(rowRender, forceColIndex = -1) {
|
11209
11220
|
const rowEle = rowRender.element;
|
11210
11221
|
let maxCellHeight = rowEle.props.minHeight > 20 ? rowEle.props.minHeight : 20;
|
11211
11222
|
//限制行最小高度
|
@@ -11214,7 +11225,7 @@ class ElementUtil {
|
|
11214
11225
|
for (let i = 0; i < rowRender.length; i++) {
|
11215
11226
|
const cellRender = rowRender.getChild(i);
|
11216
11227
|
const { vMerge } = cellRender.element.props;
|
11217
|
-
if (cellRender.rect.height > maxCellHeight && (vMerge !== 'restart' || i ===
|
11228
|
+
if (cellRender.rect.height > maxCellHeight && (vMerge !== 'restart' || i === forceColIndex)) {
|
11218
11229
|
maxCellHeight = cellRender.rect.height;
|
11219
11230
|
}
|
11220
11231
|
}
|
@@ -11223,7 +11234,7 @@ class ElementUtil {
|
|
11223
11234
|
const cellRender = rowRender.getChild(i);
|
11224
11235
|
const cellElement = cellRender.element;
|
11225
11236
|
const { vMerge } = cellElement.props;
|
11226
|
-
if ((vMerge !== 'restart' || i ===
|
11237
|
+
if ((vMerge !== 'restart' || i === forceColIndex) || cellRender.rect.height < maxCellHeight) {
|
11227
11238
|
cellRender.rect.height = maxCellHeight;
|
11228
11239
|
}
|
11229
11240
|
//处理单元格内容纵向居中
|
@@ -11318,11 +11329,16 @@ class ElementUtil {
|
|
11318
11329
|
let needReCalc = false;
|
11319
11330
|
for (let i = 0; i < tbRender.length; i++) {
|
11320
11331
|
const row = tbRender.getChild(i);
|
11332
|
+
if (row.hasMergeCells === false) {
|
11333
|
+
continue;
|
11334
|
+
}
|
11335
|
+
row.hasMergeCells = false;
|
11321
11336
|
for (let j = 0; j < row.length; j++) {
|
11322
11337
|
const cellRender = row.getChild(j);
|
11323
11338
|
const ele = cellRender.element;
|
11324
11339
|
const { vMerge } = ele.props;
|
11325
11340
|
if (vMerge === 'restart') {
|
11341
|
+
row.hasMergeCells = true;
|
11326
11342
|
const eleIndex = ele.getIndex();
|
11327
11343
|
const continueRows = this.getContinueVMergeRenderRows(tbRender, i, eleIndex);
|
11328
11344
|
if (!continueRows.length) {
|
@@ -14937,29 +14953,23 @@ class DocumentArrange {
|
|
14937
14953
|
while (currRow) {
|
14938
14954
|
const rowContentHeight = this.getBlockLineHeight(currRow);
|
14939
14955
|
if (rowContentHeight + sumHeight > limitHeight) {
|
14940
|
-
|
14941
|
-
|
14942
|
-
|
14943
|
-
|
14944
|
-
|
14945
|
-
|
14946
|
-
|
14947
|
-
|
14948
|
-
|
14949
|
-
if (currRow.getItems().some(item => item.length !== 0)) {
|
14950
|
-
cutRows.push(currRow);
|
14951
|
-
}
|
14952
|
-
else {
|
14953
|
-
tbRender.removeChild(currRow);
|
14954
|
-
}
|
14955
|
-
if (currRow === joinRow) {
|
14956
|
-
break;
|
14957
|
-
}
|
14958
|
-
currRow = rows[++j];
|
14956
|
+
//限制的外框尺寸
|
14957
|
+
const availHeight = limitHeight - sumHeight;
|
14958
|
+
const limitRenderInnerHeight = ElementUtil.innerRectMaxHeight(tbRender, availHeight);
|
14959
|
+
const cutRow = this.cutRowRenderItem(currRow, limitRenderInnerHeight);
|
14960
|
+
if (cutRow) {
|
14961
|
+
cloneTbRender.addChild(cutRow);
|
14962
|
+
sumHeight += cutRow.rect.height;
|
14963
|
+
if (currRow.getItems().some(item => item.length !== 0)) {
|
14964
|
+
cutRows.push(currRow);
|
14959
14965
|
}
|
14960
14966
|
else {
|
14967
|
+
tbRender.removeChild(currRow);
|
14968
|
+
}
|
14969
|
+
if (currRow === joinRow) {
|
14961
14970
|
break;
|
14962
14971
|
}
|
14972
|
+
currRow = rows[++j];
|
14963
14973
|
}
|
14964
14974
|
else {
|
14965
14975
|
break;
|
@@ -14991,6 +15001,7 @@ class DocumentArrange {
|
|
14991
15001
|
// if (render.element.props.minHeight > 0 && render.rect.height < limitHeight) {
|
14992
15002
|
// return null;
|
14993
15003
|
// }
|
15004
|
+
render.remeasureState = true;
|
14994
15005
|
const cloneRowRender = render.element.createRenderObject();
|
14995
15006
|
cloneRowRender.rect.width = render.rect.width;
|
14996
15007
|
//cloneRowRender.rect.maxWidth = render.rect.height;
|
@@ -15887,7 +15898,10 @@ class ElementRenderCut {
|
|
15887
15898
|
documentRender.addChild(cloneFooterRender);
|
15888
15899
|
//审阅模式,添加审阅窗口
|
15889
15900
|
if (this.options.showReviewWindow && commentsRender) {
|
15890
|
-
const commentsContainer = commentsRender.element.createRenderObject({
|
15901
|
+
const commentsContainer = commentsRender.element.createRenderObject({
|
15902
|
+
options: this.options,
|
15903
|
+
renderCtx: this.renderContext
|
15904
|
+
});
|
15891
15905
|
commentsContainer.padding.top = bodyMarginTop;
|
15892
15906
|
commentsContainer.rect.height = documentRender.rect.height;
|
15893
15907
|
documentRender.addChild(commentsContainer);
|
@@ -15898,13 +15912,19 @@ class ElementRenderCut {
|
|
15898
15912
|
return docPages;
|
15899
15913
|
}
|
15900
15914
|
getDocInnerRect(documentRender) {
|
15901
|
-
const render = documentRender.element.createRenderObject({
|
15915
|
+
const render = documentRender.element.createRenderObject({
|
15916
|
+
options: this.options,
|
15917
|
+
renderCtx: this.renderContext
|
15918
|
+
});
|
15902
15919
|
render.padding = documentRender.padding;
|
15903
15920
|
return render.getInnerRect();
|
15904
15921
|
}
|
15905
15922
|
getFullViewDocRender(documentRender, documentElement) {
|
15906
15923
|
const commentsRender = documentRender.getChild(3);
|
15907
|
-
const commentsContainer = commentsRender.element.createRenderObject({
|
15924
|
+
const commentsContainer = commentsRender.element.createRenderObject({
|
15925
|
+
options: this.options,
|
15926
|
+
renderCtx: this.renderContext
|
15927
|
+
});
|
15908
15928
|
documentRender.rect.height -= commentsContainer.rect.height;
|
15909
15929
|
const bodyRender = documentRender.getChild(1);
|
15910
15930
|
if (this.options.showReviewWindow) {
|
@@ -15918,7 +15938,10 @@ class ElementRenderCut {
|
|
15918
15938
|
return [documentRender];
|
15919
15939
|
}
|
15920
15940
|
createEmptyBodyRender(bodyRender, limitRect) {
|
15921
|
-
const pageBodyRender = bodyRender.element.createRenderObject({
|
15941
|
+
const pageBodyRender = bodyRender.element.createRenderObject({
|
15942
|
+
options: this.options,
|
15943
|
+
renderCtx: this.renderContext
|
15944
|
+
});
|
15922
15945
|
pageBodyRender.rect.width = limitRect.width;
|
15923
15946
|
const bodyInnerLimitRect = pageBodyRender.getInnerRect();
|
15924
15947
|
if (this.options.fullPageView) {
|
@@ -15942,7 +15965,10 @@ class ElementRenderCut {
|
|
15942
15965
|
if (render instanceof TableRenderObject) {
|
15943
15966
|
return this.cutTable(render, limitHeight);
|
15944
15967
|
}
|
15945
|
-
const cloneRender = render.element.createRenderObject({
|
15968
|
+
const cloneRender = render.element.createRenderObject({
|
15969
|
+
options: this.options,
|
15970
|
+
renderCtx: this.renderContext
|
15971
|
+
});
|
15946
15972
|
cloneRender.setRenderWidth(render.rect.width);
|
15947
15973
|
if (render instanceof MuiltBlockLineRenderObject) {
|
15948
15974
|
let sumHeight = 0;
|
@@ -16077,16 +16103,16 @@ class ElementRenderCut {
|
|
16077
16103
|
}
|
16078
16104
|
const cloneRowRender = render.element.createRenderObject();
|
16079
16105
|
cloneRowRender.rect.width = render.rect.width;
|
16106
|
+
render.remeasureState = true;
|
16080
16107
|
//cloneRowRender.rect.maxWidth = render.rect.height;
|
16081
16108
|
const cellRenders = [...render.getItems()];
|
16082
16109
|
const cutCellRenders = [];
|
16083
16110
|
for (let i = 0; i < cellRenders.length; i++) {
|
16084
16111
|
const cellRender = cellRenders[i];
|
16112
|
+
this.markMergeRowRenderDirty(cellRender);
|
16085
16113
|
if (cellRender.rect.height > limitHeight) {
|
16086
|
-
//限制的外框尺寸
|
16087
|
-
const availHeight = limitHeight;
|
16088
16114
|
//限制的内框尺寸
|
16089
|
-
const limitCellHeight = ElementUtil.innerRectMaxHeight(cellRender,
|
16115
|
+
const limitCellHeight = ElementUtil.innerRectMaxHeight(cellRender, limitHeight);
|
16090
16116
|
const cutCellRender = this.cutRenderItem(cellRender, limitCellHeight);
|
16091
16117
|
if (cutCellRender) {
|
16092
16118
|
cutCellRenders.push(cutCellRender);
|
@@ -16110,7 +16136,10 @@ class ElementRenderCut {
|
|
16110
16136
|
for (let i = 0; i < cutCellRenders.length; i++) {
|
16111
16137
|
let cellRender = cutCellRenders[i];
|
16112
16138
|
if (!cellRender) {
|
16113
|
-
cellRender = cellRenders[i].element.createRenderObject({
|
16139
|
+
cellRender = cellRenders[i].element.createRenderObject({
|
16140
|
+
options: this.options,
|
16141
|
+
renderCtx: this.renderContext
|
16142
|
+
});
|
16114
16143
|
cellRender.rect = ElementUtil.cloneRect(cellRenders[i].rect);
|
16115
16144
|
ElementUtil.remeasure(cellRender);
|
16116
16145
|
}
|
@@ -16120,6 +16149,33 @@ class ElementRenderCut {
|
|
16120
16149
|
return cloneRowRender;
|
16121
16150
|
}
|
16122
16151
|
}
|
16152
|
+
/**
|
16153
|
+
* 标记合并单元格所在行需要重新计算
|
16154
|
+
* @param cellRender
|
16155
|
+
* @private
|
16156
|
+
*/
|
16157
|
+
markMergeRowRenderDirty(cellRender) {
|
16158
|
+
const cellEle = cellRender.element;
|
16159
|
+
if (cellEle.props.vMerge !== 'restart') {
|
16160
|
+
return;
|
16161
|
+
}
|
16162
|
+
const rowRender = cellRender.parent;
|
16163
|
+
rowRender.element;
|
16164
|
+
const tb = rowRender.parent;
|
16165
|
+
const cellYPos = cellRender.rect.y;
|
16166
|
+
for (let i = rowRender.getIndex() + 1; i < tb.length; i++) {
|
16167
|
+
const nextRowRender = tb.getChild(i);
|
16168
|
+
if (nextRowRender.rect.y <= cellYPos) {
|
16169
|
+
nextRowRender.remeasureState = true;
|
16170
|
+
nextRowRender.getItems().forEach(item => {
|
16171
|
+
this.markMergeRowRenderDirty(item);
|
16172
|
+
});
|
16173
|
+
}
|
16174
|
+
else {
|
16175
|
+
break;
|
16176
|
+
}
|
16177
|
+
}
|
16178
|
+
}
|
16123
16179
|
/**
|
16124
16180
|
* 修复->已经截断的合并单元格要向下移动到合适的位置
|
16125
16181
|
* @param tbRender
|
@@ -27941,6 +27997,7 @@ class DocEditor {
|
|
27941
27997
|
insertTable(rows, cols) {
|
27942
27998
|
const tb = TableUtil.createTable(rows, cols, this.selectionState);
|
27943
27999
|
this.documentChange.insertTable(tb);
|
28000
|
+
return tb;
|
27944
28001
|
}
|
27945
28002
|
/**
|
27946
28003
|
* 插入软换行符
|
@@ -28805,7 +28862,7 @@ class DocEditor {
|
|
28805
28862
|
rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
|
28806
28863
|
}
|
28807
28864
|
version() {
|
28808
|
-
return "2.1.
|
28865
|
+
return "2.1.18";
|
28809
28866
|
}
|
28810
28867
|
switchPageHeaderEditor() {
|
28811
28868
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|