@gientech/modual 1.3.2 → 1.3.3

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 (309) hide show
  1. package/.editorconfig +38 -0
  2. package/.prettierignore +16 -0
  3. package/.prettierrc +17 -0
  4. package/README.md +129 -129
  5. package/USAGE.md +191 -0
  6. package/bash.exe.stackdump +40 -0
  7. package/components.json +21 -0
  8. package/dist/README.md +129 -0
  9. package/{assets → dist/assets}/database.svg +11 -11
  10. package/{assets → dist/assets}/database_add.svg +53 -53
  11. package/{assets → dist/assets}/database_connect.svg +66 -66
  12. package/{assets → dist/assets}/database_upload.svg +29 -29
  13. package/{assets → dist/assets}/defaultWeLogo.svg +14 -14
  14. package/{assets/index-ldqIbm0x.js → dist/assets/index-XvC_4jDB.js} +106 -101
  15. package/{assets/index-D-dGaGjW.js → dist/assets/index-mPgEc8KC.js} +288 -102
  16. package/{assets/MySQL.svg → dist/assets/mysql.svg} +14 -14
  17. package/dist/assets/style.css +1 -0
  18. package/dist/assets/style3.css +1 -0
  19. package/{chat.js → dist/chat.js} +78 -78
  20. package/dist/database.js +20 -0
  21. package/{databaseId.js → dist/databaseId.js} +1 -1
  22. package/{databaseTable.js → dist/databaseTable.js} +1 -1
  23. package/{modelManage.js → dist/modelManage.js} +1 -1
  24. package/dist/package.json +56 -0
  25. package/{sensitive.js → dist/sensitive.js} +1 -1
  26. package/{streamFilesReader.js → dist/streamFilesReader.js} +11 -11
  27. package/{worker → dist/worker}/pdf.worker.min.js +21 -21
  28. package/doc_assets/2.png +0 -0
  29. package/doc_assets/demo.md +27 -0
  30. package/doc_assets/demos/dist-app/assets/index.Dh-ZAS9Z.css +2 -0
  31. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js +23699 -0
  32. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js.map +1 -0
  33. package/doc_assets/demos/dist-app/index.html +14 -0
  34. package/doc_assets/demos/dist-app/vite.svg +1 -0
  35. package/doc_assets/images/1.png +0 -0
  36. package/doc_assets/images/3.png +0 -0
  37. package/doc_assets/images/component-screenshot.png +1 -0
  38. package/doc_assets/install.md +5 -0
  39. package/eslint.config.js +92 -0
  40. package/index.html +13 -0
  41. package/package.json +83 -39
  42. package/postcss.config.cjs +19 -0
  43. package/public/vite.svg +1 -0
  44. package/public/worker/pdf.worker.min.js +22 -0
  45. package/scripts/README.md +133 -0
  46. package/scripts/build-demo.js +88 -0
  47. package/scripts/demo-selector.js +216 -0
  48. package/scripts/dev-demo.js +76 -0
  49. package/scripts/preview-demo.js +130 -0
  50. package/scripts/run-demo.bat +34 -0
  51. package/src/assets/img/downArrow.png +0 -0
  52. package/src/assets/img/excel.png +0 -0
  53. package/src/assets/img/img.png +0 -0
  54. package/src/assets/img/pdf.png +0 -0
  55. package/src/assets/img/ppt.png +0 -0
  56. package/src/assets/img/txt.png +0 -0
  57. package/src/assets/img/word.png +0 -0
  58. package/src/assets/login/homeBg.png +0 -0
  59. package/src/assets/login/left.jpg +0 -0
  60. package/src/assets/login/logoImg.png +0 -0
  61. package/src/examples/LoginPage/index.tsx +18 -0
  62. package/src/examples/aaa/index.tsx +3758 -0
  63. package/src/examples/chat/components/DrawerGraphPreview.tsx +78 -0
  64. package/src/examples/chat/index.tsx +190 -0
  65. package/src/examples/gientechStreamFilesReader/index.tsx +1016 -0
  66. package/src/examples/ragDatabaseDataPage/index.tsx +36 -0
  67. package/src/examples/ragDatabaseIdPage/index.tsx +44 -0
  68. package/src/examples/ragDatabasePage/index.tsx +36 -0
  69. package/src/examples/ragModelManagePage/index.tsx +37 -0
  70. package/src/examples/ragSearchPage/index.tsx +0 -0
  71. package/src/examples/ragSensitiveWordsPage/index.tsx +32 -0
  72. package/src/examples/streamFiles/index.tsx +384 -0
  73. package/src/lib_enter.ts +38 -0
  74. package/src/main.tsx +5 -0
  75. package/src/main.tsx.backup +5 -0
  76. package/src/modules/chat/Conversations/Item.tsx +167 -0
  77. package/src/modules/chat/Conversations/List.tsx +143 -0
  78. package/src/modules/chat/Conversations/groupByTime.ts +39 -0
  79. package/src/modules/chat/Conversations/index.tsx +212 -0
  80. package/src/modules/chat/constants.tsx +33 -0
  81. package/src/modules/chat/data.txt +82 -0
  82. package/src/modules/chat/index.tsx +1908 -0
  83. package/src/modules/chat/types.ts +17 -0
  84. package/src/modules/database/CreateModal.tsx +398 -0
  85. package/src/modules/database/assets/Doris.png +0 -0
  86. package/src/modules/database/assets/PostgreSQL.png +0 -0
  87. package/src/modules/database/assets/SQLServer.png +0 -0
  88. package/src/modules/database/assets/database.svg +11 -0
  89. package/src/modules/database/assets/database_add.svg +53 -0
  90. package/src/modules/database/assets/database_connect.svg +66 -0
  91. package/src/modules/database/assets/database_upload.svg +29 -0
  92. package/src/modules/database/assets/empty.png +0 -0
  93. package/src/modules/database/assets/mysql.svg +14 -0
  94. package/src/modules/database/index.tsx +466 -0
  95. package/src/modules/database/server.ts +196 -0
  96. package/src/modules/databaseId/CustomCom.tsx +156 -0
  97. package/src/modules/databaseId/EditConfig.tsx +268 -0
  98. package/src/modules/databaseId/UploadDrawer.tsx +520 -0
  99. package/src/modules/databaseId/assets/aiOptimize.svg +10 -0
  100. package/src/modules/databaseId/assets/empty.png +0 -0
  101. package/src/modules/databaseId/assets/template.svg +6 -0
  102. package/src/modules/databaseId/assets/upload.svg +9 -0
  103. package/src/modules/databaseId/assets/useTemp.svg +6 -0
  104. package/src/modules/databaseId/index.tsx +734 -0
  105. package/src/modules/databaseId/server.ts +286 -0
  106. package/src/modules/databaseId/style.css +5 -0
  107. package/src/modules/databaseTable/EditRowDrawer.tsx +119 -0
  108. package/src/modules/databaseTable/index.tsx +357 -0
  109. package/src/modules/databaseTable/server.ts +180 -0
  110. package/src/modules/headlessChat/constants.tsx +32 -0
  111. package/src/modules/headlessChat/index.tsx +1065 -0
  112. package/src/modules/headlessChat/types.ts +23 -0
  113. package/src/modules/login/components/Login/LoginBox/index.tsx +102 -0
  114. package/src/modules/login/components/Login/RegisterBox/index.tsx +180 -0
  115. package/src/modules/login/components/Login/index.tsx +100 -0
  116. package/src/modules/login/index.tsx +106 -0
  117. package/src/modules/login/style.css +3 -0
  118. package/src/modules/login/useServices.ts +53 -0
  119. package/src/modules/login/utils.ts +42 -0
  120. package/src/modules/modelManage/ConfigDrawer.tsx +249 -0
  121. package/src/modules/modelManage/assets/empty.png +0 -0
  122. package/src/modules/modelManage/const.ts +50 -0
  123. package/src/modules/modelManage/index.tsx +439 -0
  124. package/src/modules/modelManage/server.ts +185 -0
  125. package/src/modules/nodegraph/index.tsx +1 -0
  126. package/src/modules/search/assets/Icon-history.svg +8 -0
  127. package/src/modules/search/assets/answerAwartar.png +0 -0
  128. package/src/modules/search/assets/doc.png +0 -0
  129. package/src/modules/search/assets/genera.gif +0 -0
  130. package/src/modules/search/assets/icon-robot.svg +9 -0
  131. package/src/modules/search/assets/icon-search-bar.svg +14 -0
  132. package/src/modules/search/assets/icon-sub-title.svg +3 -0
  133. package/src/modules/search/assets/icon-title.svg +9 -0
  134. package/src/modules/search/assets/icon-zoomOut.svg +9 -0
  135. package/src/modules/search/assets/iconAi.svg +9 -0
  136. package/src/modules/search/assets/pdf.png +0 -0
  137. package/src/modules/search/assets/ppt.png +0 -0
  138. package/src/modules/search/assets/search.svg +3 -0
  139. package/src/modules/search/assets/selected.svg +4 -0
  140. package/src/modules/search/assets/txt.png +0 -0
  141. package/src/modules/search/assets/xls.png +0 -0
  142. package/src/modules/search/components/AssisSelect.tsx +137 -0
  143. package/src/modules/search/components/Editor/ChatViewEditor.tsx +261 -0
  144. package/src/modules/search/components/Editor/aichat.css +1 -0
  145. package/src/modules/search/components/Editor/constant.ts +13 -0
  146. package/src/modules/search/components/Editor/index.tsx +113 -0
  147. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +332 -0
  148. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +20 -0
  149. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +38 -0
  150. package/src/modules/search/components/Editor/plugins/displayer.ts +298 -0
  151. package/src/modules/search/components/Editor/plugins/imageClick.tsx +32 -0
  152. package/src/modules/search/components/Editor/plugins/myplugin.tsx +98 -0
  153. package/src/modules/search/components/Editor/ui/avatar.tsx +19 -0
  154. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +21 -0
  155. package/src/modules/search/components/Editor/ui/button.tsx +58 -0
  156. package/src/modules/search/components/Editor/ui/calendar.tsx +68 -0
  157. package/src/modules/search/components/Editor/ui/caption.tsx +46 -0
  158. package/src/modules/search/components/Editor/ui/checkbox.tsx +27 -0
  159. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +188 -0
  160. package/src/modules/search/components/Editor/ui/code-block-element.css +434 -0
  161. package/src/modules/search/components/Editor/ui/code-block-element.tsx +39 -0
  162. package/src/modules/search/components/Editor/ui/code-leaf.tsx +24 -0
  163. package/src/modules/search/components/Editor/ui/code-line-element.tsx +10 -0
  164. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +21 -0
  165. package/src/modules/search/components/Editor/ui/column-element.tsx +30 -0
  166. package/src/modules/search/components/Editor/ui/column-group-element.tsx +94 -0
  167. package/src/modules/search/components/Editor/ui/command.tsx +75 -0
  168. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +22 -0
  169. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +37 -0
  170. package/src/modules/search/components/Editor/ui/comment-item.tsx +74 -0
  171. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +49 -0
  172. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +42 -0
  173. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +22 -0
  174. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +32 -0
  175. package/src/modules/search/components/Editor/ui/comment-value.tsx +34 -0
  176. package/src/modules/search/components/Editor/ui/comments-popover.tsx +63 -0
  177. package/src/modules/search/components/Editor/ui/date-element.tsx +83 -0
  178. package/src/modules/search/components/Editor/ui/dialog.tsx +63 -0
  179. package/src/modules/search/components/Editor/ui/draggable.tsx +177 -0
  180. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +180 -0
  181. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +85 -0
  182. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +28 -0
  183. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +76 -0
  184. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +8 -0
  185. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +51 -0
  186. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +77 -0
  187. package/src/modules/search/components/Editor/ui/heading-element.tsx +48 -0
  188. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +17 -0
  189. package/src/modules/search/components/Editor/ui/hr-element.tsx +30 -0
  190. package/src/modules/search/components/Editor/ui/icons.tsx +267 -0
  191. package/src/modules/search/components/Editor/ui/image-element.tsx +74 -0
  192. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +368 -0
  193. package/src/modules/search/components/Editor/ui/input.tsx +25 -0
  194. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +218 -0
  195. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +20 -0
  196. package/src/modules/search/components/Editor/ui/link-element.tsx +29 -0
  197. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +161 -0
  198. package/src/modules/search/components/Editor/ui/list-element.tsx +30 -0
  199. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +24 -0
  200. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +133 -0
  201. package/src/modules/search/components/Editor/ui/media-popover.tsx +97 -0
  202. package/src/modules/search/components/Editor/ui/mention-element.tsx +43 -0
  203. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +141 -0
  204. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +93 -0
  205. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +67 -0
  206. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +4 -0
  207. package/src/modules/search/components/Editor/ui/placeholder.tsx +52 -0
  208. package/src/modules/search/components/Editor/ui/popover.tsx +32 -0
  209. package/src/modules/search/components/Editor/ui/resizable.tsx +66 -0
  210. package/src/modules/search/components/Editor/ui/separator.tsx +25 -0
  211. package/src/modules/search/components/Editor/ui/style.less +12 -0
  212. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +143 -0
  213. package/src/modules/search/components/Editor/ui/table-element.tsx +243 -0
  214. package/src/modules/search/components/Editor/ui/table-row-element.tsx +22 -0
  215. package/src/modules/search/components/Editor/ui/tableValue.tsx +135 -0
  216. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +43 -0
  217. package/src/modules/search/components/Editor/ui/toggle-element.tsx +31 -0
  218. package/src/modules/search/components/Editor/ui/toolbar.tsx +157 -0
  219. package/src/modules/search/components/Editor/ui/tooltip.tsx +65 -0
  220. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +160 -0
  221. package/src/modules/search/components/Editor/ui/with-draggables.tsx +175 -0
  222. package/src/modules/search/components/FileList.tsx +287 -0
  223. package/src/modules/search/components/ImageGroupView/index.tsx +85 -0
  224. package/src/modules/search/components/ResultContent.tsx +232 -0
  225. package/src/modules/search/components/SearchInput.tsx +232 -0
  226. package/src/modules/search/components/SearchLanding.tsx +74 -0
  227. package/src/modules/search/components/SearchView.tsx +563 -0
  228. package/src/modules/search/components/SimpleEditor.tsx +158 -0
  229. package/src/modules/search/components/SimpleFileList.tsx +215 -0
  230. package/src/modules/search/index.tsx +10 -0
  231. package/src/modules/search/reademe.md +1 -0
  232. package/src/modules/search/servers/apis.tsx +19 -0
  233. package/src/modules/search/servers/index.ts +184 -0
  234. package/src/modules/search/style.less +503 -0
  235. package/src/modules/search/type.ts +22 -0
  236. package/src/modules/search/utils.ts +34 -0
  237. package/src/modules/sensitive/index.tsx +313 -0
  238. package/src/modules/sensitive/server.ts +122 -0
  239. package/src/modules/streamFilesReader/GientechStreamReader.tsx +1555 -0
  240. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  241. package/src/modules/streamFilesReader/components/Header/index.tsx +297 -0
  242. package/src/modules/streamFilesReader/index.tsx +3 -0
  243. package/src/style.css +6 -0
  244. package/src/type.d.ts +0 -0
  245. package/src/utils/commonFn.tsx +111 -0
  246. package/src/utils/gientechCommon/components/AppError.tsx +32 -0
  247. package/src/utils/gientechCommon/components/AppLoading.tsx +75 -0
  248. package/src/utils/gientechCommon/components/DeleteModal.tsx +75 -0
  249. package/src/utils/gientechCommon/components/DisplayError.tsx +33 -0
  250. package/src/utils/gientechCommon/components/DisplayLoading.tsx +38 -0
  251. package/src/utils/gientechCommon/components/FeedBackModal.tsx +310 -0
  252. package/src/utils/gientechCommon/components/FileCardCommon.tsx +82 -0
  253. package/src/utils/gientechCommon/components/FileManager/index.tsx +390 -0
  254. package/src/utils/gientechCommon/components/FileManager/style.css +5 -0
  255. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +296 -0
  256. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +339 -0
  257. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +245 -0
  258. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +209 -0
  259. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  260. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +148 -0
  261. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +14 -0
  262. package/src/utils/gientechCommon/components/RenameModal.tsx +86 -0
  263. package/src/utils/gientechCommon/components/style.less +11 -0
  264. package/src/utils/gientechCommon/configs/commonConfig.ts +2 -0
  265. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  266. package/src/utils/gientechCommon/configs/stylesConfig.ts +142 -0
  267. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +345 -0
  268. package/src/utils/gientechCommon/slate/converters/deserializers.ts +763 -0
  269. package/src/utils/gientechCommon/slate/converters/mockData.ts +232 -0
  270. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +258 -0
  271. package/src/utils/gientechCommon/slate/richElements/index.tsx +499 -0
  272. package/src/utils/gientechCommon/utils/request.ts +37 -0
  273. package/src/utils/gientechCommon/utils/serverFn.ts +172 -0
  274. package/src/utils/index.tsx +126 -0
  275. package/src/utils/testconfigs/demologin/index.tsx +32 -0
  276. package/src/utils/testconfigs/index.ts +53 -0
  277. package/src/vite-env.d.ts +11 -0
  278. package/stats.html +4949 -0
  279. package/tailwind.config.js +170 -0
  280. package/tsconfig.app.json +30 -0
  281. package/tsconfig.app.tsbuildinfo +11 -0
  282. package/tsconfig.json +13 -0
  283. package/tsconfig.node.json +22 -0
  284. package/tsconfig.node.tsbuildinfo +1 -0
  285. package/vite.config.ts +177 -0
  286. package/workflows/release.yml +60 -0
  287. package/assets/style.css +0 -1
  288. package/assets/style3.css +0 -1
  289. package/database.js +0 -20
  290. /package/{assets → dist/assets}/Doris.png +0 -0
  291. /package/{assets → dist/assets}/PostgreSQL.png +0 -0
  292. /package/{assets → dist/assets}/SQLServer.png +0 -0
  293. /package/{assets → dist/assets}/_commonjsHelpers-gnU0ypJ3.js +0 -0
  294. /package/{assets → dist/assets}/circle-alert-g2Y6zAjt.js +0 -0
  295. /package/{assets → dist/assets}/empty.png +0 -0
  296. /package/{assets → dist/assets}/index-CEK88UzR.js +0 -0
  297. /package/{assets → dist/assets}/index-CpW6Dhpp.js +0 -0
  298. /package/{assets → dist/assets}/plus-omCUN0e3.js +0 -0
  299. /package/{assets → dist/assets}/style2.css +0 -0
  300. /package/{assets → dist/assets}/styled-components.browser.esm-DPkS13KC.js +0 -0
  301. /package/{assets → dist/assets}/x-vPcWt3fC.js +0 -0
  302. /package/{chat.d.ts → dist/chat.d.ts} +0 -0
  303. /package/{database.d.ts → dist/database.d.ts} +0 -0
  304. /package/{databaseId.d.ts → dist/databaseId.d.ts} +0 -0
  305. /package/{databaseTable.d.ts → dist/databaseTable.d.ts} +0 -0
  306. /package/{modelManage.d.ts → dist/modelManage.d.ts} +0 -0
  307. /package/{sensitive.d.ts → dist/sensitive.d.ts} +0 -0
  308. /package/{streamFilesReader.d.ts → dist/streamFilesReader.d.ts} +0 -0
  309. /package/{vite.svg → dist/vite.svg} +0 -0
