@michael_home/workflow-engine-vue 1.0.3 → 1.0.5

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/dist/index.js DELETED
@@ -1,810 +0,0 @@
1
- import { defineComponent as Pe, ref as Q, watch as Ce, computed as Y, reactive as B, onMounted as Ne, onUnmounted as ze, openBlock as k, createElementBlock as I, createElementVNode as M, toDisplayString as H, withModifiers as z, Fragment as E, renderList as q, normalizeClass as V, createCommentVNode as K, normalizeStyle as _e, withDirectives as Le, vShow as Te } from "vue";
2
- const f = {
3
- Top: "TOP",
4
- Right: "RIGHT",
5
- Bottom: "BOTTOM",
6
- Left: "LEFT"
7
- }, N = 20, S = (s, h) => {
8
- const c = s.position.x + s.size.width / 2, u = s.position.y + s.size.height / 2;
9
- switch (h.direction) {
10
- case f.Top:
11
- return { x: c, y: s.position.y };
12
- case f.Right:
13
- return { x: s.position.x + s.size.width, y: u };
14
- case f.Bottom:
15
- return { x: c, y: s.position.y + s.size.height };
16
- case f.Left:
17
- return { x: s.position.x, y: u };
18
- }
19
- }, Ye = (s, h, c, u) => {
20
- for (const e of h)
21
- if (e.id !== s)
22
- for (const t of e.ports) {
23
- const n = S(e, t);
24
- if (Math.hypot(n.x - c.x, n.y - c.y) <= u)
25
- return { node: e, port: t, point: n };
26
- }
27
- }, Re = (s, h, c) => {
28
- switch (h) {
29
- case f.Top:
30
- return c.y < s.y - N ? f.Bottom : f.Top;
31
- case f.Bottom:
32
- return c.y > s.y + N ? f.Top : f.Bottom;
33
- case f.Left:
34
- return c.x < s.x - N ? f.Right : f.Left;
35
- case f.Right:
36
- return c.x > s.x + N ? f.Left : f.Right;
37
- }
38
- }, R = (s, h, c) => {
39
- const u = [];
40
- for (const t of s) {
41
- const n = u[u.length - 1];
42
- (!n || n.x !== t.x || n.y !== t.y) && u.push(t);
43
- }
44
- const e = u.slice();
45
- for (let t = 1; t <= e.length - 3; t += 1) {
46
- const n = e[t - 1], i = e[t], o = e[t + 1], l = e[t + 2];
47
- if (n.x === i.x && i.y === o.y && o.x === l.x) {
48
- const p = Math.abs(o.x - i.x), b = i.y - n.y, v = l.y - o.y;
49
- p <= N / 2 && Math.sign(b) !== 0 && Math.sign(v) !== 0 && Math.sign(b) !== Math.sign(v) && (e.splice(t, 2, { x: n.x, y: l.y }), t = Math.max(0, t - 2));
50
- continue;
51
- }
52
- if (n.y === i.y && i.x === o.x && o.y === l.y) {
53
- const p = Math.abs(o.y - i.y), b = i.x - n.x, v = l.x - o.x;
54
- p <= N / 2 && Math.sign(b) !== 0 && Math.sign(v) !== 0 && Math.sign(b) !== Math.sign(v) && (e.splice(t, 2, { x: l.x, y: n.y }), t = Math.max(0, t - 2));
55
- }
56
- }
57
- for (let t = e.length - 1; t >= 2; t -= 1) {
58
- const n = e[t - 2], i = e[t - 1], o = e[t];
59
- (n.x === i.x && i.x === o.x || n.y === i.y && i.y === o.y) && e.splice(t - 1, 1);
60
- }
61
- if (h !== void 0 && c !== void 0 && h === c && e.length >= 4)
62
- if (h === f.Top || h === f.Bottom)
63
- for (let n = 1; n <= e.length - 3; n += 1) {
64
- const i = e[n - 1], o = e[n], l = e[n + 1], y = e[n + 2];
65
- if (!(i.x === o.x && o.y === l.y && l.x === y.x))
66
- continue;
67
- Math.abs(l.x - o.x) <= N && (e.splice(n, 2), n = Math.max(0, n - 2));
68
- }
69
- else
70
- for (let n = 1; n <= e.length - 3; n += 1) {
71
- const i = e[n - 1], o = e[n], l = e[n + 1], y = e[n + 2];
72
- if (!(i.y === o.y && o.x === l.x && l.y === y.y))
73
- continue;
74
- Math.abs(l.y - o.y) <= N && (e.splice(n, 2), n = Math.max(0, n - 2));
75
- }
76
- return e;
77
- }, Xe = (s, h, c) => {
78
- switch (c) {
79
- case f.Right:
80
- return s > 0;
81
- case f.Left:
82
- return s < 0;
83
- case f.Bottom:
84
- return h > 0;
85
- case f.Top:
86
- return h < 0;
87
- }
88
- }, Ee = (s, h, c) => {
89
- switch (c) {
90
- case f.Right:
91
- case f.Left:
92
- return Math.abs(h);
93
- case f.Bottom:
94
- case f.Top:
95
- return Math.abs(s);
96
- }
97
- }, Se = (s, h, c, u) => {
98
- const e = s.x, t = s.y, n = c.x, i = c.y, o = N, l = [s], y = Math.round((e + n) / 2), x = Math.round((t + i) / 2), p = n >= e && i <= t, b = n < e && i <= t, v = n < e && i > t;
99
- if (e === n && t === i && h === u) {
100
- switch (h) {
101
- case f.Left:
102
- l.push({ x: e - o, y: t });
103
- break;
104
- case f.Right:
105
- l.push({ x: e + o, y: t });
106
- break;
107
- case f.Top:
108
- l.push({ x: e, y: t - o });
109
- break;
110
- case f.Bottom:
111
- l.push({ x: e, y: t + o });
112
- break;
113
- }
114
- return l.push(c), R(l, h, u);
115
- }
116
- const m = h === f.Top || h === f.Bottom, g = u === f.Top || u === f.Bottom, C = h === f.Left || h === f.Right, A = u === f.Left || u === f.Right;
117
- if (h === u) {
118
- if (m && Math.abs(n - e) <= o)
119
- return l.push({ x: e, y: i }, c), R(l, h, u);
120
- if (C && Math.abs(i - t) <= o)
121
- return l.push({ x: n, y: t }, c), R(l, h, u);
122
- }
123
- const $ = Math.abs(n - e) <= o * 2 && Math.abs(i - t) <= o * 8;
124
- if ($ && m && g)
125
- return l.push({ x: e, y: x }, { x: n, y: x }, c), R(l, h, u);
126
- if ($ && C && A)
127
- return l.push({ x: y, y: t }, { x: y, y: i }, c), R(l, h, u);
128
- switch (h) {
129
- case f.Top:
130
- switch (u) {
131
- case f.Left:
132
- p ? l.push({ x: e, y: i }) : b ? l.push({ x: e, y: x }, { x: n - o, y: x }, { x: n - o, y: i }) : v ? l.push({ x: e, y: t - o }, { x: n - o, y: t - o }, { x: n - o, y: i }) : l.push({ x: e, y: t - o }, { x: y, y: t - o }, { x: y, y: i });
133
- break;
134
- case f.Bottom:
135
- if (n === e && i < t)
136
- break;
137
- i < t - o ? l.push({ x: e, y: x }, { x: n, y: x }) : l.push({ x: e, y: t - o }, { x: y, y: t - o }, { x: y, y: i + o }, { x: n, y: i + o });
138
- break;
139
- case f.Right:
140
- p ? l.push({ x: e, y: x }, { x: n + o, y: x }, { x: n + o, y: i }) : b ? l.push({ x: e, y: i }) : v ? l.push({ x: e, y: t - o }, { x: y, y: t - o }, { x: y, y: i }) : l.push({ x: e, y: t - o }, { x: n + o, y: t - o }, { x: n + o, y: i });
141
- break;
142
- case f.Top: {
143
- const _ = i < t ? i - o : t - o;
144
- if (Math.abs(i - t) <= o * 3) {
145
- const L = Math.round((t + i) / 2);
146
- l.push({ x: e, y: L }, { x: n, y: L });
147
- } else
148
- l.push({ x: e, y: _ }, { x: n, y: _ });
149
- break;
150
- }
151
- }
152
- break;
153
- case f.Bottom:
154
- switch (u) {
155
- case f.Left:
156
- b ? l.push({ x: e, y: t + o }, { x: n - o, y: t + o }, { x: n - o, y: i }) : v ? l.push({ x: e, y: x }, { x: n - o, y: x }, { x: n - o, y: i }) : p ? l.push({ x: e, y: t + o }, { x: y, y: t + o }, { x: y, y: i }) : l.push({ x: e, y: i });
157
- break;
158
- case f.Bottom: {
159
- const _ = i < t ? t + o : i + o;
160
- if (Math.abs(i - t) <= o * 3) {
161
- const L = Math.round((t + i) / 2);
162
- l.push({ x: e, y: L }, { x: n, y: L });
163
- } else
164
- l.push({ x: e, y: _ }, { x: n, y: _ });
165
- break;
166
- }
167
- case f.Right:
168
- b ? l.push({ x: e, y: t + o }, { x: y, y: t + o }, { x: y, y: i }) : v ? l.push({ x: e, y: i }) : p ? l.push({ x: e, y: t + o }, { x: n + o, y: t + o }, { x: n + o, y: i }) : l.push({ x: e, y: x }, { x: n + o, y: x }, { x: n + o, y: i });
169
- break;
170
- case f.Top:
171
- if (n === e && i > t)
172
- break;
173
- i - o < t ? l.push({ x: e, y: t + o }, { x: y, y: t + o }, { x: y, y: i - o }, { x: n, y: i - o }) : l.push({ x: e, y: x }, { x: n, y: x });
174
- break;
175
- }
176
- break;
177
- case f.Left:
178
- switch (u) {
179
- case f.Left:
180
- n < e ? l.push({ x: n - o, y: t }, { x: n - o, y: i }) : l.push({ x: e - o, y: t }, { x: e - o, y: i });
181
- break;
182
- case f.Bottom:
183
- b ? l.push({ x: n, y: t }) : v ? l.push({ x: y, y: t }, { x: y, y: i + o }, { x: n, y: i + o }) : p ? l.push({ x: e - o, y: t }, { x: e - o, y: x }, { x: n, y: x }) : l.push({ x: e - o, y: t }, { x: e - o, y: i + o }, { x: n, y: i + o });
184
- break;
185
- case f.Right:
186
- if (n < e - o)
187
- l.push({ x: y, y: t }, { x: y, y: i });
188
- else {
189
- if (n < e && i === t)
190
- break;
191
- l.push({ x: e - o, y: t }, { x: e - o, y: x }, { x: n + o, y: x }, { x: n + o, y: i });
192
- }
193
- break;
194
- case f.Top:
195
- p ? l.push({ x: e - o, y: t }, { x: e - o, y: i - o }, { x: n, y: i - o }) : b ? l.push({ x: y, y: t }, { x: y, y: i - o }, { x: n, y: i - o }) : v ? l.push({ x: n, y: t }) : l.push({ x: e - o, y: t }, { x: e - o, y: x }, { x: n, y: x });
196
- break;
197
- }
198
- break;
199
- case f.Right:
200
- switch (u) {
201
- case f.Left:
202
- if (n - o < e)
203
- l.push({ x: e + o, y: t }, { x: e + o, y: x }, { x: n - o, y: x }, { x: n - o, y: i });
204
- else {
205
- if (n > e && i === t)
206
- break;
207
- l.push({ x: y, y: t }, { x: y, y: i });
208
- }
209
- break;
210
- case f.Bottom:
211
- b ? l.push({ x: e + o, y: t }, { x: e + o, y: x }, { x: n, y: x }) : v ? l.push({ x: e + o, y: t }, { x: e + o, y: i + o }, { x: n, y: i + o }) : p ? l.push({ x: n, y: t }) : l.push({ x: y, y: t }, { x: y, y: i + o }, { x: n, y: i + o });
212
- break;
213
- case f.Right:
214
- n < e ? l.push({ x: e + o, y: t }, { x: e + o, y: i }) : l.push({ x: n + o, y: t }, { x: n + o, y: i });
215
- break;
216
- case f.Top:
217
- n > e && i < t ? l.push({ x: y, y: t }, { x: y, y: i - o }, { x: n, y: i - o }) : n <= e && i <= t ? l.push({ x: e + o, y: t }, { x: e + o, y: i - o }, { x: n, y: i - o }) : n < e && i > t ? l.push({ x: e + o, y: t }, { x: e + o, y: x }, { x: n, y: x }) : l.push({ x: n, y: t });
218
- break;
219
- }
220
- break;
221
- }
222
- return l.push(c), R(l);
223
- }, ue = (s) => {
224
- const h = S(s.sourceNode, s.sourcePort), c = Ye(s.sourceNode.id, s.nodes, s.currentPoint, s.hitRadius), u = (c == null ? void 0 : c.point) ?? s.currentPoint, e = (c == null ? void 0 : c.port.direction) ?? Re(h, s.sourcePort.direction, u);
225
- return {
226
- points: Se(h, s.sourcePort.direction, u, e),
227
- snappedTarget: c
228
- };
229
- }, $e = (s, h, c) => {
230
- const u = S(s, h);
231
- let e;
232
- for (const t of c)
233
- if (t.id !== s.id)
234
- for (const n of t.ports) {
235
- const i = S(t, n), o = i.x - u.x, l = i.y - u.y;
236
- if (!Xe(o, l, h.direction))
237
- continue;
238
- const y = Math.hypot(o, l), x = Ee(o, l, h.direction);
239
- (!e || x < e.axisDistance || x === e.axisDistance && y < e.distance) && (e = { node: t, port: n, distance: y, axisDistance: x });
240
- }
241
- if (e)
242
- return { node: e.node, port: e.port };
243
- }, Be = (s) => {
244
- if (s.mode === "click")
245
- return $e(s.sourceNode, s.sourcePort, s.nodes);
246
- if (!s.currentPoint || s.hitRadius === void 0)
247
- return;
248
- const c = ue({
249
- sourceNode: s.sourceNode,
250
- sourcePort: s.sourcePort,
251
- nodes: s.nodes,
252
- currentPoint: s.currentPoint,
253
- hitRadius: s.hitRadius
254
- }).snappedTarget;
255
- if (c)
256
- return { node: c.node, port: c.port };
257
- }, le = (s) => {
258
- const h = s.nodes.find((u) => u.id === s.sourceNodeId);
259
- if (!h)
260
- return;
261
- const c = h.ports.find((u) => u.id === s.sourcePortId);
262
- if (c)
263
- return { sourceNode: h, sourcePort: c };
264
- }, He = (s) => {
265
- const h = Be(s);
266
- return h ? {
267
- sourceNodeId: s.sourceNodeId,
268
- sourcePortId: s.sourcePortId,
269
- targetNodeId: h.node.id,
270
- targetPortId: h.port.id
271
- } : {
272
- sourceNodeId: s.sourceNodeId,
273
- sourcePortId: s.sourcePortId
274
- };
275
- }, Ve = (s) => Math.hypot(s.currentClientX - s.pressedClientX, s.currentClientY - s.pressedClientY) >= s.threshold, Ae = (s) => {
276
- let h = s.clientX - s.offsetX, c = s.clientY - s.offsetY;
277
- s.snapToGrid && (h = Math.round(h / s.gridSize) * s.gridSize, c = Math.round(c / s.gridSize) * s.gridSize);
278
- const u = s.alignThreshold ?? 10, e = h + s.node.size.width / 2, t = c + s.node.size.height / 2;
279
- if (s.nodes && s.nodes.length > 1 && u > 0) {
280
- let n, i = Number.POSITIVE_INFINITY, o, l = Number.POSITIVE_INFINITY;
281
- for (const y of s.nodes) {
282
- if (y.id === s.node.id)
283
- continue;
284
- const x = y.position.x + y.size.width / 2, p = y.position.y + y.size.height / 2, b = Math.abs(x - e);
285
- b <= u && b < i && (i = b, n = x - s.node.size.width / 2);
286
- const v = Math.abs(p - t);
287
- v <= u && v < l && (l = v, o = p - s.node.size.height / 2);
288
- }
289
- n !== void 0 && (h = n), o !== void 0 && (c = o);
290
- }
291
- return h = Math.min(s.canvasWidth - s.node.size.width, Math.max(0, h)), c = Math.min(s.canvasHeight - s.node.size.height, Math.max(0, c)), { x: h, y: c };
292
- }, Oe = 10, Fe = 6, We = 3, de = (s) => Math.round(s), De = (s) => ({
293
- x: de(s.x),
294
- y: de(s.y)
295
- }), Ge = (s, h, c, u) => {
296
- const e = Math.hypot(h.x - s.x, h.y - s.y), t = Math.hypot(c.x - h.x, c.y - h.y);
297
- return e === 0 || t === 0 ? 0 : Math.min(u, e / 2, t / 2);
298
- }, Ue = (s) => {
299
- if (s.length === 0)
300
- return "";
301
- if (s.length < 3) {
302
- const [u, ...e] = s, t = [`M ${u.x} ${u.y}`];
303
- for (const n of e)
304
- t.push(`L ${n.x} ${n.y}`);
305
- return t.join(" ");
306
- }
307
- const h = [`M ${s[0].x} ${s[0].y}`];
308
- for (let u = 1; u < s.length - 1; u += 1) {
309
- const e = s[u - 1], t = s[u], n = s[u + 1];
310
- if (!(e.x === t.x && t.y === n.y || e.y === t.y && t.x === n.x)) {
311
- h.push(`L ${t.x} ${t.y}`);
312
- continue;
313
- }
314
- const o = Ge(e, t, n, We);
315
- if (o <= 0) {
316
- h.push(`L ${t.x} ${t.y}`);
317
- continue;
318
- }
319
- const l = t.x + Math.sign(e.x - t.x) * o, y = t.y + Math.sign(e.y - t.y) * o, x = t.x + Math.sign(n.x - t.x) * o, p = t.y + Math.sign(n.y - t.y) * o, v = (t.x - e.x) * (n.y - t.y) - (t.y - e.y) * (n.x - t.x) > 0 ? 1 : 0;
320
- h.push(`L ${l} ${y}`), h.push(`A ${o} ${o} 0 0 ${v} ${x} ${p}`);
321
- }
322
- const c = s[s.length - 1];
323
- return h.push(`L ${c.x} ${c.y}`), h.join(" ");
324
- }, je = (s, h, c) => {
325
- const u = s.x - h.x, e = s.y - h.y, t = Math.hypot(u, e);
326
- if (t === 0)
327
- return s;
328
- const n = u / t, i = e / t;
329
- return {
330
- x: s.x - n * c,
331
- y: s.y - i * c
332
- };
333
- }, Qe = (s, h) => {
334
- if (s.length < 2)
335
- return "";
336
- const c = s[s.length - 1], u = s[s.length - 2], e = c.x - u.x, t = c.y - u.y, n = Math.hypot(e, t);
337
- if (n === 0)
338
- return "";
339
- const i = e / n, o = t / n, l = c.x - i * h.arrowLength, y = c.y - o * h.arrowLength, x = -o, p = i, b = l + x * (h.arrowWidth / 2), v = y + p * (h.arrowWidth / 2), m = l - x * (h.arrowWidth / 2), g = y - p * (h.arrowWidth / 2);
340
- return `${c.x},${c.y} ${b},${v} ${m},${g}`;
341
- }, he = (s, h = {}) => {
342
- const c = {
343
- arrowLength: h.arrowLength ?? Oe,
344
- arrowWidth: h.arrowWidth ?? Fe,
345
- pixelSnap: h.pixelSnap ?? !0
346
- }, u = Qe(s, c);
347
- let e = s.slice();
348
- if (e.length >= 2) {
349
- const t = e[e.length - 1], n = e[e.length - 2];
350
- e[e.length - 1] = je(t, n, c.arrowLength);
351
- }
352
- return c.pixelSnap && (e = e.map((t) => De(t))), {
353
- points: s,
354
- path: Ue(e),
355
- arrow: u
356
- };
357
- }, qe = { class: "zoom-controls" }, Ke = { class: "zoom-text" }, Ze = ["viewBox"], Je = ["transform"], et = { class: "edge-layer" }, tt = ["d", "onMousedown"], ot = ["d", "stroke", "stroke-dasharray", "onMousedown"], st = ["points", "fill", "stroke", "onMousedown"], nt = ["x", "y", "fill"], rt = ["d"], it = ["points"], ct = { class: "node-layer" }, at = ["transform"], lt = ["x", "y", "width", "height", "fill", "onMousedown"], dt = ["x", "y", "width", "height", "rx", "ry", "fill", "onMousedown"], ht = ["points", "fill", "onMousedown"], ut = ["x", "y", "width", "height"], ft = {
358
- key: 0,
359
- width: "14",
360
- height: "14",
361
- class: "node-icon-dom",
362
- "aria-hidden": "true"
363
- }, yt = ["href", "fill"], xt = {
364
- key: 1,
365
- class: "node-icon-fallback"
366
- }, gt = { class: "node-title-text" }, pt = ["cx", "cy", "onMousedown"], wt = /* @__PURE__ */ Pe({
367
- __name: "CanvasView",
368
- props: {
369
- nodes: {},
370
- edges: {},
371
- selectedNodeId: {},
372
- selectedEdgeId: {},
373
- width: {},
374
- height: {},
375
- panX: { default: 0 },
376
- panY: { default: 0 },
377
- zoom: { default: 1 },
378
- snapToGrid: { type: Boolean, default: !0 },
379
- gridSize: { default: 10 },
380
- alignThreshold: { default: 10 },
381
- portHitRadius: { default: 14 },
382
- portDragThreshold: { default: 4 }
383
- },
384
- emits: ["selectionChange", "nodePositionChange", "edgeCreate", "edgeDelete", "nodeDelete"],
385
- setup(s, { emit: h }) {
386
- const c = s, u = h, e = Q(c.zoom), t = (a) => Math.min(2, Math.max(0.4, Number(a.toFixed(2)))), n = () => {
387
- e.value = t(e.value + 0.1);
388
- }, i = () => {
389
- e.value = t(e.value - 0.1);
390
- };
391
- Ce(
392
- () => c.zoom,
393
- (a) => {
394
- e.value = t(a);
395
- }
396
- );
397
- const o = Y(
398
- () => `translate(${c.panX} ${c.panY}) scale(${e.value})`
399
- ), l = Q(), y = Q(), x = B({ width: 700, height: 240 });
400
- let p;
401
- const b = Y(() => c.width ?? x.width), v = Y(() => c.height ?? x.height), m = B({
402
- active: !1,
403
- nodeId: "",
404
- offsetX: 0,
405
- offsetY: 0,
406
- latestClientX: 0,
407
- latestClientY: 0
408
- }), g = B({
409
- active: !1,
410
- sourceNodeId: "",
411
- sourcePortId: "",
412
- pendingClick: !1,
413
- pressedClientX: 0,
414
- pressedClientY: 0,
415
- currentX: 0,
416
- currentY: 0
417
- }), C = B({ rafId: 0, scheduled: !1 }), A = (a) => {
418
- const d = a.data;
419
- return (d == null ? void 0 : d.text) ?? "";
420
- }, $ = (a) => {
421
- const d = a.data;
422
- return (d == null ? void 0 : d.lineColor) ?? "#1c7ed6";
423
- }, _ = (a) => {
424
- const d = a.data;
425
- return (d == null ? void 0 : d.fontColor) ?? "#0f172a";
426
- }, L = (a) => {
427
- const d = a.data;
428
- return (d == null ? void 0 : d.lineStyle) === "dashed" ? "6 4" : void 0;
429
- }, fe = (a) => {
430
- const d = a.data;
431
- return (d == null ? void 0 : d.runtimeStatus) ?? "idle";
432
- }, ye = (a) => fe(a) === "pending", xe = (a) => {
433
- if (a.length < 2) return;
434
- const d = [];
435
- let r = 0;
436
- for (let P = 1; P < a.length; P += 1) {
437
- const T = a[P - 1], U = a[P], j = Math.hypot(U.x - T.x, U.y - T.y);
438
- j !== 0 && (d.push({ start: T, end: U, length: j }), r += j);
439
- }
440
- if (d.length === 0 || r === 0) return;
441
- const w = r / 2;
442
- let X = 0;
443
- for (const P of d) {
444
- if (X + P.length >= w) {
445
- const T = (w - X) / P.length;
446
- return {
447
- x: P.start.x + (P.end.x - P.start.x) * T,
448
- y: P.start.y + (P.end.y - P.start.y) * T
449
- };
450
- }
451
- X += P.length;
452
- }
453
- const ae = d[d.length - 1];
454
- return { x: ae.end.x, y: ae.end.y };
455
- }, ge = Y(
456
- () => c.edges.map((a) => {
457
- const d = a.points ?? [], r = he(d, { pixelSnap: !0 });
458
- return {
459
- edge: a,
460
- edgeId: a.id,
461
- path: r.path,
462
- arrow: r.arrow,
463
- label: A(a),
464
- lineColor: $(a),
465
- lineDasharray: L(a),
466
- labelColor: _(a),
467
- labelPoint: xe(d),
468
- flowing: ye(a)
469
- };
470
- })
471
- ), pe = (a) => {
472
- const d = a.data;
473
- return (d == null ? void 0 : d.title) ?? a.id;
474
- }, O = (a) => {
475
- const d = a.data;
476
- return (d == null ? void 0 : d.icon) ?? "";
477
- }, Z = (a) => {
478
- const d = O(a);
479
- return !d || !d.startsWith("icon-") ? "" : `#${d}`;
480
- }, F = (a) => {
481
- const d = a.data;
482
- return (d == null ? void 0 : d.runtimeStatus) === "completed" ? d.completedFillColor ?? "#bbf7d0" : (d == null ? void 0 : d.runtimeStatus) === "active" ? "#dcfce7" : (d == null ? void 0 : d.nodeColor) ?? "#ffffff";
483
- }, J = (a) => {
484
- const d = a.data;
485
- return (d == null ? void 0 : d.fontColor) ?? "#0f172a";
486
- }, ee = (a) => {
487
- const d = a.data;
488
- return (d == null ? void 0 : d.nodeShape) ?? "rect";
489
- }, we = (a) => {
490
- const d = a.size.width / 2, r = a.size.height / 2;
491
- return `0,${-r} ${d},0 0,${r} ${-d},0`;
492
- }, ve = (a) => {
493
- const d = new Map(a.ports.map((r) => [r.direction, r]));
494
- return [
495
- { direction: f.Top, dx: 0, dy: -a.size.height / 2 },
496
- { direction: f.Right, dx: a.size.width / 2, dy: 0 },
497
- { direction: f.Bottom, dx: 0, dy: a.size.height / 2 },
498
- { direction: f.Left, dx: -a.size.width / 2, dy: 0 }
499
- ].map((r) => ({
500
- ...r,
501
- port: d.get(r.direction)
502
- })).filter((r) => !!r.port);
503
- }, te = (a) => {
504
- const d = y.value;
505
- if (!d)
506
- return { x: a.clientX, y: a.clientY };
507
- const r = d.getBoundingClientRect();
508
- return {
509
- x: a.clientX - r.left,
510
- y: a.clientY - r.top
511
- };
512
- }, W = (a) => ({
513
- x: (a.x - c.panX) / e.value,
514
- y: (a.y - c.panY) / e.value
515
- }), me = () => {
516
- if (C.scheduled = !1, !m.active) return;
517
- const a = c.nodes.find((r) => r.id === m.nodeId);
518
- if (!a) return;
519
- const d = Ae({
520
- node: a,
521
- nodes: c.nodes,
522
- alignThreshold: c.alignThreshold,
523
- clientX: m.latestClientX,
524
- clientY: m.latestClientY,
525
- offsetX: m.offsetX,
526
- offsetY: m.offsetY,
527
- canvasWidth: b.value / e.value,
528
- canvasHeight: v.value / e.value,
529
- gridSize: c.gridSize,
530
- snapToGrid: c.snapToGrid
531
- });
532
- u("nodePositionChange", { nodeId: m.nodeId, position: d });
533
- }, be = () => {
534
- g.active = !1, g.pendingClick = !1, g.sourceNodeId = "", g.sourcePortId = "";
535
- }, oe = () => {
536
- m.active = !1, m.nodeId = "", C.rafId && (window.cancelAnimationFrame(C.rafId), C.rafId = 0), C.scheduled = !1;
537
- }, ke = () => {
538
- if (!g.active && !g.pendingClick) return;
539
- const a = le({
540
- sourceNodeId: g.sourceNodeId,
541
- sourcePortId: g.sourcePortId,
542
- nodes: c.nodes
543
- });
544
- if (a) {
545
- const d = He({
546
- sourceNodeId: a.sourceNode.id,
547
- sourcePortId: a.sourcePort.id,
548
- sourceNode: a.sourceNode,
549
- sourcePort: a.sourcePort,
550
- nodes: c.nodes,
551
- mode: g.pendingClick ? "click" : "drag",
552
- currentPoint: { x: g.currentX, y: g.currentY },
553
- hitRadius: c.portHitRadius
554
- });
555
- d.targetNodeId && d.targetPortId && u("edgeCreate", {
556
- sourceNodeId: d.sourceNodeId,
557
- sourcePortId: d.sourcePortId,
558
- targetNodeId: d.targetNodeId,
559
- targetPortId: d.targetPortId
560
- });
561
- }
562
- be();
563
- }, se = Y(() => {
564
- if (!g.active) return [];
565
- const a = le({
566
- sourceNodeId: g.sourceNodeId,
567
- sourcePortId: g.sourcePortId,
568
- nodes: c.nodes
569
- });
570
- return a ? ue({
571
- sourceNode: a.sourceNode,
572
- sourcePort: a.sourcePort,
573
- nodes: c.nodes,
574
- currentPoint: { x: g.currentX, y: g.currentY },
575
- hitRadius: c.portHitRadius
576
- }).points : [];
577
- }), ne = Y(() => he(se.value, { pixelSnap: !0 })), D = (a, d) => {
578
- if (g.active) return;
579
- d.preventDefault(), u("selectionChange", { nodeId: a.id }), m.active = !0, m.nodeId = a.id;
580
- const r = W(te(d));
581
- m.offsetX = r.x - a.position.x, m.offsetY = r.y - a.position.y, m.latestClientX = r.x, m.latestClientY = r.y;
582
- }, Ie = (a, d, r) => {
583
- r.preventDefault(), u("selectionChange", { nodeId: a.id });
584
- const w = S(a, d);
585
- g.active = !1, g.pendingClick = !0, g.pressedClientX = r.clientX, g.pressedClientY = r.clientY, g.sourceNodeId = a.id, g.sourcePortId = d.id, g.currentX = w.x, g.currentY = w.y;
586
- }, G = (a, d) => {
587
- d.preventDefault(), d.stopPropagation(), u("selectionChange", { edgeId: a.id });
588
- }, Me = () => {
589
- g.active || m.active || u("selectionChange", {});
590
- }, re = (a) => {
591
- const d = te(a);
592
- if (g.pendingClick && !g.active && Ve({
593
- pressedClientX: g.pressedClientX,
594
- pressedClientY: g.pressedClientY,
595
- currentClientX: a.clientX,
596
- currentClientY: a.clientY,
597
- threshold: c.portDragThreshold
598
- }) && (g.active = !0, g.pendingClick = !1), g.active) {
599
- const w = W(d);
600
- g.currentX = w.x, g.currentY = w.y;
601
- return;
602
- }
603
- if (!m.active) return;
604
- const r = W(d);
605
- m.latestClientX = r.x, m.latestClientY = r.y, !C.scheduled && (C.scheduled = !0, C.rafId = window.requestAnimationFrame(me));
606
- }, ie = () => {
607
- oe(), ke();
608
- }, ce = (a) => {
609
- if (a.key !== "Delete" && a.key !== "Backspace") return;
610
- const d = a.target;
611
- if (d) {
612
- const r = d.tagName;
613
- if (r === "INPUT" || r === "TEXTAREA" || d.isContentEditable)
614
- return;
615
- }
616
- if (c.selectedEdgeId) {
617
- a.preventDefault(), u("edgeDelete", { edgeId: c.selectedEdgeId });
618
- return;
619
- }
620
- c.selectedNodeId && (a.preventDefault(), u("nodeDelete", { nodeId: c.selectedNodeId }));
621
- };
622
- return Ne(() => {
623
- const a = () => {
624
- const d = l.value;
625
- if (!d) return;
626
- const r = d.getBoundingClientRect();
627
- r.width > 0 && (x.width = r.width), r.height > 0 && (x.height = r.height);
628
- };
629
- a(), p = new ResizeObserver(a), l.value && p.observe(l.value), window.addEventListener("mousemove", re), window.addEventListener("mouseup", ie), window.addEventListener("keydown", ce);
630
- }), ze(() => {
631
- oe(), p == null || p.disconnect(), window.removeEventListener("mousemove", re), window.removeEventListener("mouseup", ie), window.removeEventListener("keydown", ce);
632
- }), (a, d) => (k(), I("section", {
633
- ref_key: "containerRef",
634
- ref: l,
635
- class: "canvas-view",
636
- style: { width: "100%", height: "100%" }
637
- }, [
638
- M("div", qe, [
639
- M("button", {
640
- type: "button",
641
- class: "zoom-btn",
642
- onClick: i
643
- }, "-"),
644
- M("span", Ke, H(Math.round(e.value * 100)) + "%", 1),
645
- M("button", {
646
- type: "button",
647
- class: "zoom-btn",
648
- onClick: n
649
- }, "+")
650
- ]),
651
- (k(), I("svg", {
652
- ref_key: "svgRef",
653
- ref: y,
654
- class: "canvas-svg",
655
- xmlns: "http://www.w3.org/2000/svg",
656
- viewBox: `0 0 ${b.value} ${v.value}`,
657
- onMousedown: z(Me, ["self"])
658
- }, [
659
- M("g", { transform: o.value }, [
660
- M("g", et, [
661
- (k(!0), I(E, null, q(ge.value, (r) => (k(), I(E, {
662
- key: r.edgeId
663
- }, [
664
- M("path", {
665
- d: r.path,
666
- fill: "none",
667
- stroke: "transparent",
668
- "stroke-width": "15",
669
- "vector-effect": "non-scaling-stroke",
670
- class: "edge-hit",
671
- onMousedown: z((w) => G(r.edge, w), ["stop"])
672
- }, null, 40, tt),
673
- M("path", {
674
- d: r.path,
675
- stroke: s.selectedEdgeId === r.edgeId ? "#2563eb" : r.lineColor,
676
- "stroke-width": "1",
677
- fill: "none",
678
- "stroke-linecap": "round",
679
- "stroke-linejoin": "round",
680
- "vector-effect": "non-scaling-stroke",
681
- "shape-rendering": "geometricPrecision",
682
- class: V(["edge-path", { "edge-flowing": r.flowing }]),
683
- "stroke-dasharray": r.lineDasharray ?? (r.flowing ? "7 6" : void 0),
684
- onMousedown: z((w) => G(r.edge, w), ["stop"])
685
- }, null, 42, ot),
686
- M("polygon", {
687
- points: r.arrow,
688
- fill: s.selectedEdgeId === r.edgeId ? "#2563eb" : r.lineColor,
689
- stroke: s.selectedEdgeId === r.edgeId ? "#2563eb" : r.lineColor,
690
- "vector-effect": "non-scaling-stroke",
691
- "shape-rendering": "geometricPrecision",
692
- class: "edge-arrow",
693
- onMousedown: z((w) => G(r.edge, w), ["stop"])
694
- }, null, 40, st),
695
- r.label && r.labelPoint ? (k(), I("text", {
696
- key: 0,
697
- x: r.labelPoint.x,
698
- y: r.labelPoint.y,
699
- class: "edge-label",
700
- fill: r.labelColor,
701
- "text-anchor": "middle",
702
- "dominant-baseline": "central"
703
- }, H(r.label), 9, nt)) : K("", !0)
704
- ], 64))), 128)),
705
- se.value.length > 1 ? (k(), I(E, { key: 0 }, [
706
- M("path", {
707
- d: ne.value.path,
708
- stroke: "#94a3b8",
709
- "stroke-width": "2",
710
- fill: "none",
711
- "stroke-linecap": "round",
712
- "stroke-linejoin": "round",
713
- "vector-effect": "non-scaling-stroke",
714
- "shape-rendering": "geometricPrecision"
715
- }, null, 8, rt),
716
- M("polygon", {
717
- points: ne.value.arrow,
718
- fill: "#94a3b8",
719
- stroke: "#94a3b8",
720
- "vector-effect": "non-scaling-stroke",
721
- "shape-rendering": "geometricPrecision"
722
- }, null, 8, it)
723
- ], 64)) : K("", !0)
724
- ]),
725
- M("g", ct, [
726
- (k(!0), I(E, null, q(s.nodes, (r) => (k(), I("g", {
727
- key: r.id,
728
- class: "node-group",
729
- transform: `translate(${r.position.x + r.size.width / 2} ${r.position.y + r.size.height / 2})`
730
- }, [
731
- ee(r) === "rect" ? (k(), I("rect", {
732
- key: 0,
733
- x: -r.size.width / 2,
734
- y: -r.size.height / 2,
735
- width: r.size.width,
736
- height: r.size.height,
737
- rx: "4",
738
- ry: "4",
739
- fill: F(r),
740
- stroke: "#0f172a",
741
- class: V({ selected: s.selectedNodeId === r.id }),
742
- onMousedown: z((w) => D(r, w), ["stop"])
743
- }, null, 42, lt)) : ee(r) === "ellipse" ? (k(), I("rect", {
744
- key: 1,
745
- x: -r.size.width / 2,
746
- y: -r.size.height / 2,
747
- width: r.size.width,
748
- height: r.size.height,
749
- rx: r.size.height / 2,
750
- ry: r.size.height / 2,
751
- fill: F(r),
752
- stroke: "#0f172a",
753
- class: V({ selected: s.selectedNodeId === r.id }),
754
- onMousedown: z((w) => D(r, w), ["stop"])
755
- }, null, 42, dt)) : (k(), I("polygon", {
756
- key: 2,
757
- points: we(r),
758
- fill: F(r),
759
- stroke: "#0f172a",
760
- class: V({ selected: s.selectedNodeId === r.id }),
761
- onMousedown: z((w) => D(r, w), ["stop"])
762
- }, null, 42, ht)),
763
- (k(), I("foreignObject", {
764
- x: -r.size.width / 2,
765
- y: -r.size.height / 2,
766
- width: r.size.width,
767
- height: r.size.height,
768
- class: "node-title-foreign"
769
- }, [
770
- M("div", {
771
- xmlns: "http://www.w3.org/1999/xhtml",
772
- class: "node-title-dom",
773
- style: _e({ color: J(r) })
774
- }, [
775
- Z(r) ? (k(), I("svg", ft, [
776
- M("use", {
777
- href: Z(r),
778
- fill: J(r)
779
- }, null, 8, yt)
780
- ])) : O(r) ? (k(), I("span", xt, H(O(r)), 1)) : K("", !0),
781
- M("span", gt, H(pe(r)), 1)
782
- ], 4)
783
- ], 8, ut)),
784
- (k(!0), I(E, null, q(ve(r), (w) => Le((k(), I("circle", {
785
- key: w.port.id,
786
- cx: w.dx,
787
- cy: w.dy,
788
- r: "5",
789
- fill: "#ffffff",
790
- stroke: "#1d4ed8",
791
- class: "port-dot",
792
- onMousedown: z((X) => Ie(r, w.port, X), ["stop"])
793
- }, null, 40, pt)), [
794
- [Te, s.selectedNodeId === r.id]
795
- ])), 128))
796
- ], 8, at))), 128))
797
- ])
798
- ], 8, Je)
799
- ], 40, Ze))
800
- ], 512));
801
- }
802
- }), vt = (s, h) => {
803
- const c = s.__vccOpts || s;
804
- for (const [u, e] of h)
805
- c[u] = e;
806
- return c;
807
- }, bt = /* @__PURE__ */ vt(wt, [["__scopeId", "data-v-ed82a114"]]);
808
- export {
809
- bt as CanvasView
810
- };