dishui 0.0.64 → 0.0.66

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 (504) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +10 -11
  2. package/dist/chart.js +12 -46
  3. package/dist/code-editor.js +16 -43
  4. package/dist/components/Badge/index.js +11 -13
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Button/index.js +62 -86
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Card/index.d.ts +87 -0
  9. package/dist/components/Card/index.js +178 -44
  10. package/dist/components/Card/index.js.map +1 -1
  11. package/dist/components/Chart/Chart.js +25 -25
  12. package/dist/components/Chart/Chart.js.map +1 -1
  13. package/dist/components/Checkbox/index.js +57 -63
  14. package/dist/components/Checkbox/index.js.map +1 -1
  15. package/dist/components/ChoicePicker/index.d.ts +44 -0
  16. package/dist/components/ChoicePicker/index.js +81 -0
  17. package/dist/components/ChoicePicker/index.js.map +1 -0
  18. package/dist/components/Column/index.d.ts +28 -0
  19. package/dist/components/Column/index.js +30 -0
  20. package/dist/components/Column/index.js.map +1 -0
  21. package/dist/components/DateTimeInput/index.d.ts +44 -0
  22. package/dist/components/DateTimeInput/index.js +48 -0
  23. package/dist/components/DateTimeInput/index.js.map +1 -0
  24. package/dist/components/Demo/index.js +107 -107
  25. package/dist/components/Demo/index.js.map +1 -1
  26. package/dist/components/Divider/index.d.ts +20 -0
  27. package/dist/components/Divider/index.js +30 -0
  28. package/dist/components/Divider/index.js.map +1 -0
  29. package/dist/components/EmptyState/index.d.ts +4 -1
  30. package/dist/components/EmptyState/index.js +24 -24
  31. package/dist/components/EmptyState/index.js.map +1 -1
  32. package/dist/components/FileUploader/DropZone.js +134 -136
  33. package/dist/components/FileUploader/DropZone.js.map +1 -1
  34. package/dist/components/FileUploader/FileItem.js +159 -163
  35. package/dist/components/FileUploader/FileItem.js.map +1 -1
  36. package/dist/components/FileUploader/FileUploader.js +126 -127
  37. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  38. package/dist/components/FileUploader/UploadQueue.js +62 -62
  39. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  40. package/dist/components/FloatWindow/index.d.ts +28 -0
  41. package/dist/components/GridLayout/index.d.ts +42 -0
  42. package/dist/components/Icon/index.d.ts +24 -0
  43. package/dist/components/Icon/index.js +26 -0
  44. package/dist/components/Icon/index.js.map +1 -0
  45. package/dist/components/Image/index.d.ts +33 -0
  46. package/dist/components/Image/index.js +44 -0
  47. package/dist/components/Image/index.js.map +1 -0
  48. package/dist/components/Input/index.js +196 -197
  49. package/dist/components/Input/index.js.map +1 -1
  50. package/dist/components/Label/index.js +62 -73
  51. package/dist/components/Label/index.js.map +1 -1
  52. package/dist/components/Layout/index.js +134 -139
  53. package/dist/components/Layout/index.js.map +1 -1
  54. package/dist/components/List/index.js +45 -43
  55. package/dist/components/List/index.js.map +1 -1
  56. package/dist/components/Markdown/Markdown.js +106 -103
  57. package/dist/components/Markdown/Markdown.js.map +1 -1
  58. package/dist/components/Markdown/codeThemes.js +24 -33
  59. package/dist/components/Markdown/codeThemes.js.map +1 -1
  60. package/dist/components/Markdown/markdownComponents.js +203 -208
  61. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  62. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  63. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  64. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  65. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  66. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  67. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  68. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  69. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  70. package/dist/components/Modal/index.d.ts +7 -3
  71. package/dist/components/Modal/index.js +82 -70
  72. package/dist/components/Modal/index.js.map +1 -1
  73. package/dist/components/MultipleChoice/index.d.ts +44 -0
  74. package/dist/components/MultipleChoice/index.js +52 -0
  75. package/dist/components/MultipleChoice/index.js.map +1 -0
  76. package/dist/components/Notification/index.d.ts +17 -0
  77. package/dist/components/Page/index.d.ts +58 -0
  78. package/dist/components/Page/index.js +43 -0
  79. package/dist/components/Page/index.js.map +1 -0
  80. package/dist/components/PageHeader/index.js +28 -28
  81. package/dist/components/PageHeader/index.js.map +1 -1
  82. package/dist/components/ProtectedRoute/index.js +8 -9
  83. package/dist/components/ProtectedRoute/index.js.map +1 -1
  84. package/dist/components/Row/index.d.ts +28 -0
  85. package/dist/components/Row/index.js +30 -0
  86. package/dist/components/Row/index.js.map +1 -0
  87. package/dist/components/Select/index.js +251 -257
  88. package/dist/components/Select/index.js.map +1 -1
  89. package/dist/components/SidebarToggleButton/index.js +56 -59
  90. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  91. package/dist/components/Slider/index.d.ts +39 -0
  92. package/dist/components/Slider/index.js +52 -0
  93. package/dist/components/Slider/index.js.map +1 -0
  94. package/dist/components/StatCard/index.d.ts +31 -1
  95. package/dist/components/StatCard/index.js +189 -58
  96. package/dist/components/StatCard/index.js.map +1 -1
  97. package/dist/components/Switch/index.d.ts +34 -0
  98. package/dist/components/Switch/index.js +55 -0
  99. package/dist/components/Switch/index.js.map +1 -0
  100. package/dist/components/Tab/index.d.ts +40 -0
  101. package/dist/components/Table/index.js +109 -103
  102. package/dist/components/Table/index.js.map +1 -1
  103. package/dist/components/Tabs/index.d.ts +19 -5
  104. package/dist/components/Tabs/index.js +30 -21
  105. package/dist/components/Tabs/index.js.map +1 -1
  106. package/dist/components/Text/index.d.ts +43 -0
  107. package/dist/components/Text/index.js +55 -0
  108. package/dist/components/Text/index.js.map +1 -0
  109. package/dist/components/Tooltip/index.d.ts +23 -0
  110. package/dist/components/Tooltip/index.js +34 -0
  111. package/dist/components/Tooltip/index.js.map +1 -0
  112. package/dist/components/Tree/Tree.js +205 -205
  113. package/dist/components/Tree/Tree.js.map +1 -1
  114. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  115. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  117. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  118. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  119. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  120. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  121. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  122. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  123. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  124. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  125. package/dist/components/pro/Calendar/index.d.ts +7 -0
  126. package/dist/components/pro/Calendar/types.d.ts +151 -0
  127. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  128. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  129. package/dist/components/pro/Chat/index.d.ts +2 -0
  130. package/dist/components/pro/Chat/types.d.ts +84 -0
  131. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -320
  132. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -221
  134. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  136. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  138. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  140. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  142. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  144. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  146. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  148. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  150. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  152. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  154. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  156. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  158. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  159. package/dist/components/pro/CodeEditor/themes.js +513 -483
  160. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  161. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  162. package/dist/components/pro/CodeEditor/utils.js +171 -175
  163. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  164. package/dist/components/pro/DataTable/DataTable.js +305 -305
  165. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  166. package/dist/components/pro/DataTable/Filters.js +299 -314
  167. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  168. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  169. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  170. package/dist/components/pro/DataTable/PivotView.js +142 -141
  171. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  173. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  175. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  177. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  179. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  181. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  182. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  183. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  184. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  185. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  186. package/dist/components/pro/DataTable/extension.js +5 -5
  187. package/dist/components/pro/DataTable/extension.js.map +1 -1
  188. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  189. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  190. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  191. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  192. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  193. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  194. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  195. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  196. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  197. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  198. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  199. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  200. package/dist/components/pro/DataTable/utils.js +156 -168
  201. package/dist/components/pro/DataTable/utils.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  203. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  205. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  207. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/FileIcon.js +190 -190
  209. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  211. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  212. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  213. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  214. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  215. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  216. package/dist/components/pro/Flow/Flow.js +920 -946
  217. package/dist/components/pro/Flow/Flow.js.map +1 -1
  218. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1663
  219. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/build.js +85 -94
  221. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/convert.js +512 -519
  223. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/palette.js +87 -104
  225. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  226. package/dist/components/pro/Flow/archify/presets.js +34 -37
  227. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  228. package/dist/components/pro/Flow/archify/spec.js +7 -7
  229. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  231. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  233. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  235. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  237. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  238. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  239. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  240. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  241. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  242. package/dist/components/pro/Flow/constants.js +266 -278
  243. package/dist/components/pro/Flow/constants.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  245. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  247. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  248. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  249. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  251. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  252. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  253. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  254. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  255. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  257. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  259. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  261. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  263. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  265. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  267. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  269. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  271. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -182
  273. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  275. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  277. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  279. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  281. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  283. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  285. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  287. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  288. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  289. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  290. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  291. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  293. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  295. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  296. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  297. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  298. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  299. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -222
  301. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  303. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  305. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  307. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  309. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  311. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  313. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  315. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  317. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  319. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  321. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/shapes.js +556 -591
  323. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  324. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  325. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  326. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  327. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  329. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  331. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  333. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  335. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  337. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  339. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  341. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  343. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -244
  345. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -138
  347. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  349. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  350. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -567
  351. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  352. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  353. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  354. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  355. package/dist/components/pro/Flow/types.js +26 -26
  356. package/dist/components/pro/Flow/types.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  358. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  360. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  361. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  362. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  363. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  364. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  365. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  366. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  367. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  368. package/dist/components/pro/Gantt/index.d.ts +6 -0
  369. package/dist/components/pro/Gantt/types.d.ts +478 -0
  370. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  371. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  372. package/dist/components/pro/Resizable/index.d.ts +2 -0
  373. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  374. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  376. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  378. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  380. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  382. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  384. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  386. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  388. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  390. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  392. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  394. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  396. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  398. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  400. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  402. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  404. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  406. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  408. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  410. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  412. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  413. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  414. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  415. package/dist/components/pro/RichTextEditor/types.js +75 -75
  416. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  417. package/dist/contexts/AppContext.d.ts +1 -1
  418. package/dist/contexts/AppContext.js +216 -221
  419. package/dist/contexts/AppContext.js.map +1 -1
  420. package/dist/data-table.js +15 -41
  421. package/dist/data-table.js.map +1 -1
  422. package/dist/dishui.css +1 -1
  423. package/dist/flow.js +27 -83
  424. package/dist/hooks/useClickOutside.js +18 -18
  425. package/dist/hooks/useClickOutside.js.map +1 -1
  426. package/dist/hooks/useContainerElement.js +9 -9
  427. package/dist/hooks/useContainerElement.js.map +1 -1
  428. package/dist/hooks/useControllableState.js +33 -35
  429. package/dist/hooks/useControllableState.js.map +1 -1
  430. package/dist/hooks/useCopyToClipboard.js +16 -16
  431. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  432. package/dist/hooks/useDebounce.js +14 -14
  433. package/dist/hooks/useDebounce.js.map +1 -1
  434. package/dist/hooks/useDraggable.js +50 -50
  435. package/dist/hooks/useDraggable.js.map +1 -1
  436. package/dist/hooks/useTableColumns.js +39 -42
  437. package/dist/hooks/useTableColumns.js.map +1 -1
  438. package/dist/hooks/useTableData.js +67 -68
  439. package/dist/hooks/useTableData.js.map +1 -1
  440. package/dist/index-nostyled.d.ts +8 -0
  441. package/dist/index.d.ts +29 -1
  442. package/dist/index.js +106 -236
  443. package/dist/layouts/MainLayout.js +56 -56
  444. package/dist/layouts/MainLayout.js.map +1 -1
  445. package/dist/layouts/Navbar.js +214 -214
  446. package/dist/layouts/Navbar.js.map +1 -1
  447. package/dist/layouts/Sidebar.js +184 -165
  448. package/dist/layouts/Sidebar.js.map +1 -1
  449. package/dist/layouts/headbar/Headbar.js +25 -25
  450. package/dist/layouts/headbar/Headbar.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  452. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  454. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  455. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  456. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  457. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  458. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  459. package/dist/lite.js +9 -24
  460. package/dist/markdown.js +4 -9
  461. package/dist/pages/components/Calendar/index.d.ts +3 -0
  462. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  463. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  464. package/dist/pages/components/Chat/index.d.ts +3 -0
  465. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  466. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  467. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  468. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  469. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  470. package/dist/pages/components/Gantt/index.d.ts +3 -0
  471. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  472. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  473. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  474. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  475. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  476. package/dist/pages/components/Notification/index.d.ts +3 -0
  477. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  478. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  479. package/dist/pages/components/Resizable/index.d.ts +3 -0
  480. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  481. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  482. package/dist/pages/components/Tab/index.d.ts +3 -0
  483. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  484. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  485. package/dist/styles/themeStyles.js +87 -86
  486. package/dist/styles/themeStyles.js.map +1 -1
  487. package/dist/utils/cn.d.ts +13 -0
  488. package/dist/utils/cn.js +16 -0
  489. package/dist/utils/cn.js.map +1 -0
  490. package/dist/utils/i18n.js +690 -602
  491. package/dist/utils/i18n.js.map +1 -1
  492. package/dist/utils/menu.js +94 -94
  493. package/dist/utils/menu.js.map +1 -1
  494. package/dist/utils/rehype-code-meta.js +14 -14
  495. package/dist/utils/rehype-code-meta.js.map +1 -1
  496. package/dist/utils/remark-code-meta.js +9 -9
  497. package/dist/utils/remark-code-meta.js.map +1 -1
  498. package/dist/utils/routerBuilder.js +59 -58
  499. package/dist/utils/routerBuilder.js.map +1 -1
  500. package/dist/utils/selection.js +28 -29
  501. package/dist/utils/selection.js.map +1 -1
  502. package/dist/utils/themes.js +275 -255
  503. package/dist/utils/themes.js.map +1 -1
  504. package/package.json +23 -10
@@ -1,1810 +1,1804 @@
1
- import g from "../../../Button/index.js";
2
- import b from "../../../Input/index.js";
1
+ import e from "../../../Button/index.js";
2
+ import t from "../../../Input/index.js";
3
3
  import n from "../../../Label/index.js";
