@logicflow/extension 2.0.0-beta.0 → 2.0.0-beta.10
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/.turbo/turbo-build.log +146 -491
- package/dist/index.css +63 -0
- package/dist/index.min.js +42 -0
- package/dist/index.min.js.map +1 -0
- package/es/NodeResize/control/Control.d.ts +3 -3
- package/es/NodeResize/control/Control.js +13 -3
- package/es/NodeResize/control/Control.js.map +1 -1
- package/es/NodeResize/index.d.ts +4 -0
- package/es/NodeResize/index.js.map +1 -1
- package/es/NodeResize/node/DiamondResize.d.ts +1 -0
- package/es/NodeResize/node/DiamondResize.js +2 -1
- package/es/NodeResize/node/DiamondResize.js.map +1 -1
- package/es/NodeResize/node/EllipseResize.d.ts +1 -0
- package/es/NodeResize/node/EllipseResize.js +2 -1
- package/es/NodeResize/node/EllipseResize.js.map +1 -1
- package/es/NodeResize/node/HtmlResize.d.ts +1 -0
- package/es/NodeResize/node/HtmlResize.js +2 -1
- package/es/NodeResize/node/HtmlResize.js.map +1 -1
- package/es/bpmn/constant.d.ts +1 -1
- package/es/bpmn/constant.js +3 -0
- package/es/bpmn/constant.js.map +1 -1
- package/es/bpmn/index.d.ts +3 -6
- package/es/bpmn/index.js +5 -7
- package/es/bpmn/index.js.map +1 -1
- package/es/bpmn-elements/presets/Pool/Pool.d.ts +21 -1
- package/es/components/control/index.d.ts +4 -4
- package/es/components/control/index.js.map +1 -1
- package/es/components/highlight/index.d.ts +6 -4
- package/es/components/highlight/index.js +32 -5
- package/es/components/highlight/index.js.map +1 -1
- package/es/components/menu/index.d.ts +1 -1
- package/es/components/menu/index.js +9 -10
- package/es/components/menu/index.js.map +1 -1
- package/es/components/mini-map/index.d.ts +1 -1
- package/es/components/mini-map/index.js +2 -2
- package/es/components/mini-map/index.js.map +1 -1
- package/es/components/selection-select/index.d.ts +1 -1
- package/es/components/selection-select/index.js.map +1 -1
- package/es/dynamic-group/index.d.ts +106 -0
- package/es/dynamic-group/index.js +536 -0
- package/es/dynamic-group/index.js.map +1 -0
- package/es/dynamic-group/model.d.ts +135 -0
- package/es/dynamic-group/model.js +413 -0
- package/es/dynamic-group/model.js.map +1 -0
- package/es/dynamic-group/node.d.ts +16 -0
- package/es/dynamic-group/node.js +143 -0
- package/es/dynamic-group/node.js.map +1 -0
- package/es/dynamic-group/utils.d.ts +17 -0
- package/es/dynamic-group/utils.js +27 -0
- package/es/dynamic-group/utils.js.map +1 -0
- package/es/index.css +63 -0
- package/es/index.d.ts +16 -8
- package/es/index.js +24 -8
- package/es/index.js.map +1 -1
- package/es/insert-node-in-polyline/index.js +3 -3
- package/es/insert-node-in-polyline/index.js.map +1 -1
- package/es/materials/group/GroupNode.d.ts +6 -10
- package/es/materials/group/GroupNode.js +8 -6
- package/es/materials/group/GroupNode.js.map +1 -1
- package/es/materials/group/index.d.ts +5 -5
- package/es/materials/group/index.js +25 -26
- package/es/materials/group/index.js.map +1 -1
- package/es/materials/node-selection/index.d.ts +6 -1
- package/es/materials/node-selection/index.js +64 -56
- package/es/materials/node-selection/index.js.map +1 -1
- package/es/mindmap/index.d.ts +2 -2
- package/es/style/index.css +63 -0
- package/es/style/index.less +73 -0
- package/es/style/raw.d.ts +1 -1
- package/es/style/raw.js +1 -1
- package/es/style/raw.js.map +1 -1
- package/es/tools/flow-path/index.js +0 -1
- package/es/tools/flow-path/index.js.map +1 -1
- package/es/tools/label/Label.d.ts +30 -0
- package/es/tools/label/Label.js +241 -0
- package/es/tools/label/Label.js.map +1 -0
- package/es/tools/label/LabelModel.d.ts +26 -0
- package/es/tools/label/LabelModel.js +86 -0
- package/es/tools/label/LabelModel.js.map +1 -0
- package/es/tools/label/LabelOverlay.d.ts +28 -0
- package/es/tools/label/LabelOverlay.js +161 -0
- package/es/tools/label/LabelOverlay.js.map +1 -0
- package/es/tools/label/algorithm.d.ts +16 -0
- package/es/tools/label/algorithm.js +27 -0
- package/es/tools/label/algorithm.js.map +1 -0
- package/es/tools/label/index.d.ts +59 -0
- package/es/tools/label/index.js +292 -0
- package/es/tools/label/index.js.map +1 -0
- package/es/tools/label/mediumEditor.d.ts +17 -0
- package/es/tools/label/mediumEditor.js +92 -0
- package/es/tools/label/mediumEditor.js.map +1 -0
- package/es/tools/label/utils.d.ts +64 -0
- package/es/tools/label/utils.js +336 -0
- package/es/tools/label/utils.js.map +1 -0
- package/es/tools/snapshot/index.d.ts +107 -11
- package/es/tools/snapshot/index.js +366 -149
- package/es/tools/snapshot/index.js.map +1 -1
- package/es/tools/snapshot/utils.d.ts +35 -0
- package/es/tools/snapshot/utils.js +238 -0
- package/es/tools/snapshot/utils.js.map +1 -0
- package/lib/NodeResize/control/Control.d.ts +3 -3
- package/lib/NodeResize/control/Control.js +13 -3
- package/lib/NodeResize/control/Control.js.map +1 -1
- package/lib/NodeResize/index.d.ts +4 -0
- package/lib/NodeResize/index.js.map +1 -1
- package/lib/NodeResize/node/DiamondResize.d.ts +1 -0
- package/lib/NodeResize/node/DiamondResize.js +2 -1
- package/lib/NodeResize/node/DiamondResize.js.map +1 -1
- package/lib/NodeResize/node/EllipseResize.d.ts +1 -0
- package/lib/NodeResize/node/EllipseResize.js +2 -1
- package/lib/NodeResize/node/EllipseResize.js.map +1 -1
- package/lib/NodeResize/node/HtmlResize.d.ts +1 -0
- package/lib/NodeResize/node/HtmlResize.js +2 -1
- package/lib/NodeResize/node/HtmlResize.js.map +1 -1
- package/lib/bpmn/constant.d.ts +1 -1
- package/lib/bpmn/constant.js +3 -0
- package/lib/bpmn/constant.js.map +1 -1
- package/lib/bpmn/index.d.ts +3 -6
- package/lib/bpmn/index.js +5 -7
- package/lib/bpmn/index.js.map +1 -1
- package/lib/bpmn-elements/presets/Pool/Pool.d.ts +21 -1
- package/lib/components/control/index.d.ts +4 -4
- package/lib/components/control/index.js.map +1 -1
- package/lib/components/highlight/index.d.ts +6 -4
- package/lib/components/highlight/index.js +32 -5
- package/lib/components/highlight/index.js.map +1 -1
- package/lib/components/menu/index.d.ts +1 -1
- package/lib/components/menu/index.js +9 -10
- package/lib/components/menu/index.js.map +1 -1
- package/lib/components/mini-map/index.d.ts +1 -1
- package/lib/components/mini-map/index.js +2 -2
- package/lib/components/mini-map/index.js.map +1 -1
- package/lib/components/selection-select/index.d.ts +1 -1
- package/lib/components/selection-select/index.js.map +1 -1
- package/lib/dynamic-group/index.d.ts +106 -0
- package/lib/dynamic-group/index.js +553 -0
- package/lib/dynamic-group/index.js.map +1 -0
- package/lib/dynamic-group/model.d.ts +135 -0
- package/lib/dynamic-group/model.js +416 -0
- package/lib/dynamic-group/model.js.map +1 -0
- package/lib/dynamic-group/node.d.ts +16 -0
- package/lib/dynamic-group/node.js +146 -0
- package/lib/dynamic-group/node.js.map +1 -0
- package/lib/dynamic-group/utils.d.ts +17 -0
- package/lib/dynamic-group/utils.js +32 -0
- package/lib/dynamic-group/utils.js.map +1 -0
- package/lib/index.css +63 -0
- package/lib/index.d.ts +16 -8
- package/lib/index.js +24 -8
- package/lib/index.js.map +1 -1
- package/lib/insert-node-in-polyline/index.js +2 -2
- package/lib/insert-node-in-polyline/index.js.map +1 -1
- package/lib/materials/group/GroupNode.d.ts +6 -10
- package/lib/materials/group/GroupNode.js +8 -6
- package/lib/materials/group/GroupNode.js.map +1 -1
- package/lib/materials/group/index.d.ts +5 -5
- package/lib/materials/group/index.js +24 -25
- package/lib/materials/group/index.js.map +1 -1
- package/lib/materials/node-selection/index.d.ts +6 -1
- package/lib/materials/node-selection/index.js +63 -55
- package/lib/materials/node-selection/index.js.map +1 -1
- package/lib/mindmap/index.d.ts +2 -2
- package/lib/style/index.css +63 -0
- package/lib/style/index.less +73 -0
- package/lib/style/raw.d.ts +1 -1
- package/lib/style/raw.js +1 -1
- package/lib/style/raw.js.map +1 -1
- package/lib/tools/flow-path/index.js +0 -1
- package/lib/tools/flow-path/index.js.map +1 -1
- package/lib/tools/label/Label.d.ts +30 -0
- package/lib/tools/label/Label.js +247 -0
- package/lib/tools/label/Label.js.map +1 -0
- package/lib/tools/label/LabelModel.d.ts +26 -0
- package/lib/tools/label/LabelModel.js +89 -0
- package/lib/tools/label/LabelModel.js.map +1 -0
- package/lib/tools/label/LabelOverlay.d.ts +28 -0
- package/lib/tools/label/LabelOverlay.js +167 -0
- package/lib/tools/label/LabelOverlay.js.map +1 -0
- package/lib/tools/label/algorithm.d.ts +16 -0
- package/lib/tools/label/algorithm.js +32 -0
- package/lib/tools/label/algorithm.js.map +1 -0
- package/lib/tools/label/index.d.ts +59 -0
- package/lib/tools/label/index.js +298 -0
- package/lib/tools/label/index.js.map +1 -0
- package/lib/tools/label/mediumEditor.d.ts +17 -0
- package/lib/tools/label/mediumEditor.js +98 -0
- package/lib/tools/label/mediumEditor.js.map +1 -0
- package/lib/tools/label/utils.d.ts +64 -0
- package/lib/tools/label/utils.js +349 -0
- package/lib/tools/label/utils.js.map +1 -0
- package/lib/tools/snapshot/index.d.ts +107 -11
- package/lib/tools/snapshot/index.js +366 -149
- package/lib/tools/snapshot/index.js.map +1 -1
- package/lib/tools/snapshot/utils.d.ts +35 -0
- package/lib/tools/snapshot/utils.js +247 -0
- package/lib/tools/snapshot/utils.js.map +1 -0
- package/package.json +20 -3
- package/rollup.config.js +1 -1
- package/src/NodeResize/control/Control.tsx +13 -3
- package/src/NodeResize/index.ts +4 -0
- package/src/NodeResize/node/DiamondResize.tsx +2 -1
- package/src/NodeResize/node/EllipseResize.tsx +2 -1
- package/src/NodeResize/node/HtmlResize.tsx +2 -1
- package/src/bpmn/constant.ts +4 -1
- package/src/bpmn/index.ts +7 -4
- package/src/bpmn-elements-adapter/README.md +1 -3
- package/src/components/control/index.ts +4 -4
- package/src/components/highlight/index.ts +33 -6
- package/src/components/menu/index.ts +16 -13
- package/src/components/mini-map/index.ts +3 -3
- package/src/components/selection-select/index.ts +6 -2
- package/src/dynamic-group/index.ts +609 -0
- package/src/dynamic-group/model.ts +503 -0
- package/src/dynamic-group/node.ts +140 -0
- package/src/dynamic-group/utils.ts +33 -0
- package/src/index.ts +30 -8
- package/src/insert-node-in-polyline/index.ts +3 -3
- package/src/materials/group/GroupNode.ts +12 -12
- package/src/materials/group/index.ts +40 -40
- package/src/materials/node-selection/index.ts +78 -70
- package/src/style/index.less +73 -0
- package/src/style/raw.ts +64 -1
- package/src/tools/flow-path/index.ts +0 -1
- package/src/tools/label/Label.tsx +297 -0
- package/src/tools/label/LabelModel.ts +82 -0
- package/src/tools/label/LabelOverlay.tsx +159 -0
- package/src/tools/label/algorithm.ts +42 -0
- package/src/tools/label/index.ts +401 -0
- package/src/tools/label/mediumEditor.ts +94 -0
- package/src/tools/label/utils.ts +395 -0
- package/src/tools/snapshot/README.md +141 -5
- package/src/tools/snapshot/index.ts +288 -101
- package/src/tools/snapshot/utils.ts +163 -0
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import LogicFlow, { BaseEdgeModel, BaseNodeModel, GraphModel, h } from '@logicflow/core';
|
|
2
|
+
import LabelData = LogicFlow.LabelData;
|
|
3
|
+
import LabelConfig = LogicFlow.LabelConfig;
|
|
4
|
+
import GraphElement = LogicFlow.GraphElement;
|
|
5
|
+
export declare class LabelModel {
|
|
6
|
+
id: string;
|
|
7
|
+
type: string;
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
content: string;
|
|
11
|
+
value: string;
|
|
12
|
+
rotate?: number;
|
|
13
|
+
style: h.JSX.CSSProperties;
|
|
14
|
+
zIndex?: number;
|
|
15
|
+
vertical: boolean;
|
|
16
|
+
editable: boolean;
|
|
17
|
+
draggable: boolean;
|
|
18
|
+
labelWidth?: number;
|
|
19
|
+
textOverflowMode: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default';
|
|
20
|
+
element: BaseNodeModel | BaseEdgeModel;
|
|
21
|
+
graphModel: GraphModel;
|
|
22
|
+
constructor(config: LabelConfig, element: GraphElement, graphModel: GraphModel);
|
|
23
|
+
initLabelData(config: LabelConfig): void;
|
|
24
|
+
getData(): LabelData;
|
|
25
|
+
}
|
|
26
|
+
export default LabelModel;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LabelModel = void 0;
|
|
10
|
+
var core_1 = require("@logicflow/core");
|
|
11
|
+
var lodash_es_1 = require("lodash-es");
|
|
12
|
+
// export type ILabelConfig = {}
|
|
13
|
+
var createUuid = core_1.LogicFlowUtil.createUuid;
|
|
14
|
+
var LabelModel = /** @class */ (function () {
|
|
15
|
+
function LabelModel(config, element, graphModel) {
|
|
16
|
+
var _a;
|
|
17
|
+
this.type = 'label'; // 目前写死,后续可以根据业务需求进行扩展
|
|
18
|
+
this.content = '';
|
|
19
|
+
this.value = '';
|
|
20
|
+
this.style = {};
|
|
21
|
+
this.vertical = false; // 文字是否垂直显示
|
|
22
|
+
this.editable = true; // label 是否可编辑
|
|
23
|
+
this.draggable = true; // label 是否可拖拽
|
|
24
|
+
this.textOverflowMode = 'default'; // Label 节点的文本溢出模式
|
|
25
|
+
this.element = element;
|
|
26
|
+
this.graphModel = graphModel;
|
|
27
|
+
this.id = (_a = config.id) !== null && _a !== void 0 ? _a : createUuid();
|
|
28
|
+
this.initLabelData(config);
|
|
29
|
+
}
|
|
30
|
+
LabelModel.prototype.initLabelData = function (config) {
|
|
31
|
+
(0, lodash_es_1.assign)(this, config);
|
|
32
|
+
};
|
|
33
|
+
LabelModel.prototype.getData = function () {
|
|
34
|
+
return {
|
|
35
|
+
id: this.id,
|
|
36
|
+
x: this.x,
|
|
37
|
+
y: this.y,
|
|
38
|
+
content: this.content,
|
|
39
|
+
value: this.value,
|
|
40
|
+
rotate: this.rotate,
|
|
41
|
+
style: (0, core_1.toJS)(this.style),
|
|
42
|
+
draggable: this.draggable,
|
|
43
|
+
editable: this.editable,
|
|
44
|
+
labelWidth: this.labelWidth,
|
|
45
|
+
textOverflowMode: this.textOverflowMode,
|
|
46
|
+
vertical: this.vertical,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
__decorate([
|
|
50
|
+
core_1.observable
|
|
51
|
+
], LabelModel.prototype, "x", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
core_1.observable
|
|
54
|
+
], LabelModel.prototype, "y", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
core_1.observable
|
|
57
|
+
], LabelModel.prototype, "content", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
core_1.observable
|
|
60
|
+
], LabelModel.prototype, "value", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
core_1.observable
|
|
63
|
+
], LabelModel.prototype, "rotate", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
core_1.observable
|
|
66
|
+
], LabelModel.prototype, "style", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
core_1.observable
|
|
69
|
+
], LabelModel.prototype, "zIndex", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
core_1.observable
|
|
72
|
+
], LabelModel.prototype, "vertical", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
core_1.observable
|
|
75
|
+
], LabelModel.prototype, "editable", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
core_1.observable
|
|
78
|
+
], LabelModel.prototype, "draggable", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
core_1.observable
|
|
81
|
+
], LabelModel.prototype, "labelWidth", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
core_1.observable
|
|
84
|
+
], LabelModel.prototype, "textOverflowMode", void 0);
|
|
85
|
+
return LabelModel;
|
|
86
|
+
}());
|
|
87
|
+
exports.LabelModel = LabelModel;
|
|
88
|
+
exports.default = LabelModel;
|
|
89
|
+
//# sourceMappingURL=LabelModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelModel.js","sourceRoot":"","sources":["../../../src/tools/label/LabelModel.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wCAQwB;AACxB,uCAAkC;AAMlC,gCAAgC;AACxB,IAAA,UAAU,GAAK,oBAAa,WAAlB,CAAkB;AAEpC;IA2BE,oBACE,MAAmB,EACnB,OAAqB,EACrB,UAAsB;;QA5BxB,SAAI,GAAW,OAAO,CAAA,CAAC,sBAAsB;QAIjC,YAAO,GAAW,EAAE,CAAA;QACpB,UAAK,GAAW,EAAE,CAAA;QAElB,UAAK,GAAwB,EAAE,CAAA;QAG/B,aAAQ,GAAY,KAAK,CAAA,CAAC,WAAW;QACrC,aAAQ,GAAY,IAAI,CAAA,CAAC,cAAc;QACvC,cAAS,GAAY,IAAI,CAAA,CAAC,cAAc;QAExC,qBAAgB,GAKZ,SAAS,CAAA,CAAC,kBAAkB;QAW1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,EAAE,GAAG,MAAA,MAAM,CAAC,EAAE,mCAAI,UAAU,EAAE,CAAA;QAEnC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAED,kCAAa,GAAb,UAAc,MAAmB;QAC/B,IAAA,kBAAM,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACtB,CAAC;IAED,4BAAO,GAAP;QACE,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,KAAK,CAAC;YAEvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YAEvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAxDW;QAAX,iBAAU;yCAAW;IACV;QAAX,iBAAU;yCAAW;IACV;QAAX,iBAAU;+CAAqB;IACpB;QAAX,iBAAU;6CAAmB;IAClB;QAAX,iBAAU;8CAAgB;IACf;QAAX,iBAAU;6CAAgC;IAE/B;QAAX,iBAAU;8CAAgB;IACf;QAAX,iBAAU;gDAA0B;IACzB;QAAX,iBAAU;gDAAyB;IACxB;QAAX,iBAAU;iDAA0B;IACzB;QAAX,iBAAU;kDAAoB;IACnB;QAAX,iBAAU;wDAKc;IAwC3B,iBAAC;CAAA,AA7DD,IA6DC;AA7DY,gCAAU;AA+DvB,kBAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import LogicFlow, { Component, GraphModel, h } from '@logicflow/core';
|
|
2
|
+
import type { IToolProps } from '@logicflow/core';
|
|
3
|
+
import LabelModel from './LabelModel';
|
|
4
|
+
import { MediumEditor } from './mediumEditor';
|
|
5
|
+
import LabelConfig = LogicFlow.LabelConfig;
|
|
6
|
+
export type LabelConfigType = string | LabelConfig | LabelConfig[];
|
|
7
|
+
export interface ILabelOverlayState {
|
|
8
|
+
tick: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class LabelOverlay extends Component<IToolProps, ILabelOverlayState> {
|
|
11
|
+
static toolName: string;
|
|
12
|
+
lf: LogicFlow;
|
|
13
|
+
editor?: MediumEditor;
|
|
14
|
+
graphModel: GraphModel;
|
|
15
|
+
labelMap: Map<string, LabelModel>;
|
|
16
|
+
constructor(props: IToolProps);
|
|
17
|
+
componentDidMount(): void;
|
|
18
|
+
componentDidUpdate(): void;
|
|
19
|
+
componentWillUnmount(): void;
|
|
20
|
+
/**
|
|
21
|
+
* 获取当前画布上所有的 label
|
|
22
|
+
* 1. 第一步,先把当前所有的 text 转换为 label 进行展示
|
|
23
|
+
* 2. 数据同步,text 编辑后,同步更新 label,并重新渲染
|
|
24
|
+
*/
|
|
25
|
+
getLabels(): h.JSX.Element[] | null;
|
|
26
|
+
render(): h.JSX.Element;
|
|
27
|
+
}
|
|
28
|
+
export default LabelOverlay;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
23
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
24
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
25
|
+
if (!m) return o;
|
|
26
|
+
var i = m.call(o), r, ar = [], e;
|
|
27
|
+
try {
|
|
28
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
29
|
+
}
|
|
30
|
+
catch (error) { e = { error: error }; }
|
|
31
|
+
finally {
|
|
32
|
+
try {
|
|
33
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
34
|
+
}
|
|
35
|
+
finally { if (e) throw e.error; }
|
|
36
|
+
}
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
40
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
41
|
+
if (ar || !(i in from)) {
|
|
42
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
43
|
+
ar[i] = from[i];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
47
|
+
};
|
|
48
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
49
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
50
|
+
};
|
|
51
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
+
exports.LabelOverlay = void 0;
|
|
53
|
+
var jsx_runtime_1 = require("preact/jsx-runtime");
|
|
54
|
+
var core_1 = require("@logicflow/core");
|
|
55
|
+
var lodash_es_1 = require("lodash-es");
|
|
56
|
+
var Label_1 = __importDefault(require("./Label"));
|
|
57
|
+
var LabelModel_1 = __importDefault(require("./LabelModel"));
|
|
58
|
+
var mediumEditor_1 = require("./mediumEditor");
|
|
59
|
+
// const { createUuid } = LogicFlowUtil
|
|
60
|
+
// DONE: 解决问题,如果 LabelOverlay 设置为 Observer,拖拽 Label 时会导致 LabelOverlay 组件重新渲染,不知道为何
|
|
61
|
+
// 目前解决了。流程是 拖动 -> 更新 label 的数据信息到 element model -> 重新渲染 LabelOverlay
|
|
62
|
+
// 这种目前存在的问题,会全量重新渲染,是否会影响性能 ❓❓❓
|
|
63
|
+
// 另一种解决方案是,在此组件中监听一些事件,当这些事件触发时,再重新渲染 LabelOverlay
|
|
64
|
+
// 讨论一下
|
|
65
|
+
var LabelOverlay = /** @class */ (function (_super) {
|
|
66
|
+
__extends(LabelOverlay, _super);
|
|
67
|
+
function LabelOverlay(props) {
|
|
68
|
+
var _this = _super.call(this, props) || this;
|
|
69
|
+
_this.labelMap = new Map();
|
|
70
|
+
var lf = props.lf, graphModel = props.graphModel;
|
|
71
|
+
_this.lf = lf;
|
|
72
|
+
_this.graphModel = graphModel;
|
|
73
|
+
_this.state = { tick: 0 };
|
|
74
|
+
return _this;
|
|
75
|
+
}
|
|
76
|
+
LabelOverlay.prototype.componentDidMount = function () {
|
|
77
|
+
var _this = this;
|
|
78
|
+
var graphModel = this.props.graphModel;
|
|
79
|
+
// 1. 直接在此处初始化 RichTextEdit 工具
|
|
80
|
+
this.editor = new mediumEditor_1.MediumEditor('.lf-label-editor', (0, lodash_es_1.merge)(mediumEditor_1.defaultOptions, {
|
|
81
|
+
autoLink: true,
|
|
82
|
+
extensions: {
|
|
83
|
+
colorPicker: new mediumEditor_1.ColorPickerButton(),
|
|
84
|
+
},
|
|
85
|
+
}));
|
|
86
|
+
// TODO: 2. 在此处监听一些事件,当 node、edge 数据变化时,主动触发重新渲染,保证同步更新
|
|
87
|
+
// TODO: 3. 整理哪些事件应该触发 Label 的更新
|
|
88
|
+
// 不需要了,将当前组件设置成 @observer 后,graphModel 更新会自动触发更新
|
|
89
|
+
graphModel.eventCenter.on('text:update,node:mousemove,node:resize,node:rotate,node:drag,label:drop,node:drop', function () {
|
|
90
|
+
// this.setState({ tick: this.state.tick + 1 })
|
|
91
|
+
});
|
|
92
|
+
graphModel.eventCenter.on('node:properties-change,node:properties-delete', function () {
|
|
93
|
+
_this.setState({ tick: _this.state.tick + 1 });
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
LabelOverlay.prototype.componentDidUpdate = function () {
|
|
97
|
+
var _a;
|
|
98
|
+
// 在组件更新后,将新增的 label 元素添加到富文本编辑器中
|
|
99
|
+
if (this.editor && this.editor.elements.length > 0) {
|
|
100
|
+
this.editor.addElements('.lf-label-editor');
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// FIX: 如果初始化的数据中没有 properties._label,需要重新初始化富文本编辑器
|
|
104
|
+
(_a = this.editor) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
105
|
+
this.editor = new mediumEditor_1.MediumEditor('.lf-label-editor', (0, lodash_es_1.merge)(mediumEditor_1.defaultOptions, {
|
|
106
|
+
autoLink: true,
|
|
107
|
+
extensions: {
|
|
108
|
+
colorPicker: new mediumEditor_1.ColorPickerButton(),
|
|
109
|
+
},
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
LabelOverlay.prototype.componentWillUnmount = function () {
|
|
114
|
+
var _a;
|
|
115
|
+
// 组件销毁时,同时将富文本编辑器注销
|
|
116
|
+
(_a = this.editor) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* 获取当前画布上所有的 label
|
|
120
|
+
* 1. 第一步,先把当前所有的 text 转换为 label 进行展示
|
|
121
|
+
* 2. 数据同步,text 编辑后,同步更新 label,并重新渲染
|
|
122
|
+
*/
|
|
123
|
+
LabelOverlay.prototype.getLabels = function () {
|
|
124
|
+
var _this = this;
|
|
125
|
+
// 1. 通过 graphModel 获取当前画布上所有的 label 配置数据
|
|
126
|
+
var _a = this.props, extension = _a.lf.extension, graphModel = _a.graphModel;
|
|
127
|
+
var elements = __spreadArray(__spreadArray([], __read(graphModel.nodes), false), __read(graphModel.edges), false);
|
|
128
|
+
var curExtension = extension['label'];
|
|
129
|
+
if (curExtension) {
|
|
130
|
+
var labels_1 = []; // 保存所有的 Label 元素
|
|
131
|
+
// TODO: 筛选出当前画布上,textMode 为 TextMode.LABEL 的元素(在支持元素级别的 textMode 时,需要做这个筛选)
|
|
132
|
+
// REMIND: 本期先只支持全局配置,所以判断全局的 textMode 即可
|
|
133
|
+
(0, lodash_es_1.forEach)(elements, function (element) {
|
|
134
|
+
var _a, _b;
|
|
135
|
+
var elementData = element.getData();
|
|
136
|
+
var labelConfig = (_b = (_a = elementData.properties) === null || _a === void 0 ? void 0 : _a._label) !== null && _b !== void 0 ? _b : [];
|
|
137
|
+
(0, lodash_es_1.forEach)(labelConfig, function (config) {
|
|
138
|
+
var labelMap = _this.labelMap;
|
|
139
|
+
// 查找 labelModel 实例,如果是实例化过的,直接复用;如果是新的,创建实例
|
|
140
|
+
// let label: LabelModel
|
|
141
|
+
// if (config.id && labelMap.has(config.id)) {
|
|
142
|
+
// label = labelMap.get(config.id)!
|
|
143
|
+
// } else {
|
|
144
|
+
// label = new LabelModel(config, element, graphModel)
|
|
145
|
+
// labelMap.set(label.id, label)
|
|
146
|
+
// }
|
|
147
|
+
var label = new LabelModel_1.default(config, element, graphModel);
|
|
148
|
+
labelMap.set(label.id, label);
|
|
149
|
+
labels_1.push((0, jsx_runtime_1.jsx)(Label_1.default, { label: label, element: element, graphModel: graphModel }, label.id));
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
return labels_1;
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
};
|
|
156
|
+
LabelOverlay.prototype.render = function () {
|
|
157
|
+
return ((0, jsx_runtime_1.jsx)("foreignObject", { id: "lf-label-overlay", class: "lf-label-overlay", children: this.getLabels() }));
|
|
158
|
+
};
|
|
159
|
+
LabelOverlay.toolName = 'label-edit-tool';
|
|
160
|
+
LabelOverlay = __decorate([
|
|
161
|
+
core_1.observer
|
|
162
|
+
], LabelOverlay);
|
|
163
|
+
return LabelOverlay;
|
|
164
|
+
}(core_1.Component));
|
|
165
|
+
exports.LabelOverlay = LabelOverlay;
|
|
166
|
+
exports.default = LabelOverlay;
|
|
167
|
+
//# sourceMappingURL=LabelOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelOverlay.js","sourceRoot":"","sources":["../../../src/tools/label/LabelOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import LogicFlow from '@logicflow/core';
|
|
2
|
+
import Point = LogicFlow.Point;
|
|
3
|
+
/**
|
|
4
|
+
* 三次贝塞尔曲线公式
|
|
5
|
+
*/
|
|
6
|
+
export declare const getPointOnBezier: (t: number, P0: Point, P1: Point, P2: Point, P3: Point) => {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* 计算两个节点间的距离
|
|
12
|
+
* @param point1
|
|
13
|
+
* @param point2
|
|
14
|
+
* @param gridSize
|
|
15
|
+
*/
|
|
16
|
+
export declare const calcTwoPointsDistance: (point1: Point, point2: Point, gridSize?: number) => number;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calcTwoPointsDistance = exports.getPointOnBezier = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 三次贝塞尔曲线公式
|
|
6
|
+
*/
|
|
7
|
+
var getPointOnBezier = function (t, P0, P1, P2, P3) {
|
|
8
|
+
var x = Math.pow((1 - t), 3) * P0.x +
|
|
9
|
+
3 * Math.pow((1 - t), 2) * t * P1.x +
|
|
10
|
+
3 * (1 - t) * Math.pow(t, 2) * P2.x +
|
|
11
|
+
Math.pow(t, 3) * P3.x;
|
|
12
|
+
var y = Math.pow((1 - t), 3) * P0.y +
|
|
13
|
+
3 * Math.pow((1 - t), 2) * t * P1.y +
|
|
14
|
+
3 * (1 - t) * Math.pow(t, 2) * P2.y +
|
|
15
|
+
Math.pow(t, 3) * P3.y;
|
|
16
|
+
return { x: x, y: y };
|
|
17
|
+
};
|
|
18
|
+
exports.getPointOnBezier = getPointOnBezier;
|
|
19
|
+
/**
|
|
20
|
+
* 计算两个节点间的距离
|
|
21
|
+
* @param point1
|
|
22
|
+
* @param point2
|
|
23
|
+
* @param gridSize
|
|
24
|
+
*/
|
|
25
|
+
var calcTwoPointsDistance = function (point1, point2, gridSize) {
|
|
26
|
+
if (gridSize === void 0) { gridSize = 1; }
|
|
27
|
+
var dx = (point1.x - point2.x) / gridSize;
|
|
28
|
+
var dy = (point1.y - point2.y) / gridSize;
|
|
29
|
+
return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
|
|
30
|
+
};
|
|
31
|
+
exports.calcTwoPointsDistance = calcTwoPointsDistance;
|
|
32
|
+
//# sourceMappingURL=algorithm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"algorithm.js","sourceRoot":"","sources":["../../../src/tools/label/algorithm.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACI,IAAM,gBAAgB,GAAG,UAC9B,CAAS,EACT,EAAS,EACT,EAAS,EACT,EAAS,EACT,EAAS;IAET,IAAM,CAAC,GACL,SAAA,CAAC,CAAC,GAAG,CAAC,CAAC,EAAI,CAAC,CAAA,GAAG,EAAE,CAAC,CAAC;QACnB,CAAC,GAAG,SAAA,CAAC,CAAC,GAAG,CAAC,CAAC,EAAI,CAAC,CAAA,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAA,CAAC,EAAI,CAAC,CAAA,GAAG,EAAE,CAAC,CAAC;QAC3B,SAAA,CAAC,EAAI,CAAC,CAAA,GAAG,EAAE,CAAC,CAAC,CAAA;IACf,IAAM,CAAC,GACL,SAAA,CAAC,CAAC,GAAG,CAAC,CAAC,EAAI,CAAC,CAAA,GAAG,EAAE,CAAC,CAAC;QACnB,CAAC,GAAG,SAAA,CAAC,CAAC,GAAG,CAAC,CAAC,EAAI,CAAC,CAAA,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAA,CAAC,EAAI,CAAC,CAAA,GAAG,EAAE,CAAC,CAAC;QAC3B,SAAA,CAAC,EAAI,CAAC,CAAA,GAAG,EAAE,CAAC,CAAC,CAAA;IAEf,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACvB,CAAC,CAAA;AAnBY,QAAA,gBAAgB,oBAmB5B;AAED;;;;;GAKG;AACI,IAAM,qBAAqB,GAAG,UACnC,MAAa,EACb,MAAa,EACb,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;IAC3C,IAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAA,EAAE,EAAI,CAAC,CAAA,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,CAAC,CAAA;AACrC,CAAC,CAAA;AARY,QAAA,qBAAqB,yBAQjC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import LogicFlow, { TextMode } from '@logicflow/core';
|
|
2
|
+
import Position = LogicFlow.Position;
|
|
3
|
+
import Extension = LogicFlow.Extension;
|
|
4
|
+
export type ILabelOptions = {
|
|
5
|
+
isMultiple?: boolean;
|
|
6
|
+
maxCount?: number;
|
|
7
|
+
labelWidth?: number;
|
|
8
|
+
textOverflowMode?: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default';
|
|
9
|
+
};
|
|
10
|
+
export declare class Label implements Extension {
|
|
11
|
+
static pluginName: string;
|
|
12
|
+
lf: LogicFlow;
|
|
13
|
+
options: ILabelOptions;
|
|
14
|
+
textOverflowMode: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default';
|
|
15
|
+
isMultiple: boolean;
|
|
16
|
+
labelWidth?: number;
|
|
17
|
+
maxCount: number;
|
|
18
|
+
labelInitPositionMap: Map<string, Position>;
|
|
19
|
+
constructor({ lf, options }: {
|
|
20
|
+
lf: LogicFlow;
|
|
21
|
+
options: ILabelOptions;
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* 格式化元素的 Label 配置,后续初始化 Label 用统一的数据格式
|
|
25
|
+
* 主要是将 _label 类型 string | LabelConfig | LabelConfig[] 统一转换为 LabelConfig[]
|
|
26
|
+
* @param graphModel 当前图的 model
|
|
27
|
+
* @param element 当前元素 model
|
|
28
|
+
* @return LabelConfig[]
|
|
29
|
+
*/
|
|
30
|
+
private formatConfig;
|
|
31
|
+
/**
|
|
32
|
+
* 根据初始化的数据,格式化 Label 的数据格式后,统一更新到元素的 properties._label 中,保证后续的渲染以这个数据格式进行
|
|
33
|
+
* @param graphModel
|
|
34
|
+
*/
|
|
35
|
+
private setupLabels;
|
|
36
|
+
/**
|
|
37
|
+
* 给元素添加一个 label
|
|
38
|
+
* @param element
|
|
39
|
+
* @param position
|
|
40
|
+
*/
|
|
41
|
+
private addLabel;
|
|
42
|
+
/**
|
|
43
|
+
* 移除元素的某个 label
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
private addEventListeners;
|
|
47
|
+
/**
|
|
48
|
+
* 重写元素的一些方法,以支持 Label 的拖拽、编辑等
|
|
49
|
+
* @param element
|
|
50
|
+
*/
|
|
51
|
+
private rewriteInnerMethods;
|
|
52
|
+
/**
|
|
53
|
+
* 更新当前渲染使用的 Text or Label 模式
|
|
54
|
+
*/
|
|
55
|
+
updateTextMode(textMode: TextMode): void;
|
|
56
|
+
render(): void;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
}
|
|
59
|
+
export default Label;
|