@hailin-zheng/editor-core 2.2.26 → 2.2.28

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
@@ -2575,9 +2575,9 @@ class DataEleListProps extends DataEleBaseTextProps {
2575
2575
  }
2576
2576
  options = [];
2577
2577
  /**
2578
- * 是否保存选项到病历文件里面
2578
+ * 是否持久化选项到病历文件里面
2579
2579
  */
2580
- saveOptions = true;
2580
+ persistItems = true;
2581
2581
  dropDownStyle;
2582
2582
  /**
2583
2583
  * 是否允许多选
@@ -2591,28 +2591,41 @@ class DataEleListProps extends DataEleBaseTextProps {
2591
2591
  clone.dropDownStyle = this.dropDownStyle;
2592
2592
  clone.multiSelect = this.multiSelect;
2593
2593
  clone.displayField = this.displayField;
2594
+ clone.persistItems = this.persistItems;
2594
2595
  return clone;
2595
2596
  }
2596
2597
  getSerializeProps(options) {
2597
2598
  const props = {
2598
- options: [...this.options],
2599
2599
  multiSelect: this.multiSelect,
2600
2600
  dropDownStyle: this.dropDownStyle,
2601
+ persistItems: this.persistItems,
2601
2602
  };
2602
2603
  if (this.displayField && this.displayField !== 'value') {
2603
2604
  props['displayField'] = this.displayField;
2604
2605
  }
2606
+ if (this.persistItems) {
2607
+ props.options = [...this.options];
2608
+ }
2605
2609
  super.getBaseProps(props, options);
2606
2610
  return props;
2607
2611
  }
2608
2612
  updateProps(props) {
2609
2613
  super.updateProps(props);
2610
- this.options = props.options;
2611
- this.multiSelect = props.multiSelect;
2612
- this.dropDownStyle = props.dropDownStyle;
2613
- this.displayField = props.displayField;
2614
+ updatePartialProps(this, props);
2614
2615
  }
2615
2616
  }
2617
+ function updatePartialProps(destProps, sourceProps) {
2618
+ const destPropsKeys = Object.keys(destProps);
2619
+ const sourcePropsKeys = Object.keys(sourceProps);
2620
+ sourcePropsKeys.forEach(key => {
2621
+ if (destPropsKeys.includes(key)) {
2622
+ if (destProps[key] === sourceProps[key]) {
2623
+ return;
2624
+ }
2625
+ destProps[key] = sourceProps[key];
2626
+ }
2627
+ });
2628
+ }
2616
2629
  class CommContentProps extends INotifyPropertyChanged {
2617
2630
  id;
2618
2631
  createId;
@@ -6955,6 +6968,9 @@ class DocumentSelection {
6955
6968
  if (!this.snapshotSelectionState) {
6956
6969
  return true;
6957
6970
  }
6971
+ if (this.selectionState.editable !== this.snapshotSelectionState.editable) {
6972
+ return true;
6973
+ }
6958
6974
  if (this.selectionState.startControl !== this.snapshotSelectionState.startControl || this.selectionState.startOffset !== this.snapshotSelectionState.startOffset) {
6959
6975
  return true;
6960
6976
  }
@@ -9379,6 +9395,7 @@ class DataElementListFactory extends DataElementBaseFactory {
9379
9395
  dataEleProps.options = [...options];
9380
9396
  dataEleProps.dropDownStyle = props.dropDownStyle;
9381
9397
  dataEleProps.displayField = props.displayField ?? 'value';
9398
+ dataEleProps.persistItems = props.persistItems ?? true;
9382
9399
  return dataEleProps;
9383
9400
  }
9384
9401
  }
@@ -18624,18 +18641,45 @@ class DocumentChange {
18624
18641
  */
