@myun/gimi-chat 0.0.3 → 0.0.5

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.css +230 -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.css +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.css +266 -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.css +122 -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.css +42 -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.css +41 -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.css +24 -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.css +212 -0
  70. package/dist/components/excel-components/styles.module.css +178 -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.css +139 -0
  76. package/dist/components/file-preview/index.d.ts +3 -0
  77. package/dist/components/file-preview/index.js +227 -0
  78. package/dist/components/file-preview/index.module.css +83 -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.css +118 -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.css +19 -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.css +254 -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 +164 -0
  120. package/dist/components/message-list/index.module.css +261 -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.css +48 -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.css +46 -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.css +80 -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.css +169 -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.css +84 -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 +109 -0
  142. package/dist/components/templates/index.module.css +109 -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.css +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.css +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.css +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.css +24 -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 +5 -6
  206. package/LICENSE +0 -21
@@ -0,0 +1,139 @@
1
+ @charset "UTF-8";
2
+ .main {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ gap: 10px;
6
+ padding: 10px 0px;
7
+ }
8
+ .main .all {
9
+ width: 78px;
10
+ border-radius: 12px;
11
+ border: 1px solid rgb(233, 235, 242);
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ font-family: PingFang SC;
16
+ font-weight: 400;
17
+ font-size: 14px;
18
+ line-height: 14px;
19
+ letter-spacing: 0px;
20
+ color: rgb(46, 57, 76);
21
+ box-shadow: 0px 2px 16px 0px rgba(84, 105, 140, 0.1);
22
+ }
23
+ .main .all:hover {
24
+ cursor: pointer;
25
+ }
26
+
27
+ .card {
28
+ box-shadow: 0px 2px 16px 0px rgba(84, 105, 140, 0.1);
29
+ background: rgb(255, 255, 255) !important;
30
+ }
31
+ .card:hover {
32
+ background: rgb(241, 247, 255) !important;
33
+ }
34
+
35
+ .file_main {
36
+ max-width: 328px;
37
+ flex-shrink: 0;
38
+ border-radius: 12px;
39
+ border: 1px solid rgb(233, 235, 242);
40
+ background: linear-gradient(90deg, #EAF2FF 0%, #FFFFFF 100%);
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 10px;
44
+ padding: 16px;
45
+ }
46
+ .file_main:hover {
47
+ cursor: pointer;
48
+ }
49
+ .file_main .icon {
50
+ display: flex;
51
+ width: 40px;
52
+ justify-content: center;
53
+ align-items: center;
54
+ flex-shrink: 0;
55
+ }
56
+ .file_main .icon img {
57
+ width: 40px;
58
+ height: 36px;
59
+ object-fit: cover;
60
+ padding: 2px;
61
+ }
62
+ .file_main .left {
63
+ flex: 1;
64
+ display: flex;
65
+ flex-direction: column;
66
+ justify-content: space-between;
67
+ }
68
+ .file_main .left .iconName {
69
+ display: flex;
70
+ margin-bottom: 4px;
71
+ display: flex;
72
+ align-items: center;
73
+ }
74
+ .file_main .left .iconName .nameSize {
75
+ flex: 1 1 auto;
76
+ display: flex;
77
+ flex-direction: column;
78
+ justify-content: center;
79
+ }
80
+ .file_main .left .iconName .nameSize .type {
81
+ width: fit-content;
82
+ text-align: center;
83
+ color: var(---, #717f94);
84
+ font-family: "PingFang SC";
85
+ font-size: 14px;
86
+ font-style: normal;
87
+ font-weight: 400;
88
+ line-height: normal;
89
+ border-radius: 4px;
90
+ height: 17px;
91
+ margin-right: 12px;
92
+ }
93
+ .file_main .left .iconName .nameSize .name {
94
+ flex: 1;
95
+ color: var(---, #2e394c);
96
+ font-family: "PingFang SC";
97
+ font-size: 16px;
98
+ width: fit-content;
99
+ max-width: 190px;
100
+ font-style: normal;
101
+ font-weight: 400;
102
+ line-height: normal;
103
+ overflow: hidden; /* 隐藏溢出内容 */
104
+ white-space: nowrap; /* 强制文本不换行 */
105
+ text-overflow: ellipsis; /* 超出部分显示省略号 */
106
+ margin-bottom: 6px;
107
+ }
108
+ .file_main .right {
109
+ display: flex;
110
+ align-items: center;
111
+ width: fit-content;
112
+ justify-content: space-between;
113
+ flex-shrink: 0;
114
+ }
115
+ .file_main .right .text {
116
+ color: rgb(64, 134, 255);
117
+ text-align: right;
118
+ font-family: "PingFang SC";
119
+ font-size: 16px;
120
+ font-style: normal;
121
+ font-weight: 600;
122
+ line-height: normal;
123
+ }
124
+
125
+ .list {
126
+ display: flex;
127
+ flex-direction: column;
128
+ gap: 10px;
129
+ }
130
+
131
+ .text {
132
+ font-family: PingFang SC;
133
+ font-weight: 400;
134
+ font-style: Regular;
135
+ font-size: 15px;
136
+ line-height: 180%;
137
+ letter-spacing: 0px;
138
+ color: rgb(46, 57, 76);
139
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const OfficeFilePreviewPanel: React.FC;
3
+ export default OfficeFilePreviewPanel;
@@ -0,0 +1,227 @@
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 { useAppSelector, useAppDispatch } from "../../store/hooks";
8
+ import React from 'react';
9
+ import styles from "./index.module.css";
10
+ import { Button } from '@douyinfe/semi-ui';
11
+ import { IconClose } from '@douyinfe/semi-icons';
12
+ import { useState, useRef, useEffect, useMemo } from 'react';
13
+ import EmptyShow from "../../components/empty";
14
+ var OfficeFilePreviewPanel = function OfficeFilePreviewPanel() {
15
+ var _useAppSelector = useAppSelector(function (state) {
16
+ return state.gimiMenu.filePreviewState;
17
+ }),
18
+ show = _useAppSelector.show,
19
+ url = _useAppSelector.url,
20
+ filename = _useAppSelector.filename;
21
+ var dispatch = useAppDispatch();
22
+ var _useState = useState(600),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ width = _useState2[0],
25
+ setWidth = _useState2[1]; // 默认宽度
26
+ var _useState3 = useState(false),
27
+ _useState4 = _slicedToArray(_useState3, 2),
28
+ isDragging = _useState4[0],
29
+ setIsDragging = _useState4[1];
30
+ var _useState5 = useState(false),
31
+ _useState6 = _slicedToArray(_useState5, 2),
32
+ iframeError = _useState6[0],
33
+ setIframeError = _useState6[1]; // iframe 加载失败状态
34
+ var _useState7 = useState(false),
35
+ _useState8 = _slicedToArray(_useState7, 2),
36
+ iframeLoaded = _useState8[0],
37
+ setIframeLoaded = _useState8[1]; // iframe 是否已加载
38
+ var panelRef = useRef(null);
39
+ var resizerRef = useRef(null);
40
+ var startXRef = useRef(0);
41
+ var startWidthRef = useRef(0);
42
+ var widthRef = useRef(600); // 用于在事件处理函数中访问最新的 width 值
43
+ var isDraggingRef = useRef(false);
44
+ var loadTimeoutRef = useRef(null); // 加载超时定时器
45
+ var iframeLoadedRef = useRef(false); // 用于在超时回调中访问最新的加载状态
46
+
47
+ // 同步 widthRef 和 width 状态
48
+ useEffect(function () {
49
+ widthRef.current = width;
50
+ }, [width]);
51
+
52
+ // 同步 isDragging 的 ref
53
+ useEffect(function () {
54
+ isDraggingRef.current = isDragging;
55
+ }, [isDragging]);
56
+
57
+ // 同步 iframeLoadedRef 和 iframeLoaded 状态
58
+ useEffect(function () {
59
+ iframeLoadedRef.current = iframeLoaded;
60
+ }, [iframeLoaded]);
61
+
62
+ // 当 url 变化时,重置 iframe 错误状态和加载状态
63
+ useEffect(function () {
64
+ setIframeError(false);
65
+ setIframeLoaded(false);
66
+ iframeLoadedRef.current = false;
67
+ // 清除之前的超时定时器
68
+ if (loadTimeoutRef.current) {
69
+ clearTimeout(loadTimeoutRef.current);
70
+ loadTimeoutRef.current = null;
71
+ }
72
+ }, [url]);
73
+
74
+ // 缓存 iframe src,只有当 url 变化时才重新计算
75
+ var iframeSrc = useMemo(function () {
76
+ if (!url) return '';
77
+ return "https://view.officeapps.live.com/op/embed.aspx?src=".concat(encodeURIComponent(url));
78
+ }, [url]);
79
+
80
+ // iframe 加载错误处理
81
+ var handleIframeError = function handleIframeError() {
82
+ if (loadTimeoutRef.current) {
83
+ clearTimeout(loadTimeoutRef.current);
84
+ loadTimeoutRef.current = null;
85
+ }
86
+ setIframeError(true);
87
+ setIframeLoaded(false);
88
+ };
89
+
90
+ // iframe 加载成功处理
91
+ var handleIframeLoad = function handleIframeLoad() {
92
+ if (loadTimeoutRef.current) {
93
+ clearTimeout(loadTimeoutRef.current);
94
+ loadTimeoutRef.current = null;
95
+ }
96
+ setIframeError(false);
97
+ setIframeLoaded(true);
98
+ };
99
+
100
+ // 当 url 存在时,设置加载超时检测
101
+ useEffect(function () {
102
+ if (url && !iframeLoadedRef.current && !iframeError) {
103
+ // 设置 10 秒超时,如果 iframe 仍未加载成功,则视为加载失败
104
+ loadTimeoutRef.current = setTimeout(function () {
105
+ if (!iframeLoadedRef.current) {
106
+ setIframeError(true);
107
+ }
108
+ }, 10000);
109
+ }
110
+ return function () {
111
+ if (loadTimeoutRef.current) {
112
+ clearTimeout(loadTimeoutRef.current);
113
+ loadTimeoutRef.current = null;
114
+ }
115
+ };
116
+ }, [url, iframeError]);
117
+ var handleClose = function handleClose() {
118
+ dispatch({
119
+ type: 'gimiMenu/setFilePreviewState',
120
+ payload: {
121
+ filePreviewState: {
122
+ show: false,
123
+ url: url,
124
+ filename: filename
125
+ }
126
+ }
127
+ });
128
+ };
129
+
130
+ // 开始拖拽
131
+ var handleMouseDown = function handleMouseDown(e) {
132
+ e.preventDefault();
133
+ e.stopPropagation();
134
+ // 记录按下时的鼠标位置和当前宽度
135
+ startXRef.current = e.clientX;
136
+ startWidthRef.current = widthRef.current;
137
+ // 立即进入拖拽状态
138
+ setIsDragging(true);
139
+ };
140
+
141
+ // 拖拽中
142
+ useEffect(function () {
143
+ var handleMouseMove = function handleMouseMove(e) {
144
+ if (!isDraggingRef.current) return;
145
+
146
+ // 计算鼠标移动的距离
147
+ // 按钮在左侧,向左拖动(鼠标X坐标减小):deltaX 为正值,宽度增加
148
+ // 向右拖动(鼠标X坐标增大):deltaX 为负值,宽度减小
149
+ var deltaX = startXRef.current - e.clientX;
150
+ var newWidth = startWidthRef.current + deltaX;
151
+
152
+ // 限制最小和最大宽度
153
+ var minWidth = 400;
154
+ var maxWidth = Math.floor(window.innerWidth * 0.8);
155
+
156
+ // 限制宽度范围
157
+ newWidth = Math.max(minWidth, Math.min(maxWidth, newWidth));
158
+
159
+ // 更新宽度
160
+ if (Math.abs(newWidth - widthRef.current) > 0.5) {
161
+ widthRef.current = newWidth;
162
+ setWidth(newWidth);
163
+ }
164
+ };
165
+ var handleDocumentMouseUp = function handleDocumentMouseUp() {
166
+ setIsDragging(false);
167
+ };
168
+ if (isDragging) {
169
+ // 添加拖动状态的样式类,禁用过渡动画和内容区域的 pointer-events
170
+ if (panelRef.current) {
171
+ panelRef.current.classList.add(styles.dragging);
172
+ }
173
+ document.addEventListener('mousemove', handleMouseMove);
174
+ document.addEventListener('mouseup', handleDocumentMouseUp);
175
+ document.body.style.cursor = 'ew-resize';
176
+ document.body.style.userSelect = 'none';
177
+ } else {
178
+ // 移除拖动状态的样式类,恢复过渡动画和内容区域的 pointer-events
179
+ if (panelRef.current) {
180
+ panelRef.current.classList.remove(styles.dragging);
181
+ }
182
+ }
183
+ return function () {
184
+ document.removeEventListener('mousemove', handleMouseMove);
185
+ document.removeEventListener('mouseup', handleDocumentMouseUp);
186
+ if (isDragging) {
187
+ document.body.style.cursor = '';
188
+ document.body.style.userSelect = '';
189
+ }
190
+ };
191
+ }, [isDragging]);
192
+ return /*#__PURE__*/React.createElement("div", {
193
+ ref: panelRef,
194
+ className: show ? styles.main : styles.mainHidden,
195
+ style: {
196
+ width: "".concat(width, "px")
197
+ }
198
+ }, /*#__PURE__*/React.createElement("div", {
199
+ className: styles.content
200
+ }, /*#__PURE__*/React.createElement("div", {
201
+ className: styles.header
202
+ }, /*#__PURE__*/React.createElement("span", null, filename || '文档预览'), /*#__PURE__*/React.createElement(Button, {
203
+ size: "small",
204
+ theme: "borderless",
205
+ icon: /*#__PURE__*/React.createElement(IconClose, null),
206
+ onClick: handleClose
207
+ })), /*#__PURE__*/React.createElement("div", {
208
+ className: styles.iframeContainer
209
+ }, url && !iframeError ? /*#__PURE__*/React.createElement("iframe", {
210
+ key: url,
211
+ src: iframeSrc,
212
+ width: "100%",
213
+ height: "100%",
214
+ style: {
215
+ border: 0
216
+ },
217
+ onError: handleIframeError,
218
+ onLoad: handleIframeLoad
219
+ }) : /*#__PURE__*/React.createElement(EmptyShow, {
220
+ title: iframeError ? '文档加载失败' : '暂无内容'
221
+ }))), /*#__PURE__*/React.createElement("div", {
222
+ ref: resizerRef,
223
+ className: styles.resizer,
224
+ onMouseDown: handleMouseDown
225
+ }));
226
+ };
227
+ export default OfficeFilePreviewPanel;
@@ -0,0 +1,83 @@
1
+ .main {
2
+ flex-shrink: 0;
3
+ height: 100%;
4
+ background: #ffffff;
5
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);
6
+ display: flex;
7
+ flex-direction: row;
8
+ transition: width 0.2s ease;
9
+ overflow: hidden;
10
+ position: relative;
11
+ }
12
+ .main.dragging {
13
+ transition: none;
14
+ }
15
+ .main.dragging .content {
16
+ pointer-events: none;
17
+ }
18
+
19
+ .content {
20
+ flex: 1;
21
+ display: flex;
22
+ flex-direction: column;
23
+ height: 100%;
24
+ overflow: hidden;
25
+ }
26
+
27
+ .resizer {
28
+ position: absolute;
29
+ left: 0;
30
+ top: 0;
31
+ bottom: 0;
32
+ width: 6px;
33
+ cursor: ew-resize;
34
+ z-index: 1001;
35
+ transition: all 0.2s ease;
36
+ background: transparent;
37
+ }
38
+ .resizer:hover {
39
+ background: rgba(64, 134, 255, 0.2);
40
+ }
41
+ .resizer:active {
42
+ background: rgba(64, 134, 255, 0.4);
43
+ }
44
+
45
+ .header {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: space-between;
49
+ padding: 16px 20px;
50
+ border-bottom: 1px solid #e8e8e8;
51
+ flex-shrink: 0;
52
+ background: #ffffff;
53
+ }
54
+ .header span {
55
+ font-family: "PingFang SC", sans-serif;
56
+ font-size: 16px;
57
+ font-weight: 600;
58
+ color: #2e394c;
59
+ line-height: 22px;
60
+ }
61
+ .header :global(.ant-btn) {
62
+ color: #8c8c8c;
63
+ }
64
+ .header :global(.ant-btn):hover {
65
+ color: #4086ff;
66
+ }
67
+
68
+ .iframeContainer {
69
+ flex: 1;
70
+ overflow: hidden;
71
+ position: relative;
72
+ background: #f5f5f5;
73
+ }
74
+ .iframeContainer iframe {
75
+ width: 100%;
76
+ height: 100%;
77
+ border: none;
78
+ display: block;
79
+ }
80
+
81
+ .mainHidden {
82
+ display: none;
83
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { FileItem } from '../../types/file';
3
+ interface IProps {
4
+ maxSize?: number;
5
+ limit?: number;
6
+ accept?: string[];
7
+ disabled?: boolean;
8
+ children?: React.ReactNode;
9
+ }
10
+ export interface IFileUploadRef {
11
+ abortUpload: () => void;
12
+ handleSSEFileAnalyize: (file: FileItem) => void;
13
+ retryUpload: (uid: string) => void;
14
+ }
15
+ declare const FileUpload: React.ForwardRefExoticComponent<IProps & React.RefAttributes<unknown>>;
16
+ export default FileUpload;