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

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 (522) 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-BlAyZ4S3.js +943 -0
  18. package/assets/index-CzZQWA2P.js +1 -0
  19. package/{dist/assets/index-CpSzj-Sx.js → assets/index-DHK_n74G.js} +58 -73
  20. package/assets/index-DPA1HCWQ.js +1372 -0
  21. package/assets/index-DPyRygOA.js +745 -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/{dist/assets/style-CfNUqKAA.js → assets/style-D8ou48dh.js} +7 -7
  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/style2.css +0 -1
  66. package/dist/chat.js +0 -1
  67. package/dist/chatCompare.js +0 -1
  68. package/dist/database.js +0 -20
  69. package/dist/index.js +0 -1
  70. package/dist/modelManage.js +0 -1
  71. package/dist/package.json +0 -73
  72. package/dist/streamFilesReader.js +0 -1
  73. package/dist/worker/pdf.worker.min.js +0 -22
  74. package/doc_assets/images/1.png +0 -0
  75. package/doc_assets/images/3.png +0 -0
  76. package/doc_assets/images/component-screenshot.png +0 -1
  77. 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
  78. 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
  79. 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
  80. package/eslint.config.js +0 -92
  81. package/index.html +0 -13
  82. package/package.json.demo-backup +0 -109
  83. package/postcss.config.cjs +0 -19
  84. package/public/icons/answerAwartar.png +0 -0
  85. package/public/icons/docx-file.png +0 -0
  86. package/public/icons/folder.png +0 -0
  87. package/public/icons/html.png +0 -0
  88. package/public/icons/image.png +0 -0
  89. package/public/icons/jpg-file.png +0 -0
  90. package/public/icons/json.png +0 -0
  91. package/public/icons/md.png +0 -0
  92. package/public/icons/pdf.png +0 -0
  93. package/public/icons/pptx.png +0 -0
  94. package/public/icons/questionAwartar.png +0 -0
  95. package/public/icons/sheets.png +0 -0
  96. package/public/icons/txt.png +0 -0
  97. package/public/icons/xlsx.png +0 -0
  98. package/public/vite.svg +0 -1
  99. package/rag/assets/index.Bd0tNzw0.js +0 -2797
  100. package/rag/assets/index.D6t67hlu.css +0 -1
  101. package/rag/assets/left.KBHV5h7q.jpg +0 -0
  102. package/rag/assets/worker-BbpylX7l.DptbXke_.js +0 -13
  103. package/release-it.json +0 -21
  104. package/scripts/README.md +0 -133
  105. package/scripts/build-demo.js +0 -88
  106. package/scripts/check-changelog.cjs +0 -124
  107. package/scripts/check-version.cjs +0 -49
  108. package/scripts/decrypt-api-key.js +0 -95
  109. package/scripts/demo-selector.js +0 -216
  110. package/scripts/dev-demo.js +0 -85
  111. package/scripts/open-file.cjs +0 -61
  112. package/scripts/preview-demo.js +0 -130
  113. package/scripts/run-demo.bat +0 -34
  114. package/src/assets/img/close.png +0 -0
  115. package/src/assets/img/database.png +0 -0
  116. package/src/assets/img/downArrow.png +0 -0
  117. package/src/assets/img/downLoad.png +0 -0
  118. package/src/assets/img/excel.png +0 -0
  119. package/src/assets/img/graphIcon.png +0 -0
  120. package/src/assets/img/img.png +0 -0
  121. package/src/assets/img/pdf.png +0 -0
  122. package/src/assets/img/ppt.png +0 -0
  123. package/src/assets/img/search.svg +0 -3
  124. package/src/assets/img/selected.svg +0 -4
  125. package/src/assets/img/singleQa.png +0 -0
  126. package/src/assets/img/txt.png +0 -0
  127. package/src/assets/img/webSearch.png +0 -0
  128. package/src/assets/img/word.png +0 -0
  129. package/src/assets/login/homeBg.png +0 -0
  130. package/src/assets/login/left.jpg +0 -0
  131. package/src/assets/login/logoImg.png +0 -0
  132. package/src/examples/ConversationAssistantPage/index.tsx +0 -42
  133. package/src/examples/LoginPage/index.tsx +0 -20
  134. package/src/examples/chat/components/DrawerGraphPreview.tsx +0 -78
  135. package/src/examples/chat/index.tsx +0 -171
  136. package/src/examples/chat/logo03.png +0 -0
  137. package/src/examples/chatCompare/icons/rag_think.svg +0 -8
  138. package/src/examples/chatCompare/icons/wenda_lianwangsousuo.svg +0 -9
  139. package/src/examples/chatCompare/index.tsx +0 -154
  140. package/src/examples/gientechStreamFilesReader/index.tsx +0 -979
  141. package/src/examples/headlessChat/assets/mind.svg +0 -6
  142. package/src/examples/headlessChat/assets/net.svg +0 -7
  143. package/src/examples/headlessChat/index.tsx +0 -298
  144. package/src/examples/knowledgebaseDetails/index.tsx +0 -119
  145. package/src/examples/ragDatabaseDataPage/index.tsx +0 -40
  146. package/src/examples/ragDatabaseIdPage/index.tsx +0 -126
  147. package/src/examples/ragDatabasePage/index.tsx +0 -36
  148. package/src/examples/ragModelManagePage/index.tsx +0 -107
  149. package/src/examples/ragModelManagePage/style.css +0 -7
  150. package/src/examples/ragSearchPage/index.tsx +0 -0
  151. package/src/examples/ragSensitiveWordsPage/index.tsx +0 -117
  152. package/src/examples/ragSensitiveWordsPage/style.css +0 -16
  153. package/src/examples/sensitiveId/index.tsx +0 -41
  154. package/src/examples/streamFiles/index.tsx +0 -417
  155. package/src/examples/utils/demo_setting_pannel.ts +0 -0
  156. package/src/lib_enter.ts +0 -44
  157. package/src/main.tsx +0 -5
  158. package/src/main.tsx.backup +0 -5
  159. package/src/modules/CHAT_UNIFICATION_PLAN.md +0 -324
  160. package/src/modules/assistantConfig/assets/databse.svg +0 -6
  161. package/src/modules/assistantConfig/assets/empty.png +0 -0
  162. package/src/modules/assistantConfig/assets/graph.svg +0 -4
  163. package/src/modules/assistantConfig/assets/sensitive.svg +0 -5
  164. package/src/modules/assistantConfig/components/Database.tsx +0 -171
  165. package/src/modules/assistantConfig/components/Graph.tsx +0 -177
  166. package/src/modules/assistantConfig/components/Knowledge.tsx +0 -276
  167. package/src/modules/assistantConfig/components/NotFoundContent.tsx +0 -21
  168. package/src/modules/assistantConfig/components/Paragraph.tsx +0 -51
  169. package/src/modules/assistantConfig/components/ParamsItem.tsx +0 -40
  170. package/src/modules/assistantConfig/components/ResourceBinderItem.tsx +0 -133
  171. package/src/modules/assistantConfig/components/SearchableSelector.tsx +0 -500
  172. package/src/modules/assistantConfig/components/Sensitive.tsx +0 -221
  173. package/src/modules/assistantConfig/components/SliderInput.tsx +0 -66
  174. package/src/modules/assistantConfig/constants.tsx +0 -75
  175. package/src/modules/assistantConfig/index.tsx +0 -785
  176. package/src/modules/assistantConfig/server.ts +0 -262
  177. package/src/modules/chat/AllFiles.tsx +0 -158
  178. package/src/modules/chat/Conversations/Item.tsx +0 -169
  179. package/src/modules/chat/Conversations/List.tsx +0 -210
  180. package/src/modules/chat/Conversations/groupByTime.ts +0 -39
  181. package/src/modules/chat/Conversations/index.tsx +0 -255
  182. package/src/modules/chat/ReferenceBar.tsx +0 -659
  183. package/src/modules/chat/constants.tsx +0 -66
  184. package/src/modules/chat/i18n.ts +0 -151
  185. package/src/modules/chat/i18n.tsx +0 -151
  186. package/src/modules/chat/icons/rag_think.svg +0 -8
  187. package/src/modules/chat/icons/wenda_lianwangsousuo.svg +0 -9
  188. package/src/modules/chat/index.tsx +0 -2400
  189. package/src/modules/chat/referenceCom/DeleteModal.tsx +0 -75
  190. package/src/modules/chat/referenceCom/DrawerContent.tsx +0 -136
  191. package/src/modules/chat/referenceCom/DrawerDatabase.tsx +0 -102
  192. package/src/modules/chat/referenceCom/DrawerGraphPreview.tsx +0 -86
  193. package/src/modules/chat/referenceCom/DrawerPreview.tsx +0 -73
  194. package/src/modules/chat/referenceCom/DrawerTitle.tsx +0 -26
  195. package/src/modules/chat/referenceCom/RenameModal.tsx +0 -86
  196. package/src/modules/chat/referenceCom/TagCom.tsx +0 -30
  197. package/src/modules/chat/style.css +0 -6
  198. package/src/modules/chat/style.less +0 -7
  199. package/src/modules/chat/types.ts +0 -17
  200. package/src/modules/chat/utils/index.ts +0 -348
  201. package/src/modules/chatCompare/UseChatCompareHooks.ts +0 -103
  202. package/src/modules/chatCompare/components/AichatCompareUseController.tsx +0 -754
  203. package/src/modules/chatCompare/components/AssistantSelector.tsx +0 -127
  204. package/src/modules/chatCompare/components/ChatInputer.tsx +0 -67
  205. package/src/modules/chatCompare/components/ChatInstance.tsx +0 -426
  206. package/src/modules/chatCompare/components/ChatItem.tsx +0 -556
  207. package/src/modules/chatCompare/components/Sender/FileCardCommon.tsx +0 -97
  208. package/src/modules/chatCompare/components/Sender/FileUpload.tsx +0 -89
  209. package/src/modules/chatCompare/components/Sender/FilesDisplay.tsx +0 -309
  210. package/src/modules/chatCompare/components/Sender/VoiceInput.tsx +0 -80
  211. package/src/modules/chatCompare/components/Sender/contexts/BadgeContext.tsx +0 -36
  212. package/src/modules/chatCompare/components/Sender/fileIcon.tsx +0 -100
  213. package/src/modules/chatCompare/components/Sender/index.tsx +0 -850
  214. package/src/modules/chatCompare/components/UseChatInstanceHooks.ts +0 -406
  215. package/src/modules/chatCompare/components/UseScrollHooks.ts +0 -36
  216. package/src/modules/chatCompare/components/components/AllFiles.tsx +0 -156
  217. package/src/modules/chatCompare/components/components/DeleteModal.tsx +0 -75
  218. package/src/modules/chatCompare/components/components/DrawerContent.tsx +0 -138
  219. package/src/modules/chatCompare/components/components/DrawerDatabase.tsx +0 -110
  220. package/src/modules/chatCompare/components/components/DrawerGraphPreview.tsx +0 -95
  221. package/src/modules/chatCompare/components/components/DrawerPreview.tsx +0 -75
  222. package/src/modules/chatCompare/components/components/DrawerTitle.tsx +0 -26
  223. package/src/modules/chatCompare/components/components/DrawerVideo.tsx +0 -85
  224. package/src/modules/chatCompare/components/components/ReferenceBar.tsx +0 -659
  225. package/src/modules/chatCompare/components/components/RenameModal.tsx +0 -86
  226. package/src/modules/chatCompare/components/components/TagCom.tsx +0 -30
  227. package/src/modules/chatCompare/components/defaultStyleSet.tsx +0 -148
  228. package/src/modules/chatCompare/components/server.ts +0 -208
  229. package/src/modules/chatCompare/components/serverFn.ts +0 -172
  230. package/src/modules/chatCompare/components/style.less +0 -97
  231. package/src/modules/chatCompare/components/useFileManager.ts +0 -173
  232. package/src/modules/chatCompare/components/utils.ts +0 -31
  233. package/src/modules/chatCompare/data.ts +0 -842
  234. package/src/modules/chatCompare/index.tsx +0 -537
  235. package/src/modules/chatCompare/utils/AiChat.types.tsx +0 -110
  236. package/src/modules/chatCompare/utils/constants.tsx +0 -70
  237. package/src/modules/chatCompare/utils/fileUploadValidator.ts +0 -183
  238. package/src/modules/chatCompare/utils/icons/rag_think.svg +0 -8
  239. package/src/modules/chatCompare/utils/icons/wenda_lianwangsousuo.svg +0 -9
  240. package/src/modules/chatCompare/utils/index.ts +0 -46
  241. package/src/modules/database/CreateModal.tsx +0 -402
  242. package/src/modules/database/assets/Doris.png +0 -0
  243. package/src/modules/database/assets/PostgreSQL.png +0 -0
  244. package/src/modules/database/assets/SQLServer.png +0 -0
  245. package/src/modules/database/assets/database_connect.svg +0 -66
  246. package/src/modules/database/assets/database_upload.svg +0 -29
  247. package/src/modules/database/assets/empty.png +0 -0
  248. package/src/modules/database/index.tsx +0 -477
  249. package/src/modules/database/server.ts +0 -196
  250. package/src/modules/databaseId/CustomCom.tsx +0 -156
  251. package/src/modules/databaseId/EditConfig.tsx +0 -280
  252. package/src/modules/databaseId/UploadDrawer.tsx +0 -535
  253. package/src/modules/databaseId/assets/aiOptimize.svg +0 -10
  254. package/src/modules/databaseId/assets/empty.png +0 -0
  255. package/src/modules/databaseId/assets/template.svg +0 -6
  256. package/src/modules/databaseId/assets/upload.svg +0 -9
  257. package/src/modules/databaseId/assets/useTemp.svg +0 -6
  258. package/src/modules/databaseId/i18n.ts +0 -360
  259. package/src/modules/databaseId/index.tsx +0 -855
  260. package/src/modules/databaseId/server.ts +0 -286
  261. package/src/modules/databaseId/style.css +0 -5
  262. package/src/modules/databaseTable/EditRowDrawer.tsx +0 -124
  263. package/src/modules/databaseTable/index.tsx +0 -359
  264. package/src/modules/databaseTable/server.ts +0 -180
  265. package/src/modules/headlessChat/ReferenceBar.tsx +0 -783
  266. package/src/modules/headlessChat/constants.tsx +0 -54
  267. package/src/modules/headlessChat/index.tsx +0 -1903
  268. package/src/modules/headlessChat/referenceCom/DeleteModal.tsx +0 -75
  269. package/src/modules/headlessChat/referenceCom/DrawerContent.tsx +0 -136
  270. package/src/modules/headlessChat/referenceCom/DrawerDatabase.tsx +0 -102
  271. package/src/modules/headlessChat/referenceCom/DrawerGraphPreview.tsx +0 -86
  272. package/src/modules/headlessChat/referenceCom/DrawerPreview.tsx +0 -73
  273. package/src/modules/headlessChat/referenceCom/DrawerTitle.tsx +0 -26
  274. package/src/modules/headlessChat/referenceCom/RenameModal.tsx +0 -86
  275. package/src/modules/headlessChat/referenceCom/TagCom.tsx +0 -30
  276. package/src/modules/headlessChat/style.less +0 -3
  277. package/src/modules/headlessChat/types.ts +0 -23
  278. package/src/modules/headlessChat/utils/index.ts +0 -348
  279. package/src/modules/knowledgeBase/index.tsx +0 -58
  280. package/src/modules/knowledgeBase/server.ts +0 -196
  281. package/src/modules/knowledgebaseDetails/KnowledgeBaseDetails.tsx +0 -169
  282. package/src/modules/knowledgebaseDetails/components/KnowledgeBaseSummaryCard.tsx +0 -193
  283. package/src/modules/knowledgebaseDetails/components/fileManagementParts.tsx +0 -534
  284. package/src/modules/knowledgebaseDetails/components/index.ts +0 -3
  285. package/src/modules/knowledgebaseDetails/index.ts +0 -3
  286. package/src/modules/knowledgebaseDetails/modules/ConfigModule.tsx +0 -49
  287. package/src/modules/knowledgebaseDetails/modules/FaqModule.tsx +0 -47
  288. package/src/modules/knowledgebaseDetails/modules/KnowledgeParseModule.tsx +0 -771
  289. package/src/modules/knowledgebaseDetails/modules/RetrievalTestModule.tsx +0 -49
  290. package/src/modules/knowledgebaseDetails/modules/UploadManagementModule.tsx +0 -49
  291. package/src/modules/knowledgebaseDetails/modules/types.ts +0 -44
  292. package/src/modules/knowledgebaseDetails/modules-shim.d.ts +0 -14
  293. package/src/modules/knowledgebaseDetails/servers/analysis.ts +0 -5
  294. package/src/modules/knowledgebaseDetails/servers/index.ts +0 -318
  295. package/src/modules/login/components/Login/LoginBox/index.tsx +0 -105
  296. package/src/modules/login/components/Login/RegisterBox/index.tsx +0 -181
  297. package/src/modules/login/components/Login/index.tsx +0 -100
  298. package/src/modules/login/i18n.ts +0 -217
  299. package/src/modules/login/index.tsx +0 -113
  300. package/src/modules/login/style.css +0 -3
  301. package/src/modules/login/useServices.ts +0 -53
  302. package/src/modules/login/utils.ts +0 -42
  303. package/src/modules/modelManage/ConfigDrawer.tsx +0 -267
  304. package/src/modules/modelManage/ReplaceModal.tsx +0 -113
  305. package/src/modules/modelManage/assets/empty.png +0 -0
  306. package/src/modules/modelManage/const.ts +0 -51
  307. package/src/modules/modelManage/i18n.ts +0 -407
  308. package/src/modules/modelManage/index.tsx +0 -668
  309. package/src/modules/modelManage/server.ts +0 -231
  310. package/src/modules/nodegraph/index.tsx +0 -1
  311. package/src/modules/search/assets/Icon-history.svg +0 -8
  312. package/src/modules/search/assets/answerAwartar.png +0 -0
  313. package/src/modules/search/assets/doc.png +0 -0
  314. package/src/modules/search/assets/genera.gif +0 -0
  315. package/src/modules/search/assets/icon-robot.svg +0 -9
  316. package/src/modules/search/assets/icon-search-bar.svg +0 -14
  317. package/src/modules/search/assets/icon-sub-title.svg +0 -3
  318. package/src/modules/search/assets/icon-title.svg +0 -9
  319. package/src/modules/search/assets/icon-zoomOut.svg +0 -9
  320. package/src/modules/search/assets/iconAi.svg +0 -9
  321. package/src/modules/search/assets/pdf.png +0 -0
  322. package/src/modules/search/assets/ppt.png +0 -0
  323. package/src/modules/search/assets/search.svg +0 -3
  324. package/src/modules/search/assets/selected.svg +0 -4
  325. package/src/modules/search/assets/txt.png +0 -0
  326. package/src/modules/search/assets/xls.png +0 -0
  327. package/src/modules/search/components/AssisSelect.tsx +0 -137
  328. package/src/modules/search/components/Editor/ChatViewEditor.tsx +0 -261
  329. package/src/modules/search/components/Editor/aichat.css +0 -1
  330. package/src/modules/search/components/Editor/constant.ts +0 -13
  331. package/src/modules/search/components/Editor/index.tsx +0 -113
  332. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +0 -332
  333. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +0 -20
  334. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +0 -38
  335. package/src/modules/search/components/Editor/plugins/displayer.ts +0 -298
  336. package/src/modules/search/components/Editor/plugins/imageClick.tsx +0 -32
  337. package/src/modules/search/components/Editor/plugins/myplugin.tsx +0 -98
  338. package/src/modules/search/components/Editor/ui/avatar.tsx +0 -19
  339. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +0 -21
  340. package/src/modules/search/components/Editor/ui/button.tsx +0 -58
  341. package/src/modules/search/components/Editor/ui/calendar.tsx +0 -68
  342. package/src/modules/search/components/Editor/ui/caption.tsx +0 -46
  343. package/src/modules/search/components/Editor/ui/checkbox.tsx +0 -27
  344. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +0 -188
  345. package/src/modules/search/components/Editor/ui/code-block-element.css +0 -434
  346. package/src/modules/search/components/Editor/ui/code-block-element.tsx +0 -39
  347. package/src/modules/search/components/Editor/ui/code-leaf.tsx +0 -24
  348. package/src/modules/search/components/Editor/ui/code-line-element.tsx +0 -10
  349. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +0 -21
  350. package/src/modules/search/components/Editor/ui/column-element.tsx +0 -30
  351. package/src/modules/search/components/Editor/ui/column-group-element.tsx +0 -94
  352. package/src/modules/search/components/Editor/ui/command.tsx +0 -75
  353. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +0 -22
  354. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +0 -37
  355. package/src/modules/search/components/Editor/ui/comment-item.tsx +0 -74
  356. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +0 -49
  357. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +0 -42
  358. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +0 -22
  359. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +0 -32
  360. package/src/modules/search/components/Editor/ui/comment-value.tsx +0 -34
  361. package/src/modules/search/components/Editor/ui/comments-popover.tsx +0 -63
  362. package/src/modules/search/components/Editor/ui/date-element.tsx +0 -83
  363. package/src/modules/search/components/Editor/ui/dialog.tsx +0 -63
  364. package/src/modules/search/components/Editor/ui/draggable.tsx +0 -177
  365. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +0 -180
  366. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +0 -85
  367. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +0 -28
  368. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +0 -76
  369. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +0 -8
  370. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +0 -51
  371. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +0 -77
  372. package/src/modules/search/components/Editor/ui/heading-element.tsx +0 -48
  373. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +0 -17
  374. package/src/modules/search/components/Editor/ui/hr-element.tsx +0 -30
  375. package/src/modules/search/components/Editor/ui/icons.tsx +0 -267
  376. package/src/modules/search/components/Editor/ui/image-element.tsx +0 -74
  377. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +0 -368
  378. package/src/modules/search/components/Editor/ui/input.tsx +0 -25
  379. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +0 -218
  380. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +0 -20
  381. package/src/modules/search/components/Editor/ui/link-element.tsx +0 -29
  382. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +0 -161
  383. package/src/modules/search/components/Editor/ui/list-element.tsx +0 -30
  384. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +0 -24
  385. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +0 -133
  386. package/src/modules/search/components/Editor/ui/media-popover.tsx +0 -97
  387. package/src/modules/search/components/Editor/ui/mention-element.tsx +0 -43
  388. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +0 -141
  389. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +0 -93
  390. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +0 -67
  391. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +0 -4
  392. package/src/modules/search/components/Editor/ui/placeholder.tsx +0 -52
  393. package/src/modules/search/components/Editor/ui/popover.tsx +0 -32
  394. package/src/modules/search/components/Editor/ui/resizable.tsx +0 -66
  395. package/src/modules/search/components/Editor/ui/separator.tsx +0 -25
  396. package/src/modules/search/components/Editor/ui/style.less +0 -12
  397. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +0 -143
  398. package/src/modules/search/components/Editor/ui/table-element.tsx +0 -243
  399. package/src/modules/search/components/Editor/ui/table-row-element.tsx +0 -22
  400. package/src/modules/search/components/Editor/ui/tableValue.tsx +0 -135
  401. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +0 -43
  402. package/src/modules/search/components/Editor/ui/toggle-element.tsx +0 -31
  403. package/src/modules/search/components/Editor/ui/toolbar.tsx +0 -157
  404. package/src/modules/search/components/Editor/ui/tooltip.tsx +0 -65
  405. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +0 -160
  406. package/src/modules/search/components/Editor/ui/with-draggables.tsx +0 -175
  407. package/src/modules/search/components/FileList.tsx +0 -287
  408. package/src/modules/search/components/ImageGroupView/index.tsx +0 -85
  409. package/src/modules/search/components/ResultContent.tsx +0 -232
  410. package/src/modules/search/components/SearchInput.tsx +0 -232
  411. package/src/modules/search/components/SearchLanding.tsx +0 -74
  412. package/src/modules/search/components/SearchView.tsx +0 -563
  413. package/src/modules/search/components/SimpleEditor.tsx +0 -158
  414. package/src/modules/search/components/SimpleFileList.tsx +0 -215
  415. package/src/modules/search/index.tsx +0 -10
  416. package/src/modules/search/reademe.md +0 -1
  417. package/src/modules/search/servers/apis.tsx +0 -19
  418. package/src/modules/search/servers/index.ts +0 -184
  419. package/src/modules/search/style.less +0 -503
  420. package/src/modules/search/type.ts +0 -22
  421. package/src/modules/search/utils.ts +0 -34
  422. package/src/modules/sensitive/i18n.ts +0 -391
  423. package/src/modules/sensitive/index.tsx +0 -604
  424. package/src/modules/sensitive/sensitiveEditor.tsx +0 -543
  425. package/src/modules/sensitive/server.ts +0 -197
  426. package/src/modules/sensitiveId/AutoTag.tsx +0 -311
  427. package/src/modules/sensitiveId/UploadModal.tsx +0 -181
  428. package/src/modules/sensitiveId/VirtualWrap.tsx +0 -125
  429. package/src/modules/sensitiveId/index.tsx +0 -253
  430. package/src/modules/sensitiveId/server.ts +0 -142
  431. package/src/modules/streamFilesReader/GientechStreamReader.tsx +0 -1658
  432. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  433. package/src/modules/streamFilesReader/components/Header/index.tsx +0 -297
  434. package/src/modules/streamFilesReader/index.tsx +0 -3
  435. package/src/style.css +0 -6
  436. package/src/type.d.ts +0 -0
  437. package/src/utils/commonFn.tsx +0 -153
  438. package/src/utils/decryptApiKey.ts +0 -40
  439. package/src/utils/gientechCommon/components/AppError.tsx +0 -32
  440. package/src/utils/gientechCommon/components/AppLoading.tsx +0 -75
  441. package/src/utils/gientechCommon/components/DeleteModal.tsx +0 -75
  442. package/src/utils/gientechCommon/components/DisplayError.tsx +0 -33
  443. package/src/utils/gientechCommon/components/DisplayLoading.tsx +0 -38
  444. package/src/utils/gientechCommon/components/FeedBackModal.tsx +0 -319
  445. package/src/utils/gientechCommon/components/FileCardCommon.tsx +0 -82
  446. package/src/utils/gientechCommon/components/FileManager/index.tsx +0 -418
  447. package/src/utils/gientechCommon/components/FileManager/style.css +0 -5
  448. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +0 -583
  449. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +0 -359
  450. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +0 -245
  451. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +0 -209
  452. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  453. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +0 -148
  454. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +0 -14
  455. package/src/utils/gientechCommon/components/RenameModal.tsx +0 -86
  456. package/src/utils/gientechCommon/components/style.less +0 -11
  457. package/src/utils/gientechCommon/configs/commonConfig.ts +0 -2
  458. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  459. package/src/utils/gientechCommon/configs/stylesConfig.ts +0 -142
  460. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +0 -761
  461. package/src/utils/gientechCommon/hooks/style.less +0 -8
  462. package/src/utils/gientechCommon/hooks/useFileDisplayTools.tsx +0 -352
  463. package/src/utils/gientechCommon/hooks/useFileManager.ts +0 -169
  464. package/src/utils/gientechCommon/slate/converters/deserializers.ts +0 -763
  465. package/src/utils/gientechCommon/slate/converters/mockData.ts +0 -232
  466. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +0 -258
  467. package/src/utils/gientechCommon/slate/richElements/index.tsx +0 -499
  468. package/src/utils/gientechCommon/utils/fileUtils.ts +0 -86
  469. package/src/utils/gientechCommon/utils/index.ts +0 -386
  470. package/src/utils/gientechCommon/utils/request.ts +0 -37
  471. package/src/utils/gientechCommon/utils/serverFn.ts +0 -172
  472. package/src/utils/index.tsx +0 -186
  473. package/src/utils/testconfigs/demologin/index.tsx +0 -32
  474. package/src/utils/testconfigs/index.ts +0 -66
  475. package/src/vite-env.d.ts +0 -49
  476. package/stats.html +0 -4949
  477. package/tailwind.config.js +0 -170
  478. package/tsconfig.app.json +0 -31
  479. package/tsconfig.app.tsbuildinfo +0 -11
  480. package/tsconfig.json +0 -17
  481. package/tsconfig.node.json +0 -23
  482. package/tsconfig.node.tsbuildinfo +0 -1
  483. package/vite.config.app.ts +0 -91
  484. package/vite.config.ts +0 -238
  485. /package/{dist/assets → assets}/Doris.png +0 -0
  486. /package/{dist/assets → assets}/PostgreSQL.png +0 -0
  487. /package/{dist/assets → assets}/SQLServer.png +0 -0
  488. /package/{dist/assets → assets}/empty.png +0 -0
  489. /package/{dist/assets → assets}/homeBg.png +0 -0
  490. /package/{dist/assets → assets}/index-CpW6Dhpp.js +0 -0
  491. /package/{dist/assets → assets}/left.jpg +0 -0
  492. /package/{dist/assets → assets}/logoImg.png +0 -0
  493. /package/{dist/assets → assets}/style.css +0 -0
  494. /package/{dist/assets → assets}/style3.css +0 -0
  495. /package/{dist/assets → assets}/style4.css +0 -0
  496. /package/{dist/assets → assets}/style5.css +0 -0
  497. /package/{dist/assets → assets}/worker-BbpylX7l.js +0 -0
  498. /package/{dist/assistantConfig.d.ts → assistantConfig.d.ts} +0 -0
  499. /package/{dist/chat.d.ts → chat.d.ts} +0 -0
  500. /package/{dist/chatCompare.d.ts → chatCompare.d.ts} +0 -0
  501. /package/{dist/database.d.ts → database.d.ts} +0 -0
  502. /package/{dist/databaseId.d.ts → databaseId.d.ts} +0 -0
  503. /package/{dist/databaseTable.d.ts → databaseTable.d.ts} +0 -0
  504. /package/{dist/icons → icons}/answerAwartar.png +0 -0
  505. /package/{dist/icons → icons}/docx-file.png +0 -0
  506. /package/{dist/icons → icons}/folder.png +0 -0
  507. /package/{dist/icons → icons}/html.png +0 -0
  508. /package/{dist/icons → icons}/image.png +0 -0
  509. /package/{dist/icons → icons}/jpg-file.png +0 -0
  510. /package/{dist/icons → icons}/json.png +0 -0
  511. /package/{dist/icons → icons}/md.png +0 -0
  512. /package/{dist/icons → icons}/pdf.png +0 -0
  513. /package/{dist/icons → icons}/pptx.png +0 -0
  514. /package/{dist/icons → icons}/questionAwartar.png +0 -0
  515. /package/{dist/icons → icons}/sheets.png +0 -0
  516. /package/{dist/icons → icons}/txt.png +0 -0
  517. /package/{dist/icons → icons}/xlsx.png +0 -0
  518. /package/{dist/index.d.ts → index.d.ts} +0 -0
  519. /package/{dist/modelManage.d.ts → modelManage.d.ts} +0 -0
  520. /package/{dist/sensitive.d.ts → sensitive.d.ts} +0 -0
  521. /package/{dist/streamFilesReader.d.ts → streamFilesReader.d.ts} +0 -0
  522. /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
- }