stream-chat-react 11.19.0 → 11.21.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.
Files changed (76) hide show
  1. package/dist/{Window-8c5139ab.js → Window-6c9f7581.js} +176 -119
  2. package/dist/browser.full-bundle.js +175 -115
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +4 -4
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Channel/Channel.d.ts.map +1 -1
  7. package/dist/components/Channel/Channel.js +14 -12
  8. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
  9. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
  10. package/dist/components/DateSeparator/DateSeparator.d.ts +2 -1
  11. package/dist/components/DateSeparator/DateSeparator.d.ts.map +1 -1
  12. package/dist/components/DateSeparator/DateSeparator.js +4 -8
  13. package/dist/components/Emojis/index.cjs.js +13 -13
  14. package/dist/components/EventComponent/EventComponent.d.ts +2 -1
  15. package/dist/components/EventComponent/EventComponent.d.ts.map +1 -1
  16. package/dist/components/EventComponent/EventComponent.js +4 -8
  17. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  18. package/dist/components/Gallery/Gallery.js +1 -1
  19. package/dist/components/Gallery/Image.js +1 -1
  20. package/dist/components/Message/MessageSimple.js +1 -1
  21. package/dist/components/Message/MessageStatus.d.ts +3 -0
  22. package/dist/components/Message/MessageStatus.d.ts.map +1 -1
  23. package/dist/components/Message/MessageStatus.js +21 -18
  24. package/dist/components/Message/MessageTimestamp.d.ts +2 -3
  25. package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
  26. package/dist/components/Message/Timestamp.d.ts +2 -3
  27. package/dist/components/Message/Timestamp.d.ts.map +1 -1
  28. package/dist/components/Message/Timestamp.js +6 -3
  29. package/dist/components/Message/utils.d.ts.map +1 -1
  30. package/dist/components/Message/utils.js +7 -4
  31. package/dist/components/MessageBounce/MessageBounceModal.js +1 -1
  32. package/dist/components/MessageInput/MessageInput.d.ts +2 -0
  33. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  34. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  35. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
  36. package/dist/components/MessageList/VirtualizedMessageList.d.ts +2 -2
  37. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  38. package/dist/components/MessageList/VirtualizedMessageList.js +2 -1
  39. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  40. package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
  41. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +1 -1
  42. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  43. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +5 -3
  44. package/dist/components/MessageList/renderMessages.js +1 -1
  45. package/dist/components/Modal/Modal.d.ts +3 -1
  46. package/dist/components/Modal/Modal.d.ts.map +1 -1
  47. package/dist/components/Modal/Modal.js +3 -2
  48. package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -1
  49. package/dist/components/Reactions/ReactionsListModal.js +1 -1
  50. package/dist/constants/limits.d.ts +1 -0
  51. package/dist/constants/limits.d.ts.map +1 -1
  52. package/dist/constants/limits.js +1 -0
  53. package/dist/i18n/Streami18n.d.ts +7 -0
  54. package/dist/i18n/Streami18n.d.ts.map +1 -1
  55. package/dist/i18n/Streami18n.js +16 -3
  56. package/dist/i18n/de.json +3 -0
  57. package/dist/i18n/en.json +3 -0
  58. package/dist/i18n/es.json +3 -0
  59. package/dist/i18n/fr.json +3 -0
  60. package/dist/i18n/hi.json +3 -0
  61. package/dist/i18n/index.d.ts +1 -0
  62. package/dist/i18n/index.d.ts.map +1 -1
  63. package/dist/i18n/it.json +3 -0
  64. package/dist/i18n/ja.json +3 -0
  65. package/dist/i18n/ko.json +3 -0
  66. package/dist/i18n/nl.json +3 -0
  67. package/dist/i18n/pt.json +3 -0
  68. package/dist/i18n/ru.json +3 -0
  69. package/dist/i18n/tr.json +3 -0
  70. package/dist/i18n/utils.d.ts +18 -5
  71. package/dist/i18n/utils.d.ts.map +1 -1
  72. package/dist/i18n/utils.js +43 -2
  73. package/dist/index.cjs.js +20 -17
  74. package/dist/version.d.ts +1 -1
  75. package/dist/version.js +1 -1
  76. package/package.json +3 -3
@@ -1,8 +1,9 @@
1
+ import { __assign, __rest } from "tslib";
1
2
  import { isDate, isDayOrMoment, isNumberOrString, } from '../context';
2
3
  export var notValidDateWarning = 'MessageTimestamp was called without a message, or message has invalid created_at date.';
3
4
  export var noParsingFunctionWarning = 'MessageTimestamp was called but there is no datetime parsing function available';
