@lobehub/ui 1.11.0 → 1.11.1

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 (91) hide show
  1. package/lib/ActionIcon/index.js +77 -79
  2. package/lib/ActionIcon/style.js +17 -61
  3. package/lib/Avatar/index.js +62 -67
  4. package/lib/Chat/const.js +6 -27
  5. package/lib/Chat/index.js +24 -28
  6. package/lib/Chat/store/index.js +46 -40
  7. package/lib/Chat/store/initialState.js +6 -27
  8. package/lib/Chat/store/messageReducer.js +51 -58
  9. package/lib/Chat/store/selectors.js +44 -46
  10. package/lib/Chat/store/store.js +242 -115
  11. package/lib/Chat/types.js +4 -16
  12. package/lib/Chat/utils/fetch.js +104 -68
  13. package/lib/ContextMenu/MenuItem/icons.js +48 -66
  14. package/lib/ContextMenu/MenuItem/index.js +73 -66
  15. package/lib/ContextMenu/MenuItem/style.js +19 -89
  16. package/lib/ContextMenu/index.js +194 -178
  17. package/lib/ContextMenu/style.js +17 -85
  18. package/lib/ContextMenu/types/index.js +15 -18
  19. package/lib/ContextMenu/types/menuItem.js +4 -16
  20. package/lib/Conversation/App.js +47 -50
  21. package/lib/Conversation/ChatList/MessageItem/Content.js +98 -93
  22. package/lib/Conversation/ChatList/MessageItem/Toolbar.js +94 -104
  23. package/lib/Conversation/ChatList/MessageItem/index.js +125 -157
  24. package/lib/Conversation/ChatList/index.js +64 -58
  25. package/lib/Conversation/InputArea/ActionBar.js +74 -92
  26. package/lib/Conversation/InputArea/index.js +103 -142
  27. package/lib/Conversation/StoreUpdater.js +28 -48
  28. package/lib/Conversation/index.js +30 -42
  29. package/lib/CopyButton/index.js +37 -62
  30. package/lib/DraggablePanel/index.js +192 -207
  31. package/lib/DraggablePanel/style.js +30 -278
  32. package/lib/DraggablePanel/utils.js +14 -35
  33. package/lib/EditableMessage/index.js +66 -89
  34. package/lib/EditableMessageList/index.js +97 -112
  35. package/lib/EditableText/index.js +36 -49
  36. package/lib/Highlighter/SyntaxHighlighter/Prism.js +43 -38
  37. package/lib/Highlighter/SyntaxHighlighter/index.js +62 -53
  38. package/lib/Highlighter/SyntaxHighlighter/style.js +18 -56
  39. package/lib/Highlighter/index.js +52 -58
  40. package/lib/Highlighter/style.js +22 -101
  41. package/lib/Icon/index.js +29 -36
  42. package/lib/Input/index.js +45 -43
  43. package/lib/Input/style.js +17 -67
  44. package/lib/List/ListItem/index.js +108 -150
  45. package/lib/List/ListItem/time.js +15 -47
  46. package/lib/List/index.js +9 -37
  47. package/lib/Logo/Divider.js +21 -34
  48. package/lib/Logo/Logo3D.js +17 -33
  49. package/lib/Logo/LogoFlat.js +108 -118
  50. package/lib/Logo/LogoHighContrast.js +30 -33
  51. package/lib/Logo/LogoText.js +21 -34
  52. package/lib/Logo/index.js +97 -59
  53. package/lib/Logo/style.js +13 -36
  54. package/lib/Markdown/Code.js +16 -30
  55. package/lib/Markdown/CodeBlock.js +33 -65
  56. package/lib/Markdown/index.js +35 -54
  57. package/lib/Markdown/style.js +15 -129
  58. package/lib/MessageInput/index.js +60 -56
  59. package/lib/MessageModal/index.js +80 -91
  60. package/lib/SearchBar/index.js +86 -73
  61. package/lib/SearchBar/style.js +18 -46
  62. package/lib/SideNav/index.js +43 -31
  63. package/lib/SideNav/style.js +13 -43
  64. package/lib/Snippet/index.js +42 -45
  65. package/lib/Snippet/style.js +13 -71
  66. package/lib/StroyBook/index.js +60 -61
  67. package/lib/StroyBook/style.js +19 -87
  68. package/lib/Swatches/index.js +35 -53
  69. package/lib/TabsNav/index.js +23 -31
  70. package/lib/TabsNav/style.js +17 -60
  71. package/lib/ThemeProvider/GlobalStyle.js +29 -92
  72. package/lib/ThemeProvider/index.js +43 -57
  73. package/lib/ThemeSwitch/index.js +62 -46
  74. package/lib/Tooltip/index.js +26 -31
  75. package/lib/Tooltip/style.js +13 -49
  76. package/lib/components/ControlInput.js +86 -87
  77. package/lib/hooks/useCopied.js +27 -37
  78. package/lib/hooks/useHighlight.js +65 -70
  79. package/lib/index.js +211 -120
  80. package/lib/styles/algorithms/generateColorPalette.js +28 -60
  81. package/lib/styles/algorithms/generateCustomStylish.js +22 -117
  82. package/lib/styles/algorithms/generateCustomToken.js +51 -65
  83. package/lib/styles/algorithms/generateTheme.js +22 -53
  84. package/lib/styles/colors.js +121 -1766
  85. package/lib/styles/index.js +23 -32
  86. package/lib/styles/theme/base.js +11 -32
  87. package/lib/styles/theme/dark.js +38 -62
  88. package/lib/styles/theme/light.js +38 -62
  89. package/lib/types/index.js +4 -16
  90. package/lib/utils/colorUtils.js +14 -48
  91. package/package.json +1 -1
