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,966 +1,940 @@
1
- import he from "../../Select/index.js";
2
- import ge from "../CodeEditor/editors/CodeEditor.js";
3
- import { DEFAULT_NODE_DATA as se, ROOT_CANVAS_ID as we, createEmptyDocument as Ie } from "./constants.js";
4
- import { FlowProvider as ve, useFlowContext as ee } from "./context/FlowContext.js";
5
- import { FlowUIProvider as ye, useFlowUI as Y } from "./context/FlowUIContext.js";
6
- import { FlowAIProvider as be } from "./context/FlowAIContext.js";
7
- import { generateId as Q } from "./nodes/nodeUtils.js";
8
- import { normalizeEdgeHandles as xe } from "./edges/edgePaths.js";
9
- import { useDeleteSelection as Se } from "./hooks/useDeleteSelection.js";
10
- import Ce from "./FlowCanvas.js";
11
- import { downloadDataURL as Pe, safeFileBaseName as Me } from "./hooks/useFlowImportExport.js";
12
- import Ne, { FlowZoomControls as ke } from "./panels/FlowToolbar.js";
13
- import { MediaStampContent as De, ShapePaletteContent as Ee, SvgStampContent as Ae } from "./panels/ShapePalette.js";
14
- import { InspectorPanelContent as ze } from "./panels/InspectorPanel.js";
15
- import { OutlinePanelContent as Te } from "./panels/OutlinePanel.js";
16
- import { AIPanelContent as Re } from "./panels/AIPanel.js";
17
- import { PresentationMode as Le } from "./panels/PresentationMode.js";
18
- import { MediaOverlay as Fe } from "./nodes/MediaOverlay.js";
19
- import q from "./panels/FlowPanelGroup.js";
20
- import Ge from "./panels/Breadcrumb.js";
21
- import Ke from "./panels/ContextMenu.js";
22
- import { MiniMapRenderer as We } from "./canvas/MiniMapRenderer.js";
23
- import { useUndoRedo as He } from "./hooks/useUndoRedo.js";
24
- import { useClipboard as ae } from "./hooks/useClipboard.js";
25
- import { useCompactMode as Ue } from "./hooks/useCompactMode.js";
26
- import { usePdfExport as Ze } from "./hooks/usePdfExport.js";
27
- import { useKeyboardShortcuts as Je } from "./hooks/useKeyboardShortcuts.js";
28
- import { useMindMap as Oe } from "./hooks/useMindMap.js";
1
+ import e from "../../Select/index.js";
2
+ import t from "../CodeEditor/editors/CodeEditor.js";
3
+ import { DEFAULT_NODE_DATA as n, ROOT_CANVAS_ID as r, createEmptyDocument as i } from "./constants.js";
4
+ import { FlowProvider as a, useFlowContext as o } from "./context/FlowContext.js";
5
+ import { FlowUIProvider as s, useFlowUI as c } from "./context/FlowUIContext.js";
6
+ import { FlowAIProvider as l } from "./context/FlowAIContext.js";
7
+ import { generateId as u } from "./nodes/nodeUtils.js";
8
+ import { normalizeEdgeHandles as d } from "./edges/edgePaths.js";
9
+ import { useDeleteSelection as f } from "./hooks/useDeleteSelection.js";
10
+ import p from "./FlowCanvas.js";
11
+ import { downloadDataURL as m, safeFileBaseName as h } from "./hooks/useFlowImportExport.js";
12
+ import g, { FlowZoomControls as _ } from "./panels/FlowToolbar.js";
13
+ import { MediaStampContent as v, ShapePaletteContent as y, SvgStampContent as b } from "./panels/ShapePalette.js";
14
+ import { InspectorPanelContent as x } from "./panels/InspectorPanel.js";
15
+ import { OutlinePanelContent as S } from "./panels/OutlinePanel.js";
16
+ import { AIPanelContent as C } from "./panels/AIPanel.js";
17
+ import { PresentationMode as w } from "./panels/PresentationMode.js";
18
+ import { MediaOverlay as T } from "./nodes/MediaOverlay.js";
19
+ import E from "./panels/FlowPanelGroup.js";
20
+ import D from "./panels/Breadcrumb.js";
21
+ import O from "./panels/ContextMenu.js";
22
+ import { MiniMapRenderer as k } from "./canvas/MiniMapRenderer.js";
23
+ import { useUndoRedo as ee } from "./hooks/useUndoRedo.js";
24
+ import { useClipboard as A } from "./hooks/useClipboard.js";
25
+ import { useCompactMode as te } from "./hooks/useCompactMode.js";
26
+ import { usePdfExport as j } from "./hooks/usePdfExport.js";
27
+ import { useKeyboardShortcuts as M } from "./hooks/useKeyboardShortcuts.js";
28
+ import { useMindMap as N } from "./hooks/useMindMap.js";
29
29
  /* empty css */