4
5
  export function getDateString(_a) {
5
- var calendar = _a.calendar, format = _a.format, formatDate = _a.formatDate, messageCreatedAt = _a.messageCreatedAt, tDateTimeParser = _a.tDateTimeParser;
6
+ var calendar = _a.calendar, calendarFormats = _a.calendarFormats, format = _a.format, formatDate = _a.formatDate, messageCreatedAt = _a.messageCreatedAt, t = _a.t, tDateTimeParser = _a.tDateTimeParser, timestampTranslationKey = _a.timestampTranslationKey;
6
7
  if (!messageCreatedAt ||
7
8
  (typeof messageCreatedAt === 'string' && !Date.parse(messageCreatedAt))) {
8
9
  console.warn(notValidDateWarning);
@@ -11,6 +12,19 @@ export function getDateString(_a) {
11
12
  if (typeof formatDate === 'function') {
12
13
  return formatDate(new Date(messageCreatedAt));
13
14
  }
15
+ if (t && timestampTranslationKey) {
16
+ var options = {};
17
+ if (typeof calendar !== 'undefined' && calendar !== null)
18
+ options.calendar = calendar;
19
+ if (typeof calendarFormats !== 'undefined' && calendarFormats !== null)
20
+ options.calendarFormats = calendarFormats;
21
+ if (typeof format !== 'undefined' && format !== null)
22
+ options.format = format;
23
+ var translatedTimestamp = t(timestampTranslationKey, __assign(__assign({}, options), { timestamp: new Date(messageCreatedAt) }));
24
+ var translationKeyFound = timestampTranslationKey !== translatedTimestamp;
25
+ if (translationKeyFound)
26
+ return translatedTimestamp;
27
+ }
14
28
  if (!tDateTimeParser) {
15
29
  console.warn(noParsingFunctionWarning);
16
30
  return null;
@@ -21,7 +35,9 @@ export function getDateString(_a) {
21
35
  * parsedTime.calendar is guaranteed on the type but is only
22
36
  * available when a user calls dayjs.extend(calendar)
23
37
  */
24
- return calendar && parsedTime.calendar ? parsedTime.calendar() : parsedTime.format(format);
38
+ return calendar && parsedTime.calendar
39
+ ? parsedTime.calendar(undefined, calendarFormats || undefined)
40
+ : parsedTime.format(format || undefined);
25
41
  }
26
42
  if (isDate(parsedTime)) {
27
43
  return parsedTime.toDateString();
@@ -31,3 +47,28 @@ export function getDateString(_a) {
31
47
  }
32
48
  return null;
33
49
  }
50
+ export var predefinedFormatters = {
51
+ timestampFormatter: function (streamI18n) { return function (value, _, _a) {
52
+ var calendarFormats = _a.calendarFormats, options = __rest(_a, ["calendarFormats"]);
53
+ var parsedCalendarFormats;
54
+ try {
55
+ if (!options.calendar) {
56
+ parsedCalendarFormats = {};
57
+ }
58
+ else if (typeof calendarFormats === 'string') {
59
+ parsedCalendarFormats = JSON.parse(calendarFormats);
60
+ }
61
+ else if (typeof calendarFormats === 'object') {
62
+ parsedCalendarFormats = calendarFormats;
63
+ }
64
+ }
65
+ catch (e) {
66
+ console.error('[TIMESTAMP FORMATTER]', e);
67
+ }
68
+ var result = getDateString(__assign(__assign({}, options), { calendarFormats: parsedCalendarFormats, messageCreatedAt: value, tDateTimeParser: streamI18n.tDateTimeParser }));
69
+ if (!result || typeof result === 'number') {
70
+ return JSON.stringify(value);
71
+ }
72
+ return result;
73
+ }; },
74
+ };
package/dist/index.cjs.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Window = require('./Window-8c5139ab.js');
5
+ var Window = require('./Window-6c9f7581.js');
6
6
  var React = require('react');
7
7
  var streamChat = require('stream-chat');
8
8
  var throttle = require('lodash.throttle');
@@ -25,6 +25,14 @@ require('dayjs/plugin/localeData');
25
25
  require('dayjs/plugin/relativeTime');
26
26
  require('dayjs/plugin/utc');
27
27
  require('dayjs/plugin/timezone');
28
+ require('prop-types');
29
+ require('@babel/runtime/helpers/extends');
30
+ require('@babel/runtime/helpers/defineProperty');
31
+ require('react-textarea-autosize');
32
+ require('textarea-caret');
33
+ require('react-is');
34
+ require('crypto');
35
+ require('react/jsx-runtime');
28
36
  require('dayjs/locale/de');
29
37
  require('dayjs/locale/es');
30
38
  require('dayjs/locale/fr');
@@ -37,14 +45,6 @@ require('dayjs/locale/pt');
37
45
  require('dayjs/locale/ru');
38
46
  require('dayjs/locale/tr');
39
47
  require('dayjs/locale/en');
40
- require('prop-types');
41
- require('@babel/runtime/helpers/extends');
42
- require('@babel/runtime/helpers/defineProperty');
43
- require('react-textarea-autosize');
44
- require('textarea-caret');
45
- require('react-is');
46
- require('crypto');
47
- require('react/jsx-runtime');
48
48
 
49
49
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
50
50
 
@@ -612,7 +612,7 @@ function defaultRenderMessages(_a) {
612
612
  React__default["default"].createElement(HeaderComponent, null)));
613
613
  }
614
614
  else if (message.type === 'system') {
615
- renderedMessages.push(React__default["default"].createElement("li", { key: message.id || message.created_at },
615
+ renderedMessages.push(React__default["default"].createElement("li", { "data-message-id": message.id, key: message.id || message.created_at },
616
616
  React__default["default"].createElement(MessageSystem, { message: message })));
617
617
  }
618
618
  else {
@@ -929,9 +929,11 @@ var useGiphyPreview = function (separateGiphyPreview) {
929
929
  if (separateGiphyPreview)
930
930
  client.on('message.new', handleEvent);
931
931
  return function () { return client.off('message.new', handleEvent); };
932
- // eslint-disable-next-line react-hooks/exhaustive-deps
933
- }, [separateGiphyPreview]);
934
- return { giphyPreviewMessage: giphyPreviewMessage, setGiphyPreviewMessage: setGiphyPreviewMessage };
932
+ }, [client, separateGiphyPreview]);
933
+ return {
934
+ giphyPreviewMessage: giphyPreviewMessage,
935
+ setGiphyPreviewMessage: separateGiphyPreview ? setGiphyPreviewMessage : undefined,
936
+ };
935
937
  };
936
938
 
937
939
  var useMessageSetKey = function (_a) {
@@ -1073,7 +1075,7 @@ var Footer = function () {
1073
1075
  };
1074
1076
  var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
1075
1077
  var _a, _b, _c, _d, _e, _f, _g;
1076
- var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadDate = virtuosoContext.lastReadDate, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, reactionDetailsSort = virtuosoContext.reactionDetailsSort, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
1078
+ var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, formatDate = virtuosoContext.formatDate, lastReadDate = virtuosoContext.lastReadDate, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, reactionDetailsSort = virtuosoContext.reactionDetailsSort, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
1077
1079
  var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
1078
1080
  if (customMessageRenderer) {
1079
1081
  return customMessageRenderer(messageList, streamMessageIndex);
@@ -1114,7 +1116,7 @@ var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
1114
1116
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
1115
1117
  showUnreadSeparatorAbove && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
1116
1118
  React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount }))),
