@lobehub/ui 1.103.2 → 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.
@@ -1,15 +1,17 @@
1
- import { FC } from 'react';
1
+ import { FC, ReactNode } from 'react';
2
2
  import { type ChatItemProps } from "../ChatItem";
3
3
  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;
11
11
  } & ChatMessage & ListItemProps>;
12
- export type RenderMessage = FC<ChatMessage>;
12
+ export type RenderMessage = FC<ChatMessage & {
13
+ editableContent: ReactNode;
14
+ }>;
13
15
  export type RenderMessageExtra = FC<ChatMessage>;
14
16
  export type RenderErrorMessage = FC<ChatMessage>;
15
17
  export type RenderAction = FC<ActionsBarProps & ChatMessage>;
@@ -19,13 +21,15 @@ export interface ListItemProps {
19
21
  /**
20
22
  * @description 点击操作按钮的回调函数
21
23
  */
22
- onActionClick?: OnActionClick;
24
+ onActionsClick?: {
25
+ [role: RenderRole]: OnActionClick;
26
+ };
23
27
  /**
24
28
  * @description 消息变化的回调函数
25
29
  */
26
30
  onMessageChange?: OnMessageChange;
27
31
  renderActions?: {
28
- [role: RenderRole]: RenderAction;
32
+ [actionKey: string]: RenderAction;
29
33
  };
30
34
  /**
31
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,
@@ -32,87 +33,109 @@ var Item = /*#__PURE__*/memo(function (props) {
32
33
  message = _App$useApp.message;
33
34
  var RenderItem = useMemo(function () {
34
35
  if (!renderItems || !(item !== null && item !== void 0 && item.role)) return;
35
- if (renderItems !== null && renderItems !== void 0 && renderItems[item.role]) return renderItems[item.role];
36
- if (renderItems !== null && renderItems !== void 0 && renderItems['default']) return renderItems['default'];
37
- }, [renderItems, item]);
38
- var innerRenderMessage = useCallback(function (content) {
36
+ var renderFunction;
37
+ if (renderItems !== null && renderItems !== void 0 && renderItems[item.role]) renderFunction = renderItems[item.role];
38
+ if (!renderFunction && renderItems !== null && renderItems !== void 0 && renderItems['default']) renderFunction = renderItems['default'];
39
+ if (!renderFunction) return;
40
+ return renderFunction;
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;
39
45
  if (!renderMessages || !(item !== null && item !== void 0 && item.role)) return;
40
46
  var RenderFunction;
41
47
  if (renderMessages !== null && renderMessages !== void 0 && renderMessages[item.role]) RenderFunction = renderMessages[item.role];
42
- if (renderMessages !== null && renderMessages !== void 0 && renderMessages['default']) RenderFunction = renderMessages['default'];
48
+ if (!RenderFunction && renderMessages !== null && renderMessages !== void 0 && renderMessages['default']) RenderFunction = renderMessages['default'];
43
49
  if (!RenderFunction) return;
44
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, item), {}, {
45
- content: content
50
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, data), {}, {
51
+ editableContent: editableContent
46
52
  }));
47
- }, [renderMessages, item]);
48
- 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;
49
56
  if (!renderMessagesExtra || !(item !== null && item !== void 0 && item.role)) return;
50
57
  var RenderFunction;
51
58
  if (renderMessagesExtra !== null && renderMessagesExtra !== void 0 && renderMessagesExtra[item.role]) RenderFunction = renderMessagesExtra[item.role];
52
59
  if (renderMessagesExtra !== null && renderMessagesExtra !== void 0 && renderMessagesExtra['default']) RenderFunction = renderMessagesExtra['default'];
53
- if (!RenderFunction) return;
54
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, item));
55
- }, [renderMessagesExtra, item]);
56
- var ErrorMessage = useCallback(function () {
60
+ if (!RenderFunction && !RenderFunction) return;
61
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, data));
62
+ }, [renderMessagesExtra === null || renderMessagesExtra === void 0 ? void 0 : renderMessagesExtra[item.role]]);
63
+ var ErrorMessage = useCallback(function (_ref3) {
57
64
  var _item$error;
65
+ var data = _ref3.data;
58
66
  if (!renderErrorMessages || !(item !== null && item !== void 0 && (_item$error = item.error) !== null && _item$error !== void 0 && _item$error.type)) return;
59
67
  var RenderFunction;
60
68
  if (renderErrorMessages !== null && renderErrorMessages !== void 0 && renderErrorMessages[item.error.type]) RenderFunction = renderErrorMessages[item.error.type];
61
- if (renderErrorMessages !== null && renderErrorMessages !== void 0 && renderErrorMessages['default']) RenderFunction = renderErrorMessages['default'];
69
+ if (!RenderFunction && renderErrorMessages !== null && renderErrorMessages !== void 0 && renderErrorMessages['default']) RenderFunction = renderErrorMessages['default'];
62
70
  if (!RenderFunction) return;
63
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread({}, item));
64
- }, [renderErrorMessages, item.error]);
65
- 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;
66
91
  if (!renderActions || !(item !== null && item !== void 0 && item.role)) return;
67
92
  var RenderFunction;
68
93
  if (renderActions !== null && renderActions !== void 0 && renderActions[item.role]) RenderFunction = renderActions[item.role];
69
94
  if (renderActions !== null && renderActions !== void 0 && renderActions['default']) RenderFunction = renderActions['default'];
70
95
  if (!RenderFunction) RenderFunction = ActionsBar;
71
- return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, item), {}, {
96
+ return /*#__PURE__*/_jsx(RenderFunction, _objectSpread(_objectSpread({}, data), {}, {
72
97
  onActionClick: function onActionClick(actionKey) {
73
- switch (actionKey) {
74
- case 'copy':
75
- {
76
- copy(item.content);
77
- message.success((text === null || text === void 0 ? void 0 : text.copySuccess) || 'Copy Success');
78
- break;
79
- }
80
- case 'edit':
81
- {
82
- setEditing(true);
83
- break;
84
- }
85
- }
86
- _onActionClick === null || _onActionClick === void 0 ? void 0 : _onActionClick(actionKey, item.id);
98
+ return _onActionClick(actionKey, data);
87
99
  },
88
100
  text: text
89
101
  }));
90
- }, [renderActions, item, text, _onActionClick]);
102
+ }, [renderActions === null || renderActions === void 0 ? void 0 : renderActions[item.role], text, _onActionClick]);
91
103
  var error = useMemo(function () {
92
- var _item$error2;
104
+ var _item$error3;
93
105
  if (!item.error) return;
94
106
  return {
95
- 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
96
108
  };
97
109
  }, [item.error]);
98
110
  if (RenderItem) return /*#__PURE__*/_jsx(RenderItem, _objectSpread({}, props), item.id);
99
111
  return /*#__PURE__*/_jsx(ChatItem, {
100
- actions: /*#__PURE__*/_jsx(Actions, {}),
112
+ actions: /*#__PURE__*/_jsx(Actions, {
113
+ data: item
114
+ }),
101
115
  avatar: item.meta,
102
116
  avatarAddon: groupNav,
103
117
  editing: editing,
104
118
  error: error,
105
- errorMessage: /*#__PURE__*/_jsx(ErrorMessage, {}),
119
+ errorMessage: /*#__PURE__*/_jsx(ErrorMessage, {
120
+ data: item
121
+ }),
106
122
  loading: loading,
107
123
  message: item.content,
108
- messageExtra: /*#__PURE__*/_jsx(MessageExtra, {}),
124
+ messageExtra: /*#__PURE__*/_jsx(MessageExtra, {
125
+ data: item
126
+ }),
109
127
  onChange: function onChange(value) {
110
128
  return onMessageChange === null || onMessageChange === void 0 ? void 0 : onMessageChange(item.id, value);
111
129
  },
112
130
  onEditingChange: setEditing,
113
131
  placement: type === 'chat' ? item.role === 'user' ? 'right' : 'left' : 'left',
114
132
  primary: item.role === 'user',
115
- renderMessage: innerRenderMessage,
133
+ renderMessage: function renderMessage(editableContent) {
134
+ return /*#__PURE__*/_jsx(RenderMessage, {
135
+ data: item,
136
+ editableContent: editableContent
137
+ });
138
+ },
116
139
  showTitle: showTitle,
117
140
  text: text,
118
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.2",
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",