30
- import { forwardRef as _e, useCallback as E, useEffect as X, useImperativeHandle as $e, useMemo as le, useRef as F, useState as j } from "react";
31
- import { jsx as r, jsxs as _ } from "react/jsx-runtime";
32
- import { EditorView as Be } from "@codemirror/view";
33
- function Ve(o) {
34
- let p = !1;
35
- const a = { ...o.canvases };
36
- for (const [v, u] of Object.entries(a)) {
37
- const s = u.nodes.map((e) => {
38
- if (e.type !== "shapeSvg") return e;
39
- const I = e.data.labelPlacement, m = I === "above" ? "top" : I === "center" ? "middle" : I === "below" ? "bottom" : e.data.labelPlacement;
40
- return m === e.data.labelPlacement ? e : (p = !0, {
41
- ...e,
42
- data: {
43
- ...e.data,
44
- labelPlacement: m
45
- }
46
- });
47
- });
48
- let l = !1;
49
- const n = s.map((e) => {
50
- if (!e.data.isMindMapNode) return e;
51
- const I = e.data.fill === "#ffffff" || e.data.fill === "#eef2ff" ? "theme:base-100" : e.data.fill, m = e.data.stroke === "#6366f1" ? "theme:base-content" : e.data.stroke === "#4f46e5" ? "theme:primary" : e.data.stroke;
52
- return I === e.data.fill && m === e.data.stroke ? e : (l = !0, {
53
- ...e,
54
- data: {
55
- ...e.data,
56
- fill: I,
57
- stroke: m
58
- }
59
- });
60
- }), b = /* @__PURE__ */ new Map();
61
- for (const e of n) b.set(e.id, e);
62
- let c = !1;
63
- const y = xe(u.edges, b).map((e) => {
64
- if (e.data.strokeColor !== "#94a3b8") return e;
65
- const I = b.get(e.source), m = b.get(e.target);
66
- return !I?.data.isMindMapNode || !m?.data.isMindMapNode ? e : (c = !0, {
67
- ...e,
68
- data: {
69
- ...e.data,
70
- strokeColor: "theme:base-content"
71
- }
72
- });
73
- });
74
- (l || c) && (p = !0), (n !== s || y !== u.edges) && (a[v] = {
75
- ...u,
76
- nodes: n,
77
- edges: y
78
- });
79
- }
80
- return p ? {
81
- ...o,
82
- canvases: a
83
- } : o;
30
+ import { forwardRef as P, useCallback as F, useEffect as I, useImperativeHandle as ne, useMemo as L, useRef as R, useState as z } from "react";
31
+ import { jsx as B, jsxs as V } from "react/jsx-runtime";
32
+ import { EditorView as H } from "@codemirror/view";
33
+ //#region src/components/pro/Flow/Flow.tsx
34
+ function re(e) {
35
+ let t = !1, n = { ...e.canvases };
36
+ for (let [e, r] of Object.entries(n)) {
37
+ let i = r.nodes.map((e) => {
38
+ if (e.type !== "shapeSvg") return e;
39
+ let n = e.data.labelPlacement, r = n === "above" ? "top" : n === "center" ? "middle" : n === "below" ? "bottom" : e.data.labelPlacement;
40
+ return r === e.data.labelPlacement ? e : (t = !0, {
41
+ ...e,
42
+ data: {
43
+ ...e.data,
44
+ labelPlacement: r
45
+ }
46
+ });
47
+ }), a = !1, o = i.map((e) => {
48
+ if (!e.data.isMindMapNode) return e;
49
+ let t = e.data.fill === "#ffffff" || e.data.fill === "#eef2ff" ? "theme:base-100" : e.data.fill, n = e.data.stroke === "#6366f1" ? "theme:base-content" : e.data.stroke === "#4f46e5" ? "theme:primary" : e.data.stroke;
50
+ return t === e.data.fill && n === e.data.stroke ? e : (a = !0, {
51
+ ...e,
52
+ data: {
53
+ ...e.data,
54
+ fill: t,
55
+ stroke: n
56
+ }
57
+ });
58
+ }), s = /* @__PURE__ */ new Map();
59
+ for (let e of o) s.set(e.id, e);
60
+ let c = !1, l = d(r.edges, s).map((e) => {
61
+ if (e.data.strokeColor !== "#94a3b8") return e;
62
+ let t = s.get(e.source), n = s.get(e.target);
63
+ return !t?.data.isMindMapNode || !n?.data.isMindMapNode ? e : (c = !0, {
64
+ ...e,
65
+ data: {
66
+ ...e.data,
67
+ strokeColor: "theme:base-content"
68
+ }
69
+ });
70
+ });
71
+ (a || c) && (t = !0), (o !== i || l !== r.edges) && (n[e] = {
72
+ ...r,
73
+ nodes: o,
74
+ edges: l
75
+ });
76
+ }
77
+ return t ? {
78
+ ...e,
79
+ canvases: n
80
+ } : e;
84
81
  }
85
- var je = {
86
- nodeIds: /* @__PURE__ */ new Set(),
87
- edgeIds: /* @__PURE__ */ new Set(),
88
- lineIds: /* @__PURE__ */ new Set()
82
+ var ie = {
83
+ nodeIds: /* @__PURE__ */ new Set(),
84
+ edgeIds: /* @__PURE__ */ new Set(),
85
+ lineIds: /* @__PURE__ */ new Set()
89
86
  };
90
- function Xe({ onUndo: o, onRedo: p, groupRef: a, geoGroupRef: v, ungroupRef: u }) {
91
- const { selection: s, setSelection: l, currentCanvas: n, setDoc: b, currentCanvasId: c } = ee(), { viewport: y } = Y(), { copy: e, cut: I, paste: m, duplicate: h } = ae(), x = Se(), g = E(() => {
92
- l({
93
- nodeIds: new Set(n.nodes.map((f) => f.id)),
94
- edgeIds: new Set(n.edges.map((f) => f.id)),
95
- lineIds: new Set(n.lines.map((f) => f.id))
96
- });
97
- }, [n, l]), S = E((f) => {
98
- const w = s.nodeIds, N = s.lineIds;
99
- if (w.size + N.size < 2) return;
100
- const k = n.nodes.filter((M) => w.has(M.id)), d = n.lines.filter((M) => N.has(M.id)), t = 20;
101
- let i = 1 / 0, R = 1 / 0, L = -1 / 0, W = -1 / 0;
102
- for (const M of k)
103
- i = Math.min(i, M.position.x), R = Math.min(R, M.position.y), L = Math.max(L, M.position.x + M.width), W = Math.max(W, M.position.y + M.height);
104
- for (const M of d) for (const D of M.points)
105
- i = Math.min(i, D.x), R = Math.min(R, D.y), L = Math.max(L, D.x), W = Math.max(W, D.y);
106
- const H = f === "geometryGroup", U = Q("group"), P = {
107
- id: U,
108
- type: f,
109
- position: {
110
- x: i - t,
111
- y: R - t
112
- },
113
- width: L - i + t * 2,
114
- height: W - R + t * 2,
115
- data: {
116
- ...se,
117
- label: H ? "Geo Group" : "Group",
118
- fill: H ? "#fefce8" : "#f0f9ff",
119
- stroke: "#9ca3af",
120
- strokeWidth: 1.5,
121
- borderStyle: H ? "dashed" : "dotted",
122
- isGroup: !0
123
- }
124
- };
125
- b((M) => {
126
- const D = M.canvases[c];
127
- return D ? {
128
- ...M,
129
- canvases: {
130
- ...M.canvases,
131
- [c]: {
132
- ...D,
133
- nodes: H ? [P, ...D.nodes] : [P, ...D.nodes.map((O) => w.has(O.id) ? {
134
- ...O,
135
- parentId: U
136
- } : O)],
137
- lines: H ? D.lines : D.lines.map((O) => N.has(O.id) ? {
138
- ...O,
139
- parentId: U
140
- } : O)
141
- }
142
- }
143
- } : M;
144
- }), l({
145
- nodeIds: /* @__PURE__ */ new Set([U]),
146
- edgeIds: /* @__PURE__ */ new Set(),
147
- lineIds: /* @__PURE__ */ new Set()
148
- });
149
- }, [
150
- s,
151
- n,
152
- b,
153
- c,
154
- l
155
- ]), K = E(() => S("flowGroup"), [S]), z = E(() => S("geometryGroup"), [S]), J = E(() => {
156
- const f = s.nodeIds;
157
- if (f.size === 0) return;
158
- const w = /* @__PURE__ */ new Set(), N = /* @__PURE__ */ new Set(), k = /* @__PURE__ */ new Set();
159
- for (const d of n.nodes) f.has(d.id) && (d.type === "flowGroup" || d.type === "geometryGroup" || d.data.isGroup) && w.add(d.id);
160
- if (w.size !== 0) {
161
- for (const d of n.nodes) d.parentId && w.has(d.parentId) && N.add(d.id);
162
- for (const d of n.lines) d.parentId && w.has(d.parentId) && k.add(d.id);
163
- b((d) => {
164
- const t = d.canvases[c];
165
- return t ? {
166
- ...d,
167
- canvases: {
168
- ...d.canvases,
169
- [c]: {
170
- ...t,
171
- nodes: t.nodes.filter((i) => !w.has(i.id)).map((i) => N.has(i.id) ? {
172
- ...i,
173
- parentId: void 0
174
- } : i),
175
- lines: t.lines.map((i) => k.has(i.id) ? {
176
- ...i,
177
- parentId: void 0
178
- } : i)
179
- }
180
- }
181
- } : d;
182
- }), l({
183
- nodeIds: N,
184
- edgeIds: /* @__PURE__ */ new Set(),
185
- lineIds: k
186
- });
187
- }
188
- }, [
189
- s,
190
- n,
191
- b,
192
- c,
193
- l
194
- ]);
195
- a.current = K, v.current = z, u.current = J;
196
- const C = E((f) => {
197
- const w = s.nodeIds, N = s.lineIds;
198
- w.size === 0 && N.size === 0 || b((k) => {
199
- const d = k.canvases[c];
200
- if (!d) return k;
201
- const t = d.nodes.map((P) => P.zIndex ?? 0), i = t.length > 0 ? Math.max(...t) : 0, R = t.length > 0 ? Math.min(...t) : 0, L = d.lines.map((P) => P.zIndex ?? 0), W = L.length > 0 ? Math.max(...L) : 0, H = L.length > 0 ? Math.min(...L) : 0, U = (P, M, D) => f === "front" ? M + 1 : f === "back" ? D - 1 : f === "up" ? P + 1 : P - 1;
202
- return {
203
- ...k,
204
- canvases: {
205
- ...k.canvases,
206
- [c]: {
207
- ...d,
208
- nodes: d.nodes.map((P) => w.has(P.id) ? {
209
- ...P,
210
- zIndex: U(P.zIndex ?? 0, i, R)
211
- } : P),
212
- lines: d.lines.map((P) => N.has(P.id) ? {
213
- ...P,
214
- zIndex: U(P.zIndex ?? 0, W, H)
215
- } : P)
216
- }
217
- }
218
- };
219
- });
220
- }, [
221
- s,
222
- b,
223
- c
224
- ]);
225
- return X(() => {
226
- const f = (w) => {
227
- const N = w.target;
228
- if (N?.tagName === "INPUT" || N?.tagName === "TEXTAREA" || N?.isContentEditable) return;
229
- const k = Array.from(w.clipboardData?.items ?? []).find((i) => i.type.startsWith("image/"));
230
- if (!k) {
231
- w.preventDefault(), m();
232
- return;
233
- }
234
- const d = k.getAsFile();
235
- if (!d) return;
236
- w.preventDefault();
237
- const t = new FileReader();
238
- t.onload = () => {
239
- if (typeof t.result != "string") return;
240
- const i = s.nodeIds.size === 1 ? n.nodes.find((A) => s.nodeIds.has(A.id) && A.type === "mediaNode" && A.data.mediaKind === "image") : void 0;
241
- if (i) {
242
- b((A) => {
243
- const $ = A.canvases[c];
244
- return $ ? {
245
- ...A,
246
- canvases: {
247
- ...A.canvases,
248
- [c]: {
249
- ...$,
250
- nodes: $.nodes.map((V) => V.id === i.id ? {
251
- ...V,
252
- data: {
253
- ...V.data,
254
- mediaContent: t.result
255
- }
256
- } : V)
257
- }
258
- }
259
- } : A;
260
- });
261
- return;
262
- }
263
- const R = Q("node"), L = 320, W = 220, H = window.innerWidth, U = window.innerHeight, P = (H / 2 - y.x) / y.zoom, M = (U / 2 - y.y) / y.zoom, D = Math.max(0, ...n.nodes.map((A) => A.zIndex ?? 0)), O = {
264
- id: R,
265
- type: "mediaNode",
266
- position: {
267
- x: P - L / 2,
268
- y: M - W / 2
269
- },
270
- width: L,
271
- height: W,
272
- zIndex: D + 1,
273
- data: {
274
- ...se,
275
- label: d.name || "Image",
276
- fill: "theme:base-100",
277
- stroke: "theme:base-content",
278
- strokeWidth: 1.5,
279
- color: "theme:base-content",
280
- fontSize: 13,
281
- borderStyle: "solid",
282
- mediaKind: "image",
283
- mediaContent: t.result
284
- }
285
- };
286
- b((A) => {
287
- const $ = A.canvases[c];
288
- return $ ? {
289
- ...A,
290
- canvases: {
291
- ...A.canvases,
292
- [c]: {
293
- ...$,
294
- nodes: [...$.nodes, O]
295
- }
296
- }
297
- } : A;
298
- }), l({
299
- nodeIds: /* @__PURE__ */ new Set([R]),
300
- edgeIds: /* @__PURE__ */ new Set(),
301
- lineIds: /* @__PURE__ */ new Set()
302
- });
303
- }, t.readAsDataURL(d);
304
- };
305
- return window.addEventListener("paste", f), () => window.removeEventListener("paste", f);
306
- }, [
307
- n,
308
- c,
309
- m,
310
- s,
311
- b,
312
- l,
313
- y
314
- ]), Je(le(() => ({
315
- undo: o,
316
- redo: p,
317
- copy: e,
318
- cut: I,
319
- paste: m,
320
- duplicate: h,
321
- deleteSelected: x,
322
- selectAll: g,
323
- group: K,
324
- geoGroup: z,
325
- ungroup: J,
326
- bringToFront: () => C("front"),
327
- bringForward: () => C("up"),
328
- sendBackward: () => C("down"),
329
- sendToBack: () => C("back")
330
- }), [
331
- o,
332
- p,
333
- e,
334
- I,
335
- m,
336
- h,
337
- x,
338
- g,
339
- K,
340
- z,
341
- J,
342
- C
343
- ])), Oe(), null;
87
+ function ae({ onUndo: e, onRedo: t, groupRef: r, geoGroupRef: i, ungroupRef: a }) {
88
+ let { selection: s, setSelection: l, currentCanvas: d, setDoc: p, currentCanvasId: m } = o(), { viewport: h } = c(), { copy: g, cut: _, paste: v, duplicate: y } = A(), b = f(), x = F(() => {
89
+ l({
90
+ nodeIds: new Set(d.nodes.map((e) => e.id)),
91
+ edgeIds: new Set(d.edges.map((e) => e.id)),
92
+ lineIds: new Set(d.lines.map((e) => e.id))
93
+ });
94
+ }, [d, l]), S = F((e) => {
95
+ let t = s.nodeIds, r = s.lineIds;
96
+ if (t.size + r.size < 2) return;
97
+ let i = d.nodes.filter((e) => t.has(e.id)), a = d.lines.filter((e) => r.has(e.id)), o = Infinity, c = Infinity, f = -Infinity, h = -Infinity;
98
+ for (let e of i) o = Math.min(o, e.position.x), c = Math.min(c, e.position.y), f = Math.max(f, e.position.x + e.width), h = Math.max(h, e.position.y + e.height);
99
+ for (let e of a) for (let t of e.points) o = Math.min(o, t.x), c = Math.min(c, t.y), f = Math.max(f, t.x), h = Math.max(h, t.y);
100
+ let g = e === "geometryGroup", _ = u("group"), v = {
101
+ id: _,
102
+ type: e,
103
+ position: {
104
+ x: o - 20,
105
+ y: c - 20
106
+ },
107
+ width: f - o + 40,
108
+ height: h - c + 40,
109
+ data: {
110
+ ...n,
111
+ label: g ? "Geo Group" : "Group",
112
+ fill: g ? "#fefce8" : "#f0f9ff",
113
+ stroke: "#9ca3af",
114
+ strokeWidth: 1.5,
115
+ borderStyle: g ? "dashed" : "dotted",
116
+ isGroup: !0
117
+ }
118
+ };
119
+ p((e) => {
120
+ let n = e.canvases[m];
121
+ return n ? {
122
+ ...e,
123
+ canvases: {
124
+ ...e.canvases,
125
+ [m]: {
126
+ ...n,
127
+ nodes: g ? [v, ...n.nodes] : [v, ...n.nodes.map((e) => t.has(e.id) ? {
128
+ ...e,
129
+ parentId: _
130
+ } : e)],
131
+ lines: g ? n.lines : n.lines.map((e) => r.has(e.id) ? {
132
+ ...e,
133
+ parentId: _
134
+ } : e)
135
+ }
136
+ }
137
+ } : e;
138
+ }), l({
139
+ nodeIds: /* @__PURE__ */ new Set([_]),
140
+ edgeIds: /* @__PURE__ */ new Set(),
141
+ lineIds: /* @__PURE__ */ new Set()
142
+ });
143
+ }, [
144
+ s,
145
+ d,
146
+ p,
147
+ m,
148
+ l
149
+ ]), C = F(() => S("flowGroup"), [S]), w = F(() => S("geometryGroup"), [S]), T = F(() => {
150
+ let e = s.nodeIds;
151
+ if (e.size === 0) return;
152
+ let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
153
+ for (let n of d.nodes) e.has(n.id) && (n.type === "flowGroup" || n.type === "geometryGroup" || n.data.isGroup) && t.add(n.id);
154
+ if (t.size !== 0) {
155
+ for (let e of d.nodes) e.parentId && t.has(e.parentId) && n.add(e.id);
156
+ for (let e of d.lines) e.parentId && t.has(e.parentId) && r.add(e.id);
157
+ p((e) => {
158
+ let i = e.canvases[m];
159
+ return i ? {
160
+ ...e,
161
+ canvases: {
162
+ ...e.canvases,
163
+ [m]: {
164
+ ...i,
165
+ nodes: i.nodes.filter((e) => !t.has(e.id)).map((e) => n.has(e.id) ? {
166
+ ...e,
167
+ parentId: void 0
168
+ } : e),
169
+ lines: i.lines.map((e) => r.has(e.id) ? {
170
+ ...e,
171
+ parentId: void 0
172
+ } : e)
173
+ }
174
+ }
175
+ } : e;
176
+ }), l({
177
+ nodeIds: n,
178
+ edgeIds: /* @__PURE__ */ new Set(),
179
+ lineIds: r
180
+ });
181
+ }
182
+ }, [
183
+ s,
184
+ d,
185
+ p,
186
+ m,
187
+ l
188
+ ]);
189
+ r.current = C, i.current = w, a.current = T;
190
+ let E = F((e) => {
191
+ let t = s.nodeIds, n = s.lineIds;
192
+ (t.size !== 0 || n.size !== 0) && p((r) => {
193
+ let i = r.canvases[m];
194
+ if (!i) return r;
195
+ let a = i.nodes.map((e) => e.zIndex ?? 0), o = a.length > 0 ? Math.max(...a) : 0, s = a.length > 0 ? Math.min(...a) : 0, c = i.lines.map((e) => e.zIndex ?? 0), l = c.length > 0 ? Math.max(...c) : 0, u = c.length > 0 ? Math.min(...c) : 0, d = (t, n, r) => e === "front" ? n + 1 : e === "back" ? r - 1 : e === "up" ? t + 1 : t - 1;
196
+ return {
197
+ ...r,
198
+ canvases: {
199
+ ...r.canvases,
200
+ [m]: {
201
+ ...i,
202
+ nodes: i.nodes.map((e) => t.has(e.id) ? {
203
+ ...e,
204
+ zIndex: d(e.zIndex ?? 0, o, s)
205
+ } : e),
206
+ lines: i.lines.map((e) => n.has(e.id) ? {
207
+ ...e,
208
+ zIndex: d(e.zIndex ?? 0, l, u)
209
+ } : e)
210
+ }
211
+ }
212
+ };
213
+ });
214
+ }, [
215
+ s,
216
+ p,
217
+ m
218
+ ]);
219
+ I(() => {
220
+ let e = (e) => {
221
+ let t = e.target;
222
+ if (t?.tagName === "INPUT" || t?.tagName === "TEXTAREA" || t?.isContentEditable) return;
223
+ let r = Array.from(e.clipboardData?.items ?? []).find((e) => e.type.startsWith("image/"));
224
+ if (!r) {
225
+ e.preventDefault(), v();
226
+ return;
227
+ }
228
+ let i = r.getAsFile();
229
+ if (!i) return;
230
+ e.preventDefault();
231
+ let a = new FileReader();
232
+ a.onload = () => {
233
+ if (typeof a.result != "string") return;
234
+ let e = s.nodeIds.size === 1 ? d.nodes.find((e) => s.nodeIds.has(e.id) && e.type === "mediaNode" && e.data.mediaKind === "image") : void 0;
235
+ if (e) {
236
+ p((t) => {
237
+ let n = t.canvases[m];
238
+ return n ? {
239
+ ...t,
240
+ canvases: {
241
+ ...t.canvases,
242
+ [m]: {
243
+ ...n,
244
+ nodes: n.nodes.map((t) => t.id === e.id ? {
245
+ ...t,
246
+ data: {
247
+ ...t.data,
248
+ mediaContent: a.result
249
+ }
250
+ } : t)
251
+ }
252
+ }
253
+ } : t;
254
+ });
255
+ return;
256
+ }
257
+ let t = u("node"), r = window.innerWidth, o = window.innerHeight, c = (r / 2 - h.x) / h.zoom, f = (o / 2 - h.y) / h.zoom, g = Math.max(0, ...d.nodes.map((e) => e.zIndex ?? 0)), _ = {
258
+ id: t,
259
+ type: "mediaNode",
260
+ position: {
261
+ x: c - 160,
262
+ y: f - 110
263
+ },
264
+ width: 320,
265
+ height: 220,
266
+ zIndex: g + 1,
267
+ data: {
268
+ ...n,
269
+ label: i.name || "Image",
270
+ fill: "theme:base-100",
271
+ stroke: "theme:base-content",
272
+ strokeWidth: 1.5,
273
+ color: "theme:base-content",
274
+ fontSize: 13,
275
+ borderStyle: "solid",
276
+ mediaKind: "image",
277
+ mediaContent: a.result
278
+ }
279
+ };
280
+ p((e) => {
281
+ let t = e.canvases[m];
282
+ return t ? {
283
+ ...e,
284
+ canvases: {
285
+ ...e.canvases,
286
+ [m]: {
287
+ ...t,
288
+ nodes: [...t.nodes, _]
289
+ }
290
+ }
291
+ } : e;
292
+ }), l({
293
+ nodeIds: /* @__PURE__ */ new Set([t]),
294
+ edgeIds: /* @__PURE__ */ new Set(),
295
+ lineIds: /* @__PURE__ */ new Set()
296
+ });
297
+ }, a.readAsDataURL(i);
298
+ };
299
+ return window.addEventListener("paste", e), () => window.removeEventListener("paste", e);
300
+ }, [
301
+ d,
302
+ m,
303
+ v,
304
+ s,
305
+ p,
306
+ l,
307
+ h
308
+ ]);
309
+ let D = L(() => ({
310
+ undo: e,
311
+ redo: t,
312
+ copy: g,
313
+ cut: _,
314
+ paste: v,
315
+ duplicate: y,
316
+ deleteSelected: b,
317
+ selectAll: x,
318
+ group: C,
319
+ geoGroup: w,
320
+ ungroup: T,
321
+ bringToFront: () => E("front"),
322
+ bringForward: () => E("up"),
323
+ sendBackward: () => E("down"),
324
+ sendToBack: () => E("back")
325
+ }), [
326
+ e,
327
+ t,
328
+ g,
329
+ _,
330
+ v,
331
+ y,
332
+ b,
333
+ x,
334
+ C,
335
+ w,
336
+ T,
337
+ E
338
+ ]);
339
+ return M(D), N(), null;
344
340
  }
345
- function Ye({ pixiRef: o, exportPdfRef: p }) {
346
- return p.current = Ze(o), null;
341
+ function oe({ pixiRef: e, exportPdfRef: t }) {
342
+ return t.current = j(e), null;
347
343
  }
348
- var Ht = _e(function({ initialDocument: p, onChange: a, width: v, height: u, readOnly: s = !1, onBack: l, onExportPNG: n, onPublish: b, showMiniMap: c = !0, showGrid: y = !0, gridSize: e = 20, className: I, showAI: m = !0, showAIConfig: h = !0, aiConfig: x }, g) {
349
- const [S, K] = j(() => Ve(p ?? Ie())), [z, J] = j(je), C = F(null), f = F(null), w = F(null), N = F(null), k = Ue(N), { wrappedSetDoc: d, undo: t, redo: i, canUndo: R, canRedo: L } = He(S, K), W = F(null), H = F(null), U = F(null), P = F(null), M = F(a);
350
- M.current = a;
351
- const D = F(S);
352
- D.current = S, $e(g, () => ({
353
- exportPNG: async (G) => {
354
- const T = C.current;
355
- return !T || T.destroyed ? null : T.exportPNG(G);
356
- },
357
- getDocument: () => D.current
358
- }), []);
359
- const O = E((G) => {
360
- d((T) => {
361
- const B = typeof G == "function" ? G(T) : G;
362
- return s ? B.canvases === T.canvases && B.title === T.title ? B : T : (queueMicrotask(() => M.current?.(B)), B);
363
- });
364
- }, [d, s]), A = E(() => {
365
- s || t();
366
- }, [s, t]), $ = E(() => {
367
- s || i();
368
- }, [s, i]), V = E((G) => {
369
- C.current = G, f.current && !w.current && (w.current = new We(f.current));
370
- }, []), de = E(async () => {
371
- if (n) return void n();
372
- const G = C.current;
373
- if (!G || G.destroyed) return;
374
- const T = await G.exportPNG(16777215);
375
- T && Pe(T, `${Me(D.current.title)}.png`);
376
- }, [n]), ue = E(async () => {
377
- await P.current?.();
378
- }, []);
379
- X(() => {
380
- let G = !1, T = null;
381
- const B = () => {
382
- const Z = C.current, ne = w.current;
383
- if (!Z || Z.destroyed || !ne) return;
384
- const pe = {
385
- x: Z.world.position.x,
386
- y: Z.world.position.y,
387
- zoom: Z.world.scale.x
388
- }, me = S.stack[S.stack.length - 1] ?? "root", oe = S.canvases[me];
389
- oe && ne.update(oe.nodes, pe, Z.app.screen.width, Z.app.screen.height);
390
- }, te = () => {
391
- if (G) return;
392
- const Z = C.current;
393
- Z && !Z.destroyed && w.current ? (Z.app.ticker.add(B), T = Z) : requestAnimationFrame(te);
394
- };
395
- return te(), () => {
396
- G = !0, T && !T.destroyed && T.app.ticker.remove(B);
397
- };
398
- }, [S]);
399
- const fe = {
400
- width: v ?? "100%",
401
- height: u ?? "100%"
402
- };
403
- return /* @__PURE__ */ r("div", {
404
- ref: N,
405
- className: `flow-container ${I ?? ""}`,
406
- style: fe,
407
- children: /* @__PURE__ */ r(ve, {
408
- doc: S,
409
- setDoc: O,
410
- selection: z,
411
- setSelection: J,
412
- children: /* @__PURE__ */ r(ye, {
413
- showMiniMap: c,
414
- showGrid: y,
415
- gridSize: e,
416
- showAI: m,
417
- readOnly: s,
418
- children: /* @__PURE__ */ _(be, {
419
- initialConfig: x,
420
- showAIConfig: h,
421
- children: [
422
- /* @__PURE__ */ r(Xe, {
423
- onUndo: A,
424
- onRedo: $,
425
- groupRef: W,
426
- geoGroupRef: H,
427
- ungroupRef: U
428
- }),
429
- /* @__PURE__ */ r(Ye, {
430
- pixiRef: C,
431
- exportPdfRef: P
432
- }),
433
- /* @__PURE__ */ _(tt, {
434
- compact: k,
435
- toolbar: s ? null : /* @__PURE__ */ r(Ne, {
436
- compact: k,
437
- onBack: l,
438
- onUndo: A,
439
- onRedo: $,
440
- canUndo: R,
441
- canRedo: L,
442
- onGroup: () => W.current?.(),
443
- onGeoGroup: () => H.current?.(),
444
- onUngroup: () => U.current?.(),
445
- onExportPNG: de,
446
- onExportPDF: ue,
447
- onPublish: b
448
- }),
449
- children: [
450
- /* @__PURE__ */ r(Ce, { onPixiReady: V }),
451
- /* @__PURE__ */ r(Fe, {}),
452
- /* @__PURE__ */ _(qe, { children: [!s && /* @__PURE__ */ r(ke, {}), /* @__PURE__ */ r(Ge, {})] }),
453
- !s && /* @__PURE__ */ r(rt, {}),
454
- /* @__PURE__ */ r(nt, {
455
- canvasRef: f,
456
- pixiRef: C,
457
- miniMapRef: w
458
- }),
459
- /* @__PURE__ */ r(Le, {})
460
- ]
461
- })
462
- ]
463
- })
464
- })
465
- })
466
- });
344
+ var U = P(function({ initialDocument: e, onChange: t, width: n, height: r, readOnly: o = !1, onBack: c, onExportPNG: u, onPublish: d, showMiniMap: f = !0, showGrid: v = !0, gridSize: y = 20, className: b, showAI: x = !0, showAIConfig: S = !0, aiConfig: C }, E) {
345
+ let [O, A] = z(() => re(e ?? i())), [j, M] = z(ie), N = R(null), P = R(null), L = R(null), H = R(null), U = te(H), { wrappedSetDoc: W, undo: G, redo: K, canUndo: q, canRedo: J } = ee(O, A), Y = R(null), X = R(null), Z = R(null), Q = R(null), de = R(t);
346
+ de.current = t;
347
+ let $ = R(O);
348
+ $.current = O, ne(E, () => ({
349
+ exportPNG: async (e) => {
350
+ let t = N.current;
351
+ return !t || t.destroyed ? null : t.exportPNG(e);
352
+ },
353
+ getDocument: () => $.current
354
+ }), []);
355
+ let fe = F((e) => {
356
+ W((t) => {
357
+ let n = typeof e == "function" ? e(t) : e;
358
+ return o ? n.canvases === t.canvases && n.title === t.title ? n : t : (queueMicrotask(() => de.current?.(n)), n);
359
+ });
360
+ }, [W, o]), pe = F(() => {
361
+ o || G();
362
+ }, [o, G]), me = F(() => {
363
+ o || K();
364
+ }, [o, K]), he = F((e) => {
365
+ N.current = e, P.current && !L.current && (L.current = new k(P.current));
366
+ }, []), ge = F(async () => {
367
+ if (u) return void u();
368
+ let e = N.current;
369
+ if (!e || e.destroyed) return;
370
+ let t = await e.exportPNG(16777215);
371
+ t && m(t, `${h($.current.title)}.png`);
372
+ }, [u]), _e = F(async () => {
373
+ await Q.current?.();
374
+ }, []);
375
+ I(() => {
376
+ let e = !1, t = null, n = () => {
377
+ let e = N.current, t = L.current;
378
+ if (!e || e.destroyed || !t) return;
379
+ let n = {
380
+ x: e.world.position.x,
381
+ y: e.world.position.y,
382
+ zoom: e.world.scale.x
383
+ }, r = O.stack[O.stack.length - 1] ?? "root", i = O.canvases[r];
384
+ i && t.update(i.nodes, n, e.app.screen.width, e.app.screen.height);
385
+ }, r = () => {
386
+ if (e) return;
387
+ let i = N.current;
388
+ i && !i.destroyed && L.current ? (i.app.ticker.add(n), t = i) : requestAnimationFrame(r);
389
+ };
390
+ return r(), () => {
391
+ e = !0, t && !t.destroyed && t.app.ticker.remove(n);
392
+ };
393
+ }, [O]);
394
+ let ve = {
395
+ width: n ?? "100%",
396
+ height: r ?? "100%"
397
+ };
398
+ return /* @__PURE__ */ B("div", {
399
+ ref: H,
400
+ className: `flow-container ${b ?? ""}`,
401
+ style: ve,
402
+ children: /* @__PURE__ */ B(a, {
403
+ doc: O,
404
+ setDoc: fe,
405
+ selection: j,
406
+ setSelection: M,
407
+ children: /* @__PURE__ */ B(s, {
408
+ showMiniMap: f,
409
+ showGrid: v,
410
+ gridSize: y,
411
+ showAI: x,
412
+ readOnly: o,
413
+ children: /* @__PURE__ */ V(l, {
414
+ initialConfig: C,
415
+ showAIConfig: S,
416
+ children: [
417
+ /* @__PURE__ */ B(ae, {
418
+ onUndo: pe,
419
+ onRedo: me,
420
+ groupRef: Y,
421
+ geoGroupRef: X,
422
+ ungroupRef: Z
423
+ }),
424
+ /* @__PURE__ */ B(oe, {
425
+ pixiRef: N,
426
+ exportPdfRef: Q
427
+ }),
428
+ /* @__PURE__ */ V(ce, {
429
+ compact: U,
430
+ toolbar: o ? null : /* @__PURE__ */ B(g, {
431
+ compact: U,
432
+ onBack: c,
433
+ onUndo: pe,
434
+ onRedo: me,
435
+ canUndo: q,
436
+ canRedo: J,
437
+ onGroup: () => Y.current?.(),
438
+ onGeoGroup: () => X.current?.(),
439
+ onUngroup: () => Z.current?.(),
440
+ onExportPNG: ge,
441
+ onExportPDF: _e,
442
+ onPublish: d
443
+ }),
444
+ children: [
445
+ /* @__PURE__ */ B(p, { onPixiReady: he }),
446
+ /* @__PURE__ */ B(T, {}),
447
+ /* @__PURE__ */ V(se, { children: [!o && /* @__PURE__ */ B(_, {}), /* @__PURE__ */ B(D, {})] }),
448
+ !o && /* @__PURE__ */ B(ue, {}),
449
+ /* @__PURE__ */ B(le, {
450
+ canvasRef: P,
451
+ pixiRef: N,
452
+ miniMapRef: L
453
+ }),
454
+ /* @__PURE__ */ B(w, {})
455
+ ]
456
+ })
457
+ ]
458
+ })
459
+ })
460
+ })
461
+ });
467
462
  });
468
- function qe({ children: o }) {
469
- const { presentation: p } = Y();
470
- return /* @__PURE__ */ r("div", {
471
- className: "flow-overlay",
472
- style: { display: p ? "none" : void 0 },
473
- children: o
474
- });
463
+ function se({ children: e }) {
464
+ let { presentation: t } = c();
465
+ return /* @__PURE__ */ B("div", {
466
+ className: "flow-overlay",
467
+ style: { display: t ? "none" : void 0 },
468
+ children: e
469
+ });
475
470
  }
476
- var Qe = [
477
- {
478
- id: "shapes",
479
- label: "Shapes",
480
- icon: "▢",
481
- showKey: "showPalette"
482
- },
483
- {
484
- id: "icons",
485
- label: "Icons",
486
- icon: "★",
487
- showKey: "showPalette"
488
- },
489
- {
490
- id: "media",
491
- label: "Media",
492
- icon: "▶",
493
- showKey: "showPalette"
494
- },
495
- {
496
- id: "inspector",
497
- label: "Inspector",
498
- icon: "⚙",
499
- showKey: "showInspector"
500
- },
501
- {
502
- id: "outline",
503
- label: "Outline",
504
- icon: "☰",
505
- showKey: "showOutline"
506
- },
507
- {
508
- id: "json",
509
- label: "JSON",
510
- icon: "{ }",
511
- showKey: "showJson"
512
- },
513
- {
514
- id: "ai",
515
- label: "AI",
516
- icon: "✨",
517
- showKey: "showAI"
518
- }
471
+ var W = [
472
+ {
473
+ id: "shapes",
474
+ label: "Shapes",
475
+ icon: "▢",
476
+ showKey: "showPalette"
477
+ },
478
+ {
479
+ id: "icons",
480
+ label: "Icons",
481
+ icon: "★",
482
+ showKey: "showPalette"
483
+ },
484
+ {
485
+ id: "media",
486
+ label: "Media",
487
+ icon: "▶",
488
+ showKey: "showPalette"
489
+ },
490
+ {
491
+ id: "inspector",
492
+ label: "Inspector",
493
+ icon: "⚙",
494
+ showKey: "showInspector"
495
+ },
496
+ {
497
+ id: "outline",
498
+ label: "Outline",
499
+ icon: "☰",
500
+ showKey: "showOutline"
501
+ },
502
+ {
503
+ id: "json",
504
+ label: "JSON",
505
+ icon: "{ }",
506
+ showKey: "showJson"
507
+ },
508
+ {
509
+ id: "ai",
510
+ label: "AI",
511
+ icon: "✨",
512
+ showKey: "showAI"
513
+ }
519
514
  ];
520
- function ie(o) {
521
- switch (o) {
522
- case "shapes":
523
- return /* @__PURE__ */ r(Ee, {});
524
- case "icons":
525
- return /* @__PURE__ */ r(Ae, {});
526
- case "media":
527
- return /* @__PURE__ */ r(De, {});
528
- case "inspector":
529
- return /* @__PURE__ */ r(ze, {});
530
- case "outline":
531
- return /* @__PURE__ */ r(Te, {});
532
- case "json":
533
- return /* @__PURE__ */ r(it, {});
534
- case "ai":
535
- return /* @__PURE__ */ r(Re, {});
536
- default:
537
- return null;
538
- }
515
+ function G(e) {
516
+ switch (e) {
517
+ case "shapes": return /* @__PURE__ */ B(y, {});
518
+ case "icons": return /* @__PURE__ */ B(b, {});
519
+ case "media": return /* @__PURE__ */ B(v, {});
520
+ case "inspector": return /* @__PURE__ */ B(x, {});
521
+ case "outline": return /* @__PURE__ */ B(S, {});
522
+ case "json": return /* @__PURE__ */ B(X, {});
523
+ case "ai": return /* @__PURE__ */ B(C, {});
524
+ default: return null;
525
+ }
539
526
  }
540
- var et = /* @__PURE__ */ new Set([
541
- "shapes",
542
- "icons",
543
- "media"
527
+ var K = /* @__PURE__ */ new Set([
528
+ "shapes",
529
+ "icons",
530
+ "media"
544
531
  ]);
545
- function tt({ children: o, toolbar: p, compact: a }) {
546
- const v = Y(), { panelDocks: u, setPanelDock: s, presentation: l, readOnly: n, setPendingPlacement: b } = v, { setShowPalette: c, setShowInspector: y, setShowOutline: e, setShowJson: I, setShowAI: m } = v, h = n ? [] : Qe.filter((t) => !t.showKey || v[t.showKey]), x = (t) => ({
547
- id: t.id,
548
- label: t.label,
549
- icon: t.icon,
550
- content: ie(t.id)
551
- }), [g, S] = j(null), K = F(null);
552
- X(() => {
553
- if (!a) {
554
- K.current = null;
555
- return;
556
- }
557
- const t = v.pendingPlacement, i = t ? `${t.type}:${t.data?.svgId ?? ""}:${t.data?.mediaKind ?? ""}` : null, R = K.current;
558
- K.current = i, i && i !== R && g && et.has(g) && S(null);
559
- }, [
560
- v.pendingPlacement,
561
- a,
562
- g
563
- ]);
564
- const [z, J] = j(null), C = E((t, i) => s(t, i), [s]), f = E((t) => {
565
- t === "inspector" ? y(!1) : t === "outline" ? e(!1) : t === "json" ? I(!1) : t === "ai" ? m(!1) : c(!1);
566
- }, [
567
- y,
568
- e,
569
- I,
570
- m,
571
- c
572
- ]);
573
- if (a && !l) {
574
- const t = h.find((i) => i.id === g) ?? null;
575
- return /* @__PURE__ */ _("div", {
576
- className: "flow-workspace",
577
- children: [
578
- p,
579
- h.length > 0 && /* @__PURE__ */ r("div", {
580
- className: "flow-mobile-panel-bar",
581
- children: /* @__PURE__ */ r(he, {
582
- placeholder: "选择面板…",
583
- options: h.map((i) => ({
584
- value: i.id,
585
- label: i.label
586
- })),
587
- value: g ?? void 0,
588
- onChange: (i) => {
589
- b(null), S(String(i));
590
- }
591
- })
592
- }),
593
- /* @__PURE__ */ _("div", {
594
- className: "flow-workspace-main",
595
- children: [/* @__PURE__ */ r("div", {
596
- className: "flow-stage",
597
- children: o
598
- }), t && /* @__PURE__ */ _("div", {
599
- className: "flow-mobile-panel",
600
- children: [/* @__PURE__ */ _("div", {
601
- className: "flow-mobile-panel-header",
602
- children: [/* @__PURE__ */ _("span", {
603
- className: "flow-mobile-panel-title",
604
- children: [t.icon && /* @__PURE__ */ r("span", {
605
- className: "flow-panel-tab-icon",
606
- children: t.icon
607
- }), t.label]
608
- }), /* @__PURE__ */ r("button", {
609
- type: "button",
610
- className: "flow-mobile-panel-close",
611
- "aria-label": "关闭面板",
612
- onClick: () => S(null),
613
- children: "✕"
614
- })]
615
- }), /* @__PURE__ */ r("div", {
616
- className: "flow-mobile-panel-body",
617
- children: ie(t.id)
618
- })]
619
- })]
620
- })
621
- ]
622
- });
623
- }
624
- const w = (t) => u[t] ?? "left", N = h.filter((t) => w(t.id) === "left").map(x), k = h.filter((t) => w(t.id) === "right").map(x), d = h.filter((t) => w(t.id) === "float");
625
- return /* @__PURE__ */ _("div", {
626
- className: "flow-workspace",
627
- children: [!l && p, /* @__PURE__ */ _("div", {
628
- className: "flow-workspace-main",
629
- children: [
630
- !l && N.length > 0 && /* @__PURE__ */ r(q, {
631
- tabs: N,
632
- defaultTab: N[0]?.id,
633
- resizeEdge: "right",
634
- defaultWidth: 220,
635
- dock: "left",
636
- onDock: C,
637
- onClose: f
638
- }),
639
- /* @__PURE__ */ r("div", {
640
- className: "flow-stage",
641
- children: o
642
- }),
643
- !l && k.length > 0 && /* @__PURE__ */ r(q, {
644
- tabs: k,
645
- defaultTab: k[0]?.id,
646
- resizeEdge: "left",
647
- defaultWidth: 220,
648
- dock: "right",
649
- onDock: C,
650
- onClose: f
651
- }),
652
- !l && d.map((t, i) => /* @__PURE__ */ r(q, {
653
- tabs: [x(t)],
654
- resizeEdge: "right",
655
- defaultWidth: 220,
656
- dock: "float",
657
- style: {
658
- top: 48 + i * 40,
659
- left: 24 + i * 30
660
- },
661
- onDock: C,
662
- onClose: f,
663
- onDragHintChange: J
664
- }, t.id)),
665
- !l && z && /* @__PURE__ */ r("div", {
666
- className: `flow-dock-dropzone flow-dock-dropzone--${z}`,
667
- children: /* @__PURE__ */ r("span", { children: z === "left" ? "⇤ 停靠左侧" : "停靠右侧 ⇥" })
668
- })
669
- ]
670
- })]
671
- });
532
+ function ce({ children: t, toolbar: n, compact: r }) {
533
+ let i = c(), { panelDocks: a, setPanelDock: o, presentation: s, readOnly: l, setPendingPlacement: u } = i, { setShowPalette: d, setShowInspector: f, setShowOutline: p, setShowJson: m, setShowAI: h } = i, g = l ? [] : W.filter((e) => !e.showKey || i[e.showKey]), _ = (e) => ({
534
+ id: e.id,
535
+ label: e.label,
536
+ icon: e.icon,
537
+ content: G(e.id)
538
+ }), [v, y] = z(null), b = R(null);
539
+ I(() => {
540
+ if (!r) {
541
+ b.current = null;
542
+ return;
543
+ }
544
+ let e = i.pendingPlacement, t = e ? `${e.type}:${e.data?.svgId ?? ""}:${e.data?.mediaKind ?? ""}` : null, n = b.current;
545
+ b.current = t, t && t !== n && v && K.has(v) && y(null);
546
+ }, [
547
+ i.pendingPlacement,
548
+ r,
549
+ v
550
+ ]);
551
+ let [x, S] = z(null), C = F((e, t) => o(e, t), [o]), w = F((e) => {
552
+ e === "inspector" ? f(!1) : e === "outline" ? p(!1) : e === "json" ? m(!1) : e === "ai" ? h(!1) : d(!1);
553
+ }, [
554
+ f,
555
+ p,
556
+ m,
557
+ h,
558
+ d
559
+ ]);
560
+ if (r && !s) {
561
+ let r = g.find((e) => e.id === v) ?? null;
562
+ return /* @__PURE__ */ V("div", {
563
+ className: "flow-workspace",
564
+ children: [
565
+ n,
566
+ g.length > 0 && /* @__PURE__ */ B("div", {
567
+ className: "flow-mobile-panel-bar",
568
+ children: /* @__PURE__ */ B(e, {
569
+ placeholder: "选择面板…",
570
+ options: g.map((e) => ({
571
+ value: e.id,
572
+ label: e.label
573
+ })),
574
+ value: v ?? void 0,
575
+ onChange: (e) => {
576
+ u(null), y(String(e));
577
+ }
578
+ })
579
+ }),
580
+ /* @__PURE__ */ V("div", {
581
+ className: "flow-workspace-main",
582
+ children: [/* @__PURE__ */ B("div", {
583
+ className: "flow-stage",
584
+ children: t
585
+ }), r && /* @__PURE__ */ V("div", {
586
+ className: "flow-mobile-panel",
587
+ children: [/* @__PURE__ */ V("div", {
588
+ className: "flow-mobile-panel-header",
589
+ children: [/* @__PURE__ */ V("span", {
590
+ className: "flow-mobile-panel-title",
591
+ children: [r.icon && /* @__PURE__ */ B("span", {
592
+ className: "flow-panel-tab-icon",
593
+ children: r.icon
594
+ }), r.label]
595
+ }), /* @__PURE__ */ B("button", {
596
+ type: "button",
597
+ className: "flow-mobile-panel-close",
598
+ "aria-label": "关闭面板",
599
+ onClick: () => y(null),
600
+ children: "✕"
601
+ })]
602
+ }), /* @__PURE__ */ B("div", {
603
+ className: "flow-mobile-panel-body",
604
+ children: G(r.id)
605
+ })]
606
+ })]
607
+ })
608
+ ]
609
+ });
610
+ }
611
+ let T = (e) => a[e] ?? "left", D = g.filter((e) => T(e.id) === "left").map(_), O = g.filter((e) => T(e.id) === "right").map(_), k = g.filter((e) => T(e.id) === "float");
612
+ return /* @__PURE__ */ V("div", {
613
+ className: "flow-workspace",
614
+ children: [!s && n, /* @__PURE__ */ V("div", {
615
+ className: "flow-workspace-main",
616
+ children: [
617
+ !s && D.length > 0 && /* @__PURE__ */ B(E, {
618
+ tabs: D,
619
+ defaultTab: D[0]?.id,
620
+ resizeEdge: "right",
621
+ defaultWidth: 220,
622
+ dock: "left",
623
+ onDock: C,
624
+ onClose: w
625
+ }),
626
+ /* @__PURE__ */ B("div", {
627
+ className: "flow-stage",
628
+ children: t
629
+ }),
630
+ !s && O.length > 0 && /* @__PURE__ */ B(E, {
631
+ tabs: O,
632
+ defaultTab: O[0]?.id,
633
+ resizeEdge: "left",
634
+ defaultWidth: 220,
635
+ dock: "right",
636
+ onDock: C,
637
+ onClose: w
638
+ }),
639
+ !s && k.map((e, t) => /* @__PURE__ */ B(E, {
640
+ tabs: [_(e)],
641
+ resizeEdge: "right",
642
+ defaultWidth: 220,
643
+ dock: "float",
644
+ style: {
645
+ top: 48 + t * 40,
646
+ left: 24 + t * 30
647
+ },
648
+ onDock: C,
649
+ onClose: w,
650
+ onDragHintChange: S
651
+ }, e.id)),
652
+ !s && x && /* @__PURE__ */ B("div", {
653
+ className: `flow-dock-dropzone flow-dock-dropzone--${x}`,
654
+ children: /* @__PURE__ */ B("span", { children: x === "left" ? "⇤ 停靠左侧" : "停靠右侧 ⇥" })
655
+ })
656
+ ]
657
+ })]
658
+ });
672
659
  }
673
- function nt({ canvasRef: o, pixiRef: p, miniMapRef: a }) {
674
- const { showMiniMap: v, setViewport: u, presentation: s } = Y(), l = F(!1), n = E((e, I) => {
675
- const m = o.current, h = p.current, x = a.current;
676
- if (!m || !h || h.destroyed || !x) return;
677
- const g = m.getBoundingClientRect();
678
- if (g.width === 0 || g.height === 0) return;
679
- const { width: S, height: K } = x.size, z = (e - g.left) / g.width * S, J = (I - g.top) / g.height * K, C = x.minimapToWorld(z, J);
680
- if (!C) return;
681
- const f = h.world.scale.x || 1, w = h.app.screen.width, N = h.app.screen.height;
682
- u({
683
- x: w / 2 - C.x * f,
684
- y: N / 2 - C.y * f,
685
- zoom: f
686
- });
687
- }, [
688
- o,
689
- p,
690
- a,
691
- u
692
- ]), b = E((e) => {
693
- e.preventDefault(), e.currentTarget.setPointerCapture(e.pointerId), l.current = !0, n(e.clientX, e.clientY);
694
- }, [n]), c = E((e) => {
695
- l.current && n(e.clientX, e.clientY);
696
- }, [n]), y = E((e) => {
697
- l.current = !1;
698
- try {
699
- e.currentTarget.releasePointerCapture(e.pointerId);
700
- } catch {
701
- }
702
- }, []);
703
- return /* @__PURE__ */ r("div", {
704
- className: "flow-minimap",
705
- style: {
706
- display: v && !s ? void 0 : "none",
707
- cursor: "pointer"
708
- },
709
- onPointerDown: b,
710
- onPointerMove: c,
711
- onPointerUp: y,
712
- title: "点击或拖动以移动画布",
713
- children: /* @__PURE__ */ r("canvas", {
714
- ref: o,
715
- width: 180,
716
- height: 120,
717
- style: {
718
- width: "100%",
719
- height: "100%",
720
- pointerEvents: "none"
721
- }
722
- })
723
- });
660
+ function le({ canvasRef: e, pixiRef: t, miniMapRef: n }) {
661
+ let { showMiniMap: r, setViewport: i, presentation: a } = c(), o = R(!1), s = F((r, a) => {
662
+ let o = e.current, s = t.current, c = n.current;
663
+ if (!o || !s || s.destroyed || !c) return;
664
+ let l = o.getBoundingClientRect();
665
+ if (l.width === 0 || l.height === 0) return;
666
+ let { width: u, height: d } = c.size, f = (r - l.left) / l.width * u, p = (a - l.top) / l.height * d, m = c.minimapToWorld(f, p);
667
+ if (!m) return;
668
+ let h = s.world.scale.x || 1, g = s.app.screen.width, _ = s.app.screen.height;
669
+ i({
670
+ x: g / 2 - m.x * h,
671
+ y: _ / 2 - m.y * h,
672
+ zoom: h
673
+ });
674
+ }, [
675
+ e,
676
+ t,
677
+ n,
678
+ i
679
+ ]), l = F((e) => {
680
+ e.preventDefault(), e.currentTarget.setPointerCapture(e.pointerId), o.current = !0, s(e.clientX, e.clientY);
681
+ }, [s]), u = F((e) => {
682
+ o.current && s(e.clientX, e.clientY);
683
+ }, [s]), d = F((e) => {
684
+ o.current = !1;
685
+ try {
686
+ e.currentTarget.releasePointerCapture(e.pointerId);
687
+ } catch {}
688
+ }, []);
689
+ return /* @__PURE__ */ B("div", {
690
+ className: "flow-minimap",
691
+ style: {
692
+ display: r && !a ? void 0 : "none",
693
+ cursor: "pointer"
694
+ },
695
+ onPointerDown: l,
696
+ onPointerMove: u,
697
+ onPointerUp: d,
698
+ title: "点击或拖动以移动画布",
699
+ children: /* @__PURE__ */ B("canvas", {
700
+ ref: e,
701
+ width: 180,
702
+ height: 120,
703
+ style: {
704
+ width: "100%",
705
+ height: "100%",
706
+ pointerEvents: "none"
707
+ }
708
+ })
709
+ });
724
710
  }
725
- function ot(o, p) {
726
- const a = `"id": "${p}"`, v = o.indexOf(a);
727
- if (v === -1) return null;
728
- let u = 0, s = -1;
729
- for (let n = v; n >= 0; n--)
730
- if (o[n] === "}" && u++, o[n] === "{") {
731
- if (u === 0) {
732
- s = n;
733
- break;
734
- }
735
- u--;
736
- }
737
- if (s === -1) return null;
738
- u = 0;
739
- let l = -1;
740
- for (let n = s; n < o.length; n++)
741
- if (o[n] === "{" && u++, o[n] === "}" && (u--, u === 0)) {
742
- l = n;
743
- break;
744
- }
745
- return l === -1 ? null : {
746
- startLine: o.slice(0, s).split(`
747
- `).length,
748
- endLine: o.slice(0, l + 1).split(`
749
- `).length
750
- };
711
+ function q(e, t) {
712
+ let n = `"id": "${t}"`, r = e.indexOf(n);
713
+ if (r === -1) return null;
714
+ let i = 0, a = -1;
715
+ for (let t = r; t >= 0; t--) if (e[t] === "}" && i++, e[t] === "{") {
716
+ if (i === 0) {
717
+ a = t;
718
+ break;
719
+ }
720
+ i--;
721
+ }
722
+ if (a === -1) return null;
723
+ i = 0;
724
+ let o = -1;
725
+ for (let t = a; t < e.length; t++) if (e[t] === "{" && i++, e[t] === "}" && (i--, i === 0)) {
726
+ o = t;
727
+ break;
728
+ }
729
+ return o === -1 ? null : {
730
+ startLine: e.slice(0, a).split("\n").length,
731
+ endLine: e.slice(0, o + 1).split("\n").length
732
+ };
751
733
  }
752
- function re(o) {
753
- o.querySelectorAll(".cm-line.flow-json-hl").forEach((p) => p.classList.remove("flow-json-hl"));
734
+ function J(e) {
735
+ e.querySelectorAll(".cm-line.flow-json-hl").forEach((e) => e.classList.remove("flow-json-hl"));
754
736
  }
755
- function st(o, p, a) {
756
- const v = o.getView();
757
- if (v)
758
- for (let u = p; u <= a; u++) try {
759
- const s = v.state.doc.line(u), l = v.domAtPos(s.from), n = l.node instanceof HTMLElement ? l.node.closest(".cm-line") : l.node.parentElement?.closest(".cm-line");
760
- n && n.classList.add("flow-json-hl");
761
- } catch {
762
- }
737
+ function Y(e, t, n) {
738
+ let r = e.getView();
739
+ if (r) for (let e = t; e <= n; e++) try {
740
+ let t = r.state.doc.line(e), n = r.domAtPos(t.from), i = n.node instanceof HTMLElement ? n.node.closest(".cm-line") : n.node.parentElement?.closest(".cm-line");
741
+ i && i.classList.add("flow-json-hl");
742
+ } catch {}
763
743
  }
764
- function it() {
765
- const { setDoc: o, currentCanvasId: p, selection: a, currentCanvas: v } = ee(), [u, s] = j(""), [l, n] = j(null), b = F(!1), c = F(null), y = F(null), e = le(() => a.nodeIds.size + a.edgeIds.size + a.lineIds.size !== 1 ? null : a.nodeIds.size === 1 ? [...a.nodeIds][0] : a.edgeIds.size === 1 ? [...a.edgeIds][0] : a.lineIds.size === 1 ? [...a.lineIds][0] : null, [a]);
766
- X(() => {
767
- if (b.current) {
768
- b.current = !1;
769
- return;
770
- }
771
- s(JSON.stringify(v, null, 2)), n(null);
772
- }, [v]), X(() => {
773
- const h = y.current;
774
- if (h && re(h), !e) return;
775
- const x = setTimeout(() => {
776
- const g = ot(u, e);
777
- if (!g || !y.current) return;
778
- const S = c.current?.getView();
779
- if (!S) return;
780
- const K = y.current, z = S.scrollDOM;
781
- z.style.scrollBehavior = "smooth";
782
- const J = S.state.doc.line(g.startLine);
783
- S.dispatch({ effects: Be.scrollIntoView(J.from, {
784
- y: "start",
785
- yMargin: 0
786
- }) });
787
- const C = () => {
788
- z.style.scrollBehavior = "", re(K), st(c.current, g.startLine, g.endLine);
789
- };
790
- let f;
791
- const w = () => {
792
- clearTimeout(f), f = setTimeout(C, 100);
793
- };
794
- z.addEventListener("scroll", w), f = setTimeout(() => {
795
- z.removeEventListener("scroll", w), C();
796
- }, 800);
797
- }, 120);
798
- return () => clearTimeout(x);
799
- }, [e, u]);
800
- const I = E((h) => {
801
- s(h);
802
- try {
803
- const x = JSON.parse(h);
804
- x && Array.isArray(x.nodes) && Array.isArray(x.edges) && Array.isArray(x.lines) ? (n(null), b.current = !0, o((g) => ({
805
- ...g,
806
- canvases: {
807
- ...g.canvases,
808
- [p]: x
809
- }
810
- }))) : n("JSON must have nodes, edges, lines arrays");
811
- } catch (x) {
812
- n(x.message?.slice(0, 60) ?? "Invalid JSON");
813
- }
814
- }, [o, p]), m = e ? a.nodeIds.has(e) ? "Node" : a.edgeIds.has(e) ? "Edge" : "Line" : null;
815
- return /* @__PURE__ */ _("div", {
816
- style: {
817
- display: "flex",
818
- flexDirection: "column",
819
- height: "100%",
820
- minHeight: 0
821
- },
822
- children: [
823
- /* @__PURE__ */ r("div", {
824
- className: "flow-json-header",
825
- children: /* @__PURE__ */ r("span", {
826
- className: "flow-json-scope",
827
- children: m ? `${m}: ${e.slice(0, 8)}` : "Canvas"
828
- })
829
- }),
830
- l && /* @__PURE__ */ r("div", {
831
- style: {
832
- fontSize: 11,
833
- color: "oklch(var(--er))",
834
- padding: "4px 0",
835
- flexShrink: 0
836
- },
837
- children: l
838
- }),
839
- /* @__PURE__ */ r("div", {
840
- ref: y,
841
- style: {
842
- flex: 1,
843
- minHeight: 0
844
- },
845
- children: /* @__PURE__ */ r(ge, {
846
- ref: c,
847
- value: u,
848
- onChange: I,
849
- language: "json",
850
- lineNumbers: !1,
851
- height: "100%",
852
- highlightActiveLine: !1
853
- })
854
- })
855
- ]
856
- });
744
+ function X() {
745
+ let { setDoc: e, currentCanvasId: n, selection: r, currentCanvas: i } = o(), [a, s] = z(""), [c, l] = z(null), u = R(!1), d = R(null), f = R(null), p = L(() => r.nodeIds.size + r.edgeIds.size + r.lineIds.size === 1 ? r.nodeIds.size === 1 ? [...r.nodeIds][0] : r.edgeIds.size === 1 ? [...r.edgeIds][0] : r.lineIds.size === 1 ? [...r.lineIds][0] : null : null, [r]);
746
+ I(() => {
747
+ if (u.current) {
748
+ u.current = !1;
749
+ return;
750
+ }
751
+ s(JSON.stringify(i, null, 2)), l(null);
752
+ }, [i]), I(() => {
753
+ let e = f.current;
754
+ if (e && J(e), !p) return;
755
+ let t = setTimeout(() => {
756
+ let e = q(a, p);
757
+ if (!e || !f.current) return;
758
+ let t = d.current?.getView();
759
+ if (!t) return;
760
+ let n = f.current, r = t.scrollDOM;
761
+ r.style.scrollBehavior = "smooth";
762
+ let i = t.state.doc.line(e.startLine);
763
+ t.dispatch({ effects: H.scrollIntoView(i.from, {
764
+ y: "start",
765
+ yMargin: 0
766
+ }) });
767
+ let o = () => {
768
+ r.style.scrollBehavior = "", J(n), Y(d.current, e.startLine, e.endLine);
769
+ }, s, c = () => {
770
+ clearTimeout(s), s = setTimeout(o, 100);
771
+ };
772
+ r.addEventListener("scroll", c), s = setTimeout(() => {
773
+ r.removeEventListener("scroll", c), o();
774
+ }, 800);
775
+ }, 120);
776
+ return () => clearTimeout(t);
777
+ }, [p, a]);
778
+ let m = F((t) => {
779
+ s(t);
780
+ try {
781
+ let r = JSON.parse(t);
782
+ r && Array.isArray(r.nodes) && Array.isArray(r.edges) && Array.isArray(r.lines) ? (l(null), u.current = !0, e((e) => ({
783
+ ...e,
784
+ canvases: {
785
+ ...e.canvases,
786
+ [n]: r
787
+ }
788
+ }))) : l("JSON must have nodes, edges, lines arrays");
789
+ } catch (e) {
790
+ l(e.message?.slice(0, 60) ?? "Invalid JSON");
791
+ }
792
+ }, [e, n]), h = p ? r.nodeIds.has(p) ? "Node" : r.edgeIds.has(p) ? "Edge" : "Line" : null;
793
+ return /* @__PURE__ */ V("div", {
794
+ style: {
795
+ display: "flex",
796
+ flexDirection: "column",
797
+ height: "100%",
798
+ minHeight: 0
799
+ },
800
+ children: [
801
+ /* @__PURE__ */ B("div", {
802
+ className: "flow-json-header",
803
+ children: /* @__PURE__ */ B("span", {
804
+ className: "flow-json-scope",
805
+ children: h ? `${h}: ${p.slice(0, 8)}` : "Canvas"
806
+ })
807
+ }),
808
+ c && /* @__PURE__ */ B("div", {
809
+ style: {
810
+ fontSize: 11,
811
+ color: "oklch(var(--er))",
812
+ padding: "4px 0",
813
+ flexShrink: 0
814
+ },
815
+ children: c
816
+ }),
817
+ /* @__PURE__ */ B("div", {
818
+ ref: f,
819
+ style: {
820
+ flex: 1,
821
+ minHeight: 0
822
+ },
823
+ children: /* @__PURE__ */ B(t, {
824
+ ref: d,
825
+ value: a,
826
+ onChange: m,
827
+ language: "json",
828
+ lineNumbers: !1,
829
+ height: "100%",
830
+ highlightActiveLine: !1
831
+ })
832
+ })
833
+ ]
834
+ });
857
835
  }
858
- function rt() {
859
- const { contextMenu: o, setContextMenu: p } = Y(), { doc: a, setDoc: v, currentCanvasId: u, pushCanvas: s, setSelection: l } = ee(), { duplicate: n } = ae();
860
- if (!o) return null;
861
- const b = a.canvases[u];
862
- if (!b)
863
- return p(null), null;
864
- const c = o.nodeId ? b.nodes.find((e) => e.id === o.nodeId) : null, y = [];
865
- return c && (y.push({
866
- label: "Duplicate",
867
- icon: "⧉",
868
- action: () => {
869
- n(24, 24, { nodeIds: /* @__PURE__ */ new Set([c.id]) });
870
- }
871
- }), y.push({
872
- label: "---",
873
- action: () => {
874
- }
875
- }), c.data.childCanvasId ? (y.push({
876
- label: "Enter Sub-canvas",
877
- icon: "↓",
878
- action: () => {
879
- s(c.data.childCanvasId), l({
880
- nodeIds: /* @__PURE__ */ new Set(),
881
- edgeIds: /* @__PURE__ */ new Set(),
882
- lineIds: /* @__PURE__ */ new Set()
883
- });
884
- }
885
- }), y.push({
886
- label: "---",
887
- action: () => {
888
- }
889
- }), y.push({
890
- label: "Delete Sub-canvas",
891
- icon: "🗑",
892
- danger: !0,
893
- action: () => {
894
- const e = c.data.childCanvasId;
895
- v((I) => {
896
- const m = { ...I.canvases };
897
- ce(m, e);
898
- const h = m[u];
899
- if (!h) return I;
900
- m[u] = {
901
- ...h,
902
- nodes: h.nodes.map((g) => g.id === c.id ? {
903
- ...g,
904
- data: {
905
- ...g.data,
906
- childCanvasId: void 0
907
- }
908
- } : g)
909
- };
910
- const x = I.stack.filter((g) => m[g]);
911
- return x.length === 0 && x.push(we), {
912
- ...I,
913
- canvases: m,
914
- stack: x
915
- };
916
- });
917
- }
918
- })) : y.push({
919
- label: "Create Sub-canvas",
920
- icon: "⊞",
921
- action: () => {
922
- const e = Q("canvas");
923
- v((I) => {
924
- const m = I.canvases[u];
925
- return m ? {
926
- ...I,
927
- canvases: {
928
- ...I.canvases,
929
- [u]: {
930
- ...m,
931
- nodes: m.nodes.map((h) => h.id === c.id ? {
932
- ...h,
933
- data: {
934
- ...h.data,
935
- childCanvasId: e
936
- }
937
- } : h)
938
- },
939
- [e]: {
940
- nodes: [],
941
- edges: [],
942
- lines: []
943
- }
944
- }
945
- } : I;
946
- }), s(e);
947
- }
948
- })), y.length === 0 ? null : /* @__PURE__ */ r(Ke, {
949
- x: o.x,
950
- y: o.y,
951
- items: y,
952
- onClose: () => p(null)
953
- });
836
+ function ue() {
837
+ let { contextMenu: e, setContextMenu: t } = c(), { doc: n, setDoc: i, currentCanvasId: a, pushCanvas: s, setSelection: l } = o(), { duplicate: d } = A();
838
+ if (!e) return null;
839
+ let f = n.canvases[a];
840
+ if (!f) return t(null), null;
841
+ let p = e.nodeId ? f.nodes.find((t) => t.id === e.nodeId) : null, m = [];
842
+ return p && (m.push({
843
+ label: "Duplicate",
844
+ icon: "⧉",
845
+ action: () => {
846
+ d(24, 24, { nodeIds: /* @__PURE__ */ new Set([p.id]) });
847
+ }
848
+ }), m.push({
849
+ label: "---",
850
+ action: () => {}
851
+ }), p.data.childCanvasId ? (m.push({
852
+ label: "Enter Sub-canvas",
853
+ icon: "↓",
854
+ action: () => {
855
+ s(p.data.childCanvasId), l({
856
+ nodeIds: /* @__PURE__ */ new Set(),
857
+ edgeIds: /* @__PURE__ */ new Set(),
858
+ lineIds: /* @__PURE__ */ new Set()
859
+ });
860
+ }
861
+ }), m.push({
862
+ label: "---",
863
+ action: () => {}
864
+ }), m.push({
865
+ label: "Delete Sub-canvas",
866
+ icon: "🗑",
867
+ danger: !0,
868
+ action: () => {
869
+ let e = p.data.childCanvasId;
870
+ i((t) => {
871
+ let n = { ...t.canvases };
872
+ Z(n, e);
873
+ let i = n[a];
874
+ if (!i) return t;
875
+ n[a] = {
876
+ ...i,
877
+ nodes: i.nodes.map((e) => e.id === p.id ? {
878
+ ...e,
879
+ data: {
880
+ ...e.data,
881
+ childCanvasId: void 0
882
+ }
883
+ } : e)
884
+ };
885
+ let o = t.stack.filter((e) => n[e]);
886
+ return o.length === 0 && o.push(r), {
887
+ ...t,
888
+ canvases: n,
889
+ stack: o
890
+ };
891
+ });
892
+ }
893
+ })) : m.push({
894
+ label: "Create Sub-canvas",
895
+ icon: "⊞",
896
+ action: () => {
897
+ let e = u("canvas");
898
+ i((t) => {
899
+ let n = t.canvases[a];
900
+ return n ? {
901
+ ...t,
902
+ canvases: {
903
+ ...t.canvases,
904
+ [a]: {
905
+ ...n,
906
+ nodes: n.nodes.map((t) => t.id === p.id ? {
907
+ ...t,
908
+ data: {
909
+ ...t.data,
910
+ childCanvasId: e
911
+ }
912
+ } : t)
913
+ },
914
+ [e]: {
915
+ nodes: [],
916
+ edges: [],
917
+ lines: []
918
+ }
919
+ }
920
+ } : t;
921
+ }), s(e);
922
+ }
923
+ })), m.length === 0 ? null : /* @__PURE__ */ B(O, {
924
+ x: e.x,
925
+ y: e.y,
926
+ items: m,
927
+ onClose: () => t(null)
928
+ });
954
929
  }
955
- function ce(o, p) {
956
- const a = o[p];
957
- if (a) {
958
- for (const v of a.nodes) v.data.childCanvasId && ce(o, v.data.childCanvasId);
959
- delete o[p];
960
- }
930
+ function Z(e, t) {
931
+ let n = e[t];
932
+ if (n) {
933
+ for (let t of n.nodes) t.data.childCanvasId && Z(e, t.data.childCanvasId);
934
+ delete e[t];
935
+ }
961
936
  }
962
- export {
963
- Ht as default
964
- };
937
+ //#endregion
938
+ export { U as default };
965
939
 
966
940
  //# sourceMappingURL=Flow.js.map