@myun/gimi-chat 0.9.33 → 0.9.35

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 (33) hide show
  1. package/dist/apis/useApi.d.ts +24 -1
  2. package/dist/apis/useApi.js +142 -83
  3. package/dist/components/answer-item/index.js +9 -0
  4. package/dist/components/file-upload/index.js +1 -1
  5. package/dist/components/gimi-sidebar/index.module.css +1 -1
  6. package/dist/components/iconfont-com/index.js +1 -1
  7. package/dist/components/knowledge-trace/KnowledgeIconComponent.js +48 -19
  8. package/dist/components/knowledge-trace/classList.js +2 -4
  9. package/dist/components/knowledge-trace/config.d.ts +92 -0
  10. package/dist/components/knowledge-trace/config.js +154 -0
  11. package/dist/components/knowledge-trace/documentList.d.ts +1 -0
  12. package/dist/components/knowledge-trace/documentList.js +10 -35
  13. package/dist/components/knowledge-trace/index.d.ts +1 -1
  14. package/dist/components/knowledge-trace/index.module.css +242 -9
  15. package/dist/components/knowledge-trace/information.d.ts +7 -0
  16. package/dist/components/knowledge-trace/information.js +25 -0
  17. package/dist/components/knowledge-trace/interfaces.d.ts +2 -0
  18. package/dist/components/knowledge-trace/tryWatch.d.ts +11 -0
  19. package/dist/components/knowledge-trace/tryWatch.js +430 -0
  20. package/dist/components/knowledge-trace/videoList.d.ts +1 -0
  21. package/dist/components/knowledge-trace/videoList.js +8 -37
  22. package/dist/components/upload-list/CustomFile.js +3 -1
  23. package/dist/constants.d.ts +1 -0
  24. package/dist/constants.js +2 -1
  25. package/dist/hooks/useKnowledgeService.d.ts +2 -0
  26. package/dist/hooks/useKnowledgeService.js +70 -23
  27. package/dist/i18n/locales/en-US.d.ts +31 -0
  28. package/dist/i18n/locales/en-US.js +45 -14
  29. package/dist/i18n/locales/zh-CN.d.ts +31 -0
  30. package/dist/i18n/locales/zh-CN.js +32 -1
  31. package/dist/interfaces/knowledgeTrace.d.ts +70 -0
  32. package/dist/umd/index.min.js +1 -1
  33. package/package.json +2 -1
