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,217 +1,217 @@
1
- import { useCallback as x, useEffect as m, useRef as E, useState as c } from "react";
2
- import { jsx as u, jsxs as H } from "react/jsx-runtime";
3
- var _ = [
4
- {
5
- label: "Text",
6
- icon: "Aa",
7
- description: "Plain text",
8
- keywords: [
9
- "paragraph",
10
- "text",
11
- "plain"
12
- ],
13
- action: (e) => e.chain().focus().setParagraph().run()
14
- },
15
- {
16
- label: "Heading 1",
17
- icon: "H1",
18
- description: "Large heading",
19
- keywords: ["h1", "title"],
20
- action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run()
21
- },
22
- {
23
- label: "Heading 2",
24
- icon: "H2",
25
- description: "Medium heading",
26
- keywords: ["h2", "subtitle"],
27
- action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run()
28
- },
29
- {
30
- label: "Heading 3",
31
- icon: "H3",
32
- description: "Small heading",
33
- keywords: ["h3"],
34
- action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run()
35
- },
36
- {
37
- label: "Bullet List",
38
- icon: "•",
39
- description: "Unordered list",
40
- keywords: [
41
- "ul",
42
- "bullet",
43
- "unordered"
44
- ],
45
- action: (e) => e.chain().focus().toggleBulletList().run()
46
- },
47
- {
48
- label: "Numbered List",
49
- icon: "1.",
50
- description: "Ordered list",
51
- keywords: [
52
- "ol",
53
- "ordered",
54
- "number"
55
- ],
56
- action: (e) => e.chain().focus().toggleOrderedList().run()
57
- },
58
- {
59
- label: "Task List",
60
- icon: "☑",
61
- description: "To-do list",
62
- keywords: [
63
- "todo",
64
- "checkbox",
65
- "task"
66
- ],
67
- action: (e) => e.chain().focus().toggleTaskList().run()
68
- },
69
- {
70
- label: "Blockquote",
71
- icon: '"',
72
- description: "Quote block",
73
- keywords: ["quote", "blockquote"],
74
- action: (e) => e.chain().focus().toggleBlockquote().run()
75
- },
76
- {
77
- label: "Code Block",
78
- icon: "</>",
79
- description: "Code snippet",
80
- keywords: [
81
- "code",
82
- "pre",
83
- "snippet"
84
- ],
85
- action: (e) => e.chain().focus().toggleNode("codeBlock", "paragraph").run()
86
- },
87
- {
88
- label: "Divider",
89
- icon: "—",
90
- description: "Horizontal rule",
91
- keywords: [
92
- "hr",
93
- "divider",
94
- "separator",
95
- "line"
96
- ],
97
- action: (e) => e.chain().focus().setHorizontalRule().run()
98
- },
99
- {
100
- label: "Table",
101
- icon: "⊞",
102
- description: "Insert 3×3 table",
103
- keywords: ["table", "grid"],
104
- action: (e) => e.chain().focus().insertTable({
105
- rows: 3,
106
- cols: 3,
107
- withHeaderRow: !0
108
- }).run()
109
- },
110
- {
111
- label: "Image",
112
- icon: "🖼",
113
- description: "Insert image by URL",
114
- keywords: [
115
- "image",
116
- "picture",
117
- "photo"
118
- ],
119
- action: (e) => {
120
- const o = window.prompt("Image URL:");
121
- o && e.chain().focus().setImage({ src: o }).run();
122
- }
123
- }
124
- ], D = ({ editor: e }) => {
125
- const [o, b] = c(!1), [w, k] = c(""), [y, R] = c({
126
- x: 0,
127
- y: 0
128
- }), [i, a] = c(0), [d, v] = c(null), p = E(null), s = w ? _.filter((n) => {
129
- const t = w.toLowerCase();
130
- return n.label.toLowerCase().includes(t) || n.description.toLowerCase().includes(t) || n.keywords?.some((r) => r.includes(t));
131
- }) : _, l = x(() => {
132
- b(!1), k(""), v(null), a(0);
133
- }, []), f = x((n) => {
134
- if (d !== null) {
135
- const { from: t } = e.state.selection;
136
- e.chain().focus().deleteRange({
137
- from: d,
138
- to: t
139
- }).run();
140
- }
141
- n.action(e), l();
142
- }, [
143
- e,
144
- d,
145
- l
146
- ]);
147
- return m(() => {
148
- const n = () => {
149
- const { $from: t } = e.state.selection, r = t.parent.textContent.slice(0, t.parentOffset), h = /\/([a-zA-Z0-9]*)$/.exec(r);
150
- if (h) {
151
- const C = t.start() + h.index;
152
- v(C), k(h[1]), a(0);
153
- const L = e.view.coordsAtPos(t.pos), g = e.view.dom.closest(".rte-editor-wrapper")?.getBoundingClientRect();
154
- g && R({
155
- x: L.left - g.left,
156
- y: L.bottom - g.top + 4
157
- }), b(!0);
158
- } else o && l();
159
- };
160
- return e.on("selectionUpdate", n), e.on("update", n), () => {
161
- e.off("selectionUpdate", n), e.off("update", n);
162
- };
163
- }, [
164
- e,
165
- o,
166
- l
167
- ]), m(() => {
168
- if (!o) return;
169
- const n = (t) => {
170
- t.key === "ArrowDown" ? (t.preventDefault(), a((r) => (r + 1) % s.length)) : t.key === "ArrowUp" ? (t.preventDefault(), a((r) => (r - 1 + s.length) % s.length)) : t.key === "Enter" ? (t.preventDefault(), s[i] && f(s[i])) : t.key === "Escape" && (t.preventDefault(), l());
171
- };
172
- return document.addEventListener("keydown", n, !0), () => document.removeEventListener("keydown", n, !0);
173
- }, [
174
- o,
175
- s,
176
- i,
177
- f,
178
- l
179
- ]), m(() => {
180
- if (!o) return;
181
- const n = (t) => {
182
- p.current && !p.current.contains(t.target) && l();
183
- };
184
- return document.addEventListener("mousedown", n), () => document.removeEventListener("mousedown", n);
185
- }, [o, l]), !o || s.length === 0 ? null : /* @__PURE__ */ u("div", {
186
- ref: p,
187
- className: "rte-slash-menu",
188
- style: {
189
- left: y.x,
190
- top: y.y
191
- },
192
- children: s.map((n, t) => /* @__PURE__ */ H("button", {
193
- type: "button",
194
- className: `rte-slash-menu__item ${t === i ? "rte-slash-menu__item--active" : ""}`,
195
- onClick: () => f(n),
196
- onMouseEnter: () => a(t),
197
- children: [/* @__PURE__ */ u("span", {
198
- className: "rte-slash-menu__icon",
199
- children: n.icon
200
- }), /* @__PURE__ */ H("div", {
201
- className: "rte-slash-menu__text",
202
- children: [/* @__PURE__ */ u("span", {
203
- className: "rte-slash-menu__label",
204
- children: n.label
205
- }), /* @__PURE__ */ u("span", {
206
- className: "rte-slash-menu__desc",
207
- children: n.description
208
- })]
209
- })]
210
- }, n.label))
211
- });
212
- };
213
- export {
214
- D as default
1
+ import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ //#region src/components/pro/RichTextEditor/SlashMenu.tsx
4
+ var o = [
5
+ {
6
+ label: "Text",
7
+ icon: "Aa",
8
+ description: "Plain text",
9
+ keywords: [
10
+ "paragraph",
11
+ "text",
12
+ "plain"
13
+ ],
14
+ action: (e) => e.chain().focus().setParagraph().run()
15
+ },
16
+ {
17
+ label: "Heading 1",
18
+ icon: "H1",
19
+ description: "Large heading",
20
+ keywords: ["h1", "title"],
21
+ action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run()
22
+ },
23
+ {
24
+ label: "Heading 2",
25
+ icon: "H2",
26
+ description: "Medium heading",
27
+ keywords: ["h2", "subtitle"],
28
+ action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run()
29
+ },
30
+ {
31
+ label: "Heading 3",
32
+ icon: "H3",
33
+ description: "Small heading",
34
+ keywords: ["h3"],
35
+ action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run()
36
+ },
37
+ {
38
+ label: "Bullet List",
39
+ icon: "•",
40
+ description: "Unordered list",
41
+ keywords: [
42
+ "ul",
43
+ "bullet",
44
+ "unordered"
45
+ ],
46
+ action: (e) => e.chain().focus().toggleBulletList().run()
47
+ },
48
+ {
49
+ label: "Numbered List",
50
+ icon: "1.",
51
+ description: "Ordered list",
52
+ keywords: [
53
+ "ol",
54
+ "ordered",
55
+ "number"
56
+ ],
57
+ action: (e) => e.chain().focus().toggleOrderedList().run()
58
+ },
59
+ {
60
+ label: "Task List",
61
+ icon: "☑",
62
+ description: "To-do list",
63
+ keywords: [
64
+ "todo",
65
+ "checkbox",
66
+ "task"
67
+ ],
68
+ action: (e) => e.chain().focus().toggleTaskList().run()
69
+ },
70
+ {
71
+ label: "Blockquote",
72
+ icon: "\"",
73
+ description: "Quote block",
74
+ keywords: ["quote", "blockquote"],
75
+ action: (e) => e.chain().focus().toggleBlockquote().run()
76
+ },
77
+ {
78
+ label: "Code Block",
79
+ icon: "</>",
80
+ description: "Code snippet",
81
+ keywords: [
82
+ "code",
83
+ "pre",
84
+ "snippet"
85
+ ],
86
+ action: (e) => e.chain().focus().toggleNode("codeBlock", "paragraph").run()
87
+ },
88
+ {
89
+ label: "Divider",
90
+ icon: "—",
91
+ description: "Horizontal rule",
92
+ keywords: [
93
+ "hr",
94
+ "divider",
95
+ "separator",
96
+ "line"
97
+ ],
98
+ action: (e) => e.chain().focus().setHorizontalRule().run()
99
+ },
100
+ {
101
+ label: "Table",
102
+ icon: "⊞",
103
+ description: "Insert 3×3 table",
104
+ keywords: ["table", "grid"],
105
+ action: (e) => e.chain().focus().insertTable({
106
+ rows: 3,
107
+ cols: 3,
108
+ withHeaderRow: !0
109
+ }).run()
110
+ },
111
+ {
112
+ label: "Image",
113
+ icon: "🖼",
114
+ description: "Insert image by URL",
115
+ keywords: [
116
+ "image",
117
+ "picture",
118
+ "photo"
119
+ ],
120
+ action: (e) => {
121
+ let t = window.prompt("Image URL:");
122
+ t && e.chain().focus().setImage({ src: t }).run();
123
+ }
124
+ }
125
+ ], s = ({ editor: s }) => {
126
+ let [c, l] = r(!1), [u, d] = r(""), [f, p] = r({
127
+ x: 0,
128
+ y: 0
129
+ }), [m, h] = r(0), [g, _] = r(null), v = n(null), y = u ? o.filter((e) => {
130
+ let t = u.toLowerCase();
131
+ return e.label.toLowerCase().includes(t) || e.description.toLowerCase().includes(t) || e.keywords?.some((e) => e.includes(t));
132
+ }) : o, b = e(() => {
133
+ l(!1), d(""), _(null), h(0);
134
+ }, []), x = e((e) => {
135
+ if (g !== null) {
136
+ let { from: e } = s.state.selection;
137
+ s.chain().focus().deleteRange({
138
+ from: g,
139
+ to: e
140
+ }).run();
141
+ }
142
+ e.action(s), b();
143
+ }, [
144
+ s,
145
+ g,
146
+ b
147
+ ]);
148
+ return t(() => {
149
+ let e = () => {
150
+ let { $from: e } = s.state.selection, t = e.parent.textContent.slice(0, e.parentOffset), n = /\/([a-zA-Z0-9]*)$/.exec(t);
151
+ if (n) {
152
+ let t = e.start() + n.index;
153
+ _(t), d(n[1]), h(0);
154
+ let r = s.view.coordsAtPos(e.pos), i = s.view.dom.closest(".rte-editor-wrapper")?.getBoundingClientRect();
155
+ i && p({
156
+ x: r.left - i.left,
157
+ y: r.bottom - i.top + 4
158
+ }), l(!0);
159
+ } else c && b();
160
+ };
161
+ return s.on("selectionUpdate", e), s.on("update", e), () => {
162
+ s.off("selectionUpdate", e), s.off("update", e);
163
+ };
164
+ }, [
165
+ s,
166
+ c,
167
+ b
168
+ ]), t(() => {
169
+ if (!c) return;
170
+ let e = (e) => {
171
+ e.key === "ArrowDown" ? (e.preventDefault(), h((e) => (e + 1) % y.length)) : e.key === "ArrowUp" ? (e.preventDefault(), h((e) => (e - 1 + y.length) % y.length)) : e.key === "Enter" ? (e.preventDefault(), y[m] && x(y[m])) : e.key === "Escape" && (e.preventDefault(), b());
172
+ };
173
+ return document.addEventListener("keydown", e, !0), () => document.removeEventListener("keydown", e, !0);
174
+ }, [
175
+ c,
176
+ y,
177
+ m,
178
+ x,
179
+ b
180
+ ]), t(() => {
181
+ if (!c) return;
182
+ let e = (e) => {
183
+ v.current && !v.current.contains(e.target) && b();
184
+ };
185
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
186
+ }, [c, b]), !c || y.length === 0 ? null : /* @__PURE__ */ i("div", {
187
+ ref: v,
188
+ className: "rte-slash-menu",
189
+ style: {
190
+ left: f.x,
191
+ top: f.y
192
+ },
193
+ children: y.map((e, t) => /* @__PURE__ */ a("button", {
194
+ type: "button",
195
+ className: `rte-slash-menu__item ${t === m ? "rte-slash-menu__item--active" : ""}`,
196
+ onClick: () => x(e),
197
+ onMouseEnter: () => h(t),
198
+ children: [/* @__PURE__ */ i("span", {
199
+ className: "rte-slash-menu__icon",
200
+ children: e.icon
201
+ }), /* @__PURE__ */ a("div", {
202
+ className: "rte-slash-menu__text",
203
+ children: [/* @__PURE__ */ i("span", {
204
+ className: "rte-slash-menu__label",
205
+ children: e.label
206
+ }), /* @__PURE__ */ i("span", {
207
+ className: "rte-slash-menu__desc",
208
+ children: e.description
209
+ })]
210
+ })]
211
+ }, e.label))
212
+ });
215
213
  };
214
+ //#endregion
215
+ export { s as default };
216
216
 
217
217
  //# sourceMappingURL=SlashMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlashMenu.js","names":[],"sources":["../../../../src/components/pro/RichTextEditor/SlashMenu.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport type { Editor } from '@tiptap/react';\n\ninterface SlashMenuItem {\n label: string;\n icon: string;\n description: string;\n action: (editor: Editor) => void;\n keywords?: string[];\n}\n\nconst SLASH_ITEMS: SlashMenuItem[] = [\n { label: 'Text', icon: 'Aa', description: 'Plain text', keywords: ['paragraph', 'text', 'plain'],\n action: (e) => e.chain().focus().setParagraph().run() },\n { label: 'Heading 1', icon: 'H1', description: 'Large heading', keywords: ['h1', 'title'],\n action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run() },\n { label: 'Heading 2', icon: 'H2', description: 'Medium heading', keywords: ['h2', 'subtitle'],\n action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run() },\n { label: 'Heading 3', icon: 'H3', description: 'Small heading', keywords: ['h3'],\n action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run() },\n { label: 'Bullet List', icon: '•', description: 'Unordered list', keywords: ['ul', 'bullet', 'unordered'],\n action: (e) => e.chain().focus().toggleBulletList().run() },\n { label: 'Numbered List', icon: '1.', description: 'Ordered list', keywords: ['ol', 'ordered', 'number'],\n action: (e) => e.chain().focus().toggleOrderedList().run() },\n { label: 'Task List', icon: '☑', description: 'To-do list', keywords: ['todo', 'checkbox', 'task'],\n action: (e) => e.chain().focus().toggleTaskList().run() },\n { label: 'Blockquote', icon: '\"', description: 'Quote block', keywords: ['quote', 'blockquote'],\n action: (e) => e.chain().focus().toggleBlockquote().run() },\n { label: 'Code Block', icon: '</>', description: 'Code snippet', keywords: ['code', 'pre', 'snippet'],\n action: (e) => e.chain().focus().toggleNode('codeBlock', 'paragraph').run() },\n { label: 'Divider', icon: '—', description: 'Horizontal rule', keywords: ['hr', 'divider', 'separator', 'line'],\n action: (e) => e.chain().focus().setHorizontalRule().run() },\n { label: 'Table', icon: '⊞', description: 'Insert 3×3 table', keywords: ['table', 'grid'],\n action: (e) => e.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run() },\n { label: 'Image', icon: '🖼', description: 'Insert image by URL', keywords: ['image', 'picture', 'photo'],\n action: (e) => {\n const url = window.prompt('Image URL:');\n if (url) e.chain().focus().setImage({ src: url }).run();\n }},\n];\n\ninterface SlashMenuProps {\n editor: Editor;\n}\n\nconst SlashMenu: React.FC<SlashMenuProps> = ({ editor }) => {\n const [visible, setVisible] = useState(false);\n const [query, setQuery] = useState('');\n const [pos, setPos] = useState({ x: 0, y: 0 });\n const [selected, setSelected] = useState(0);\n const [slashPos, setSlashPos] = useState<number | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const filtered = query\n ? SLASH_ITEMS.filter((item) => {\n const q = query.toLowerCase();\n return item.label.toLowerCase().includes(q)\n || item.description.toLowerCase().includes(q)\n || item.keywords?.some((k) => k.includes(q));\n })\n : SLASH_ITEMS;\n\n const close = useCallback(() => {\n setVisible(false);\n setQuery('');\n setSlashPos(null);\n setSelected(0);\n }, []);\n\n const executeItem = useCallback((item: SlashMenuItem) => {\n if (slashPos !== null) {\n const { from } = editor.state.selection;\n editor.chain().focus().deleteRange({ from: slashPos, to: from }).run();\n }\n item.action(editor);\n close();\n }, [editor, slashPos, close]);\n\n useEffect(() => {\n const handleUpdate = () => {\n const { $from } = editor.state.selection;\n const textBefore = $from.parent.textContent.slice(0, $from.parentOffset);\n const slashMatch = /\\/([a-zA-Z0-9]*)$/.exec(textBefore);\n\n if (slashMatch) {\n const start = $from.start() + slashMatch.index;\n setSlashPos(start);\n setQuery(slashMatch[1]);\n setSelected(0);\n\n const coords = editor.view.coordsAtPos($from.pos);\n const editorRect = editor.view.dom.closest('.rte-editor-wrapper')?.getBoundingClientRect();\n if (editorRect) {\n setPos({\n x: coords.left - editorRect.left,\n y: coords.bottom - editorRect.top + 4,\n });\n }\n setVisible(true);\n } else {\n if (visible) close();\n }\n };\n\n editor.on('selectionUpdate', handleUpdate);\n editor.on('update', handleUpdate);\n return () => {\n editor.off('selectionUpdate', handleUpdate);\n editor.off('update', handleUpdate);\n };\n }, [editor, visible, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setSelected((s) => (s + 1) % filtered.length);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setSelected((s) => (s - 1 + filtered.length) % filtered.length);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (filtered[selected]) executeItem(filtered[selected]);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n close();\n }\n };\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [visible, filtered, selected, executeItem, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) close();\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [visible, close]);\n\n if (!visible || filtered.length === 0) return null;\n\n return (\n <div ref={menuRef} className=\"rte-slash-menu\" style={{ left: pos.x, top: pos.y }}>\n {filtered.map((item, i) => (\n <button\n key={item.label}\n type=\"button\"\n className={`rte-slash-menu__item ${i === selected ? 'rte-slash-menu__item--active' : ''}`}\n onClick={() => executeItem(item)}\n onMouseEnter={() => setSelected(i)}\n >\n <span className=\"rte-slash-menu__icon\">{item.icon}</span>\n <div className=\"rte-slash-menu__text\">\n <span className=\"rte-slash-menu__label\">{item.label}</span>\n <span className=\"rte-slash-menu__desc\">{item.description}</span>\n </div>\n </button>\n ))}\n </div>\n );\n};\n\nexport default SlashMenu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SlashMenu.js","names":[],"sources":["../../../../src/components/pro/RichTextEditor/SlashMenu.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport type { Editor } from '@tiptap/react';\n\ninterface SlashMenuItem {\n label: string;\n icon: string;\n description: string;\n action: (editor: Editor) => void;\n keywords?: string[];\n}\n\nconst SLASH_ITEMS: SlashMenuItem[] = [\n { label: 'Text', icon: 'Aa', description: 'Plain text', keywords: ['paragraph', 'text', 'plain'],\n action: (e) => e.chain().focus().setParagraph().run() },\n { label: 'Heading 1', icon: 'H1', description: 'Large heading', keywords: ['h1', 'title'],\n action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run() },\n { label: 'Heading 2', icon: 'H2', description: 'Medium heading', keywords: ['h2', 'subtitle'],\n action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run() },\n { label: 'Heading 3', icon: 'H3', description: 'Small heading', keywords: ['h3'],\n action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run() },\n { label: 'Bullet List', icon: '•', description: 'Unordered list', keywords: ['ul', 'bullet', 'unordered'],\n action: (e) => e.chain().focus().toggleBulletList().run() },\n { label: 'Numbered List', icon: '1.', description: 'Ordered list', keywords: ['ol', 'ordered', 'number'],\n action: (e) => e.chain().focus().toggleOrderedList().run() },\n { label: 'Task List', icon: '☑', description: 'To-do list', keywords: ['todo', 'checkbox', 'task'],\n action: (e) => e.chain().focus().toggleTaskList().run() },\n { label: 'Blockquote', icon: '\"', description: 'Quote block', keywords: ['quote', 'blockquote'],\n action: (e) => e.chain().focus().toggleBlockquote().run() },\n { label: 'Code Block', icon: '</>', description: 'Code snippet', keywords: ['code', 'pre', 'snippet'],\n action: (e) => e.chain().focus().toggleNode('codeBlock', 'paragraph').run() },\n { label: 'Divider', icon: '—', description: 'Horizontal rule', keywords: ['hr', 'divider', 'separator', 'line'],\n action: (e) => e.chain().focus().setHorizontalRule().run() },\n { label: 'Table', icon: '⊞', description: 'Insert 3×3 table', keywords: ['table', 'grid'],\n action: (e) => e.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run() },\n { label: 'Image', icon: '🖼', description: 'Insert image by URL', keywords: ['image', 'picture', 'photo'],\n action: (e) => {\n const url = window.prompt('Image URL:');\n if (url) e.chain().focus().setImage({ src: url }).run();\n }},\n];\n\ninterface SlashMenuProps {\n editor: Editor;\n}\n\nconst SlashMenu: React.FC<SlashMenuProps> = ({ editor }) => {\n const [visible, setVisible] = useState(false);\n const [query, setQuery] = useState('');\n const [pos, setPos] = useState({ x: 0, y: 0 });\n const [selected, setSelected] = useState(0);\n const [slashPos, setSlashPos] = useState<number | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const filtered = query\n ? SLASH_ITEMS.filter((item) => {\n const q = query.toLowerCase();\n return item.label.toLowerCase().includes(q)\n || item.description.toLowerCase().includes(q)\n || item.keywords?.some((k) => k.includes(q));\n })\n : SLASH_ITEMS;\n\n const close = useCallback(() => {\n setVisible(false);\n setQuery('');\n setSlashPos(null);\n setSelected(0);\n }, []);\n\n const executeItem = useCallback((item: SlashMenuItem) => {\n if (slashPos !== null) {\n const { from } = editor.state.selection;\n editor.chain().focus().deleteRange({ from: slashPos, to: from }).run();\n }\n item.action(editor);\n close();\n }, [editor, slashPos, close]);\n\n useEffect(() => {\n const handleUpdate = () => {\n const { $from } = editor.state.selection;\n const textBefore = $from.parent.textContent.slice(0, $from.parentOffset);\n const slashMatch = /\\/([a-zA-Z0-9]*)$/.exec(textBefore);\n\n if (slashMatch) {\n const start = $from.start() + slashMatch.index;\n setSlashPos(start);\n setQuery(slashMatch[1]);\n setSelected(0);\n\n const coords = editor.view.coordsAtPos($from.pos);\n const editorRect = editor.view.dom.closest('.rte-editor-wrapper')?.getBoundingClientRect();\n if (editorRect) {\n setPos({\n x: coords.left - editorRect.left,\n y: coords.bottom - editorRect.top + 4,\n });\n }\n setVisible(true);\n } else {\n if (visible) close();\n }\n };\n\n editor.on('selectionUpdate', handleUpdate);\n editor.on('update', handleUpdate);\n return () => {\n editor.off('selectionUpdate', handleUpdate);\n editor.off('update', handleUpdate);\n };\n }, [editor, visible, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setSelected((s) => (s + 1) % filtered.length);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setSelected((s) => (s - 1 + filtered.length) % filtered.length);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (filtered[selected]) executeItem(filtered[selected]);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n close();\n }\n };\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [visible, filtered, selected, executeItem, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) close();\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [visible, close]);\n\n if (!visible || filtered.length === 0) return null;\n\n return (\n <div ref={menuRef} className=\"rte-slash-menu\" style={{ left: pos.x, top: pos.y }}>\n {filtered.map((item, i) => (\n <button\n key={item.label}\n type=\"button\"\n className={`rte-slash-menu__item ${i === selected ? 'rte-slash-menu__item--active' : ''}`}\n onClick={() => executeItem(item)}\n onMouseEnter={() => setSelected(i)}\n >\n <span className=\"rte-slash-menu__icon\">{item.icon}</span>\n <div className=\"rte-slash-menu__text\">\n <span className=\"rte-slash-menu__label\">{item.label}</span>\n <span className=\"rte-slash-menu__desc\">{item.description}</span>\n </div>\n </button>\n ))}\n </div>\n );\n};\n\nexport default SlashMenu;\n"],"mappings":"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"}
@@ -1,78 +1,47 @@
1
- import { useEffect as d, useRef as i, useState as u } from "react";
2
- import { jsx as r, jsxs as a } from "react/jsx-runtime";
3
- var m = [
4
- "#000000",
5
- "#434343",
6
- "#666666",
7
- "#999999",
8
- "#cccccc",
9
- "#eeeeee",
10
- "#ffffff",
11
- "#ff0000",
12
- "#ff4500",
13
- "#ff8c00",
14
- "#ffd700",
15
- "#32cd32",
16
- "#00bfff",
17
- "#8a2be2",
18
- "#ff69b4",
19
- "#dc143c",
20
- "#ff6347",
21
- "#ffa500",
22
- "#9acd32",
23
- "#20b2aa",
24
- "#4169e1",
25
- "#9370db",
26
- "#db7093",
27
- "#b22222",
28
- "#d2691e",
29
- "#daa520",
30
- "#228b22",
31
- "#008b8b",
32
- "#191970",
33
- "#4b0082"
34
- ], v = ({ value: c, onChange: l, title: s, icon: f }) => {
35
- const [n, t] = u(!1), o = i(null);
36
- return d(() => {
37
- const e = (b) => {
38
- o.current && !o.current.contains(b.target) && t(!1);
39
- };
40
- return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
41
- }, []), /* @__PURE__ */ a("div", {
42
- ref: o,
43
- className: "rte-toolbar__color-picker",
44
- children: [/* @__PURE__ */ a("button", {
45
- type: "button",
46
- className: "rte-toolbar__btn",
47
- onClick: () => t(!n),
48
- title: s,
49
- children: [f, /* @__PURE__ */ r("span", {
50
- className: "rte-toolbar__color-indicator",
51
- style: { backgroundColor: c || "#000" }
52
- })]
53
- }), n && /* @__PURE__ */ a("div", {
54
- className: "rte-toolbar__color-dropdown",
55
- children: [m.map((e) => /* @__PURE__ */ r("button", {
56
- type: "button",
57
- className: `rte-toolbar__color-swatch ${e === c ? "rte-toolbar__color-swatch--active" : ""}`,
58
- style: { backgroundColor: e },
59
- onClick: () => {
60
- l(e), t(!1);
61
- },
62
- title: e
63
- }, e)), /* @__PURE__ */ r("button", {
64
- type: "button",
65
- className: "rte-toolbar__color-clear",
66
- onClick: () => {
67
- l(""), t(!1);
68
- },
69
- children: "Clear"
70
- })]
71
- })]
72
- });
73
- };
74
- export {
75
- v as ColorPicker
1
+ import { useEffect as e, useRef as t, useState as n } from "react";
2
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
3
+ //#region src/components/pro/RichTextEditor/Toolbar/ColorPicker.tsx
4
+ var a = /* @__PURE__ */ "#000000.#434343.#666666.#999999.#cccccc.#eeeeee.#ffffff.#ff0000.#ff4500.#ff8c00.#ffd700.#32cd32.#00bfff.#8a2be2.#ff69b4.#dc143c.#ff6347.#ffa500.#9acd32.#20b2aa.#4169e1.#9370db.#db7093.#b22222.#d2691e.#daa520.#228b22.#008b8b.#191970.#4b0082".split("."), o = ({ value: o, onChange: s, title: c, icon: l }) => {
5
+ let [u, d] = n(!1), f = t(null);
6
+ return e(() => {
7
+ let e = (e) => {
8
+ f.current && !f.current.contains(e.target) && d(!1);
9
+ };
10
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
11
+ }, []), /* @__PURE__ */ i("div", {
12
+ ref: f,
13
+ className: "rte-toolbar__color-picker",
14
+ children: [/* @__PURE__ */ i("button", {
15
+ type: "button",
16
+ className: "rte-toolbar__btn",
17
+ onClick: () => d(!u),
18
+ title: c,
19
+ children: [l, /* @__PURE__ */ r("span", {
20
+ className: "rte-toolbar__color-indicator",
21
+ style: { backgroundColor: o || "#000" }
22
+ })]
23
+ }), u && /* @__PURE__ */ i("div", {
24
+ className: "rte-toolbar__color-dropdown",
25
+ children: [a.map((e) => /* @__PURE__ */ r("button", {
26
+ type: "button",
27
+ className: `rte-toolbar__color-swatch ${e === o ? "rte-toolbar__color-swatch--active" : ""}`,
28
+ style: { backgroundColor: e },
29
+ onClick: () => {
30
+ s(e), d(!1);
31
+ },
32
+ title: e
33
+ }, e)), /* @__PURE__ */ r("button", {
34
+ type: "button",
35
+ className: "rte-toolbar__color-clear",
36
+ onClick: () => {
37
+ s(""), d(!1);
38
+ },
39
+ children: "Clear"
40
+ })]
41
+ })]
42
+ });
76
43
  };
44
+ //#endregion
45
+ export { o as ColorPicker };
77
46
 
78
47
  //# sourceMappingURL=ColorPicker.js.map