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 +1 @@
1
- {"version":3,"file":"useResizablePanel.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useResizablePanel.ts"],"sourcesContent":["import { useState, useRef, useCallback, type PointerEvent as ReactPointerEvent } from 'react';\n\nexport type ResizeEdge = 'left' | 'right';\n\n/**\n * Enables horizontal width resizing for an overlay panel by dragging its edge.\n * Returns a width override (null = use CSS default), and props to spread onto\n * a resize-handle element placed on the panel's resize edge.\n */\nexport function useResizablePanel(edge: ResizeEdge, defaultWidth: number, minWidth = 120, maxWidth = 600) {\n const [width, setWidth] = useState<number | null>(null);\n const dragState = useRef<{ startX: number; startWidth: number } | null>(null);\n\n const onPointerDown = useCallback((e: ReactPointerEvent<HTMLElement>) => {\n e.preventDefault();\n e.stopPropagation();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n const panel = (e.currentTarget as HTMLElement).closest('[data-flow-panel]') as HTMLElement | null;\n const startWidth = panel ? panel.getBoundingClientRect().width : (width ?? defaultWidth);\n dragState.current = { startX: e.clientX, startWidth };\n }, [width, defaultWidth]);\n\n const onPointerMove = useCallback((e: ReactPointerEvent<HTMLElement>) => {\n if (!dragState.current) return;\n const dx = e.clientX - dragState.current.startX;\n const dir = edge === 'right' ? 1 : -1;\n const newWidth = Math.max(minWidth, Math.min(maxWidth, dragState.current.startWidth + dx * dir));\n setWidth(newWidth);\n }, [edge, minWidth, maxWidth]);\n\n const onPointerUp = useCallback(() => {\n dragState.current = null;\n }, []);\n\n return {\n panelWidth: width ?? defaultWidth,\n resizeHandleProps: { onPointerDown, onPointerMove, onPointerUp },\n };\n}\n"],"mappings":";AASA,SAAgB,EAAkB,GAAkB,GAAsB,IAAW,KAAK,IAAW,KAAK;AACxG,QAAM,CAAC,GAAO,CAAA,IAAY,EAAwB,IAAI,GAChD,IAAY,EAAsD,IAAI,GAEtE,IAAgB,EAAA,CAAa,MAAsC;AACvE,IAAA,EAAE,eAAe,GACjB,EAAE,gBAAgB,GAClB,EAAG,OAAuB,kBAAkB,EAAE,SAAS;AACvD,UAAM,IAAS,EAAE,cAA8B,QAAQ,mBAAmB,GACpE,IAAa,IAAQ,EAAM,sBAAsB,EAAE,QAAS,KAAS;AAC3E,IAAA,EAAU,UAAU;AAAA,MAAE,QAAQ,EAAE;AAAA,MAAS,YAAA;AAAA,IAAW;AAAA,EACtD,GAAG,CAAC,GAAO,CAAY,CAAC,GAElB,IAAgB,EAAA,CAAa,MAAsC;AACvE,QAAI,CAAC,EAAU,QAAS;AACxB,UAAM,IAAK,EAAE,UAAU,EAAU,QAAQ,QACnC,IAAM,MAAS,UAAU,IAAI,IAC7B,IAAW,KAAK,IAAI,GAAU,KAAK,IAAI,GAAU,EAAU,QAAQ,aAAa,IAAK,CAAG,CAAC;AAC/F,IAAA,EAAS,CAAQ;AAAA,EACnB,GAAG;AAAA,IAAC;AAAA,IAAM;AAAA,IAAU;AAAA,EAAQ,CAAC,GAEvB,IAAc,EAAA,MAAkB;AACpC,IAAA,EAAU,UAAU;AAAA,EACtB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,YAAY,KAAS;AAAA,IACrB,mBAAmB;AAAA,MAAE,eAAA;AAAA,MAAe,eAAA;AAAA,MAAe,aAAA;AAAA,IAAY;AAAA,EACjE;AACF"}
1
+ {"version":3,"file":"useResizablePanel.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useResizablePanel.ts"],"sourcesContent":["import { useState, useRef, useCallback, type PointerEvent as ReactPointerEvent } from 'react';\n\nexport type ResizeEdge = 'left' | 'right';\n\n/**\n * Enables horizontal width resizing for an overlay panel by dragging its edge.\n * Returns a width override (null = use CSS default), and props to spread onto\n * a resize-handle element placed on the panel's resize edge.\n */\nexport function useResizablePanel(edge: ResizeEdge, defaultWidth: number, minWidth = 120, maxWidth = 600) {\n const [width, setWidth] = useState<number | null>(null);\n const dragState = useRef<{ startX: number; startWidth: number } | null>(null);\n\n const onPointerDown = useCallback((e: ReactPointerEvent<HTMLElement>) => {\n e.preventDefault();\n e.stopPropagation();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n const panel = (e.currentTarget as HTMLElement).closest('[data-flow-panel]') as HTMLElement | null;\n const startWidth = panel ? panel.getBoundingClientRect().width : (width ?? defaultWidth);\n dragState.current = { startX: e.clientX, startWidth };\n }, [width, defaultWidth]);\n\n const onPointerMove = useCallback((e: ReactPointerEvent<HTMLElement>) => {\n if (!dragState.current) return;\n const dx = e.clientX - dragState.current.startX;\n const dir = edge === 'right' ? 1 : -1;\n const newWidth = Math.max(minWidth, Math.min(maxWidth, dragState.current.startWidth + dx * dir));\n setWidth(newWidth);\n }, [edge, minWidth, maxWidth]);\n\n const onPointerUp = useCallback(() => {\n dragState.current = null;\n }, []);\n\n return {\n panelWidth: width ?? defaultWidth,\n resizeHandleProps: { onPointerDown, onPointerMove, onPointerUp },\n };\n}\n"],"mappings":";;AASA,SAAgB,EAAkB,GAAkB,GAAsB,IAAW,KAAK,IAAW,KAAK;CACxG,IAAM,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,IAAY,EAAsD,IAAI,GAEtE,IAAgB,GAAa,MAAsC;EAGvE,AAFA,EAAE,eAAe,GACjB,EAAE,gBAAgB,GAClB,EAAG,OAAuB,kBAAkB,EAAE,SAAS;EACvD,IAAM,IAAS,EAAE,cAA8B,QAAQ,mBAAmB,GACpE,IAAa,IAAQ,EAAM,sBAAsB,CAAC,CAAC,QAAS,KAAS;EAC3E,EAAU,UAAU;GAAE,QAAQ,EAAE;GAAS;EAAW;CACtD,GAAG,CAAC,GAAO,CAAY,CAAC,GAElB,IAAgB,GAAa,MAAsC;EACvE,IAAI,CAAC,EAAU,SAAS;EACxB,IAAM,IAAK,EAAE,UAAU,EAAU,QAAQ,QACnC,IAAM,MAAS,UAAU,IAAI,IAC7B,IAAW,KAAK,IAAI,GAAU,KAAK,IAAI,GAAU,EAAU,QAAQ,aAAa,IAAK,CAAG,CAAC;EAC/F,EAAS,CAAQ;CACnB,GAAG;EAAC;EAAM;EAAU;CAAQ,CAAC,GAEvB,IAAc,QAAkB;EACpC,EAAU,UAAU;CACtB,GAAG,CAAC,CAAC;CAEL,OAAO;EACL,YAAY,KAAS;EACrB,mBAAmB;GAAE;GAAe;GAAe;EAAY;CACjE;AACF"}
@@ -1,74 +1,74 @@
1
- import { useFlowContext as i } from "../context/FlowContext.js";
1
+ import { useFlowContext as e } from "../context/FlowContext.js";
2
2
  import { useCallback as t } from "react";
