@hailin-zheng/editor-core 2.2.42 → 2.2.44

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.js CHANGED
@@ -1372,8 +1372,6 @@ class Element {
1372
1372
  disableClick;
1373
1373
  //是否被释放
1374
1374
  disposed;
1375
- //加载完毕
1376
- loaded;
1377
1375
  visibleExpr;
1378
1376
  effectExpr;
1379
1377
  attribute;
@@ -13512,6 +13510,49 @@ class ElementUtil {
13512
13510
  static isDataEle(ele) {
13513
13511
  return validateDataEle(ele) || ele instanceof DataElementGroupElement;
13514
13512
  }
13513
+ static getPaintRenders(ele) {
13514
+ const parents = this.getParentElements(ele);
13515
+ const docRender = parents[parents.length - 1];
13516
+ const docRenders = docRender.paintRenders;
13517
+ const getMatchRender = (ele, renders, mode, res) => {
13518
+ const items = res ?? [];
13519
+ for (let i = 0; i < renders.length; i++) {
13520
+ const render = renders[i];
13521
+ if (render['children']) {
13522
+ for (let j = 0; j < render.length; j++) {
13523
+ if (render.getChild(j).element === ele) {
13524
+ items.push(render.getChild(j));
13525
+ }
13526
+ else if (!render.getChild(j).element) {
13527
+ getMatchRender(ele, [render.getChild(j)], mode, items);
13528
+ }
13529
+ else if (ele.type === 'tr' && mode === 'f' && render.getChild(j)['hasMergeCell']) {
13530
+ items.push(render.getChild(j));
13531
+ }
13532
+ }
13533
+ }
13534
+ }
13535
+ return items;
13536
+ };
13537
+ let paintRenders = docRenders;
13538
+ for (let i = parents.length - 2; i >= 0; i--) {
13539
+ const parent = parents[i];
13540
+ paintRenders = getMatchRender(parent, paintRenders, i === 0 ? 'r' : 'f');
13541
+ }
13542
+ return paintRenders;
13543
+ }
13544
+ static iterateChildren(ele, cb) {
13545
+ cb(ele);
13546
+ for (let i = 0; i < ele.length; i++) {
13547
+ const e = ele.getChild(i);
13548
+ if (e instanceof BranchElement) {
13549
+ this.iterateChildren(e, cb);
13550
+ }
13551
+ else {
13552
+ cb(e);
13553
+ }
13554
+ }
13555
+ }
13515
13556
  }
13516
13557
 
13517
13558
  var TextUnitsHolder;
@@ -15877,38 +15918,70 @@ class DocumentArrange {
15877
15918
  return;
15878
15919
  }
15879
15920
  const firstRow = cutTable.getChild(0);
15880
- //首行没有被合并导致缺少的单元格
15881
- if (firstRow.length === cutTable.element.getColsCount()) {
15921
+ //校验首行是否为full-row状态
15922
+ const firstRowCellWidth = firstRow.getItems().reduce((prev, curr) => prev + curr.rect.width, 0);
15923
+ if (firstRowCellWidth === cutTable.rect.width) {
15882
15924
  return;
15883
15925
  }
15884
- let prevRectX = 0;
15885
- let colIndex = 0;
15886
- while (prevRectX < firstRow.rect.width) {
15887
- const cell = firstRow.getChild(colIndex);
15888
- if (!cell || cell.rect.x !== prevRectX) {
15889
- const aboveCell = this.findAboveCellByPos(aboveTable, prevRectX);
15890
- if (aboveCell) {
15891
- const fillEmptCell = this.pMeasure.createRenderObject(aboveCell.element);
15892
- fillEmptCell.rect.x = prevRectX;
15893
- fillEmptCell.rect.width = aboveCell.rect.width;
15894
- fillEmptCell.rect.height = firstRow.rect.height;
15895
- firstRow.insertChild(fillEmptCell, colIndex);
15896
- firstRow.hasMergeCells = undefined;
15926
+ //向上行打补丁的标记
15927
+ let patchBelowRowFlag = true;
15928
+ if (cutTable.length > 1) {
15929
+ const cells = [...firstRow.getItems()];
15930
+ //判断下一行中是否有缺失的单元格,恰好能放下
15931
+ const belowRow = cutTable.getChild(1);
15932
+ const belowCells = belowRow.getItems();
15933
+ //判断和下一行的单元格都不相交
15934
+ if (belowCells.every(a => !cells.some(b => CommonUtil.isIntersect(a.rect, b.rect)))) {
15935
+ patchBelowRowFlag = false;
15936
+ }
15937
+ }
15938
+ if (patchBelowRowFlag) {
15939
+ let prevRectX = 0;
15940
+ let colIndex = 0;
15941
+ //以下处理被截断的表格只有一行,需要向前方的表格计算位置进行填充空单元格
15942
+ while (prevRectX < firstRow.rect.width) {
15943
+ const cell = firstRow.getChild(colIndex);
15944
+ if (!cell || cell.rect.x !== prevRectX) {
15945
+ const aboveCell = this.findAboveCellByPos(aboveTable, prevRectX);
15946
+ if (aboveCell) {
15947
+ const fillEmptCell = this.pMeasure.createRenderObject(aboveCell.element);
15948
+ fillEmptCell.rect.x = prevRectX;
15949
+ fillEmptCell.rect.width = aboveCell.rect.width;
15950
+ fillEmptCell.rect.height = firstRow.rect.height;
15951
+ firstRow.insertChild(fillEmptCell, colIndex);
15952
+ firstRow.hasMergeCells = undefined;
15953
+ }
15954
+ else {
15955
+ throw new Error('未找到可以填充的单元格');
15956
+ }
15897
15957
  }
15898
15958
  else {
15899
- throw new Error('未找到可以填充的单元格');
15959
+ prevRectX += cell.rect.width;
15960
+ colIndex++;
15900
15961
  }
15901
15962
  }
15902
- else {
15903
- prevRectX += cell.rect.width;
15904
- colIndex++;
15963
+ ElementUtil.remeasure(firstRow);
15964
+ ElementUtil.remeasure(cutTable);
15965
+ }
15966
+ else {
15967
+ const cells = [...firstRow.getItems()];
15968
+ //判断下一行中是否有缺失的单元格,恰好能放下
15969
+ const belowRow = cutTable.getChild(1);
15970
+ for (let i = 0; i < cells.length; i++) {
15971
+ const cell = cells[i];
15972
+ firstRow.removeChild(cell);
15973
+ belowRow.addChild(cell);
15974
+ belowRow.hasMergeCells = undefined;
15905
15975
  }
15976
+ belowRow.getItems().sort((a, b) => a.rect.x - b.rect.x);
15977
+ firstRow.parent.removeChild(firstRow);
15978
+ ElementUtil.remeasure(belowRow);
15979
+ ElementUtil.remeasure(cutTable);
15980
+ this.fixCutTable2(cutTable, aboveTable);
15906
15981
  }
15907
- ElementUtil.remeasure(firstRow);
15908
- ElementUtil.remeasure(cutTable);
15909
15982
  }
15910
15983
  /**
15911
- * 超找指定位置的单元格
15984
+ * 查找指定位置的单元格
15912
15985
  * @param table
15913
15986
  * @param x
15914
15987
  * @returns
@@ -15996,18 +16069,18 @@ class DocumentArrange {
15996
16069
  * @param ele
15997
16070
  */
15998
16071
  setMeasureCompletedModifyFlag(ele) {
16072
+ if (ele.modifyFlag === ModifyFlag.None) {
16073
+ return;
16074
+ }
15999
16075
  if (ele instanceof BranchElement) {
16000
16076
  for (let i = 0; i < ele.length; i++) {
16001
16077
  this.setMeasureCompletedModifyFlag(ele.getChild(i));
16002
16078
  }
16003
16079
  }
16004
16080
  ele.modifyFlag = ModifyFlag.None;
16005
- if (!ele.loaded) {
16006
- ele.loaded = true;
16007
- }
16008
16081
  }
16009
16082
  clearPaintCache(ele, data) {
16010
- ele.paintRenders.length = 0;
16083
+ ele.paintRenders = [];
16011
16084
  ele.beginMeasure(data);
16012
16085
  if (ele.modifyFlag !== ModifyFlag.None) {
16013
16086
  ele.onChangeSubject.next();
@@ -16058,7 +16131,7 @@ class DocumentArrange {
16058
16131
  }
16059
16132
  for (let i = 0; i < renderTree.length; i++) {
16060
16133
  const currRender = renderTree.getChild(i);
16061
- if (currRender instanceof BranchRenderObject) {
16134
+ if (currRender['children']) {
16062
16135
  this.cacheRenders(currRender);
16063
16136
  }
16064
16137
  else {
@@ -16088,52 +16161,58 @@ class DocumentArrange {
16088
16161
  if (!ops.length) {
16089
16162
  return false;
16090
16163
  }
16091
- if (ops.every(op => 'delText' in op.ops || 'insText' in op.ops || ('insert' in op.ops && op.ops.insert.type === 'text'))) {
16164
+ //判断当前所有的操作都是一个段落
16165
+ const paras = ops.map(item => {
16092
16166
  const parentIndex = ops[0].parentIndex;
16093
16167
  //查找父容器
16094
16168
  const parentEle = ElementUtil.getControlByIndex(this.docCtx.document, { currIndex: -1, index: parentIndex }, true);
16095
16169
  const paraEle = ElementUtil.getParent(parentEle, item => item instanceof ParagraphElement);
16096
- if (!paraEle) {
16097
- return false;
16098
- }
16099
- const cacheRender = paraEle.cacheRender;
16100
- if (!cacheRender) {
16101
- return false;
16102
- }
16103
- //已经绘制的渲染对象
16104
- const paintRenders = paraEle.paintRenders;
16105
- const measureParaRenders = this.pMeasure.measureParagraph(paraEle, cacheRender.rect.width);
16106
- if (measureParaRenders.length !== 1) {
16107
- return false;
16108
- }
16109
- const measureParaRender = measureParaRenders[0];
16110
- if (cacheRender.rect.width !== measureParaRender.rect.width || cacheRender.rect.height !== measureParaRender.rect.height) {
16111
- return false;
16112
- }
16113
- //第一种情况,出现在页面或者页尾上
16114
- const measureParaRenderLines = measureParaRender.length;
16115
- const paintRendersLines = paintRenders.reduce((prev, curr) => {
16116
- prev.push(...curr.getItems());
16117
- return prev;
16118
- }, []);
16119
- if (paintRendersLines.length % measureParaRenderLines !== 0) {
16120
- return false;
16121
- }
16122
- //完全一致,逐个替换
16123
- if (paintRendersLines.length === measureParaRenderLines) {
16124
- for (let i = 0; i < paintRendersLines.length; i++) {
16125
- const line = paintRendersLines[i];
16126
- const index = line.getIndex();
16127
- const tempLine = measureParaRender.getChild(i).clone();
16128
- tempLine.rect.width = line.rect.width;
16129
- tempLine.rect.height = line.rect.height;
16130
- tempLine.rect.x = line.rect.x;
16131
- tempLine.rect.y = line.rect.y;
16132
- line.parent.insertChild(tempLine, index);
16133
- line.parent.removeChild(line);
16134
- }
16135
- return true;
16170
+ return paraEle;
16171
+ });
16172
+ if (!paras.every(item => item === paras[0])) {
16173
+ return false;
16174
+ }
16175
+ const paraEle = paras[0];
16176
+ if (!paraEle) {
16177
+ return false;
16178
+ }
16179
+ const cacheRender = paraEle.cacheRender;
16180
+ if (!cacheRender) {
16181
+ return false;
16182
+ }
16183
+ //已经绘制的渲染对象
16184
+ const paintRenders = paraEle.paintRenders;
16185
+ const measureParaRenders = this.pMeasure.measureParagraph(paraEle, cacheRender.rect.width);
16186
+ if (measureParaRenders.length !== 1) {
16187
+ return false;
16188
+ }
16189
+ const measureParaRender = measureParaRenders[0];
16190
+ if (cacheRender.rect.width !== measureParaRender.rect.width || cacheRender.rect.height !== measureParaRender.rect.height) {
16191
+ return false;
16192
+ }
16193
+ //第一种情况,出现在页面或者页尾上
16194
+ const measureParaRenderLines = measureParaRender.length;
16195
+ const paintRendersLines = paintRenders.reduce((prev, curr) => {
16196
+ prev.push(...curr.getItems());
16197
+ return prev;
16198
+ }, []);
16199
+ if (paintRendersLines.length % measureParaRenderLines !== 0) {
16200
+ return false;
16201
+ }
16202
+ //完全一致,逐个替换
16203
+ if (paintRendersLines.length === measureParaRenderLines) {
16204
+ for (let i = 0; i < paintRendersLines.length; i++) {
16205
+ const line = paintRendersLines[i];
16206
+ const index = line.getIndex();
16207
+ const tempLine = measureParaRender.getChild(i).clone();
16208
+ tempLine.rect.width = line.rect.width;
16209
+ tempLine.rect.height = line.rect.height;
16210
+ tempLine.rect.x = line.rect.x;
16211
+ tempLine.rect.y = line.rect.y;
16212
+ line.parent.insertChild(tempLine, index);
16213
+ line.parent.removeChild(line);
16136
16214
  }
16215
+ return true;
16137
16216
  }
16138
16217
  return false;
16139
16218
  }
@@ -16738,7 +16817,6 @@ class DocumentEvent {
16738
16817
  render: hitInfo.render,
16739
16818
  relativeRect: hitInfo.render.rect,
16740
16819
  absoluteRect: hitInfo.absoluteRenderRect,
16741
- shadowRenderIndex: element.paintRenders.indexOf(hitInfo.render),
16742
16820
  startRegion: ElementUtil.getRenderObjectRegion(hitInfo.render)
16743
16821
  };
16744
16822
  }
@@ -21960,10 +22038,10 @@ class EditorListVNode {
21960
22038
  this.currentOpenStatus.value = 'open';
21961
22039
  }
21962
22040
  render() {
21963
- // const editor = this.editor;
21964
- // if (editor.viewOptions.docMode === DocMode.View || !editor.selectionState.editable || editor['documentEvent'].ismousedown) {
21965
- // return null;
21966
- // }
22041
+ const editor = this.editor;
22042
+ if (editor.viewOptions.docMode === DocMode.View || !editor.selectionState.editable || editor['documentEvent'].ismousedown) {
22043
+ return null;
22044
+ }
21967
22045
  // this.init();
21968
22046
  // const dataEle = editor.getCurrentDataElement();
21969
22047
  // if (dataEle && dataEle instanceof DataElementList && dataEle.props.editable) {
@@ -21979,7 +22057,6 @@ class EditorListVNode {
21979
22057
  if (!this.currentEle) {
21980
22058
  return null;
21981
22059
  }
21982
- const editor = this.editor;
21983
22060
  const multiSelect = this.currentEle.props.multiSelect;
21984
22061
  const position = editor.getDataElementPosition(this.currentEle.startDecorate);
21985
22062
  const onChangeHandler = (code) => {
@@ -22484,9 +22561,7 @@ class DocEditor {
22484
22561
  if (this.docCtx.currentRefreshType) {
22485
22562
  this.onBeforeRefreshDocument.next();
22486
22563
  this.docComment.readComments();
22487
- suppressTracking(() => {
22488
- this.documentPaginator.rePages();
22489
- });
22564
+ this.documentPaginator.rePages();
22490
22565
  }
22491
22566
  this.updateSelection();
22492
22567
  this.setCursor();
@@ -22742,6 +22817,15 @@ class DocEditor {
22742
22817
  height
22743
22818
  };
22744
22819
  }
22820
+ getPaintRenders(ele) {
22821
+ const res = ElementUtil.getPaintRenders(ele);
22822
+ // console.time('getPaintRenders')
22823
+ // for (let i = 0; i < 1000; i++) {
22824
+ // ElementUtil.getPaintRenders(ele);
22825
+ // }
22826
+ // console.timeEnd('getPaintRenders')
22827
+ return res;
22828
+ }
22745
22829
  /**
22746
22830
  * 获取文档模型
22747
22831
  * @returns
@@ -23650,13 +23734,14 @@ class DocEditor {
23650
23734
  rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
23651
23735
  }
23652
23736
  version() {
23653
- return "2.2.42";
23737
+ return "2.2.44";
23654
23738
  }
23655
23739
  switchPageHeaderEditor() {
23656
23740
  this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
23657
23741
  }
23658
- getTextContent() {
23659
- const paras = this.docCtx.document.treeFilter(item => item instanceof ParagraphElement);
23742
+ getTextContent(ele) {
23743
+ ele = ele ?? this.docCtx.document;
23744
+ const paras = ele.treeFilter(item => item instanceof ParagraphElement);
23660
23745
  const paraTexts = paras.map(item => ElementSerialize.serializeString(item));
23661
23746
  return paraTexts.join('');
23662
23747
  }
@@ -23829,11 +23914,14 @@ class DocEditor {
23829
23914
  const keyEvent = new KeyboradElementEvent(this.docCtx);
23830
23915
  const keyStr = CommonUtil.getKeyCombination(evt);
23831
23916
  keyEvent.sourceEvent = evt;
23917
+ if (keyStr === 'Ctrl+f') {
23918
+ debugger;
23919
+ }
23832
23920
  if (DocumentEvent.invokeEvent('ElementKeyDown', this.docCtx.selectionState.startControl, keyEvent, 'All')) {
23833
23921
  evt.preventDefault();
23834
23922
  return;
23835
23923
  }
23836
- if (['ArrowDown', 'ArrowUp']) {
23924
+ if (['ArrowDown', 'ArrowUp'].indexOf(keyStr) > -1) {
23837
23925
  if (this.docCtx.suggestions.prepareSuggestions.length) {
23838
23926
  this.onSuggestionsKeydown(evt);
23839
23927
  }
@@ -23861,7 +23949,7 @@ class DocEditor {
23861
23949
  }
23862
23950
  }
23863
23951
  }
23864
- else if (['Ctrl+f', 'Cmd+f'].indexOf(keyStr) > -1) {
23952
+ else if (['Ctrl+f', 'Meta+f'].indexOf(keyStr) > -1) {
23865
23953
  evt.preventDefault();
23866
23954
  this.searchPanel.switchVisible();
23867
23955
  this.onPatchVNodeSubject.next();
@@ -24015,6 +24103,12 @@ class DocEditor {
24015
24103
  insertContent(data) {
24016
24104
  this.documentChange.onInsertContent(data);
24017
24105
  }
24106
+ /**
24107
+ * 遍历文档节点执行任务
24108
+ */
24109
+ iterateChildren(cb) {
24110
+ ElementUtil.iterateChildren(this.docCtx.document, cb);
24111
+ }
24018
24112
  }
24019
24113
 
24020
24114
  /**
@@ -29422,4 +29516,3 @@ function removeDuplicatesEvent(events) {
29422
29516
  }
29423
29517
 
29424
29518
  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, CommonUtil, CommsContainerElement, CommsContainerRenderObject, ContentMenuItem, ContextMenuElementEvent, CopyElementEvent, DOMEventSource, DOMSubscription, DataContainerElement, DataContainerFactory, DataContainerProps, DataContainerRenderObject, 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, DocInputSuggestions, DocMode, DocumentBodyElement, DocumentBodyFactory, DocumentBodyPartElement, DocumentBodyPartFactory, DocumentBodyPartRenderObject, DocumentBodyRenderObject, DocumentChange, DocumentCombine, DocumentComment, DocumentContainerRender, DocumentContext, DocumentCursor, DocumentElement, DocumentEvalFunc, DocumentEvent, DocumentFactory, DocumentFooterElement, DocumentFooterFactory, DocumentFooterRenderObject, DocumentHeaderElement, DocumentHeaderFactory, DocumentHeaderRenderObject, DocumentInput, DocumentPaginator, DocumentPrintOffscreen, DocumentPrintOffscreenBase, DocumentProps, DocumentRenderObject, DocumentSelection, DocumentTemplate, DropElementEvent, EditMode, EditorContext, Element, ElementEvent, ElementFactory, ElementReader, ElementSerialize, ElementUtil, EventBus, EventMap, EventSourceCore, FillNullSpaceElement, FillNullSpaceRenderObject, GetTrackTipsEvent, GotCursorEvent, HLNode, IDispose, INotifyPropertyChanged, InlineBlockContainer, InlineGroupElement, InlineGroupInputElement, InlineGroupRenderObject, InlineMuiltBlockLineRenderObject, InputElementEvent, IsInSideDataElement, IsInSideDataGroup, IsInSideInlineGroupInputElement, KeyboradElementEvent, LeafElement, LeafRenderObject, LineElement, LineFactory, LineProps, LineRenderObject, LostCursorEvent, MarginProps, ModifyFlag, MouseElementEvent, MousedownElementEvent, MultiBlockLineRenderObject, NS, OnceSubject, PSymbolElement, PSymbolRenderObject, PaddingProps, PageBreakElement, PageBreakFactory, PageBreakRenderObject, PageOptions, PaintContent, ParagraphElement, ParagraphFactory, ParagraphLineRectRenderObject, ParagraphNumberType, ParagraphProps, ParagraphRenderObject, PasteElementEvent, PermanentTeethElement, PermanentTeethFactory, PermanentTeethProps, PermanentTeethRenderObject, PictureElement, PictureFactory, PictureProps, PictureRenderObject, RadioBoxElement, RadioBoxFactory, RadioBoxProps, RadioBoxRenderObject, RangeUtil, Rect, RenderContext, RenderObject, RenderObjectType, ResizeLeafRenderObject, RowMinHeight, RunElementFactory, SVGElement, SVGFactory, SVGProps, SVGRenderObject, SelectionOverlays, SelectionRange, SelectionState, Subject, SubjectSubscription, Subscription, TEXT_HEIGHT_FACTOR, TabElement, TabFactory, TabRenderObject, TableCellElement, TableCellFactory, TableCellProps, TableCellRenderObject, TableElement, TableFactory, TableProps, TableRenderObject, TableRowElement, TableRowFactory, TableRowProps, TableRowRenderObject, TableSplitCell, TableUtil, TextGroupElement, TextGroupFactory, TextGroupRenderObject, TextProps, TextUnitsHolder, TrackRunElement, TrackRunProps, TrackRunRenderObject, TrackRunTypeEnum, ValidateCondition, ValidateElement, ValidateProps, ValidateRenderObject, ViewOptions, addReturn, clearChildrenRenderCache, clearTraces, cloneChildren, cloneElementBase, defaultParaHanging, deleteCurrentParagraph, docOpsMap, elementTypeEventHandler, exportDataEleDecoratorSVG$1 as exportDataEleDecoratorSVG, falseChar, fontMapFunc, formatEle, fromEvent, generatePatch, getCalleeName, getCurrentParaGroupRenders, getFocusTextSegment, getRenderPosToDoc, inputText, insertEle, invokeTypeHandler, isDate, logUpdateEleProps, objectToString$4 as objectToString, onTableContextmenu, onceTask, parser, reactiveMap, refreshEditor, removeEle, removeText, renderErrorTip, renderUnderWavyLine, renderUnderline, runTextLineRender, setChildrenModifyFlag, setNotifyChangedCallback, setTraceTrackingFlag, suppressTracking, targetMaps, textLineRenderMode, toRawType, toTypeString, trueChar, updatePartialProps, validateDataEle, validateDataEleRenderObj, validateDataGroup, validateInlineDataEle, validateInlineInputRenderObj, watchChanged };
29425
- //# sourceMappingURL=index.js.map
@@ -1,6 +1,7 @@
1
1
  import { ContentMenuItem } from './framework/element-event-define';
2
2
  import { ElementReader } from './framework/element-reader';
3
3
  import { SelectionState } from './framework/selection/document-selection';
4
+ import { RenderObject } from './framework/render-define';
4
5
  import { BlockContainerElement, Element, ICancelTokenFn, LeafElement, MarginProps, OrientType, PageLayoutMode, Position, Rect, SerializeProps, ViewOptions } from './framework/element-define';
5
6
  import { DataElementGroupElement, DataElementInlineGroup, DataElementLeaf, DocumentElement, ParagraphElement, TableCellElement, TableElement, TableRowElement } from './framework/impl';
6
7
  import { CellDiagonal, ParagraphNumberType, ParagraphProps, TextProps } from './framework/element-props';
@@ -159,6 +160,7 @@ export declare class DocEditor {
159
160
  * @returns
160
161
  */
161
162
  getDataElementPosition(element: LeafElement): Omit<Rect, 'width'> | null;
163
+ getPaintRenders(ele: Element): Array<RenderObject>;
162
164
  /**
163
165
  * 获取文档模型
164
166
  * @returns
@@ -475,7 +477,7 @@ export declare class DocEditor {
475
477
  refreshDocRule(rule: DocRule): void;
476
478
  version(): string;
477
479
  switchPageHeaderEditor(): void;
478
- getTextContent(): string;
480
+ getTextContent(ele?: BlockContainerElement): string;
479
481
  emit(event: string, args: any): void;
480
482
  createResizableElement(): VNode;
481
483
  /**
@@ -535,6 +537,10 @@ export declare class DocEditor {
535
537
  text: string;
536
538
  doc: string;
537
539
  }): void;
540
+ /**
541
+ * 遍历文档节点执行任务
542
+ */
543
+ iterateChildren(cb: (ele: Element) => void): void;
538
544
  }
539
545
  export declare type EditorCurrentPos = {
540
546
  pos: Position;
@@ -0,0 +1,96 @@
1
+ import { Element, IBeginMeasureData, ViewOptions } from "../element-define";
2
+ import { EditorContext } from "../document-context";
3
+ import { RenderContextType } from "../render-context";
4
+ import { DocumentRenderObject, ParagraphElement, TableCellRenderObject, TableRenderObject, TableRowRenderObject } from "../impl";
5
+ import { BlockContentRenderObject, BranchRenderObject } from "../render-define";
6
+ import { DynamicExecute } from "../code-interpreter/dynamic-execute";
7
+ import { ParagraphMeasure } from "./paragraph-arrange";
8
+ import { SelectionEffectObject } from "../element-props";
9
+ export declare class ArrangeManager {
10
+ docCtx: EditorContext;
11
+ renderCtx: RenderContextType;
12
+ seo: SelectionEffectObject;
13
+ options: ViewOptions;
14
+ execute: DynamicExecute;
15
+ pMeasure: ParagraphMeasure;
16
+ constructor(docCtx: EditorContext, renderCtx: RenderContextType, seo: SelectionEffectObject);
17
+ /**
18
+ * 测量排版过程
19
+ * 1.先测量排版页眉、页脚
20
+ * 2.根据页边距以及页眉、页脚测量的高度,获取"页体高度"
21
+ * 3.根据页体高度测量页体内容,并实时分页
22
+ * 3.1测量页体直接子内容
23
+ * 3.1.1页体直接子内容递归测量孙子元素
24
+ * 3.2完成页体子内容测量,并分页切分
25
+ */
26
+ measureDoc(): Array<DocumentRenderObject>;
27
+ /**
28
+ * 重置文档测量的相关信息
29
+ * @param data
30
+ * @private
31
+ */
32
+ private reset;
33
+ private arrangeDoc;
34
+ private arrangeDocs;
35
+ private createEmptyBodyRender;
36
+ private measureControl;
37
+ private processTableTextLineMode;
38
+ private getDocInnerRect;
39
+ /**
40
+ * 切割渲染元素
41
+ * @param render 被切割的对象
42
+ * @param limitHeight
43
+ * @returns
44
+ */
45
+ cutRenderItem(render: BlockContentRenderObject, limitHeight: number): BlockContentRenderObject | null;
46
+ /**
47
+ * 切割渲染元素
48
+ * @param tbRender 被切割的对象
49
+ * @param limitHeight
50
+ * @returns
51
+ */
52
+ cutTable(tbRender: TableRenderObject, limitHeight: number): BlockContentRenderObject | null;
53
+ cutRowRenderItem(render: TableRowRenderObject, limitHeight: number): TableRowRenderObject | null;
54
+ /**
55
+ * 修复->已经截断的合并单元格要向下移动到合适的位置
56
+ * @param cutTable
57
+ * @param aboveTable
58
+ * @returns
59
+ */
60
+ private fixCutTable2;
61
+ /**
62
+ * 超找指定位置的单元格
63
+ * @param table
64
+ * @param x
65
+ * @returns
66
+ */
67
+ private findAboveCellByPos;
68
+ /**
69
+ * 校验当前是否是一个完整的行,没有Null单元格,检查当前是否还需要向下合并
70
+ * @param row
71
+ */
72
+ private checkFullRow;
73
+ private existsCellRender;
74
+ private getBlockLineHeight;
75
+ getRowInsertCellIndex(sourceCell: TableCellRenderObject, destRow: TableRowRenderObject): number;
76
+ private getHeaderRows;
77
+ /**
78
+ * 修改测量完毕后的元素状态
79
+ * @param ele
80
+ */
81
+ setMeasureCompletedModifyFlag(ele: Element): void;
82
+ clearPaintCache(ele: Element, data: IBeginMeasureData): void;
83
+ identifyComment(ele: Element): void;
84
+ private cacheDoc;
85
+ cacheDocRenders(docs: Array<DocumentRenderObject>): void;
86
+ /**
87
+ * 生成批注区间信息
88
+ * @param renderTree
89
+ */
90
+ generateCommRange(): void;
91
+ cacheRenders(renderTree: BranchRenderObject): void;
92
+ endMeasures(ele: Element): void;
93
+ createDefaultPara(): ParagraphElement;
94
+ patchParagraph(): boolean;
95
+ fastPatchReset(docRenders: Array<DocumentRenderObject>): void;
96
+ }
@@ -58,7 +58,7 @@ export declare class DocumentArrange {
58
58
  */
59
59
  private fixCutTable2;
60
60
  /**
61
- * 超找指定位置的单元格
61
+ * 查找指定位置的单元格
62
62
  * @param table
63
63
  * @param x
64
64
  * @returns
@@ -72,7 +72,6 @@ export declare abstract class Element<P extends object = any> {
72
72
  */
73
73
  disableClick: boolean;
74
74
  disposed: boolean;
75
- loaded: boolean;
76
75
  visibleExpr?: IParserExpression;
77
76
  effectExpr?: IParserExpression;
78
77
  attribute?: ElementAttribute;
@@ -11,7 +11,6 @@ export interface HitEventInfo {
11
11
  offset: number;
12
12
  render: LeafRenderObject;
13
13
  element: LeafElement;
14
- shadowRenderIndex: number;
15
14
  hitDocIndex: number;
16
15
  startRegion?: HitRegion;
17
16
  }
@@ -406,6 +406,8 @@ export declare class ElementUtil {
406
406
  static removeEleAttribute(ele: Element, attr: string): void;
407
407
  static getMatchItems(item: Element, predicate: (item: Element) => boolean): Element<any>[];
408
408
  static isDataEle(ele: Element): boolean;
409
+ static getPaintRenders(ele: Element): Array<RenderObject>;
410
+ static iterateChildren(ele: BranchElement, cb: (ele: Element) => void): void;
409
411
  }
410
412
  /**
411
413
  * 用于光标定位的信息
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "author": "hailin-zheng",
5
5
  "private": false,
6
6
  "license": "ISC",
7
- "version": "2.2.42",
7
+ "version": "2.2.44",
8
8
  "scripts": {},
9
9
  "dependencies": {
10
10
  "moment": "^2.29.3",
package/index-cjs.d.ts DELETED
@@ -1,32 +0,0 @@
1
- export * from './med_editor/doc-editor';
2
- export * from './med_editor/framework/code-interpreter/ast-parser';
3
- export * from './med_editor/framework/util/common-util';
4
- export * from './med_editor/framework/document-change';
5
- export * from './med_editor/framework/document-combine';
6
- export * from './med_editor/framework/document-comment';
7
- export * from './med_editor/framework/document-context';
8
- export * from './med_editor/framework/code-interpreter/document-eval-func';
9
- export * from './med_editor/framework/document-event';
10
- export * from './med_editor/framework/document-input-cursor';
11
- export * from './med_editor/framework/document-paginator';
12
- export * from './med_editor/framework/print/document-print-offscreen';
13
- export * from './med_editor/framework/util/document-segmenter';
14
- export * from './med_editor/framework/selection/document-selection';
15
- export * from './med_editor/framework/document-template';
16
- export * from './med_editor/framework/document-textline-mode';
17
- export * from './med_editor/framework/element-define';
18
- export * from './med_editor/framework/element-event-define';
19
- export * from './med_editor/framework/element-props';
20
- export * from './med_editor/framework/element-reader';
21
- export * from './med_editor/framework/element-serialize';
22
- export * from './med_editor/framework/history/element-trace-tracking';
23
- export * from './med_editor/framework/util/element-util';
24
- export * from './med_editor/framework/infrastructure/notify';
25
- export * from './med_editor/framework/selection/range-util';
26
- export * from './med_editor/framework/render-context';
27
- export * from './med_editor/framework/render-define';
28
- export * from './med_editor/framework/selection/selection-overlays';
29
- export * from './med_editor/framework/infrastructure/event-subject';
30
- export * from './med_editor/framework/element-type-handler';
31
- export * from './med_editor/framework/impl';
32
- export * from './med_editor/framework/suggestions/input-suggestions';