stream-chat-react 12.0.0 → 12.2.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 (28) hide show
  1. package/dist/components/Channel/Channel.d.ts +3 -103
  2. package/dist/components/ChannelList/ChannelList.js +3 -1
  3. package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +2 -3
  4. package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -2
  5. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -2
  6. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -2
  7. package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -2
  8. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -2
  9. package/dist/components/ChannelList/hooks/useMessageNewListener.js +7 -2
  10. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -2
  11. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -2
  12. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -2
  13. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -2
  14. package/dist/components/MessageList/MessageList.js +2 -2
  15. package/dist/components/MessageList/MessageListMainPanel.d.ts +1 -1
  16. package/dist/components/MessageList/MessageListMainPanel.js +1 -1
  17. package/dist/components/MessageList/VirtualizedMessageList.d.ts +2 -2
  18. package/dist/components/MessageList/VirtualizedMessageList.js +4 -3
  19. package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
  20. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +2 -2
  21. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +0 -1
  22. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +21 -17
  23. package/dist/context/ComponentContext.d.ts +50 -1
  24. package/dist/index.browser.cjs +66 -52
  25. package/dist/index.browser.cjs.map +3 -3
  26. package/dist/index.node.cjs +90 -76
  27. package/dist/index.node.cjs.map +3 -3
  28. package/package.json +1 -1
