@myun/gimi-chat 0.0.3 → 0.0.4

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 (206) hide show
  1. package/dist/apis/fetch.d.ts +64 -0
  2. package/dist/apis/fetch.js +512 -0
  3. package/dist/apis/useApi.d.ts +57 -0
  4. package/dist/apis/useApi.js +378 -0
  5. package/dist/assets/image/Subtract.png +0 -0
  6. package/dist/assets/image/ai-logo.png +0 -0
  7. package/dist/assets/image/copyIcon.png +0 -0
  8. package/dist/assets/image/deepthinkActive.png +0 -0
  9. package/dist/assets/image/empty-img-dark.png +0 -0
  10. package/dist/assets/image/empty-img.png +0 -0
  11. package/dist/assets/image/like_active.png +0 -0
  12. package/dist/assets/image/love.png +0 -0
  13. package/dist/assets/image/retry.png +0 -0
  14. package/dist/assets/image/soundOut.png +0 -0
  15. package/dist/assets/image/unlike_active.png +0 -0
  16. package/dist/assets/image/unlove.png +0 -0
  17. package/dist/assets/lottie/ai-bg.json +1704 -0
  18. package/dist/assets/lottie/ai-loading.json +192 -0
  19. package/dist/assets/lottie/ai-output-loading.json +272 -0
  20. package/dist/assets/lottie/ai-output-normal.json +17694 -0
  21. package/dist/assets/lottie/ai-output-strengthen.json +17321 -0
  22. package/dist/assets/lottie/ai-voice-play.json +1 -0
  23. package/dist/assets/lottie/living.json +705 -0
  24. package/dist/assets/lottie/myun-living.json +726 -0
  25. package/dist/assets/lottie/myun-loading.json +530 -0
  26. package/dist/components/ai-chat-dialogue/index.d.ts +16 -0
  27. package/dist/components/ai-chat-dialogue/index.js +1056 -0
  28. package/dist/components/ai-chat-dialogue/index.module.scss +272 -0
  29. package/dist/components/ai-chat-dialogue/message-parser.d.ts +36 -0
  30. package/dist/components/ai-chat-dialogue/message-parser.js +52 -0
  31. package/dist/components/ai-chat-dialogue/tlv.d.ts +7 -0
  32. package/dist/components/ai-chat-dialogue/tlv.js +32 -0
  33. package/dist/components/ai-chat-dialogue/volc-voice-call-client.d.ts +47 -0
  34. package/dist/components/ai-chat-dialogue/volc-voice-call-client.js +246 -0
  35. package/dist/components/ai-correction/index.d.ts +5 -0
  36. package/dist/components/ai-correction/index.js +45 -0
  37. package/dist/components/ai-loading/index.d.ts +3 -0
  38. package/dist/components/ai-loading/index.js +14 -0
  39. package/dist/components/ai-loading/index.module.scss +11 -0
  40. package/dist/components/answer-item/index.d.ts +27 -0
  41. package/dist/components/answer-item/index.js +194 -0
  42. package/dist/components/answer-item/index.module.scss +295 -0
  43. package/dist/components/ask-card/index.d.ts +10 -0
  44. package/dist/components/ask-card/index.js +76 -0
  45. package/dist/components/ask-card/index.module.scss +125 -0
  46. package/dist/components/chat-input/index.d.ts +31 -0
  47. package/dist/components/chat-input/index.js +433 -0
  48. package/dist/components/chat-input/index.module.scss +44 -0
  49. package/dist/components/chat-voice/VoiceCommunication.d.ts +7 -0
  50. package/dist/components/chat-voice/VoiceCommunication.js +69 -0
  51. package/dist/components/chat-voice/VoiceRecord.d.ts +7 -0
  52. package/dist/components/chat-voice/VoiceRecord.js +34 -0
  53. package/dist/components/conversation-delete/index.d.ts +5 -0
  54. package/dist/components/conversation-delete/index.js +24 -0
  55. package/dist/components/dots-loading/index.d.ts +2 -0
  56. package/dist/components/dots-loading/index.js +11 -0
  57. package/dist/components/dots-loading/index.module.scss +45 -0
  58. package/dist/components/empty/index.d.ts +9 -0
  59. package/dist/components/empty/index.js +32 -0
  60. package/dist/components/empty/index.module.scss +27 -0
  61. package/dist/components/excel-components/ExcelCard.d.ts +11 -0
  62. package/dist/components/excel-components/ExcelCard.js +35 -0
  63. package/dist/components/excel-components/ExcelExcuting.d.ts +10 -0
  64. package/dist/components/excel-components/ExcelExcuting.js +263 -0
  65. package/dist/components/excel-components/ExcelFailCard.d.ts +9 -0
  66. package/dist/components/excel-components/ExcelFailCard.js +20 -0
  67. package/dist/components/excel-components/ExcelSuccessCard.d.ts +5 -0
  68. package/dist/components/excel-components/ExcelSuccessCard.js +50 -0
  69. package/dist/components/excel-components/index.module.scss +210 -0
  70. package/dist/components/excel-components/styles.module.scss +186 -0
  71. package/dist/components/file-card/fileCardSidebar.d.ts +8 -0
  72. package/dist/components/file-card/fileCardSidebar.js +56 -0
  73. package/dist/components/file-card/index.d.ts +15 -0
  74. package/dist/components/file-card/index.js +97 -0
  75. package/dist/components/file-card/index.module.scss +139 -0
  76. package/dist/components/file-preview/index.d.ts +3 -0
  77. package/dist/components/file-preview/index.js +229 -0
  78. package/dist/components/file-preview/index.module.scss +120 -0
  79. package/dist/components/file-upload/index.d.ts +16 -0
  80. package/dist/components/file-upload/index.js +238 -0
  81. package/dist/components/file-upload/uploadV1.d.ts +16 -0
  82. package/dist/components/file-upload/uploadV1.js +267 -0
  83. package/dist/components/gimi-sidebar/index.d.ts +17 -0
  84. package/dist/components/gimi-sidebar/index.js +41 -0
  85. package/dist/components/gimi-sidebar/index.module.scss +136 -0
  86. package/dist/components/header/index.d.ts +5 -0
  87. package/dist/components/header/index.js +20 -0
  88. package/dist/components/header/index.module.scss +26 -0
  89. package/dist/components/iconfont-com/index.d.ts +11 -0
  90. package/dist/components/iconfont-com/index.js +29 -0
  91. package/dist/components/index.d.ts +1 -0
  92. package/dist/components/index.js +1 -0
  93. package/dist/components/knowledge-trace/KnowledgeIconComponent.d.ts +7 -0
  94. package/dist/components/knowledge-trace/KnowledgeIconComponent.js +101 -0
  95. package/dist/components/knowledge-trace/classList.d.ts +6 -0
  96. package/dist/components/knowledge-trace/classList.js +72 -0
  97. package/dist/components/knowledge-trace/documentList.d.ts +6 -0
  98. package/dist/components/knowledge-trace/documentList.js +75 -0
  99. package/dist/components/knowledge-trace/index.d.ts +18 -0
  100. package/dist/components/knowledge-trace/index.js +155 -0
  101. package/dist/components/knowledge-trace/index.module.scss +262 -0
  102. package/dist/components/knowledge-trace/interfaces.d.ts +166 -0
  103. package/dist/components/knowledge-trace/interfaces.js +1 -0
  104. package/dist/components/knowledge-trace/videoList.d.ts +6 -0
  105. package/dist/components/knowledge-trace/videoList.js +91 -0
  106. package/dist/components/lottie-img/index.d.ts +8 -0
  107. package/dist/components/lottie-img/index.js +99 -0
  108. package/dist/components/message-actions/CopyButton.d.ts +7 -0
  109. package/dist/components/message-actions/CopyButton.js +33 -0
  110. package/dist/components/message-actions/LikeButton.d.ts +7 -0
  111. package/dist/components/message-actions/LikeButton.js +34 -0
  112. package/dist/components/message-actions/RegenerateButton.d.ts +5 -0
  113. package/dist/components/message-actions/RegenerateButton.js +27 -0
  114. package/dist/components/message-actions/UnLikeButton.d.ts +7 -0
  115. package/dist/components/message-actions/UnLikeButton.js +34 -0
  116. package/dist/components/message-actions/VoicePlay.d.ts +10 -0
  117. package/dist/components/message-actions/VoicePlay.js +74 -0
  118. package/dist/components/message-list/index.d.ts +19 -0
  119. package/dist/components/message-list/index.js +167 -0
  120. package/dist/components/message-list/index.module.scss +304 -0
  121. package/dist/components/no-microphone-root/index.d.ts +6 -0
  122. package/dist/components/no-microphone-root/index.js +36 -0
  123. package/dist/components/no-microphone-root/index.module.scss +42 -0
  124. package/dist/components/preset-agent-content/index.d.ts +8 -0
  125. package/dist/components/preset-agent-content/index.js +24 -0
  126. package/dist/components/preset-agent-content/index.module.scss +48 -0
  127. package/dist/components/quoted-content/index.d.ts +0 -0
  128. package/dist/components/quoted-content/index.js +171 -0
  129. package/dist/components/quoted-content/index.module.scss +76 -0
  130. package/dist/components/reasoning-content/index.d.ts +6 -0
  131. package/dist/components/reasoning-content/index.js +116 -0
  132. package/dist/components/reasoning-content/index.module.scss +164 -0
  133. package/dist/components/reference-content/index.d.ts +28 -0
  134. package/dist/components/reference-content/index.js +125 -0
  135. package/dist/components/reference-content/index.module.scss +73 -0
  136. package/dist/components/templates/CommonChat.d.ts +5 -0
  137. package/dist/components/templates/CommonChat.js +218 -0
  138. package/dist/components/templates/GimiChatComponent.d.ts +4 -0
  139. package/dist/components/templates/GimiChatComponent.js +23 -0
  140. package/dist/components/templates/demo/demo.d.ts +2 -0
  141. package/dist/components/templates/demo/demo.js +110 -0
  142. package/dist/components/templates/index.module.scss +119 -0
  143. package/dist/components/upload-list/index.d.ts +15 -0
  144. package/dist/components/upload-list/index.js +90 -0
  145. package/dist/components/upload-list/index.module.scss +119 -0
  146. package/dist/components/voice-bars/index.d.ts +4 -0
  147. package/dist/components/voice-bars/index.js +174 -0
  148. package/dist/components/voice-check-dialog/index.d.ts +8 -0
  149. package/dist/components/voice-check-dialog/index.js +163 -0
  150. package/dist/components/voice-check-dialog/index.module.scss +9 -0
  151. package/dist/components/voice-recording/index.d.ts +9 -0
  152. package/dist/components/voice-recording/index.js +54 -0
  153. package/dist/components/voice-recording/index.module.scss +41 -0
  154. package/dist/components/work-flow-content/demo.d.ts +3 -0
  155. package/dist/components/work-flow-content/demo.js +11 -0
  156. package/dist/components/work-flow-content/index.d.ts +6 -0
  157. package/dist/components/work-flow-content/index.js +55 -0
  158. package/dist/components/work-flow-content/index.module.scss +23 -0
  159. package/dist/constants.d.ts +24 -0
  160. package/dist/constants.js +24 -0
  161. package/dist/hooks/useChatActions.d.ts +12 -0
  162. package/dist/hooks/useChatActions.js +207 -0
  163. package/dist/hooks/useChatHistory.d.ts +8 -0
  164. package/dist/hooks/useChatHistory.js +225 -0
  165. package/dist/hooks/useChatMessage.d.ts +49 -0
  166. package/dist/hooks/useChatMessage.js +87 -0
  167. package/dist/hooks/useChatRecommend.d.ts +8 -0
  168. package/dist/hooks/useChatRecommend.js +126 -0
  169. package/dist/hooks/useChatStream.d.ts +20 -0
  170. package/dist/hooks/useChatStream.js +244 -0
  171. package/dist/hooks/useChatUI.d.ts +32 -0
  172. package/dist/hooks/useChatUI.js +134 -0
  173. package/dist/hooks/useChatVoice.d.ts +11 -0
  174. package/dist/hooks/useChatVoice.js +379 -0
  175. package/dist/hooks/useCommonChatAPI.d.ts +27 -0
  176. package/dist/hooks/useCommonChatAPI.js +1276 -0
  177. package/dist/hooks/useFile.d.ts +13 -0
  178. package/dist/hooks/useFile.js +288 -0
  179. package/dist/hooks/useKnowledgeService.d.ts +17 -0
  180. package/dist/hooks/useKnowledgeService.js +210 -0
  181. package/dist/hooks/useLastEventId.d.ts +8 -0
  182. package/dist/hooks/useLastEventId.js +66 -0
  183. package/dist/hooks/useLongPoll.d.ts +3 -0
  184. package/dist/hooks/useLongPoll.js +111 -0
  185. package/dist/hooks/useScroll.d.ts +4 -0
  186. package/dist/hooks/useScroll.js +172 -0
  187. package/dist/index.d.ts +1 -0
  188. package/dist/index.js +1 -0
  189. package/dist/interfaces/chatMessage.d.ts +139 -0
  190. package/dist/interfaces/fileInterface.d.ts +10 -0
  191. package/dist/interfaces/fileInterface.js +11 -0
  192. package/dist/interfaces/knowledgeTrace.d.ts +177 -0
  193. package/dist/store/hooks.d.ts +4 -0
  194. package/dist/store/hooks.js +3 -0
  195. package/dist/store/index.d.ts +7 -0
  196. package/dist/store/index.js +7 -0
  197. package/dist/store/slices/gimiMenuSlice.d.ts +95 -0
  198. package/dist/store/slices/gimiMenuSlice.js +251 -0
  199. package/dist/utils/chatInputUtil.d.ts +19 -0
  200. package/dist/utils/chatInputUtil.js +45 -0
  201. package/dist/utils/tools.d.ts +50 -0
  202. package/dist/utils/tools.js +474 -0
  203. package/dist/utils/voice-stream.d.ts +119 -0
  204. package/dist/utils/voice-stream.js +1162 -0
  205. package/package.json +2 -3
  206. package/LICENSE +0 -21
