dishui 0.0.65 → 0.0.67

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 (507) 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/Accordion/index.d.ts +39 -0
  5. package/dist/components/Accordion/index.js +70 -0
  6. package/dist/components/Accordion/index.js.map +1 -0
  7. package/dist/components/Avatar/index.d.ts +48 -0
  8. package/dist/components/Avatar/index.js +71 -0
  9. package/dist/components/Avatar/index.js.map +1 -0
  10. package/dist/components/Badge/index.js +10 -15
  11. package/dist/components/Badge/index.js.map +1 -1
  12. package/dist/components/Button/index.js +62 -89
  13. package/dist/components/Button/index.js.map +1 -1
  14. package/dist/components/Card/index.d.ts +142 -0
  15. package/dist/components/Card/index.js +368 -69
  16. package/dist/components/Card/index.js.map +1 -1
  17. package/dist/components/Chart/Chart.js +25 -25
  18. package/dist/components/Chart/Chart.js.map +1 -1
  19. package/dist/components/Checkbox/index.js +57 -65
  20. package/dist/components/Checkbox/index.js.map +1 -1
  21. package/dist/components/ChoicePicker/index.d.ts +44 -0
  22. package/dist/components/ChoicePicker/index.js +81 -0
  23. package/dist/components/ChoicePicker/index.js.map +1 -0
  24. package/dist/components/Column/index.d.ts +28 -0
  25. package/dist/components/Column/index.js +30 -0
  26. package/dist/components/Column/index.js.map +1 -0
  27. package/dist/components/DateTimeInput/index.d.ts +44 -0
  28. package/dist/components/DateTimeInput/index.js +48 -0
  29. package/dist/components/DateTimeInput/index.js.map +1 -0
  30. package/dist/components/Demo/index.js +107 -107
  31. package/dist/components/Demo/index.js.map +1 -1
  32. package/dist/components/Divider/index.d.ts +20 -0
  33. package/dist/components/Divider/index.js +30 -0
  34. package/dist/components/Divider/index.js.map +1 -0
  35. package/dist/components/EmptyState/index.js +24 -24
  36. package/dist/components/EmptyState/index.js.map +1 -1
  37. package/dist/components/FileUploader/DropZone.js +134 -136
  38. package/dist/components/FileUploader/DropZone.js.map +1 -1
  39. package/dist/components/FileUploader/FileItem.js +159 -163
  40. package/dist/components/FileUploader/FileItem.js.map +1 -1
  41. package/dist/components/FileUploader/FileUploader.js +126 -127
  42. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  43. package/dist/components/FileUploader/UploadQueue.js +62 -62
  44. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  45. package/dist/components/FloatWindow/index.d.ts +28 -0
  46. package/dist/components/GridLayout/index.d.ts +42 -0
  47. package/dist/components/Icon/index.d.ts +26 -0
  48. package/dist/components/Icon/index.js +27 -0
  49. package/dist/components/Icon/index.js.map +1 -0
  50. package/dist/components/Image/index.d.ts +33 -0
  51. package/dist/components/Image/index.js +44 -0
  52. package/dist/components/Image/index.js.map +1 -0
  53. package/dist/components/Input/index.js +196 -197
  54. package/dist/components/Input/index.js.map +1 -1
  55. package/dist/components/Label/index.js +62 -74
  56. package/dist/components/Label/index.js.map +1 -1
  57. package/dist/components/Layout/index.js +134 -139
  58. package/dist/components/Layout/index.js.map +1 -1
  59. package/dist/components/List/index.js +45 -58
  60. package/dist/components/List/index.js.map +1 -1
  61. package/dist/components/Markdown/Markdown.js +106 -107
  62. package/dist/components/Markdown/Markdown.js.map +1 -1
  63. package/dist/components/Markdown/codeThemes.js +24 -33
  64. package/dist/components/Markdown/codeThemes.js.map +1 -1
  65. package/dist/components/Markdown/markdownComponents.js +203 -208
  66. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  67. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  68. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  69. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  70. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  71. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  72. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  73. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  74. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  75. package/dist/components/Modal/index.js +82 -82
  76. package/dist/components/Modal/index.js.map +1 -1
  77. package/dist/components/MultipleChoice/index.d.ts +44 -0
  78. package/dist/components/MultipleChoice/index.js +52 -0
  79. package/dist/components/MultipleChoice/index.js.map +1 -0
  80. package/dist/components/Notification/index.d.ts +17 -0
  81. package/dist/components/Page/index.d.ts +1 -1
  82. package/dist/components/Page/index.js +40 -71
  83. package/dist/components/Page/index.js.map +1 -1
  84. package/dist/components/PageHeader/index.js +28 -28
  85. package/dist/components/PageHeader/index.js.map +1 -1
  86. package/dist/components/ProtectedRoute/index.js +8 -9
  87. package/dist/components/ProtectedRoute/index.js.map +1 -1
  88. package/dist/components/Row/index.d.ts +28 -0
  89. package/dist/components/Row/index.js +30 -0
  90. package/dist/components/Row/index.js.map +1 -0
  91. package/dist/components/Select/index.js +251 -254
  92. package/dist/components/Select/index.js.map +1 -1
  93. package/dist/components/SidebarToggleButton/index.js +56 -59
  94. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  95. package/dist/components/Slider/index.d.ts +39 -0
  96. package/dist/components/Slider/index.js +52 -0
  97. package/dist/components/Slider/index.js.map +1 -0
  98. package/dist/components/Switch/index.d.ts +34 -0
  99. package/dist/components/Switch/index.js +55 -0
  100. package/dist/components/Switch/index.js.map +1 -0
  101. package/dist/components/Tab/index.d.ts +40 -0
  102. package/dist/components/Table/index.js +109 -121
  103. package/dist/components/Table/index.js.map +1 -1
  104. package/dist/components/Tabs/index.js +28 -38
  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 -327
  132. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  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 -306
  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 -144
  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 +189 -189
  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 -948
  217. package/dist/components/pro/Flow/Flow.js.map +1 -1
  218. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  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 -180
  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 -242
  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 -589
  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 -248
  345. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  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 -572
  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 -41
  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 +31 -3
  442. package/dist/index.js +106 -241
  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 -186
  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 +700 -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 -60
  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 +19 -6
  505. package/dist/components/StatCard/index.d.ts +0 -24
  506. package/dist/components/StatCard/index.js +0 -90
  507. package/dist/components/StatCard/index.js.map +0 -1
@@ -1,85 +1,85 @@
1
- import { resolveThemeColor as o } from "../utils/themeColor.js";
2
- import { generateId as n } from "../nodes/nodeUtils.js";
3
- import { Graphics as h } from "pixi.js";
1
+ import { resolveThemeColor as e } from "../utils/themeColor.js";
2
+ import { generateId as t } from "../nodes/nodeUtils.js";
3
+ import { Graphics as n } from "pixi.js";
4
+ //#region src/components/pro/Flow/lines/GeometricLineTool.ts
4
5
  function r() {
5
- return o("theme:base-content", "#374151");
6
+ return e("theme:base-content", "#374151");
6
7
  }
