@logicflow/extension 2.0.0-beta.5 → 2.0.0-beta.7
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 +750 -34
- package/dist/index.css +63 -0
- package/dist/index.min.js +32 -2
- package/es/NodeResize/control/Control.js +3 -2
- package/es/NodeResize/control/Control.js.map +1 -1
- package/es/bpmn-elements/presets/Pool/Pool.d.ts +21 -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.js.map +1 -1
- package/es/index.css +63 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/index.js.map +1 -1
- package/es/materials/group/GroupNode.d.ts +6 -6
- package/es/materials/group/GroupNode.js +7 -6
- package/es/materials/group/GroupNode.js.map +1 -1
- package/es/materials/group/index.js +20 -25
- package/es/materials/group/index.js.map +1 -1
- 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 +16 -0
- package/es/tools/label/mediumEditor.js +91 -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.js +0 -2
- package/es/tools/snapshot/index.js.map +1 -1
- package/lib/NodeResize/control/Control.js +3 -2
- package/lib/NodeResize/control/Control.js.map +1 -1
- package/lib/bpmn-elements/presets/Pool/Pool.d.ts +21 -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.js.map +1 -1
- package/lib/index.css +63 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/materials/group/GroupNode.d.ts +6 -6
- package/lib/materials/group/GroupNode.js +7 -6
- package/lib/materials/group/GroupNode.js.map +1 -1
- package/lib/materials/group/index.js +19 -24
- package/lib/materials/group/index.js.map +1 -1
- 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 +16 -0
- package/lib/tools/label/mediumEditor.js +97 -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.js +0 -2
- package/lib/tools/snapshot/index.js.map +1 -1
- package/package.json +9 -9
- package/src/NodeResize/control/Control.tsx +3 -2
- package/src/components/mini-map/index.ts +2 -2
- package/src/components/selection-select/index.ts +5 -1
- package/src/index.ts +1 -0
- package/src/materials/group/GroupNode.ts +11 -8
- package/src/materials/group/index.ts +33 -38
- 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 +93 -0
- package/src/tools/label/utils.ts +395 -0
- package/src/tools/snapshot/README.md +27 -16
- package/src/tools/snapshot/index.ts +0 -2
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
28
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
29
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
30
|
+
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;
|
|
31
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
|
+
};
|
|
33
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
34
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
35
|
+
if (!m) return o;
|
|
36
|
+
var i = m.call(o), r, ar = [], e;
|
|
37
|
+
try {
|
|
38
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
39
|
+
}
|
|
40
|
+
catch (error) { e = { error: error }; }
|
|
41
|
+
finally {
|
|
42
|
+
try {
|
|
43
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
44
|
+
}
|
|
45
|
+
finally { if (e) throw e.error; }
|
|
46
|
+
}
|
|
47
|
+
return ar;
|
|
48
|
+
};
|
|
49
|
+
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
50
|
+
import { Component, createRef, ElementState, observer, StepDrag, } from '@logicflow/core';
|
|
51
|
+
import classNames from 'classnames';
|
|
52
|
+
import { findIndex } from 'lodash-es';
|
|
53
|
+
var Label = /** @class */ (function (_super) {
|
|
54
|
+
__extends(Label, _super);
|
|
55
|
+
function Label(props) {
|
|
56
|
+
var _this = _super.call(this, props) || this;
|
|
57
|
+
_this.textRef = createRef();
|
|
58
|
+
_this.setHoverOn = function () {
|
|
59
|
+
var element = _this.props.element;
|
|
60
|
+
if (element.isDragging || _this.state.isHovered)
|
|
61
|
+
return; // 当节点或边在拖拽中时,不触发 hover 态
|
|
62
|
+
_this.setState({ isHovered: true });
|
|
63
|
+
element.setHovered(true);
|
|
64
|
+
};
|
|
65
|
+
_this.setHoverOff = function () {
|
|
66
|
+
var element = _this.props.element;
|
|
67
|
+
if (!_this.state.isHovered)
|
|
68
|
+
return;
|
|
69
|
+
_this.setState({ isHovered: false });
|
|
70
|
+
element.setHovered(false);
|
|
71
|
+
};
|
|
72
|
+
_this.handleMouseDown = function (e) {
|
|
73
|
+
var _a;
|
|
74
|
+
var _b = _this.props, label = _b.label, graphModel = _b.graphModel;
|
|
75
|
+
var nodeTextDraggable = graphModel.editConfigModel.nodeTextDraggable;
|
|
76
|
+
// 当 label 允许拖拽 且不处于拖拽状态时, StepDrag 开启拖拽
|
|
77
|
+
if (((_a = label.draggable) !== null && _a !== void 0 ? _a : nodeTextDraggable) && !_this.state.isDragging) {
|
|
78
|
+
_this.setState({ isDragging: true });
|
|
79
|
+
_this.stepDrag.handleMouseDown(e);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
_this.handleDragging = function (_a) {
|
|
83
|
+
var deltaX = _a.deltaX, deltaY = _a.deltaY;
|
|
84
|
+
var _b = _this.props, label = _b.label, element = _b.element, graphModel = _b.graphModel;
|
|
85
|
+
// DONE: 添加缩放时拖拽的逻辑,对 deltaX 和 deltaY 进行按比例缩放
|
|
86
|
+
var transformModel = graphModel.transformModel;
|
|
87
|
+
var _c = __read(transformModel.fixDeltaXY(deltaX, deltaY), 2), curDeltaX = _c[0], curDeltaY = _c[1];
|
|
88
|
+
// DONE:更新 label 位置,触发 LABEL:DRAG 事件,并抛出相关的数据
|
|
89
|
+
var _label = element.properties._label;
|
|
90
|
+
var elementLabel = _label;
|
|
91
|
+
var idx = findIndex(elementLabel, function (cur) { return cur.id === label.id; });
|
|
92
|
+
var target = elementLabel[idx];
|
|
93
|
+
elementLabel[idx] = __assign(__assign({}, target), { x: target.x + curDeltaX, y: target.y + curDeltaY });
|
|
94
|
+
var targetElem = graphModel.getElement(element.id);
|
|
95
|
+
targetElem === null || targetElem === void 0 ? void 0 : targetElem.setProperty('_label', elementLabel);
|
|
96
|
+
graphModel.eventCenter.emit('label:drag', {
|
|
97
|
+
data: label.getData(),
|
|
98
|
+
model: label,
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
_this.handleDragEnd = function () {
|
|
102
|
+
_this.setState({ isDragging: false });
|
|
103
|
+
};
|
|
104
|
+
_this.handleDbClick = function (e) {
|
|
105
|
+
var _a = _this.props, label = _a.label, element = _a.element, graphModel = _a.graphModel;
|
|
106
|
+
graphModel.eventCenter.emit('label:dblclick', {
|
|
107
|
+
data: label.getData(),
|
|
108
|
+
e: e,
|
|
109
|
+
model: element,
|
|
110
|
+
});
|
|
111
|
+
if (!label.editable) {
|
|
112
|
+
element.setSelected(true);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
element.setSelected();
|
|
116
|
+
element.setElementState(ElementState.TEXT_EDIT);
|
|
117
|
+
_this.setState({ isEditing: true });
|
|
118
|
+
// DONE: 触发当前 label 的 focus 事件,设置内容可编辑,且在文本最后添加光标
|
|
119
|
+
if (_this.textRef.current) {
|
|
120
|
+
_this.textRef.current.contentEditable = 'true';
|
|
121
|
+
_this.textRef.current.focus();
|
|
122
|
+
var range = document.createRange();
|
|
123
|
+
var selection = window.getSelection();
|
|
124
|
+
range.selectNodeContents(_this.textRef.current);
|
|
125
|
+
range.collapse(false);
|
|
126
|
+
selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
|
|
127
|
+
selection === null || selection === void 0 ? void 0 : selection.addRange(range);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
_this.handleBlur = function (e) {
|
|
131
|
+
var _a = _this.props, label = _a.label, element = _a.element, eventCenter = _a.graphModel.eventCenter;
|
|
132
|
+
// DONE: 触发 LABEL:BLUR 事件,并抛出相关的事件
|
|
133
|
+
eventCenter.emit('label:blur', {
|
|
134
|
+
e: e,
|
|
135
|
+
model: element,
|
|
136
|
+
data: label.getData(),
|
|
137
|
+
element: _this.textRef.current,
|
|
138
|
+
});
|
|
139
|
+
_this.setState({
|
|
140
|
+
isDragging: false,
|
|
141
|
+
isHovered: false,
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
// 重新计算 Label 大小
|
|
145
|
+
_this.reCalcLabelSize = function () { };
|
|
146
|
+
var label = props.label, _a = props.graphModel, gridSize = _a.gridSize, eventCenter = _a.eventCenter;
|
|
147
|
+
_this.stepDrag = new StepDrag({
|
|
148
|
+
onDragging: _this.handleDragging,
|
|
149
|
+
onDragEnd: _this.handleDragEnd,
|
|
150
|
+
step: gridSize,
|
|
151
|
+
eventType: 'LABEL',
|
|
152
|
+
model: label,
|
|
153
|
+
eventCenter: eventCenter,
|
|
154
|
+
});
|
|
155
|
+
_this.state = {
|
|
156
|
+
isEditing: false,
|
|
157
|
+
isHovered: false,
|
|
158
|
+
isDragging: false,
|
|
159
|
+
};
|
|
160
|
+
return _this;
|
|
161
|
+
}
|
|
162
|
+
// TODO:如何处理 Label zIndex 的问题, Label 永远会比节点层级高
|
|
163
|
+
// 当 Label 被元素遮盖时,隐藏它
|
|
164
|
+
Label.prototype.componentDidMount = function () {
|
|
165
|
+
var _this = this;
|
|
166
|
+
var _a = this.props, label = _a.label, element = _a.element, graphModel = _a.graphModel;
|
|
167
|
+
// 在点击元素、边或者画布 时,结束 Label 的编辑态
|
|
168
|
+
graphModel.eventCenter.on('blank:click,node:click,edge:click', function () {
|
|
169
|
+
var _a, _b, _c, _d;
|
|
170
|
+
// 如果当前 label 处于编辑态,则结束编辑态
|
|
171
|
+
if (_this.state.isEditing) {
|
|
172
|
+
_this.setState({ isEditing: false });
|
|
173
|
+
var value = (_b = (_a = _this.textRef.current) === null || _a === void 0 ? void 0 : _a.innerText) !== null && _b !== void 0 ? _b : '';
|
|
174
|
+
var content = (_d = (_c = _this.textRef.current) === null || _c === void 0 ? void 0 : _c.innerHTML) !== null && _d !== void 0 ? _d : '';
|
|
175
|
+
var _label = element.properties._label;
|
|
176
|
+
var elementLabel = _label;
|
|
177
|
+
var idx = findIndex(elementLabel, function (cur) { return cur.id === label.id; });
|
|
178
|
+
var target = elementLabel[idx];
|
|
179
|
+
elementLabel[idx] = __assign(__assign({}, target), { value: value, content: content });
|
|
180
|
+
var targetElem = graphModel.getElement(element.id);
|
|
181
|
+
targetElem === null || targetElem === void 0 ? void 0 : targetElem.setProperty('_label', elementLabel);
|
|
182
|
+
element.setElementState(ElementState.DEFAULT);
|
|
183
|
+
}
|
|
184
|
+
if (_this.textRef.current) {
|
|
185
|
+
_this.textRef.current.contentEditable = 'false';
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
// TODO: 节点拖拽结束后,更新 Label 的位置
|
|
189
|
+
// eventCenter.on('node:drag', () => {})
|
|
190
|
+
// eventCenter.on('node:drop', () => {})
|
|
191
|
+
// eventCenter.on('node:mousemove', () => {})
|
|
192
|
+
//
|
|
193
|
+
// eventCenter.on('node:properties-change,node:properties-delete', () => {})
|
|
194
|
+
};
|
|
195
|
+
Label.prototype.componentDidUpdate = function () {
|
|
196
|
+
// snapshot: any, // previousState: Readonly<ILabelState>, // previousProps: Readonly<ILabelProps>,
|
|
197
|
+
console.log('Label componentDidUpdate');
|
|
198
|
+
// console.log('previousProps', previousProps)
|
|
199
|
+
// console.log('previousState', previousState)
|
|
200
|
+
// console.log('snapshot', snapshot)
|
|
201
|
+
};
|
|
202
|
+
Label.prototype.componentWillUnmount = function () {
|
|
203
|
+
var graphModel = this.props.graphModel;
|
|
204
|
+
graphModel.eventCenter.off('blank:click,node:click,edge:click');
|
|
205
|
+
};
|
|
206
|
+
// TODO: 当某一个标签更新时,如何避免其它标签的更新
|
|
207
|
+
// shouldComponentUpdate or memo
|
|
208
|
+
Label.prototype.render = function () {
|
|
209
|
+
var _a;
|
|
210
|
+
var _b = this.props, label = _b.label, element = _b.element, graphModel = _b.graphModel;
|
|
211
|
+
var _c = this.state, isDragging = _c.isDragging, isHovered = _c.isHovered, isEditing = _c.isEditing;
|
|
212
|
+
var transformModel = graphModel.transformModel;
|
|
213
|
+
var transform = transformModel.getTransformStyle().transform;
|
|
214
|
+
var id = label.id, x = label.x, y = label.y, zIndex = label.zIndex, vertical = label.vertical, style = label.style, rotate = label.rotate, content = label.content, labelWidth = label.labelWidth, textOverflowMode = label.textOverflowMode;
|
|
215
|
+
var maxLabelWidth = labelWidth !== null && labelWidth !== void 0 ? labelWidth : (element.BaseType === 'node' ? element.width - 20 : 80);
|
|
216
|
+
var containerStyle = {
|
|
217
|
+
left: "".concat(x - maxLabelWidth / 2, "px"),
|
|
218
|
+
top: "".concat(y - 10, "px"),
|
|
219
|
+
width: "".concat(maxLabelWidth, "px"),
|
|
220
|
+
height: '20px',
|
|
221
|
+
zIndex: zIndex !== null && zIndex !== void 0 ? zIndex : 1,
|
|
222
|
+
transform: rotate
|
|
223
|
+
? "".concat(transform, " rotate(").concat(rotate, "deg)")
|
|
224
|
+
: "".concat(transform, " rotate(").concat(vertical ? -0.25 : 0, "turn)"),
|
|
225
|
+
};
|
|
226
|
+
return (_jsx("div", { id: "element-container-".concat(id), className: classNames('lf-label-editor-container'), style: containerStyle, onMouseDown: this.handleMouseDown, onDblClick: this.handleDbClick, onBlur: this.handleBlur, onMouseEnter: this.setHoverOn, onMouseOver: this.setHoverOn, onMouseLeave: this.setHoverOff, children: _jsx("div", { ref: this.textRef, id: "editor-container-".concat(id), className: classNames('lf-label-editor', (_a = {
|
|
227
|
+
'lf-label-editor-dragging': isDragging,
|
|
228
|
+
'lf-label-editor-editing': isEditing,
|
|
229
|
+
'lf-label-editor-hover': !isEditing && isHovered
|
|
230
|
+
},
|
|
231
|
+
_a["lf-label-editor-".concat(textOverflowMode)] = !isEditing,
|
|
232
|
+
_a)), style: __assign({ maxWidth: "".concat(maxLabelWidth, "px"), width: "".concat(maxLabelWidth, "px") }, style), dangerouslySetInnerHTML: { __html: content } }) }));
|
|
233
|
+
};
|
|
234
|
+
Label = __decorate([
|
|
235
|
+
observer
|
|
236
|
+
], Label);
|
|
237
|
+
return Label;
|
|
238
|
+
}(Component));
|
|
239
|
+
export { Label };
|
|
240
|
+
export default Label;
|
|
241
|
+
//# sourceMappingURL=Label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../src/tools/label/Label.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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,86 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LogicFlowUtil, observable, toJS, } from '@logicflow/core';
|
|
8
|
+
import { assign } from 'lodash-es';
|
|
9
|
+
// export type ILabelConfig = {}
|
|
10
|
+
var createUuid = LogicFlowUtil.createUuid;
|
|
11
|
+
var LabelModel = /** @class */ (function () {
|
|
12
|
+
function LabelModel(config, element, graphModel) {
|
|
13
|
+
var _a;
|
|
14
|
+
this.type = 'label'; // 目前写死,后续可以根据业务需求进行扩展
|
|
15
|
+
this.content = '';
|
|
16
|
+
this.value = '';
|
|
17
|
+
this.style = {};
|
|
18
|
+
this.vertical = false; // 文字是否垂直显示
|
|
19
|
+
this.editable = true; // label 是否可编辑
|
|
20
|
+
this.draggable = true; // label 是否可拖拽
|
|
21
|
+
this.textOverflowMode = 'default'; // Label 节点的文本溢出模式
|
|
22
|
+
this.element = element;
|
|
23
|
+
this.graphModel = graphModel;
|
|
24
|
+
this.id = (_a = config.id) !== null && _a !== void 0 ? _a : createUuid();
|
|
25
|
+
this.initLabelData(config);
|
|
26
|
+
}
|
|
27
|
+
LabelModel.prototype.initLabelData = function (config) {
|
|
28
|
+
assign(this, config);
|
|
29
|
+
};
|
|
30
|
+
LabelModel.prototype.getData = function () {
|
|
31
|
+
return {
|
|
32
|
+
id: this.id,
|
|
33
|
+
x: this.x,
|
|
34
|
+
y: this.y,
|
|
35
|
+
content: this.content,
|
|
36
|
+
value: this.value,
|
|
37
|
+
rotate: this.rotate,
|
|
38
|
+
style: toJS(this.style),
|
|
39
|
+
draggable: this.draggable,
|
|
40
|
+
editable: this.editable,
|
|
41
|
+
labelWidth: this.labelWidth,
|
|
42
|
+
textOverflowMode: this.textOverflowMode,
|
|
43
|
+
vertical: this.vertical,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
__decorate([
|
|
47
|
+
observable
|
|
48
|
+
], LabelModel.prototype, "x", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
observable
|
|
51
|
+
], LabelModel.prototype, "y", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
observable
|
|
54
|
+
], LabelModel.prototype, "content", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
observable
|
|
57
|
+
], LabelModel.prototype, "value", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
observable
|
|
60
|
+
], LabelModel.prototype, "rotate", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
observable
|
|
63
|
+
], LabelModel.prototype, "style", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
observable
|
|
66
|
+
], LabelModel.prototype, "zIndex", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
observable
|
|
69
|
+
], LabelModel.prototype, "vertical", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
observable
|
|
72
|
+
], LabelModel.prototype, "editable", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
observable
|
|
75
|
+
], LabelModel.prototype, "draggable", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
observable
|
|
78
|
+
], LabelModel.prototype, "labelWidth", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
observable
|
|
81
|
+
], LabelModel.prototype, "textOverflowMode", void 0);
|
|
82
|
+
return LabelModel;
|
|
83
|
+
}());
|
|
84
|
+
export { LabelModel };
|
|
85
|
+
export default LabelModel;
|
|
86
|
+
//# sourceMappingURL=LabelModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelModel.js","sourceRoot":"","sources":["../../../src/tools/label/LabelModel.ts"],"names":[],"mappings":";;;;;;AAAA,OAAkB,EAIhB,aAAa,EAEb,UAAU,EACV,IAAI,GACL,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAMlC,gCAAgC;AACxB,IAAA,UAAU,GAAK,aAAa,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,MAAM,CAAC,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,IAAI,CAAC,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,UAAU;yCAAW;IACV;QAAX,UAAU;yCAAW;IACV;QAAX,UAAU;+CAAqB;IACpB;QAAX,UAAU;6CAAmB;IAClB;QAAX,UAAU;8CAAgB;IACf;QAAX,UAAU;6CAAgC;IAE/B;QAAX,UAAU;8CAAgB;IACf;QAAX,UAAU;gDAA0B;IACzB;QAAX,UAAU;gDAAyB;IACxB;QAAX,UAAU;iDAA0B;IACzB;QAAX,UAAU;kDAAoB;IACnB;QAAX,UAAU;wDAKc;IAwC3B,iBAAC;CAAA,AA7DD,IA6DC;SA7DY,UAAU;AA+DvB,eAAe,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,161 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
17
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
18
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
19
|
+
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;
|
|
20
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
21
|
+
};
|
|
22
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
23
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
24
|
+
if (!m) return o;
|
|
25
|
+
var i = m.call(o), r, ar = [], e;
|
|
26
|
+
try {
|
|
27
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
28
|
+
}
|
|
29
|
+
catch (error) { e = { error: error }; }
|
|
30
|
+
finally {
|
|
31
|
+
try {
|
|
32
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
33
|
+
}
|
|
34
|
+
finally { if (e) throw e.error; }
|
|
35
|
+
}
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
47
|
+
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
48
|
+
import { Component, observer } from '@logicflow/core';
|
|
49
|
+
import { forEach, merge } from 'lodash-es';
|
|
50
|
+
import Label from './Label';
|
|
51
|
+
import LabelModel from './LabelModel';
|
|
52
|
+
import { MediumEditor, defaultOptions, ColorPickerButton } from './mediumEditor';
|
|
53
|
+
// const { createUuid } = LogicFlowUtil
|
|
54
|
+
// DONE: 解决问题,如果 LabelOverlay 设置为 Observer,拖拽 Label 时会导致 LabelOverlay 组件重新渲染,不知道为何
|
|
55
|
+
// 目前解决了。流程是 拖动 -> 更新 label 的数据信息到 element model -> 重新渲染 LabelOverlay
|
|
56
|
+
// 这种目前存在的问题,会全量重新渲染,是否会影响性能 ❓❓❓
|
|
57
|
+
// 另一种解决方案是,在此组件中监听一些事件,当这些事件触发时,再重新渲染 LabelOverlay
|
|
58
|
+
// 讨论一下
|
|
59
|
+
var LabelOverlay = /** @class */ (function (_super) {
|
|
60
|
+
__extends(LabelOverlay, _super);
|
|
61
|
+
function LabelOverlay(props) {
|
|
62
|
+
var _this = _super.call(this, props) || this;
|
|
63
|
+
_this.labelMap = new Map();
|
|
64
|
+
var lf = props.lf, graphModel = props.graphModel;
|
|
65
|
+
_this.lf = lf;
|
|
66
|
+
_this.graphModel = graphModel;
|
|
67
|
+
_this.state = { tick: 0 };
|
|
68
|
+
return _this;
|
|
69
|
+
}
|
|
70
|
+
LabelOverlay.prototype.componentDidMount = function () {
|
|
71
|
+
var _this = this;
|
|
72
|
+
var graphModel = this.props.graphModel;
|
|
73
|
+
// 1. 直接在此处初始化 RichTextEdit 工具
|
|
74
|
+
this.editor = new MediumEditor('.lf-label-editor', merge(defaultOptions, {
|
|
75
|
+
autoLink: true,
|
|
76
|
+
extensions: {
|
|
77
|
+
colorPicker: new ColorPickerButton(),
|
|
78
|
+
},
|
|
79
|
+
}));
|
|
80
|
+
// TODO: 2. 在此处监听一些事件,当 node、edge 数据变化时,主动触发重新渲染,保证同步更新
|
|
81
|
+
// TODO: 3. 整理哪些事件应该触发 Label 的更新
|
|
82
|
+
// 不需要了,将当前组件设置成 @observer 后,graphModel 更新会自动触发更新
|
|
83
|
+
graphModel.eventCenter.on('text:update,node:mousemove,node:resize,node:rotate,node:drag,label:drop,node:drop', function () {
|
|
84
|
+
// this.setState({ tick: this.state.tick + 1 })
|
|
85
|
+
});
|
|
86
|
+
graphModel.eventCenter.on('node:properties-change,node:properties-delete', function () {
|
|
87
|
+
_this.setState({ tick: _this.state.tick + 1 });
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
LabelOverlay.prototype.componentDidUpdate = function () {
|
|
91
|
+
var _a;
|
|
92
|
+
// 在组件更新后,将新增的 label 元素添加到富文本编辑器中
|
|
93
|
+
if (this.editor && this.editor.elements.length > 0) {
|
|
94
|
+
this.editor.addElements('.lf-label-editor');
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// FIX: 如果初始化的数据中没有 properties._label,需要重新初始化富文本编辑器
|
|
98
|
+
(_a = this.editor) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
99
|
+
this.editor = new MediumEditor('.lf-label-editor', merge(defaultOptions, {
|
|
100
|
+
autoLink: true,
|
|
101
|
+
extensions: {
|
|
102
|
+
colorPicker: new ColorPickerButton(),
|
|
103
|
+
},
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
LabelOverlay.prototype.componentWillUnmount = function () {
|
|
108
|
+
var _a;
|
|
109
|
+
// 组件销毁时,同时将富文本编辑器注销
|
|
110
|
+
(_a = this.editor) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* 获取当前画布上所有的 label
|
|
114
|
+
* 1. 第一步,先把当前所有的 text 转换为 label 进行展示
|
|
115
|
+
* 2. 数据同步,text 编辑后,同步更新 label,并重新渲染
|
|
116
|
+
*/
|
|
117
|
+
LabelOverlay.prototype.getLabels = function () {
|
|
118
|
+
var _this = this;
|
|
119
|
+
// 1. 通过 graphModel 获取当前画布上所有的 label 配置数据
|
|
120
|
+
var _a = this.props, extension = _a.lf.extension, graphModel = _a.graphModel;
|
|
121
|
+
var elements = __spreadArray(__spreadArray([], __read(graphModel.nodes), false), __read(graphModel.edges), false);
|
|
122
|
+
var curExtension = extension['Label'];
|
|
123
|
+
if (curExtension) {
|
|
124
|
+
var labels_1 = []; // 保存所有的 Label 元素
|
|
125
|
+
// TODO: 筛选出当前画布上,textMode 为 TextMode.LABEL 的元素(在支持元素级别的 textMode 时,需要做这个筛选)
|
|
126
|
+
// REMIND: 本期先只支持全局配置,所以判断全局的 textMode 即可
|
|
127
|
+
forEach(elements, function (element) {
|
|
128
|
+
var _a, _b;
|
|
129
|
+
var elementData = element.getData();
|
|
130
|
+
var labelConfig = (_b = (_a = elementData.properties) === null || _a === void 0 ? void 0 : _a._label) !== null && _b !== void 0 ? _b : [];
|
|
131
|
+
forEach(labelConfig, function (config) {
|
|
132
|
+
var labelMap = _this.labelMap;
|
|
133
|
+
// 查找 labelModel 实例,如果是实例化过的,直接复用;如果是新的,创建实例
|
|
134
|
+
// let label: LabelModel
|
|
135
|
+
// if (config.id && labelMap.has(config.id)) {
|
|
136
|
+
// label = labelMap.get(config.id)!
|
|
137
|
+
// } else {
|
|
138
|
+
// label = new LabelModel(config, element, graphModel)
|
|
139
|
+
// labelMap.set(label.id, label)
|
|
140
|
+
// }
|
|
141
|
+
var label = new LabelModel(config, element, graphModel);
|
|
142
|
+
labelMap.set(label.id, label);
|
|
143
|
+
labels_1.push(_jsx(Label, { label: label, element: element, graphModel: graphModel }, label.id));
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
return labels_1;
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
};
|
|
150
|
+
LabelOverlay.prototype.render = function () {
|
|
151
|
+
return (_jsx("foreignObject", { id: "lf-label-overlay", class: "lf-label-overlay", children: this.getLabels() }));
|
|
152
|
+
};
|
|
153
|
+
LabelOverlay.toolName = 'label-edit-tool';
|
|
154
|
+
LabelOverlay = __decorate([
|
|
155
|
+
observer
|
|
156
|
+
], LabelOverlay);
|
|
157
|
+
return LabelOverlay;
|
|
158
|
+
}(Component));
|
|
159
|
+
export { LabelOverlay };
|
|
160
|
+
export default LabelOverlay;
|
|
161
|
+
//# 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,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 三次贝塞尔曲线公式
|
|
3
|
+
*/
|
|
4
|
+
export var getPointOnBezier = function (t, P0, P1, P2, P3) {
|
|
5
|
+
var x = Math.pow((1 - t), 3) * P0.x +
|
|
6
|
+
3 * Math.pow((1 - t), 2) * t * P1.x +
|
|
7
|
+
3 * (1 - t) * Math.pow(t, 2) * P2.x +
|
|
8
|
+
Math.pow(t, 3) * P3.x;
|
|
9
|
+
var y = Math.pow((1 - t), 3) * P0.y +
|
|
10
|
+
3 * Math.pow((1 - t), 2) * t * P1.y +
|
|
11
|
+
3 * (1 - t) * Math.pow(t, 2) * P2.y +
|
|
12
|
+
Math.pow(t, 3) * P3.y;
|
|
13
|
+
return { x: x, y: y };
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* 计算两个节点间的距离
|
|
17
|
+
* @param point1
|
|
18
|
+
* @param point2
|
|
19
|
+
* @param gridSize
|
|
20
|
+
*/
|
|
21
|
+
export var calcTwoPointsDistance = function (point1, point2, gridSize) {
|
|
22
|
+
if (gridSize === void 0) { gridSize = 1; }
|
|
23
|
+
var dx = (point1.x - point2.x) / gridSize;
|
|
24
|
+
var dy = (point1.y - point2.y) / gridSize;
|
|
25
|
+
return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=algorithm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"algorithm.js","sourceRoot":"","sources":["../../../src/tools/label/algorithm.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,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;AAED;;;;;GAKG;AACH,MAAM,CAAC,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"}
|