stream-chat-react 12.1.0 → 12.2.1

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 (27) hide show
  1. package/dist/components/ChannelList/ChannelList.d.ts +3 -0
  2. package/dist/components/ChannelList/ChannelList.js +5 -2
  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/ChannelPreview/ChannelPreview.d.ts +6 -1
  15. package/dist/components/ChannelPreview/ChannelPreview.js +11 -9
  16. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +2 -2
  17. package/dist/components/ChannelPreview/utils.js +2 -3
  18. package/dist/components/MessageList/VirtualizedMessageList.d.ts +2 -2
  19. package/dist/components/MessageList/VirtualizedMessageList.js +2 -1
  20. package/dist/components/MessageList/VirtualizedMessageListComponents.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/index.browser.cjs +80 -57
  24. package/dist/index.browser.cjs.map +3 -3
  25. package/dist/index.node.cjs +104 -81
  26. package/dist/index.node.cjs.map +3 -3
  27. package/package.json +1 -1
@@ -10274,7 +10274,7 @@ var require_disallow_node = __commonJS({
10274
10274
  var require_ast_to_react = __commonJS({
10275
10275
  "node_modules/mml-react/node_modules/react-markdown/lib/ast-to-react.js"(exports2, module2) {
10276
10276
  "use strict";
10277
- var React171 = require("react");
10277
+ var React170 = require("react");
10278
10278
  var xtend = require_immutable();
10279
10279
  var ReactIs2 = require("react-is");
10280
10280
  function astToReact(node2, options) {
@@ -10301,7 +10301,7 @@ var require_ast_to_react = __commonJS({
10301
10301
  throw new Error("Renderer for type `".concat(node2.type, "` not defined or is not renderable"));
10302
10302
  }
10303
10303
  var nodeProps = getNodeProps(node2, key, options, renderer, parent, index3);
10304
- return React171.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
10304
+ return React170.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
10305
10305
  function resolveChildren() {
10306
10306
  return node2.children && node2.children.map(function(childNode, i) {
10307
10307
  return astToReact(childNode, options, {
@@ -10315,7 +10315,7 @@ var require_ast_to_react = __commonJS({
10315
10315
  var props = {
10316
10316
  key
10317
10317
  };
10318
- var isSimpleRenderer = typeof renderer === "string" || renderer === React171.Fragment;
10318
+ var isSimpleRenderer = typeof renderer === "string" || renderer === React170.Fragment;
10319
10319
  if (opts.sourcePos && node2.position) {
10320
10320
  props["data-sourcepos"] = flattenPosition2(node2.position);
10321
10321
  }
@@ -10468,14 +10468,14 @@ var require_ast_to_react = __commonJS({
10468
10468
  function mergeNodeChildren(node2, parsedChildren) {
10469
10469
  var el = node2.element;
10470
10470
  if (Array.isArray(el)) {
10471
- var Fragment2 = React171.Fragment || "div";
10472
- return React171.createElement(Fragment2, null, el);
10471
+ var Fragment2 = React170.Fragment || "div";
10472
+ return React170.createElement(Fragment2, null, el);
10473
10473
  }
10474
10474
  if (el.props.children || parsedChildren) {
10475
- var children = React171.Children.toArray(el.props.children).concat(parsedChildren);
10476
- return React171.cloneElement(el, null, children);
10475
+ var children = React170.Children.toArray(el.props.children).concat(parsedChildren);
10476
+ return React170.cloneElement(el, null, children);
10477
10477
  }
10478
- return React171.cloneElement(el, null);
10478
+ return React170.cloneElement(el, null);
10479
10479
  }
10480
10480
  function flattenPosition2(pos) {
10481
10481
  return [pos.start.line, ":", pos.start.column, "-", pos.end.line, ":", pos.end.column].map(String).join("");
@@ -10599,9 +10599,9 @@ var require_renderers = __commonJS({
10599
10599
  "node_modules/mml-react/node_modules/react-markdown/lib/renderers.js"(exports2, module2) {
10600
10600
  "use strict";
10601
10601
  var xtend = require_immutable();
10602
- var React171 = require("react");
10603
- var supportsStringRender = parseInt((React171.version || "16").slice(0, 2), 10) >= 16;
10604
- var createElement = React171.createElement;
10602
+ var React170 = require("react");
10603
+ var supportsStringRender = parseInt((React170.version || "16").slice(0, 2), 10) >= 16;
10604
+ var createElement = React170.createElement;
10605
10605
  module2.exports = {
10606
10606
  break: "br",
10607
10607
  paragraph: "p",
@@ -10637,7 +10637,7 @@ var require_renderers = __commonJS({
10637
10637
  }
10638
10638
  function Root(props) {
10639
10639
  var className = props.className;
10640
- var root2 = !className && React171.Fragment || "div";
10640
+ var root2 = !className && React170.Fragment || "div";
10641
10641
  return createElement(root2, className ? {
10642
10642
  className
10643
10643
  } : null, props.children);
@@ -10693,7 +10693,7 @@ var require_renderers = __commonJS({
10693
10693
  var dangerous = props.allowDangerousHtml || props.escapeHtml === false;
10694
10694
  var tag = props.isBlock ? "div" : "span";
10695
10695
  if (!dangerous) {
10696
- return createElement(React171.Fragment || tag, null, props.value);
10696
+ return createElement(React170.Fragment || tag, null, props.value);
10697
10697
  }
10698
10698
  var nodeProps = {
10699
10699
  dangerouslySetInnerHTML: {
@@ -10703,7 +10703,7 @@ var require_renderers = __commonJS({
10703
10703
  return createElement(tag, nodeProps);
10704
10704
  }
10705
10705
  function ParsedHtml(props) {
10706
- return props["data-sourcepos"] ? React171.cloneElement(props.element, {
10706
+ return props["data-sourcepos"] ? React170.cloneElement(props.element, {
10707
10707
  "data-sourcepos": props["data-sourcepos"]
10708
10708
  }) : props.element;
10709
10709
  }
@@ -18555,8 +18555,8 @@ var require_mml_react_cjs_development = __commonJS({
18555
18555
  function _interopDefault(ex) {
18556
18556
  return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex;
18557
18557
  }
18558
- var React171 = require("react");
18559
- var React__default = _interopDefault(React171);
18558
+ var React170 = require("react");
18559
+ var React__default = _interopDefault(React170);
18560
18560
  var parseXml = _interopDefault(require_src());
18561
18561
  var dayjs = _interopDefault(require("dayjs"));
18562
18562
  var sanitizeUrl4 = require("@braintree/sanitize-url");
@@ -19341,8 +19341,8 @@ var require_mml_react_cjs_development = __commonJS({
19341
19341
  className: "mml-carousel__track"
19342
19342
  }, React__default.createElement("div", {
19343
19343
  className: "mml-carousel__slides"
19344
- }, React171.Children.map(children, function(child) {
19345
- return React171.cloneElement(child, {
19344
+ }, React170.Children.map(children, function(child) {
19345
+ return React170.cloneElement(child, {
19346
19346
  className: "mml-carousel__slide",
19347
19347
  slideWidth
19348
19348
  });
@@ -19386,7 +19386,7 @@ var require_mml_react_cjs_development = __commonJS({
19386
19386
  };
19387
19387
  var Input = function Input2(_ref) {
19388
19388
  var name = _ref.name, label = _ref.label, _ref$value = _ref.value, value = _ref$value === void 0 ? "" : _ref$value, _ref$type = _ref.type, type = _ref$type === void 0 ? "text" : _ref$type, _ref$placeholder = _ref.placeholder, placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder;
19389
- var _useState = React171.useState(value), state = _useState[0], setState = _useState[1];
19389
+ var _useState = React170.useState(value), state = _useState[0], setState = _useState[1];
19390
19390
  var id = "mml-" + name;
19391
19391
  return React__default.createElement(React__default.Fragment, null, label && React__default.createElement("label", {
19392
19392
  className: "mml-card-header",
@@ -19516,7 +19516,7 @@ var require_mml_react_cjs_development = __commonJS({
19516
19516
  };
19517
19517
  var Number2 = function Number3(_ref) {
19518
19518
  var name = _ref.name, value = _ref.value;
19519
- var _useState = React171.useState(parseInt("" + value, 10) || 0), state = _useState[0], setState = _useState[1];
19519
+ var _useState = React170.useState(parseInt("" + value, 10) || 0), state = _useState[0], setState = _useState[1];
19520
19520
  return React__default.createElement("div", {
19521
19521
  className: "mml-number"
19522
19522
  }, React__default.createElement("input", {
@@ -19553,7 +19553,7 @@ var require_mml_react_cjs_development = __commonJS({
19553
19553
  var VIRTUOSO_START_INDEX = 1e4;
19554
19554
  var DatePickerSelect = function DatePickerSelect2(props) {
19555
19555
  var onChange = props.onChange, icalFilter = props.icalFilter, getItemData2 = props.getItemData, itemClassName = props.itemClassName, interval = props.interval, format = props.format, value = props.value;
19556
- var generateItems = React171.useCallback(function(quantity, firstIdx) {
19556
+ var generateItems = React170.useCallback(function(quantity, firstIdx) {
19557
19557
  return Array(quantity).fill(true).map(function(_, idx) {
19558
19558
  return getItemData2({
19559
19559
  interval,
@@ -19565,11 +19565,11 @@ var require_mml_react_cjs_development = __commonJS({
19565
19565
  return !icalFilter || icalFilter && icalFilter(newItem.value);
19566
19566
  });
19567
19567
  }, [interval, format, value, icalFilter, getItemData2]);
19568
- var _useState = React171.useState(generateItems(ITEMS_PER_PAGE * 2, -ITEMS_PER_PAGE)), items = _useState[0], setItems = _useState[1];
19569
- var _useState2 = React171.useState(VIRTUOSO_START_INDEX), firstItemIndex = _useState2[0], setFirstItemIndex = _useState2[1];
19570
- var initialIndexOffset = React171.useRef(INITIAL_INDEX);
19571
- var _useState3 = React171.useState(null), selectedIdx = _useState3[0], setSelectedIdx = _useState3[1];
19572
- var handleClick = React171.useCallback(function(item) {
19568
+ var _useState = React170.useState(generateItems(ITEMS_PER_PAGE * 2, -ITEMS_PER_PAGE)), items = _useState[0], setItems = _useState[1];
19569
+ var _useState2 = React170.useState(VIRTUOSO_START_INDEX), firstItemIndex = _useState2[0], setFirstItemIndex = _useState2[1];
19570
+ var initialIndexOffset = React170.useRef(INITIAL_INDEX);
19571
+ var _useState3 = React170.useState(null), selectedIdx = _useState3[0], setSelectedIdx = _useState3[1];
19572
+ var handleClick = React170.useCallback(function(item) {
19573
19573
  onChange(item.value);
19574
19574
  var firstItemIndex2 = initialIndexOffset.current || 0;
19575
19575
  var nextFirstItemIdx = firstItemIndex2 - INITIAL_INDEX - ITEMS_PER_PAGE;
@@ -19583,12 +19583,12 @@ var require_mml_react_cjs_development = __commonJS({
19583
19583
  }
19584
19584
  setSelectedIdx(item.idx);
19585
19585
  }, [setItems, generateItems, initialIndexOffset, onChange]);
19586
- var appendItems = React171.useCallback(function(lastItemIndex) {
19586
+ var appendItems = React170.useCallback(function(lastItemIndex) {
19587
19587
  setItems(function(items2) {
19588
19588
  return [].concat(items2, generateItems(ITEMS_PER_PAGE, lastItemIndex));
19589
19589
  });
19590
19590
  }, [setItems, generateItems]);
19591
- var prependItems = React171.useCallback(function() {
19591
+ var prependItems = React170.useCallback(function() {
19592
19592
  var firstItemIndex2 = initialIndexOffset.current || 0;
19593
19593
  var nextFirstItemIdx = firstItemIndex2 - INITIAL_INDEX - ITEMS_PER_PAGE;
19594
19594
  if (initialIndexOffset) {
@@ -19600,7 +19600,7 @@ var require_mml_react_cjs_development = __commonJS({
19600
19600
  setFirstItemIndex(firstItemIndex2 - ITEMS_PER_PAGE);
19601
19601
  return false;
19602
19602
  }, [setItems, generateItems, initialIndexOffset]);
19603
- React171.useEffect(function() {
19603
+ React170.useEffect(function() {
19604
19604
  if (value) {
19605
19605
  var initialSelectedIdx = null;
19606
19606
  for (var i = 0; i < items.length; i++) {
@@ -19670,7 +19670,7 @@ var require_mml_react_cjs_development = __commonJS({
19670
19670
  };
19671
19671
  var DatePicker = function DatePicker2(_ref) {
19672
19672
  var name = _ref.name, selected = _ref.selected, dateInterval = _ref.dateInterval, timeInterval = _ref.timeInterval, dateFormat = _ref.dateFormat, timeFormat = _ref.timeFormat, fullDay = _ref.fullDay, icalFilter = _ref.icalFilter;
19673
- var _useState = React171.useState(selected), date = _useState[0], setDate = _useState[1];
19673
+ var _useState = React170.useState(selected), date = _useState[0], setDate = _useState[1];
19674
19674
  var handleChangeDate = function handleChangeDate2(value) {
19675
19675
  setDate(function(prevDate) {
19676
19676
  return prevDate.set("date", value.get("date")).set("month", value.get("month")).set("year", value.get("year"));
@@ -19750,14 +19750,14 @@ var require_mml_react_cjs_development = __commonJS({
19750
19750
  }();
19751
19751
  var Scheduler = function Scheduler2(_ref2) {
19752
19752
  var name = _ref2.name, selected = _ref2.selected, icalAvailability = _ref2.icalAvailability, _ref2$duration = _ref2.duration, duration = _ref2$duration === void 0 ? 30 : _ref2$duration, _ref2$dateInterval = _ref2.dateInterval, dateInterval = _ref2$dateInterval === void 0 ? 1 : _ref2$dateInterval, _ref2$timeInterval = _ref2.timeInterval, timeInterval = _ref2$timeInterval === void 0 ? 30 : _ref2$timeInterval, _ref2$dateFormat = _ref2.dateFormat, dateFormat = _ref2$dateFormat === void 0 ? "ddd MMM DD" : _ref2$dateFormat, _ref2$timeFormat = _ref2.timeFormat, timeFormat = _ref2$timeFormat === void 0 ? "hh:mm A" : _ref2$timeFormat, _ref2$fullDay = _ref2.fullDay, fullDay = _ref2$fullDay === void 0 ? false : _ref2$fullDay;
19753
- var _useState = React171.useState(false), loading = _useState[0], setLoading = _useState[1];
19754
- var _useState2 = React171.useState(""), error = _useState2[0], setError = _useState2[1];
19755
- var _useState3 = React171.useState(function() {
19753
+ var _useState = React170.useState(false), loading = _useState[0], setLoading = _useState[1];
19754
+ var _useState2 = React170.useState(""), error = _useState2[0], setError = _useState2[1];
19755
+ var _useState3 = React170.useState(function() {
19756
19756
  return function() {
19757
19757
  return true;
19758
19758
  };
19759
19759
  }), icalFilter = _useState3[0], setIcalFilter = _useState3[1];
19760
- React171.useEffect(function() {
19760
+ React170.useEffect(function() {
19761
19761
  if (!icalAvailability) return;
19762
19762
  setLoading(true);
19763
19763
  setupIcalFilter(icalAvailability, duration).then(setIcalFilter)["catch"](function(err) {
@@ -19961,13 +19961,13 @@ var require_mml_react_cjs_development = __commonJS({
19961
19961
  }
19962
19962
  var MML2 = function MML3(_ref) {
19963
19963
  var source = _ref.source, onSubmit = _ref.onSubmit, converters2 = _ref.converters, _ref$theme = _ref.theme, theme = _ref$theme === void 0 ? "" : _ref$theme, _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className, _ref$Loading = _ref.Loading, Loading$1 = _ref$Loading === void 0 ? Loading : _ref$Loading, _ref$Error = _ref.Error, Error2 = _ref$Error === void 0 ? Error$1 : _ref$Error, _ref$Success = _ref.Success, Success$1 = _ref$Success === void 0 ? Success : _ref$Success;
19964
- var _useState = React171.useState(""), error = _useState[0], setError = _useState[1];
19965
- var _useState2 = React171.useState({
19964
+ var _useState = React170.useState(""), error = _useState[0], setError = _useState[1];
19965
+ var _useState2 = React170.useState({
19966
19966
  loading: false,
19967
19967
  error: "",
19968
19968
  success: ""
19969
19969
  }), submitState = _useState2[0], setSubmitState = _useState2[1];
19970
- var tree = React171.useMemo(function() {
19970
+ var tree = React170.useMemo(function() {
19971
19971
  try {
19972
19972
  return Parse(source, converters2);
19973
19973
  } catch (e2) {
@@ -19976,7 +19976,7 @@ var require_mml_react_cjs_development = __commonJS({
19976
19976
  return null;
19977
19977
  }
19978
19978
  }, [source, converters2]);
19979
- var handleSubmit = React171.useCallback(/* @__PURE__ */ function() {
19979
+ var handleSubmit = React170.useCallback(/* @__PURE__ */ function() {
19980
19980
  var _ref2 = _asyncToGenerator(/* @__PURE__ */ runtime_1.mark(function _callee(event) {
19981
19981
  var state;
19982
19982
  return runtime_1.wrap(function _callee$(_context) {
@@ -43586,7 +43586,7 @@ var UnMemoizedChannelPreviewMessenger = (props) => {
43586
43586
  className: customClassName = "",
43587
43587
  displayImage,
43588
43588
  displayTitle,
43589
- latestMessage,
43589
+ latestMessagePreview,
43590
43590
  onSelect: customOnSelectChannel,
43591
43591
  setActiveChannel,
43592
43592
  unread,
@@ -43628,7 +43628,7 @@ var UnMemoizedChannelPreviewMessenger = (props) => {
43628
43628
  name: avatarName
43629
43629
  }
43630
43630
  )),
43631
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-end" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-end-first-row" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-messenger--name" }, /* @__PURE__ */ import_react83.default.createElement("span", null, displayTitle)), !!unread && /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-unread-badge", "data-testid": "unread-badge" }, unread)), /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-messenger--last-message" }, latestMessage))
43631
+ /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-end" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-end-first-row" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-messenger--name" }, /* @__PURE__ */ import_react83.default.createElement("span", null, displayTitle)), !!unread && /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-unread-badge", "data-testid": "unread-badge" }, unread)), /* @__PURE__ */ import_react83.default.createElement("div", { className: "str-chat__channel-preview-messenger--last-message" }, latestMessagePreview))
43632
43632
  );
43633
43633
  };
43634
43634
  var ChannelPreviewMessenger = import_react83.default.memo(
@@ -43655,7 +43655,7 @@ var import_react86 = require("react");
43655
43655
  var import_react85 = __toESM(require("react"));
43656
43656
  var renderPreviewText = (text5) => /* @__PURE__ */ import_react85.default.createElement(ReactMarkdown, { skipHtml: true }, text5);
43657
43657
  var getLatestMessagePreview = (channel, t2, userLanguage = "en") => {
43658
- const latestMessage = channel.state.messages[channel.state.messages.length - 1];
43658
+ const latestMessage = channel.state.latestMessages[channel.state.latestMessages.length - 1];
43659
43659
  const previewTextToRender = latestMessage?.i18n?.[`${userLanguage}_text`] || latestMessage?.text;
43660
43660
  if (!latestMessage) {
43661
43661
  return t2("Nothing yet...");
@@ -43664,8 +43664,7 @@ var getLatestMessagePreview = (channel, t2, userLanguage = "en") => {
43664
43664
  return t2("Message deleted");
43665
43665
  }
43666
43666
  if (previewTextToRender) {
43667
- const renderedText = renderPreviewText(previewTextToRender);
43668
- return renderedText;
43667
+ return renderPreviewText(previewTextToRender);
43669
43668
  }
43670
43669
  if (latestMessage.command) {
43671
43670
  return `/${latestMessage.command}`;
@@ -43773,7 +43772,12 @@ var useMessageDeliveryStatus = ({
43773
43772
 
43774
43773
  // src/components/ChannelPreview/ChannelPreview.tsx
43775
43774
  var ChannelPreview = (props) => {
43776
- const { channel, Preview = ChannelPreviewMessenger, channelUpdateCount } = props;
43775
+ const {
43776
+ channel,
43777
+ Preview = ChannelPreviewMessenger,
43778
+ channelUpdateCount,
43779
+ getLatestMessagePreview: getLatestMessagePreview2 = getLatestMessagePreview
43780
+ } = props;
43777
43781
  const { channel: activeChannel, client, setActiveChannel } = useChatContext(
43778
43782
  "ChannelPreview"
43779
43783
  );
@@ -43820,21 +43824,25 @@ var ChannelPreview = (props) => {
43820
43824
  );
43821
43825
  (0, import_react88.useEffect)(() => {
43822
43826
  refreshUnreadCount();
43823
- const handleEvent = (event) => {
43824
- if (event.message) setLastMessage(event.message);
43827
+ const handleEvent = () => {
43828
+ setLastMessage(channel.state.latestMessages[channel.state.latestMessages.length - 1]);
43825
43829
  refreshUnreadCount();
43826
43830
  };
43827
43831
  channel.on("message.new", handleEvent);
43828
43832
  channel.on("message.updated", handleEvent);
43829
43833
  channel.on("message.deleted", handleEvent);
43834
+ channel.on("message.undeleted", handleEvent);
43835
+ channel.on("channel.truncated", handleEvent);
43830
43836
  return () => {
43831
43837
  channel.off("message.new", handleEvent);
43832
43838
  channel.off("message.updated", handleEvent);
43833
43839
  channel.off("message.deleted", handleEvent);
43840
+ channel.off("message.undeleted", handleEvent);
43841
+ channel.off("channel.truncated", handleEvent);
43834
43842
  };
43835
- }, [refreshUnreadCount, channelUpdateCount]);
43843
+ }, [channel, refreshUnreadCount, channelUpdateCount]);
43836
43844
  if (!Preview) return null;
43837
- const latestMessage = getLatestMessagePreview(channel, t2, userLanguage);
43845
+ const latestMessagePreview = getLatestMessagePreview2(channel, t2, userLanguage);
43838
43846
  return /* @__PURE__ */ import_react88.default.createElement(
43839
43847
  Preview,
43840
43848
  {
@@ -43843,7 +43851,8 @@ var ChannelPreview = (props) => {
43843
43851
  displayImage,
43844
43852
  displayTitle,
43845
43853
  lastMessage,
43846
- latestMessage,
43854
+ latestMessage: latestMessagePreview,
43855
+ latestMessagePreview,
43847
43856
  messageDeliveryStatus,
43848
43857
  setActiveChannel,
43849
43858
  unread
@@ -49103,39 +49112,39 @@ var useMessageSetKey = ({
49103
49112
  };
49104
49113
 
49105
49114
  // src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
49106
- var import_react182 = __toESM(require("react"));
49115
+ var import_react182 = require("react");
49107
49116
  var useScrollToBottomOnNewMessage = ({
49108
49117
  messages,
49109
49118
  scrollToBottom,
49110
49119
  scrollToLatestMessageOnFocus
49111
49120
  }) => {
49112
- const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = import_react182.default.useState(
49113
- false
49114
- );
49115
- const resetNewMessagesReceivedInBackground = (0, import_react182.useCallback)(() => {
49116
- setNewMessagesReceivedInBackground(false);
49117
- }, []);
49121
+ const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react182.useState)(false);
49122
+ const scrollToBottomIfConfigured = (0, import_react182.useRef)();
49123
+ scrollToBottomIfConfigured.current = (event) => {
49124
+ if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
49125
+ return;
49126
+ }
49127
+ setTimeout(scrollToBottom, 100);
49128
+ };
49118
49129
  (0, import_react182.useEffect)(() => {
49119
49130
  setNewMessagesReceivedInBackground(true);
49120
49131
  }, [messages]);
49121
- const scrollToBottomIfConfigured = (0, import_react182.useCallback)(
49122
- (event) => {
49123
- if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window)
49124
- return;
49125
- setTimeout(scrollToBottom, 100);
49126
- },
49127
- [scrollToLatestMessageOnFocus, scrollToBottom, newMessagesReceivedInBackground]
49128
- );
49129
49132
  (0, import_react182.useEffect)(() => {
49133
+ const handleFocus = (event) => {
49134
+ scrollToBottomIfConfigured.current?.(event);
49135
+ };
49136
+ const handleBlur = () => {
49137
+ setNewMessagesReceivedInBackground(false);
49138
+ };
49130
49139
  if (typeof window !== "undefined") {
49131
- window.addEventListener("focus", scrollToBottomIfConfigured);
49132
- window.addEventListener("blur", resetNewMessagesReceivedInBackground);
49140
+ window.addEventListener("focus", handleFocus);
49141
+ window.addEventListener("blur", handleBlur);
49133
49142
  }
49134
49143
  return () => {
49135
- window.removeEventListener("focus", scrollToBottomIfConfigured);
49136
- window.removeEventListener("blur", resetNewMessagesReceivedInBackground);
49144
+ window.removeEventListener("focus", handleFocus);
49145
+ window.removeEventListener("blur", handleBlur);
49137
49146
  };
49138
- }, [scrollToBottomIfConfigured]);
49147
+ }, []);
49139
49148
  };
49140
49149
 
49141
49150
  // src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
@@ -49236,6 +49245,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
49236
49245
  messageGroupStyles,
49237
49246
  MessageSystem,
49238
49247
  numItemsPrepended,
49248
+ openThread,
49239
49249
  ownMessagesReadByOthers,
49240
49250
  processedMessages: messageList,
49241
49251
  reactionDetailsSort,
@@ -49288,6 +49298,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
49288
49298
  message,
49289
49299
  Message: MessageUIComponent,
49290
49300
  messageActions,
49301
+ openThread,
49291
49302
  reactionDetailsSort,
49292
49303
  readBy: ownMessagesReadByOthers[message.id] || [],
49293
49304
  sortReactionDetails,
@@ -49354,6 +49365,7 @@ var VirtualizedMessageListWithContext = (props) => {
49354
49365
  messageLimit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE,
49355
49366
  messages,
49356
49367
  notifications,
49368
+ openThread,
49357
49369
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
49358
49370
  overscan = 0,
49359
49371
  read,
@@ -49569,6 +49581,7 @@ var VirtualizedMessageListWithContext = (props) => {
49569
49581
  messageGroupStyles,
49570
49582
  MessageSystem,
49571
49583
  numItemsPrepended,
49584
+ openThread,
49572
49585
  ownMessagesReadByOthers,
49573
49586
  processedMessages,
49574
49587
  reactionDetailsSort,
@@ -50759,7 +50772,7 @@ var useChannelDeletedListener = (setChannels, customHandler) => {
50759
50772
  return () => {
50760
50773
  client.off("channel.deleted", handleEvent);
50761
50774
  };
50762
- }, [customHandler]);
50775
+ }, [client, customHandler, setChannels]);
50763
50776
  };
50764
50777
 
50765
50778
  // src/components/ChannelList/hooks/useChannelHiddenListener.ts
@@ -50783,7 +50796,7 @@ var useChannelHiddenListener = (setChannels, customHandler) => {
50783
50796
  return () => {
50784
50797
  client.off("channel.hidden", handleEvent);
50785
50798
  };
50786
- }, [customHandler]);
50799
+ }, [client, customHandler, setChannels]);
50787
50800
  };
50788
50801
 
50789
50802
  // src/components/ChannelList/hooks/useChannelTruncatedListener.ts
@@ -50804,7 +50817,7 @@ var useChannelTruncatedListener = (setChannels, customHandler, forceUpdate) => {
50804
50817
  return () => {
50805
50818
  client.off("channel.truncated", handleEvent);
50806
50819
  };
50807
- }, [customHandler]);
50820
+ }, [client, customHandler, forceUpdate, setChannels]);
50808
50821
  };
50809
50822
 
50810
50823
  // src/components/ChannelList/hooks/useChannelUpdatedListener.ts
@@ -50837,7 +50850,7 @@ var useChannelUpdatedListener = (setChannels, customHandler, forceUpdate) => {
50837
50850
  return () => {
50838
50851
  client.off("channel.updated", handleEvent);
50839
50852
  };
50840
- }, [customHandler]);
50853
+ }, [client, customHandler, forceUpdate, setChannels]);
50841
50854
  };
50842
50855
 
50843
50856
  // src/components/ChannelList/hooks/useChannelVisibleListener.ts
@@ -50862,7 +50875,7 @@ var useChannelVisibleListener = (setChannels, customHandler) => {
50862
50875
  return () => {
50863
50876
  client.off("channel.visible", handleEvent);
50864
50877
  };
50865
- }, [customHandler]);
50878
+ }, [client, customHandler, setChannels]);
50866
50879
  };
50867
50880
 
50868
50881
  // src/components/ChannelList/hooks/useConnectionRecoveredListener.ts
@@ -50879,7 +50892,7 @@ var useConnectionRecoveredListener = (forceUpdate) => {
50879
50892
  return () => {
50880
50893
  client.off("connection.recovered", handleEvent);
50881
50894
  };
50882
- }, []);
50895
+ }, [client, forceUpdate]);
50883
50896
  };
50884
50897
 
50885
50898
  // src/components/ChannelList/hooks/useMessageNewListener.ts
@@ -50923,7 +50936,13 @@ var useMessageNewListener = (setChannels, customHandler, lockChannelOrder = fals
50923
50936
  return () => {
50924
50937
  client.off("message.new", handleEvent);
50925
50938
  };
50926
- }, [lockChannelOrder]);
50939
+ }, [
50940
+ allowNewMessagesFromUnfilteredChannels,
50941
+ client,
50942
+ customHandler,
50943
+ lockChannelOrder,
50944
+ setChannels
50945
+ ]);
50927
50946
  };
50928
50947
 
50929
50948
  // src/components/ChannelList/hooks/useMobileNavigation.ts
@@ -50971,7 +50990,7 @@ var useNotificationAddedToChannelListener = (setChannels, customHandler, allowNe
50971
50990
  return () => {
50972
50991
  client.off("notification.added_to_channel", handleEvent);
50973
50992
  };
50974
- }, [customHandler]);
50993
+ }, [allowNewMessagesFromUnfilteredChannels, client, customHandler, setChannels]);
50975
50994
  };
50976
50995
 
50977
50996
  // src/components/ChannelList/hooks/useNotificationMessageNewListener.ts
@@ -50996,7 +51015,7 @@ var useNotificationMessageNewListener = (setChannels, customHandler, allowNewMes
50996
51015
  return () => {
50997
51016
  client.off("notification.message_new", handleEvent);
50998
51017
  };
50999
- }, [customHandler]);
51018
+ }, [allowNewMessagesFromUnfilteredChannels, client, customHandler, setChannels]);
51000
51019
  };
51001
51020
 
51002
51021
  // src/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.ts
@@ -51017,7 +51036,7 @@ var useNotificationRemovedFromChannelListener = (setChannels, customHandler) =>
51017
51036
  return () => {
51018
51037
  client.off("notification.removed_from_channel", handleEvent);
51019
51038
  };
51020
- }, [customHandler]);
51039
+ }, [client, customHandler, setChannels]);
51021
51040
  };
51022
51041
 
51023
51042
  // src/components/ChannelList/hooks/usePaginatedChannels.ts
@@ -51124,7 +51143,7 @@ var useUserPresenceChangedListener = (setChannels) => {
51124
51143
  return () => {
51125
51144
  client.off("user.presence.changed", handleEvent);
51126
51145
  };
51127
- }, []);
51146
+ }, [client, setChannels]);
51128
51147
  };
51129
51148
 
51130
51149
  // src/components/ChannelSearch/ChannelSearch.tsx
@@ -51829,6 +51848,7 @@ var UnMemoizedChannelList = (props) => {
51829
51848
  customQueryChannels,
51830
51849
  EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator,
51831
51850
  filters,
51851
+ getLatestMessagePreview: getLatestMessagePreview2,
51832
51852
  LoadingErrorIndicator: LoadingErrorIndicator2 = NullComponent,
51833
51853
  LoadingIndicator: LoadingIndicator2 = LoadingChannels,
51834
51854
  List: List2 = ChannelListMessenger,
@@ -51891,7 +51911,9 @@ var UnMemoizedChannelList = (props) => {
51891
51911
  setActiveChannel(channels2[0], watchers);
51892
51912
  }
51893
51913
  };
51894
- const forceUpdate = () => setChannelUpdateCount((count) => count + 1);
51914
+ const forceUpdate = (0, import_react211.useCallback)(() => setChannelUpdateCount((count) => count + 1), [
51915
+ setChannelUpdateCount
51916
+ ]);
51895
51917
  const onSearch = (0, import_react211.useCallback)((event) => {
51896
51918
  if (!event.target.value) {
51897
51919
  setSearchActive(false);
@@ -51959,6 +51981,7 @@ var UnMemoizedChannelList = (props) => {
51959
51981
  channel: item,
51960
51982
  // forces the update of preview component on channel update
51961
51983
  channelUpdateCount,
51984
+ getLatestMessagePreview: getLatestMessagePreview2,
51962
51985
  key: item.cid,
51963
51986
  Preview,
51964
51987
  setActiveChannel,