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.
Files changed (82) hide show
  1. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +1 -2
  2. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  3. package/dist/components/pro/CodeEditor/themes.js +0 -25
  4. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  5. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  6. package/dist/components/pro/Flow/Flow.js +500 -483
  7. package/dist/components/pro/Flow/Flow.js.map +1 -1
  8. package/dist/components/pro/Flow/FlowCanvas.js +526 -524
  9. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  10. package/dist/components/pro/Flow/canvas/GridRenderer.d.ts +3 -0
  11. package/dist/components/pro/Flow/canvas/GridRenderer.js +28 -23
  12. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  13. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +18 -17
  14. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  15. package/dist/components/pro/Flow/canvas/PixiApp.d.ts +2 -0
  16. package/dist/components/pro/Flow/canvas/PixiApp.js +14 -11
  17. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  18. package/dist/components/pro/Flow/constants.js +7 -7
  19. package/dist/components/pro/Flow/constants.js.map +1 -1
  20. package/dist/components/pro/Flow/context/FlowAIContext.d.ts +15 -0
  21. package/dist/components/pro/Flow/context/FlowAIContext.js +32 -0
  22. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -0
  23. package/dist/components/pro/Flow/context/FlowUIContext.d.ts +4 -1
  24. package/dist/components/pro/Flow/context/FlowUIContext.js +58 -55
  25. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  26. package/dist/components/pro/Flow/edges/EdgeRenderer.js +22 -21
  27. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  28. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +32 -32
  29. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  30. package/dist/components/pro/Flow/hooks/usePixiApp.d.ts +6 -1
  31. package/dist/components/pro/Flow/hooks/usePixiApp.js +49 -30
  32. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  33. package/dist/components/pro/Flow/index.d.ts +2 -0
  34. package/dist/components/pro/Flow/lines/FreehandTool.js +21 -20
  35. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  36. package/dist/components/pro/Flow/lines/GeometricLineTool.js +22 -18
  37. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  38. package/dist/components/pro/Flow/lines/LineRenderer.js +19 -18
  39. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  40. package/dist/components/pro/Flow/nodes/MediaContent.js +143 -124
  41. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  42. package/dist/components/pro/Flow/nodes/MediaOverlay.js +22 -17
  43. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  44. package/dist/components/pro/Flow/nodes/NodeRenderer.js +77 -76
  45. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  46. package/dist/components/pro/Flow/nodes/aiClient.d.ts +22 -0
  47. package/dist/components/pro/Flow/nodes/aiClient.js +107 -54
  48. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  49. package/dist/components/pro/Flow/nodes/svgIcons.js +6 -6
  50. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  51. package/dist/components/pro/Flow/panels/AIPanel.d.ts +2 -0
  52. package/dist/components/pro/Flow/panels/AIPanel.js +498 -0
  53. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -0
  54. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +51 -39
  55. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  56. package/dist/components/pro/Flow/panels/FlowToolbar.js +91 -85
  57. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  58. package/dist/components/pro/Flow/panels/InspectorPanel.js +372 -332
  59. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  60. package/dist/components/pro/Flow/panels/OutlinePanel.js +28 -27
  61. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  62. package/dist/components/pro/Flow/panels/ShapePalette.js +107 -104
  63. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  64. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +1 -0
  65. package/dist/components/pro/Flow/panels/toolbarIcons.js +25 -20
  66. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  67. package/dist/components/pro/Flow/types.d.ts +13 -0
  68. package/dist/components/pro/Flow/types.js.map +1 -1
  69. package/dist/components/pro/Flow/utils/themeColor.d.ts +87 -0
  70. package/dist/components/pro/Flow/utils/themeColor.js +212 -0
  71. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -0
  72. package/dist/contexts/AppContext.d.ts +1 -1
  73. package/dist/contexts/AppContext.js +28 -29
  74. package/dist/contexts/AppContext.js.map +1 -1
  75. package/dist/dishui.css +1 -1
  76. package/dist/favicon.svg +10 -0
  77. package/dist/flow.js +56 -51
  78. package/dist/styles/themeStyles.js +6 -11
  79. package/dist/styles/themeStyles.js.map +1 -1
  80. package/dist/utils/themes.js +3 -23
  81. package/dist/utils/themes.js.map +1 -1
  82. package/package.json +17 -18