3
- var o = /* @__PURE__ */ new Set();
3
+ //#region src/components/pro/Flow/hooks/useSelection.ts
4
+ var n = /* @__PURE__ */ new Set();
4
5
  function r() {
5
- const { selection: n, setSelection: l, currentCanvas: c } = i();
6
- return {
7
- selection: n,
8
- selectNode: t((e, d = !1) => {
9
- l((s) => {
10
- const I = new Set(d ? s.nodeIds : []);
11
- return I.add(e), {
12
- nodeIds: I,
13
- edgeIds: d ? s.edgeIds : o,
14
- lineIds: d ? s.lineIds : o
15
- };
16
- });
17
- }, [l]),
18
- selectEdge: t((e, d = !1) => {
19
- l((s) => {
20
- const I = new Set(d ? s.edgeIds : []);
21
- return I.add(e), {
22
- nodeIds: d ? s.nodeIds : o,
23
- edgeIds: I,
24
- lineIds: d ? s.lineIds : o
25
- };
26
- });
27
- }, [l]),
28
- selectLine: t((e, d = !1) => {
29
- l((s) => {
30
- const I = new Set(d ? s.lineIds : []);
31
- return I.add(e), {
32
- nodeIds: d ? s.nodeIds : o,
33
- edgeIds: d ? s.edgeIds : o,
34
- lineIds: I
35
- };
36
- });
37
- }, [l]),
38
- selectMultipleNodes: t((e) => {
39
- l({
40
- nodeIds: new Set(e),
41
- edgeIds: o,
42
- lineIds: o
43
- });
44
- }, [l]),
45
- clearSelection: t(() => {
46
- l({
47
- nodeIds: o,
48
- edgeIds: o,
49
- lineIds: o
50
- });
51
- }, [l]),
52
- toggleNode: t((e) => {
53
- l((d) => {
54
- const s = new Set(d.nodeIds);
55
- return s.has(e) ? s.delete(e) : s.add(e), {
56
- ...d,
57
- nodeIds: s
58
- };
59
- });
60
- }, [l]),
61
- isNodeSelected: t((e) => n.nodeIds.has(e), [n.nodeIds]),
62
- isEdgeSelected: t((e) => n.edgeIds.has(e), [n.edgeIds]),
63
- isLineSelected: t((e) => n.lineIds.has(e), [n.lineIds]),
64
- selectedNodes: c.nodes.filter((e) => n.nodeIds.has(e.id)),
65
- selectedEdges: c.edges.filter((e) => n.edgeIds.has(e.id)),
66
- selectedLines: c.lines.filter((e) => n.lineIds.has(e.id)),
67
- hasSelection: n.nodeIds.size > 0 || n.edgeIds.size > 0 || n.lineIds.size > 0
68
- };
6
+ let { selection: r, setSelection: i, currentCanvas: a } = e();
7
+ return {
8
+ selection: r,
9
+ selectNode: t((e, t = !1) => {
10
+ i((r) => {
11
+ let i = new Set(t ? r.nodeIds : []);
12
+ return i.add(e), {
13
+ nodeIds: i,
14
+ edgeIds: t ? r.edgeIds : n,
15
+ lineIds: t ? r.lineIds : n
16
+ };
17
+ });
18
+ }, [i]),
19
+ selectEdge: t((e, t = !1) => {
20
+ i((r) => {
21
+ let i = new Set(t ? r.edgeIds : []);
22
+ return i.add(e), {
23
+ nodeIds: t ? r.nodeIds : n,
24
+ edgeIds: i,
25
+ lineIds: t ? r.lineIds : n
26
+ };
27
+ });
28
+ }, [i]),
29
+ selectLine: t((e, t = !1) => {
30
+ i((r) => {
31
+ let i = new Set(t ? r.lineIds : []);
32
+ return i.add(e), {
33
+ nodeIds: t ? r.nodeIds : n,
34
+ edgeIds: t ? r.edgeIds : n,
35
+ lineIds: i
36
+ };
37
+ });
38
+ }, [i]),
39
+ selectMultipleNodes: t((e) => {
40
+ i({
41
+ nodeIds: new Set(e),
42
+ edgeIds: n,
43
+ lineIds: n
44
+ });
45
+ }, [i]),
46
+ clearSelection: t(() => {
47
+ i({
48
+ nodeIds: n,
49
+ edgeIds: n,
50
+ lineIds: n
51
+ });
52
+ }, [i]),
53
+ toggleNode: t((e) => {
54
+ i((t) => {
55
+ let n = new Set(t.nodeIds);
56
+ return n.has(e) ? n.delete(e) : n.add(e), {
57
+ ...t,
58
+ nodeIds: n
59
+ };
60
+ });
61
+ }, [i]),
62
+ isNodeSelected: t((e) => r.nodeIds.has(e), [r.nodeIds]),
63
+ isEdgeSelected: t((e) => r.edgeIds.has(e), [r.edgeIds]),
64
+ isLineSelected: t((e) => r.lineIds.has(e), [r.lineIds]),
65
+ selectedNodes: a.nodes.filter((e) => r.nodeIds.has(e.id)),
66
+ selectedEdges: a.edges.filter((e) => r.edgeIds.has(e.id)),
67
+ selectedLines: a.lines.filter((e) => r.lineIds.has(e.id)),
68
+ hasSelection: r.nodeIds.size > 0 || r.edgeIds.size > 0 || r.lineIds.size > 0
69
+ };
69
70
  }
70
- export {
71
- r as useSelection
72
- };
71
+ //#endregion
72
+ export { r as useSelection };
73
73
 