4
- import W from "../../../Checkbox/index.js";
5
- import y from "../../../Select/index.js";
6
- import { BORDER_STYLE_OPTIONS as le, DEFAULT_NODE_DATA as te, EDGE_LINE_STYLE_OPTIONS as J, EDGE_MARKER_OPTIONS as Z, EDGE_TYPE_OPTIONS as se } from "../constants.js";
7
- import { useFlowContext as ie } from "../context/FlowContext.js";
8
- import { useFlowUI as ae } from "../context/FlowUIContext.js";
9
- import { COMMON_COLORS as H, THEME_SYNC_TOKEN as oe, isThemeToken as ne, resolveThemeColor as re, themeTokenCssVar as ce } from "../utils/themeColor.js";
10
- import { BORDER_SIDE_NAMES as de, BORDER_SIDE_TYPES as he, hasBorderSideOverrides as pe } from "../nodes/shapes.js";
11
- import { generateId as me } from "../nodes/nodeUtils.js";
12
- import { SVG_ICON_CATEGORIES as fe, buildSvgMarkup as ue, getAllSvgIcons as ve, getSvgIcon as $, getSvgIconsByCategory as we } from "../nodes/svgIcons.js";
13
- import { COMPONENT_STYLES as R } from "../archify/palette.js";
14
- import { ARCHIFY_COMPONENT_LABELS as _, ARCHIFY_COMPONENT_ORDER as j, archifyStylePatch as V } from "../archify/presets.js";
15
- import { useDraggablePanel as be } from "../hooks/useDraggablePanel.js";
16
- import { useResizablePanel as ge } from "../hooks/useResizablePanel.js";
17
- import { FLOW_NODE_TYPES as Ne } from "../types.js";
18
- import { ExpandableTextarea as K } from "./ExpandableTextarea.js";
19
- import { DataInspectorSection as xe } from "./DataInspectorSection.js";
20
- import { useMemo as A, useRef as ye, useState as ze } from "react";
21
- import { Fragment as E, jsx as e, jsxs as s } from "react/jsx-runtime";
22
- function Ue() {
23
- const { showInspector: l } = ae(), { panelStyle: c, handleProps: a } = be(), { panelWidth: o, resizeHandleProps: f } = ge("left", 240);
24
- return l ? /* @__PURE__ */ s("div", {
25
- className: "flow-inspector",
26
- "data-flow-panel": !0,
27
- style: {
28
- ...c,
29
- width: o
30
- },
31
- children: [
32
- /* @__PURE__ */ e("div", {
33
- className: "flow-panel-resize-handle flow-panel-resize-handle--left",
34
- ...f
35
- }),
36
- /* @__PURE__ */ e("div", {
37
- className: "flow-panel-drag-handle",
38
- ...a,
39
- style: {
40
- fontSize: 11,
41
- fontWeight: 600,
42
- marginBottom: 8,
43
- color: "color-mix(in oklch, var(--color-base-content) 50%, transparent)",
44
- textTransform: "uppercase",
45
- letterSpacing: "0.05em",
46
- cursor: "grab"
47
- },
48
- children: "Inspector"
49
- }),
50
- /* @__PURE__ */ e("div", {
51
- className: "flow-inspector-content",
52
- children: /* @__PURE__ */ e(Ce, {})
53
- })
54
- ]
55
- }) : null;
4
+ import r from "../../../Checkbox/index.js";
5
+ import i from "../../../Select/index.js";
6
+ import { BORDER_STYLE_OPTIONS as a, DEFAULT_NODE_DATA as o, EDGE_LINE_STYLE_OPTIONS as s, EDGE_MARKER_OPTIONS as c, EDGE_TYPE_OPTIONS as l } from "../constants.js";
7
+ import { useFlowContext as u } from "../context/FlowContext.js";
8
+ import { useFlowUI as d } from "../context/FlowUIContext.js";
9
+ import { COMMON_COLORS as f, THEME_SYNC_TOKEN as p, isThemeToken as m, resolveThemeColor as h, themeTokenCssVar as g } from "../utils/themeColor.js";
10
+ import { BORDER_SIDE_NAMES as _, BORDER_SIDE_TYPES as v, hasBorderSideOverrides as y } from "../nodes/shapes.js";
11
+ import { generateId as b } from "../nodes/nodeUtils.js";
12
+ import { SVG_ICON_CATEGORIES as x, buildSvgMarkup as S, getAllSvgIcons as C, getSvgIcon as w, getSvgIconsByCategory as T } from "../nodes/svgIcons.js";
13
+ import { COMPONENT_STYLES as E } from "../archify/palette.js";
14
+ import { ARCHIFY_COMPONENT_LABELS as D, ARCHIFY_COMPONENT_ORDER as O, archifyStylePatch as k } from "../archify/presets.js";
15
+ import { useDraggablePanel as A } from "../hooks/useDraggablePanel.js";
16
+ import { useResizablePanel as j } from "../hooks/useResizablePanel.js";
17
+ import { FLOW_NODE_TYPES as M } from "../types.js";
18
+ import { ExpandableTextarea as N } from "./ExpandableTextarea.js";
19
+ import { DataInspectorSection as P } from "./DataInspectorSection.js";
20
+ import { useMemo as F, useRef as I, useState as L } from "react";
21
+ import { Fragment as R, jsx as z, jsxs as B } from "react/jsx-runtime";
22
+ //#region src/components/pro/Flow/panels/InspectorPanel.tsx
23
+ function V() {
24
+ let { showInspector: e } = d(), { panelStyle: t, handleProps: n } = A(), { panelWidth: r, resizeHandleProps: i } = j("left", 240);
25
+ return e ? /* @__PURE__ */ B("div", {
26
+ className: "flow-inspector",
27
+ "data-flow-panel": !0,
28
+ style: {
29
+ ...t,
30
+ width: r
31
+ },
32
+ children: [
33
+ /* @__PURE__ */ z("div", {
34
+ className: "flow-panel-resize-handle flow-panel-resize-handle--left",
35
+ ...i
36
+ }),
37
+ /* @__PURE__ */ z("div", {
38
+ className: "flow-panel-drag-handle",
39
+ ...n,
40
+ style: {
41
+ fontSize: 11,
42
+ fontWeight: 600,
43
+ marginBottom: 8,
44
+ color: "color-mix(in oklch, var(--color-base-content) 50%, transparent)",
45
+ textTransform: "uppercase",
46
+ letterSpacing: "0.05em",
47
+ cursor: "grab"
48
+ },
49
+ children: "Inspector"
50
+ }),
51
+ /* @__PURE__ */ z("div", {
52
+ className: "flow-inspector-content",
53
+ children: /* @__PURE__ */ z(H, {})
54
+ })
55
+ ]
56
+ }) : null;
56
57
  }
57
- function Ce() {
58
- const { currentCanvas: l, selection: c, setSelection: a, setDoc: o, currentCanvasId: f } = ie(), m = A(() => l.nodes.filter((p) => c.nodeIds.has(p.id)), [l.nodes, c.nodeIds]), t = A(() => l.edges.filter((p) => c.edgeIds.has(p.id)), [l.edges, c.edgeIds]), r = A(() => l.lines.filter((p) => c.lineIds.has(p.id)), [l.lines, c.lineIds]), N = m.length > 0 || t.length > 0 || r.length > 0, w = m.length === 1 && (m[0].type === "flowGroup" || m[0].type === "geometryGroup" || m[0].data.isGroup), z = m.length + r.length, T = (p = "flowGroup") => {
59
- if (z < 2) return;
60
- const v = 20;
61
- let h = 1 / 0, i = 1 / 0, d = -1 / 0, u = -1 / 0;
62
- for (const S of m)
63
- h = Math.min(h, S.position.x), i = Math.min(i, S.position.y), d = Math.max(d, S.position.x + S.width), u = Math.max(u, S.position.y + S.height);
64
- for (const S of r) for (const I of S.points)
65
- h = Math.min(h, I.x), i = Math.min(i, I.y), d = Math.max(d, I.x), u = Math.max(u, I.y);
66
- const M = p === "geometryGroup", B = me("group"), x = {
67
- id: B,
68
- type: p,
69
- position: {
70
- x: h - v,
71
- y: i - v
72
- },
73
- width: d - h + v * 2,
74
- height: u - i + v * 2,
75
- data: {
76
- ...te,
77
- label: M ? "Geo Group" : "Group",
78
- fill: M ? "#fefce8" : "#f0f9ff",
79
- stroke: "#9ca3af",
80
- strokeWidth: 1.5,
81
- borderStyle: M ? "dashed" : "dotted",
82
- isGroup: !0
83
- }
84
- }, F = c.nodeIds, C = c.lineIds;
85
- o((S) => {
86
- const I = S.canvases[f];
87
- return I ? {
88
- ...S,
89
- canvases: {
90
- ...S.canvases,
91
- [f]: {
92
- ...I,
93
- nodes: M ? [x, ...I.nodes] : [x, ...I.nodes.map((G) => F.has(G.id) ? {
94
- ...G,
95
- parentId: B
96
- } : G)],
97
- lines: M ? I.lines : I.lines.map((G) => C.has(G.id) ? {
98
- ...G,
99
- parentId: B
100
- } : G)
101
- }
102
- }
103
- } : S;
104
- }), a({
105
- nodeIds: /* @__PURE__ */ new Set([B]),
106
- edgeIds: /* @__PURE__ */ new Set(),
107
- lineIds: /* @__PURE__ */ new Set()
108
- });
109
- }, Y = () => {
110
- const p = /* @__PURE__ */ new Set(), v = /* @__PURE__ */ new Set(), h = /* @__PURE__ */ new Set();
111
- for (const i of m) (i.type === "flowGroup" || i.type === "geometryGroup" || i.data.isGroup) && p.add(i.id);
112
- if (p.size !== 0) {
113
- for (const i of l.nodes) i.parentId && p.has(i.parentId) && v.add(i.id);
114
- for (const i of l.lines) i.parentId && p.has(i.parentId) && h.add(i.id);
115
- o((i) => {
116
- const d = i.canvases[f];
117
- return d ? {
118
- ...i,
119
- canvases: {
120
- ...i.canvases,
121
- [f]: {
122
- ...d,
123
- nodes: d.nodes.filter((u) => !p.has(u.id)).map((u) => v.has(u.id) ? {
124
- ...u,
125
- parentId: void 0
126
- } : u),
127
- lines: d.lines.map((u) => h.has(u.id) ? {
128
- ...u,
129
- parentId: void 0
130
- } : u)
131
- }
132
- }
133
- } : i;
134
- }), a({
135
- nodeIds: v,
136
- edgeIds: /* @__PURE__ */ new Set(),
137
- lineIds: h
138
- });
139
- }
140
- }, P = (p) => {
141
- const v = c.nodeIds;
142
- v.size !== 0 && o((h) => {
143
- const i = h.canvases[f];
144
- if (!i) return h;
145
- const d = i.nodes.map((x) => x.zIndex ?? 0), u = d.length > 0 ? Math.max(...d) : 0, M = d.length > 0 ? Math.min(...d) : 0, B = i.nodes.map((x) => {
146
- if (!v.has(x.id)) return x;
147
- const F = x.zIndex ?? 0;
148
- let C = F;
149
- return p === "front" ? C = u + 1 : p === "back" ? C = M - 1 : p === "up" ? C = F + 1 : p === "down" && (C = F - 1), {
150
- ...x,
151
- zIndex: C
152
- };
153
- });
154
- return {
155
- ...h,
156
- canvases: {
157
- ...h.canvases,
158
- [f]: {
159
- ...i,
160
- nodes: B
161
- }
162
- }
163
- };
164
- });
165
- }, L = (p) => {
166
- const v = c.lineIds;
167
- v.size !== 0 && o((h) => {
168
- const i = h.canvases[f];
169
- if (!i) return h;
170
- const d = i.lines.map((x) => x.zIndex ?? 0), u = d.length > 0 ? Math.max(...d) : 0, M = d.length > 0 ? Math.min(...d) : 0, B = i.lines.map((x) => {
171
- if (!v.has(x.id)) return x;
172
- const F = x.zIndex ?? 0;
173
- let C = F;
174
- return p === "front" ? C = u + 1 : p === "back" ? C = M - 1 : p === "up" ? C = F + 1 : p === "down" && (C = F - 1), {
175
- ...x,
176
- zIndex: C
177
- };
178
- });
179
- return {
180
- ...h,
181
- canvases: {
182
- ...h.canvases,
183
- [f]: {
184
- ...i,
185
- lines: B
186
- }
187
- }
188
- };
189
- });
190
- }, k = (p, v, h) => {
191
- X(p, { [v]: h });
192
- }, X = (p, v) => {
193
- o((h) => {
194
- const i = h.canvases[f];
195
- return i ? {
196
- ...h,
197
- canvases: {
198
- ...h.canvases,
199
- [f]: {
200
- ...i,
201
- nodes: i.nodes.map((d) => d.id === p ? {
202
- ...d,
203
- data: {
204
- ...d.data,
205
- ...v
206
- }
207
- } : d)
208
- }
209
- }
210
- } : h;
211
- });
212
- }, q = (p, v, h) => {
213
- o((i) => {
214
- const d = i.canvases[f];
215
- return d ? {
216
- ...i,
217
- canvases: {
218
- ...i.canvases,
219
- [f]: {
220
- ...d,
221
- nodes: d.nodes.map((u) => u.id === p ? {
222
- ...u,
223
- [v]: h
224
- } : u)
225
- }
226
- }
227
- } : i;
228
- });
229
- }, Q = (p, v, h) => {
230
- o((i) => {
231
- const d = i.canvases[f];
232
- return d ? {
233
- ...i,
234
- canvases: {
235
- ...i.canvases,
236
- [f]: {
237
- ...d,
238
- edges: d.edges.map((u) => u.id === p ? {
239
- ...u,
240
- data: {
241
- ...u.data,
242
- [v]: h
243
- }
244
- } : u)
245
- }
246
- }
247
- } : i;
248
- });
249
- }, D = (p, v) => {
250
- o((h) => {
251
- const i = h.canvases[f];
252
- return i ? {
253
- ...h,
254
- canvases: {
255
- ...h.canvases,
256
- [f]: {
257
- ...i,
258
- nodes: i.nodes.map((d) => d.id === p ? {
259
- ...d,
260
- type: v
261
- } : d)
262
- }
263
- }
264
- } : h;
265
- });
266
- }, U = (p, v) => {
267
- o((h) => {
268
- const i = h.canvases[f];
269
- return i ? {
270
- ...h,
271
- canvases: {
272
- ...h.canvases,
273
- [f]: {
274
- ...i,
275
- edges: i.edges.map((d) => d.id === p ? {
276
- ...d,
277
- type: v
278
- } : d)
279
- }
280
- }
281
- } : h;
282
- });
283
- }, ee = (p, v, h) => {
284
- o((i) => {
285
- const d = i.canvases[f];
286
- return d ? {
287
- ...i,
288
- canvases: {
289
- ...i.canvases,
290
- [f]: {
291
- ...d,
292
- lines: d.lines.map((u) => u.id === p ? {
293
- ...u,
294
- [v]: h
295
- } : u)
296
- }
297
- }
298
- } : i;
299
- });
300
- };
301
- return /* @__PURE__ */ s(E, { children: [
302
- !N && /* @__PURE__ */ e("div", {
303
- style: {
304
- fontSize: 12,
305
- color: "color-mix(in oklch, var(--color-base-content) 40%, transparent)",
306
- textAlign: "center",
307
- padding: "20px 0"
308
- },
309
- children: "Select an element to inspect"
310
- }),
311
- m.length === 1 && /* @__PURE__ */ e(Ie, {
312
- node: m[0],
313
- isGroup: w,
314
- onUpdateData: k,
315
- onUpdateDataBatch: X,
316
- onUpdateDimension: q,
317
- onUpdateType: D
318
- }),
319
- z > 1 && /* @__PURE__ */ s("div", {
320
- className: "flow-inspector-section",
321
- children: [
322
- /* @__PURE__ */ e("div", {
323
- className: "flow-inspector-section-title",
324
- children: "Selection"
325
- }),
326
- /* @__PURE__ */ s("div", {
327
- style: {
328
- fontSize: 12,
329
- color: "color-mix(in oklch, var(--color-base-content) 50%, transparent)",
330
- marginBottom: 8
331
- },
332
- children: [
333
- m.length > 0 && `${m.length} node${m.length > 1 ? "s" : ""}`,
334
- m.length > 0 && r.length > 0 && ", ",
335
- r.length > 0 && `${r.length} line${r.length > 1 ? "s" : ""}`,
336
- " selected"
337
- ]
338
- }),
339
- /* @__PURE__ */ s("div", {
340
- style: {
341
- display: "flex",
342
- flexDirection: "column",
343
- gap: 4,
344
- width: "100%"
345
- },
346
- children: [/* @__PURE__ */ e(g, {
347
- size: "xs",
348
- onClick: () => T("flowGroup"),
349
- block: !0,
350
- children: "Group (⌘G)"
351
- }), /* @__PURE__ */ e(g, {
352
- size: "xs",
353
- variant: "ghost",
354
- onClick: () => T("geometryGroup"),
355
- block: !0,
356
- children: "Geo Group (⌘⌥G)"
357
- })]
358
- })
359
- ]
360
- }),
361
- w && /* @__PURE__ */ s("div", {
362
- className: "flow-inspector-section",
363
- children: [
364
- /* @__PURE__ */ e("div", {
365
- className: "flow-inspector-section-title",
366
- children: m[0].type === "geometryGroup" ? "Geometry Group" : "Group"
367
- }),
368
- /* @__PURE__ */ e("div", {
369
- style: {
370
- fontSize: 11,
371
- color: "color-mix(in oklch, var(--color-base-content) 45%, transparent)",
372
- marginBottom: 6
373
- },
374
- children: m[0].type === "geometryGroup" ? "Auto-binds spatially contained nodes" : "Explicit membership via add/remove"
375
- }),
376
- /* @__PURE__ */ e(g, {
377
- size: "xs",
378
- variant: "ghost",
379
- onClick: Y,
380
- block: !0,
381
- children: "Ungroup (⌘⇧G)"
382
- })
383
- ]
384
- }),
385
- m.length > 0 && /* @__PURE__ */ s("div", {
386
- className: "flow-inspector-section",
387
- children: [/* @__PURE__ */ e("div", {
388
- className: "flow-inspector-section-title",
389
- children: "Layer"
390
- }), /* @__PURE__ */ s("div", {
391
- style: {
392
- display: "flex",
393
- gap: 4
394
- },
395
- children: [
396
- /* @__PURE__ */ e(g, {
397
- size: "xs",
398
- variant: "ghost",
399
- onClick: () => P("front"),
400
- children: /* @__PURE__ */ e("span", {
401
- title: "Bring to Front (⌘⇧↑)",
402
- children: "⤒"
403
- })
404
- }),
405
- /* @__PURE__ */ e(g, {
406
- size: "xs",
407
- variant: "ghost",
408
- onClick: () => P("up"),
409
- children: /* @__PURE__ */ e("span", {
410
- title: "Bring Forward (⌘↑)",
411
- children: "↑"
412
- })
413
- }),
414
- /* @__PURE__ */ e(g, {
415
- size: "xs",
416
- variant: "ghost",
417
- onClick: () => P("down"),
418
- children: /* @__PURE__ */ e("span", {
419
- title: "Send Backward (⌘↓)",
420
- children: "↓"
421
- })
422
- }),
423
- /* @__PURE__ */ e(g, {
424
- size: "xs",
425
- variant: "ghost",
426
- onClick: () => P("back"),
427
- children: /* @__PURE__ */ e("span", {
428
- title: "Send to Back (⌘⇧↓)",
429
- children: "⤓"
430
- })
431
- })
432
- ]
433
- })]
434
- }),
435
- t.length === 1 && /* @__PURE__ */ e(Oe, {
436
- edge: t[0],
437
- onUpdateData: Q,
438
- onUpdateType: U
439
- }),
440
- r.length === 1 && /* @__PURE__ */ s(E, { children: [/* @__PURE__ */ e(Ee, {
441
- line: r[0],
442
- onUpdateData: ee
443
- }), /* @__PURE__ */ s("div", {
444
- className: "flow-inspector-section",
445
- children: [/* @__PURE__ */ e("div", {
446
- className: "flow-inspector-section-title",
447
- children: "Layer"
448
- }), /* @__PURE__ */ s("div", {
449
- style: {
450
- display: "flex",
451
- gap: 4
452
- },
453
- children: [
454
- /* @__PURE__ */ e(g, {
455
- size: "xs",
456
- variant: "ghost",
457
- onClick: () => L("front"),
458
- children: /* @__PURE__ */ e("span", {
459
- title: "Bring to Front",
460
- children: "⤒"
461
- })
462
- }),
463
- /* @__PURE__ */ e(g, {
464
- size: "xs",
465
- variant: "ghost",
466
- onClick: () => L("up"),
467
- children: /* @__PURE__ */ e("span", {
468
- title: "Bring Forward",
469
- children: "↑"
470
- })
471
- }),
472
- /* @__PURE__ */ e(g, {
473
- size: "xs",
474
- variant: "ghost",
475
- onClick: () => L("down"),
476
- children: /* @__PURE__ */ e("span", {
477
- title: "Send Backward",
478
- children: "↓"
479
- })
480
- }),
481
- /* @__PURE__ */ e(g, {
482
- size: "xs",
483
- variant: "ghost",
484
- onClick: () => L("back"),
485
- children: /* @__PURE__ */ e("span", {
486
- title: "Send to Back",
487
- children: "⤓"
488
- })
489
- })
490
- ]
491
- })]
492
- })] })
493
- ] });
58
+ function H() {
59
+ let { currentCanvas: t, selection: n, setSelection: r, setDoc: i, currentCanvasId: a } = u(), s = F(() => t.nodes.filter((e) => n.nodeIds.has(e.id)), [t.nodes, n.nodeIds]), c = F(() => t.edges.filter((e) => n.edgeIds.has(e.id)), [t.edges, n.edgeIds]), l = F(() => t.lines.filter((e) => n.lineIds.has(e.id)), [t.lines, n.lineIds]), d = s.length > 0 || c.length > 0 || l.length > 0, f = s.length === 1 && (s[0].type === "flowGroup" || s[0].type === "geometryGroup" || s[0].data.isGroup), p = s.length + l.length, m = (e = "flowGroup") => {
60
+ if (p < 2) return;
61
+ let t = Infinity, c = Infinity, u = -Infinity, d = -Infinity;
62
+ for (let e of s) t = Math.min(t, e.position.x), c = Math.min(c, e.position.y), u = Math.max(u, e.position.x + e.width), d = Math.max(d, e.position.y + e.height);
63
+ for (let e of l) for (let n of e.points) t = Math.min(t, n.x), c = Math.min(c, n.y), u = Math.max(u, n.x), d = Math.max(d, n.y);
64
+ let f = e === "geometryGroup", m = b("group"), h = {
65
+ id: m,
66
+ type: e,
67
+ position: {
68
+ x: t - 20,
69
+ y: c - 20
70
+ },
71
+ width: u - t + 40,
72
+ height: d - c + 40,
73
+ data: {
74
+ ...o,
75
+ label: f ? "Geo Group" : "Group",
76
+ fill: f ? "#fefce8" : "#f0f9ff",
77
+ stroke: "#9ca3af",
78
+ strokeWidth: 1.5,
79
+ borderStyle: f ? "dashed" : "dotted",
80
+ isGroup: !0
81
+ }
82
+ }, g = n.nodeIds, _ = n.lineIds;
83
+ i((e) => {
84
+ let t = e.canvases[a];
85
+ return t ? {
86
+ ...e,
87
+ canvases: {
88
+ ...e.canvases,
89
+ [a]: {
90
+ ...t,
91
+ nodes: f ? [h, ...t.nodes] : [h, ...t.nodes.map((e) => g.has(e.id) ? {
92
+ ...e,
93
+ parentId: m
94
+ } : e)],
95
+ lines: f ? t.lines : t.lines.map((e) => _.has(e.id) ? {
96
+ ...e,
97
+ parentId: m
98
+ } : e)
99
+ }
100
+ }
101
+ } : e;
102
+ }), r({
103
+ nodeIds: /* @__PURE__ */ new Set([m]),
104
+ edgeIds: /* @__PURE__ */ new Set(),
105
+ lineIds: /* @__PURE__ */ new Set()
106
+ });
107
+ }, h = () => {
108
+ let e = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
109
+ for (let t of s) (t.type === "flowGroup" || t.type === "geometryGroup" || t.data.isGroup) && e.add(t.id);
110
+ if (e.size !== 0) {
111
+ for (let r of t.nodes) r.parentId && e.has(r.parentId) && n.add(r.id);
112
+ for (let n of t.lines) n.parentId && e.has(n.parentId) && o.add(n.id);
113
+ i((t) => {
114
+ let r = t.canvases[a];
115
+ return r ? {
116
+ ...t,
117
+ canvases: {
118
+ ...t.canvases,
119
+ [a]: {
120
+ ...r,
121
+ nodes: r.nodes.filter((t) => !e.has(t.id)).map((e) => n.has(e.id) ? {
122
+ ...e,
123
+ parentId: void 0
124
+ } : e),
125
+ lines: r.lines.map((e) => o.has(e.id) ? {
126
+ ...e,
127
+ parentId: void 0
128
+ } : e)
129
+ }
130
+ }
131
+ } : t;
132
+ }), r({
133
+ nodeIds: n,
134
+ edgeIds: /* @__PURE__ */ new Set(),
135
+ lineIds: o
136
+ });
137
+ }
138
+ }, g = (e) => {
139
+ let t = n.nodeIds;
140
+ t.size !== 0 && i((n) => {
141
+ let r = n.canvases[a];
142
+ if (!r) return n;
143
+ let i = r.nodes.map((e) => e.zIndex ?? 0), o = i.length > 0 ? Math.max(...i) : 0, s = i.length > 0 ? Math.min(...i) : 0, c = r.nodes.map((n) => {
144
+ if (!t.has(n.id)) return n;
145
+ let r = n.zIndex ?? 0, i = r;
146
+ return e === "front" ? i = o + 1 : e === "back" ? i = s - 1 : e === "up" ? i = r + 1 : e === "down" && (i = r - 1), {
147
+ ...n,
148
+ zIndex: i
149
+ };
150
+ });
151
+ return {
152
+ ...n,
153
+ canvases: {
154
+ ...n.canvases,
155
+ [a]: {
156
+ ...r,
157
+ nodes: c
158
+ }
159
+ }
160
+ };
161
+ });
162
+ }, _ = (e) => {
163
+ let t = n.lineIds;
164
+ t.size !== 0 && i((n) => {
165
+ let r = n.canvases[a];
166
+ if (!r) return n;
167
+ let i = r.lines.map((e) => e.zIndex ?? 0), o = i.length > 0 ? Math.max(...i) : 0, s = i.length > 0 ? Math.min(...i) : 0, c = r.lines.map((n) => {
168
+ if (!t.has(n.id)) return n;
169
+ let r = n.zIndex ?? 0, i = r;
170
+ return e === "front" ? i = o + 1 : e === "back" ? i = s - 1 : e === "up" ? i = r + 1 : e === "down" && (i = r - 1), {
171
+ ...n,
172
+ zIndex: i
173
+ };
174
+ });
175
+ return {
176
+ ...n,
177
+ canvases: {
178
+ ...n.canvases,
179
+ [a]: {
180
+ ...r,
181
+ lines: c
182
+ }
183
+ }
184
+ };
185
+ });
186
+ }, v = (e, t, n) => {
187
+ y(e, { [t]: n });
188
+ }, y = (e, t) => {
189
+ i((n) => {
190
+ let r = n.canvases[a];
191
+ return r ? {
192
+ ...n,
193
+ canvases: {
194
+ ...n.canvases,
195
+ [a]: {
196
+ ...r,
197
+ nodes: r.nodes.map((n) => n.id === e ? {
198
+ ...n,
199
+ data: {
200
+ ...n.data,
201
+ ...t
202
+ }
203
+ } : n)
204
+ }
205
+ }
206
+ } : n;
207
+ });
208
+ };
209
+ return /* @__PURE__ */ B(R, { children: [
210
+ !d && /* @__PURE__ */ z("div", {
211
+ style: {
212
+ fontSize: 12,
213
+ color: "color-mix(in oklch, var(--color-base-content) 40%, transparent)",
214
+ textAlign: "center",
215
+ padding: "20px 0"
216
+ },
217
+ children: "Select an element to inspect"
218
+ }),
219
+ s.length === 1 && /* @__PURE__ */ z(K, {
220
+ node: s[0],
221
+ isGroup: f,
222
+ onUpdateData: v,
223
+ onUpdateDataBatch: y,
224
+ onUpdateDimension: (e, t, n) => {
225
+ i((r) => {
226
+ let i = r.canvases[a];
227
+ return i ? {
228
+ ...r,
229
+ canvases: {
230
+ ...r.canvases,
231
+ [a]: {
232
+ ...i,
233
+ nodes: i.nodes.map((r) => r.id === e ? {
234
+ ...r,
235
+ [t]: n
236
+ } : r)
237
+ }
238
+ }
239
+ } : r;
240
+ });
241
+ },
242
+ onUpdateType: (e, t) => {
243
+ i((n) => {
244
+ let r = n.canvases[a];
245
+ return r ? {
246
+ ...n,
247
+ canvases: {
248
+ ...n.canvases,
249
+ [a]: {
250
+ ...r,
251
+ nodes: r.nodes.map((n) => n.id === e ? {
252
+ ...n,
253
+ type: t
254
+ } : n)
255
+ }
256
+ }
257
+ } : n;
258
+ });
259
+ }
260
+ }),
261
+ p > 1 && /* @__PURE__ */ B("div", {
262
+ className: "flow-inspector-section",
263
+ children: [
264
+ /* @__PURE__ */ z("div", {
265
+ className: "flow-inspector-section-title",
266
+ children: "Selection"
267
+ }),
268
+ /* @__PURE__ */ B("div", {
269
+ style: {
270
+ fontSize: 12,
271
+ color: "color-mix(in oklch, var(--color-base-content) 50%, transparent)",
272
+ marginBottom: 8
273
+ },
274
+ children: [
275
+ s.length > 0 && `${s.length} node${s.length > 1 ? "s" : ""}`,
276
+ s.length > 0 && l.length > 0 && ", ",
277
+ l.length > 0 && `${l.length} line${l.length > 1 ? "s" : ""}`,
278
+ " selected"
279
+ ]
280
+ }),
281
+ /* @__PURE__ */ B("div", {
282
+ style: {
283
+ display: "flex",
284
+ flexDirection: "column",
285
+ gap: 4,
286
+ width: "100%"
287
+ },
288
+ children: [/* @__PURE__ */ z(e, {
289
+ size: "xs",
290
+ onClick: () => m("flowGroup"),
291
+ block: !0,
292
+ children: "Group (⌘G)"
293
+ }), /* @__PURE__ */ z(e, {
294
+ size: "xs",
295
+ variant: "ghost",
296
+ onClick: () => m("geometryGroup"),
297
+ block: !0,
298
+ children: "Geo Group (⌘⌥G)"
299
+ })]
300
+ })
301
+ ]
302
+ }),
303
+ f && /* @__PURE__ */ B("div", {
304
+ className: "flow-inspector-section",
305
+ children: [
306
+ /* @__PURE__ */ z("div", {
307
+ className: "flow-inspector-section-title",
308
+ children: s[0].type === "geometryGroup" ? "Geometry Group" : "Group"
309
+ }),
310
+ /* @__PURE__ */ z("div", {
311
+ style: {
312
+ fontSize: 11,
313
+ color: "color-mix(in oklch, var(--color-base-content) 45%, transparent)",
314
+ marginBottom: 6
315
+ },
316
+ children: s[0].type === "geometryGroup" ? "Auto-binds spatially contained nodes" : "Explicit membership via add/remove"
317
+ }),
318
+ /* @__PURE__ */ z(e, {
319
+ size: "xs",
320
+ variant: "ghost",
321
+ onClick: h,
322
+ block: !0,
323
+ children: "Ungroup (⌘⇧G)"
324
+ })
325
+ ]
326
+ }),
327
+ s.length > 0 && /* @__PURE__ */ B("div", {
328
+ className: "flow-inspector-section",
329
+ children: [/* @__PURE__ */ z("div", {
330
+ className: "flow-inspector-section-title",
331
+ children: "Layer"
332
+ }), /* @__PURE__ */ B("div", {
333
+ style: {
334
+ display: "flex",
335
+ gap: 4
336
+ },
337
+ children: [
338
+ /* @__PURE__ */ z(e, {
339
+ size: "xs",
340
+ variant: "ghost",
341
+ onClick: () => g("front"),
342
+ children: /* @__PURE__ */ z("span", {
343
+ title: "Bring to Front (⌘⇧↑)",
344
+ children: "⤒"
345
+ })
346
+ }),
347
+ /* @__PURE__ */ z(e, {
348
+ size: "xs",
349
+ variant: "ghost",
350
+ onClick: () => g("up"),
351
+ children: /* @__PURE__ */ z("span", {
352
+ title: "Bring Forward (⌘↑)",
353
+ children: "↑"
354
+ })
355
+ }),
356
+ /* @__PURE__ */ z(e, {
357
+ size: "xs",
358
+ variant: "ghost",
359
+ onClick: () => g("down"),
360
+ children: /* @__PURE__ */ z("span", {
361
+ title: "Send Backward (⌘↓)",
362
+ children: "↓"
363
+ })
364
+ }),
365
+ /* @__PURE__ */ z(e, {
366
+ size: "xs",
367
+ variant: "ghost",
368
+ onClick: () => g("back"),
369
+ children: /* @__PURE__ */ z("span", {
370
+ title: "Send to Back (⌘⇧↓)",
371
+ children: "⤓"
372
+ })
373
+ })
374
+ ]
375
+ })]
376
+ }),
377
+ c.length === 1 && /* @__PURE__ */ z(J, {
378
+ edge: c[0],
379
+ onUpdateData: (e, t, n) => {
380
+ i((r) => {
381
+ let i = r.canvases[a];
382
+ return i ? {
383
+ ...r,
384
+ canvases: {
385
+ ...r.canvases,
386
+ [a]: {
387
+ ...i,
388
+ edges: i.edges.map((r) => r.id === e ? {
389
+ ...r,
390
+ data: {
391
+ ...r.data,
392
+ [t]: n
393
+ }
394
+ } : r)
395
+ }
396
+ }
397
+ } : r;
398
+ });
399
+ },
400
+ onUpdateType: (e, t) => {
401
+ i((n) => {
402
+ let r = n.canvases[a];
403
+ return r ? {
404
+ ...n,
405
+ canvases: {
406
+ ...n.canvases,
407
+ [a]: {
408
+ ...r,
409
+ edges: r.edges.map((n) => n.id === e ? {
410
+ ...n,
411
+ type: t
412
+ } : n)
413
+ }
414
+ }
415
+ } : n;
416
+ });
417
+ }
418
+ }),
419
+ l.length === 1 && /* @__PURE__ */ B(R, { children: [/* @__PURE__ */ z(Y, {
420
+ line: l[0],
421
+ onUpdateData: (e, t, n) => {
422
+ i((r) => {
423
+ let i = r.canvases[a];
424
+ return i ? {
425
+ ...r,
426
+ canvases: {
427
+ ...r.canvases,
428
+ [a]: {
429
+ ...i,
430
+ lines: i.lines.map((r) => r.id === e ? {
431
+ ...r,
432
+ [t]: n
433
+ } : r)
434
+ }
435
+ }
436
+ } : r;
437
+ });
438
+ }
439
+ }), /* @__PURE__ */ B("div", {
440
+ className: "flow-inspector-section",
441
+ children: [/* @__PURE__ */ z("div", {
442
+ className: "flow-inspector-section-title",
443
+ children: "Layer"
444
+ }), /* @__PURE__ */ B("div", {
445
+ style: {
446
+ display: "flex",
447
+ gap: 4
448
+ },
449
+ children: [
450
+ /* @__PURE__ */ z(e, {
451
+ size: "xs",
452
+ variant: "ghost",
453
+ onClick: () => _("front"),
454
+ children: /* @__PURE__ */ z("span", {
455
+ title: "Bring to Front",
456
+ children: "⤒"
457
+ })
458
+ }),
459
+ /* @__PURE__ */ z(e, {
460
+ size: "xs",
461
+ variant: "ghost",
462
+ onClick: () => _("up"),
463
+ children: /* @__PURE__ */ z("span", {
464
+ title: "Bring Forward",
465
+ children: "↑"
466
+ })
467
+ }),
468
+ /* @__PURE__ */ z(e, {
469
+ size: "xs",
470
+ variant: "ghost",
471
+ onClick: () => _("down"),
472
+ children: /* @__PURE__ */ z("span", {
473
+ title: "Send Backward",
474
+ children: "↓"
475
+ })
476
+ }),
477
+ /* @__PURE__ */ z(e, {
478
+ size: "xs",
479
+ variant: "ghost",
480
+ onClick: () => _("back"),
481
+ children: /* @__PURE__ */ z("span", {
482
+ title: "Send to Back",
483
+ children: "⤓"
484
+ })
485
+ })
486
+ ]
487
+ })]
488
+ })] })
489
+ ] });
494
490
  }
495
- function O({ value: l, onChange: c, kind: a, allowTransparent: o, customFallback: f = "#ffffff" }) {
496
- const m = oe[a], t = ce(m) ?? "var(--color-base-content)", r = l ?? "", N = r.toLowerCase(), w = ne(r), z = r === "transparent", T = H.some((k) => k.value.toLowerCase() === N), Y = r === m, P = !!r && !w && !z && !T, L = P ? r : f;
497
- return /* @__PURE__ */ s("div", {
498
- className: "flow-color-field",
499
- children: [
500
- /* @__PURE__ */ e("button", {
501
- type: "button",
502
- title: "跟随主题切换",
503
- "aria-label": "跟随主题切换",
504
- className: `flow-color-swatch flow-color-swatch--sync${Y ? " is-active" : ""}`,
505
- style: { background: t },
506
- onClick: () => c(m)
507
- }),
508
- /* @__PURE__ */ e("span", { className: "flow-color-divider" }),
509
- H.map((k) => /* @__PURE__ */ e("button", {
510
- type: "button",
511
- title: k.label,
512
- "aria-label": k.label,
513
- className: `flow-color-swatch${!w && !z && N === k.value.toLowerCase() ? " is-active" : ""}`,
514
- style: { background: k.value },
515
- onClick: () => c(k.value)
516
- }, k.value)),
517
- /* @__PURE__ */ e("span", { className: "flow-color-divider" }),
518
- /* @__PURE__ */ e("label", {
519
- className: `flow-color-swatch flow-color-swatch--custom${P ? " is-active" : ""}`,
520
- title: "自定义颜色",
521
- style: P ? { background: r } : void 0,
522
- children: /* @__PURE__ */ e("input", {
523
- type: "color",
524
- value: L,
525
- onChange: (k) => c(k.target.value)
526
- })
527
- }),
528
- o && /* @__PURE__ */ e("button", {
529
- type: "button",
530
- title: "透明",
531
- "aria-label": "透明",
532
- className: `flow-color-swatch flow-color-swatch--transparent${z ? " is-active" : ""}`,
533
- onClick: () => c("transparent")
534
- })
535
- ]
536
- });
491
+ function U({ value: e, onChange: t, kind: n, allowTransparent: r, customFallback: i = "#ffffff" }) {
492
+ let a = p[n], o = g(a) ?? "var(--color-base-content)", s = e ?? "", c = s.toLowerCase(), l = m(s), u = s === "transparent", d = f.some((e) => e.value.toLowerCase() === c), h = s === a, _ = !!s && !l && !u && !d, v = _ ? s : i;
493
+ return /* @__PURE__ */ B("div", {
494
+ className: "flow-color-field",
495
+ children: [
496
+ /* @__PURE__ */ z("button", {
497
+ type: "button",
498
+ title: "跟随主题切换",
499
+ "aria-label": "跟随主题切换",
500
+ className: `flow-color-swatch flow-color-swatch--sync${h ? " is-active" : ""}`,
501
+ style: { background: o },
502
+ onClick: () => t(a)
503
+ }),
504
+ /* @__PURE__ */ z("span", { className: "flow-color-divider" }),
505
+ f.map((e) => /* @__PURE__ */ z("button", {
506
+ type: "button",
507
+ title: e.label,
508
+ "aria-label": e.label,
509
+ className: `flow-color-swatch${!l && !u && c === e.value.toLowerCase() ? " is-active" : ""}`,
510
+ style: { background: e.value },
511
+ onClick: () => t(e.value)
512
+ }, e.value)),
513
+ /* @__PURE__ */ z("span", { className: "flow-color-divider" }),
514
+ /* @__PURE__ */ z("label", {
515
+ className: `flow-color-swatch flow-color-swatch--custom${_ ? " is-active" : ""}`,
516
+ title: "自定义颜色",
517
+ style: _ ? { background: s } : void 0,
518
+ children: /* @__PURE__ */ z("input", {
519
+ type: "color",
520
+ value: v,
521
+ onChange: (e) => t(e.target.value)
522
+ })
523
+ }),
524
+ r && /* @__PURE__ */ z("button", {
525
+ type: "button",
526
+ title: "透明",
527
+ "aria-label": "透明",
528
+ className: `flow-color-swatch flow-color-swatch--transparent${u ? " is-active" : ""}`,
529
+ onClick: () => t("transparent")
530
+ })
531
+ ]
532
+ });
537
533
  }
538
- function Se(l) {
539
- const c = ue(l, re($(l)?.brandColor, "") || "#475569");
540
- return c ? `data:image/svg+xml;utf8,${encodeURIComponent(c)}` : "";
534
+ function W(e) {
535
+ let t = w(e), n = h(t?.brandColor, "") || "#475569", r = S(e, n);
536
+ return r ? `data:image/svg+xml;utf8,${encodeURIComponent(r)}` : "";
541
537
  }
542
- function ke({ node: l, onUpdateData: c }) {
543
- const [a, o] = ze("lang"), f = A(() => we(a), [a]), m = l.data.titleIcon ?? "", t = l.data.titleIconSide ?? "left";
544
- return /* @__PURE__ */ s("div", {
545
- className: "flow-inspector-section",
546
- children: [
547
- /* @__PURE__ */ e("div", {
548
- className: "flow-inspector-section-title",
549
- children: "Title Icon"
550
- }),
551
- /* @__PURE__ */ s("div", {
552
- className: "flow-inspector-row",
553
- children: [/* @__PURE__ */ e(n, {
554
- size: "xs",
555
- className: "flow-inspector-label",
556
- children: "Icon"
557
- }), /* @__PURE__ */ s("div", {
558
- style: {
559
- display: "flex",
560
- gap: 4,
561
- alignItems: "center",
562
- flex: 1,
563
- minWidth: 0
564
- },
565
- children: [/* @__PURE__ */ e(y, {
566
- options: fe.map((r) => ({
567
- value: r.id,
568
- label: r.label
569
- })),
570
- value: a,
571
- onChange: (r) => o(r),
572
- style: {
573
- fontSize: 12,
574
- flex: 1,
575
- minWidth: 0
576
- }
577
- }), /* @__PURE__ */ e(g, {
578
- size: "xs",
579
- variant: m ? "ghost" : "primary",
580
- square: !0,
581
- onClick: () => c(l.id, "titleIcon", void 0),
582
- children: /* @__PURE__ */ e("span", {
583
- title: "移除标题图标",
584
- children: "✕"
585
- })
586
- })]
587
- })]
588
- }),
589
- m && !f.some((r) => r.id === m) && /* @__PURE__ */ e("div", {
590
- style: {
591
- fontSize: 10,
592
- opacity: 0.55,
593
- marginBottom: 4
594
- },
595
- children: "当前图标在其他分类"
596
- }),
597
- /* @__PURE__ */ e("div", {
598
- style: {
599
- display: "grid",
600
- gridTemplateColumns: "repeat(auto-fill, minmax(22px, 1fr))",
601
- gap: 3,
602
- maxHeight: 92,
603
- overflowY: "auto",
604
- padding: 3,
605
- border: "1px solid color-mix(in oklch, var(--color-base-content) 14%, transparent)",
606
- borderRadius: 6,
607
- marginBottom: 6
608
- },
609
- children: f.map((r) => {
610
- const N = Se(r.id), w = m === r.id;
611
- return /* @__PURE__ */ e("button", {
612
- type: "button",
613
- title: r.label,
614
- "aria-label": r.label,
615
- onClick: () => c(l.id, "titleIcon", r.id),
616
- style: {
617
- display: "flex",
618
- alignItems: "center",
619
- justifyContent: "center",
620
- width: 22,
621
- height: 22,
622
- borderRadius: 4,
623
- cursor: "pointer",
624
- padding: 0,
625
- border: w ? "1.5px solid var(--color-primary)" : "1px solid transparent",
626
- background: w ? "color-mix(in oklch, var(--color-primary) 12%, transparent)" : "transparent"
627
- },
628
- children: N && /* @__PURE__ */ e("img", {
629
- src: N,
630
- width: 16,
631
- height: 16,
632
- alt: "",
633
- style: { objectFit: "contain" }
634
- })
635
- }, r.id);
636
- })
637
- }),
638
- m && /* @__PURE__ */ s(E, { children: [
639
- /* @__PURE__ */ s("div", {
640
- className: "flow-inspector-row",
641
- children: [/* @__PURE__ */ e(n, {
642
- size: "xs",
643
- className: "flow-inspector-label",
644
- children: "Side"
645
- }), /* @__PURE__ */ e(y, {
646
- options: [{
647
- value: "left",
648
- label: "left"
649
- }, {
650
- value: "right",
651
- label: "right"
652
- }],
653
- value: t,
654
- onChange: (r) => c(l.id, "titleIconSide", r),
655
- style: { fontSize: 12 }
656
- })]
657
- }),
658
- /* @__PURE__ */ s("div", {
659
- className: "flow-inspector-row",
660
- children: [
661
- /* @__PURE__ */ e(n, {
662
- size: "xs",
663
- className: "flow-inspector-label",
664
- children: "Size"
665
- }),
666
- /* @__PURE__ */ e(b, {
667
- size: "xs",
668
- type: "number",
669
- value: String(l.data.titleIconSize ?? Math.max(8, Math.round(l.data.fontSize * 1.15))),
670
- onChange: (r) => c(l.id, "titleIconSize", Math.max(8, Number(r.target.value) || 8))
671
- }),
672
- /* @__PURE__ */ e("span", {
673
- className: "flow-inspector-suffix",
674
- style: {
675
- fontSize: 10,
676
- opacity: 0.5
677
- },
678
- children: "px"
679
- })
680
- ]
681
- }),
682
- /* @__PURE__ */ s("div", {
683
- className: "flow-inspector-row",
684
- children: [/* @__PURE__ */ e(n, {
685
- size: "xs",
686
- className: "flow-inspector-label",
687
- children: "Color"
688
- }), /* @__PURE__ */ e(O, {
689
- value: l.data.titleIconColor ?? $(m)?.brandColor ?? l.data.labelColor ?? l.data.color,
690
- kind: "stroke",
691
- customFallback: "#334155",
692
- onChange: (r) => c(l.id, "titleIconColor", r)
693
- })]
694
- })
695
- ] })
696
- ]
697
- });
538
+ function G({ node: r, onUpdateData: a }) {
539
+ let [o, s] = L("lang"), c = F(() => T(o), [o]), l = r.data.titleIcon ?? "", u = r.data.titleIconSide ?? "left";
540
+ return /* @__PURE__ */ B("div", {
541
+ className: "flow-inspector-section",
542
+ children: [
543
+ /* @__PURE__ */ z("div", {
544
+ className: "flow-inspector-section-title",
545
+ children: "Title Icon"
546
+ }),
547
+ /* @__PURE__ */ B("div", {
548
+ className: "flow-inspector-row",
549
+ children: [/* @__PURE__ */ z(n, {
550
+ size: "xs",
551
+ className: "flow-inspector-label",
552
+ children: "Icon"
553
+ }), /* @__PURE__ */ B("div", {
554
+ style: {
555
+ display: "flex",
556
+ gap: 4,
557
+ alignItems: "center",
558
+ flex: 1,
559
+ minWidth: 0
560
+ },
561
+ children: [/* @__PURE__ */ z(i, {
562
+ options: x.map((e) => ({
563
+ value: e.id,
564
+ label: e.label
565
+ })),
566
+ value: o,
567
+ onChange: (e) => s(e),
568
+ style: {
569
+ fontSize: 12,
570
+ flex: 1,
571
+ minWidth: 0
572
+ }
573
+ }), /* @__PURE__ */ z(e, {
574
+ size: "xs",
575
+ variant: l ? "ghost" : "primary",
576
+ square: !0,
577
+ onClick: () => a(r.id, "titleIcon", void 0),
578
+ children: /* @__PURE__ */ z("span", {
579
+ title: "移除标题图标",
580
+ children: "✕"
581
+ })
582
+ })]
583
+ })]
584
+ }),
585
+ l && !c.some((e) => e.id === l) && /* @__PURE__ */ z("div", {
586
+ style: {
587
+ fontSize: 10,
588
+ opacity: .55,
589
+ marginBottom: 4
590
+ },
591
+ children: "当前图标在其他分类"
592
+ }),
593
+ /* @__PURE__ */ z("div", {
594
+ style: {
595
+ display: "grid",
596
+ gridTemplateColumns: "repeat(auto-fill, minmax(22px, 1fr))",
597
+ gap: 3,
598
+ maxHeight: 92,
599
+ overflowY: "auto",
600
+ padding: 3,
601
+ border: "1px solid color-mix(in oklch, var(--color-base-content) 14%, transparent)",
602
+ borderRadius: 6,
603
+ marginBottom: 6
604
+ },
605
+ children: c.map((e) => {
606
+ let t = W(e.id), n = l === e.id;
607
+ return /* @__PURE__ */ z("button", {
608
+ type: "button",
609
+ title: e.label,
610
+ "aria-label": e.label,
611
+ onClick: () => a(r.id, "titleIcon", e.id),
612
+ style: {
613
+ display: "flex",
614
+ alignItems: "center",
615
+ justifyContent: "center",
616
+ width: 22,
617
+ height: 22,
618
+ borderRadius: 4,
619
+ cursor: "pointer",
620
+ padding: 0,
621
+ border: n ? "1.5px solid var(--color-primary)" : "1px solid transparent",
622
+ background: n ? "color-mix(in oklch, var(--color-primary) 12%, transparent)" : "transparent"
623
+ },
624
+ children: t && /* @__PURE__ */ z("img", {
625
+ src: t,
626
+ width: 16,
627
+ height: 16,
628
+ alt: "",
629
+ style: { objectFit: "contain" }
630
+ })
631
+ }, e.id);
632
+ })
633
+ }),
634
+ l && /* @__PURE__ */ B(R, { children: [
635
+ /* @__PURE__ */ B("div", {
636
+ className: "flow-inspector-row",
637
+ children: [/* @__PURE__ */ z(n, {
638
+ size: "xs",
639
+ className: "flow-inspector-label",
640
+ children: "Side"
641
+ }), /* @__PURE__ */ z(i, {
642
+ options: [{
643
+ value: "left",
644
+ label: "left"
645
+ }, {
646
+ value: "right",
647
+ label: "right"
648
+ }],
649
+ value: u,
650
+ onChange: (e) => a(r.id, "titleIconSide", e),
651
+ style: { fontSize: 12 }
652
+ })]
653
+ }),
654
+ /* @__PURE__ */ B("div", {
655
+ className: "flow-inspector-row",
656
+ children: [
657
+ /* @__PURE__ */ z(n, {
658
+ size: "xs",
659
+ className: "flow-inspector-label",
660
+ children: "Size"
661
+ }),
662
+ /* @__PURE__ */ z(t, {
663
+ size: "xs",
664
+ type: "number",
665
+ value: String(r.data.titleIconSize ?? Math.max(8, Math.round(r.data.fontSize * 1.15))),
666
+ onChange: (e) => a(r.id, "titleIconSize", Math.max(8, Number(e.target.value) || 8))
667
+ }),
668
+ /* @__PURE__ */ z("span", {
669
+ className: "flow-inspector-suffix",
670
+ style: {
671
+ fontSize: 10,
672
+ opacity: .5
673
+ },
674
+ children: "px"
675
+ })
676
+ ]
677
+ }),
678
+ /* @__PURE__ */ B("div", {
679
+ className: "flow-inspector-row",
680
+ children: [/* @__PURE__ */ z(n, {
681
+ size: "xs",
682
+ className: "flow-inspector-label",
683
+ children: "Color"
684
+ }), /* @__PURE__ */ z(U, {
685
+ value: r.data.titleIconColor ?? w(l)?.brandColor ?? r.data.labelColor ?? r.data.color,
686
+ kind: "stroke",
687
+ customFallback: "#334155",
688
+ onChange: (e) => a(r.id, "titleIconColor", e)
689
+ })]
690
+ })
691
+ ] })
692
+ ]
693
+ });
698
694
  }
699
- function Ie({ node: l, isGroup: c, onUpdateData: a, onUpdateDataBatch: o, onUpdateDimension: f, onUpdateType: m }) {
700
- return /* @__PURE__ */ s(E, { children: [
701
- /* @__PURE__ */ s("div", {
702
- className: "flow-inspector-section",
703
- children: [
704
- /* @__PURE__ */ e("div", {
705
- className: "flow-inspector-section-title",
706
- children: "Node"
707
- }),
708
- /* @__PURE__ */ s("div", {
709
- className: "flow-inspector-row",
710
- children: [/* @__PURE__ */ e(n, {
711
- size: "xs",
712
- className: "flow-inspector-label",
713
- children: "Label"
714
- }), /* @__PURE__ */ e(b, {
715
- size: "xs",
716
- value: l.data.label,
717
- onChange: (t) => a(l.id, "label", t.target.value)
718
- })]
719
- }),
720
- /* @__PURE__ */ s("div", {
721
- className: "flow-inspector-row",
722
- children: [/* @__PURE__ */ e(n, {
723
- size: "xs",
724
- className: "flow-inspector-label",
725
- children: "Type"
726
- }), /* @__PURE__ */ e(y, {
727
- options: Ne.map((t) => ({
728
- value: t,
729
- label: t
730
- })),
731
- value: l.type,
732
- onChange: (t) => m(l.id, t),
733
- style: { fontSize: 12 }
734
- })]
735
- })
736
- ]
737
- }),
738
- /* @__PURE__ */ s("div", {
739
- className: "flow-inspector-section",
740
- children: [
741
- /* @__PURE__ */ e("div", {
742
- className: "flow-inspector-section-title",
743
- children: "Size"
744
- }),
745
- /* @__PURE__ */ s("div", {
746
- className: "flow-inspector-row",
747
- children: [/* @__PURE__ */ e(n, {
748
- size: "xs",
749
- className: "flow-inspector-label",
750
- children: "W"
751
- }), /* @__PURE__ */ e(b, {
752
- size: "xs",
753
- type: "number",
754
- value: String(Math.round(l.width * 100) / 100),
755
- onChange: (t) => f(l.id, "width", Number(t.target.value) || l.width)
756
- })]
757
- }),
758
- /* @__PURE__ */ s("div", {
759
- className: "flow-inspector-row",
760
- children: [/* @__PURE__ */ e(n, {
761
- size: "xs",
762
- className: "flow-inspector-label",
763
- children: "H"
764
- }), /* @__PURE__ */ e(b, {
765
- size: "xs",
766
- type: "number",
767
- value: String(Math.round(l.height * 100) / 100),
768
- onChange: (t) => f(l.id, "height", Number(t.target.value) || l.height)
769
- })]
770
- })
771
- ]
772
- }),
773
- /* @__PURE__ */ s("div", {
774
- className: "flow-inspector-section",
775
- children: [
776
- /* @__PURE__ */ e("div", {
777
- className: "flow-inspector-section-title",
778
- children: "Style"
779
- }),
780
- /* @__PURE__ */ s("div", {
781
- className: "flow-inspector-row",
782
- children: [/* @__PURE__ */ e(n, {
783
- size: "xs",
784
- className: "flow-inspector-label",
785
- children: "Fill"
786
- }), /* @__PURE__ */ e(O, {
787
- value: l.data.fill,
788
- kind: "fill",
789
- allowTransparent: !0,
790
- customFallback: "#ffffff",
791
- onChange: (t) => a(l.id, "fill", t)
792
- })]
793
- }),
794
- /* @__PURE__ */ s("div", {
795
- className: "flow-inspector-row",
796
- children: [/* @__PURE__ */ e(n, {
797
- size: "xs",
798
- className: "flow-inspector-label",
799
- children: "Stroke"
800
- }), /* @__PURE__ */ e(O, {
801
- value: l.data.stroke,
802
- kind: "stroke",
803
- allowTransparent: !0,
804
- customFallback: "#000000",
805
- onChange: (t) => a(l.id, "stroke", t)
806
- })]
807
- }),
808
- /* @__PURE__ */ s("div", {
809
- className: "flow-inspector-row",
810
- children: [/* @__PURE__ */ e(n, {
811
- size: "xs",
812
- className: "flow-inspector-label",
813
- children: "Font"
814
- }), /* @__PURE__ */ e(b, {
815
- size: "xs",
816
- type: "number",
817
- value: String(l.data.fontSize),
818
- onChange: (t) => a(l.id, "fontSize", Number(t.target.value) || 14)
819
- })]
820
- }),
821
- /* @__PURE__ */ s("div", {
822
- className: "flow-inspector-row",
823
- children: [/* @__PURE__ */ e(n, {
824
- size: "xs",
825
- className: "flow-inspector-label",
826
- children: "Color"
827
- }), /* @__PURE__ */ e(O, {
828
- value: l.data.color,
829
- kind: "text",
830
- customFallback: "#111827",
831
- onChange: (t) => a(l.id, "color", t)
832
- })]
833
- }),
834
- /* @__PURE__ */ s("div", {
835
- className: "flow-inspector-row",
836
- children: [/* @__PURE__ */ e(n, {
837
- size: "xs",
838
- className: "flow-inspector-label",
839
- children: "Font Color"
840
- }), /* @__PURE__ */ e(O, {
841
- value: l.data.labelColor ?? l.data.color,
842
- kind: "text",
843
- customFallback: "#111827",
844
- onChange: (t) => a(l.id, "labelColor", t)
845
- })]
846
- }),
847
- l.type !== "shapeSvg" && l.type !== "mediaNode" && /* @__PURE__ */ s(E, { children: [
848
- /* @__PURE__ */ s("div", {
849
- className: "flow-inspector-row",
850
- children: [/* @__PURE__ */ e(n, {
851
- size: "xs",
852
- className: "flow-inspector-label",
853
- children: "Text Pos"
854
- }), /* @__PURE__ */ e(y, {
855
- options: [
856
- {
857
- value: "center",
858
- label: "center"
859
- },
860
- {
861
- value: "top",
862
- label: "top"
863
- },
864
- {
865
- value: "bottom",
866
- label: "bottom"
867
- },
868
- {
869
- value: "left",
870
- label: "left"
871
- },
872
- {
873
- value: "right",
874
- label: "right"
875
- },
876
- {
877
- value: "top-left",
878
- label: "top-left"
879
- },
880
- {
881
- value: "top-right",
882
- label: "top-right"
883
- },
884
- {
885
- value: "bottom-left",
886
- label: "bottom-left"
887
- },
888
- {
889
- value: "bottom-right",
890
- label: "bottom-right"
891
- }
892
- ],
893
- value: l.data.textPlacement ?? (c || l.type === "animAnchor" ? "top" : "center"),
894
- onChange: (t) => a(l.id, "textPlacement", t),
895
- style: { fontSize: 12 }
896
- })]
897
- }),
898
- /* @__PURE__ */ s("div", {
899
- className: "flow-inspector-row",
900
- children: [/* @__PURE__ */ e(n, {
901
- size: "xs",
902
- className: "flow-inspector-label",
903
- children: "Text Off X"
904
- }), /* @__PURE__ */ e(b, {
905
- size: "xs",
906
- type: "number",
907
- value: String(l.data.labelOffsetX ?? 0),
908
- onChange: (t) => a(l.id, "labelOffsetX", Number(t.target.value) || 0)
909
- })]
910
- }),
911
- /* @__PURE__ */ s("div", {
912
- className: "flow-inspector-row",
913
- children: [/* @__PURE__ */ e(n, {
914
- size: "xs",
915
- className: "flow-inspector-label",
916
- children: "Text Off Y"
917
- }), /* @__PURE__ */ e(b, {
918
- size: "xs",
919
- type: "number",
920
- value: String(l.data.labelOffsetY ?? 0),
921
- onChange: (t) => a(l.id, "labelOffsetY", Number(t.target.value) || 0)
922
- })]
923
- })
924
- ] }),
925
- /* @__PURE__ */ s("div", {
926
- className: "flow-inspector-row",
927
- children: [/* @__PURE__ */ e(n, {
928
- size: "xs",
929
- className: "flow-inspector-label",
930
- children: "Border"
931
- }), /* @__PURE__ */ e(y, {
932
- options: [{
933
- value: "none",
934
- label: "none"
935
- }, ...le.map((t) => ({
936
- value: t,
937
- label: t
938
- }))],
939
- value: l.data.borderStyle ?? (c ? l.type === "geometryGroup" ? "dashed" : "dotted" : "solid"),
940
- onChange: (t) => a(l.id, "borderStyle", t),
941
- style: { fontSize: 12 }
942
- })]
943
- }),
944
- he.has(l.type) && (() => {
945
- const t = l.data.borderSides ?? {}, r = (w, z) => {
946
- a(l.id, "borderSides", {
947
- ...l.data.borderSides ?? {},
948
- [w]: {
949
- ...l.data.borderSides?.[w] ?? {},
950
- ...z
951
- }
952
- });
953
- }, N = {
954
- top: "Top",
955
- right: "Right",
956
- bottom: "Bottom",
957
- left: "Left"
958
- };
959
- return /* @__PURE__ */ s(E, { children: [/* @__PURE__ */ s("div", {
960
- className: "flow-inspector-row",
961
- children: [/* @__PURE__ */ e(n, {
962
- size: "xs",
963
- className: "flow-inspector-label",
964
- children: "Sides"
965
- }), /* @__PURE__ */ s("div", {
966
- style: {
967
- display: "flex",
968
- alignItems: "center",
969
- gap: 6,
970
- flex: 1
971
- },
972
- children: [/* @__PURE__ */ e("span", {
973
- style: {
974
- fontSize: 10,
975
- opacity: 0.55
976
- },
977
- children: "上下左右独立边框"
978
- }), pe(l.data, l.type) && /* @__PURE__ */ e("span", {
979
- title: "恢复与 Border 设置一致",
980
- style: { display: "inline-flex" },
981
- children: /* @__PURE__ */ e(g, {
982
- size: "xs",
983
- variant: "ghost",
984
- onClick: () => a(l.id, "borderSides", void 0),
985
- children: "重置"
986
- })
987
- })]
988
- })]
989
- }), de.map((w) => {
990
- const z = t[w];
991
- return /* @__PURE__ */ s("div", {
992
- style: {
993
- display: "flex",
994
- alignItems: "center",
995
- gap: 4,
996
- marginBottom: 4
997
- },
998
- children: [
999
- /* @__PURE__ */ e("span", {
1000
- title: `独立设置${N[w]}边`,
1001
- style: {
1002
- fontSize: 10,
1003
- width: 40,
1004
- flexShrink: 0,
1005
- opacity: z ? 0.95 : 0.6
1006
- },
1007
- children: N[w]
1008
- }),
1009
- /* @__PURE__ */ e("span", {
1010
- title: `显示/隐藏 ${N[w]} 边`,
1011
- style: { display: "inline-flex" },
1012
- children: /* @__PURE__ */ e(W, {
1013
- size: "sm",
1014
- checked: z?.visible ?? !0,
1015
- onChange: (T) => r(w, { visible: T })
1016
- })
1017
- }),
1018
- /* @__PURE__ */ e(O, {
1019
- value: z?.color ?? l.data.stroke,
1020
- kind: "stroke",
1021
- customFallback: "#334155",
1022
- onChange: (T) => r(w, { color: T })
1023
- }),
1024
- /* @__PURE__ */ e("span", {
1025
- title: `${N[w]} 粗细`,
1026
- style: {
1027
- display: "inline-flex",
1028
- width: 52
1029
- },
1030
- children: /* @__PURE__ */ e(b, {
1031
- size: "xs",
1032
- type: "number",
1033
- value: String(z?.width ?? l.data.strokeWidth),
1034
- onChange: (T) => r(w, { width: Math.max(0, Number(T.target.value) || 0) })
1035
- })
1036
- })
1037
- ]
1038
- }, w);
1039
- })] });
1040
- })(),
1041
- l.type === "shapeSvg" && /* @__PURE__ */ s(E, { children: [
1042
- /* @__PURE__ */ s("div", {
1043
- className: "flow-inspector-row",
1044
- children: [/* @__PURE__ */ e(n, {
1045
- size: "xs",
1046
- className: "flow-inspector-label",
1047
- children: "Icon"
1048
- }), /* @__PURE__ */ e(y, {
1049
- options: ve().map((t) => ({
1050
- value: t.id,
1051
- label: t.label
1052
- })),
1053
- value: l.data.svgId ?? "",
1054
- placeholder: "选择图标",
1055
- onChange: (t) => {
1056
- const r = $(String(t));
1057
- o(l.id, {
1058
- svgId: t,
1059
- ...r?.brandColor ? { color: r.brandColor } : {},
1060
- ...!l.data.label || l.data.label === "Text" ? { label: r?.label ?? String(t) } : {}
1061
- });
1062
- },
1063
- style: { fontSize: 12 }
1064
- })]
1065
- }),
1066
- /* @__PURE__ */ s("div", {
1067
- className: "flow-inspector-row",
1068
- children: [/* @__PURE__ */ e(n, {
1069
- size: "xs",
1070
- className: "flow-inspector-label",
1071
- children: "Box"
1072
- }), /* @__PURE__ */ e(W, {
1073
- size: "sm",
1074
- checked: l.data.iconBox ?? !1,
1075
- onChange: (t) => a(l.id, "iconBox", t),
1076
- label: "显示边框"
1077
- })]
1078
- }),
1079
- /* @__PURE__ */ s("div", {
1080
- className: "flow-inspector-row",
1081
- children: [/* @__PURE__ */ e(n, {
1082
- size: "xs",
1083
- className: "flow-inspector-label",
1084
- children: "Label"
1085
- }), /* @__PURE__ */ e(y, {
1086
- options: [
1087
- {
1088
- value: "top",
1089
- label: "top"
1090
- },
1091
- {
1092
- value: "middle",
1093
- label: "middle"
1094
- },
1095
- {
1096
- value: "bottom",
1097
- label: "bottom"
1098
- },
1099
- {
1100
- value: "left",
1101
- label: "left"
1102
- },
1103
- {
1104
- value: "right",
1105
- label: "right"
1106
- }
1107
- ],
1108
- value: l.data.labelPlacement === "above" ? "top" : l.data.labelPlacement === "center" ? "middle" : l.data.labelPlacement === "below" ? "bottom" : l.data.labelPlacement ?? "bottom",
1109
- onChange: (t) => a(l.id, "labelPlacement", t),
1110
- style: { fontSize: 12 }
1111
- })]
1112
- }),
1113
- /* @__PURE__ */ s("div", {
1114
- className: "flow-inspector-row",
1115
- children: [/* @__PURE__ */ e(n, {
1116
- size: "xs",
1117
- className: "flow-inspector-label",
1118
- children: "Offset X"
1119
- }), /* @__PURE__ */ e(b, {
1120
- size: "xs",
1121
- type: "number",
1122
- value: String(l.data.labelOffsetX ?? 0),
1123
- onChange: (t) => a(l.id, "labelOffsetX", Number(t.target.value) || 0)
1124
- })]
1125
- }),
1126
- /* @__PURE__ */ s("div", {
1127
- className: "flow-inspector-row",
1128
- children: [/* @__PURE__ */ e(n, {
1129
- size: "xs",
1130
- className: "flow-inspector-label",
1131
- children: "Offset Y"
1132
- }), /* @__PURE__ */ e(b, {
1133
- size: "xs",
1134
- type: "number",
1135
- value: String(l.data.labelOffsetY ?? 0),
1136
- onChange: (t) => a(l.id, "labelOffsetY", Number(t.target.value) || 0)
1137
- })]
1138
- })
1139
- ] })
1140
- ]
1141
- }),
1142
- l.type === "mediaNode" && /* @__PURE__ */ s("div", {
1143
- className: "flow-inspector-section",
1144
- children: [/* @__PURE__ */ e("div", {
1145
- className: "flow-inspector-section-title",
1146
- children: "Palette (Archify)"
1147
- }), /* @__PURE__ */ s("div", {
1148
- className: "flow-inspector-row",
1149
- children: [/* @__PURE__ */ e(n, {
1150
- size: "xs",
1151
- className: "flow-inspector-label",
1152
- children: "Palette"
1153
- }), /* @__PURE__ */ e("div", {
1154
- style: {
1155
- display: "flex",
1156
- flexWrap: "wrap",
1157
- gap: 4
1158
- },
1159
- children: j.map((t) => /* @__PURE__ */ e("button", {
1160
- type: "button",
1161
- title: _[t],
1162
- "aria-label": _[t],
1163
- onClick: () => o(l.id, V(t)),
1164
- style: {
1165
- width: 18,
1166
- height: 18,
1167
- borderRadius: 4,
1168
- cursor: "pointer",
1169
- background: R[t].fill,
1170
- border: `1.5px solid ${R[t].stroke}`
1171
- }
1172
- }, t))
1173
- })]
1174
- })]
1175
- }),
1176
- l.type !== "mediaNode" && l.type !== "shapeSvg" && /* @__PURE__ */ e(ke, {
1177
- node: l,
1178
- onUpdateData: a
1179
- }),
1180
- l.type !== "mediaNode" && /* @__PURE__ */ s("div", {
1181
- className: "flow-inspector-section",
1182
- children: [
1183
- /* @__PURE__ */ e("div", {
1184
- className: "flow-inspector-section-title",
1185
- children: "Card (Archify)"
1186
- }),
1187
- /* @__PURE__ */ s("div", {
1188
- className: "flow-inspector-row",
1189
- children: [/* @__PURE__ */ e(n, {
1190
- size: "xs",
1191
- className: "flow-inspector-label",
1192
- children: "Subtitle"
1193
- }), /* @__PURE__ */ e(b, {
1194
- size: "xs",
1195
- value: l.data.sublabel ?? "",
1196
- placeholder: "secondary line",
1197
- onChange: (t) => a(l.id, "sublabel", t.target.value)
1198
- })]
1199
- }),
1200
- /* @__PURE__ */ s("div", {
1201
- className: "flow-inspector-row",
1202
- children: [/* @__PURE__ */ e(n, {
1203
- size: "xs",
1204
- className: "flow-inspector-label",
1205
- children: "Sub Color"
1206
- }), /* @__PURE__ */ e(O, {
1207
- value: l.data.sublabelColor ?? "#94a3b8",
1208
- kind: "text",
1209
- customFallback: "#94a3b8",
1210
- onChange: (t) => a(l.id, "sublabelColor", t)
1211
- })]
1212
- }),
1213
- /* @__PURE__ */ s("div", {
1214
- className: "flow-inspector-row",
1215
- children: [/* @__PURE__ */ e(n, {
1216
- size: "xs",
1217
- className: "flow-inspector-label",
1218
- children: "Tag"
1219
- }), /* @__PURE__ */ e(b, {
1220
- size: "xs",
1221
- value: l.data.tag ?? "",
1222
- placeholder: "corner pill",
1223
- onChange: (t) => a(l.id, "tag", t.target.value)
1224
- })]
1225
- }),
1226
- /* @__PURE__ */ s("div", {
1227
- className: "flow-inspector-row",
1228
- children: [/* @__PURE__ */ e(n, {
1229
- size: "xs",
1230
- className: "flow-inspector-label",
1231
- children: "Tag Color"
1232
- }), /* @__PURE__ */ e(O, {
1233
- value: l.data.tagColor ?? l.data.stroke,
1234
- kind: "stroke",
1235
- customFallback: "#334155",
1236
- onChange: (t) => a(l.id, "tagColor", t)
1237
- })]
1238
- }),
1239
- /* @__PURE__ */ s("div", {
1240
- className: "flow-inspector-row",
1241
- children: [/* @__PURE__ */ e(n, {
1242
- size: "xs",
1243
- className: "flow-inspector-label",
1244
- children: "Tag Pos"
1245
- }), /* @__PURE__ */ e(y, {
1246
- options: [
1247
- {
1248
- value: "top-left",
1249
- label: "top-left"
1250
- },
1251
- {
1252
- value: "top-right",
1253
- label: "top-right"
1254
- },
1255
- {
1256
- value: "bottom-left",
1257
- label: "bottom-left"
1258
- },
1259
- {
1260
- value: "bottom-right",
1261
- label: "bottom-right"
1262
- }
1263
- ],
1264
- value: l.data.tagPlacement ?? "top-right",
1265
- onChange: (t) => a(l.id, "tagPlacement", t),
1266
- style: { fontSize: 12 }
1267
- })]
1268
- }),
1269
- /* @__PURE__ */ s("div", {
1270
- className: "flow-inspector-row",
1271
- children: [/* @__PURE__ */ e(n, {
1272
- size: "xs",
1273
- className: "flow-inspector-label",
1274
- children: "Palette"
1275
- }), /* @__PURE__ */ e("div", {
1276
- style: {
1277
- display: "flex",
1278
- flexWrap: "wrap",
1279
- gap: 4
1280
- },
1281
- children: j.map((t) => /* @__PURE__ */ e("button", {
1282
- type: "button",
1283
- title: _[t],
1284
- "aria-label": _[t],
1285
- onClick: () => o(l.id, V(t)),
1286
- style: {
1287
- width: 18,
1288
- height: 18,
1289
- borderRadius: 4,
1290
- cursor: "pointer",
1291
- background: R[t].fill,
1292
- border: `1.5px solid ${R[t].stroke}`
1293
- }
1294
- }, t))
1295
- })]
1296
- })
1297
- ]
1298
- }),
1299
- l.type === "mediaNode" && /* @__PURE__ */ e(Te, {
1300
- node: l,
1301
- onUpdateData: a
1302
- }),
1303
- /* @__PURE__ */ s("div", {
1304
- className: "flow-inspector-section",
1305
- children: [
1306
- /* @__PURE__ */ e("div", {
1307
- className: "flow-inspector-section-title",
1308
- children: "Transform"
1309
- }),
1310
- /* @__PURE__ */ s("div", {
1311
- className: "flow-inspector-row",
1312
- children: [
1313
- /* @__PURE__ */ e(n, {
1314
- size: "xs",
1315
- className: "flow-inspector-label",
1316
- children: "Rotate"
1317
- }),
1318
- /* @__PURE__ */ e(b, {
1319
- size: "xs",
1320
- type: "number",
1321
- value: String(l.data.rotation ?? 0),
1322
- onChange: (t) => a(l.id, "rotation", Number(t.target.value) || 0)
1323
- }),
1324
- /* @__PURE__ */ e("span", {
1325
- className: "flow-inspector-suffix",
1326
- style: {
1327
- fontSize: 10,
1328
- opacity: 0.5
1329
- },
1330
- children: "°"
1331
- })
1332
- ]
1333
- }),
1334
- /* @__PURE__ */ s("div", {
1335
- className: "flow-inspector-row",
1336
- children: [
1337
- /* @__PURE__ */ e(n, {
1338
- size: "xs",
1339
- className: "flow-inspector-label",
1340
- children: "Flip"
1341
- }),
1342
- /* @__PURE__ */ e(g, {
1343
- size: "xs",
1344
- variant: l.data.flipX ? "primary" : "ghost",
1345
- onClick: () => a(l.id, "flipX", !l.data.flipX),
1346
- square: !0,
1347
- children: /* @__PURE__ */ e("span", {
1348
- title: "Flip Horizontal",
1349
- children: "↔"
1350
- })
1351
- }),
1352
- /* @__PURE__ */ e(g, {
1353
- size: "xs",
1354
- variant: l.data.flipY ? "primary" : "ghost",
1355
- onClick: () => a(l.id, "flipY", !l.data.flipY),
1356
- square: !0,
1357
- children: /* @__PURE__ */ e("span", {
1358
- title: "Flip Vertical",
1359
- children: "↕"
1360
- })
1361
- })
1362
- ]
1363
- }),
1364
- /* @__PURE__ */ s("div", {
1365
- className: "flow-inspector-row",
1366
- children: [
1367
- /* @__PURE__ */ e(n, {
1368
- size: "xs",
1369
- className: "flow-inspector-label",
1370
- children: "Quick"
1371
- }),
1372
- /* @__PURE__ */ e(g, {
1373
- size: "xs",
1374
- variant: "ghost",
1375
- onClick: () => a(l.id, "rotation", ((l.data.rotation ?? 0) + 90) % 360),
1376
- children: "+90°"
1377
- }),
1378
- /* @__PURE__ */ e(g, {
1379
- size: "xs",
1380
- variant: "ghost",
1381
- onClick: () => a(l.id, "rotation", ((l.data.rotation ?? 0) - 90 + 360) % 360),
1382
- children: "−90°"
1383
- })
1384
- ]
1385
- })
1386
- ]
1387
- })
1388
- ] });
695
+ function K({ node: o, isGroup: s, onUpdateData: c, onUpdateDataBatch: l, onUpdateDimension: u, onUpdateType: d }) {
696
+ return /* @__PURE__ */ B(R, { children: [
697
+ /* @__PURE__ */ B("div", {
698
+ className: "flow-inspector-section",
699
+ children: [
700
+ /* @__PURE__ */ z("div", {
701
+ className: "flow-inspector-section-title",
702
+ children: "Node"
703
+ }),
704
+ /* @__PURE__ */ B("div", {
705
+ className: "flow-inspector-row",
706
+ children: [/* @__PURE__ */ z(n, {
707
+ size: "xs",
708
+ className: "flow-inspector-label",
709
+ children: "Label"
710
+ }), /* @__PURE__ */ z(t, {
711
+ size: "xs",
712
+ value: o.data.label,
713
+ onChange: (e) => c(o.id, "label", e.target.value)
714
+ })]
715
+ }),
716
+ /* @__PURE__ */ B("div", {
717
+ className: "flow-inspector-row",
718
+ children: [/* @__PURE__ */ z(n, {
719
+ size: "xs",
720
+ className: "flow-inspector-label",
721
+ children: "Type"
722
+ }), /* @__PURE__ */ z(i, {
723
+ options: M.map((e) => ({
724
+ value: e,
725
+ label: e
726
+ })),
727
+ value: o.type,
728
+ onChange: (e) => d(o.id, e),
729
+ style: { fontSize: 12 }
730
+ })]
731
+ })
732
+ ]
733
+ }),
734
+ /* @__PURE__ */ B("div", {
735
+ className: "flow-inspector-section",
736
+ children: [
737
+ /* @__PURE__ */ z("div", {
738
+ className: "flow-inspector-section-title",
739
+ children: "Size"
740
+ }),
741
+ /* @__PURE__ */ B("div", {
742
+ className: "flow-inspector-row",
743
+ children: [/* @__PURE__ */ z(n, {
744
+ size: "xs",
745
+ className: "flow-inspector-label",
746
+ children: "W"
747
+ }), /* @__PURE__ */ z(t, {
748
+ size: "xs",
749
+ type: "number",
750
+ value: String(Math.round(o.width * 100) / 100),
751
+ onChange: (e) => u(o.id, "width", Number(e.target.value) || o.width)
752
+ })]
753
+ }),
754
+ /* @__PURE__ */ B("div", {
755
+ className: "flow-inspector-row",
756
+ children: [/* @__PURE__ */ z(n, {
757
+ size: "xs",
758
+ className: "flow-inspector-label",
759
+ children: "H"
760
+ }), /* @__PURE__ */ z(t, {
761
+ size: "xs",
762
+ type: "number",
763
+ value: String(Math.round(o.height * 100) / 100),
764
+ onChange: (e) => u(o.id, "height", Number(e.target.value) || o.height)
765
+ })]
766
+ })
767
+ ]
768
+ }),
769
+ /* @__PURE__ */ B("div", {
770
+ className: "flow-inspector-section",
771
+ children: [
772
+ /* @__PURE__ */ z("div", {
773
+ className: "flow-inspector-section-title",
774
+ children: "Style"
775
+ }),
776
+ /* @__PURE__ */ B("div", {
777
+ className: "flow-inspector-row",
778
+ children: [/* @__PURE__ */ z(n, {
779
+ size: "xs",
780
+ className: "flow-inspector-label",
781
+ children: "Fill"
782
+ }), /* @__PURE__ */ z(U, {
783
+ value: o.data.fill,
784
+ kind: "fill",
785
+ allowTransparent: !0,
786
+ customFallback: "#ffffff",
787
+ onChange: (e) => c(o.id, "fill", e)
788
+ })]
789
+ }),
790
+ /* @__PURE__ */ B("div", {
791
+ className: "flow-inspector-row",
792
+ children: [/* @__PURE__ */ z(n, {
793
+ size: "xs",
794
+ className: "flow-inspector-label",
795
+ children: "Stroke"
796
+ }), /* @__PURE__ */ z(U, {
797
+ value: o.data.stroke,
798
+ kind: "stroke",
799
+ allowTransparent: !0,
800
+ customFallback: "#000000",
801
+ onChange: (e) => c(o.id, "stroke", e)
802
+ })]
803
+ }),
804
+ /* @__PURE__ */ B("div", {
805
+ className: "flow-inspector-row",
806
+ children: [/* @__PURE__ */ z(n, {
807
+ size: "xs",
808
+ className: "flow-inspector-label",
809
+ children: "Font"
810
+ }), /* @__PURE__ */ z(t, {
811
+ size: "xs",
812
+ type: "number",
813
+ value: String(o.data.fontSize),
814
+ onChange: (e) => c(o.id, "fontSize", Number(e.target.value) || 14)
815
+ })]
816
+ }),
817
+ /* @__PURE__ */ B("div", {
818
+ className: "flow-inspector-row",
819
+ children: [/* @__PURE__ */ z(n, {
820
+ size: "xs",
821
+ className: "flow-inspector-label",
822
+ children: "Color"
823
+ }), /* @__PURE__ */ z(U, {
824
+ value: o.data.color,
825
+ kind: "text",
826
+ customFallback: "#111827",
827
+ onChange: (e) => c(o.id, "color", e)
828
+ })]
829
+ }),
830
+ /* @__PURE__ */ B("div", {
831
+ className: "flow-inspector-row",
832
+ children: [/* @__PURE__ */ z(n, {
833
+ size: "xs",
834
+ className: "flow-inspector-label",
835
+ children: "Font Color"
836
+ }), /* @__PURE__ */ z(U, {
837
+ value: o.data.labelColor ?? o.data.color,
838
+ kind: "text",
839
+ customFallback: "#111827",
840
+ onChange: (e) => c(o.id, "labelColor", e)
841
+ })]
842
+ }),
843
+ o.type !== "shapeSvg" && o.type !== "mediaNode" && /* @__PURE__ */ B(R, { children: [
844
+ /* @__PURE__ */ B("div", {
845
+ className: "flow-inspector-row",
846
+ children: [/* @__PURE__ */ z(n, {
847
+ size: "xs",
848
+ className: "flow-inspector-label",
849
+ children: "Text Pos"
850
+ }), /* @__PURE__ */ z(i, {
851
+ options: [
852
+ {
853
+ value: "center",
854
+ label: "center"
855
+ },
856
+ {
857
+ value: "top",
858
+ label: "top"
859
+ },
860
+ {
861
+ value: "bottom",
862
+ label: "bottom"
863
+ },
864
+ {
865
+ value: "left",
866
+ label: "left"
867
+ },
868
+ {
869
+ value: "right",
870
+ label: "right"
871
+ },
872
+ {
873
+ value: "top-left",
874
+ label: "top-left"
875
+ },
876
+ {
877
+ value: "top-right",
878
+ label: "top-right"
879
+ },
880
+ {
881
+ value: "bottom-left",
882
+ label: "bottom-left"
883
+ },
884
+ {
885
+ value: "bottom-right",
886
+ label: "bottom-right"
887
+ }
888
+ ],
889
+ value: o.data.textPlacement ?? (s || o.type === "animAnchor" ? "top" : "center"),
890
+ onChange: (e) => c(o.id, "textPlacement", e),
891
+ style: { fontSize: 12 }
892
+ })]
893
+ }),
894
+ /* @__PURE__ */ B("div", {
895
+ className: "flow-inspector-row",
896
+ children: [/* @__PURE__ */ z(n, {
897
+ size: "xs",
898
+ className: "flow-inspector-label",
899
+ children: "Text Off X"
900
+ }), /* @__PURE__ */ z(t, {
901
+ size: "xs",
902
+ type: "number",
903
+ value: String(o.data.labelOffsetX ?? 0),
904
+ onChange: (e) => c(o.id, "labelOffsetX", Number(e.target.value) || 0)
905
+ })]
906
+ }),
907
+ /* @__PURE__ */ B("div", {
908
+ className: "flow-inspector-row",
909
+ children: [/* @__PURE__ */ z(n, {
910
+ size: "xs",
911
+ className: "flow-inspector-label",
912
+ children: "Text Off Y"
913
+ }), /* @__PURE__ */ z(t, {
914
+ size: "xs",
915
+ type: "number",
916
+ value: String(o.data.labelOffsetY ?? 0),
917
+ onChange: (e) => c(o.id, "labelOffsetY", Number(e.target.value) || 0)
918
+ })]
919
+ })
920
+ ] }),
921
+ /* @__PURE__ */ B("div", {
922
+ className: "flow-inspector-row",
923
+ children: [/* @__PURE__ */ z(n, {
924
+ size: "xs",
925
+ className: "flow-inspector-label",
926
+ children: "Border"
927
+ }), /* @__PURE__ */ z(i, {
928
+ options: [{
929
+ value: "none",
930
+ label: "none"
931
+ }, ...a.map((e) => ({
932
+ value: e,
933
+ label: e
934
+ }))],
935
+ value: o.data.borderStyle ?? (s ? o.type === "geometryGroup" ? "dashed" : "dotted" : "solid"),
936
+ onChange: (e) => c(o.id, "borderStyle", e),
937
+ style: { fontSize: 12 }
938
+ })]
939
+ }),
940
+ v.has(o.type) && (() => {
941
+ let i = o.data.borderSides ?? {}, a = (e, t) => {
942
+ c(o.id, "borderSides", {
943
+ ...o.data.borderSides,
944
+ [e]: {
945
+ ...o.data.borderSides?.[e],
946
+ ...t
947
+ }
948
+ });
949
+ }, s = {
950
+ top: "Top",
951
+ right: "Right",
952
+ bottom: "Bottom",
953
+ left: "Left"
954
+ };
955
+ return /* @__PURE__ */ B(R, { children: [/* @__PURE__ */ B("div", {
956
+ className: "flow-inspector-row",
957
+ children: [/* @__PURE__ */ z(n, {
958
+ size: "xs",
959
+ className: "flow-inspector-label",
960
+ children: "Sides"
961
+ }), /* @__PURE__ */ B("div", {
962
+ style: {
963
+ display: "flex",
964
+ alignItems: "center",
965
+ gap: 6,
966
+ flex: 1
967
+ },
968
+ children: [/* @__PURE__ */ z("span", {
969
+ style: {
970
+ fontSize: 10,
971
+ opacity: .55
972
+ },
973
+ children: "上下左右独立边框"
974
+ }), y(o.data, o.type) && /* @__PURE__ */ z("span", {
975
+ title: "恢复与 Border 设置一致",
976
+ style: { display: "inline-flex" },
977
+ children: /* @__PURE__ */ z(e, {
978
+ size: "xs",
979
+ variant: "ghost",
980
+ onClick: () => c(o.id, "borderSides", void 0),
981
+ children: "重置"
982
+ })
983
+ })]
984
+ })]
985
+ }), _.map((e) => {
986
+ let n = i[e];
987
+ return /* @__PURE__ */ B("div", {
988
+ style: {
989
+ display: "flex",
990
+ alignItems: "center",
991
+ gap: 4,
992
+ marginBottom: 4
993
+ },
994
+ children: [
995
+ /* @__PURE__ */ z("span", {
996
+ title: `独立设置${s[e]}边`,
997
+ style: {
998
+ fontSize: 10,
999
+ width: 40,
1000
+ flexShrink: 0,
1001
+ opacity: n ? .95 : .6
1002
+ },
1003
+ children: s[e]
1004
+ }),
1005
+ /* @__PURE__ */ z("span", {
1006
+ title: `显示/隐藏 ${s[e]} 边`,
1007
+ style: { display: "inline-flex" },
1008
+ children: /* @__PURE__ */ z(r, {
1009
+ size: "sm",
1010
+ checked: n?.visible ?? !0,
1011
+ onChange: (t) => a(e, { visible: t })
1012
+ })
1013
+ }),
1014
+ /* @__PURE__ */ z(U, {
1015
+ value: n?.color ?? o.data.stroke,
1016
+ kind: "stroke",
1017
+ customFallback: "#334155",
1018
+ onChange: (t) => a(e, { color: t })
1019
+ }),
1020
+ /* @__PURE__ */ z("span", {
1021
+ title: `${s[e]} 粗细`,
1022
+ style: {
1023
+ display: "inline-flex",
1024
+ width: 52
1025
+ },
1026
+ children: /* @__PURE__ */ z(t, {
1027
+ size: "xs",
1028
+ type: "number",
1029
+ value: String(n?.width ?? o.data.strokeWidth),
1030
+ onChange: (t) => a(e, { width: Math.max(0, Number(t.target.value) || 0) })
1031
+ })
1032
+ })
1033
+ ]
1034
+ }, e);
1035
+ })] });
1036
+ })(),
1037
+ o.type === "shapeSvg" && /* @__PURE__ */ B(R, { children: [
1038
+ /* @__PURE__ */ B("div", {
1039
+ className: "flow-inspector-row",
1040
+ children: [/* @__PURE__ */ z(n, {
1041
+ size: "xs",
1042
+ className: "flow-inspector-label",
1043
+ children: "Icon"
1044
+ }), /* @__PURE__ */ z(i, {
1045
+ options: C().map((e) => ({
1046
+ value: e.id,
1047
+ label: e.label
1048
+ })),
1049
+ value: o.data.svgId ?? "",
1050
+ placeholder: "选择图标",
1051
+ onChange: (e) => {
1052
+ let t = w(String(e));
1053
+ l(o.id, {
1054
+ svgId: e,
1055
+ ...t?.brandColor ? { color: t.brandColor } : {},
1056
+ ...!o.data.label || o.data.label === "Text" ? { label: t?.label ?? String(e) } : {}
1057
+ });
1058
+ },
1059
+ style: { fontSize: 12 }
1060
+ })]
1061
+ }),
1062
+ /* @__PURE__ */ B("div", {
1063
+ className: "flow-inspector-row",
1064
+ children: [/* @__PURE__ */ z(n, {
1065
+ size: "xs",
1066
+ className: "flow-inspector-label",
1067
+ children: "Box"
1068
+ }), /* @__PURE__ */ z(r, {
1069
+ size: "sm",
1070
+ checked: o.data.iconBox ?? !1,
1071
+ onChange: (e) => c(o.id, "iconBox", e),
1072
+ label: "显示边框"
1073
+ })]
1074
+ }),
1075
+ /* @__PURE__ */ B("div", {
1076
+ className: "flow-inspector-row",
1077
+ children: [/* @__PURE__ */ z(n, {
1078
+ size: "xs",
1079
+ className: "flow-inspector-label",
1080
+ children: "Label"
1081
+ }), /* @__PURE__ */ z(i, {
1082
+ options: [
1083
+ {
1084
+ value: "top",
1085
+ label: "top"
1086
+ },
1087
+ {
1088
+ value: "middle",
1089
+ label: "middle"
1090
+ },
1091
+ {
1092
+ value: "bottom",
1093
+ label: "bottom"
1094
+ },
1095
+ {
1096
+ value: "left",
1097
+ label: "left"
1098
+ },
1099
+ {
1100
+ value: "right",
1101
+ label: "right"
1102
+ }
1103
+ ],
1104
+ value: o.data.labelPlacement === "above" ? "top" : o.data.labelPlacement === "center" ? "middle" : o.data.labelPlacement === "below" ? "bottom" : o.data.labelPlacement ?? "bottom",
1105
+ onChange: (e) => c(o.id, "labelPlacement", e),
1106
+ style: { fontSize: 12 }
1107
+ })]
1108
+ }),
1109
+ /* @__PURE__ */ B("div", {
1110
+ className: "flow-inspector-row",
1111
+ children: [/* @__PURE__ */ z(n, {
1112
+ size: "xs",
1113
+ className: "flow-inspector-label",
1114
+ children: "Offset X"
1115
+ }), /* @__PURE__ */ z(t, {
1116
+ size: "xs",
1117
+ type: "number",
1118
+ value: String(o.data.labelOffsetX ?? 0),
1119
+ onChange: (e) => c(o.id, "labelOffsetX", Number(e.target.value) || 0)
1120
+ })]
1121
+ }),
1122
+ /* @__PURE__ */ B("div", {
1123
+ className: "flow-inspector-row",
1124
+ children: [/* @__PURE__ */ z(n, {
1125
+ size: "xs",
1126
+ className: "flow-inspector-label",
1127
+ children: "Offset Y"
1128
+ }), /* @__PURE__ */ z(t, {
1129
+ size: "xs",
1130
+ type: "number",
1131
+ value: String(o.data.labelOffsetY ?? 0),
1132
+ onChange: (e) => c(o.id, "labelOffsetY", Number(e.target.value) || 0)
1133
+ })]
1134
+ })
1135
+ ] })
1136
+ ]
1137
+ }),
1138
+ o.type === "mediaNode" && /* @__PURE__ */ B("div", {
1139
+ className: "flow-inspector-section",
1140
+ children: [/* @__PURE__ */ z("div", {
1141
+ className: "flow-inspector-section-title",
1142
+ children: "Palette (Archify)"
1143
+ }), /* @__PURE__ */ B("div", {
1144
+ className: "flow-inspector-row",
1145
+ children: [/* @__PURE__ */ z(n, {
1146
+ size: "xs",
1147
+ className: "flow-inspector-label",
1148
+ children: "Palette"
1149
+ }), /* @__PURE__ */ z("div", {
1150
+ style: {
1151
+ display: "flex",
1152
+ flexWrap: "wrap",
1153
+ gap: 4
1154
+ },
1155
+ children: O.map((e) => /* @__PURE__ */ z("button", {
1156
+ type: "button",
1157
+ title: D[e],
1158
+ "aria-label": D[e],
1159
+ onClick: () => l(o.id, k(e)),
1160
+ style: {
1161
+ width: 18,
1162
+ height: 18,
1163
+ borderRadius: 4,
1164
+ cursor: "pointer",
1165
+ background: E[e].fill,
1166
+ border: `1.5px solid ${E[e].stroke}`
1167
+ }
1168
+ }, e))
1169
+ })]
1170
+ })]
1171
+ }),
1172
+ o.type !== "mediaNode" && o.type !== "shapeSvg" && /* @__PURE__ */ z(G, {
1173
+ node: o,
1174
+ onUpdateData: c
1175
+ }),
1176
+ o.type !== "mediaNode" && /* @__PURE__ */ B("div", {
1177
+ className: "flow-inspector-section",
1178
+ children: [
1179
+ /* @__PURE__ */ z("div", {
1180
+ className: "flow-inspector-section-title",
1181
+ children: "Card (Archify)"
1182
+ }),
1183
+ /* @__PURE__ */ B("div", {
1184
+ className: "flow-inspector-row",
1185
+ children: [/* @__PURE__ */ z(n, {
1186
+ size: "xs",
1187
+ className: "flow-inspector-label",
1188
+ children: "Subtitle"
1189
+ }), /* @__PURE__ */ z(t, {
1190
+ size: "xs",
1191
+ value: o.data.sublabel ?? "",
1192
+ placeholder: "secondary line",
1193
+ onChange: (e) => c(o.id, "sublabel", e.target.value)
1194
+ })]
1195
+ }),
1196
+ /* @__PURE__ */ B("div", {
1197
+ className: "flow-inspector-row",
1198
+ children: [/* @__PURE__ */ z(n, {
1199
+ size: "xs",
1200
+ className: "flow-inspector-label",
1201
+ children: "Sub Color"
1202
+ }), /* @__PURE__ */ z(U, {
1203
+ value: o.data.sublabelColor ?? "#94a3b8",
1204
+ kind: "text",
1205
+ customFallback: "#94a3b8",
1206
+ onChange: (e) => c(o.id, "sublabelColor", e)
1207
+ })]
1208
+ }),
1209
+ /* @__PURE__ */ B("div", {
1210
+ className: "flow-inspector-row",
1211
+ children: [/* @__PURE__ */ z(n, {
1212
+ size: "xs",
1213
+ className: "flow-inspector-label",
1214
+ children: "Tag"
1215
+ }), /* @__PURE__ */ z(t, {
1216
+ size: "xs",
1217
+ value: o.data.tag ?? "",
1218
+ placeholder: "corner pill",
1219
+ onChange: (e) => c(o.id, "tag", e.target.value)
1220
+ })]
1221
+ }),
1222
+ /* @__PURE__ */ B("div", {
1223
+ className: "flow-inspector-row",
1224
+ children: [/* @__PURE__ */ z(n, {
1225
+ size: "xs",
1226
+ className: "flow-inspector-label",
1227
+ children: "Tag Color"
1228
+ }), /* @__PURE__ */ z(U, {
1229
+ value: o.data.tagColor ?? o.data.stroke,
1230
+ kind: "stroke",
1231
+ customFallback: "#334155",
1232
+ onChange: (e) => c(o.id, "tagColor", e)
1233
+ })]
1234
+ }),
1235
+ /* @__PURE__ */ B("div", {
1236
+ className: "flow-inspector-row",
1237
+ children: [/* @__PURE__ */ z(n, {
1238
+ size: "xs",
1239
+ className: "flow-inspector-label",
1240
+ children: "Tag Pos"
1241
+ }), /* @__PURE__ */ z(i, {
1242
+ options: [
1243
+ {
1244
+ value: "top-left",
1245
+ label: "top-left"
1246
+ },
1247
+ {
1248
+ value: "top-right",
1249
+ label: "top-right"
1250
+ },
1251
+ {
1252
+ value: "bottom-left",
1253
+ label: "bottom-left"
1254
+ },
1255
+ {
1256
+ value: "bottom-right",
1257
+ label: "bottom-right"
1258
+ }
1259
+ ],
1260
+ value: o.data.tagPlacement ?? "top-right",
1261
+ onChange: (e) => c(o.id, "tagPlacement", e),
1262
+ style: { fontSize: 12 }
1263
+ })]
1264
+ }),
1265
+ /* @__PURE__ */ B("div", {
1266
+ className: "flow-inspector-row",
1267
+ children: [/* @__PURE__ */ z(n, {
1268
+ size: "xs",
1269
+ className: "flow-inspector-label",
1270
+ children: "Palette"
1271
+ }), /* @__PURE__ */ z("div", {
1272
+ style: {
1273
+ display: "flex",
1274
+ flexWrap: "wrap",
1275
+ gap: 4
1276
+ },
1277
+ children: O.map((e) => /* @__PURE__ */ z("button", {
1278
+ type: "button",
1279
+ title: D[e],
1280
+ "aria-label": D[e],
1281
+ onClick: () => l(o.id, k(e)),
1282
+ style: {
1283
+ width: 18,
1284
+ height: 18,
1285
+ borderRadius: 4,
1286
+ cursor: "pointer",
1287
+ background: E[e].fill,
1288
+ border: `1.5px solid ${E[e].stroke}`
1289
+ }
1290
+ }, e))
1291
+ })]
1292
+ })
1293
+ ]
1294
+ }),
1295
+ o.type === "mediaNode" && /* @__PURE__ */ z(q, {
1296
+ node: o,
1297
+ onUpdateData: c
1298
+ }),
1299
+ /* @__PURE__ */ B("div", {
1300
+ className: "flow-inspector-section",
1301
+ children: [
1302
+ /* @__PURE__ */ z("div", {
1303
+ className: "flow-inspector-section-title",
1304
+ children: "Transform"
1305
+ }),
1306
+ /* @__PURE__ */ B("div", {
1307
+ className: "flow-inspector-row",
1308
+ children: [
1309
+ /* @__PURE__ */ z(n, {
1310
+ size: "xs",
1311
+ className: "flow-inspector-label",
1312
+ children: "Rotate"
1313
+ }),
1314
+ /* @__PURE__ */ z(t, {
1315
+ size: "xs",
1316
+ type: "number",
1317
+ value: String(o.data.rotation ?? 0),
1318
+ onChange: (e) => c(o.id, "rotation", Number(e.target.value) || 0)
1319
+ }),
1320
+ /* @__PURE__ */ z("span", {
1321
+ className: "flow-inspector-suffix",
1322
+ style: {
1323
+ fontSize: 10,
1324
+ opacity: .5
1325
+ },
1326
+ children: "°"
1327
+ })
1328
+ ]
1329
+ }),
1330
+ /* @__PURE__ */ B("div", {
1331
+ className: "flow-inspector-row",
1332
+ children: [
1333
+ /* @__PURE__ */ z(n, {
1334
+ size: "xs",
1335
+ className: "flow-inspector-label",
1336
+ children: "Flip"
1337
+ }),
1338
+ /* @__PURE__ */ z(e, {
1339
+ size: "xs",
1340
+ variant: o.data.flipX ? "primary" : "ghost",
1341
+ onClick: () => c(o.id, "flipX", !o.data.flipX),
1342
+ square: !0,
1343
+ children: /* @__PURE__ */ z("span", {
1344
+ title: "Flip Horizontal",
1345
+ children: "↔"
1346
+ })
1347
+ }),
1348
+ /* @__PURE__ */ z(e, {
1349
+ size: "xs",
1350
+ variant: o.data.flipY ? "primary" : "ghost",
1351
+ onClick: () => c(o.id, "flipY", !o.data.flipY),
1352
+ square: !0,
1353
+ children: /* @__PURE__ */ z("span", {
1354
+ title: "Flip Vertical",
1355
+ children: "↕"
1356
+ })
1357
+ })
1358
+ ]
1359
+ }),
1360
+ /* @__PURE__ */ B("div", {
1361
+ className: "flow-inspector-row",
1362
+ children: [
1363
+ /* @__PURE__ */ z(n, {
1364
+ size: "xs",
1365
+ className: "flow-inspector-label",
1366
+ children: "Quick"
1367
+ }),
1368
+ /* @__PURE__ */ z(e, {
1369
+ size: "xs",
1370
+ variant: "ghost",
1371
+ onClick: () => c(o.id, "rotation", ((o.data.rotation ?? 0) + 90) % 360),
1372
+ children: "+90°"
1373
+ }),
1374
+ /* @__PURE__ */ z(e, {
1375
+ size: "xs",
1376
+ variant: "ghost",
1377
+ onClick: () => c(o.id, "rotation", ((o.data.rotation ?? 0) - 90 + 360) % 360),
1378
+ children: "−90°"
1379
+ })
1380
+ ]
1381
+ })
1382
+ ]
1383
+ })
1384
+ ] });
1389
1385
  }
1390
- function Te({ node: l, onUpdateData: c }) {
1391
- const a = l.data.mediaKind ?? "markdown", o = l.data.aiConfig, f = ye(null), m = (t, r) => {
1392
- c(l.id, "aiConfig", {
1393
- gateway: "",
1394
- protocol: "openai",
1395
- model: "",
1396
- ...o,
1397
- [t]: r
1398
- });
1399
- };
1400
- return /* @__PURE__ */ s("div", {
1401
- className: "flow-inspector-section",
1402
- children: [/* @__PURE__ */ s("div", {
1403
- className: "flow-inspector-section-title",
1404
- children: ["Media · ", a]
1405
- }), a === "data" ? /* @__PURE__ */ e(xe, {
1406
- node: l,
1407
- onUpdateData: c
1408
- }) : a === "model3d" ? /* @__PURE__ */ s(E, { children: [
1409
- /* @__PURE__ */ s("div", {
1410
- className: "flow-inspector-row",
1411
- children: [/* @__PURE__ */ e(n, {
1412
- size: "xs",
1413
- className: "flow-inspector-label",
1414
- children: "格式"
1415
- }), /* @__PURE__ */ e(y, {
1416
- options: [
1417
- {
1418
- value: "stl",
1419
- label: "STL"
1420
- },
1421
- {
1422
- value: "obj",
1423
- label: "OBJ"
1424
- },
1425
- {
1426
- value: "3mf",
1427
- label: "3MF"
1428
- }
1429
- ],
1430
- value: l.data.modelFormat ?? "stl",
1431
- onChange: (t) => c(l.id, "modelFormat", t)
1432
- })]
1433
- }),
1434
- /* @__PURE__ */ s("div", {
1435
- className: "flow-inspector-row flow-inspector-multiline",
1436
- children: [/* @__PURE__ */ e(n, {
1437
- size: "xs",
1438
- className: "flow-inspector-label",
1439
- children: "模型链接"
1440
- }), /* @__PURE__ */ e(b, {
1441
- size: "xs",
1442
- value: l.data.mediaContent ?? "",
1443
- placeholder: "https://example.com/model.stl",
1444
- onChange: (t) => c(l.id, "mediaContent", t.target.value)
1445
- })]
1446
- }),
1447
- /* @__PURE__ */ s("div", {
1448
- className: "flow-inspector-row",
1449
- children: [
1450
- /* @__PURE__ */ e(n, {
1451
- size: "xs",
1452
- className: "flow-inspector-label",
1453
- children: "本地模型"
1454
- }),
1455
- /* @__PURE__ */ e("input", {
1456
- ref: f,
1457
- type: "file",
1458
- accept: ".stl,.obj,.3mf,model/stl,model/obj,model/3mf,application/vnd.ms-package.3dmanufacturing-3dmodel+xml",
1459
- hidden: !0,
1460
- onChange: (t) => {
1461
- const r = t.target.files?.[0];
1462
- if (t.target.value = "", !r) return;
1463
- if (r.size > 10 * 1024 * 1024) {
1464
- window.alert("本地模型不能超过 10 MiB,请改用模型链接。");
1465
- return;
1466
- }
1467
- const N = r.name.split(".").pop()?.toLowerCase();
1468
- if (N !== "stl" && N !== "obj" && N !== "3mf") {
1469
- window.alert("仅支持 STL、OBJ 和 3MF 模型。");
1470
- return;
1471
- }
1472
- const w = new FileReader();
1473
- w.onload = () => {
1474
- typeof w.result == "string" && (c(l.id, "modelFormat", N), c(l.id, "mediaContent", w.result));
1475
- }, w.onerror = () => window.alert("读取本地模型失败。"), w.readAsDataURL(r);
1476
- }
1477
- }),
1478
- /* @__PURE__ */ e(g, {
1479
- size: "xs",
1480
- variant: "neutral",
1481
- onClick: () => f.current?.click(),
1482
- children: "选择文件"
1483
- }),
1484
- l.data.mediaContent?.startsWith("data:") && /* @__PURE__ */ e("span", {
1485
- className: "flow-inspector-file-status",
1486
- children: "已嵌入"
1487
- })
1488
- ]
1489
- }),
1490
- /* @__PURE__ */ e("div", {
1491
- className: "flow-inspector-help",
1492
- children: "支持 STL、OBJ、3MF;本地文件将以 Base64 嵌入文档,最大 10 MiB。选中节点后可在内部拖拽旋转、滚轮缩放。"
1493
- })
1494
- ] }) : a === "image" ? /* @__PURE__ */ s(E, { children: [/* @__PURE__ */ s("div", {
1495
- className: "flow-inspector-row flow-inspector-multiline",
1496
- children: [/* @__PURE__ */ e(n, {
1497
- size: "xs",
1498
- className: "flow-inspector-label",
1499
- children: "图片链接"
1500
- }), /* @__PURE__ */ e(b, {
1501
- size: "xs",
1502
- value: l.data.mediaContent ?? "",
1503
- placeholder: "https://example.com/image.png",
1504
- onChange: (t) => c(l.id, "mediaContent", t.target.value)
1505
- })]
1506
- }), /* @__PURE__ */ e("div", {
1507
- className: "flow-inspector-help",
1508
- children: "支持 HTTP(S) 链接;选中图片节点后可直接粘贴图片并保存为 Base64。"
1509
- })] }) : a !== "ai" ? /* @__PURE__ */ e(K, {
1510
- label: {
1511
- markdown: "Markdown 源码",
1512
- html: "HTML 源码",
1513
- mermaid: "Mermaid 图表",
1514
- math: "LaTeX 公式"
1515
- }[a] ?? "内容",
1516
- value: l.data.mediaContent ?? "",
1517
- onChange: (t) => c(l.id, "mediaContent", t),
1518
- rows: 8
1519
- }) : /* @__PURE__ */ s(E, { children: [
1520
- /* @__PURE__ */ s("div", {
1521
- className: "flow-inspector-row",
1522
- children: [/* @__PURE__ */ e(n, {
1523
- size: "xs",
1524
- className: "flow-inspector-label",
1525
- children: "协议"
1526
- }), /* @__PURE__ */ e(y, {
1527
- options: [{
1528
- value: "openai",
1529
- label: "OpenAI 兼容"
1530
- }, {
1531
- value: "anthropic",
1532
- label: "Anthropic 兼容"
1533
- }],
1534
- value: o?.protocol ?? "openai",
1535
- onChange: (t) => m("protocol", t),
1536
- style: { fontSize: 12 }
1537
- })]
1538
- }),
1539
- /* @__PURE__ */ s("div", {
1540
- className: "flow-inspector-row",
1541
- style: {
1542
- flexDirection: "column",
1543
- alignItems: "stretch",
1544
- gap: 4
1545
- },
1546
- children: [/* @__PURE__ */ e(n, {
1547
- size: "xs",
1548
- className: "flow-inspector-label",
1549
- children: "接口地址"
1550
- }), /* @__PURE__ */ e(b, {
1551
- size: "xs",
1552
- value: o?.gateway ?? "",
1553
- placeholder: "https://api.openai.com/v1/chat/completions",
1554
- onChange: (t) => m("gateway", t.target.value)
1555
- })]
1556
- }),
1557
- /* @__PURE__ */ s("div", {
1558
- className: "flow-inspector-row",
1559
- style: {
1560
- flexDirection: "column",
1561
- alignItems: "stretch",
1562
- gap: 4
1563
- },
1564
- children: [/* @__PURE__ */ e(n, {
1565
- size: "xs",
1566
- className: "flow-inspector-label",
1567
- children: "模型"
1568
- }), /* @__PURE__ */ e(b, {
1569
- size: "xs",
1570
- value: o?.model ?? "",
1571
- placeholder: "gpt-4o-mini",
1572
- onChange: (t) => m("model", t.target.value)
1573
- })]
1574
- }),
1575
- /* @__PURE__ */ s("div", {
1576
- className: "flow-inspector-row",
1577
- style: {
1578
- flexDirection: "column",
1579
- alignItems: "stretch",
1580
- gap: 4
1581
- },
1582
- children: [/* @__PURE__ */ e(n, {
1583
- size: "xs",
1584
- className: "flow-inspector-label",
1585
- children: "API Key"
1586
- }), /* @__PURE__ */ e(b, {
1587
- size: "xs",
1588
- type: "password",
1589
- value: o?.apiKey ?? "",
1590
- placeholder: "sk-...",
1591
- onChange: (t) => m("apiKey", t.target.value)
1592
- })]
1593
- }),
1594
- /* @__PURE__ */ e(K, {
1595
- label: "System Prompt",
1596
- value: o?.systemPrompt ?? "",
1597
- onChange: (t) => m("systemPrompt", t),
1598
- rows: 3
1599
- }),
1600
- /* @__PURE__ */ e("div", {
1601
- style: {
1602
- fontSize: 10,
1603
- color: "color-mix(in oklch, var(--color-base-content) 45%, transparent)",
1604
- marginTop: 4
1605
- },
1606
- children: "密钥会随文档 JSON 一同导出,请谨慎分享。"
1607
- })
1608
- ] })]
1609
- });
1386
+ function q({ node: r, onUpdateData: a }) {
1387
+ let o = r.data.mediaKind ?? "markdown", s = r.data.aiConfig, c = I(null), l = (e, t) => {
1388
+ a(r.id, "aiConfig", {
1389
+ gateway: "",
1390
+ protocol: "openai",
1391
+ model: "",
1392
+ ...s,
1393
+ [e]: t
1394
+ });
1395
+ };
1396
+ return /* @__PURE__ */ B("div", {
1397
+ className: "flow-inspector-section",
1398
+ children: [/* @__PURE__ */ B("div", {
1399
+ className: "flow-inspector-section-title",
1400
+ children: ["Media · ", o]
1401
+ }), o === "data" ? /* @__PURE__ */ z(P, {
1402
+ node: r,
1403
+ onUpdateData: a
1404
+ }) : o === "model3d" ? /* @__PURE__ */ B(R, { children: [
1405
+ /* @__PURE__ */ B("div", {
1406
+ className: "flow-inspector-row",
1407
+ children: [/* @__PURE__ */ z(n, {
1408
+ size: "xs",
1409
+ className: "flow-inspector-label",
1410
+ children: "格式"
1411
+ }), /* @__PURE__ */ z(i, {
1412
+ options: [
1413
+ {
1414
+ value: "stl",
1415
+ label: "STL"
1416
+ },
1417
+ {
1418
+ value: "obj",
1419
+ label: "OBJ"
1420
+ },
1421
+ {
1422
+ value: "3mf",
1423
+ label: "3MF"
1424
+ }
1425
+ ],
1426
+ value: r.data.modelFormat ?? "stl",
1427
+ onChange: (e) => a(r.id, "modelFormat", e)
1428
+ })]
1429
+ }),
1430
+ /* @__PURE__ */ B("div", {
1431
+ className: "flow-inspector-row flow-inspector-multiline",
1432
+ children: [/* @__PURE__ */ z(n, {
1433
+ size: "xs",
1434
+ className: "flow-inspector-label",
1435
+ children: "模型链接"
1436
+ }), /* @__PURE__ */ z(t, {
1437
+ size: "xs",
1438
+ value: r.data.mediaContent ?? "",
1439
+ placeholder: "https://example.com/model.stl",
1440
+ onChange: (e) => a(r.id, "mediaContent", e.target.value)
1441
+ })]
1442
+ }),
1443
+ /* @__PURE__ */ B("div", {
1444
+ className: "flow-inspector-row",
1445
+ children: [
1446
+ /* @__PURE__ */ z(n, {
1447
+ size: "xs",
1448
+ className: "flow-inspector-label",
1449
+ children: "本地模型"
1450
+ }),
1451
+ /* @__PURE__ */ z("input", {
1452
+ ref: c,
1453
+ type: "file",
1454
+ accept: ".stl,.obj,.3mf,model/stl,model/obj,model/3mf,application/vnd.ms-package.3dmanufacturing-3dmodel+xml",
1455
+ hidden: !0,
1456
+ onChange: (e) => {
1457
+ let t = e.target.files?.[0];
1458
+ if (e.target.value = "", !t) return;
1459
+ if (t.size > 10485760) {
1460
+ window.alert("本地模型不能超过 10 MiB,请改用模型链接。");
1461
+ return;
1462
+ }
1463
+ let n = t.name.split(".").pop()?.toLowerCase();
1464
+ if (n !== "stl" && n !== "obj" && n !== "3mf") {
1465
+ window.alert("仅支持 STL、OBJ 和 3MF 模型。");
1466
+ return;
1467
+ }
1468
+ let i = new FileReader();
1469
+ i.onload = () => {
1470
+ typeof i.result == "string" && (a(r.id, "modelFormat", n), a(r.id, "mediaContent", i.result));
1471
+ }, i.onerror = () => window.alert("读取本地模型失败。"), i.readAsDataURL(t);
1472
+ }
1473
+ }),
1474
+ /* @__PURE__ */ z(e, {
1475
+ size: "xs",
1476
+ variant: "neutral",
1477
+ onClick: () => c.current?.click(),
1478
+ children: "选择文件"
1479
+ }),
1480
+ r.data.mediaContent?.startsWith("data:") && /* @__PURE__ */ z("span", {
1481
+ className: "flow-inspector-file-status",
1482
+ children: "已嵌入"
1483
+ })
1484
+ ]
1485
+ }),
1486
+ /* @__PURE__ */ z("div", {
1487
+ className: "flow-inspector-help",
1488
+ children: "支持 STL、OBJ、3MF;本地文件将以 Base64 嵌入文档,最大 10 MiB。选中节点后可在内部拖拽旋转、滚轮缩放。"
1489
+ })
1490
+ ] }) : o === "image" ? /* @__PURE__ */ B(R, { children: [/* @__PURE__ */ B("div", {
1491
+ className: "flow-inspector-row flow-inspector-multiline",
1492
+ children: [/* @__PURE__ */ z(n, {
1493
+ size: "xs",
1494
+ className: "flow-inspector-label",
1495
+ children: "图片链接"
1496
+ }), /* @__PURE__ */ z(t, {
1497
+ size: "xs",
1498
+ value: r.data.mediaContent ?? "",
1499
+ placeholder: "https://example.com/image.png",
1500
+ onChange: (e) => a(r.id, "mediaContent", e.target.value)
1501
+ })]
1502
+ }), /* @__PURE__ */ z("div", {
1503
+ className: "flow-inspector-help",
1504
+ children: "支持 HTTP(S) 链接;选中图片节点后可直接粘贴图片并保存为 Base64。"
1505
+ })] }) : o === "ai" ? /* @__PURE__ */ B(R, { children: [
1506
+ /* @__PURE__ */ B("div", {
1507
+ className: "flow-inspector-row",
1508
+ children: [/* @__PURE__ */ z(n, {
1509
+ size: "xs",
1510
+ className: "flow-inspector-label",
1511
+ children: "协议"
1512
+ }), /* @__PURE__ */ z(i, {
1513
+ options: [{
1514
+ value: "openai",
1515
+ label: "OpenAI 兼容"
1516
+ }, {
1517
+ value: "anthropic",
1518
+ label: "Anthropic 兼容"
1519
+ }],
1520
+ value: s?.protocol ?? "openai",
1521
+ onChange: (e) => l("protocol", e),
1522
+ style: { fontSize: 12 }
1523
+ })]
1524
+ }),
1525
+ /* @__PURE__ */ B("div", {
1526
+ className: "flow-inspector-row",
1527
+ style: {
1528
+ flexDirection: "column",
1529
+ alignItems: "stretch",
1530
+ gap: 4
1531
+ },
1532
+ children: [/* @__PURE__ */ z(n, {
1533
+ size: "xs",
1534
+ className: "flow-inspector-label",
1535
+ children: "接口地址"
1536
+ }), /* @__PURE__ */ z(t, {
1537
+ size: "xs",
1538
+ value: s?.gateway ?? "",
1539
+ placeholder: "https://api.openai.com/v1/chat/completions",
1540
+ onChange: (e) => l("gateway", e.target.value)
1541
+ })]
1542
+ }),
1543
+ /* @__PURE__ */ B("div", {
1544
+ className: "flow-inspector-row",
1545
+ style: {
1546
+ flexDirection: "column",
1547
+ alignItems: "stretch",
1548
+ gap: 4
1549
+ },
1550
+ children: [/* @__PURE__ */ z(n, {
1551
+ size: "xs",
1552
+ className: "flow-inspector-label",
1553
+ children: "模型"
1554
+ }), /* @__PURE__ */ z(t, {
1555
+ size: "xs",
1556
+ value: s?.model ?? "",
1557
+ placeholder: "gpt-4o-mini",
1558
+ onChange: (e) => l("model", e.target.value)
1559
+ })]
1560
+ }),
1561
+ /* @__PURE__ */ B("div", {
1562
+ className: "flow-inspector-row",
1563
+ style: {
1564
+ flexDirection: "column",
1565
+ alignItems: "stretch",
1566
+ gap: 4
1567
+ },
1568
+ children: [/* @__PURE__ */ z(n, {
1569
+ size: "xs",
1570
+ className: "flow-inspector-label",
1571
+ children: "API Key"
1572
+ }), /* @__PURE__ */ z(t, {
1573
+ size: "xs",
1574
+ type: "password",
1575
+ value: s?.apiKey ?? "",
1576
+ placeholder: "sk-...",
1577
+ onChange: (e) => l("apiKey", e.target.value)
1578
+ })]
1579
+ }),
1580
+ /* @__PURE__ */ z(N, {
1581
+ label: "System Prompt",
1582
+ value: s?.systemPrompt ?? "",
1583
+ onChange: (e) => l("systemPrompt", e),
1584
+ rows: 3
1585
+ }),
1586
+ /* @__PURE__ */ z("div", {
1587
+ style: {
1588
+ fontSize: 10,
1589
+ color: "color-mix(in oklch, var(--color-base-content) 45%, transparent)",
1590
+ marginTop: 4
1591
+ },
1592
+ children: "密钥会随文档 JSON 一同导出,请谨慎分享。"
1593
+ })
1594
+ ] }) : /* @__PURE__ */ z(N, {
1595
+ label: {
1596
+ markdown: "Markdown 源码",
1597
+ html: "HTML 源码",
1598
+ mermaid: "Mermaid 图表",
1599
+ math: "LaTeX 公式"
1600
+ }[o] ?? "内容",
1601
+ value: r.data.mediaContent ?? "",
1602
+ onChange: (e) => a(r.id, "mediaContent", e),
1603
+ rows: 8
1604
+ })]
1605
+ });
1610
1606
  }
1611
- function Oe({ edge: l, onUpdateData: c, onUpdateType: a }) {
1612
- return /* @__PURE__ */ s("div", {
1613
- className: "flow-inspector-section",
1614
- children: [
1615
- /* @__PURE__ */ e("div", {
1616
- className: "flow-inspector-section-title",
1617
- children: "Edge"
1618
- }),
1619
- /* @__PURE__ */ s("div", {
1620
- className: "flow-inspector-row",
1621
- children: [/* @__PURE__ */ e(n, {
1622
- size: "xs",
1623
- className: "flow-inspector-label",
1624
- children: "Type"
1625
- }), /* @__PURE__ */ e(y, {
1626
- options: se.map((o) => ({
1627
- value: o,
1628
- label: o
1629
- })),
1630
- value: l.type,
1631
- onChange: (o) => a(l.id, o),
1632
- style: { fontSize: 12 }
1633
- })]
1634
- }),
1635
- /* @__PURE__ */ s("div", {
1636
- className: "flow-inspector-row",
1637
- children: [/* @__PURE__ */ e(n, {
1638
- size: "xs",
1639
- className: "flow-inspector-label",
1640
- children: "Color"
1641
- }), /* @__PURE__ */ e(O, {
1642
- value: l.data.strokeColor,
1643
- kind: "line",
1644
- customFallback: "#374151",
1645
- onChange: (o) => c(l.id, "strokeColor", o)
1646
- })]
1647
- }),
1648
- /* @__PURE__ */ s("div", {
1649
- className: "flow-inspector-row",
1650
- children: [/* @__PURE__ */ e(n, {
1651
- size: "xs",
1652
- className: "flow-inspector-label",
1653
- children: "Width"
1654
- }), /* @__PURE__ */ e(b, {
1655
- size: "xs",
1656
- type: "number",
1657
- value: String(l.data.strokeWidth ?? 2),
1658
- onChange: (o) => c(l.id, "strokeWidth", Number(o.target.value) || 2)
1659
- })]
1660
- }),
1661
- /* @__PURE__ */ s("div", {
1662
- className: "flow-inspector-row",
1663
- children: [/* @__PURE__ */ e(n, {
1664
- size: "xs",
1665
- className: "flow-inspector-label",
1666
- children: "Animation"
1667
- }), /* @__PURE__ */ e(W, {
1668
- size: "sm",
1669
- checked: l.data.animated ?? !1,
1670
- onChange: (o) => c(l.id, "animated", o),
1671
- label: "预览时播放"
1672
- })]
1673
- }),
1674
- /* @__PURE__ */ s("div", {
1675
- className: "flow-inspector-row",
1676
- children: [/* @__PURE__ */ e(n, {
1677
- size: "xs",
1678
- className: "flow-inspector-label",
1679
- children: "Line"
1680
- }), /* @__PURE__ */ e(y, {
1681
- options: J.map((o) => ({
1682
- value: o,
1683
- label: o
1684
- })),
1685
- value: l.data.lineStyle ?? "solid",
1686
- onChange: (o) => c(l.id, "lineStyle", o),
1687
- style: { fontSize: 12 }
1688
- })]
1689
- }),
1690
- /* @__PURE__ */ s("div", {
1691
- className: "flow-inspector-row",
1692
- children: [/* @__PURE__ */ e(n, {
1693
- size: "xs",
1694
- className: "flow-inspector-label",
1695
- children: "Start"
1696
- }), /* @__PURE__ */ e(y, {
1697
- options: Z.map((o) => ({
1698
- value: o,
1699
- label: o
1700
- })),
1701
- value: l.data.markerStart ?? "none",
1702
- onChange: (o) => c(l.id, "markerStart", o),
1703
- style: { fontSize: 12 }
1704
- })]
1705
- }),
1706
- /* @__PURE__ */ s("div", {
1707
- className: "flow-inspector-row",
1708
- children: [/* @__PURE__ */ e(n, {
1709
- size: "xs",
1710
- className: "flow-inspector-label",
1711
- children: "End"
1712
- }), /* @__PURE__ */ e(y, {
1713
- options: Z.map((o) => ({
1714
- value: o,
1715
- label: o
1716
- })),
1717
- value: l.data.markerEnd ?? "none",
1718
- onChange: (o) => c(l.id, "markerEnd", o),
1719
- style: { fontSize: 12 }
1720
- })]
1721
- }),
1722
- /* @__PURE__ */ s("div", {
1723
- className: "flow-inspector-row",
1724
- children: [/* @__PURE__ */ e(n, {
1725
- size: "xs",
1726
- className: "flow-inspector-label",
1727
- children: "Label"
1728
- }), /* @__PURE__ */ e(b, {
1729
- size: "xs",
1730
- value: l.data.labelText ?? "",
1731
- onChange: (o) => c(l.id, "labelText", o.target.value),
1732
- placeholder: "Edge label"
1733
- })]
1734
- })
1735
- ]
1736
- });
1607
+ function J({ edge: e, onUpdateData: a, onUpdateType: o }) {
1608
+ return /* @__PURE__ */ B("div", {
1609
+ className: "flow-inspector-section",
1610
+ children: [
1611
+ /* @__PURE__ */ z("div", {
1612
+ className: "flow-inspector-section-title",
1613
+ children: "Edge"
1614
+ }),
1615
+ /* @__PURE__ */ B("div", {
1616
+ className: "flow-inspector-row",
1617
+ children: [/* @__PURE__ */ z(n, {
1618
+ size: "xs",
1619
+ className: "flow-inspector-label",
1620
+ children: "Type"
1621
+ }), /* @__PURE__ */ z(i, {
1622
+ options: l.map((e) => ({
1623
+ value: e,
1624
+ label: e
1625
+ })),
1626
+ value: e.type,
1627
+ onChange: (t) => o(e.id, t),
1628
+ style: { fontSize: 12 }
1629
+ })]
1630
+ }),
1631
+ /* @__PURE__ */ B("div", {
1632
+ className: "flow-inspector-row",
1633
+ children: [/* @__PURE__ */ z(n, {
1634
+ size: "xs",
1635
+ className: "flow-inspector-label",
1636
+ children: "Color"
1637
+ }), /* @__PURE__ */ z(U, {
1638
+ value: e.data.strokeColor,
1639
+ kind: "line",
1640
+ customFallback: "#374151",
1641
+ onChange: (t) => a(e.id, "strokeColor", t)
1642
+ })]
1643
+ }),
1644
+ /* @__PURE__ */ B("div", {
1645
+ className: "flow-inspector-row",
1646
+ children: [/* @__PURE__ */ z(n, {
1647
+ size: "xs",
1648
+ className: "flow-inspector-label",
1649
+ children: "Width"
1650
+ }), /* @__PURE__ */ z(t, {
1651
+ size: "xs",
1652
+ type: "number",
1653
+ value: String(e.data.strokeWidth ?? 2),
1654
+ onChange: (t) => a(e.id, "strokeWidth", Number(t.target.value) || 2)
1655
+ })]
1656
+ }),
1657
+ /* @__PURE__ */ B("div", {
1658
+ className: "flow-inspector-row",
1659
+ children: [/* @__PURE__ */ z(n, {
1660
+ size: "xs",
1661
+ className: "flow-inspector-label",
1662
+ children: "Animation"
1663
+ }), /* @__PURE__ */ z(r, {
1664
+ size: "sm",
1665
+ checked: e.data.animated ?? !1,
1666
+ onChange: (t) => a(e.id, "animated", t),
1667
+ label: "预览时播放"
1668
+ })]
1669
+ }),
1670
+ /* @__PURE__ */ B("div", {
1671
+ className: "flow-inspector-row",
1672
+ children: [/* @__PURE__ */ z(n, {
1673
+ size: "xs",
1674
+ className: "flow-inspector-label",
1675
+ children: "Line"
1676
+ }), /* @__PURE__ */ z(i, {
1677
+ options: s.map((e) => ({
1678
+ value: e,
1679
+ label: e
1680
+ })),
1681
+ value: e.data.lineStyle ?? "solid",
1682
+ onChange: (t) => a(e.id, "lineStyle", t),
1683
+ style: { fontSize: 12 }
1684
+ })]
1685
+ }),
1686
+ /* @__PURE__ */ B("div", {
1687
+ className: "flow-inspector-row",
1688
+ children: [/* @__PURE__ */ z(n, {
1689
+ size: "xs",
1690
+ className: "flow-inspector-label",
1691
+ children: "Start"
1692
+ }), /* @__PURE__ */ z(i, {
1693
+ options: c.map((e) => ({
1694
+ value: e,
1695
+ label: e
1696
+ })),
1697
+ value: e.data.markerStart ?? "none",
1698
+ onChange: (t) => a(e.id, "markerStart", t),
1699
+ style: { fontSize: 12 }
1700
+ })]
1701
+ }),
1702
+ /* @__PURE__ */ B("div", {
1703
+ className: "flow-inspector-row",
1704
+ children: [/* @__PURE__ */ z(n, {
1705
+ size: "xs",
1706
+ className: "flow-inspector-label",
1707
+ children: "End"
1708
+ }), /* @__PURE__ */ z(i, {
1709
+ options: c.map((e) => ({
1710
+ value: e,
1711
+ label: e
1712
+ })),
1713
+ value: e.data.markerEnd ?? "none",
1714
+ onChange: (t) => a(e.id, "markerEnd", t),
1715
+ style: { fontSize: 12 }
1716
+ })]
1717
+ }),
1718
+ /* @__PURE__ */ B("div", {
1719
+ className: "flow-inspector-row",
1720
+ children: [/* @__PURE__ */ z(n, {
1721
+ size: "xs",
1722
+ className: "flow-inspector-label",
1723
+ children: "Label"
1724
+ }), /* @__PURE__ */ z(t, {
1725
+ size: "xs",
1726
+ value: e.data.labelText ?? "",
1727
+ onChange: (t) => a(e.id, "labelText", t.target.value),
1728
+ placeholder: "Edge label"
1729
+ })]
1730
+ })
1731
+ ]
1732
+ });
1737
1733
  }
1738
- function Ee({ line: l, onUpdateData: c }) {
1739
- return /* @__PURE__ */ s("div", {
1740
- className: "flow-inspector-section",
1741
- children: [
1742
- /* @__PURE__ */ e("div", {
1743
- className: "flow-inspector-section-title",
1744
- children: "Line"
1745
- }),
1746
- /* @__PURE__ */ s("div", {
1747
- className: "flow-inspector-row",
1748
- children: [/* @__PURE__ */ e(n, {
1749
- size: "xs",
1750
- className: "flow-inspector-label",
1751
- children: "Type"
1752
- }), /* @__PURE__ */ e("span", {
1753
- style: {
1754
- fontSize: 12,
1755
- color: "color-mix(in oklch, var(--color-base-content) 60%, transparent)"
1756
- },
1757
- children: l.type
1758
- })]
1759
- }),
1760
- /* @__PURE__ */ s("div", {
1761
- className: "flow-inspector-row",
1762
- children: [/* @__PURE__ */ e(n, {
1763
- size: "xs",
1764
- className: "flow-inspector-label",
1765
- children: "Color"
1766
- }), /* @__PURE__ */ e(O, {
1767
- value: l.strokeColor,
1768
- kind: "line",
1769
- customFallback: "#374151",
1770
- onChange: (a) => c(l.id, "strokeColor", a)
1771
- })]
1772
- }),
1773
- /* @__PURE__ */ s("div", {
1774
- className: "flow-inspector-row",
1775
- children: [/* @__PURE__ */ e(n, {
1776
- size: "xs",
1777
- className: "flow-inspector-label",
1778
- children: "Width"
1779
- }), /* @__PURE__ */ e(b, {
1780
- size: "xs",
1781
- type: "number",
1782
- value: String(l.strokeWidth),
1783
- onChange: (a) => c(l.id, "strokeWidth", Number(a.target.value) || 2)
1784
- })]
1785
- }),
1786
- /* @__PURE__ */ s("div", {
1787
- className: "flow-inspector-row",
1788
- children: [/* @__PURE__ */ e(n, {
1789
- size: "xs",
1790
- className: "flow-inspector-label",
1791
- children: "Style"
1792
- }), /* @__PURE__ */ e(y, {
1793
- options: J.map((a) => ({
1794
- value: a,
1795
- label: a
1796
- })),
1797
- value: l.lineStyle,
1798
- onChange: (a) => c(l.id, "lineStyle", a),
1799
- style: { fontSize: 12 }
1800
- })]
1801
- })
1802
- ]
1803
- });
1734
+ function Y({ line: e, onUpdateData: r }) {
1735
+ return /* @__PURE__ */ B("div", {
1736
+ className: "flow-inspector-section",
1737
+ children: [
1738
+ /* @__PURE__ */ z("div", {
1739
+ className: "flow-inspector-section-title",
1740
+ children: "Line"
1741
+ }),
1742
+ /* @__PURE__ */ B("div", {
1743
+ className: "flow-inspector-row",
1744
+ children: [/* @__PURE__ */ z(n, {
1745
+ size: "xs",
1746
+ className: "flow-inspector-label",
1747
+ children: "Type"
1748
+ }), /* @__PURE__ */ z("span", {
1749
+ style: {
1750
+ fontSize: 12,
1751
+ color: "color-mix(in oklch, var(--color-base-content) 60%, transparent)"
1752
+ },
1753
+ children: e.type
1754
+ })]
1755
+ }),
1756
+ /* @__PURE__ */ B("div", {
1757
+ className: "flow-inspector-row",
1758
+ children: [/* @__PURE__ */ z(n, {
1759
+ size: "xs",
1760
+ className: "flow-inspector-label",
1761
+ children: "Color"
1762
+ }), /* @__PURE__ */ z(U, {
1763
+ value: e.strokeColor,
1764
+ kind: "line",
1765
+ customFallback: "#374151",
1766
+ onChange: (t) => r(e.id, "strokeColor", t)
1767
+ })]
1768
+ }),
1769
+ /* @__PURE__ */ B("div", {
1770
+ className: "flow-inspector-row",
1771
+ children: [/* @__PURE__ */ z(n, {
1772
+ size: "xs",
1773
+ className: "flow-inspector-label",
1774
+ children: "Width"
1775
+ }), /* @__PURE__ */ z(t, {
1776
+ size: "xs",
1777
+ type: "number",
1778
+ value: String(e.strokeWidth),
1779
+ onChange: (t) => r(e.id, "strokeWidth", Number(t.target.value) || 2)
1780
+ })]
1781
+ }),
1782
+ /* @__PURE__ */ B("div", {
1783
+ className: "flow-inspector-row",
1784
+ children: [/* @__PURE__ */ z(n, {
1785
+ size: "xs",
1786
+ className: "flow-inspector-label",
1787
+ children: "Style"
1788
+ }), /* @__PURE__ */ z(i, {
1789
+ options: s.map((e) => ({
1790
+ value: e,
1791
+ label: e
1792
+ })),
1793
+ value: e.lineStyle,
1794
+ onChange: (t) => r(e.id, "lineStyle", t),
1795
+ style: { fontSize: 12 }
1796
+ })]
1797
+ })
1798
+ ]
1799
+ });
1804
1800
  }
1805
- export {
1806
- Ce as InspectorPanelContent,
1807
- Ue as default
1808
- };
1801
+ //#endregion
1802
+ export { H as InspectorPanelContent, V as default };
1809
1803
 
1810
1804
  //# sourceMappingURL=InspectorPanel.js.map