1117
- React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, reactionDetailsSort: reactionDetailsSort, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
1119
+ React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, formatDate: formatDate, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, reactionDetailsSort: reactionDetailsSort, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
1118
1120
  showUnreadSeparatorBelow && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
1119
1121
  React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
1120
1122
  };
@@ -1150,7 +1152,7 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
1150
1152
  }
1151
1153
  var VirtualizedMessageListWithContext = function (props) {
1152
1154
  var _a, _b;
1153
- var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _g, messages = props.messages, notifications = props.notifications,
1155
+ var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, formatDate = props.formatDate, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _g, messages = props.messages, notifications = props.notifications,
1154
1156
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
1155
1157
  _h = props.overscan,
1156
1158
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
@@ -1316,6 +1318,7 @@ var VirtualizedMessageListWithContext = function (props) {
1316
1318
  customMessageRenderer: customMessageRenderer,
1317
1319
  DateSeparator: DateSeparator,
1318
1320
  firstUnreadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id,
1321
+ formatDate: formatDate,
1319
1322
  head: head,
1320
1323
  lastReadDate: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read,
1321
1324
  lastReadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id,
@@ -1351,7 +1354,7 @@ function VirtualizedMessageList(props) {
1351
1354
  return (React__default["default"].createElement(VirtualizedMessageListWithContext, Window.__assign({ channel: channel, channelUnreadUiState: channelUnreadUiState, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, read: read, suppressAutoscroll: suppressAutoscroll }, props)));
1352
1355
  }
1353
1356
 
1354
- var version = '11.19.0';
1357
+ var version = '11.21.0';
1355
1358
 
1356
1359
  var useChat = function (_a) {
1357
1360
  var _b, _c;
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "11.19.0";
1
+ export declare const version = "11.21.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export var version = '11.19.0';
1
+ export var version = '11.21.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stream-chat-react",
3
- "version": "11.19.0",
3
+ "version": "11.21.0",
4
4
  "description": "React components to create chat conversations or livestream style chat",
5
5
  "author": "GetStream",
6
6
  "homepage": "https://getstream.io/chat/",
@@ -104,7 +104,7 @@
104
104
  "emoji-mart": "^5.4.0",
105
105
  "react": "^18.0.0 || ^17.0.0 || ^16.8.0",
106
106
  "react-dom": "^18.0.0 || ^17.0.0 || ^16.8.0",
107
- "stream-chat": "^8.30.0"
107
+ "stream-chat": "^8.33.1"
108
108
  },
109
109
  "peerDependenciesMeta": {
110
110
  "emoji-mart": {
@@ -226,7 +226,7 @@
226
226
  "rollup-plugin-url": "^3.0.1",
227
227
  "rollup-plugin-visualizer": "^4.2.0",
228
228
  "semantic-release": "^19.0.5",
229
- "stream-chat": "^8.30.0",
229
+ "stream-chat": "^8.33.1",
230
230
  "style-loader": "^2.0.0",
231
231
  "ts-jest": "^28.0.8",
232
232
  "typescript": "^4.7.4",