dishui 0.0.47 → 0.0.49
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/components/pro/CodeEditor/editors/MarkdownEditor.js +1 -2
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/themes.js +0 -25
- package/dist/components/pro/CodeEditor/themes.js.map +1 -1
- package/dist/components/pro/CodeEditor/types.d.ts +1 -1
- package/dist/components/pro/Flow/Flow.js +500 -483
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js +526 -524
- package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
- package/dist/components/pro/Flow/canvas/GridRenderer.d.ts +3 -0
- package/dist/components/pro/Flow/canvas/GridRenderer.js +28 -23
- package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +18 -17
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/PixiApp.d.ts +2 -0
- package/dist/components/pro/Flow/canvas/PixiApp.js +14 -11
- package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
- package/dist/components/pro/Flow/constants.js +7 -7
- package/dist/components/pro/Flow/constants.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowAIContext.d.ts +15 -0
- package/dist/components/pro/Flow/context/FlowAIContext.js +32 -0
- package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -0
- package/dist/components/pro/Flow/context/FlowUIContext.d.ts +4 -1
- package/dist/components/pro/Flow/context/FlowUIContext.js +58 -55
- package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
- package/dist/components/pro/Flow/edges/EdgeRenderer.js +22 -21
- package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js +32 -32
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePixiApp.d.ts +6 -1
- package/dist/components/pro/Flow/hooks/usePixiApp.js +49 -30
- package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
- package/dist/components/pro/Flow/index.d.ts +2 -0
- package/dist/components/pro/Flow/lines/FreehandTool.js +21 -20
- package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/GeometricLineTool.js +22 -18
- package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/LineRenderer.js +19 -18
- package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js +143 -124
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js +22 -17
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeRenderer.js +77 -76
- package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/aiClient.d.ts +22 -0
- package/dist/components/pro/Flow/nodes/aiClient.js +107 -54
- package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIcons.js +6 -6
- package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
- package/dist/components/pro/Flow/panels/AIPanel.d.ts +2 -0
- package/dist/components/pro/Flow/panels/AIPanel.js +498 -0
- package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -0
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js +51 -39
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowToolbar.js +91 -85
- package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
- package/dist/components/pro/Flow/panels/InspectorPanel.js +372 -332
- package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/OutlinePanel.js +28 -27
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/ShapePalette.js +107 -104
- package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +1 -0
- package/dist/components/pro/Flow/panels/toolbarIcons.js +25 -20
- package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
- package/dist/components/pro/Flow/types.d.ts +13 -0
- package/dist/components/pro/Flow/types.js.map +1 -1
- package/dist/components/pro/Flow/utils/themeColor.d.ts +87 -0
- package/dist/components/pro/Flow/utils/themeColor.js +212 -0
- package/dist/components/pro/Flow/utils/themeColor.js.map +1 -0
- package/dist/contexts/AppContext.d.ts +1 -1
- package/dist/contexts/AppContext.js +28 -29
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/favicon.svg +10 -0
- package/dist/flow.js +56 -51
- package/dist/styles/themeStyles.js +6 -11
- package/dist/styles/themeStyles.js.map +1 -1
- package/dist/utils/themes.js +3 -23
- package/dist/utils/themes.js.map +1 -1
- package/package.json +17 -18
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { PALETTE_ITEMS as
|
|
1
|
+
import { PALETTE_ITEMS as $ } from "../constants.js";
|
|
2
2
|
import { useFlowUI as y } from "../context/FlowUIContext.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
3
|
+
import { resolveThemeColor as b } from "../utils/themeColor.js";
|
|
4
|
+
import { SVG_ICON_CATEGORIES as v, buildSvgMarkup as M, getSvgIcon as x, getSvgIconsByCategory as S } from "../nodes/svgIcons.js";
|
|
5
|
+
import { useDraggablePanel as C } from "../hooks/useDraggablePanel.js";
|
|
6
|
+
import { useResizablePanel as P } from "../hooks/useResizablePanel.js";
|
|
7
|
+
import { makeStarterDataConfig as W } from "../nodes/dataUtils.js";
|
|
8
|
+
import { useCallback as u, useState as I } from "react";
|
|
9
|
+
import { Fragment as g, jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
10
|
+
var T = [
|
|
10
11
|
{
|
|
11
12
|
mode: "freehand",
|
|
12
13
|
label: "Freehand"
|
|
@@ -24,13 +25,13 @@ var C = [
|
|
|
24
25
|
label: "Arrow"
|
|
25
26
|
}
|
|
26
27
|
];
|
|
27
|
-
function
|
|
28
|
-
const { showPalette: l } = y(), { panelStyle:
|
|
29
|
-
return l ? /* @__PURE__ */
|
|
28
|
+
function V() {
|
|
29
|
+
const { showPalette: l } = y(), { panelStyle: r, handleProps: a } = C(), { panelWidth: t, resizeHandleProps: o } = P("right", 180);
|
|
30
|
+
return l ? /* @__PURE__ */ c("div", {
|
|
30
31
|
className: "flow-palette",
|
|
31
32
|
"data-flow-panel": !0,
|
|
32
33
|
style: {
|
|
33
|
-
...
|
|
34
|
+
...r,
|
|
34
35
|
width: t
|
|
35
36
|
},
|
|
36
37
|
children: [
|
|
@@ -40,7 +41,7 @@ function O() {
|
|
|
40
41
|
}),
|
|
41
42
|
/* @__PURE__ */ e("div", {
|
|
42
43
|
className: "flow-panel-drag-handle",
|
|
43
|
-
...
|
|
44
|
+
...a,
|
|
44
45
|
style: {
|
|
45
46
|
fontSize: 11,
|
|
46
47
|
fontWeight: 600,
|
|
@@ -54,45 +55,45 @@ function O() {
|
|
|
54
55
|
}),
|
|
55
56
|
/* @__PURE__ */ e("div", {
|
|
56
57
|
className: "flow-palette-content",
|
|
57
|
-
children: /* @__PURE__ */ e(
|
|
58
|
+
children: /* @__PURE__ */ e(N, {})
|
|
58
59
|
})
|
|
59
60
|
]
|
|
60
61
|
}) : null;
|
|
61
62
|
}
|
|
62
|
-
function
|
|
63
|
-
const { toolMode: l, setToolMode:
|
|
64
|
-
t?.type === n ?
|
|
63
|
+
function N() {
|
|
64
|
+
const { toolMode: l, setToolMode: r, setPendingPlacement: a, pendingPlacement: t } = y(), o = u((n, s, p, h) => {
|
|
65
|
+
t?.type === n ? a(null) : (a({
|
|
65
66
|
type: n,
|
|
66
|
-
width:
|
|
67
|
+
width: s,
|
|
67
68
|
height: p,
|
|
68
|
-
data: { ...
|
|
69
|
-
}),
|
|
69
|
+
data: { ...h }
|
|
70
|
+
}), r("select"));
|
|
70
71
|
}, [
|
|
71
|
-
i,
|
|
72
72
|
a,
|
|
73
|
+
r,
|
|
73
74
|
t
|
|
74
75
|
]);
|
|
75
|
-
return /* @__PURE__ */
|
|
76
|
+
return /* @__PURE__ */ c(g, { children: [
|
|
76
77
|
/* @__PURE__ */ e("div", {
|
|
77
78
|
className: "flow-palette-grid",
|
|
78
|
-
children:
|
|
79
|
+
children: $.map((n) => /* @__PURE__ */ c("div", {
|
|
79
80
|
className: `flow-palette-item${t?.type === n.type ? " flow-palette-item--active" : ""}`,
|
|
80
81
|
onClick: () => o(n.type, n.width, n.height, n.data),
|
|
81
|
-
children: [/* @__PURE__ */ e(
|
|
82
|
+
children: [/* @__PURE__ */ e(D, { type: n.type }), /* @__PURE__ */ e("span", {
|
|
82
83
|
className: "flow-palette-item-label",
|
|
83
84
|
children: n.data.label
|
|
84
85
|
})]
|
|
85
86
|
}, n.type))
|
|
86
87
|
}),
|
|
87
|
-
/* @__PURE__ */ e(
|
|
88
|
+
/* @__PURE__ */ e(z, { children: "Lines" }),
|
|
88
89
|
/* @__PURE__ */ e("div", {
|
|
89
90
|
className: "flow-palette-grid",
|
|
90
|
-
children:
|
|
91
|
+
children: T.map((n) => /* @__PURE__ */ c("div", {
|
|
91
92
|
className: `flow-palette-item${l === n.mode ? " flow-palette-item--active" : ""}`,
|
|
92
93
|
onClick: () => {
|
|
93
|
-
|
|
94
|
+
a(null), r(l === n.mode ? "select" : n.mode);
|
|
94
95
|
},
|
|
95
|
-
children: [/* @__PURE__ */ e(
|
|
96
|
+
children: [/* @__PURE__ */ e(E, { mode: n.mode }), /* @__PURE__ */ e("span", {
|
|
96
97
|
className: "flow-palette-item-label",
|
|
97
98
|
children: n.label
|
|
98
99
|
})]
|
|
@@ -100,76 +101,78 @@ function I() {
|
|
|
100
101
|
})
|
|
101
102
|
] });
|
|
102
103
|
}
|
|
103
|
-
function
|
|
104
|
-
const { setPendingPlacement: l, setToolMode:
|
|
105
|
-
const
|
|
106
|
-
if (
|
|
104
|
+
function Z() {
|
|
105
|
+
const { setPendingPlacement: l, setToolMode: r, pendingPlacement: a } = y(), [t, o] = I({ lang: !0 }), n = u((s, p) => {
|
|
106
|
+
const h = a?.data.svgId;
|
|
107
|
+
if (a?.type === "shapeSvg" && h === s) {
|
|
107
108
|
l(null);
|
|
108
109
|
return;
|
|
109
110
|
}
|
|
111
|
+
const i = {
|
|
112
|
+
label: p,
|
|
113
|
+
fill: "transparent",
|
|
114
|
+
stroke: "theme:base-content",
|
|
115
|
+
strokeWidth: 1.5,
|
|
116
|
+
color: x(s)?.brandColor ?? "theme:base-content",
|
|
117
|
+
labelColor: "theme:base-content",
|
|
118
|
+
fontSize: 12,
|
|
119
|
+
svgId: s,
|
|
120
|
+
iconBox: !1,
|
|
121
|
+
labelPlacement: "bottom",
|
|
122
|
+
borderStyle: "none"
|
|
123
|
+
};
|
|
110
124
|
l({
|
|
111
125
|
type: "shapeSvg",
|
|
112
126
|
width: 56,
|
|
113
127
|
height: 56,
|
|
114
|
-
data:
|
|
115
|
-
|
|
116
|
-
fill: "transparent",
|
|
117
|
-
stroke: "#64748b",
|
|
118
|
-
strokeWidth: 1.5,
|
|
119
|
-
color: "#334155",
|
|
120
|
-
fontSize: 12,
|
|
121
|
-
svgId: h,
|
|
122
|
-
iconBox: !1,
|
|
123
|
-
labelPlacement: "bottom",
|
|
124
|
-
borderStyle: "none"
|
|
125
|
-
}
|
|
126
|
-
}), a("select");
|
|
128
|
+
data: i
|
|
129
|
+
}), r("select");
|
|
127
130
|
}, [
|
|
128
|
-
|
|
131
|
+
a,
|
|
129
132
|
l,
|
|
130
|
-
|
|
133
|
+
r
|
|
131
134
|
]);
|
|
132
|
-
return /* @__PURE__ */ e(g, { children:
|
|
133
|
-
const p =
|
|
134
|
-
return /* @__PURE__ */
|
|
135
|
+
return /* @__PURE__ */ e(g, { children: v.map((s) => {
|
|
136
|
+
const p = S(s.id), h = t[s.id];
|
|
137
|
+
return /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ c("button", {
|
|
135
138
|
type: "button",
|
|
136
139
|
className: "flow-palette-section-toggle",
|
|
137
|
-
onClick: () => o((
|
|
138
|
-
...
|
|
139
|
-
[
|
|
140
|
+
onClick: () => o((i) => ({
|
|
141
|
+
...i,
|
|
142
|
+
[s.id]: !i[s.id]
|
|
140
143
|
})),
|
|
141
144
|
children: [/* @__PURE__ */ e("span", {
|
|
142
145
|
style: {
|
|
143
|
-
transform:
|
|
146
|
+
transform: h ? "rotate(90deg)" : "none",
|
|
144
147
|
transition: "transform .15s"
|
|
145
148
|
},
|
|
146
149
|
children: "▸"
|
|
147
|
-
}),
|
|
148
|
-
}),
|
|
150
|
+
}), s.label]
|
|
151
|
+
}), h && /* @__PURE__ */ e("div", {
|
|
149
152
|
className: "flow-palette-grid",
|
|
150
|
-
children: p.map((
|
|
151
|
-
className: `flow-palette-item${
|
|
152
|
-
onClick: () => n(
|
|
153
|
-
title:
|
|
154
|
-
children: [/* @__PURE__ */ e(
|
|
153
|
+
children: p.map((i) => /* @__PURE__ */ c("div", {
|
|
154
|
+
className: `flow-palette-item${a?.type === "shapeSvg" && a.data.svgId === i.id ? " flow-palette-item--active" : ""}`,
|
|
155
|
+
onClick: () => n(i.id, i.label),
|
|
156
|
+
title: i.label,
|
|
157
|
+
children: [/* @__PURE__ */ e(A, { id: i.id }), /* @__PURE__ */ e("span", {
|
|
155
158
|
className: "flow-palette-item-label",
|
|
156
|
-
children:
|
|
159
|
+
children: i.label
|
|
157
160
|
})]
|
|
158
|
-
},
|
|
159
|
-
})] },
|
|
161
|
+
}, i.id))
|
|
162
|
+
})] }, s.id);
|
|
160
163
|
}) });
|
|
161
164
|
}
|
|
162
|
-
function
|
|
163
|
-
const
|
|
164
|
-
return
|
|
165
|
-
src: `data:image/svg+xml;utf8,${encodeURIComponent(
|
|
165
|
+
function A({ id: l }) {
|
|
166
|
+
const r = M(l, b(x(l)?.brandColor, "") || "#475569");
|
|
167
|
+
return r ? /* @__PURE__ */ e("img", {
|
|
168
|
+
src: `data:image/svg+xml;utf8,${encodeURIComponent(r)}`,
|
|
166
169
|
width: 20,
|
|
167
170
|
height: 16,
|
|
168
171
|
alt: "",
|
|
169
172
|
style: { objectFit: "contain" }
|
|
170
173
|
}) : null;
|
|
171
174
|
}
|
|
172
|
-
var
|
|
175
|
+
var L = [
|
|
173
176
|
{
|
|
174
177
|
kind: "markdown",
|
|
175
178
|
label: "Markdown",
|
|
@@ -264,18 +267,18 @@ function m({ text: l }) {
|
|
|
264
267
|
children: l
|
|
265
268
|
});
|
|
266
269
|
}
|
|
267
|
-
function
|
|
268
|
-
const { setPendingPlacement: l, setToolMode:
|
|
269
|
-
if (
|
|
270
|
+
function q() {
|
|
271
|
+
const { setPendingPlacement: l, setToolMode: r, pendingPlacement: a } = y(), t = u((o) => {
|
|
272
|
+
if (a?.type === "mediaNode" && a.data.mediaKind === o.kind) {
|
|
270
273
|
l(null);
|
|
271
274
|
return;
|
|
272
275
|
}
|
|
273
276
|
const n = {
|
|
274
277
|
label: o.label,
|
|
275
|
-
fill: "
|
|
276
|
-
stroke: "
|
|
278
|
+
fill: "theme:base-100",
|
|
279
|
+
stroke: "theme:base-content",
|
|
277
280
|
strokeWidth: 1.5,
|
|
278
|
-
color: "
|
|
281
|
+
color: "theme:base-content",
|
|
279
282
|
fontSize: 13,
|
|
280
283
|
borderStyle: "solid",
|
|
281
284
|
mediaKind: o.kind,
|
|
@@ -284,23 +287,23 @@ function U() {
|
|
|
284
287
|
gateway: "",
|
|
285
288
|
protocol: "openai",
|
|
286
289
|
model: ""
|
|
287
|
-
} } : o.kind === "model3d" ? { modelFormat: "stl" } : o.kind === "data" ? { dataConfig:
|
|
290
|
+
} } : o.kind === "model3d" ? { modelFormat: "stl" } : o.kind === "data" ? { dataConfig: W() } : {}
|
|
288
291
|
};
|
|
289
292
|
l({
|
|
290
293
|
type: "mediaNode",
|
|
291
294
|
width: o.width,
|
|
292
295
|
height: o.height,
|
|
293
296
|
data: n
|
|
294
|
-
}),
|
|
297
|
+
}), r("select");
|
|
295
298
|
}, [
|
|
296
|
-
|
|
299
|
+
a,
|
|
297
300
|
l,
|
|
298
|
-
|
|
301
|
+
r
|
|
299
302
|
]);
|
|
300
303
|
return /* @__PURE__ */ e("div", {
|
|
301
304
|
className: "flow-palette-grid",
|
|
302
|
-
children:
|
|
303
|
-
className: `flow-palette-item${
|
|
305
|
+
children: L.map((o) => /* @__PURE__ */ c("div", {
|
|
306
|
+
className: `flow-palette-item${a?.type === "mediaNode" && a.data.mediaKind === o.kind ? " flow-palette-item--active" : ""}`,
|
|
304
307
|
onClick: () => t(o),
|
|
305
308
|
title: o.label,
|
|
306
309
|
children: [o.icon, /* @__PURE__ */ e("span", {
|
|
@@ -310,7 +313,7 @@ function U() {
|
|
|
310
313
|
}, o.kind))
|
|
311
314
|
});
|
|
312
315
|
}
|
|
313
|
-
function
|
|
316
|
+
function z({ children: l }) {
|
|
314
317
|
return /* @__PURE__ */ e("div", {
|
|
315
318
|
style: {
|
|
316
319
|
fontSize: 11,
|
|
@@ -323,7 +326,7 @@ function A({ children: l }) {
|
|
|
323
326
|
children: l
|
|
324
327
|
});
|
|
325
328
|
}
|
|
326
|
-
function
|
|
329
|
+
function D({ type: l }) {
|
|
327
330
|
const t = "currentColor", n = {
|
|
328
331
|
shapeRect: /* @__PURE__ */ e("rect", {
|
|
329
332
|
x: "3",
|
|
@@ -385,11 +388,11 @@ function L({ type: l }) {
|
|
|
385
388
|
strokeWidth: 1.5
|
|
386
389
|
}),
|
|
387
390
|
shapePentagon: (() => {
|
|
388
|
-
const
|
|
391
|
+
const h = Math.min(18, 14) - 4;
|
|
389
392
|
return /* @__PURE__ */ e("polygon", {
|
|
390
|
-
points: Array.from({ length: 5 }, (
|
|
391
|
-
const
|
|
392
|
-
return `${18 +
|
|
393
|
+
points: Array.from({ length: 5 }, (i, k) => {
|
|
394
|
+
const d = Math.PI * 2 * k / 5 - Math.PI / 2;
|
|
395
|
+
return `${18 + h * Math.cos(d)},${14 + h * Math.sin(d)}`;
|
|
393
396
|
}).join(" "),
|
|
394
397
|
fill: "none",
|
|
395
398
|
stroke: t,
|
|
@@ -397,8 +400,8 @@ function L({ type: l }) {
|
|
|
397
400
|
});
|
|
398
401
|
})(),
|
|
399
402
|
shapeHexagon: /* @__PURE__ */ e("polygon", {
|
|
400
|
-
points: Array.from({ length: 6 }, (k,
|
|
401
|
-
const w = Math.PI * 2 *
|
|
403
|
+
points: Array.from({ length: 6 }, (k, d) => {
|
|
404
|
+
const w = Math.PI * 2 * d / 6 - Math.PI / 6;
|
|
402
405
|
return `${18 + 14 * Math.cos(w)},${14 + 10 * Math.sin(w)}`;
|
|
403
406
|
}).join(" "),
|
|
404
407
|
fill: "none",
|
|
@@ -406,10 +409,10 @@ function L({ type: l }) {
|
|
|
406
409
|
strokeWidth: 1.5
|
|
407
410
|
}),
|
|
408
411
|
shapeStar: (() => {
|
|
409
|
-
const
|
|
412
|
+
const h = Math.min(18, 14) - 3, i = h * 0.4;
|
|
410
413
|
return /* @__PURE__ */ e("polygon", {
|
|
411
|
-
points: Array.from({ length: 10 }, (k,
|
|
412
|
-
const w = Math.PI *
|
|
414
|
+
points: Array.from({ length: 10 }, (k, d) => {
|
|
415
|
+
const w = Math.PI * d / 5 - Math.PI / 2, f = d % 2 === 0 ? h : i;
|
|
413
416
|
return `${18 + f * Math.cos(w)},${14 + f * Math.sin(w)}`;
|
|
414
417
|
}).join(" "),
|
|
415
418
|
fill: "none",
|
|
@@ -418,10 +421,10 @@ function L({ type: l }) {
|
|
|
418
421
|
});
|
|
419
422
|
})(),
|
|
420
423
|
shapeHexagram: (() => {
|
|
421
|
-
const
|
|
424
|
+
const h = Math.min(18, 14) - 3, i = h * 0.55;
|
|
422
425
|
return /* @__PURE__ */ e("polygon", {
|
|
423
|
-
points: Array.from({ length: 12 }, (k,
|
|
424
|
-
const w = Math.PI *
|
|
426
|
+
points: Array.from({ length: 12 }, (k, d) => {
|
|
427
|
+
const w = Math.PI * d / 6 - Math.PI / 2, f = d % 2 === 0 ? h : i;
|
|
425
428
|
return `${18 + f * Math.cos(w)},${14 + f * Math.sin(w)}`;
|
|
426
429
|
}).join(" "),
|
|
427
430
|
fill: "none",
|
|
@@ -450,7 +453,7 @@ function L({ type: l }) {
|
|
|
450
453
|
fill: "currentColor",
|
|
451
454
|
children: "Aa"
|
|
452
455
|
}),
|
|
453
|
-
animAnchor: /* @__PURE__ */
|
|
456
|
+
animAnchor: /* @__PURE__ */ c(g, { children: [
|
|
454
457
|
/* @__PURE__ */ e("rect", {
|
|
455
458
|
x: "3",
|
|
456
459
|
y: "4",
|
|
@@ -500,9 +503,9 @@ function L({ type: l }) {
|
|
|
500
503
|
children: n[l] ?? n.shapeRect
|
|
501
504
|
});
|
|
502
505
|
}
|
|
503
|
-
function
|
|
506
|
+
function E({ mode: l }) {
|
|
504
507
|
const t = "currentColor", n = {
|
|
505
|
-
connect: /* @__PURE__ */
|
|
508
|
+
connect: /* @__PURE__ */ c(g, { children: [/* @__PURE__ */ e("line", {
|
|
506
509
|
x1: "6",
|
|
507
510
|
y1: 22,
|
|
508
511
|
x2: 30,
|
|
@@ -535,7 +538,7 @@ function z({ mode: l }) {
|
|
|
535
538
|
strokeWidth: 1.5,
|
|
536
539
|
strokeLinejoin: "round"
|
|
537
540
|
}),
|
|
538
|
-
arrow: /* @__PURE__ */
|
|
541
|
+
arrow: /* @__PURE__ */ c(g, { children: [/* @__PURE__ */ e("line", {
|
|
539
542
|
x1: "6",
|
|
540
543
|
y1: 22,
|
|
541
544
|
x2: 30,
|
|
@@ -556,11 +559,11 @@ function z({ mode: l }) {
|
|
|
556
559
|
});
|
|
557
560
|
}
|
|
558
561
|
export {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
562
|
+
q as MediaStampContent,
|
|
563
|
+
D as PaletteThumbnail,
|
|
564
|
+
N as ShapePaletteContent,
|
|
565
|
+
Z as SvgStampContent,
|
|
566
|
+
V as default
|
|
564
567
|
};
|
|
565
568
|
|
|
566
569
|
//# sourceMappingURL=ShapePalette.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapePalette.js","names":[],"sources":["../../../../../src/components/pro/Flow/panels/ShapePalette.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { useFlowUI } from '../context/FlowUIContext';\nimport { useDraggablePanel } from '../hooks/useDraggablePanel';\nimport { useResizablePanel } from '../hooks/useResizablePanel';\nimport { PALETTE_ITEMS } from '../constants';\nimport type { FlowShapeType, FlowNodeData, FlowToolMode } from '../types';\nimport { SVG_ICON_CATEGORIES, getSvgIconsByCategory, buildSvgMarkup, type SvgIconCategory } from '../nodes/svgIcons';\nimport type { FlowMediaKind } from '../types';\nimport { makeStarterDataConfig } from '../nodes/dataUtils';\n\nconst LINE_TOOL_ITEMS: Array<{ mode: FlowToolMode; label: string }> = [\n { mode: 'freehand', label: 'Freehand' },\n { mode: 'line', label: 'Line' },\n { mode: 'polyline', label: 'Polyline' },\n { mode: 'arrow', label: 'Arrow' },\n];\n\n/**\n * Standalone panel (legacy). Prefer using ShapePaletteContent inside a FlowPanelGroup.\n */\nexport default function ShapePalette() {\n const { showPalette } = useFlowUI();\n const { panelStyle, handleProps } = useDraggablePanel();\n const { panelWidth, resizeHandleProps } = useResizablePanel('right', 180);\n\n if (!showPalette) return null;\n\n return (\n <div className=\"flow-palette\" data-flow-panel style={{ ...panelStyle, width: panelWidth }}>\n <div className=\"flow-panel-resize-handle flow-panel-resize-handle--right\" {...resizeHandleProps} />\n <div\n className=\"flow-panel-drag-handle\"\n {...handleProps}\n style={{ fontSize: 11, fontWeight: 600, marginBottom: 6, color: 'color-mix(in oklch, var(--color-base-content) 50%, transparent)', textTransform: 'uppercase', letterSpacing: '0.05em', cursor: 'grab' }}\n >\n Shapes\n </div>\n <div className=\"flow-palette-content\">\n <ShapePaletteContent />\n </div>\n </div>\n );\n}\n\n/** Reusable content for embedding inside FlowPanelGroup tabs. */\nexport function ShapePaletteContent() {\n const { toolMode, setToolMode, setPendingPlacement, pendingPlacement } = useFlowUI();\n\n const handleAddShape = useCallback(\n (type: FlowShapeType, width: number, height: number, data: FlowNodeData) => {\n if (pendingPlacement?.type === type) {\n setPendingPlacement(null);\n } else {\n setPendingPlacement({ type, width, height, data: { ...data } });\n setToolMode('select');\n }\n },\n [setPendingPlacement, setToolMode, pendingPlacement],\n );\n\n return (\n <>\n <div className=\"flow-palette-grid\">\n {PALETTE_ITEMS.map((item) => (\n <div\n key={item.type}\n className={`flow-palette-item${pendingPlacement?.type === item.type ? ' flow-palette-item--active' : ''}`}\n onClick={() => handleAddShape(item.type, item.width, item.height, item.data)}\n >\n <PaletteThumbnail type={item.type} />\n <span className=\"flow-palette-item-label\">{item.data.label}</span>\n </div>\n ))}\n </div>\n\n <SectionHeader>Lines</SectionHeader>\n <div className=\"flow-palette-grid\">\n {LINE_TOOL_ITEMS.map((item) => (\n <div\n key={item.mode}\n className={`flow-palette-item${toolMode === item.mode ? ' flow-palette-item--active' : ''}`}\n onClick={() => { setPendingPlacement(null); setToolMode(toolMode === item.mode ? 'select' : item.mode); }}\n >\n <LineToolThumbnail mode={item.mode} />\n <span className=\"flow-palette-item-label\">{item.label}</span>\n </div>\n ))}\n </div>\n </>\n );\n}\n\n/** SVG icon stamps, grouped by category with a collapsible header per group. */\nexport function SvgStampContent() {\n const { setPendingPlacement, setToolMode, pendingPlacement } = useFlowUI();\n const [open, setOpen] = useState<Record<string, boolean>>({ lang: true });\n\n const stampIcon = useCallback((svgId: string, label: string) => {\n const activeId = pendingPlacement?.data.svgId;\n if (pendingPlacement?.type === 'shapeSvg' && activeId === svgId) {\n setPendingPlacement(null);\n return;\n }\n const data: FlowNodeData = {\n label,\n fill: 'transparent',\n stroke: '#64748b',\n strokeWidth: 1.5,\n color: '#334155',\n fontSize: 12,\n svgId,\n iconBox: false,\n labelPlacement: 'bottom',\n borderStyle: 'none',\n };\n setPendingPlacement({ type: 'shapeSvg', width: 56, height: 56, data });\n setToolMode('select');\n }, [pendingPlacement, setPendingPlacement, setToolMode]);\n\n return (\n <>\n {SVG_ICON_CATEGORIES.map((cat) => {\n const icons = getSvgIconsByCategory(cat.id as SvgIconCategory);\n const isOpen = open[cat.id];\n return (\n <div key={cat.id}>\n <button\n type=\"button\"\n className=\"flow-palette-section-toggle\"\n onClick={() => setOpen((o) => ({ ...o, [cat.id]: !o[cat.id] }))}\n >\n <span style={{ transform: isOpen ? 'rotate(90deg)' : 'none', transition: 'transform .15s' }}>▸</span>\n {cat.label}\n </button>\n {isOpen && (\n <div className=\"flow-palette-grid\">\n {icons.map((ic) => (\n <div\n key={ic.id}\n className={`flow-palette-item${pendingPlacement?.type === 'shapeSvg' && pendingPlacement.data.svgId === ic.id ? ' flow-palette-item--active' : ''}`}\n onClick={() => stampIcon(ic.id, ic.label)}\n title={ic.label}\n >\n <SvgThumbnail id={ic.id} />\n <span className=\"flow-palette-item-label\">{ic.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </>\n );\n}\n\n/** Renders an SVG icon as an <img> (data URL) so it displays in the correct\n * SVG namespace, unlike dangerouslySetInnerHTML on an <svg> element. */\nfunction SvgThumbnail({ id }: { id: string }) {\n const markup = buildSvgMarkup(id, '#475569');\n if (!markup) return null;\n const url = `data:image/svg+xml;utf8,${encodeURIComponent(markup)}`;\n return <img src={url} width={20} height={16} alt=\"\" style={{ objectFit: 'contain' }} />;\n}\n\n/** Multimedia stamps: rich DOM-rendered nodes (markdown/html/mermaid/math/image/3D/AI). */\nconst MEDIA_ITEMS: Array<{\n kind: FlowMediaKind;\n label: string;\n width: number;\n height: number;\n content: string;\n icon: React.ReactNode;\n}> = [\n {\n kind: 'markdown', label: 'Markdown', width: 260, height: 180,\n content: '# 标题\\n\\n- 支持 **GFM**\\n- 支持 `代码`\\n\\n> 引用文本',\n icon: <MediaGlyph text={'M↓'} />,\n },\n {\n kind: 'html', label: 'HTML', width: 260, height: 180,\n content: '<div style=\"font-family:sans-serif;padding:12px\">\\n <h3>Hello</h3>\\n <p>可编辑的 HTML 片段</p>\\n</div>',\n icon: <MediaGlyph text={'</>'} />,\n },\n {\n kind: 'mermaid', label: 'Mermaid', width: 280, height: 200,\n content: 'graph TD\\n A[开始] --> B{判断}\\n B -->|是| C[处理]\\n B -->|否| D[结束]',\n icon: <MediaGlyph text={'⎇'} />,\n },\n {\n kind: 'math', label: 'Math', width: 240, height: 120,\n content: 'E = mc^2',\n icon: <MediaGlyph text={'√x'} />,\n },\n {\n kind: 'image', label: 'Image', width: 320, height: 220,\n content: '',\n icon: <MediaGlyph text={'IMG'} />,\n },\n {\n kind: 'model3d', label: '3D', width: 360, height: 280,\n content: '',\n icon: <MediaGlyph text={'3D'} />,\n },\n {\n kind: 'ai', label: 'AI', width: 300, height: 340,\n content: '',\n icon: <MediaGlyph text={'AI'} />,\n },\n {\n kind: 'data', label: 'Data', width: 420, height: 300,\n content: '',\n icon: <MediaGlyph text={'⊞'} />,\n },\n];\n\nfunction MediaGlyph({ text }: { text: string }) {\n return (\n <div\n style={{\n width: 20, height: 16, display: 'flex', alignItems: 'center', justifyContent: 'center',\n fontSize: 9, fontWeight: 700, color: 'color-mix(in oklch, var(--color-base-content) 60%, transparent)',\n border: '1px solid color-mix(in oklch, var(--color-base-content) 20%, transparent)', borderRadius: 3, flexShrink: 0,\n }}\n >\n {text}\n </div>\n );\n}\n\nexport function MediaStampContent() {\n const { setPendingPlacement, setToolMode, pendingPlacement } = useFlowUI();\n\n const stampMedia = useCallback((item: (typeof MEDIA_ITEMS)[number]) => {\n if (pendingPlacement?.type === 'mediaNode' && pendingPlacement.data.mediaKind === item.kind) {\n setPendingPlacement(null);\n return;\n }\n const data: FlowNodeData = {\n label: item.label,\n fill: '#ffffff',\n stroke: '#cbd5e1',\n strokeWidth: 1.5,\n color: '#1f2937',\n fontSize: 13,\n borderStyle: 'solid',\n mediaKind: item.kind,\n mediaContent: item.content,\n ...(item.kind === 'ai'\n ? { aiConfig: { gateway: '', protocol: 'openai' as const, model: '' } }\n : item.kind === 'model3d'\n ? { modelFormat: 'stl' as const }\n : item.kind === 'data'\n ? { dataConfig: makeStarterDataConfig() }\n : {}),\n };\n setPendingPlacement({ type: 'mediaNode', width: item.width, height: item.height, data });\n setToolMode('select');\n }, [pendingPlacement, setPendingPlacement, setToolMode]);\n\n return (\n <div className=\"flow-palette-grid\">\n {MEDIA_ITEMS.map((item) => (\n <div\n key={item.kind}\n className={`flow-palette-item${pendingPlacement?.type === 'mediaNode' && pendingPlacement.data.mediaKind === item.kind ? ' flow-palette-item--active' : ''}`}\n onClick={() => stampMedia(item)}\n title={item.label}\n >\n {item.icon}\n <span className=\"flow-palette-item-label\">{item.label}</span>\n </div>\n ))}\n </div>\n );\n}\n\nfunction SectionHeader({ children }: { children: React.ReactNode }) {\n return (\n <div style={{ fontSize: 11, fontWeight: 600, margin: '10px 0 6px', color: 'color-mix(in oklch, var(--color-base-content) 50%, transparent)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>\n {children}\n </div>\n );\n}\n\nexport function PaletteThumbnail({ type }: { type: FlowShapeType }) {\n const w = 36, h = 28;\n const s = 'currentColor';\n const sw = 1.5;\n\n const shapeMap: Record<string, React.ReactNode> = {\n shapeRect: (\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"1\" fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeRoundRect: (\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"5\" fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeEllipse: (\n <ellipse cx={w / 2} cy={h / 2} rx={w / 2 - 4} ry={h / 2 - 4} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeDiamond: (\n <polygon points={`${w / 2},3 ${w - 4},${h / 2} ${w / 2},${h - 3} 4,${h / 2}`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeDocument: (\n <path d={`M4,4 L${w - 4},4 L${w - 4},${h - 8} C${w * 0.7},${h - 12} ${w * 0.3},${h - 2} 4,${h - 8} Z`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeParallelogram: (() => {\n const skew = (w - 8) * 0.2;\n return <polygon points={`${4 + skew},4 ${w - 4},4 ${w - 4 - skew},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeTriangle: (\n <polygon points={`${w / 2},4 ${w - 4},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeTrapezoid: (() => {\n const inset = (w - 8) * 0.15;\n return <polygon points={`${4 + inset},4 ${w - 4 - inset},4 ${w - 4},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapePentagon: (() => {\n const cx = w / 2, cy = h / 2, r = Math.min(cx, cy) - 4;\n const pts = Array.from({ length: 5 }, (_, i) => {\n const a = (Math.PI * 2 * i) / 5 - Math.PI / 2;\n return `${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeHexagon: (() => {\n const cx = w / 2, cy = h / 2, rx = cx - 4, ry = cy - 4;\n const pts = Array.from({ length: 6 }, (_, i) => {\n const a = (Math.PI * 2 * i) / 6 - Math.PI / 6;\n return `${cx + rx * Math.cos(a)},${cy + ry * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeStar: (() => {\n const cx = w / 2, cy = h / 2, outer = Math.min(cx, cy) - 3, inner = outer * 0.4;\n const pts = Array.from({ length: 10 }, (_, i) => {\n const a = (Math.PI * i) / 5 - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n return `${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeHexagram: (() => {\n const cx = w / 2, cy = h / 2, outer = Math.min(cx, cy) - 3, inner = outer * 0.55;\n const pts = Array.from({ length: 12 }, (_, i) => {\n const a = (Math.PI * i) / 6 - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n return `${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeRightTriangle: (\n <polygon points={`4,4 ${w - 4},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeCorner: (() => {\n const hf = Math.min(w - 8, h - 8) * 0.4;\n return <polygon points={`4,4 ${w - 4},4 ${w - 4},${4 + hf} ${4 + hf},${4 + hf} ${4 + hf},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n textLabel: (\n <text x={w / 2} y={h / 2 + 1} textAnchor=\"middle\" dominantBaseline=\"middle\" fontSize=\"10\" fill=\"currentColor\">Aa</text>\n ),\n animAnchor: (\n <>\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"2\" fill=\"none\" stroke={s} strokeWidth={sw} strokeDasharray=\"4 3\" />\n <circle cx=\"8\" cy=\"9\" r=\"4\" fill=\"none\" stroke={s} strokeWidth={sw} />\n <text x=\"8\" y=\"10.5\" textAnchor=\"middle\" dominantBaseline=\"middle\" fontSize=\"7\" fill=\"currentColor\">1</text>\n </>\n ),\n geometryGroup: (\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"3\" fill=\"none\" stroke={s} strokeWidth={sw} strokeDasharray=\"6 3\" />\n ),\n };\n\n return (\n <svg width={w} height={h} viewBox={`0 0 ${w} ${h}`} style={{ color: 'color-mix(in oklch, var(--color-base-content) 55%, transparent)' }}>\n {shapeMap[type] ?? shapeMap.shapeRect}\n </svg>\n );\n}\n\nfunction LineToolThumbnail({ mode }: { mode: FlowToolMode }) {\n const w = 36, h = 28;\n const s = 'currentColor';\n const sw = 1.5;\n\n const thumbMap: Record<string, React.ReactNode> = {\n connect: (\n <>\n <line x1=\"6\" y1={h - 6} x2={w - 6} y2=\"6\" stroke={s} strokeWidth={sw} />\n <polygon points={`${w - 6},6 ${w - 11},4 ${w - 9},9`} fill={s} />\n </>\n ),\n freehand: (\n <path d={`M6,${h - 8} C10,${h - 14} 14,10 ${w / 2},${h / 2} S${w - 10},6 ${w - 6},8`} fill=\"none\" stroke={s} strokeWidth={sw} strokeLinecap=\"round\" />\n ),\n line: (\n <line x1=\"6\" y1={h - 6} x2={w - 6} y2=\"6\" stroke={s} strokeWidth={sw} />\n ),\n polyline: (\n <polyline points={`6,${h - 6} 14,8 ${w / 2 + 2},${h - 10} ${w - 6},6`} fill=\"none\" stroke={s} strokeWidth={sw} strokeLinejoin=\"round\" />\n ),\n arrow: (\n <>\n <line x1=\"6\" y1={h - 6} x2={w - 6} y2=\"6\" stroke={s} strokeWidth={sw} />\n <polygon points={`${w - 6},6 ${w - 12},6 ${w - 8},12`} fill={s} />\n </>\n ),\n };\n\n return (\n <svg width={w} height={h} viewBox={`0 0 ${w} ${h}`} style={{ color: 'color-mix(in oklch, var(--color-base-content) 55%, transparent)' }}>\n {thumbMap[mode] ?? thumbMap.line}\n </svg>\n );\n}\n\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ShapePalette.js","names":[],"sources":["../../../../../src/components/pro/Flow/panels/ShapePalette.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { useFlowUI } from '../context/FlowUIContext';\nimport { useDraggablePanel } from '../hooks/useDraggablePanel';\nimport { useResizablePanel } from '../hooks/useResizablePanel';\nimport { PALETTE_ITEMS } from '../constants';\nimport type { FlowShapeType, FlowNodeData, FlowToolMode } from '../types';\nimport { SVG_ICON_CATEGORIES, getSvgIconsByCategory, getSvgIcon, buildSvgMarkup, type SvgIconCategory } from '../nodes/svgIcons';\nimport type { FlowMediaKind } from '../types';\nimport { makeStarterDataConfig } from '../nodes/dataUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nconst LINE_TOOL_ITEMS: Array<{ mode: FlowToolMode; label: string }> = [\n { mode: 'freehand', label: 'Freehand' },\n { mode: 'line', label: 'Line' },\n { mode: 'polyline', label: 'Polyline' },\n { mode: 'arrow', label: 'Arrow' },\n];\n\n/**\n * Standalone panel (legacy). Prefer using ShapePaletteContent inside a FlowPanelGroup.\n */\nexport default function ShapePalette() {\n const { showPalette } = useFlowUI();\n const { panelStyle, handleProps } = useDraggablePanel();\n const { panelWidth, resizeHandleProps } = useResizablePanel('right', 180);\n\n if (!showPalette) return null;\n\n return (\n <div className=\"flow-palette\" data-flow-panel style={{ ...panelStyle, width: panelWidth }}>\n <div className=\"flow-panel-resize-handle flow-panel-resize-handle--right\" {...resizeHandleProps} />\n <div\n className=\"flow-panel-drag-handle\"\n {...handleProps}\n style={{ fontSize: 11, fontWeight: 600, marginBottom: 6, color: 'color-mix(in oklch, var(--color-base-content) 50%, transparent)', textTransform: 'uppercase', letterSpacing: '0.05em', cursor: 'grab' }}\n >\n Shapes\n </div>\n <div className=\"flow-palette-content\">\n <ShapePaletteContent />\n </div>\n </div>\n );\n}\n\n/** Reusable content for embedding inside FlowPanelGroup tabs. */\nexport function ShapePaletteContent() {\n const { toolMode, setToolMode, setPendingPlacement, pendingPlacement } = useFlowUI();\n\n const handleAddShape = useCallback(\n (type: FlowShapeType, width: number, height: number, data: FlowNodeData) => {\n if (pendingPlacement?.type === type) {\n setPendingPlacement(null);\n } else {\n setPendingPlacement({ type, width, height, data: { ...data } });\n setToolMode('select');\n }\n },\n [setPendingPlacement, setToolMode, pendingPlacement],\n );\n\n return (\n <>\n <div className=\"flow-palette-grid\">\n {PALETTE_ITEMS.map((item) => (\n <div\n key={item.type}\n className={`flow-palette-item${pendingPlacement?.type === item.type ? ' flow-palette-item--active' : ''}`}\n onClick={() => handleAddShape(item.type, item.width, item.height, item.data)}\n >\n <PaletteThumbnail type={item.type} />\n <span className=\"flow-palette-item-label\">{item.data.label}</span>\n </div>\n ))}\n </div>\n\n <SectionHeader>Lines</SectionHeader>\n <div className=\"flow-palette-grid\">\n {LINE_TOOL_ITEMS.map((item) => (\n <div\n key={item.mode}\n className={`flow-palette-item${toolMode === item.mode ? ' flow-palette-item--active' : ''}`}\n onClick={() => { setPendingPlacement(null); setToolMode(toolMode === item.mode ? 'select' : item.mode); }}\n >\n <LineToolThumbnail mode={item.mode} />\n <span className=\"flow-palette-item-label\">{item.label}</span>\n </div>\n ))}\n </div>\n </>\n );\n}\n\n/** SVG icon stamps, grouped by category with a collapsible header per group. */\nexport function SvgStampContent() {\n const { setPendingPlacement, setToolMode, pendingPlacement } = useFlowUI();\n const [open, setOpen] = useState<Record<string, boolean>>({ lang: true });\n\n const stampIcon = useCallback((svgId: string, label: string) => {\n const activeId = pendingPlacement?.data.svgId;\n if (pendingPlacement?.type === 'shapeSvg' && activeId === svgId) {\n setPendingPlacement(null);\n return;\n }\n // Brand icons (e.g. language logos) keep their authentic brand color; generic\n // outline icons follow the theme font color so they stay visible on any theme.\n const iconDef = getSvgIcon(svgId);\n const iconColor = iconDef?.brandColor ?? 'theme:base-content';\n const data: FlowNodeData = {\n label,\n fill: 'transparent',\n stroke: 'theme:base-content',\n strokeWidth: 1.5,\n color: iconColor,\n labelColor: 'theme:base-content',\n fontSize: 12,\n svgId,\n iconBox: false,\n labelPlacement: 'bottom',\n borderStyle: 'none',\n };\n setPendingPlacement({ type: 'shapeSvg', width: 56, height: 56, data });\n setToolMode('select');\n }, [pendingPlacement, setPendingPlacement, setToolMode]);\n\n return (\n <>\n {SVG_ICON_CATEGORIES.map((cat) => {\n const icons = getSvgIconsByCategory(cat.id as SvgIconCategory);\n const isOpen = open[cat.id];\n return (\n <div key={cat.id}>\n <button\n type=\"button\"\n className=\"flow-palette-section-toggle\"\n onClick={() => setOpen((o) => ({ ...o, [cat.id]: !o[cat.id] }))}\n >\n <span style={{ transform: isOpen ? 'rotate(90deg)' : 'none', transition: 'transform .15s' }}>▸</span>\n {cat.label}\n </button>\n {isOpen && (\n <div className=\"flow-palette-grid\">\n {icons.map((ic) => (\n <div\n key={ic.id}\n className={`flow-palette-item${pendingPlacement?.type === 'shapeSvg' && pendingPlacement.data.svgId === ic.id ? ' flow-palette-item--active' : ''}`}\n onClick={() => stampIcon(ic.id, ic.label)}\n title={ic.label}\n >\n <SvgThumbnail id={ic.id} />\n <span className=\"flow-palette-item-label\">{ic.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </>\n );\n}\n\n/** Renders an SVG icon as an <img> (data URL) so it displays in the correct\n * SVG namespace, unlike dangerouslySetInnerHTML on an <svg> element. Brand icons\n * use their authentic brand color; generic outline icons fall back to a neutral\n * gray so the thumbnail matches how the icon looks once placed. */\nfunction SvgThumbnail({ id }: { id: string }) {\n const def = getSvgIcon(id);\n // brandColor may be a `theme:*` token (icons that follow the theme); resolve\n // it to a concrete color for the rasterized data URL.\n const brand = resolveThemeColor(def?.brandColor, '') || '#475569';\n const markup = buildSvgMarkup(id, brand);\n if (!markup) return null;\n const url = `data:image/svg+xml;utf8,${encodeURIComponent(markup)}`;\n return <img src={url} width={20} height={16} alt=\"\" style={{ objectFit: 'contain' }} />;\n}\n\n/** Multimedia stamps: rich DOM-rendered nodes (markdown/html/mermaid/math/image/3D/AI). */\nconst MEDIA_ITEMS: Array<{\n kind: FlowMediaKind;\n label: string;\n width: number;\n height: number;\n content: string;\n icon: React.ReactNode;\n}> = [\n {\n kind: 'markdown', label: 'Markdown', width: 260, height: 180,\n content: '# 标题\\n\\n- 支持 **GFM**\\n- 支持 `代码`\\n\\n> 引用文本',\n icon: <MediaGlyph text={'M↓'} />,\n },\n {\n kind: 'html', label: 'HTML', width: 260, height: 180,\n content: '<div style=\"font-family:sans-serif;padding:12px\">\\n <h3>Hello</h3>\\n <p>可编辑的 HTML 片段</p>\\n</div>',\n icon: <MediaGlyph text={'</>'} />,\n },\n {\n kind: 'mermaid', label: 'Mermaid', width: 280, height: 200,\n content: 'graph TD\\n A[开始] --> B{判断}\\n B -->|是| C[处理]\\n B -->|否| D[结束]',\n icon: <MediaGlyph text={'⎇'} />,\n },\n {\n kind: 'math', label: 'Math', width: 240, height: 120,\n content: 'E = mc^2',\n icon: <MediaGlyph text={'√x'} />,\n },\n {\n kind: 'image', label: 'Image', width: 320, height: 220,\n content: '',\n icon: <MediaGlyph text={'IMG'} />,\n },\n {\n kind: 'model3d', label: '3D', width: 360, height: 280,\n content: '',\n icon: <MediaGlyph text={'3D'} />,\n },\n {\n kind: 'ai', label: 'AI', width: 300, height: 340,\n content: '',\n icon: <MediaGlyph text={'AI'} />,\n },\n {\n kind: 'data', label: 'Data', width: 420, height: 300,\n content: '',\n icon: <MediaGlyph text={'⊞'} />,\n },\n];\n\nfunction MediaGlyph({ text }: { text: string }) {\n return (\n <div\n style={{\n width: 20, height: 16, display: 'flex', alignItems: 'center', justifyContent: 'center',\n fontSize: 9, fontWeight: 700, color: 'color-mix(in oklch, var(--color-base-content) 60%, transparent)',\n border: '1px solid color-mix(in oklch, var(--color-base-content) 20%, transparent)', borderRadius: 3, flexShrink: 0,\n }}\n >\n {text}\n </div>\n );\n}\n\nexport function MediaStampContent() {\n const { setPendingPlacement, setToolMode, pendingPlacement } = useFlowUI();\n\n const stampMedia = useCallback((item: (typeof MEDIA_ITEMS)[number]) => {\n if (pendingPlacement?.type === 'mediaNode' && pendingPlacement.data.mediaKind === item.kind) {\n setPendingPlacement(null);\n return;\n }\n const data: FlowNodeData = {\n label: item.label,\n fill: 'theme:base-100',\n stroke: 'theme:base-content',\n strokeWidth: 1.5,\n color: 'theme:base-content',\n fontSize: 13,\n borderStyle: 'solid',\n mediaKind: item.kind,\n mediaContent: item.content,\n ...(item.kind === 'ai'\n ? { aiConfig: { gateway: '', protocol: 'openai' as const, model: '' } }\n : item.kind === 'model3d'\n ? { modelFormat: 'stl' as const }\n : item.kind === 'data'\n ? { dataConfig: makeStarterDataConfig() }\n : {}),\n };\n setPendingPlacement({ type: 'mediaNode', width: item.width, height: item.height, data });\n setToolMode('select');\n }, [pendingPlacement, setPendingPlacement, setToolMode]);\n\n return (\n <div className=\"flow-palette-grid\">\n {MEDIA_ITEMS.map((item) => (\n <div\n key={item.kind}\n className={`flow-palette-item${pendingPlacement?.type === 'mediaNode' && pendingPlacement.data.mediaKind === item.kind ? ' flow-palette-item--active' : ''}`}\n onClick={() => stampMedia(item)}\n title={item.label}\n >\n {item.icon}\n <span className=\"flow-palette-item-label\">{item.label}</span>\n </div>\n ))}\n </div>\n );\n}\n\nfunction SectionHeader({ children }: { children: React.ReactNode }) {\n return (\n <div style={{ fontSize: 11, fontWeight: 600, margin: '10px 0 6px', color: 'color-mix(in oklch, var(--color-base-content) 50%, transparent)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>\n {children}\n </div>\n );\n}\n\nexport function PaletteThumbnail({ type }: { type: FlowShapeType }) {\n const w = 36, h = 28;\n const s = 'currentColor';\n const sw = 1.5;\n\n const shapeMap: Record<string, React.ReactNode> = {\n shapeRect: (\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"1\" fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeRoundRect: (\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"5\" fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeEllipse: (\n <ellipse cx={w / 2} cy={h / 2} rx={w / 2 - 4} ry={h / 2 - 4} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeDiamond: (\n <polygon points={`${w / 2},3 ${w - 4},${h / 2} ${w / 2},${h - 3} 4,${h / 2}`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeDocument: (\n <path d={`M4,4 L${w - 4},4 L${w - 4},${h - 8} C${w * 0.7},${h - 12} ${w * 0.3},${h - 2} 4,${h - 8} Z`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeParallelogram: (() => {\n const skew = (w - 8) * 0.2;\n return <polygon points={`${4 + skew},4 ${w - 4},4 ${w - 4 - skew},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeTriangle: (\n <polygon points={`${w / 2},4 ${w - 4},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeTrapezoid: (() => {\n const inset = (w - 8) * 0.15;\n return <polygon points={`${4 + inset},4 ${w - 4 - inset},4 ${w - 4},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapePentagon: (() => {\n const cx = w / 2, cy = h / 2, r = Math.min(cx, cy) - 4;\n const pts = Array.from({ length: 5 }, (_, i) => {\n const a = (Math.PI * 2 * i) / 5 - Math.PI / 2;\n return `${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeHexagon: (() => {\n const cx = w / 2, cy = h / 2, rx = cx - 4, ry = cy - 4;\n const pts = Array.from({ length: 6 }, (_, i) => {\n const a = (Math.PI * 2 * i) / 6 - Math.PI / 6;\n return `${cx + rx * Math.cos(a)},${cy + ry * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeStar: (() => {\n const cx = w / 2, cy = h / 2, outer = Math.min(cx, cy) - 3, inner = outer * 0.4;\n const pts = Array.from({ length: 10 }, (_, i) => {\n const a = (Math.PI * i) / 5 - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n return `${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeHexagram: (() => {\n const cx = w / 2, cy = h / 2, outer = Math.min(cx, cy) - 3, inner = outer * 0.55;\n const pts = Array.from({ length: 12 }, (_, i) => {\n const a = (Math.PI * i) / 6 - Math.PI / 2;\n const r = i % 2 === 0 ? outer : inner;\n return `${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`;\n }).join(' ');\n return <polygon points={pts} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n shapeRightTriangle: (\n <polygon points={`4,4 ${w - 4},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />\n ),\n shapeCorner: (() => {\n const hf = Math.min(w - 8, h - 8) * 0.4;\n return <polygon points={`4,4 ${w - 4},4 ${w - 4},${4 + hf} ${4 + hf},${4 + hf} ${4 + hf},${h - 4} 4,${h - 4}`} fill=\"none\" stroke={s} strokeWidth={sw} />;\n })(),\n textLabel: (\n <text x={w / 2} y={h / 2 + 1} textAnchor=\"middle\" dominantBaseline=\"middle\" fontSize=\"10\" fill=\"currentColor\">Aa</text>\n ),\n animAnchor: (\n <>\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"2\" fill=\"none\" stroke={s} strokeWidth={sw} strokeDasharray=\"4 3\" />\n <circle cx=\"8\" cy=\"9\" r=\"4\" fill=\"none\" stroke={s} strokeWidth={sw} />\n <text x=\"8\" y=\"10.5\" textAnchor=\"middle\" dominantBaseline=\"middle\" fontSize=\"7\" fill=\"currentColor\">1</text>\n </>\n ),\n geometryGroup: (\n <rect x=\"3\" y=\"4\" width={w - 6} height={h - 8} rx=\"3\" fill=\"none\" stroke={s} strokeWidth={sw} strokeDasharray=\"6 3\" />\n ),\n };\n\n return (\n <svg width={w} height={h} viewBox={`0 0 ${w} ${h}`} style={{ color: 'color-mix(in oklch, var(--color-base-content) 55%, transparent)' }}>\n {shapeMap[type] ?? shapeMap.shapeRect}\n </svg>\n );\n}\n\nfunction LineToolThumbnail({ mode }: { mode: FlowToolMode }) {\n const w = 36, h = 28;\n const s = 'currentColor';\n const sw = 1.5;\n\n const thumbMap: Record<string, React.ReactNode> = {\n connect: (\n <>\n <line x1=\"6\" y1={h - 6} x2={w - 6} y2=\"6\" stroke={s} strokeWidth={sw} />\n <polygon points={`${w - 6},6 ${w - 11},4 ${w - 9},9`} fill={s} />\n </>\n ),\n freehand: (\n <path d={`M6,${h - 8} C10,${h - 14} 14,10 ${w / 2},${h / 2} S${w - 10},6 ${w - 6},8`} fill=\"none\" stroke={s} strokeWidth={sw} strokeLinecap=\"round\" />\n ),\n line: (\n <line x1=\"6\" y1={h - 6} x2={w - 6} y2=\"6\" stroke={s} strokeWidth={sw} />\n ),\n polyline: (\n <polyline points={`6,${h - 6} 14,8 ${w / 2 + 2},${h - 10} ${w - 6},6`} fill=\"none\" stroke={s} strokeWidth={sw} strokeLinejoin=\"round\" />\n ),\n arrow: (\n <>\n <line x1=\"6\" y1={h - 6} x2={w - 6} y2=\"6\" stroke={s} strokeWidth={sw} />\n <polygon points={`${w - 6},6 ${w - 12},6 ${w - 8},12`} fill={s} />\n </>\n ),\n };\n\n return (\n <svg width={w} height={h} viewBox={`0 0 ${w} ${h}`} style={{ color: 'color-mix(in oklch, var(--color-base-content) 55%, transparent)' }}>\n {thumbMap[mode] ?? thumbMap.line}\n </svg>\n );\n}\n\n"],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export declare const IconShapes: React.FC;
|
|
|
18
18
|
export declare const IconInspector: React.FC;
|
|
19
19
|
export declare const IconOutline: React.FC;
|
|
20
20
|
export declare const IconJson: React.FC;
|
|
21
|
+
export declare const IconAI: React.FC;
|
|
21
22
|
export declare const IconGrid: React.FC;
|
|
22
23
|
export declare const IconMiniMap: React.FC;
|
|
23
24
|
export declare const IconImport: React.FC;
|