@@ -1,38 +1,41 @@
1
- import W from "../../../Button/index.js";
2
- import { useDraggablePanel as C } from "../hooks/useDraggablePanel.js";
3
- import { useResizablePanel as P } from "../hooks/useResizablePanel.js";
4
- import { useCallback as x, useEffect as z, useRef as R, useState as $ } from "react";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
- function B({ tabs: l, defaultTab: m, className: u, resizeEdge: r, defaultWidth: w, style: v, onDetach: s, onAttach: d, isDetached: i }) {
7
- const [c, f] = $(m ?? l[0]?.id), { panelStyle: N, handleProps: p } = C(), { panelWidth: b, resizeHandleProps: g } = P(r, w), h = R(null), k = x((e) => {
8
- const t = h.current;
9
- t && (t.scrollWidth <= t.clientWidth || e.deltaY !== 0 && (t.scrollLeft += e.deltaY, e.preventDefault()));
10
- }, []);
11
- if (z(() => {
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__ */ o("div", {
16
- className: `${u ?? "flow-palette"}${i ? " flow-panel--detached" : " flow-panel--docked"}`,
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
- ...v,
20
- ...i ? N : void 0,
21
- width: b
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--${r}`,
26
- ...g
29
+ className: `flow-panel-resize-handle flow-panel-resize-handle--${s}`,
30
+ ...C
27
31
  }),
28
- l.length > 1 ? /* @__PURE__ */ o("div", {
32
+ l.length > 1 ? /* @__PURE__ */ i("div", {
29
33
  className: "flow-panel-tabs-row",
30
- ...i ? p : {},
34
+ ...t ? p : {},
31
35
  children: [/* @__PURE__ */ a("div", {
32
36
  className: "flow-panel-tabs",
33
37
  ref: h,
34
- onWheel: k,
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
- }), s && /* @__PURE__ */ a("button", {
48
+ }), o && /* @__PURE__ */ a("button", {
46
49
  className: "flow-panel-detach-btn",
47
50
  title: "Detach tab",
48
- onClick: () => s(n.id),
51
+ onClick: () => o(n.id),
49
52
  children: "⬈"
50
53
  })]
51
- }) : /* @__PURE__ */ o("div", {
54
+ }) : /* @__PURE__ */ i("div", {
52
55
  className: "flow-panel-header-single",
53
- ...i ? p : {},
54
- children: [/* @__PURE__ */ o("span", {
55
- className: "flow-panel-header-label",
56
- children: [n.icon && /* @__PURE__ */ a("span", {
57
- className: "flow-panel-tab-icon",
58
- children: n.icon
59
- }), n.label]
60
- }), i && d && /* @__PURE__ */ a("button", {
61
- className: "flow-panel-detach-btn",
62
- title: "Attach back",
63
- onClick: () => d(n.id),
64
- children: ""
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
- B as default
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, useCallback, 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 // Translate vertical wheel scrolling into horizontal tab scrolling, so the\n // overflowing tabs are reachable with a normal mouse wheel / trackpad.\n const onTabsWheel = useCallback((e: React.WheelEvent<HTMLDivElement>) => {\n const el = tabsScrollRef.current;\n if (!el) return;\n if (el.scrollWidth <= el.clientWidth) return;\n if (e.deltaY !== 0) {\n el.scrollLeft += e.deltaY;\n e.preventDefault();\n }\n }, []);\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} onWheel={onTabsWheel}>\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 </div>\n )}\n <div className=\"flow-palette-content\">\n {current.content}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
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 eo from "../../../Button/index.js";
2
- import { useFlowContext as to } from "../context/FlowContext.js";
3
- import { useFlowUI as T } from "../context/FlowUIContext.js";
4
- import no from "./ProjectTitle.js";
5
- import { downloadDataURL as B, safeFileBaseName as E, useFlowImportExport as lo } from "../hooks/useFlowImportExport.js";
6
- import { useLayoutActions as co } from "../hooks/useLayoutActions.js";
7
- import { IconAlign as d, IconAnchorVisible as ro, IconAutoFocus as so, IconBack as ao, IconExportJson as ho, IconExportMarkdown as po, IconExportPdf as mo, IconExportPng as uo, IconFitView as ko, IconGeoGroup as wo, IconGrid as fo, IconGroup as bo, IconImport as vo, IconInspector as Co, IconJson as Io, IconLayer as C, IconMiniMap as No, IconOutline as go, IconPresent as xo, IconPublish as Oo, IconRedo as zo, IconShapes as So, IconUndo as yo, IconUngroup as Fo, IconZoomIn as Ao, IconZoomOut as Mo } from "./toolbarIcons.js";
8
- import { useCallback as I, useRef as jo } from "react";
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 Vo() {
11
- const { viewport: n, setViewport: l, autoFocus: r, setAutoFocus: u } = T(), k = Math.round(n.zoom * 100);
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(Mo, {})
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(Ao, {})
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(ko, {})
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(so, {})
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(eo, {
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 $o({ onBack: n, onUndo: l, onRedo: r, canUndo: u, canRedo: k, onGroup: p, onGeoGroup: a, onUngroup: f, onExportPNG: O, onExportPDF: z, onPublish: S }) {
82
- const { showGrid: y, setShowGrid: V, showPalette: F, setShowPalette: $, showInspector: A, setShowInspector: q, showOutline: M, setShowOutline: D, showJson: j, setShowJson: W, showMiniMap: R, setShowMiniMap: H, showAnchors: b, setShowAnchors: K, presentation: J, setPresentation: Q } = T(), { doc: w, selection: h, currentCanvas: X } = to(), { exportJSON: L, importJSON: Z, exportMarkdown: P } = lo(), { align: m, distribute: U, changeZIndex: v } = co(), G = jo(null), g = h.nodeIds.size + h.lineIds.size, Y = h.nodeIds.size > 0 && X.nodes.some((t) => h.nodeIds.has(t.id) && (t.type === "flowGroup" || t.type === "geometryGroup" || t.data.isGroup)), x = Object.values(w.canvases).some((t) => t.nodes.some((s) => s.type === "animAnchor")), _ = I(() => {
83
- const t = L(), s = new Blob([t], { type: "application/json" }), c = URL.createObjectURL(s);
84
- B(c, `${E(w.title)}.json`), URL.revokeObjectURL(c);
85
- }, [L, w.title]), oo = I(() => {
86
- const t = P(), s = new Blob([t], { type: "text/markdown" }), c = URL.createObjectURL(s);
87
- B(c, `${E(w.title)}.md`), URL.revokeObjectURL(c);
88
- }, [P, w.title]), io = I(() => {
89
- G.current?.click();
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: G,
95
+ ref: B,
96
96
  type: "file",
97
97
  accept: ".json",
98
98
  style: { display: "none" },
99
- onChange: I((t) => {
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" && Z(c.result);
104
+ typeof c.result == "string" && P(c.result);
105
105
  }, c.readAsText(s), t.target.value = "";
106
- }, [Z])
106
+ }, [P])
107
107
  }),
108
- /* @__PURE__ */ o(no, {}),
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(ao, {})
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(yo, {})
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(zo, {})
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: () => U("horizontal"),
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: () => U("vertical"),
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: () => v("front"),
186
- children: /* @__PURE__ */ o(C, { kind: "front" })
185
+ onClick: () => b("front"),
186
+ children: /* @__PURE__ */ o(v, { kind: "front" })
187
187
  }),
188
188
  /* @__PURE__ */ o(i, {
189
189
  tip: "上移一层",
190
- onClick: () => v("up"),
191
- children: /* @__PURE__ */ o(C, { kind: "up" })
190
+ onClick: () => b("up"),
191
+ children: /* @__PURE__ */ o(v, { kind: "up" })
192
192
  }),
193
193
  /* @__PURE__ */ o(i, {
194
194
  tip: "下移一层",
195
- onClick: () => v("down"),
196
- children: /* @__PURE__ */ o(C, { kind: "down" })
195
+ onClick: () => b("down"),
196
+ children: /* @__PURE__ */ o(v, { kind: "down" })
197
197
  }),
198
198
  /* @__PURE__ */ o(i, {
199
199
  tip: "置于底层",
200
- onClick: () => v("back"),
201
- children: /* @__PURE__ */ o(C, { kind: "back" })
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(bo, {})
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(wo, {})
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: !Y,
227
- children: /* @__PURE__ */ o(Fo, {})
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: y,
238
- onClick: () => V(!y),
239
- children: /* @__PURE__ */ o(fo, {})
237
+ active: z,
238
+ onClick: () => $(!z),
239
+ children: /* @__PURE__ */ o(vo, {})
240
240
  }),
241
241
  /* @__PURE__ */ o(i, {
242
242
  tip: "缩略图",
243
- active: R,
244
- onClick: () => H(!R),
245
- children: /* @__PURE__ */ o(No, {})
243
+ active: J,
244
+ onClick: () => Q(!J),
245
+ children: /* @__PURE__ */ o(xo, {})
246
246
  }),
247
247
  /* @__PURE__ */ o(i, {
248
- tip: b ? "隐藏所有 Anchor 对象" : "显示所有 Anchor 对象",
249
- active: b,
250
- disabled: !x,
248
+ tip: I ? "隐藏所有 Anchor 对象" : "显示所有 Anchor 对象",
249
+ active: I,
250
+ disabled: !A,
251
251
  onClick: () => {
252
- x && K(!b);
252
+ A && X(!I);
253
253
  },
254
- children: /* @__PURE__ */ o(ro, { visible: b })
254
+ children: /* @__PURE__ */ o(ho, { visible: I })
255
255
  }),
256
256
  /* @__PURE__ */ o(i, {
257
257
  tip: "动画预览",
258
- active: J !== null,
259
- onClick: () => Q(J ? null : {
258
+ active: L !== null,
259
+ onClick: () => Y(L ? null : {
260
260
  current: 0,
261
261
  showAnchor: !1
262
262
  }),
263
- children: /* @__PURE__ */ o(xo, {})
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: F,
274
- onClick: () => $(!F),
275
- children: /* @__PURE__ */ o(So, {})
273
+ active: y,
274
+ onClick: () => q(!y),
275
+ children: /* @__PURE__ */ o(Fo, {})
276
276
  }),
277
277
  /* @__PURE__ */ o(i, {
278
278
  tip: "属性面板",
279
- active: A,
280
- onClick: () => q(!A),
281
- children: /* @__PURE__ */ o(Co, {})
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: () => D(!M),
287
- children: /* @__PURE__ */ o(go, {})
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: () => W(!j),
293
- children: /* @__PURE__ */ o(Io, {})
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: io,
304
- children: /* @__PURE__ */ o(vo, {})
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(ho, {})
314
+ onClick: io,
315
+ children: /* @__PURE__ */ o(uo, {})
310
316
  }),
311
317
  /* @__PURE__ */ o(i, {
312
318
  tip: "导出 Markdown",
313
- onClick: oo,
314
- children: /* @__PURE__ */ o(po, {})
319
+ onClick: eo,
320
+ children: /* @__PURE__ */ o(ko, {})
315
321
  }),
316
- O && /* @__PURE__ */ o(i, {
322
+ x && /* @__PURE__ */ o(i, {
317
323
  tip: "导出 PNG",
318
324
  onClick: () => {
319
- O();
325
+ x();
320
326
  },
321
- children: /* @__PURE__ */ o(uo, {})
327
+ children: /* @__PURE__ */ o(fo, {})
322
328
  }),
323
- z && x && /* @__PURE__ */ o(i, {
329
+ O && A && /* @__PURE__ */ o(i, {
324
330
  tip: "导出 PDF(按锦点顺序)",
325
331
  onClick: () => {
326
- z();
332
+ O();
327
333
  },
328
- children: /* @__PURE__ */ o(mo, {})
334
+ children: /* @__PURE__ */ o(wo, {})
329
335
  }),
330
336
  S && /* @__PURE__ */ o(i, {
331
337
  tip: "发布与共享",
332
338
  onClick: S,
333
- children: /* @__PURE__ */ o(Oo, {})
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
- Vo as FlowZoomControls,
342
- $o as default
347
+ Do as FlowZoomControls,
348
+ Wo as default
343
349
  };
344
350
 
345
351
  //# sourceMappingURL=FlowToolbar.js.map