74
74
  //# sourceMappingURL=useSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSelection.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useSelection.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { useFlowContext } from '../context/FlowContext';\nimport type { SelectionState } from '../types';\n\nconst EMPTY_SET = new Set<string>();\n\nexport function useSelection() {\n const { selection, setSelection, currentCanvas } = useFlowContext();\n\n const selectNode = useCallback(\n (id: string, additive = false) => {\n setSelection(prev => {\n const nodeIds = new Set(additive ? prev.nodeIds : []);\n nodeIds.add(id);\n return { nodeIds, edgeIds: additive ? prev.edgeIds : EMPTY_SET, lineIds: additive ? prev.lineIds : EMPTY_SET };\n });\n },\n [setSelection],\n );\n\n const selectEdge = useCallback(\n (id: string, additive = false) => {\n setSelection(prev => {\n const edgeIds = new Set(additive ? prev.edgeIds : []);\n edgeIds.add(id);\n return { nodeIds: additive ? prev.nodeIds : EMPTY_SET, edgeIds, lineIds: additive ? prev.lineIds : EMPTY_SET };\n });\n },\n [setSelection],\n );\n\n const selectLine = useCallback(\n (id: string, additive = false) => {\n setSelection(prev => {\n const lineIds = new Set(additive ? prev.lineIds : []);\n lineIds.add(id);\n return { nodeIds: additive ? prev.nodeIds : EMPTY_SET, edgeIds: additive ? prev.edgeIds : EMPTY_SET, lineIds };\n });\n },\n [setSelection],\n );\n\n const selectMultipleNodes = useCallback(\n (ids: string[]) => {\n setSelection({ nodeIds: new Set(ids), edgeIds: EMPTY_SET, lineIds: EMPTY_SET });\n },\n [setSelection],\n );\n\n const clearSelection = useCallback(() => {\n setSelection({ nodeIds: EMPTY_SET, edgeIds: EMPTY_SET, lineIds: EMPTY_SET });\n }, [setSelection]);\n\n const toggleNode = useCallback(\n (id: string) => {\n setSelection(prev => {\n const nodeIds = new Set(prev.nodeIds);\n if (nodeIds.has(id)) nodeIds.delete(id);\n else nodeIds.add(id);\n return { ...prev, nodeIds };\n });\n },\n [setSelection],\n );\n\n const isNodeSelected = useCallback(\n (id: string) => selection.nodeIds.has(id),\n [selection.nodeIds],\n );\n\n const isEdgeSelected = useCallback(\n (id: string) => selection.edgeIds.has(id),\n [selection.edgeIds],\n );\n\n const isLineSelected = useCallback(\n (id: string) => selection.lineIds.has(id),\n [selection.lineIds],\n );\n\n const selectedNodes = currentCanvas.nodes.filter(n => selection.nodeIds.has(n.id));\n const selectedEdges = currentCanvas.edges.filter(e => selection.edgeIds.has(e.id));\n const selectedLines = currentCanvas.lines.filter(l => selection.lineIds.has(l.id));\n\n const hasSelection = selection.nodeIds.size > 0 || selection.edgeIds.size > 0 || selection.lineIds.size > 0;\n\n return {\n selection,\n selectNode,\n selectEdge,\n selectLine,\n selectMultipleNodes,\n clearSelection,\n toggleNode,\n isNodeSelected,\n isEdgeSelected,\n isLineSelected,\n selectedNodes,\n selectedEdges,\n selectedLines,\n hasSelection,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSelection.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useSelection.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { useFlowContext } from '../context/FlowContext';\nimport type { SelectionState } from '../types';\n\nconst EMPTY_SET = new Set<string>();\n\nexport function useSelection() {\n const { selection, setSelection, currentCanvas } = useFlowContext();\n\n const selectNode = useCallback(\n (id: string, additive = false) => {\n setSelection(prev => {\n const nodeIds = new Set(additive ? prev.nodeIds : []);\n nodeIds.add(id);\n return { nodeIds, edgeIds: additive ? prev.edgeIds : EMPTY_SET, lineIds: additive ? prev.lineIds : EMPTY_SET };\n });\n },\n [setSelection],\n );\n\n const selectEdge = useCallback(\n (id: string, additive = false) => {\n setSelection(prev => {\n const edgeIds = new Set(additive ? prev.edgeIds : []);\n edgeIds.add(id);\n return { nodeIds: additive ? prev.nodeIds : EMPTY_SET, edgeIds, lineIds: additive ? prev.lineIds : EMPTY_SET };\n });\n },\n [setSelection],\n );\n\n const selectLine = useCallback(\n (id: string, additive = false) => {\n setSelection(prev => {\n const lineIds = new Set(additive ? prev.lineIds : []);\n lineIds.add(id);\n return { nodeIds: additive ? prev.nodeIds : EMPTY_SET, edgeIds: additive ? prev.edgeIds : EMPTY_SET, lineIds };\n });\n },\n [setSelection],\n );\n\n const selectMultipleNodes = useCallback(\n (ids: string[]) => {\n setSelection({ nodeIds: new Set(ids), edgeIds: EMPTY_SET, lineIds: EMPTY_SET });\n },\n [setSelection],\n );\n\n const clearSelection = useCallback(() => {\n setSelection({ nodeIds: EMPTY_SET, edgeIds: EMPTY_SET, lineIds: EMPTY_SET });\n }, [setSelection]);\n\n const toggleNode = useCallback(\n (id: string) => {\n setSelection(prev => {\n const nodeIds = new Set(prev.nodeIds);\n if (nodeIds.has(id)) nodeIds.delete(id);\n else nodeIds.add(id);\n return { ...prev, nodeIds };\n });\n },\n [setSelection],\n );\n\n const isNodeSelected = useCallback(\n (id: string) => selection.nodeIds.has(id),\n [selection.nodeIds],\n );\n\n const isEdgeSelected = useCallback(\n (id: string) => selection.edgeIds.has(id),\n [selection.edgeIds],\n );\n\n const isLineSelected = useCallback(\n (id: string) => selection.lineIds.has(id),\n [selection.lineIds],\n );\n\n const selectedNodes = currentCanvas.nodes.filter(n => selection.nodeIds.has(n.id));\n const selectedEdges = currentCanvas.edges.filter(e => selection.edgeIds.has(e.id));\n const selectedLines = currentCanvas.lines.filter(l => selection.lineIds.has(l.id));\n\n const hasSelection = selection.nodeIds.size > 0 || selection.edgeIds.size > 0 || selection.lineIds.size > 0;\n\n return {\n selection,\n selectNode,\n selectEdge,\n selectLine,\n selectMultipleNodes,\n clearSelection,\n toggleNode,\n isNodeSelected,\n isEdgeSelected,\n isLineSelected,\n selectedNodes,\n selectedEdges,\n selectedLines,\n hasSelection,\n };\n}\n"],"mappings":";;;AAIA,IAAM,oBAAY,IAAI,IAAY;AAElC,SAAgB,IAAe;CAC7B,IAAM,EAAE,cAAW,iBAAc,qBAAkB,EAAe;CA+ElE,OAAO;EACL;EACA,YA/EiB,GAChB,GAAY,IAAW,OAAU;GAChC,GAAa,MAAQ;IACnB,IAAM,IAAU,IAAI,IAAI,IAAW,EAAK,UAAU,CAAC,CAAC;IAEpD,OADA,EAAQ,IAAI,CAAE,GACP;KAAE;KAAS,SAAS,IAAW,EAAK,UAAU;KAAW,SAAS,IAAW,EAAK,UAAU;IAAU;GAC/G,CAAC;EACH,GACA,CAAC,CAAY,CAuEb;EACA,YArEiB,GAChB,GAAY,IAAW,OAAU;GAChC,GAAa,MAAQ;IACnB,IAAM,IAAU,IAAI,IAAI,IAAW,EAAK,UAAU,CAAC,CAAC;IAEpD,OADA,EAAQ,IAAI,CAAE,GACP;KAAE,SAAS,IAAW,EAAK,UAAU;KAAW;KAAS,SAAS,IAAW,EAAK,UAAU;IAAU;GAC/G,CAAC;EACH,GACA,CAAC,CAAY,CA6Db;EACA,YA3DiB,GAChB,GAAY,IAAW,OAAU;GAChC,GAAa,MAAQ;IACnB,IAAM,IAAU,IAAI,IAAI,IAAW,EAAK,UAAU,CAAC,CAAC;IAEpD,OADA,EAAQ,IAAI,CAAE,GACP;KAAE,SAAS,IAAW,EAAK,UAAU;KAAW,SAAS,IAAW,EAAK,UAAU;KAAW;IAAQ;GAC/G,CAAC;EACH,GACA,CAAC,CAAY,CAmDb;EACA,qBAjD0B,GACzB,MAAkB;GACjB,EAAa;IAAE,SAAS,IAAI,IAAI,CAAG;IAAG,SAAS;IAAW,SAAS;GAAU,CAAC;EAChF,GACA,CAAC,CAAY,CA6Cb;EACA,gBA3CqB,QAAkB;GACvC,EAAa;IAAE,SAAS;IAAW,SAAS;IAAW,SAAS;GAAU,CAAC;EAC7E,GAAG,CAAC,CAAY,CAyCd;EACA,YAxCiB,GAChB,MAAe;GACd,GAAa,MAAQ;IACnB,IAAM,IAAU,IAAI,IAAI,EAAK,OAAO;IAGpC,OAFI,EAAQ,IAAI,CAAE,IAAG,EAAQ,OAAO,CAAE,IACjC,EAAQ,IAAI,CAAE,GACZ;KAAE,GAAG;KAAM;IAAQ;GAC5B,CAAC;EACH,GACA,CAAC,CAAY,CA+Bb;EACA,gBA7BqB,GACpB,MAAe,EAAU,QAAQ,IAAI,CAAE,GACxC,CAAC,EAAU,OAAO,CA2BlB;EACA,gBAzBqB,GACpB,MAAe,EAAU,QAAQ,IAAI,CAAE,GACxC,CAAC,EAAU,OAAO,CAuBlB;EACA,gBArBqB,GACpB,MAAe,EAAU,QAAQ,IAAI,CAAE,GACxC,CAAC,EAAU,OAAO,CAmBlB;EACA,eAjBoB,EAAc,MAAM,QAAO,MAAK,EAAU,QAAQ,IAAI,EAAE,EAAE,CAiB9E;EACA,eAjBoB,EAAc,MAAM,QAAO,MAAK,EAAU,QAAQ,IAAI,EAAE,EAAE,CAiB9E;EACA,eAjBoB,EAAc,MAAM,QAAO,MAAK,EAAU,QAAQ,IAAI,EAAE,EAAE,CAiB9E;EACA,cAhBmB,EAAU,QAAQ,OAAO,KAAK,EAAU,QAAQ,OAAO,KAAK,EAAU,QAAQ,OAAO;CAiB1G;AACF"}