@@ -0,0 +1,430 @@
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
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+ 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."); }
7
+ 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); }
8
+ 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; }
9
+ 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; } }
10
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
+ import { Button, Modal, Toast } from '@douyinfe/semi-ui';
12
+ import React, { useContext, useEffect, useRef, useState } from 'react';
13
+ import { useAppSelector } from "../../store/hooks";
14
+ import { useTranslation } from 'react-i18next';
15
+ import styles from "./index.module.css";
16
+ import { Spin } from '@douyinfe/semi-ui';
17
+ import GdPlayer from '@gaodun.com/gplayer';
18
+ import ChatContext from "../templates/chatContext";
19
+ import AiLoading from "../ai-loading";
20
+ import { getFieldConfigsByType } from "./config";
21
+ var SUPPORT_PREVIEW_FILE_TYPE = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'];
22
+ var SUPPORT_WEB_PREVIEW = ['pdf', 'svg', 'png', 'jpg', 'jpeg', 'gif'];
23
+ var UNSUPPORTED_ICON = 'https://simg01.gaodunwangxiao.com/uploadfiles/tmp/upload/202607/21/de13c_20260721164331.png';
24
+
25
+ // 不支持预览/试看 居中布局:绝对覆盖整个弹窗 body,盖住底部“查看”按钮
26
+ var UnsupportedView = function UnsupportedView(_ref) {
27
+ var tipKey = _ref.tipKey,
28
+ downloadUrl = _ref.downloadUrl,
29
+ onViewFull = _ref.onViewFull,
30
+ _ref$showDownload = _ref.showDownload,
31
+ showDownload = _ref$showDownload === void 0 ? true : _ref$showDownload;
32
+ var _useTranslation = useTranslation(),
33
+ t = _useTranslation.t;
34
+ return /*#__PURE__*/React.createElement("div", {
35
+ className: styles.unsupportedOverlay
36
+ }, /*#__PURE__*/React.createElement("div", {
37
+ className: styles.unsupportedInner
38
+ }, /*#__PURE__*/React.createElement("img", {
39
+ className: styles.unsupportedIcon,
40
+ src: UNSUPPORTED_ICON,
41
+ alt: ""
42
+ }), /*#__PURE__*/React.createElement("div", {
43
+ className: styles.unsupportedTips
44
+ }, t(tipKey)), /*#__PURE__*/React.createElement("div", {
45
+ className: styles.unsupportedBtns
46
+ }, showDownload && /*#__PURE__*/React.createElement(Button, {
47
+ className: styles.unsupportedBtn,
48
+ onClick: function onClick() {
49
+ return window.open(downloadUrl);
50
+ }
51
+ }, t('common.download')), /*#__PURE__*/React.createElement(Button, {
52
+ className: styles.unsupportedBtn,
53
+ onClick: onViewFull
54
+ }, t('trace.viewFull')))));
55
+ };
56
+ var VideoPlayer = function VideoPlayer(_ref2) {
57
+ var item = _ref2.item,
58
+ onViewFull = _ref2.onViewFull;
59
+ var _useState = useState(true),
60
+ _useState2 = _slicedToArray(_useState, 2),
61
+ loading = _useState2[0],
62
+ setLoading = _useState2[1];
63
+ var playerRef = useRef(null);
64
+ var _useContext = useContext(ChatContext),
65
+ apiService = _useContext.apiService;
66
+ var _ref3 = apiService,
67
+ getVideoType = _ref3.getVideoType;
68
+
69
+ // 初始化高顿播放器
70
+ var initGdVideo = /*#__PURE__*/function () {
71
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
72
+ var typeRes, fragment;
73
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
74
+ while (1) switch (_context.prev = _context.next) {
75
+ case 0:
76
+ _context.next = 2;
77
+ return getVideoType({
78
+ resourceId: item.fileToken,
79
+ playPlatform: 'link'
80
+ });
81
+ case 2:
82
+ typeRes = _context.sent;
83
+ fragment = {
84
+ startTime: parseTimeToSeconds(item.startedAt),
85
+ endTime: parseTimeToSeconds(item.endedAt)
86
+ };
87
+ setLoading(false);
88
+
89
+ // @ts-ignore
90
+ window.Hls = null; // 重置hls,g1和g2会冲突
91
+ playerRef.current = new GdPlayer({
92
+ container: document.getElementById('player-box'),
93
+ protype: 'b',
94
+ video: {},
95
+ env: 't-',
96
+ accessToken: ' ',
97
+ // 为了兼容g2内部报错,必传空格字符串
98
+ resourceId: item.fileToken,
99
+ initialTime: fragment.startTime,
100
+ canDragBar: true,
101
+ xhrHeaders: {
102
+ 'Vod-Authentication': typeRes.result.vodToken
103
+ },
104
+ isFull: true,
105
+ videoFragment: fragment
106
+ });
107
+ case 7:
108
+ case "end":
109
+ return _context.stop();
110
+ }
111
+ }, _callee);
112
+ }));
113
+ return function initGdVideo() {
114
+ return _ref4.apply(this, arguments);
115
+ };
116
+ }();
117
+ var parseTimeToSeconds = function parseTimeToSeconds(time) {
118
+ if (!time) return 0;
119
+ var _time$split$map = time.split(':').map(Number),
120
+ _time$split$map2 = _slicedToArray(_time$split$map, 3),
121
+ hours = _time$split$map2[0],
122
+ minutes = _time$split$map2[1],
123
+ seconds = _time$split$map2[2];
124
+ return hours * 3600 + minutes * 60 + seconds;
125
+ };
126
+ useEffect(function () {
127
+ if (item.origin === 'gaodun') initGdVideo();
128
+ }, []);
129
+
130
+ // 非高顿来源:不支持试看,渲染居中提示+去查看(无下载按钮)
131
+ if (item.origin !== 'gaodun') {
132
+ return /*#__PURE__*/React.createElement(UnsupportedView, {
133
+ tipKey: "trace.video.unsupportedTips",
134
+ downloadUrl: item.url,
135
+ onViewFull: onViewFull,
136
+ showDownload: false
137
+ });
138
+ }
139
+ return /*#__PURE__*/React.createElement("div", {
140
+ id: "player-box-wrap",
141
+ className: styles.playerWrap
142
+ }, /*#__PURE__*/React.createElement(Spin, {
143
+ spinning: loading,
144
+ size: "large",
145
+ wrapperClassName: styles.spinWrap
146
+ }), /*#__PURE__*/React.createElement("div", {
147
+ id: "player-box",
148
+ className: styles.playerBox
149
+ }));
150
+ };
151
+ var DocumentPlayer = function DocumentPlayer(_ref5) {
152
+ var item = _ref5.item,
153
+ onViewFull = _ref5.onViewFull;
154
+ var _useTranslation2 = useTranslation(),
155
+ t = _useTranslation2.t;
156
+ var _useContext2 = useContext(ChatContext),
157
+ apiService = _useContext2.apiService;
158
+ var _ref6 = apiService,
159
+ getDocumentTrialUrl = _ref6.getDocumentTrialUrl;
160
+
161
+ // trialUrl: 试看地址;error: 失败文案 key(null 表示无错误);loading: 加载中
162
+ var _useState3 = useState(''),
163
+ _useState4 = _slicedToArray(_useState3, 2),
164
+ trialUrl = _useState4[0],
165
+ setTrialUrl = _useState4[1];
166
+ var _useState5 = useState(null),
167
+ _useState6 = _slicedToArray(_useState5, 2),
168
+ errorKey = _useState6[0],
169
+ setErrorKey = _useState6[1];
170
+ var _useState7 = useState(false),
171
+ _useState8 = _slicedToArray(_useState7, 2),
172
+ loading = _useState8[0],
173
+ setLoading = _useState8[1];
174
+
175
+ // Office 文档与 Web 可预览类型(pdf/svg/图片)均通过试看接口获取试看地址
176
+ var canPreview = SUPPORT_PREVIEW_FILE_TYPE.includes(item.suffix) || SUPPORT_WEB_PREVIEW.includes(item.suffix);
177
+
178
+ // 业务码 -> i18n key
179
+ var mapTrialError = function mapTrialError(status) {
180
+ switch (status) {
181
+ case 4001:
182
+ return 'trace.document.trialUnsupportedType';
183
+ case 4002:
184
+ return 'trace.document.trialFileTooLarge';
185
+ case 4003:
186
+ return 'trace.document.trialInvalidDoc';
187
+ default:
188
+ return 'trace.document.trialFailed';
189
+ }
190
+ };
191
+ useEffect(function () {
192
+ if (!canPreview) return;
193
+ var cancelled = false;
194
+ var fetchTrial = /*#__PURE__*/function () {
195
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
196
+ var _res$result, res, isOfficeType;
197
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
198
+ while (1) switch (_context2.prev = _context2.next) {
199
+ case 0:
200
+ setLoading(true);
201
+ setErrorKey(null);
202
+ setTrialUrl('');
203
+ _context2.prev = 3;
204
+ _context2.next = 6;
205
+ return getDocumentTrialUrl({
206
+ resourceUrl: item.url
207
+ });
208
+ case 6:
209
+ res = _context2.sent;
210
+ if (!cancelled) {
211
+ _context2.next = 9;
212
+ break;
213
+ }
214
+ return _context2.abrupt("return");
215
+ case 9:
216
+ if (res.status === 0 && (_res$result = res.result) !== null && _res$result !== void 0 && _res$result.trialUrl) {
217
+ // Office 文档:用 Office 在线预览嵌入地址;Web 类型(pdf/图片)直接用 trialUrl
218
+ isOfficeType = SUPPORT_PREVIEW_FILE_TYPE.includes(item.suffix);
219
+ setTrialUrl(isOfficeType ? "https://view.officeapps.live.com/op/embed.aspx?src=".concat(encodeURIComponent(res.result.trialUrl)) : res.result.trialUrl);
220
+ } else {
221
+ setErrorKey(mapTrialError(res.status));
222
+ }
223
+ _context2.next = 15;
224
+ break;
225
+ case 12:
226
+ _context2.prev = 12;
227
+ _context2.t0 = _context2["catch"](3);
228
+ if (!cancelled) setErrorKey('trace.document.trialFailed');
229
+ case 15:
230
+ _context2.prev = 15;
231
+ if (!cancelled) setLoading(false);
232
+ return _context2.finish(15);
233
+ case 18:
234
+ case "end":
235
+ return _context2.stop();
236
+ }
237
+ }, _callee2, null, [[3, 12, 15, 18]]);
238
+ }));
239
+ return function fetchTrial() {
240
+ return _ref7.apply(this, arguments);
241
+ };
242
+ }();
243
+ fetchTrial();
244
+ return function () {
245
+ cancelled = true;
246
+ };
247
+ }, [item.url, canPreview]);
248
+
249
+ // 不支持预览的类型:直接提示并下载
250
+ if (!canPreview) {
251
+ return /*#__PURE__*/React.createElement(UnsupportedView, {
252
+ tipKey: "trace.document.unsupportedTips",
253
+ downloadUrl: item.url,
254
+ onViewFull: onViewFull
255
+ });
256
+ }
257
+
258
+ // 加载中
259
+ if (loading) {
260
+ return /*#__PURE__*/React.createElement("div", {
261
+ className: styles.docLoading
262
+ }, /*#__PURE__*/React.createElement(AiLoading, null));
263
+ }
264
+ // 试看接口失败
265
+ if (errorKey) {
266
+ return /*#__PURE__*/React.createElement(UnsupportedView, {
267
+ tipKey: errorKey,
268
+ downloadUrl: item.url,
269
+ onViewFull: onViewFull
270
+ });
271
+ }
272
+ // 试看地址
273
+ return trialUrl ? /*#__PURE__*/React.createElement("iframe", {
274
+ className: styles.docFrame,
275
+ src: trialUrl,
276
+ style: {
277
+ border: 0
278
+ },
279
+ title: item.name || t('file.previewTitle')
280
+ }) : null;
281
+ };
282
+ var NewsPlayer = function NewsPlayer(_ref8) {
283
+ var _item$regulationType;
284
+ var item = _ref8.item;
285
+ var _useTranslation3 = useTranslation(),
286
+ t = _useTranslation3.t;
287
+ var html = item.htmlContent || item.content || '';
288
+
289
+ // 获取 regulationType,默认为 0(法规政策)
290
+ var regulationType = (_item$regulationType = item.regulationType) !== null && _item$regulationType !== void 0 ? _item$regulationType : 0;
291
+
292
+ // 根据 regulationType 获取字段配置
293
+ var fieldConfigs = getFieldConfigsByType(regulationType);
294
+
295
+ // 渲染单个字段
296
+ var renderField = function renderField(fieldConfig) {
297
+ var value = item[fieldConfig.dataKey];
298
+
299
+ // 处理数组类型的字段(如关键词 tags)
300
+ if (fieldConfig.isArray && Array.isArray(value)) {
301
+ value = value.join('>');
302
+ }
303
+ return /*#__PURE__*/React.createElement("div", {
304
+ className: styles.row,
305
+ key: fieldConfig.key
306
+ }, /*#__PURE__*/React.createElement("span", {
307
+ className: styles.label
308
+ }, t(fieldConfig.i18nKey)), /*#__PURE__*/React.createElement("span", {
309
+ className: styles.value
310
+ }, value || '-'));
311
+ };
312
+ return /*#__PURE__*/React.createElement("div", {
313
+ className: styles.newsContent
314
+ }, /*#__PURE__*/React.createElement("div", {
315
+ className: styles.newsTitle
316
+ }, item.title), /*#__PURE__*/React.createElement("div", {
317
+ className: styles.newsSubTitle
318
+ }, item.subTitle), /*#__PURE__*/React.createElement("div", {
319
+ className: styles.newsBodyContainer
320
+ }, /*#__PURE__*/React.createElement("div", {
321
+ className: styles.lawTable
322
+ }, fieldConfigs.map(renderField)), /*#__PURE__*/React.createElement("div", {
323
+ className: styles.newsBody,
324
+ dangerouslySetInnerHTML: {
325
+ __html: html
326
+ }
327
+ }), /*#__PURE__*/React.createElement("div", {
328
+ className: styles.newsMask
329
+ }, /*#__PURE__*/React.createElement("span", {
330
+ className: styles.newsMaskText
331
+ }, t('trace.information.unsupportedTips')))));
332
+ };
333
+ var TryWatch = function TryWatch(_ref9) {
334
+ var item = _ref9.item,
335
+ type = _ref9.type,
336
+ visible = _ref9.visible,
337
+ onCancel = _ref9.onCancel,
338
+ onCurrentTraceVideoClick = _ref9.onCurrentTraceVideoClick;
339
+ var platform = useAppSelector(function (state) {
340
+ return state.gimiMenu.platform;
341
+ });
342
+ var _useAppSelector = useAppSelector(function (state) {
343
+ return state.gimiMenu.businessParams;
344
+ }),
345
+ gradeId = _useAppSelector.gradeId,
346
+ teachModelId = _useAppSelector.teachModelId;
347
+ var _useTranslation4 = useTranslation(),
348
+ t = _useTranslation4.t;
349
+ var handleFull = function handleFull() {
350
+ if (item.isDelete === 1) return;
351
+ if (platform !== 'myun') return Toast.warning(t('trace.jumpUnsupported'));
352
+ if (type === 'information') {
353
+ handleInformation();
354
+ } else if (type === 'video') {
355
+ handleVideo();
356
+ } else if (type === 'document') {
357
+ handleDocument();
358
+ }
359
+ };
360
+ var handleInformation = function handleInformation() {
361
+ if (!item.hasEntitlement) {
362
+ Toast.warning(t('trace.notPermission'));
363
+ return;
364
+ }
365
+ window.open("/news-list/new-information/".concat(item.informationId, "?packageId=").concat(item.packageId));
366
+ };
367
+ var handleDocument = function handleDocument() {
368
+ var searchParams = "gradeId=".concat(item.gradeId, "&teachModuleId=").concat(item.id, "&outlineId=").concat(item.courseId, "&phaseId=").concat(item.phaseId);
369
+ if (item.isJoinClass) {
370
+ window.open(item.resourceMountType === 'teachingModule' ? "/learningPage?".concat(searchParams) : item.productType === 'single' ? "/courseDetail/".concat(item.gradeId, "?trigger=resource") : "/class-project/".concat(item.gradeId, "/").concat(item.productId, "?trigger=resource"));
371
+ } else {
372
+ if (item.productType === 'single') {
373
+ window.open("/new-product/".concat(item.productId, "?").concat(searchParams));
374
+ } else {
375
+ window.open("/project-product/".concat(item.productId, "?").concat(searchParams));
376
+ }
377
+ }
378
+ };
379
+ var handleVideo = function handleVideo() {
380
+ var searchParams = "gradeId=".concat(item.gradeId, "&teachModuleId=").concat(item.id, "&outlineId=").concat(item.courseId, "&phaseId=").concat(item.phaseId);
381
+ if (item.isJoinClass) {
382
+ // 如果溯源就是当前视频,直接跳转到溯源的进度
383
+ if (gradeId === item.gradeId && teachModelId === item.id) {
384
+ onCancel === null || onCancel === void 0 || onCancel();
385
+ onCurrentTraceVideoClick === null || onCurrentTraceVideoClick === void 0 || onCurrentTraceVideoClick(item.startedAtSecond);
386
+ } else {
387
+ // 如果不是当前视频,新开一个学习页面
388
+ window.open("/learningPage?".concat(searchParams, "&startedAt=").concat(item.startedAtSecond));
389
+ }
390
+ } else {
391
+ if (item.productType === 'single') {
392
+ window.open("/new-product/".concat(item.productId, "?").concat(searchParams));
393
+ } else {
394
+ window.open("/project-product/".concat(item.productId, "?").concat(searchParams));
395
+ }
396
+ }
397
+ };
398
+ return /*#__PURE__*/React.createElement(Modal, {
399
+ title: type === 'video' ? t('trace.tryWatchVideo') : type === 'document' ? t('trace.tryWatchDocument') : t('trace.tryWatchInformation'),
400
+ visible: visible,
401
+ onCancel: onCancel,
402
+ centered: true,
403
+ width: 1000,
404
+ height: 580,
405
+ bodyStyle: {
406
+ paddingBottom: 24
407
+ },
408
+ footer: null
409
+ }, /*#__PURE__*/React.createElement("div", {
410
+ className: styles.tryWatchBody
411
+ }, /*#__PURE__*/React.createElement("div", {
412
+ className: styles.playerContainer
413
+ }, type === 'video' && /*#__PURE__*/React.createElement(VideoPlayer, {
414
+ item: item,
415
+ onViewFull: handleFull
416
+ }), type === 'document' && /*#__PURE__*/React.createElement(DocumentPlayer, {
417
+ item: item,
418
+ onViewFull: handleFull
419
+ }), type === 'information' && /*#__PURE__*/React.createElement(NewsPlayer, {
420
+ item: item
421
+ })), /*#__PURE__*/React.createElement("div", {
422
+ className: styles.tryFullBtnContainer
423
+ }, /*#__PURE__*/React.createElement("div", {
424
+ className: styles.tips
425
+ }, t('trace.tryFullTips')), /*#__PURE__*/React.createElement(Button, {
426
+ className: styles.tryFullBtn,
427
+ onClick: handleFull
428
+ }, t('trace.tryFull')))));
429
+ };
430
+ export default TryWatch;
@@ -3,6 +3,7 @@ import type { IVideoResource } from './interfaces';
3
3
  declare const VideoList: React.FC<{
4
4
  list: IVideoResource[];
5
5
  hiddenTitle?: boolean;
6
+ handleCurrentTrace?: (trace: IVideoResource) => void;
6
7
  onCurrentTraceVideoClick?: (time?: string) => void;
7
8
  }>;