7
- var p = class {
8
- stage;
9
- preview;
10
- callbacks;
11
- points = [];
12
- _active = !1;
13
- _mode = "straight";
14
- _currentPos = {
15
- x: 0,
16
- y: 0
17
- };
18
- _lastClickTime = 0;
19
- _lastClickPos = {
20
- x: 0,
21
- y: 0
22
- };
23
- constructor(i, e, t) {
24
- this.stage = i, this.callbacks = t, this.preview = new h(), this.preview.label = "geo-line-preview", this.preview.visible = !1, e.addChild(this.preview), this._handleKeyDown = this._handleKeyDown.bind(this);
25
- }
26
- get active() {
27
- return this._active;
28
- }
29
- get mode() {
30
- return this._mode;
31
- }
32
- set mode(i) {
33
- this._mode = i;
34
- }
35
- activate(i = "straight") {
36
- this._active = !0, this._mode = i, this.points = [], this._lastClickTime = 0, this.stage.on("pointerdown", this._onClick, this), this.stage.on("globalpointermove", this._onMove, this), window.addEventListener("keydown", this._handleKeyDown);
37
- }
38
- deactivate() {
39
- this._active = !1, this.points = [], this.preview.destroyed || (this.preview.clear(), this.preview.visible = !1), this.stage.off("pointerdown", this._onClick, this), this.stage.off("globalpointermove", this._onMove, this), window.removeEventListener("keydown", this._handleKeyDown);
40
- }
41
- _handleKeyDown(i) {
42
- (i.key === "Enter" || i.key === "Return") && this._mode === "polyline" && this.points.length >= 2 && this._finishLine();
43
- }
44
- _onClick = (i) => {
45
- if (i.button !== 0) return;
46
- const e = this.callbacks.screenToWorld(i.global.x, i.global.y), t = Date.now(), s = t - this._lastClickTime < 350 && Math.hypot(e.x - this._lastClickPos.x, e.y - this._lastClickPos.y) < 10;
47
- if (this._lastClickTime = t, this._lastClickPos = e, s && this._mode === "polyline" && this.points.length >= 2) {
48
- this._finishLine();
49
- return;
50
- }
51
- this.points.push(e), (this._mode === "straight" || this._mode === "arrow") && this.points.length >= 2 && this._finishLine();
52
- };
53
- _onMove = (i) => {
54
- const e = this.callbacks.screenToWorld(i.global.x, i.global.y);
55
- if (this._currentPos = e, this.points.length !== 0) {
56
- this.preview.visible = !0, this.preview.clear(), this.preview.moveTo(this.points[0].x, this.points[0].y);
57
- for (let t = 1; t < this.points.length; t++) this.preview.lineTo(this.points[t].x, this.points[t].y);
58
- this.preview.lineTo(e.x, e.y), this.preview.stroke({
59
- color: r(),
60
- width: 2,
61
- alpha: 0.5
62
- });
63
- }
64
- };
65
- _finishLine() {
66
- const i = this._mode === "arrow" ? "arrowclosed" : "none", e = this._mode === "arrow" ? "arrow" : this._mode, t = {
67
- id: n("line"),
68
- type: e,
69
- points: [...this.points],
70
- strokeColor: "theme:base-content",
71
- strokeWidth: 2,
72
- lineStyle: "solid",
73
- markerEnd: i
74
- };
75
- this.callbacks.onLineComplete(t), this.points = [], this.preview.clear(), this.preview.visible = !1;
76
- }
77
- destroy() {
78
- this.deactivate(), this.preview.destroyed || this.preview.destroy();
79
- }
80
- };
81
- export {
82
- p as GeometricLineTool
8
+ var i = class {
9
+ stage;
10
+ preview;
11
+ callbacks;
12
+ points = [];
13
+ _active = !1;
14
+ _mode = "straight";
15
+ _currentPos = {
16
+ x: 0,
17
+ y: 0
18
+ };
19
+ _lastClickTime = 0;
20
+ _lastClickPos = {
21
+ x: 0,
22
+ y: 0
23
+ };
24
+ constructor(e, t, r) {
25
+ this.stage = e, this.callbacks = r, this.preview = new n(), this.preview.label = "geo-line-preview", this.preview.visible = !1, t.addChild(this.preview), this._handleKeyDown = this._handleKeyDown.bind(this);
26
+ }
27
+ get active() {
28
+ return this._active;
29
+ }
30
+ get mode() {
31
+ return this._mode;
32
+ }
33
+ set mode(e) {
34
+ this._mode = e;
35
+ }
36
+ activate(e = "straight") {
37
+ this._active = !0, this._mode = e, this.points = [], this._lastClickTime = 0, this.stage.on("pointerdown", this._onClick, this), this.stage.on("globalpointermove", this._onMove, this), window.addEventListener("keydown", this._handleKeyDown);
38
+ }
39
+ deactivate() {
40
+ this._active = !1, this.points = [], this.preview.destroyed || (this.preview.clear(), this.preview.visible = !1), this.stage.off("pointerdown", this._onClick, this), this.stage.off("globalpointermove", this._onMove, this), window.removeEventListener("keydown", this._handleKeyDown);
41
+ }
42
+ _handleKeyDown(e) {
43
+ (e.key === "Enter" || e.key === "Return") && this._mode === "polyline" && this.points.length >= 2 && this._finishLine();
44
+ }
45
+ _onClick = (e) => {
46
+ if (e.button !== 0) return;
47
+ let t = this.callbacks.screenToWorld(e.global.x, e.global.y), n = Date.now(), r = n - this._lastClickTime < 350 && Math.hypot(t.x - this._lastClickPos.x, t.y - this._lastClickPos.y) < 10;
48
+ if (this._lastClickTime = n, this._lastClickPos = t, r && this._mode === "polyline" && this.points.length >= 2) {
49
+ this._finishLine();
50
+ return;
51
+ }
52
+ this.points.push(t), (this._mode === "straight" || this._mode === "arrow") && this.points.length >= 2 && this._finishLine();
53
+ };
54
+ _onMove = (e) => {
55
+ let t = this.callbacks.screenToWorld(e.global.x, e.global.y);
56
+ if (this._currentPos = t, this.points.length !== 0) {
57
+ this.preview.visible = !0, this.preview.clear(), this.preview.moveTo(this.points[0].x, this.points[0].y);
58
+ for (let e = 1; e < this.points.length; e++) this.preview.lineTo(this.points[e].x, this.points[e].y);
59
+ this.preview.lineTo(t.x, t.y), this.preview.stroke({
60
+ color: r(),
61
+ width: 2,
62
+ alpha: .5
63
+ });
64
+ }
65
+ };
66
+ _finishLine() {
67
+ let e = this._mode === "arrow" ? "arrowclosed" : "none", n = this._mode === "arrow" ? "arrow" : this._mode, r = {
68
+ id: t("line"),
69
+ type: n,
70
+ points: [...this.points],
71
+ strokeColor: "theme:base-content",
72
+ strokeWidth: 2,
73
+ lineStyle: "solid",
74
+ markerEnd: e
75
+ };
76
+ this.callbacks.onLineComplete(r), this.points = [], this.preview.clear(), this.preview.visible = !1;
77
+ }
78
+ destroy() {
79
+ this.deactivate(), this.preview.destroyed || this.preview.destroy();
80
+ }
83
81
  };
82
+ //#endregion
83
+ export { i as GeometricLineTool };
84
84
 
85
85
  //# sourceMappingURL=GeometricLineTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeometricLineTool.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/GeometricLineTool.ts"],"sourcesContent":["import { Graphics, Container, FederatedPointerEvent } from 'pixi.js';\nimport type { FlowLine, FlowLineType, FlowEdgeMarkerKind } from '../types';\nimport { generateId } from '../nodes/nodeUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction previewStrokeColor(): string {\n return resolveThemeColor('theme:base-content', '#374151');\n}\n\nexport interface GeometricLineToolCallbacks {\n onLineComplete: (line: FlowLine) => void;\n screenToWorld: (sx: number, sy: number) => { x: number; y: number };\n}\n\ntype GeoMode = 'straight' | 'polyline' | 'arrow';\n\n/**\n * Click-to-place geometric lines: straight, polyline, and arrow.\n * - straight/arrow: click start, click end\n * - polyline: click each point, double-click to finish\n */\nexport class GeometricLineTool {\n private stage: Container;\n private preview: Graphics;\n private callbacks: GeometricLineToolCallbacks;\n private points: Array<{ x: number; y: number }> = [];\n private _active = false;\n private _mode: GeoMode = 'straight';\n private _currentPos = { x: 0, y: 0 };\n private _lastClickTime = 0;\n private _lastClickPos = { x: 0, y: 0 };\n\n constructor(stage: Container, world: Container, callbacks: GeometricLineToolCallbacks) {\n this.stage = stage;\n this.callbacks = callbacks;\n this.preview = new Graphics();\n this.preview.label = 'geo-line-preview';\n this.preview.visible = false;\n world.addChild(this.preview);\n this._handleKeyDown = this._handleKeyDown.bind(this);\n }\n\n get active(): boolean { return this._active; }\n get mode(): GeoMode { return this._mode; }\n set mode(m: GeoMode) { this._mode = m; }\n\n activate(mode: GeoMode = 'straight'): void {\n this._active = true;\n this._mode = mode;\n this.points = [];\n this._lastClickTime = 0;\n this.stage.on('pointerdown', this._onClick, this);\n this.stage.on('globalpointermove', this._onMove, this);\n window.addEventListener('keydown', this._handleKeyDown);\n }\n\n deactivate(): void {\n this._active = false;\n this.points = [];\n if (!this.preview.destroyed) {\n this.preview.clear();\n this.preview.visible = false;\n }\n this.stage.off('pointerdown', this._onClick, this);\n this.stage.off('globalpointermove', this._onMove, this);\n window.removeEventListener('keydown', this._handleKeyDown);\n }\n\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === 'Return') {\n if (this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n }\n }\n }\n\n private _onClick = (e: FederatedPointerEvent): void => {\n if (e.button !== 0) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n\n const now = Date.now();\n const isDbl = now - this._lastClickTime < 350\n && Math.hypot(world.x - this._lastClickPos.x, world.y - this._lastClickPos.y) < 10;\n this._lastClickTime = now;\n this._lastClickPos = world;\n\n if (isDbl && this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n return;\n }\n\n this.points.push(world);\n if ((this._mode === 'straight' || this._mode === 'arrow') && this.points.length >= 2) {\n this._finishLine();\n }\n };\n\n private _onMove = (e: FederatedPointerEvent): void => {\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this._currentPos = world;\n\n if (this.points.length === 0) return;\n this.preview.visible = true;\n this.preview.clear();\n\n this.preview.moveTo(this.points[0].x, this.points[0].y);\n for (let i = 1; i < this.points.length; i++) {\n this.preview.lineTo(this.points[i].x, this.points[i].y);\n }\n this.preview.lineTo(world.x, world.y);\n this.preview.stroke({ color: previewStrokeColor(), width: 2, alpha: 0.5 });\n };\n\n private _finishLine(): void {\n const markerEnd: FlowEdgeMarkerKind = this._mode === 'arrow' ? 'arrowclosed' : 'none';\n const lineType: FlowLineType = this._mode === 'arrow' ? 'arrow' : this._mode;\n\n const line: FlowLine = {\n id: generateId('line'),\n type: lineType,\n points: [...this.points],\n strokeColor: 'theme:base-content',\n strokeWidth: 2,\n lineStyle: 'solid',\n markerEnd,\n };\n\n this.callbacks.onLineComplete(line);\n this.points = [];\n this.preview.clear();\n this.preview.visible = false;\n }\n\n destroy(): void {\n this.deactivate();\n if (!this.preview.destroyed) this.preview.destroy();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"GeometricLineTool.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/GeometricLineTool.ts"],"sourcesContent":["import { Graphics, Container, FederatedPointerEvent } from 'pixi.js';\nimport type { FlowLine, FlowLineType, FlowEdgeMarkerKind } from '../types';\nimport { generateId } from '../nodes/nodeUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction previewStrokeColor(): string {\n return resolveThemeColor('theme:base-content', '#374151');\n}\n\nexport interface GeometricLineToolCallbacks {\n onLineComplete: (line: FlowLine) => void;\n screenToWorld: (sx: number, sy: number) => { x: number; y: number };\n}\n\ntype GeoMode = 'straight' | 'polyline' | 'arrow';\n\n/**\n * Click-to-place geometric lines: straight, polyline, and arrow.\n * - straight/arrow: click start, click end\n * - polyline: click each point, double-click to finish\n */\nexport class GeometricLineTool {\n private stage: Container;\n private preview: Graphics;\n private callbacks: GeometricLineToolCallbacks;\n private points: Array<{ x: number; y: number }> = [];\n private _active = false;\n private _mode: GeoMode = 'straight';\n private _currentPos = { x: 0, y: 0 };\n private _lastClickTime = 0;\n private _lastClickPos = { x: 0, y: 0 };\n\n constructor(stage: Container, world: Container, callbacks: GeometricLineToolCallbacks) {\n this.stage = stage;\n this.callbacks = callbacks;\n this.preview = new Graphics();\n this.preview.label = 'geo-line-preview';\n this.preview.visible = false;\n world.addChild(this.preview);\n this._handleKeyDown = this._handleKeyDown.bind(this);\n }\n\n get active(): boolean { return this._active; }\n get mode(): GeoMode { return this._mode; }\n set mode(m: GeoMode) { this._mode = m; }\n\n activate(mode: GeoMode = 'straight'): void {\n this._active = true;\n this._mode = mode;\n this.points = [];\n this._lastClickTime = 0;\n this.stage.on('pointerdown', this._onClick, this);\n this.stage.on('globalpointermove', this._onMove, this);\n window.addEventListener('keydown', this._handleKeyDown);\n }\n\n deactivate(): void {\n this._active = false;\n this.points = [];\n if (!this.preview.destroyed) {\n this.preview.clear();\n this.preview.visible = false;\n }\n this.stage.off('pointerdown', this._onClick, this);\n this.stage.off('globalpointermove', this._onMove, this);\n window.removeEventListener('keydown', this._handleKeyDown);\n }\n\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === 'Return') {\n if (this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n }\n }\n }\n\n private _onClick = (e: FederatedPointerEvent): void => {\n if (e.button !== 0) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n\n const now = Date.now();\n const isDbl = now - this._lastClickTime < 350\n && Math.hypot(world.x - this._lastClickPos.x, world.y - this._lastClickPos.y) < 10;\n this._lastClickTime = now;\n this._lastClickPos = world;\n\n if (isDbl && this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n return;\n }\n\n this.points.push(world);\n if ((this._mode === 'straight' || this._mode === 'arrow') && this.points.length >= 2) {\n this._finishLine();\n }\n };\n\n private _onMove = (e: FederatedPointerEvent): void => {\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this._currentPos = world;\n\n if (this.points.length === 0) return;\n this.preview.visible = true;\n this.preview.clear();\n\n this.preview.moveTo(this.points[0].x, this.points[0].y);\n for (let i = 1; i < this.points.length; i++) {\n this.preview.lineTo(this.points[i].x, this.points[i].y);\n }\n this.preview.lineTo(world.x, world.y);\n this.preview.stroke({ color: previewStrokeColor(), width: 2, alpha: 0.5 });\n };\n\n private _finishLine(): void {\n const markerEnd: FlowEdgeMarkerKind = this._mode === 'arrow' ? 'arrowclosed' : 'none';\n const lineType: FlowLineType = this._mode === 'arrow' ? 'arrow' : this._mode;\n\n const line: FlowLine = {\n id: generateId('line'),\n type: lineType,\n points: [...this.points],\n strokeColor: 'theme:base-content',\n strokeWidth: 2,\n lineStyle: 'solid',\n markerEnd,\n };\n\n this.callbacks.onLineComplete(line);\n this.points = [];\n this.preview.clear();\n this.preview.visible = false;\n }\n\n destroy(): void {\n this.deactivate();\n if (!this.preview.destroyed) this.preview.destroy();\n }\n}\n"],"mappings":"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"}
@@ -1,92 +1,92 @@
1
- import { resolveThemeColor as x } from "../utils/themeColor.js";
2
- import { drawDashedPolyline as g } from "../utils/dashedLine.js";
3
- import { angleBetween as h, drawMarker as f } from "../edges/edgeMarkers.js";
4
- import { Container as y, Graphics as m } from "pixi.js";
5
- function u(n, e = 2) {
6
- if (!(!n || n === "solid")) {
7
- if (n === "dynamic") return [e * 4, e * 3];
8
- if (n === "dotted") return [e, e * 2];
9
- if (n === "dashed") return [e * 3, e * 2];
10
- }
1
+ import { resolveThemeColor as e } from "../utils/themeColor.js";
2
+ import { drawDashedPolyline as t } from "../utils/dashedLine.js";
3
+ import { angleBetween as n, drawMarker as r } from "../edges/edgeMarkers.js";
4
+ import { Container as i, Graphics as a } from "pixi.js";
5
+ //#region src/components/pro/Flow/lines/LineRenderer.ts
6
+ function o(e, t = 2) {
7
+ if (e && e !== "solid") {
8
+ if (e === "dynamic") return [t * 4, t * 3];
9
+ if (e === "dotted") return [t, t * 2];
10
+ if (e === "dashed") return [t * 3, t * 2];
11
+ }
11
12
  }
12
- var L = class {
13
- world;
14
- lineLayer;
15
- lines = /* @__PURE__ */ new Map();
16
- _dynamicOffset = 0;
17
- advanceAnimation(n) {
18
- this._dynamicOffset = (this._dynamicOffset + n * 0.06) % 1e3;
19
- }
20
- constructor(n) {
21
- this.world = n, this.lineLayer = new y({
22
- label: "lines",
23
- sortableChildren: !0
24
- }), this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));
25
- }
26
- sync(n, e) {
27
- const s = /* @__PURE__ */ new Set();
28
- for (const r of n) {
29
- s.add(r.id);
30
- let o = this.lines.get(r.id);
31
- o || (o = this._create(r), this.lines.set(r.id, o)), this._update(o, r, e.has(r.id));
32
- }
33
- for (const [r, o] of this.lines) s.has(r) || (this.lineLayer.removeChild(o.container), o.container.destroy({ children: !0 }), this.lines.delete(r));
34
- }
35
- _create(n) {
36
- const e = new y({ label: `line-${n.id}` }), s = new m();
37
- s.label = "line-hitarea", s.eventMode = "static", s.cursor = "pointer", s.alpha = 1e-3, e.addChild(s);
38
- const r = new m();
39
- return r.label = "line-gfx", e.addChild(r), this.lineLayer.addChild(e), {
40
- container: e,
41
- gfx: r,
42
- hitArea: s,
43
- lineId: n.id
44
- };
45
- }
46
- _update(n, e, s) {
47
- n.container.zIndex = e.zIndex ?? 0;
48
- const { gfx: r, hitArea: o } = n, t = e.points;
49
- if (t.length < 2) return;
50
- const a = s ? "#3b82f6" : x(e.strokeColor, "#374151"), d = e.strokeWidth;
51
- r.clear();
52
- const c = u(e.lineStyle, d);
53
- if (c) {
54
- const i = e.lineStyle === "dynamic" ? this._dynamicOffset : 0, l = e.closed ? [...t, t[0]] : t;
55
- g(r, l, c, i), r.stroke({
56
- color: a,
57
- width: d,
58
- cap: "round"
59
- });
60
- } else {
61
- r.moveTo(t[0].x, t[0].y);
62
- for (let i = 1; i < t.length; i++) r.lineTo(t[i].x, t[i].y);
63
- e.closed && r.closePath(), r.stroke({
64
- color: a,
65
- width: d
66
- });
67
- }
68
- if (e.markerStart && e.markerStart !== "none" && t.length >= 2) {
69
- const i = h(t[1].x, t[1].y, t[0].x, t[0].y);
70
- f(r, e.markerStart, t[0].x, t[0].y, i, a);
71
- }
72
- if (e.markerEnd && e.markerEnd !== "none" && t.length >= 2) {
73
- const i = t[t.length - 1], l = t[t.length - 2], p = h(l.x, l.y, i.x, i.y);
74
- f(r, e.markerEnd, i.x, i.y, p, a);
75
- }
76
- o.clear(), o.moveTo(t[0].x, t[0].y);
77
- for (let i = 1; i < t.length; i++) o.lineTo(t[i].x, t[i].y);
78
- o.stroke({
79
- color: "#000000",
80
- width: Math.max(d + 10, 14)
81
- }), o.alpha = 1e-3;
82
- }
83
- destroy() {
84
- for (const [, n] of this.lines) n.container.destroy({ children: !0 });
85
- this.lines.clear(), this.lineLayer.destroy({ children: !0 });
86
- }
87
- };
88
- export {
89
- L as LineRenderer
13
+ var s = class {
14
+ world;
15
+ lineLayer;
16
+ lines = /* @__PURE__ */ new Map();
17
+ _dynamicOffset = 0;
18
+ advanceAnimation(e) {
19
+ this._dynamicOffset = (this._dynamicOffset + e * .06) % 1e3;
20
+ }
21
+ constructor(e) {
22
+ this.world = e, this.lineLayer = new i({
23
+ label: "lines",
24
+ sortableChildren: !0
25
+ }), this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));
26
+ }
27
+ sync(e, t) {
28
+ let n = /* @__PURE__ */ new Set();
29
+ for (let r of e) {
30
+ n.add(r.id);
31
+ let e = this.lines.get(r.id);
32
+ e || (e = this._create(r), this.lines.set(r.id, e)), this._update(e, r, t.has(r.id));
33
+ }
34
+ for (let [e, t] of this.lines) n.has(e) || (this.lineLayer.removeChild(t.container), t.container.destroy({ children: !0 }), this.lines.delete(e));
35
+ }
36
+ _create(e) {
37
+ let t = new i({ label: `line-${e.id}` }), n = new a();
38
+ n.label = "line-hitarea", n.eventMode = "static", n.cursor = "pointer", n.alpha = .001, t.addChild(n);
39
+ let r = new a();
40
+ return r.label = "line-gfx", t.addChild(r), this.lineLayer.addChild(t), {
41
+ container: t,
42
+ gfx: r,
43
+ hitArea: n,
44
+ lineId: e.id
45
+ };
46
+ }
47
+ _update(i, a, s) {
48
+ i.container.zIndex = a.zIndex ?? 0;
49
+ let { gfx: c, hitArea: l } = i, u = a.points;
50
+ if (u.length < 2) return;
51
+ let d = s ? "#3b82f6" : e(a.strokeColor, "#374151"), f = a.strokeWidth;
52
+ c.clear();
53
+ let p = o(a.lineStyle, f);
54
+ if (p) {
55
+ let e = a.lineStyle === "dynamic" ? this._dynamicOffset : 0, n = a.closed ? [...u, u[0]] : u;
56
+ t(c, n, p, e), c.stroke({
57
+ color: d,
58
+ width: f,
59
+ cap: "round"
60
+ });
61
+ } else {
62
+ c.moveTo(u[0].x, u[0].y);
63
+ for (let e = 1; e < u.length; e++) c.lineTo(u[e].x, u[e].y);
64
+ a.closed && c.closePath(), c.stroke({
65
+ color: d,
66
+ width: f
67
+ });
68
+ }
69
+ if (a.markerStart && a.markerStart !== "none" && u.length >= 2) {
70
+ let e = n(u[1].x, u[1].y, u[0].x, u[0].y);
71
+ r(c, a.markerStart, u[0].x, u[0].y, e, d);
72
+ }
73
+ if (a.markerEnd && a.markerEnd !== "none" && u.length >= 2) {
74
+ let e = u[u.length - 1], t = u[u.length - 2], i = n(t.x, t.y, e.x, e.y);
75
+ r(c, a.markerEnd, e.x, e.y, i, d);
76
+ }
77
+ l.clear(), l.moveTo(u[0].x, u[0].y);
78
+ for (let e = 1; e < u.length; e++) l.lineTo(u[e].x, u[e].y);
79
+ l.stroke({
80
+ color: "#000000",
81
+ width: Math.max(f + 10, 14)
82
+ }), l.alpha = .001;
83
+ }
84
+ destroy() {
85
+ for (let [, e] of this.lines) e.container.destroy({ children: !0 });
86
+ this.lines.clear(), this.lineLayer.destroy({ children: !0 });
87
+ }
90
88
  };
