@hailin-zheng/editor-core 2.2.6 → 2.2.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|