@@ -0,0 +1,101 @@
1
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
5
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
6
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
7
+ import styles from "./index.module.scss";
8
+ import { knowledgeConstants } from "../../constants";
9
+ import { useAppDispatch, useAppSelector } from "../../store/hooks";
10
+ import { setShowKonwledgeTrace, setKonwledgeTraceState } from "../../store/slices/gimiMenuSlice";
11
+ import React from 'react';
12
+ var KnowledgeIcon = function KnowledgeIcon(_ref) {
13
+ var url = _ref.url;
14
+ return /*#__PURE__*/React.createElement("img", {
15
+ style: {
16
+ width: '12px',
17
+ height: '12px'
18
+ },
19
+ alt: "\u77E5\u8BC6\u5E93\u6EAF\u6E90\u56FE\u6807",
20
+ src: url
21
+ });
22
+ };
23
+ export var KnowledgeIconComponent = function KnowledgeIconComponent(_ref2) {
24
+ var type = _ref2.type,
25
+ resources = _ref2.resources,
26
+ messageId = _ref2.messageId;
27
+ var dispatch = useAppDispatch();
28
+ var _useAppSelector = useAppSelector(function (state) {
29
+ return state.gimiMenu;
30
+ }),
31
+ messageList = _useAppSelector.messageList,
32
+ isMsgRecieving = _useAppSelector.isMsgRecieving;
33
+ var isLastMessage = (messageList === null || messageList === void 0 ? void 0 : messageList.length) > 0 && messageList[messageList.length - 1].id === messageId;
34
+ var iconUrl = type === 'video' ? knowledgeConstants.VIDEO_ICON_KNOWLADGE_TRACE_ADDRESS : type === 'document' ? knowledgeConstants.DOCUMENT_ICON_ADDRESS : knowledgeConstants.CLASS_ICON_ADDRESS;
35
+ var handleIconClick = function handleIconClick() {
36
+ if (isMsgRecieving && isLastMessage) return; // 最新一条正在流式输出的消息,不打开溯源面板
37
+ dispatch(setKonwledgeTraceState({
38
+ type: type,
39
+ resources: resources,
40
+ messageId: messageId
41
+ }));
42
+ dispatch(setShowKonwledgeTrace({
43
+ showKonwledgeTrace: true
44
+ }));
45
+ };
46
+ return /*#__PURE__*/React.createElement("div", {
47
+ className: styles.icon_btn,
48
+ onClick: handleIconClick
49
+ }, /*#__PURE__*/React.createElement(KnowledgeIcon, {
50
+ url: iconUrl
51
+ }), /*#__PURE__*/React.createElement("span", null, "".concat(resources === null || resources === void 0 ? void 0 : resources.length, "\u4E2A").concat(type === 'video' ? '视频' : type === 'product' ? '课程' : '文档')));
52
+ };
53
+ var KnowledgeIconGroup = function KnowledgeIconGroup(_ref3) {
54
+ var value = _ref3.value;
55
+ var knowledgeMap = React.useMemo(function () {
56
+ var returnMap = new Map();
57
+ try {
58
+ var parseArr = JSON.parse(value.content);
59
+ if (!Array.isArray(parseArr)) return returnMap;
60
+ parseArr.forEach(function (item) {
61
+ var orgArr = returnMap.get(item.type) || [];
62
+ // 判断是否map中已有该类型的知识溯源
63
+ if (orgArr.length > 0) {
64
+ // 防止重复添加id
65
+ returnMap.set(item.type, [].concat(_toConsumableArray(orgArr), [{
66
+ id: item.id,
67
+ productIds: item.productIds
68
+ }]));
69
+ } else {
70
+ returnMap.set(item.type, [{
71
+ id: item.id,
72
+ productIds: item.productIds
73
+ }]);
74
+ }
75
+ });
76
+ return returnMap;
77
+ } catch (error) {
78
+ return returnMap;
79
+ }
80
+ }, [value.content]);
81
+ var renderList = knowledgeMap.keys().toArray() || [];
82
+ return /*#__PURE__*/React.createElement("div", {
83
+ style: {
84
+ display: 'inline-block'
85
+ }
86
+ }, /*#__PURE__*/React.createElement("div", {
87
+ style: {
88
+ display: 'flex',
89
+ gap: '5px',
90
+ flexWrap: 'wrap'
91
+ }
92
+ }, renderList.map(function (item) {
93
+ return /*#__PURE__*/React.createElement(KnowledgeIconComponent, {
94
+ type: item,
95
+ resources: knowledgeMap.get(item) || [],
96
+ key: item,
97
+ messageId: value.messageId
98
+ });
99
+ })));
100
+ };
101
+ export default KnowledgeIconGroup;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { IProduct } from './interfaces';
3
+ declare const ClassList: React.FC<{
4
+ list: IProduct[];
5
+ }>;
6
+ export default ClassList;
@@ -0,0 +1,72 @@
1
+ import styles from "./index.module.scss";
2
+ import classNames from 'classnames';
3
+ import React from 'react';
4
+ import { Toast, Tooltip } from '@douyinfe/semi-ui';
5
+ import { useAppSelector } from "../../store/hooks";
6
+ var ClassItem = function ClassItem(_ref) {
7
+ var _konwledgeTraceState$, _item$name;
8
+ var item = _ref.item;
9
+ var konwledgeTraceState = useAppSelector(function (state) {
10
+ return state.gimiMenu.konwledgeTraceState;
11
+ });
12
+ var platform = useAppSelector(function (state) {
13
+ return state.gimiMenu.platform;
14
+ });
15
+ var isActive = (_konwledgeTraceState$ = konwledgeTraceState.resources) === null || _konwledgeTraceState$ === void 0 || (_konwledgeTraceState$ = _konwledgeTraceState$.map(function (item) {
16
+ return item.id;
17
+ })) === null || _konwledgeTraceState$ === void 0 ? void 0 : _konwledgeTraceState$.includes("".concat(item.id));
18
+ var tagContent = React.useMemo(function () {
19
+ if (item.showStyle === 0) return null;
20
+ var classes = item.showStyle === 1 ? styles.tag_badge_green : item.showStyle === 2 ? styles.tag_badge_warning : styles.tag_badge_default;
21
+ return /*#__PURE__*/React.createElement("div", {
22
+ className: classes
23
+ }, item.equityLabel);
24
+ }, [item.showStyle, item.equityLabel]);
25
+ var handleClick = function handleClick() {
26
+ if (item.isDelete === 1) return;
27
+ if (platform !== 'myun') return Toast.warning('当前平台不支持溯源跳转');
28
+ if (item.isJoinClass) {
29
+ if (item.productType === 'single') {
30
+ window.open("/courseDetail/".concat(item.gradeId));
31
+ } else {
32
+ window.open("/class-project/".concat(item.gradeId, "/").concat(item.id));
33
+ }
34
+ } else {
35
+ if (item.productType === 'single') {
36
+ window.open("/new-product/".concat(item.id));
37
+ } else {
38
+ window.open("/project-product/".concat(item.id));
39
+ }
40
+ }
41
+ };
42
+ return /*#__PURE__*/React.createElement("div", {
43
+ className: classNames(styles.knowledge, item.isDelete === 1 ? styles.resource_deactive : isActive ? styles.active : ''),
44
+ onClick: handleClick
45
+ }, /*#__PURE__*/React.createElement("img", {
46
+ alt: "\u8BFE\u7A0B\u5C01\u9762",
47
+ className: styles.class_img,
48
+ src: item.productUrl
49
+ }), /*#__PURE__*/React.createElement("div", {
50
+ className: styles.class_description
51
+ }, /*#__PURE__*/React.createElement("div", {
52
+ className: styles.text
53
+ }, tagContent, /*#__PURE__*/React.createElement(Tooltip, {
54
+ content: item.name
55
+ }, ((_item$name = item.name) === null || _item$name === void 0 ? void 0 : _item$name.length) > 33 ? "".concat(item.name.substring(0, 33), "...") : item.name || '')), item.isDelete === 1 && /*#__PURE__*/React.createElement("div", {
56
+ className: styles.knowledge_trace_deactive
57
+ }, "\u8BFE\u7A0B\u5931\u6548")));
58
+ };
59
+ var ClassList = function ClassList(_ref2) {
60
+ var list = _ref2.list;
61
+ return /*#__PURE__*/React.createElement("div", {
62
+ className: styles.knowledgeList
63
+ }, /*#__PURE__*/React.createElement("span", {
64
+ className: styles.total
65
+ }, "\u672C\u5BF9\u8BDD\u5171".concat((list === null || list === void 0 ? void 0 : list.length) || 0, "\u4E2A\u8BFE\u7A0B")), list.map(function (item) {
66
+ return /*#__PURE__*/React.createElement(ClassItem, {
67
+ item: item,
68
+ key: item.id
69
+ });
70
+ }));
71
+ };
72
+ export default ClassList;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { ITeachingModuleResource } from './interfaces';
3
+ declare const DocumentList: React.FC<{
4
+ list: ITeachingModuleResource[];
5
+ }>;
6
+ export default DocumentList;
@@ -0,0 +1,75 @@
1
+ import React from 'react';
2
+ import styles from "./index.module.scss";
3
+ import classNames from 'classnames';
4
+ import { documentConstants } from "../../constants";
5
+ import { Toast, Tooltip } from '@douyinfe/semi-ui';
6
+ import { useAppSelector } from "../../store/hooks";
7
+ var SUPPORT_PREVIEW_FILE_TYPE = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'];
8
+ var FileItem = function FileItem(_ref) {
9
+ var _konwledgeTraceState$;
10
+ var item = _ref.item;
11
+ var konwledgeTraceState = useAppSelector(function (state) {
12
+ return state.gimiMenu.konwledgeTraceState;
13
+ });
14
+ var platform = useAppSelector(function (state) {
15
+ return state.gimiMenu.platform;
16
+ });
17
+ var isActive = (_konwledgeTraceState$ = konwledgeTraceState.resources) === null || _konwledgeTraceState$ === void 0 || (_konwledgeTraceState$ = _konwledgeTraceState$.map(function (item) {
18
+ return item.id;
19
+ })) === null || _konwledgeTraceState$ === void 0 ? void 0 : _konwledgeTraceState$.includes("".concat(item.hostId));
20
+ var handleClick = function handleClick() {
21
+ if (item.isDelete === 1) return;
22
+ if (platform !== 'myun') return Toast.warning('当前平台不支持溯源跳转');
23
+ var searchParams = "gradeId=".concat(item.gradeId, "&teachModuleId=").concat(item.id, "&outlineId=").concat(item.courseId, "&phaseId=").concat(item.phaseId);
24
+ if (!item.gradeId) {
25
+ if (SUPPORT_PREVIEW_FILE_TYPE.includes(item.suffix)) {
26
+ var url = "https://view.officeapps.live.com/op/embed.aspx?src=".concat(encodeURIComponent(item.url));
27
+ window.open(url);
28
+ } else {
29
+ window.open(item.url);
30
+ }
31
+ return;
32
+ }
33
+ if (item.isJoinClass) {
34
+ window.open("/learningPage?".concat(searchParams));
35
+ } else {
36
+ if (item.productType === 'single') {
37
+ window.open("/new-product/".concat(item.productId, "?").concat(searchParams));
38
+ } else {
39
+ window.open("/project-product/".concat(item.productId, "?").concat(searchParams));
40
+ }
41
+ }
42
+ };
43
+ return /*#__PURE__*/React.createElement("div", {
44
+ className: classNames(styles.knowledge, item.isDelete === 1 ? styles.resource_deactive : isActive ? styles.active : ''),
45
+ onClick: handleClick
46
+ }, /*#__PURE__*/React.createElement("img", {
47
+ alt: "\u6587\u6863\u56FE\u7247",
48
+ className: styles.img,
49
+ src: documentConstants[item.suffix] || documentConstants.default
50
+ }), /*#__PURE__*/React.createElement("div", {
51
+ className: styles.description
52
+ }, /*#__PURE__*/React.createElement(Tooltip, {
53
+ content: item.name
54
+ }, /*#__PURE__*/React.createElement("div", {
55
+ className: styles.text
56
+ }, item.name)), /*#__PURE__*/React.createElement("div", {
57
+ className: styles.timeTrace
58
+ }, "".concat(item.suffix, " | ").concat(item.sizeUnit)), item.isDelete === 1 && /*#__PURE__*/React.createElement("div", {
59
+ className: styles.knowledge_trace_deactive
60
+ }, "\u6587\u6863\u5931\u6548")));
61
+ };
62
+ var DocumentList = function DocumentList(_ref2) {
63
+ var list = _ref2.list;
64
+ return /*#__PURE__*/React.createElement("div", {
65
+ className: styles.knowledgeList
66
+ }, /*#__PURE__*/React.createElement("span", {
67
+ className: styles.total
68
+ }, "\u672C\u5BF9\u8BDD\u5171".concat((list === null || list === void 0 ? void 0 : list.length) || 0, "\u4E2A\u6587\u6863")), list.map(function (item) {
69
+ return /*#__PURE__*/React.createElement(FileItem, {
70
+ item: item,
71
+ key: item.id
72
+ });
73
+ }));
74
+ };
75
+ export default DocumentList;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ export declare type KonwledgeType = 'video' | 'document' | 'product';
3
+ export interface KonwledgeTraceState {
4
+ type: KonwledgeType;
5
+ resources: {
6
+ id: string;
7
+ productIds?: number[];
8
+ }[];
9
+ messageId: number;
10
+ }
11
+ declare const KonwledgeTrace: React.FC<{
12
+ targetElement?: HTMLElement;
13
+ chatList: any[];
14
+ isOverFlow: boolean;
15
+ className?: string;
16
+ style?: React.CSSProperties;
17
+ }>;
18
+ export default KonwledgeTrace;
@@ -0,0 +1,155 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React from 'react';
8
+ import styles from "./index.module.scss";
9
+ import { useAppSelector, useAppDispatch } from "../../store/hooks";
10
+ import { setShowKonwledgeTrace, setKonwledgeTraceState } from "../../store/slices/gimiMenuSlice";
11
+ import { Tabs, TabPane } from '@douyinfe/semi-ui';
12
+ import VideoList from "./videoList";
13
+ import DocumentList from "./documentList";
14
+ import ClassList from "./classList";
15
+ import { getKnowledgeTraceListFromConent } from "../../utils/tools";
16
+ import useKnowledgeService from "../../hooks/useKnowledgeService";
17
+ import AiLoading from "../ai-loading";
18
+ import ReactDOM from 'react-dom';
19
+ import GimiSideBar from "../gimi-sidebar";
20
+ var KonwledgeTrace = function KonwledgeTrace(_ref) {
21
+ var targetElement = _ref.targetElement,
22
+ chatList = _ref.chatList,
23
+ isOverFlow = _ref.isOverFlow,
24
+ className = _ref.className,
25
+ style = _ref.style;
26
+ var showKonwledgeTrace = useAppSelector(function (state) {
27
+ return state.gimiMenu.showKonwledgeTrace;
28
+ });
29
+ var konwledgeTraceState = useAppSelector(function (state) {
30
+ return state.gimiMenu.konwledgeTraceState;
31
+ });
32
+ var dispatch = useAppDispatch();
33
+ var _React$useState = React.useState([]),
34
+ _React$useState2 = _slicedToArray(_React$useState, 2),
35
+ tabList = _React$useState2[0],
36
+ setTabList = _React$useState2[1];
37
+ var _React$useState3 = React.useState(''),
38
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
39
+ activeKey = _React$useState4[0],
40
+ setActiveKey = _React$useState4[1];
41
+ var tabPaneRef = React.useRef(null);
42
+ var kowledgeTraceList = React.useMemo(function () {
43
+ var matchIndex = chatList.findIndex(function (item) {
44
+ return item.id === konwledgeTraceState.messageId;
45
+ });
46
+ var matchMessage = chatList[matchIndex];
47
+ var sendMessage = chatList[matchIndex - 1];
48
+ if (!matchMessage) return [];
49
+ return getKnowledgeTraceListFromConent(matchMessage, sendMessage);
50
+ }, [chatList, konwledgeTraceState.messageId]);
51
+ var handleClose = React.useCallback(function () {
52
+ dispatch(setShowKonwledgeTrace({
53
+ showKonwledgeTrace: false
54
+ }));
55
+ dispatch(setKonwledgeTraceState({
56
+ type: 'video',
57
+ resources: [],
58
+ messageId: null
59
+ }));
60
+ }, [dispatch]);
61
+ React.useEffect(function () {
62
+ if ((kowledgeTraceList === null || kowledgeTraceList === void 0 ? void 0 : kowledgeTraceList.length) > 0) {
63
+ setTabList(function () {
64
+ return kowledgeTraceList.map(function (item) {
65
+ return {
66
+ name: item.type === 'document' ? '文档' : item.type === 'video' ? '视频' : '课程',
67
+ type: item.type
68
+ };
69
+ });
70
+ });
71
+ }
72
+ }, [kowledgeTraceList]);
73
+ var _useKnowledgeService = useKnowledgeService(kowledgeTraceList),
74
+ videoSliceList = _useKnowledgeService.videoSliceList,
75
+ documentList = _useKnowledgeService.documentList,
76
+ productList = _useKnowledgeService.productList,
77
+ isLoading = _useKnowledgeService.isLoading;
78
+ React.useEffect(function () {
79
+ setActiveKey(konwledgeTraceState.type);
80
+ }, [konwledgeTraceState.type]);
81
+ React.useEffect(function () {
82
+ var timer = setTimeout(function () {
83
+ var _tabPaneRef$current;
84
+ var tabPane = (_tabPaneRef$current = tabPaneRef.current) === null || _tabPaneRef$current === void 0 ? void 0 : _tabPaneRef$current.contentRef.current;
85
+ if (!tabPane) return;
86
+ // 滚动到第一个匹配的溯源项
87
+ var activeElement = tabPane.querySelector(".".concat(styles.active));
88
+ if (activeElement) {
89
+ // 检查是否有滚动条
90
+ if (tabPane.scrollHeight > tabPane.clientHeight) {
91
+ activeElement.scrollIntoView({
92
+ behavior: 'smooth',
93
+ block: 'start'
94
+ });
95
+ }
96
+ }
97
+ }, 100);
98
+ return function () {
99
+ return clearTimeout(timer);
100
+ };
101
+ }, [konwledgeTraceState]);
102
+ var handleTabChange = function handleTabChange(activeKey) {
103
+ setActiveKey(activeKey);
104
+ };
105
+ var tabContent = React.useMemo(function () {
106
+ if (isLoading) return /*#__PURE__*/React.createElement(AiLoading, null);
107
+ switch (activeKey) {
108
+ case 'video':
109
+ return /*#__PURE__*/React.createElement(VideoList, {
110
+ list: videoSliceList
111
+ });
112
+ case 'product':
113
+ return /*#__PURE__*/React.createElement(ClassList, {
114
+ list: productList
115
+ });
116
+ case 'document':
117
+ return /*#__PURE__*/React.createElement(DocumentList, {
118
+ list: documentList
119
+ });
120
+ default:
121
+ return null;
122
+ }
123
+ }, [activeKey, videoSliceList, productList, documentList, isLoading]);
124
+ var renderContent = function renderContent() {
125
+ return /*#__PURE__*/React.createElement(GimiSideBar, {
126
+ show: showKonwledgeTrace,
127
+ isOverFlow: isOverFlow,
128
+ ref: tabPaneRef,
129
+ title: "\u5F15\u7528\u6765\u6E90",
130
+ handleClose: handleClose,
131
+ style: style,
132
+ className: className
133
+ }, /*#__PURE__*/React.createElement("div", {
134
+ className: styles.tabs
135
+ }, (tabList === null || tabList === void 0 ? void 0 : tabList.length) > 1 ? /*#__PURE__*/React.createElement(Tabs, {
136
+ type: "button",
137
+ size: "small",
138
+ activeKey: activeKey,
139
+ onChange: handleTabChange
140
+ }, tabList.map(function (tab) {
141
+ return /*#__PURE__*/React.createElement(TabPane, {
142
+ tab: tab.name,
143
+ itemKey: tab.type,
144
+ key: tab.type
145
+ }, tabContent);
146
+ })) : tabContent));
147
+ };
148
+ if (isOverFlow && (kowledgeTraceList === null || kowledgeTraceList === void 0 ? void 0 : kowledgeTraceList.length) > 0) {
149
+ var targetElm = targetElement || document.getElementById('myun_gimi_design_chat');
150
+ if (!targetElm) return null;
151
+ return /*#__PURE__*/ReactDOM.createPortal(renderContent(), targetElm);
152
+ }
153
+ return /*#__PURE__*/React.createElement(React.Fragment, null, (kowledgeTraceList === null || kowledgeTraceList === void 0 ? void 0 : kowledgeTraceList.length) > 0 ? renderContent() : null);
154
+ };
155
+ export default KonwledgeTrace;