@hailin-zheng/editor-core 2.2.6 → 2.2.8
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/editor.css +348 -348
- package/index-cjs.js +334 -306
- package/index-cjs.js.map +1 -1
- package/index.js +334 -306
- package/index.js.map +1 -1
- package/med_editor/doc-editor.d.ts +1 -1
- package/med_editor/framework/element-define.d.ts +15 -9
- package/med_editor/framework/element-props.d.ts +6 -5
- package/med_editor/framework/element-serialize.d.ts +1 -1
- package/med_editor/framework/impl/data-element/data-container-impl.d.ts +8 -8
- 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/impl/document/doc-body-impl.d.ts +2 -2
- package/med_editor/framework/impl/document/doc-body-part-impl.d.ts +2 -2
- package/med_editor/framework/impl/paragraph/p-impl.d.ts +2 -2
- package/med_editor/framework/impl/table/table-impl.d.ts +2 -2
- package/med_editor/framework/impl/table/table-row-impl.d.ts +2 -2
- package/med_editor/framework/render-define.d.ts +5 -6
- package/med_editor/framework/vnode/editor-calendar-vnode.d.ts +1 -0
- package/package.json +1 -1
package/index.js
CHANGED
@@ -388,7 +388,6 @@ class BlockContentRenderObject extends BranchRenderObject {
|
|
388
388
|
}
|
389
389
|
}
|
390
390
|
class InlineGroupRenderObject extends BranchRenderObject {
|
391
|
-
paintPos;
|
392
391
|
}
|
393
392
|
/**
|
394
393
|
* 包含块级渲染元素的容器元素,例如body、table-cell等
|
@@ -402,18 +401,18 @@ class BlockContainerRenderObject extends BranchRenderObject {
|
|
402
401
|
/**
|
403
402
|
* 多级 ‘BlockLineRectRenderObject’ 包裹元素,例如 p、table
|
404
403
|
*/
|
405
|
-
class
|
404
|
+
class MultiBlockLineRenderObject extends BlockContentRenderObject {
|
406
405
|
}
|
407
406
|
/**
|
408
407
|
* 容器-子内容为多个行内块级元素,例如table-row
|
409
408
|
*/
|
410
|
-
class InlineBlockContainer extends
|
409
|
+
class InlineBlockContainer extends MultiBlockLineRenderObject {
|
411
410
|
}
|
412
411
|
/**
|
413
412
|
* 服务于table-cell
|
414
413
|
* 可被多级拆分的元素
|
415
414
|
*/
|
416
|
-
class InlineMuiltBlockLineRenderObject extends
|
415
|
+
class InlineMuiltBlockLineRenderObject extends MultiBlockLineRenderObject {
|
417
416
|
}
|
418
417
|
/**
|
419
418
|
* 最小不可分割单位的块级行框,例如 p-line
|
@@ -1697,12 +1696,22 @@ class ViewOptions {
|
|
1697
1696
|
defaultColor = "#000000";
|
1698
1697
|
currentFontSize = 14;
|
1699
1698
|
currentFontName = '宋体';
|
1700
|
-
|
1701
|
-
|
1702
|
-
|
1699
|
+
//选区颜色
|
1700
|
+
selectionColor = 'rgb(131,175,155,0.5)';
|
1701
|
+
dataDecoratorNormalColor = '#0050b3';
|
1702
|
+
dataDecoratorMouseEnterColor = '#0050b3';
|
1703
|
+
dataDecoratorFocusedColor = '#0050b3';
|
1704
|
+
//数据元没有输入值时背景颜色
|
1705
|
+
dataEleEmptyBgColor = '';
|
1706
|
+
//数据元鼠标悬浮颜色
|
1707
|
+
dataEleMouseEnterBgColor = '#d9d9d9';
|
1708
|
+
//数据元只读背景颜色
|
1709
|
+
dataEleReadOnlyBgColor = '#d9d9d9';
|
1710
|
+
//数据元焦点背景颜色
|
1711
|
+
dataEleFocusedBgColor = '#d9d9d9';
|
1712
|
+
//数据元正常背景颜色
|
1713
|
+
dataEleNormalBgColor = '#fafafa';
|
1703
1714
|
dataEleErrorBgColor = '#ff4d4f';
|
1704
|
-
dataEleReadOnlyOverlayColor = '#d9d9d9';
|
1705
|
-
dataEleOutlineColor = 'rgb(131,175,155,0.7)';
|
1706
1715
|
viewBackcolor = 'rgb(230,230,230)';
|
1707
1716
|
paraSymbolColor = 'rgb(128,128,128)';
|
1708
1717
|
dataGroupColor = 'rgb(0,80,179)';
|
@@ -1717,7 +1726,6 @@ class ViewOptions {
|
|
1717
1726
|
showCharRect;
|
1718
1727
|
//数据元交互修饰模式
|
1719
1728
|
dataEleDecoratorMode = 'outline';
|
1720
|
-
dataEleDecoratorColor = '#0050b3';
|
1721
1729
|
showTabChar;
|
1722
1730
|
showSpaceChar;
|
1723
1731
|
showLineBreak;
|
@@ -2499,6 +2507,10 @@ class DataEleListProps extends DataEleBaseTextProps {
|
|
2499
2507
|
super();
|
2500
2508
|
}
|
2501
2509
|
options = [];
|
2510
|
+
/**
|
2511
|
+
* 是否保存选项到病历文件里面
|
2512
|
+
*/
|
2513
|
+
saveOptions = true;
|
2502
2514
|
dropDownStyle;
|
2503
2515
|
/**
|
2504
2516
|
* 是否允许多选
|
@@ -2829,28 +2841,14 @@ class ValidateProps {
|
|
2829
2841
|
return clone;
|
2830
2842
|
}
|
2831
2843
|
}
|
2832
|
-
class DataElementGroupProps extends
|
2833
|
-
id;
|
2834
|
-
name;
|
2835
|
-
hidden;
|
2844
|
+
class DataElementGroupProps extends DataEleBaseProps {
|
2836
2845
|
clone(dest) {
|
2837
|
-
|
2838
|
-
|
2839
|
-
dest.name = this.name;
|
2840
|
-
dest.hidden = this.hidden;
|
2846
|
+
const clone = dest ?? new DataElementGroupProps();
|
2847
|
+
super.cloneBaseProps(clone);
|
2841
2848
|
}
|
2842
|
-
getSerializeProps() {
|
2849
|
+
getSerializeProps(options) {
|
2843
2850
|
const props = {};
|
2844
|
-
|
2845
|
-
props.id = this.id;
|
2846
|
-
}
|
2847
|
-
if (this.name) {
|
2848
|
-
props.name = this.name;
|
2849
|
-
}
|
2850
|
-
if (this.hidden) {
|
2851
|
-
props.hidden = this.hidden;
|
2852
|
-
}
|
2853
|
-
return props;
|
2851
|
+
return this.getBaseProps(props, options);
|
2854
2852
|
}
|
2855
2853
|
}
|
2856
2854
|
class DataElementBarcodeProps {
|
@@ -2910,7 +2908,7 @@ class DataDecorateElement extends LeafElement {
|
|
2910
2908
|
const render = new DataDecorateRenderObject(this);
|
2911
2909
|
//render.rect.width = this.dProps.size / 2;
|
2912
2910
|
render.rect.width = 1;
|
2913
|
-
render.rect.height = 14;
|
2911
|
+
render.rect.height = Math.ceil(14 * TEXT_HEIGHT_FACTOR);
|
2914
2912
|
return render;
|
2915
2913
|
}
|
2916
2914
|
serialize() {
|
@@ -2933,6 +2931,17 @@ class DataDecorateRenderObject extends LeafRenderObject {
|
|
2933
2931
|
if (event.mode === 'print') {
|
2934
2932
|
return null;
|
2935
2933
|
}
|
2934
|
+
// if(this.element.parent.parent.type==='data-group'){
|
2935
|
+
// return null;
|
2936
|
+
// }
|
2937
|
+
const options = event.options;
|
2938
|
+
let color = options.dataDecoratorNormalColor;
|
2939
|
+
if (this.element.dataEle.isMouseenter && options.dataDecoratorMouseEnterColor) {
|
2940
|
+
color = options.dataDecoratorMouseEnterColor;
|
2941
|
+
}
|
2942
|
+
if (this.element.dataEle.isFocused && options.dataDecoratorFocusedColor) {
|
2943
|
+
color = options.dataDecoratorFocusedColor;
|
2944
|
+
}
|
2936
2945
|
const element = this.element;
|
2937
2946
|
const lineWidth = 3;
|
2938
2947
|
let path = '';
|
@@ -2946,7 +2955,7 @@ class DataDecorateRenderObject extends LeafRenderObject {
|
|
2946
2955
|
path = `M ${x - lineWidth} 2 L ${x} 2 L ${x} ${height} L ${x - lineWidth} ${height}`;
|
2947
2956
|
}
|
2948
2957
|
return ElementUtil.createSvgPath({
|
2949
|
-
stroke:
|
2958
|
+
stroke: color,
|
2950
2959
|
fill: "none",
|
2951
2960
|
'stroke-width': 1,
|
2952
2961
|
d: path
|
@@ -3112,7 +3121,7 @@ class ParagraphElement extends BlockContentElement {
|
|
3112
3121
|
return new ParagraphElement();
|
3113
3122
|
}
|
3114
3123
|
}
|
3115
|
-
class ParagraphRenderObject extends
|
3124
|
+
class ParagraphRenderObject extends MultiBlockLineRenderObject {
|
3116
3125
|
/**
|
3117
3126
|
* 绘制项目符号
|
3118
3127
|
*/
|
@@ -3661,7 +3670,7 @@ class DocumentRenderObject extends BlockContainerRenderObject {
|
|
3661
3670
|
},
|
3662
3671
|
},
|
3663
3672
|
children: [
|
3664
|
-
pageCorner,
|
3673
|
+
pageCorner, highlight, ...CommonUtil.toArray(event.getChildNodes(this)), pageNum, selection, copyright
|
3665
3674
|
]
|
3666
3675
|
};
|
3667
3676
|
}
|
@@ -3699,11 +3708,10 @@ class DocumentRenderObject extends BlockContainerRenderObject {
|
|
3699
3708
|
}
|
3700
3709
|
const str = "\u6f14\u793a\u7248\u672c";
|
3701
3710
|
const textProps = new TextProps();
|
3702
|
-
textProps.color = "#
|
3703
|
-
textProps.fontName = '
|
3711
|
+
textProps.color = "#bfbfbf";
|
3712
|
+
textProps.fontName = '宋体';
|
3704
3713
|
textProps.fontSize = 80;
|
3705
3714
|
textProps.fontStyle = 'italic';
|
3706
|
-
event.renderCtx.contentContext.measureText(str, textProps);
|
3707
3715
|
const getTextRotationAngle = (width, height) => {
|
3708
3716
|
return Math.atan(height / width) * 180 / Math.PI;
|
3709
3717
|
};
|
@@ -3722,6 +3730,7 @@ class DocumentRenderObject extends BlockContainerRenderObject {
|
|
3722
3730
|
'font-size': textProps.fontSize,
|
3723
3731
|
"stroke": textProps.color,
|
3724
3732
|
'fill': '#fff',
|
3733
|
+
'opacity': '0.5',
|
3725
3734
|
x: this.rect.width / 2,
|
3726
3735
|
y: this.rect.height / 2,
|
3727
3736
|
}
|
@@ -3933,19 +3942,83 @@ class DataElementInlineGroup extends InlineGroupInputElement {
|
|
3933
3942
|
expressFn;
|
3934
3943
|
beginMeasure(data) {
|
3935
3944
|
super.beginMeasure(data);
|
3936
|
-
if (!this.props.expression || !data.
|
3945
|
+
// if (!this.props.expression || !data.options.enableDyExpression) {
|
3946
|
+
// return;
|
3947
|
+
// }
|
3948
|
+
// try {
|
3949
|
+
// if (!this.expressFn) {
|
3950
|
+
// const code = parser(this.props.expression);
|
3951
|
+
// this.expressFn = new Function(`with(this){ ${code} }`);
|
3952
|
+
// }
|
3953
|
+
// this.expressFn.bind(data.execute)();
|
3954
|
+
// //this.expressFn();
|
3955
|
+
// } catch (e) {
|
3956
|
+
// this.expressFn = new Function();
|
3957
|
+
// }
|
3958
|
+
}
|
3959
|
+
parserExpress;
|
3960
|
+
/**
|
3961
|
+
* 解析可见性表达式
|
3962
|
+
* @param ele
|
3963
|
+
* @param execute
|
3964
|
+
* @private
|
3965
|
+
*/
|
3966
|
+
parseEleExpression(data) {
|
3967
|
+
const execute = data.execute;
|
3968
|
+
//不存在表达式,或者不启用表达式,不做处理
|
3969
|
+
if (!this.props.expression || !data.options.enableDyExpression)
|
3937
3970
|
return;
|
3938
|
-
|
3971
|
+
//存在表达式,并且已经解析过,不再做处理
|
3972
|
+
if (this.parserExpress)
|
3973
|
+
return;
|
3974
|
+
const reactiveMode = data.renderCtx.drawMode !== 'print';
|
3939
3975
|
try {
|
3940
|
-
|
3941
|
-
|
3942
|
-
|
3976
|
+
const depIdItems = [];
|
3977
|
+
const depEleMap = new Map();
|
3978
|
+
let compliedCode = parser(this.props.expression, depIdItems);
|
3979
|
+
compliedCode = addReturn(compliedCode);
|
3980
|
+
if (depIdItems.length) {
|
3981
|
+
depIdItems.forEach(dep => {
|
3982
|
+
const refCtx = execute.getObject(dep);
|
3983
|
+
if (refCtx.ref) {
|
3984
|
+
const refEle = refCtx.ref.item;
|
3985
|
+
depEleMap.set(dep, refCtx);
|
3986
|
+
//当前有可能是checkbox数组
|
3987
|
+
const refEles = Array.isArray(refEle) ? refEle : [refEle];
|
3988
|
+
reactiveMode && refEles.forEach(item => {
|
3989
|
+
//求值依赖元素更改的时候,发布当前元素重新计算的指令
|
3990
|
+
item.onChangeSubject.subscribe(() => {
|
3991
|
+
this.pubOnChange('self');
|
3992
|
+
});
|
3993
|
+
});
|
3994
|
+
}
|
3995
|
+
});
|
3943
3996
|
}
|
3944
|
-
this.
|
3945
|
-
//this.expressFn();
|
3997
|
+
this.parserExpress = { compliedCode, func: new Function(`with(this){ ${compliedCode} }`), depItems: depEleMap };
|
3946
3998
|
}
|
3947
3999
|
catch (e) {
|
3948
|
-
this.
|
4000
|
+
console.error('解析表达式出错,parseEleExpression', this.props.expression);
|
4001
|
+
}
|
4002
|
+
}
|
4003
|
+
/**
|
4004
|
+
* 元素可见行求值
|
4005
|
+
* @param ele
|
4006
|
+
* @param executeCtx
|
4007
|
+
* @private
|
4008
|
+
*/
|
4009
|
+
evalEleExpr(executeCtx) {
|
4010
|
+
if (this.parserExpress && this.parserExpress.func) {
|
4011
|
+
try {
|
4012
|
+
executeCtx.setCurrentCtx(this, this.parserExpress.depItems);
|
4013
|
+
const func = this.parserExpress.func.bind(executeCtx);
|
4014
|
+
func();
|
4015
|
+
}
|
4016
|
+
catch (e) {
|
4017
|
+
console.error(e, "表达式执行出错:evalVisibleExpr", this.parserExpress.compliedCode);
|
4018
|
+
}
|
4019
|
+
finally {
|
4020
|
+
executeCtx.clearCurrentCtx();
|
4021
|
+
}
|
3949
4022
|
}
|
3950
4023
|
}
|
3951
4024
|
/**
|
@@ -4045,68 +4118,85 @@ class DataElementBaseFactory extends ElementFactory {
|
|
4045
4118
|
* @param r
|
4046
4119
|
*/
|
4047
4120
|
function exportDecoratorHTML(event, r) {
|
4048
|
-
|
4049
|
-
if (!canPaint) {
|
4121
|
+
if (event.mode === 'print') {
|
4050
4122
|
return;
|
4051
4123
|
}
|
4052
|
-
const
|
4053
|
-
|
4054
|
-
|
4055
|
-
|
4124
|
+
const options = event.options;
|
4125
|
+
let color = options.dataEleNormalBgColor;
|
4126
|
+
//空数据元填充颜色
|
4127
|
+
if (r.element.length === 2 && options.dataEleEmptyBgColor) {
|
4128
|
+
color = options.dataEleEmptyBgColor;
|
4056
4129
|
}
|
4057
|
-
if (
|
4058
|
-
|
4059
|
-
const bgY = event.relativePagePos.y;
|
4060
|
-
event.highlights.push(ElementUtil.getFillSvgRect(bgX, bgY, r.rect.width, r.rect.height, color));
|
4061
|
-
return;
|
4130
|
+
if (r.element.isMouseenter && options.dataEleMouseEnterBgColor) {
|
4131
|
+
color = options.dataEleMouseEnterBgColor;
|
4062
4132
|
}
|
4063
|
-
|
4064
|
-
|
4065
|
-
const renderPosMap = getCurrentParaGroupRenders(r).map(item => ({ pos: getRenderPosToDoc(item), render: item }));
|
4066
|
-
if (renderPosMap.length > 1) {
|
4067
|
-
const secondGroupRenderPos = renderPosMap[1].pos;
|
4068
|
-
if (secondGroupRenderPos.x + renderPosMap[1].render.rect.width > event.relativePagePos.x) {
|
4069
|
-
const leftPoints = [];
|
4070
|
-
const rightPoints = [];
|
4071
|
-
for (let i = 0; i < renderPosMap.length; i++) {
|
4072
|
-
const groupRender = renderPosMap[i].render;
|
4073
|
-
const groupRenderPos = renderPosMap[i].pos;
|
4074
|
-
leftPoints.push({ x: groupRenderPos.x, y: groupRenderPos.y - verOffset });
|
4075
|
-
rightPoints.push({
|
4076
|
-
x: groupRenderPos.x + groupRender.rect.width,
|
4077
|
-
y: groupRenderPos.y - verOffset
|
4078
|
-
});
|
4079
|
-
leftPoints.push({
|
4080
|
-
x: groupRenderPos.x,
|
4081
|
-
y: groupRenderPos.y + groupRender.rect.height + verOffset * 2
|
4082
|
-
});
|
4083
|
-
rightPoints.push({
|
4084
|
-
x: groupRenderPos.x + groupRender.rect.width,
|
4085
|
-
y: groupRenderPos.y + groupRender.rect.height + verOffset * 2
|
4086
|
-
});
|
4087
|
-
}
|
4088
|
-
const sharpPoints1 = CommonUtil.resharpPoints(rightPoints);
|
4089
|
-
const sharpPoints = CommonUtil.resharpPoints([...leftPoints.reverse()]);
|
4090
|
-
const path = [...sharpPoints, ...sharpPoints1, sharpPoints[0]].map((item, index) => ((index === 0) ? 'M' : "L") + item.x + " " + item.y).join(" ");
|
4091
|
-
event.highlights.push(ElementUtil.createSvgPath({
|
4092
|
-
d: path,
|
4093
|
-
stroke: color,
|
4094
|
-
fill: 'none',
|
4095
|
-
'stroke-width': 1
|
4096
|
-
}));
|
4097
|
-
return;
|
4098
|
-
}
|
4099
|
-
}
|
4100
|
-
for (let i = 0; i < renderPosMap.length; i++) {
|
4101
|
-
const currRen = renderPosMap[i];
|
4102
|
-
event.highlights.push(ElementUtil.createSvgPath({
|
4103
|
-
d: `M${currRen.pos.x} ${currRen.pos.y} L${currRen.pos.x + currRen.render.rect.width} ${currRen.pos.y} L${currRen.pos.x + currRen.render.rect.width} ${currRen.pos.y + currRen.render.rect.height} L${currRen.pos.x} ${currRen.pos.y + currRen.render.rect.height} Z`,
|
4104
|
-
stroke: '#0050b3',
|
4105
|
-
fill: 'none',
|
4106
|
-
'stroke-width': 1
|
4107
|
-
}));
|
4108
|
-
}
|
4133
|
+
if (r.element.isFocused && options.dataEleFocusedBgColor) {
|
4134
|
+
color = options.dataEleFocusedBgColor;
|
4109
4135
|
}
|
4136
|
+
//绘制背景
|
4137
|
+
const bgX = event.relativePagePos.x;
|
4138
|
+
const bgY = event.relativePagePos.y;
|
4139
|
+
event.highlights.push(ElementUtil.getFillSvgRect(bgX, bgY, r.rect.width, r.rect.height, color));
|
4140
|
+
// const canPaint = r.element.isMouseenter || r.element.isFocused;
|
4141
|
+
// if (!canPaint) {
|
4142
|
+
// return;
|
4143
|
+
// }
|
4144
|
+
// const mode = event.options.dataEleDecoratorMode;
|
4145
|
+
// if (mode === 'none') {
|
4146
|
+
// return;
|
4147
|
+
// }
|
4148
|
+
// if (mode === 'overlay') {
|
4149
|
+
// const bgX = event.relativePagePos.x;
|
4150
|
+
// const bgY = event.relativePagePos.y;
|
4151
|
+
// event.highlights.push(ElementUtil.getFillSvgRect(bgX, bgY, r.rect.width, r.rect.height, color));
|
4152
|
+
// return;
|
4153
|
+
// } else if (mode === 'outline') {
|
4154
|
+
// const verOffset = 0;
|
4155
|
+
// const renderPosMap = getCurrentParaGroupRenders(r).map(item => ({ pos: getRenderPosToDoc(item), render: item }));
|
4156
|
+
// if (renderPosMap.length > 1) {
|
4157
|
+
// const secondGroupRenderPos = renderPosMap[1].pos;
|
4158
|
+
// if (secondGroupRenderPos.x + renderPosMap[1].render.rect.width > event.relativePagePos.x) {
|
4159
|
+
// const leftPoints: Array<Position> = [];
|
4160
|
+
// const rightPoints: Array<Position> = [];
|
4161
|
+
// for (let i = 0; i < renderPosMap.length; i++) {
|
4162
|
+
// const groupRender = renderPosMap[i].render;
|
4163
|
+
// const groupRenderPos = renderPosMap[i].pos;
|
4164
|
+
// leftPoints.push({ x: groupRenderPos.x, y: groupRenderPos.y - verOffset });
|
4165
|
+
// rightPoints.push({
|
4166
|
+
// x: groupRenderPos.x + groupRender.rect.width,
|
4167
|
+
// y: groupRenderPos.y - verOffset
|
4168
|
+
// });
|
4169
|
+
// leftPoints.push({
|
4170
|
+
// x: groupRenderPos.x,
|
4171
|
+
// y: groupRenderPos.y + groupRender.rect.height + verOffset * 2
|
4172
|
+
// });
|
4173
|
+
// rightPoints.push({
|
4174
|
+
// x: groupRenderPos.x + groupRender.rect.width,
|
4175
|
+
// y: groupRenderPos.y + groupRender.rect.height + verOffset * 2
|
4176
|
+
// });
|
4177
|
+
// }
|
4178
|
+
// const sharpPoints1 = CommonUtil.resharpPoints(rightPoints);
|
4179
|
+
// const sharpPoints = CommonUtil.resharpPoints([...leftPoints.reverse()]);
|
4180
|
+
// const path = [...sharpPoints, ...sharpPoints1, sharpPoints[0]].map((item, index) => ((index === 0) ? 'M' : "L") + item.x + " " + item.y).join(" ")
|
4181
|
+
// event.highlights.push(ElementUtil.createSvgPath({
|
4182
|
+
// d: path,
|
4183
|
+
// stroke: color,
|
4184
|
+
// fill: 'none',
|
4185
|
+
// 'stroke-width': 1
|
4186
|
+
// }));
|
4187
|
+
// return;
|
4188
|
+
// }
|
4189
|
+
// }
|
4190
|
+
// for (let i = 0; i < renderPosMap.length; i++) {
|
4191
|
+
// const currRen = renderPosMap[i];
|
4192
|
+
// event.highlights.push(ElementUtil.createSvgPath({
|
4193
|
+
// d: `M${currRen.pos.x} ${currRen.pos.y} L${currRen.pos.x + currRen.render.rect.width} ${currRen.pos.y} L${currRen.pos.x + currRen.render.rect.width} ${currRen.pos.y + currRen.render.rect.height} L${currRen.pos.x} ${currRen.pos.y + currRen.render.rect.height} Z`,
|
4194
|
+
// stroke: '#0050b3',
|
4195
|
+
// fill: 'none',
|
4196
|
+
// 'stroke-width': 1
|
4197
|
+
// }));
|
4198
|
+
// }
|
4199
|
+
// }
|
4110
4200
|
}
|
4111
4201
|
/**
|
4112
4202
|
* 渲染数据源验证错误提示框
|
@@ -4211,30 +4301,6 @@ function renderUnderWavyLine(event, r, color) {
|
|
4211
4301
|
d += Array(Math.ceil(width / 3)).fill("3,0").join(' t ');
|
4212
4302
|
const path = ElementUtil.createSvgPath({ d, fill: 'none', stroke: color });
|
4213
4303
|
event.highlights.push(path);
|
4214
|
-
}
|
4215
|
-
/**
|
4216
|
-
* 获取渲染元素相对稳当的位置
|
4217
|
-
* @param render
|
4218
|
-
* @param refPos
|
4219
|
-
*/
|
4220
|
-
function getRenderPosToDoc(render, refPos = null) {
|
4221
|
-
refPos = refPos ?? { x: 0, y: 0 };
|
4222
|
-
if (render instanceof DocumentRenderObject) {
|
4223
|
-
return refPos;
|
4224
|
-
}
|
4225
|
-
const currPos = { x: render.rect.x + refPos.x, y: render.rect.y + refPos.y };
|
4226
|
-
return getRenderPosToDoc(render.parent, currPos);
|
4227
|
-
}
|
4228
|
-
function getCurrentParaGroupRenders(r) {
|
4229
|
-
const renders = [];
|
4230
|
-
const currParaRender = ElementUtil.getParentRender(r, ParagraphRenderObject);
|
4231
|
-
for (let i = 0; i < r.element.paintRenders.length; i++) {
|
4232
|
-
const paraRender = ElementUtil.getParentRender(r.element.paintRenders[i], ParagraphRenderObject);
|
4233
|
-
if (paraRender === currParaRender) {
|
4234
|
-
renders.push(r.element.paintRenders[i]);
|
4235
|
-
}
|
4236
|
-
}
|
4237
|
-
return renders;
|
4238
4304
|
}
|
4239
4305
|
|
4240
4306
|
class DocumentBodyElement extends BlockContainerElement {
|
@@ -4276,7 +4342,7 @@ class DocumentBodyElement extends BlockContainerElement {
|
|
4276
4342
|
super.beginMeasure(data);
|
4277
4343
|
}
|
4278
4344
|
}
|
4279
|
-
class DocumentBodyRenderObject extends
|
4345
|
+
class DocumentBodyRenderObject extends MultiBlockLineRenderObject {
|
4280
4346
|
clone(cloneData = true) {
|
4281
4347
|
const cloneRender = new DocumentBodyRenderObject(this.element);
|
4282
4348
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -4575,7 +4641,7 @@ class TableRowElement extends BlockContainerElement {
|
|
4575
4641
|
return tr;
|
4576
4642
|
}
|
4577
4643
|
}
|
4578
|
-
class TableRowRenderObject extends
|
4644
|
+
class TableRowRenderObject extends MultiBlockLineRenderObject {
|
4579
4645
|
//被截断的行是否需要重新计算高度
|
4580
4646
|
remeasureState = true;
|
4581
4647
|
//当前行是否存在合并单元格
|
@@ -4805,9 +4871,7 @@ class TextGroupRenderObject extends LeafRenderObject {
|
|
4805
4871
|
event.highlights.push(ElementUtil.getStrokeSvgPath(path, '#000', 1));
|
4806
4872
|
}
|
4807
4873
|
//处理null-text
|
4808
|
-
if (this.element.isDecorate && this.element.disableClick && !this.element.parent)
|
4809
|
-
t.data.attrs['opacity'] = '0.58';
|
4810
|
-
}
|
4874
|
+
if (this.element.isDecorate && this.element.disableClick && !this.element.parent) ;
|
4811
4875
|
return t;
|
4812
4876
|
}
|
4813
4877
|
}
|
@@ -6074,7 +6138,7 @@ class TableElement extends BlockContainerElement {
|
|
6074
6138
|
};
|
6075
6139
|
}
|
6076
6140
|
}
|
6077
|
-
class TableRenderObject extends
|
6141
|
+
class TableRenderObject extends MultiBlockLineRenderObject {
|
6078
6142
|
setRenderWidth(maxWidth) {
|
6079
6143
|
super.setRenderWidth(maxWidth);
|
6080
6144
|
}
|
@@ -8580,7 +8644,7 @@ class DataElementGroupElement extends InlineGroupInputElement {
|
|
8580
8644
|
return {
|
8581
8645
|
type: this.type,
|
8582
8646
|
props: {
|
8583
|
-
...this.props.getSerializeProps()
|
8647
|
+
...this.props.getSerializeProps(viewOptions)
|
8584
8648
|
}
|
8585
8649
|
};
|
8586
8650
|
}
|
@@ -8602,9 +8666,7 @@ class DataElementGroupFactory extends DataElementBaseFactory {
|
|
8602
8666
|
createElement(data) {
|
8603
8667
|
const props = data.props;
|
8604
8668
|
const ele = new DataElementGroupElement();
|
8605
|
-
ele.props
|
8606
|
-
ele.props.name = props.name;
|
8607
|
-
ele.props.hidden = Boolean(props.hidden);
|
8669
|
+
ElementUtil.readEleBaseProps(ele.props, props);
|
8608
8670
|
return ele;
|
8609
8671
|
}
|
8610
8672
|
}
|
@@ -8909,7 +8971,11 @@ class DataElementText extends DataElementInlineGroup {
|
|
8909
8971
|
super('data-ele-text');
|
8910
8972
|
this.props = new DataEleBaseTextProps();
|
8911
8973
|
}
|
8912
|
-
createRenderObject() {
|
8974
|
+
createRenderObject(data) {
|
8975
|
+
if (data.options.enableDyExpression) {
|
8976
|
+
this.parseEleExpression(data);
|
8977
|
+
this.evalEleExpr(data.execute);
|
8978
|
+
}
|
8913
8979
|
return new DataElementTextRenderObject(this);
|
8914
8980
|
}
|
8915
8981
|
serialize(viewOptions) {
|
@@ -9029,33 +9095,23 @@ class DataContainerElement extends BlockContainerElement {
|
|
9029
9095
|
}
|
9030
9096
|
super.beginMeasure(data);
|
9031
9097
|
}
|
9032
|
-
serialize() {
|
9033
|
-
|
9098
|
+
serialize(viewOptions) {
|
9099
|
+
return {
|
9034
9100
|
type: this.type,
|
9035
|
-
props: {
|
9101
|
+
props: {
|
9102
|
+
...this.props.getSerializeProps(viewOptions)
|
9103
|
+
}
|
9036
9104
|
};
|
9037
|
-
if (this.props.id) {
|
9038
|
-
p['id'] = this.props.id;
|
9039
|
-
}
|
9040
|
-
if (this.props.name) {
|
9041
|
-
p['name'] = this.props.name;
|
9042
|
-
}
|
9043
|
-
if (this.props.caption) {
|
9044
|
-
p['caption'] = this.props.caption;
|
9045
|
-
}
|
9046
|
-
return p;
|
9047
9105
|
}
|
9048
9106
|
clone(data) {
|
9049
9107
|
const clone = new DataContainerElement();
|
9050
|
-
|
9051
|
-
clone.props.name = this.props.name;
|
9052
|
-
clone.props.caption = this.props.caption;
|
9108
|
+
this.props.clone(clone.props);
|
9053
9109
|
cloneElementBase(this, clone);
|
9054
9110
|
cloneChildren(this, clone, data);
|
9055
9111
|
return clone;
|
9056
9112
|
}
|
9057
9113
|
}
|
9058
|
-
class DataContainerRenderObject extends
|
9114
|
+
class DataContainerRenderObject extends MultiBlockLineRenderObject {
|
9059
9115
|
clone(cloneData = true) {
|
9060
9116
|
const cloneRender = new DataContainerRenderObject(this.element);
|
9061
9117
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -9080,24 +9136,21 @@ class DataContainerFactory extends ElementFactory {
|
|
9080
9136
|
return type === 'data-container';
|
9081
9137
|
}
|
9082
9138
|
createElement(data) {
|
9083
|
-
const
|
9139
|
+
const ele = new DataContainerElement();
|
9084
9140
|
const props = data.props;
|
9085
|
-
|
9086
|
-
|
9087
|
-
}
|
9088
|
-
if (props?.name) {
|
9089
|
-
element.props.name = props.name;
|
9090
|
-
}
|
9091
|
-
if (props?.caption) {
|
9092
|
-
element.props.caption = props.caption;
|
9093
|
-
}
|
9094
|
-
return element;
|
9141
|
+
ElementUtil.readEleBaseProps(ele.props, props);
|
9142
|
+
return ele;
|
9095
9143
|
}
|
9096
9144
|
}
|
9097
|
-
class DataContainerProps {
|
9098
|
-
|
9099
|
-
|
9100
|
-
|
9145
|
+
class DataContainerProps extends DataEleBaseProps {
|
9146
|
+
clone(dest) {
|
9147
|
+
const clone = dest ?? new DataContainerProps();
|
9148
|
+
super.cloneBaseProps(clone);
|
9149
|
+
}
|
9150
|
+
getSerializeProps(options) {
|
9151
|
+
const props = {};
|
9152
|
+
return this.getBaseProps(props, options);
|
9153
|
+
}
|
9101
9154
|
}
|
9102
9155
|
|
9103
9156
|
/**
|
@@ -9183,7 +9236,7 @@ class DocumentBodyPartElement extends BlockContainerElement {
|
|
9183
9236
|
return clone;
|
9184
9237
|
}
|
9185
9238
|
}
|
9186
|
-
class DocumentBodyPartRenderObject extends
|
9239
|
+
class DocumentBodyPartRenderObject extends MultiBlockLineRenderObject {
|
9187
9240
|
clone(cloneData = true) {
|
9188
9241
|
const cloneRender = new DocumentBodyPartRenderObject(this.element);
|
9189
9242
|
cloneRender.rect = ElementUtil.cloneRect(this.rect);
|
@@ -10559,10 +10612,10 @@ class ElementSerialize {
|
|
10559
10612
|
}
|
10560
10613
|
}
|
10561
10614
|
if (element.props && element.props['__attachedProperty'] && !result.props['__attachedProperty']) {
|
10562
|
-
result.props['__attachedProperty'] =
|
10615
|
+
result.props['__attachedProperty'] = this.serializeObject(element.props['__attachedProperty']);
|
10563
10616
|
}
|
10564
10617
|
if (element.attribute) {
|
10565
|
-
result['attribute'] = this.
|
10618
|
+
result['attribute'] = this.serializeObject(element.attribute);
|
10566
10619
|
}
|
10567
10620
|
return result;
|
10568
10621
|
}
|
@@ -10586,20 +10639,23 @@ class ElementSerialize {
|
|
10586
10639
|
}
|
10587
10640
|
return "";
|
10588
10641
|
}
|
10589
|
-
static
|
10590
|
-
if (
|
10591
|
-
|
10592
|
-
|
10593
|
-
|
10594
|
-
|
10642
|
+
static serializeObject(obj) {
|
10643
|
+
if (obj === null || obj === undefined) {
|
10644
|
+
return null;
|
10645
|
+
}
|
10646
|
+
const result = {};
|
10647
|
+
for (const key in obj) {
|
10648
|
+
if (obj[key] !== undefined && obj[key] !== null) {
|
10649
|
+
if (key.startsWith("__")) {
|
10650
|
+
continue;
|
10595
10651
|
}
|
10652
|
+
result[key] = obj[key];
|
10596
10653
|
}
|
10597
|
-
if (Object.keys(result).length === 0) {
|
10598
|
-
return null;
|
10599
|
-
}
|
10600
|
-
return CommonUtil.cloneValue(result);
|
10601
10654
|
}
|
10602
|
-
|
10655
|
+
if (Object.keys(result).length === 0) {
|
10656
|
+
return null;
|
10657
|
+
}
|
10658
|
+
return CommonUtil.cloneValue(result);
|
10603
10659
|
}
|
10604
10660
|
/**
|
10605
10661
|
* 获取选中的结构
|
@@ -13867,7 +13923,7 @@ class ParagraphMeasure {
|
|
13867
13923
|
}
|
13868
13924
|
}
|
13869
13925
|
arrangeInlineGroupElement(parentLine, ele) {
|
13870
|
-
const { options, renderCtx } = this;
|
13926
|
+
const { options, renderCtx, execute } = this;
|
13871
13927
|
let render = this.createRenderObject(ele);
|
13872
13928
|
//记录多行情况下的渲染对象,用于计算总长度,生成fill-null-space
|
13873
13929
|
const inlineGroupRenders = [];
|
@@ -13903,7 +13959,7 @@ class ParagraphMeasure {
|
|
13903
13959
|
isCloseToBody: parentLine.isCloseToBody,
|
13904
13960
|
applyNewLine() {
|
13905
13961
|
parentLine.applyNewLine();
|
13906
|
-
render = ele.createRenderObject({ options, renderCtx });
|
13962
|
+
render = ele.createRenderObject({ options, renderCtx, execute });
|
13907
13963
|
parentLine.add(render);
|
13908
13964
|
inlineGroupRenders.push(render);
|
13909
13965
|
},
|
@@ -14238,7 +14294,8 @@ class ParagraphMeasure {
|
|
14238
14294
|
}
|
14239
14295
|
return element.createRenderObject({
|
14240
14296
|
options: this.options,
|
14241
|
-
renderCtx: this.renderCtx
|
14297
|
+
renderCtx: this.renderCtx,
|
14298
|
+
execute: this.execute
|
14242
14299
|
});
|
14243
14300
|
}
|
14244
14301
|
}
|
@@ -14397,8 +14454,9 @@ class DocumentArrange {
|
|
14397
14454
|
this.pMeasure = new ParagraphMeasure(this.options, this.renderCtx, this.execute);
|
14398
14455
|
const data = {
|
14399
14456
|
doc,
|
14400
|
-
|
14457
|
+
options: this.options,
|
14401
14458
|
execute: this.execute,
|
14459
|
+
renderCtx: this.renderCtx,
|
14402
14460
|
createParaFn: () => this.createDefaultPara()
|
14403
14461
|
};
|
14404
14462
|
this.reset(data);
|
@@ -14601,7 +14659,7 @@ class DocumentArrange {
|
|
14601
14659
|
if (this.options.textRowLineMode && ele instanceof TableElement && ele.cacheRender) {
|
14602
14660
|
const cacheRender = ele.cacheRender;
|
14603
14661
|
clearChildrenRenderCache(ele);
|
14604
|
-
textLineRenderMode(cacheRender, { options: this.options, renderCtx: this.renderCtx });
|
14662
|
+
textLineRenderMode(cacheRender, { options: this.options, renderCtx: this.renderCtx, execute: this.execute });
|
14605
14663
|
}
|
14606
14664
|
}
|
14607
14665
|
getDocInnerRect(documentRender) {
|
@@ -14624,7 +14682,7 @@ class DocumentArrange {
|
|
14624
14682
|
}
|
14625
14683
|
const cloneRender = this.pMeasure.createRenderObject(render.element);
|
14626
14684
|
cloneRender.setRenderWidth(render.rect.width);
|
14627
|
-
if (render instanceof
|
14685
|
+
if (render instanceof MultiBlockLineRenderObject) {
|
14628
14686
|
let sumHeight = 0;
|
14629
14687
|
const children = [...render.getItems()];
|
14630
14688
|
let j = 0;
|
@@ -14633,7 +14691,7 @@ class DocumentArrange {
|
|
14633
14691
|
//sumHeight = ElementUtil.remeasure(cloneRender);
|
14634
14692
|
const calcBlockLineHeight = this.getBlockLineHeight(blockLine);
|
14635
14693
|
if (calcBlockLineHeight + sumHeight > limitHeight) {
|
14636
|
-
if (blockLine instanceof
|
14694
|
+
if (blockLine instanceof MultiBlockLineRenderObject) {
|
14637
14695
|
//限制的外框尺寸
|
14638
14696
|
const availHeight = limitHeight - sumHeight;
|
14639
14697
|
//限制的内框尺寸
|
@@ -15343,9 +15401,12 @@ class DocumentEvent {
|
|
15343
15401
|
},
|
15344
15402
|
mouseup: (evt) => {
|
15345
15403
|
this.mouseup(evt, ElementUtil.getMousePos(evt, scale));
|
15404
|
+
this.mouseClickHandle(evt);
|
15346
15405
|
},
|
15347
15406
|
click: (evt) => {
|
15348
|
-
|
15407
|
+
//nulltext 不触发 click 事件,暂且这么处理
|
15408
|
+
//移到 mouseup 事件中处理
|
15409
|
+
//this.mouseClickHandle(evt);
|
15349
15410
|
},
|
15350
15411
|
mousemove: (evt) => {
|
15351
15412
|
this.mousemove(evt, ElementUtil.getMousePos(evt, scale));
|
@@ -18639,103 +18700,56 @@ function getFocusTextSegment(selection) {
|
|
18639
18700
|
let { startControl: element, startOffset: offset } = selection;
|
18640
18701
|
if (!(element instanceof TextGroupElement))
|
18641
18702
|
return false;
|
18642
|
-
if (!supportSegment())
|
18643
|
-
return false;
|
18644
18703
|
const focusEle = element;
|
18645
|
-
|
18646
|
-
|
18647
|
-
|
18648
|
-
|
18649
|
-
const
|
18650
|
-
const
|
18651
|
-
|
18652
|
-
|
18653
|
-
|
18654
|
-
}
|
18655
|
-
if (curr.item === focusEle) {
|
18656
|
-
prev.index += offset;
|
18657
|
-
prev.completed = true;
|
18658
|
-
}
|
18659
|
-
else {
|
18660
|
-
prev.index += curr.item.textMeasures.length;
|
18661
|
-
}
|
18662
|
-
return prev;
|
18663
|
-
}, { completed: false, index: 0, text: '' });
|
18664
|
-
const { index: hitIndex, len: hitLen } = getHitSegment(text, index);
|
18665
|
-
const matchSegment = sortItems.filter(item => (item.index <= hitIndex && item.endIndex > hitIndex) || (item.index <= hitIndex + hitLen && item.endIndex > hitIndex + hitLen));
|
18666
|
-
const startSegment = matchSegment[0];
|
18667
|
-
const endSegment = matchSegment[matchSegment.length - 1];
|
18668
|
-
const startOffset = hitIndex - startSegment.index;
|
18669
|
-
const endOffset = hitIndex + hitLen - endSegment.index;
|
18670
|
-
const newRange = new SelectionRange();
|
18671
|
-
newRange.setStart(startSegment.item, startOffset);
|
18672
|
-
newRange.setEnd(endSegment.item, endOffset);
|
18673
|
-
selection.addRange(newRange);
|
18704
|
+
const focusText = focusEle.text;
|
18705
|
+
if (!focusText) {
|
18706
|
+
return false;
|
18707
|
+
}
|
18708
|
+
const [start, end] = tokenize(focusText, offset);
|
18709
|
+
const range = new SelectionRange();
|
18710
|
+
range.setStart(focusEle, start);
|
18711
|
+
range.setEnd(focusEle, end + 1);
|
18712
|
+
selection.addRange(range);
|
18674
18713
|
return true;
|
18675
18714
|
}
|
18676
|
-
|
18677
|
-
|
18678
|
-
|
18679
|
-
|
18680
|
-
|
18681
|
-
|
18682
|
-
|
18683
|
-
const
|
18684
|
-
|
18685
|
-
|
18686
|
-
|
18687
|
-
|
18688
|
-
|
18689
|
-
|
18690
|
-
|
18691
|
-
|
18692
|
-
|
18693
|
-
|
18694
|
-
|
18715
|
+
function tokenize(text, index) {
|
18716
|
+
if (text.length === 0) {
|
18717
|
+
return [0, 0]; // 处理空字符串的情况
|
18718
|
+
}
|
18719
|
+
const isChinese = (char) => {
|
18720
|
+
return /^[\u4e00-\u9fa5]+$/.test(char);
|
18721
|
+
};
|
18722
|
+
const isEnglish = (char) => {
|
18723
|
+
return /^[a-zA-Z]+$/.test(char);
|
18724
|
+
};
|
18725
|
+
const isNumeric = (char) => {
|
18726
|
+
return /^[0-9]+$/.test(char);
|
18727
|
+
};
|
18728
|
+
let start = index;
|
18729
|
+
let end = index;
|
18730
|
+
// 向左查找开始位置
|
18731
|
+
while (start > 0) {
|
18732
|
+
if ((isChinese(text[start]) && isChinese(text[start - 1])) ||
|
18733
|
+
(isEnglish(text[start]) && isEnglish(text[start - 1])) ||
|
18734
|
+
(isNumeric(text[start]) && isNumeric(text[start - 1]))) {
|
18735
|
+
start--;
|
18736
|
+
}
|
18737
|
+
else {
|
18738
|
+
break;
|
18695
18739
|
}
|
18696
|
-
index += currLen;
|
18697
18740
|
}
|
18698
|
-
|
18699
|
-
|
18700
|
-
|
18701
|
-
|
18702
|
-
|
18703
|
-
|
18704
|
-
|
18705
|
-
|
18706
|
-
|
18707
|
-
|
18708
|
-
let index = 0;
|
18709
|
-
const sortItems = [];
|
18710
|
-
for (let i = 0; i < texts.length; i++) {
|
18711
|
-
const item = texts[i];
|
18712
|
-
const sortData = {
|
18713
|
-
len: item.textMeasures.length,
|
18714
|
-
index,
|
18715
|
-
endIndex: index + item.textMeasures.length,
|
18716
|
-
item,
|
18717
|
-
text: item.text
|
18718
|
-
};
|
18719
|
-
sortItems.push(sortData);
|
18720
|
-
index += sortData.len;
|
18741
|
+
// 向右查找结束位置
|
18742
|
+
while (end < text.length - 1) {
|
18743
|
+
if ((isChinese(text[end]) && isChinese(text[end + 1])) ||
|
18744
|
+
(isEnglish(text[end]) && isEnglish(text[end + 1])) ||
|
18745
|
+
(isNumeric(text[end]) && isNumeric(text[end + 1]))) {
|
18746
|
+
end++;
|
18747
|
+
}
|
18748
|
+
else {
|
18749
|
+
break;
|
18750
|
+
}
|
18721
18751
|
}
|
18722
|
-
return
|
18723
|
-
}
|
18724
|
-
/**
|
18725
|
-
* 获取指定方向上连续的字符
|
18726
|
-
* @param element
|
18727
|
-
* @param prev
|
18728
|
-
*/
|
18729
|
-
function getConsecutiveTextsByDirection(element, prev = true) {
|
18730
|
-
let prevText = element;
|
18731
|
-
const prevTexts = [];
|
18732
|
-
const func = prev ? ElementUtil.getPrevSiblingElement : ElementUtil.getNextSiblingElement;
|
18733
|
-
const addItem = prev ? prevTexts.unshift : prevTexts.push;
|
18734
|
-
while ((prevText = func(prevText)) && prevText instanceof TextGroupElement) {
|
18735
|
-
//addItem(prevText);
|
18736
|
-
addItem.apply(prevTexts, [prevText]);
|
18737
|
-
}
|
18738
|
-
return prevTexts;
|
18752
|
+
return [start, end];
|
18739
18753
|
}
|
18740
18754
|
|
18741
18755
|
/**
|
@@ -19300,7 +19314,7 @@ class DocumentSvg {
|
|
19300
19314
|
ns: 'http://www.w3.org/2000/svg',
|
19301
19315
|
attrs: {
|
19302
19316
|
stroke: 'none',
|
19303
|
-
fill: item.color ??
|
19317
|
+
fill: item.color ?? this.viewOptions.selectionColor,
|
19304
19318
|
'paint-order': 'stroke fill markers',
|
19305
19319
|
d: `M${item.x} ${item.y} L${item.x + item.width} ${item.y} L${item.x + item.width} ${item.y + item.height} L${item.x} ${item.y + item.height} Z`,
|
19306
19320
|
'fill-opacity': '0.5'
|
@@ -19419,7 +19433,7 @@ class EditorCalendarVNode {
|
|
19419
19433
|
data: {
|
19420
19434
|
style: {
|
19421
19435
|
position: 'absolute',
|
19422
|
-
left: (position.x
|
19436
|
+
left: (position.x) + 'px',
|
19423
19437
|
top: position.y + 5 + position.height + 'px',
|
19424
19438
|
'min-width': '100px',
|
19425
19439
|
'background-color': 'white',
|
@@ -19555,6 +19569,9 @@ class EditorCalendarVNode {
|
|
19555
19569
|
on: {
|
19556
19570
|
click: () => {
|
19557
19571
|
this.onClickDayItem(day.date);
|
19572
|
+
},
|
19573
|
+
dblclick: () => {
|
19574
|
+
this.onSave();
|
19558
19575
|
}
|
19559
19576
|
}
|
19560
19577
|
},
|
@@ -19612,12 +19629,7 @@ class EditorCalendarVNode {
|
|
19612
19629
|
data: {
|
19613
19630
|
on: {
|
19614
19631
|
click: () => {
|
19615
|
-
|
19616
|
-
this.onSetValue.next(new Date());
|
19617
|
-
}
|
19618
|
-
else {
|
19619
|
-
this.onSetValue.next(moment(this.selectedDate.value + ' ' + this.selectedTime.value).toDate());
|
19620
|
-
}
|
19632
|
+
this.onSave();
|
19621
19633
|
}
|
19622
19634
|
}
|
19623
19635
|
},
|
@@ -19637,6 +19649,14 @@ class EditorCalendarVNode {
|
|
19637
19649
|
]
|
19638
19650
|
};
|
19639
19651
|
}
|
19652
|
+
onSave() {
|
19653
|
+
if (!this.selectedDate.value) {
|
19654
|
+
this.onSetValue.next(new Date());
|
19655
|
+
}
|
19656
|
+
else {
|
19657
|
+
this.onSetValue.next(moment(this.selectedDate.value + ' ' + this.selectedTime.value).toDate());
|
19658
|
+
}
|
19659
|
+
}
|
19640
19660
|
navigateToToday() {
|
19641
19661
|
this.currYear.value = new Date().getFullYear();
|
19642
19662
|
this.currMonth.value = new Date().getMonth();
|
@@ -20349,7 +20369,6 @@ class DocEditor {
|
|
20349
20369
|
beforeRenderSubject = new Subject();
|
20350
20370
|
afterRenderSubject = new Subject();
|
20351
20371
|
onBeforeSetCursorSubject = new Subject();
|
20352
|
-
contentChanged = new Subject();
|
20353
20372
|
onPatchVNodeSubject = new Subject();
|
20354
20373
|
selectionState;
|
20355
20374
|
onDblClickEvent = new Subject();
|
@@ -20641,10 +20660,12 @@ class DocEditor {
|
|
20641
20660
|
}
|
20642
20661
|
loadDoc(data) {
|
20643
20662
|
suppressTracking(() => {
|
20644
|
-
this.
|
20645
|
-
|
20646
|
-
|
20647
|
-
|
20663
|
+
this.noEffectChange(() => {
|
20664
|
+
this.adjustPageLayout();
|
20665
|
+
this.elementReader.read(data);
|
20666
|
+
this.refreshDocument();
|
20667
|
+
this.historyMange.clear();
|
20668
|
+
});
|
20648
20669
|
});
|
20649
20670
|
}
|
20650
20671
|
/**
|
@@ -20662,7 +20683,6 @@ class DocEditor {
|
|
20662
20683
|
suppressTracking(() => {
|
20663
20684
|
this.documentPaginator.rePages();
|
20664
20685
|
});
|
20665
|
-
this.contentChanged.next();
|
20666
20686
|
}
|
20667
20687
|
this.updateSelection();
|
20668
20688
|
this.setCursor();
|
@@ -20689,6 +20709,7 @@ class DocEditor {
|
|
20689
20709
|
ssChanged && this.documentEvent.invokeCursor(this.selectionState.startControl);
|
20690
20710
|
this.documentSelection.clearSnapshot();
|
20691
20711
|
this.documentSelection.takeSnapshot();
|
20712
|
+
return ssChanged;
|
20692
20713
|
}
|
20693
20714
|
/**
|
20694
20715
|
* 根据当前选区,更新待输入文本字体信息
|
@@ -20728,6 +20749,7 @@ class DocEditor {
|
|
20728
20749
|
this.selectionState.cursorPos = cursorRect;
|
20729
20750
|
const abPos = ElementUtil.cloneRect(cursorRect);
|
20730
20751
|
this.setCursorPosition(abPos);
|
20752
|
+
this.setCursorVisibility(true);
|
20731
20753
|
//this.documentEvent.invokeCursor(startControl);
|
20732
20754
|
return;
|
20733
20755
|
}
|
@@ -20761,7 +20783,7 @@ class DocEditor {
|
|
20761
20783
|
setCursorVisibility(visibility) {
|
20762
20784
|
if (visibility) {
|
20763
20785
|
//this.editInput.style.removeProperty('display');
|
20764
|
-
this.editInput.focus();
|
20786
|
+
this.editInput.focus({ preventScroll: true });
|
20765
20787
|
}
|
20766
20788
|
}
|
20767
20789
|
hiddenInput(reset = true, pos = null) {
|
@@ -20783,7 +20805,6 @@ class DocEditor {
|
|
20783
20805
|
this.editInput.style.height = position.height + 'px';
|
20784
20806
|
this.editInput.style.width = "1.6px";
|
20785
20807
|
this.editInput.readOnly = false;
|
20786
|
-
this.setCursorVisibility(true);
|
20787
20808
|
//判断光标位置是否被可见,如果不可见,需要将其设置到可见区域
|
20788
20809
|
//TODO:暂时不做处理
|
20789
20810
|
//this.setCursorInputStatus();
|
@@ -20819,7 +20840,7 @@ class DocEditor {
|
|
20819
20840
|
* 文档点击事件
|
20820
20841
|
*/
|
20821
20842
|
docClickHandle(evt) {
|
20822
|
-
this.hiddenInput();
|
20843
|
+
//this.hiddenInput();
|
20823
20844
|
// this.setCursor();
|
20824
20845
|
// this.updateSelection();
|
20825
20846
|
this.refreshDocument();
|
@@ -21119,20 +21140,20 @@ class DocEditor {
|
|
21119
21140
|
const startControl = this.selectionState.startControl;
|
21120
21141
|
if (startControl instanceof TextGroupElement) {
|
21121
21142
|
const selectedStyle = startControl.props.clone(null);
|
21122
|
-
const
|
21123
|
-
this.viewOptions.
|
21143
|
+
const selectionColor = this.viewOptions.selectionColor;
|
21144
|
+
this.viewOptions.selectionColor = "rgba(0,58,140,0.8)";
|
21124
21145
|
const cancelToken = {};
|
21125
21146
|
const sub = this.onClickEvent.subscribe(() => {
|
21126
21147
|
sub.unsubscribe();
|
21127
21148
|
this.setTextFormat(selectedStyle);
|
21128
|
-
this.viewOptions.
|
21149
|
+
this.viewOptions.selectionColor = selectionColor;
|
21129
21150
|
if (cancelToken.onFinish) {
|
21130
21151
|
cancelToken.onFinish(null);
|
21131
21152
|
}
|
21132
21153
|
});
|
21133
21154
|
cancelToken.cancel = () => {
|
21134
21155
|
sub.unsubscribe();
|
21135
|
-
this.viewOptions.
|
21156
|
+
this.viewOptions.selectionColor = selectionColor;
|
21136
21157
|
};
|
21137
21158
|
return cancelToken;
|
21138
21159
|
}
|
@@ -21565,7 +21586,7 @@ class DocEditor {
|
|
21565
21586
|
const scaleFitContainer = {
|
21566
21587
|
sel: 'div#scale-fit-container',
|
21567
21588
|
data: {
|
21568
|
-
style: {
|
21589
|
+
style: { height: '0px', }
|
21569
21590
|
},
|
21570
21591
|
children: [docContent]
|
21571
21592
|
};
|
@@ -21727,7 +21748,7 @@ class DocEditor {
|
|
21727
21748
|
data: {
|
21728
21749
|
style: {
|
21729
21750
|
position: 'absolute',
|
21730
|
-
left: (position.x
|
21751
|
+
left: (position.x) + 'px',
|
21731
21752
|
top: position.y + 5 + position.height + 'px',
|
21732
21753
|
},
|
21733
21754
|
hook: {
|
@@ -21893,7 +21914,7 @@ class DocEditor {
|
|
21893
21914
|
rule.setRuleOptions({ width: this.viewOptions.docPageSettings.width, pagePL, pagePR, docLeft });
|
21894
21915
|
}
|
21895
21916
|
version() {
|
21896
|
-
return "2.2.
|
21917
|
+
return "2.2.8";
|
21897
21918
|
}
|
21898
21919
|
switchPageHeaderEditor() {
|
21899
21920
|
this.docCtx.document.switchPageHeaderEditor(this.selectionState, null);
|
@@ -22196,6 +22217,13 @@ class DocEditor {
|
|
22196
22217
|
this.documentChange.appendText(text, this.docCtx.suggestions.currentMatchedText);
|
22197
22218
|
}
|
22198
22219
|
}
|
22220
|
+
parser(code, returnProcess = false) {
|
22221
|
+
const res = parser(code);
|
22222
|
+
if (returnProcess) {
|
22223
|
+
return addReturn(res);
|
22224
|
+
}
|
22225
|
+
return res;
|
22226
|
+
}
|
22199
22227
|
}
|
22200
22228
|
|
22201
22229
|
/**
|
@@ -27605,5 +27633,5 @@ function removeDuplicatesEvent(events) {
|
|
27605
27633
|
return arr;
|
27606
27634
|
}
|
27607
27635
|
|
27608
|
-
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, IsInSideInlineGroupInputElement, KeyboradElementEvent, LeafElement, LeafRenderObject, LostCursorEvent, MarginProps, ModifyFlag, MouseElementEvent, MousedownElementEvent,
|
27636
|
+
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, 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, exportDecoratorHTML, falseChar, fontMapFunc, formatEle, fromEvent, generatePatch, getCalleeName, getFocusTextSegment, inputText, insertEle, invokeTypeHandler, isDate, logUpdateEleProps, objectToString$4 as objectToString, onTableContextmenu, onceTask, parser, reactiveMap, removeEle, removeText, renderErrorTip, renderUnderWavyLine, runTextLineRender, setChildrenModifyFlag, setNotifyChangedCallback, setTraceTrackingFlag, suppressTracking, targetMaps, textLineRenderMode, toRawType, toTypeString, trueChar, validateDataEle, validateDataEleRenderObj, validateInlineInputRenderObj, watchChanged };
|
27609
27637
|
//# sourceMappingURL=index.js.map
|