18625
18642
  insertElement(targetElement, targetOffset, destEleArray) {
18626
18643
  let lastEle;
18644
+ //创建文本元素并插入
18645
+ const insertNewText = (text, parent, index) => {
18646
+ const inputTextProps = this.getDefaultTextPropsByOptions();
18647
+ const newTextEle = ElementUtil.getNewTextGroup(inputTextProps);
18648
+ newTextEle.text = text;
18649
+ parent.addChild(newTextEle, index);
18650
+ };
18627
18651
  if (targetElement instanceof TextGroupElement) {
18628
18652
  const { leftElement, rightElement } = this.splitText(targetElement, targetOffset);
18629
18653
  if (leftElement) {
18630
18654
  for (let i = 0; i < destEleArray.length; i++) {
18631
18655
  lastEle = destEleArray[i];
18632
- leftElement.parent.addChild(lastEle, leftElement.getIndex() + 1 + i);
18656
+ //判断是否可以插入元素
18657
+ if (this.canInsertElement(leftElement.parent, lastEle)) {
18658
+ leftElement.parent.addChild(lastEle, leftElement.getIndex() + 1 + i);
18659
+ }
18660
+ else {
18661
+ //序列化为纯文本
18662
+ const serializeString = ElementSerialize.serializeString(lastEle);
18663
+ if (serializeString) {
18664
+ insertNewText(serializeString, leftElement.parent, leftElement.getIndex() + 1 + i);
18665
+ }
18666
+ }
18633
18667
  }
18634
18668
  }
18635
18669
  else if (rightElement) {
18636
18670
  for (let i = 0; i < destEleArray.length; i++) {
18637
18671
  lastEle = destEleArray[i];
18638
- rightElement.parent.addChild(lastEle, rightElement.getIndex());
18672
+ //判断是否可以插入元素
18673
+ if (this.canInsertElement(rightElement.parent, lastEle)) {
18674
+ rightElement.parent.addChild(lastEle, rightElement.getIndex());
18675
+ }
18676
+ else {
18677
+ //序列化为纯文本
18678
+ const serializeString = ElementSerialize.serializeString(lastEle);
18679
+ if (serializeString) {
18680
+ insertNewText(serializeString, rightElement.parent, rightElement.getIndex());
18681
+ }
18682
+ }
18639
18683
  }
18640
18684
  }
18641
18685
  }
@@ -18644,13 +18688,39 @@ class DocumentChange {
18644
18688
  let insertTargetOffset = targetOffset;
18645
18689
  for (let i = 0; i < destEleArray.length; i++) {
18646
18690
  lastEle = destEleArray[i];
18647
- insertTarget.parent.addChild(lastEle, insertTarget.getIndex() + insertTargetOffset);
18648
- insertTarget = lastEle;
18649
- insertTargetOffset = 1;
18691
+ //判断是否可以插入元素
18692
+ if (this.canInsertElement(insertTarget.parent, lastEle)) {
18693
+ insertTarget.parent.addChild(lastEle, insertTarget.getIndex() + insertTargetOffset);
18694
+ insertTarget = lastEle;
18695
+ insertTargetOffset = 1;
18696
+ }
18650
18697
  }
18651
18698
  }
18652
18699
  return lastEle;
18653
18700
  }
