@hailin-zheng/editor-core 2.1.21 → 2.1.23

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
@@ -631,7 +631,6 @@ class CommonUtil {
631
631
  static cloneValue(val) {
632
632
  return CommonUtil.cloneDeep(val);
633
633
  }
634
- // @ts-ignore
635
634
  static cloneDeep(source, visited = new WeakMap()) {
636
635
  if (source === null || typeof source !== 'object') {
637
636
  // 如果是基本类型或 null,则直接返回
@@ -4650,7 +4649,9 @@ class TableRowElement extends BlockContainerElement {
4650
4649
  }
4651
4650
  }
4652
4651
  createRenderObject() {
4653
- return new TableRowRenderObject(this);
4652
+ const rowRender = new TableRowRenderObject(this);
4653
+ rowRender.minHeight = this.props.minHeight;
4654
+ return rowRender;
4654
4655
  }
4655
4656
  serialize(viewOptions) {
4656
4657
  return {
@@ -4683,10 +4684,13 @@ class TableRowRenderObject extends MuiltBlockLineRenderObject {
4683
4684
  remeasureState = true;
4684
4685
  //当前行是否存在合并单元格
4685
4686
  hasMergeCells = undefined;
4687
+ //行最小高度,用于标记当前行临时的最小高度状态
4688
+ minHeight = -1;
4686
4689
  clone() {
4687
4690
  const cloneRender = new TableRowRenderObject(this.element);
4688
4691
  cloneRender.remeasureState = this.remeasureState;
4689
4692
  cloneRender.hasMergeCells = this.hasMergeCells;
4693
+ cloneRender.minHeight = this.minHeight;
4690
4694
  cloneRender.rect = ElementUtil.cloneRect(this.rect);
4691
4695
  for (let i = 0; i < this.length; i++) {
4692
4696
  cloneRender.addChild(this.getChild(i).clone());
@@ -4854,6 +4858,8 @@ class TextGroupRenderObject extends LeafRenderObject {
4854
4858
  return;
4855
4859
  }
4856
4860
  const props = this.element.props;
4861
+ //基线位置到top的距离
4862
+ const actualFontBoundingBoxAscent = event.renderCtx.mainContext.getActualFontBoundingBoxAscent(props.getFont());
4857
4863
  let { width, height } = this.rect;
4858
4864
  let vertHeight = 0; //baseLine;
4859
4865
  if (props.vertAlign === 'subscript') {
@@ -4872,10 +4878,11 @@ class TextGroupRenderObject extends LeafRenderObject {
4872
4878
  return curr.actualSize + prev;
4873
4879
  }, this.rect.x);
4874
4880
  const x = arr.join(' ');
4875
- const y = this.rect.y + vertHeight; //this.textMeasures.map(item => this.rect.y + vertHeight).join(' ');
4876
- // const text = this.textMeasures.map(item => {
4877
- // return item.char
4878
- // }).join('');
4881
+ let y = this.rect.y + vertHeight;
4882
+ //基线处理
4883
+ y += actualFontBoundingBoxAscent ?? 0;
4884
+ //行高处理
4885
+ y += (height - props.fontSize) / 2;
4879
4886
  const t = {
4880
4887
  sel: 'text',
4881
4888
  text: text,
@@ -4883,8 +4890,6 @@ class TextGroupRenderObject extends LeafRenderObject {
4883
4890
  ns: "http://www.w3.org/2000/svg",
4884
4891
  attrs: {
4885
4892
  //"transform": `translate(0,${(height - props.fontSize) / 2})`,
4886
- "translate": { x: 0, y: (height - props.fontSize) / 2 },
4887
- 'dominant-baseline': 'hanging',
4888
4893
  'font-family': this.element.props.fontName,
4889
4894
  'font-size': fontSize,
4890
4895
  x,
@@ -4892,6 +4897,9 @@ class TextGroupRenderObject extends LeafRenderObject {
4892
4897
  }
4893
4898
  },
4894
4899
  };
4900
+ if (actualFontBoundingBoxAscent === undefined) {
4901
+ t.data.attrs['dominant-baseline'] = 'hanging';
4902
+ }
4895
4903
  if (this.element.props.fontWeight !== 'normal') {
4896
4904
  t.data.attrs['font-weight'] = this.element.props.fontWeight;
4897
4905
  }
@@ -11068,7 +11076,7 @@ class ElementUtil {
11068
11076
  canvas.style.height = scaleHeight + 'px';
11069
11077
  canvas.width = scaleWidth * dpr;
11070
11078
  canvas.height = scaleHeight * dpr;
11071
- ctx.textBaseline = 'top';
11079
+ //ctx.textBaseline = 'top';
11072
11080
  ctx.scale(dpr, dpr);
11073
11081
  }
11074
11082
  // static setOffscreenCanvas(canvas: OffscreenCanvas, ctx: OffscreenCanvasRenderingContext2D, viewOptions: { width: number, height: number }, scale: number = 1): void {
@@ -11218,8 +11226,7 @@ class ElementUtil {
11218
11226
  return innerRect.height;
11219
11227
  }
11220
11228
  static remeasureTableRow(rowRender, forceColIndex = -1) {
11221
- const rowEle = rowRender.element;
11222
- let maxCellHeight = rowEle.props.minHeight > 20 ? rowEle.props.minHeight : 20;
11229
+ let maxCellHeight = rowRender.minHeight > 20 ? rowRender.minHeight : 20;
11223
11230
  //限制行最小高度
11224
11231
  maxCellHeight = maxCellHeight < 20 ? 20 : maxCellHeight;
11225
11232
  //获取行内非纵向合并单元格的最高单元格高度
@@ -12767,6 +12774,13 @@ class ElementUtil {
12767
12774
  }
12768
12775
  }
12769
12776
 
12777
+ var TextUnitsHolder;
12778
+ (function (TextUnitsHolder) {
12779
+ TextUnitsHolder[TextUnitsHolder["char"] = 0] = "char";
12780
+ TextUnitsHolder[TextUnitsHolder["sourceSize"] = 1] = "sourceSize";
12781
+ TextUnitsHolder[TextUnitsHolder["actualSize"] = 2] = "actualSize";
12782
+ TextUnitsHolder[TextUnitsHolder["actualBoundingBoxAscent"] = 3] = "actualBoundingBoxAscent";
12783
+ })(TextUnitsHolder || (TextUnitsHolder = {}));
12770
12784
  class RenderContext {
12771
12785
  mainContext;
12772
12786
  contentContext;
@@ -12839,7 +12853,18 @@ class PaintContent {
12839
12853
  this.init();
12840
12854
  }
12841
12855
  init() {
12842
- this.ctx.textBaseline = 'top';
12856
+ //this.ctx.textBaseline = 'top';
12857
+ }
12858
+ cacheFontBoundingBoxAscentMap = new Map();
12859
+ getActualFontBoundingBoxAscent(font) {
12860
+ if (this.cacheFontBoundingBoxAscentMap.has(font)) {
12861
+ return this.cacheFontBoundingBoxAscentMap.get(font);
12862
+ }
12863
+ this.ctx.font = font;
12864
+ const textMetrics = this.ctx.measureText('正');
12865
+ const value = textMetrics.actualBoundingBoxAscent;
12866
+ this.cacheFontBoundingBoxAscentMap.set(font, value);
12867
+ return value;
12843
12868
  }
12844
12869
  setGlobalAlpha(alpha) {
12845
12870
  this.ctx.globalAlpha = alpha;
@@ -14971,13 +14996,15 @@ class DocumentArrange {
14971
14996
  let currRow = rows[j];
14972
14997
  const cutRows = [];
14973
14998
  while (currRow) {
14974
- const minHeight = currRow.element.props.minHeight;
14999
+ const minHeight = currRow.minHeight;
14975
15000
  const rowContentHeight = this.getBlockLineHeight(currRow);
14976
15001
  if (rowContentHeight + sumHeight > limitHeight) {
14977
15002
  //行存在最小高度,且当前行内容的高度小于最小高度,且当前行跨页的情况下,不截断该行
14978
15003
  if (minHeight > 0 && minHeight > rowContentHeight) {
14979
15004
  break;
14980
15005
  }
15006
+ //设定最小高度不生效
15007
+ currRow.minHeight = -1;
14981
15008
  //限制的外框尺寸
14982
15009
  const availHeight = limitHeight - sumHeight;
14983
15010
  const limitRenderInnerHeight = ElementUtil.innerRectMaxHeight(tbRender, availHeight);
@@ -15028,6 +15055,9 @@ class DocumentArrange {
15028
15055
  // }
15029
15056
  render.remeasureState = true;
15030
15057
  const cloneRowRender = render.element.createRenderObject();
15058
+ if (cloneRowRender.minHeight > 0 && render.minHeight <= 0) {
15059
+ cloneRowRender.minHeight = render.minHeight;
15060
+ }
15031
15061
  cloneRowRender.rect.width = render.rect.width;
15032
15062
  //cloneRowRender.rect.maxWidth = render.rect.height;
15033
15063
  const cellRenders = [...render.getItems()];
@@ -27806,7 +27836,7 @@ class DocEditor {
27806
27836
  rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
27807
27837
  }
27808
27838
  version() {
27809
- return "2.1.21";
27839
+ return "2.1.23";
27810
27840
  }
27811
27841
  switchPageHeaderEditor() {
27812
27842
  this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
@@ -28010,5 +28040,5 @@ function removeDuplicatesEvent(events) {
28010
28040
  return arr;
28011
28041
  }
28012
28042
 
28013
- 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, PermanentTeethElement, PermanentTeethFactory, PermanentTeethProps, PermanentTeethRenderObject, 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, addReturn, clearChildrenRenderCache, clearTraces, cloneChildren, cloneElementBase, 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 };
28043
+ 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, PermanentTeethElement, PermanentTeethFactory, PermanentTeethProps, PermanentTeethRenderObject, 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, TextUnitsHolder, TrackRunElement, TrackRunProps, TrackRunRenderObject, TrackRunTypeEnum, ValidateCondition, ValidateElement, ValidateProps, ValidateRenderObject, ViewOptions, addReturn, clearChildrenRenderCache, clearTraces, cloneChildren, cloneElementBase, 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 };
28014
28044
  //# sourceMappingURL=index.js.map