8
9
  export default VideoList;
@@ -3,51 +3,24 @@ import { useTranslation } from 'react-i18next';
3
3
  import styles from "./index.module.css";
4
4
  import classNames from 'classnames';
5
5
  import { knowledgeConstants } from "../../constants";
6
- import { Toast, Tooltip } from '@douyinfe/semi-ui';
7
6
  import { useAppSelector } from "../../store/hooks";
8
7
  var VideoItem = function VideoItem(_ref) {
9
8
  var _konwledgeTraceState$;
10
9
  var item = _ref.item,
11
- onClick = _ref.onClick;
10
+ _onClick = _ref.onClick;
12
11
  var _useTranslation = useTranslation(),
13
12
  t = _useTranslation.t;
14
13
  var konwledgeTraceState = useAppSelector(function (state) {
15
14
  return state.gimiMenu.sidebar.knowledgeTrace;
16
15
  });
17
- var platform = useAppSelector(function (state) {
18
- return state.gimiMenu.platform;
19
- });
20
16
  var isActive = (_konwledgeTraceState$ = konwledgeTraceState.resources) === null || _konwledgeTraceState$ === void 0 || (_konwledgeTraceState$ = _konwledgeTraceState$.map(function (item) {
21
17
  return item.id;
22
18
  })) === null || _konwledgeTraceState$ === void 0 ? void 0 : _konwledgeTraceState$.includes("".concat(item.sliceId));
23
- var _useAppSelector = useAppSelector(function (state) {
24
- return state.gimiMenu.businessParams;
25
- }),
26
- gradeId = _useAppSelector.gradeId,
27
- teachModelId = _useAppSelector.teachModelId;
28
- var handleClick = function handleClick() {
29
- if (item.isDelete === 1) return;
30
- if (platform !== 'myun') return Toast.warning(t('trace.jumpUnsupported'));
31
- var searchParams = "gradeId=".concat(item.gradeId, "&teachModuleId=").concat(item.id, "&outlineId=").concat(item.courseId, "&phaseId=").concat(item.phaseId);
32
- if (item.isJoinClass) {
33
- // 如果溯源就是当前视频,直接跳转到溯源的进度
34
- if (gradeId === item.gradeId && teachModelId === item.id) {
35
- onClick === null || onClick === void 0 || onClick(item.startedAtSecond);
36
- } else {
37
- // 如果不是当前视频,新开一个学习页面
38
- window.open("/learningPage?".concat(searchParams, "&startedAt=").concat(item.startedAtSecond));
39
- }
40
- } else {
41
- if (item.productType === 'single') {
42
- window.open("/new-product/".concat(item.productId, "?").concat(searchParams));
43
- } else {
44
- window.open("/project-product/".concat(item.productId, "?").concat(searchParams));
45
- }
46
- }
47
- };
48
19
  return /*#__PURE__*/React.createElement("div", {
49
20
  className: classNames(styles.knowledge, item.isDelete === 1 ? styles.resource_deactive : isActive ? styles.active : ''),
50
- onClick: handleClick
21
+ onClick: function onClick() {
22
+ return _onClick === null || _onClick === void 0 ? void 0 : _onClick(item);
23
+ }
51
24
  }, /*#__PURE__*/React.createElement("div", {
52
25
  style: {
53
26
  position: 'relative'
@@ -62,12 +35,9 @@ var VideoItem = function VideoItem(_ref) {
62
35
  src: knowledgeConstants.VIDEO_PLAY_ICON_ADDRESS
63
36
  })), /*#__PURE__*/React.createElement("div", {
64
37
  className: styles.class_description
65
- }, /*#__PURE__*/React.createElement(Tooltip, {
66
- placement: "topLeft",
67
- content: item.name
68
38
  }, /*#__PURE__*/React.createElement("div", {
69
39
  className: styles.text
70
- }, item.name)), /*#__PURE__*/React.createElement("div", {
40
+ }, item.name), /*#__PURE__*/React.createElement("div", {
71
41
  className: styles.timeTrace
72
42
  }, t('trace.video.segment', {
73
43
  start: item.startedAt || "0'0\"",
@@ -80,7 +50,8 @@ var VideoList = function VideoList(_ref2) {
80
50
  var list = _ref2.list,
81
51
  onCurrentTraceVideoClick = _ref2.onCurrentTraceVideoClick,
82
52
  _ref2$hiddenTitle = _ref2.hiddenTitle,
83
- hiddenTitle = _ref2$hiddenTitle === void 0 ? false : _ref2$hiddenTitle;
53
+ hiddenTitle = _ref2$hiddenTitle === void 0 ? false : _ref2$hiddenTitle,
54
+ handleCurrentTrace = _ref2.handleCurrentTrace;
84
55
  var _useTranslation2 = useTranslation(),
85
56
  t = _useTranslation2.t;
86
57
  return /*#__PURE__*/React.createElement("div", {
@@ -93,7 +64,7 @@ var VideoList = function VideoList(_ref2) {
93
64
  return /*#__PURE__*/React.createElement(VideoItem, {
94
65
  item: item,
95
66
  key: item.id,
96
- onClick: onCurrentTraceVideoClick
67
+ onClick: handleCurrentTrace
97
68
  });
98
69
  }));
99
70
  };
@@ -21,7 +21,9 @@ var CustomFile = function CustomFile(_ref) {
21
21
  var fileSize = formatSizeToKB(file.fileSize || file.size);
22
22
  var iconMap = {
23
23
  txt: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202509/17/b46c7_20250917144926.png',
24
- xlsx: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202509/17/0094f_20250917144837.png'
24
+ xlsx: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202509/17/0094f_20250917144837.png',
25
+ doc: 'https://simg01.gaodunwangxiao.com/uploadfiles/tmp/upload/202607/22/1efdd_20260722162220.png',
26
+ docx: 'https://simg01.gaodunwangxiao.com/uploadfiles/tmp/upload/202607/22/1efdd_20260722162220.png'
25
27
  };
26
28
  return {
27
29
  fileIcon: iconMap[fileType.toLowerCase()] || '',
@@ -9,6 +9,7 @@ export declare const knowledgeConstants: {
9
9
  CLASS_ICON_WHITE_ADDRESS: string;
10
10
  VIDEO_PLAY_ICON_ADDRESS: string;
11
11
  VIDEO_DEFAULT_COVER_ADDRESS: string;
12
+ INFORMATION_ICON_ADRESS: string;
12
13
  };
13
14
  export declare const documentConstants: {
14
15
  txt: string;
package/dist/constants.js CHANGED
@@ -8,7 +8,8 @@ export var knowledgeConstants = {
8
8
  DOCUMENT_WHITE_ICON_ADDRESS: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202511/10/fa3ea_20251110132431.png',
9
9
  CLASS_ICON_WHITE_ADDRESS: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202511/10/61fdf_20251110132334.png',
10
10
  VIDEO_PLAY_ICON_ADDRESS: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202511/19/1f688_20251119160747.png',
11
- VIDEO_DEFAULT_COVER_ADDRESS: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202511/19/7a643_20251119160927.png'
11
+ VIDEO_DEFAULT_COVER_ADDRESS: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202511/19/7a643_20251119160927.png',
12
+ INFORMATION_ICON_ADRESS: "https://simg01.gaodunwangxiao.com/uploadfiles/tmp/upload/202607/22/b834d_20260722090057.png"
12
13
  };
13
14
  export var documentConstants = {
14
15
  txt: 'https://simg01.gaodunwangxiao.com/uploadimgs/tmp/upload/202509/17/b46c7_20250917144926.png',
@@ -1,5 +1,6 @@
1
1
  import type { IProduct, ITeachingModuleResource, IVideoResource } from "../components/knowledge-trace/interfaces";
2
2
  import type { KonwledgeType } from "../components/knowledge-trace";
3
+ import { IInformation } from "../interfaces/knowledgeTrace";
3
4
  interface IProps {
4
5
  type: KonwledgeType;
5
6
  resources: {
@@ -16,5 +17,6 @@ declare const useKnowledgeService: (props: IProps[] | {
16
17
  documentList: ITeachingModuleResource[];
17
18
  videoSliceList: IVideoResource[];
18
19
  productList: IProduct[];
20
+ informationList: IInformation[];
19
21
  };
20
22
  export default useKnowledgeService;