89
+ //#endregion
90
+ export { s as LineRenderer };
91
91
 
92
92
  //# sourceMappingURL=LineRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineRenderer.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/LineRenderer.ts"],"sourcesContent":["import { Container, Graphics } from 'pixi.js';\nimport type { FlowLine } from '../types';\nimport { drawMarker, angleBetween } from '../edges/edgeMarkers';\nimport { drawDashedPolyline } from '../utils/dashedLine';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction getLineDash(style?: string, width = 2): number[] | undefined {\n if (!style || style === 'solid') return undefined;\n if (style === 'dynamic') return [width * 4, width * 3];\n if (style === 'dotted') return [width, width * 2];\n if (style === 'dashed') return [width * 3, width * 2];\n return undefined;\n}\n\ninterface LineDisplay {\n container: Container;\n gfx: Graphics;\n hitArea: Graphics;\n lineId: string;\n}\n\n/**\n * Renders independent FlowLine[] objects on the canvas.\n */\nexport class LineRenderer {\n private world: Container;\n private lineLayer: Container;\n private lines = new Map<string, LineDisplay>();\n private _dynamicOffset = 0;\n\n /** Call once per frame to advance the dynamic dash animation. */\n advanceAnimation(deltaMs: number): void {\n this._dynamicOffset = (this._dynamicOffset + deltaMs * 0.06) % 1000;\n }\n\n constructor(world: Container) {\n this.world = world;\n this.lineLayer = new Container({ label: 'lines', sortableChildren: true });\n // Lines on top of edges but below nodes\n this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));\n }\n\n sync(flowLines: FlowLine[], selectedIds: Set<string>): void {\n const seen = new Set<string>();\n\n for (const line of flowLines) {\n seen.add(line.id);\n let display = this.lines.get(line.id);\n if (!display) {\n display = this._create(line);\n this.lines.set(line.id, display);\n }\n this._update(display, line, selectedIds.has(line.id));\n }\n\n for (const [id, display] of this.lines) {\n if (!seen.has(id)) {\n this.lineLayer.removeChild(display.container);\n display.container.destroy({ children: true });\n this.lines.delete(id);\n }\n }\n }\n\n private _create(line: FlowLine): LineDisplay {\n const container = new Container({ label: `line-${line.id}` });\n\n const hitArea = new Graphics();\n hitArea.label = 'line-hitarea';\n hitArea.eventMode = 'static';\n hitArea.cursor = 'pointer';\n hitArea.alpha = 0.001;\n container.addChild(hitArea);\n\n const gfx = new Graphics();\n gfx.label = 'line-gfx';\n container.addChild(gfx);\n\n this.lineLayer.addChild(container);\n return { container, gfx, hitArea, lineId: line.id };\n }\n\n private _update(display: LineDisplay, line: FlowLine, selected: boolean): void {\n display.container.zIndex = line.zIndex ?? 0;\n const { gfx, hitArea } = display;\n const pts = line.points;\n if (pts.length < 2) return;\n\n const color = selected ? '#3b82f6' : resolveThemeColor(line.strokeColor, '#374151');\n const width = line.strokeWidth;\n\n gfx.clear();\n const dash = getLineDash(line.lineStyle, width);\n if (dash) {\n const offset = line.lineStyle === 'dynamic' ? this._dynamicOffset : 0;\n const drawPts = line.closed ? [...pts, pts[0]] : pts;\n drawDashedPolyline(gfx, drawPts, dash, offset);\n gfx.stroke({ color, width, cap: 'round' as const });\n } else {\n gfx.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n gfx.lineTo(pts[i].x, pts[i].y);\n }\n if (line.closed) gfx.closePath();\n gfx.stroke({ color, width });\n }\n\n // Markers\n if (line.markerStart && line.markerStart !== 'none' && pts.length >= 2) {\n const angle = angleBetween(pts[1].x, pts[1].y, pts[0].x, pts[0].y);\n drawMarker(gfx, line.markerStart, pts[0].x, pts[0].y, angle, color);\n }\n if (line.markerEnd && line.markerEnd !== 'none' && pts.length >= 2) {\n const last = pts[pts.length - 1];\n const prev = pts[pts.length - 2];\n const angle = angleBetween(prev.x, prev.y, last.x, last.y);\n drawMarker(gfx, line.markerEnd, last.x, last.y, angle, color);\n }\n\n // Hit area\n hitArea.clear();\n hitArea.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n hitArea.lineTo(pts[i].x, pts[i].y);\n }\n hitArea.stroke({ color: '#000000', width: Math.max(width + 10, 14) });\n hitArea.alpha = 0.001;\n }\n\n destroy(): void {\n for (const [, display] of this.lines) {\n display.container.destroy({ children: true });\n }\n this.lines.clear();\n this.lineLayer.destroy({ children: true });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LineRenderer.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/LineRenderer.ts"],"sourcesContent":["import { Container, Graphics } from 'pixi.js';\nimport type { FlowLine } from '../types';\nimport { drawMarker, angleBetween } from '../edges/edgeMarkers';\nimport { drawDashedPolyline } from '../utils/dashedLine';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction getLineDash(style?: string, width = 2): number[] | undefined {\n if (!style || style === 'solid') return undefined;\n if (style === 'dynamic') return [width * 4, width * 3];\n if (style === 'dotted') return [width, width * 2];\n if (style === 'dashed') return [width * 3, width * 2];\n return undefined;\n}\n\ninterface LineDisplay {\n container: Container;\n gfx: Graphics;\n hitArea: Graphics;\n lineId: string;\n}\n\n/**\n * Renders independent FlowLine[] objects on the canvas.\n */\nexport class LineRenderer {\n private world: Container;\n private lineLayer: Container;\n private lines = new Map<string, LineDisplay>();\n private _dynamicOffset = 0;\n\n /** Call once per frame to advance the dynamic dash animation. */\n advanceAnimation(deltaMs: number): void {\n this._dynamicOffset = (this._dynamicOffset + deltaMs * 0.06) % 1000;\n }\n\n constructor(world: Container) {\n this.world = world;\n this.lineLayer = new Container({ label: 'lines', sortableChildren: true });\n // Lines on top of edges but below nodes\n this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));\n }\n\n sync(flowLines: FlowLine[], selectedIds: Set<string>): void {\n const seen = new Set<string>();\n\n for (const line of flowLines) {\n seen.add(line.id);\n let display = this.lines.get(line.id);\n if (!display) {\n display = this._create(line);\n this.lines.set(line.id, display);\n }\n this._update(display, line, selectedIds.has(line.id));\n }\n\n for (const [id, display] of this.lines) {\n if (!seen.has(id)) {\n this.lineLayer.removeChild(display.container);\n display.container.destroy({ children: true });\n this.lines.delete(id);\n }\n }\n }\n\n private _create(line: FlowLine): LineDisplay {\n const container = new Container({ label: `line-${line.id}` });\n\n const hitArea = new Graphics();\n hitArea.label = 'line-hitarea';\n hitArea.eventMode = 'static';\n hitArea.cursor = 'pointer';\n hitArea.alpha = 0.001;\n container.addChild(hitArea);\n\n const gfx = new Graphics();\n gfx.label = 'line-gfx';\n container.addChild(gfx);\n\n this.lineLayer.addChild(container);\n return { container, gfx, hitArea, lineId: line.id };\n }\n\n private _update(display: LineDisplay, line: FlowLine, selected: boolean): void {\n display.container.zIndex = line.zIndex ?? 0;\n const { gfx, hitArea } = display;\n const pts = line.points;\n if (pts.length < 2) return;\n\n const color = selected ? '#3b82f6' : resolveThemeColor(line.strokeColor, '#374151');\n const width = line.strokeWidth;\n\n gfx.clear();\n const dash = getLineDash(line.lineStyle, width);\n if (dash) {\n const offset = line.lineStyle === 'dynamic' ? this._dynamicOffset : 0;\n const drawPts = line.closed ? [...pts, pts[0]] : pts;\n drawDashedPolyline(gfx, drawPts, dash, offset);\n gfx.stroke({ color, width, cap: 'round' as const });\n } else {\n gfx.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n gfx.lineTo(pts[i].x, pts[i].y);\n }\n if (line.closed) gfx.closePath();\n gfx.stroke({ color, width });\n }\n\n // Markers\n if (line.markerStart && line.markerStart !== 'none' && pts.length >= 2) {\n const angle = angleBetween(pts[1].x, pts[1].y, pts[0].x, pts[0].y);\n drawMarker(gfx, line.markerStart, pts[0].x, pts[0].y, angle, color);\n }\n if (line.markerEnd && line.markerEnd !== 'none' && pts.length >= 2) {\n const last = pts[pts.length - 1];\n const prev = pts[pts.length - 2];\n const angle = angleBetween(prev.x, prev.y, last.x, last.y);\n drawMarker(gfx, line.markerEnd, last.x, last.y, angle, color);\n }\n\n // Hit area\n hitArea.clear();\n hitArea.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n hitArea.lineTo(pts[i].x, pts[i].y);\n }\n hitArea.stroke({ color: '#000000', width: Math.max(width + 10, 14) });\n hitArea.alpha = 0.001;\n }\n\n destroy(): void {\n for (const [, display] of this.lines) {\n display.container.destroy({ children: true });\n }\n this.lines.clear();\n this.lineLayer.destroy({ children: true });\n }\n}\n"],"mappings":"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"}
@@ -1,39 +1,37 @@
1
- function M(t, x = 8) {
2
- if (t.length < 3) return [...t];
3
- const e = [t[0]];
4
- for (let c = 0; c < t.length - 1; c++) {
5
- const y = t[Math.max(0, c - 1)], h = t[c], r = t[Math.min(t.length - 1, c + 1)], f = t[Math.min(t.length - 1, c + 2)];
6
- for (let l = 1; l <= x; l++) {
7
- const u = l / x, a = u * u, s = a * u, m = 0.5 * (2 * h.x + (-y.x + r.x) * u + (2 * y.x - 5 * h.x + 4 * r.x - f.x) * a + (-y.x + 3 * h.x - 3 * r.x + f.x) * s), g = 0.5 * (2 * h.y + (-y.y + r.y) * u + (2 * y.y - 5 * h.y + 4 * r.y - f.y) * a + (-y.y + 3 * h.y - 3 * r.y + f.y) * s);
8
- e.push({
9
- x: m,
10
- y: g
11
- });
12
- }
13
- }
14
- return e;
1
+ //#region src/components/pro/Flow/lines/lineSmoothing.ts
2
+ function e(e, t = 8) {
3
+ if (e.length < 3) return [...e];
4
+ let n = [e[0]];
5
+ for (let r = 0; r < e.length - 1; r++) {
6
+ let i = e[Math.max(0, r - 1)], a = e[r], o = e[Math.min(e.length - 1, r + 1)], s = e[Math.min(e.length - 1, r + 2)];
7
+ for (let e = 1; e <= t; e++) {
8
+ let r = e / t, c = r * r, l = c * r, u = .5 * (2 * a.x + (-i.x + o.x) * r + (2 * i.x - 5 * a.x + 4 * o.x - s.x) * c + (-i.x + 3 * a.x - 3 * o.x + s.x) * l), d = .5 * (2 * a.y + (-i.y + o.y) * r + (2 * i.y - 5 * a.y + 4 * o.y - s.y) * c + (-i.y + 3 * a.y - 3 * o.y + s.y) * l);
9
+ n.push({
10
+ x: u,
11
+ y: d
12
+ });
13
+ }
14
+ }
15
+ return n;
15
16
  }
16
- function n(t, x = 1.5) {
17
- if (t.length < 3) return [...t];
18
- let e = 0, c = 0;
19
- const y = t[0], h = t[t.length - 1];
20
- for (let r = 1; r < t.length - 1; r++) {
21
- const f = o(t[r], y, h);
22
- f > e && (e = f, c = r);
23
- }
24
- if (e > x) {
25
- const r = n(t.slice(0, c + 1), x), f = n(t.slice(c), x);
26
- return [...r.slice(0, -1), ...f];
27
- }
28
- return [y, h];
17
+ function t(e, r = 1.5) {
18
+ if (e.length < 3) return [...e];
19
+ let i = 0, a = 0, o = e[0], s = e[e.length - 1];
20
+ for (let t = 1; t < e.length - 1; t++) {
21
+ let r = n(e[t], o, s);
22
+ r > i && (i = r, a = t);
23
+ }
24
+ if (i > r) {
25
+ let n = t(e.slice(0, a + 1), r), i = t(e.slice(a), r);
26
+ return [...n.slice(0, -1), ...i];
27
+ }
28
+ return [o, s];
29
29
  }
30
- function o(t, x, e) {
31
- const c = e.x - x.x, y = e.y - x.y, h = c * c + y * y;
32
- return h === 0 ? Math.hypot(t.x - x.x, t.y - x.y) : Math.abs(y * t.x - c * t.y + e.x * x.y - e.y * x.x) / Math.sqrt(h);
30
+ function n(e, t, n) {
31
+ let r = n.x - t.x, i = n.y - t.y, a = r * r + i * i;
32
+ return a === 0 ? Math.hypot(e.x - t.x, e.y - t.y) : Math.abs(i * e.x - r * e.y + n.x * t.y - n.y * t.x) / Math.sqrt(a);
33
33
  }
34
- export {
35
- n as simplifyPath,
36
- M as smoothCatmullRom
37
- };
34
+ //#endregion
35
+ export { t as simplifyPath, e as smoothCatmullRom };
38
36
 
39
37
  //# sourceMappingURL=lineSmoothing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lineSmoothing.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/lineSmoothing.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Catmull-Rom spline interpolation for smoothing freehand lines.\n * Produces additional intermediate points between each pair of original points.\n */\nexport function smoothCatmullRom(points: Point[], segments = 8): Point[] {\n if (points.length < 3) return [...points];\n\n const result: Point[] = [points[0]];\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(0, i - 1)];\n const p1 = points[i];\n const p2 = points[Math.min(points.length - 1, i + 1)];\n const p3 = points[Math.min(points.length - 1, i + 2)];\n\n for (let t = 1; t <= segments; t++) {\n const f = t / segments;\n const f2 = f * f;\n const f3 = f2 * f;\n\n const x = 0.5 * (\n (2 * p1.x) +\n (-p0.x + p2.x) * f +\n (2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * f2 +\n (-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * f3\n );\n const y = 0.5 * (\n (2 * p1.y) +\n (-p0.y + p2.y) * f +\n (2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * f2 +\n (-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * f3\n );\n\n result.push({ x, y });\n }\n }\n\n return result;\n}\n\n/**\n * Douglas-Peucker simplification to reduce point count.\n */\nexport function simplifyPath(points: Point[], epsilon = 1.5): Point[] {\n if (points.length < 3) return [...points];\n\n let maxDist = 0;\n let maxIdx = 0;\n const first = points[0];\n const last = points[points.length - 1];\n\n for (let i = 1; i < points.length - 1; i++) {\n const d = perpendicularDistance(points[i], first, last);\n if (d > maxDist) {\n maxDist = d;\n maxIdx = i;\n }\n }\n\n if (maxDist > epsilon) {\n const left = simplifyPath(points.slice(0, maxIdx + 1), epsilon);\n const right = simplifyPath(points.slice(maxIdx), epsilon);\n return [...left.slice(0, -1), ...right];\n }\n\n return [first, last];\n}\n\nfunction perpendicularDistance(point: Point, lineStart: Point, lineEnd: Point): number {\n const dx = lineEnd.x - lineStart.x;\n const dy = lineEnd.y - lineStart.y;\n const lenSq = dx * dx + dy * dy;\n if (lenSq === 0) return Math.hypot(point.x - lineStart.x, point.y - lineStart.y);\n const num = Math.abs(dy * point.x - dx * point.y + lineEnd.x * lineStart.y - lineEnd.y * lineStart.x);\n return num / Math.sqrt(lenSq);\n}\n"],"mappings":"AASA,SAAgB,EAAiB,GAAiB,IAAW,GAAY;AACvE,MAAI,EAAO,SAAS,EAAG,QAAO,CAAC,GAAG,CAAM;AAExC,QAAM,IAAkB,CAAC,EAAO,CAAA,CAAE;AAElC,WAAS,IAAI,GAAG,IAAI,EAAO,SAAS,GAAG,KAAK;AAC1C,UAAM,IAAK,EAAO,KAAK,IAAI,GAAG,IAAI,CAAC,CAAA,GAC7B,IAAK,EAAO,CAAA,GACZ,IAAK,EAAO,KAAK,IAAI,EAAO,SAAS,GAAG,IAAI,CAAC,CAAA,GAC7C,IAAK,EAAO,KAAK,IAAI,EAAO,SAAS,GAAG,IAAI,CAAC,CAAA;AAEnD,aAAS,IAAI,GAAG,KAAK,GAAU,KAAK;AAClC,YAAM,IAAI,IAAI,GACR,IAAK,IAAI,GACT,IAAK,IAAK,GAEV,IAAI,OACP,IAAI,EAAG,KACP,CAAC,EAAG,IAAI,EAAG,KAAK,KAChB,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,KACzC,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,IAEnC,IAAI,OACP,IAAI,EAAG,KACP,CAAC,EAAG,IAAI,EAAG,KAAK,KAChB,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,KACzC,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK;AAGzC,MAAA,EAAO,KAAK;AAAA,QAAE,GAAA;AAAA,QAAG,GAAA;AAAA,MAAE,CAAC;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;AAKA,SAAgB,EAAa,GAAiB,IAAU,KAAc;AACpE,MAAI,EAAO,SAAS,EAAG,QAAO,CAAC,GAAG,CAAM;AAExC,MAAI,IAAU,GACV,IAAS;AACb,QAAM,IAAQ,EAAO,CAAA,GACf,IAAO,EAAO,EAAO,SAAS,CAAA;AAEpC,WAAS,IAAI,GAAG,IAAI,EAAO,SAAS,GAAG,KAAK;AAC1C,UAAM,IAAI,EAAsB,EAAO,CAAA,GAAI,GAAO,CAAI;AACtD,IAAI,IAAI,MACN,IAAU,GACV,IAAS;AAAA,EAEb;AAEA,MAAI,IAAU,GAAS;AACrB,UAAM,IAAO,EAAa,EAAO,MAAM,GAAG,IAAS,CAAC,GAAG,CAAO,GACxD,IAAQ,EAAa,EAAO,MAAM,CAAM,GAAG,CAAO;AACxD,WAAO,CAAC,GAAG,EAAK,MAAM,GAAG,EAAE,GAAG,GAAG,CAAK;AAAA,EACxC;AAEA,SAAO,CAAC,GAAO,CAAI;AACrB;AAEA,SAAS,EAAsB,GAAc,GAAkB,GAAwB;AACrF,QAAM,IAAK,EAAQ,IAAI,EAAU,GAC3B,IAAK,EAAQ,IAAI,EAAU,GAC3B,IAAQ,IAAK,IAAK,IAAK;AAC7B,SAAI,MAAU,IAAU,KAAK,MAAM,EAAM,IAAI,EAAU,GAAG,EAAM,IAAI,EAAU,CAAC,IACnE,KAAK,IAAI,IAAK,EAAM,IAAI,IAAK,EAAM,IAAI,EAAQ,IAAI,EAAU,IAAI,EAAQ,IAAI,EAAU,CAC5F,IAAM,KAAK,KAAK,CAAK;AAC9B"}
1
+ {"version":3,"file":"lineSmoothing.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/lineSmoothing.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Catmull-Rom spline interpolation for smoothing freehand lines.\n * Produces additional intermediate points between each pair of original points.\n */\nexport function smoothCatmullRom(points: Point[], segments = 8): Point[] {\n if (points.length < 3) return [...points];\n\n const result: Point[] = [points[0]];\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(0, i - 1)];\n const p1 = points[i];\n const p2 = points[Math.min(points.length - 1, i + 1)];\n const p3 = points[Math.min(points.length - 1, i + 2)];\n\n for (let t = 1; t <= segments; t++) {\n const f = t / segments;\n const f2 = f * f;\n const f3 = f2 * f;\n\n const x = 0.5 * (\n (2 * p1.x) +\n (-p0.x + p2.x) * f +\n (2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * f2 +\n (-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * f3\n );\n const y = 0.5 * (\n (2 * p1.y) +\n (-p0.y + p2.y) * f +\n (2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * f2 +\n (-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * f3\n );\n\n result.push({ x, y });\n }\n }\n\n return result;\n}\n\n/**\n * Douglas-Peucker simplification to reduce point count.\n */\nexport function simplifyPath(points: Point[], epsilon = 1.5): Point[] {\n if (points.length < 3) return [...points];\n\n let maxDist = 0;\n let maxIdx = 0;\n const first = points[0];\n const last = points[points.length - 1];\n\n for (let i = 1; i < points.length - 1; i++) {\n const d = perpendicularDistance(points[i], first, last);\n if (d > maxDist) {\n maxDist = d;\n maxIdx = i;\n }\n }\n\n if (maxDist > epsilon) {\n const left = simplifyPath(points.slice(0, maxIdx + 1), epsilon);\n const right = simplifyPath(points.slice(maxIdx), epsilon);\n return [...left.slice(0, -1), ...right];\n }\n\n return [first, last];\n}\n\nfunction perpendicularDistance(point: Point, lineStart: Point, lineEnd: Point): number {\n const dx = lineEnd.x - lineStart.x;\n const dy = lineEnd.y - lineStart.y;\n const lenSq = dx * dx + dy * dy;\n if (lenSq === 0) return Math.hypot(point.x - lineStart.x, point.y - lineStart.y);\n const num = Math.abs(dy * point.x - dx * point.y + lineEnd.x * lineStart.y - lineEnd.y * lineStart.x);\n return num / Math.sqrt(lenSq);\n}\n"],"mappings":";AASA,SAAgB,EAAiB,GAAiB,IAAW,GAAY;CACvE,IAAI,EAAO,SAAS,GAAG,OAAO,CAAC,GAAG,CAAM;CAExC,IAAM,IAAkB,CAAC,EAAO,EAAE;CAElC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,SAAS,GAAG,KAAK;EAC1C,IAAM,IAAK,EAAO,KAAK,IAAI,GAAG,IAAI,CAAC,IAC7B,IAAK,EAAO,IACZ,IAAK,EAAO,KAAK,IAAI,EAAO,SAAS,GAAG,IAAI,CAAC,IAC7C,IAAK,EAAO,KAAK,IAAI,EAAO,SAAS,GAAG,IAAI,CAAC;EAEnD,KAAK,IAAI,IAAI,GAAG,KAAK,GAAU,KAAK;GAClC,IAAM,IAAI,IAAI,GACR,IAAK,IAAI,GACT,IAAK,IAAK,GAEV,IAAI,MACP,IAAI,EAAG,KACP,CAAC,EAAG,IAAI,EAAG,KAAK,KAChB,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,KACzC,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,IAEnC,IAAI,MACP,IAAI,EAAG,KACP,CAAC,EAAG,IAAI,EAAG,KAAK,KAChB,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,KACzC,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK;GAGzC,EAAO,KAAK;IAAE;IAAG;GAAE,CAAC;EACtB;CACF;CAEA,OAAO;AACT;AAKA,SAAgB,EAAa,GAAiB,IAAU,KAAc;CACpE,IAAI,EAAO,SAAS,GAAG,OAAO,CAAC,GAAG,CAAM;CAExC,IAAI,IAAU,GACV,IAAS,GACP,IAAQ,EAAO,IACf,IAAO,EAAO,EAAO,SAAS;CAEpC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,SAAS,GAAG,KAAK;EAC1C,IAAM,IAAI,EAAsB,EAAO,IAAI,GAAO,CAAI;EACtD,AAAI,IAAI,MACN,IAAU,GACV,IAAS;CAEb;CAEA,IAAI,IAAU,GAAS;EACrB,IAAM,IAAO,EAAa,EAAO,MAAM,GAAG,IAAS,CAAC,GAAG,CAAO,GACxD,IAAQ,EAAa,EAAO,MAAM,CAAM,GAAG,CAAO;EACxD,OAAO,CAAC,GAAG,EAAK,MAAM,GAAG,EAAE,GAAG,GAAG,CAAK;CACxC;CAEA,OAAO,CAAC,GAAO,CAAI;AACrB;AAEA,SAAS,EAAsB,GAAc,GAAkB,GAAwB;CACrF,IAAM,IAAK,EAAQ,IAAI,EAAU,GAC3B,IAAK,EAAQ,IAAI,EAAU,GAC3B,IAAQ,IAAK,IAAK,IAAK;CAG7B,OAFI,MAAU,IAAU,KAAK,MAAM,EAAM,IAAI,EAAU,GAAG,EAAM,IAAI,EAAU,CAAC,IACnE,KAAK,IAAI,IAAK,EAAM,IAAI,IAAK,EAAM,IAAI,EAAQ,IAAI,EAAU,IAAI,EAAQ,IAAI,EAAU,CAC5F,IAAM,KAAK,KAAK,CAAK;AAC9B"}