@@ -1,30 +1,30 @@
1
- import { useCallback as o, useRef as f } from "react";
2
- var l = 50, p = 300;
3
- function d(i, t) {
4
- const r = f([]), u = f([]), s = f(0), c = f(!1), h = o((e) => {
5
- const n = Date.now();
6
- n - s.current < p && r.current.length > 0 ? r.current[r.current.length - 1] = e : (r.current.push(e), r.current.length > l && r.current.shift()), s.current = n, u.current = [];
7
- }, []);
8
- return {
9
- wrappedSetDoc: o((e) => {
10
- t((n) => (c.current || h(n), c.current = !1, typeof e == "function" ? e(n) : e));
11
- }, [t, h]),
12
- undo: o(() => {
13
- if (r.current.length === 0) return;
14
- const e = r.current.pop();
15
- t((n) => (u.current.push(n), e)), c.current = !0;
16
- }, [t]),
17
- redo: o(() => {
18
- if (u.current.length === 0) return;
19
- const e = u.current.pop();
20
- t((n) => (r.current.push(n), e)), c.current = !0;
21
- }, [t]),
22
- canUndo: r.current.length > 0,
23
- canRedo: u.current.length > 0
24
- };
1
+ import { useCallback as e, useRef as t } from "react";
2
+ //#region src/components/pro/Flow/hooks/useUndoRedo.ts
3
+ var n = 50, r = 300;
4
+ function i(i, a) {
5
+ let o = t([]), s = t([]), c = t(0), l = t(!1), u = e((e) => {
6
+ let t = Date.now();
7
+ t - c.current < r && o.current.length > 0 ? o.current[o.current.length - 1] = e : (o.current.push(e), o.current.length > n && o.current.shift()), c.current = t, s.current = [];
8
+ }, []);
9
+ return {
10
+ wrappedSetDoc: e((e) => {
11
+ a((t) => (l.current || u(t), l.current = !1, typeof e == "function" ? e(t) : e));
12
+ }, [a, u]),
13
+ undo: e(() => {
14
+ if (o.current.length === 0) return;
15
+ let e = o.current.pop();
16
+ a((t) => (s.current.push(t), e)), l.current = !0;
17
+ }, [a]),
18
+ redo: e(() => {
19
+ if (s.current.length === 0) return;
20
+ let e = s.current.pop();
21
+ a((t) => (o.current.push(t), e)), l.current = !0;
22
+ }, [a]),
23
+ canUndo: o.current.length > 0,
24
+ canRedo: s.current.length > 0
25
+ };
25
26
  }
26
- export {
27
- d as useUndoRedo
28
- };
27
+ //#endregion
28
+ export { i as useUndoRedo };
29
29
 
30
30
  //# sourceMappingURL=useUndoRedo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useUndoRedo.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useUndoRedo.ts"],"sourcesContent":["import { useRef, useCallback, useEffect } from 'react';\nimport type { FlowDocument } from '../types';\n\nconst MAX_HISTORY = 50;\nconst COALESCE_MS = 300;\n\n/**\n * Time-coalesced undo/redo for FlowDocument.\n * Wraps setDoc to automatically capture history snapshots.\n */\nexport function useUndoRedo(\n doc: FlowDocument,\n setDoc: React.Dispatch<React.SetStateAction<FlowDocument>>,\n) {\n const historyRef = useRef<FlowDocument[]>([]);\n const futureRef = useRef<FlowDocument[]>([]);\n const lastPushRef = useRef(0);\n const skipRef = useRef(false);\n\n // Push to history with time coalescing\n const pushHistory = useCallback((snapshot: FlowDocument) => {\n const now = Date.now();\n if (now - lastPushRef.current < COALESCE_MS && historyRef.current.length > 0) {\n historyRef.current[historyRef.current.length - 1] = snapshot;\n } else {\n historyRef.current.push(snapshot);\n if (historyRef.current.length > MAX_HISTORY) {\n historyRef.current.shift();\n }\n }\n lastPushRef.current = now;\n futureRef.current = [];\n }, []);\n\n // Wrap setDoc to record history\n const wrappedSetDoc: React.Dispatch<React.SetStateAction<FlowDocument>> = useCallback(\n (action) => {\n setDoc(prev => {\n if (!skipRef.current) {\n pushHistory(prev);\n }\n skipRef.current = false;\n return typeof action === 'function' ? action(prev) : action;\n });\n },\n [setDoc, pushHistory],\n );\n\n const undo = useCallback(() => {\n if (historyRef.current.length === 0) return;\n const prev = historyRef.current.pop()!;\n setDoc(current => {\n futureRef.current.push(current);\n return prev;\n });\n skipRef.current = true;\n }, [setDoc]);\n\n const redo = useCallback(() => {\n if (futureRef.current.length === 0) return;\n const next = futureRef.current.pop()!;\n setDoc(current => {\n historyRef.current.push(current);\n return next;\n });\n skipRef.current = true;\n }, [setDoc]);\n\n const canUndo = historyRef.current.length > 0;\n const canRedo = futureRef.current.length > 0;\n\n return { wrappedSetDoc, undo, redo, canUndo, canRedo };\n}\n"],"mappings":";AAGA,IAAM,IAAc,IACd,IAAc;AAMpB,SAAgB,EACd,GACA,GACA;AACA,QAAM,IAAa,EAAuB,CAAC,CAAC,GACtC,IAAY,EAAuB,CAAC,CAAC,GACrC,IAAc,EAAO,CAAC,GACtB,IAAU,EAAO,EAAK,GAGtB,IAAc,EAAA,CAAa,MAA2B;AAC1D,UAAM,IAAM,KAAK,IAAI;AACrB,IAAI,IAAM,EAAY,UAAU,KAAe,EAAW,QAAQ,SAAS,IACzE,EAAW,QAAQ,EAAW,QAAQ,SAAS,CAAA,IAAK,KAEpD,EAAW,QAAQ,KAAK,CAAQ,GAC5B,EAAW,QAAQ,SAAS,KAC9B,EAAW,QAAQ,MAAM,IAG7B,EAAY,UAAU,GACtB,EAAU,UAAU,CAAC;AAAA,EACvB,GAAG,CAAC,CAAC;AAuCL,SAAO;AAAA,IAAE,eApCiE,EAAA,CACvE,MAAW;AACV,MAAA,EAAA,CAAO,OACA,EAAQ,WACX,EAAY,CAAI,GAElB,EAAQ,UAAU,IACX,OAAO,KAAW,aAAa,EAAO,CAAI,IAAI,EACtD;AAAA,IACH,GACA,CAAC,GAAQ,CAAW,CA0Bb;AAAA,IAAe,MAvBX,EAAA,MAAkB;AAC7B,UAAI,EAAW,QAAQ,WAAW,EAAG;AACrC,YAAM,IAAO,EAAW,QAAQ,IAAI;AACpC,MAAA,EAAA,CAAO,OACL,EAAU,QAAQ,KAAK,CAAO,GACvB,EACR,GACD,EAAQ,UAAU;AAAA,IACpB,GAAG,CAAC,CAAM,CAec;AAAA,IAAM,MAbjB,EAAA,MAAkB;AAC7B,UAAI,EAAU,QAAQ,WAAW,EAAG;AACpC,YAAM,IAAO,EAAU,QAAQ,IAAI;AACnC,MAAA,EAAA,CAAO,OACL,EAAW,QAAQ,KAAK,CAAO,GACxB,EACR,GACD,EAAQ,UAAU;AAAA,IACpB,GAAG,CAAC,CAAM,CAKoB;AAAA,IAAM,SAHpB,EAAW,QAAQ,SAAS;AAAA,IAGC,SAF7B,EAAU,QAAQ,SAAS;AAAA,EAEU;AACvD"}
1
+ {"version":3,"file":"useUndoRedo.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useUndoRedo.ts"],"sourcesContent":["import { useRef, useCallback, useEffect } from 'react';\nimport type { FlowDocument } from '../types';\n\nconst MAX_HISTORY = 50;\nconst COALESCE_MS = 300;\n\n/**\n * Time-coalesced undo/redo for FlowDocument.\n * Wraps setDoc to automatically capture history snapshots.\n */\nexport function useUndoRedo(\n doc: FlowDocument,\n setDoc: React.Dispatch<React.SetStateAction<FlowDocument>>,\n) {\n const historyRef = useRef<FlowDocument[]>([]);\n const futureRef = useRef<FlowDocument[]>([]);\n const lastPushRef = useRef(0);\n const skipRef = useRef(false);\n\n // Push to history with time coalescing\n const pushHistory = useCallback((snapshot: FlowDocument) => {\n const now = Date.now();\n if (now - lastPushRef.current < COALESCE_MS && historyRef.current.length > 0) {\n historyRef.current[historyRef.current.length - 1] = snapshot;\n } else {\n historyRef.current.push(snapshot);\n if (historyRef.current.length > MAX_HISTORY) {\n historyRef.current.shift();\n }\n }\n lastPushRef.current = now;\n futureRef.current = [];\n }, []);\n\n // Wrap setDoc to record history\n const wrappedSetDoc: React.Dispatch<React.SetStateAction<FlowDocument>> = useCallback(\n (action) => {\n setDoc(prev => {\n if (!skipRef.current) {\n pushHistory(prev);\n }\n skipRef.current = false;\n return typeof action === 'function' ? action(prev) : action;\n });\n },\n [setDoc, pushHistory],\n );\n\n const undo = useCallback(() => {\n if (historyRef.current.length === 0) return;\n const prev = historyRef.current.pop()!;\n setDoc(current => {\n futureRef.current.push(current);\n return prev;\n });\n skipRef.current = true;\n }, [setDoc]);\n\n const redo = useCallback(() => {\n if (futureRef.current.length === 0) return;\n const next = futureRef.current.pop()!;\n setDoc(current => {\n historyRef.current.push(current);\n return next;\n });\n skipRef.current = true;\n }, [setDoc]);\n\n const canUndo = historyRef.current.length > 0;\n const canRedo = futureRef.current.length > 0;\n\n return { wrappedSetDoc, undo, redo, canUndo, canRedo };\n}\n"],"mappings":";;AAGA,IAAM,IAAc,IACd,IAAc;AAMpB,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAa,EAAuB,CAAC,CAAC,GACtC,IAAY,EAAuB,CAAC,CAAC,GACrC,IAAc,EAAO,CAAC,GACtB,IAAU,EAAO,EAAK,GAGtB,IAAc,GAAa,MAA2B;EAC1D,IAAM,IAAM,KAAK,IAAI;EAUrB,AATI,IAAM,EAAY,UAAU,KAAe,EAAW,QAAQ,SAAS,IACzE,EAAW,QAAQ,EAAW,QAAQ,SAAS,KAAK,KAEpD,EAAW,QAAQ,KAAK,CAAQ,GAC5B,EAAW,QAAQ,SAAS,KAC9B,EAAW,QAAQ,MAAM,IAG7B,EAAY,UAAU,GACtB,EAAU,UAAU,CAAC;CACvB,GAAG,CAAC,CAAC;CAuCL,OAAO;EAAE,eApCiE,GACvE,MAAW;GACV,GAAO,OACA,EAAQ,WACX,EAAY,CAAI,GAElB,EAAQ,UAAU,IACX,OAAO,KAAW,aAAa,EAAO,CAAI,IAAI,EACtD;EACH,GACA,CAAC,GAAQ,CAAW,CA0Bb;EAAe,MAvBX,QAAkB;GAC7B,IAAI,EAAW,QAAQ,WAAW,GAAG;GACrC,IAAM,IAAO,EAAW,QAAQ,IAAI;GAKpC,AAJA,GAAO,OACL,EAAU,QAAQ,KAAK,CAAO,GACvB,EACR,GACD,EAAQ,UAAU;EACpB,GAAG,CAAC,CAAM,CAec;EAAM,MAbjB,QAAkB;GAC7B,IAAI,EAAU,QAAQ,WAAW,GAAG;GACpC,IAAM,IAAO,EAAU,QAAQ,IAAI;GAKnC,AAJA,GAAO,OACL,EAAW,QAAQ,KAAK,CAAO,GACxB,EACR,GACD,EAAQ,UAAU;EACpB,GAAG,CAAC,CAAM,CAKoB;EAAM,SAHpB,EAAW,QAAQ,SAAS;EAGC,SAF7B,EAAU,QAAQ,SAAS;CAEU;AACvD"}
@@ -1,31 +1,31 @@
1
- import { ViewportManager as c } from "../canvas/ViewportContainer.js";
2
- import { useCallback as n, useEffect as s, useRef as l } from "react";
3
- function p(o, u) {
4
- const t = l(null);
5
- return s(() => {
6
- const r = o.current;
7
- if (!r || r.destroyed) return;
8
- const e = new c(r.world, r.app.stage, u);
9
- return t.current = e, () => {
10
- e.destroy(), t.current = null;
11
- };
12
- }, [o.current, u]), {
13
- vmRef: t,
14
- setViewport: n((r) => {
15
- t.current?.setState(r);
16
- }, []),
17
- screenToWorld: n((r, e) => t.current?.screenToWorld(r, e) ?? {
18
- x: r,
19
- y: e
20
- }, []),
21
- worldToScreen: n((r, e) => t.current?.worldToScreen(r, e) ?? {
22
- x: r,
23
- y: e
24
- }, [])
25
- };
1
+ import { ViewportManager as e } from "../canvas/ViewportContainer.js";
2
+ import { useCallback as t, useEffect as n, useRef as r } from "react";
3
+ //#region src/components/pro/Flow/hooks/useViewport.ts
4
+ function i(i, a) {
5
+ let o = r(null);
6
+ return n(() => {
7
+ let t = i.current;
8
+ if (!t || t.destroyed) return;
9
+ let n = new e(t.world, t.app.stage, a);
10
+ return o.current = n, () => {
11
+ n.destroy(), o.current = null;
12
+ };
13
+ }, [i.current, a]), {
14
+ vmRef: o,
15
+ setViewport: t((e) => {
16
+ o.current?.setState(e);
17
+ }, []),
18
+ screenToWorld: t((e, t) => o.current?.screenToWorld(e, t) ?? {
19
+ x: e,
20
+ y: t
21
+ }, []),
22
+ worldToScreen: t((e, t) => o.current?.worldToScreen(e, t) ?? {
23
+ x: e,
24
+ y: t
25
+ }, [])
26
+ };
26
27
  }
27
- export {
28
- p as useViewport
29
- };
28
+ //#endregion
29
+ export { i as useViewport };
30
30
 
31
31
  //# sourceMappingURL=useViewport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useViewport.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useViewport.ts"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport { ViewportManager } from '../canvas/ViewportContainer';\nimport { PixiApp } from '../canvas/PixiApp';\nimport type { ViewportState } from '../types';\n\n/**\n * Connects ViewportManager to React state.\n */\nexport function useViewport(\n pixiRef: React.RefObject<PixiApp | null>,\n onViewportChange: (v: ViewportState) => void,\n) {\n const vmRef = useRef<ViewportManager | null>(null);\n\n useEffect(() => {\n const pixi = pixiRef.current;\n if (!pixi || pixi.destroyed) return;\n\n const vm = new ViewportManager(pixi.world, pixi.app.stage, onViewportChange);\n vmRef.current = vm;\n\n return () => {\n vm.destroy();\n vmRef.current = null;\n };\n }, [pixiRef.current, onViewportChange]);\n\n const setViewport = useCallback((state: Partial<ViewportState>) => {\n vmRef.current?.setState(state);\n }, []);\n\n const screenToWorld = useCallback((sx: number, sy: number) => {\n return vmRef.current?.screenToWorld(sx, sy) ?? { x: sx, y: sy };\n }, []);\n\n const worldToScreen = useCallback((wx: number, wy: number) => {\n return vmRef.current?.worldToScreen(wx, wy) ?? { x: wx, y: wy };\n }, []);\n\n return { vmRef, setViewport, screenToWorld, worldToScreen };\n}\n"],"mappings":";;AAQA,SAAgB,EACd,GACA,GACA;AACA,QAAM,IAAQ,EAA+B,IAAI;AAEjD,SAAA,EAAA,MAAgB;AACd,UAAM,IAAO,EAAQ;AACrB,QAAI,CAAC,KAAQ,EAAK,UAAW;AAE7B,UAAM,IAAK,IAAI,EAAgB,EAAK,OAAO,EAAK,IAAI,OAAO,CAAgB;AAC3E,WAAA,EAAM,UAAU,GAEhB,MAAa;AACX,MAAA,EAAG,QAAQ,GACX,EAAM,UAAU;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,EAAQ,SAAS,CAAgB,CAAC,GAc/B;AAAA,IAAE,OAAA;AAAA,IAAO,aAZI,EAAA,CAAa,MAAkC;AACjE,MAAA,EAAM,SAAS,SAAS,CAAK;AAAA,IAC/B,GAAG,CAAC,CAUY;AAAA,IAAa,eARP,EAAA,CAAa,GAAY,MACtC,EAAM,SAAS,cAAc,GAAI,CAAE,KAAK;AAAA,MAAE,GAAG;AAAA,MAAI,GAAG;AAAA,IAAG,GAC7D,CAAC,CAMyB;AAAA,IAAe,eAJtB,EAAA,CAAa,GAAY,MACtC,EAAM,SAAS,cAAc,GAAI,CAAE,KAAK;AAAA,MAAE,GAAG;AAAA,MAAI,GAAG;AAAA,IAAG,GAC7D,CAAC,CAEwC;AAAA,EAAc;AAC5D"}
1
+ {"version":3,"file":"useViewport.js","names":[],"sources":["../../../../../src/components/pro/Flow/hooks/useViewport.ts"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport { ViewportManager } from '../canvas/ViewportContainer';\nimport { PixiApp } from '../canvas/PixiApp';\nimport type { ViewportState } from '../types';\n\n/**\n * Connects ViewportManager to React state.\n */\nexport function useViewport(\n pixiRef: React.RefObject<PixiApp | null>,\n onViewportChange: (v: ViewportState) => void,\n) {\n const vmRef = useRef<ViewportManager | null>(null);\n\n useEffect(() => {\n const pixi = pixiRef.current;\n if (!pixi || pixi.destroyed) return;\n\n const vm = new ViewportManager(pixi.world, pixi.app.stage, onViewportChange);\n vmRef.current = vm;\n\n return () => {\n vm.destroy();\n vmRef.current = null;\n };\n }, [pixiRef.current, onViewportChange]);\n\n const setViewport = useCallback((state: Partial<ViewportState>) => {\n vmRef.current?.setState(state);\n }, []);\n\n const screenToWorld = useCallback((sx: number, sy: number) => {\n return vmRef.current?.screenToWorld(sx, sy) ?? { x: sx, y: sy };\n }, []);\n\n const worldToScreen = useCallback((wx: number, wy: number) => {\n return vmRef.current?.worldToScreen(wx, wy) ?? { x: wx, y: wy };\n }, []);\n\n return { vmRef, setViewport, screenToWorld, worldToScreen };\n}\n"],"mappings":";;;AAQA,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAQ,EAA+B,IAAI;CA2BjD,OAzBA,QAAgB;EACd,IAAM,IAAO,EAAQ;EACrB,IAAI,CAAC,KAAQ,EAAK,WAAW;EAE7B,IAAM,IAAK,IAAI,EAAgB,EAAK,OAAO,EAAK,IAAI,OAAO,CAAgB;EAG3E,OAFA,EAAM,UAAU,SAEH;GAEX,AADA,EAAG,QAAQ,GACX,EAAM,UAAU;EAClB;CACF,GAAG,CAAC,EAAQ,SAAS,CAAgB,CAAC,GAc/B;EAAE;EAAO,aAZI,GAAa,MAAkC;GACjE,EAAM,SAAS,SAAS,CAAK;EAC/B,GAAG,CAAC,CAUY;EAAa,eARP,GAAa,GAAY,MACtC,EAAM,SAAS,cAAc,GAAI,CAAE,KAAK;GAAE,GAAG;GAAI,GAAG;EAAG,GAC7D,CAAC,CAMyB;EAAe,eAJtB,GAAa,GAAY,MACtC,EAAM,SAAS,cAAc,GAAI,CAAE,KAAK;GAAE,GAAG;GAAI,GAAG;EAAG,GAC7D,CAAC,CAEwC;CAAc;AAC5D"}
@@ -1,66 +1,66 @@
1
- import { resolveThemeColor as s } from "../utils/themeColor.js";
2
- import { generateId as o } from "../nodes/nodeUtils.js";
3
- import { simplifyPath as r, smoothCatmullRom as h } from "./lineSmoothing.js";
4
- import { Graphics as a } from "pixi.js";
5
- var v = class {
6
- stage;
7
- preview;
8
- callbacks;
9
- rawPoints = [];
10
- drawing = !1;
11
- _active = !1;
12
- constructor(t, e, i) {
13
- this.stage = t, this.callbacks = i, this.preview = new a(), this.preview.label = "freehand-preview", this.preview.visible = !1, e.addChild(this.preview);
14
- }
15
- get active() {
16
- return this._active;
17
- }
18
- activate() {
19
- this._active = !0, this.stage.on("pointerdown", this._onDown, this), this.stage.on("globalpointermove", this._onMove, this), this.stage.on("pointerup", this._onUp, this), this.stage.on("pointerupoutside", this._onUp, this);
20
- }
21
- deactivate() {
22
- this._active = !1, this.drawing = !1, this.rawPoints = [], this.preview.destroyed || (this.preview.clear(), this.preview.visible = !1), this.stage.off("pointerdown", this._onDown, this), this.stage.off("globalpointermove", this._onMove, this), this.stage.off("pointerup", this._onUp, this), this.stage.off("pointerupoutside", this._onUp, this);
23
- }
24
- _onDown = (t) => {
25
- if (t.button !== 0) return;
26
- const e = this.callbacks.screenToWorld(t.global.x, t.global.y);
27
- this.drawing = !0, this.rawPoints = [e], this.preview.visible = !0, this.preview.clear();
28
- };
29
- _onMove = (t) => {
30
- if (!this.drawing) return;
31
- const e = this.callbacks.screenToWorld(t.global.x, t.global.y);
32
- if (this.rawPoints.push(e), this.preview.clear(), !(this.rawPoints.length < 2)) {
33
- this.preview.moveTo(this.rawPoints[0].x, this.rawPoints[0].y);
34
- for (let i = 1; i < this.rawPoints.length; i++) this.preview.lineTo(this.rawPoints[i].x, this.rawPoints[i].y);
35
- this.preview.stroke({
36
- color: s("theme:base-content", "#374151"),
37
- width: 2,
38
- alpha: 0.6
39
- });
40
- }
41
- };
42
- _onUp = () => {
43
- if (!this.drawing) return;
44
- if (this.drawing = !1, this.preview.clear(), this.preview.visible = !1, this.rawPoints.length < 3) {
45
- this.rawPoints = [];
46
- return;
47
- }
48
- const t = r(this.rawPoints, 2), e = h(t, 4), i = {
49
- id: o("line"),
50
- type: "freehand",
51
- points: e,
52
- strokeColor: "theme:base-content",
53
- strokeWidth: 2,
54
- lineStyle: "solid"
55
- };
56
- this.callbacks.onLineComplete(i), this.rawPoints = [];
57
- };
58
- destroy() {
59
- this.deactivate(), this.preview.destroyed || this.preview.destroy();
60
- }
61
- };
62
- export {
63
- v as FreehandTool
1
+ import { resolveThemeColor as e } from "../utils/themeColor.js";
2
+ import { generateId as t } from "../nodes/nodeUtils.js";
3
+ import { simplifyPath as n, smoothCatmullRom as r } from "./lineSmoothing.js";
4
+ import { Graphics as i } from "pixi.js";
5
+ //#region src/components/pro/Flow/lines/FreehandTool.ts
6
+ var a = class {
7
+ stage;
8
+ preview;
9
+ callbacks;
10
+ rawPoints = [];
11
+ drawing = !1;
12
+ _active = !1;
13
+ constructor(e, t, n) {
14
+ this.stage = e, this.callbacks = n, this.preview = new i(), this.preview.label = "freehand-preview", this.preview.visible = !1, t.addChild(this.preview);
15
+ }
16
+ get active() {
17
+ return this._active;
18
+ }
19
+ activate() {
20
+ this._active = !0, this.stage.on("pointerdown", this._onDown, this), this.stage.on("globalpointermove", this._onMove, this), this.stage.on("pointerup", this._onUp, this), this.stage.on("pointerupoutside", this._onUp, this);
21
+ }
22
+ deactivate() {
23
+ this._active = !1, this.drawing = !1, this.rawPoints = [], this.preview.destroyed || (this.preview.clear(), this.preview.visible = !1), this.stage.off("pointerdown", this._onDown, this), this.stage.off("globalpointermove", this._onMove, this), this.stage.off("pointerup", this._onUp, this), this.stage.off("pointerupoutside", this._onUp, this);
24
+ }
25
+ _onDown = (e) => {
26
+ if (e.button !== 0) return;
27
+ let t = this.callbacks.screenToWorld(e.global.x, e.global.y);
28
+ this.drawing = !0, this.rawPoints = [t], this.preview.visible = !0, this.preview.clear();
29
+ };
30
+ _onMove = (t) => {
31
+ if (!this.drawing) return;
32
+ let n = this.callbacks.screenToWorld(t.global.x, t.global.y);
33
+ if (this.rawPoints.push(n), this.preview.clear(), !(this.rawPoints.length < 2)) {
34
+ this.preview.moveTo(this.rawPoints[0].x, this.rawPoints[0].y);
35
+ for (let e = 1; e < this.rawPoints.length; e++) this.preview.lineTo(this.rawPoints[e].x, this.rawPoints[e].y);
36
+ this.preview.stroke({
37
+ color: e("theme:base-content", "#374151"),
38
+ width: 2,
39
+ alpha: .6
40
+ });
41
+ }
42
+ };
43
+ _onUp = () => {
44
+ if (!this.drawing) return;
45
+ if (this.drawing = !1, this.preview.clear(), this.preview.visible = !1, this.rawPoints.length < 3) {
46
+ this.rawPoints = [];
47
+ return;
48
+ }
49
+ let e = n(this.rawPoints, 2), i = r(e, 4), a = {
50
+ id: t("line"),
51
+ type: "freehand",
52
+ points: i,
53
+ strokeColor: "theme:base-content",
54
+ strokeWidth: 2,
55
+ lineStyle: "solid"
56
+ };
57
+ this.callbacks.onLineComplete(a), this.rawPoints = [];
58
+ };
59
+ destroy() {
60
+ this.deactivate(), this.preview.destroyed || this.preview.destroy();
61
+ }
64
62
  };
63
+ //#endregion
64
+ export { a as FreehandTool };
65
65
 
66
66
  //# sourceMappingURL=FreehandTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FreehandTool.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/FreehandTool.ts"],"sourcesContent":["import { Graphics, Container, FederatedPointerEvent } from 'pixi.js';\nimport { simplifyPath, smoothCatmullRom, type Point } from './lineSmoothing';\nimport type { FlowLine } from '../types';\nimport { generateId } from '../nodes/nodeUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nexport interface FreehandToolCallbacks {\n /** Called when a freehand line is finished */\n onLineComplete: (line: FlowLine) => void;\n /** Convert screen coords to world coords */\n screenToWorld: (sx: number, sy: number) => { x: number; y: number };\n}\n\n/**\n * Captures pointer trail for freehand drawing, smooths and stores as FlowLine.\n */\nexport class FreehandTool {\n private stage: Container;\n private preview: Graphics;\n private callbacks: FreehandToolCallbacks;\n private rawPoints: Point[] = [];\n private drawing = false;\n private _active = false;\n\n constructor(stage: Container, world: Container, callbacks: FreehandToolCallbacks) {\n this.stage = stage;\n this.callbacks = callbacks;\n this.preview = new Graphics();\n this.preview.label = 'freehand-preview';\n this.preview.visible = false;\n world.addChild(this.preview);\n }\n\n get active(): boolean { return this._active; }\n\n activate(): void {\n this._active = true;\n this.stage.on('pointerdown', this._onDown, this);\n this.stage.on('globalpointermove', this._onMove, this);\n this.stage.on('pointerup', this._onUp, this);\n this.stage.on('pointerupoutside', this._onUp, this);\n }\n\n deactivate(): void {\n this._active = false;\n this.drawing = false;\n this.rawPoints = [];\n if (!this.preview.destroyed) {\n this.preview.clear();\n this.preview.visible = false;\n }\n this.stage.off('pointerdown', this._onDown, this);\n this.stage.off('globalpointermove', this._onMove, this);\n this.stage.off('pointerup', this._onUp, this);\n this.stage.off('pointerupoutside', this._onUp, this);\n }\n\n private _onDown = (e: FederatedPointerEvent): void => {\n if (e.button !== 0) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this.drawing = true;\n this.rawPoints = [world];\n this.preview.visible = true;\n this.preview.clear();\n };\n\n private _onMove = (e: FederatedPointerEvent): void => {\n if (!this.drawing) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this.rawPoints.push(world);\n\n // Draw preview\n this.preview.clear();\n if (this.rawPoints.length < 2) return;\n this.preview.moveTo(this.rawPoints[0].x, this.rawPoints[0].y);\n for (let i = 1; i < this.rawPoints.length; i++) {\n this.preview.lineTo(this.rawPoints[i].x, this.rawPoints[i].y);\n }\n this.preview.stroke({ color: resolveThemeColor('theme:base-content', '#374151'), width: 2, alpha: 0.6 });\n };\n\n private _onUp = (): void => {\n if (!this.drawing) return;\n this.drawing = false;\n this.preview.clear();\n this.preview.visible = false;\n\n if (this.rawPoints.length < 3) {\n this.rawPoints = [];\n return;\n }\n\n const simplified = simplifyPath(this.rawPoints, 2);\n const smoothed = smoothCatmullRom(simplified, 4);\n\n const line: FlowLine = {\n id: generateId('line'),\n type: 'freehand',\n points: smoothed,\n strokeColor: 'theme:base-content',\n strokeWidth: 2,\n lineStyle: 'solid',\n };\n\n this.callbacks.onLineComplete(line);\n this.rawPoints = [];\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":"FreehandTool.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/FreehandTool.ts"],"sourcesContent":["import { Graphics, Container, FederatedPointerEvent } from 'pixi.js';\nimport { simplifyPath, smoothCatmullRom, type Point } from './lineSmoothing';\nimport type { FlowLine } from '../types';\nimport { generateId } from '../nodes/nodeUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nexport interface FreehandToolCallbacks {\n /** Called when a freehand line is finished */\n onLineComplete: (line: FlowLine) => void;\n /** Convert screen coords to world coords */\n screenToWorld: (sx: number, sy: number) => { x: number; y: number };\n}\n\n/**\n * Captures pointer trail for freehand drawing, smooths and stores as FlowLine.\n */\nexport class FreehandTool {\n private stage: Container;\n private preview: Graphics;\n private callbacks: FreehandToolCallbacks;\n private rawPoints: Point[] = [];\n private drawing = false;\n private _active = false;\n\n constructor(stage: Container, world: Container, callbacks: FreehandToolCallbacks) {\n this.stage = stage;\n this.callbacks = callbacks;\n this.preview = new Graphics();\n this.preview.label = 'freehand-preview';\n this.preview.visible = false;\n world.addChild(this.preview);\n }\n\n get active(): boolean { return this._active; }\n\n activate(): void {\n this._active = true;\n this.stage.on('pointerdown', this._onDown, this);\n this.stage.on('globalpointermove', this._onMove, this);\n this.stage.on('pointerup', this._onUp, this);\n this.stage.on('pointerupoutside', this._onUp, this);\n }\n\n deactivate(): void {\n this._active = false;\n this.drawing = false;\n this.rawPoints = [];\n if (!this.preview.destroyed) {\n this.preview.clear();\n this.preview.visible = false;\n }\n this.stage.off('pointerdown', this._onDown, this);\n this.stage.off('globalpointermove', this._onMove, this);\n this.stage.off('pointerup', this._onUp, this);\n this.stage.off('pointerupoutside', this._onUp, this);\n }\n\n private _onDown = (e: FederatedPointerEvent): void => {\n if (e.button !== 0) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this.drawing = true;\n this.rawPoints = [world];\n this.preview.visible = true;\n this.preview.clear();\n };\n\n private _onMove = (e: FederatedPointerEvent): void => {\n if (!this.drawing) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this.rawPoints.push(world);\n\n // Draw preview\n this.preview.clear();\n if (this.rawPoints.length < 2) return;\n this.preview.moveTo(this.rawPoints[0].x, this.rawPoints[0].y);\n for (let i = 1; i < this.rawPoints.length; i++) {\n this.preview.lineTo(this.rawPoints[i].x, this.rawPoints[i].y);\n }\n this.preview.stroke({ color: resolveThemeColor('theme:base-content', '#374151'), width: 2, alpha: 0.6 });\n };\n\n private _onUp = (): void => {\n if (!this.drawing) return;\n this.drawing = false;\n this.preview.clear();\n this.preview.visible = false;\n\n if (this.rawPoints.length < 3) {\n this.rawPoints = [];\n return;\n }\n\n const simplified = simplifyPath(this.rawPoints, 2);\n const smoothed = smoothCatmullRom(simplified, 4);\n\n const line: FlowLine = {\n id: generateId('line'),\n type: 'freehand',\n points: smoothed,\n strokeColor: 'theme:base-content',\n strokeWidth: 2,\n lineStyle: 'solid',\n };\n\n this.callbacks.onLineComplete(line);\n this.rawPoints = [];\n };\n\n destroy(): void {\n this.deactivate();\n if (!this.preview.destroyed) this.preview.destroy();\n }\n}\n"],"mappings":";;;;;AAgBA,IAAa,IAAb,MAA0B;CACxB;CACA;CACA;CACA,YAA6B,CAAC;CAC9B,UAAkB;CAClB,UAAkB;CAElB,YAAY,GAAkB,GAAkB,GAAkC;EAMhF,AALA,KAAK,QAAQ,GACb,KAAK,YAAY,GACjB,KAAK,UAAU,IAAI,EAAS,GAC5B,KAAK,QAAQ,QAAQ,oBACrB,KAAK,QAAQ,UAAU,IACvB,EAAM,SAAS,KAAK,OAAO;CAC7B;CAEA,IAAI,SAAkB;EAAE,OAAO,KAAK;CAAS;CAE7C,WAAiB;EAKf,AAJA,KAAK,UAAU,IACf,KAAK,MAAM,GAAG,eAAe,KAAK,SAAS,IAAI,GAC/C,KAAK,MAAM,GAAG,qBAAqB,KAAK,SAAS,IAAI,GACrD,KAAK,MAAM,GAAG,aAAa,KAAK,OAAO,IAAI,GAC3C,KAAK,MAAM,GAAG,oBAAoB,KAAK,OAAO,IAAI;CACpD;CAEA,aAAmB;EAWjB,AAVA,KAAK,UAAU,IACf,KAAK,UAAU,IACf,KAAK,YAAY,CAAC,GACb,KAAK,QAAQ,cAChB,KAAK,QAAQ,MAAM,GACnB,KAAK,QAAQ,UAAU,KAEzB,KAAK,MAAM,IAAI,eAAe,KAAK,SAAS,IAAI,GAChD,KAAK,MAAM,IAAI,qBAAqB,KAAK,SAAS,IAAI,GACtD,KAAK,MAAM,IAAI,aAAa,KAAK,OAAO,IAAI,GAC5C,KAAK,MAAM,IAAI,oBAAoB,KAAK,OAAO,IAAI;CACrD;CAEA,WAAmB,MAAmC;EACpD,IAAI,EAAE,WAAW,GAAG;EACpB,IAAM,IAAQ,KAAK,UAAU,cAAc,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;EAIjE,AAHA,KAAK,UAAU,IACf,KAAK,YAAY,CAAC,CAAK,GACvB,KAAK,QAAQ,UAAU,IACvB,KAAK,QAAQ,MAAM;CACrB;CAEA,WAAmB,MAAmC;EACpD,IAAI,CAAC,KAAK,SAAS;EACnB,IAAM,IAAQ,KAAK,UAAU,cAAc,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;EACjE,SAAK,UAAU,KAAK,CAAK,GAGzB,KAAK,QAAQ,MAAM,GACf,OAAK,UAAU,SAAS,IAC5B;QAAK,QAAQ,OAAO,KAAK,UAAU,EAAE,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC,CAAC;GAC5D,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KACzC,KAAK,QAAQ,OAAO,KAAK,UAAU,EAAE,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC,CAAC;GAE9D,KAAK,QAAQ,OAAO;IAAE,OAAO,EAAkB,sBAAsB,SAAS;IAAG,OAAO;IAAG,OAAO;GAAI,CAAC;EAJ3C;CAK9D;CAEA,cAA4B;EAC1B,IAAI,CAAC,KAAK,SAAS;EAKnB,IAJA,KAAK,UAAU,IACf,KAAK,QAAQ,MAAM,GACnB,KAAK,QAAQ,UAAU,IAEnB,KAAK,UAAU,SAAS,GAAG;GAC7B,KAAK,YAAY,CAAC;GAClB;EACF;EAEA,IAAM,IAAa,EAAa,KAAK,WAAW,CAAC,GAC3C,IAAW,EAAiB,GAAY,CAAC,GAEzC,IAAiB;GACrB,IAAI,EAAW,MAAM;GACrB,MAAM;GACN,QAAQ;GACR,aAAa;GACb,aAAa;GACb,WAAW;EACb;EAGA,AADA,KAAK,UAAU,eAAe,CAAI,GAClC,KAAK,YAAY,CAAC;CACpB;CAEA,UAAgB;EAEd,AADA,KAAK,WAAW,GACX,KAAK,QAAQ,aAAW,KAAK,QAAQ,QAAQ;CACpD;AACF"}