@logicflow/extension 2.2.0 → 2.2.1
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/README.md +16 -0
- package/dist/index.css +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/NodeResize/node/RectResize.d.ts +0 -6
- package/es/NodeResize/node/RectResize.js +2 -11
- package/es/bpmn-elements-adapter/json2xml.d.ts +2 -1
- package/es/bpmn-elements-adapter/json2xml.js +18 -4
- package/es/bpmn-elements-adapter/xml2json.js +2 -7
- package/es/components/control/index.d.ts +1 -0
- package/es/components/control/index.js +24 -11
- package/es/components/mini-map/index.js +1 -1
- package/es/dynamic-group/model.d.ts +2 -1
- package/es/dynamic-group/model.js +28 -11
- package/es/dynamic-group/node.js +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -0
- package/es/insert-node-in-polyline/index.js +11 -35
- package/es/materials/curved-edge/index.js +49 -21
- package/es/materials/group/GroupNode.d.ts +0 -6
- package/es/materials/group/GroupNode.js +1 -6
- package/es/pool/LaneModel.d.ts +90 -0
- package/es/pool/LaneModel.js +252 -0
- package/es/pool/LaneView.d.ts +40 -0
- package/es/pool/LaneView.js +202 -0
- package/es/pool/PoolModel.d.ts +120 -0
- package/es/pool/PoolModel.js +586 -0
- package/es/pool/PoolView.d.ts +17 -0
- package/es/pool/PoolView.js +76 -0
- package/es/pool/constant.d.ts +15 -0
- package/es/pool/constant.js +17 -0
- package/es/pool/index.d.ts +89 -0
- package/es/pool/index.js +524 -0
- package/es/pool/utils.d.ts +19 -0
- package/es/pool/utils.js +33 -0
- package/es/style/index.css +1 -1
- package/es/style/raw.d.ts +1 -1
- package/es/style/raw.js +1 -1
- package/es/tools/label/LabelOverlay.js +3 -3
- package/es/tools/label/mediumEditor.d.ts +1 -1
- package/es/tools/label/mediumEditor.js +89 -52
- package/es/tools/snapshot/index.d.ts +7 -3
- package/es/tools/snapshot/index.js +72 -77
- package/lib/NodeResize/node/RectResize.d.ts +0 -6
- package/lib/NodeResize/node/RectResize.js +1 -10
- package/lib/bpmn-elements-adapter/json2xml.d.ts +2 -1
- package/lib/bpmn-elements-adapter/json2xml.js +19 -4
- package/lib/bpmn-elements-adapter/xml2json.js +2 -7
- package/lib/components/control/index.d.ts +1 -0
- package/lib/components/control/index.js +24 -11
- package/lib/components/mini-map/index.js +1 -1
- package/lib/dynamic-group/model.d.ts +2 -1
- package/lib/dynamic-group/model.js +28 -11
- package/lib/dynamic-group/node.js +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -0
- package/lib/insert-node-in-polyline/index.js +10 -34
- package/lib/materials/curved-edge/index.js +49 -21
- package/lib/materials/group/GroupNode.d.ts +0 -6
- package/lib/materials/group/GroupNode.js +1 -6
- package/lib/pool/LaneModel.d.ts +90 -0
- package/lib/pool/LaneModel.js +255 -0
- package/lib/pool/LaneView.d.ts +40 -0
- package/lib/pool/LaneView.js +205 -0
- package/lib/pool/PoolModel.d.ts +120 -0
- package/lib/pool/PoolModel.js +589 -0
- package/lib/pool/PoolView.d.ts +17 -0
- package/lib/pool/PoolView.js +79 -0
- package/lib/pool/constant.d.ts +15 -0
- package/lib/pool/constant.js +20 -0
- package/lib/pool/index.d.ts +89 -0
- package/lib/pool/index.js +527 -0
- package/lib/pool/utils.d.ts +19 -0
- package/lib/pool/utils.js +38 -0
- package/lib/style/index.css +1 -1
- package/lib/style/raw.d.ts +1 -1
- package/lib/style/raw.js +1 -1
- package/lib/tools/label/LabelOverlay.js +2 -2
- package/lib/tools/label/mediumEditor.d.ts +1 -1
- package/lib/tools/label/mediumEditor.js +91 -53
- package/lib/tools/snapshot/index.d.ts +7 -3
- package/lib/tools/snapshot/index.js +72 -77
- package/package.json +10 -7
- package/.turbo/turbo-build.log +0 -38
- package/CHANGELOG.md +0 -1766
- package/__test__/bpmn-adapter.test.js +0 -227
- package/es/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
- package/es/materials/curved-edge/__test__/curved-edge.test.js +0 -18
- package/jest.config.js +0 -198
- package/lib/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
- package/lib/materials/curved-edge/__test__/curved-edge.test.js +0 -20
- package/rollup.config.js +0 -52
- package/src/NodeResize/BasicShape/Ellipse.tsx +0 -22
- package/src/NodeResize/BasicShape/Polygon.tsx +0 -24
- package/src/NodeResize/BasicShape/Rect.tsx +0 -44
- package/src/NodeResize/control/Control.tsx +0 -537
- package/src/NodeResize/control/ControlGroup.tsx +0 -76
- package/src/NodeResize/control/Util.ts +0 -206
- package/src/NodeResize/index.ts +0 -26
- package/src/NodeResize/node/DiamondResize.tsx +0 -149
- package/src/NodeResize/node/EllipseResize.tsx +0 -140
- package/src/NodeResize/node/HtmlResize.tsx +0 -125
- package/src/NodeResize/node/RectResize.tsx +0 -146
- package/src/NodeResize/node/index.ts +0 -4
- package/src/bpmn/constant.ts +0 -56
- package/src/bpmn/events/EndEvent.ts +0 -73
- package/src/bpmn/events/StartEvent.ts +0 -52
- package/src/bpmn/events/index.ts +0 -2
- package/src/bpmn/flow/SequenceFlow.ts +0 -25
- package/src/bpmn/flow/index.ts +0 -1
- package/src/bpmn/gateways/ExclusiveGateway.ts +0 -71
- package/src/bpmn/gateways/index.ts +0 -1
- package/src/bpmn/getBpmnId.ts +0 -31
- package/src/bpmn/index.ts +0 -60
- package/src/bpmn/tasks/ServiceTask.ts +0 -63
- package/src/bpmn/tasks/UserTask.ts +0 -64
- package/src/bpmn/tasks/index.ts +0 -2
- package/src/bpmn-adapter/bpmnIds.ts +0 -31
- package/src/bpmn-adapter/index.ts +0 -835
- package/src/bpmn-adapter/json2xml.ts +0 -127
- package/src/bpmn-adapter/xml2json.ts +0 -544
- package/src/bpmn-elements/README.md +0 -223
- package/src/bpmn-elements/__tests__/definition.test.js +0 -72
- package/src/bpmn-elements/index.d.ts +0 -26
- package/src/bpmn-elements/index.ts +0 -107
- package/src/bpmn-elements/presets/Event/EndEventFactory.ts +0 -114
- package/src/bpmn-elements/presets/Event/IntermediateCatchEvent.ts +0 -108
- package/src/bpmn-elements/presets/Event/IntermediateThrowEvent.ts +0 -109
- package/src/bpmn-elements/presets/Event/StartEventFactory.ts +0 -114
- package/src/bpmn-elements/presets/Event/boundaryEventFactory.ts +0 -117
- package/src/bpmn-elements/presets/Event/index.ts +0 -14
- package/src/bpmn-elements/presets/Flow/flow.d.ts +0 -6
- package/src/bpmn-elements/presets/Flow/index.ts +0 -8
- package/src/bpmn-elements/presets/Flow/manhattan.ts +0 -691
- package/src/bpmn-elements/presets/Flow/sequenceFlow.ts +0 -65
- package/src/bpmn-elements/presets/Gateway/gateway.ts +0 -107
- package/src/bpmn-elements/presets/Gateway/index.ts +0 -23
- package/src/bpmn-elements/presets/Pool/Lane.ts +0 -211
- package/src/bpmn-elements/presets/Pool/Pool.ts +0 -284
- package/src/bpmn-elements/presets/Pool/index.ts +0 -89
- package/src/bpmn-elements/presets/Task/index.ts +0 -122
- package/src/bpmn-elements/presets/Task/subProcess.ts +0 -189
- package/src/bpmn-elements/presets/Task/task.ts +0 -193
- package/src/bpmn-elements/presets/icons.ts +0 -155
- package/src/bpmn-elements/utils.ts +0 -52
- package/src/bpmn-elements-adapter/README.md +0 -293
- package/src/bpmn-elements-adapter/__tests__/adapter_in.test.js +0 -528
- package/src/bpmn-elements-adapter/__tests__/adapter_out.test.js +0 -569
- package/src/bpmn-elements-adapter/constant.ts +0 -76
- package/src/bpmn-elements-adapter/index.ts +0 -1134
- package/src/bpmn-elements-adapter/json2xml.ts +0 -91
- package/src/bpmn-elements-adapter/xml2json.ts +0 -548
- package/src/components/context-menu/index.ts +0 -253
- package/src/components/control/index.ts +0 -141
- package/src/components/dnd-panel/index.ts +0 -137
- package/src/components/highlight/index.ts +0 -227
- package/src/components/menu/index.ts +0 -748
- package/src/components/mini-map/index.ts +0 -686
- package/src/components/selection-select/index.ts +0 -387
- package/src/dynamic-group/index.ts +0 -775
- package/src/dynamic-group/model.ts +0 -562
- package/src/dynamic-group/node.ts +0 -288
- package/src/dynamic-group/utils.ts +0 -46
- package/src/index.less +0 -1
- package/src/index.ts +0 -45
- package/src/insert-node-in-polyline/edge.ts +0 -175
- package/src/insert-node-in-polyline/index.ts +0 -187
- package/src/materials/curved-edge/__test__/curved-edge.test.ts +0 -46
- package/src/materials/curved-edge/index.ts +0 -185
- package/src/materials/group/GroupNode.ts +0 -442
- package/src/materials/group/index.ts +0 -542
- package/src/materials/node-selection/index.ts +0 -380
- package/src/mindmap/fakerRoot.ts +0 -19
- package/src/mindmap/index.ts +0 -328
- package/src/mindmap/markContent.ts +0 -81
- package/src/mindmap/markContentOption.ts +0 -81
- package/src/mindmap/markEntity.ts +0 -82
- package/src/mindmap/markRoot.ts +0 -83
- package/src/mindmap/theme.ts +0 -11
- package/src/rect-label-node/RectLabelNodeView.ts +0 -33
- package/src/rect-label-node/index.ts +0 -15
- package/src/style/index.less +0 -342
- package/src/style/raw.ts +0 -295
- package/src/tools/auto-layout/index.ts +0 -282
- package/src/tools/flow-path/index.ts +0 -233
- package/src/tools/label/Label.tsx +0 -357
- package/src/tools/label/LabelModel.ts +0 -83
- package/src/tools/label/LabelOverlay.tsx +0 -158
- package/src/tools/label/algorithm.ts +0 -42
- package/src/tools/label/index.ts +0 -479
- package/src/tools/label/mediumEditor.ts +0 -94
- package/src/tools/label/utils.ts +0 -395
- package/src/tools/proximity-connect/index.ts +0 -435
- package/src/tools/snapshot/README.md +0 -145
- package/src/tools/snapshot/index.ts +0 -718
- package/src/tools/snapshot/utils.ts +0 -163
- package/src/turbo-adapter/index.ts +0 -212
- package/stats.html +0 -4842
- package/tsconfig.json +0 -18
|
@@ -36,56 +36,93 @@ export var defaultOptions = {
|
|
|
36
36
|
},
|
|
37
37
|
disableEditing: true,
|
|
38
38
|
};
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
39
|
+
export function createColorPickerButtonClass(MediumEditor) {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
var ButtonBase = ((_a = MediumEditor === null || MediumEditor === void 0 ? void 0 : MediumEditor.extensions) === null || _a === void 0 ? void 0 : _a.button) || ((_b = MediumEditor === null || MediumEditor === void 0 ? void 0 : MediumEditor.extensions) === null || _b === void 0 ? void 0 : _b.button);
|
|
42
|
+
var ExtensionBase = (MediumEditor === null || MediumEditor === void 0 ? void 0 : MediumEditor.Extension) || (MediumEditor === null || MediumEditor === void 0 ? void 0 : MediumEditor.Extension);
|
|
43
|
+
// 当 Button 扩展基类不可用时,回退到 Extension 基类,避免在模块加载阶段抛错
|
|
44
|
+
var Base = ButtonBase || ExtensionBase;
|
|
45
|
+
if (!Base) {
|
|
46
|
+
console.warn('MediumEditor button/extension base not available; using noop extension');
|
|
47
|
+
return /** @class */ (function () {
|
|
48
|
+
function class_1() {
|
|
49
|
+
}
|
|
50
|
+
return class_1;
|
|
51
|
+
}());
|
|
52
|
+
}
|
|
53
|
+
return Base.extend({
|
|
54
|
+
name: 'colorpicker',
|
|
55
|
+
tagNames: ['mark'],
|
|
56
|
+
contentDefault: '<b>Color</b>',
|
|
57
|
+
aria: 'Color Picker',
|
|
58
|
+
action: 'colorPicker',
|
|
59
|
+
init: function () {
|
|
60
|
+
var _this = this;
|
|
61
|
+
var _a, _b;
|
|
62
|
+
try {
|
|
63
|
+
rangy.init();
|
|
64
|
+
}
|
|
65
|
+
catch (_c) {
|
|
66
|
+
console.error('rangy.init failed');
|
|
67
|
+
}
|
|
68
|
+
// 初始化按钮(ButtonBase 才有 prototype.init)
|
|
69
|
+
try {
|
|
70
|
+
;
|
|
71
|
+
(_b = (_a = ButtonBase === null || ButtonBase === void 0 ? void 0 : ButtonBase.prototype) === null || _a === void 0 ? void 0 : _a.init) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
72
|
+
}
|
|
73
|
+
catch (_d) {
|
|
74
|
+
console.error('ButtonBase.init failed');
|
|
75
|
+
}
|
|
76
|
+
this.colorPicker = new Picker({
|
|
77
|
+
parent: this.button || undefined,
|
|
78
|
+
color: '#000',
|
|
79
|
+
onDone: function (res) {
|
|
80
|
+
var _a, _b, _c, _d, _e;
|
|
81
|
+
try {
|
|
82
|
+
if (_this.coloredText && ((_b = (_a = _this.coloredText).isAppliedToSelection) === null || _b === void 0 ? void 0 : _b.call(_a))) {
|
|
83
|
+
_this.coloredText.undoToSelection();
|
|
84
|
+
}
|
|
85
|
+
_this.coloredText = rangy.createClassApplier('colored', {
|
|
86
|
+
elementTagName: 'span',
|
|
87
|
+
elementProperties: { style: { color: res.hex } },
|
|
88
|
+
normalize: true,
|
|
89
|
+
});
|
|
90
|
+
_this.coloredText.toggleSelection();
|
|
91
|
+
(_d = (_c = _this.base) === null || _c === void 0 ? void 0 : _c.checkContentChanged) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
92
|
+
(_e = _this.setInactive) === null || _e === void 0 ? void 0 : _e.call(_this);
|
|
93
|
+
}
|
|
94
|
+
catch (_f) {
|
|
95
|
+
console.error('Picker.onDone failed');
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
getButton: function () {
|
|
101
|
+
return this.button;
|
|
102
|
+
},
|
|
103
|
+
handleClick: function () {
|
|
104
|
+
var _a, _b, _c;
|
|
105
|
+
(_a = this.setActive) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
106
|
+
(_c = (_b = this.colorPicker) === null || _b === void 0 ? void 0 : _b.show) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
107
|
+
},
|
|
108
|
+
isAlreadyApplied: function (node) {
|
|
109
|
+
var _a, _b;
|
|
110
|
+
return ((_b = (_a = node === null || node === void 0 ? void 0 : node.nodeName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a)) === 'mark';
|
|
111
|
+
},
|
|
112
|
+
isActive: function () {
|
|
113
|
+
var _a, _b;
|
|
114
|
+
return (_b = (_a = this.button) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.contains('medium-editor-button-active');
|
|
115
|
+
},
|
|
116
|
+
setInactive: function () {
|
|
117
|
+
var _a, _b;
|
|
118
|
+
;
|
|
119
|
+
(_b = (_a = this.button) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.remove('medium-editor-button-active');
|
|
120
|
+
},
|
|
121
|
+
setActive: function () {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
;
|
|
124
|
+
(_b = (_a = this.button) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add('medium-editor-button-active');
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
91
128
|
export { MediumEditor };
|
|
@@ -110,10 +110,14 @@ export declare class Snapshot {
|
|
|
110
110
|
*/
|
|
111
111
|
private getClassRules;
|
|
112
112
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
113
|
+
* 根据浏览器对 canvas 的大小限制,计算等比缩放比例
|
|
114
|
+
* - 参考 MDN 最大的画布尺寸:
|
|
115
|
+
* https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/canvas#最大的画布尺寸
|
|
116
|
+
*
|
|
117
|
+
* @param width
|
|
118
|
+
* @param height
|
|
115
119
|
*/
|
|
116
|
-
private
|
|
120
|
+
private getCanvasScaleRatio;
|
|
117
121
|
/**
|
|
118
122
|
* 将 svg 转化为 canvas
|
|
119
123
|
* @param svg - svg 元素
|
|
@@ -345,24 +345,28 @@ var Snapshot = /** @class */ (function () {
|
|
|
345
345
|
return rules;
|
|
346
346
|
};
|
|
347
347
|
/**
|
|
348
|
-
*
|
|
349
|
-
*
|
|
348
|
+
* 根据浏览器对 canvas 的大小限制,计算等比缩放比例
|
|
349
|
+
* - 参考 MDN 最大的画布尺寸:
|
|
350
|
+
* https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/canvas#最大的画布尺寸
|
|
351
|
+
*
|
|
352
|
+
* @param width
|
|
353
|
+
* @param height
|
|
350
354
|
*/
|
|
351
|
-
Snapshot.prototype.
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
var
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
355
|
+
Snapshot.prototype.getCanvasScaleRatio = function (width, height) {
|
|
356
|
+
/* 单边最大像素 */
|
|
357
|
+
var maxCanvasSide = 32767;
|
|
358
|
+
/* 最大像素面积 */
|
|
359
|
+
var maxCanvasArea = 268435456;
|
|
360
|
+
var area = width * height;
|
|
361
|
+
if (width <= maxCanvasSide &&
|
|
362
|
+
height <= maxCanvasSide &&
|
|
363
|
+
area <= maxCanvasArea) {
|
|
364
|
+
return 1;
|
|
360
365
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
return { maxCanvasDimension: maxCanvasDimension, otherMaxCanvasDimension: otherMaxCanvasDimension };
|
|
366
|
+
var widthScale = maxCanvasSide / width;
|
|
367
|
+
var heightScale = maxCanvasSide / height;
|
|
368
|
+
var areaScale = maxCanvasArea / area;
|
|
369
|
+
return Math.min(widthScale, heightScale, areaScale);
|
|
366
370
|
};
|
|
367
371
|
/**
|
|
368
372
|
* 将 svg 转化为 canvas
|
|
@@ -372,14 +376,14 @@ var Snapshot = /** @class */ (function () {
|
|
|
372
376
|
*/
|
|
373
377
|
Snapshot.prototype.getCanvasData = function (svg, toImageOptions) {
|
|
374
378
|
return __awaiter(this, void 0, void 0, function () {
|
|
375
|
-
var width, height, backgroundColor, _a, padding, copy, dpr, base, bbox, layoutCanvas, layout, offsetX, offsetY, graphModel, transformModel, SCALE_X, SCALE_Y, TRANSLATE_X, TRANSLATE_Y, safetyFactor, actualWidth, actualHeight, bboxWidth, bboxHeight, canvas, safetyMargin,
|
|
376
|
-
return __generator(this, function (
|
|
377
|
-
switch (
|
|
379
|
+
var width, height, backgroundColor, _a, padding, copy, dpr, base, bbox, layoutCanvas, layout, offsetX, offsetY, graphModel, transformModel, SCALE_X, SCALE_Y, TRANSLATE_X, TRANSLATE_Y, safetyFactor, actualWidth, actualHeight, factorWidth, factorHeight, bboxWidth, bboxHeight, canvas, safetyMargin, targetWidth, targetHeight, scaleRatio, ctx, img, style, foreignObject;
|
|
380
|
+
return __generator(this, function (_b) {
|
|
381
|
+
switch (_b.label) {
|
|
378
382
|
case 0:
|
|
379
383
|
width = toImageOptions.width, height = toImageOptions.height, backgroundColor = toImageOptions.backgroundColor, _a = toImageOptions.padding, padding = _a === void 0 ? 40 : _a;
|
|
380
384
|
return [4 /*yield*/, this.cloneSvg(svg, false)];
|
|
381
385
|
case 1:
|
|
382
|
-
copy =
|
|
386
|
+
copy = _b.sent();
|
|
383
387
|
dpr = window.devicePixelRatio || 1;
|
|
384
388
|
if (dpr < 1) {
|
|
385
389
|
// https://github.com/didi/LogicFlow/issues/1222
|
|
@@ -404,62 +408,42 @@ var Snapshot = /** @class */ (function () {
|
|
|
404
408
|
graphModel = this.lf.graphModel;
|
|
405
409
|
transformModel = graphModel.transformModel;
|
|
406
410
|
SCALE_X = transformModel.SCALE_X, SCALE_Y = transformModel.SCALE_Y, TRANSLATE_X = transformModel.TRANSLATE_X, TRANSLATE_Y = transformModel.TRANSLATE_Y;
|
|
407
|
-
safetyFactor = toImageOptions.safetyFactor || 1
|
|
411
|
+
safetyFactor = toImageOptions.safetyFactor || 1 // 安全系数,增加10%的空间
|
|
408
412
|
;
|
|
409
|
-
actualWidth =
|
|
410
|
-
actualHeight =
|
|
411
|
-
|
|
412
|
-
|
|
413
|
+
actualWidth = bbox.width / SCALE_X;
|
|
414
|
+
actualHeight = bbox.height / SCALE_Y;
|
|
415
|
+
factorWidth = actualWidth * (safetyFactor - 1);
|
|
416
|
+
factorHeight = actualHeight * (safetyFactor - 1);
|
|
417
|
+
bboxWidth = Math.ceil(actualWidth + factorWidth);
|
|
418
|
+
bboxHeight = Math.ceil(actualHeight + factorHeight);
|
|
413
419
|
canvas = document.createElement('canvas');
|
|
414
420
|
canvas.style.width = "".concat(bboxWidth, "px");
|
|
415
421
|
canvas.style.height = "".concat(bboxHeight, "px");
|
|
416
|
-
safetyMargin = toImageOptions.safetyMargin ||
|
|
417
|
-
;
|
|
418
|
-
_b = this.getCanvasDimensionsByBrowser(), maxCanvasDimension = _b.maxCanvasDimension, otherMaxCanvasDimension = _b.otherMaxCanvasDimension;
|
|
419
|
-
MAX_CANVAS_DIMENSION = maxCanvasDimension;
|
|
420
|
-
OTHER_MAX_CANVAS_DIMENSION = otherMaxCanvasDimension;
|
|
421
|
-
targetWidth = bboxWidth * dpr + padding * 2 + safetyMargin;
|
|
422
|
-
targetHeight = bboxHeight * dpr + padding * 2 + safetyMargin;
|
|
423
|
-
scaleWidth = 1 //宽 缩放
|
|
424
|
-
;
|
|
425
|
-
scaleHeight = 1 //高 缩放
|
|
422
|
+
safetyMargin = toImageOptions.safetyMargin || 0 // 额外的安全边距
|
|
426
423
|
;
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
else if (targetWidth > OTHER_MAX_CANVAS_DIMENSION &&
|
|
434
|
-
targetHeight > MAX_CANVAS_DIMENSION) {
|
|
435
|
-
scaleWidth = OTHER_MAX_CANVAS_DIMENSION / targetWidth;
|
|
436
|
-
scaleHeight = MAX_CANVAS_DIMENSION / targetHeight;
|
|
437
|
-
}
|
|
438
|
-
else if (targetWidth > MAX_CANVAS_DIMENSION &&
|
|
439
|
-
targetHeight < OTHER_MAX_CANVAS_DIMENSION) {
|
|
440
|
-
scaleHeight = scaleWidth = MAX_CANVAS_DIMENSION / targetWidth;
|
|
441
|
-
}
|
|
442
|
-
else if (targetWidth < OTHER_MAX_CANVAS_DIMENSION &&
|
|
443
|
-
targetHeight > MAX_CANVAS_DIMENSION) {
|
|
444
|
-
scaleHeight = scaleWidth = MAX_CANVAS_DIMENSION / targetHeight;
|
|
445
|
-
}
|
|
446
|
-
if (scaleWidth < 1 || scaleHeight < 1) {
|
|
447
|
-
targetWidth = Math.floor(targetWidth * scaleWidth);
|
|
448
|
-
targetHeight = Math.floor(targetHeight * scaleHeight);
|
|
424
|
+
targetWidth = bboxWidth * dpr;
|
|
425
|
+
targetHeight = bboxHeight * dpr;
|
|
426
|
+
scaleRatio = this.getCanvasScaleRatio(targetWidth, targetHeight);
|
|
427
|
+
if (scaleRatio < 1) {
|
|
428
|
+
targetWidth = Math.floor(targetWidth * scaleRatio);
|
|
429
|
+
targetHeight = Math.floor(targetHeight * scaleRatio);
|
|
449
430
|
}
|
|
450
431
|
// 将导出区域移动到左上角,canvas 绘制的时候是从左上角开始绘制的
|
|
451
432
|
// 在transform矩阵中加入padding值,确保左侧元素不会被截断
|
|
452
433
|
// 对这个矩阵进行缩放,否则会导致截断
|
|
453
434
|
;
|
|
454
435
|
copy.lastChild.style.transform =
|
|
455
|
-
"matrix(".concat(
|
|
456
|
-
|
|
457
|
-
|
|
436
|
+
"matrix(".concat(scaleRatio, ", 0, 0, ").concat(scaleRatio, ", ").concat((-offsetX + TRANSLATE_X) * (1 / SCALE_X) * scaleRatio +
|
|
437
|
+
padding +
|
|
438
|
+
factorWidth / 2 +
|
|
439
|
+
safetyMargin, ", ").concat((-offsetY + TRANSLATE_Y) * (1 / SCALE_Y) * scaleRatio + padding + factorHeight / 2 + safetyMargin, ")");
|
|
440
|
+
canvas.width = targetWidth + (padding + safetyMargin) * 2 * dpr;
|
|
441
|
+
canvas.height = targetHeight + (padding + safetyMargin) * 2 * dpr;
|
|
458
442
|
ctx = canvas.getContext('2d');
|
|
459
443
|
if (ctx) {
|
|
460
444
|
// 清空canvas
|
|
461
445
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
462
|
-
ctx.scale(dpr
|
|
446
|
+
ctx.scale(dpr, dpr);
|
|
463
447
|
// 如果有背景色,设置流程图导出的背景色
|
|
464
448
|
if (backgroundColor) {
|
|
465
449
|
ctx.fillStyle = backgroundColor;
|
|
@@ -666,7 +650,7 @@ var Snapshot = /** @class */ (function () {
|
|
|
666
650
|
// 内部方法处理blob转换
|
|
667
651
|
Snapshot.prototype.snapshotBlob = function (toImageOptions, baseFileType, backgroundColor) {
|
|
668
652
|
return __awaiter(this, void 0, void 0, function () {
|
|
669
|
-
var _a, fileType, svg;
|
|
653
|
+
var _a, fileType, svg, copy, svgString, blob;
|
|
670
654
|
var _this = this;
|
|
671
655
|
return __generator(this, function (_b) {
|
|
672
656
|
switch (_b.label) {
|
|
@@ -676,18 +660,31 @@ var Snapshot = /** @class */ (function () {
|
|
|
676
660
|
return [4 /*yield*/, updateImageSource(svg)];
|
|
677
661
|
case 1:
|
|
678
662
|
_b.sent();
|
|
679
|
-
return [
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
663
|
+
if (!(fileType === 'svg')) return [3 /*break*/, 3];
|
|
664
|
+
return [4 /*yield*/, this.cloneSvg(svg)];
|
|
665
|
+
case 2:
|
|
666
|
+
copy = _b.sent();
|
|
667
|
+
svgString = new XMLSerializer().serializeToString(copy);
|
|
668
|
+
blob = new Blob([svgString], {
|
|
669
|
+
type: 'image/svg+xml;charset=utf-8',
|
|
670
|
+
});
|
|
671
|
+
return [2 /*return*/, {
|
|
672
|
+
data: blob,
|
|
673
|
+
width: 0,
|
|
674
|
+
height: 0,
|
|
675
|
+
}];
|
|
676
|
+
case 3: return [2 /*return*/, new Promise(function (resolve) {
|
|
677
|
+
_this.getCanvasData(svg, __assign({ backgroundColor: backgroundColor }, (toImageOptions !== null && toImageOptions !== void 0 ? toImageOptions : {}))).then(function (canvas) {
|
|
678
|
+
canvas.toBlob(function (blob) {
|
|
679
|
+
// 输出图片数据以及图片宽高
|
|
680
|
+
resolve({
|
|
681
|
+
data: blob,
|
|
682
|
+
width: canvas.width,
|
|
683
|
+
height: canvas.height,
|
|
684
|
+
});
|
|
685
|
+
}, "image/".concat(fileType !== null && fileType !== void 0 ? fileType : 'png'));
|
|
686
|
+
});
|
|
687
|
+
})];
|
|
691
688
|
}
|
|
692
689
|
});
|
|
693
690
|
});
|
|
@@ -704,9 +701,7 @@ var Snapshot = /** @class */ (function () {
|
|
|
704
701
|
var _this = this;
|
|
705
702
|
return __generator(this, function (_a) {
|
|
706
703
|
switch (_a.label) {
|
|
707
|
-
case 0:
|
|
708
|
-
console.log('getSnapshotBase64---------------', backgroundColor, fileType, toImageOptions);
|
|
709
|
-
return [4 /*yield*/, this.withExportPreparation(function () { return _this._getSnapshotBase64(backgroundColor, fileType, toImageOptions); }, toImageOptions)];
|
|
704
|
+
case 0: return [4 /*yield*/, this.withExportPreparation(function () { return _this._getSnapshotBase64(backgroundColor, fileType, toImageOptions); }, toImageOptions)];
|
|
710
705
|
case 1: return [2 /*return*/, _a.sent()];
|
|
711
706
|
}
|
|
712
707
|
});
|
|
@@ -31,12 +31,6 @@ export declare class RectResizeModel extends RectNodeModel {
|
|
|
31
31
|
constructor(data: ResizeNodeConfig, graphModel: GraphModel);
|
|
32
32
|
initNodeData(data: any): void;
|
|
33
33
|
getOutlineStyle(): LogicFlow.OutlineTheme;
|
|
34
|
-
getResizeOutlineStyle(): {
|
|
35
|
-
fill: string;
|
|
36
|
-
stroke: string;
|
|
37
|
-
strokeWidth: number;
|
|
38
|
-
strokeDasharray: string;
|
|
39
|
-
};
|
|
40
34
|
getControlPointStyle(): {
|
|
41
35
|
width: number;
|
|
42
36
|
height: number;
|
|
@@ -51,14 +51,6 @@ var RectResizeModel = /** @class */ (function (_super) {
|
|
|
51
51
|
}
|
|
52
52
|
return style;
|
|
53
53
|
};
|
|
54
|
-
RectResizeModel.prototype.getResizeOutlineStyle = function () {
|
|
55
|
-
return {
|
|
56
|
-
fill: 'none',
|
|
57
|
-
stroke: 'transparent', // 矩形默认不显示调整边框
|
|
58
|
-
strokeWidth: 1,
|
|
59
|
-
strokeDasharray: '3,3',
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
54
|
RectResizeModel.prototype.getControlPointStyle = function () {
|
|
63
55
|
return {
|
|
64
56
|
width: 7,
|
|
@@ -110,8 +102,7 @@ var RectResizeView = /** @class */ (function (_super) {
|
|
|
110
102
|
return _super.prototype.getShape.call(this);
|
|
111
103
|
};
|
|
112
104
|
RectResizeView.prototype.getShape = function () {
|
|
113
|
-
|
|
114
|
-
return ((0, jsx_runtime_1.jsxs)("g", { children: [this.getResizeShape(), isSelected && !isSilentMode ? this.getControlGroup() : ''] }));
|
|
105
|
+
return (0, jsx_runtime_1.jsx)("g", { children: this.getResizeShape() });
|
|
115
106
|
};
|
|
116
107
|
return RectResizeView;
|
|
117
108
|
}(core_1.RectNode));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleAttributes = exports.lfJson2Xml = void 0;
|
|
3
|
+
exports.escapeXml = exports.handleAttributes = exports.lfJson2Xml = void 0;
|
|
4
4
|
/* eslint-disable guard-for-in */
|
|
5
5
|
function type(obj) {
|
|
6
6
|
return Object.prototype.toString.call(obj);
|
|
@@ -25,6 +25,18 @@ function handleAttributes(obj) {
|
|
|
25
25
|
return obj;
|
|
26
26
|
}
|
|
27
27
|
exports.handleAttributes = handleAttributes;
|
|
28
|
+
function escapeXml(text) {
|
|
29
|
+
if (text == null)
|
|
30
|
+
return '';
|
|
31
|
+
return text
|
|
32
|
+
.toString()
|
|
33
|
+
.replace(/&/g, '&')
|
|
34
|
+
.replace(/</g, '<')
|
|
35
|
+
.replace(/>/g, '>')
|
|
36
|
+
.replace(/"/g, '"')
|
|
37
|
+
.replace(/'/g, ''');
|
|
38
|
+
}
|
|
39
|
+
exports.escapeXml = escapeXml;
|
|
28
40
|
function getAttributes(obj) {
|
|
29
41
|
var tmp = obj;
|
|
30
42
|
try {
|
|
@@ -35,7 +47,7 @@ function getAttributes(obj) {
|
|
|
35
47
|
catch (error) {
|
|
36
48
|
tmp = JSON.stringify(handleAttributes(obj)).replace(/"/g, "'");
|
|
37
49
|
}
|
|
38
|
-
return tmp;
|
|
50
|
+
return escapeXml(String(tmp));
|
|
39
51
|
}
|
|
40
52
|
var tn = '\t\n';
|
|
41
53
|
// @see issue https://github.com/didi/LogicFlow/issues/718, refactoring of function toXml
|
|
@@ -45,8 +57,11 @@ function toXml(obj, name, depth) {
|
|
|
45
57
|
var prefix = tn + frontSpace;
|
|
46
58
|
if (name === '-json')
|
|
47
59
|
return '';
|
|
60
|
+
if (obj !== 0 && obj !== false && !obj) {
|
|
61
|
+
return "".concat(prefix, "<").concat(name, " />");
|
|
62
|
+
}
|
|
48
63
|
if (name === '#text') {
|
|
49
|
-
return prefix + obj;
|
|
64
|
+
return prefix + escapeXml(String(obj));
|
|
50
65
|
}
|
|
51
66
|
if (name === '#cdata-section') {
|
|
52
67
|
return "".concat(prefix, "<![CDATA[").concat(obj, "]]>");
|
|
@@ -74,7 +89,7 @@ function toXml(obj, name, depth) {
|
|
|
74
89
|
attributes_1 + (children_1 !== '' ? ">".concat(children_1).concat(prefix, "</").concat(name, ">") : ' />');
|
|
75
90
|
}
|
|
76
91
|
else {
|
|
77
|
-
str += "".concat(prefix, "<").concat(name, ">").concat(obj
|
|
92
|
+
str += "".concat(prefix, "<").concat(name, ">").concat(escapeXml(String(obj)), "</").concat(name, ">");
|
|
78
93
|
}
|
|
79
94
|
return str;
|
|
80
95
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.lfXml2Json = void 0;
|
|
10
10
|
var lodash_es_1 = require("lodash-es");
|
|
11
|
+
var json2xml_1 = require("./json2xml");
|
|
11
12
|
// ========================================================================
|
|
12
13
|
// XML.ObjTree -- XML source code from/to JavaScript object like E4X
|
|
13
14
|
// ========================================================================
|
|
@@ -298,13 +299,7 @@ XML.ObjTree.prototype.scalar_to_xml = function (name, text) {
|
|
|
298
299
|
return "<".concat(name, ">").concat(this.xml_escape(text), "</").concat(name, ">\n");
|
|
299
300
|
};
|
|
300
301
|
// method: xml_escape( text )
|
|
301
|
-
XML.ObjTree.prototype.xml_escape =
|
|
302
|
-
return text
|
|
303
|
-
.replace(/&/g, '&')
|
|
304
|
-
.replace(/</g, '<')
|
|
305
|
-
.replace(/>/g, '>')
|
|
306
|
-
.replace(/"/g, '"');
|
|
307
|
-
};
|
|
302
|
+
XML.ObjTree.prototype.xml_escape = json2xml_1.escapeXml;
|
|
308
303
|
/*
|
|
309
304
|
// ========================================================================
|
|
310
305
|
|
|
@@ -26,6 +26,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
exports.Control = void 0;
|
|
29
|
+
var lodash_es_1 = require("lodash-es");
|
|
29
30
|
var Control = /** @class */ (function () {
|
|
30
31
|
function Control(_a) {
|
|
31
32
|
var lf = _a.lf;
|
|
@@ -36,6 +37,7 @@ var Control = /** @class */ (function () {
|
|
|
36
37
|
iconClass: 'lf-control-zoomOut',
|
|
37
38
|
title: '缩小流程图',
|
|
38
39
|
text: '缩小',
|
|
40
|
+
hideText: false,
|
|
39
41
|
onClick: function () {
|
|
40
42
|
_this.lf.zoom(false);
|
|
41
43
|
},
|
|
@@ -45,6 +47,7 @@ var Control = /** @class */ (function () {
|
|
|
45
47
|
iconClass: 'lf-control-zoomIn',
|
|
46
48
|
title: '放大流程图',
|
|
47
49
|
text: '放大',
|
|
50
|
+
hideText: false,
|
|
48
51
|
onClick: function () {
|
|
49
52
|
_this.lf.zoom(true);
|
|
50
53
|
},
|
|
@@ -54,6 +57,7 @@ var Control = /** @class */ (function () {
|
|
|
54
57
|
iconClass: 'lf-control-fit',
|
|
55
58
|
title: '恢复流程原有尺寸',
|
|
56
59
|
text: '适应',
|
|
60
|
+
hideText: false,
|
|
57
61
|
onClick: function () {
|
|
58
62
|
_this.lf.resetZoom();
|
|
59
63
|
},
|
|
@@ -63,6 +67,7 @@ var Control = /** @class */ (function () {
|
|
|
63
67
|
iconClass: 'lf-control-undo',
|
|
64
68
|
title: '回到上一步',
|
|
65
69
|
text: '上一步',
|
|
70
|
+
hideText: false,
|
|
66
71
|
onClick: function () {
|
|
67
72
|
_this.lf.undo();
|
|
68
73
|
},
|
|
@@ -72,6 +77,7 @@ var Control = /** @class */ (function () {
|
|
|
72
77
|
iconClass: 'lf-control-redo',
|
|
73
78
|
title: '移到下一步',
|
|
74
79
|
text: '下一步',
|
|
80
|
+
hideText: false,
|
|
75
81
|
onClick: function () {
|
|
76
82
|
_this.lf.redo();
|
|
77
83
|
},
|
|
@@ -102,15 +108,16 @@ var Control = /** @class */ (function () {
|
|
|
102
108
|
};
|
|
103
109
|
Control.prototype.getControlTool = function () {
|
|
104
110
|
var _this = this;
|
|
105
|
-
var
|
|
111
|
+
var themeMode = this.lf.graphModel.themeMode;
|
|
112
|
+
var NORMAL = "lf-control-item-".concat(themeMode, " lf-control-item");
|
|
106
113
|
var DISABLED = 'lf-control-item disabled';
|
|
107
114
|
var controlTool = document.createElement('div');
|
|
108
115
|
var controlElements = [];
|
|
109
|
-
controlTool.className =
|
|
110
|
-
this.controlItems
|
|
116
|
+
controlTool.className = "lf-control-".concat(themeMode, " lf-control");
|
|
117
|
+
var itemsToRender = __spreadArray([], __read(this.controlItems), false);
|
|
118
|
+
itemsToRender.forEach(function (item) {
|
|
111
119
|
var itemContainer = document.createElement('div');
|
|
112
120
|
var icon = document.createElement('i');
|
|
113
|
-
var text = document.createElement('span');
|
|
114
121
|
itemContainer.className = DISABLED;
|
|
115
122
|
item.onClick && (itemContainer.onclick = item.onClick.bind(null, _this.lf));
|
|
116
123
|
item.onMouseEnter &&
|
|
@@ -118,18 +125,24 @@ var Control = /** @class */ (function () {
|
|
|
118
125
|
item.onMouseLeave &&
|
|
119
126
|
(itemContainer.onmouseleave = item.onMouseLeave.bind(null, _this.lf));
|
|
120
127
|
icon.className = item.iconClass;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
if ((0, lodash_es_1.isNil)(item.hideText) || item.hideText !== true) {
|
|
129
|
+
var text = document.createElement('span');
|
|
130
|
+
text.className = "lf-control-text-".concat(themeMode, " lf-control-text");
|
|
131
|
+
text.title = item.title;
|
|
132
|
+
text.innerText = item.text;
|
|
133
|
+
itemContainer.append(icon, text);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
itemContainer.append(icon);
|
|
137
|
+
}
|
|
138
|
+
switch (item.key) {
|
|
139
|
+
case 'undo':
|
|
127
140
|
_this.lf.on('history:change', function (_a) {
|
|
128
141
|
var undoAble = _a.data.undoAble;
|
|
129
142
|
itemContainer.className = undoAble ? NORMAL : DISABLED;
|
|
130
143
|
});
|
|
131
144
|
break;
|
|
132
|
-
case '
|
|
145
|
+
case 'redo':
|
|
133
146
|
_this.lf.on('history:change', function (_a) {
|
|
134
147
|
var redoAble = _a.data.redoAble;
|
|
135
148
|
itemContainer.className = redoAble ? NORMAL : DISABLED;
|
|
@@ -248,7 +248,7 @@ var MiniMap = /** @class */ (function () {
|
|
|
248
248
|
* @param options
|
|
249
249
|
*/
|
|
250
250
|
MiniMap.prototype.setOption = function (options) {
|
|
251
|
-
var _a = options.width, width = _a === void 0 ?
|
|
251
|
+
var _a = options.width, width = _a === void 0 ? 200 : _a, _b = options.height, height = _b === void 0 ? 150 : _b, _c = options.showEdge, showEdge = _c === void 0 ? false : _c, _d = options.isShowHeader, isShowHeader = _d === void 0 ? false : _d, _e = options.isShowCloseIcon, isShowCloseIcon = _e === void 0 ? false : _e, leftPosition = options.leftPosition, topPosition = options.topPosition, _f = options.rightPosition, rightPosition = _f === void 0 ? 0 : _f, _g = options.bottomPosition, bottomPosition = _g === void 0 ? 0 : _g, _h = options.headerTitle, headerTitle = _h === void 0 ? '导航' : _h;
|
|
252
252
|
this.width = width;
|
|
253
253
|
this.height = height;
|
|
254
254
|
this.showEdge = showEdge;
|