dishui 0.0.43 → 0.0.45

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.
@@ -1,11 +1,11 @@
1
- function P(e, t) {
1
+ function M(e, t) {
2
2
  if (!(!e || e === "solid")) {
3
3
  if (e === "dynamic") return [t * 4, t * 3];
4
4
  if (e === "dashed") return [t * 4, t * 2];
5
5
  if (e === "dotted") return [t, t * 2];
6
6
  }
7
7
  }
8
- function D(e, t, h = 3) {
8
+ function W(e, t, h = 3) {
9
9
  const n = [];
10
10
  for (let i = 0; i <= e; i += h) n.push({
11
11
  x: i,
@@ -28,93 +28,104 @@ function D(e, t, h = 3) {
28
28
  y: 0
29
29
  }), n;
30
30
  }
31
- function I(e, t, h, n = 3) {
32
- const i = [], l = Math.max(4, Math.ceil(Math.PI / 2 * h / n)), r = (s, a, c) => {
33
- for (let y = 0; y <= l; y++) {
34
- const p = c + Math.PI / 2 * (y / l);
31
+ function P(e, t, h, n = 3) {
32
+ const i = [], a = Math.max(4, Math.ceil(Math.PI / 2 * h / n)), r = (s, l, c) => {
33
+ for (let y = 0; y <= a; y++) {
34
+ const p = c + Math.PI / 2 * (y / a);
35
35
  i.push({
36
36
  x: s + h * Math.cos(p),
37
- y: a + h * Math.sin(p)
37
+ y: l + h * Math.sin(p)
38
38
  });
39
39
  }
40
40
  };
41
41
  return r(e - h, h, -Math.PI / 2), r(e - h, t - h, 0), r(h, t - h, Math.PI / 2), r(h, h, Math.PI), i.length > 0 && i.push(i[0]), i;
42
42
  }
43
- function G(e, t, h, n, i = 60) {
44
- const l = [];
43
+ function D(e, t, h, n, i = 60) {
44
+ const a = [];
45
45
  for (let r = 0; r <= i; r++) {
46
46
  const s = Math.PI * 2 * r / i;
47
- l.push({
47
+ a.push({
48
48
  x: e + h * Math.cos(s),
49
49
  y: t + n * Math.sin(s)
50
50
  });
51
51
  }
52
- return l;
52
+ return a;
53
53
  }
54
- function R(e, t, h, n, i, l) {
54
+ function k(e, t, h, n, i, a) {
55
55
  if (t.length < 2) return;
56
56
  const r = [0];
57
57
  for (let o = 1; o < t.length; o++) r.push(r[o - 1] + Math.hypot(t[o].x - t[o - 1].x, t[o].y - t[o - 1].y));
58
58
  const s = r[r.length - 1];
59
59
  if (s < 1) return;
60
- const a = h[0] + h[1];
61
- let c = -((n % a + a) % a), y = !0;
60
+ const l = h[0] + h[1];
61
+ let c = -((n % l + l) % l), y = !0;
62
62
  const p = (o) => {
63
63
  if (o <= 0) return t[0];
64
64
  if (o >= s) return t[t.length - 1];
65
- let d = 0, x = r.length - 1;
66
- for (; d < x - 1; ) {
67
- const T = d + x >> 1;
68
- r[T] <= o ? d = T : x = T;
65
+ let d = 0, w = r.length - 1;
66
+ for (; d < w - 1; ) {
67
+ const T = d + w >> 1;
68
+ r[T] <= o ? d = T : w = T;
69
69
  }
70
- const m = r[x] - r[d] > 0 ? (o - r[d]) / (r[x] - r[d]) : 0;
70
+ const m = r[w] - r[d] > 0 ? (o - r[d]) / (r[w] - r[d]) : 0;
71
71
  return {
72
- x: t[d].x + (t[x].x - t[d].x) * m,
73
- y: t[d].y + (t[x].y - t[d].y) * m
72
+ x: t[d].x + (t[w].x - t[d].x) * m,
73
+ y: t[d].y + (t[w].y - t[d].y) * m
74
74
  };
75
75
  };
76
76
  for (; c < s; ) {
77
- const o = y ? h[0] : h[1], d = Math.max(c, 0), x = Math.min(c + o, s);
78
- if (y && x > d) {
77
+ const o = y ? h[0] : h[1], d = Math.max(c, 0), w = Math.min(c + o, s);
78
+ if (y && w > d) {
79
79
  const m = p(d);
80
80
  e.moveTo(m.x, m.y);
81
- for (let M = d + 2; M < x; M += 2) {
82
- const g = p(M);
83
- e.lineTo(g.x, g.y);
81
+ for (let g = d + 2; g < w; g += 2) {
82
+ const v = p(g);
83
+ e.lineTo(v.x, v.y);
84
84
  }
85
- const T = p(x);
85
+ const T = p(w);
86
86
  e.lineTo(T.x, T.y);
87
87
  }
88
88
  c += o, y = !y;
89
89
  }
90
90
  e.stroke({
91
91
  color: i,
92
- width: l,
92
+ width: a,
93
93
  cap: "round"
94
94
  });
95
95
  }
96
96
  function f(e, t) {
97
- t.fill && t.fill !== "transparent" && e.fill({ color: t.fill }), t.borderStyle !== "none" && t.stroke && t.stroke !== "transparent" && t.strokeWidth > 0 && (P(t.borderStyle, t.strokeWidth) || e.stroke({
97
+ t.fill && t.fill !== "transparent" && e.fill({ color: t.fill }), t.borderStyle !== "none" && t.stroke && t.stroke !== "transparent" && t.strokeWidth > 0 && (M(t.borderStyle, t.strokeWidth) || e.stroke({
98
98
  color: t.stroke,
99
99
  width: t.strokeWidth
100
100
  }));
101
101
  }
102
102
  function u(e, t, h) {
103
- const n = P(t.borderStyle, t.strokeWidth);
104
- !n || !t.stroke || t.stroke === "transparent" || t.strokeWidth <= 0 || R(e, h, n, t.borderStyle === "dynamic" ? t.dashOffset ?? 0 : 0, t.stroke, t.strokeWidth);
103
+ const n = M(t.borderStyle, t.strokeWidth);
104
+ !n || !t.stroke || t.stroke === "transparent" || t.strokeWidth <= 0 || k(e, h, n, t.borderStyle === "dynamic" ? t.dashOffset ?? 0 : 0, t.stroke, t.strokeWidth);
105
105
  }
106
- function w(e) {
106
+ function K(e, t, h) {
107
+ if (t.borderStyle === "none" || !t.stroke || t.stroke === "transparent" || t.strokeWidth <= 0) return;
108
+ const n = h ?? Math.min(12, t.width * 0.1, t.height * 0.1), i = M(t.borderStyle, t.strokeWidth);
109
+ if (i) {
110
+ const a = t.borderStyle === "dynamic" ? t.dashOffset ?? 0 : 0;
111
+ k(e, P(t.width, t.height, n), i, a, t.stroke, t.strokeWidth);
112
+ } else e.roundRect(0, 0, t.width, t.height, n).stroke({
113
+ color: t.stroke,
114
+ width: t.strokeWidth
115
+ });
116
+ }
117
+ function x(e) {
107
118
  return [...e, e[0]];
108
119
  }
109
- function v(e, t) {
110
- e.rect(0, 0, t.width, t.height), f(e, t), u(e, t, D(t.width, t.height));
120
+ function R(e, t) {
121
+ e.rect(0, 0, t.width, t.height), f(e, t), u(e, t, W(t.width, t.height));
111
122
  }
112
- function k(e, t) {
123
+ function I(e, t) {
113
124
  const h = Math.min(12, t.width * 0.1, t.height * 0.1);
114
- e.roundRect(0, 0, t.width, t.height, h), f(e, t), u(e, t, I(t.width, t.height, h));
125
+ e.roundRect(0, 0, t.width, t.height, h), f(e, t), u(e, t, P(t.width, t.height, h));
115
126
  }
116
- function W(e, t) {
117
- e.ellipse(t.width / 2, t.height / 2, t.width / 2, t.height / 2), f(e, t), u(e, t, G(t.width / 2, t.height / 2, t.width / 2, t.height / 2));
127
+ function G(e, t) {
128
+ e.ellipse(t.width / 2, t.height / 2, t.width / 2, t.height / 2), f(e, t), u(e, t, D(t.width / 2, t.height / 2, t.width / 2, t.height / 2));
118
129
  }
119
130
  function C(e, t) {
120
131
  const h = t.width / 2, n = t.height / 2, i = [
@@ -135,12 +146,12 @@ function C(e, t) {
135
146
  y: n
136
147
  }
137
148
  ];
138
- e.moveTo(h, 0).lineTo(t.width, n).lineTo(h, t.height).lineTo(0, n).closePath(), f(e, t), u(e, t, w(i));
149
+ e.moveTo(h, 0).lineTo(t.width, n).lineTo(h, t.height).lineTo(0, n).closePath(), f(e, t), u(e, t, x(i));
139
150
  }
140
151
  function H(e, t) {
141
152
  const h = t.width, n = t.height, i = n * 0.15;
142
153
  e.moveTo(0, 0).lineTo(h, 0).lineTo(h, n - i).bezierCurveTo(h * 0.75, n - i * 2, h * 0.25, n, 0, n - i).closePath(), f(e, t);
143
- const l = [
154
+ const a = [
144
155
  {
145
156
  x: 0,
146
157
  y: 0
@@ -155,16 +166,16 @@ function H(e, t) {
155
166
  }
156
167
  ], r = 20;
157
168
  for (let s = 1; s <= r; s++) {
158
- const a = s / r, c = 1 - a;
159
- l.push({
160
- x: c * c * c * h + 3 * c * c * a * (h * 0.75) + 3 * c * a * a * (h * 0.25),
161
- y: c * c * c * (n - i) + 3 * c * c * a * (n - i * 2) + 3 * c * a * a * n + a * a * a * (n - i)
169
+ const l = s / r, c = 1 - l;
170
+ a.push({
171
+ x: c * c * c * h + 3 * c * c * l * (h * 0.75) + 3 * c * l * l * (h * 0.25),
172
+ y: c * c * c * (n - i) + 3 * c * c * l * (n - i * 2) + 3 * c * l * l * n + l * l * l * (n - i)
162
173
  });
163
174
  }
164
- l.push({
175
+ a.push({
165
176
  x: 0,
166
177
  y: 0
167
- }), u(e, t, l);
178
+ }), u(e, t, a);
168
179
  }
169
180
  function z(e, t) {
170
181
  const h = t.width * 0.2, n = [
@@ -185,7 +196,7 @@ function z(e, t) {
185
196
  y: t.height
186
197
  }
187
198
  ];
188
- e.moveTo(h, 0).lineTo(t.width, 0).lineTo(t.width - h, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, w(n));
199
+ e.moveTo(h, 0).lineTo(t.width, 0).lineTo(t.width - h, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, x(n));
189
200
  }
190
201
  function E(e, t) {
191
202
  const h = [
@@ -202,7 +213,7 @@ function E(e, t) {
202
213
  y: t.height
203
214
  }
204
215
  ];
205
- e.moveTo(t.width / 2, 0).lineTo(t.width, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, w(h));
216
+ e.moveTo(t.width / 2, 0).lineTo(t.width, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, x(h));
206
217
  }
207
218
  function L(e, t) {
208
219
  const h = t.width * 0.15, n = [
@@ -223,52 +234,52 @@ function L(e, t) {
223
234
  y: t.height
224
235
  }
225
236
  ];
226
- e.moveTo(h, 0).lineTo(t.width - h, 0).lineTo(t.width, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, w(n));
237
+ e.moveTo(h, 0).lineTo(t.width - h, 0).lineTo(t.width, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, x(n));
227
238
  }
228
- function S(e, t, h, n, i, l) {
239
+ function S(e, t, h, n, i, a) {
229
240
  const r = [];
230
241
  for (let s = 0; s < h; s++) {
231
- const a = Math.PI * 2 * s / h + l;
242
+ const l = Math.PI * 2 * s / h + a;
232
243
  r.push({
233
- x: e + n * Math.cos(a),
234
- y: t + i * Math.sin(a)
244
+ x: e + n * Math.cos(l),
245
+ y: t + i * Math.sin(l)
235
246
  });
236
247
  }
237
248
  return r;
238
249
  }
239
250
  function O(e, t) {
240
- const h = t.width / 2, n = t.height / 2, i = Math.min(h, n), l = S(h, n, 5, i, i, -Math.PI / 2);
241
- for (let r = 0; r < l.length; r++) r === 0 ? e.moveTo(l[r].x, l[r].y) : e.lineTo(l[r].x, l[r].y);
242
- e.closePath(), f(e, t), u(e, t, w(l));
251
+ const h = t.width / 2, n = t.height / 2, i = Math.min(h, n), a = S(h, n, 5, i, i, -Math.PI / 2);
252
+ for (let r = 0; r < a.length; r++) r === 0 ? e.moveTo(a[r].x, a[r].y) : e.lineTo(a[r].x, a[r].y);
253
+ e.closePath(), f(e, t), u(e, t, x(a));
243
254
  }
244
255
  function B(e, t) {
245
256
  const h = t.width / 2, n = t.height / 2, i = S(h, n, 6, h, n, -Math.PI / 6);
246
- for (let l = 0; l < i.length; l++) l === 0 ? e.moveTo(i[l].x, i[l].y) : e.lineTo(i[l].x, i[l].y);
247
- e.closePath(), f(e, t), u(e, t, w(i));
257
+ for (let a = 0; a < i.length; a++) a === 0 ? e.moveTo(i[a].x, i[a].y) : e.lineTo(i[a].x, i[a].y);
258
+ e.closePath(), f(e, t), u(e, t, x(i));
248
259
  }
249
260
  function F(e, t) {
250
- const h = t.width / 2, n = t.height / 2, i = Math.min(h, n), l = i * 0.4, r = 5, s = [];
251
- for (let a = 0; a < r * 2; a++) {
252
- const c = Math.PI * a / r - Math.PI / 2, y = a % 2 === 0 ? i : l;
261
+ const h = t.width / 2, n = t.height / 2, i = Math.min(h, n), a = i * 0.4, r = 5, s = [];
262
+ for (let l = 0; l < r * 2; l++) {
263
+ const c = Math.PI * l / r - Math.PI / 2, y = l % 2 === 0 ? i : a;
253
264
  s.push({
254
265
  x: h + y * Math.cos(c),
255
266
  y: n + y * Math.sin(c)
256
267
  });
257
268
  }
258
- for (let a = 0; a < s.length; a++) a === 0 ? e.moveTo(s[a].x, s[a].y) : e.lineTo(s[a].x, s[a].y);
259
- e.closePath(), f(e, t), u(e, t, w(s));
269
+ for (let l = 0; l < s.length; l++) l === 0 ? e.moveTo(s[l].x, s[l].y) : e.lineTo(s[l].x, s[l].y);
270
+ e.closePath(), f(e, t), u(e, t, x(s));
260
271
  }
261
272
  function j(e, t) {
262
- const h = t.width / 2, n = t.height / 2, i = Math.min(h, n), l = i * 0.55, r = [];
273
+ const h = t.width / 2, n = t.height / 2, i = Math.min(h, n), a = i * 0.55, r = [];
263
274
  for (let s = 0; s < 12; s++) {
264
- const a = Math.PI * s / 6 - Math.PI / 2, c = s % 2 === 0 ? i : l;
275
+ const l = Math.PI * s / 6 - Math.PI / 2, c = s % 2 === 0 ? i : a;
265
276
  r.push({
266
- x: h + c * Math.cos(a),
267
- y: n + c * Math.sin(a)
277
+ x: h + c * Math.cos(l),
278
+ y: n + c * Math.sin(l)
268
279
  });
269
280
  }
270
281
  for (let s = 0; s < r.length; s++) s === 0 ? e.moveTo(r[s].x, r[s].y) : e.lineTo(r[s].x, r[s].y);
271
- e.closePath(), f(e, t), u(e, t, w(r));
282
+ e.closePath(), f(e, t), u(e, t, x(r));
272
283
  }
273
284
  function q(e, t) {
274
285
  const h = [
@@ -285,7 +296,7 @@ function q(e, t) {
285
296
  y: t.height
286
297
  }
287
298
  ];
288
- e.moveTo(0, 0).lineTo(t.width, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, w(h));
299
+ e.moveTo(0, 0).lineTo(t.width, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, x(h));
289
300
  }
290
301
  function A(e, t) {
291
302
  const h = Math.min(t.width, t.height) * 0.4, n = [
@@ -314,7 +325,7 @@ function A(e, t) {
314
325
  y: t.height
315
326
  }
316
327
  ];
317
- e.moveTo(0, 0).lineTo(t.width, 0).lineTo(t.width, h).lineTo(h, h).lineTo(h, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, w(n));
328
+ e.moveTo(0, 0).lineTo(t.width, 0).lineTo(t.width, h).lineTo(h, h).lineTo(h, t.height).lineTo(0, t.height).closePath(), f(e, t), u(e, t, x(n));
318
329
  }
319
330
  function b(e, t) {
320
331
  const h = Math.min(6, t.width * 0.04, t.height * 0.04);
@@ -324,20 +335,20 @@ function b(e, t) {
324
335
  });
325
336
  const n = t.borderStyle ?? "dashed";
326
337
  if (n !== "none" && t.stroke && t.stroke !== "transparent" && t.strokeWidth > 0) {
327
- const i = P(n, t.strokeWidth);
338
+ const i = M(n, t.strokeWidth);
328
339
  if (i) {
329
- const l = n === "dynamic" ? t.dashOffset ?? 0 : 0;
330
- R(e, I(t.width, t.height, h), i, l, t.stroke, t.strokeWidth);
340
+ const a = n === "dynamic" ? t.dashOffset ?? 0 : 0;
341
+ k(e, P(t.width, t.height, h), i, a, t.stroke, t.strokeWidth);
331
342
  } else e.stroke({
332
343
  color: t.stroke,
333
344
  width: t.strokeWidth
334
345
  });
335
346
  }
336
347
  }
337
- var J = b, K = {
338
- shapeRect: v,
339
- shapeRoundRect: k,
340
- shapeEllipse: W,
348
+ var J = b, N = {
349
+ shapeRect: R,
350
+ shapeRoundRect: I,
351
+ shapeEllipse: G,
341
352
  shapeDiamond: C,
342
353
  shapeDocument: H,
343
354
  shapeParallelogram: z,
@@ -349,29 +360,30 @@ var J = b, K = {
349
360
  shapeHexagram: j,
350
361
  shapeRightTriangle: q,
351
362
  shapeCorner: A,
352
- textLabel: v,
363
+ textLabel: R,
353
364
  flowGroup: b,
354
365
  geometryGroup: J,
355
- shapeSvg: k
366
+ shapeSvg: I
356
367
  };
357
368
  export {
358
369
  A as drawCorner,
359
370
  C as drawDiamond,
360
371
  H as drawDocument,
361
- W as drawEllipse,
372
+ G as drawEllipse,
362
373
  b as drawFlowGroup,
363
374
  J as drawGeometryGroup,
364
375
  B as drawHexagon,
365
376
  j as drawHexagram,
366
377
  z as drawParallelogram,
367
378
  O as drawPentagon,
368
- v as drawRect,
379
+ R as drawRect,
369
380
  q as drawRightTriangle,
370
- k as drawRoundRect,
381
+ I as drawRoundRect,
382
+ K as drawRoundRectBorder,
371
383
  F as drawStar,
372
384
  L as drawTrapezoid,
373
385
  E as drawTriangle,
374
- K as shapeDrawers
386
+ N as shapeDrawers
375
387
  };
376
388
 
377
389
  //# sourceMappingURL=shapes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shapes.js","names":[],"sources":["../../../../../src/components/pro/Flow/nodes/shapes.ts"],"sourcesContent":["import { Graphics } from 'pixi.js';\nimport type { FlowShapeType, FlowNodeData } from '../types';\n\nexport interface ShapeDrawOptions {\n width: number;\n height: number;\n fill: string;\n stroke: string;\n strokeWidth: number;\n borderStyle?: 'solid' | 'dashed' | 'dotted' | 'dynamic' | 'none';\n dashOffset?: number;\n}\n\nfunction parseDash(style: string | undefined, strokeWidth: number): number[] | undefined {\n if (!style || style === 'solid') return undefined;\n if (style === 'dynamic') return [strokeWidth * 4, strokeWidth * 3];\n if (style === 'dashed') return [strokeWidth * 4, strokeWidth * 2];\n if (style === 'dotted') return [strokeWidth, strokeWidth * 2];\n return undefined;\n}\n\n/**\n * Sample a rectangle's outline as points for dashed border.\n */\nfunction sampleRect(w: number, h: number, step = 3): Array<{ x: number; y: number }> {\n const pts: Array<{ x: number; y: number }> = [];\n for (let x = 0; x <= w; x += step) pts.push({ x, y: 0 });\n for (let y = step; y <= h; y += step) pts.push({ x: w, y });\n for (let x = w - step; x >= 0; x -= step) pts.push({ x, y: h });\n for (let y = h - step; y > 0; y -= step) pts.push({ x: 0, y });\n pts.push({ x: 0, y: 0 });\n return pts;\n}\n\n/**\n * Sample a rounded rectangle outline as points.\n */\nfunction sampleRoundRect(w: number, h: number, r: number, step = 3): Array<{ x: number; y: number }> {\n const pts: Array<{ x: number; y: number }> = [];\n const cornerSamples = Math.max(4, Math.ceil((Math.PI / 2) * r / step));\n const addCorner = (cx: number, cy: number, startAngle: number) => {\n for (let i = 0; i <= cornerSamples; i++) {\n const a = startAngle + (Math.PI / 2) * (i / cornerSamples);\n pts.push({ x: cx + r * Math.cos(a), y: cy + r * Math.sin(a) });\n }\n };\n addCorner(w - r, r, -Math.PI / 2);\n addCorner(w - r, h - r, 0);\n addCorner(r, h - r, Math.PI / 2);\n addCorner(r, r, Math.PI);\n if (pts.length > 0) pts.push(pts[0]);\n return pts;\n}\n\n/**\n * Sample an ellipse outline.\n */\nfunction sampleEllipse(cx: number, cy: number, rx: number, ry: number, samples = 60): Array<{ x: number; y: number }> {\n const pts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i <= samples; i++) {\n const a = (Math.PI * 2 * i) / samples;\n pts.push({ x: cx + rx * Math.cos(a), y: cy + ry * Math.sin(a) });\n }\n return pts;\n}\n\n/**\n * Draw dashed polyline onto graphics.\n */\nfunction drawDashedPoly(g: Graphics, pts: Array<{ x: number; y: number }>, dash: number[], offset: number, color: string, width: number): void {\n if (pts.length < 2) return;\n const dists = [0];\n for (let i = 1; i < pts.length; i++) {\n dists.push(dists[i - 1] + Math.hypot(pts[i].x - pts[i - 1].x, pts[i].y - pts[i - 1].y));\n }\n const total = dists[dists.length - 1];\n if (total < 1) return;\n const patternLen = dash[0] + dash[1];\n let pos = -(((offset % patternLen) + patternLen) % patternLen);\n let drawing = true;\n\n const lerp = (d: number) => {\n if (d <= 0) return pts[0];\n if (d >= total) return pts[pts.length - 1];\n let lo = 0, hi = dists.length - 1;\n while (lo < hi - 1) { const m = (lo + hi) >> 1; if (dists[m] <= d) lo = m; else hi = m; }\n const t = dists[hi] - dists[lo] > 0 ? (d - dists[lo]) / (dists[hi] - dists[lo]) : 0;\n return { x: pts[lo].x + (pts[hi].x - pts[lo].x) * t, y: pts[lo].y + (pts[hi].y - pts[lo].y) * t };\n };\n\n while (pos < total) {\n const segLen = drawing ? dash[0] : dash[1];\n const start = Math.max(pos, 0);\n const end = Math.min(pos + segLen, total);\n if (drawing && end > start) {\n const p0 = lerp(start);\n g.moveTo(p0.x, p0.y);\n for (let d = start + 2; d < end; d += 2) {\n const p = lerp(d);\n g.lineTo(p.x, p.y);\n }\n const pe = lerp(end);\n g.lineTo(pe.x, pe.y);\n }\n pos += segLen;\n drawing = !drawing;\n }\n g.stroke({ color, width, cap: 'round' as const });\n}\n\nfunction fillShape(g: Graphics, o: ShapeDrawOptions) {\n if (o.fill && o.fill !== 'transparent') {\n g.fill({ color: o.fill });\n }\n if (o.borderStyle === 'none') return;\n if (o.stroke && o.stroke !== 'transparent' && o.strokeWidth > 0) {\n const dash = parseDash(o.borderStyle, o.strokeWidth);\n if (dash) {\n // Dashed/dotted/dynamic: don't stroke the shape path, we'll draw dashed separately\n } else {\n g.stroke({ color: o.stroke, width: o.strokeWidth });\n }\n }\n}\n\n/**\n * After fillShape, draw dashed border if needed.\n * Pass shape-specific outline points.\n */\nfunction drawDashedBorder(g: Graphics, o: ShapeDrawOptions, outlinePts: Array<{ x: number; y: number }>) {\n const dash = parseDash(o.borderStyle, o.strokeWidth);\n if (!dash || !o.stroke || o.stroke === 'transparent' || o.strokeWidth <= 0) return;\n const offset = o.borderStyle === 'dynamic' ? (o.dashOffset ?? 0) : 0;\n drawDashedPoly(g, outlinePts, dash, offset, o.stroke, o.strokeWidth);\n}\n\nfunction polyPoints(verts: Array<{ x: number; y: number }>): Array<{ x: number; y: number }> {\n return [...verts, verts[0]];\n}\n\nexport function drawRect(g: Graphics, o: ShapeDrawOptions): void {\n g.rect(0, 0, o.width, o.height);\n fillShape(g, o);\n drawDashedBorder(g, o, sampleRect(o.width, o.height));\n}\n\nexport function drawRoundRect(g: Graphics, o: ShapeDrawOptions): void {\n const r = Math.min(12, o.width * 0.1, o.height * 0.1);\n g.roundRect(0, 0, o.width, o.height, r);\n fillShape(g, o);\n drawDashedBorder(g, o, sampleRoundRect(o.width, o.height, r));\n}\n\nexport function drawEllipse(g: Graphics, o: ShapeDrawOptions): void {\n g.ellipse(o.width / 2, o.height / 2, o.width / 2, o.height / 2);\n fillShape(g, o);\n drawDashedBorder(g, o, sampleEllipse(o.width / 2, o.height / 2, o.width / 2, o.height / 2));\n}\n\nexport function drawDiamond(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const verts = [{ x: cx, y: 0 }, { x: o.width, y: cy }, { x: cx, y: o.height }, { x: 0, y: cy }];\n g.moveTo(cx, 0).lineTo(o.width, cy).lineTo(cx, o.height).lineTo(0, cy).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawDocument(g: Graphics, o: ShapeDrawOptions): void {\n const w = o.width, h = o.height, curve = h * 0.15;\n g.moveTo(0, 0)\n .lineTo(w, 0)\n .lineTo(w, h - curve)\n .bezierCurveTo(w * 0.75, h - curve * 2, w * 0.25, h, 0, h - curve)\n .closePath();\n fillShape(g, o);\n const pts: Array<{ x: number; y: number }> = [{ x: 0, y: 0 }, { x: w, y: 0 }, { x: w, y: h - curve }];\n const samples = 20;\n for (let i = 1; i <= samples; i++) {\n const t = i / samples;\n const u = 1 - t;\n pts.push({\n x: u * u * u * w + 3 * u * u * t * (w * 0.75) + 3 * u * t * t * (w * 0.25),\n y: u * u * u * (h - curve) + 3 * u * u * t * (h - curve * 2) + 3 * u * t * t * h + t * t * t * (h - curve),\n });\n }\n pts.push({ x: 0, y: 0 });\n drawDashedBorder(g, o, pts);\n}\n\nexport function drawParallelogram(g: Graphics, o: ShapeDrawOptions): void {\n const skew = o.width * 0.2;\n const verts = [{ x: skew, y: 0 }, { x: o.width, y: 0 }, { x: o.width - skew, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(skew, 0).lineTo(o.width, 0).lineTo(o.width - skew, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawTriangle(g: Graphics, o: ShapeDrawOptions): void {\n const verts = [{ x: o.width / 2, y: 0 }, { x: o.width, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(o.width / 2, 0).lineTo(o.width, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawTrapezoid(g: Graphics, o: ShapeDrawOptions): void {\n const inset = o.width * 0.15;\n const verts = [{ x: inset, y: 0 }, { x: o.width - inset, y: 0 }, { x: o.width, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(inset, 0).lineTo(o.width - inset, 0).lineTo(o.width, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nfunction regularPoly(cx: number, cy: number, sides: number, rx: number, ry: number, startAngle: number): Array<{ x: number; y: number }> {\n const verts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i < sides; i++) {\n const a = (Math.PI * 2 * i) / sides + startAngle;\n verts.push({ x: cx + rx * Math.cos(a), y: cy + ry * Math.sin(a) });\n }\n return verts;\n}\n\nexport function drawPentagon(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2, r = Math.min(cx, cy);\n const verts = regularPoly(cx, cy, 5, r, r, -Math.PI / 2);\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawHexagon(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const verts = regularPoly(cx, cy, 6, cx, cy, -Math.PI / 6);\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawStar(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const outer = Math.min(cx, cy), inner = outer * 0.4, points = 5;\n const verts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i < points * 2; i++) {\n const angle = (Math.PI * i) / points - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n verts.push({ x: cx + r * Math.cos(angle), y: cy + r * Math.sin(angle) });\n }\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawHexagram(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const outer = Math.min(cx, cy), inner = outer * 0.55;\n const verts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i < 12; i++) {\n const angle = (Math.PI * i) / 6 - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n verts.push({ x: cx + r * Math.cos(angle), y: cy + r * Math.sin(angle) });\n }\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawRightTriangle(g: Graphics, o: ShapeDrawOptions): void {\n const verts = [{ x: 0, y: 0 }, { x: o.width, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(0, 0).lineTo(o.width, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawCorner(g: Graphics, o: ShapeDrawOptions): void {\n const half = Math.min(o.width, o.height) * 0.4;\n const verts = [\n { x: 0, y: 0 }, { x: o.width, y: 0 }, { x: o.width, y: half },\n { x: half, y: half }, { x: half, y: o.height }, { x: 0, y: o.height },\n ];\n g.moveTo(0, 0).lineTo(o.width, 0).lineTo(o.width, half)\n .lineTo(half, half).lineTo(half, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawFlowGroup(g: Graphics, o: ShapeDrawOptions): void {\n const r = Math.min(6, o.width * 0.04, o.height * 0.04);\n g.roundRect(0, 0, o.width, o.height, r);\n if (o.fill && o.fill !== 'transparent') {\n g.fill({ color: o.fill, alpha: 0.08 });\n }\n const border = o.borderStyle ?? 'dashed';\n if (border !== 'none' && o.stroke && o.stroke !== 'transparent' && o.strokeWidth > 0) {\n const dash = parseDash(border, o.strokeWidth);\n if (dash) {\n const offset = border === 'dynamic' ? (o.dashOffset ?? 0) : 0;\n drawDashedPoly(g, sampleRoundRect(o.width, o.height, r), dash, offset, o.stroke, o.strokeWidth);\n } else {\n g.stroke({ color: o.stroke, width: o.strokeWidth });\n }\n }\n}\n\nexport const drawGeometryGroup = drawFlowGroup;\n\n/** Lookup table mapping shape type to draw function */\nexport const shapeDrawers: Record<string, (g: Graphics, o: ShapeDrawOptions) => void> = {\n shapeRect: drawRect,\n shapeRoundRect: drawRoundRect,\n shapeEllipse: drawEllipse,\n shapeDiamond: drawDiamond,\n shapeDocument: drawDocument,\n shapeParallelogram: drawParallelogram,\n shapeTriangle: drawTriangle,\n shapeTrapezoid: drawTrapezoid,\n shapePentagon: drawPentagon,\n shapeHexagon: drawHexagon,\n shapeStar: drawStar,\n shapeHexagram: drawHexagram,\n shapeRightTriangle: drawRightTriangle,\n shapeCorner: drawCorner,\n textLabel: drawRect,\n flowGroup: drawFlowGroup,\n geometryGroup: drawGeometryGroup,\n shapeSvg: drawRoundRect,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"shapes.js","names":[],"sources":["../../../../../src/components/pro/Flow/nodes/shapes.ts"],"sourcesContent":["import { Graphics } from 'pixi.js';\nimport type { FlowShapeType, FlowNodeData } from '../types';\n\nexport interface ShapeDrawOptions {\n width: number;\n height: number;\n fill: string;\n stroke: string;\n strokeWidth: number;\n borderStyle?: 'solid' | 'dashed' | 'dotted' | 'dynamic' | 'none';\n dashOffset?: number;\n}\n\nfunction parseDash(style: string | undefined, strokeWidth: number): number[] | undefined {\n if (!style || style === 'solid') return undefined;\n if (style === 'dynamic') return [strokeWidth * 4, strokeWidth * 3];\n if (style === 'dashed') return [strokeWidth * 4, strokeWidth * 2];\n if (style === 'dotted') return [strokeWidth, strokeWidth * 2];\n return undefined;\n}\n\n/**\n * Sample a rectangle's outline as points for dashed border.\n */\nfunction sampleRect(w: number, h: number, step = 3): Array<{ x: number; y: number }> {\n const pts: Array<{ x: number; y: number }> = [];\n for (let x = 0; x <= w; x += step) pts.push({ x, y: 0 });\n for (let y = step; y <= h; y += step) pts.push({ x: w, y });\n for (let x = w - step; x >= 0; x -= step) pts.push({ x, y: h });\n for (let y = h - step; y > 0; y -= step) pts.push({ x: 0, y });\n pts.push({ x: 0, y: 0 });\n return pts;\n}\n\n/**\n * Sample a rounded rectangle outline as points.\n */\nfunction sampleRoundRect(w: number, h: number, r: number, step = 3): Array<{ x: number; y: number }> {\n const pts: Array<{ x: number; y: number }> = [];\n const cornerSamples = Math.max(4, Math.ceil((Math.PI / 2) * r / step));\n const addCorner = (cx: number, cy: number, startAngle: number) => {\n for (let i = 0; i <= cornerSamples; i++) {\n const a = startAngle + (Math.PI / 2) * (i / cornerSamples);\n pts.push({ x: cx + r * Math.cos(a), y: cy + r * Math.sin(a) });\n }\n };\n addCorner(w - r, r, -Math.PI / 2);\n addCorner(w - r, h - r, 0);\n addCorner(r, h - r, Math.PI / 2);\n addCorner(r, r, Math.PI);\n if (pts.length > 0) pts.push(pts[0]);\n return pts;\n}\n\n/**\n * Sample an ellipse outline.\n */\nfunction sampleEllipse(cx: number, cy: number, rx: number, ry: number, samples = 60): Array<{ x: number; y: number }> {\n const pts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i <= samples; i++) {\n const a = (Math.PI * 2 * i) / samples;\n pts.push({ x: cx + rx * Math.cos(a), y: cy + ry * Math.sin(a) });\n }\n return pts;\n}\n\n/**\n * Draw dashed polyline onto graphics.\n */\nfunction drawDashedPoly(g: Graphics, pts: Array<{ x: number; y: number }>, dash: number[], offset: number, color: string, width: number): void {\n if (pts.length < 2) return;\n const dists = [0];\n for (let i = 1; i < pts.length; i++) {\n dists.push(dists[i - 1] + Math.hypot(pts[i].x - pts[i - 1].x, pts[i].y - pts[i - 1].y));\n }\n const total = dists[dists.length - 1];\n if (total < 1) return;\n const patternLen = dash[0] + dash[1];\n let pos = -(((offset % patternLen) + patternLen) % patternLen);\n let drawing = true;\n\n const lerp = (d: number) => {\n if (d <= 0) return pts[0];\n if (d >= total) return pts[pts.length - 1];\n let lo = 0, hi = dists.length - 1;\n while (lo < hi - 1) { const m = (lo + hi) >> 1; if (dists[m] <= d) lo = m; else hi = m; }\n const t = dists[hi] - dists[lo] > 0 ? (d - dists[lo]) / (dists[hi] - dists[lo]) : 0;\n return { x: pts[lo].x + (pts[hi].x - pts[lo].x) * t, y: pts[lo].y + (pts[hi].y - pts[lo].y) * t };\n };\n\n while (pos < total) {\n const segLen = drawing ? dash[0] : dash[1];\n const start = Math.max(pos, 0);\n const end = Math.min(pos + segLen, total);\n if (drawing && end > start) {\n const p0 = lerp(start);\n g.moveTo(p0.x, p0.y);\n for (let d = start + 2; d < end; d += 2) {\n const p = lerp(d);\n g.lineTo(p.x, p.y);\n }\n const pe = lerp(end);\n g.lineTo(pe.x, pe.y);\n }\n pos += segLen;\n drawing = !drawing;\n }\n g.stroke({ color, width, cap: 'round' as const });\n}\n\nfunction fillShape(g: Graphics, o: ShapeDrawOptions) {\n if (o.fill && o.fill !== 'transparent') {\n g.fill({ color: o.fill });\n }\n if (o.borderStyle === 'none') return;\n if (o.stroke && o.stroke !== 'transparent' && o.strokeWidth > 0) {\n const dash = parseDash(o.borderStyle, o.strokeWidth);\n if (dash) {\n // Dashed/dotted/dynamic: don't stroke the shape path, we'll draw dashed separately\n } else {\n g.stroke({ color: o.stroke, width: o.strokeWidth });\n }\n }\n}\n\n/**\n * After fillShape, draw dashed border if needed.\n * Pass shape-specific outline points.\n */\nfunction drawDashedBorder(g: Graphics, o: ShapeDrawOptions, outlinePts: Array<{ x: number; y: number }>) {\n const dash = parseDash(o.borderStyle, o.strokeWidth);\n if (!dash || !o.stroke || o.stroke === 'transparent' || o.strokeWidth <= 0) return;\n const offset = o.borderStyle === 'dynamic' ? (o.dashOffset ?? 0) : 0;\n drawDashedPoly(g, outlinePts, dash, offset, o.stroke, o.strokeWidth);\n}\n\n/** Draw only a rounded-rectangle border, without leaving a base path that can\n * be picked up by the dashed stroke. Useful when fill and border are rendered\n * independently, as they are for SVG icon nodes. */\nexport function drawRoundRectBorder(g: Graphics, o: ShapeDrawOptions, radius?: number): void {\n if (o.borderStyle === 'none' || !o.stroke || o.stroke === 'transparent' || o.strokeWidth <= 0) return;\n const r = radius ?? Math.min(12, o.width * 0.1, o.height * 0.1);\n const dash = parseDash(o.borderStyle, o.strokeWidth);\n if (dash) {\n const offset = o.borderStyle === 'dynamic' ? (o.dashOffset ?? 0) : 0;\n drawDashedPoly(g, sampleRoundRect(o.width, o.height, r), dash, offset, o.stroke, o.strokeWidth);\n } else {\n g.roundRect(0, 0, o.width, o.height, r).stroke({ color: o.stroke, width: o.strokeWidth });\n }\n}\n\nfunction polyPoints(verts: Array<{ x: number; y: number }>): Array<{ x: number; y: number }> {\n return [...verts, verts[0]];\n}\n\nexport function drawRect(g: Graphics, o: ShapeDrawOptions): void {\n g.rect(0, 0, o.width, o.height);\n fillShape(g, o);\n drawDashedBorder(g, o, sampleRect(o.width, o.height));\n}\n\nexport function drawRoundRect(g: Graphics, o: ShapeDrawOptions): void {\n const r = Math.min(12, o.width * 0.1, o.height * 0.1);\n g.roundRect(0, 0, o.width, o.height, r);\n fillShape(g, o);\n drawDashedBorder(g, o, sampleRoundRect(o.width, o.height, r));\n}\n\nexport function drawEllipse(g: Graphics, o: ShapeDrawOptions): void {\n g.ellipse(o.width / 2, o.height / 2, o.width / 2, o.height / 2);\n fillShape(g, o);\n drawDashedBorder(g, o, sampleEllipse(o.width / 2, o.height / 2, o.width / 2, o.height / 2));\n}\n\nexport function drawDiamond(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const verts = [{ x: cx, y: 0 }, { x: o.width, y: cy }, { x: cx, y: o.height }, { x: 0, y: cy }];\n g.moveTo(cx, 0).lineTo(o.width, cy).lineTo(cx, o.height).lineTo(0, cy).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawDocument(g: Graphics, o: ShapeDrawOptions): void {\n const w = o.width, h = o.height, curve = h * 0.15;\n g.moveTo(0, 0)\n .lineTo(w, 0)\n .lineTo(w, h - curve)\n .bezierCurveTo(w * 0.75, h - curve * 2, w * 0.25, h, 0, h - curve)\n .closePath();\n fillShape(g, o);\n const pts: Array<{ x: number; y: number }> = [{ x: 0, y: 0 }, { x: w, y: 0 }, { x: w, y: h - curve }];\n const samples = 20;\n for (let i = 1; i <= samples; i++) {\n const t = i / samples;\n const u = 1 - t;\n pts.push({\n x: u * u * u * w + 3 * u * u * t * (w * 0.75) + 3 * u * t * t * (w * 0.25),\n y: u * u * u * (h - curve) + 3 * u * u * t * (h - curve * 2) + 3 * u * t * t * h + t * t * t * (h - curve),\n });\n }\n pts.push({ x: 0, y: 0 });\n drawDashedBorder(g, o, pts);\n}\n\nexport function drawParallelogram(g: Graphics, o: ShapeDrawOptions): void {\n const skew = o.width * 0.2;\n const verts = [{ x: skew, y: 0 }, { x: o.width, y: 0 }, { x: o.width - skew, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(skew, 0).lineTo(o.width, 0).lineTo(o.width - skew, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawTriangle(g: Graphics, o: ShapeDrawOptions): void {\n const verts = [{ x: o.width / 2, y: 0 }, { x: o.width, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(o.width / 2, 0).lineTo(o.width, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawTrapezoid(g: Graphics, o: ShapeDrawOptions): void {\n const inset = o.width * 0.15;\n const verts = [{ x: inset, y: 0 }, { x: o.width - inset, y: 0 }, { x: o.width, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(inset, 0).lineTo(o.width - inset, 0).lineTo(o.width, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nfunction regularPoly(cx: number, cy: number, sides: number, rx: number, ry: number, startAngle: number): Array<{ x: number; y: number }> {\n const verts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i < sides; i++) {\n const a = (Math.PI * 2 * i) / sides + startAngle;\n verts.push({ x: cx + rx * Math.cos(a), y: cy + ry * Math.sin(a) });\n }\n return verts;\n}\n\nexport function drawPentagon(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2, r = Math.min(cx, cy);\n const verts = regularPoly(cx, cy, 5, r, r, -Math.PI / 2);\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawHexagon(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const verts = regularPoly(cx, cy, 6, cx, cy, -Math.PI / 6);\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawStar(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const outer = Math.min(cx, cy), inner = outer * 0.4, points = 5;\n const verts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i < points * 2; i++) {\n const angle = (Math.PI * i) / points - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n verts.push({ x: cx + r * Math.cos(angle), y: cy + r * Math.sin(angle) });\n }\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawHexagram(g: Graphics, o: ShapeDrawOptions): void {\n const cx = o.width / 2, cy = o.height / 2;\n const outer = Math.min(cx, cy), inner = outer * 0.55;\n const verts: Array<{ x: number; y: number }> = [];\n for (let i = 0; i < 12; i++) {\n const angle = (Math.PI * i) / 6 - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n verts.push({ x: cx + r * Math.cos(angle), y: cy + r * Math.sin(angle) });\n }\n for (let i = 0; i < verts.length; i++) {\n if (i === 0) g.moveTo(verts[i].x, verts[i].y); else g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawRightTriangle(g: Graphics, o: ShapeDrawOptions): void {\n const verts = [{ x: 0, y: 0 }, { x: o.width, y: o.height }, { x: 0, y: o.height }];\n g.moveTo(0, 0).lineTo(o.width, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawCorner(g: Graphics, o: ShapeDrawOptions): void {\n const half = Math.min(o.width, o.height) * 0.4;\n const verts = [\n { x: 0, y: 0 }, { x: o.width, y: 0 }, { x: o.width, y: half },\n { x: half, y: half }, { x: half, y: o.height }, { x: 0, y: o.height },\n ];\n g.moveTo(0, 0).lineTo(o.width, 0).lineTo(o.width, half)\n .lineTo(half, half).lineTo(half, o.height).lineTo(0, o.height).closePath();\n fillShape(g, o);\n drawDashedBorder(g, o, polyPoints(verts));\n}\n\nexport function drawFlowGroup(g: Graphics, o: ShapeDrawOptions): void {\n const r = Math.min(6, o.width * 0.04, o.height * 0.04);\n g.roundRect(0, 0, o.width, o.height, r);\n if (o.fill && o.fill !== 'transparent') {\n g.fill({ color: o.fill, alpha: 0.08 });\n }\n const border = o.borderStyle ?? 'dashed';\n if (border !== 'none' && o.stroke && o.stroke !== 'transparent' && o.strokeWidth > 0) {\n const dash = parseDash(border, o.strokeWidth);\n if (dash) {\n const offset = border === 'dynamic' ? (o.dashOffset ?? 0) : 0;\n drawDashedPoly(g, sampleRoundRect(o.width, o.height, r), dash, offset, o.stroke, o.strokeWidth);\n } else {\n g.stroke({ color: o.stroke, width: o.strokeWidth });\n }\n }\n}\n\nexport const drawGeometryGroup = drawFlowGroup;\n\n/** Lookup table mapping shape type to draw function */\nexport const shapeDrawers: Record<string, (g: Graphics, o: ShapeDrawOptions) => void> = {\n shapeRect: drawRect,\n shapeRoundRect: drawRoundRect,\n shapeEllipse: drawEllipse,\n shapeDiamond: drawDiamond,\n shapeDocument: drawDocument,\n shapeParallelogram: drawParallelogram,\n shapeTriangle: drawTriangle,\n shapeTrapezoid: drawTrapezoid,\n shapePentagon: drawPentagon,\n shapeHexagon: drawHexagon,\n shapeStar: drawStar,\n shapeHexagram: drawHexagram,\n shapeRightTriangle: drawRightTriangle,\n shapeCorner: drawCorner,\n textLabel: drawRect,\n flowGroup: drawFlowGroup,\n geometryGroup: drawGeometryGroup,\n shapeSvg: drawRoundRect,\n};\n"],"mappings":"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"}