@hailin-zheng/editor-core 2.2.6 → 2.2.7
Sign up to get free protection for your applications and to get access to all the features.
- package/editor.css +1 -1
- package/index-cjs.js +128 -54
- package/index-cjs.js.map +1 -1
- package/index.js +128 -54
- package/index.js.map +1 -1
- package/med_editor/doc-editor.d.ts +1 -1
- package/med_editor/framework/element-define.d.ts +7 -4
- package/med_editor/framework/element-props.d.ts +6 -5
- package/med_editor/framework/impl/data-element/data-element-base-impl.d.ts +17 -1
- package/med_editor/framework/impl/data-element/data-element-text-impl.d.ts +2 -2
- package/med_editor/framework/vnode/editor-calendar-vnode.d.ts +1 -0
- package/package.json +2 -2
package/editor.css
CHANGED
package/index-cjs.js
CHANGED
@@ -1746,7 +1746,7 @@ class ViewOptions {
|
|
1746
1746
|
showCharRect;
|
1747
1747
|
//数据元交互修饰模式
|
1748
1748
|
dataEleDecoratorMode = 'outline';
|
1749
|
-
dataEleDecoratorColor = '#
|
1749
|
+
dataEleDecoratorColor = '#ddd';
|
1750
1750
|
showTabChar;
|
1751
1751
|
showSpaceChar;
|
1752
1752
|
showLineBreak;
|
@@ -2528,6 +2528,10 @@ class DataEleListProps extends DataEleBaseTextProps {
|
|
2528
2528
|
super();
|
2529
2529
|
}
|
2530
2530
|
options = [];
|
2531
|
+
/**
|
2532
|
+
* 是否保存选项到病历文件里面
|
2533
|
+
*/
|
2534
|
+
saveOptions = true;
|
2531
2535
|
dropDownStyle;
|
2532
2536
|
/**
|
2533
2537
|
* 是否允许多选
|
@@ -2858,28 +2862,14 @@ class ValidateProps {
|
|
2858
2862
|
return clone;
|
2859
2863
|
}
|
2860
2864
|
}
|
2861
|
-
class DataElementGroupProps extends
|
2862
|
-
id;
|
2863
|
-
name;
|
2864
|
-
hidden;
|
2865
|
+
class DataElementGroupProps extends DataEleBaseProps {
|
2865
2866
|
clone(dest) {
|
2866
|
-
|
2867
|
-
|
2868
|
-
dest.name = this.name;
|
2869
|
-
dest.hidden = this.hidden;
|
2867
|
+
const clone = dest ?? new DataElementGroupProps();
|
2868
|
+
super.cloneBaseProps(clone);
|
2870
2869
|
}
|
2871
|
-
getSerializeProps() {
|
2870
|
+
getSerializeProps(options) {
|
2872
2871
|
const props = {};
|
2873
|
-
|
2874
|
-
props.id = this.id;
|
2875
|
-
}
|
2876
|
-
if (this.name) {
|
2877
|
-
props.name = this.name;
|
2878
|
-
}
|
2879
|
-
if (this.hidden) {
|
2880
|
-
props.hidden = this.hidden;
|
2881
|
-
}
|
2882
|
-
return props;
|
2872
|
+
return this.getBaseProps(props, options);
|
2883
2873
|
}
|
2884
2874
|
}
|
2885
2875
|
class DataElementBarcodeProps {
|
@@ -2962,6 +2952,9 @@ class DataDecorateRenderObject extends LeafRenderObject {
|
|
2962
2952
|
if (event.mode === 'print') {
|
2963
2953
|
return null;
|
2964
2954
|
}
|
2955
|
+
// if(this.element.parent.parent.type==='data-group'){
|
2956
|
+
// return null;
|
2957
|
+
// }
|
2965
2958
|
const element = this.element;
|
2966
2959
|
const lineWidth = 3;
|
2967
2960
|
let path = '';
|
@@ -3962,19 +3955,83 @@ class DataElementInlineGroup extends InlineGroupInputElement {
|
|
3962
3955
|
expressFn;
|
3963
3956
|
beginMeasure(data) {
|
3964
3957
|
super.beginMeasure(data);
|
3965
|
-
if (!this.props.expression || !data.
|
3958
|
+
// if (!this.props.expression || !data.options.enableDyExpression) {
|
3959
|
+
// return;
|
3960
|
+
// }
|
3961
|
+
// try {
|
3962
|
+
// if (!this.expressFn) {
|
3963
|
+
// const code = parser(this.props.expression);
|
3964
|
+
// this.expressFn = new Function(`with(this){ ${code} }`);
|
3965
|
+
// }
|
3966
|
+
// this.expressFn.bind(data.execute)();
|
3967
|
+
// //this.expressFn();
|
3968
|
+
// } catch (e) {
|
3969
|
+
// this.expressFn = new Function();
|
3970
|
+
// }
|
3971
|
+
}
|
3972
|
+
parserExpress;
|
3973
|
+
/**
|
3974
|
+
* 解析可见性表达式
|
3975
|
+
* @param ele
|
3976
|
+
* @param execute
|
3977
|
+
* @private
|
3978
|
+
*/
|
3979
|
+
parseEleExpression(data) {
|
3980
|
+
const execute = data.execute;
|
3981
|
+
//不存在表达式,或者不启用表达式,不做处理
|
3982
|
+
if (!this.props.expression || !data.options.enableDyExpression)
|
3966
3983
|
return;
|
3967
|
-
|
3984
|
+
//存在表达式,并且已经解析过,不再做处理
|
3985
|
+
if (this.parserExpress)
|
3986
|
+
return;
|
3987
|
+
const reactiveMode = data.renderCtx.drawMode !== 'print';
|
3968
3988
|
try {
|
3969
|
-
|
3970
|
-
|
3971
|
-
|
3989
|
+
const depIdItems = [];
|
3990
|
+
const depEleMap = new Map();
|
3991
|
+
let compliedCode = parser(this.props.expression, depIdItems);
|
3992
|
+
compliedCode = addReturn(compliedCode);
|
3993
|
+
if (depIdItems.length) {
|
3994
|
+
depIdItems.forEach(dep => {
|
3995
|
+
const refCtx = execute.getObject(dep);
|
3996
|
+
if (refCtx.ref) {
|
3997
|
+
const refEle = refCtx.ref.item;
|
3998
|
+
depEleMap.set(dep, refCtx);
|
3999
|
+
//当前有可能是checkbox数组
|
4000
|
+
const refEles = Array.isArray(refEle) ? refEle : [refEle];
|
4001
|
+
reactiveMode && refEles.forEach(item => {
|
4002
|
+
//求值依赖元素更改的时候,发布当前元素重新计算的指令
|
4003
|
+
item.onChangeSubject.subscribe(() => {
|
4004
|
+
this.pubOnChange('self');
|
4005
|
+
});
|
4006
|
+
});
|
4007
|
+
}
|
4008
|
+
});
|
3972
4009
|
}
|
3973
|
-
this.
|
3974
|
-
//this.expressFn();
|
4010
|
+
this.parserExpress = { compliedCode, func: new Function(`with(this){ ${compliedCode} }`), depItems: depEleMap };
|
3975
4011
|
}
|
3976
4012
|
catch (e) {
|
3977
|
-
this.
|
4013
|
+
console.error('解析表达式出错,parseEleExpression', this.props.expression);
|
4014
|
+
}
|
4015
|
+
}
|
4016
|
+
/**
|
4017
|
+
* 元素可见行求值
|
4018
|
+
* @param ele
|
4019
|
+
* @param executeCtx
|
4020
|
+
* @private
|
4021
|
+
*/
|
4022
|
+
evalEleExpr(executeCtx) {
|
4023
|
+
if (this.parserExpress && this.parserExpress.func) {
|
4024
|
+
try {
|
4025
|
+
executeCtx.setCurrentCtx(this, this.parserExpress.depItems);
|
4026
|
+
const func = this.parserExpress.func.bind(executeCtx);
|
4027
|
+
func();
|
4028
|
+
}
|
4029
|
+
catch (e) {
|
4030
|
+
console.error(e, "表达式执行出错:evalVisibleExpr", this.parserExpress.compliedCode);
|
4031
|
+
}
|
4032
|
+
finally {
|
4033
|
+
executeCtx.clearCurrentCtx();
|
4034
|
+
}
|
3978
4035
|
}
|
3979
4036
|
}
|
3980
4037
|
/**
|
@@ -8609,7 +8666,7 @@ class DataElementGroupElement extends InlineGroupInputElement {
|
|
8609
8666
|
return {
|
8610
8667
|
type: this.type,
|
8611
8668
|
props: {
|
8612
|
-
...this.props.getSerializeProps()
|
8669
|
+
...this.props.getSerializeProps(viewOptions)
|
8613
8670
|
}
|
8614
8671
|
};
|
8615
8672
|
}
|
@@ -8631,9 +8688,7 @@ class DataElementGroupFactory extends DataElementBaseFactory {
|
|
8631
8688
|
createElement(data) {
|
8632
8689
|
const props = data.props;
|
8633
8690
|
const ele = new DataElementGroupElement();
|
8634
|
-
ele.props
|
8635
|
-
ele.props.name = props.name;
|
8636
|
-
ele.props.hidden = Boolean(props.hidden);
|
8691
|
+
ElementUtil.readEleBaseProps(ele.props, props);
|
8637
8692
|
return ele;
|
8638
8693
|
}
|
8639
8694
|
}
|
@@ -8938,7 +8993,11 @@ class DataElementText extends DataElementInlineGroup {
|
|
8938
8993
|
super('data-ele-text');
|
8939
8994
|
this.props = new DataEleBaseTextProps();
|
8940
8995
|
}
|
8941
|
-
createRenderObject() {
|
8996
|
+
createRenderObject(data) {
|
8997
|
+
if (data.options.enableDyExpression) {
|
8998
|
+
this.parseEleExpression(data);
|
8999
|
+
this.evalEleExpr(data.execute);
|
9000
|
+
}
|
8942
9001
|
return new DataElementTextRenderObject(this);
|
8943
9002
|
}
|
8944
9003
|
serialize(viewOptions) {
|
@@ -13896,7 +13955,7 @@ class ParagraphMeasure {
|
|
13896
13955
|
}
|
13897
13956
|
}
|
13898
13957
|
arrangeInlineGroupElement(parentLine, ele) {
|
13899
|
-
const { options, renderCtx } = this;
|
13958
|
+
const { options, renderCtx, execute } = this;
|
13900
13959
|
let render = this.createRenderObject(ele);
|
13901
13960
|
//记录多行情况下的渲染对象,用于计算总长度,生成fill-null-space
|
13902
13961
|
const inlineGroupRenders = [];
|
@@ -13932,7 +13991,7 @@ class ParagraphMeasure {
|
|
13932
13991
|
isCloseToBody: parentLine.isCloseToBody,
|
13933
13992
|
applyNewLine() {
|
13934
13993
|
parentLine.applyNewLine();
|
13935
|
-
render = ele.createRenderObject({ options, renderCtx });
|
13994
|
+
render = ele.createRenderObject({ options, renderCtx, execute });
|
13936
13995
|
parentLine.add(render);
|
13937
13996
|
inlineGroupRenders.push(render);
|
13938
13997
|
},
|
@@ -14267,7 +14326,8 @@ class ParagraphMeasure {
|
|
14267
14326
|
}
|
14268
14327
|
return element.createRenderObject({
|
14269
14328
|
options: this.options,
|
14270
|
-
renderCtx: this.renderCtx
|
14329
|
+
renderCtx: this.renderCtx,
|
14330
|
+
execute: this.execute
|
14271
14331
|
});
|
14272
14332
|
}
|
14273
14333
|
}
|
@@ -14426,8 +14486,9 @@ class DocumentArrange {
|
|
14426
14486
|
this.pMeasure = new ParagraphMeasure(this.options, this.renderCtx, this.execute);
|
14427
14487
|
const data = {
|
14428
14488
|
doc,
|
14429
|
-
|
14489
|
+
options: this.options,
|
14430
14490
|
execute: this.execute,
|
14491
|
+
renderCtx: this.renderCtx,
|
14431
14492
|
createParaFn: () => this.createDefaultPara()
|
14432
14493
|
};
|
14433
14494
|
this.reset(data);
|
@@ -14630,7 +14691,7 @@ class DocumentArrange {
|
|
14630
14691
|
if (this.options.textRowLineMode && ele instanceof TableElement && ele.cacheRender) {
|
14631
14692
|
const cacheRender = ele.cacheRender;
|
14632
14693
|
clearChildrenRenderCache(ele);
|
14633
|
-
textLineRenderMode(cacheRender, { options: this.options, renderCtx: this.renderCtx });
|
14694
|
+
textLineRenderMode(cacheRender, { options: this.options, renderCtx: this.renderCtx, execute: this.execute });
|
14634
14695
|
}
|
14635
14696
|
}
|
14636
14697
|
getDocInnerRect(documentRender) {
|
@@ -19448,7 +19509,7 @@ class EditorCalendarVNode {
|
|
19448
19509
|
data: {
|
19449
19510
|
style: {
|
19450
19511
|
position: 'absolute',
|
19451
|
-
left: (position.x
|
19512
|
+
left: (position.x) + 'px',
|
19452
19513
|
top: position.y + 5 + position.height + 'px',
|
19453
19514
|
'min-width': '100px',
|
19454
19515
|
'background-color': 'white',
|
@@ -19584,6 +19645,9 @@ class EditorCalendarVNode {
|
|
19584
19645
|
on: {
|
19585
19646
|
click: () => {
|
19586
19647
|
this.onClickDayItem(day.date);
|
19648
|
+
},
|
19649
|
+
dblclick: () => {
|
19650
|
+
this.onSave();
|
19587
19651
|
}
|
19588
19652
|
}
|
19589
19653
|
},
|
@@ -19641,12 +19705,7 @@ class EditorCalendarVNode {
|
|
19641
19705
|
data: {
|
19642
19706
|
on: {
|
19643
19707
|
click: () => {
|
19644
|
-
|
19645
|
-
this.onSetValue.next(new Date());
|
19646
|
-
}
|
19647
|
-
else {
|
19648
|
-
this.onSetValue.next(moment__default["default"](this.selectedDate.value + ' ' + this.selectedTime.value).toDate());
|
19649
|
-
}
|
19708
|
+
this.onSave();
|
19650
19709
|
}
|
19651
19710
|
}
|
19652
19711
|
},
|
@@ -19666,6 +19725,14 @@ class EditorCalendarVNode {
|
|
19666
19725
|
]
|
19667
19726
|
};
|
19668
19727
|
}
|
19728
|
+
onSave() {
|
19729
|
+
if (!this.selectedDate.value) {
|
19730
|
+
this.onSetValue.next(new Date());
|
19731
|
+
}
|
19732
|
+
else {
|
19733
|
+
this.onSetValue.next(moment__default["default"](this.selectedDate.value + ' ' + this.selectedTime.value).toDate());
|
19734
|
+
}
|
19735
|
+
}
|
19669
19736
|
navigateToToday() {
|
19670
19737
|
this.currYear.value = new Date().getFullYear();
|
19671
19738
|
this.currMonth.value = new Date().getMonth();
|
@@ -20378,7 +20445,6 @@ class DocEditor {
|
|
20378
20445
|
beforeRenderSubject = new Subject();
|
20379
20446
|
afterRenderSubject = new Subject();
|
20380
20447
|
onBeforeSetCursorSubject = new Subject();
|
20381
|
-
contentChanged = new Subject();
|
20382
20448
|
onPatchVNodeSubject = new Subject();
|
20383
20449
|
selectionState;
|
20384
20450
|
onDblClickEvent = new Subject();
|
@@ -20670,10 +20736,12 @@ class DocEditor {
|
|
20670
20736
|
}
|
20671
20737
|
loadDoc(data) {
|
20672
20738
|
suppressTracking(() => {
|
20673
|
-
this.
|
20674
|
-
|
20675
|
-
|
20676
|
-
|
20739
|
+
this.noEffectChange(() => {
|
20740
|
+
this.adjustPageLayout();
|
20741
|
+
this.elementReader.read(data);
|
20742
|
+
this.refreshDocument();
|
20743
|
+
this.historyMange.clear();
|
20744
|
+
});
|
20677
20745
|
});
|
20678
20746
|
}
|
20679
20747
|
/**
|
@@ -20691,7 +20759,6 @@ class DocEditor {
|
|
20691
20759
|
suppressTracking(() => {
|
20692
20760
|
this.documentPaginator.rePages();
|
20693
20761
|
});
|
20694
|
-
this.contentChanged.next();
|
20695
20762
|
}
|
20696
20763
|
this.updateSelection();
|
20697
20764
|
this.setCursor();
|
@@ -21594,7 +21661,7 @@ class DocEditor {
|
|
21594
21661
|
const scaleFitContainer = {
|
21595
21662
|
sel: 'div#scale-fit-container',
|
21596
21663
|
data: {
|
21597
|
-
style: {
|
21664
|
+
style: { height: '0px', }
|
21598
21665
|
},
|
21599
21666
|
children: [docContent]
|
21600
21667
|
};
|
@@ -21756,7 +21823,7 @@ class DocEditor {
|
|
21756
21823
|
data: {
|
21757
21824
|
style: {
|
21758
21825
|
position: 'absolute',
|
21759
|
-
left: (position.x
|
21826
|
+
left: (position.x) + 'px',
|
21760
21827
|
top: position.y + 5 + position.height + 'px',
|
21761
21828
|
},
|
21762
21829
|
hook: {
|
@@ -21922,7 +21989,7 @@ class DocEditor {
|
|
21922
21989
|
rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
|
21923
21990
|
}
|
21924
21991
|
version() {
|
21925
|
-
return "2.2.
|
21992
|
+
return "2.2.7";
|
21926
21993
|
}
|
21927
21994
|
switchPageHeaderEditor() {
|
21928
21995
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|
@@ -22225,6 +22292,13 @@ class DocEditor {
|
|
22225
22292
|
this.documentChange.appendText(text, this.docCtx.suggestions.currentMatchedText);
|
22226
22293
|
}
|
22227
22294
|
}
|
22295
|
+
parser(code, returnProcess = false) {
|
22296
|
+
const res = parser(code);
|
22297
|
+
if (returnProcess) {
|
22298
|
+
return addReturn(res);
|
22299
|
+
}
|
22300
|
+
return res;
|
22301
|
+
}
|
22228
22302
|
}
|
22229
22303
|
|
22230
22304
|
/**
|