@lobehub/ui 1.103.3 → 1.104.0

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.
@@ -4,7 +4,7 @@ import { ChatMessage } from "../types/chatMessage";
4
4
  import { LLMRoleType } from "../types/llm";
5
5
  import { type ActionsBarProps } from './ActionsBar';
6
6
  export type OnMessageChange = (id: string, content: string) => void;
7
- export type OnActionClick = (actionKey: string, messageId: string) => void;
7
+ export type OnActionClick = (props: ChatMessage) => void;
8
8
  export type RenderRole = LLMRoleType | 'default' | string;
9
9
  export type RenderItem = FC<{
10
10
  key: string;
@@ -21,13 +21,15 @@ export interface ListItemProps {
21
21
  /**
22
22
  * @description 点击操作按钮的回调函数
23
23
  */
24
- onActionClick?: OnActionClick;
24
+ onActionsClick?: {
25
+ [role: RenderRole]: OnActionClick;
26
+ };
25
27
  /**
26
28
  * @description 消息变化的回调函数
27
29
  */
28
30
  onMessageChange?: OnMessageChange;
29
31
  renderActions?: {
30
- [role: RenderRole]: RenderAction;
32
+ [actionKey: string]: RenderAction;
31
33
  };
32
34
  /**
33
35
  * @description 渲染错误消息的函数
@@ -1,19 +1,20 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["renderMessagesExtra", "showTitle", "onActionClick", "onMessageChange", "type", "text", "renderMessages", "renderErrorMessages", "renderActions", "loading", "groupNav", "renderItems"];
4
+ var _excluded = ["renderMessagesExtra", "showTitle", "onActionsClick", "onMessageChange", "type", "text", "renderMessages", "renderErrorMessages", "renderActions", "loading", "groupNav", "renderItems"];
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
7
  import { App } from 'antd';
8
- import copy from 'copy-to-clipboard';
8
+ import _copy from 'copy-to-clipboard';
9
9
  import { memo, useCallback, useMemo, useState } from 'react';
10
10
  import ChatItem from "../ChatItem";
11
11
  import ActionsBar from "./ActionsBar";
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  var Item = /*#__PURE__*/memo(function (props) {
14
+ var _item$error2;
14
15
  var renderMessagesExtra = props.renderMessagesExtra,
15
16
  showTitle = props.showTitle,
16
- _onActionClick = props.onActionClick,
17
+ onActionsClick = props.onActionsClick,
17
18
  onMessageChange = props.onMessageChange,
18
19
  type = props.type,
19
20
  text = props.text,
@@ -37,85 +38,104 @@ var Item = /*#__PURE__*/memo(function (props) {
37
38
  if (!renderFunction && renderItems !== null && renderItems !== void 0 && renderItems['default']) renderFunction = renderItems['default'];
38
39
  if (!renderFunction) return;
39
40
  return renderFunction;
40
- }, [renderItems, item]);
41
- var innerRenderMessage = useCallback(function (editableContent) {
41
+ }, [renderItems === null || renderItems === void 0 ? void 0 : renderItems[item.role]]);
42
+ var RenderMessage = useCallback(function (_ref) {
43
+ var editableContent = _ref.editableContent,
44
+ data = _ref.data;
42
45
  if (!renderMessages || !(item !== null && item !== void 0 && item.role)) return;
43
46
  var RenderFunction;
44
47
  if (renderMessages !== null && renderMessages !== void 0 && renderMessages[item.role]) RenderFunction = renderMessages[item.role];
45
48
  if (!RenderFunction && renderMessages !== null && renderMessages !== void 0 && renderMessages['default']) RenderFunction = renderMessages['default'];
46
49
  if (!RenderFunction) return;
47
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, item), {}, {
50
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, data), {}, {
48
51
  editableContent: editableContent
49
52
  }));
50
- }, [renderMessages, item]);
51
- var MessageExtra = useCallback(function () {
53
+ }, [renderMessages === null || renderMessages === void 0 ? void 0 : renderMessages[item.role]]);
54
+ var MessageExtra = useCallback(function (_ref2) {
55
+ var data = _ref2.data;
52
56
  if (!renderMessagesExtra || !(item !== null && item !== void 0 && item.role)) return;
53
57
  var RenderFunction;
54
58
  if (renderMessagesExtra !== null && renderMessagesExtra !== void 0 && renderMessagesExtra[item.role]) RenderFunction = renderMessagesExtra[item.role];
55
59
  if (renderMessagesExtra !== null && renderMessagesExtra !== void 0 && renderMessagesExtra['default']) RenderFunction = renderMessagesExtra['default'];
56
60
  if (!RenderFunction && !RenderFunction) return;
57
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, item));
58
- }, [renderMessagesExtra, item]);
59
- var ErrorMessage = useCallback(function () {
61
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, data));
62
+ }, [renderMessagesExtra === null || renderMessagesExtra === void 0 ? void 0 : renderMessagesExtra[item.role]]);
63
+ var ErrorMessage = useCallback(function (_ref3) {
60
64
  var _item$error;
65
+ var data = _ref3.data;
61
66
  if (!renderErrorMessages || !(item !== null && item !== void 0 && (_item$error = item.error) !== null && _item$error !== void 0 && _item$error.type)) return;
62
67
  var RenderFunction;
63
68
  if (renderErrorMessages !== null && renderErrorMessages !== void 0 && renderErrorMessages[item.error.type]) RenderFunction = renderErrorMessages[item.error.type];
64
69
  if (!RenderFunction && renderErrorMessages !== null && renderErrorMessages !== void 0 && renderErrorMessages['default']) RenderFunction = renderErrorMessages['default'];
65
70
  if (!RenderFunction) return;
66
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, item));
67
- }, [renderErrorMessages, item.error]);
68
- var Actions = useCallback(function () {
71
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, data));
72
+ }, [renderErrorMessages === null || renderErrorMessages === void 0 ? void 0 : renderErrorMessages[item === null || item === void 0 ? void 0 : (_item$error2 = item.error) === null || _item$error2 === void 0 ? void 0 : _item$error2.type]]);
73
+ var _onActionClick = useCallback(function (actionKey, data) {
74
+ if (!actionKey) return;
75
+ var handleActionClick = _objectSpread({
76
+ copy: function copy(data) {
77
+ _copy(data.content);
78
+ message.success((text === null || text === void 0 ? void 0 : text.copySuccess) || 'Copy Success');
79
+ },
80
+ edit: function edit() {
81
+ return setEditing(true);
82
+ }
83
+ }, onActionsClick);
84
+ return function () {
85
+ var _handleActionClick$ac;
86
+ return handleActionClick === null || handleActionClick === void 0 ? void 0 : (_handleActionClick$ac = handleActionClick[actionKey]) === null || _handleActionClick$ac === void 0 ? void 0 : _handleActionClick$ac.call(handleActionClick, data);
87
+ };
88
+ }, [onActionsClick === null || onActionsClick === void 0 ? void 0 : onActionsClick[item.role], text]);
89
+ var Actions = useCallback(function (_ref4) {
90
+ var data = _ref4.data;
69
91
  if (!renderActions || !(item !== null && item !== void 0 && item.role)) return;
70
92
  var RenderFunction;
71
93
  if (renderActions !== null && renderActions !== void 0 && renderActions[item.role]) RenderFunction = renderActions[item.role];
72
94
  if (renderActions !== null && renderActions !== void 0 && renderActions['default']) RenderFunction = renderActions['default'];
73
95
  if (!RenderFunction) RenderFunction = ActionsBar;
74
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, item), {}, {
96
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, data), {}, {
75
97
  onActionClick: function onActionClick(actionKey) {
76
- switch (actionKey) {
77
- case 'copy':
78
- {
79
- copy(item.content);
80
- message.success((text === null || text === void 0 ? void 0 : text.copySuccess) || 'Copy Success');
81
- break;
82
- }
83
- case 'edit':
84
- {
85
- setEditing(true);
86
- break;
87
- }
88
- }
89
- _onActionClick === null || _onActionClick === void 0 ? void 0 : _onActionClick(actionKey, item.id);
98
+ return _onActionClick(actionKey, data);
90
99
  },
91
100
  text: text
92
101
  }));