18701
+ /**
18702
+ * 校验容器是否允许插入元素
18703
+ * @param container
18704
+ * @param ele
18705
+ * @returns
18706
+ */
18707
+ canInsertElement(container, ele) {
18708
+ //是否为数据元
18709
+ const isDataEle = container instanceof DataElementInlineGroup;
18710
+ //数据元内部不能嵌套数据元
18711
+ if (isDataEle && ele instanceof DataElementInlineGroup) {
18712
+ return false;
18713
+ }
18714
+ //非布局元素不可以插入段落
18715
+ if (!(container instanceof BlockContainerElement) && ele instanceof BlockContentElement) {
18716
+ return false;
18717
+ }
18718
+ //段落内容内不能插入布局元素
18719
+ if (!(container instanceof BlockContentElement) && ele instanceof BlockContainerElement) {
18720
+ return false;
18721
+ }
18722
+ return true;
18723
+ }
18654
18724
  /**
18655
18725
  * 根据开始位置和结束位置,将字符切割成指定的区间
18656
18726
  * @param text
@@ -18906,10 +18976,7 @@ class DocumentChange {
18906
18976
  }
18907
18977
  //表单模式:如果复制的是单格式的文本,需要序列化为纯文本处理
18908
18978
  if (this.viewOptions.docMode === DocMode.FormEdit) {
18909
- const pasteString = pasteEles.map(item => ElementSerialize.serializeString(item)).join('');
18910
- if (pasteString) {
18911
- this.pastePlainText(pasteString);
18912
- }
18979
+ this.handlePasteInFormEditMode(pasteEles);
18913
18980
  return;
18914
18981
  }
18915
18982
  //复制的内容为表格,且操作位于单元格内
@@ -18937,6 +19004,23 @@ class DocumentChange {
18937
19004
  this.selectionState.resetRange(lastEle, -1);
18938
19005
  }
18939
19006
  }
19007
+ /**
19008
+ * 处理表单模式下的粘贴事件
19009
+ * @param data 要粘贴的元素
19010
+ */
19011
+ handlePasteInFormEditMode(data) {
19012
+ // if (data.some(item => this.canInsertElement()))
19013
+ // const pasteString = data.map(item => ElementSerialize.serializeString(item)).join('');
19014
+ // if (pasteString) {
19015
+ // this.pastePlainText(pasteString);
19016
+ // }
19017
+ const { startControl, startOffset } = this.selectionState;
19018
+ const lastEle = this.insertElement(startControl, startOffset, data);
19019
+ this.selectionState.clear();
19020
+ if (lastEle && lastEle.parent) {
19021
+ this.selectionState.resetRange(lastEle, -1);
19022
+ }
19023
+ }
18940
19024
  /**
18941
19025
  * 复制单元格向另一个单元格粘贴
18942
19026
  * @private
@@ -22013,6 +22097,14 @@ class DocEditor {
22013
22097
  getDocSchema() {
22014
22098
  return ElementSerialize.serialize(this.docCtx.document, this.viewOptions);
22015
22099
  }
22100
+ /**
22101
+ * 获取元素模型
22102
+ * @param ele
22103
+ * @returns
22104
+ */
22105
+ getEleSchemaJSON(ele) {
22106
+ return JSON.stringify(ElementSerialize.serialize(ele, this.viewOptions));
22107
+ }
22016
22108
  getDocSchemaJSON() {
22017
22109
  const res = JSON.stringify(this.getDocSchema());
22018
22110
  return res;
@@ -23023,7 +23115,7 @@ class DocEditor {
23023
23115
  rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
23024
23116
  }
23025
23117
  version() {
23026
- return "2.2.26";
23118
+ return "2.2.28";
23027
23119
  }
23028
23120
  switchPageHeaderEditor() {
23029
23121
  this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
@@ -28793,5 +28885,5 @@ function removeDuplicatesEvent(events) {
28793
28885
  return arr;
28794
28886
  }
28795
28887
 
28796
- 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, IDispose, INotifyPropertyChanged, InlineBlockContainer, InlineGroupElement, InlineGroupInputElement, InlineGroupRenderObject, InlineMuiltBlockLineRenderObject, InputElementEvent, IsInSideDataElement, IsInSideDataGroup, IsInSideInlineGroupInputElement, KeyboradElementEvent, LeafElement, LeafRenderObject, LostCursorEvent, MarginProps, ModifyFlag, MouseElementEvent, MousedownElementEvent, MultiBlockLineRenderObject, 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, validateDataEle, validateDataEleRenderObj, validateDataGroup, validateInlineInputRenderObj, watchChanged };
28888
+ 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, IDispose, INotifyPropertyChanged, InlineBlockContainer, InlineGroupElement, InlineGroupInputElement, InlineGroupRenderObject, InlineMuiltBlockLineRenderObject, InputElementEvent, IsInSideDataElement, IsInSideDataGroup, IsInSideInlineGroupInputElement, KeyboradElementEvent, LeafElement, LeafRenderObject, LostCursorEvent, MarginProps, ModifyFlag, MouseElementEvent, MousedownElementEvent, MultiBlockLineRenderObject, 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, validateInlineInputRenderObj, watchChanged };
28797
28889
  //# sourceMappingURL=index.js.map