dishui 0.0.65 → 0.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +10 -11
  2. package/dist/chart.js +12 -46
  3. package/dist/code-editor.js +16 -43
  4. package/dist/components/Badge/index.js +10 -15
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Button/index.js +62 -89
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Card/index.d.ts +76 -0
  9. package/dist/components/Card/index.js +178 -69
  10. package/dist/components/Card/index.js.map +1 -1
  11. package/dist/components/Chart/Chart.js +25 -25
  12. package/dist/components/Chart/Chart.js.map +1 -1
  13. package/dist/components/Checkbox/index.js +57 -65
  14. package/dist/components/Checkbox/index.js.map +1 -1
  15. package/dist/components/ChoicePicker/index.d.ts +44 -0
  16. package/dist/components/ChoicePicker/index.js +81 -0
  17. package/dist/components/ChoicePicker/index.js.map +1 -0
  18. package/dist/components/Column/index.d.ts +28 -0
  19. package/dist/components/Column/index.js +30 -0
  20. package/dist/components/Column/index.js.map +1 -0
  21. package/dist/components/DateTimeInput/index.d.ts +44 -0
  22. package/dist/components/DateTimeInput/index.js +48 -0
  23. package/dist/components/DateTimeInput/index.js.map +1 -0
  24. package/dist/components/Demo/index.js +107 -107
  25. package/dist/components/Demo/index.js.map +1 -1
  26. package/dist/components/Divider/index.d.ts +20 -0
  27. package/dist/components/Divider/index.js +30 -0
  28. package/dist/components/Divider/index.js.map +1 -0
  29. package/dist/components/EmptyState/index.js +24 -24
  30. package/dist/components/EmptyState/index.js.map +1 -1
  31. package/dist/components/FileUploader/DropZone.js +134 -136
  32. package/dist/components/FileUploader/DropZone.js.map +1 -1
  33. package/dist/components/FileUploader/FileItem.js +159 -163
  34. package/dist/components/FileUploader/FileItem.js.map +1 -1
  35. package/dist/components/FileUploader/FileUploader.js +126 -127
  36. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  37. package/dist/components/FileUploader/UploadQueue.js +62 -62
  38. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  39. package/dist/components/FloatWindow/index.d.ts +28 -0
  40. package/dist/components/GridLayout/index.d.ts +42 -0
  41. package/dist/components/Icon/index.d.ts +24 -0
  42. package/dist/components/Icon/index.js +26 -0
  43. package/dist/components/Icon/index.js.map +1 -0
  44. package/dist/components/Image/index.d.ts +33 -0
  45. package/dist/components/Image/index.js +44 -0
  46. package/dist/components/Image/index.js.map +1 -0
  47. package/dist/components/Input/index.js +196 -197
  48. package/dist/components/Input/index.js.map +1 -1
  49. package/dist/components/Label/index.js +62 -74
  50. package/dist/components/Label/index.js.map +1 -1
  51. package/dist/components/Layout/index.js +134 -139
  52. package/dist/components/Layout/index.js.map +1 -1
  53. package/dist/components/List/index.js +45 -58
  54. package/dist/components/List/index.js.map +1 -1
  55. package/dist/components/Markdown/Markdown.js +106 -107
  56. package/dist/components/Markdown/Markdown.js.map +1 -1
  57. package/dist/components/Markdown/codeThemes.js +24 -33
  58. package/dist/components/Markdown/codeThemes.js.map +1 -1
  59. package/dist/components/Markdown/markdownComponents.js +203 -208
  60. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  61. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  62. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  63. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  64. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  65. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  66. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  67. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  68. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  69. package/dist/components/Modal/index.js +82 -82
  70. package/dist/components/Modal/index.js.map +1 -1
  71. package/dist/components/MultipleChoice/index.d.ts +44 -0
  72. package/dist/components/MultipleChoice/index.js +52 -0
  73. package/dist/components/MultipleChoice/index.js.map +1 -0
  74. package/dist/components/Notification/index.d.ts +17 -0
  75. package/dist/components/Page/index.js +40 -71
  76. package/dist/components/Page/index.js.map +1 -1
  77. package/dist/components/PageHeader/index.js +28 -28
  78. package/dist/components/PageHeader/index.js.map +1 -1
  79. package/dist/components/ProtectedRoute/index.js +8 -9
  80. package/dist/components/ProtectedRoute/index.js.map +1 -1
  81. package/dist/components/Row/index.d.ts +28 -0
  82. package/dist/components/Row/index.js +30 -0
  83. package/dist/components/Row/index.js.map +1 -0
  84. package/dist/components/Select/index.js +251 -254
  85. package/dist/components/Select/index.js.map +1 -1
  86. package/dist/components/SidebarToggleButton/index.js +56 -59
  87. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  88. package/dist/components/Slider/index.d.ts +39 -0
  89. package/dist/components/Slider/index.js +52 -0
  90. package/dist/components/Slider/index.js.map +1 -0
  91. package/dist/components/StatCard/index.d.ts +29 -1
  92. package/dist/components/StatCard/index.js +189 -86
  93. package/dist/components/StatCard/index.js.map +1 -1
  94. package/dist/components/Switch/index.d.ts +34 -0
  95. package/dist/components/Switch/index.js +55 -0
  96. package/dist/components/Switch/index.js.map +1 -0
  97. package/dist/components/Tab/index.d.ts +40 -0
  98. package/dist/components/Table/index.js +109 -121
  99. package/dist/components/Table/index.js.map +1 -1
  100. package/dist/components/Tabs/index.js +28 -38
  101. package/dist/components/Tabs/index.js.map +1 -1
  102. package/dist/components/Text/index.d.ts +43 -0
  103. package/dist/components/Text/index.js +55 -0
  104. package/dist/components/Text/index.js.map +1 -0
  105. package/dist/components/Tooltip/index.d.ts +23 -0
  106. package/dist/components/Tooltip/index.js +34 -0
  107. package/dist/components/Tooltip/index.js.map +1 -0
  108. package/dist/components/Tree/Tree.js +205 -205
  109. package/dist/components/Tree/Tree.js.map +1 -1
  110. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  111. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  112. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  113. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  114. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  115. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  117. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  118. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  119. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  120. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  121. package/dist/components/pro/Calendar/index.d.ts +7 -0
  122. package/dist/components/pro/Calendar/types.d.ts +151 -0
  123. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  124. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  125. package/dist/components/pro/Chat/index.d.ts +2 -0
  126. package/dist/components/pro/Chat/types.d.ts +84 -0
  127. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
  128. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  129. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  130. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  131. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  132. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  134. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  136. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  138. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  140. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  142. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  144. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  146. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  148. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  150. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  152. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  154. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/themes.js +513 -483
  156. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  158. package/dist/components/pro/CodeEditor/utils.js +171 -175
  159. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  160. package/dist/components/pro/DataTable/DataTable.js +305 -306
  161. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  162. package/dist/components/pro/DataTable/Filters.js +299 -314
  163. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  164. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  165. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  166. package/dist/components/pro/DataTable/PivotView.js +142 -144
  167. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  168. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  169. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  170. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  171. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  173. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  175. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  177. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  179. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  181. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  182. package/dist/components/pro/DataTable/extension.js +5 -5
  183. package/dist/components/pro/DataTable/extension.js.map +1 -1
  184. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  185. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  186. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  187. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  188. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  189. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  190. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  191. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  192. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  193. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  194. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  195. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  196. package/dist/components/pro/DataTable/utils.js +156 -168
  197. package/dist/components/pro/DataTable/utils.js.map +1 -1
  198. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  199. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  200. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  201. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  203. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
  205. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  207. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  209. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  211. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  212. package/dist/components/pro/Flow/Flow.js +920 -948
  213. package/dist/components/pro/Flow/Flow.js.map +1 -1
  214. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  215. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  216. package/dist/components/pro/Flow/archify/build.js +85 -94
  217. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  218. package/dist/components/pro/Flow/archify/convert.js +512 -519
  219. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/palette.js +87 -104
  221. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/presets.js +34 -37
  223. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/spec.js +7 -7
  225. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  226. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  227. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  228. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  229. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  231. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  233. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  235. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  237. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  238. package/dist/components/pro/Flow/constants.js +266 -278
  239. package/dist/components/pro/Flow/constants.js.map +1 -1
  240. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  241. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  242. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  243. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  245. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  247. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  248. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  249. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  251. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  252. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  253. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  254. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  255. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  257. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  259. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  261. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  263. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  265. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  267. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
  269. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  271. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  273. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  275. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  277. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  279. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  281. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  283. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  285. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  287. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  288. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  289. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  290. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  291. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  293. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  295. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  296. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
  297. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  298. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  299. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  301. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  303. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  305. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  307. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  309. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  311. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  313. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  315. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  317. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/shapes.js +556 -589
  319. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  321. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  323. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  324. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  325. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  326. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  327. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  329. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  331. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  333. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  335. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  337. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  339. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
  341. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  343. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  345. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
  347. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  349. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  350. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  351. package/dist/components/pro/Flow/types.js +26 -26
  352. package/dist/components/pro/Flow/types.js.map +1 -1
  353. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  354. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  355. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  356. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  358. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  360. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  361. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  362. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  363. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  364. package/dist/components/pro/Gantt/index.d.ts +6 -0
  365. package/dist/components/pro/Gantt/types.d.ts +478 -0
  366. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  367. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  368. package/dist/components/pro/Resizable/index.d.ts +2 -0
  369. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  370. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  371. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  372. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  373. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  374. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  376. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  378. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  380. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  382. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  384. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  386. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  388. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  390. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  392. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  394. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  396. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  398. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  400. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  402. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  404. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  406. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  408. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  410. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/types.js +75 -75
  412. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  413. package/dist/contexts/AppContext.d.ts +1 -1
  414. package/dist/contexts/AppContext.js +216 -221
  415. package/dist/contexts/AppContext.js.map +1 -1
  416. package/dist/data-table.js +15 -41
  417. package/dist/data-table.js.map +1 -1
  418. package/dist/dishui.css +1 -1
  419. package/dist/flow.js +27 -83
  420. package/dist/hooks/useClickOutside.js +18 -18
  421. package/dist/hooks/useClickOutside.js.map +1 -1
  422. package/dist/hooks/useContainerElement.js +9 -9
  423. package/dist/hooks/useContainerElement.js.map +1 -1
  424. package/dist/hooks/useControllableState.js +33 -35
  425. package/dist/hooks/useControllableState.js.map +1 -1
  426. package/dist/hooks/useCopyToClipboard.js +16 -16
  427. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  428. package/dist/hooks/useDebounce.js +14 -14
  429. package/dist/hooks/useDebounce.js.map +1 -1
  430. package/dist/hooks/useDraggable.js +50 -50
  431. package/dist/hooks/useDraggable.js.map +1 -1
  432. package/dist/hooks/useTableColumns.js +39 -41
  433. package/dist/hooks/useTableColumns.js.map +1 -1
  434. package/dist/hooks/useTableData.js +67 -68
  435. package/dist/hooks/useTableData.js.map +1 -1
  436. package/dist/index-nostyled.d.ts +8 -0
  437. package/dist/index.d.ts +27 -1
  438. package/dist/index.js +105 -241
  439. package/dist/layouts/MainLayout.js +56 -56
  440. package/dist/layouts/MainLayout.js.map +1 -1
  441. package/dist/layouts/Navbar.js +214 -214
  442. package/dist/layouts/Navbar.js.map +1 -1
  443. package/dist/layouts/Sidebar.js +184 -186
  444. package/dist/layouts/Sidebar.js.map +1 -1
  445. package/dist/layouts/headbar/Headbar.js +25 -25
  446. package/dist/layouts/headbar/Headbar.js.map +1 -1
  447. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  448. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  449. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  450. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  452. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  454. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  455. package/dist/lite.js +9 -24
  456. package/dist/markdown.js +4 -9
  457. package/dist/pages/components/Calendar/index.d.ts +3 -0
  458. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  459. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  460. package/dist/pages/components/Chat/index.d.ts +3 -0
  461. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  462. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  463. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  464. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  465. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  466. package/dist/pages/components/Gantt/index.d.ts +3 -0
  467. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  468. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  469. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  470. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  471. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  472. package/dist/pages/components/Notification/index.d.ts +3 -0
  473. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  474. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  475. package/dist/pages/components/Resizable/index.d.ts +3 -0
  476. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  477. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  478. package/dist/pages/components/Tab/index.d.ts +3 -0
  479. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  480. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  481. package/dist/styles/themeStyles.js +87 -86
  482. package/dist/styles/themeStyles.js.map +1 -1
  483. package/dist/utils/cn.d.ts +13 -0
  484. package/dist/utils/cn.js +16 -0
  485. package/dist/utils/cn.js.map +1 -0
  486. package/dist/utils/i18n.js +690 -602
  487. package/dist/utils/i18n.js.map +1 -1
  488. package/dist/utils/menu.js +94 -94
  489. package/dist/utils/menu.js.map +1 -1
  490. package/dist/utils/rehype-code-meta.js +14 -14
  491. package/dist/utils/rehype-code-meta.js.map +1 -1
  492. package/dist/utils/remark-code-meta.js +9 -9
  493. package/dist/utils/remark-code-meta.js.map +1 -1
  494. package/dist/utils/routerBuilder.js +59 -60
  495. package/dist/utils/routerBuilder.js.map +1 -1
  496. package/dist/utils/selection.js +28 -29
  497. package/dist/utils/selection.js.map +1 -1
  498. package/dist/utils/themes.js +275 -255
  499. package/dist/utils/themes.js.map +1 -1
  500. package/package.json +19 -6