93
- }, [renderActions, item, text, _onActionClick]);
102
+ }, [renderActions === null || renderActions === void 0 ? void 0 : renderActions[item.role], text, _onActionClick]);
94
103
  var error = useMemo(function () {
95
- var _item$error2;
104
+ var _item$error3;
96
105
  if (!item.error) return;
97
106
  return {
98
- message: (_item$error2 = item.error) === null || _item$error2 === void 0 ? void 0 : _item$error2.message
107
+ message: (_item$error3 = item.error) === null || _item$error3 === void 0 ? void 0 : _item$error3.message
99
108
  };
100
109
  }, [item.error]);
101
110
  if (RenderItem) return /*#__PURE__*/_jsx(RenderItem, _objectSpread({}, props), item.id);
102
111
  return /*#__PURE__*/_jsx(ChatItem, {
103
- actions: /*#__PURE__*/_jsx(Actions, {}),
112
+ actions: /*#__PURE__*/_jsx(Actions, {
113
+ data: item
114
+ }),
104
115
  avatar: item.meta,
105
116
  avatarAddon: groupNav,
106
117
  editing: editing,
107
118
  error: error,
108
- errorMessage: /*#__PURE__*/_jsx(ErrorMessage, {}),
119
+ errorMessage: /*#__PURE__*/_jsx(ErrorMessage, {
120
+ data: item
121
+ }),
109
122
  loading: loading,
110
123
  message: item.content,
111
- messageExtra: /*#__PURE__*/_jsx(MessageExtra, {}),
124
+ messageExtra: /*#__PURE__*/_jsx(MessageExtra, {
125
+ data: item
126
+ }),
112
127
  onChange: function onChange(value) {
113
128
  return onMessageChange === null || onMessageChange === void 0 ? void 0 : onMessageChange(item.id, value);
114
129
  },
115
130
  onEditingChange: setEditing,
116
131
  placement: type === 'chat' ? item.role === 'user' ? 'right' : 'left' : 'left',
117
132
  primary: item.role === 'user',
118
- renderMessage: innerRenderMessage,
133
+ renderMessage: function renderMessage(editableContent) {
134
+ return /*#__PURE__*/_jsx(RenderMessage, {
135
+ data: item,
136
+ editableContent: editableContent
137
+ });
138
+ },
119
139
  showTitle: showTitle,
120
140
  text: text,
121
141
  time: item.updateAt || item.createAt,
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["onActionClick", "renderMessagesExtra", "className", "data", "type", "text", "showTitle", "onMessageChange", "renderMessages", "renderErrorMessages", "loadingId", "renderItems", "enableHistoryCount", "renderActions", "historyCount"];
3
+ var _excluded = ["onActionsClick", "renderMessagesExtra", "className", "data", "type", "text", "showTitle", "onMessageChange", "renderMessages", "renderErrorMessages", "loadingId", "renderItems", "enableHistoryCount", "renderActions", "historyCount"];
4
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
  import { Fragment, memo } from 'react';
@@ -10,7 +10,7 @@ import { useStyles } from "./style";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
12
  var ChatList = /*#__PURE__*/memo(function (_ref) {
13
- var onActionClick = _ref.onActionClick,
13
+ var onActionsClick = _ref.onActionsClick,
14
14
  renderMessagesExtra = _ref.renderMessagesExtra,
15
15
  className = _ref.className,
16
16
  data = _ref.data,
@@ -37,7 +37,7 @@ var ChatList = /*#__PURE__*/memo(function (_ref) {
37
37
  children: data.map(function (item, index) {
38
38
  var itemProps = {
39
39
  loading: loadingId === item.id,
40
- onActionClick: onActionClick,
40
+ onActionsClick: onActionsClick,
41
41
  onMessageChange: onMessageChange,
42
42
  renderActions: renderActions,
43
43
  renderErrorMessages: renderErrorMessages,
@@ -8,7 +8,7 @@ export var useChatListActionsBar = function useChatListActionsBar(text) {
8
8
  },
9
9
  del: {
10
10
  icon: Trash,
11
- key: 'delete',
11
+ key: 'del',
12
12
  label: (text === null || text === void 0 ? void 0 : text.delete) || 'Delete'
13
13
  },
14
14
  divider: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/ui",
3
- "version": "1.103.3",
3
+ "version": "1.104.0",
4
4
  "description": "Lobe UI is an open-source UI component library for building AIGC web apps",
5
5
  "keywords": [
6
6
  "lobehub",