@@ -8278,7 +8278,7 @@ var require_disallow_node = __commonJS({
8278
8278
  var require_ast_to_react = __commonJS({
8279
8279
  "node_modules/mml-react/node_modules/react-markdown/lib/ast-to-react.js"(exports, module2) {
8280
8280
  "use strict";
8281
- var React172 = require("react");
8281
+ var React171 = require("react");
8282
8282
  var xtend = require_immutable();
8283
8283
  var ReactIs2 = require("react-is");
8284
8284
  function astToReact(node2, options) {
@@ -8305,7 +8305,7 @@ var require_ast_to_react = __commonJS({
8305
8305
  throw new Error("Renderer for type `".concat(node2.type, "` not defined or is not renderable"));
8306
8306
  }
8307
8307
  var nodeProps = getNodeProps(node2, key, options, renderer, parent, index3);
8308
- return React172.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
8308
+ return React171.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
8309
8309
  function resolveChildren() {
8310
8310
  return node2.children && node2.children.map(function(childNode, i) {
8311
8311
  return astToReact(childNode, options, {
@@ -8319,7 +8319,7 @@ var require_ast_to_react = __commonJS({
8319
8319
  var props = {
8320
8320
  key
8321
8321
  };
8322
- var isSimpleRenderer = typeof renderer === "string" || renderer === React172.Fragment;
8322
+ var isSimpleRenderer = typeof renderer === "string" || renderer === React171.Fragment;
8323
8323
  if (opts.sourcePos && node2.position) {
8324
8324
  props["data-sourcepos"] = flattenPosition2(node2.position);
8325
8325
  }
@@ -8472,14 +8472,14 @@ var require_ast_to_react = __commonJS({
8472
8472
  function mergeNodeChildren(node2, parsedChildren) {
8473
8473
  var el = node2.element;
8474
8474
  if (Array.isArray(el)) {
8475
- var Fragment2 = React172.Fragment || "div";
8476
- return React172.createElement(Fragment2, null, el);
8475
+ var Fragment2 = React171.Fragment || "div";
8476
+ return React171.createElement(Fragment2, null, el);
8477
8477
  }
8478
8478
  if (el.props.children || parsedChildren) {
8479
- var children = React172.Children.toArray(el.props.children).concat(parsedChildren);
8480
- return React172.cloneElement(el, null, children);
8479
+ var children = React171.Children.toArray(el.props.children).concat(parsedChildren);
8480
+ return React171.cloneElement(el, null, children);
8481
8481
  }
8482
- return React172.cloneElement(el, null);
8482
+ return React171.cloneElement(el, null);
8483
8483
  }
8484
8484
  function flattenPosition2(pos) {
8485
8485
  return [pos.start.line, ":", pos.start.column, "-", pos.end.line, ":", pos.end.column].map(String).join("");
@@ -8603,9 +8603,9 @@ var require_renderers = __commonJS({
8603
8603
  "node_modules/mml-react/node_modules/react-markdown/lib/renderers.js"(exports, module2) {
8604
8604
  "use strict";
8605
8605
  var xtend = require_immutable();
8606
- var React172 = require("react");
8607
- var supportsStringRender = parseInt((React172.version || "16").slice(0, 2), 10) >= 16;
8608
- var createElement = React172.createElement;
8606
+ var React171 = require("react");
8607
+ var supportsStringRender = parseInt((React171.version || "16").slice(0, 2), 10) >= 16;
8608
+ var createElement = React171.createElement;
8609
8609
  module2.exports = {
8610
8610
  break: "br",
8611
8611
  paragraph: "p",
@@ -8641,7 +8641,7 @@ var require_renderers = __commonJS({
8641
8641
  }
8642
8642
  function Root(props) {
8643
8643
  var className = props.className;
8644
- var root2 = !className && React172.Fragment || "div";
8644
+ var root2 = !className && React171.Fragment || "div";
8645
8645
  return createElement(root2, className ? {
8646
8646
  className
8647
8647
  } : null, props.children);
@@ -8697,7 +8697,7 @@ var require_renderers = __commonJS({
8697
8697
  var dangerous = props.allowDangerousHtml || props.escapeHtml === false;
8698
8698
  var tag = props.isBlock ? "div" : "span";
8699
8699
  if (!dangerous) {
8700
- return createElement(React172.Fragment || tag, null, props.value);
8700
+ return createElement(React171.Fragment || tag, null, props.value);
8701
8701
  }
8702
8702
  var nodeProps = {
8703
8703
  dangerouslySetInnerHTML: {
@@ -8707,7 +8707,7 @@ var require_renderers = __commonJS({
8707
8707
  return createElement(tag, nodeProps);
8708
8708
  }
8709
8709
  function ParsedHtml(props) {
8710
- return props["data-sourcepos"] ? React172.cloneElement(props.element, {
8710
+ return props["data-sourcepos"] ? React171.cloneElement(props.element, {
8711
8711
  "data-sourcepos": props["data-sourcepos"]
8712
8712
  }) : props.element;
8713
8713
  }
@@ -43427,7 +43427,7 @@ var import_react162 = require("react");
43427
43427
 
43428
43428
  // src/components/MessageList/MessageListMainPanel.tsx
43429
43429
  var import_react160 = __toESM(require("react"));
43430
- var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner";
43430
+ var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
43431
43431
  var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react160.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
43432
43432
 
43433
43433
  // src/components/MessageList/UnreadMessagesSeparator.tsx
@@ -43465,9 +43465,9 @@ var useUnreadMessagesNotification = ({
43465
43465
  setShow(false);
43466
43466
  return;
43467
43467
  }
43468
- const msgListPanel = document.querySelector(`.${MESSAGE_LIST_MAIN_PANEL_CLASS}`);
43468
+ const [msgListPanel] = document.getElementsByClassName(MESSAGE_LIST_MAIN_PANEL_CLASS);
43469
43469
  if (!msgListPanel) return;
43470
- const observedTarget = document.querySelector(`.${UNREAD_MESSAGE_SEPARATOR_CLASS}`);
43470
+ const [observedTarget] = document.getElementsByClassName(UNREAD_MESSAGE_SEPARATOR_CLASS);
43471
43471
  if (!observedTarget) {
43472
43472
  setShow(true);
43473
43473
  return;
@@ -44153,7 +44153,8 @@ var MessageListWithContext = (props) => {
44153
44153
  MessageListNotifications: MessageListNotifications2 = MessageListNotifications,
44154
44154
  MessageNotification: MessageNotification2 = MessageNotification,
44155
44155
  TypingIndicator: TypingIndicator2 = TypingIndicator,
44156
- UnreadMessagesNotification: UnreadMessagesNotification2 = UnreadMessagesNotification
44156
+ UnreadMessagesNotification: UnreadMessagesNotification2 = UnreadMessagesNotification,
44157
+ MessageListMainPanel: MessageListMainPanel2 = MessageListMainPanel
44157
44158
  } = useComponentContext("MessageList");
44158
44159
  const {
44159
44160
  hasNewMessages,
@@ -44257,7 +44258,7 @@ var MessageListWithContext = (props) => {
44257
44258
  }
44258
44259
  }, [highlightedMessageId]);
44259
44260
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
44260
- return /* @__PURE__ */ import_react176.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react176.default.createElement(MessageListMainPanel, null, /* @__PURE__ */ import_react176.default.createElement(DialogManagerProvider, { id: "message-list-dialog-manager" }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react176.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react176.default.createElement(
44261
+ return /* @__PURE__ */ import_react176.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react176.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react176.default.createElement(DialogManagerProvider, { id: "message-list-dialog-manager" }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react176.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react176.default.createElement(
44261
44262
  "div",
44262
44263
  {
44263
44264
  className: (0, import_clsx38.default)(messageListClass, customClasses?.threadList),
@@ -44535,39 +44536,39 @@ var useMessageSetKey = ({
44535
44536
  };
44536
44537
 
44537
44538
  // src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
44538
- var import_react183 = __toESM(require("react"));
44539
+ var import_react183 = require("react");
44539
44540
  var useScrollToBottomOnNewMessage = ({
44540
44541
  messages,
44541
44542
  scrollToBottom,
44542
44543
  scrollToLatestMessageOnFocus
44543
44544
  }) => {
44544
- const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = import_react183.default.useState(
44545
- false
44546
- );
44547
- const resetNewMessagesReceivedInBackground = (0, import_react183.useCallback)(() => {
44548
- setNewMessagesReceivedInBackground(false);
44549
- }, []);
44545
+ const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react183.useState)(false);
44546
+ const scrollToBottomIfConfigured = (0, import_react183.useRef)();
44547
+ scrollToBottomIfConfigured.current = (event) => {
44548
+ if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
44549
+ return;
44550
+ }
44551
+ setTimeout(scrollToBottom, 100);
44552
+ };
44550
44553
  (0, import_react183.useEffect)(() => {
44551
44554
  setNewMessagesReceivedInBackground(true);
44552
44555
  }, [messages]);
44553
- const scrollToBottomIfConfigured = (0, import_react183.useCallback)(
44554
- (event) => {
44555
- if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window)
44556
- return;
44557
- setTimeout(scrollToBottom, 100);
44558
- },
44559
- [scrollToLatestMessageOnFocus, scrollToBottom, newMessagesReceivedInBackground]
44560
- );
44561
44556
  (0, import_react183.useEffect)(() => {
44557
+ const handleFocus = (event) => {
44558
+ scrollToBottomIfConfigured.current?.(event);
44559
+ };
44560
+ const handleBlur = () => {
44561
+ setNewMessagesReceivedInBackground(false);
44562
+ };
44562
44563
  if (typeof window !== "undefined") {
44563
- window.addEventListener("focus", scrollToBottomIfConfigured);
44564
- window.addEventListener("blur", resetNewMessagesReceivedInBackground);
44564
+ window.addEventListener("focus", handleFocus);
44565
+ window.addEventListener("blur", handleBlur);
44565
44566
  }
44566
44567
  return () => {
44567
- window.removeEventListener("focus", scrollToBottomIfConfigured);
44568
- window.removeEventListener("blur", resetNewMessagesReceivedInBackground);
44568
+ window.removeEventListener("focus", handleFocus);
44569
+ window.removeEventListener("blur", handleBlur);
44569
44570
  };
44570
- }, [scrollToBottomIfConfigured]);
44571
+ }, []);
44571
44572
  };
44572
44573
 
44573
44574
  // src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
@@ -44668,6 +44669,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
44668
44669
  messageGroupStyles,
44669
44670
  MessageSystem,
44670
44671
  numItemsPrepended,
44672
+ openThread,
44671
44673
  ownMessagesReadByOthers,
44672
44674
  processedMessages: messageList,
44673
44675
  reactionDetailsSort,
@@ -44720,6 +44722,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
44720
44722
  message,
44721
44723
  Message: MessageUIComponent,
44722
44724
  messageActions,
44725
+ openThread,
44723
44726
  reactionDetailsSort,
44724
44727
  readBy: ownMessagesReadByOthers[message.id] || [],
44725
44728
  sortReactionDetails,
@@ -44786,6 +44789,7 @@ var VirtualizedMessageListWithContext = (props) => {
44786
44789
  messageLimit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE,
44787
44790
  messages,
44788
44791
  notifications,
44792
+ openThread,
44789
44793
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
44790
44794
  overscan = 0,
44791
44795
  read,
@@ -44814,6 +44818,7 @@ var VirtualizedMessageListWithContext = (props) => {
44814
44818
  MessageListNotifications: MessageListNotifications2 = MessageListNotifications,
44815
44819
  MessageNotification: MessageNotification2 = MessageNotification,
44816
44820
  MessageSystem = EventComponent,
44821
+ MessageListMainPanel: MessageListMainPanel2 = MessageListMainPanel,
44817
44822
  UnreadMessagesNotification: UnreadMessagesNotification2 = UnreadMessagesNotification,
44818
44823
  UnreadMessagesSeparator: UnreadMessagesSeparator2 = UnreadMessagesSeparator,
44819
44824
  VirtualMessage: MessageUIComponentFromContext = MessageSimple,
@@ -44966,7 +44971,7 @@ var VirtualizedMessageListWithContext = (props) => {
44966
44971
  };
44967
44972
  }, [highlightedMessageId, processedMessages]);
44968
44973
  if (!processedMessages) return null;
44969
- return /* @__PURE__ */ import_react186.default.createElement(import_react186.default.Fragment, null, /* @__PURE__ */ import_react186.default.createElement(MessageListMainPanel, null, /* @__PURE__ */ import_react186.default.createElement(DialogManagerProvider, { id: "virtualized-message-list-dialog-manager" }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react186.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react186.default.createElement("div", { className: customClasses?.virtualizedMessageList || "str-chat__virtual-list" }, /* @__PURE__ */ import_react186.default.createElement(
44974
+ return /* @__PURE__ */ import_react186.default.createElement(import_react186.default.Fragment, null, /* @__PURE__ */ import_react186.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react186.default.createElement(DialogManagerProvider, { id: "virtualized-message-list-dialog-manager" }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react186.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react186.default.createElement("div", { className: customClasses?.virtualizedMessageList || "str-chat__virtual-list" }, /* @__PURE__ */ import_react186.default.createElement(
44970
44975
  import_react_virtuoso3.Virtuoso,
44971
44976
  {
44972
44977
  atBottomStateChange,
@@ -45000,6 +45005,7 @@ var VirtualizedMessageListWithContext = (props) => {
45000
45005
  messageGroupStyles,
45001
45006
  MessageSystem,
45002
45007
  numItemsPrepended,
45008
+ openThread,
45003
45009
  ownMessagesReadByOthers,
45004
45010
  processedMessages,
45005
45011
  reactionDetailsSort,
@@ -46190,7 +46196,7 @@ var useChannelDeletedListener = (setChannels, customHandler) => {
46190
46196
  return () => {
46191
46197
  client.off("channel.deleted", handleEvent);
46192
46198
  };
46193
- }, [customHandler]);
46199
+ }, [client, customHandler, setChannels]);
46194
46200
  };
46195
46201
 
46196
46202
  // src/components/ChannelList/hooks/useChannelHiddenListener.ts
@@ -46214,7 +46220,7 @@ var useChannelHiddenListener = (setChannels, customHandler) => {
46214
46220
  return () => {
46215
46221
  client.off("channel.hidden", handleEvent);
46216
46222
  };
46217
- }, [customHandler]);
46223
+ }, [client, customHandler, setChannels]);
46218
46224
  };
46219
46225
 
46220
46226
  // src/components/ChannelList/hooks/useChannelTruncatedListener.ts
@@ -46235,7 +46241,7 @@ var useChannelTruncatedListener = (setChannels, customHandler, forceUpdate) => {
46235
46241
  return () => {
46236
46242
  client.off("channel.truncated", handleEvent);
46237
46243
  };
46238
- }, [customHandler]);
46244
+ }, [client, customHandler, forceUpdate, setChannels]);
46239
46245
  };
46240
46246
 
46241
46247
  // src/components/ChannelList/hooks/useChannelUpdatedListener.ts
@@ -46268,7 +46274,7 @@ var useChannelUpdatedListener = (setChannels, customHandler, forceUpdate) => {
46268
46274
  return () => {
46269
46275
  client.off("channel.updated", handleEvent);
46270
46276
  };
46271
- }, [customHandler]);
46277
+ }, [client, customHandler, forceUpdate, setChannels]);
46272
46278
  };
46273
46279
 
46274
46280
  // src/components/ChannelList/hooks/useChannelVisibleListener.ts
@@ -46293,7 +46299,7 @@ var useChannelVisibleListener = (setChannels, customHandler) => {
46293
46299
  return () => {
46294
46300
  client.off("channel.visible", handleEvent);
46295
46301
  };
46296
- }, [customHandler]);
46302
+ }, [client, customHandler, setChannels]);
46297
46303
  };
46298
46304
 
46299
46305
  // src/components/ChannelList/hooks/useConnectionRecoveredListener.ts
@@ -46310,7 +46316,7 @@ var useConnectionRecoveredListener = (forceUpdate) => {
46310
46316
  return () => {
46311
46317
  client.off("connection.recovered", handleEvent);
46312
46318
  };
46313
- }, []);
46319
+ }, [client, forceUpdate]);
46314
46320
  };
46315
46321
 
46316
46322
  // src/components/ChannelList/hooks/useMessageNewListener.ts
@@ -46354,7 +46360,13 @@ var useMessageNewListener = (setChannels, customHandler, lockChannelOrder = fals
46354
46360
  return () => {
46355
46361
  client.off("message.new", handleEvent);
46356
46362
  };
46357
- }, [lockChannelOrder]);
46363
+ }, [
46364
+ allowNewMessagesFromUnfilteredChannels,
46365
+ client,
46366
+ customHandler,
46367
+ lockChannelOrder,
46368
+ setChannels
46369
+ ]);
46358
46370
  };
46359
46371
 
46360
46372
  // src/components/ChannelList/hooks/useMobileNavigation.ts
@@ -46402,7 +46414,7 @@ var useNotificationAddedToChannelListener = (setChannels, customHandler, allowNe
46402
46414
  return () => {
46403
46415
  client.off("notification.added_to_channel", handleEvent);
46404
46416
  };
46405
- }, [customHandler]);
46417
+ }, [allowNewMessagesFromUnfilteredChannels, client, customHandler, setChannels]);
46406
46418
  };
46407
46419
 
46408
46420
  // src/components/ChannelList/hooks/useNotificationMessageNewListener.ts
@@ -46427,7 +46439,7 @@ var useNotificationMessageNewListener = (setChannels, customHandler, allowNewMes
46427
46439
  return () => {
46428
46440
  client.off("notification.message_new", handleEvent);
46429
46441
  };
46430
- }, [customHandler]);
46442
+ }, [allowNewMessagesFromUnfilteredChannels, client, customHandler, setChannels]);
46431
46443
  };
46432
46444
 
46433
46445
  // src/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.ts
@@ -46448,7 +46460,7 @@ var useNotificationRemovedFromChannelListener = (setChannels, customHandler) =>
46448
46460
  return () => {
46449
46461
  client.off("notification.removed_from_channel", handleEvent);
46450
46462
  };
46451
- }, [customHandler]);
46463
+ }, [client, customHandler, setChannels]);
46452
46464
  };
46453
46465
 
46454
46466
  // src/components/ChannelList/hooks/usePaginatedChannels.ts
@@ -46555,7 +46567,7 @@ var useUserPresenceChangedListener = (setChannels) => {
46555
46567
  return () => {
46556
46568
  client.off("user.presence.changed", handleEvent);
46557
46569
  };
46558
- }, []);
46570
+ }, [client, setChannels]);
46559
46571
  };
46560
46572
 
46561
46573
  // src/components/ChannelSearch/ChannelSearch.tsx
@@ -47322,7 +47334,9 @@ var UnMemoizedChannelList = (props) => {
47322
47334
  setActiveChannel(channels2[0], watchers);
47323
47335
  }
47324
47336
  };
47325
- const forceUpdate = () => setChannelUpdateCount((count) => count + 1);
47337
+ const forceUpdate = (0, import_react212.useCallback)(() => setChannelUpdateCount((count) => count + 1), [
47338
+ setChannelUpdateCount
47339
+ ]);
47326
47340
  const onSearch = (0, import_react212.useCallback)((event) => {
47327
47341
  if (!event.target.value) {
47328
47342
  setSearchActive(false);