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,38 +1,41 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useDraggablePanel as
|
|
3
|
-
import { useResizablePanel as
|
|
4
|
-
import {
|
|
5
|
-
import { jsx as a, jsxs as
|
|
6
|
-
function
|
|
7
|
-
const [c, f] =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import P from "../../../Button/index.js";
|
|
2
|
+
import { useDraggablePanel as W } from "../hooks/useDraggablePanel.js";
|
|
3
|
+
import { useResizablePanel as x } from "../hooks/useResizablePanel.js";
|
|
4
|
+
import { useEffect as u, useRef as z, useState as R } from "react";
|
|
5
|
+
import { jsx as a, jsxs as i } from "react/jsx-runtime";
|
|
6
|
+
function T({ tabs: l, defaultTab: w, className: v, resizeEdge: s, defaultWidth: N, style: b, onDetach: o, onAttach: d, isDetached: t }) {
|
|
7
|
+
const [c, f] = R(w ?? l[0]?.id), { panelStyle: g, handleProps: p } = W(), { panelWidth: k, resizeHandleProps: C } = x(s, N), h = z(null);
|
|
8
|
+
if (u(() => {
|
|
9
|
+
const e = h.current;
|
|
10
|
+
if (!e) return;
|
|
11
|
+
const m = (r) => {
|
|
12
|
+
e.scrollWidth <= e.clientWidth || r.deltaY !== 0 && (e.scrollLeft += r.deltaY, r.preventDefault());
|
|
13
|
+
};
|
|
14
|
+
return e.addEventListener("wheel", m, { passive: !1 }), () => e.removeEventListener("wheel", m);
|
|
15
|
+
}, [l.length > 1]), u(() => {
|
|
12
16
|
l.length > 0 && !l.find((e) => e.id === c) && f(l[0].id);
|
|
13
17
|
}, [l, c]), l.length === 0) return null;
|
|
14
18
|
const n = l.find((e) => e.id === c) ?? l[0];
|
|
15
|
-
return /* @__PURE__ */
|
|
16
|
-
className: `${
|
|
19
|
+
return /* @__PURE__ */ i("div", {
|
|
20
|
+
className: `${v ?? "flow-palette"}${t ? " flow-panel--detached" : " flow-panel--docked"}`,
|
|
17
21
|
"data-flow-panel": !0,
|
|
18
22
|
style: {
|
|
19
|
-
...
|
|
20
|
-
...
|
|
21
|
-
width:
|
|
23
|
+
...b,
|
|
24
|
+
...t ? g : void 0,
|
|
25
|
+
width: k
|
|
22
26
|
},
|
|
23
27
|
children: [
|
|
24
28
|
/* @__PURE__ */ a("div", {
|
|
25
|
-
className: `flow-panel-resize-handle flow-panel-resize-handle--${
|
|
26
|
-
...
|
|
29
|
+
className: `flow-panel-resize-handle flow-panel-resize-handle--${s}`,
|
|
30
|
+
...C
|
|
27
31
|
}),
|
|
28
|
-
l.length > 1 ? /* @__PURE__ */
|
|
32
|
+
l.length > 1 ? /* @__PURE__ */ i("div", {
|
|
29
33
|
className: "flow-panel-tabs-row",
|
|
30
|
-
...
|
|
34
|
+
...t ? p : {},
|
|
31
35
|
children: [/* @__PURE__ */ a("div", {
|
|
32
36
|
className: "flow-panel-tabs",
|
|
33
37
|
ref: h,
|
|
34
|
-
|
|
35
|
-
children: l.map((e) => /* @__PURE__ */ o(W, {
|
|
38
|
+
children: l.map((e) => /* @__PURE__ */ i(P, {
|
|
36
39
|
variant: "ghost",
|
|
37
40
|
size: "xs",
|
|
38
41
|
className: `flow-panel-tab${e.id === n.id ? " flow-panel-tab--active" : ""}`,
|
|
@@ -42,27 +45,36 @@ function B({ tabs: l, defaultTab: m, className: u, resizeEdge: r, defaultWidth:
|
|
|
42
45
|
children: e.icon
|
|
43
46
|
}), e.label]
|
|
44
47
|
}, e.id))
|
|
45
|
-
}),
|
|
48
|
+
}), o && /* @__PURE__ */ a("button", {
|
|
46
49
|
className: "flow-panel-detach-btn",
|
|
47
50
|
title: "Detach tab",
|
|
48
|
-
onClick: () =>
|
|
51
|
+
onClick: () => o(n.id),
|
|
49
52
|
children: "⬈"
|
|
50
53
|
})]
|
|
51
|
-
}) : /* @__PURE__ */
|
|
54
|
+
}) : /* @__PURE__ */ i("div", {
|
|
52
55
|
className: "flow-panel-header-single",
|
|
53
|
-
...
|
|
54
|
-
children: [
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
...t ? p : {},
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ i("span", {
|
|
59
|
+
className: "flow-panel-header-label",
|
|
60
|
+
children: [n.icon && /* @__PURE__ */ a("span", {
|
|
61
|
+
className: "flow-panel-tab-icon",
|
|
62
|
+
children: n.icon
|
|
63
|
+
}), n.label]
|
|
64
|
+
}),
|
|
65
|
+
t && d && /* @__PURE__ */ a("button", {
|
|
66
|
+
className: "flow-panel-detach-btn",
|
|
67
|
+
title: "Attach back",
|
|
68
|
+
onClick: () => d(n.id),
|
|
69
|
+
children: "⮋"
|
|
70
|
+
}),
|
|
71
|
+
!t && o && /* @__PURE__ */ a("button", {
|
|
72
|
+
className: "flow-panel-detach-btn",
|
|
73
|
+
title: "Detach tab",
|
|
74
|
+
onClick: () => o(n.id),
|
|
75
|
+
children: "⮈"
|
|
76
|
+
})
|
|
77
|
+
]
|
|
66
78
|
}),
|
|
67
79
|
/* @__PURE__ */ a("div", {
|
|
68
80
|
className: "flow-palette-content",
|
|
@@ -72,7 +84,7 @@ function B({ tabs: l, defaultTab: m, className: u, resizeEdge: r, defaultWidth:
|
|
|
72
84
|
});
|
|
73
85
|
}
|
|
74
86
|
export {
|
|
75
|
-
|
|
87
|
+
T as default
|
|
76
88
|
};
|
|
77
89
|
|
|
78
90
|
//# sourceMappingURL=FlowPanelGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowPanelGroup.js","names":[],"sources":["../../../../../src/components/pro/Flow/panels/FlowPanelGroup.tsx"],"sourcesContent":["import React, { useState,
|
|
1
|
+
{"version":3,"file":"FlowPanelGroup.js","names":[],"sources":["../../../../../src/components/pro/Flow/panels/FlowPanelGroup.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport Button from '../../../Button';\nimport { useDraggablePanel } from '../hooks/useDraggablePanel';\nimport { useResizablePanel, type ResizeEdge } from '../hooks/useResizablePanel';\n\nexport interface PanelTab {\n id: string;\n label: string;\n icon?: React.ReactNode;\n content: React.ReactNode;\n}\n\ninterface FlowPanelGroupProps {\n tabs: PanelTab[];\n defaultTab?: string;\n className?: string;\n resizeEdge: ResizeEdge;\n defaultWidth: number;\n style?: React.CSSProperties;\n onDetach?: (tabId: string) => void;\n onAttach?: (tabId: string) => void;\n /** If true, show attach button instead of detach */\n isDetached?: boolean;\n}\n\nexport default function FlowPanelGroup({\n tabs,\n defaultTab,\n className,\n resizeEdge,\n defaultWidth,\n style,\n onDetach,\n onAttach,\n isDetached,\n}: FlowPanelGroupProps) {\n const [activeTab, setActiveTab] = useState(defaultTab ?? tabs[0]?.id);\n const { panelStyle, handleProps } = useDraggablePanel();\n const { panelWidth, resizeHandleProps } = useResizablePanel(resizeEdge, defaultWidth);\n const tabsScrollRef = useRef<HTMLDivElement>(null);\n\n const showTabs = tabs.length > 1;\n\n // Translate vertical wheel scrolling into horizontal tab scrolling, so the\n // overflowing tabs are reachable with a normal mouse wheel / trackpad.\n // Attached natively with { passive: false }: React's delegated onWheel is\n // passive at the root, so preventDefault() there is ignored and logs\n // \"Unable to preventDefault inside passive event listener invocation\".\n useEffect(() => {\n const el = tabsScrollRef.current;\n if (!el) return;\n const onWheel = (e: WheelEvent) => {\n if (el.scrollWidth <= el.clientWidth) return;\n if (e.deltaY !== 0) {\n el.scrollLeft += e.deltaY;\n e.preventDefault();\n }\n };\n el.addEventListener('wheel', onWheel, { passive: false });\n return () => el.removeEventListener('wheel', onWheel);\n }, [showTabs]);\n\n useEffect(() => {\n if (tabs.length > 0 && !tabs.find(t => t.id === activeTab)) {\n setActiveTab(tabs[0].id);\n }\n }, [tabs, activeTab]);\n\n if (tabs.length === 0) return null;\n\n const current = tabs.find(t => t.id === activeTab) ?? tabs[0];\n\n return (\n <div\n className={`${className ?? 'flow-palette'}${isDetached ? ' flow-panel--detached' : ' flow-panel--docked'}`}\n data-flow-panel\n style={{ ...style, ...(isDetached ? panelStyle : undefined), width: panelWidth }}\n >\n <div\n className={`flow-panel-resize-handle flow-panel-resize-handle--${resizeEdge}`}\n {...resizeHandleProps}\n />\n {tabs.length > 1 ? (\n <div className=\"flow-panel-tabs-row\" {...(isDetached ? handleProps : {})}>\n <div className=\"flow-panel-tabs\" ref={tabsScrollRef}>\n {tabs.map(tab => (\n <Button\n key={tab.id}\n variant=\"ghost\"\n size=\"xs\"\n className={`flow-panel-tab${tab.id === current.id ? ' flow-panel-tab--active' : ''}`}\n onClick={() => setActiveTab(tab.id)}\n >\n {tab.icon && <span className=\"flow-panel-tab-icon\">{tab.icon}</span>}\n {tab.label}\n </Button>\n ))}\n </div>\n {onDetach && (\n <button\n className=\"flow-panel-detach-btn\"\n title=\"Detach tab\"\n onClick={() => onDetach(current.id)}\n >⬈</button>\n )}\n </div>\n ) : (\n <div className=\"flow-panel-header-single\" {...(isDetached ? handleProps : {})}>\n <span className=\"flow-panel-header-label\">\n {current.icon && <span className=\"flow-panel-tab-icon\">{current.icon}</span>}\n {current.label}\n </span>\n {isDetached && onAttach && (\n <button\n className=\"flow-panel-detach-btn\"\n title=\"Attach back\"\n onClick={() => onAttach(current.id)}\n >⮋</button>\n )}\n {!isDetached && onDetach && (\n <button\n className=\"flow-panel-detach-btn\"\n title=\"Detach tab\"\n onClick={() => onDetach(current.id)}\n >⮈</button>\n )}\n </div>\n )}\n <div className=\"flow-palette-content\">\n {current.content}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useFlowContext as
|
|
3
|
-
import { useFlowUI as
|
|
4
|
-
import
|
|
5
|
-
import { downloadDataURL as
|
|
6
|
-
import { useLayoutActions as
|
|
7
|
-
import { IconAlign as d, IconAnchorVisible as
|
|
8
|
-
import { useCallback as
|
|
1
|
+
import no from "../../../Button/index.js";
|
|
2
|
+
import { useFlowContext as lo } from "../context/FlowContext.js";
|
|
3
|
+
import { useFlowUI as V } from "../context/FlowUIContext.js";
|
|
4
|
+
import co from "./ProjectTitle.js";
|
|
5
|
+
import { downloadDataURL as E, safeFileBaseName as T, useFlowImportExport as ro } from "../hooks/useFlowImportExport.js";
|
|
6
|
+
import { useLayoutActions as so } from "../hooks/useLayoutActions.js";
|
|
7
|
+
import { IconAI as ao, IconAlign as d, IconAnchorVisible as ho, IconAutoFocus as po, IconBack as mo, IconExportJson as uo, IconExportMarkdown as ko, IconExportPdf as wo, IconExportPng as fo, IconFitView as Io, IconGeoGroup as bo, IconGrid as vo, IconGroup as Co, IconImport as No, IconInspector as go, IconJson as Ao, IconLayer as v, IconMiniMap as xo, IconOutline as Oo, IconPresent as So, IconPublish as zo, IconRedo as yo, IconShapes as Fo, IconUndo as Mo, IconUngroup as jo, IconZoomIn as Ro, IconZoomOut as Jo } from "./toolbarIcons.js";
|
|
8
|
+
import { useCallback as C, useRef as Lo } from "react";
|
|
9
9
|
import { Fragment as N, jsx as o, jsxs as e } from "react/jsx-runtime";
|
|
10
|
-
function
|
|
11
|
-
const { viewport: n, setViewport: l, autoFocus: r, setAutoFocus: u } =
|
|
10
|
+
function Do() {
|
|
11
|
+
const { viewport: n, setViewport: l, autoFocus: r, setAutoFocus: u } = V(), k = Math.round(n.zoom * 100);
|
|
12
12
|
return /* @__PURE__ */ e("div", {
|
|
13
13
|
className: "flow-zoom-controls",
|
|
14
14
|
children: [
|
|
@@ -20,7 +20,7 @@ function Vo() {
|
|
|
20
20
|
zoom: Math.max(0.1, n.zoom / 1.2)
|
|
21
21
|
});
|
|
22
22
|
},
|
|
23
|
-
children: /* @__PURE__ */ o(
|
|
23
|
+
children: /* @__PURE__ */ o(Jo, {})
|
|
24
24
|
}),
|
|
25
25
|
/* @__PURE__ */ e("span", {
|
|
26
26
|
className: "flow-zoom-info",
|
|
@@ -34,7 +34,7 @@ function Vo() {
|
|
|
34
34
|
zoom: Math.min(4, n.zoom * 1.2)
|
|
35
35
|
});
|
|
36
36
|
},
|
|
37
|
-
children: /* @__PURE__ */ o(
|
|
37
|
+
children: /* @__PURE__ */ o(Ro, {})
|
|
38
38
|
}),
|
|
39
39
|
/* @__PURE__ */ o(i, {
|
|
40
40
|
tip: "适应视图",
|
|
@@ -45,13 +45,13 @@ function Vo() {
|
|
|
45
45
|
zoom: 1
|
|
46
46
|
});
|
|
47
47
|
},
|
|
48
|
-
children: /* @__PURE__ */ o(
|
|
48
|
+
children: /* @__PURE__ */ o(Io, {})
|
|
49
49
|
}),
|
|
50
50
|
/* @__PURE__ */ o(i, {
|
|
51
51
|
tip: r ? "关闭 Auto Focus" : "开启 Auto Focus",
|
|
52
52
|
active: r,
|
|
53
53
|
onClick: () => u(!r),
|
|
54
|
-
children: /* @__PURE__ */ o(
|
|
54
|
+
children: /* @__PURE__ */ o(po, {})
|
|
55
55
|
})
|
|
56
56
|
]
|
|
57
57
|
});
|
|
@@ -60,7 +60,7 @@ function i({ tip: n, shortcut: l, onClick: r, active: u, disabled: k, children:
|
|
|
60
60
|
const a = l ? `${n} (${l})` : n;
|
|
61
61
|
return /* @__PURE__ */ e("span", {
|
|
62
62
|
className: "flow-tip",
|
|
63
|
-
children: [/* @__PURE__ */ o(
|
|
63
|
+
children: [/* @__PURE__ */ o(no, {
|
|
64
64
|
size: "xs",
|
|
65
65
|
variant: u ? "primary" : "ghost",
|
|
66
66
|
onClick: r,
|
|
@@ -78,40 +78,40 @@ function i({ tip: n, shortcut: l, onClick: r, active: u, disabled: k, children:
|
|
|
78
78
|
})]
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
-
function
|
|
82
|
-
const { showGrid:
|
|
83
|
-
const t =
|
|
84
|
-
|
|
85
|
-
}, [
|
|
86
|
-
const t =
|
|
87
|
-
|
|
88
|
-
}, [
|
|
89
|
-
|
|
81
|
+
function Wo({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup: p, onGeoGroup: a, onUngroup: f, onExportPNG: x, onExportPDF: O, onPublish: S }) {
|
|
82
|
+
const { showGrid: z, setShowGrid: $, showPalette: y, setShowPalette: q, showInspector: F, setShowInspector: D, showOutline: M, setShowOutline: W, showJson: j, setShowJson: H, showAI: R, setShowAI: K, showMiniMap: J, setShowMiniMap: Q, showAnchors: I, setShowAnchors: X, presentation: L, setPresentation: Y } = V(), { doc: w, selection: h, currentCanvas: _ } = lo(), { exportJSON: Z, importJSON: P, exportMarkdown: U } = ro(), { align: m, distribute: G, changeZIndex: b } = so(), B = Lo(null), g = h.nodeIds.size + h.lineIds.size, oo = h.nodeIds.size > 0 && _.nodes.some((t) => h.nodeIds.has(t.id) && (t.type === "flowGroup" || t.type === "geometryGroup" || t.data.isGroup)), A = Object.values(w.canvases).some((t) => t.nodes.some((s) => s.type === "animAnchor")), io = C(() => {
|
|
83
|
+
const t = Z(), s = new Blob([t], { type: "application/json" }), c = URL.createObjectURL(s);
|
|
84
|
+
E(c, `${T(w.title)}.json`), URL.revokeObjectURL(c);
|
|
85
|
+
}, [Z, w.title]), eo = C(() => {
|
|
86
|
+
const t = U(), s = new Blob([t], { type: "text/markdown" }), c = URL.createObjectURL(s);
|
|
87
|
+
E(c, `${T(w.title)}.md`), URL.revokeObjectURL(c);
|
|
88
|
+
}, [U, w.title]), to = C(() => {
|
|
89
|
+
B.current?.click();
|
|
90
90
|
}, []);
|
|
91
91
|
return /* @__PURE__ */ e("div", {
|
|
92
92
|
className: "flow-toolbar",
|
|
93
93
|
children: [
|
|
94
94
|
/* @__PURE__ */ o("input", {
|
|
95
|
-
ref:
|
|
95
|
+
ref: B,
|
|
96
96
|
type: "file",
|
|
97
97
|
accept: ".json",
|
|
98
98
|
style: { display: "none" },
|
|
99
|
-
onChange:
|
|
99
|
+
onChange: C((t) => {
|
|
100
100
|
const s = t.target.files?.[0];
|
|
101
101
|
if (!s) return;
|
|
102
102
|
const c = new FileReader();
|
|
103
103
|
c.onload = () => {
|
|
104
|
-
typeof c.result == "string" &&
|
|
104
|
+
typeof c.result == "string" && P(c.result);
|
|
105
105
|
}, c.readAsText(s), t.target.value = "";
|
|
106
|
-
}, [
|
|
106
|
+
}, [P])
|
|
107
107
|
}),
|
|
108
|
-
/* @__PURE__ */ o(
|
|
108
|
+
/* @__PURE__ */ o(co, {}),
|
|
109
109
|
n && /* @__PURE__ */ e(N, { children: [/* @__PURE__ */ o("div", {
|
|
110
110
|
className: "flow-toolbar-group",
|
|
111
111
|
children: /* @__PURE__ */ o(i, {
|
|
112
112
|
tip: "返回列表",
|
|
113
113
|
onClick: n,
|
|
114
|
-
children: /* @__PURE__ */ o(
|
|
114
|
+
children: /* @__PURE__ */ o(mo, {})
|
|
115
115
|
})
|
|
116
116
|
}), /* @__PURE__ */ o("div", { className: "flow-toolbar-divider" })] }),
|
|
117
117
|
(l || r) && /* @__PURE__ */ e("div", {
|
|
@@ -121,13 +121,13 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
121
121
|
shortcut: "Ctrl+Z",
|
|
122
122
|
onClick: l,
|
|
123
123
|
disabled: !u,
|
|
124
|
-
children: /* @__PURE__ */ o(
|
|
124
|
+
children: /* @__PURE__ */ o(Mo, {})
|
|
125
125
|
}), r && /* @__PURE__ */ o(i, {
|
|
126
126
|
tip: "重做",
|
|
127
127
|
shortcut: "Ctrl+Shift+Z",
|
|
128
128
|
onClick: r,
|
|
129
129
|
disabled: !k,
|
|
130
|
-
children: /* @__PURE__ */ o(
|
|
130
|
+
children: /* @__PURE__ */ o(yo, {})
|
|
131
131
|
})]
|
|
132
132
|
}),
|
|
133
133
|
h.nodeIds.size >= 2 && /* @__PURE__ */ e(N, { children: [/* @__PURE__ */ o("div", { className: "flow-toolbar-divider" }), /* @__PURE__ */ e("div", {
|
|
@@ -165,13 +165,13 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
165
165
|
}),
|
|
166
166
|
/* @__PURE__ */ o(i, {
|
|
167
167
|
tip: "水平平分",
|
|
168
|
-
onClick: () =>
|
|
168
|
+
onClick: () => G("horizontal"),
|
|
169
169
|
disabled: h.nodeIds.size < 3,
|
|
170
170
|
children: /* @__PURE__ */ o(d, { kind: "distribute-h" })
|
|
171
171
|
}),
|
|
172
172
|
/* @__PURE__ */ o(i, {
|
|
173
173
|
tip: "垂直平分",
|
|
174
|
-
onClick: () =>
|
|
174
|
+
onClick: () => G("vertical"),
|
|
175
175
|
disabled: h.nodeIds.size < 3,
|
|
176
176
|
children: /* @__PURE__ */ o(d, { kind: "distribute-v" })
|
|
177
177
|
})
|
|
@@ -182,23 +182,23 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
182
182
|
children: [
|
|
183
183
|
/* @__PURE__ */ o(i, {
|
|
184
184
|
tip: "置于顶层",
|
|
185
|
-
onClick: () =>
|
|
186
|
-
children: /* @__PURE__ */ o(
|
|
185
|
+
onClick: () => b("front"),
|
|
186
|
+
children: /* @__PURE__ */ o(v, { kind: "front" })
|
|
187
187
|
}),
|
|
188
188
|
/* @__PURE__ */ o(i, {
|
|
189
189
|
tip: "上移一层",
|
|
190
|
-
onClick: () =>
|
|
191
|
-
children: /* @__PURE__ */ o(
|
|
190
|
+
onClick: () => b("up"),
|
|
191
|
+
children: /* @__PURE__ */ o(v, { kind: "up" })
|
|
192
192
|
}),
|
|
193
193
|
/* @__PURE__ */ o(i, {
|
|
194
194
|
tip: "下移一层",
|
|
195
|
-
onClick: () =>
|
|
196
|
-
children: /* @__PURE__ */ o(
|
|
195
|
+
onClick: () => b("down"),
|
|
196
|
+
children: /* @__PURE__ */ o(v, { kind: "down" })
|
|
197
197
|
}),
|
|
198
198
|
/* @__PURE__ */ o(i, {
|
|
199
199
|
tip: "置于底层",
|
|
200
|
-
onClick: () =>
|
|
201
|
-
children: /* @__PURE__ */ o(
|
|
200
|
+
onClick: () => b("back"),
|
|
201
|
+
children: /* @__PURE__ */ o(v, { kind: "back" })
|
|
202
202
|
})
|
|
203
203
|
]
|
|
204
204
|
})] }),
|
|
@@ -210,21 +210,21 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
210
210
|
shortcut: "⌘G",
|
|
211
211
|
onClick: p,
|
|
212
212
|
disabled: g < 2,
|
|
213
|
-
children: /* @__PURE__ */ o(
|
|
213
|
+
children: /* @__PURE__ */ o(Co, {})
|
|
214
214
|
}),
|
|
215
215
|
a && /* @__PURE__ */ o(i, {
|
|
216
216
|
tip: "几何分组",
|
|
217
217
|
shortcut: "⌘⌥G",
|
|
218
218
|
onClick: a,
|
|
219
219
|
disabled: g < 2,
|
|
220
|
-
children: /* @__PURE__ */ o(
|
|
220
|
+
children: /* @__PURE__ */ o(bo, {})
|
|
221
221
|
}),
|
|
222
222
|
f && /* @__PURE__ */ o(i, {
|
|
223
223
|
tip: "取消成组",
|
|
224
224
|
shortcut: "⌘⇧G",
|
|
225
225
|
onClick: f,
|
|
226
|
-
disabled: !
|
|
227
|
-
children: /* @__PURE__ */ o(
|
|
226
|
+
disabled: !oo,
|
|
227
|
+
children: /* @__PURE__ */ o(jo, {})
|
|
228
228
|
})
|
|
229
229
|
]
|
|
230
230
|
})] }),
|
|
@@ -234,33 +234,33 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
234
234
|
children: [
|
|
235
235
|
/* @__PURE__ */ o(i, {
|
|
236
236
|
tip: "网格",
|
|
237
|
-
active:
|
|
238
|
-
onClick: () =>
|
|
239
|
-
children: /* @__PURE__ */ o(
|
|
237
|
+
active: z,
|
|
238
|
+
onClick: () => $(!z),
|
|
239
|
+
children: /* @__PURE__ */ o(vo, {})
|
|
240
240
|
}),
|
|
241
241
|
/* @__PURE__ */ o(i, {
|
|
242
242
|
tip: "缩略图",
|
|
243
|
-
active:
|
|
244
|
-
onClick: () =>
|
|
245
|
-
children: /* @__PURE__ */ o(
|
|
243
|
+
active: J,
|
|
244
|
+
onClick: () => Q(!J),
|
|
245
|
+
children: /* @__PURE__ */ o(xo, {})
|
|
246
246
|
}),
|
|
247
247
|
/* @__PURE__ */ o(i, {
|
|
248
|
-
tip:
|
|
249
|
-
active:
|
|
250
|
-
disabled: !
|
|
248
|
+
tip: I ? "隐藏所有 Anchor 对象" : "显示所有 Anchor 对象",
|
|
249
|
+
active: I,
|
|
250
|
+
disabled: !A,
|
|
251
251
|
onClick: () => {
|
|
252
|
-
|
|
252
|
+
A && X(!I);
|
|
253
253
|
},
|
|
254
|
-
children: /* @__PURE__ */ o(
|
|
254
|
+
children: /* @__PURE__ */ o(ho, { visible: I })
|
|
255
255
|
}),
|
|
256
256
|
/* @__PURE__ */ o(i, {
|
|
257
257
|
tip: "动画预览",
|
|
258
|
-
active:
|
|
259
|
-
onClick: () =>
|
|
258
|
+
active: L !== null,
|
|
259
|
+
onClick: () => Y(L ? null : {
|
|
260
260
|
current: 0,
|
|
261
261
|
showAnchor: !1
|
|
262
262
|
}),
|
|
263
|
-
children: /* @__PURE__ */ o(
|
|
263
|
+
children: /* @__PURE__ */ o(So, {})
|
|
264
264
|
})
|
|
265
265
|
]
|
|
266
266
|
}),
|
|
@@ -270,27 +270,33 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
270
270
|
children: [
|
|
271
271
|
/* @__PURE__ */ o(i, {
|
|
272
272
|
tip: "形状面板",
|
|
273
|
-
active:
|
|
274
|
-
onClick: () =>
|
|
275
|
-
children: /* @__PURE__ */ o(
|
|
273
|
+
active: y,
|
|
274
|
+
onClick: () => q(!y),
|
|
275
|
+
children: /* @__PURE__ */ o(Fo, {})
|
|
276
276
|
}),
|
|
277
277
|
/* @__PURE__ */ o(i, {
|
|
278
278
|
tip: "属性面板",
|
|
279
|
-
active:
|
|
280
|
-
onClick: () =>
|
|
281
|
-
children: /* @__PURE__ */ o(
|
|
279
|
+
active: F,
|
|
280
|
+
onClick: () => D(!F),
|
|
281
|
+
children: /* @__PURE__ */ o(go, {})
|
|
282
282
|
}),
|
|
283
283
|
/* @__PURE__ */ o(i, {
|
|
284
284
|
tip: "大纲",
|
|
285
285
|
active: M,
|
|
286
|
-
onClick: () =>
|
|
287
|
-
children: /* @__PURE__ */ o(
|
|
286
|
+
onClick: () => W(!M),
|
|
287
|
+
children: /* @__PURE__ */ o(Oo, {})
|
|
288
288
|
}),
|
|
289
289
|
/* @__PURE__ */ o(i, {
|
|
290
290
|
tip: "JSON",
|
|
291
291
|
active: j,
|
|
292
|
-
onClick: () =>
|
|
293
|
-
children: /* @__PURE__ */ o(
|
|
292
|
+
onClick: () => H(!j),
|
|
293
|
+
children: /* @__PURE__ */ o(Ao, {})
|
|
294
|
+
}),
|
|
295
|
+
/* @__PURE__ */ o(i, {
|
|
296
|
+
tip: "AI 助手",
|
|
297
|
+
active: R,
|
|
298
|
+
onClick: () => K(!R),
|
|
299
|
+
children: /* @__PURE__ */ o(ao, {})
|
|
294
300
|
})
|
|
295
301
|
]
|
|
296
302
|
}),
|
|
@@ -300,37 +306,37 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
300
306
|
children: [
|
|
301
307
|
/* @__PURE__ */ o(i, {
|
|
302
308
|
tip: "导入 JSON",
|
|
303
|
-
onClick:
|
|
304
|
-
children: /* @__PURE__ */ o(
|
|
309
|
+
onClick: to,
|
|
310
|
+
children: /* @__PURE__ */ o(No, {})
|
|
305
311
|
}),
|
|
306
312
|
/* @__PURE__ */ o(i, {
|
|
307
313
|
tip: "导出 JSON",
|
|
308
|
-
onClick:
|
|
309
|
-
children: /* @__PURE__ */ o(
|
|
314
|
+
onClick: io,
|
|
315
|
+
children: /* @__PURE__ */ o(uo, {})
|
|
310
316
|
}),
|
|
311
317
|
/* @__PURE__ */ o(i, {
|
|
312
318
|
tip: "导出 Markdown",
|
|
313
|
-
onClick:
|
|
314
|
-
children: /* @__PURE__ */ o(
|
|
319
|
+
onClick: eo,
|
|
320
|
+
children: /* @__PURE__ */ o(ko, {})
|
|
315
321
|
}),
|
|
316
|
-
|
|
322
|
+
x && /* @__PURE__ */ o(i, {
|
|
317
323
|
tip: "导出 PNG",
|
|
318
324
|
onClick: () => {
|
|
319
|
-
|
|
325
|
+
x();
|
|
320
326
|
},
|
|
321
|
-
children: /* @__PURE__ */ o(
|
|
327
|
+
children: /* @__PURE__ */ o(fo, {})
|
|
322
328
|
}),
|
|
323
|
-
|
|
329
|
+
O && A && /* @__PURE__ */ o(i, {
|
|
324
330
|
tip: "导出 PDF(按锦点顺序)",
|
|
325
331
|
onClick: () => {
|
|
326
|
-
|
|
332
|
+
O();
|
|
327
333
|
},
|
|
328
|
-
children: /* @__PURE__ */ o(
|
|
334
|
+
children: /* @__PURE__ */ o(wo, {})
|
|
329
335
|
}),
|
|
330
336
|
S && /* @__PURE__ */ o(i, {
|
|
331
337
|
tip: "发布与共享",
|
|
332
338
|
onClick: S,
|
|
333
|
-
children: /* @__PURE__ */ o(
|
|
339
|
+
children: /* @__PURE__ */ o(zo, {})
|
|
334
340
|
})
|
|
335
341
|
]
|
|
336
342
|
})
|
|
@@ -338,8 +344,8 @@ function $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup:
|
|
|
338
344
|
});
|
|
339
345
|
}
|
|
340
346
|
export {
|
|
341
|
-
|
|
342
|
-
|
|
347
|
+
Do as FlowZoomControls,
|
|
348
|
+
Wo as default
|
|
343
349
|
};
|
|
344
350
|
|
|
345
351
|
//# sourceMappingURL=FlowToolbar.js.map
|