package/dist/flow.js CHANGED
@@ -1,83 +1,27 @@
1
- import { BORDER_STYLE_OPTIONS as r, DASH_DENSITY_OPTIONS as t, DEFAULT_EDGE_DATA as m, DEFAULT_NODE_DATA as e, EDGE_LINE_STYLE_OPTIONS as i, EDGE_MARKER_OPTIONS as p, EDGE_TYPE_OPTIONS as E, GRADIENT_DIRECTION_OPTIONS as T, PALETTE_ITEMS as S, ROOT_CANVAS_ID as _, createEmptyDocument as f } from "./components/pro/Flow/constants.js";
2
- import { FlowProvider as I, useFlowContext as l } from "./components/pro/Flow/context/FlowContext.js";
3
- import { FlowUIProvider as a, useFlowUI as A } from "./components/pro/Flow/context/FlowUIContext.js";
4
- import { FlowAIProvider as P, useFlowAI as s } from "./components/pro/Flow/context/FlowAIContext.js";
5
- import { SVG_ICON_CATEGORIES as D, buildSvgMarkup as C, getAllSvgIcons as F, getSvgIcon as c, getSvgIconsByCategory as R } from "./components/pro/Flow/nodes/svgIcons.js";
6
- import w from "./components/pro/Flow/panels/ProjectTitle.js";
7
- import { isArchifySpec as d } from "./components/pro/Flow/archify/spec.js";
8
- import { ARCHIFY_BG as g, ARCHIFY_GRID as G, COMPONENT_STYLES as M, STATE_STYLES as v, componentStyle as h, stateStyle as x, variantEdgeStyle as B } from "./components/pro/Flow/archify/palette.js";
9
- import { archifyToFlowDocument as U } from "./components/pro/Flow/archify/convert.js";
10
- import { ARCHIFY_COMPONENT_LABELS as V, ARCHIFY_COMPONENT_ORDER as j, archifyStylePatch as k, inferComponentType as K } from "./components/pro/Flow/archify/presets.js";
11
- import { downloadDataURL as Z, exportCanvasToPNG as q, useFlowImportExport as z } from "./components/pro/Flow/hooks/useFlowImportExport.js";
12
- import { useLayoutActions as Q } from "./components/pro/Flow/hooks/useLayoutActions.js";
13
- import $, { FlowZoomControls as oo } from "./components/pro/Flow/panels/FlowToolbar.js";
14
- import to from "./components/pro/Flow/panels/ShapePalette.js";
15
- import { FLOW_NODE_TYPES as eo } from "./components/pro/Flow/types.js";
16
- import po from "./components/pro/Flow/panels/InspectorPanel.js";
17
- import To from "./components/pro/Flow/panels/OutlinePanel.js";
18
- import { AIPanelContent as _o } from "./components/pro/Flow/panels/AIPanel.js";
19
- import no from "./components/pro/Flow/panels/Breadcrumb.js";
20
- import lo from "./components/pro/Flow/panels/ContextMenu.js";
21
- import { useClipboard as ao } from "./components/pro/Flow/hooks/useClipboard.js";
22
- import No from "./components/pro/Flow/Flow.js";
23
- import { useNodeMutations as so } from "./components/pro/Flow/hooks/useNodeMutations.js";
24
- import { useEdgeMutations as Do } from "./components/pro/Flow/hooks/useEdgeMutations.js";
25
- import { useLineMutations as Fo } from "./components/pro/Flow/hooks/useLineMutations.js";
26
- import { useSelection as Ro } from "./components/pro/Flow/hooks/useSelection.js";
27
- export {
28
- _o as AIPanelContent,
29
- g as ARCHIFY_BG,
30
- V as ARCHIFY_COMPONENT_LABELS,
31
- j as ARCHIFY_COMPONENT_ORDER,
32
- G as ARCHIFY_GRID,
33
- r as BORDER_STYLE_OPTIONS,
34
- no as Breadcrumb,
35
- M as COMPONENT_STYLES,
36
- lo as ContextMenu,
37
- t as DASH_DENSITY_OPTIONS,
38
- m as DEFAULT_EDGE_DATA,
39
- e as DEFAULT_NODE_DATA,
40
- i as EDGE_LINE_STYLE_OPTIONS,
41
- p as EDGE_MARKER_OPTIONS,
42
- E as EDGE_TYPE_OPTIONS,
43
- eo as FLOW_NODE_TYPES,
44
- No as Flow,
45
- P as FlowAIProvider,
46
- I as FlowProvider,
47
- $ as FlowToolbar,
48
- a as FlowUIProvider,
49
- oo as FlowZoomControls,
50
- T as GRADIENT_DIRECTION_OPTIONS,
51
- po as InspectorPanel,
52
- To as OutlinePanel,
53
- S as PALETTE_ITEMS,
54
- w as ProjectTitle,
55
- _ as ROOT_CANVAS_ID,
56
- v as STATE_STYLES,
57
- D as SVG_ICON_CATEGORIES,
58
- to as ShapePalette,
59
- k as archifyStylePatch,
60
- U as archifyToFlowDocument,
61
- C as buildSvgMarkup,
62
- h as componentStyle,
63
- f as createEmptyDocument,
64
- Z as downloadDataURL,
65
- q as exportCanvasToPNG,
66
- F as getAllSvgIcons,
67
- c as getSvgIcon,
68
- R as getSvgIconsByCategory,
69
- K as inferComponentType,
70
- d as isArchifySpec,
71
- x as stateStyle,
72
- ao as useClipboard,
73
- Do as useEdgeMutations,
74
- s as useFlowAI,
75
- l as useFlowContext,
76
- z as useFlowImportExport,
77
- A as useFlowUI,
78
- Q as useLayoutActions,
79
- Fo as useLineMutations,
80
- so as useNodeMutations,
81
- Ro as useSelection,
82
- B as variantEdgeStyle
83
- };
1
+ import { BORDER_STYLE_OPTIONS as e, DASH_DENSITY_OPTIONS as t, DEFAULT_EDGE_DATA as n, DEFAULT_NODE_DATA as r, EDGE_LINE_STYLE_OPTIONS as i, EDGE_MARKER_OPTIONS as a, EDGE_TYPE_OPTIONS as o, GRADIENT_DIRECTION_OPTIONS as s, PALETTE_ITEMS as c, ROOT_CANVAS_ID as l, createEmptyDocument as u } from "./components/pro/Flow/constants.js";
2
+ import { FlowProvider as d, useFlowContext as f } from "./components/pro/Flow/context/FlowContext.js";
3
+ import { FlowUIProvider as p, useFlowUI as m } from "./components/pro/Flow/context/FlowUIContext.js";
4
+ import { FlowAIProvider as h, useFlowAI as g } from "./components/pro/Flow/context/FlowAIContext.js";
5
+ import { SVG_ICON_CATEGORIES as _, buildSvgMarkup as v, getAllSvgIcons as y, getSvgIcon as b, getSvgIconsByCategory as x } from "./components/pro/Flow/nodes/svgIcons.js";
6
+ import S from "./components/pro/Flow/panels/ProjectTitle.js";
7
+ import { isArchifySpec as C } from "./components/pro/Flow/archify/spec.js";
8
+ import { ARCHIFY_BG as w, ARCHIFY_GRID as T, COMPONENT_STYLES as E, STATE_STYLES as D, componentStyle as O, stateStyle as k, variantEdgeStyle as A } from "./components/pro/Flow/archify/palette.js";
9
+ import { archifyToFlowDocument as j } from "./components/pro/Flow/archify/convert.js";
10
+ import { ARCHIFY_COMPONENT_LABELS as M, ARCHIFY_COMPONENT_ORDER as N, archifyStylePatch as P, inferComponentType as F } from "./components/pro/Flow/archify/presets.js";
11
+ import { downloadDataURL as I, exportCanvasToPNG as L, useFlowImportExport as R } from "./components/pro/Flow/hooks/useFlowImportExport.js";
12
+ import { useLayoutActions as z } from "./components/pro/Flow/hooks/useLayoutActions.js";
13
+ import B, { FlowZoomControls as V } from "./components/pro/Flow/panels/FlowToolbar.js";
14
+ import H from "./components/pro/Flow/panels/ShapePalette.js";
15
+ import { FLOW_NODE_TYPES as U } from "./components/pro/Flow/types.js";
16
+ import W from "./components/pro/Flow/panels/InspectorPanel.js";
17
+ import G from "./components/pro/Flow/panels/OutlinePanel.js";
18
+ import { AIPanelContent as K } from "./components/pro/Flow/panels/AIPanel.js";
19
+ import q from "./components/pro/Flow/panels/Breadcrumb.js";
20
+ import J from "./components/pro/Flow/panels/ContextMenu.js";
21
+ import { useClipboard as Y } from "./components/pro/Flow/hooks/useClipboard.js";
22
+ import X from "./components/pro/Flow/Flow.js";
23
+ import { useNodeMutations as Z } from "./components/pro/Flow/hooks/useNodeMutations.js";
24
+ import { useEdgeMutations as Q } from "./components/pro/Flow/hooks/useEdgeMutations.js";
25
+ import { useLineMutations as $ } from "./components/pro/Flow/hooks/useLineMutations.js";
26
+ import { useSelection as ee } from "./components/pro/Flow/hooks/useSelection.js";
27
+ export { K as AIPanelContent, w as ARCHIFY_BG, M as ARCHIFY_COMPONENT_LABELS, N as ARCHIFY_COMPONENT_ORDER, T as ARCHIFY_GRID, e as BORDER_STYLE_OPTIONS, q as Breadcrumb, E as COMPONENT_STYLES, J as ContextMenu, t as DASH_DENSITY_OPTIONS, n as DEFAULT_EDGE_DATA, r as DEFAULT_NODE_DATA, i as EDGE_LINE_STYLE_OPTIONS, a as EDGE_MARKER_OPTIONS, o as EDGE_TYPE_OPTIONS, U as FLOW_NODE_TYPES, X as Flow, h as FlowAIProvider, d as FlowProvider, B as FlowToolbar, p as FlowUIProvider, V as FlowZoomControls, s as GRADIENT_DIRECTION_OPTIONS, W as InspectorPanel, G as OutlinePanel, c as PALETTE_ITEMS, S as ProjectTitle, l as ROOT_CANVAS_ID, D as STATE_STYLES, _ as SVG_ICON_CATEGORIES, H as ShapePalette, P as archifyStylePatch, j as archifyToFlowDocument, v as buildSvgMarkup, O as componentStyle, u as createEmptyDocument, I as downloadDataURL, L as exportCanvasToPNG, y as getAllSvgIcons, b as getSvgIcon, x as getSvgIconsByCategory, F as inferComponentType, C as isArchifySpec, k as stateStyle, Y as useClipboard, Q as useEdgeMutations, g as useFlowAI, f as useFlowContext, R as useFlowImportExport, m as useFlowUI, z as useLayoutActions, $ as useLineMutations, Z as useNodeMutations, ee as useSelection, A as variantEdgeStyle };
@@ -1,21 +1,21 @@
1
- import { useEffect as o } from "react";
2
- function i(e, t, n = !0) {
3
- o(() => {
4
- if (!n) return;
5
- const r = (u) => {
6
- e.current && !e.current.contains(u.target) && t();
7
- };
8
- return document.addEventListener("mousedown", r), () => {
9
- document.removeEventListener("mousedown", r);
10
- };
11
- }, [
12
- e,
13
- t,
14
- n
15
- ]);
1
+ import { useEffect as e } from "react";
2
+ //#region src/hooks/useClickOutside.ts
3
+ function t(t, n, r = !0) {
4
+ e(() => {
5
+ if (!r) return;
6
+ let e = (e) => {
7
+ t.current && !t.current.contains(e.target) && n();
8
+ };
9
+ return document.addEventListener("mousedown", e), () => {
10
+ document.removeEventListener("mousedown", e);
11
+ };
12
+ }, [
13
+ t,
14
+ n,
15
+ r
16
+ ]);
16
17
  }
17
- export {
18
- i as useClickOutside
19
- };
18
+ //#endregion
19
+ export { t as useClickOutside };
20
20
 
21
21
  //# sourceMappingURL=useClickOutside.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useClickOutside.js","names":[],"sources":["../../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect, RefObject } from 'react';\n\n/**\n * 监听元素外部点击事件的 Hook\n *\n * @param ref - 需要检测外部点击的元素 ref\n * @param onClickOutside - 外部点击时的回调函数\n * @param enabled - 是否启用监听(默认 true)\n *\n * @example\n * ```tsx\n * const ref = useRef<HTMLDivElement>(null);\n * useClickOutside(ref, () => setIsOpen(false), isOpen);\n * ```\n */\nexport function useClickOutside(\n ref: RefObject<HTMLElement | null>,\n onClickOutside: () => void,\n enabled: boolean = true\n): void {\n useEffect(() => {\n if (!enabled) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClickOutside();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [ref, onClickOutside, enabled]);\n}\n"],"mappings":";AAeA,SAAgB,EACZ,GACA,GACA,IAAmB,IACf;AACJ,EAAA,EAAA,MAAgB;AACZ,QAAI,CAAC,EAAS;AAEd,UAAM,IAAA,CAAsB,MAAkB;AAC1C,MAAI,EAAI,WAAW,CAAC,EAAI,QAAQ,SAAS,EAAE,MAAc,KACrD,EAAe;AAAA,IAEvB;AAEA,oBAAS,iBAAiB,aAAa,CAAkB,GACzD,MAAa;AACT,eAAS,oBAAoB,aAAa,CAAkB;AAAA,IAChE;AAAA,EACJ,GAAG;AAAA,IAAC;AAAA,IAAK;AAAA,IAAgB;AAAA,EAAO,CAAC;AACrC"}
1
+ {"version":3,"file":"useClickOutside.js","names":[],"sources":["../../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect, RefObject } from 'react';\n\n/**\n * 监听元素外部点击事件的 Hook\n *\n * @param ref - 需要检测外部点击的元素 ref\n * @param onClickOutside - 外部点击时的回调函数\n * @param enabled - 是否启用监听(默认 true)\n *\n * @example\n * ```tsx\n * const ref = useRef<HTMLDivElement>(null);\n * useClickOutside(ref, () => setIsOpen(false), isOpen);\n * ```\n */\nexport function useClickOutside(\n ref: RefObject<HTMLElement | null>,\n onClickOutside: () => void,\n enabled: boolean = true\n): void {\n useEffect(() => {\n if (!enabled) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClickOutside();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [ref, onClickOutside, enabled]);\n}\n"],"mappings":";;AAeA,SAAgB,EACZ,GACA,GACA,IAAmB,IACf;CACJ,QAAgB;EACZ,IAAI,CAAC,GAAS;EAEd,IAAM,KAAsB,MAAkB;GAC1C,AAAI,EAAI,WAAW,CAAC,EAAI,QAAQ,SAAS,EAAE,MAAc,KACrD,EAAe;EAEvB;EAGA,OADA,SAAS,iBAAiB,aAAa,CAAkB,SAC5C;GACT,SAAS,oBAAoB,aAAa,CAAkB;EAChE;CACJ,GAAG;EAAC;EAAK;EAAgB;CAAO,CAAC;AACrC"}
@@ -1,12 +1,12 @@
1
- import { useEffect as o, useState as l } from "react";
2
- function c(e, n) {
3
- const [u, t] = l(null);
4
- return o(() => {
5
- n?.current ? t(n.current) : t(e ? document.getElementById(e) : null);
6
- }, [e, n]), u;
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/hooks/useContainerElement.ts
3
+ function n(n, r) {
4
+ let [i, a] = t(null);
5
+ return e(() => {
6
+ r?.current ? a(r.current) : a(n ? document.getElementById(n) : null);
7
+ }, [n, r]), i;
7
8
  }
8
- export {
9
- c as useContainerElement
10
- };
9
+ //#endregion
10
+ export { n as useContainerElement };
11
11
 
12
12
  //# sourceMappingURL=useContainerElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContainerElement.js","names":[],"sources":["../../src/hooks/useContainerElement.ts"],"sourcesContent":["import { useState, useEffect, RefObject } from 'react';\n\n/**\n * 通过 ref 或 DOM id 解析容器元素的 Hook\n *\n * 统一了 ArticleControl 和 ArticleContextMenu 中重复的容器解析逻辑。\n * 使用 useState 和 useEffect 确保能在初次渲染后正确获取到 ref.current。\n *\n * @param targetId - 容器元素的 DOM id\n * @param targetRef - 容器元素的 React ref\n * @returns 解析到的 HTMLElement 或 null\n */\nexport function useContainerElement(\n targetId?: string,\n targetRef?: RefObject<HTMLElement | HTMLDivElement | null>\n): HTMLElement | null {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (targetRef?.current) {\n setContainer(targetRef.current);\n } else if (targetId) {\n setContainer(document.getElementById(targetId));\n } else {\n setContainer(null);\n }\n }, [targetId, targetRef]);\n\n return container;\n}\n"],"mappings":";AAYA,SAAgB,EACZ,GACA,GACkB;AAClB,QAAM,CAAC,GAAW,CAAA,IAAgB,EAA6B,IAAI;AAEnE,SAAA,EAAA,MAAgB;AACZ,IAAI,GAAW,UACX,EAAa,EAAU,OAAO,IAE9B,EADO,IACM,SAAS,eAAe,CAAQ,IAEhC,IAFiC;AAAA,EAItD,GAAG,CAAC,GAAU,CAAS,CAAC,GAEjB;AACX"}
1
+ {"version":3,"file":"useContainerElement.js","names":[],"sources":["../../src/hooks/useContainerElement.ts"],"sourcesContent":["import { useState, useEffect, RefObject } from 'react';\n\n/**\n * 通过 ref 或 DOM id 解析容器元素的 Hook\n *\n * 统一了 ArticleControl 和 ArticleContextMenu 中重复的容器解析逻辑。\n * 使用 useState 和 useEffect 确保能在初次渲染后正确获取到 ref.current。\n *\n * @param targetId - 容器元素的 DOM id\n * @param targetRef - 容器元素的 React ref\n * @returns 解析到的 HTMLElement 或 null\n */\nexport function useContainerElement(\n targetId?: string,\n targetRef?: RefObject<HTMLElement | HTMLDivElement | null>\n): HTMLElement | null {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (targetRef?.current) {\n setContainer(targetRef.current);\n } else if (targetId) {\n setContainer(document.getElementById(targetId));\n } else {\n setContainer(null);\n }\n }, [targetId, targetRef]);\n\n return container;\n}\n"],"mappings":";;AAYA,SAAgB,EACZ,GACA,GACkB;CAClB,IAAM,CAAC,GAAW,KAAgB,EAA6B,IAAI;CAYnE,OAVA,QAAgB;EACZ,AAAI,GAAW,UACX,EAAa,EAAU,OAAO,IAE9B,EADO,IACM,SAAS,eAAe,CAAQ,IAEhC,IAAI;CAEzB,GAAG,CAAC,GAAU,CAAS,CAAC,GAEjB;AACX"}
@@ -1,39 +1,37 @@
1
- import { useCallback as R, useEffect as h, useRef as f, useState as j } from "react";
2
- function g(e, r, u = (n, s) => n === s) {
3
- const [n, s] = j(e), c = f(r);
4
- c.current = r;
5
- const t = f(e), o = f(0), i = f(0);
6
- u(t.current, e) || (t.current = e, s(e));
7
- const y = R((p) => {
8
- o.current++, s(p);
9
- }, []), l = f(!0);
10
- return h(() => {
11
- if (l.current) {
12
- l.current = !1;
13
- return;
14
- }
15
- o.current !== i.current && (i.current = o.current, c.current?.(n));
16
- }, [n]), [n, y];
1
+ import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/hooks/useControllableState.ts
3
+ function i(i, a, o = (e, t) => e === t) {
4
+ let [s, c] = r(i), l = n(a);
5
+ l.current = a;
6
+ let u = n(i), d = n(0), f = n(0);
7
+ o(u.current, i) || (u.current = i, c(i));
8
+ let p = e((e) => {
9
+ d.current++, c(e);
10
+ }, []), m = n(!0);
11
+ return t(() => {
12
+ if (m.current) {
13
+ m.current = !1;
14
+ return;
15
+ }
16
+ d.current !== f.current && (f.current = d.current, l.current?.(s));
17
+ }, [s]), [s, p];
17
18
  }
18
- function a(e, r) {
19
- if (Object.is(e, r)) return !0;
20
- if (typeof e != "object" || e === null || typeof r != "object" || r === null) return !1;
21
- const u = Array.isArray(e), n = Array.isArray(r);
22
- if (u !== n) return !1;
23
- if (u && n) {
24
- if (e.length !== r.length) return !1;
25
- for (let t = 0; t < e.length; t++) if (!a(e[t], r[t])) return !1;
26
- return !0;
27
- }
28
- const s = Object.keys(e), c = Object.keys(r);
29
- if (s.length !== c.length) return !1;
30
- for (const t of s)
31
- if (!Object.prototype.hasOwnProperty.call(r, t) || !a(e[t], r[t])) return !1;
32
- return !0;
19
+ function a(e, t) {
20
+ if (Object.is(e, t)) return !0;
21
+ if (typeof e != "object" || !e || typeof t != "object" || !t) return !1;
22
+ let n = Array.isArray(e), r = Array.isArray(t);
23
+ if (n !== r) return !1;
24
+ if (n && r) {
25
+ if (e.length !== t.length) return !1;
26
+ for (let n = 0; n < e.length; n++) if (!a(e[n], t[n])) return !1;
27
+ return !0;
28
+ }
29
+ let i = Object.keys(e), o = Object.keys(t);
30
+ if (i.length !== o.length) return !1;
31
+ for (let n of i) if (!Object.prototype.hasOwnProperty.call(t, n) || !a(e[n], t[n])) return !1;
32
+ return !0;
33
33
  }
34
- export {
35
- a as deepEqual,
36
- g as useControllableState
37
- };
34
+ //#endregion
35
+ export { a as deepEqual, i as useControllableState };
38
36
 
39
37
  //# sourceMappingURL=useControllableState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useControllableState.js","names":[],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["import { useState, useRef, useCallback, useEffect } from 'react';\n\n/**\n * A hook for managing controllable state that can be either controlled (by parent via props)\n * or uncontrolled (managed internally). Handles bidirectional sync between external props\n * and internal state without causing infinite loops.\n *\n * Key design decisions:\n * - Returns the raw useState setter → always stable reference, safe for useMemo deps\n * - Uses a version counter to distinguish internal vs external state changes\n * - onChange is called via useEffect (not inside state updater) for React safety\n * - onChangeRef avoids stale closures for the onChange callback\n *\n * @param externalValue - The value from props (controlled mode when onChange is provided)\n * @param onChange - Optional callback to notify parent of internal state changes\n * @param isEqual - Optional equality check (defaults to reference equality)\n * @returns [currentValue, setValue] - The current value and a stable setter\n */\nexport function useControllableState<T>(\n externalValue: T,\n onChange?: (value: T) => void,\n isEqual: (a: T, b: T) => boolean = (a, b) => a === b\n): [T, React.Dispatch<React.SetStateAction<T>>] {\n const [internalValue, setInternalValue] = useState<T>(externalValue);\n\n // Always-current ref for onChange to avoid stale closures\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n // Track external value to detect parent-driven changes\n const prevExternalRef = useRef<T>(externalValue);\n\n // Version counter: incremented only by internal (user-driven) changes\n const internalVersionRef = useRef(0);\n const notifiedVersionRef = useRef(0);\n\n // Sync external → internal (during render, no extra render cycle)\n if (!isEqual(prevExternalRef.current, externalValue)) {\n prevExternalRef.current = externalValue;\n setInternalValue(externalValue);\n }\n\n // Wrap setter to track internal changes via version counter\n const setValue = useCallback(\n (updater: React.SetStateAction<T>) => {\n internalVersionRef.current++;\n setInternalValue(updater);\n },\n []\n );\n\n // Notify parent only when value changed from an internal action (not external sync)\n const isFirstRenderRef = useRef(true);\n useEffect(() => {\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false;\n return;\n }\n if (internalVersionRef.current !== notifiedVersionRef.current) {\n notifiedVersionRef.current = internalVersionRef.current;\n onChangeRef.current?.(internalValue);\n }\n }, [internalValue]);\n\n return [internalValue, setValue];\n}\n\n/**\n * Structural deep equality for the plain values used by DataTable state\n * (arrays, plain objects, primitives). Avoids the overhead and edge cases of\n * `JSON.stringify` (key ordering, `undefined`, functions) that the previous\n * implementation relied on.\n */\nexport function deepEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {\n return false;\n }\n\n const aIsArray = Array.isArray(a);\n const bIsArray = Array.isArray(b);\n if (aIsArray !== bIsArray) return false;\n\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n const aKeys = Object.keys(a as Record<string, unknown>);\n const bKeys = Object.keys(b as Record<string, unknown>);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (!deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";AAkBA,SAAgB,EACZ,GACA,GACA,IAAA,CAAoC,GAAG,MAAM,MAAM,GACP;AAC5C,QAAM,CAAC,GAAe,CAAA,IAAoB,EAAY,CAAa,GAG7D,IAAc,EAAO,CAAQ;AACnC,EAAA,EAAY,UAAU;AAGtB,QAAM,IAAkB,EAAU,CAAa,GAGzC,IAAqB,EAAO,CAAC,GAC7B,IAAqB,EAAO,CAAC;AAGnC,EAAK,EAAQ,EAAgB,SAAS,CAAa,MAC/C,EAAgB,UAAU,GAC1B,EAAiB,CAAa;AAIlC,QAAM,IAAW,EAAA,CACZ,MAAqC;AAClC,IAAA,EAAmB,WACnB,EAAiB,CAAO;AAAA,EAC5B,GACA,CAAC,CACL,GAGM,IAAmB,EAAO,EAAI;AACpC,SAAA,EAAA,MAAgB;AACZ,QAAI,EAAiB,SAAS;AAC1B,MAAA,EAAiB,UAAU;AAC3B;AAAA,IACJ;AACA,IAAI,EAAmB,YAAY,EAAmB,YAClD,EAAmB,UAAU,EAAmB,SAChD,EAAY,UAAU,CAAa;AAAA,EAE3C,GAAG,CAAC,CAAa,CAAC,GAEX,CAAC,GAAe,CAAQ;AACnC;AAQA,SAAgB,EAAa,GAAM,GAAe;AAC9C,MAAI,OAAO,GAAG,GAAG,CAAC,EAAG,QAAO;AAC5B,MAAI,OAAO,KAAM,YAAY,MAAM,QAAQ,OAAO,KAAM,YAAY,MAAM,KACtE,QAAO;AAGX,QAAM,IAAW,MAAM,QAAQ,CAAC,GAC1B,IAAW,MAAM,QAAQ,CAAC;AAChC,MAAI,MAAa,EAAU,QAAO;AAElC,MAAI,KAAY,GAAU;AACtB,QAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC1B,KAAI,CAAC,EAAU,EAAE,CAAA,GAAI,EAAE,CAAA,CAAE,EAAG,QAAO;AAEvC,WAAO;AAAA,EACX;AAEA,QAAM,IAAQ,OAAO,KAAK,CAA4B,GAChD,IAAQ,OAAO,KAAK,CAA4B;AACtD,MAAI,EAAM,WAAW,EAAM,OAAQ,QAAO;AAC1C,aAAW,KAAO;AAEd,QADI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,CAAG,KAC5C,CAAC,EAAW,EAA8B,CAAA,GAAO,EAA8B,CAAA,CAAI,EACnF,QAAO;AAGf,SAAO;AACX"}
1
+ {"version":3,"file":"useControllableState.js","names":[],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["import { useState, useRef, useCallback, useEffect } from 'react';\n\n/**\n * A hook for managing controllable state that can be either controlled (by parent via props)\n * or uncontrolled (managed internally). Handles bidirectional sync between external props\n * and internal state without causing infinite loops.\n *\n * Key design decisions:\n * - Returns the raw useState setter → always stable reference, safe for useMemo deps\n * - Uses a version counter to distinguish internal vs external state changes\n * - onChange is called via useEffect (not inside state updater) for React safety\n * - onChangeRef avoids stale closures for the onChange callback\n *\n * @param externalValue - The value from props (controlled mode when onChange is provided)\n * @param onChange - Optional callback to notify parent of internal state changes\n * @param isEqual - Optional equality check (defaults to reference equality)\n * @returns [currentValue, setValue] - The current value and a stable setter\n */\nexport function useControllableState<T>(\n externalValue: T,\n onChange?: (value: T) => void,\n isEqual: (a: T, b: T) => boolean = (a, b) => a === b\n): [T, React.Dispatch<React.SetStateAction<T>>] {\n const [internalValue, setInternalValue] = useState<T>(externalValue);\n\n // Always-current ref for onChange to avoid stale closures\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n // Track external value to detect parent-driven changes\n const prevExternalRef = useRef<T>(externalValue);\n\n // Version counter: incremented only by internal (user-driven) changes\n const internalVersionRef = useRef(0);\n const notifiedVersionRef = useRef(0);\n\n // Sync external → internal (during render, no extra render cycle)\n if (!isEqual(prevExternalRef.current, externalValue)) {\n prevExternalRef.current = externalValue;\n setInternalValue(externalValue);\n }\n\n // Wrap setter to track internal changes via version counter\n const setValue = useCallback(\n (updater: React.SetStateAction<T>) => {\n internalVersionRef.current++;\n setInternalValue(updater);\n },\n []\n );\n\n // Notify parent only when value changed from an internal action (not external sync)\n const isFirstRenderRef = useRef(true);\n useEffect(() => {\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false;\n return;\n }\n if (internalVersionRef.current !== notifiedVersionRef.current) {\n notifiedVersionRef.current = internalVersionRef.current;\n onChangeRef.current?.(internalValue);\n }\n }, [internalValue]);\n\n return [internalValue, setValue];\n}\n\n/**\n * Structural deep equality for the plain values used by DataTable state\n * (arrays, plain objects, primitives). Avoids the overhead and edge cases of\n * `JSON.stringify` (key ordering, `undefined`, functions) that the previous\n * implementation relied on.\n */\nexport function deepEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {\n return false;\n }\n\n const aIsArray = Array.isArray(a);\n const bIsArray = Array.isArray(b);\n if (aIsArray !== bIsArray) return false;\n\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n const aKeys = Object.keys(a as Record<string, unknown>);\n const bKeys = Object.keys(b as Record<string, unknown>);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (!deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";;AAkBA,SAAgB,EACZ,GACA,GACA,KAAoC,GAAG,MAAM,MAAM,GACP;CAC5C,IAAM,CAAC,GAAe,KAAoB,EAAY,CAAa,GAG7D,IAAc,EAAO,CAAQ;CACnC,EAAY,UAAU;CAGtB,IAAM,IAAkB,EAAU,CAAa,GAGzC,IAAqB,EAAO,CAAC,GAC7B,IAAqB,EAAO,CAAC;CAGnC,AAAK,EAAQ,EAAgB,SAAS,CAAa,MAC/C,EAAgB,UAAU,GAC1B,EAAiB,CAAa;CAIlC,IAAM,IAAW,GACZ,MAAqC;EAElC,AADA,EAAmB,WACnB,EAAiB,CAAO;CAC5B,GACA,CAAC,CACL,GAGM,IAAmB,EAAO,EAAI;CAYpC,OAXA,QAAgB;EACZ,IAAI,EAAiB,SAAS;GAC1B,EAAiB,UAAU;GAC3B;EACJ;EACA,AAAI,EAAmB,YAAY,EAAmB,YAClD,EAAmB,UAAU,EAAmB,SAChD,EAAY,UAAU,CAAa;CAE3C,GAAG,CAAC,CAAa,CAAC,GAEX,CAAC,GAAe,CAAQ;AACnC;AAQA,SAAgB,EAAa,GAAM,GAAe;CAC9C,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO;CAC5B,IAAI,OAAO,KAAM,aAAY,KAAc,OAAO,KAAM,aAAY,GAChE,OAAO;CAGX,IAAM,IAAW,MAAM,QAAQ,CAAC,GAC1B,IAAW,MAAM,QAAQ,CAAC;CAChC,IAAI,MAAa,GAAU,OAAO;CAElC,IAAI,KAAY,GAAU;EACtB,IAAI,EAAE,WAAW,EAAE,QAAQ,OAAO;EAClC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAC1B,IAAI,CAAC,EAAU,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO;EAEvC,OAAO;CACX;CAEA,IAAM,IAAQ,OAAO,KAAK,CAA4B,GAChD,IAAQ,OAAO,KAAK,CAA4B;CACtD,IAAI,EAAM,WAAW,EAAM,QAAQ,OAAO;CAC1C,KAAK,IAAM,KAAO,GAEd,IADI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,CAAG,KAC5C,CAAC,EAAW,EAA8B,IAAO,EAA8B,EAAI,GACnF,OAAO;CAGf,OAAO;AACX"}
@@ -1,19 +1,19 @@
1
- import { useCallback as c, useState as i } from "react";
2
- function s(o = 2e3) {
3
- const [t, e] = i(!1);
4
- return {
5
- copied: t,
6
- copy: c(async (r) => {
7
- try {
8
- await navigator.clipboard.writeText(r), e(!0), setTimeout(() => e(!1), o);
9
- } catch (a) {
10
- console.error("Failed to copy to clipboard:", a);
11
- }
12
- }, [o])
13
- };
1
+ import { useCallback as e, useState as t } from "react";
2
+ //#region src/hooks/useCopyToClipboard.ts
3
+ function n(n = 2e3) {
4
+ let [r, i] = t(!1);
5
+ return {
6
+ copied: r,
7
+ copy: e(async (e) => {
8
+ try {
9
+ await navigator.clipboard.writeText(e), i(!0), setTimeout(() => i(!1), n);
10
+ } catch (e) {
11
+ console.error("Failed to copy to clipboard:", e);
12
+ }
13
+ }, [n])
14
+ };
14
15
  }
15
- export {
16
- s as useCopyToClipboard
17
- };
16
+ //#endregion
17
+ export { n as useCopyToClipboard };
18
18
 
19
19
  //# sourceMappingURL=useCopyToClipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCopyToClipboard.js","names":[],"sources":["../../src/hooks/useCopyToClipboard.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\n\n/**\n * 复制到剪贴板的 Hook,带有自动重置的反馈状态\n *\n * @param resetDelay - 复制成功后 `copied` 状态重置的延迟(毫秒),默认 2000\n * @returns `{ copied, copy }` — `copied` 为当前复制反馈状态,`copy` 为触发复制的函数\n *\n * @example\n * ```tsx\n * const { copied, copy } = useCopyToClipboard();\n * <button onClick={() => copy(text)}>\n * {copied ? '已复制' : '复制'}\n * </button>\n * ```\n */\nexport function useCopyToClipboard(resetDelay: number = 2000) {\n const [copied, setCopied] = useState(false);\n\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), resetDelay);\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n },\n [resetDelay]\n );\n\n return { copied, copy };\n}\n"],"mappings":";AAgBA,SAAgB,EAAmB,IAAqB,KAAM;AAC1D,QAAM,CAAC,GAAQ,CAAA,IAAa,EAAS,EAAK;AAe1C,SAAO;AAAA,IAAE,QAAA;AAAA,IAAQ,MAbJ,EACT,OAAO,MAAiB;AACpB,UAAI;AACA,cAAM,UAAU,UAAU,UAAU,CAAI,GACxC,EAAU,EAAI,GACd,WAAA,MAAiB,EAAU,EAAK,GAAG,CAAU;AAAA,MACjD,SAAS,GAAK;AACV,gBAAQ,MAAM,gCAAgC,CAAG;AAAA,MACrD;AAAA,IACJ,GACA,CAAC,CAAU,CAGE;AAAA,EAAK;AAC1B"}
1
+ {"version":3,"file":"useCopyToClipboard.js","names":[],"sources":["../../src/hooks/useCopyToClipboard.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\n\n/**\n * 复制到剪贴板的 Hook,带有自动重置的反馈状态\n *\n * @param resetDelay - 复制成功后 `copied` 状态重置的延迟(毫秒),默认 2000\n * @returns `{ copied, copy }` — `copied` 为当前复制反馈状态,`copy` 为触发复制的函数\n *\n * @example\n * ```tsx\n * const { copied, copy } = useCopyToClipboard();\n * <button onClick={() => copy(text)}>\n * {copied ? '已复制' : '复制'}\n * </button>\n * ```\n */\nexport function useCopyToClipboard(resetDelay: number = 2000) {\n const [copied, setCopied] = useState(false);\n\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), resetDelay);\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n },\n [resetDelay]\n );\n\n return { copied, copy };\n}\n"],"mappings":";;AAgBA,SAAgB,EAAmB,IAAqB,KAAM;CAC1D,IAAM,CAAC,GAAQ,KAAa,EAAS,EAAK;CAe1C,OAAO;EAAE;EAAQ,MAbJ,EACT,OAAO,MAAiB;GACpB,IAAI;IAGA,AAFA,MAAM,UAAU,UAAU,UAAU,CAAI,GACxC,EAAU,EAAI,GACd,iBAAiB,EAAU,EAAK,GAAG,CAAU;GACjD,SAAS,GAAK;IACV,QAAQ,MAAM,gCAAgC,CAAG;GACrD;EACJ,GACA,CAAC,CAAU,CAGE;CAAK;AAC1B"}
@@ -1,17 +1,17 @@
1
- import { useEffect as r, useState as c } from "react";
2
- function f(e, t) {
3
- const [o, u] = c(e);
4
- return r(() => {
5
- const n = setTimeout(() => {
6
- u(e);
7
- }, t);
8
- return () => {
9
- clearTimeout(n);
10
- };
11
- }, [e, t]), o;
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/hooks/useDebounce.ts
3
+ function n(n, r) {
4
+ let [i, a] = t(n);
5
+ return e(() => {
6
+ let e = setTimeout(() => {
7
+ a(n);
8
+ }, r);
9
+ return () => {
10
+ clearTimeout(e);
11
+ };
12
+ }, [n, r]), i;
12
13
  }
13
- export {
14
- f as useDebounce
15
- };
14
+ //#endregion
15
+ export { n as useDebounce };
16
16
 
17
17
  //# sourceMappingURL=useDebounce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDebounce.js","names":[],"sources":["../../src/hooks/useDebounce.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\n/**\n * A hook that returns a debounced value.\n * @param value The value to debounce.\n * @param delay The delay in milliseconds.\n * @returns The debounced value.\n */\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"mappings":";AAQA,SAAgB,EAAe,GAAU,GAAkB;AACvD,QAAM,CAAC,GAAgB,CAAA,IAAqB,EAAY,CAAK;AAE7D,SAAA,EAAA,MAAgB;AACZ,UAAM,IAAU,WAAA,MAAiB;AAC7B,MAAA,EAAkB,CAAK;AAAA,IAC3B,GAAG,CAAK;AAER,WAAA,MAAa;AACT,mBAAa,CAAO;AAAA,IACxB;AAAA,EACJ,GAAG,CAAC,GAAO,CAAK,CAAC,GAEV;AACX"}
1
+ {"version":3,"file":"useDebounce.js","names":[],"sources":["../../src/hooks/useDebounce.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\n/**\n * A hook that returns a debounced value.\n * @param value The value to debounce.\n * @param delay The delay in milliseconds.\n * @returns The debounced value.\n */\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"mappings":";;AAQA,SAAgB,EAAe,GAAU,GAAkB;CACvD,IAAM,CAAC,GAAgB,KAAqB,EAAY,CAAK;CAY7D,OAVA,QAAgB;EACZ,IAAM,IAAU,iBAAiB;GAC7B,EAAkB,CAAK;EAC3B,GAAG,CAAK;EAER,aAAa;GACT,aAAa,CAAO;EACxB;CACJ,GAAG,CAAC,GAAO,CAAK,CAAC,GAEV;AACX"}
@@ -1,54 +1,54 @@
1
- import { useCallback as l, useEffect as E, useState as h } from "react";
2
- function M({ initialPosition: v, boundarySize: s = {
3
- width: 0,
4
- height: 0
1
+ import { useCallback as e, useEffect as t, useState as n } from "react";
2
+ //#region src/hooks/useDraggable.ts
3
+ function r({ initialPosition: r, boundarySize: i = {
4
+ width: 0,
5
+ height: 0
5
6
  } }) {
6
- const [e, g] = h(v), [u, r] = h(!1), [a, m] = h({
7
- x: 0,
8
- y: 0
9
- }), f = l((t) => {
10
- t.target.closest(".toc-item, .toc-search, input") || (r(!0), m({
11
- x: t.clientX - e.x,
12
- y: t.clientY - e.y
13
- }));
14
- }, [e]), p = l((t) => {
15
- if (t.target.closest(".toc-item, .toc-search, input")) return;
16
- const o = t.touches[0];
17
- r(!0), m({
18
- x: o.clientX - e.x,
19
- y: o.clientY - e.y
20
- });
21
- }, [e]);
22
- return E(() => {
23
- if (!u) return;
24
- const t = (n, i) => {
25
- const w = Math.max(0, Math.min(window.innerWidth - s.width, n - a.x)), x = Math.max(0, Math.min(window.innerHeight - s.height, i - a.y));
26
- g({
27
- x: w,
28
- y: x
29
- });
30
- }, o = (n) => t(n.clientX, n.clientY), d = (n) => {
31
- n.preventDefault();
32
- const i = n.touches[0];
33
- t(i.clientX, i.clientY);
34
- }, c = () => r(!1);
35
- return document.addEventListener("mousemove", o), document.addEventListener("mouseup", c), document.addEventListener("touchmove", d, { passive: !1 }), document.addEventListener("touchend", c), () => {
36
- document.removeEventListener("mousemove", o), document.removeEventListener("mouseup", c), document.removeEventListener("touchmove", d), document.removeEventListener("touchend", c);
37
- };
38
- }, [
39
- u,
40
- a,
41
- s.width,
42
- s.height
43
- ]), {
44
- position: e,
45
- isDragging: u,
46
- handleMouseDown: f,
47
- handleTouchStart: p
48
- };
7
+ let [a, o] = n(r), [s, c] = n(!1), [l, u] = n({
8
+ x: 0,
9
+ y: 0
10
+ }), d = e((e) => {
11
+ e.target.closest(".toc-item, .toc-search, input") || (c(!0), u({
12
+ x: e.clientX - a.x,
13
+ y: e.clientY - a.y
14
+ }));
15
+ }, [a]), f = e((e) => {
16
+ if (e.target.closest(".toc-item, .toc-search, input")) return;
17
+ let t = e.touches[0];
18
+ c(!0), u({
19
+ x: t.clientX - a.x,
20
+ y: t.clientY - a.y
21
+ });
22
+ }, [a]);
23
+ return t(() => {
24
+ if (!s) return;
25
+ let e = (e, t) => {
26
+ let n = Math.max(0, Math.min(window.innerWidth - i.width, e - l.x)), r = Math.max(0, Math.min(window.innerHeight - i.height, t - l.y));
27
+ o({
28
+ x: n,
29
+ y: r
30
+ });
31
+ }, t = (t) => e(t.clientX, t.clientY), n = (t) => {
32
+ t.preventDefault();
33
+ let n = t.touches[0];
34
+ e(n.clientX, n.clientY);
35
+ }, r = () => c(!1);
36
+ return document.addEventListener("mousemove", t), document.addEventListener("mouseup", r), document.addEventListener("touchmove", n, { passive: !1 }), document.addEventListener("touchend", r), () => {
37
+ document.removeEventListener("mousemove", t), document.removeEventListener("mouseup", r), document.removeEventListener("touchmove", n), document.removeEventListener("touchend", r);
38
+ };
39
+ }, [
40
+ s,
41
+ l,
42
+ i.width,
43
+ i.height
44
+ ]), {
45
+ position: a,
46
+ isDragging: s,
47
+ handleMouseDown: d,
48
+ handleTouchStart: f
49
+ };
49
50
  }
50
- export {
51
- M as useDraggable
52
- };
51
+ //#endregion
52
+ export { r as useDraggable };
53
53
 
54
54
  //# sourceMappingURL=useDraggable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDraggable.js","names":[],"sources":["../../src/hooks/useDraggable.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\n\nexport interface DraggableOptions {\n /** 初始位置 */\n initialPosition: { x: number; y: number };\n /** 拖拽对象尺寸,用于边界约束 */\n boundarySize?: { width: number; height: number };\n}\n\nexport interface DraggableResult {\n /** 当前位置 */\n position: { x: number; y: number };\n /** 是否正在拖拽 */\n isDragging: boolean;\n /** 鼠标按下事件处理器(绑定到可拖拽元素) */\n handleMouseDown: (e: React.MouseEvent) => void;\n /** 触摸开始事件处理器(绑定到可拖拽元素) */\n handleTouchStart: (e: React.TouchEvent) => void;\n}\n\n/**\n * 可拖拽定位的 Hook\n *\n * 提取自 ArticleControl 组件的拖拽逻辑,支持鼠标和触摸操作,\n * 并自动进行视口边界约束。\n *\n * @example\n * ```tsx\n * const { position, isDragging, handleMouseDown, handleTouchStart } = useDraggable({\n * initialPosition: { x: 100, y: 100 },\n * boundarySize: { width: 280, height: 60 },\n * });\n *\n * <div\n * style={{ left: position.x, top: position.y, cursor: isDragging ? 'grabbing' : 'grab' }}\n * onMouseDown={handleMouseDown}\n * onTouchStart={handleTouchStart}\n * />\n * ```\n */\nexport function useDraggable({\n initialPosition,\n boundarySize = { width: 0, height: 0 },\n}: DraggableOptions): DraggableResult {\n const [position, setPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n // 不在可交互子元素上拖动\n if ((e.target as HTMLElement).closest('.toc-item, .toc-search, input')) return;\n setIsDragging(true);\n setDragOffset({\n x: e.clientX - position.x,\n y: e.clientY - position.y,\n });\n },\n [position]\n );\n\n const handleTouchStart = useCallback(\n (e: React.TouchEvent) => {\n if ((e.target as HTMLElement).closest('.toc-item, .toc-search, input')) return;\n const touch = e.touches[0];\n setIsDragging(true);\n setDragOffset({\n x: touch.clientX - position.x,\n y: touch.clientY - position.y,\n });\n },\n [position]\n );\n\n useEffect(() => {\n if (!isDragging) return;\n\n const clamp = (clientX: number, clientY: number) => {\n const newX = Math.max(\n 0,\n Math.min(window.innerWidth - boundarySize.width, clientX - dragOffset.x)\n );\n const newY = Math.max(\n 0,\n Math.min(window.innerHeight - boundarySize.height, clientY - dragOffset.y)\n );\n setPosition({ x: newX, y: newY });\n };\n\n const handleMouseMove = (e: MouseEvent) => clamp(e.clientX, e.clientY);\n const handleTouchMove = (e: TouchEvent) => {\n e.preventDefault();\n const touch = e.touches[0];\n clamp(touch.clientX, touch.clientY);\n };\n const stop = () => setIsDragging(false);\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', stop);\n document.addEventListener('touchmove', handleTouchMove, { passive: false });\n document.addEventListener('touchend', stop);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', stop);\n document.removeEventListener('touchmove', handleTouchMove);\n document.removeEventListener('touchend', stop);\n };\n }, [isDragging, dragOffset, boundarySize.width, boundarySize.height]);\n\n return { position, isDragging, handleMouseDown, handleTouchStart };\n}\n"],"mappings":";AAwCA,SAAgB,EAAa,EACzB,iBAAA,GACA,cAAA,IAAe;AAAA,EAAE,OAAO;AAAA,EAAG,QAAQ;AAAE,EAAA,GACH;AAClC,QAAM,CAAC,GAAU,CAAA,IAAe,EAAS,CAAe,GAClD,CAAC,GAAY,CAAA,IAAiB,EAAS,EAAK,GAC5C,CAAC,GAAY,CAAA,IAAiB,EAAS;AAAA,IAAE,GAAG;AAAA,IAAG,GAAG;AAAA,EAAE,CAAC,GAErD,IAAkB,EAAA,CACnB,MAAwB;AAErB,IAAK,EAAE,OAAuB,QAAQ,+BAA+B,MACrE,EAAc,EAAI,GAClB,EAAc;AAAA,MACV,GAAG,EAAE,UAAU,EAAS;AAAA,MACxB,GAAG,EAAE,UAAU,EAAS;AAAA,IAC5B,CAAC;AAAA,EACL,GACA,CAAC,CAAQ,CACb,GAEM,IAAmB,EAAA,CACpB,MAAwB;AACrB,QAAK,EAAE,OAAuB,QAAQ,+BAA+B,EAAG;AACxE,UAAM,IAAQ,EAAE,QAAQ,CAAA;AACxB,IAAA,EAAc,EAAI,GAClB,EAAc;AAAA,MACV,GAAG,EAAM,UAAU,EAAS;AAAA,MAC5B,GAAG,EAAM,UAAU,EAAS;AAAA,IAChC,CAAC;AAAA,EACL,GACA,CAAC,CAAQ,CACb;AAEA,SAAA,EAAA,MAAgB;AACZ,QAAI,CAAC,EAAY;AAEjB,UAAM,IAAA,CAAS,GAAiB,MAAoB;AAChD,YAAM,IAAO,KAAK,IACd,GACA,KAAK,IAAI,OAAO,aAAa,EAAa,OAAO,IAAU,EAAW,CAAC,CAC3E,GACM,IAAO,KAAK,IACd,GACA,KAAK,IAAI,OAAO,cAAc,EAAa,QAAQ,IAAU,EAAW,CAAC,CAC7E;AACA,MAAA,EAAY;AAAA,QAAE,GAAG;AAAA,QAAM,GAAG;AAAA,MAAK,CAAC;AAAA,IACpC,GAEM,IAAA,CAAmB,MAAkB,EAAM,EAAE,SAAS,EAAE,OAAO,GAC/D,IAAA,CAAmB,MAAkB;AACvC,MAAA,EAAE,eAAe;AACjB,YAAM,IAAQ,EAAE,QAAQ,CAAA;AACxB,MAAA,EAAM,EAAM,SAAS,EAAM,OAAO;AAAA,IACtC,GACM,IAAA,MAAa,EAAc,EAAK;AAEtC,oBAAS,iBAAiB,aAAa,CAAe,GACtD,SAAS,iBAAiB,WAAW,CAAI,GACzC,SAAS,iBAAiB,aAAa,GAAiB,EAAE,SAAS,GAAM,CAAC,GAC1E,SAAS,iBAAiB,YAAY,CAAI,GAE1C,MAAa;AACT,eAAS,oBAAoB,aAAa,CAAe,GACzD,SAAS,oBAAoB,WAAW,CAAI,GAC5C,SAAS,oBAAoB,aAAa,CAAe,GACzD,SAAS,oBAAoB,YAAY,CAAI;AAAA,IACjD;AAAA,EACJ,GAAG;AAAA,IAAC;AAAA,IAAY;AAAA,IAAY,EAAa;AAAA,IAAO,EAAa;AAAA,EAAM,CAAC,GAE7D;AAAA,IAAE,UAAA;AAAA,IAAU,YAAA;AAAA,IAAY,iBAAA;AAAA,IAAiB,kBAAA;AAAA,EAAiB;AACrE"}
1
+ {"version":3,"file":"useDraggable.js","names":[],"sources":["../../src/hooks/useDraggable.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\n\nexport interface DraggableOptions {\n /** 初始位置 */\n initialPosition: { x: number; y: number };\n /** 拖拽对象尺寸,用于边界约束 */\n boundarySize?: { width: number; height: number };\n}\n\nexport interface DraggableResult {\n /** 当前位置 */\n position: { x: number; y: number };\n /** 是否正在拖拽 */\n isDragging: boolean;\n /** 鼠标按下事件处理器(绑定到可拖拽元素) */\n handleMouseDown: (e: React.MouseEvent) => void;\n /** 触摸开始事件处理器(绑定到可拖拽元素) */\n handleTouchStart: (e: React.TouchEvent) => void;\n}\n\n/**\n * 可拖拽定位的 Hook\n *\n * 提取自 ArticleControl 组件的拖拽逻辑,支持鼠标和触摸操作,\n * 并自动进行视口边界约束。\n *\n * @example\n * ```tsx\n * const { position, isDragging, handleMouseDown, handleTouchStart } = useDraggable({\n * initialPosition: { x: 100, y: 100 },\n * boundarySize: { width: 280, height: 60 },\n * });\n *\n * <div\n * style={{ left: position.x, top: position.y, cursor: isDragging ? 'grabbing' : 'grab' }}\n * onMouseDown={handleMouseDown}\n * onTouchStart={handleTouchStart}\n * />\n * ```\n */\nexport function useDraggable({\n initialPosition,\n boundarySize = { width: 0, height: 0 },\n}: DraggableOptions): DraggableResult {\n const [position, setPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n // 不在可交互子元素上拖动\n if ((e.target as HTMLElement).closest('.toc-item, .toc-search, input')) return;\n setIsDragging(true);\n setDragOffset({\n x: e.clientX - position.x,\n y: e.clientY - position.y,\n });\n },\n [position]\n );\n\n const handleTouchStart = useCallback(\n (e: React.TouchEvent) => {\n if ((e.target as HTMLElement).closest('.toc-item, .toc-search, input')) return;\n const touch = e.touches[0];\n setIsDragging(true);\n setDragOffset({\n x: touch.clientX - position.x,\n y: touch.clientY - position.y,\n });\n },\n [position]\n );\n\n useEffect(() => {\n if (!isDragging) return;\n\n const clamp = (clientX: number, clientY: number) => {\n const newX = Math.max(\n 0,\n Math.min(window.innerWidth - boundarySize.width, clientX - dragOffset.x)\n );\n const newY = Math.max(\n 0,\n Math.min(window.innerHeight - boundarySize.height, clientY - dragOffset.y)\n );\n setPosition({ x: newX, y: newY });\n };\n\n const handleMouseMove = (e: MouseEvent) => clamp(e.clientX, e.clientY);\n const handleTouchMove = (e: TouchEvent) => {\n e.preventDefault();\n const touch = e.touches[0];\n clamp(touch.clientX, touch.clientY);\n };\n const stop = () => setIsDragging(false);\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', stop);\n document.addEventListener('touchmove', handleTouchMove, { passive: false });\n document.addEventListener('touchend', stop);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', stop);\n document.removeEventListener('touchmove', handleTouchMove);\n document.removeEventListener('touchend', stop);\n };\n }, [isDragging, dragOffset, boundarySize.width, boundarySize.height]);\n\n return { position, isDragging, handleMouseDown, handleTouchStart };\n}\n"],"mappings":";;AAwCA,SAAgB,EAAa,EACzB,oBACA,kBAAe;CAAE,OAAO;CAAG,QAAQ;AAAE,KACH;CAClC,IAAM,CAAC,GAAU,KAAe,EAAS,CAAe,GAClD,CAAC,GAAY,KAAiB,EAAS,EAAK,GAC5C,CAAC,GAAY,KAAiB,EAAS;EAAE,GAAG;EAAG,GAAG;CAAE,CAAC,GAErD,IAAkB,GACnB,MAAwB;EAEhB,EAAE,OAAuB,QAAQ,+BAA+B,MACrE,EAAc,EAAI,GAClB,EAAc;GACV,GAAG,EAAE,UAAU,EAAS;GACxB,GAAG,EAAE,UAAU,EAAS;EAC5B,CAAC;CACL,GACA,CAAC,CAAQ,CACb,GAEM,IAAmB,GACpB,MAAwB;EACrB,IAAK,EAAE,OAAuB,QAAQ,+BAA+B,GAAG;EACxE,IAAM,IAAQ,EAAE,QAAQ;EAExB,AADA,EAAc,EAAI,GAClB,EAAc;GACV,GAAG,EAAM,UAAU,EAAS;GAC5B,GAAG,EAAM,UAAU,EAAS;EAChC,CAAC;CACL,GACA,CAAC,CAAQ,CACb;CAsCA,OApCA,QAAgB;EACZ,IAAI,CAAC,GAAY;EAEjB,IAAM,KAAS,GAAiB,MAAoB;GAChD,IAAM,IAAO,KAAK,IACd,GACA,KAAK,IAAI,OAAO,aAAa,EAAa,OAAO,IAAU,EAAW,CAAC,CAC3E,GACM,IAAO,KAAK,IACd,GACA,KAAK,IAAI,OAAO,cAAc,EAAa,QAAQ,IAAU,EAAW,CAAC,CAC7E;GACA,EAAY;IAAE,GAAG;IAAM,GAAG;GAAK,CAAC;EACpC,GAEM,KAAmB,MAAkB,EAAM,EAAE,SAAS,EAAE,OAAO,GAC/D,KAAmB,MAAkB;GACvC,EAAE,eAAe;GACjB,IAAM,IAAQ,EAAE,QAAQ;GACxB,EAAM,EAAM,SAAS,EAAM,OAAO;EACtC,GACM,UAAa,EAAc,EAAK;EAOtC,OALA,SAAS,iBAAiB,aAAa,CAAe,GACtD,SAAS,iBAAiB,WAAW,CAAI,GACzC,SAAS,iBAAiB,aAAa,GAAiB,EAAE,SAAS,GAAM,CAAC,GAC1E,SAAS,iBAAiB,YAAY,CAAI,SAE7B;GAIT,AAHA,SAAS,oBAAoB,aAAa,CAAe,GACzD,SAAS,oBAAoB,WAAW,CAAI,GAC5C,SAAS,oBAAoB,aAAa,CAAe,GACzD,SAAS,oBAAoB,YAAY,CAAI;EACjD;CACJ,GAAG;EAAC;EAAY;EAAY,EAAa;EAAO,EAAa;CAAM,CAAC,GAE7D;EAAE;EAAU;EAAY;EAAiB;CAAiB;AACrE"}