@@ -0,0 +1,1016 @@
1
+ import React, { useState } from 'react';
2
+ import { GientechStreamReader } from '../../modules/streamFilesReader';
3
+ import { AppTheme } from '@mxmweb/zui';
4
+ import type { Annotation, MDAnnotation, TableAnnotation } from '../../../../apps/FViewer/dist/core/types';
5
+ import { rag_dev_server } from '../../utils/testconfigs';
6
+
7
+
8
+ const tableAnnotations: TableAnnotation[] = [
9
+ {
10
+ "id": "b53b1a8d46c",
11
+ "offsets": [
12
+ [
13
+ 5,
14
+ 0
15
+ ],
16
+ [
17
+ 5,
18
+ 1
19
+ ],
20
+ [
21
+ 5,
22
+ 2
23
+ ],
24
+ [
25
+ 6,
26
+ 0
27
+ ],
28
+ [
29
+ 6,
30
+ 1
31
+ ],
32
+ [
33
+ 6,
34
+ 2
35
+ ],
36
+ [
37
+ 7,
38
+ 0
39
+ ],
40
+ [
41
+ 7,
42
+ 1
43
+ ],
44
+ [
45
+ 7,
46
+ 2
47
+ ],
48
+ [
49
+ 8,
50
+ 0
51
+ ],
52
+ [
53
+ 8,
54
+ 1
55
+ ],
56
+ [
57
+ 8,
58
+ 2
59
+ ],
60
+ [
61
+ 9,
62
+ 0
63
+ ],
64
+ [
65
+ 9,
66
+ 1
67
+ ],
68
+ [
69
+ 9,
70
+ 2
71
+ ]
72
+ ]
73
+ }
74
+ ]
75
+ // 自定义Loading组件示例
76
+ const CustomLoadingComponent: React.FC<{
77
+ status: string;
78
+ theme: AppTheme;
79
+ }> = ({ status, theme }) => {
80
+ return (
81
+ <div
82
+ style={{
83
+ display: 'flex',
84
+ flexDirection: 'column',
85
+ alignItems: 'center',
86
+ justifyContent: 'center',
87
+ height: '100%',
88
+ padding: '40px',
89
+ background: theme.colors.background,
90
+ }}
91
+ >
92
+ {/* 自定义加载动画 */}
93
+ <div
94
+ style={{
95
+ position: 'relative',
96
+ width: '100px',
97
+ height: '100px',
98
+ marginBottom: '24px',
99
+ }}
100
+ >
101
+ {/* 旋转的圆环 */}
102
+ <div
103
+ style={{
104
+ width: '100%',
105
+ height: '100%',
106
+ border: `4px solid ${theme.colors.border}`,
107
+ borderTop: `4px solid ${theme.colors.primary}`,
108
+ borderRadius: '50%',
109
+ animation: 'spin 1s linear infinite',
110
+ }}
111
+ />
112
+
113
+ {/* 中心图标 */}
114
+ <div
115
+ style={{
116
+ position: 'absolute',
117
+ top: '50%',
118
+ left: '50%',
119
+ transform: 'translate(-50%, -50%)',
120
+ fontSize: '24px',
121
+ color: theme.colors.primary,
122
+ }}
123
+ >
124
+ 📄
125
+ </div>
126
+ </div>
127
+
128
+ {/* 状态文本 */}
129
+ <div
130
+ style={{
131
+ fontSize: '18px',
132
+ fontWeight: '600',
133
+ color: theme.colors.text,
134
+ marginBottom: '12px',
135
+ textAlign: 'center',
136
+ }}
137
+ >
138
+ {status}
139
+ </div>
140
+
141
+ {/* 进度条 */}
142
+ <div
143
+ style={{
144
+ width: '300px',
145
+ height: '6px',
146
+ background: theme.colors.border,
147
+ borderRadius: '3px',
148
+ overflow: 'hidden',
149
+ position: 'relative',
150
+ }}
151
+ >
152
+ <div
153
+ style={{
154
+ width: '60%',
155
+ height: '100%',
156
+ background: `linear-gradient(90deg, ${theme.colors.primary}, ${theme.colors.info})`,
157
+ borderRadius: '3px',
158
+ animation: 'loading-progress 2s ease-in-out infinite',
159
+ }}
160
+ />
161
+ </div>
162
+
163
+ {/* 动画样式 */}
164
+ <style>{`
165
+ @keyframes spin {
166
+ 0% { transform: rotate(0deg); }
167
+ 100% { transform: rotate(360deg); }
168
+ }
169
+
170
+ @keyframes loading-progress {
171
+ 0% { transform: translateX(-100%); }
172
+ 50% { transform: translateX(0%); }
173
+ 100% { transform: translateX(100%); }
174
+ }
175
+ `}</style>
176
+ </div>
177
+ );
178
+ };
179
+
180
+ // 自定义Error组件示例
181
+ const CustomErrorComponent: React.FC<{
182
+ error: string;
183
+ theme: AppTheme;
184
+ }> = ({ error, theme }) => {
185
+ return (
186
+ <div
187
+ style={{
188
+ display: 'flex',
189
+ flexDirection: 'column',
190
+ alignItems: 'center',
191
+ justifyContent: 'center',
192
+ height: '100%',
193
+ padding: '40px',
194
+ background: theme.colors.background,
195
+ }}
196
+ >
197
+ {/* 错误图标 */}
198
+ <div
199
+ style={{
200
+ width: '80px',
201
+ height: '80px',
202
+ borderRadius: '50%',
203
+ background: theme.colors.error,
204
+ display: 'flex',
205
+ alignItems: 'center',
206
+ justifyContent: 'center',
207
+ marginBottom: '24px',
208
+ fontSize: '32px',
209
+ color: 'white',
210
+ }}
211
+ >
212
+ ⚠️
213
+ </div>
214
+
215
+ {/* 错误标题 */}
216
+ <div
217
+ style={{
218
+ fontSize: '20px',
219
+ fontWeight: '600',
220
+ color: theme.colors.error,
221
+ marginBottom: '12px',
222
+ textAlign: 'center',
223
+ }}
224
+ >
225
+ 加载失败
226
+ </div>
227
+
228
+ {/* 错误详情 */}
229
+ <div
230
+ style={{
231
+ fontSize: '14px',
232
+ color: theme.colors.text,
233
+ textAlign: 'center',
234
+ maxWidth: '400px',
235
+ lineHeight: '1.5',
236
+ }}
237
+ >
238
+ {error}
239
+ </div>
240
+
241
+ {/* 重试按钮 */}
242
+ <button
243
+ style={{
244
+ marginTop: '24px',
245
+ padding: '12px 24px',
246
+ background: theme.colors.primary,
247
+ color: 'white',
248
+ border: 'none',
249
+ borderRadius: '6px',
250
+ fontSize: '14px',
251
+ fontWeight: '500',
252
+ cursor: 'pointer',
253
+ transition: 'background-color 0.2s',
254
+ }}
255
+ onMouseEnter={e => {
256
+ e.currentTarget.style.background = theme.colors.info;
257
+ }}
258
+ onMouseLeave={e => {
259
+ e.currentTarget.style.background = theme.colors.primary;
260
+ }}
261
+ >
262
+ 重新加载
263
+ </button>
264
+ </div>
265
+ );
266
+ };
267
+
268
+ // 测试标注数据
269
+ export const streamAnnotations: Annotation[] =[
270
+ {
271
+ "id": "f4b6f9516e0",
272
+ "pageNumber": 1,
273
+ "x": 0.4047,
274
+ "y": 0.481,
275
+ "width": 0.1898,
276
+ "height": 0.0172,
277
+ "content": "",
278
+ "color": "#C3F74F"
279
+ },
280
+ {
281
+ "id": "4b6f9516e0d",
282
+ "pageNumber": 1,
283
+ "x": 0.1495,
284
+ "y": 0.5243,
285
+ "width": 0.7003,
286
+ "height": 0.0534,
287
+ "content": "",
288
+ "color": "#C3F74F"
289
+ },
290
+ {
291
+ "id": "b6f9516e0d3",
292
+ "pageNumber": 1,
293
+ "x": 0.1495,
294
+ "y": 0.6057,
295
+ "width": 0.1763,
296
+ "height": 0.016,
297
+ "content": "",
298
+ "color": "#4FC3F7"
299
+ },
300
+ {
301
+ "id": "6f9516e0d32",
302
+ "pageNumber": 3,
303
+ "x": 0.1822,
304
+ "y": 0.1473,
305
+ "width": 0.4509,
306
+ "height": 0.0374,
307
+ "content": "",
308
+ "color": "#C3F74F"
309
+ },
310
+ {
311
+ "id": "f9516e0d32b",
312
+ "pageNumber": 3,
313
+ "x": 0.2275,
314
+ "y": 0.5825,
315
+ "width": 0.3762,
316
+ "height": 0.0214,
317
+ "content": "",
318
+ "color": "#4FC3F7"
319
+ },
320
+ {
321
+ "id": "9516e0d32b4",
322
+ "pageNumber": 4,
323
+ "x": 0.6902,
324
+ "y": 0.1467,
325
+ "width": 0.0311,
326
+ "height": 0.2179,
327
+ "content": "",
328
+ "color": "#4FC3F7"
329
+ },
330
+ {
331
+ "id": "516e0d32b44",
332
+ "pageNumber": 4,
333
+ "x": 0.1478,
334
+ "y": 0.7922,
335
+ "width": 0.7019,
336
+ "height": 0.0689,
337
+ "content": "",
338
+ "color": "#4FC3F7"
339
+ },
340
+ {
341
+ "id": "16e0d32b442",
342
+ "pageNumber": 5,
343
+ "x": 0.1495,
344
+ "y": 0.5137,
345
+ "width": 0.7003,
346
+ "height": 0.0695,
347
+ "content": "",
348
+ "color": "#4FC3F7"
349
+ },
350
+ {
351
+ "id": "6e0d32b442a",
352
+ "pageNumber": 6,
353
+ "x": 0.1495,
354
+ "y": 0.6805,
355
+ "width": 0.6952,
356
+ "height": 0.0315,
357
+ "content": "",
358
+ "color": "#4FC3F7"
359
+ },
360
+ {
361
+ "id": "e0d32b442a4",
362
+ "pageNumber": 6,
363
+ "x": 0.1478,
364
+ "y": 0.7173,
365
+ "width": 0.7019,
366
+ "height": 0.0315,
367
+ "content": "",
368
+ "color": "#4FC3F7"
369
+ },
370
+ {
371
+ "id": "0d32b442a43",
372
+ "pageNumber": 6,
373
+ "x": 0.1495,
374
+ "y": 0.7548,
375
+ "width": 0.7003,
376
+ "height": 0.0315,
377
+ "content": "",
378
+ "color": "#4FC3F7"
379
+ },
380
+ {
381
+ "id": "d32b442a43b",
382
+ "pageNumber": 6,
383
+ "x": 0.1495,
384
+ "y": 0.8165,
385
+ "width": 0.7003,
386
+ "height": 0.0315,
387
+ "content": "",
388
+ "color": "#4FC3F7"
389
+ },
390
+ {
391
+ "id": "32b442a43b6",
392
+ "pageNumber": 6,
393
+ "x": 0.1495,
394
+ "y": 0.8539,
395
+ "width": 0.7003,
396
+ "height": 0.0315,
397
+ "content": "",
398
+ "color": "#4FC3F7"
399
+ },
400
+ {
401
+ "id": "2b442a43b6e",
402
+ "pageNumber": 6,
403
+ "x": 0.2301,
404
+ "y": 0.8913,
405
+ "width": 0.6062,
406
+ "height": 0.0125,
407
+ "content": "",
408
+ "color": "#4FC3F7"
409
+ },
410
+ {
411
+ "id": "b442a43b6e3",
412
+ "pageNumber": 7,
413
+ "x": 0.1478,
414
+ "y": 0.0879,
415
+ "width": 0.2343,
416
+ "height": 0.0119,
417
+ "content": "",
418
+ "color": "#4FC3F7"
419
+ },
420
+ {
421
+ "id": "442a43b6e3f",
422
+ "pageNumber": 7,
423
+ "x": 0.1495,
424
+ "y": 0.1069,
425
+ "width": 0.6994,
426
+ "height": 0.0303,
427
+ "content": "",
428
+ "color": "#4FC3F7"
429
+ }
430
+ ]
431
+
432
+ // 测试Markdown标注数据
433
+ export const streamMDAnnotations: MDAnnotation[] = [
434
+ {
435
+ id: 'md-anno-1',
436
+ start: 0,
437
+ end: 20, // 标注前20个字符
438
+ content: '这是第一个 Markdown 标注',
439
+ color: '#FFEB3B',
440
+ },
441
+ {
442
+ id: 'md-anno-2',
443
+ start: 50,
444
+ end: 70, // 标注第50-70个字符
445
+ content: '这是第二个 Markdown 标注',
446
+ color: '#A8E6CF',
447
+ },
448
+ ];
449
+
450
+ // 测试表格标注数据
451
+ export const streamTableAnnotations: TableAnnotation[] = [
452
+ {
453
+ "id": "2bd1e2b0fed",
454
+ "offsets": [
455
+ [
456
+ 0,
457
+ 0
458
+ ],
459
+ [
460
+ 0,
461
+ 1
462
+ ],
463
+ [
464
+ 0,
465
+ 2
466
+ ],
467
+ [
468
+ 1,
469
+ 0
470
+ ],
471
+ [
472
+ 1,
473
+ 1
474
+ ],
475
+ [
476
+ 1,
477
+ 2
478
+ ],
479
+ [
480
+ 2,
481
+ 0
482
+ ],
483
+ [
484
+ 2,
485
+ 1
486
+ ],
487
+ [
488
+ 2,
489
+ 2
490
+ ],
491
+ [
492
+ 3,
493
+ 0
494
+ ],
495
+ [
496
+ 3,
497
+ 1
498
+ ],
499
+ [
500
+ 3,
501
+ 2
502
+ ],
503
+ [
504
+ 4,
505
+ 0
506
+ ],
507
+ [
508
+ 4,
509
+ 1
510
+ ],
511
+ [
512
+ 4,
513
+ 2
514
+ ]
515
+ ],
516
+ content: '这是表格标注',
517
+ color: '#FFEB3B',
518
+ },
519
+ ];
520
+
521
+ export default function StreamPreview() {
522
+ const [isVisible, setIsVisible] = useState(false);
523
+
524
+ // 可配置的参数
525
+ const [fileType, setFileType] = useState<'pdf'|'pdf_slides' | 'markdown' | 'markdown_table' | 'image' | 'html' | 'text'>('pdf');
526
+
527
+ // 统一的标注状态
528
+ const [annotations, setAnnotations] = useState<(Annotation | MDAnnotation | TableAnnotation)[]>([
529
+ ...streamAnnotations,
530
+ ...streamMDAnnotations,
531
+ ...streamTableAnnotations,
532
+ ]);
533
+
534
+ //http://10.15.12.13:9000/dev-rag-data/测试南自/电压和电池容量的关系.md/V0/电压和电池容量的关系.md
535
+ //http://10.15.12.13:9000/dev-rag-data/测试南自/中国电子规章制度汇编(2024版)-集团公司第二分册.pdf/V0/中国电子规章制度汇编(2024版)-集团公司第二分册.pdf
536
+ //http://10.15.12.13:9000/dev-rag-data/测试南自/服务发布专利具体步骤.md/V0/服务发布专利具体步骤.md
537
+ //http://10.15.12.13:9000/dev-rag-data/测试南自/测试文档.txt/V0/测试文档.txt
538
+ const [convertedFilePath, setConvertedFilePath] = useState(
539
+ 'http://10.15.12.13:9000/dev-rag-data/文件预览新组件测试/VR设备专题:Pancake迎来渗透加速,产业链受益硬件升级2023-02-02行业研报.pdf/V0/VR设备专题:Pancake迎来渗透加速,产业链受益硬件升级2023-02-02行业研报.pdf'
540
+ );
541
+ const [fileName, setFileName] = useState('VR设备专题:Pancake迎来渗透加速,产业链受益硬件升级2023-02-02行业研报.pdf');
542
+ const [totalPages, setTotalPages] = useState(29); // 根据响应头更新为实际总页数
543
+ const [initialPage, setInitialPage] = useState(1);
544
+ const [pageO, setPageO] = useState(1);
545
+ const [initialZoom, setInitialZoom] = useState(1.5);
546
+ const [authorization, setAuthorization] = useState(
547
+ rag_dev_server.token
548
+ );
549
+ const [streamApiUrl, setStreamApiUrl] = useState(
550
+ '/proxy/index/knowledgeBase/file/stream'
551
+ );
552
+ const [pageSize, setPageSize] = useState(5); // 修改为5,与网络请求一致
553
+
554
+ const handleEventsEmit = (name: string, data?: any, innerFn?: any) => {
555
+ console.log('GientechStreamReader 事件:', name, data);
556
+
557
+ switch (name) {
558
+ case 'viewer:close':
559
+ setIsVisible(false);
560
+ break;
561
+ case 'pageChange':
562
+ console.log('页面变化事件:', data);
563
+ console.log('当前页面状态:', data.pageNumber, '总页数:', data.totalPages);
564
+ break;
565
+ case 'zoomChange':
566
+ console.log('缩放变化:', data);
567
+ break;
568
+ case 'markdown_scroll_to_top':
569
+ console.log('Markdown滚动到顶部');
570
+ break;
571
+ case 'markdown_scroll_to_bottom':
572
+ console.log('Markdown滚动到底部');
573
+ break;
574
+ case 'md_annotation_add':
575
+ console.log('添加Markdown标注:', data);
576
+ setAnnotations(prev => [...prev, data]);
577
+ break;
578
+ default:
579
+ console.log('其他事件:', name, data);
580
+ break;
581
+ }
582
+ };
583
+
584
+ if (!isVisible) {
585
+ return (
586
+ <div
587
+ className="preview-container"
588
+ style={{
589
+ display: 'flex',
590
+ flexDirection: 'column',
591
+ alignItems: 'center',
592
+ justifyContent: 'center',
593
+ height: '100vh',
594
+ padding: '20px',
595
+ backgroundColor: '#f5f5f5',
596
+ }}
597
+ >
598
+ <h1 style={{ marginBottom: '30px', color: '#333' }}>
599
+ GientechStreamReader 测试 -{' '}
600
+ {fileType === 'markdown'
601
+ ? 'Markdown'
602
+ : fileType === 'pdf_slides'
603
+ ? 'PDF幻灯片'
604
+ : fileType === 'markdown_table'
605
+ ? 'Markdown表格'
606
+ : fileType === 'html'
607
+ ? 'HTML'
608
+ : fileType === 'image'
609
+ ? '图片'
610
+ : fileType === 'text'
611
+ ? '文本'
612
+ : 'PDF'}{' '}
613
+ 模式
614
+ </h1>
615
+
616
+ <div
617
+ style={{
618
+ display: 'flex',
619
+ flexDirection: 'column',
620
+ gap: '15px',
621
+ width: '100%',
622
+ maxWidth: '600px',
623
+ backgroundColor: 'white',
624
+ padding: '20px',
625
+ borderRadius: '8px',
626
+ boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
627
+ }}
628
+ >
629
+ <div>
630
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
631
+ 文件类型 (fileType):
632
+ </label>
633
+ <select
634
+ value={fileType}
635
+ onChange={e => {
636
+ const newFileType = e.target.value as 'pdf' | 'pdf_slides' | 'markdown' | 'markdown_table' | 'image' | 'html' | 'text';
637
+ setFileType(newFileType);
638
+ }}
639
+ style={{
640
+ width: '100%',
641
+ padding: '8px',
642
+ border: '1px solid #ddd',
643
+ borderRadius: '4px',
644
+ }}
645
+ >
646
+ <option value="pdf_slides">PDF幻灯片</option>
647
+ <option value="pdf">PDF文件</option>
648
+ <option value="markdown">Markdown文件</option>
649
+ <option value="markdown_table">Markdown表格文件</option>
650
+ <option value="image">图片文件</option>
651
+ <option value="html">HTML文件</option>
652
+ <option value="text">文本文件</option>
653
+ </select>
654
+ </div>
655
+
656
+ <div>
657
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
658
+ 文件路径 (convertedFilePath):
659
+ </label>
660
+ <input
661
+ type="text"
662
+ value={convertedFilePath}
663
+ onChange={e => setConvertedFilePath(e.target.value)}
664
+ style={{
665
+ width: '100%',
666
+ padding: '8px',
667
+ border: '1px solid #ddd',
668
+ borderRadius: '4px',
669
+ }}
670
+ placeholder="输入文件路径"
671
+ />
672
+ </div>
673
+
674
+ <div>
675
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
676
+ 文件名 (fileName):
677
+ </label>
678
+ <input
679
+ type="text"
680
+ value={fileName}
681
+ onChange={e => setFileName(e.target.value)}
682
+ style={{
683
+ width: '100%',
684
+ padding: '8px',
685
+ border: '1px solid #ddd',
686
+ borderRadius: '4px',
687
+ }}
688
+ placeholder="输入文件名"
689
+ />
690
+ </div>
691
+
692
+ <div>
693
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
694
+ {fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
695
+ ? '总块数 (totalPages) - 仅用于显示:'
696
+ : '总页数 (totalPages):'}
697
+ </label>
698
+ <input
699
+ type="number"
700
+ value={totalPages}
701
+ onChange={e => setTotalPages(Number(e.target.value))}
702
+ min="1"
703
+ style={{
704
+ width: '100%',
705
+ padding: '8px',
706
+ border: '1px solid #ddd',
707
+ borderRadius: '4px',
708
+ }}
709
+ placeholder={
710
+ fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
711
+ ? '仅用于显示'
712
+ : '输入总页数'
713
+ }
714
+ disabled={fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'}
715
+ />
716
+ </div>
717
+
718
+ <div>
719
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
720
+ {fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
721
+ ? '初始块 (initialPage) - 仅用于显示:'
722
+ : '初始页面 (initialPage):'}
723
+ </label>
724
+ <input
725
+ type="number"
726
+ value={initialPage}
727
+ onChange={e => setInitialPage(Number(e.target.value))}
728
+ min="1"
729
+ style={{
730
+ width: '100%',
731
+ padding: '8px',
732
+ border: '1px solid #ddd',
733
+ borderRadius: '4px',
734
+ }}
735
+ placeholder={
736
+ fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
737
+ ? '仅用于显示'
738
+ : '输入初始页面号'
739
+ }
740
+ disabled={fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'}
741
+ />
742
+ </div>
743
+
744
+ <div>
745
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
746
+ Authorization Token:
747
+ </label>
748
+ <input
749
+ type="text"
750
+ value={authorization}
751
+ onChange={e => setAuthorization(e.target.value)}
752
+ style={{
753
+ width: '100%',
754
+ padding: '8px',
755
+ border: '1px solid #ddd',
756
+ borderRadius: '4px',
757
+ }}
758
+ placeholder="输入Authorization token"
759
+ />
760
+ </div>
761
+
762
+ <div>
763
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
764
+ Stream API URL:
765
+ </label>
766
+ <input
767
+ type="text"
768
+ value={streamApiUrl}
769
+ onChange={e => setStreamApiUrl(e.target.value)}
770
+ style={{
771
+ width: '100%',
772
+ padding: '8px',
773
+ border: '1px solid #ddd',
774
+ borderRadius: '4px',
775
+ }}
776
+ placeholder="输入Stream API URL"
777
+ />
778
+ </div>
779
+
780
+ <div>
781
+ <label style={{ display: 'block', marginBottom: '5px', fontWeight: 'bold' }}>
782
+ {fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
783
+ ? '页面大小 (pageSize) - 仅PDF使用:'
784
+ : '页面大小 (pageSize):'}
785
+ </label>
786
+ <input
787
+ type="number"
788
+ value={pageSize}
789
+ onChange={e => setPageSize(Number(e.target.value))}
790
+ min="1"
791
+ style={{
792
+ width: '100%',
793
+ padding: '8px',
794
+ border: '1px solid #ddd',
795
+ borderRadius: '4px',
796
+ }}
797
+ placeholder={
798
+ fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
799
+ ? '仅PDF使用'
800
+ : '输入页面大小'
801
+ }
802
+ disabled={fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'}
803
+ />
804
+ </div>
805
+
806
+ <div style={{ marginBottom: '16px' }}>
807
+ <label style={{ display: 'block', marginBottom: '8px', fontWeight: 'bold' }}>
808
+ 初始缩放比例 (initialZoom):
809
+ </label>
810
+ <input
811
+ type="number"
812
+ value={initialZoom}
813
+ onChange={e => setInitialZoom(Number(e.target.value))}
814
+ min="0.1"
815
+ max="5"
816
+ step="0.1"
817
+ style={{
818
+ width: '100%',
819
+ padding: '8px',
820
+ border: '1px solid #ddd',
821
+ borderRadius: '4px',
822
+ }}
823
+ placeholder="输入初始缩放比例 (0.1-5.0)"
824
+ />
825
+ </div>
826
+
827
+ <button
828
+ onClick={() => setIsVisible(true)}
829
+ style={{
830
+ padding: '12px 24px',
831
+ backgroundColor: '#007bff',
832
+ color: 'white',
833
+ border: 'none',
834
+ borderRadius: '4px',
835
+ cursor: 'pointer',
836
+ fontSize: '16px',
837
+ fontWeight: 'bold',
838
+ }}
839
+ >
840
+ 开始测试{' '}
841
+ {fileType === 'markdown'
842
+ ? 'Markdown完整文件'
843
+ : fileType === 'markdown_table'
844
+ ? 'Markdown表格文件'
845
+ : fileType === 'html'
846
+ ? 'HTML文件'
847
+ : fileType === 'image'
848
+ ? '图片'
849
+ : 'PDF'}{' '}
850
+ Stream Reader
851
+ </button>
852
+ </div>
853
+
854
+ <div style={{ marginTop: '20px', textAlign: 'center', color: '#666' }}>
855
+ <p>
856
+ Stream模式:通过接口获取
857
+ {fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'html'
858
+ ? '完整的文件内容'
859
+ : '分页的PDF数据'}
860
+ </p>
861
+ <p>
862
+ {fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'html'
863
+ ? '支持完整文件渲染、缩放等功能'
864
+ : '支持页面导航、缩放等功能'}
865
+ </p>
866
+
867
+ {(fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'html') && (
868
+ <div
869
+ style={{
870
+ marginTop: '10px',
871
+ padding: '10px',
872
+ backgroundColor: '#e3f2fd',
873
+ borderRadius: '4px',
874
+ }}
875
+ >
876
+ <p style={{ margin: '0', fontSize: '14px' }}>
877
+ <strong>
878
+ {fileType === 'markdown_table'
879
+ ? 'Markdown表格'
880
+ : fileType === 'html'
881
+ ? 'HTML'
882
+ : 'Markdown'}推荐配置:
883
+ </strong>
884
+ <br />
885
+ 文件路径:
886
+ {fileType === 'html'
887
+ ? 'http://10.15.12.13:9000/dev-rag-data/demo/示例.html/V0/示例.html'
888
+ : 'http://10.15.12.13:9000/dev-rag-data/测试南自/服务发布专利具体步骤.md/V0/服务发布专利具体步骤.md'}
889
+ <br />
890
+ 总块数: 10 (仅用于显示,实际获取完整文件)
891
+ <br />
892
+ 注意: {fileType === 'markdown_table'
893
+ ? 'Markdown表格'
894
+ : fileType === 'html'
895
+ ? 'HTML'
896
+ : 'Markdown'}文件会获取完整内容,不支持分块加载
897
+ </p>
898
+ </div>
899
+ )}
900
+
901
+ {fileType === 'image' && (
902
+ <div
903
+ style={{
904
+ marginTop: '10px',
905
+ padding: '10px',
906
+ backgroundColor: '#fff3cd',
907
+ borderRadius: '4px',
908
+ }}
909
+ >
910
+ <p style={{ margin: '0', fontSize: '14px' }}>
911
+ <strong>图片推荐配置:</strong>
912
+ <br />
913
+ 文件路径: 例如 http://10.15.12.13:9000/dev-rag-data/demo/示例图片.png/V0/示例图片.png
914
+ <br />
915
+ 图片将以相同的接口请求方式获取(POST convertedFilePath),支持缩放与旋转
916
+ </p>
917
+ </div>
918
+ )}
919
+
920
+ {fileType === 'pdf' && (
921
+ <div
922
+ style={{
923
+ marginTop: '10px',
924
+ padding: '10px',
925
+ backgroundColor: '#f3e5f5',
926
+ borderRadius: '4px',
927
+ }}
928
+ >
929
+ <p style={{ margin: '0', fontSize: '14px' }}>
930
+ <strong>PDF推荐配置:</strong>
931
+ <br />
932
+ 文件路径:
933
+ http://10.15.12.13:9000/dev-rag-data/测试南自/中国电子规章制度汇编(2024版)-集团公司第二分册.pdf/V0/中国电子规章制度汇编(2024版)-集团公司第二分册.pdf
934
+ <br />
935
+ 总页数: 676, 页面大小: 5
936
+ </p>
937
+ </div>
938
+ )}
939
+
940
+ {fileType === 'text' && (
941
+ <div
942
+ style={{
943
+ marginTop: '10px',
944
+ padding: '10px',
945
+ backgroundColor: '#e8f5e8',
946
+ borderRadius: '4px',
947
+ }}
948
+ >
949
+ <p style={{ margin: '0', fontSize: '14px' }}>
950
+ <strong>文本文件推荐配置:</strong>
951
+ <br />
952
+ 文件路径: 例如 http://10.15.12.13:9000/dev-rag-data/测试南自/测试文档.txt/V0/测试文档.txt
953
+ <br />
954
+ 文本文件会获取完整内容,支持缩放,不支持分页
955
+ </p>
956
+ </div>
957
+ )}
958
+ </div>
959
+ </div>
960
+ );
961
+ }
962
+
963
+ return (
964
+ <div style={{ height: '80vh', width: '85vw' }}>
965
+ <GientechStreamReader
966
+ convertedFilePath={convertedFilePath}
967
+ fileName={fileName}
968
+ fileType={fileType}
969
+ initialPage={initialPage}
970
+ initialZoom={initialZoom} // 传递初始缩放比例
971
+ totalPages={totalPages} // 传递总页数/总块数
972
+ annotations={
973
+ fileType === 'markdown_table'
974
+ ? streamTableAnnotations
975
+ : fileType === 'markdown'
976
+ ? streamMDAnnotations
977
+ : fileType === 'html'
978
+ ? [] // HTML不需要标注
979
+ : streamAnnotations
980
+ }
981
+
982
+ authorization={authorization}
983
+ csrfToken={'csrfToken'}
984
+ streamApiUrl={streamApiUrl}
985
+ pageSize={fileType === 'pdf' ? pageSize : undefined} // 只有PDF模式才传递pageSize
986
+ eventsEmit={handleEventsEmit}
987
+ tools={{
988
+ close: true
989
+ }}
990
+ customComponents={{
991
+ LoadingComponent: CustomLoadingComponent,
992
+ ErrorComponent: CustomErrorComponent,
993
+ }}
994
+ />
995
+ <input
996
+ type="number"
997
+ value={pageO}
998
+ onChange={e => setPageO(Number(e.target.value))}
999
+ min="1"
1000
+ style={{
1001
+ width: '100%',
1002
+ padding: '8px',
1003
+ border: '1px solid #ddd',
1004
+ borderRadius: '4px',
1005
+ }}
1006
+ placeholder={
1007
+ fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'
1008
+ ? '仅用于显示'
1009
+ : '输入初始页面号'
1010
+ }
1011
+ disabled={fileType === 'markdown' || fileType === 'markdown_table' || fileType === 'image' || fileType === 'html' || fileType === 'text'}
1012
+ />
1013
+ <button onClick={()=>{setInitialPage(pageO)}}>跳转</button>
1014
+ </div>
1015
+ );
1016
+ }