@myun/gimi-chat 0.0.2 → 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,3 @@
1
+ import React from 'react';
2
+ declare const OfficeFilePreviewPanel: React.FC;
3
+ export default OfficeFilePreviewPanel;
@@ -0,0 +1,229 @@
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.scss";
10
+ import { Button } from '@douyinfe/semi-ui';
11
+ import { IconClose, IconMenu } 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 dragButtonRef = 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: dragButtonRef,
223
+ className: styles.dragButton,
224
+ onMouseDown: handleMouseDown
225
+ }, /*#__PURE__*/React.createElement(IconMenu, {
226
+ className: styles.dragIcon
227
+ })));
228
+ };
229
+ export default OfficeFilePreviewPanel;
@@ -0,0 +1,120 @@
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
+ // 拖动时禁用过渡动画,获得更好的拖拽体验
13
+ // 同时禁用内容区域的 pointer-events,确保鼠标事件可以正常传递
14
+ &.dragging {
15
+ transition: none;
16
+
17
+ .content {
18
+ pointer-events: none;
19
+ }
20
+ }
21
+ }
22
+
23
+ .content {
24
+ flex: 1;
25
+ display: flex;
26
+ flex-direction: column;
27
+ height: 100%;
28
+ overflow: hidden;
29
+ }
30
+
31
+ .dragButton {
32
+ position: absolute;
33
+ left: 0;
34
+ top: 50%;
35
+ transform: translateY(-50%);
36
+ width: 24px;
37
+ height: 48px;
38
+ background: #ffffff;
39
+ border: 1px solid #e8e8e8;
40
+ border-left: none;
41
+ border-radius: 0 4px 4px 0;
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ cursor: ew-resize;
46
+ z-index: 1001;
47
+ transition: all 0.2s ease;
48
+ box-shadow: 2px 0 4px rgba(0, 0, 0, 0.1);
49
+
50
+ &:hover {
51
+ background: #f5f5f5;
52
+ border-color: #4086ff;
53
+ box-shadow: 2px 0 6px rgba(64, 134, 255, 0.2);
54
+ }
55
+
56
+ &:active {
57
+ background: #e6f4ff;
58
+ border-color: #2d6cd9;
59
+ }
60
+ }
61
+
62
+ .dragIcon {
63
+ font-size: 14px;
64
+ color: #8c8c8c;
65
+ transition: color 0.2s ease;
66
+
67
+ .dragButton:hover & {
68
+ color: #4086ff;
69
+ }
70
+
71
+ .dragButton:active & {
72
+ color: #2d6cd9;
73
+ }
74
+ }
75
+
76
+ .header {
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: space-between;
80
+ padding: 16px 20px;
81
+ border-bottom: 1px solid #e8e8e8;
82
+ flex-shrink: 0;
83
+ background: #ffffff;
84
+
85
+ span {
86
+ font-family: 'PingFang SC', sans-serif;
87
+ font-size: 16px;
88
+ font-weight: 600;
89
+ color: #2e394c;
90
+ line-height: 22px;
91
+ }
92
+
93
+ :global(.ant-btn) {
94
+ color: #8c8c8c;
95
+
96
+ &:hover {
97
+ color: #4086ff;
98
+ }
99
+ }
100
+ }
101
+
102
+ .iframeContainer {
103
+ flex: 1;
104
+ overflow: hidden;
105
+ position: relative;
106
+ background: #f5f5f5;
107
+
108
+ iframe {
109
+ width: 100%;
110
+ height: 100%;
111
+ border: none;
112
+ display: block;
113
+ }
114
+ }
115
+
116
+ .mainHidden {
117
+ display: none;
118
+ }
119
+
120
+
@@ -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;
@@ -0,0 +1,238 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ import React from 'react';
6
+ import { Upload, Toast, Button } from '@douyinfe/semi-ui';
7
+ import { IconPaperclip } from '@douyinfe/semi-icons';
8
+ import { useAppDispatch, useAppSelector } from "../../store/hooks";
9
+ import { setFileList } from "../../store/slices/gimiMenuSlice";
10
+ import { FileStatus } from "../../interfaces/fileInterface";
11
+ import { useGimiFileUpload } from "../../hooks/useFile";
12
+ var DEFAULT_ACCEPT = '.xlsx,.txt';
13
+ var MAX_RETRY_COUNT = 3;
14
+ /** Redux FileItem → Semi Upload FileItem */
15
+ var transformFileItem = function transformFileItem(list) {
16
+ return list.map(function (item) {
17
+ return {
18
+ uid: item.uid,
19
+ name: item.name,
20
+ size: item.size.toString(),
21
+ status: item.status
22
+ };
23
+ });
24
+ };
25
+ var FileUpload = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
+ var _props$maxSize = props.maxSize,
27
+ maxSize = _props$maxSize === void 0 ? 10 : _props$maxSize,
28
+ _props$limit = props.limit,
29
+ limit = _props$limit === void 0 ? 1 : _props$limit,
30
+ accept = props.accept,
31
+ disabled = props.disabled,
32
+ children = props.children;
33
+ var dispatch = useAppDispatch();
34
+ var fileList = useAppSelector(function (s) {
35
+ return s.gimiMenu.fileList;
36
+ });
37
+ var baseUrl = useAppSelector(function (s) {
38
+ return s.gimiMenu.baseUrl;
39
+ });
40
+ var token = useAppSelector(function (s) {
41
+ return s.gimiMenu.token;
42
+ });
43
+ var uploadUrl = "https://".concat(baseUrl, "/mfilesvc/agentMessage/uploadFile");
44
+ var _useGimiFileUpload = useGimiFileUpload(),
45
+ handleSSEFileAnalyize = _useGimiFileUpload.handleSSEFileAnalyize,
46
+ fileUploadAbortRef = _useGimiFileUpload.fileUploadAbortRef;
47
+
48
+ /** 保存原始 File:uid -> File */
49
+ var rawFileMapRef = React.useRef(new Map());
50
+
51
+ /** 重试次数:uid -> count */
52
+ var retryCountMapRef = React.useRef(new Map());
53
+
54
+ /** 更新 Redux 中的文件状态(始终只维护一个文件) */
55
+ var updateFile = function updateFile(file) {
56
+ dispatch(setFileList({
57
+ fileList: [file]
58
+ }));
59
+ };
60
+
61
+ /** 失败后重新上传 */
62
+ var retryUpload = function retryUpload(uid) {
63
+ var rawFile = rawFileMapRef.current.get(uid);
64
+ if (!rawFile) return;
65
+
66
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
67
+ customRequest({
68
+ file: {
69
+ uid: uid,
70
+ name: rawFile.name,
71
+ size: rawFile.size,
72
+ fileInstance: rawFile
73
+ }
74
+ });
75
+ };
76
+ var customRequest = /*#__PURE__*/function () {
77
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
78
+ var file, onSuccess, onError, rawFile, controller, formData, _response$result, fullResponse, response, result, successFile, _retryCountMapRef$cur, currentRetry, retryWhenOnline;
79
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
80
+ while (1) switch (_context.prev = _context.next) {
81
+ case 0:
82
+ file = options.file, onSuccess = options.onSuccess, onError = options.onError;
83
+ rawFile = file.fileInstance || file.originFileObj;
84
+ if (rawFile) {
85
+ _context.next = 5;
86
+ break;
87
+ }
88
+ Toast.error('文件读取失败');
89
+ return _context.abrupt("return");
90
+ case 5:
91
+ // 缓存原始 File
92
+ rawFileMapRef.current.set(file.uid, rawFile);
93
+
94
+ // 首次上传才初始化重试次数
95
+ if (!retryCountMapRef.current.has(file.uid)) {
96
+ retryCountMapRef.current.set(file.uid, 0);
97
+ }
98
+ controller = new AbortController();
99
+ fileUploadAbortRef.current = controller;
100
+ updateFile({
101
+ uid: file.uid,
102
+ name: file.name,
103
+ size: file.size,
104
+ status: FileStatus.UPLOADING
105
+ });
106
+ formData = new FormData();
107
+ formData.append('file', rawFile);
108
+ _context.prev = 12;
109
+ _context.next = 15;
110
+ return fetch(uploadUrl, {
111
+ method: 'POST',
112
+ headers: {
113
+ Authorization: 'Bearer ' + token
114
+ },
115
+ body: formData,
116
+ signal: controller.signal
117
+ }).then(function (res) {
118
+ return res.json();
119
+ });
120
+ case 15:
121
+ fullResponse = _context.sent;
122
+ response = fullResponse[0];
123
+ if (!((response === null || response === void 0 ? void 0 : response.status) === 0 && response !== null && response !== void 0 && (_response$result = response.result) !== null && _response$result !== void 0 && _response$result.fileToken)) {
124
+ _context.next = 26;
125
+ break;
126
+ }
127
+ result = response.result;
128
+ successFile = {
129
+ uid: file.uid,
130
+ name: file.name,
131
+ size: file.size,
132
+ status: FileStatus.UPLOAD_SUCCESS,
133
+ fileUrl: result.fileAddr,
134
+ fileName: result.fileName,
135
+ fileSize: result.fileSize,
136
+ fileToken: result.fileToken,
137
+ fileType: result.fileName.split('.').pop()
138
+ };
139
+ updateFile(successFile);
140
+ handleSSEFileAnalyize(successFile, true);
141
+
142
+ // 成功后清理 retry 计数
143
+ retryCountMapRef.current.delete(file.uid);
144
+ onSuccess === null || onSuccess === void 0 || onSuccess(response);
145
+ _context.next = 27;
146
+ break;
147
+ case 26:
148
+ throw new Error('upload failed');
149
+ case 27:
150
+ _context.next = 49;
151
+ break;
152
+ case 29:
153
+ _context.prev = 29;
154
+ _context.t0 = _context["catch"](12);
155
+ if (!(_context.t0.name === 'AbortError')) {
156
+ _context.next = 33;
157
+ break;
158
+ }
159
+ return _context.abrupt("return");
160
+ case 33:
161
+ currentRetry = (_retryCountMapRef$cur = retryCountMapRef.current.get(file.uid)) !== null && _retryCountMapRef$cur !== void 0 ? _retryCountMapRef$cur : 0;
162
+ /** 网络异常:不计入重试次数 */
163
+ if (navigator.onLine) {
164
+ _context.next = 40;
165
+ break;
166
+ }
167
+ Toast.error('网络异常,等待恢复后重试');
168
+ updateFile({
169
+ uid: file.uid,
170
+ name: file.name,
171
+ size: file.size,
172
+ status: FileStatus.NETWORK_ERROR
173
+ });
174
+ retryWhenOnline = function retryWhenOnline() {
175
+ window.removeEventListener('online', retryWhenOnline);
176
+ retryUpload(file.uid);
177
+ };
178
+ window.addEventListener('online', retryWhenOnline);
179
+ return _context.abrupt("return");
180
+ case 40:
181
+ if (!(currentRetry >= MAX_RETRY_COUNT)) {
182
+ _context.next = 46;
183
+ break;
184
+ }
185
+ Toast.error('文件上传失败,已达到最大重试次数');
186
+ updateFile({
187
+ uid: file.uid,
188
+ name: file.name,
189
+ size: file.size,
190
+ status: FileStatus.UPLOAD_FAILED
191
+ });
192
+ retryCountMapRef.current.delete(file.uid);
193
+ onError === null || onError === void 0 || onError(_context.t0);
194
+ return _context.abrupt("return");
195
+ case 46:
196
+ /** ⏱️ 未达上限,继续重试 */
197
+ retryCountMapRef.current.set(file.uid, currentRetry + 1);
198
+ Toast.warning("\u4E0A\u4F20\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF08".concat(currentRetry + 1, "/").concat(MAX_RETRY_COUNT, "\uFF09"));
199
+ setTimeout(function () {
200
+ retryUpload(file.uid);
201
+ }, 1000);
202
+ case 49:
203
+ case "end":
204
+ return _context.stop();
205
+ }
206
+ }, _callee, null, [[12, 29]]);
207
+ }));
208
+ return function customRequest(_x) {
209
+ return _ref.apply(this, arguments);
210
+ };
211
+ }();
212
+ React.useImperativeHandle(ref, function () {
213
+ return {
214
+ abortUpload: function abortUpload() {
215
+ var _fileUploadAbortRef$c;
216
+ (_fileUploadAbortRef$c = fileUploadAbortRef.current) === null || _fileUploadAbortRef$c === void 0 || _fileUploadAbortRef$c.abort();
217
+ },
218
+ handleSSEFileAnalyize: handleSSEFileAnalyize,
219
+ retryUpload: retryUpload
220
+ };
221
+ });
222
+ var trigger = /*#__PURE__*/React.createElement(Button, {
223
+ icon: /*#__PURE__*/React.createElement(IconPaperclip, null),
224
+ type: "tertiary"
225
+ }, "\u70B9\u51FB\u4E0A\u4F20");
226
+ return /*#__PURE__*/React.createElement(Upload, {
227
+ customRequest: customRequest,
228
+ action: "",
229
+ limit: limit,
230
+ multiple: limit > 1,
231
+ accept: (accept === null || accept === void 0 ? void 0 : accept.join(',')) || DEFAULT_ACCEPT,
232
+ maxSize: maxSize * 1024,
233
+ disabled: disabled,
234
+ showUploadList: false,
235
+ fileList: transformFileItem(fileList || [])
236
+ }, children || trigger);
237
+ });
238
+ export default FileUpload;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ maxSize?: number;
4
+ limit?: number;
5
+ accept?: string[];
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+ export interface FileUploadRef {
10
+ handleSSEFileAnalyize: (file: any, autoRetry?: boolean) => void;
11
+ fileUpload: (file: any, autoRetry?: boolean) => void;
12
+ abortSSE: () => void;
13
+ fileUploadAbortRef: React.MutableRefObject<AbortController | null>;
14
+ }
15
+ declare const FileUpload: React.ForwardRefExoticComponent<IProps & React.RefAttributes<unknown>>;
16
+ export default FileUpload;