@gientech/modual 2.2.3-fix.6 → 2.2.3-fix.8

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 (523) hide show
  1. package/README.md +761 -761
  2. package/{dist/assets/GientechStreamReader-Bae2-4f7.js → assets/GientechStreamReader-r5ZTSZk2.js} +1 -1
  3. package/{dist/assets/LeftOutlined-COk0w5nY.js → assets/LeftOutlined-DZMeGbKk.js} +1 -1
  4. package/{dist/assets/circle-plus-DOKqXUMk.js → assets/circle-plus-B73z_SUN.js} +1 -1
  5. package/{src/modules/database/assets → assets}/database.svg +11 -11
  6. package/{src/modules/database/assets → assets}/database_add.svg +53 -53
  7. package/{dist/assets → assets}/database_connect.svg +66 -66
  8. package/{dist/assets → assets}/database_upload.svg +29 -29
  9. package/{dist/assets → assets}/databse.svg +6 -6
  10. package/{dist/assets → assets}/defaultWeLogo.svg +14 -14
  11. package/{dist/assets → assets}/graph.svg +4 -4
  12. package/{src/assets/img → assets}/iconAi.svg +9 -9
  13. package/{dist/assets/index-BKbpfN9S.js → assets/index-97Oe7YBe.js} +1 -1
  14. package/{dist/assets/index-BXdyn2W3.js → assets/index-B4k3tK0f.js} +1 -1
  15. package/{dist/assets/index-Bin0NZwF.js → assets/index-BDc2zBbG.js} +7 -3
  16. package/assets/index-BIEKgWu0.js +27 -0
  17. package/assets/index-CzZQWA2P.js +1 -0
  18. package/{dist/assets/index-CpSzj-Sx.js → assets/index-DHK_n74G.js} +58 -73
  19. package/assets/index-DPA1HCWQ.js +1372 -0
  20. package/assets/index-DPyRygOA.js +745 -0
  21. package/assets/index-YHUI3QVz.js +943 -0
  22. package/{dist/assets/index-vfI1_Qg0.js → assets/index-iOuQJ8vu.js} +1 -1
  23. package/{dist/assets/index-Ct_k24Ar.js → assets/index-usBlUHOb.js} +1 -1
  24. package/{src/modules/assistantConfig/assets → assets}/knowledge.svg +4 -4
  25. package/{src/modules/database/assets → assets}/mysql.svg +14 -14
  26. package/assets/plus-BICgMvz9.js +6 -0
  27. package/assets/search-CD5YKija.js +6 -0
  28. package/{dist/assets → assets}/sensitive.svg +5 -5
  29. package/assets/style-Blt3Kyyt.js +196 -0
  30. package/assets/style2.css +1 -0
  31. package/{dist/assets/triangle-alert-CaJaaCaZ.js → assets/triangle-alert-C4Z1AkGW.js} +1 -1
  32. package/{dist/assets/x-B65AntWN.js → assets/x-DWGzNb9c.js} +1 -1
  33. package/{dist/assistantConfig.js → assistantConfig.js} +14 -9
  34. package/chat.js +1 -0
  35. package/chatCompare.js +1 -0
  36. package/database.js +20 -0
  37. package/{dist/databaseId.js → databaseId.js} +1 -1
  38. package/{dist/databaseTable.js → databaseTable.js} +1 -1
  39. package/index.js +1 -0
  40. package/modelManage.js +1 -0
  41. package/package.json +44 -125
  42. package/{dist/sensitive.js → sensitive.js} +6 -6
  43. package/streamFilesReader.js +1 -0
  44. package/{public/worker → worker}/pdf.worker.min.js +21 -21
  45. package/.editorconfig +0 -38
  46. package/.prettierignore +0 -16
  47. package/.prettierrc +0 -17
  48. package/CHANGELOG.md +0 -162
  49. package/Dockerfile +0 -15
  50. package/USAGE.md +0 -247
  51. package/bash.exe.stackdump +0 -40
  52. package/components.json +0 -21
  53. package/default.conf +0 -19
  54. package/dist/README.md +0 -761
  55. package/dist/assets/database.svg +0 -11
  56. package/dist/assets/database_add.svg +0 -53
  57. package/dist/assets/iconAi.svg +0 -9
  58. package/dist/assets/index-1PwCuRjv.js +0 -1061
  59. package/dist/assets/index-7QvYA6eT.js +0 -1
  60. package/dist/assets/index-BhUNGJOe.js +0 -27
  61. package/dist/assets/index-DT3qkjJ3.js +0 -750
  62. package/dist/assets/index-lFBFf_0k.js +0 -1890
  63. package/dist/assets/knowledge.svg +0 -4
  64. package/dist/assets/mysql.svg +0 -14
  65. package/dist/assets/style-CfNUqKAA.js +0 -196
  66. package/dist/assets/style2.css +0 -1
  67. package/dist/chat.js +0 -1
  68. package/dist/chatCompare.js +0 -1
  69. package/dist/database.js +0 -20
  70. package/dist/index.js +0 -1
  71. package/dist/modelManage.js +0 -1
  72. package/dist/package.json +0 -73
  73. package/dist/streamFilesReader.js +0 -1
  74. package/dist/worker/pdf.worker.min.js +0 -22
  75. package/doc_assets/images/1.png +0 -0
  76. package/doc_assets/images/3.png +0 -0
  77. package/doc_assets/images/component-screenshot.png +0 -1
  78. package/doc_assets//346/226/271/346/241/210/v2.0.7/345/217/230/346/233/264/346/200/273/347/273/223.md +0 -115
  79. package/doc_assets//346/226/271/346/241/210//344/274/230/345/214/226/346/226/271/346/241/210-/345/244/232/344/274/232/350/257/235SSE/350/277/236/346/216/245/347/256/241/347/220/206.md +0 -504
  80. package/doc_assets//346/226/271/346/241/210//346/215/242/350/241/214/346/240/274/345/274/217/344/277/235/346/214/201/344/274/230/345/214/226/346/226/271/346/241/210.md +0 -359
  81. package/eslint.config.js +0 -92
  82. package/index.html +0 -13
  83. package/package.json.demo-backup +0 -109
  84. package/postcss.config.cjs +0 -19
  85. package/public/icons/answerAwartar.png +0 -0
  86. package/public/icons/docx-file.png +0 -0
  87. package/public/icons/folder.png +0 -0
  88. package/public/icons/html.png +0 -0
  89. package/public/icons/image.png +0 -0
  90. package/public/icons/jpg-file.png +0 -0
  91. package/public/icons/json.png +0 -0
  92. package/public/icons/md.png +0 -0
  93. package/public/icons/pdf.png +0 -0
  94. package/public/icons/pptx.png +0 -0
  95. package/public/icons/questionAwartar.png +0 -0
  96. package/public/icons/sheets.png +0 -0
  97. package/public/icons/txt.png +0 -0
  98. package/public/icons/xlsx.png +0 -0
  99. package/public/vite.svg +0 -1
  100. package/rag/assets/index.Bd0tNzw0.js +0 -2797
  101. package/rag/assets/index.D6t67hlu.css +0 -1
  102. package/rag/assets/left.KBHV5h7q.jpg +0 -0
  103. package/rag/assets/worker-BbpylX7l.DptbXke_.js +0 -13
  104. package/release-it.json +0 -21
  105. package/scripts/README.md +0 -133
  106. package/scripts/build-demo.js +0 -88
  107. package/scripts/check-changelog.cjs +0 -124
  108. package/scripts/check-version.cjs +0 -49
  109. package/scripts/decrypt-api-key.js +0 -95
  110. package/scripts/demo-selector.js +0 -216
  111. package/scripts/dev-demo.js +0 -85
  112. package/scripts/open-file.cjs +0 -61
  113. package/scripts/preview-demo.js +0 -130
  114. package/scripts/run-demo.bat +0 -34
  115. package/src/assets/img/close.png +0 -0
  116. package/src/assets/img/database.png +0 -0
  117. package/src/assets/img/downArrow.png +0 -0
  118. package/src/assets/img/downLoad.png +0 -0
  119. package/src/assets/img/excel.png +0 -0
  120. package/src/assets/img/graphIcon.png +0 -0
  121. package/src/assets/img/img.png +0 -0
  122. package/src/assets/img/pdf.png +0 -0
  123. package/src/assets/img/ppt.png +0 -0
  124. package/src/assets/img/search.svg +0 -3
  125. package/src/assets/img/selected.svg +0 -4
  126. package/src/assets/img/singleQa.png +0 -0
  127. package/src/assets/img/txt.png +0 -0
  128. package/src/assets/img/webSearch.png +0 -0
  129. package/src/assets/img/word.png +0 -0
  130. package/src/assets/login/homeBg.png +0 -0
  131. package/src/assets/login/left.jpg +0 -0
  132. package/src/assets/login/logoImg.png +0 -0
  133. package/src/examples/ConversationAssistantPage/index.tsx +0 -42
  134. package/src/examples/LoginPage/index.tsx +0 -20
  135. package/src/examples/chat/components/DrawerGraphPreview.tsx +0 -78
  136. package/src/examples/chat/index.tsx +0 -171
  137. package/src/examples/chat/logo03.png +0 -0
  138. package/src/examples/chatCompare/icons/rag_think.svg +0 -8
  139. package/src/examples/chatCompare/icons/wenda_lianwangsousuo.svg +0 -9
  140. package/src/examples/chatCompare/index.tsx +0 -154
  141. package/src/examples/gientechStreamFilesReader/index.tsx +0 -979
  142. package/src/examples/headlessChat/assets/mind.svg +0 -6
  143. package/src/examples/headlessChat/assets/net.svg +0 -7
  144. package/src/examples/headlessChat/index.tsx +0 -298
  145. package/src/examples/knowledgebaseDetails/index.tsx +0 -119
  146. package/src/examples/ragDatabaseDataPage/index.tsx +0 -40
  147. package/src/examples/ragDatabaseIdPage/index.tsx +0 -126
  148. package/src/examples/ragDatabasePage/index.tsx +0 -36
  149. package/src/examples/ragModelManagePage/index.tsx +0 -107
  150. package/src/examples/ragModelManagePage/style.css +0 -7
  151. package/src/examples/ragSearchPage/index.tsx +0 -0
  152. package/src/examples/ragSensitiveWordsPage/index.tsx +0 -117
  153. package/src/examples/ragSensitiveWordsPage/style.css +0 -16
  154. package/src/examples/sensitiveId/index.tsx +0 -41
  155. package/src/examples/streamFiles/index.tsx +0 -417
  156. package/src/examples/utils/demo_setting_pannel.ts +0 -0
  157. package/src/lib_enter.ts +0 -44
  158. package/src/main.tsx +0 -5
  159. package/src/main.tsx.backup +0 -5
  160. package/src/modules/CHAT_UNIFICATION_PLAN.md +0 -324
  161. package/src/modules/assistantConfig/assets/databse.svg +0 -6
  162. package/src/modules/assistantConfig/assets/empty.png +0 -0
  163. package/src/modules/assistantConfig/assets/graph.svg +0 -4
  164. package/src/modules/assistantConfig/assets/sensitive.svg +0 -5
  165. package/src/modules/assistantConfig/components/Database.tsx +0 -171
  166. package/src/modules/assistantConfig/components/Graph.tsx +0 -177
  167. package/src/modules/assistantConfig/components/Knowledge.tsx +0 -276
  168. package/src/modules/assistantConfig/components/NotFoundContent.tsx +0 -21
  169. package/src/modules/assistantConfig/components/Paragraph.tsx +0 -51
  170. package/src/modules/assistantConfig/components/ParamsItem.tsx +0 -40
  171. package/src/modules/assistantConfig/components/ResourceBinderItem.tsx +0 -133
  172. package/src/modules/assistantConfig/components/SearchableSelector.tsx +0 -500
  173. package/src/modules/assistantConfig/components/Sensitive.tsx +0 -221
  174. package/src/modules/assistantConfig/components/SliderInput.tsx +0 -66
  175. package/src/modules/assistantConfig/constants.tsx +0 -75
  176. package/src/modules/assistantConfig/index.tsx +0 -785
  177. package/src/modules/assistantConfig/server.ts +0 -262
  178. package/src/modules/chat/AllFiles.tsx +0 -158
  179. package/src/modules/chat/Conversations/Item.tsx +0 -169
  180. package/src/modules/chat/Conversations/List.tsx +0 -210
  181. package/src/modules/chat/Conversations/groupByTime.ts +0 -39
  182. package/src/modules/chat/Conversations/index.tsx +0 -255
  183. package/src/modules/chat/ReferenceBar.tsx +0 -659
  184. package/src/modules/chat/constants.tsx +0 -66
  185. package/src/modules/chat/i18n.ts +0 -151
  186. package/src/modules/chat/i18n.tsx +0 -151
  187. package/src/modules/chat/icons/rag_think.svg +0 -8
  188. package/src/modules/chat/icons/wenda_lianwangsousuo.svg +0 -9
  189. package/src/modules/chat/index.tsx +0 -2400
  190. package/src/modules/chat/referenceCom/DeleteModal.tsx +0 -75
  191. package/src/modules/chat/referenceCom/DrawerContent.tsx +0 -136
  192. package/src/modules/chat/referenceCom/DrawerDatabase.tsx +0 -102
  193. package/src/modules/chat/referenceCom/DrawerGraphPreview.tsx +0 -86
  194. package/src/modules/chat/referenceCom/DrawerPreview.tsx +0 -73
  195. package/src/modules/chat/referenceCom/DrawerTitle.tsx +0 -26
  196. package/src/modules/chat/referenceCom/RenameModal.tsx +0 -86
  197. package/src/modules/chat/referenceCom/TagCom.tsx +0 -30
  198. package/src/modules/chat/style.css +0 -6
  199. package/src/modules/chat/style.less +0 -7
  200. package/src/modules/chat/types.ts +0 -17
  201. package/src/modules/chat/utils/index.ts +0 -348
  202. package/src/modules/chatCompare/UseChatCompareHooks.ts +0 -103
  203. package/src/modules/chatCompare/components/AichatCompareUseController.tsx +0 -754
  204. package/src/modules/chatCompare/components/AssistantSelector.tsx +0 -127
  205. package/src/modules/chatCompare/components/ChatInputer.tsx +0 -67
  206. package/src/modules/chatCompare/components/ChatInstance.tsx +0 -426
  207. package/src/modules/chatCompare/components/ChatItem.tsx +0 -556
  208. package/src/modules/chatCompare/components/Sender/FileCardCommon.tsx +0 -97
  209. package/src/modules/chatCompare/components/Sender/FileUpload.tsx +0 -89
  210. package/src/modules/chatCompare/components/Sender/FilesDisplay.tsx +0 -309
  211. package/src/modules/chatCompare/components/Sender/VoiceInput.tsx +0 -80
  212. package/src/modules/chatCompare/components/Sender/contexts/BadgeContext.tsx +0 -36
  213. package/src/modules/chatCompare/components/Sender/fileIcon.tsx +0 -100
  214. package/src/modules/chatCompare/components/Sender/index.tsx +0 -850
  215. package/src/modules/chatCompare/components/UseChatInstanceHooks.ts +0 -406
  216. package/src/modules/chatCompare/components/UseScrollHooks.ts +0 -36
  217. package/src/modules/chatCompare/components/components/AllFiles.tsx +0 -156
  218. package/src/modules/chatCompare/components/components/DeleteModal.tsx +0 -75
  219. package/src/modules/chatCompare/components/components/DrawerContent.tsx +0 -138
  220. package/src/modules/chatCompare/components/components/DrawerDatabase.tsx +0 -110
  221. package/src/modules/chatCompare/components/components/DrawerGraphPreview.tsx +0 -95
  222. package/src/modules/chatCompare/components/components/DrawerPreview.tsx +0 -75
  223. package/src/modules/chatCompare/components/components/DrawerTitle.tsx +0 -26
  224. package/src/modules/chatCompare/components/components/DrawerVideo.tsx +0 -85
  225. package/src/modules/chatCompare/components/components/ReferenceBar.tsx +0 -659
  226. package/src/modules/chatCompare/components/components/RenameModal.tsx +0 -86
  227. package/src/modules/chatCompare/components/components/TagCom.tsx +0 -30
  228. package/src/modules/chatCompare/components/defaultStyleSet.tsx +0 -148
  229. package/src/modules/chatCompare/components/server.ts +0 -208
  230. package/src/modules/chatCompare/components/serverFn.ts +0 -172
  231. package/src/modules/chatCompare/components/style.less +0 -97
  232. package/src/modules/chatCompare/components/useFileManager.ts +0 -173
  233. package/src/modules/chatCompare/components/utils.ts +0 -31
  234. package/src/modules/chatCompare/data.ts +0 -842
  235. package/src/modules/chatCompare/index.tsx +0 -537
  236. package/src/modules/chatCompare/utils/AiChat.types.tsx +0 -110
  237. package/src/modules/chatCompare/utils/constants.tsx +0 -70
  238. package/src/modules/chatCompare/utils/fileUploadValidator.ts +0 -183
  239. package/src/modules/chatCompare/utils/icons/rag_think.svg +0 -8
  240. package/src/modules/chatCompare/utils/icons/wenda_lianwangsousuo.svg +0 -9
  241. package/src/modules/chatCompare/utils/index.ts +0 -46
  242. package/src/modules/database/CreateModal.tsx +0 -402
  243. package/src/modules/database/assets/Doris.png +0 -0
  244. package/src/modules/database/assets/PostgreSQL.png +0 -0
  245. package/src/modules/database/assets/SQLServer.png +0 -0
  246. package/src/modules/database/assets/database_connect.svg +0 -66
  247. package/src/modules/database/assets/database_upload.svg +0 -29
  248. package/src/modules/database/assets/empty.png +0 -0
  249. package/src/modules/database/index.tsx +0 -477
  250. package/src/modules/database/server.ts +0 -196
  251. package/src/modules/databaseId/CustomCom.tsx +0 -156
  252. package/src/modules/databaseId/EditConfig.tsx +0 -280
  253. package/src/modules/databaseId/UploadDrawer.tsx +0 -535
  254. package/src/modules/databaseId/assets/aiOptimize.svg +0 -10
  255. package/src/modules/databaseId/assets/empty.png +0 -0
  256. package/src/modules/databaseId/assets/template.svg +0 -6
  257. package/src/modules/databaseId/assets/upload.svg +0 -9
  258. package/src/modules/databaseId/assets/useTemp.svg +0 -6
  259. package/src/modules/databaseId/i18n.ts +0 -360
  260. package/src/modules/databaseId/index.tsx +0 -855
  261. package/src/modules/databaseId/server.ts +0 -286
  262. package/src/modules/databaseId/style.css +0 -5
  263. package/src/modules/databaseTable/EditRowDrawer.tsx +0 -124
  264. package/src/modules/databaseTable/index.tsx +0 -359
  265. package/src/modules/databaseTable/server.ts +0 -180
  266. package/src/modules/headlessChat/ReferenceBar.tsx +0 -783
  267. package/src/modules/headlessChat/constants.tsx +0 -54
  268. package/src/modules/headlessChat/index.tsx +0 -1903
  269. package/src/modules/headlessChat/referenceCom/DeleteModal.tsx +0 -75
  270. package/src/modules/headlessChat/referenceCom/DrawerContent.tsx +0 -136
  271. package/src/modules/headlessChat/referenceCom/DrawerDatabase.tsx +0 -102
  272. package/src/modules/headlessChat/referenceCom/DrawerGraphPreview.tsx +0 -86
  273. package/src/modules/headlessChat/referenceCom/DrawerPreview.tsx +0 -73
  274. package/src/modules/headlessChat/referenceCom/DrawerTitle.tsx +0 -26
  275. package/src/modules/headlessChat/referenceCom/RenameModal.tsx +0 -86
  276. package/src/modules/headlessChat/referenceCom/TagCom.tsx +0 -30
  277. package/src/modules/headlessChat/style.less +0 -3
  278. package/src/modules/headlessChat/types.ts +0 -23
  279. package/src/modules/headlessChat/utils/index.ts +0 -348
  280. package/src/modules/knowledgeBase/index.tsx +0 -58
  281. package/src/modules/knowledgeBase/server.ts +0 -196
  282. package/src/modules/knowledgebaseDetails/KnowledgeBaseDetails.tsx +0 -169
  283. package/src/modules/knowledgebaseDetails/components/KnowledgeBaseSummaryCard.tsx +0 -193
  284. package/src/modules/knowledgebaseDetails/components/fileManagementParts.tsx +0 -534
  285. package/src/modules/knowledgebaseDetails/components/index.ts +0 -3
  286. package/src/modules/knowledgebaseDetails/index.ts +0 -3
  287. package/src/modules/knowledgebaseDetails/modules/ConfigModule.tsx +0 -49
  288. package/src/modules/knowledgebaseDetails/modules/FaqModule.tsx +0 -47
  289. package/src/modules/knowledgebaseDetails/modules/KnowledgeParseModule.tsx +0 -771
  290. package/src/modules/knowledgebaseDetails/modules/RetrievalTestModule.tsx +0 -49
  291. package/src/modules/knowledgebaseDetails/modules/UploadManagementModule.tsx +0 -49
  292. package/src/modules/knowledgebaseDetails/modules/types.ts +0 -44
  293. package/src/modules/knowledgebaseDetails/modules-shim.d.ts +0 -14
  294. package/src/modules/knowledgebaseDetails/servers/analysis.ts +0 -5
  295. package/src/modules/knowledgebaseDetails/servers/index.ts +0 -318
  296. package/src/modules/login/components/Login/LoginBox/index.tsx +0 -105
  297. package/src/modules/login/components/Login/RegisterBox/index.tsx +0 -181
  298. package/src/modules/login/components/Login/index.tsx +0 -100
  299. package/src/modules/login/i18n.ts +0 -217
  300. package/src/modules/login/index.tsx +0 -113
  301. package/src/modules/login/style.css +0 -3
  302. package/src/modules/login/useServices.ts +0 -53
  303. package/src/modules/login/utils.ts +0 -42
  304. package/src/modules/modelManage/ConfigDrawer.tsx +0 -267
  305. package/src/modules/modelManage/ReplaceModal.tsx +0 -113
  306. package/src/modules/modelManage/assets/empty.png +0 -0
  307. package/src/modules/modelManage/const.ts +0 -51
  308. package/src/modules/modelManage/i18n.ts +0 -407
  309. package/src/modules/modelManage/index.tsx +0 -668
  310. package/src/modules/modelManage/server.ts +0 -231
  311. package/src/modules/nodegraph/index.tsx +0 -1
  312. package/src/modules/search/assets/Icon-history.svg +0 -8
  313. package/src/modules/search/assets/answerAwartar.png +0 -0
  314. package/src/modules/search/assets/doc.png +0 -0
  315. package/src/modules/search/assets/genera.gif +0 -0
  316. package/src/modules/search/assets/icon-robot.svg +0 -9
  317. package/src/modules/search/assets/icon-search-bar.svg +0 -14
  318. package/src/modules/search/assets/icon-sub-title.svg +0 -3
  319. package/src/modules/search/assets/icon-title.svg +0 -9
  320. package/src/modules/search/assets/icon-zoomOut.svg +0 -9
  321. package/src/modules/search/assets/iconAi.svg +0 -9
  322. package/src/modules/search/assets/pdf.png +0 -0
  323. package/src/modules/search/assets/ppt.png +0 -0
  324. package/src/modules/search/assets/search.svg +0 -3
  325. package/src/modules/search/assets/selected.svg +0 -4
  326. package/src/modules/search/assets/txt.png +0 -0
  327. package/src/modules/search/assets/xls.png +0 -0
  328. package/src/modules/search/components/AssisSelect.tsx +0 -137
  329. package/src/modules/search/components/Editor/ChatViewEditor.tsx +0 -261
  330. package/src/modules/search/components/Editor/aichat.css +0 -1
  331. package/src/modules/search/components/Editor/constant.ts +0 -13
  332. package/src/modules/search/components/Editor/index.tsx +0 -113
  333. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +0 -332
  334. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +0 -20
  335. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +0 -38
  336. package/src/modules/search/components/Editor/plugins/displayer.ts +0 -298
  337. package/src/modules/search/components/Editor/plugins/imageClick.tsx +0 -32
  338. package/src/modules/search/components/Editor/plugins/myplugin.tsx +0 -98
  339. package/src/modules/search/components/Editor/ui/avatar.tsx +0 -19
  340. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +0 -21
  341. package/src/modules/search/components/Editor/ui/button.tsx +0 -58
  342. package/src/modules/search/components/Editor/ui/calendar.tsx +0 -68
  343. package/src/modules/search/components/Editor/ui/caption.tsx +0 -46
  344. package/src/modules/search/components/Editor/ui/checkbox.tsx +0 -27
  345. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +0 -188
  346. package/src/modules/search/components/Editor/ui/code-block-element.css +0 -434
  347. package/src/modules/search/components/Editor/ui/code-block-element.tsx +0 -39
  348. package/src/modules/search/components/Editor/ui/code-leaf.tsx +0 -24
  349. package/src/modules/search/components/Editor/ui/code-line-element.tsx +0 -10
  350. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +0 -21
  351. package/src/modules/search/components/Editor/ui/column-element.tsx +0 -30
  352. package/src/modules/search/components/Editor/ui/column-group-element.tsx +0 -94
  353. package/src/modules/search/components/Editor/ui/command.tsx +0 -75
  354. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +0 -22
  355. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +0 -37
  356. package/src/modules/search/components/Editor/ui/comment-item.tsx +0 -74
  357. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +0 -49
  358. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +0 -42
  359. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +0 -22
  360. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +0 -32
  361. package/src/modules/search/components/Editor/ui/comment-value.tsx +0 -34
  362. package/src/modules/search/components/Editor/ui/comments-popover.tsx +0 -63
  363. package/src/modules/search/components/Editor/ui/date-element.tsx +0 -83
  364. package/src/modules/search/components/Editor/ui/dialog.tsx +0 -63
  365. package/src/modules/search/components/Editor/ui/draggable.tsx +0 -177
  366. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +0 -180
  367. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +0 -85
  368. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +0 -28
  369. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +0 -76
  370. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +0 -8
  371. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +0 -51
  372. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +0 -77
  373. package/src/modules/search/components/Editor/ui/heading-element.tsx +0 -48
  374. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +0 -17
  375. package/src/modules/search/components/Editor/ui/hr-element.tsx +0 -30
  376. package/src/modules/search/components/Editor/ui/icons.tsx +0 -267
  377. package/src/modules/search/components/Editor/ui/image-element.tsx +0 -74
  378. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +0 -368
  379. package/src/modules/search/components/Editor/ui/input.tsx +0 -25
  380. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +0 -218
  381. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +0 -20
  382. package/src/modules/search/components/Editor/ui/link-element.tsx +0 -29
  383. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +0 -161
  384. package/src/modules/search/components/Editor/ui/list-element.tsx +0 -30
  385. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +0 -24
  386. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +0 -133
  387. package/src/modules/search/components/Editor/ui/media-popover.tsx +0 -97
  388. package/src/modules/search/components/Editor/ui/mention-element.tsx +0 -43
  389. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +0 -141
  390. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +0 -93
  391. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +0 -67
  392. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +0 -4
  393. package/src/modules/search/components/Editor/ui/placeholder.tsx +0 -52
  394. package/src/modules/search/components/Editor/ui/popover.tsx +0 -32
  395. package/src/modules/search/components/Editor/ui/resizable.tsx +0 -66
  396. package/src/modules/search/components/Editor/ui/separator.tsx +0 -25
  397. package/src/modules/search/components/Editor/ui/style.less +0 -12
  398. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +0 -143
  399. package/src/modules/search/components/Editor/ui/table-element.tsx +0 -243
  400. package/src/modules/search/components/Editor/ui/table-row-element.tsx +0 -22
  401. package/src/modules/search/components/Editor/ui/tableValue.tsx +0 -135
  402. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +0 -43
  403. package/src/modules/search/components/Editor/ui/toggle-element.tsx +0 -31
  404. package/src/modules/search/components/Editor/ui/toolbar.tsx +0 -157
  405. package/src/modules/search/components/Editor/ui/tooltip.tsx +0 -65
  406. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +0 -160
  407. package/src/modules/search/components/Editor/ui/with-draggables.tsx +0 -175
  408. package/src/modules/search/components/FileList.tsx +0 -287
  409. package/src/modules/search/components/ImageGroupView/index.tsx +0 -85
  410. package/src/modules/search/components/ResultContent.tsx +0 -232
  411. package/src/modules/search/components/SearchInput.tsx +0 -232
  412. package/src/modules/search/components/SearchLanding.tsx +0 -74
  413. package/src/modules/search/components/SearchView.tsx +0 -563
  414. package/src/modules/search/components/SimpleEditor.tsx +0 -158
  415. package/src/modules/search/components/SimpleFileList.tsx +0 -215
  416. package/src/modules/search/index.tsx +0 -10
  417. package/src/modules/search/reademe.md +0 -1
  418. package/src/modules/search/servers/apis.tsx +0 -19
  419. package/src/modules/search/servers/index.ts +0 -184
  420. package/src/modules/search/style.less +0 -503
  421. package/src/modules/search/type.ts +0 -22
  422. package/src/modules/search/utils.ts +0 -34
  423. package/src/modules/sensitive/i18n.ts +0 -391
  424. package/src/modules/sensitive/index.tsx +0 -604
  425. package/src/modules/sensitive/sensitiveEditor.tsx +0 -543
  426. package/src/modules/sensitive/server.ts +0 -197
  427. package/src/modules/sensitiveId/AutoTag.tsx +0 -311
  428. package/src/modules/sensitiveId/UploadModal.tsx +0 -181
  429. package/src/modules/sensitiveId/VirtualWrap.tsx +0 -125
  430. package/src/modules/sensitiveId/index.tsx +0 -253
  431. package/src/modules/sensitiveId/server.ts +0 -142
  432. package/src/modules/streamFilesReader/GientechStreamReader.tsx +0 -1658
  433. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  434. package/src/modules/streamFilesReader/components/Header/index.tsx +0 -297
  435. package/src/modules/streamFilesReader/index.tsx +0 -3
  436. package/src/style.css +0 -6
  437. package/src/type.d.ts +0 -0
  438. package/src/utils/commonFn.tsx +0 -153
  439. package/src/utils/decryptApiKey.ts +0 -40
  440. package/src/utils/gientechCommon/components/AppError.tsx +0 -32
  441. package/src/utils/gientechCommon/components/AppLoading.tsx +0 -75
  442. package/src/utils/gientechCommon/components/DeleteModal.tsx +0 -75
  443. package/src/utils/gientechCommon/components/DisplayError.tsx +0 -33
  444. package/src/utils/gientechCommon/components/DisplayLoading.tsx +0 -38
  445. package/src/utils/gientechCommon/components/FeedBackModal.tsx +0 -319
  446. package/src/utils/gientechCommon/components/FileCardCommon.tsx +0 -82
  447. package/src/utils/gientechCommon/components/FileManager/index.tsx +0 -418
  448. package/src/utils/gientechCommon/components/FileManager/style.css +0 -5
  449. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +0 -583
  450. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +0 -359
  451. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +0 -245
  452. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +0 -209
  453. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  454. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +0 -148
  455. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +0 -14
  456. package/src/utils/gientechCommon/components/RenameModal.tsx +0 -86
  457. package/src/utils/gientechCommon/components/style.less +0 -11
  458. package/src/utils/gientechCommon/configs/commonConfig.ts +0 -2
  459. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  460. package/src/utils/gientechCommon/configs/stylesConfig.ts +0 -142
  461. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +0 -761
  462. package/src/utils/gientechCommon/hooks/style.less +0 -8
  463. package/src/utils/gientechCommon/hooks/useFileDisplayTools.tsx +0 -352
  464. package/src/utils/gientechCommon/hooks/useFileManager.ts +0 -169
  465. package/src/utils/gientechCommon/slate/converters/deserializers.ts +0 -763
  466. package/src/utils/gientechCommon/slate/converters/mockData.ts +0 -232
  467. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +0 -258
  468. package/src/utils/gientechCommon/slate/richElements/index.tsx +0 -499
  469. package/src/utils/gientechCommon/utils/fileUtils.ts +0 -86
  470. package/src/utils/gientechCommon/utils/index.ts +0 -386
  471. package/src/utils/gientechCommon/utils/request.ts +0 -37
  472. package/src/utils/gientechCommon/utils/serverFn.ts +0 -172
  473. package/src/utils/index.tsx +0 -186
  474. package/src/utils/testconfigs/demologin/index.tsx +0 -32
  475. package/src/utils/testconfigs/index.ts +0 -66
  476. package/src/vite-env.d.ts +0 -49
  477. package/stats.html +0 -4949
  478. package/tailwind.config.js +0 -170
  479. package/tsconfig.app.json +0 -31
  480. package/tsconfig.app.tsbuildinfo +0 -11
  481. package/tsconfig.json +0 -17
  482. package/tsconfig.node.json +0 -23
  483. package/tsconfig.node.tsbuildinfo +0 -1
  484. package/vite.config.app.ts +0 -91
  485. package/vite.config.ts +0 -238
  486. /package/{dist/assets → assets}/Doris.png +0 -0
  487. /package/{dist/assets → assets}/PostgreSQL.png +0 -0
  488. /package/{dist/assets → assets}/SQLServer.png +0 -0
  489. /package/{dist/assets → assets}/empty.png +0 -0
  490. /package/{dist/assets → assets}/homeBg.png +0 -0
  491. /package/{dist/assets → assets}/index-CpW6Dhpp.js +0 -0
  492. /package/{dist/assets → assets}/left.jpg +0 -0
  493. /package/{dist/assets → assets}/logoImg.png +0 -0
  494. /package/{dist/assets → assets}/style.css +0 -0
  495. /package/{dist/assets → assets}/style3.css +0 -0
  496. /package/{dist/assets → assets}/style4.css +0 -0
  497. /package/{dist/assets → assets}/style5.css +0 -0
  498. /package/{dist/assets → assets}/worker-BbpylX7l.js +0 -0
  499. /package/{dist/assistantConfig.d.ts → assistantConfig.d.ts} +0 -0
  500. /package/{dist/chat.d.ts → chat.d.ts} +0 -0
  501. /package/{dist/chatCompare.d.ts → chatCompare.d.ts} +0 -0
  502. /package/{dist/database.d.ts → database.d.ts} +0 -0
  503. /package/{dist/databaseId.d.ts → databaseId.d.ts} +0 -0
  504. /package/{dist/databaseTable.d.ts → databaseTable.d.ts} +0 -0
  505. /package/{dist/icons → icons}/answerAwartar.png +0 -0
  506. /package/{dist/icons → icons}/docx-file.png +0 -0
  507. /package/{dist/icons → icons}/folder.png +0 -0
  508. /package/{dist/icons → icons}/html.png +0 -0
  509. /package/{dist/icons → icons}/image.png +0 -0
  510. /package/{dist/icons → icons}/jpg-file.png +0 -0
  511. /package/{dist/icons → icons}/json.png +0 -0
  512. /package/{dist/icons → icons}/md.png +0 -0
  513. /package/{dist/icons → icons}/pdf.png +0 -0
  514. /package/{dist/icons → icons}/pptx.png +0 -0
  515. /package/{dist/icons → icons}/questionAwartar.png +0 -0
  516. /package/{dist/icons → icons}/sheets.png +0 -0
  517. /package/{dist/icons → icons}/txt.png +0 -0
  518. /package/{dist/icons → icons}/xlsx.png +0 -0
  519. /package/{dist/index.d.ts → index.d.ts} +0 -0
  520. /package/{dist/modelManage.d.ts → modelManage.d.ts} +0 -0
  521. /package/{dist/sensitive.d.ts → sensitive.d.ts} +0 -0
  522. /package/{dist/streamFilesReader.d.ts → streamFilesReader.d.ts} +0 -0
  523. /package/{dist/vite.svg → vite.svg} +0 -0