@@ -1,70 +1,66 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/Chat/store/messageReducer.ts
20
- var messageReducer_exports = {};
21
- __export(messageReducer_exports, {
22
- messagesReducer: () => messagesReducer
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
23
6
  });
24
- module.exports = __toCommonJS(messageReducer_exports);
25
- var import_immer = require("immer");
26
- var messagesReducer = (state, payload) => {
7
+ exports.messagesReducer = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _immer = require("immer");
10
+ var messagesReducer = function messagesReducer(state, payload) {
27
11
  switch (payload.type) {
28
- case "addMessage":
29
- return [...state, payload.message];
30
- case "insertMessage":
31
- return (0, import_immer.produce)(state, (draftState) => {
12
+ case 'addMessage':
13
+ return [].concat((0, _toConsumableArray2.default)(state), [payload.message]);
14
+ case 'insertMessage':
15
+ return (0, _immer.produce)(state, function (draftState) {
32
16
  draftState.splice(payload.index, 0, payload.message);
33
17
  });
34
- case "deleteMessage":
35
- return state.filter((_, i) => i !== payload.index);
36
- case "resetMessages":
18
+ case 'deleteMessage':
19
+ return state.filter(function (_, i) {
20
+ return i !== payload.index;
21
+ });
22
+ case 'resetMessages':
37
23
  return [];
38
- case "updateMessage":
39
- return (0, import_immer.produce)(state, (draftState) => {
40
- const { index, message } = payload;
24
+ case 'updateMessage':
25
+ return (0, _immer.produce)(state, function (draftState) {
26
+ var index = payload.index,
27
+ message = payload.message;
41
28
  draftState[index].content = message;
42
29
  });
43
- case "updateMessageRole":
44
- return (0, import_immer.produce)(state, (draftState) => {
45
- const { index, role } = payload;
30
+ case 'updateMessageRole':
31
+ return (0, _immer.produce)(state, function (draftState) {
32
+ var index = payload.index,
33
+ role = payload.role;
46
34
  draftState[index].role = role;
47
35
  });
48
- case "addUserMessage":
49
- return (0, import_immer.produce)(state, (draftState) => {
50
- draftState.push({ role: "user", content: payload.message });
36
+ case 'addUserMessage':
37
+ return (0, _immer.produce)(state, function (draftState) {
38
+ draftState.push({
39
+ role: 'user',
40
+ content: payload.message
41
+ });
51
42
  });
52
- case "updateLatestBotMessage":
53
- return (0, import_immer.produce)(state, () => {
54
- const { responseStream } = payload;
55
- const newMessage = { role: "assistant", content: responseStream.join("") };
56
- return [...state.slice(0, -1), newMessage];
43
+ case 'updateLatestBotMessage':
44
+ return (0, _immer.produce)(state, function () {
45
+ var responseStream = payload.responseStream;
46
+ var newMessage = {
47
+ role: 'assistant',
48
+ content: responseStream.join('')
49
+ };
50
+ return [].concat((0, _toConsumableArray2.default)(state.slice(0, -1)), [newMessage]);
57
51
  });
58
- case "setErrorMessage":
59
- return (0, import_immer.produce)(state, (draftState) => {
60
- const { index, error } = payload;
52
+ case 'setErrorMessage':
53
+ return (0, _immer.produce)(state, function (draftState) {
54
+ var index = payload.index,
55
+ error = payload.error;
61
56
  draftState[index].error = error;
62
57
  });
63
- case "updateMessageChoice":
64
- return (0, import_immer.produce)(state, (draftState) => {
65
- const { index, message } = payload;
66
- const botMessage = draftState[index];
67
- const prevMsg = botMessage.content;
58
+ case 'updateMessageChoice':
59
+ return (0, _immer.produce)(state, function (draftState) {
60
+ var index = payload.index,
61
+ message = payload.message;
62
+ var botMessage = draftState[index];
63
+ var prevMsg = botMessage.content;
68
64
  botMessage.content = message;
69
65
  if (botMessage.choices) {
70
66
  botMessage.choices.push(prevMsg);
@@ -73,10 +69,7 @@ var messagesReducer = (state, payload) => {
73
69
  }
74
70
  });
75
71
  default:
76
- throw Error("暂未实现的 type,请检查 reducer");
72
+ throw Error('暂未实现的 type,请检查 reducer');
77
73
  }
78
74
  };
79
- // Annotate the CommonJS export names for ESM import in node:
80
- 0 && (module.exports = {
81
- messagesReducer
82
- });
75
+ exports.messagesReducer = messagesReducer;
@@ -1,53 +1,51 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/Chat/store/selectors.ts
20
- var selectors_exports = {};
21
- __export(selectors_exports, {
22
- chatSelectors: () => chatSelectors
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(selectors_exports);
25
- var import_tiktoken = require("@dqbd/tiktoken");
26
- var tiktoken = (0, import_tiktoken.get_encoding)("cl100k_base");
27
- var encode = (text) => {
28
- if (!text)
29
- return [];
30
- const tokens = tiktoken.encode(text);
6
+ exports.chatSelectors = void 0;
7
+ var _tiktoken = require("@dqbd/tiktoken");
8
+ var tiktoken = (0, _tiktoken.get_encoding)('cl100k_base');
9
+ var encode = function encode(text) {
10
+ if (!text) return [];
11
+ var tokens = tiktoken.encode(text);
31
12
  return tokens;
32
13
  };
33
- var disableInputSel = (s) => s.changingSystemRole;
34
- var messagesTokens = (s) => encode(s.messages.map((m) => m.content).join(""));
35
- var agentContentTokens = (s) => encode(
36
- s.messages.filter((s2) => s2.role === "system").map((c) => c.content).join("") || ""
37
- );
38
- var totalTokens = (s) => encode(s.messages.map((m) => m.content).join(""));
39
- var totalTokenCount = (s) => totalTokens(s).length;
40
- var agentTokenCount = (s) => agentContentTokens(s).length;
41
- var messagesTokenCount = (s) => messagesTokens(s).length;
14
+ var disableInputSel = function disableInputSel(s) {
15
+ return s.changingSystemRole;
16
+ };
17
+ var messagesTokens = function messagesTokens(s) {
18
+ return encode(s.messages.map(function (m) {
19
+ return m.content;
20
+ }).join(''));
21
+ };
22
+ var agentContentTokens = function agentContentTokens(s) {
23
+ return encode(s.messages.filter(function (s) {
24
+ return s.role === 'system';
25
+ }).map(function (c) {
26
+ return c.content;
27
+ }).join('') || '');
28
+ };
29
+ var totalTokens = function totalTokens(s) {
30
+ return encode(s.messages.map(function (m) {
31
+ return m.content;
32
+ }).join(''));
33
+ };
34
+ var totalTokenCount = function totalTokenCount(s) {
35
+ return totalTokens(s).length;
36
+ };
37
+ var agentTokenCount = function agentTokenCount(s) {
38
+ return agentContentTokens(s).length;
39
+ };
40
+ var messagesTokenCount = function messagesTokenCount(s) {
41
+ return messagesTokens(s).length;
42
+ };
42
43
  var chatSelectors = {
43
- totalTokenCount,
44
- agentTokenCount,
45
- messagesTokenCount,
46
- totalTokens,
47
- messagesTokens,
44
+ totalTokenCount: totalTokenCount,
45
+ agentTokenCount: agentTokenCount,
46
+ messagesTokenCount: messagesTokenCount,
47
+ totalTokens: totalTokens,
48
+ messagesTokens: messagesTokens,
48
49
  disableInput: disableInputSel
49
50
  };
50
- // Annotate the CommonJS export names for ESM import in node:
51
- 0 && (module.exports = {
52
- chatSelectors
53
- });
51
+ exports.chatSelectors = chatSelectors;
@@ -1,119 +1,246 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/Chat/store/store.ts
20
- var store_exports = {};
21
- __export(store_exports, {
22
- createStore: () => createStore
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
23
6
  });
24
- module.exports = __toCommonJS(store_exports);
25
- var import_fetch = require("../utils/fetch");
26
- var import_const = require("../const");
27
- var import_initialState = require("./initialState");
28
- var import_messageReducer = require("./messageReducer");
29
- var createStore = (set, get) => ({
30
- ...import_initialState.initialState,
31
- dispatchMessage: (payload) => {
32
- var _a, _b;
33
- const { type, ...res } = payload;
34
- const messages = (0, import_messageReducer.messagesReducer)(get().messages, payload);
35
- set({ messages }, false, {
36
- type: `dispatchMessage/${type}`,
37
- payload: res
38
- });
39
- (_b = (_a = get()).onMessagesChange) == null ? void 0 : _b.call(_a, messages);
40
- },
41
- handleMessageEditing: (index) => {
42
- set({ editingMessageId: index });
43
- },
44
- generateMessage: async (message, messages, options) => {
45
- const { onResponseStart, request, onResponseFinished } = get();
46
- if (!request)
47
- return;
48
- await (onResponseStart == null ? void 0 : onResponseStart(get().messages));
49
- set({ loading: true });
50
- const fetcher = () => request({ messages });
51
- await (0, import_fetch.fetchSSE)(fetcher, options);
52
- set({ loading: false });
53
- onResponseFinished == null ? void 0 : onResponseFinished({ messages: get().messages });
54
- },
55
- sendMessage: async () => {
56
- const { message, dispatchMessage, generateMessage, messages } = get();
57
- if (!message)
58
- return;
59
- set({ message: "" });
60
- dispatchMessage({ type: "addUserMessage", message });
61
- dispatchMessage({ type: "addMessage", message: { role: "assistant", content: import_const.LOADING_FLAT } });
62
- let currentResponse = [];
63
- await generateMessage(message, messages, {
64
- onMessageHandle: (text) => {
65
- currentResponse = [...currentResponse, text];
66
- dispatchMessage({ type: "updateLatestBotMessage", responseStream: currentResponse });
67
- const item = document.getElementById("for-loading");
68
- if (!item)
69
- return;
70
- item.scrollIntoView({ behavior: "smooth" });
71
- },
72
- onErrorHandle: (error) => {
73
- dispatchMessage({ type: "setErrorMessage", error, index: get().messages.length - 1 });
74
- }
75
- });
76
- },
77
- resendMessage: async (index) => {
78
- var _a;
79
- const { dispatchMessage, sendMessage, generateMessage, messages } = get();
80
- const lastMessage = messages.at(-1);
81
- if (messages.length === index && (lastMessage == null ? void 0 : lastMessage.role) === "user") {
82
- dispatchMessage({ type: "deleteMessage", index: index - 1 });
83
- set({ message: lastMessage.content });
84
- await sendMessage();
85
- return;
86
- }
87
- const contextMessages = get().messages.slice(0, index);
88
- const userMessage = (_a = contextMessages.at(-1)) == null ? void 0 : _a.content;
89
- if (!userMessage)
90
- return;
91
- const targetMsg = messages[index];
92
- if (targetMsg.role !== "assistant") {
93
- dispatchMessage({
94
- type: "insertMessage",
95
- index,
96
- message: { role: "assistant", content: import_const.LOADING_FLAT }
7
+ exports.createStore = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
+ var _fetch = require("../utils/fetch");
14
+ var _const = require("../const");
15
+ var _initialState = require("./initialState");
16
+ var _messageReducer = require("./messageReducer");
17
+ var _excluded = ["type"];
18
+ var createStore = function createStore(set, get) {
19
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _initialState.initialState), {}, {
20
+ dispatchMessage: function dispatchMessage(payload) {
21
+ var _get$onMessagesChange, _get;
22
+ var type = payload.type,
23
+ res = (0, _objectWithoutProperties2.default)(payload, _excluded);
24
+ var messages = (0, _messageReducer.messagesReducer)(get().messages, payload);
25
+ set({
26
+ messages: messages
27
+ }, false, {
28
+ type: "dispatchMessage/".concat(type),
29
+ payload: res
30
+ });
31
+ (_get$onMessagesChange = (_get = get()).onMessagesChange) === null || _get$onMessagesChange === void 0 ? void 0 : _get$onMessagesChange.call(_get, messages);
32
+ },
33
+ handleMessageEditing: function handleMessageEditing(index) {
34
+ set({
35
+ editingMessageId: index
97
36
  });
98
- } else {
99
- const botPrevMsg = targetMsg.content;
100
- dispatchMessage({ type: "updateMessageChoice", message: botPrevMsg, index });
101
- dispatchMessage({ type: "updateMessage", message: import_const.LOADING_FLAT, index });
102
- }
103
- dispatchMessage({ type: "setErrorMessage", error: void 0, index });
104
- let currentResponse = [];
105
- await generateMessage(userMessage, contextMessages, {
106
- onMessageHandle: (text) => {
107
- currentResponse = [...currentResponse, text];
108
- dispatchMessage({ type: "updateMessage", message: currentResponse.join(""), index });
109
- },
110
- onErrorHandle: (error) => {
111
- dispatchMessage({ type: "setErrorMessage", error, index });
37
+ },
38
+ generateMessage: function () {
39
+ var _generateMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(message, messages, options) {
40
+ var _get2, onResponseStart, request, onResponseFinished, fetcher;
41
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
42
+ while (1) switch (_context.prev = _context.next) {
43
+ case 0:
44
+ _get2 = get(), onResponseStart = _get2.onResponseStart, request = _get2.request, onResponseFinished = _get2.onResponseFinished;
45
+ if (request) {
46
+ _context.next = 3;
47
+ break;
48
+ }
49
+ return _context.abrupt("return");
50
+ case 3:
51
+ _context.next = 5;
52
+ return onResponseStart === null || onResponseStart === void 0 ? void 0 : onResponseStart(get().messages);
53
+ case 5:
54
+ set({
55
+ loading: true
56
+ });
57
+ fetcher = function fetcher() {
58
+ return request({
59
+ messages: messages
60
+ });
61
+ };
62
+ _context.next = 9;
63
+ return (0, _fetch.fetchSSE)(fetcher, options);
64
+ case 9:
65
+ set({
66
+ loading: false
67
+ });
68
+ onResponseFinished === null || onResponseFinished === void 0 ? void 0 : onResponseFinished({
69
+ messages: get().messages
70
+ });
71
+ case 11:
72
+ case "end":
73
+ return _context.stop();
74
+ }
75
+ }, _callee);
76
+ }));
77
+ function generateMessage(_x, _x2, _x3) {
78
+ return _generateMessage.apply(this, arguments);
112
79
  }
113
- });
114
- }
115
- });
116
- // Annotate the CommonJS export names for ESM import in node:
117
- 0 && (module.exports = {
118
- createStore
119
- });
80
+ return generateMessage;
81
+ }(),
82
+ sendMessage: function () {
83
+ var _sendMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
84
+ var _get3, message, dispatchMessage, generateMessage, messages, currentResponse;
85
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
86
+ while (1) switch (_context2.prev = _context2.next) {
87
+ case 0:
88
+ _get3 = get(), message = _get3.message, dispatchMessage = _get3.dispatchMessage, generateMessage = _get3.generateMessage, messages = _get3.messages;
89
+ if (message) {
90
+ _context2.next = 3;
91
+ break;
92
+ }
93
+ return _context2.abrupt("return");
94
+ case 3:
95
+ set({
96
+ message: ''
97
+ });
98
+ dispatchMessage({
99
+ type: 'addUserMessage',
100
+ message: message
101
+ });
102
+
103
+ // 添加一个空的信息用于放置 ai 响应
104
+ dispatchMessage({
105
+ type: 'addMessage',
106
+ message: {
107
+ role: 'assistant',
108
+ content: _const.LOADING_FLAT
109
+ }
110
+ });
111
+ currentResponse = []; // 生成 messages
112
+ _context2.next = 9;
113
+ return generateMessage(message, messages, {
114
+ onMessageHandle: function onMessageHandle(text) {
115
+ currentResponse = [].concat((0, _toConsumableArray2.default)(currentResponse), [text]);
116
+ dispatchMessage({
117
+ type: 'updateLatestBotMessage',
118
+ responseStream: currentResponse
119
+ });
120
+
121
+ // 滚动到最后一条消息
122
+ var item = document.getElementById('for-loading');
123
+ if (!item) return;
124
+ item.scrollIntoView({
125
+ behavior: 'smooth'
126
+ });
127
+ },
128
+ onErrorHandle: function onErrorHandle(error) {
129
+ dispatchMessage({
130
+ type: 'setErrorMessage',
131
+ error: error,
132
+ index: get().messages.length - 1
133
+ });
134
+ }
135
+ });
136
+ case 9:
137
+ case "end":
138
+ return _context2.stop();
139
+ }
140
+ }, _callee2);
141
+ }));
142
+ function sendMessage() {
143
+ return _sendMessage.apply(this, arguments);
144
+ }
145
+ return sendMessage;
146
+ }(),
147
+ resendMessage: function () {
148
+ var _resendMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3(index) {
149
+ var _contextMessages$at;
150
+ var _get4, dispatchMessage, sendMessage, generateMessage, messages, lastMessage, contextMessages, userMessage, targetMsg, botPrevMsg, currentResponse;
151
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
152
+ while (1) switch (_context3.prev = _context3.next) {
153
+ case 0:
154
+ _get4 = get(), dispatchMessage = _get4.dispatchMessage, sendMessage = _get4.sendMessage, generateMessage = _get4.generateMessage, messages = _get4.messages;
155
+ lastMessage = messages.at(-1); // 用户通过手动删除,造成了他的问题是最后一条消息
156
+ // 这种情况下,相当于用户重新发送消息
157
+ if (!(messages.length === index && (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.role) === 'user')) {
158
+ _context3.next = 8;
159
+ break;
160
+ }
161
+ dispatchMessage({
162
+ type: 'deleteMessage',
163
+ index: index - 1
164
+ });
165
+ set({
166
+ message: lastMessage.content
167
+ });
168
+ _context3.next = 7;
169
+ return sendMessage();
170
+ case 7:
171
+ return _context3.abrupt("return");
172
+ case 8:
173
+ // 上下文消息就是当前消息之前的消息
174
+ contextMessages = get().messages.slice(0, index); // 上下文消息中最后一条消息
175
+ userMessage = (_contextMessages$at = contextMessages.at(-1)) === null || _contextMessages$at === void 0 ? void 0 : _contextMessages$at.content;
176
+ if (userMessage) {
177
+ _context3.next = 12;
178
+ break;
179
+ }
180
+ return _context3.abrupt("return");
181
+ case 12:
182
+ targetMsg = messages[index]; // 如果不是 assistant 的消息,那么需要额外插入一条消息
183
+ if (targetMsg.role !== 'assistant') {
184
+ dispatchMessage({
185
+ type: 'insertMessage',
186
+ index: index,
187
+ message: {
188
+ role: 'assistant',
189
+ content: _const.LOADING_FLAT
190
+ }
191
+ });
192
+ } else {
193
+ botPrevMsg = targetMsg.content; // 保存之前的消息为历史消息
194
+ dispatchMessage({
195
+ type: 'updateMessageChoice',
196
+ message: botPrevMsg,
197
+ index: index
198
+ });
199
+ dispatchMessage({
200
+ type: 'updateMessage',
201
+ message: _const.LOADING_FLAT,
202
+ index: index
203
+ });
204
+ }
205
+
206
+ // 重置错误信息
207
+ dispatchMessage({
208
+ type: 'setErrorMessage',
209
+ error: undefined,
210
+ index: index
211
+ });
212
+
213
+ // 开始更新消息
214
+ currentResponse = [];
215
+ _context3.next = 18;
216
+ return generateMessage(userMessage, contextMessages, {
217
+ onMessageHandle: function onMessageHandle(text) {
218
+ currentResponse = [].concat((0, _toConsumableArray2.default)(currentResponse), [text]);
219
+ dispatchMessage({
220
+ type: 'updateMessage',
221
+ message: currentResponse.join(''),
222
+ index: index
223
+ });
224
+ },
225
+ onErrorHandle: function onErrorHandle(error) {
226
+ dispatchMessage({
227
+ type: 'setErrorMessage',
228
+ error: error,
229
+ index: index
230
+ });
231
+ }
232
+ });
233
+ case 18:
234
+ case "end":
235
+ return _context3.stop();
236
+ }
237
+ }, _callee3);
238
+ }));
239
+ function resendMessage(_x4) {
240
+ return _resendMessage.apply(this, arguments);
241
+ }
242
+ return resendMessage;
243
+ }()
244
+ });
245
+ };
246
+ exports.createStore = createStore;
package/lib/Chat/types.js CHANGED
@@ -1,17 +1,5 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
14
2
 
15
- // src/Chat/types.ts
16
- var types_exports = {};
17
- module.exports = __toCommonJS(types_exports);
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });