@lobehub/ui 1.11.1 → 1.11.2
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.
- package/package.json +1 -1
- package/lib/ActionIcon/index.d.ts +0 -49
- package/lib/ActionIcon/index.js +0 -80
- package/lib/ActionIcon/style.d.ts +0 -6
- package/lib/ActionIcon/style.js +0 -20
- package/lib/Avatar/index.d.ts +0 -10
- package/lib/Avatar/index.js +0 -69
- package/lib/Chat/const.d.ts +0 -1
- package/lib/Chat/const.js +0 -8
- package/lib/Chat/index.d.ts +0 -2
- package/lib/Chat/index.js +0 -27
- package/lib/Chat/store/index.d.ts +0 -20
- package/lib/Chat/store/index.js +0 -50
- package/lib/Chat/store/initialState.d.ts +0 -28
- package/lib/Chat/store/initialState.js +0 -16
- package/lib/Chat/store/messageReducer.d.ts +0 -37
- package/lib/Chat/store/messageReducer.js +0 -75
- package/lib/Chat/store/selectors.d.ts +0 -9
- package/lib/Chat/store/selectors.js +0 -51
- package/lib/Chat/store/store.d.ts +0 -34
- package/lib/Chat/store/store.js +0 -246
- package/lib/Chat/types.d.ts +0 -77
- package/lib/Chat/types.js +0 -5
- package/lib/Chat/utils/fetch.d.ts +0 -11
- package/lib/Chat/utils/fetch.js +0 -108
- package/lib/ContextMenu/MenuItem/icons.d.ts +0 -4
- package/lib/ContextMenu/MenuItem/icons.js +0 -82
- package/lib/ContextMenu/MenuItem/index.d.ts +0 -12
- package/lib/ContextMenu/MenuItem/index.js +0 -79
- package/lib/ContextMenu/MenuItem/style.d.ts +0 -7
- package/lib/ContextMenu/MenuItem/style.js +0 -24
- package/lib/ContextMenu/index.d.ts +0 -9
- package/lib/ContextMenu/index.js +0 -270
- package/lib/ContextMenu/style.d.ts +0 -4
- package/lib/ContextMenu/style.js +0 -20
- package/lib/ContextMenu/types/index.d.ts +0 -5
- package/lib/ContextMenu/types/index.js +0 -16
- package/lib/ContextMenu/types/menuItem.d.ts +0 -21
- package/lib/ContextMenu/types/menuItem.js +0 -5
- package/lib/Conversation/App.d.ts +0 -13
- package/lib/Conversation/App.js +0 -50
- package/lib/Conversation/ChatList/MessageItem/Content.d.ts +0 -8
- package/lib/Conversation/ChatList/MessageItem/Content.js +0 -109
- package/lib/Conversation/ChatList/MessageItem/Toolbar.d.ts +0 -10
- package/lib/Conversation/ChatList/MessageItem/Toolbar.js +0 -100
- package/lib/Conversation/ChatList/MessageItem/index.d.ts +0 -9
- package/lib/Conversation/ChatList/MessageItem/index.js +0 -132
- package/lib/Conversation/ChatList/index.d.ts +0 -14
- package/lib/Conversation/ChatList/index.js +0 -67
- package/lib/Conversation/InputArea/ActionBar.d.ts +0 -4
- package/lib/Conversation/InputArea/ActionBar.js +0 -79
- package/lib/Conversation/InputArea/index.d.ts +0 -4
- package/lib/Conversation/InputArea/index.js +0 -109
- package/lib/Conversation/StoreUpdater.d.ts +0 -7
- package/lib/Conversation/StoreUpdater.js +0 -32
- package/lib/Conversation/index.d.ts +0 -8
- package/lib/Conversation/index.js +0 -33
- package/lib/CopyButton/index.d.ts +0 -26
- package/lib/CopyButton/index.js +0 -41
- package/lib/DraggablePanel/index.d.ts +0 -92
- package/lib/DraggablePanel/index.js +0 -202
- package/lib/DraggablePanel/style.d.ts +0 -18
- package/lib/DraggablePanel/style.js +0 -38
- package/lib/DraggablePanel/utils.d.ts +0 -2
- package/lib/DraggablePanel/utils.js +0 -19
- package/lib/EditableMessage/index.d.ts +0 -43
- package/lib/EditableMessage/index.js +0 -73
- package/lib/EditableMessageList/index.d.ts +0 -9
- package/lib/EditableMessageList/index.js +0 -109
- package/lib/EditableText/index.d.ts +0 -5
- package/lib/EditableText/index.js +0 -43
- package/lib/Highlighter/SyntaxHighlighter/Prism.d.ts +0 -7
- package/lib/Highlighter/SyntaxHighlighter/Prism.js +0 -46
- package/lib/Highlighter/SyntaxHighlighter/index.d.ts +0 -5
- package/lib/Highlighter/SyntaxHighlighter/index.js +0 -64
- package/lib/Highlighter/SyntaxHighlighter/style.d.ts +0 -5
- package/lib/Highlighter/SyntaxHighlighter/style.js +0 -23
- package/lib/Highlighter/index.d.ts +0 -36
- package/lib/Highlighter/index.js +0 -56
- package/lib/Highlighter/style.d.ts +0 -5
- package/lib/Highlighter/style.js +0 -25
- package/lib/Icon/index.d.ts +0 -21
- package/lib/Icon/index.js +0 -45
- package/lib/Input/index.d.ts +0 -13
- package/lib/Input/index.js +0 -47
- package/lib/Input/style.d.ts +0 -6
- package/lib/Input/style.js +0 -20
- package/lib/List/ListItem/index.d.ts +0 -64
- package/lib/List/ListItem/index.js +0 -115
- package/lib/List/ListItem/time.d.ts +0 -2
- package/lib/List/ListItem/time.js +0 -18
- package/lib/List/index.d.ts +0 -5
- package/lib/List/index.js +0 -13
- package/lib/Logo/Divider.d.ts +0 -3
- package/lib/Logo/Divider.js +0 -28
- package/lib/Logo/Logo3D.d.ts +0 -3
- package/lib/Logo/Logo3D.js +0 -19
- package/lib/Logo/LogoFlat.d.ts +0 -3
- package/lib/Logo/LogoFlat.js +0 -110
- package/lib/Logo/LogoHighContrast.d.ts +0 -3
- package/lib/Logo/LogoHighContrast.js +0 -32
- package/lib/Logo/LogoText.d.ts +0 -3
- package/lib/Logo/LogoText.js +0 -26
- package/lib/Logo/index.d.ts +0 -20
- package/lib/Logo/index.js +0 -102
- package/lib/Logo/style.d.ts +0 -4
- package/lib/Logo/style.js +0 -18
- package/lib/Markdown/Code.d.ts +0 -3
- package/lib/Markdown/Code.js +0 -19
- package/lib/Markdown/CodeBlock.d.ts +0 -3
- package/lib/Markdown/CodeBlock.js +0 -36
- package/lib/Markdown/index.d.ts +0 -13
- package/lib/Markdown/index.js +0 -39
- package/lib/Markdown/style.d.ts +0 -4
- package/lib/Markdown/style.js +0 -20
- package/lib/MessageInput/index.d.ts +0 -37
- package/lib/MessageInput/index.js +0 -63
- package/lib/MessageModal/index.d.ts +0 -11
- package/lib/MessageModal/index.js +0 -87
- package/lib/SearchBar/index.d.ts +0 -8
- package/lib/SearchBar/index.js +0 -90
- package/lib/SearchBar/style.d.ts +0 -6
- package/lib/SearchBar/style.js +0 -21
- package/lib/SideNav/index.d.ts +0 -18
- package/lib/SideNav/index.js +0 -46
- package/lib/SideNav/style.d.ts +0 -1
- package/lib/SideNav/style.js +0 -16
- package/lib/Snippet/index.d.ts +0 -29
- package/lib/Snippet/index.js +0 -44
- package/lib/Snippet/style.d.ts +0 -1
- package/lib/Snippet/style.js +0 -16
- package/lib/StroyBook/index.d.ts +0 -17
- package/lib/StroyBook/index.js +0 -64
- package/lib/StroyBook/style.d.ts +0 -8
- package/lib/StroyBook/style.js +0 -22
- package/lib/Swatches/index.d.ts +0 -8
- package/lib/Swatches/index.js +0 -50
- package/lib/TabsNav/index.d.ts +0 -22
- package/lib/TabsNav/index.js +0 -26
- package/lib/TabsNav/style.d.ts +0 -3
- package/lib/TabsNav/style.js +0 -22
- package/lib/ThemeProvider/GlobalStyle.d.ts +0 -3
- package/lib/ThemeProvider/GlobalStyle.js +0 -31
- package/lib/ThemeProvider/index.d.ts +0 -22
- package/lib/ThemeProvider/index.js +0 -46
- package/lib/ThemeSwitch/index.d.ts +0 -27
- package/lib/ThemeSwitch/index.js +0 -66
- package/lib/Tooltip/index.d.ts +0 -5
- package/lib/Tooltip/index.js +0 -29
- package/lib/Tooltip/style.d.ts +0 -3
- package/lib/Tooltip/style.js +0 -18
- package/lib/components/ControlInput.d.ts +0 -9
- package/lib/components/ControlInput.js +0 -90
- package/lib/hooks/useCopied.d.ts +0 -4
- package/lib/hooks/useCopied.js +0 -34
- package/lib/hooks/useHighlight.d.ts +0 -36
- package/lib/hooks/useHighlight.js +0 -71
- package/lib/index.d.ts +0 -27
- package/lib/index.js +0 -213
- package/lib/styles/algorithms/generateColorPalette.d.ts +0 -11
- package/lib/styles/algorithms/generateColorPalette.js +0 -40
- package/lib/styles/algorithms/generateCustomStylish.d.ts +0 -17
- package/lib/styles/algorithms/generateCustomStylish.js +0 -27
- package/lib/styles/algorithms/generateCustomToken.d.ts +0 -3
- package/lib/styles/algorithms/generateCustomToken.js +0 -65
- package/lib/styles/algorithms/generateTheme.d.ts +0 -5
- package/lib/styles/algorithms/generateTheme.js +0 -28
- package/lib/styles/colors.d.ts +0 -38
- package/lib/styles/colors.js +0 -183
- package/lib/styles/index.d.ts +0 -3
- package/lib/styles/index.js +0 -26
- package/lib/styles/theme/base.d.ts +0 -2
- package/lib/styles/theme/base.js +0 -20
- package/lib/styles/theme/dark.d.ts +0 -3
- package/lib/styles/theme/dark.js +0 -50
- package/lib/styles/theme/light.d.ts +0 -3
- package/lib/styles/theme/light.js +0 -50
- package/lib/types/customToken.d.ts +0 -1027
- package/lib/types/global.d.ts +0 -12
- package/lib/types/index.d.ts +0 -6
- package/lib/types/index.js +0 -5
- package/lib/utils/colorUtils.d.ts +0 -1
- package/lib/utils/colorUtils.js +0 -18
package/lib/ContextMenu/index.js
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
-
var _react = require("@floating-ui/react");
|
|
12
|
-
var _react2 = require("react");
|
|
13
|
-
var _antd = require("antd");
|
|
14
|
-
var _MenuItem = _interopRequireDefault(require("./MenuItem"));
|
|
15
|
-
var _style = require("./style");
|
|
16
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
var _excluded = ["items", "label", "container"];
|
|
18
|
-
var MenuComponent = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, forwardedRef) {
|
|
19
|
-
var items = _ref.items,
|
|
20
|
-
label = _ref.label,
|
|
21
|
-
container = _ref.container,
|
|
22
|
-
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
23
|
-
var _useStyles = (0, _style.useStyles)(),
|
|
24
|
-
styles = _useStyles.styles;
|
|
25
|
-
var _useState = (0, _react2.useState)(false),
|
|
26
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
27
|
-
isOpen = _useState2[0],
|
|
28
|
-
setIsOpen = _useState2[1];
|
|
29
|
-
var _useState3 = (0, _react2.useState)(null),
|
|
30
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
31
|
-
activeIndex = _useState4[0],
|
|
32
|
-
setActiveIndex = _useState4[1];
|
|
33
|
-
var _useState5 = (0, _react2.useState)(false),
|
|
34
|
-
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
35
|
-
allowHover = _useState6[0],
|
|
36
|
-
setAllowHover = _useState6[1];
|
|
37
|
-
var listItemsRef = (0, _react2.useRef)([]);
|
|
38
|
-
var listContentRef = (0, _react2.useRef)(items.map(function (item) {
|
|
39
|
-
return item.label;
|
|
40
|
-
}));
|
|
41
|
-
var allowMouseUpCloseRef = (0, _react2.useRef)(false);
|
|
42
|
-
var tree = (0, _react.useFloatingTree)();
|
|
43
|
-
var nodeId = (0, _react.useFloatingNodeId)();
|
|
44
|
-
var parentId = (0, _react.useFloatingParentNodeId)();
|
|
45
|
-
var isNested = parentId !== null;
|
|
46
|
-
var _useFloating = (0, _react.useFloating)({
|
|
47
|
-
nodeId: nodeId,
|
|
48
|
-
open: isOpen,
|
|
49
|
-
onOpenChange: setIsOpen,
|
|
50
|
-
placement: isNested ? 'right-start' : 'bottom-start',
|
|
51
|
-
middleware: [(0, _react.offset)({
|
|
52
|
-
mainAxis: isNested ? 0 : 4,
|
|
53
|
-
alignmentAxis: isNested ? -4 : 0
|
|
54
|
-
}), (0, _react.flip)(), (0, _react.shift)()],
|
|
55
|
-
whileElementsMounted: _react.autoUpdate
|
|
56
|
-
}),
|
|
57
|
-
refs = _useFloating.refs,
|
|
58
|
-
floatingStyles = _useFloating.floatingStyles,
|
|
59
|
-
context = _useFloating.context;
|
|
60
|
-
var hover = (0, _react.useHover)(context, {
|
|
61
|
-
enabled: isNested && allowHover,
|
|
62
|
-
delay: {
|
|
63
|
-
open: 75
|
|
64
|
-
},
|
|
65
|
-
handleClose: (0, _react.safePolygon)({
|
|
66
|
-
blockPointerEvents: true
|
|
67
|
-
})
|
|
68
|
-
});
|
|
69
|
-
var click = (0, _react.useClick)(context, {
|
|
70
|
-
event: 'mousedown',
|
|
71
|
-
toggle: !isNested || !allowHover,
|
|
72
|
-
ignoreMouse: isNested
|
|
73
|
-
});
|
|
74
|
-
var role = (0, _react.useRole)(context, {
|
|
75
|
-
role: 'menu'
|
|
76
|
-
});
|
|
77
|
-
var dismiss = (0, _react.useDismiss)(context);
|
|
78
|
-
var listNavigation = (0, _react.useListNavigation)(context, {
|
|
79
|
-
listRef: listItemsRef,
|
|
80
|
-
activeIndex: activeIndex,
|
|
81
|
-
nested: isNested,
|
|
82
|
-
onNavigate: setActiveIndex
|
|
83
|
-
});
|
|
84
|
-
var typeahead = (0, _react.useTypeahead)(context, {
|
|
85
|
-
enabled: isOpen,
|
|
86
|
-
listRef: listContentRef,
|
|
87
|
-
onMatch: isOpen ? setActiveIndex : undefined,
|
|
88
|
-
activeIndex: activeIndex
|
|
89
|
-
});
|
|
90
|
-
var _useInteractions = (0, _react.useInteractions)([hover, click, role, dismiss, listNavigation, typeahead]),
|
|
91
|
-
getReferenceProps = _useInteractions.getReferenceProps,
|
|
92
|
-
getFloatingProps = _useInteractions.getFloatingProps,
|
|
93
|
-
getItemProps = _useInteractions.getItemProps;
|
|
94
|
-
|
|
95
|
-
// Event emitter allows you to communicate across tree components.
|
|
96
|
-
// This effect closes all menus when an item gets clicked anywhere
|
|
97
|
-
// in the tree.
|
|
98
|
-
(0, _react2.useEffect)(function () {
|
|
99
|
-
if (!tree) return;
|
|
100
|
-
function handleTreeClick() {
|
|
101
|
-
setIsOpen(false);
|
|
102
|
-
}
|
|
103
|
-
function onSubMenuOpen(event) {
|
|
104
|
-
if (event.nodeId !== nodeId && event.parentId === parentId) {
|
|
105
|
-
setIsOpen(false);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
tree.events.on('click', handleTreeClick);
|
|
109
|
-
tree.events.on('menuopen', onSubMenuOpen);
|
|
110
|
-
return function () {
|
|
111
|
-
tree.events.off('click', handleTreeClick);
|
|
112
|
-
tree.events.off('menuopen', onSubMenuOpen);
|
|
113
|
-
};
|
|
114
|
-
}, [tree, nodeId, parentId]);
|
|
115
|
-
(0, _react2.useEffect)(function () {
|
|
116
|
-
if (isOpen && tree) {
|
|
117
|
-
tree.events.emit('menuopen', {
|
|
118
|
-
parentId: parentId,
|
|
119
|
-
nodeId: nodeId
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}, [tree, isOpen, nodeId, parentId]);
|
|
123
|
-
|
|
124
|
-
// Determine if "hover" logic can run based on the modality of input. This
|
|
125
|
-
// prevents unwanted focus synchronization as menus open and close with
|
|
126
|
-
// keyboard navigation and the cursor is resting on the menu.
|
|
127
|
-
(0, _react2.useEffect)(function () {
|
|
128
|
-
function onPointerMove(_ref2) {
|
|
129
|
-
var pointerType = _ref2.pointerType;
|
|
130
|
-
if (pointerType !== 'touch') {
|
|
131
|
-
setAllowHover(true);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
function onKeyDown() {
|
|
135
|
-
setAllowHover(false);
|
|
136
|
-
}
|
|
137
|
-
window.addEventListener('pointermove', onPointerMove, {
|
|
138
|
-
once: true,
|
|
139
|
-
capture: true
|
|
140
|
-
});
|
|
141
|
-
window.addEventListener('keydown', onKeyDown, true);
|
|
142
|
-
return function () {
|
|
143
|
-
window.removeEventListener('pointermove', onPointerMove, {
|
|
144
|
-
capture: true
|
|
145
|
-
});
|
|
146
|
-
window.removeEventListener('keydown', onKeyDown, true);
|
|
147
|
-
};
|
|
148
|
-
}, [allowHover]);
|
|
149
|
-
(0, _react2.useEffect)(function () {
|
|
150
|
-
var timeout;
|
|
151
|
-
function onContextMenu(e) {
|
|
152
|
-
e.preventDefault();
|
|
153
|
-
refs.setPositionReference({
|
|
154
|
-
getBoundingClientRect: function getBoundingClientRect() {
|
|
155
|
-
return {
|
|
156
|
-
width: 0,
|
|
157
|
-
height: 0,
|
|
158
|
-
x: e.clientX,
|
|
159
|
-
y: e.clientY,
|
|
160
|
-
top: e.clientY,
|
|
161
|
-
right: e.clientX,
|
|
162
|
-
bottom: e.clientY,
|
|
163
|
-
left: e.clientX
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
setIsOpen(true);
|
|
168
|
-
clearTimeout(timeout);
|
|
169
|
-
allowMouseUpCloseRef.current = false;
|
|
170
|
-
timeout = window.setTimeout(function () {
|
|
171
|
-
allowMouseUpCloseRef.current = true;
|
|
172
|
-
}, 300);
|
|
173
|
-
}
|
|
174
|
-
function onMouseUp() {
|
|
175
|
-
if (allowMouseUpCloseRef.current) {
|
|
176
|
-
setIsOpen(false);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
document.addEventListener('contextmenu', onContextMenu);
|
|
180
|
-
document.addEventListener('mouseup', onMouseUp);
|
|
181
|
-
return function () {
|
|
182
|
-
document.removeEventListener('contextmenu', onContextMenu);
|
|
183
|
-
document.removeEventListener('mouseup', onMouseUp);
|
|
184
|
-
clearTimeout(timeout);
|
|
185
|
-
};
|
|
186
|
-
}, [refs, container]);
|
|
187
|
-
var renderMenuItem = (0, _react2.useCallback)(function (item, index) {
|
|
188
|
-
// 支持渲染分割线
|
|
189
|
-
if ('type' in item && item.type === 'divider') return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Divider, {
|
|
190
|
-
style: {
|
|
191
|
-
margin: '4px 12px',
|
|
192
|
-
minWidth: 'auto',
|
|
193
|
-
width: 'auto'
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
var data = item;
|
|
197
|
-
var props = (0, _objectSpread2.default)({
|
|
198
|
-
label: data.label,
|
|
199
|
-
key: data.key,
|
|
200
|
-
icon: data.icon,
|
|
201
|
-
shortcut: data.shortcut,
|
|
202
|
-
active: activeIndex === index
|
|
203
|
-
}, getItemProps({
|
|
204
|
-
ref: function ref(node) {
|
|
205
|
-
listItemsRef.current[index] = node;
|
|
206
|
-
},
|
|
207
|
-
onClick: function onClick() {
|
|
208
|
-
var _data$onClick;
|
|
209
|
-
(_data$onClick = data.onClick) === null || _data$onClick === void 0 ? void 0 : _data$onClick.call(data);
|
|
210
|
-
setIsOpen(false);
|
|
211
|
-
},
|
|
212
|
-
onMouseUp: function onMouseUp() {
|
|
213
|
-
var _data$onClick2;
|
|
214
|
-
(_data$onClick2 = data.onClick) === null || _data$onClick2 === void 0 ? void 0 : _data$onClick2.call(data);
|
|
215
|
-
setIsOpen(false);
|
|
216
|
-
}
|
|
217
|
-
}));
|
|
218
|
-
if ('children' in item) {
|
|
219
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MenuComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
|
220
|
-
items: item.children
|
|
221
|
-
}));
|
|
222
|
-
}
|
|
223
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.default, (0, _objectSpread2.default)({}, props));
|
|
224
|
-
}, [activeIndex]);
|
|
225
|
-
var referenceRef = (0, _react.useMergeRefs)([refs.setReference, forwardedRef]);
|
|
226
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.FloatingNode, {
|
|
227
|
-
id: nodeId,
|
|
228
|
-
children: [!label ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
229
|
-
ref: referenceRef,
|
|
230
|
-
nested: isNested,
|
|
231
|
-
label: label
|
|
232
|
-
// Indicates this is a nested <Menu /> acting as a <MenuItem />.
|
|
233
|
-
,
|
|
234
|
-
role: isNested ? 'menuitem' : 'menu'
|
|
235
|
-
}, props), getReferenceProps({
|
|
236
|
-
onClick: function onClick(event) {
|
|
237
|
-
event.stopPropagation();
|
|
238
|
-
}
|
|
239
|
-
}))), /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.FloatingPortal, {
|
|
240
|
-
children: isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.FloatingFocusManager, {
|
|
241
|
-
context: context
|
|
242
|
-
// Prevent outside content interference.
|
|
243
|
-
,
|
|
244
|
-
modal: false
|
|
245
|
-
// Only initially focus the root floating menu.
|
|
246
|
-
,
|
|
247
|
-
initialFocus: isNested ? -1 : 0
|
|
248
|
-
// Only return focus to the root menu's reference when menus close.
|
|
249
|
-
,
|
|
250
|
-
returnFocus: !isNested,
|
|
251
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
252
|
-
ref: refs.setFloating,
|
|
253
|
-
className: styles.container,
|
|
254
|
-
style: floatingStyles
|
|
255
|
-
}, getFloatingProps()), {}, {
|
|
256
|
-
children: items === null || items === void 0 ? void 0 : items.map(renderMenuItem)
|
|
257
|
-
}))
|
|
258
|
-
})
|
|
259
|
-
})]
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
var ContextMenu = /*#__PURE__*/(0, _react2.forwardRef)(function (props, ref) {
|
|
263
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.FloatingTree, {
|
|
264
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(MenuComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
|
265
|
-
ref: ref
|
|
266
|
-
}))
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
var _default = ContextMenu;
|
|
270
|
-
exports.default = _default;
|
package/lib/ContextMenu/style.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.useStyles = void 0;
|
|
8
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
-
var _antdStyle = require("antd-style");
|
|
10
|
-
var _templateObject, _templateObject2;
|
|
11
|
-
var useStyles = (0, _antdStyle.createStyles)(function (_ref, prefixCls) {
|
|
12
|
-
var css = _ref.css,
|
|
13
|
-
cx = _ref.cx,
|
|
14
|
-
token = _ref.token;
|
|
15
|
-
return {
|
|
16
|
-
container: cx(prefixCls, css(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n user-select: none;\n scrollbar-width: none;\n\n overflow-y: auto;\n overscroll-behavior: contain;\n\n box-sizing: border-box;\n width: 200px;\n padding: 5px;\n\n font-size: ", ";\n\n background: ", ";\n border: 1px solid ", ";\n border-radius: 8px;\n outline: 0;\n box-shadow: ", ";\n\n &::-webkit-scrollbar {\n display: none;\n }\n "])), token.fontSize, token.colorBgContainer, token.colorBorder, token.boxShadowSecondary)),
|
|
17
|
-
button: cx("".concat(prefixCls, "-button"), css(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n all: unset;\n\n cursor: default;\n user-select: none;\n\n padding: 12px 10px;\n\n font-size: ", "px;\n line-height: 1;\n color: ", ";\n\n background: ", ";\n border: 1px solid ", ";\n border-radius: ", "px;\n\n -webkit-tap-highlight-color: transparent;\n\n &:hover {\n background: ", ";\n border-color: transparent;\n }\n\n &:focus-visible {\n border-color: ", ";\n box-shadow: 0 0 0 2px ", ";\n }\n "])), token.fontSize, token.colorText, token.colorBgContainer, token.colorBorder, token.borderRadius, token.colorPrimaryBg, token.colorPrimary, token.colorPrimaryBg))
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
exports.useStyles = useStyles;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var _menuItem = require("./menuItem");
|
|
7
|
-
Object.keys(_menuItem).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _menuItem[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function get() {
|
|
13
|
-
return _menuItem[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
interface CommonType {
|
|
3
|
-
key: string;
|
|
4
|
-
label: string;
|
|
5
|
-
onClick?: () => void;
|
|
6
|
-
icon?: ReactNode;
|
|
7
|
-
}
|
|
8
|
-
export interface GeneralItemType extends CommonType {
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
danger?: boolean;
|
|
11
|
-
shortcut?: ('meta' | 'control' | 'shift' | 'alt' | string)[];
|
|
12
|
-
}
|
|
13
|
-
export interface SubMenuType extends CommonType {
|
|
14
|
-
children: MenuItemType[];
|
|
15
|
-
}
|
|
16
|
-
export interface MenuDividerType {
|
|
17
|
-
type: 'divider';
|
|
18
|
-
dashed?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export declare type MenuItemType = GeneralItemType | SubMenuType | MenuDividerType;
|
|
21
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
export interface AppProps {
|
|
3
|
-
/**
|
|
4
|
-
* @title 是否只读
|
|
5
|
-
*/
|
|
6
|
-
readonly?: boolean;
|
|
7
|
-
/**
|
|
8
|
-
* @title 是否包含系统消息
|
|
9
|
-
*/
|
|
10
|
-
includeSystem?: boolean;
|
|
11
|
-
}
|
|
12
|
-
declare const _default: import("react").NamedExoticComponent<AppProps>;
|
|
13
|
-
export default _default;
|
package/lib/Conversation/App.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _antd = require("antd");
|
|
10
|
-
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
|
11
|
-
var _react = require("react");
|
|
12
|
-
var _reactLayoutKit = require("react-layout-kit");
|
|
13
|
-
var _ChatList = _interopRequireDefault(require("./ChatList"));
|
|
14
|
-
var _InputArea = _interopRequireDefault(require("./InputArea"));
|
|
15
|
-
var _store = require("../Chat/store");
|
|
16
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
var ChatContainer = function ChatContainer(_ref) {
|
|
18
|
-
var readonly = _ref.readonly,
|
|
19
|
-
_ref$includeSystem = _ref.includeSystem,
|
|
20
|
-
includeSystem = _ref$includeSystem === void 0 ? true : _ref$includeSystem;
|
|
21
|
-
var _useStore = (0, _store.useStore)(function (s) {
|
|
22
|
-
return [!s.changingSystemRole, s.title, s.description];
|
|
23
|
-
}, _fastDeepEqual.default),
|
|
24
|
-
_useStore2 = (0, _slicedToArray2.default)(_useStore, 3),
|
|
25
|
-
showInput = _useStore2[0],
|
|
26
|
-
title = _useStore2[1],
|
|
27
|
-
description = _useStore2[2];
|
|
28
|
-
if (readonly) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatList.default, {
|
|
29
|
-
readonly: true,
|
|
30
|
-
includeSystem: includeSystem
|
|
31
|
-
});
|
|
32
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactLayoutKit.Flexbox, {
|
|
33
|
-
width: '100%',
|
|
34
|
-
height: '100%',
|
|
35
|
-
gap: 24,
|
|
36
|
-
children: [title || description ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactLayoutKit.Flexbox, {
|
|
37
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Typography.Title, {
|
|
38
|
-
level: 4,
|
|
39
|
-
children: title
|
|
40
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Typography.Text, {
|
|
41
|
-
type: 'secondary',
|
|
42
|
-
children: description
|
|
43
|
-
})]
|
|
44
|
-
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatList.default, {
|
|
45
|
-
includeSystem: includeSystem
|
|
46
|
-
}), showInput ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputArea.default, {}) : null]
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
var _default = /*#__PURE__*/(0, _react.memo)(ChatContainer);
|
|
50
|
-
exports.default = _default;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { ChatMessage } from "../../../Chat/types";
|
|
3
|
-
export interface ContentProps extends Pick<ChatMessage, 'content' | 'role' | 'error'> {
|
|
4
|
-
index: number;
|
|
5
|
-
loading: boolean;
|
|
6
|
-
}
|
|
7
|
-
declare const Content: FC<ContentProps>;
|
|
8
|
-
export default Content;
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _icons = require("@ant-design/icons");
|
|
10
|
-
var _antd = require("antd");
|
|
11
|
-
var _react = require("react");
|
|
12
|
-
var _shallow = require("zustand/shallow");
|
|
13
|
-
var _Markdown = _interopRequireDefault(require("../../../Markdown"));
|
|
14
|
-
var _MessageInput = _interopRequireDefault(require("../../../MessageInput"));
|
|
15
|
-
var _store = require("../../../Chat/store");
|
|
16
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
var Content = /*#__PURE__*/(0, _react.memo)(function (_ref) {
|
|
18
|
-
var content = _ref.content,
|
|
19
|
-
role = _ref.role,
|
|
20
|
-
index = _ref.index,
|
|
21
|
-
error = _ref.error,
|
|
22
|
-
loading = _ref.loading;
|
|
23
|
-
var _useStore = (0, _store.useStore)(function (s) {
|
|
24
|
-
return [s.editingMessageId, s.dispatchMessage, s.handleMessageEditing, s.resendMessage];
|
|
25
|
-
}, _shallow.shallow),
|
|
26
|
-
_useStore2 = (0, _slicedToArray2.default)(_useStore, 4),
|
|
27
|
-
editingMessageId = _useStore2[0],
|
|
28
|
-
dispatchMessage = _useStore2[1],
|
|
29
|
-
handleMessageEditing = _useStore2[2],
|
|
30
|
-
resendMessage = _useStore2[3];
|
|
31
|
-
var isEditing = editingMessageId === index;
|
|
32
|
-
var isUser = role === 'user';
|
|
33
|
-
if (isEditing) {
|
|
34
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MessageInput.default, {
|
|
35
|
-
defaultValue: content,
|
|
36
|
-
renderButtons: function renderButtons(text) {
|
|
37
|
-
return [{
|
|
38
|
-
type: 'primary',
|
|
39
|
-
children: isUser ? '更新并重新生成' : '更新',
|
|
40
|
-
onClick: function onClick() {
|
|
41
|
-
dispatchMessage({
|
|
42
|
-
type: 'updateMessage',
|
|
43
|
-
message: text,
|
|
44
|
-
index: index
|
|
45
|
-
});
|
|
46
|
-
handleMessageEditing(null);
|
|
47
|
-
// 如果是用户的消息,那么重新生成下一条消息
|
|
48
|
-
if (isUser) {
|
|
49
|
-
resendMessage(index + 1);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}, isUser ? {
|
|
53
|
-
children: '仅更新',
|
|
54
|
-
onClick: function onClick() {
|
|
55
|
-
dispatchMessage({
|
|
56
|
-
type: 'updateMessage',
|
|
57
|
-
message: text,
|
|
58
|
-
index: index
|
|
59
|
-
});
|
|
60
|
-
handleMessageEditing(null);
|
|
61
|
-
}
|
|
62
|
-
} : null, {
|
|
63
|
-
type: 'text',
|
|
64
|
-
children: '取消',
|
|
65
|
-
onClick: function onClick() {
|
|
66
|
-
return handleMessageEditing(null);
|
|
67
|
-
}
|
|
68
|
-
}].filter(Boolean);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
73
|
-
children: [!loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Markdown.default, {
|
|
74
|
-
children: content
|
|
75
|
-
}) : !!error ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
76
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.LoadingOutlined, {
|
|
77
|
-
style: {
|
|
78
|
-
fontSize: 20
|
|
79
|
-
},
|
|
80
|
-
spin: true
|
|
81
|
-
})
|
|
82
|
-
}), error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Alert, {
|
|
83
|
-
type: 'error',
|
|
84
|
-
showIcon: true,
|
|
85
|
-
description: error.type === 'openai' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
86
|
-
children: [error.message, " \uFF08\u9519\u8BEF\u7801\uFF1A", /*#__PURE__*/(0, _jsxRuntime.jsx)("code", {
|
|
87
|
-
children: error.status
|
|
88
|
-
}), "\uFF0C\u8BE6\u60C5\u53EF\u67E5\u770B", ' ', /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
89
|
-
target: '_blank',
|
|
90
|
-
href: "https://platform.openai.com/docs/guides/error-codes",
|
|
91
|
-
rel: "noreferrer",
|
|
92
|
-
children: "\u5B98\u65B9\u6587\u6863"
|
|
93
|
-
}), "\uFF09"]
|
|
94
|
-
}) : error.message,
|
|
95
|
-
message: error.type === 'openai' ? "\u8BF7\u6C42 OpenAI \u670D\u52A1\u51FA\u9519" : "\u4F1A\u8BDD\u51FA\u9519\u5566\uFF08\u9519\u8BEF\u7801 ".concat(error.status, "\uFF09"),
|
|
96
|
-
action: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Button, {
|
|
97
|
-
onClick: function onClick() {
|
|
98
|
-
return resendMessage(index);
|
|
99
|
-
},
|
|
100
|
-
children: "\u91CD\u8BD5"
|
|
101
|
-
}),
|
|
102
|
-
style: {
|
|
103
|
-
marginTop: 12
|
|
104
|
-
}
|
|
105
|
-
})]
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
var _default = Content;
|
|
109
|
-
exports.default = _default;
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
-
var _antd = require("antd");
|
|
11
|
-
var _antdStyle = require("antd-style");
|
|
12
|
-
var _lucideReact = require("lucide-react");
|
|
13
|
-
var _polished = require("polished");
|
|
14
|
-
var _react = require("react");
|
|
15
|
-
var _reactLayoutKit = require("react-layout-kit");
|
|
16
|
-
var _shallow = require("zustand/shallow");
|
|
17
|
-
var _ActionIcon = _interopRequireDefault(require("../../../ActionIcon"));
|
|
18
|
-
var _store = require("../../../Chat/store");
|
|
19
|
-
var _CopyButton = _interopRequireDefault(require("../../../CopyButton"));
|
|
20
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
var _templateObject;
|
|
22
|
-
var useStyles = (0, _antdStyle.createStyles)(function (_ref) {
|
|
23
|
-
var css = _ref.css,
|
|
24
|
-
token = _ref.token;
|
|
25
|
-
return {
|
|
26
|
-
container: css(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n background: ", ";\n backdrop-filter: blur(6px);\n border-radius: 4px;\n "])), (0, _polished.rgba)(token.colorBgElevated, 0.2))
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
var Toolbar = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
|
|
30
|
-
var content = _ref2.content,
|
|
31
|
-
isUser = _ref2.isUser,
|
|
32
|
-
index = _ref2.index,
|
|
33
|
-
readonly = _ref2.readonly,
|
|
34
|
-
className = _ref2.className;
|
|
35
|
-
var _useStyles = useStyles(),
|
|
36
|
-
styles = _useStyles.styles,
|
|
37
|
-
cx = _useStyles.cx;
|
|
38
|
-
var _useStore = (0, _store.useStore)(function (s) {
|
|
39
|
-
return [s.dispatchMessage, s.handleMessageEditing, s.resendMessage];
|
|
40
|
-
}, _shallow.shallow),
|
|
41
|
-
_useStore2 = (0, _slicedToArray2.default)(_useStore, 3),
|
|
42
|
-
dispatchMessage = _useStore2[0],
|
|
43
|
-
handleMessageEditing = _useStore2[1],
|
|
44
|
-
resendMessage = _useStore2[2];
|
|
45
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactLayoutKit.Flexbox, {
|
|
46
|
-
gap: 4,
|
|
47
|
-
horizontal: true,
|
|
48
|
-
className: cx(className, styles.container),
|
|
49
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_CopyButton.default, {
|
|
50
|
-
placement: 'top',
|
|
51
|
-
title: '复制',
|
|
52
|
-
content: content
|
|
53
|
-
// icon={CopyIcon}
|
|
54
|
-
,
|
|
55
|
-
size: 'small'
|
|
56
|
-
// onClick={() => {
|
|
57
|
-
// copy(content);
|
|
58
|
-
// }}
|
|
59
|
-
}), readonly ? null : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
60
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionIcon.default, {
|
|
61
|
-
placement: 'top',
|
|
62
|
-
title: isUser ? '重新生成回答' : '重新生成',
|
|
63
|
-
icon: _lucideReact.RotateCwIcon,
|
|
64
|
-
size: 'small',
|
|
65
|
-
onClick: function onClick() {
|
|
66
|
-
resendMessage(isUser ? index + 1 : index);
|
|
67
|
-
}
|
|
68
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionIcon.default, {
|
|
69
|
-
placement: 'top',
|
|
70
|
-
title: '编辑',
|
|
71
|
-
icon: _lucideReact.EditIcon,
|
|
72
|
-
size: 'small',
|
|
73
|
-
onClick: function onClick() {
|
|
74
|
-
return handleMessageEditing(index);
|
|
75
|
-
}
|
|
76
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Popconfirm, {
|
|
77
|
-
title: '确定要删除这条消息吗?',
|
|
78
|
-
okButtonProps: {
|
|
79
|
-
danger: true
|
|
80
|
-
},
|
|
81
|
-
onConfirm: function onConfirm() {
|
|
82
|
-
dispatchMessage({
|
|
83
|
-
type: 'deleteMessage',
|
|
84
|
-
index: index
|
|
85
|
-
});
|
|
86
|
-
},
|
|
87
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionIcon.default
|
|
88
|
-
// type={'danger'}
|
|
89
|
-
, {
|
|
90
|
-
placement: 'top',
|
|
91
|
-
title: '删除',
|
|
92
|
-
icon: _lucideReact.TrashIcon,
|
|
93
|
-
size: 'small'
|
|
94
|
-
})
|
|
95
|
-
})]
|
|
96
|
-
})]
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
var _default = Toolbar;
|
|
100
|
-
exports.default = _default;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { ChatMessage } from "../../../Chat/types";
|
|
3
|
-
export interface MessageItemProps extends ChatMessage {
|
|
4
|
-
index: number;
|
|
5
|
-
readonly?: boolean;
|
|
6
|
-
userAvatarImg?: string;
|
|
7
|
-
}
|
|
8
|
-
declare const MessageItem: FC<MessageItemProps>;
|
|
9
|
-
export default MessageItem;
|