@@ -1,850 +0,0 @@
1
- import React, { useRef, useEffect, useState, useMemo } from 'react';
2
- import { ArrowUp, X } from 'lucide-react';
3
- import anime from 'animejs';
4
- import { useBadge } from './contexts/BadgeContext';
5
-
6
- // 自定义停止图标组件:圆形外框,中间有圆角正方形
7
- const StopIcon: React.FC<{
8
- size?: number;
9
- color?: string;
10
- circleColor?: string;
11
- className?: string;
12
- }> = ({ size = 20, color = '#ffffff', circleColor = '#ffffff', className = '' }) => {
13
- return (
14
- <svg
15
- width={size}
16
- height={size}
17
- viewBox="0 0 20 20"
18
- fill="none"
19
- xmlns="http://www.w3.org/2000/svg"
20
- className={className}
21
- >
22
- {/* 圆形外框 */}
23
- <circle cx="10" cy="10" r="9" fill="none" stroke={circleColor} strokeWidth="1.5" />
24
- {/* 中间圆角正方形 - 3px圆角 */}
25
- <rect x="7" y="7" width="6" height="6" rx="1" ry="1" fill={color} />
26
- </svg>
27
- );
28
- };
29
-
30
- import FilesDisplay from './FilesDisplay';
31
-
32
- import { Select, Tooltip } from 'antd';
33
- import { type Styles } from '@mxmweb/zui';
34
- import { Badge } from 'antd';
35
- interface SenderConfig {
36
- upload_size_limit?: number;
37
- upload_number_limit?: number;
38
- upload_file_type_limit?: string[];
39
- upload_limit_message?: string;
40
- actions?: {
41
- icon: React.ReactNode;
42
- badgeCount?: number;
43
- name: string;
44
- tip?: string;
45
- }[];
46
- switchs?: Array<{
47
- label: string;
48
- name: string;
49
- type: 'switch' | 'select';
50
- defaultValue?: boolean | string | number;
51
- enabled?: boolean;
52
- icon?: React.ReactNode;
53
- options?: { label: string; value: string | number }[];
54
- }>;
55
- }
56
-
57
- interface Action {
58
- icon: React.ReactNode;
59
- name: string;
60
- tip?: string;
61
- badgeCount?: number;
62
- enabled?: boolean;
63
- }
64
-
65
- interface FilePreview {
66
- file: File;
67
- preview?: string;
68
- type: 'image' | 'document';
69
- status?: 'pending' | 'uploading' | 'parsing' | 'done' | 'error';
70
- name?: string;
71
- uid?: string;
72
- }
73
-
74
- interface SenderProps {
75
- value: string;
76
- onSend: () => void;
77
- onUpload: (files: FileList) => void;
78
- onVoice: () => void;
79
- styles: Styles;
80
- uploadedFiles: FilePreview[];
81
- fileUploadStatus?: any[];
82
- status: 'ready' | 'loading' | 'error' | 'processing' | 'uploading';
83
- onRemoveFile: (index: number) => void;
84
- eventsEmit: (eventName: string, data?: any) => void;
85
- recommandQuestions?: any;
86
- senderConfig?: SenderConfig;
87
- onSenderConfigChange?: (data: {
88
- name: string;
89
- checked: boolean;
90
- all: Record<string, boolean>;
91
- }) => void;
92
- disclaimer?: string | React.ReactNode;
93
- }
94
-
95
- interface YuanbaoCheckboxProps {
96
- checked: boolean;
97
- onChange: (checked: boolean) => void;
98
- icon?: React.ReactNode;
99
- children: React.ReactNode;
100
- styles?: Styles;
101
- disabled?: boolean;
102
- }
103
- function YuanbaoCheckbox({
104
- checked,
105
- onChange,
106
- icon,
107
- children,
108
- styles,
109
- disabled,
110
- }: YuanbaoCheckboxProps) {
111
- const primary = styles?.theme?.colors?.primary || '#00C26A';
112
- const text = styles?.theme?.colors?.text || '#343a40';
113
- const lightText = styles?.theme?.colors?.background || '#fff';
114
- const borderColor = styles?.theme?.colors?.border || '#dee2e6';
115
- const disabledBg = styles?.theme?.colors?.disabledBackground || '#F5F5F5';
116
- const disabledText = styles?.theme?.colors?.disabledText || '#808080';
117
- const disabledBorder = styles?.theme?.colors?.disabled || '#808080';
118
- const transColor = 'linear-gradient(90deg, #F1F8FF 0%, #F9F4FF 100%)';
119
- return (
120
- <button
121
- type="button"
122
- onClick={() => onChange(!checked)}
123
- disabled={disabled}
124
- className={`flex items-center gap-1 bg-white px-3 py-1 rounded-full border transition-all duration-200 text-xs select-none`}
125
- style={{
126
- borderWidth: 1.5,
127
- outline: 'none',
128
- cursor: disabled ? 'not-allowed' : 'pointer',
129
- minWidth: 0,
130
- background: disabled ? disabledBg : checked ? transColor : 'transparent',
131
- color: disabled ? disabledText : checked ? primary : text,
132
- borderColor: disabled ? disabledBorder : checked ? primary : borderColor,
133
- }}
134
- >
135
- {icon}
136
- <span>{children}</span>
137
- </button>
138
- );
139
- }
140
-
141
- interface YuanbaoSelectProps {
142
- value: string | number;
143
- onChange: (value: string | number) => void;
144
- options: { label: string; value: string | number }[];
145
- styles?: Styles;
146
- disabled?: boolean;
147
- placeholder?: string;
148
- }
149
-
150
- function YuanbaoSelect({
151
- value,
152
- onChange,
153
- options,
154
- styles,
155
- disabled,
156
- placeholder = '请选择',
157
- }: YuanbaoSelectProps) {
158
- const primary = styles?.theme?.colors?.primary || '#00C26A';
159
- const text = styles?.theme?.colors?.text || '#343a40';
160
- const lightText = styles?.theme?.colors?.background || '#fff';
161
- const borderColor = styles?.theme?.colors?.border || '#dee2e6';
162
- const disabledBg = styles?.theme?.colors?.disabledBackground || '#F5F5F5';
163
- const disabledText = styles?.theme?.colors?.disabledText || '#808080';
164
- const disabledBorder = styles?.theme?.colors?.disabled || '#808080';
165
-
166
- return (
167
- <div style={{ display: 'inline-block' }}>
168
- <Select
169
- value={value}
170
- onChange={onChange}
171
- disabled={disabled}
172
- placeholder={placeholder}
173
- size="small"
174
- style={{
175
- minWidth: 120,
176
- fontSize: '12px !important',
177
- height: '28px',
178
- borderRadius: '14px',
179
- border: `1.5px solid ${disabled ? disabledBorder : borderColor}`,
180
- backgroundColor: disabled ? disabledBg : 'white',
181
- color: disabled ? disabledText : text,
182
- fontWeight: '500',
183
- transition: 'all 0.2s ease',
184
- }}
185
- className="yuanbao-select"
186
- styles={{
187
- popup: {
188
- root: {
189
- fontSize: '12px',
190
- borderRadius: '8px',
191
- },
192
- },
193
- }}
194
- options={options}
195
- />
196
- </div>
197
- );
198
- }
199
-
200
- export default function Sender({
201
- value: propValue,
202
- eventsEmit,
203
- styles,
204
- status,
205
- onUpload,
206
- onVoice,
207
- uploadedFiles,
208
- onRemoveFile,
209
- senderConfig = {},
210
- recommandQuestions = [],
211
- fileUploadStatus = [],
212
- disclaimer,
213
- }: Partial<SenderProps> & { senderConfig?: SenderConfig } = {}) {
214
- const { badgeCounts } = useBadge();
215
- const textareaRef = useRef<HTMLTextAreaElement>(null);
216
- // 受控状态管理
217
- const switchList = senderConfig.switchs || [];
218
- const [configStates, setConfigStates] = useState(() => {
219
- const state: Record<string, any> = {};
220
- switchList.forEach(
221
- (item: {
222
- name: string;
223
- type: string;
224
- defaultValue?: any;
225
- options?: { label: string; value: string | number }[];
226
- }) => {
227
- if (item.type === 'switch') {
228
- state[item.name] = item.defaultValue ?? false;
229
- } else if (item.type === 'select') {
230
- state[item.name] = item.defaultValue ?? item.options?.[0]?.value ?? '';
231
- }
232
- }
233
- );
234
- return state;
235
- });
236
-
237
- // 监听 configStates 变化后再 eventsEmit,避免 setState in render
238
- useEffect(() => {
239
- if (eventsEmit) {
240
- eventsEmit('sender:configChange', {
241
- all: configStates,
242
- });
243
- }
244
- }, [configStates]);
245
-
246
- // 新增:本地受控 value
247
- const [localValue, setLocalValue] = useState(propValue || '');
248
- useEffect(() => {
249
- setLocalValue(propValue || '');
250
- }, [propValue]);
251
-
252
- // 自动调整文本框高度
253
- const adjustTextareaHeight = () => {
254
- const textarea = textareaRef.current;
255
- if (textarea) {
256
- textarea.style.height = 'auto';
257
- const lineHeight = 24;
258
- const paddingY = 12;
259
- const minHeight = 44;
260
- const maxLines = 5;
261
- const maxHeight = maxLines * lineHeight + paddingY * 2;
262
- const contentHeight = textarea.scrollHeight;
263
- if (contentHeight <= maxHeight) {
264
- textarea.style.height = `${contentHeight}px`;
265
- textarea.style.overflowY = 'hidden';
266
- } else {
267
- textarea.style.height = `${maxHeight}px`;
268
- textarea.style.overflowY = 'auto';
269
- }
270
- }
271
- };
272
-
273
- // 监听输入变化
274
- const handleInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
275
- setLocalValue(e.target.value);
276
- eventsEmit && eventsEmit('sender:change', e.target.value);
277
- adjustTextareaHeight();
278
- };
279
-
280
- // 处理粘贴事件,确保粘贴内容中的换行符被正确保留
281
- const handlePaste = (e: React.ClipboardEvent<HTMLTextAreaElement>) => {
282
- // 让浏览器默认处理粘贴,textarea 会自动保留换行符
283
- // 这里不需要阻止默认行为,只需要确保粘贴后触发高度调整
284
- setTimeout(() => {
285
- adjustTextareaHeight();
286
- }, 0);
287
- };
288
-
289
- // 处理按键事件
290
- const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
291
- if (e.key === 'Enter') {
292
- // Ctrl/Cmd + Enter -> 插入换行,不发送
293
- if (e.ctrlKey || e.metaKey) {
294
- e.preventDefault();
295
- const textarea = textareaRef.current;
296
- if (!textarea) return;
297
- const start = textarea.selectionStart || 0;
298
- const end = textarea.selectionEnd || 0;
299
- const nextValue = `${localValue.substring(0, start)}\n${localValue.substring(end)}`;
300
- setLocalValue(nextValue);
301
- // 光标移动到换行后
302
- requestAnimationFrame(() => {
303
- textarea.selectionStart = textarea.selectionEnd = start + 1;
304
- adjustTextareaHeight();
305
- });
306
- return;
307
- }
308
-
309
- // 单独 Enter -> 发送(保持原行为),Shift+Enter 走默认换行
310
- if (!e.shiftKey) {
311
- e.preventDefault();
312
- eventsEmit && eventsEmit('sender:send');
313
- }
314
- }
315
- };
316
-
317
- // 处理 focus 事件:当 sender 获得焦点时,如果右侧栏打开则自动关闭
318
- const handleFocus = () => {
319
- // 通过全局事件关闭右侧栏
320
- window.dispatchEvent(
321
- new CustomEvent('aichat:right_set', {
322
- detail: { collapsed: true },
323
- })
324
- );
325
- };
326
-
327
- useEffect(() => {
328
- adjustTextareaHeight();
329
- }, [localValue]);
330
-
331
- // 语音识别回调
332
- useEffect(() => {
333
- let parsed;
334
- try {
335
- parsed =
336
- typeof recommandQuestions === 'string'
337
- ? JSON.parse(recommandQuestions)
338
- : recommandQuestions;
339
- } catch {
340
- parsed = [];
341
- }
342
- }, [recommandQuestions]);
343
- // 推荐问题健壮处理
344
- const parsedRecommandQuestions = useMemo(() => {
345
- if (
346
- recommandQuestions === null ||
347
- recommandQuestions === undefined ||
348
- recommandQuestions === ''
349
- ) {
350
- return [];
351
- }
352
- if (typeof recommandQuestions === 'string') {
353
- try {
354
- const arr = JSON.parse(recommandQuestions);
355
- return Array.isArray(arr) ? arr : [];
356
- } catch {
357
- return [];
358
- }
359
- }
360
- return Array.isArray(recommandQuestions) ? recommandQuestions : [];
361
- }, [recommandQuestions]);
362
- const [showRecommandQuestions, setShowRecommandQuestions] = useState(false);
363
-
364
- useEffect(() => {
365
- if (!parsedRecommandQuestions || parsedRecommandQuestions.length === 0) {
366
- setShowRecommandQuestions(false);
367
- return;
368
- }
369
- setShowRecommandQuestions(false); // 先隐藏
370
- // 等下一帧再显示并动画,确保 DOM 已挂载
371
- setTimeout(() => {
372
- setShowRecommandQuestions(true);
373
- }, 0);
374
- }, [parsedRecommandQuestions]);
375
-
376
- // 动画逻辑:只有 showRecommandQuestions 为 true 时才执行
377
- useEffect(() => {
378
- if (!showRecommandQuestions) return;
379
- const buttons = document.querySelectorAll('.recommand-question-btn');
380
- buttons.forEach(btn => {
381
- const el = btn as HTMLElement;
382
- el.style.visibility = 'visible';
383
- el.style.opacity = '0';
384
- el.style.transform = 'translateY(20px)';
385
- });
386
- anime.remove(buttons);
387
- anime({
388
- targets: buttons,
389
- opacity: [0, 1],
390
- translateY: [20, 0],
391
- delay: anime.stagger(120), // 依次延迟
392
- duration: 400,
393
- easing: 'easeOutCubic',
394
- complete: () => {
395
- buttons.forEach(btn => {
396
- const el = btn as HTMLElement;
397
- el.removeAttribute('style');
398
- el.style.color = disabledTextColor;
399
- });
400
- },
401
- });
402
- }, [showRecommandQuestions, parsedRecommandQuestions]);
403
- // // 文件上传按钮直接放在语音旁边
404
- // const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {
405
- // if (e.target.files && e.target.files.length > 0) {
406
- // onUpload?.(e.target.files);
407
- // }
408
- // };
409
-
410
- const filesToDisplay = useMemo(() => {
411
- // 如果有实际的上传状态,优先使用它
412
- if (fileUploadStatus && fileUploadStatus.length > 0) {
413
- return fileUploadStatus;
414
- }
415
- // 否则,使用预览文件
416
- return uploadedFiles || [];
417
- }, [fileUploadStatus, uploadedFiles]);
418
-
419
- // 是否可以发送 (必须有文本)
420
- const canSend = useMemo(() => {
421
- const hasText = localValue && localValue.trim().length > 0;
422
- return hasText;
423
- }, [localValue]);
424
-
425
- // 判断是否需要显示清空按钮 (有文本或文件)
426
- const showClear = useMemo(() => {
427
- const hasText = localValue && localValue.trim().length > 0;
428
- const hasFiles = filesToDisplay && filesToDisplay.length > 0;
429
- return hasText || hasFiles;
430
- }, [localValue, filesToDisplay]);
431
-
432
- // 合并默认actions和用户配置的actions
433
- const allActions = useMemo(() => {
434
- const defaultActions: Action[] = showClear
435
- ? [
436
- {
437
- icon: <X size={20} color="#4E5969" className="group-hover:text-gray-700" />,
438
- name: 'clear',
439
- tip: '清空输入和文件',
440
- },
441
- ]
442
- : [];
443
-
444
- // 使用 badgeCounts 来覆盖配置的 badgeCount
445
- const configActions = (senderConfig.actions || []).map((action: any) => {
446
- const mergedFromBadgeStore = badgeCounts[action.name];
447
- const merged = mergedFromBadgeStore !== undefined ? mergedFromBadgeStore : action.badgeCount;
448
- return {
449
- ...action,
450
- // 若未提供 badgeCount,则保持 undefined,用于后续条件渲染
451
- badgeCount: merged,
452
- };
453
- });
454
-
455
- return [...defaultActions, ...configActions] as Action[];
456
- }, [showClear, senderConfig.actions, badgeCounts]);
457
-
458
- // 从主题获取颜色
459
- const colors = styles?.theme?.colors;
460
- const primaryColor = colors?.primary || '#007bff';
461
- const textColor = colors?.text || '#343a40';
462
- const lightTextColor = colors?.background || '#ffffff';
463
- const borderColor = colors?.border || '#dee2e6';
464
- const backgroundColor = colors?.background || '#ffffff';
465
- const placeholderColor = colors?.disabled || '#808080';
466
- const disabledBgColor = colors?.disabledBackground || '#F5F5F5';
467
- const errorColor = colors?.error || '#FF0000';
468
- const disabledTextColor = colors?.disabledText || '#808080';
469
- const recommedBtnBg = 'rgba(255, 255, 255, 0.9)';
470
- const recommedBtnText = colors?.disabledText || '#808080';
471
- const recommedBtnHoverBg = '#f9fafb';
472
- const recommedBtnHoverText = colors?.text || '#000';
473
-
474
- // 为发送图标激活状态添加样式
475
- useEffect(() => {
476
- const styleId = 'sender-icon-active-style';
477
- let styleTag = document.getElementById(styleId);
478
- if (!styleTag) {
479
- styleTag = document.createElement('style');
480
- styleTag.id = styleId;
481
- document.head.appendChild(styleTag);
482
- }
483
- const errorColor = colors?.error || '#d9534f';
484
- styleTag.textContent = `
485
- .sender-icon-active {
486
- color: #ffffff !important;
487
- }
488
- .sender-icon-active svg {
489
- color: #ffffff !important;
490
- }
491
- /* lucide-react 图标使用 stroke,确保激活时为白色 */
492
- .sender-icon-active svg path,
493
- .sender-icon-active svg circle,
494
- .sender-icon-active svg line,
495
- .sender-icon-active svg polyline {
496
- stroke: #ffffff !important;
497
- fill: none !important;
498
- }
499
- `;
500
- }, [colors?.error]);
501
-
502
- // 为 placeholder 动态创建样式
503
- const placeholderStyleId = 'dynamic-placeholder-style';
504
- useEffect(() => {
505
- const styleTag = document.getElementById(placeholderStyleId) || document.createElement('style');
506
- styleTag.id = placeholderStyleId;
507
- styleTag.innerHTML = `
508
- .dynamic-placeholder::placeholder {
509
- color: ${placeholderColor};
510
- opacity: 1; /* Firefox */
511
- }
512
- .dynamic-placeholder:-ms-input-placeholder { /* Internet Explorer 10-11 */
513
- color: ${placeholderColor};
514
- }
515
- .dynamic-placeholder::-ms-input-placeholder { /* Microsoft Edge */
516
- color: ${placeholderColor};
517
- }
518
- .yuanbao-select .ant-select-selection-item {
519
- font-size: 12px !important;
520
- }
521
- .yuanbao-select .ant-select-selection-placeholder {
522
- font-size: 12px !important;
523
- }
524
- .sender-container-gradient {
525
- background: linear-gradient(135deg, #3262FA 0%, #6C18FF 100%) !important;
526
- }
527
- /* 文件显示区域滚动条样式 - 完全隐藏滚动条 */
528
- .files-display-scroll::-webkit-scrollbar {
529
- display: none; /* Chrome/Safari/Edge - 完全隐藏 */
530
- width: 0;
531
- height: 0;
532
- }
533
- .files-display-scroll {
534
- -ms-overflow-style: none; /* IE/Edge - 隐藏滚动条 */
535
- scrollbar-width: none; /* Firefox - 隐藏滚动条 */
536
- }
537
- `;
538
- document.head.appendChild(styleTag);
539
- }, [placeholderColor, borderColor, colors]);
540
-
541
- return (
542
- <div className="absolute w-full bottom-0 z-20 pb-[env(safe-area-inset-bottom)] bg-transparent!">
543
- <div className="absolute inset-0 bg-transparent! pointer-events-none" />
544
- <div className="absolute inset-0 bg-transparent! pointer-events-none" />
545
- {/* 限制内容宽度不超过 1200px 并居中,与对话款区域对齐 */}
546
- <div
547
- className="relative mx-auto px-8"
548
- style={{ maxWidth: 1000, width: '85%', boxSizing: 'border-box' }}
549
- >
550
- <div className="p-3" style={{ width: '100%', boxSizing: 'border-box' }}>
551
- <div className="mb-3 flex flex-wrap gap-2 animate-fade-in-up">
552
- {showRecommandQuestions &&
553
- parsedRecommandQuestions.map((question: any, index: number) => (
554
- <button
555
- key={index}
556
- onClick={() => {
557
- eventsEmit &&
558
- eventsEmit('sender:send_recommandQuestion', {
559
- content: question,
560
- clearFn: () => {
561
- eventsEmit && eventsEmit('sender:clear');
562
- },
563
- });
564
- }}
565
- className="recommand-question-btn shadow-sm px-3 py-1.5 bg-white cursor-pointer text-xs rounded-full transition-all duration-200 ease-in-out hover:shadow-lg"
566
- style={{
567
- visibility: 'hidden',
568
- transform: 'translateY(20px)',
569
- backgroundColor: recommedBtnBg,
570
- color: disabledTextColor,
571
- border: 'none',
572
- }}
573
- onMouseEnter={e => {
574
- e.currentTarget.style.color = recommedBtnHoverText;
575
- }}
576
- onMouseOut={e => {
577
- e.currentTarget.style.color = disabledTextColor;
578
- }}
579
- >
580
- {question}
581
- </button>
582
- ))}
583
- </div>
584
- <div
585
- className="sender-container-gradient relative w-full rounded-[28px] transition-all duration-200"
586
- style={{
587
- padding: '1px',
588
- background: 'transparent',
589
- }}
590
- >
591
- <div
592
- className="flex flex-col items-end w-full rounded-[28px] shadow-sm transition-all duration-200"
593
- style={{
594
- backgroundColor,
595
- border: `0.5px solid ${borderColor}`,
596
- padding: '0 16px 12px 16px',
597
- }}
598
- >
599
- {/* 文件预览横向滚动区 - 移动到 sender 内部 */}
600
- {filesToDisplay.length > 0 && (
601
- <div
602
- className="files-display-wrapper w-full mb-2 overflow-x-auto"
603
- style={{
604
- maxHeight: '120px',
605
- paddingTop: '12px',
606
- }}
607
- >
608
- <FilesDisplay
609
- styles={styles}
610
- uploadedFiles={filesToDisplay}
611
- onRemoveFile={onRemoveFile || (() => {})}
612
- eventsEmit={eventsEmit}
613
- />
614
- </div>
615
- )}
616
- <textarea
617
- ref={textareaRef}
618
- value={localValue}
619
- onChange={handleInput}
620
- onPaste={handlePaste}
621
- onKeyDown={handleKeyDown}
622
- onFocus={handleFocus}
623
- rows={1}
624
- placeholder="输入问题后按Enter发送,Shift+Enter进行换行"
625
- className="flex-1 w-full min-w-0 py-2 resize-none outline-none border-none min-h-[85px]
626
- max-h-[180px] text-[14px] leading-[24px] dynamic-placeholder"
627
- style={{
628
- backgroundColor: 'transparent',
629
- color: textColor,
630
- whiteSpace: 'pre-wrap', // 确保 textarea 本身也保留换行格式
631
- }}
632
- />
633
- <div className="flex items-center justify-between w-full ml-3 space-x-1.5 shrink-0 whitespace-nowrap">
634
- <div>
635
- <div className="flex items-center gap-4">
636
- {switchList
637
- .filter((item: { enabled?: boolean }) => item.enabled !== false)
638
- .map(
639
- (item: {
640
- label: string;
641
- name: string;
642
- type: 'switch' | 'select';
643
- defaultValue?: boolean | string | number;
644
- enabled?: boolean;
645
- icon?: React.ReactNode;
646
- options?: { label: string; value: string | number }[];
647
- }) => {
648
- if (item.type === 'select') {
649
- return (
650
- <div key={item.name} className="flex items-center gap-2">
651
- <span className="text-xs" style={{ color: textColor }}>
652
- {item.label}:
653
- </span>
654
- <YuanbaoSelect
655
- value={configStates[item.name]}
656
- onChange={value => {
657
- setConfigStates(prev => ({
658
- ...prev,
659
- [item.name]: value,
660
- }));
661
- }}
662
- options={item.options || []}
663
- styles={styles}
664
- disabled={!item.enabled}
665
- placeholder={item.label}
666
- />
667
- </div>
668
- );
669
- }
670
-
671
- return (
672
- <YuanbaoCheckbox
673
- key={item.name}
674
- styles={styles}
675
- checked={configStates[item.name]}
676
- disabled={!item.enabled}
677
- onChange={checked => {
678
- setConfigStates(prev => ({
679
- ...prev,
680
- [item.name]: checked,
681
- }));
682
- }}
683
- icon={item.icon}
684
- >
685
- {item.label}
686
- </YuanbaoCheckbox>
687
- );
688
- }
689
- )}
690
- </div>
691
- </div>
692
- <div className="flex items-center justify-end">
693
- {/* 动态渲染actions按钮 */}
694
- {allActions
695
- .filter(action => action.enabled !== false)
696
- .map((action, idx) => {
697
- const button = (
698
- <button
699
- type="button"
700
- className="relative w-8 h-8 flex items-center justify-center rounded-lg cursor-pointer group hover:bg-blue-50 active:bg-blue-100 transition-colors"
701
- style={{
702
- border: 'none',
703
- background: 'transparent',
704
- color: textColor,
705
- fontWeight: 500,
706
- fontSize: 15,
707
- outline: 'none',
708
- padding: 0,
709
- margin: 0,
710
- transition: 'background 0.2s',
711
- }}
712
- onClick={() => {
713
- if (action.name === 'clear') {
714
- eventsEmit && eventsEmit('sender:clear');
715
- } else {
716
- eventsEmit && eventsEmit(`sender:action_${action.name}`);
717
- }
718
- }}
719
- >
720
- {action.icon}
721
- </button>
722
- );
723
-
724
- const buttonWithTooltip = action.tip ? (
725
- <Tooltip
726
- title={action.tip}
727
- placement="top"
728
- styles={{
729
- body: {
730
- backgroundColor: '#4E5969',
731
- color: '#ffffff',
732
- fontSize: '12px',
733
- padding: '6px 12px',
734
- borderRadius: '6px',
735
- },
736
- root: {
737
- maxWidth: '300px',
738
- },
739
- }}
740
- >
741
- {button}
742
- </Tooltip>
743
- ) : (
744
- button
745
- );
746
-
747
- if (action.badgeCount === undefined) {
748
- return (
749
- <React.Fragment key={action.name || idx}>
750
- {buttonWithTooltip}
751
- </React.Fragment>
752
- );
753
- }
754
-
755
- return (
756
- <Badge
757
- key={(action.name || idx) + '-badge'}
758
- count={action.badgeCount}
759
- size="small"
760
- style={{
761
- backgroundColor: primaryColor,
762
- color: lightTextColor,
763
- fontWeight: 500,
764
- fontSize: 9,
765
- minWidth: 16,
766
- height: 16,
767
- lineHeight: '19px',
768
- borderRadius: 9,
769
- marginLeft: 8,
770
- display: 'flex',
771
- alignItems: 'center',
772
- justifyContent: 'center',
773
- padding: '0 5px',
774
- }}
775
- offset={[-2, 10]}
776
- >
777
- {buttonWithTooltip}
778
- </Badge>
779
- );
780
- })}
781
-
782
- <div className="ml-3 mr-3 h-5 w-px" style={{ backgroundColor: borderColor }} />
783
-
784
- {/* 状态按钮:发送/停止 */}
785
- <div
786
- className={`
787
- relative w-[35px] h-8 flex items-center justify-center rounded-full group overflow-hidden shadow-sm
788
- transition-all duration-200
789
- ${status === 'processing' ? 'animate-pulse' : ''}
790
- `}
791
- style={{
792
- cursor: status === 'processing' || canSend ? 'pointer' : 'not-allowed',
793
- background:
794
- status === 'processing'
795
- ? '#222222'
796
- : canSend
797
- ? `linear-gradient(to bottom right, ${primaryColor}, ${colors?.primary || '#0275d8'})`
798
- : disabledBgColor,
799
- }}
800
- onClick={() => {
801
- if (status === 'processing') {
802
- eventsEmit && eventsEmit('sender:stop', {});
803
- } else if (canSend) {
804
- eventsEmit && eventsEmit('sender:send');
805
- }
806
- }}
807
- title={status === 'processing' ? '停止当前对话' : '发送'}
808
- >
809
- <div
810
- className="relative flex items-center gap-x-1 font-medium"
811
- style={{
812
- color: !canSend && status !== 'processing' ? disabledTextColor : '#ffffff',
813
- }}
814
- >
815
- {status === 'processing' ? (
816
- <StopIcon size={46} color="#ffffff" circleColor="#ffffff" />
817
- ) : (
818
- <ArrowUp
819
- size={20}
820
- className={canSend ? 'sender-icon-active' : ''}
821
- style={{
822
- color: canSend ? '#ffffff' : disabledTextColor,
823
- strokeWidth: 2.5,
824
- }}
825
- />
826
- )}
827
- </div>
828
- </div>
829
- </div>
830
- </div>
831
- </div>
832
- </div>
833
- {/* 可选:提示等 */}
834
- <div className="mt-2 pt-2 pb-3 px-1 flex items-center justify-between ">
835
- <span className="text-[10px]" style={{ color: placeholderColor }}>
836
- {/* 支持拖拽或点击上传PDF、Word、图片等文件 */}
837
- </span>
838
- </div>
839
- </div>
840
- {disclaimer && (
841
- <div className=" absolute bottom-3 left-0 right-0 w-full text-xs text-center">
842
- <div className="text-xs text-center" style={{ color: disabledTextColor }}>
843
- {disclaimer}
844
- </div>
845
- </div>
846
- )}
847
- </div>
848
- </div>
849
- );
850
- }