@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-cjs.js
CHANGED
@@ -4703,10 +4703,16 @@ class TableRowElement extends BlockContainerElement {
|
|
4703
4703
|
}
|
4704
4704
|
}
|
4705
4705
|
class TableRowRenderObject extends MuiltBlockLineRenderObject {
|
4706
|
+
//被截断的行是否需要重新计算高度
|
4707
|
+
remeasureState = true;
|
4708
|
+
//当前行是否存在合并单元格
|
4709
|
+
hasMergeCells = false;
|
4706
4710
|
render(e) {
|
4707
4711
|
}
|
4708
4712
|
clone() {
|
4709
4713
|
const cloneRender = new TableRowRenderObject(this.element);
|
4714
|
+
cloneRender.remeasureState = this.remeasureState;
|
4715
|
+
cloneRender.hasMergeCells = this.hasMergeCells;
|
4710
4716
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
4711
4717
|
for (let i = 0; i < this.length; i++) {
|
4712
4718
|
cloneRender.addChild(this.getChild(i).clone());
|
@@ -11218,7 +11224,12 @@ class ElementUtil {
|
|
11218
11224
|
if (render instanceof TableRenderObject) {
|
11219
11225
|
//this.setTableAlign(render);
|
11220
11226
|
this.remeasureTableMerge(render);
|
11221
|
-
render.getItems().forEach(item =>
|
11227
|
+
render.getItems().forEach(item => {
|
11228
|
+
if (item.remeasureState) {
|
11229
|
+
this.remeasure(item, false);
|
11230
|
+
item.remeasureState = false;
|
11231
|
+
}
|
11232
|
+
}, null);
|
11222
11233
|
}
|
11223
11234
|
const innerRect = render.getInnerRect();
|
11224
11235
|
innerRect.height = 0;
|
@@ -11234,7 +11245,7 @@ class ElementUtil {
|
|
11234
11245
|
render.updateRenderHeight(innerRect);
|
11235
11246
|
return innerRect.height;
|
11236
11247
|
}
|
11237
|
-
static remeasureTableRow(rowRender,
|
11248
|
+
static remeasureTableRow(rowRender, forceColIndex = -1) {
|
11238
11249
|
const rowEle = rowRender.element;
|
11239
11250
|
let maxCellHeight = rowEle.props.minHeight > 20 ? rowEle.props.minHeight : 20;
|
11240
11251
|
//限制行最小高度
|
@@ -11243,7 +11254,7 @@ class ElementUtil {
|
|
11243
11254
|
for (let i = 0; i < rowRender.length; i++) {
|
11244
11255
|
const cellRender = rowRender.getChild(i);
|
11245
11256
|
const { vMerge } = cellRender.element.props;
|
11246
|
-
if (cellRender.rect.height > maxCellHeight && (vMerge !== 'restart' || i ===
|
11257
|
+
if (cellRender.rect.height > maxCellHeight && (vMerge !== 'restart' || i === forceColIndex)) {
|
11247
11258
|
maxCellHeight = cellRender.rect.height;
|
11248
11259
|
}
|
11249
11260
|
}
|
@@ -11252,7 +11263,7 @@ class ElementUtil {
|
|
11252
11263
|
const cellRender = rowRender.getChild(i);
|
11253
11264
|
const cellElement = cellRender.element;
|
11254
11265
|
const { vMerge } = cellElement.props;
|
11255
|
-
if ((vMerge !== 'restart' || i ===
|
11266
|
+
if ((vMerge !== 'restart' || i === forceColIndex) || cellRender.rect.height < maxCellHeight) {
|
11256
11267
|
cellRender.rect.height = maxCellHeight;
|
11257
11268
|
}
|
11258
11269
|
//处理单元格内容纵向居中
|
@@ -11347,11 +11358,16 @@ class ElementUtil {
|
|
11347
11358
|
let needReCalc = false;
|
11348
11359
|
for (let i = 0; i < tbRender.length; i++) {
|
11349
11360
|
const row = tbRender.getChild(i);
|
11361
|
+
if (row.hasMergeCells === false) {
|
11362
|
+
continue;
|
11363
|
+
}
|
11364
|
+
row.hasMergeCells = false;
|
11350
11365
|
for (let j = 0; j < row.length; j++) {
|
11351
11366
|
const cellRender = row.getChild(j);
|
11352
11367
|
const ele = cellRender.element;
|
11353
11368
|
const { vMerge } = ele.props;
|
11354
11369
|
if (vMerge === 'restart') {
|
11370
|
+
row.hasMergeCells = true;
|
11355
11371
|
const eleIndex = ele.getIndex();
|
11356
11372
|
const continueRows = this.getContinueVMergeRenderRows(tbRender, i, eleIndex);
|
11357
11373
|
if (!continueRows.length) {
|
@@ -14966,29 +14982,23 @@ class DocumentArrange {
|
|
14966
14982
|
while (currRow) {
|
14967
14983
|
const rowContentHeight = this.getBlockLineHeight(currRow);
|
14968
14984
|
if (rowContentHeight + sumHeight > limitHeight) {
|
14969
|
-
|
14970
|
-
|
14971
|
-
|
14972
|
-
|
14973
|
-
|
14974
|
-
|
14975
|
-
|
14976
|
-
|
14977
|
-
|
14978
|
-
if (currRow.getItems().some(item => item.length !== 0)) {
|
14979
|
-
cutRows.push(currRow);
|
14980
|
-
}
|
14981
|
-
else {
|
14982
|
-
tbRender.removeChild(currRow);
|
14983
|
-
}
|
14984
|
-
if (currRow === joinRow) {
|
14985
|
-
break;
|
14986
|
-
}
|
14987
|
-
currRow = rows[++j];
|
14985
|
+
//限制的外框尺寸
|
14986
|
+
const availHeight = limitHeight - sumHeight;
|
14987
|
+
const limitRenderInnerHeight = ElementUtil.innerRectMaxHeight(tbRender, availHeight);
|
14988
|
+
const cutRow = this.cutRowRenderItem(currRow, limitRenderInnerHeight);
|
14989
|
+
if (cutRow) {
|
14990
|
+
cloneTbRender.addChild(cutRow);
|
14991
|
+
sumHeight += cutRow.rect.height;
|
14992
|
+
if (currRow.getItems().some(item => item.length !== 0)) {
|
14993
|
+
cutRows.push(currRow);
|
14988
14994
|
}
|
14989
14995
|
else {
|
14996
|
+
tbRender.removeChild(currRow);
|
14997
|
+
}
|
14998
|
+
if (currRow === joinRow) {
|
14990
14999
|
break;
|
14991
15000
|
}
|
15001
|
+
currRow = rows[++j];
|
14992
15002
|
}
|
14993
15003
|
else {
|
14994
15004
|
break;
|
@@ -15020,6 +15030,7 @@ class DocumentArrange {
|
|
15020
15030
|
// if (render.element.props.minHeight > 0 && render.rect.height < limitHeight) {
|
15021
15031
|
// return null;
|
15022
15032
|
// }
|
15033
|
+
render.remeasureState = true;
|
15023
15034
|
const cloneRowRender = render.element.createRenderObject();
|
15024
15035
|
cloneRowRender.rect.width = render.rect.width;
|
15025
15036
|
//cloneRowRender.rect.maxWidth = render.rect.height;
|
@@ -15916,7 +15927,10 @@ class ElementRenderCut {
|
|
15916
15927
|
documentRender.addChild(cloneFooterRender);
|
15917
15928
|
//审阅模式,添加审阅窗口
|
15918
15929
|
if (this.options.showReviewWindow && commentsRender) {
|
15919
|
-
const commentsContainer = commentsRender.element.createRenderObject({
|
15930
|
+
const commentsContainer = commentsRender.element.createRenderObject({
|
15931
|
+
options: this.options,
|
15932
|
+
renderCtx: this.renderContext
|
15933
|
+
});
|
15920
15934
|
commentsContainer.padding.top = bodyMarginTop;
|
15921
15935
|
commentsContainer.rect.height = documentRender.rect.height;
|
15922
15936
|
documentRender.addChild(commentsContainer);
|
@@ -15927,13 +15941,19 @@ class ElementRenderCut {
|
|
15927
15941
|
return docPages;
|
15928
15942
|
}
|
15929
15943
|
getDocInnerRect(documentRender) {
|
15930
|
-
const render = documentRender.element.createRenderObject({
|
15944
|
+
const render = documentRender.element.createRenderObject({
|
15945
|
+
options: this.options,
|
15946
|
+
renderCtx: this.renderContext
|
15947
|
+
});
|
15931
15948
|
render.padding = documentRender.padding;
|
15932
15949
|
return render.getInnerRect();
|
15933
15950
|
}
|
15934
15951
|
getFullViewDocRender(documentRender, documentElement) {
|
15935
15952
|
const commentsRender = documentRender.getChild(3);
|
15936
|
-
const commentsContainer = commentsRender.element.createRenderObject({
|
15953
|
+
const commentsContainer = commentsRender.element.createRenderObject({
|
15954
|
+
options: this.options,
|
15955
|
+
renderCtx: this.renderContext
|
15956
|
+
});
|
15937
15957
|
documentRender.rect.height -= commentsContainer.rect.height;
|
15938
15958
|
const bodyRender = documentRender.getChild(1);
|
15939
15959
|
if (this.options.showReviewWindow) {
|
@@ -15947,7 +15967,10 @@ class ElementRenderCut {
|
|
15947
15967
|
return [documentRender];
|
15948
15968
|
}
|
15949
15969
|
createEmptyBodyRender(bodyRender, limitRect) {
|
15950
|
-
const pageBodyRender = bodyRender.element.createRenderObject({
|
15970
|
+
const pageBodyRender = bodyRender.element.createRenderObject({
|
15971
|
+
options: this.options,
|
15972
|
+
renderCtx: this.renderContext
|
15973
|
+
});
|
15951
15974
|
pageBodyRender.rect.width = limitRect.width;
|
15952
15975
|
const bodyInnerLimitRect = pageBodyRender.getInnerRect();
|
15953
15976
|
if (this.options.fullPageView) {
|
@@ -15971,7 +15994,10 @@ class ElementRenderCut {
|
|
15971
15994
|
if (render instanceof TableRenderObject) {
|
15972
15995
|
return this.cutTable(render, limitHeight);
|
15973
15996
|
}
|
15974
|
-
const cloneRender = render.element.createRenderObject({
|
15997
|
+
const cloneRender = render.element.createRenderObject({
|
15998
|
+
options: this.options,
|
15999
|
+
renderCtx: this.renderContext
|
16000
|
+
});
|
15975
16001
|
cloneRender.setRenderWidth(render.rect.width);
|
15976
16002
|
if (render instanceof MuiltBlockLineRenderObject) {
|
15977
16003
|
let sumHeight = 0;
|
@@ -16106,16 +16132,16 @@ class ElementRenderCut {
|
|
16106
16132
|
}
|
16107
16133
|
const cloneRowRender = render.element.createRenderObject();
|
16108
16134
|
cloneRowRender.rect.width = render.rect.width;
|
16135
|
+
render.remeasureState = true;
|
16109
16136
|
//cloneRowRender.rect.maxWidth = render.rect.height;
|
16110
16137
|
const cellRenders = [...render.getItems()];
|
16111
16138
|
const cutCellRenders = [];
|
16112
16139
|
for (let i = 0; i < cellRenders.length; i++) {
|
16113
16140
|
const cellRender = cellRenders[i];
|
16141
|
+
this.markMergeRowRenderDirty(cellRender);
|
16114
16142
|
if (cellRender.rect.height > limitHeight) {
|
16115
|
-
//限制的外框尺寸
|
16116
|
-
const availHeight = limitHeight;
|
16117
16143
|
//限制的内框尺寸
|
16118
|
-
const limitCellHeight = ElementUtil.innerRectMaxHeight(cellRender,
|
16144
|
+
const limitCellHeight = ElementUtil.innerRectMaxHeight(cellRender, limitHeight);
|
16119
16145
|
const cutCellRender = this.cutRenderItem(cellRender, limitCellHeight);
|
16120
16146
|
if (cutCellRender) {
|
16121
16147
|
cutCellRenders.push(cutCellRender);
|
@@ -16139,7 +16165,10 @@ class ElementRenderCut {
|
|
16139
16165
|
for (let i = 0; i < cutCellRenders.length; i++) {
|
16140
16166
|
let cellRender = cutCellRenders[i];
|
16141
16167
|
if (!cellRender) {
|
16142
|
-
cellRender = cellRenders[i].element.createRenderObject({
|
16168
|
+
cellRender = cellRenders[i].element.createRenderObject({
|
16169
|
+
options: this.options,
|
16170
|
+
renderCtx: this.renderContext
|
16171
|
+
});
|
16143
16172
|
cellRender.rect = ElementUtil.cloneRect(cellRenders[i].rect);
|
16144
16173
|
ElementUtil.remeasure(cellRender);
|
16145
16174
|
}
|
@@ -16149,6 +16178,33 @@ class ElementRenderCut {
|
|
16149
16178
|
return cloneRowRender;
|
16150
16179
|
}
|
16151
16180
|
}
|
16181
|
+
/**
|
16182
|
+
* 标记合并单元格所在行需要重新计算
|
16183
|
+
* @param cellRender
|
16184
|
+
* @private
|
16185
|
+
*/
|
16186
|
+
markMergeRowRenderDirty(cellRender) {
|
16187
|
+
const cellEle = cellRender.element;
|
16188
|
+
if (cellEle.props.vMerge !== 'restart') {
|
16189
|
+
return;
|
16190
|
+
}
|
16191
|
+
const rowRender = cellRender.parent;
|
16192
|
+
rowRender.element;
|
16193
|
+
const tb = rowRender.parent;
|
16194
|
+
const cellYPos = cellRender.rect.y;
|
16195
|
+
for (let i = rowRender.getIndex() + 1; i < tb.length; i++) {
|
16196
|
+
const nextRowRender = tb.getChild(i);
|
16197
|
+
if (nextRowRender.rect.y <= cellYPos) {
|
16198
|
+
nextRowRender.remeasureState = true;
|
16199
|
+
nextRowRender.getItems().forEach(item => {
|
16200
|
+
this.markMergeRowRenderDirty(item);
|
16201
|
+
});
|
16202
|
+
}
|
16203
|
+
else {
|
16204
|
+
break;
|
16205
|
+
}
|
16206
|
+
}
|
16207
|
+
}
|
16152
16208
|
/**
|
16153
16209
|
* 修复->已经截断的合并单元格要向下移动到合适的位置
|
16154
16210
|
* @param tbRender
|
@@ -27970,6 +28026,7 @@ class DocEditor {
|
|
27970
28026
|
insertTable(rows, cols) {
|
27971
28027
|
const tb = TableUtil.createTable(rows, cols, this.selectionState);
|
27972
28028
|
this.documentChange.insertTable(tb);
|
28029
|
+
return tb;
|
27973
28030
|
}
|
27974
28031
|
/**
|
27975
28032
|
* 插入软换行符
|
@@ -28834,7 +28891,7 @@ class DocEditor {
|
|
28834
28891
|
rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
|
28835
28892
|
}
|
28836
28893
|
version() {
|
28837
|
-
return "2.1.
|
28894
|
+
return "2.1.18";
|
28838
28895
|
}
|
28839
28896
|
switchPageHeaderEditor() {
|
28840
28897
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|