stream-chat-react 12.14.0 → 12.15.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 (29) hide show
  1. package/dist/components/Channel/Channel.d.ts +8 -2
  2. package/dist/components/Chat/hooks/useChat.js +1 -1
  3. package/dist/components/MessageInput/MessageInput.js +3 -0
  4. package/dist/components/MessageInput/MessageInputFlat.js +28 -48
  5. package/dist/components/MessageInput/WithDragAndDropUpload.d.ts +37 -0
  6. package/dist/components/MessageInput/WithDragAndDropUpload.js +85 -0
  7. package/dist/components/MessageInput/hooks/useSubmitHandler.js +12 -6
  8. package/dist/components/MessageInput/index.d.ts +1 -0
  9. package/dist/components/MessageInput/index.js +1 -0
  10. package/dist/components/Poll/PollActions/PollResults/PollResults.js +1 -1
  11. package/dist/context/MessageInputContext.js +3 -2
  12. package/dist/css/v2/index.css +1 -1
  13. package/dist/css/v2/index.layout.css +1 -1
  14. package/dist/index.browser.cjs +454 -411
  15. package/dist/index.browser.cjs.map +4 -4
  16. package/dist/index.node.cjs +479 -435
  17. package/dist/index.node.cjs.map +4 -4
  18. package/dist/plugins/Emojis/index.browser.cjs +0 -3
  19. package/dist/plugins/Emojis/index.browser.cjs.map +2 -2
  20. package/dist/plugins/Emojis/index.node.cjs +0 -3
  21. package/dist/plugins/Emojis/index.node.cjs.map +2 -2
  22. package/dist/scss/v2/DropzoneContainer/DropzoneContainer-layout.scss +14 -0
  23. package/dist/scss/v2/DropzoneContainer/DropzoneContainer-theme.scss +17 -0
  24. package/dist/scss/v2/MessageInput/MessageInput-layout.scss +0 -13
  25. package/dist/scss/v2/MessageInput/MessageInput-theme.scss +8 -19
  26. package/dist/scss/v2/index.layout.scss +2 -1
  27. package/dist/scss/v2/index.scss +1 -0
  28. package/package.json +2 -2
  29. /package/dist/scss/v2/DragAndDropContainer/{DragAmdDropContainer-layout.scss → DragAndDropContainer-layout.scss} +0 -0
@@ -10556,7 +10556,7 @@ var require_react_is = __commonJS({
10556
10556
  var require_ast_to_react = __commonJS({
10557
10557
  "node_modules/mml-react/node_modules/react-markdown/lib/ast-to-react.js"(exports2, module2) {
10558
10558
  "use strict";
10559
- var React209 = require("react");
10559
+ var React210 = require("react");
10560
10560
  var xtend = require_immutable();
10561
10561
  var ReactIs = require_react_is();
10562
10562
  function astToReact(node2, options) {
@@ -10583,7 +10583,7 @@ var require_ast_to_react = __commonJS({
10583
10583
  throw new Error("Renderer for type `".concat(node2.type, "` not defined or is not renderable"));
10584
10584
  }
10585
10585
  var nodeProps = getNodeProps(node2, key, options, renderer, parent, index3);
10586
- return React209.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
10586
+ return React210.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || void 0);
10587
10587
  function resolveChildren() {
10588
10588
  return node2.children && node2.children.map(function(childNode, i) {
10589
10589
  return astToReact(childNode, options, {
@@ -10597,7 +10597,7 @@ var require_ast_to_react = __commonJS({
10597
10597
  var props = {
10598
10598
  key
10599
10599
  };
10600
- var isSimpleRenderer = typeof renderer === "string" || renderer === React209.Fragment;
10600
+ var isSimpleRenderer = typeof renderer === "string" || renderer === React210.Fragment;
10601
10601
  if (opts.sourcePos && node2.position) {
10602
10602
  props["data-sourcepos"] = flattenPosition(node2.position);
10603
10603
  }
@@ -10750,14 +10750,14 @@ var require_ast_to_react = __commonJS({
10750
10750
  function mergeNodeChildren(node2, parsedChildren) {
10751
10751
  var el = node2.element;
10752
10752
  if (Array.isArray(el)) {
10753
- var Fragment3 = React209.Fragment || "div";
10754
- return React209.createElement(Fragment3, null, el);
10753
+ var Fragment3 = React210.Fragment || "div";
10754
+ return React210.createElement(Fragment3, null, el);
10755
10755
  }
10756
10756
  if (el.props.children || parsedChildren) {
10757
- var children = React209.Children.toArray(el.props.children).concat(parsedChildren);
10758
- return React209.cloneElement(el, null, children);
10757
+ var children = React210.Children.toArray(el.props.children).concat(parsedChildren);
10758
+ return React210.cloneElement(el, null, children);
10759
10759
  }
10760
- return React209.cloneElement(el, null);
10760
+ return React210.cloneElement(el, null);
10761
10761
  }
10762
10762
  function flattenPosition(pos) {
10763
10763
  return [pos.start.line, ":", pos.start.column, "-", pos.end.line, ":", pos.end.column].map(String).join("");
@@ -10881,9 +10881,9 @@ var require_renderers = __commonJS({
10881
10881
  "node_modules/mml-react/node_modules/react-markdown/lib/renderers.js"(exports2, module2) {
10882
10882
  "use strict";
10883
10883
  var xtend = require_immutable();
10884
- var React209 = require("react");
10885
- var supportsStringRender = parseInt((React209.version || "16").slice(0, 2), 10) >= 16;
10886
- var createElement = React209.createElement;
10884
+ var React210 = require("react");
10885
+ var supportsStringRender = parseInt((React210.version || "16").slice(0, 2), 10) >= 16;
10886
+ var createElement = React210.createElement;
10887
10887
  module2.exports = {
10888
10888
  break: "br",
10889
10889
  paragraph: "p",
@@ -10919,7 +10919,7 @@ var require_renderers = __commonJS({
10919
10919
  }
10920
10920
  function Root(props) {
10921
10921
  var className = props.className;
10922
- var root4 = !className && React209.Fragment || "div";
10922
+ var root4 = !className && React210.Fragment || "div";
10923
10923
  return createElement(root4, className ? {
10924
10924
  className
10925
10925
  } : null, props.children);
@@ -10975,7 +10975,7 @@ var require_renderers = __commonJS({
10975
10975
  var dangerous = props.allowDangerousHtml || props.escapeHtml === false;
10976
10976
  var tag = props.isBlock ? "div" : "span";
10977
10977
  if (!dangerous) {
10978
- return createElement(React209.Fragment || tag, null, props.value);
10978
+ return createElement(React210.Fragment || tag, null, props.value);
10979
10979
  }
10980
10980
  var nodeProps = {
10981
10981
  dangerouslySetInnerHTML: {
@@ -10985,7 +10985,7 @@ var require_renderers = __commonJS({
10985
10985
  return createElement(tag, nodeProps);
10986
10986
  }
10987
10987
  function ParsedHtml(props) {
10988
- return props["data-sourcepos"] ? React209.cloneElement(props.element, {
10988
+ return props["data-sourcepos"] ? React210.cloneElement(props.element, {
10989
10989
  "data-sourcepos": props["data-sourcepos"]
10990
10990
  }) : props.element;
10991
10991
  }
@@ -18837,8 +18837,8 @@ var require_mml_react_cjs_development = __commonJS({
18837
18837
  function _interopDefault(ex) {
18838
18838
  return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex;
18839
18839
  }
18840
- var React209 = require("react");
18841
- var React__default = _interopDefault(React209);
18840
+ var React210 = require("react");
18841
+ var React__default = _interopDefault(React210);
18842
18842
  var parseXml = _interopDefault(require_src());
18843
18843
  var dayjs = _interopDefault(require("dayjs"));
18844
18844
  var sanitizeUrl4 = require("@braintree/sanitize-url");
@@ -19623,8 +19623,8 @@ var require_mml_react_cjs_development = __commonJS({
19623
19623
  className: "mml-carousel__track"
19624
19624
  }, React__default.createElement("div", {
19625
19625
  className: "mml-carousel__slides"
19626
- }, React209.Children.map(children, function(child) {
19627
- return React209.cloneElement(child, {
19626
+ }, React210.Children.map(children, function(child) {
19627
+ return React210.cloneElement(child, {
19628
19628
  className: "mml-carousel__slide",
19629
19629
  slideWidth
19630
19630
  });
@@ -19668,7 +19668,7 @@ var require_mml_react_cjs_development = __commonJS({
19668
19668
  };
19669
19669
  var Input = function Input2(_ref) {
19670
19670
  var name2 = _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;
19671
- var _useState = React209.useState(value), state = _useState[0], setState = _useState[1];
19671
+ var _useState = React210.useState(value), state = _useState[0], setState = _useState[1];
19672
19672
  var id = "mml-" + name2;
19673
19673
  return React__default.createElement(React__default.Fragment, null, label && React__default.createElement("label", {
19674
19674
  className: "mml-card-header",
@@ -19798,7 +19798,7 @@ var require_mml_react_cjs_development = __commonJS({
19798
19798
  };
19799
19799
  var Number2 = function Number3(_ref) {
19800
19800
  var name2 = _ref.name, value = _ref.value;
19801
- var _useState = React209.useState(parseInt("" + value, 10) || 0), state = _useState[0], setState = _useState[1];
19801
+ var _useState = React210.useState(parseInt("" + value, 10) || 0), state = _useState[0], setState = _useState[1];
19802
19802
  return React__default.createElement("div", {
19803
19803
  className: "mml-number"
19804
19804
  }, React__default.createElement("input", {
@@ -19835,7 +19835,7 @@ var require_mml_react_cjs_development = __commonJS({
19835
19835
  var VIRTUOSO_START_INDEX = 1e4;
19836
19836
  var DatePickerSelect = function DatePickerSelect2(props) {
19837
19837
  var onChange = props.onChange, icalFilter = props.icalFilter, getItemData2 = props.getItemData, itemClassName = props.itemClassName, interval = props.interval, format = props.format, value = props.value;
19838
- var generateItems = React209.useCallback(function(quantity, firstIdx) {
19838
+ var generateItems = React210.useCallback(function(quantity, firstIdx) {
19839
19839
  return Array(quantity).fill(true).map(function(_, idx) {
19840
19840
  return getItemData2({
19841
19841
  interval,
@@ -19847,11 +19847,11 @@ var require_mml_react_cjs_development = __commonJS({
19847
19847
  return !icalFilter || icalFilter && icalFilter(newItem.value);
19848
19848
  });
19849
19849
  }, [interval, format, value, icalFilter, getItemData2]);
19850
- var _useState = React209.useState(generateItems(ITEMS_PER_PAGE * 2, -ITEMS_PER_PAGE)), items = _useState[0], setItems = _useState[1];
19851
- var _useState2 = React209.useState(VIRTUOSO_START_INDEX), firstItemIndex = _useState2[0], setFirstItemIndex = _useState2[1];
19852
- var initialIndexOffset = React209.useRef(INITIAL_INDEX);
19853
- var _useState3 = React209.useState(null), selectedIdx = _useState3[0], setSelectedIdx = _useState3[1];
19854
- var handleClick = React209.useCallback(function(item) {
19850
+ var _useState = React210.useState(generateItems(ITEMS_PER_PAGE * 2, -ITEMS_PER_PAGE)), items = _useState[0], setItems = _useState[1];
19851
+ var _useState2 = React210.useState(VIRTUOSO_START_INDEX), firstItemIndex = _useState2[0], setFirstItemIndex = _useState2[1];
19852
+ var initialIndexOffset = React210.useRef(INITIAL_INDEX);
19853
+ var _useState3 = React210.useState(null), selectedIdx = _useState3[0], setSelectedIdx = _useState3[1];
19854
+ var handleClick = React210.useCallback(function(item) {
19855
19855
  onChange(item.value);
19856
19856
  var firstItemIndex2 = initialIndexOffset.current || 0;
19857
19857
  var nextFirstItemIdx = firstItemIndex2 - INITIAL_INDEX - ITEMS_PER_PAGE;
@@ -19865,12 +19865,12 @@ var require_mml_react_cjs_development = __commonJS({
19865
19865
  }
19866
19866
  setSelectedIdx(item.idx);
19867
19867
  }, [setItems, generateItems, initialIndexOffset, onChange]);
19868
- var appendItems = React209.useCallback(function(lastItemIndex) {
19868
+ var appendItems = React210.useCallback(function(lastItemIndex) {
19869
19869
  setItems(function(items2) {
19870
19870
  return [].concat(items2, generateItems(ITEMS_PER_PAGE, lastItemIndex));
19871
19871
  });
19872
19872
  }, [setItems, generateItems]);
19873
- var prependItems = React209.useCallback(function() {
19873
+ var prependItems = React210.useCallback(function() {
19874
19874
  var firstItemIndex2 = initialIndexOffset.current || 0;
19875
19875
  var nextFirstItemIdx = firstItemIndex2 - INITIAL_INDEX - ITEMS_PER_PAGE;
19876
19876
  if (initialIndexOffset) {
@@ -19882,7 +19882,7 @@ var require_mml_react_cjs_development = __commonJS({
19882
19882
  setFirstItemIndex(firstItemIndex2 - ITEMS_PER_PAGE);
19883
19883
  return false;
19884
19884
  }, [setItems, generateItems, initialIndexOffset]);
19885
- React209.useEffect(function() {
19885
+ React210.useEffect(function() {
19886
19886
  if (value) {
19887
19887
  var initialSelectedIdx = null;
19888
19888
  for (var i = 0; i < items.length; i++) {
@@ -19952,7 +19952,7 @@ var require_mml_react_cjs_development = __commonJS({
19952
19952
  };
19953
19953
  var DatePicker = function DatePicker2(_ref) {
19954
19954
  var name2 = _ref.name, selected = _ref.selected, dateInterval = _ref.dateInterval, timeInterval = _ref.timeInterval, dateFormat = _ref.dateFormat, timeFormat = _ref.timeFormat, fullDay = _ref.fullDay, icalFilter = _ref.icalFilter;
19955
- var _useState = React209.useState(selected), date = _useState[0], setDate = _useState[1];
19955
+ var _useState = React210.useState(selected), date = _useState[0], setDate = _useState[1];
19956
19956
  var handleChangeDate = function handleChangeDate2(value) {
19957
19957
  setDate(function(prevDate) {
19958
19958
  return prevDate.set("date", value.get("date")).set("month", value.get("month")).set("year", value.get("year"));
@@ -20032,14 +20032,14 @@ var require_mml_react_cjs_development = __commonJS({
20032
20032
  }();
20033
20033
  var Scheduler = function Scheduler2(_ref2) {
20034
20034
  var name2 = _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;
20035
- var _useState = React209.useState(false), loading = _useState[0], setLoading = _useState[1];
20036
- var _useState2 = React209.useState(""), error = _useState2[0], setError = _useState2[1];
20037
- var _useState3 = React209.useState(function() {
20035
+ var _useState = React210.useState(false), loading = _useState[0], setLoading = _useState[1];
20036
+ var _useState2 = React210.useState(""), error = _useState2[0], setError = _useState2[1];
20037
+ var _useState3 = React210.useState(function() {
20038
20038
  return function() {
20039
20039
  return true;
20040
20040
  };
20041
20041
  }), icalFilter = _useState3[0], setIcalFilter = _useState3[1];
20042
- React209.useEffect(function() {
20042
+ React210.useEffect(function() {
20043
20043
  if (!icalAvailability) return;
20044
20044
  setLoading(true);
20045
20045
  setupIcalFilter(icalAvailability, duration).then(setIcalFilter)["catch"](function(err) {
@@ -20243,13 +20243,13 @@ var require_mml_react_cjs_development = __commonJS({
20243
20243
  }
20244
20244
  var MML2 = function MML3(_ref) {
20245
20245
  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;
20246
- var _useState = React209.useState(""), error = _useState[0], setError = _useState[1];
20247
- var _useState2 = React209.useState({
20246
+ var _useState = React210.useState(""), error = _useState[0], setError = _useState[1];
20247
+ var _useState2 = React210.useState({
20248
20248
  loading: false,
20249
20249
  error: "",
20250
20250
  success: ""
20251
20251
  }), submitState = _useState2[0], setSubmitState = _useState2[1];
20252
- var tree = React209.useMemo(function() {
20252
+ var tree = React210.useMemo(function() {
20253
20253
  try {
20254
20254
  return Parse(source, converters2);
20255
20255
  } catch (e2) {
@@ -20258,7 +20258,7 @@ var require_mml_react_cjs_development = __commonJS({
20258
20258
  return null;
20259
20259
  }
20260
20260
  }, [source, converters2]);
20261
- var handleSubmit = React209.useCallback(/* @__PURE__ */ function() {
20261
+ var handleSubmit = React210.useCallback(/* @__PURE__ */ function() {
20262
20262
  var _ref2 = _asyncToGenerator(/* @__PURE__ */ runtime_1.mark(function _callee(event) {
20263
20263
  var state;
20264
20264
  return runtime_1.wrap(function _callee$(_context) {
@@ -20583,6 +20583,7 @@ __export(src_exports, {
20583
20583
  WaveProgressBar: () => WaveProgressBar,
20584
20584
  Window: () => Window,
20585
20585
  WithComponents: () => WithComponents,
20586
+ WithDragAndDropUpload: () => WithDragAndDropUpload,
20586
20587
  areMessagePropsEqual: () => areMessagePropsEqual,
20587
20588
  areMessageUIPropsEqual: () => areMessageUIPropsEqual,
20588
20589
  attachmentTypeIconMap: () => attachmentTypeIconMap,
@@ -21293,9 +21294,6 @@ var MessageInputContextProvider = ({
21293
21294
  var useMessageInputContext = (componentName) => {
21294
21295
  const contextValue = (0, import_react13.useContext)(MessageInputContext);
21295
21296
  if (!contextValue) {
21296
- console.warn(
21297
- `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure this hook is called within the MessageInput's UI component. The errored call is located in the ${componentName} component.`
21298
- );
21299
21297
  return {};
21300
21298
  }
21301
21299
  return contextValue;
@@ -40280,7 +40278,7 @@ ReactTextareaAutocomplete.propTypes = {
40280
40278
  };
40281
40279
 
40282
40280
  // src/components/Channel/Channel.tsx
40283
- var import_react257 = __toESM(require("react"));
40281
+ var import_react258 = __toESM(require("react"));
40284
40282
  var import_lodash22 = __toESM(require("lodash.debounce"));
40285
40283
  var import_lodash23 = __toESM(require("lodash.defaultsdeep"));
40286
40284
  var import_lodash24 = __toESM(require("lodash.throttle"));
@@ -44408,10 +44406,12 @@ var useSubmitHandler = (props, state, dispatch, numberOfUploads, enrichURLsContr
44408
44406
  if (someAttachmentsUploading) {
44409
44407
  return addNotification(t2("Wait until all attachments have uploaded"), "error");
44410
44408
  }
44411
- const attachmentsFromUploads = attachments.filter(
44412
- (att) => att.localMetadata?.uploadState !== "failed" || findAndEnqueueURLsToEnrich && !att.og_scrape_url
44413
- // filter out all the attachments scraped before the message was edited
44414
- ).map((localAttachment) => {
44409
+ const attachmentsWithoutLinkPreviews = attachments.filter((att) => {
44410
+ const isSuccessfulUpload = att.localMetadata?.uploadState === "finished";
44411
+ const isNotUpload = !att.localMetadata?.uploadState;
44412
+ const isNotLinkPreview = !att.og_scrape_url;
44413
+ return isNotLinkPreview && (isSuccessfulUpload || isNotUpload);
44414
+ }).map((localAttachment) => {
44415
44415
  const { localMetadata: _, ...attachment } = localAttachment;
44416
44416
  return attachment;
44417
44417
  });
@@ -44425,17 +44425,16 @@ var useSubmitHandler = (props, state, dispatch, numberOfUploads, enrichURLsContr
44425
44425
  const someLinkPreviewsDismissed = Array.from(linkPreviews.values()).some(
44426
44426
  (linkPreview) => linkPreview.state === "dismissed" /* DISMISSED */
44427
44427
  );
44428
- attachmentsFromLinkPreviews = someLinkPreviewsLoading ? [] : Array.from(linkPreviews.values()).filter(
44429
- (linkPreview) => linkPreview.state === "loaded" /* LOADED */ && !attachmentsFromUploads.find(
44430
- (attFromUpload) => attFromUpload.og_scrape_url === linkPreview.og_scrape_url
44431
- )
44432
- ).map(
44428
+ attachmentsFromLinkPreviews = someLinkPreviewsLoading ? [] : Array.from(linkPreviews.values()).filter((linkPreview) => linkPreview.state === "loaded" /* LOADED */).map(
44433
44429
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
44434
44430
  ({ state: linkPreviewState, ...ogAttachment }) => ogAttachment
44435
44431
  );
44436
44432
  sendOptions.skip_enrich_url = !someLinkPreviewsLoading && attachmentsFromLinkPreviews.length > 0 || someLinkPreviewsDismissed;
44437
44433
  }
44438
- const newAttachments = [...attachmentsFromUploads, ...attachmentsFromLinkPreviews];
44434
+ const newAttachments = [
44435
+ ...attachmentsWithoutLinkPreviews,
44436
+ ...attachmentsFromLinkPreviews
44437
+ ];
44439
44438
  const actualMentionedUsers = Array.from(
44440
44439
  new Set(
44441
44440
  mentioned_users.filter(
@@ -45548,10 +45547,10 @@ var UnMemoizedConnectionStatus = () => {
45548
45547
  var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
45549
45548
 
45550
45549
  // src/components/MessageList/GiphyPreviewMessage.tsx
45551
- var import_react226 = __toESM(require("react"));
45550
+ var import_react227 = __toESM(require("react"));
45552
45551
 
45553
45552
  // src/components/Message/Message.tsx
45554
- var import_react225 = __toESM(require("react"));
45553
+ var import_react226 = __toESM(require("react"));
45555
45554
 
45556
45555
  // src/components/Message/hooks/useActionHandler.ts
45557
45556
  var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
@@ -49126,7 +49125,7 @@ var useMessageTextStreaming = ({
49126
49125
  };
49127
49126
 
49128
49127
  // src/components/Message/MessageSimple.tsx
49129
- var import_react224 = __toESM(require("react"));
49128
+ var import_react225 = __toESM(require("react"));
49130
49129
  var import_clsx60 = __toESM(require("clsx"));
49131
49130
 
49132
49131
  // src/components/Message/icons.tsx
@@ -51069,7 +51068,7 @@ var PollOptionWithLatestVotes = ({
51069
51068
  // src/components/Poll/PollActions/PollResults/PollResults.tsx
51070
51069
  var pollStateSelector10 = (nextValue) => ({
51071
51070
  name: nextValue.name,
51072
- options: nextValue.options,
51071
+ options: [...nextValue.options],
51073
51072
  vote_counts_by_option: nextValue.vote_counts_by_option
51074
51073
  });
51075
51074
  var PollResults = ({
@@ -53111,12 +53110,10 @@ var DefaultTriggerProvider = ({
53111
53110
  };
53112
53111
 
53113
53112
  // src/components/MessageInput/EditMessageForm.tsx
53114
- var import_react216 = __toESM(require("react"));
53113
+ var import_react217 = __toESM(require("react"));
53115
53114
 
53116
53115
  // src/components/MessageInput/MessageInputFlat.tsx
53117
- var import_react215 = __toESM(require("react"));
53118
- var import_clsx55 = __toESM(require("clsx"));
53119
- var import_react_dropzone2 = require("react-dropzone");
53116
+ var import_react216 = __toESM(require("react"));
53120
53117
 
53121
53118
  // src/components/MessageInput/SendButton.tsx
53122
53119
  var import_react205 = __toESM(require("react"));
@@ -53521,9 +53518,83 @@ var AIStateIndicator = ({
53521
53518
  return aiState in allowedStates ? /* @__PURE__ */ import_react214.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react214.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
53522
53519
  };
53523
53520
 
53521
+ // src/components/MessageInput/WithDragAndDropUpload.tsx
53522
+ var import_react215 = __toESM(require("react"));
53523
+ var import_react_dropzone2 = require("react-dropzone");
53524
+ var import_clsx55 = __toESM(require("clsx"));
53525
+ var DragAndDropUploadContext = import_react215.default.createContext({
53526
+ subscribeToDrop: null
53527
+ });
53528
+ var useDragAndDropUploadContext = () => (0, import_react215.useContext)(DragAndDropUploadContext);
53529
+ var useRegisterDropHandlers = ({ uploadNewFiles }) => {
53530
+ const { subscribeToDrop } = useDragAndDropUploadContext();
53531
+ (0, import_react215.useEffect)(() => {
53532
+ const unsubscribe = subscribeToDrop?.(uploadNewFiles);
53533
+ return unsubscribe;
53534
+ }, [subscribeToDrop, uploadNewFiles]);
53535
+ };
53536
+ var WithDragAndDropUpload = ({
53537
+ children,
53538
+ className,
53539
+ component: Component2 = "div",
53540
+ style
53541
+ }) => {
53542
+ const dropHandlersRef = (0, import_react215.useRef)(/* @__PURE__ */ new Set());
53543
+ const { acceptedFiles = [], multipleUploads } = useChannelStateContext();
53544
+ const { t: t2 } = useTranslationContext();
53545
+ const messageInputContext = useMessageInputContext();
53546
+ const dragAndDropUploadContext = useDragAndDropUploadContext();
53547
+ const isWithinMessageInputContext = typeof messageInputContext.uploadNewFiles === "function";
53548
+ const accept = (0, import_react215.useMemo)(
53549
+ () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
53550
+ mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
53551
+ return mediaTypeMap;
53552
+ }, {}),
53553
+ [acceptedFiles]
53554
+ );
53555
+ const subscribeToDrop = (0, import_react215.useCallback)((fn) => {
53556
+ dropHandlersRef.current.add(fn);
53557
+ return () => {
53558
+ dropHandlersRef.current.delete(fn);
53559
+ };
53560
+ }, []);
53561
+ const handleDrop = (0, import_react215.useCallback)((files) => {
53562
+ dropHandlersRef.current.forEach((fn) => fn(files));
53563
+ }, []);
53564
+ const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
53565
+ accept,
53566
+ // apply `disabled` rules if available, otherwise allow anything and
53567
+ // let the `uploadNewFiles` handle the limitations internally
53568
+ disabled: isWithinMessageInputContext ? !messageInputContext.isUploadEnabled || messageInputContext.maxFilesLeft === 0 : false,
53569
+ multiple: multipleUploads,
53570
+ noClick: true,
53571
+ onDrop: isWithinMessageInputContext ? messageInputContext.uploadNewFiles : handleDrop
53572
+ });
53573
+ if (dragAndDropUploadContext.subscribeToDrop !== null) {
53574
+ return /* @__PURE__ */ import_react215.default.createElement(Component2, { className }, children);
53575
+ }
53576
+ return /* @__PURE__ */ import_react215.default.createElement(
53577
+ DragAndDropUploadContext.Provider,
53578
+ {
53579
+ value: {
53580
+ subscribeToDrop
53581
+ }
53582
+ },
53583
+ /* @__PURE__ */ import_react215.default.createElement(Component2, { ...getRootProps({ className, style }) }, isDragActive && /* @__PURE__ */ import_react215.default.createElement(
53584
+ "div",
53585
+ {
53586
+ className: (0, import_clsx55.default)("str-chat__dropzone-container", {
53587
+ "str-chat__dropzone-container--not-accepted": isDragReject
53588
+ })
53589
+ },
53590
+ !isDragReject && /* @__PURE__ */ import_react215.default.createElement("p", null, t2("Drag your files here")),
53591
+ isDragReject && /* @__PURE__ */ import_react215.default.createElement("p", null, t2("Some of the files will not be accepted"))
53592
+ ), children)
53593
+ );
53594
+ };
53595
+
53524
53596
  // src/components/MessageInput/MessageInputFlat.tsx
53525
53597
  var MessageInputFlat = () => {
53526
- const { t: t2 } = useTranslationContext("MessageInputFlat");
53527
53598
  const {
53528
53599
  asyncMessagesMultiSendEnabled,
53529
53600
  attachments,
@@ -53533,14 +53604,12 @@ var MessageInputFlat = () => {
53533
53604
  hideSendButton,
53534
53605
  isUploadEnabled,
53535
53606
  linkPreviews,
53536
- maxFilesLeft,
53537
53607
  message,
53538
53608
  numberOfUploads,
53539
53609
  parent,
53540
53610
  recordingController,
53541
53611
  setCooldownRemaining,
53542
- text: text7,
53543
- uploadNewFiles
53612
+ text: text7
53544
53613
  } = useMessageInputContext("MessageInputFlat");
53545
53614
  const {
53546
53615
  AttachmentPreviewList: AttachmentPreviewList2 = AttachmentPreviewList,
@@ -53555,41 +53624,23 @@ var MessageInputFlat = () => {
53555
53624
  StartRecordingAudioButton: StartRecordingAudioButton2 = StartRecordingAudioButton,
53556
53625
  StopAIGenerationButton: StopAIGenerationButtonOverride
53557
53626
  } = useComponentContext("MessageInputFlat");
53558
- const {
53559
- acceptedFiles = [],
53560
- multipleUploads,
53561
- quotedMessage
53562
- } = useChannelStateContext("MessageInputFlat");
53627
+ const { quotedMessage } = useChannelStateContext("MessageInputFlat");
53563
53628
  const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
53564
53629
  const { channel } = useChatContext("MessageInputFlat");
53565
53630
  const { aiState } = useAIState(channel);
53566
- const stopGenerating = (0, import_react215.useCallback)(() => channel?.stopAIResponse(), [channel]);
53631
+ const stopGenerating = (0, import_react216.useCallback)(() => channel?.stopAIResponse(), [channel]);
53567
53632
  const [
53568
53633
  showRecordingPermissionDeniedNotification,
53569
53634
  setShowRecordingPermissionDeniedNotification
53570
- ] = (0, import_react215.useState)(false);
53571
- const closePermissionDeniedNotification = (0, import_react215.useCallback)(() => {
53635
+ ] = (0, import_react216.useState)(false);
53636
+ const closePermissionDeniedNotification = (0, import_react216.useCallback)(() => {
53572
53637
  setShowRecordingPermissionDeniedNotification(false);
53573
53638
  }, []);
53574
- const failedUploadsCount = (0, import_react215.useMemo)(
53639
+ const failedUploadsCount = (0, import_react216.useMemo)(
53575
53640
  () => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
53576
53641
  [attachments]
53577
53642
  );
53578
- const accept = (0, import_react215.useMemo)(
53579
- () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
53580
- mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
53581
- return mediaTypeMap;
53582
- }, {}),
53583
- [acceptedFiles]
53584
- );
53585
- const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
53586
- accept,
53587
- disabled: !isUploadEnabled || maxFilesLeft === 0,
53588
- multiple: multipleUploads,
53589
- noClick: true,
53590
- onDrop: uploadNewFiles
53591
- });
53592
- (0, import_react215.useEffect)(() => {
53643
+ (0, import_react216.useEffect)(() => {
53593
53644
  const handleQuotedMessageUpdate = (e2) => {
53594
53645
  if (e2.message?.id !== quotedMessage?.id) return;
53595
53646
  if (e2.type === "message.deleted") {
@@ -53605,40 +53656,31 @@ var MessageInputFlat = () => {
53605
53656
  channel?.off("message.updated", handleQuotedMessageUpdate);
53606
53657
  };
53607
53658
  }, [channel, quotedMessage]);
53608
- if (recordingController.recordingState) return /* @__PURE__ */ import_react215.default.createElement(AudioRecorder2, null);
53659
+ if (recordingController.recordingState) return /* @__PURE__ */ import_react216.default.createElement(AudioRecorder2, null);
53609
53660
  const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
53610
53661
  const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
53611
53662
  const isRecording = !!recordingController.recordingState;
53612
53663
  const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
53613
53664
  const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
53614
- return /* @__PURE__ */ import_react215.default.createElement(import_react215.default.Fragment, null, /* @__PURE__ */ import_react215.default.createElement("div", { ...getRootProps({ className: "str-chat__message-input" }) }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react215.default.createElement(
53665
+ return /* @__PURE__ */ import_react216.default.createElement(WithDragAndDropUpload, { className: "str-chat__message-input", component: "div" }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react216.default.createElement(
53615
53666
  RecordingPermissionDeniedNotification2,
53616
53667
  {
53617
53668
  onClose: closePermissionDeniedNotification,
53618
53669
  permissionName: "microphone" /* MIC */
53619
53670
  }
53620
- ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react215.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), isDragActive && /* @__PURE__ */ import_react215.default.createElement(
53621
- "div",
53622
- {
53623
- className: (0, import_clsx55.default)("str-chat__dropzone-container", {
53624
- "str-chat__dropzone-container--not-accepted": isDragReject
53625
- })
53626
- },
53627
- !isDragReject && /* @__PURE__ */ import_react215.default.createElement("p", null, t2("Drag your files here")),
53628
- isDragReject && /* @__PURE__ */ import_react215.default.createElement("p", null, t2("Some of the files will not be accepted"))
53629
- ), displayQuotedMessage && /* @__PURE__ */ import_react215.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react215.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react215.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react215.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react215.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react215.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react215.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react215.default.createElement(import_react215.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react215.default.createElement(
53671
+ ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react216.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), displayQuotedMessage && /* @__PURE__ */ import_react216.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react216.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react216.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react216.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react216.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react216.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react216.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react216.default.createElement(import_react216.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react216.default.createElement(
53630
53672
  CooldownTimer2,
53631
53673
  {
53632
53674
  cooldownInterval: cooldownRemaining,
53633
53675
  setCooldownRemaining
53634
53676
  }
53635
- ) : /* @__PURE__ */ import_react215.default.createElement(import_react215.default.Fragment, null, /* @__PURE__ */ import_react215.default.createElement(
53677
+ ) : /* @__PURE__ */ import_react216.default.createElement(import_react216.default.Fragment, null, /* @__PURE__ */ import_react216.default.createElement(
53636
53678
  SendButton2,
53637
53679
  {
53638
53680
  disabled: !numberOfUploads && !text7.length && attachments.length - failedUploadsCount === 0,
53639
53681
  sendMessage: handleSubmit
53640
53682
  }
53641
- ), recordingEnabled && /* @__PURE__ */ import_react215.default.createElement(
53683
+ ), recordingEnabled && /* @__PURE__ */ import_react216.default.createElement(
53642
53684
  StartRecordingAudioButton2,
53643
53685
  {
53644
53686
  disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
@@ -53649,29 +53691,29 @@ var MessageInputFlat = () => {
53649
53691
  setShowRecordingPermissionDeniedNotification(true);
53650
53692
  }
53651
53693
  }
53652
- ))))));
53694
+ )))));
53653
53695
  };
53654
53696
 
53655
53697
  // src/components/MessageInput/EditMessageForm.tsx
53656
53698
  var EditMessageForm = () => {
53657
53699
  const { t: t2 } = useTranslationContext("EditMessageForm");
53658
53700
  const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
53659
- (0, import_react216.useEffect)(() => {
53701
+ (0, import_react217.useEffect)(() => {
53660
53702
  const onKeyDown = (event) => {
53661
53703
  if (event.key === "Escape") clearEditingState?.();
53662
53704
  };
53663
53705
  document.addEventListener("keydown", onKeyDown);
53664
53706
  return () => document.removeEventListener("keydown", onKeyDown);
53665
53707
  }, [clearEditingState]);
53666
- return /* @__PURE__ */ import_react216.default.createElement(
53708
+ return /* @__PURE__ */ import_react217.default.createElement(
53667
53709
  "form",
53668
53710
  {
53669
53711
  autoComplete: "off",
53670
53712
  className: "str-chat__edit-message-form",
53671
53713
  onSubmit: handleSubmit
53672
53714
  },
53673
- /* @__PURE__ */ import_react216.default.createElement(MessageInputFlat, null),
53674
- /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react216.default.createElement(
53715
+ /* @__PURE__ */ import_react217.default.createElement(MessageInputFlat, null),
53716
+ /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react217.default.createElement(
53675
53717
  "button",
53676
53718
  {
53677
53719
  className: "str-chat__edit-message-cancel",
@@ -53679,7 +53721,7 @@ var EditMessageForm = () => {
53679
53721
  onClick: clearEditingState
53680
53722
  },
53681
53723
  t2("Cancel")
53682
- ), /* @__PURE__ */ import_react216.default.createElement(
53724
+ ), /* @__PURE__ */ import_react217.default.createElement(
53683
53725
  "button",
53684
53726
  {
53685
53727
  className: "str-chat__edit-message-send",
@@ -53692,7 +53734,7 @@ var EditMessageForm = () => {
53692
53734
  };
53693
53735
 
53694
53736
  // src/components/MessageInput/MessageInput.tsx
53695
- var import_react217 = __toESM(require("react"));
53737
+ var import_react218 = __toESM(require("react"));
53696
53738
  var MessageInputProvider = (props) => {
53697
53739
  const cooldownTimerState = useCooldownTimer();
53698
53740
  const messageInputState = useMessageInputState(props);
@@ -53703,7 +53745,8 @@ var MessageInputProvider = (props) => {
53703
53745
  ...props,
53704
53746
  emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
53705
53747
  });
53706
- return /* @__PURE__ */ import_react217.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
53748
+ useRegisterDropHandlers(messageInputContextValue);
53749
+ return /* @__PURE__ */ import_react218.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
53707
53750
  };
53708
53751
  var UnMemoizedMessageInput = (props) => {
53709
53752
  const { Input: PropInput } = props;
@@ -53712,35 +53755,35 @@ var UnMemoizedMessageInput = (props) => {
53712
53755
  const Input = PropInput || ContextInput || MessageInputFlat;
53713
53756
  const dialogManagerId = props.isThreadInput ? "message-input-dialog-manager-thread" : "message-input-dialog-manager";
53714
53757
  if (dragAndDropWindow)
53715
- return /* @__PURE__ */ import_react217.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react217.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react217.default.createElement(Input, null)));
53716
- return /* @__PURE__ */ import_react217.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react217.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react217.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react217.default.createElement(Input, null))));
53758
+ return /* @__PURE__ */ import_react218.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react218.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react218.default.createElement(Input, null)));
53759
+ return /* @__PURE__ */ import_react218.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react218.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react218.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react218.default.createElement(Input, null))));
53717
53760
  };
53718
- var MessageInput = import_react217.default.memo(
53761
+ var MessageInput = import_react218.default.memo(
53719
53762
  UnMemoizedMessageInput
53720
53763
  );
53721
53764
 
53722
53765
  // src/components/Reactions/ReactionsList.tsx
53723
- var import_react221 = __toESM(require("react"));
53766
+ var import_react222 = __toESM(require("react"));
53724
53767
  var import_clsx57 = __toESM(require("clsx"));
53725
53768
 
53726
53769
  // src/components/Reactions/ReactionsListModal.tsx
53727
- var import_react219 = __toESM(require("react"));
53770
+ var import_react220 = __toESM(require("react"));
53728
53771
  var import_clsx56 = __toESM(require("clsx"));
53729
53772
 
53730
53773
  // src/components/Reactions/hooks/useFetchReactions.ts
53731
- var import_react218 = require("react");
53774
+ var import_react219 = require("react");
53732
53775
  function useFetchReactions(options) {
53733
53776
  const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
53734
- const [reactions, setReactions] = (0, import_react218.useState)([]);
53777
+ const [reactions, setReactions] = (0, import_react219.useState)([]);
53735
53778
  const {
53736
53779
  handleFetchReactions: propHandleFetchReactions,
53737
53780
  reactionType,
53738
53781
  shouldFetch,
53739
53782
  sort
53740
53783
  } = options;
53741
- const [isLoading, setIsLoading] = (0, import_react218.useState)(shouldFetch);
53784
+ const [isLoading, setIsLoading] = (0, import_react219.useState)(shouldFetch);
53742
53785
  const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
53743
- (0, import_react218.useEffect)(() => {
53786
+ (0, import_react219.useEffect)(() => {
53744
53787
  if (!shouldFetch) {
53745
53788
  return;
53746
53789
  }
@@ -53796,24 +53839,24 @@ function ReactionsListModal({
53796
53839
  shouldFetch: modalProps.open,
53797
53840
  sort: reactionDetailsSort
53798
53841
  });
53799
- const reactionDetailsWithLegacyFallback = (0, import_react219.useMemo)(
53842
+ const reactionDetailsWithLegacyFallback = (0, import_react220.useMemo)(
53800
53843
  () => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
53801
53844
  [legacySortReactionDetails, reactionDetails]
53802
53845
  );
53803
- return /* @__PURE__ */ import_react219.default.createElement(
53846
+ return /* @__PURE__ */ import_react220.default.createElement(
53804
53847
  Modal,
53805
53848
  {
53806
53849
  ...modalProps,
53807
53850
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-modal", modalProps.className)
53808
53851
  },
53809
- /* @__PURE__ */ import_react219.default.createElement(
53852
+ /* @__PURE__ */ import_react220.default.createElement(
53810
53853
  "div",
53811
53854
  {
53812
53855
  className: "str-chat__message-reactions-details",
53813
53856
  "data-testid": "reactions-list-modal"
53814
53857
  },
53815
- /* @__PURE__ */ import_react219.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
53816
- ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react219.default.createElement(
53858
+ /* @__PURE__ */ import_react220.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
53859
+ ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react220.default.createElement(
53817
53860
  "div",
53818
53861
  {
53819
53862
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-reaction-type", {
@@ -53825,25 +53868,25 @@ function ReactionsListModal({
53825
53868
  reactionType
53826
53869
  )
53827
53870
  },
53828
- /* @__PURE__ */ import_react219.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react219.default.createElement(EmojiComponent, null)),
53871
+ /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react220.default.createElement(EmojiComponent, null)),
53829
53872
  "\xA0",
53830
- /* @__PURE__ */ import_react219.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
53873
+ /* @__PURE__ */ import_react220.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
53831
53874
  )
53832
53875
  )),
53833
- SelectedEmojiComponent && /* @__PURE__ */ import_react219.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react219.default.createElement(SelectedEmojiComponent, null)),
53834
- /* @__PURE__ */ import_react219.default.createElement(
53876
+ SelectedEmojiComponent && /* @__PURE__ */ import_react220.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react220.default.createElement(SelectedEmojiComponent, null)),
53877
+ /* @__PURE__ */ import_react220.default.createElement(
53835
53878
  "div",
53836
53879
  {
53837
53880
  className: "str-chat__message-reactions-details-reacting-users",
53838
53881
  "data-testid": "all-reacting-users"
53839
53882
  },
53840
- areReactionsLoading ? /* @__PURE__ */ import_react219.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react219.default.createElement(
53883
+ areReactionsLoading ? /* @__PURE__ */ import_react220.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react220.default.createElement(
53841
53884
  "div",
53842
53885
  {
53843
53886
  className: "str-chat__message-reactions-details-reacting-user",
53844
53887
  key: user?.id
53845
53888
  },
53846
- /* @__PURE__ */ import_react219.default.createElement(
53889
+ /* @__PURE__ */ import_react220.default.createElement(
53847
53890
  Avatar,
53848
53891
  {
53849
53892
  className: "stream-chat__avatar--reaction",
@@ -53852,7 +53895,7 @@ function ReactionsListModal({
53852
53895
  name: user?.name || user?.id
53853
53896
  }
53854
53897
  ),
53855
- /* @__PURE__ */ import_react219.default.createElement(
53898
+ /* @__PURE__ */ import_react220.default.createElement(
53856
53899
  "span",
53857
53900
  {
53858
53901
  className: "str-chat__user-item--name",
@@ -53867,7 +53910,7 @@ function ReactionsListModal({
53867
53910
  }
53868
53911
 
53869
53912
  // src/components/Reactions/hooks/useProcessReactions.tsx
53870
- var import_react220 = require("react");
53913
+ var import_react221 = require("react");
53871
53914
  var defaultReactionsSort = (a2, b) => {
53872
53915
  if (a2.firstReactionAt && b.firstReactionAt) {
53873
53916
  return +a2.firstReactionAt - +b.firstReactionAt;
@@ -53889,19 +53932,19 @@ var useProcessReactions = (params) => {
53889
53932
  const latestReactions = propReactions || message.latest_reactions;
53890
53933
  const ownReactions = propOwnReactions || message?.own_reactions;
53891
53934
  const reactionGroups = propReactionGroups || message?.reaction_groups;
53892
- const isOwnReaction = (0, import_react220.useCallback)(
53935
+ const isOwnReaction = (0, import_react221.useCallback)(
53893
53936
  (reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
53894
53937
  [ownReactions]
53895
53938
  );
53896
- const getEmojiByReactionType = (0, import_react220.useCallback)(
53939
+ const getEmojiByReactionType = (0, import_react221.useCallback)(
53897
53940
  (reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
53898
53941
  [reactionOptions]
53899
53942
  );
53900
- const isSupportedReaction = (0, import_react220.useCallback)(
53943
+ const isSupportedReaction = (0, import_react221.useCallback)(
53901
53944
  (reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
53902
53945
  [reactionOptions]
53903
53946
  );
53904
- const getLatestReactedUserNames = (0, import_react220.useCallback)(
53947
+ const getLatestReactedUserNames = (0, import_react221.useCallback)(
53905
53948
  (reactionType) => latestReactions?.flatMap((reaction) => {
53906
53949
  if (reactionType && reactionType === reaction.type) {
53907
53950
  const username = reaction.user?.name || reaction.user?.id;
@@ -53911,7 +53954,7 @@ var useProcessReactions = (params) => {
53911
53954
  }) ?? [],
53912
53955
  [latestReactions]
53913
53956
  );
53914
- const existingReactions = (0, import_react220.useMemo)(() => {
53957
+ const existingReactions = (0, import_react221.useMemo)(() => {
53915
53958
  if (!reactionGroups) {
53916
53959
  return [];
53917
53960
  }
@@ -53945,7 +53988,7 @@ var useProcessReactions = (params) => {
53945
53988
  sortReactions
53946
53989
  ]);
53947
53990
  const hasReactions = existingReactions.length > 0;
53948
- const totalReactionCount = (0, import_react220.useMemo)(
53991
+ const totalReactionCount = (0, import_react221.useMemo)(
53949
53992
  () => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
53950
53993
  [existingReactions]
53951
53994
  );
@@ -53967,7 +54010,7 @@ var UnMemoizedReactionsList = (props) => {
53967
54010
  ...rest
53968
54011
  } = props;
53969
54012
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
53970
- const [selectedReactionType, setSelectedReactionType] = (0, import_react221.useState)(null);
54013
+ const [selectedReactionType, setSelectedReactionType] = (0, import_react222.useState)(null);
53971
54014
  const { t: t2 } = useTranslationContext("ReactionsList");
53972
54015
  const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
53973
54016
  const handleReactionButtonClick = (reactionType) => {
@@ -53977,7 +54020,7 @@ var UnMemoizedReactionsList = (props) => {
53977
54020
  setSelectedReactionType(reactionType);
53978
54021
  };
53979
54022
  if (!hasReactions) return null;
53980
- return /* @__PURE__ */ import_react221.default.createElement(import_react221.default.Fragment, null, /* @__PURE__ */ import_react221.default.createElement(
54023
+ return /* @__PURE__ */ import_react222.default.createElement(import_react222.default.Fragment, null, /* @__PURE__ */ import_react222.default.createElement(
53981
54024
  "div",
53982
54025
  {
53983
54026
  "aria-label": t2("aria/Reaction list"),
@@ -53988,8 +54031,8 @@ var UnMemoizedReactionsList = (props) => {
53988
54031
  "data-testid": "reaction-list",
53989
54032
  role: "figure"
53990
54033
  },
53991
- /* @__PURE__ */ import_react221.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
53992
- ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react221.default.createElement(
54034
+ /* @__PURE__ */ import_react222.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
54035
+ ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react222.default.createElement(
53993
54036
  "li",
53994
54037
  {
53995
54038
  className: (0, import_clsx57.default)("str-chat__message-reaction", {
@@ -53997,7 +54040,7 @@ var UnMemoizedReactionsList = (props) => {
53997
54040
  }),
53998
54041
  key: reactionType
53999
54042
  },
54000
- /* @__PURE__ */ import_react221.default.createElement(
54043
+ /* @__PURE__ */ import_react222.default.createElement(
54001
54044
  "button",
54002
54045
  {
54003
54046
  "aria-label": `Reactions: ${reactionType}`,
@@ -54005,9 +54048,9 @@ var UnMemoizedReactionsList = (props) => {
54005
54048
  onClick: () => handleReactionButtonClick(reactionType),
54006
54049
  type: "button"
54007
54050
  },
54008
- /* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react221.default.createElement(EmojiComponent, null)),
54051
+ /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react222.default.createElement(EmojiComponent, null)),
54009
54052
  "\xA0",
54010
- /* @__PURE__ */ import_react221.default.createElement(
54053
+ /* @__PURE__ */ import_react222.default.createElement(
54011
54054
  "span",
54012
54055
  {
54013
54056
  className: "str-chat__message-reaction-count",
@@ -54017,8 +54060,8 @@ var UnMemoizedReactionsList = (props) => {
54017
54060
  )
54018
54061
  )
54019
54062
  )
54020
- ), /* @__PURE__ */ import_react221.default.createElement("li", null, /* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
54021
- ), selectedReactionType !== null && /* @__PURE__ */ import_react221.default.createElement(
54063
+ ), /* @__PURE__ */ import_react222.default.createElement("li", null, /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
54064
+ ), selectedReactionType !== null && /* @__PURE__ */ import_react222.default.createElement(
54022
54065
  ReactionsListModal2,
54023
54066
  {
54024
54067
  handleFetchReactions,
@@ -54031,12 +54074,12 @@ var UnMemoizedReactionsList = (props) => {
54031
54074
  }
54032
54075
  ));
54033
54076
  };
54034
- var ReactionsList = import_react221.default.memo(
54077
+ var ReactionsList = import_react222.default.memo(
54035
54078
  UnMemoizedReactionsList
54036
54079
  );
54037
54080
 
54038
54081
  // src/components/Reactions/SimpleReactionsList.tsx
54039
- var import_react222 = __toESM(require("react"));
54082
+ var import_react223 = __toESM(require("react"));
54040
54083
  var import_clsx58 = __toESM(require("clsx"));
54041
54084
  var WithTooltip = ({
54042
54085
  children,
@@ -54044,12 +54087,12 @@ var WithTooltip = ({
54044
54087
  onMouseLeave,
54045
54088
  title
54046
54089
  }) => {
54047
- const [referenceElement, setReferenceElement] = (0, import_react222.useState)(null);
54090
+ const [referenceElement, setReferenceElement] = (0, import_react223.useState)(null);
54048
54091
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
54049
54092
  onMouseEnter,
54050
54093
  onMouseLeave
54051
54094
  });
54052
- return /* @__PURE__ */ import_react222.default.createElement(import_react222.default.Fragment, null, /* @__PURE__ */ import_react222.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react222.default.createElement(
54095
+ return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, /* @__PURE__ */ import_react223.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react223.default.createElement(
54053
54096
  "span",
54054
54097
  {
54055
54098
  onMouseEnter: handleEnter,
@@ -54065,7 +54108,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
54065
54108
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
54066
54109
  const handleReaction = propHandleReaction || contextHandleReaction;
54067
54110
  if (!hasReactions) return null;
54068
- return /* @__PURE__ */ import_react222.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react222.default.createElement(
54111
+ return /* @__PURE__ */ import_react223.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react223.default.createElement(
54069
54112
  "ul",
54070
54113
  {
54071
54114
  className: "str-chat__simple-reactions-list str-chat__message-reactions",
@@ -54074,7 +54117,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
54074
54117
  existingReactions.map(
54075
54118
  ({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
54076
54119
  const tooltipContent = latestReactedUserNames.join(", ");
54077
- return EmojiComponent && /* @__PURE__ */ import_react222.default.createElement(
54120
+ return EmojiComponent && /* @__PURE__ */ import_react223.default.createElement(
54078
54121
  "li",
54079
54122
  {
54080
54123
  className: (0, import_clsx58.default)("str-chat__simple-reactions-list-item", {
@@ -54084,19 +54127,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
54084
54127
  onClick: (event) => handleReaction(reactionType, event),
54085
54128
  onKeyUp: (event) => handleReaction(reactionType, event)
54086
54129
  },
54087
- /* @__PURE__ */ import_react222.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react222.default.createElement(EmojiComponent, null))
54130
+ /* @__PURE__ */ import_react223.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react223.default.createElement(EmojiComponent, null))
54088
54131
  );
54089
54132
  }
54090
54133
  ),
54091
- /* @__PURE__ */ import_react222.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
54134
+ /* @__PURE__ */ import_react223.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
54092
54135
  ));
54093
54136
  };
54094
- var SimpleReactionsList = import_react222.default.memo(
54137
+ var SimpleReactionsList = import_react223.default.memo(
54095
54138
  UnMemoizedSimpleReactionsList
54096
54139
  );
54097
54140
 
54098
54141
  // src/components/Message/MessageEditedTimestamp.tsx
54099
- var import_react223 = __toESM(require("react"));
54142
+ var import_react224 = __toESM(require("react"));
54100
54143
  var import_clsx59 = __toESM(require("clsx"));
54101
54144
  function MessageEditedTimestamp({
54102
54145
  message: propMessage,
@@ -54112,7 +54155,7 @@ function MessageEditedTimestamp({
54112
54155
  if (!isMessageEdited(message)) {
54113
54156
  return null;
54114
54157
  }
54115
- return /* @__PURE__ */ import_react223.default.createElement(
54158
+ return /* @__PURE__ */ import_react224.default.createElement(
54116
54159
  "div",
54117
54160
  {
54118
54161
  className: (0, import_clsx59.default)(
@@ -54123,7 +54166,7 @@ function MessageEditedTimestamp({
54123
54166
  },
54124
54167
  t2("Edited"),
54125
54168
  " ",
54126
- /* @__PURE__ */ import_react223.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
54169
+ /* @__PURE__ */ import_react224.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
54127
54170
  );
54128
54171
  }
54129
54172
 
@@ -54150,8 +54193,8 @@ var MessageSimpleWithContext = (props) => {
54150
54193
  } = props;
54151
54194
  const { client } = useChatContext("MessageSimple");
54152
54195
  const { t: t2 } = useTranslationContext("MessageSimple");
54153
- const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react224.useState)(false);
54154
- const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react224.useState)(false);
54196
+ const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react225.useState)(false);
54197
+ const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react225.useState)(false);
54155
54198
  const {
54156
54199
  Attachment: Attachment2 = Attachment,
54157
54200
  Avatar: Avatar2 = Avatar,
@@ -54172,7 +54215,7 @@ var MessageSimpleWithContext = (props) => {
54172
54215
  } = useComponentContext("MessageSimple");
54173
54216
  const hasAttachment = messageHasAttachments(message);
54174
54217
  const hasReactions = messageHasReactions(message);
54175
- const isAIGenerated = (0, import_react224.useMemo)(
54218
+ const isAIGenerated = (0, import_react225.useMemo)(
54176
54219
  () => isMessageAIGenerated?.(message),
54177
54220
  [isMessageAIGenerated, message]
54178
54221
  );
@@ -54180,10 +54223,10 @@ var MessageSimpleWithContext = (props) => {
54180
54223
  return null;
54181
54224
  }
54182
54225
  if (message.deleted_at || message.type === "deleted") {
54183
- return /* @__PURE__ */ import_react224.default.createElement(MessageDeleted2, { message });
54226
+ return /* @__PURE__ */ import_react225.default.createElement(MessageDeleted2, { message });
54184
54227
  }
54185
54228
  if (isMessageBlocked(message)) {
54186
- return /* @__PURE__ */ import_react224.default.createElement(MessageBlocked2, null);
54229
+ return /* @__PURE__ */ import_react225.default.createElement(MessageBlocked2, null);
54187
54230
  }
54188
54231
  const showMetadata = !groupedByUser || endOfGroup;
54189
54232
  const showReplyCountButton = !threadList && !!message.reply_count;
@@ -54217,14 +54260,14 @@ var MessageSimpleWithContext = (props) => {
54217
54260
  }
54218
54261
  );
54219
54262
  const poll = message.poll_id && client.polls.fromState(message.poll_id);
54220
- return /* @__PURE__ */ import_react224.default.createElement(import_react224.default.Fragment, null, editing && /* @__PURE__ */ import_react224.default.createElement(
54263
+ return /* @__PURE__ */ import_react225.default.createElement(import_react225.default.Fragment, null, editing && /* @__PURE__ */ import_react225.default.createElement(
54221
54264
  Modal,
54222
54265
  {
54223
54266
  className: "str-chat__edit-message-modal",
54224
54267
  onClose: clearEditingState,
54225
54268
  open: editing
54226
54269
  },
54227
- /* @__PURE__ */ import_react224.default.createElement(
54270
+ /* @__PURE__ */ import_react225.default.createElement(
54228
54271
  MessageInput,
54229
54272
  {
54230
54273
  clearEditingState,
@@ -54235,14 +54278,14 @@ var MessageSimpleWithContext = (props) => {
54235
54278
  ...additionalMessageInputProps
54236
54279
  }
54237
54280
  )
54238
- ), isBounceDialogOpen && /* @__PURE__ */ import_react224.default.createElement(
54281
+ ), isBounceDialogOpen && /* @__PURE__ */ import_react225.default.createElement(
54239
54282
  MessageBounceModal,
54240
54283
  {
54241
54284
  MessageBouncePrompt: MessageBouncePrompt2,
54242
54285
  onClose: () => setIsBounceDialogOpen(false),
54243
54286
  open: isBounceDialogOpen
54244
54287
  }
54245
- ), /* @__PURE__ */ import_react224.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react224.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react224.default.createElement(
54288
+ ), /* @__PURE__ */ import_react225.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react225.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react225.default.createElement(
54246
54289
  Avatar2,
54247
54290
  {
54248
54291
  image: message.user.image,
@@ -54251,7 +54294,7 @@ var MessageSimpleWithContext = (props) => {
54251
54294
  onMouseOver: onUserHover,
54252
54295
  user: message.user
54253
54296
  }
54254
- ), /* @__PURE__ */ import_react224.default.createElement(
54297
+ ), /* @__PURE__ */ import_react225.default.createElement(
54255
54298
  "div",
54256
54299
  {
54257
54300
  className: (0, import_clsx60.default)("str-chat__message-inner", {
@@ -54261,37 +54304,37 @@ var MessageSimpleWithContext = (props) => {
54261
54304
  onClick: handleClick,
54262
54305
  onKeyUp: handleClick
54263
54306
  },
54264
- /* @__PURE__ */ import_react224.default.createElement(MessageActions2, null),
54265
- /* @__PURE__ */ import_react224.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react224.default.createElement(ReactionsList2, { reverse: true })),
54266
- /* @__PURE__ */ import_react224.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react224.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react224.default.createElement(
54307
+ /* @__PURE__ */ import_react225.default.createElement(MessageActions2, null),
54308
+ /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react225.default.createElement(ReactionsList2, { reverse: true })),
54309
+ /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react225.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react225.default.createElement(
54267
54310
  Attachment2,
54268
54311
  {
54269
54312
  actionHandler: handleAction,
54270
54313
  attachments: message.attachments
54271
54314
  }
54272
- ) : null, isAIGenerated ? /* @__PURE__ */ import_react224.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react224.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react224.default.createElement(
54315
+ ) : null, isAIGenerated ? /* @__PURE__ */ import_react225.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react225.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react225.default.createElement(
54273
54316
  MML,
54274
54317
  {
54275
54318
  actionHandler: handleAction,
54276
54319
  align: isMyMessage() ? "right" : "left",
54277
54320
  source: message.mml
54278
54321
  }
54279
- ), /* @__PURE__ */ import_react224.default.createElement(MessageErrorIcon, null))
54280
- ), showReplyCountButton && /* @__PURE__ */ import_react224.default.createElement(
54322
+ ), /* @__PURE__ */ import_react225.default.createElement(MessageErrorIcon, null))
54323
+ ), showReplyCountButton && /* @__PURE__ */ import_react225.default.createElement(
54281
54324
  MessageRepliesCountButton2,
54282
54325
  {
54283
54326
  onClick: handleOpenThread,
54284
54327
  reply_count: message.reply_count
54285
54328
  }
54286
- ), showMetadata && /* @__PURE__ */ import_react224.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react224.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react224.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react224.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react224.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react224.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
54329
+ ), showMetadata && /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react225.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react225.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react225.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react225.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react225.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
54287
54330
  };
54288
- var MemoizedMessageSimple = import_react224.default.memo(
54331
+ var MemoizedMessageSimple = import_react225.default.memo(
54289
54332
  MessageSimpleWithContext,
54290
54333
  areMessageUIPropsEqual
54291
54334
  );
54292
54335
  var MessageSimple = (props) => {
54293
54336
  const messageContext = useMessageContext("MessageSimple");
54294
- return /* @__PURE__ */ import_react224.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
54337
+ return /* @__PURE__ */ import_react225.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
54295
54338
  };
54296
54339
 
54297
54340
  // src/components/Message/Message.tsx
@@ -54327,11 +54370,11 @@ var MessageWithContext = (props) => {
54327
54370
  canReply,
54328
54371
  isMyMessage
54329
54372
  } = userRoles;
54330
- const messageIsUnread = (0, import_react225.useMemo)(
54373
+ const messageIsUnread = (0, import_react226.useMemo)(
54331
54374
  () => !!(!isMyMessage && client.user?.id && read && (!read[client.user.id] || message?.created_at && new Date(message.created_at).getTime() > read[client.user.id].last_read.getTime())),
54332
54375
  [client, isMyMessage, message.created_at, read]
54333
54376
  );
54334
- const messageActionsHandler = (0, import_react225.useCallback)(
54377
+ const messageActionsHandler = (0, import_react226.useCallback)(
54335
54378
  () => getMessageActions(messageActions, {
54336
54379
  canDelete,
54337
54380
  canEdit,
@@ -54385,9 +54428,9 @@ var MessageWithContext = (props) => {
54385
54428
  onUserHover,
54386
54429
  setEditingState: setEdit
54387
54430
  };
54388
- return /* @__PURE__ */ import_react225.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react225.default.createElement(MessageUIComponent, { groupedByUser }));
54431
+ return /* @__PURE__ */ import_react226.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react226.default.createElement(MessageUIComponent, { groupedByUser }));
54389
54432
  };
54390
- var MemoizedMessage = import_react225.default.memo(
54433
+ var MemoizedMessage = import_react226.default.memo(
54391
54434
  MessageWithContext,
54392
54435
  areMessagePropsEqual
54393
54436
  );
@@ -54454,7 +54497,7 @@ var Message = (props) => {
54454
54497
  notify: addNotification
54455
54498
  });
54456
54499
  const highlighted = highlightedMessageId === message.id;
54457
- return /* @__PURE__ */ import_react225.default.createElement(
54500
+ return /* @__PURE__ */ import_react226.default.createElement(
54458
54501
  MemoizedMessage,
54459
54502
  {
54460
54503
  additionalMessageInputProps: props.additionalMessageInputProps,
@@ -54506,15 +54549,15 @@ var Message = (props) => {
54506
54549
  // src/components/MessageList/GiphyPreviewMessage.tsx
54507
54550
  var GiphyPreviewMessage = (props) => {
54508
54551
  const { message } = props;
54509
- return /* @__PURE__ */ import_react226.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react226.default.createElement(Message, { message }));
54552
+ return /* @__PURE__ */ import_react227.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react227.default.createElement(Message, { message }));
54510
54553
  };
54511
54554
 
54512
54555
  // src/components/MessageList/MessageList.tsx
54513
54556
  var import_clsx62 = __toESM(require("clsx"));
54514
- var import_react245 = __toESM(require("react"));
54557
+ var import_react246 = __toESM(require("react"));
54515
54558
 
54516
54559
  // src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
54517
- var import_react227 = require("react");
54560
+ var import_react228 = require("react");
54518
54561
 
54519
54562
  // src/components/MessageList/utils.ts
54520
54563
  var import_nanoid9 = require("nanoid");
@@ -54721,7 +54764,7 @@ var useEnrichedMessages = (args) => {
54721
54764
  } = args;
54722
54765
  const { client } = useChatContext("useEnrichedMessages");
54723
54766
  const { HeaderComponent } = useComponentContext("useEnrichedMessages");
54724
- const lastRead = (0, import_react227.useMemo)(() => channel.lastRead?.(), [channel]);
54767
+ const lastRead = (0, import_react228.useMemo)(() => channel.lastRead?.(), [channel]);
54725
54768
  const enableDateSeparator = !disableDateSeparator;
54726
54769
  let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
54727
54770
  enableDateSeparator,
@@ -54736,7 +54779,7 @@ var useEnrichedMessages = (args) => {
54736
54779
  messagesWithDates = insertIntro(messagesWithDates, headerPosition);
54737
54780
  }
54738
54781
  const groupStylesFn = groupStyles || getGroupStyles;
54739
- const messageGroupStyles = (0, import_react227.useMemo)(
54782
+ const messageGroupStyles = (0, import_react228.useMemo)(
54740
54783
  () => messagesWithDates.reduce((acc, message, i) => {
54741
54784
  const style = groupStylesFn(
54742
54785
  message,
@@ -54755,13 +54798,13 @@ var useEnrichedMessages = (args) => {
54755
54798
  };
54756
54799
 
54757
54800
  // src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
54758
- var import_react229 = require("react");
54801
+ var import_react230 = require("react");
54759
54802
 
54760
54803
  // src/components/MessageList/hooks/useLastReadData.ts
54761
- var import_react228 = require("react");
54804
+ var import_react229 = require("react");
54762
54805
  var useLastReadData = (props) => {
54763
54806
  const { messages, read, returnAllReadData, userID } = props;
54764
- return (0, import_react228.useMemo)(
54807
+ return (0, import_react229.useMemo)(
54765
54808
  () => getReadStates(
54766
54809
  messages.filter(({ user }) => user?.id === userID),
54767
54810
  read,
@@ -54793,11 +54836,11 @@ var useMessageListElements = (props) => {
54793
54836
  returnAllReadData,
54794
54837
  userID: client.userID
54795
54838
  });
54796
- const lastReceivedMessageId = (0, import_react229.useMemo)(
54839
+ const lastReceivedMessageId = (0, import_react230.useMemo)(
54797
54840
  () => getLastReceived(enrichedMessages),
54798
54841
  [enrichedMessages]
54799
54842
  );
54800
- const elements = (0, import_react229.useMemo)(
54843
+ const elements = (0, import_react230.useMemo)(
54801
54844
  () => renderMessages({
54802
54845
  channelUnreadUiState,
54803
54846
  components,
@@ -54824,7 +54867,7 @@ var useMessageListElements = (props) => {
54824
54867
  };
54825
54868
 
54826
54869
  // src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
54827
- var import_react230 = require("react");
54870
+ var import_react231 = require("react");
54828
54871
  function useMessageListScrollManager(params) {
54829
54872
  const {
54830
54873
  loadMoreScrollThreshold,
@@ -54835,13 +54878,13 @@ function useMessageListScrollManager(params) {
54835
54878
  showNewMessages
54836
54879
  } = params;
54837
54880
  const { client } = useChatContext("useMessageListScrollManager");
54838
- const measures = (0, import_react230.useRef)({
54881
+ const measures = (0, import_react231.useRef)({
54839
54882
  offsetHeight: 0,
54840
54883
  scrollHeight: 0
54841
54884
  });
54842
- const messages = (0, import_react230.useRef)(void 0);
54843
- const scrollTop = (0, import_react230.useRef)(0);
54844
- (0, import_react230.useLayoutEffect)(() => {
54885
+ const messages = (0, import_react231.useRef)(void 0);
54886
+ const scrollTop = (0, import_react231.useRef)(0);
54887
+ (0, import_react231.useLayoutEffect)(() => {
54845
54888
  const prevMeasures = measures.current;
54846
54889
  const prevMessages = messages.current;
54847
54890
  const newMessages = params.messages;
@@ -54881,7 +54924,7 @@ function useMessageListScrollManager(params) {
54881
54924
  }
54882
54925
 
54883
54926
  // src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
54884
- var import_react231 = require("react");
54927
+ var import_react232 = require("react");
54885
54928
  var useScrollLocationLogic = (params) => {
54886
54929
  const {
54887
54930
  hasMoreNewer,
@@ -54891,12 +54934,12 @@ var useScrollLocationLogic = (params) => {
54891
54934
  scrolledUpThreshold = 200,
54892
54935
  suppressAutoscroll
54893
54936
  } = params;
54894
- const [hasNewMessages, setHasNewMessages] = (0, import_react231.useState)(false);
54895
- const [wrapperRect, setWrapperRect] = (0, import_react231.useState)();
54896
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react231.useState)(true);
54897
- const closeToBottom = (0, import_react231.useRef)(false);
54898
- const closeToTop = (0, import_react231.useRef)(false);
54899
- const scrollToBottom = (0, import_react231.useCallback)(() => {
54937
+ const [hasNewMessages, setHasNewMessages] = (0, import_react232.useState)(false);
54938
+ const [wrapperRect, setWrapperRect] = (0, import_react232.useState)();
54939
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react232.useState)(true);
54940
+ const closeToBottom = (0, import_react232.useRef)(false);
54941
+ const closeToTop = (0, import_react232.useRef)(false);
54942
+ const scrollToBottom = (0, import_react232.useCallback)(() => {
54900
54943
  if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
54901
54944
  return;
54902
54945
  }
@@ -54905,7 +54948,7 @@ var useScrollLocationLogic = (params) => {
54905
54948
  });
54906
54949
  setHasNewMessages(false);
54907
54950
  }, [listElement, hasMoreNewer, suppressAutoscroll]);
54908
- (0, import_react231.useLayoutEffect)(() => {
54951
+ (0, import_react232.useLayoutEffect)(() => {
54909
54952
  if (listElement) {
54910
54953
  setWrapperRect(listElement.getBoundingClientRect());
54911
54954
  scrollToBottom();
@@ -54925,7 +54968,7 @@ var useScrollLocationLogic = (params) => {
54925
54968
  scrollToBottom,
54926
54969
  showNewMessages: () => setHasNewMessages(true)
54927
54970
  });
54928
- const onScroll = (0, import_react231.useCallback)(
54971
+ const onScroll = (0, import_react232.useCallback)(
54929
54972
  (event) => {
54930
54973
  const element3 = event.target;
54931
54974
  const scrollTop = element3.scrollTop;
@@ -54956,22 +54999,22 @@ var useScrollLocationLogic = (params) => {
54956
54999
  };
54957
55000
 
54958
55001
  // src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
54959
- var import_react234 = require("react");
55002
+ var import_react235 = require("react");
54960
55003
 
54961
55004
  // src/components/MessageList/MessageListMainPanel.tsx
54962
- var import_react232 = __toESM(require("react"));
55005
+ var import_react233 = __toESM(require("react"));
54963
55006
  var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
54964
- var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react232.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
55007
+ var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react233.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
54965
55008
 
54966
55009
  // src/components/MessageList/UnreadMessagesSeparator.tsx
54967
- var import_react233 = __toESM(require("react"));
55010
+ var import_react234 = __toESM(require("react"));
54968
55011
  var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
54969
55012
  var UnreadMessagesSeparator = ({
54970
55013
  showCount,
54971
55014
  unreadCount
54972
55015
  }) => {
54973
55016
  const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
54974
- return /* @__PURE__ */ import_react233.default.createElement(
55017
+ return /* @__PURE__ */ import_react234.default.createElement(
54975
55018
  "div",
54976
55019
  {
54977
55020
  className: UNREAD_MESSAGE_SEPARATOR_CLASS,
@@ -54997,10 +55040,10 @@ var useUnreadMessagesNotification = ({
54997
55040
  unreadCount
54998
55041
  }) => {
54999
55042
  const { messages } = useChannelStateContext("UnreadMessagesNotification");
55000
- const [show, setShow] = (0, import_react234.useState)(false);
55001
- const isScrolledAboveTargetTop = (0, import_react234.useRef)(false);
55043
+ const [show, setShow] = (0, import_react235.useState)(false);
55044
+ const isScrolledAboveTargetTop = (0, import_react235.useRef)(false);
55002
55045
  const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
55003
- (0, import_react234.useEffect)(() => {
55046
+ (0, import_react235.useEffect)(() => {
55004
55047
  if (!(unreadCount && intersectionObserverIsSupported)) {
55005
55048
  setShow(false);
55006
55049
  return;
@@ -55047,7 +55090,7 @@ var useUnreadMessagesNotification = ({
55047
55090
  showAlways,
55048
55091
  unreadCount
55049
55092
  ]);
55050
- (0, import_react234.useEffect)(() => {
55093
+ (0, import_react235.useEffect)(() => {
55051
55094
  if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
55052
55095
  setShow(true);
55053
55096
  isScrolledAboveTargetTop.current = false;
@@ -55057,7 +55100,7 @@ var useUnreadMessagesNotification = ({
55057
55100
  };
55058
55101
 
55059
55102
  // src/components/MessageList/hooks/useMarkRead.ts
55060
- var import_react235 = require("react");
55103
+ var import_react236 = require("react");
55061
55104
  var hasReadLastMessage = (channel, userId) => {
55062
55105
  const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
55063
55106
  const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
@@ -55071,7 +55114,7 @@ var useMarkRead = ({
55071
55114
  const { client } = useChatContext("useMarkRead");
55072
55115
  const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
55073
55116
  const { channel } = useChannelStateContext("useMarkRead");
55074
- (0, import_react235.useEffect)(() => {
55117
+ (0, import_react236.useEffect)(() => {
55075
55118
  const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
55076
55119
  const onVisibilityChange = () => {
55077
55120
  if (shouldMarkRead()) markRead();
@@ -55130,11 +55173,11 @@ function getPreviousLastMessage(messages, newMessage) {
55130
55173
  }
55131
55174
 
55132
55175
  // src/components/MessageList/MessageNotification.tsx
55133
- var import_react236 = __toESM(require("react"));
55176
+ var import_react237 = __toESM(require("react"));
55134
55177
  var UnMemoizedMessageNotification = (props) => {
55135
55178
  const { children, onClick, showNotification = true } = props;
55136
55179
  if (!showNotification) return null;
55137
- return /* @__PURE__ */ import_react236.default.createElement(
55180
+ return /* @__PURE__ */ import_react237.default.createElement(
55138
55181
  "button",
55139
55182
  {
55140
55183
  "aria-live": "polite",
@@ -55145,12 +55188,12 @@ var UnMemoizedMessageNotification = (props) => {
55145
55188
  children
55146
55189
  );
55147
55190
  };
55148
- var MessageNotification = import_react236.default.memo(
55191
+ var MessageNotification = import_react237.default.memo(
55149
55192
  UnMemoizedMessageNotification
55150
55193
  );
55151
55194
 
55152
55195
  // src/components/MessageList/MessageListNotifications.tsx
55153
- var import_react237 = __toESM(require("react"));
55196
+ var import_react238 = __toESM(require("react"));
55154
55197
  var MessageListNotifications = (props) => {
55155
55198
  const {
55156
55199
  hasNewMessages,
@@ -55163,7 +55206,7 @@ var MessageListNotifications = (props) => {
55163
55206
  unreadCount
55164
55207
  } = props;
55165
55208
  const { t: t2 } = useTranslationContext("MessageListNotifications");
55166
- return /* @__PURE__ */ import_react237.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react237.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react237.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react237.default.createElement(
55209
+ return /* @__PURE__ */ import_react238.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react238.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react238.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react238.default.createElement(
55167
55210
  MessageNotification2,
55168
55211
  {
55169
55212
  isMessageListScrolledToBottom,
@@ -55177,11 +55220,11 @@ var MessageListNotifications = (props) => {
55177
55220
  };
55178
55221
 
55179
55222
  // src/components/MessageList/UnreadMessagesNotification.tsx
55180
- var import_react239 = __toESM(require("react"));
55223
+ var import_react240 = __toESM(require("react"));
55181
55224
 
55182
55225
  // src/components/MessageList/icons.tsx
55183
- var import_react238 = __toESM(require("react"));
55184
- var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react238.default.createElement(
55226
+ var import_react239 = __toESM(require("react"));
55227
+ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react239.default.createElement(
55185
55228
  "svg",
55186
55229
  {
55187
55230
  className,
@@ -55192,7 +55235,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
55192
55235
  width: "24",
55193
55236
  xmlns: "http://www.w3.org/2000/svg"
55194
55237
  },
55195
- /* @__PURE__ */ import_react238.default.createElement(
55238
+ /* @__PURE__ */ import_react239.default.createElement(
55196
55239
  "path",
55197
55240
  {
55198
55241
  d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
@@ -55200,7 +55243,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react23
55200
55243
  }
55201
55244
  )
55202
55245
  );
55203
- var CloseIcon2 = () => /* @__PURE__ */ import_react238.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react238.default.createElement("path", { d: "M1.32227 12.3408C0.944336 11.9629 0.953125 11.3213 1.32227 10.9521L5.60254 6.66309L1.32227 2.38281C0.953125 2.01367 0.944336 1.37207 1.32227 0.994141C1.7002 0.616211 2.3418 0.625 2.71094 0.985352L7 5.27441L11.2803 0.994141C11.6494 0.625 12.291 0.616211 12.6689 0.994141C13.0469 1.37207 13.0381 2.01367 12.6689 2.38281L8.38867 6.66309L12.6689 10.9521C13.0381 11.3213 13.0469 11.9629 12.6689 12.3408C12.291 12.7188 11.6494 12.71 11.2803 12.3408L7 8.06055L2.71094 12.3408C2.3418 12.71 1.7002 12.7188 1.32227 12.3408Z" }));
55246
+ var CloseIcon2 = () => /* @__PURE__ */ import_react239.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react239.default.createElement("path", { d: "M1.32227 12.3408C0.944336 11.9629 0.953125 11.3213 1.32227 10.9521L5.60254 6.66309L1.32227 2.38281C0.953125 2.01367 0.944336 1.37207 1.32227 0.994141C1.7002 0.616211 2.3418 0.625 2.71094 0.985352L7 5.27441L11.2803 0.994141C11.6494 0.625 12.291 0.616211 12.6689 0.994141C13.0469 1.37207 13.0381 2.01367 12.6689 2.38281L8.38867 6.66309L12.6689 10.9521C13.0381 11.3213 13.0469 11.9629 12.6689 12.3408C12.291 12.7188 11.6494 12.71 11.2803 12.3408L7 8.06055L2.71094 12.3408C2.3418 12.71 1.7002 12.7188 1.32227 12.3408Z" }));
55204
55247
 
55205
55248
  // src/components/MessageList/UnreadMessagesNotification.tsx
55206
55249
  var UnreadMessagesNotification = ({
@@ -55212,19 +55255,19 @@ var UnreadMessagesNotification = ({
55212
55255
  "UnreadMessagesNotification"
55213
55256
  );
55214
55257
  const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
55215
- return /* @__PURE__ */ import_react239.default.createElement(
55258
+ return /* @__PURE__ */ import_react240.default.createElement(
55216
55259
  "div",
55217
55260
  {
55218
55261
  className: "str-chat__unread-messages-notification",
55219
55262
  "data-testid": "unread-messages-notification"
55220
55263
  },
55221
- /* @__PURE__ */ import_react239.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
55222
- /* @__PURE__ */ import_react239.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react239.default.createElement(CloseIcon2, null))
55264
+ /* @__PURE__ */ import_react240.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
55265
+ /* @__PURE__ */ import_react240.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react240.default.createElement(CloseIcon2, null))
55223
55266
  );
55224
55267
  };
55225
55268
 
55226
55269
  // src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
55227
- var import_react240 = __toESM(require("react"));
55270
+ var import_react241 = __toESM(require("react"));
55228
55271
  var mousewheelListener2 = (event) => {
55229
55272
  if (event instanceof WheelEvent && event.deltaY === 1) {
55230
55273
  event.preventDefault();
@@ -55255,10 +55298,10 @@ var InfiniteScroll = (props) => {
55255
55298
  const loadPreviousPageFn = loadPreviousPage || loadMore;
55256
55299
  const hasNextPageFlag = hasNextPage || hasMoreNewer;
55257
55300
  const hasPreviousPageFlag = hasPreviousPage || hasMore;
55258
- const scrollComponent = (0, import_react240.useRef)(void 0);
55259
- const previousOffset = (0, import_react240.useRef)(void 0);
55260
- const previousReverseOffset = (0, import_react240.useRef)(void 0);
55261
- const scrollListenerRef = (0, import_react240.useRef)(void 0);
55301
+ const scrollComponent = (0, import_react241.useRef)(void 0);
55302
+ const previousOffset = (0, import_react241.useRef)(void 0);
55303
+ const previousReverseOffset = (0, import_react241.useRef)(void 0);
55304
+ const scrollListenerRef = (0, import_react241.useRef)(void 0);
55262
55305
  scrollListenerRef.current = () => {
55263
55306
  const element4 = scrollComponent.current;
55264
55307
  if (!element4 || element4.offsetParent === null) {
@@ -55282,7 +55325,7 @@ var InfiniteScroll = (props) => {
55282
55325
  loadNextPageFn();
55283
55326
  }
55284
55327
  };
55285
- (0, import_react240.useEffect)(() => {
55328
+ (0, import_react241.useEffect)(() => {
55286
55329
  deprecationAndReplacementWarning(
55287
55330
  [
55288
55331
  [{ hasMoreNewer }, { hasNextPage }],
@@ -55293,7 +55336,7 @@ var InfiniteScroll = (props) => {
55293
55336
  "InfiniteScroll"
55294
55337
  );
55295
55338
  }, []);
55296
- (0, import_react240.useEffect)(() => {
55339
+ (0, import_react241.useEffect)(() => {
55297
55340
  const scrollElement = scrollComponent.current?.parentNode;
55298
55341
  if (!scrollElement) return;
55299
55342
  const scrollListener = () => scrollListenerRef.current?.();
@@ -55305,7 +55348,7 @@ var InfiniteScroll = (props) => {
55305
55348
  scrollElement.removeEventListener("resize", scrollListener, useCapture);
55306
55349
  };
55307
55350
  }, [initialLoad, useCapture]);
55308
- (0, import_react240.useEffect)(() => {
55351
+ (0, import_react241.useEffect)(() => {
55309
55352
  const scrollElement = scrollComponent.current?.parentNode;
55310
55353
  if (scrollElement) {
55311
55354
  scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
@@ -55326,11 +55369,11 @@ var InfiniteScroll = (props) => {
55326
55369
  if (head) {
55327
55370
  childrenArray.unshift(head);
55328
55371
  }
55329
- return import_react240.default.createElement(element3, attributes, childrenArray);
55372
+ return import_react241.default.createElement(element3, attributes, childrenArray);
55330
55373
  };
55331
55374
 
55332
55375
  // src/components/TypingIndicator/TypingIndicator.tsx
55333
- var import_react241 = __toESM(require("react"));
55376
+ var import_react242 = __toESM(require("react"));
55334
55377
  var import_clsx61 = __toESM(require("clsx"));
55335
55378
  var useJoinTypingUsers = (names) => {
55336
55379
  const { t: t2 } = useTranslationContext();
@@ -55368,7 +55411,7 @@ var UnMemoizedTypingIndicator = (props) => {
55368
55411
  return null;
55369
55412
  }
55370
55413
  if (!isTypingActive) return null;
55371
- return /* @__PURE__ */ import_react241.default.createElement(
55414
+ return /* @__PURE__ */ import_react242.default.createElement(
55372
55415
  "div",
55373
55416
  {
55374
55417
  className: (0, import_clsx61.default)("str-chat__typing-indicator", {
@@ -55376,19 +55419,19 @@ var UnMemoizedTypingIndicator = (props) => {
55376
55419
  }),
55377
55420
  "data-testid": "typing-indicator"
55378
55421
  },
55379
- /* @__PURE__ */ import_react241.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react241.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react241.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react241.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
55380
- /* @__PURE__ */ import_react241.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
55422
+ /* @__PURE__ */ import_react242.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react242.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react242.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react242.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
55423
+ /* @__PURE__ */ import_react242.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
55381
55424
  );
55382
55425
  };
55383
- var TypingIndicator = import_react241.default.memo(
55426
+ var TypingIndicator = import_react242.default.memo(
55384
55427
  UnMemoizedTypingIndicator
55385
55428
  );
55386
55429
 
55387
55430
  // src/components/MessageList/renderMessages.tsx
55388
- var import_react244 = __toESM(require("react"));
55431
+ var import_react245 = __toESM(require("react"));
55389
55432
 
55390
55433
  // src/components/DateSeparator/DateSeparator.tsx
55391
- var import_react242 = __toESM(require("react"));
55434
+ var import_react243 = __toESM(require("react"));
55392
55435
  var UnMemoizedDateSeparator = (props) => {
55393
55436
  const {
55394
55437
  calendar: calendar3,
@@ -55408,21 +55451,21 @@ var UnMemoizedDateSeparator = (props) => {
55408
55451
  tDateTimeParser,
55409
55452
  timestampTranslationKey: "timestamp/DateSeparator"
55410
55453
  });
55411
- return /* @__PURE__ */ import_react242.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react242.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react242.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react242.default.createElement("hr", { className: "str-chat__date-separator-line" }));
55454
+ return /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react243.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react243.default.createElement("hr", { className: "str-chat__date-separator-line" }));
55412
55455
  };
55413
- var DateSeparator = import_react242.default.memo(
55456
+ var DateSeparator = import_react243.default.memo(
55414
55457
  UnMemoizedDateSeparator
55415
55458
  );
55416
55459
 
55417
55460
  // src/components/EventComponent/EventComponent.tsx
55418
- var import_react243 = __toESM(require("react"));
55461
+ var import_react244 = __toESM(require("react"));
55419
55462
  var UnMemoizedEventComponent = (props) => {
55420
55463
  const { Avatar: Avatar2 = Avatar, calendar: calendar3, calendarFormats, format, message } = props;
55421
55464
  const { t: t2, tDateTimeParser } = useTranslationContext("EventComponent");
55422
55465
  const { created_at = "", event, text: text7, type } = message;
55423
55466
  const getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser };
55424
55467
  if (type === "system")
55425
- return /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react243.default.createElement("p", null, text7), /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react243.default.createElement("strong", null, getDateString({
55468
+ return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react244.default.createElement("p", null, text7), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react244.default.createElement("strong", null, getDateString({
55426
55469
  ...getDateOptions,
55427
55470
  calendar: calendar3,
55428
55471
  calendarFormats,
@@ -55433,11 +55476,11 @@ var UnMemoizedEventComponent = (props) => {
55433
55476
  if (event?.type === "member.removed" || event?.type === "member.added") {
55434
55477
  const name2 = event.user?.name || event.user?.id;
55435
55478
  const sentence = `${name2} ${event.type === "member.added" ? "has joined the chat" : "was removed from the chat"}`;
55436
- return /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react243.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react243.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
55479
+ return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react244.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react244.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
55437
55480
  }
55438
55481
  return null;
55439
55482
  };
55440
- var EventComponent = import_react243.default.memo(
55483
+ var EventComponent = import_react244.default.memo(
55441
55484
  UnMemoizedEventComponent
55442
55485
  );
55443
55486
 
@@ -55465,7 +55508,7 @@ function defaultRenderMessages({
55465
55508
  const message = messages[index3];
55466
55509
  if (isDateSeparatorMessage(message)) {
55467
55510
  renderedMessages.push(
55468
- /* @__PURE__ */ import_react244.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react244.default.createElement(
55511
+ /* @__PURE__ */ import_react245.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react245.default.createElement(
55469
55512
  DateSeparator2,
55470
55513
  {
55471
55514
  date: message.date,
@@ -55476,17 +55519,17 @@ function defaultRenderMessages({
55476
55519
  );
55477
55520
  } else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
55478
55521
  renderedMessages.push(
55479
- /* @__PURE__ */ import_react244.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react244.default.createElement(HeaderComponent, null))
55522
+ /* @__PURE__ */ import_react245.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react245.default.createElement(HeaderComponent, null))
55480
55523
  );
55481
55524
  } else if (message.type === "system") {
55482
55525
  renderedMessages.push(
55483
- /* @__PURE__ */ import_react244.default.createElement(
55526
+ /* @__PURE__ */ import_react245.default.createElement(
55484
55527
  "li",
55485
55528
  {
55486
55529
  "data-message-id": message.id,
55487
55530
  key: message.id || message.created_at
55488
55531
  },
55489
- /* @__PURE__ */ import_react244.default.createElement(MessageSystem, { message })
55532
+ /* @__PURE__ */ import_react245.default.createElement(MessageSystem, { message })
55490
55533
  )
55491
55534
  );
55492
55535
  } else {
@@ -55505,19 +55548,19 @@ function defaultRenderMessages({
55505
55548
  unreadMessageCount: channelUnreadUiState?.unread_messages
55506
55549
  });
55507
55550
  renderedMessages.push(
55508
- /* @__PURE__ */ import_react244.default.createElement(import_react244.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react244.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react244.default.createElement(
55551
+ /* @__PURE__ */ import_react245.default.createElement(import_react245.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react245.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react245.default.createElement(
55509
55552
  UnreadMessagesSeparator2,
55510
55553
  {
55511
55554
  unreadCount: channelUnreadUiState?.unread_messages
55512
55555
  }
55513
- )), /* @__PURE__ */ import_react244.default.createElement(
55556
+ )), /* @__PURE__ */ import_react245.default.createElement(
55514
55557
  "li",
55515
55558
  {
55516
55559
  className: messageClass,
55517
55560
  "data-message-id": message.id,
55518
55561
  "data-testid": messageClass
55519
55562
  },
55520
- /* @__PURE__ */ import_react244.default.createElement(
55563
+ /* @__PURE__ */ import_react245.default.createElement(
55521
55564
  Message,
55522
55565
  {
55523
55566
  groupStyles: [groupStyles],
@@ -55574,8 +55617,8 @@ var MessageListWithContext = (props) => {
55574
55617
  threadList = false,
55575
55618
  unsafeHTML = false
55576
55619
  } = props;
55577
- const [listElement, setListElement] = import_react245.default.useState(null);
55578
- const [ulElement, setUlElement] = import_react245.default.useState(null);
55620
+ const [listElement, setListElement] = import_react246.default.useState(null);
55621
+ const [ulElement, setUlElement] = import_react246.default.useState(null);
55579
55622
  const { customClasses } = useChatContext("MessageList");
55580
55623
  const {
55581
55624
  EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator,
@@ -55663,24 +55706,24 @@ var MessageListWithContext = (props) => {
55663
55706
  threadList
55664
55707
  });
55665
55708
  const messageListClass = customClasses?.messageList || "str-chat__list";
55666
- const loadMore = import_react245.default.useCallback(() => {
55709
+ const loadMore = import_react246.default.useCallback(() => {
55667
55710
  if (loadMoreCallback) {
55668
55711
  loadMoreCallback(messageLimit);
55669
55712
  }
55670
55713
  }, [loadMoreCallback, messageLimit]);
55671
- const loadMoreNewer = import_react245.default.useCallback(() => {
55714
+ const loadMoreNewer = import_react246.default.useCallback(() => {
55672
55715
  if (loadMoreNewerCallback) {
55673
55716
  loadMoreNewerCallback(messageLimit);
55674
55717
  }
55675
55718
  }, [loadMoreNewerCallback, messageLimit]);
55676
- const scrollToBottomFromNotification = import_react245.default.useCallback(async () => {
55719
+ const scrollToBottomFromNotification = import_react246.default.useCallback(async () => {
55677
55720
  if (hasMoreNewer) {
55678
55721
  await jumpToLatestMessage();
55679
55722
  } else {
55680
55723
  scrollToBottom();
55681
55724
  }
55682
55725
  }, [scrollToBottom, hasMoreNewer]);
55683
- import_react245.default.useLayoutEffect(() => {
55726
+ import_react246.default.useLayoutEffect(() => {
55684
55727
  if (highlightedMessageId) {
55685
55728
  const element3 = ulElement?.querySelector(
55686
55729
  `[data-message-id='${highlightedMessageId}']`
@@ -55690,12 +55733,12 @@ var MessageListWithContext = (props) => {
55690
55733
  }, [highlightedMessageId]);
55691
55734
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
55692
55735
  const dialogManagerId = threadList ? "message-list-dialog-manager-thread" : "message-list-dialog-manager";
55693
- return /* @__PURE__ */ import_react245.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react245.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react245.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react245.default.createElement(
55736
+ return /* @__PURE__ */ import_react246.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react246.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react246.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react246.default.createElement(
55694
55737
  UnreadMessagesNotification2,
55695
55738
  {
55696
55739
  unreadCount: channelUnreadUiState?.unread_messages
55697
55740
  }
55698
- ), /* @__PURE__ */ import_react245.default.createElement(
55741
+ ), /* @__PURE__ */ import_react246.default.createElement(
55699
55742
  "div",
55700
55743
  {
55701
55744
  className: (0, import_clsx62.default)(messageListClass, customClasses?.threadList),
@@ -55703,7 +55746,7 @@ var MessageListWithContext = (props) => {
55703
55746
  ref: setListElement,
55704
55747
  tabIndex: 0
55705
55748
  },
55706
- showEmptyStateIndicator ? /* @__PURE__ */ import_react245.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react245.default.createElement(
55749
+ showEmptyStateIndicator ? /* @__PURE__ */ import_react246.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react246.default.createElement(
55707
55750
  InfiniteScroll,
55708
55751
  {
55709
55752
  className: "str-chat__message-list-scroll",
@@ -55712,17 +55755,17 @@ var MessageListWithContext = (props) => {
55712
55755
  hasPreviousPage: props.hasMore,
55713
55756
  head: props.head,
55714
55757
  isLoading: props.loadingMore,
55715
- loader: /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react245.default.createElement(LoadingIndicator2, { size: 20 })),
55758
+ loader: /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react246.default.createElement(LoadingIndicator2, { size: 20 })),
55716
55759
  loadNextPage: loadMoreNewer,
55717
55760
  loadPreviousPage: loadMore,
55718
55761
  threshold: loadMoreScrollThreshold,
55719
55762
  ...restInternalInfiniteScrollProps
55720
55763
  },
55721
- /* @__PURE__ */ import_react245.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
55722
- /* @__PURE__ */ import_react245.default.createElement(TypingIndicator2, { threadList }),
55723
- /* @__PURE__ */ import_react245.default.createElement("div", { key: "bottom" })
55764
+ /* @__PURE__ */ import_react246.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
55765
+ /* @__PURE__ */ import_react246.default.createElement(TypingIndicator2, { threadList }),
55766
+ /* @__PURE__ */ import_react246.default.createElement("div", { key: "bottom" })
55724
55767
  )
55725
- ))), /* @__PURE__ */ import_react245.default.createElement(
55768
+ ))), /* @__PURE__ */ import_react246.default.createElement(
55726
55769
  MessageListNotifications2,
55727
55770
  {
55728
55771
  hasNewMessages,
@@ -55747,7 +55790,7 @@ var MessageList = (props) => {
55747
55790
  // eslint-disable-line @typescript-eslint/no-unused-vars
55748
55791
  ...restChannelStateContext
55749
55792
  } = useChannelStateContext("MessageList");
55750
- return /* @__PURE__ */ import_react245.default.createElement(
55793
+ return /* @__PURE__ */ import_react246.default.createElement(
55751
55794
  MessageListWithContext,
55752
55795
  {
55753
55796
  jumpToLatestMessage,
@@ -55760,16 +55803,16 @@ var MessageList = (props) => {
55760
55803
  };
55761
55804
 
55762
55805
  // src/components/MessageList/ScrollToBottomButton.tsx
55763
- var import_react246 = __toESM(require("react"));
55806
+ var import_react247 = __toESM(require("react"));
55764
55807
  var import_clsx63 = __toESM(require("clsx"));
55765
55808
  var UnMemoizedScrollToBottomButton = (props) => {
55766
55809
  const { isMessageListScrolledToBottom, onClick, threadList } = props;
55767
55810
  const { channel: activeChannel, client } = useChatContext();
55768
55811
  const { thread } = useChannelStateContext();
55769
- const [countUnread, setCountUnread] = (0, import_react246.useState)(activeChannel?.countUnread() || 0);
55770
- const [replyCount, setReplyCount] = (0, import_react246.useState)(thread?.reply_count || 0);
55812
+ const [countUnread, setCountUnread] = (0, import_react247.useState)(activeChannel?.countUnread() || 0);
55813
+ const [replyCount, setReplyCount] = (0, import_react247.useState)(thread?.reply_count || 0);
55771
55814
  const observedEvent = threadList ? "message.updated" : "message.new";
55772
- (0, import_react246.useEffect)(() => {
55815
+ (0, import_react247.useEffect)(() => {
55773
55816
  const handleEvent = (event) => {
55774
55817
  const newMessageInAnotherChannel = event.cid !== activeChannel?.cid;
55775
55818
  const newMessageIsMine = event.user?.id === client.user?.id;
@@ -55791,14 +55834,14 @@ var UnMemoizedScrollToBottomButton = (props) => {
55791
55834
  client.off(observedEvent, handleEvent);
55792
55835
  };
55793
55836
  }, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
55794
- (0, import_react246.useEffect)(() => {
55837
+ (0, import_react247.useEffect)(() => {
55795
55838
  if (isMessageListScrolledToBottom) {
55796
55839
  setCountUnread(0);
55797
55840
  setReplyCount(thread?.reply_count || 0);
55798
55841
  }
55799
55842
  }, [isMessageListScrolledToBottom, thread]);
55800
55843
  if (isMessageListScrolledToBottom) return null;
55801
- return /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react246.default.createElement(
55844
+ return /* @__PURE__ */ import_react247.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react247.default.createElement(
55802
55845
  "button",
55803
55846
  {
55804
55847
  "aria-live": "polite",
@@ -55809,8 +55852,8 @@ var UnMemoizedScrollToBottomButton = (props) => {
55809
55852
  "data-testid": "message-notification",
55810
55853
  onClick
55811
55854
  },
55812
- /* @__PURE__ */ import_react246.default.createElement(ArrowDown, null),
55813
- countUnread > 0 && /* @__PURE__ */ import_react246.default.createElement(
55855
+ /* @__PURE__ */ import_react247.default.createElement(ArrowDown, null),
55856
+ countUnread > 0 && /* @__PURE__ */ import_react247.default.createElement(
55814
55857
  "div",
55815
55858
  {
55816
55859
  className: (0, import_clsx63.default)(
@@ -55823,23 +55866,23 @@ var UnMemoizedScrollToBottomButton = (props) => {
55823
55866
  )
55824
55867
  ));
55825
55868
  };
55826
- var ScrollToBottomButton = import_react246.default.memo(
55869
+ var ScrollToBottomButton = import_react247.default.memo(
55827
55870
  UnMemoizedScrollToBottomButton
55828
55871
  );
55829
55872
 
55830
55873
  // src/components/MessageList/VirtualizedMessageList.tsx
55831
- var import_react256 = __toESM(require("react"));
55874
+ var import_react257 = __toESM(require("react"));
55832
55875
  var import_react_virtuoso2 = require("react-virtuoso");
55833
55876
 
55834
55877
  // src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts
55835
- var import_react247 = require("react");
55878
+ var import_react248 = require("react");
55836
55879
  function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
55837
- const [newMessagesNotification, setNewMessagesNotification] = (0, import_react247.useState)(false);
55838
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react247.useState)(true);
55839
- const didMount = (0, import_react247.useRef)(false);
55840
- const lastMessageId = (0, import_react247.useRef)("");
55841
- const atBottom = (0, import_react247.useRef)(false);
55842
- (0, import_react247.useEffect)(() => {
55880
+ const [newMessagesNotification, setNewMessagesNotification] = (0, import_react248.useState)(false);
55881
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react248.useState)(true);
55882
+ const didMount = (0, import_react248.useRef)(false);
55883
+ const lastMessageId = (0, import_react248.useRef)("");
55884
+ const atBottom = (0, import_react248.useRef)(false);
55885
+ (0, import_react248.useEffect)(() => {
55843
55886
  if (hasMoreNewer) {
55844
55887
  setNewMessagesNotification(true);
55845
55888
  return;
@@ -55865,17 +55908,17 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
55865
55908
  }
55866
55909
 
55867
55910
  // src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts
55868
- var import_react248 = require("react");
55911
+ var import_react249 = require("react");
55869
55912
  var STATUSES_EXCLUDED_FROM_PREPEND = {
55870
55913
  failed: true,
55871
55914
  sending: true
55872
55915
  };
55873
55916
  function usePrependedMessagesCount(messages, hasDateSeparator) {
55874
55917
  const firstRealMessageIndex = hasDateSeparator ? 1 : 0;
55875
- const firstMessageOnFirstLoadedPage = (0, import_react248.useRef)(void 0);
55876
- const previousFirstMessageOnFirstLoadedPage = (0, import_react248.useRef)(void 0);
55877
- const previousNumItemsPrepended = (0, import_react248.useRef)(0);
55878
- const numItemsPrepended = (0, import_react248.useMemo)(() => {
55918
+ const firstMessageOnFirstLoadedPage = (0, import_react249.useRef)(void 0);
55919
+ const previousFirstMessageOnFirstLoadedPage = (0, import_react249.useRef)(void 0);
55920
+ const previousNumItemsPrepended = (0, import_react249.useRef)(0);
55921
+ const numItemsPrepended = (0, import_react249.useMemo)(() => {
55879
55922
  if (!messages || !messages.length) {
55880
55923
  previousNumItemsPrepended.current = 0;
55881
55924
  return 0;
@@ -55905,10 +55948,10 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
55905
55948
  }
55906
55949
 
55907
55950
  // src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts
55908
- var import_react249 = require("react");
55951
+ var import_react250 = require("react");
55909
55952
  function useShouldForceScrollToBottom(messages, currentUserId) {
55910
- const lastFocusedOwnMessage = (0, import_react249.useRef)("");
55911
- const initialFocusRegistered = (0, import_react249.useRef)(false);
55953
+ const lastFocusedOwnMessage = (0, import_react250.useRef)("");
55954
+ const initialFocusRegistered = (0, import_react250.useRef)(false);
55912
55955
  function recheckForNewOwnMessage() {
55913
55956
  if (messages && messages.length > 0) {
55914
55957
  const lastMessage = messages[messages.length - 1];
@@ -55919,7 +55962,7 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
55919
55962
  }
55920
55963
  return false;
55921
55964
  }
55922
- (0, import_react249.useEffect)(() => {
55965
+ (0, import_react250.useEffect)(() => {
55923
55966
  if (messages && messages.length && !initialFocusRegistered.current) {
55924
55967
  initialFocusRegistered.current = true;
55925
55968
  recheckForNewOwnMessage();
@@ -55929,11 +55972,11 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
55929
55972
  }
55930
55973
 
55931
55974
  // src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts
55932
- var import_react250 = require("react");
55975
+ var import_react251 = require("react");
55933
55976
  var useGiphyPreview = (separateGiphyPreview) => {
55934
- const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react250.useState)();
55977
+ const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react251.useState)();
55935
55978
  const { client } = useChatContext("useGiphyPreview");
55936
- (0, import_react250.useEffect)(() => {
55979
+ (0, import_react251.useEffect)(() => {
55937
55980
  const handleEvent = (event) => {
55938
55981
  const { message, user } = event;
55939
55982
  if (message?.command === "giphy" && user?.id === client.userID) {
@@ -55950,13 +55993,13 @@ var useGiphyPreview = (separateGiphyPreview) => {
55950
55993
  };
55951
55994
 
55952
55995
  // src/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.ts
55953
- var import_react251 = require("react");
55996
+ var import_react252 = require("react");
55954
55997
  var useMessageSetKey = ({
55955
55998
  messages
55956
55999
  }) => {
55957
- const [messageSetKey, setMessageSetKey] = (0, import_react251.useState)(+/* @__PURE__ */ new Date());
55958
- const firstMessageId = (0, import_react251.useRef)(void 0);
55959
- (0, import_react251.useEffect)(() => {
56000
+ const [messageSetKey, setMessageSetKey] = (0, import_react252.useState)(+/* @__PURE__ */ new Date());
56001
+ const firstMessageId = (0, import_react252.useRef)(void 0);
56002
+ (0, import_react252.useEffect)(() => {
55960
56003
  const continuousSet = messages?.find(
55961
56004
  (message) => message.id === firstMessageId.current
55962
56005
  );
@@ -55971,24 +56014,24 @@ var useMessageSetKey = ({
55971
56014
  };
55972
56015
 
55973
56016
  // src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
55974
- var import_react252 = require("react");
56017
+ var import_react253 = require("react");
55975
56018
  var useScrollToBottomOnNewMessage = ({
55976
56019
  messages,
55977
56020
  scrollToBottom,
55978
56021
  scrollToLatestMessageOnFocus
55979
56022
  }) => {
55980
- const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react252.useState)(false);
55981
- const scrollToBottomIfConfigured = (0, import_react252.useRef)(void 0);
56023
+ const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react253.useState)(false);
56024
+ const scrollToBottomIfConfigured = (0, import_react253.useRef)(void 0);
55982
56025
  scrollToBottomIfConfigured.current = (event) => {
55983
56026
  if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
55984
56027
  return;
55985
56028
  }
55986
56029
  setTimeout(scrollToBottom, 100);
55987
56030
  };
55988
- (0, import_react252.useEffect)(() => {
56031
+ (0, import_react253.useEffect)(() => {
55989
56032
  setNewMessagesReceivedInBackground(true);
55990
56033
  }, [messages]);
55991
- (0, import_react252.useEffect)(() => {
56034
+ (0, import_react253.useEffect)(() => {
55992
56035
  const handleFocus = (event) => {
55993
56036
  scrollToBottomIfConfigured.current?.(event);
55994
56037
  };
@@ -56007,14 +56050,14 @@ var useScrollToBottomOnNewMessage = ({
56007
56050
  };
56008
56051
 
56009
56052
  // src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
56010
- var import_react253 = require("react");
56053
+ var import_react254 = require("react");
56011
56054
  var useUnreadMessagesNotificationVirtualized = ({
56012
56055
  lastRead,
56013
56056
  showAlways,
56014
56057
  unreadCount
56015
56058
  }) => {
56016
- const [show, setShow] = (0, import_react253.useState)(false);
56017
- const toggleShowUnreadMessagesNotification = (0, import_react253.useCallback)(
56059
+ const [show, setShow] = (0, import_react254.useState)(false);
56060
+ const toggleShowUnreadMessagesNotification = (0, import_react254.useCallback)(
56018
56061
  (renderedMessages) => {
56019
56062
  if (!unreadCount) return;
56020
56063
  const firstRenderedMessage = renderedMessages[0];
@@ -56028,7 +56071,7 @@ var useUnreadMessagesNotificationVirtualized = ({
56028
56071
  },
56029
56072
  [lastRead, showAlways, unreadCount]
56030
56073
  );
56031
- (0, import_react253.useEffect)(() => {
56074
+ (0, import_react254.useEffect)(() => {
56032
56075
  if (!unreadCount) setShow(false);
56033
56076
  }, [unreadCount]);
56034
56077
  return { show, toggleShowUnreadMessagesNotification };
@@ -56037,7 +56080,7 @@ var useUnreadMessagesNotificationVirtualized = ({
56037
56080
  // src/components/MessageList/VirtualizedMessageListComponents.tsx
56038
56081
  var import_clsx64 = __toESM(require("clsx"));
56039
56082
  var import_lodash21 = __toESM(require("lodash.throttle"));
56040
- var import_react254 = __toESM(require("react"));
56083
+ var import_react255 = __toESM(require("react"));
56041
56084
  var PREPEND_OFFSET = 10 ** 7;
56042
56085
  function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
56043
56086
  return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
@@ -56058,10 +56101,10 @@ var Item3 = ({
56058
56101
  context,
56059
56102
  ...props
56060
56103
  }) => {
56061
- if (!context) return /* @__PURE__ */ import_react254.default.createElement(import_react254.default.Fragment, null);
56104
+ if (!context) return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null);
56062
56105
  const message = context.processedMessages[calculateItemIndex(props["data-item-index"], context.numItemsPrepended)];
56063
56106
  const groupStyles = context.messageGroupStyles[message.id];
56064
- return /* @__PURE__ */ import_react254.default.createElement(
56107
+ return /* @__PURE__ */ import_react255.default.createElement(
56065
56108
  "div",
56066
56109
  {
56067
56110
  ...props,
@@ -56075,13 +56118,13 @@ var Header = ({
56075
56118
  context
56076
56119
  }) => {
56077
56120
  const { LoadingIndicator: LoadingIndicator2 = LoadingIndicator } = useComponentContext("VirtualizedMessageListHeader");
56078
- return /* @__PURE__ */ import_react254.default.createElement(import_react254.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react254.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react254.default.createElement(LoadingIndicator2, { size: 20 })));
56121
+ return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react255.default.createElement(LoadingIndicator2, { size: 20 })));
56079
56122
  };
56080
56123
  var EmptyPlaceholder = ({
56081
56124
  context
56082
56125
  }) => {
56083
56126
  const { EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator } = useComponentContext("VirtualizedMessageList");
56084
- return /* @__PURE__ */ import_react254.default.createElement(import_react254.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react254.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
56127
+ return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react255.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
56085
56128
  };
56086
56129
  var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
56087
56130
  const {
@@ -56117,12 +56160,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
56117
56160
  return customMessageRenderer(messageList, streamMessageIndex);
56118
56161
  }
56119
56162
  const message = messageList[streamMessageIndex];
56120
- if (!message) return /* @__PURE__ */ import_react254.default.createElement("div", { style: { height: "1px" } });
56163
+ if (!message) return /* @__PURE__ */ import_react255.default.createElement("div", { style: { height: "1px" } });
56121
56164
  if (isDateSeparatorMessage(message)) {
56122
- return DateSeparator2 ? /* @__PURE__ */ import_react254.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
56165
+ return DateSeparator2 ? /* @__PURE__ */ import_react255.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
56123
56166
  }
56124
56167
  if (message.type === "system") {
56125
- return MessageSystem ? /* @__PURE__ */ import_react254.default.createElement(MessageSystem, { message }) : null;
56168
+ return MessageSystem ? /* @__PURE__ */ import_react255.default.createElement(MessageSystem, { message }) : null;
56126
56169
  }
56127
56170
  const groupedByUser = shouldGroupByUser && streamMessageIndex > 0 && message.user?.id === messageList[streamMessageIndex - 1].user?.id;
56128
56171
  const maybePrevMessage = messageList[streamMessageIndex - 1];
@@ -56138,7 +56181,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
56138
56181
  previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
56139
56182
  unreadMessageCount
56140
56183
  });
56141
- return /* @__PURE__ */ import_react254.default.createElement(import_react254.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react254.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react254.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react254.default.createElement(
56184
+ return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react255.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react255.default.createElement(
56142
56185
  Message,
56143
56186
  {
56144
56187
  additionalMessageInputProps,
@@ -56165,12 +56208,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
56165
56208
  };
56166
56209
 
56167
56210
  // src/context/VirtualizedMessageListContext.tsx
56168
- var import_react255 = __toESM(require("react"));
56169
- var VirtualizedMessageListContext = (0, import_react255.createContext)(void 0);
56211
+ var import_react256 = __toESM(require("react"));
56212
+ var VirtualizedMessageListContext = (0, import_react256.createContext)(void 0);
56170
56213
  var VirtualizedMessageListContextProvider = ({
56171
56214
  children,
56172
56215
  value
56173
- }) => /* @__PURE__ */ import_react255.default.createElement(
56216
+ }) => /* @__PURE__ */ import_react256.default.createElement(
56174
56217
  VirtualizedMessageListContext.Provider,
56175
56218
  {
56176
56219
  value
@@ -56185,7 +56228,7 @@ function captureResizeObserverExceededError(e2) {
56185
56228
  }
56186
56229
  }
56187
56230
  function useCaptureResizeObserverExceededError() {
56188
- (0, import_react256.useEffect)(() => {
56231
+ (0, import_react257.useEffect)(() => {
56189
56232
  window.addEventListener("error", captureResizeObserverExceededError);
56190
56233
  return () => {
56191
56234
  window.removeEventListener("error", captureResizeObserverExceededError);
@@ -56271,15 +56314,15 @@ var VirtualizedMessageListWithContext = (props) => {
56271
56314
  const { client, customClasses } = useChatContext(
56272
56315
  "VirtualizedMessageList"
56273
56316
  );
56274
- const virtuoso = (0, import_react256.useRef)(null);
56275
- const lastRead = (0, import_react256.useMemo)(() => channel.lastRead?.(), [channel]);
56317
+ const virtuoso = (0, import_react257.useRef)(null);
56318
+ const lastRead = (0, import_react257.useMemo)(() => channel.lastRead?.(), [channel]);
56276
56319
  const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } = useUnreadMessagesNotificationVirtualized({
56277
56320
  lastRead: channelUnreadUiState?.last_read,
56278
56321
  showAlways: !!showUnreadNotificationAlways,
56279
56322
  unreadCount: channelUnreadUiState?.unread_messages ?? 0
56280
56323
  });
56281
56324
  const { giphyPreviewMessage, setGiphyPreviewMessage } = useGiphyPreview(separateGiphyPreview);
56282
- const processedMessages = (0, import_react256.useMemo)(() => {
56325
+ const processedMessages = (0, import_react257.useMemo)(() => {
56283
56326
  if (typeof messages === "undefined") {
56284
56327
  return [];
56285
56328
  }
@@ -56311,12 +56354,12 @@ var VirtualizedMessageListWithContext = (props) => {
56311
56354
  returnAllReadData,
56312
56355
  userID: client.userID
56313
56356
  });
56314
- const lastReceivedMessageId = (0, import_react256.useMemo)(
56357
+ const lastReceivedMessageId = (0, import_react257.useMemo)(
56315
56358
  () => getLastReceived(processedMessages),
56316
56359
  [processedMessages]
56317
56360
  );
56318
56361
  const groupStylesFn = groupStyles || getGroupStyles;
56319
- const messageGroupStyles = (0, import_react256.useMemo)(
56362
+ const messageGroupStyles = (0, import_react257.useMemo)(
56320
56363
  () => processedMessages.reduce((acc, message, i) => {
56321
56364
  const style = groupStylesFn(
56322
56365
  message,
@@ -56349,7 +56392,7 @@ var VirtualizedMessageListWithContext = (props) => {
56349
56392
  messageListIsThread: !!threadList,
56350
56393
  wasMarkedUnread: !!channelUnreadUiState?.first_unread_message_id
56351
56394
  });
56352
- const scrollToBottom = (0, import_react256.useCallback)(async () => {
56395
+ const scrollToBottom = (0, import_react257.useCallback)(async () => {
56353
56396
  if (hasMoreNewer) {
56354
56397
  await jumpToLatestMessage();
56355
56398
  return;
@@ -56381,7 +56424,7 @@ var VirtualizedMessageListWithContext = (props) => {
56381
56424
  processedMessages,
56382
56425
  client.userID
56383
56426
  );
56384
- const handleItemsRendered = (0, import_react256.useMemo)(
56427
+ const handleItemsRendered = (0, import_react257.useMemo)(
56385
56428
  () => makeItemsRenderedHandler([toggleShowUnreadMessagesNotification], processedMessages),
56386
56429
  [processedMessages, toggleShowUnreadMessagesNotification]
56387
56430
  );
@@ -56394,7 +56437,7 @@ var VirtualizedMessageListWithContext = (props) => {
56394
56437
  }
56395
56438
  return isAtBottom ? stickToBottomScrollBehavior : false;
56396
56439
  };
56397
- const computeItemKey2 = (0, import_react256.useCallback)(
56440
+ const computeItemKey2 = (0, import_react257.useCallback)(
56398
56441
  (index3, _, { numItemsPrepended: numItemsPrepended2, processedMessages: processedMessages2 }) => processedMessages2[calculateItemIndex(index3, numItemsPrepended2)].id,
56399
56442
  []
56400
56443
  );
@@ -56411,7 +56454,7 @@ var VirtualizedMessageListWithContext = (props) => {
56411
56454
  loadMore?.(messageLimit);
56412
56455
  }
56413
56456
  };
56414
- (0, import_react256.useEffect)(() => {
56457
+ (0, import_react257.useEffect)(() => {
56415
56458
  let scrollTimeout;
56416
56459
  if (highlightedMessageId) {
56417
56460
  const index3 = findMessageIndex(processedMessages, highlightedMessageId);
@@ -56427,17 +56470,17 @@ var VirtualizedMessageListWithContext = (props) => {
56427
56470
  }, [highlightedMessageId, processedMessages]);
56428
56471
  if (!processedMessages) return null;
56429
56472
  const dialogManagerId = threadList ? "virtualized-message-list-dialog-manager-thread" : "virtualized-message-list-dialog-manager";
56430
- return /* @__PURE__ */ import_react256.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react256.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react256.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react256.default.createElement(
56473
+ return /* @__PURE__ */ import_react257.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react257.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react257.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react257.default.createElement(
56431
56474
  UnreadMessagesNotification2,
56432
56475
  {
56433
56476
  unreadCount: channelUnreadUiState?.unread_messages
56434
56477
  }
56435
- ), /* @__PURE__ */ import_react256.default.createElement(
56478
+ ), /* @__PURE__ */ import_react257.default.createElement(
56436
56479
  "div",
56437
56480
  {
56438
56481
  className: customClasses?.virtualizedMessageList || "str-chat__virtual-list"
56439
56482
  },
56440
- /* @__PURE__ */ import_react256.default.createElement(
56483
+ /* @__PURE__ */ import_react257.default.createElement(
56441
56484
  import_react_virtuoso2.Virtuoso,
56442
56485
  {
56443
56486
  atBottomStateChange,
@@ -56503,7 +56546,7 @@ var VirtualizedMessageListWithContext = (props) => {
56503
56546
  ...defaultItemHeight ? { defaultItemHeight } : {}
56504
56547
  }
56505
56548
  )
56506
- )), TypingIndicator2 && /* @__PURE__ */ import_react256.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react256.default.createElement(
56549
+ )), TypingIndicator2 && /* @__PURE__ */ import_react257.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react257.default.createElement(
56507
56550
  MessageListNotifications2,
56508
56551
  {
56509
56552
  hasNewMessages: newMessagesNotification,
@@ -56515,7 +56558,7 @@ var VirtualizedMessageListWithContext = (props) => {
56515
56558
  threadList,
56516
56559
  unreadCount: threadList ? void 0 : channelUnreadUiState?.unread_messages
56517
56560
  }
56518
- ), giphyPreviewMessage && /* @__PURE__ */ import_react256.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
56561
+ ), giphyPreviewMessage && /* @__PURE__ */ import_react257.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
56519
56562
  };
56520
56563
  function VirtualizedMessageList(props) {
56521
56564
  const { jumpToLatestMessage, loadMore, loadMoreNewer } = useChannelActionContext("VirtualizedMessageList");
@@ -56533,7 +56576,7 @@ function VirtualizedMessageList(props) {
56533
56576
  suppressAutoscroll
56534
56577
  } = useChannelStateContext("VirtualizedMessageList");
56535
56578
  const messages = props.messages || contextMessages;
56536
- return /* @__PURE__ */ import_react256.default.createElement(
56579
+ return /* @__PURE__ */ import_react257.default.createElement(
56537
56580
  VirtualizedMessageListWithContext,
56538
56581
  {
56539
56582
  channel,
@@ -56739,7 +56782,7 @@ var ChannelContainer = ({
56739
56782
  customClasses
56740
56783
  });
56741
56784
  const className = (0, import_clsx65.default)(chatClass, theme, channelClass, additionalClassName);
56742
- return /* @__PURE__ */ import_react257.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
56785
+ return /* @__PURE__ */ import_react258.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
56743
56786
  };
56744
56787
  var UnMemoizedChannel = (props) => {
56745
56788
  const {
@@ -56751,15 +56794,15 @@ var UnMemoizedChannel = (props) => {
56751
56794
  const { channel: contextChannel, channelsQueryState } = useChatContext("Channel");
56752
56795
  const channel = propsChannel || contextChannel;
56753
56796
  if (channelsQueryState.queryInProgress === "reload" && LoadingIndicator2) {
56754
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react257.default.createElement(LoadingIndicator2, null));
56797
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingIndicator2, null));
56755
56798
  }
56756
56799
  if (channelsQueryState.error && LoadingErrorIndicator2) {
56757
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react257.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
56800
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
56758
56801
  }
56759
56802
  if (!channel?.cid) {
56760
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
56803
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
56761
56804
  }
56762
- return /* @__PURE__ */ import_react257.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
56805
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
56763
56806
  };
56764
56807
  var ChannelInner = (props) => {
56765
56808
  const {
@@ -56785,7 +56828,7 @@ var ChannelInner = (props) => {
56785
56828
  optionalMessageInputProps = {},
56786
56829
  skipMessageDataMemoization
56787
56830
  } = props;
56788
- const channelQueryOptions = (0, import_react257.useMemo)(
56831
+ const channelQueryOptions = (0, import_react258.useMemo)(
56789
56832
  () => (0, import_lodash23.default)(propChannelQueryOptions, {
56790
56833
  messages: { limit: DEFAULT_INITIAL_CHANNEL_PAGE_SIZE }
56791
56834
  }),
@@ -56796,13 +56839,13 @@ var ChannelInner = (props) => {
56796
56839
  const chatContainerClass = getChatContainerClass(customClasses?.chatContainer);
56797
56840
  const windowsEmojiClass = useImageFlagEmojisOnWindowsClass();
56798
56841
  const thread = useThreadContext();
56799
- const [channelConfig, setChannelConfig] = (0, import_react257.useState)(channel.getConfig());
56800
- const [notifications, setNotifications] = (0, import_react257.useState)([]);
56801
- const [quotedMessage, setQuotedMessage] = (0, import_react257.useState)();
56802
- const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react257.useState)();
56803
- const notificationTimeouts = (0, import_react257.useRef)([]);
56804
- const channelReducer = (0, import_react257.useMemo)(() => makeChannelReducer(), []);
56805
- const [state, dispatch] = (0, import_react257.useReducer)(
56842
+ const [channelConfig, setChannelConfig] = (0, import_react258.useState)(channel.getConfig());
56843
+ const [notifications, setNotifications] = (0, import_react258.useState)([]);
56844
+ const [quotedMessage, setQuotedMessage] = (0, import_react258.useState)();
56845
+ const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react258.useState)();
56846
+ const notificationTimeouts = (0, import_react258.useRef)([]);
56847
+ const channelReducer = (0, import_react258.useMemo)(() => makeChannelReducer(), []);
56848
+ const [state, dispatch] = (0, import_react258.useReducer)(
56806
56849
  channelReducer,
56807
56850
  // channel.initialized === false if client.channel().query() was not called, e.g. ChannelList is not used
56808
56851
  // => Channel will call channel.watch() in useLayoutEffect => state.loading is used to signal the watch() call state
@@ -56814,10 +56857,10 @@ var ChannelInner = (props) => {
56814
56857
  );
56815
56858
  const jumpToMessageFromSearch = useSearchFocusedMessage();
56816
56859
  const isMounted = useIsMounted();
56817
- const originalTitle = (0, import_react257.useRef)("");
56818
- const lastRead = (0, import_react257.useRef)(void 0);
56819
- const online = (0, import_react257.useRef)(true);
56820
- const clearHighlightedMessageTimeoutId = (0, import_react257.useRef)(
56860
+ const originalTitle = (0, import_react258.useRef)("");
56861
+ const lastRead = (0, import_react258.useRef)(void 0);
56862
+ const online = (0, import_react258.useRef)(true);
56863
+ const clearHighlightedMessageTimeoutId = (0, import_react258.useRef)(
56821
56864
  null
56822
56865
  );
56823
56866
  const channelCapabilitiesArray = channel.data?.own_capabilities;
@@ -56829,14 +56872,14 @@ var ChannelInner = (props) => {
56829
56872
  trailing: true
56830
56873
  }
56831
56874
  );
56832
- const setChannelUnreadUiState = (0, import_react257.useMemo)(
56875
+ const setChannelUnreadUiState = (0, import_react258.useMemo)(
56833
56876
  () => (0, import_lodash24.default)(_setChannelUnreadUiState, 200, {
56834
56877
  leading: true,
56835
56878
  trailing: false
56836
56879
  }),
56837
56880
  []
56838
56881
  );
56839
- const markRead = (0, import_react257.useMemo)(
56882
+ const markRead = (0, import_react258.useMemo)(
56840
56883
  () => (0, import_lodash24.default)(
56841
56884
  async (options) => {
56842
56885
  const { updateChannelUiUnreadState = true } = options ?? {};
@@ -56939,7 +56982,7 @@ var ChannelInner = (props) => {
56939
56982
  }
56940
56983
  throttledCopyStateFromChannel();
56941
56984
  };
56942
- (0, import_react257.useLayoutEffect)(() => {
56985
+ (0, import_react258.useLayoutEffect)(() => {
56943
56986
  let errored = false;
56944
56987
  let done = false;
56945
56988
  (async () => {
@@ -57005,12 +57048,12 @@ var ChannelInner = (props) => {
57005
57048
  channelConfig?.read_events,
57006
57049
  initializeOnMount
57007
57050
  ]);
57008
- (0, import_react257.useEffect)(() => {
57051
+ (0, import_react258.useEffect)(() => {
57009
57052
  if (!state.thread) return;
57010
57053
  const message = state.messages?.find((m) => m.id === state.thread?.id);
57011
57054
  if (message) dispatch({ message, type: "setThread" });
57012
57055
  }, [state.messages, state.thread]);
57013
- const handleHighlightedMessageChange = (0, import_react257.useCallback)(
57056
+ const handleHighlightedMessageChange = (0, import_react258.useCallback)(
57014
57057
  ({
57015
57058
  highlightDuration,
57016
57059
  highlightedMessageId
@@ -57033,15 +57076,15 @@ var ChannelInner = (props) => {
57033
57076
  },
57034
57077
  [channel, searchController]
57035
57078
  );
57036
- (0, import_react257.useEffect)(() => {
57079
+ (0, import_react258.useEffect)(() => {
57037
57080
  if (!jumpToMessageFromSearch?.id) return;
57038
57081
  handleHighlightedMessageChange({ highlightedMessageId: jumpToMessageFromSearch.id });
57039
57082
  }, [jumpToMessageFromSearch, handleHighlightedMessageChange]);
57040
- const addNotification = (0, import_react257.useMemo)(
57083
+ const addNotification = (0, import_react258.useMemo)(
57041
57084
  () => makeAddNotifications(setNotifications, notificationTimeouts.current),
57042
57085
  []
57043
57086
  );
57044
- const loadMoreFinished = (0, import_react257.useCallback)(
57087
+ const loadMoreFinished = (0, import_react258.useCallback)(
57045
57088
  (0, import_lodash22.default)(
57046
57089
  (hasMore, messages) => {
57047
57090
  if (!isMounted.current) return;
@@ -57102,7 +57145,7 @@ var ChannelInner = (props) => {
57102
57145
  });
57103
57146
  return queryResponse.messages.length;
57104
57147
  };
57105
- const jumpToMessage = (0, import_react257.useCallback)(
57148
+ const jumpToMessage = (0, import_react258.useCallback)(
57106
57149
  async (messageId, messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
57107
57150
  dispatch({ loadingMore: true, type: "setLoadingMore" });
57108
57151
  await channel.state.loadMessageIntoState(messageId, void 0, messageLimit);
@@ -57114,14 +57157,14 @@ var ChannelInner = (props) => {
57114
57157
  },
57115
57158
  [channel, handleHighlightedMessageChange, loadMoreFinished]
57116
57159
  );
57117
- const jumpToLatestMessage = (0, import_react257.useCallback)(async () => {
57160
+ const jumpToLatestMessage = (0, import_react258.useCallback)(async () => {
57118
57161
  await channel.state.loadMessageIntoState("latest");
57119
57162
  loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
57120
57163
  dispatch({
57121
57164
  type: "jumpToLatestMessage"
57122
57165
  });
57123
57166
  }, [channel, loadMoreFinished]);
57124
- const jumpToFirstUnreadMessage = (0, import_react257.useCallback)(
57167
+ const jumpToFirstUnreadMessage = (0, import_react258.useCallback)(
57125
57168
  async (queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
57126
57169
  if (!channelUnreadUiState?.unread_messages) return;
57127
57170
  let lastReadMessageId = channelUnreadUiState?.last_read_message_id;
@@ -57244,7 +57287,7 @@ var ChannelInner = (props) => {
57244
57287
  channelUnreadUiState
57245
57288
  ]
57246
57289
  );
57247
- const deleteMessage = (0, import_react257.useCallback)(
57290
+ const deleteMessage = (0, import_react258.useCallback)(
57248
57291
  async (message) => {
57249
57292
  if (!message?.id) {
57250
57293
  throw new Error("Cannot delete a message - missing message ID.");
@@ -57401,7 +57444,7 @@ var ChannelInner = (props) => {
57401
57444
  event?.preventDefault();
57402
57445
  dispatch({ type: "closeThread" });
57403
57446
  };
57404
- const loadMoreThreadFinished = (0, import_react257.useCallback)(
57447
+ const loadMoreThreadFinished = (0, import_react258.useCallback)(
57405
57448
  (0, import_lodash22.default)(
57406
57449
  (threadHasMore, threadMessages) => {
57407
57450
  dispatch({
@@ -57465,7 +57508,7 @@ var ChannelInner = (props) => {
57465
57508
  videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration,
57466
57509
  watcher_count: state.watcherCount
57467
57510
  });
57468
- const channelActionContextValue = (0, import_react257.useMemo)(
57511
+ const channelActionContextValue = (0, import_react258.useMemo)(
57469
57512
  () => ({
57470
57513
  addNotification,
57471
57514
  closeThread,
@@ -57506,7 +57549,7 @@ var ChannelInner = (props) => {
57506
57549
  setChannelUnreadUiState
57507
57550
  ]
57508
57551
  );
57509
- const componentContextValue = (0, import_react257.useMemo)(
57552
+ const componentContextValue = (0, import_react258.useMemo)(
57510
57553
  () => ({
57511
57554
  Attachment: props.Attachment,
57512
57555
  AttachmentPreviewList: props.AttachmentPreviewList,
@@ -57638,26 +57681,26 @@ var ChannelInner = (props) => {
57638
57681
  typing
57639
57682
  });
57640
57683
  if (state.error) {
57641
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react257.default.createElement(LoadingErrorIndicator2, { error: state.error }));
57684
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingErrorIndicator2, { error: state.error }));
57642
57685
  }
57643
57686
  if (state.loading) {
57644
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react257.default.createElement(LoadingIndicator2, null));
57687
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement(LoadingIndicator2, null));
57645
57688
  }
57646
57689
  if (!channel.watch) {
57647
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react257.default.createElement("div", null, t2("Channel Missing")));
57690
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react258.default.createElement("div", null, t2("Channel Missing")));
57648
57691
  }
57649
- return /* @__PURE__ */ import_react257.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react257.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react257.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react257.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react257.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react257.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react257.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react257.default.createElement(import_react257.default.Fragment, null, children)))))));
57692
+ return /* @__PURE__ */ import_react258.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react258.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react258.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react258.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react258.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react258.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react258.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react258.default.createElement(import_react258.default.Fragment, null, children)))))));
57650
57693
  };
57651
- var Channel = import_react257.default.memo(UnMemoizedChannel);
57694
+ var Channel = import_react258.default.memo(UnMemoizedChannel);
57652
57695
 
57653
57696
  // src/components/ChannelHeader/ChannelHeader.tsx
57654
- var import_react259 = __toESM(require("react"));
57697
+ var import_react260 = __toESM(require("react"));
57655
57698
 
57656
57699
  // src/components/ChannelHeader/icons.tsx
57657
- var import_react258 = __toESM(require("react"));
57700
+ var import_react259 = __toESM(require("react"));
57658
57701
  var MenuIcon2 = ({ title }) => {
57659
57702
  const { t: t2 } = useTranslationContext("MenuIcon");
57660
- return /* @__PURE__ */ import_react258.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react258.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react258.default.createElement(
57703
+ return /* @__PURE__ */ import_react259.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react259.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react259.default.createElement(
57661
57704
  "path",
57662
57705
  {
57663
57706
  d: "M0 88C0 74.75 10.75 64 24 64H424C437.3 64 448 74.75 448 88C448 101.3 437.3 112 424 112H24C10.75 112 0 101.3 0 88zM0 248C0 234.7 10.75 224 24 224H424C437.3 224 448 234.7 448 248C448 261.3 437.3 272 424 272H24C10.75 272 0 261.3 0 248zM424 432H24C10.75 432 0 421.3 0 408C0 394.7 10.75 384 24 384H424C437.3 384 448 394.7 448 408C448 421.3 437.3 432 424 432z",
@@ -57684,15 +57727,15 @@ var ChannelHeader = (props) => {
57684
57727
  overrideTitle
57685
57728
  });
57686
57729
  const { member_count, subtitle } = channel?.data || {};
57687
- return /* @__PURE__ */ import_react259.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react259.default.createElement(
57730
+ return /* @__PURE__ */ import_react260.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react260.default.createElement(
57688
57731
  "button",
57689
57732
  {
57690
57733
  "aria-label": t2("aria/Menu"),
57691
57734
  className: "str-chat__header-hamburger",
57692
57735
  onClick: openMobileNav
57693
57736
  },
57694
- /* @__PURE__ */ import_react259.default.createElement(MenuIcon3, null)
57695
- ), /* @__PURE__ */ import_react259.default.createElement(
57737
+ /* @__PURE__ */ import_react260.default.createElement(MenuIcon3, null)
57738
+ ), /* @__PURE__ */ import_react260.default.createElement(
57696
57739
  Avatar2,
57697
57740
  {
57698
57741
  className: "str-chat__avatar--channel-header",
@@ -57700,36 +57743,36 @@ var ChannelHeader = (props) => {
57700
57743
  image: displayImage,
57701
57744
  name: displayTitle
57702
57745
  }
57703
- ), /* @__PURE__ */ import_react259.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react259.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react259.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react259.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react259.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react259.default.createElement(import_react259.default.Fragment, null, t2("{{ memberCount }} members", {
57746
+ ), /* @__PURE__ */ import_react260.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react260.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react260.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react260.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react260.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react260.default.createElement(import_react260.default.Fragment, null, t2("{{ memberCount }} members", {
57704
57747
  memberCount: member_count
57705
57748
  }), ",", " "), t2("{{ watcherCount }} online", { watcherCount: watcher_count }))));
57706
57749
  };
57707
57750
 
57708
57751
  // src/components/Chat/Chat.tsx
57709
- var import_react263 = __toESM(require("react"));
57752
+ var import_react264 = __toESM(require("react"));
57710
57753
  var import_stream_chat6 = require("stream-chat");
57711
57754
 
57712
57755
  // src/components/Chat/hooks/useChat.ts
57713
- var import_react260 = require("react");
57756
+ var import_react261 = require("react");
57714
57757
  var useChat = ({
57715
57758
  client,
57716
57759
  defaultLanguage = "en",
57717
57760
  i18nInstance,
57718
57761
  initialNavOpen
57719
57762
  }) => {
57720
- const [translators, setTranslators] = (0, import_react260.useState)({
57763
+ const [translators, setTranslators] = (0, import_react261.useState)({
57721
57764
  t: (key) => key,
57722
57765
  tDateTimeParser: defaultDateTimeParser,
57723
57766
  userLanguage: "en"
57724
57767
  });
57725
- const [channel, setChannel] = (0, import_react260.useState)();
57726
- const [mutes, setMutes] = (0, import_react260.useState)([]);
57727
- const [navOpen, setNavOpen] = (0, import_react260.useState)(initialNavOpen);
57728
- const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react260.useState)({});
57768
+ const [channel, setChannel] = (0, import_react261.useState)();
57769
+ const [mutes, setMutes] = (0, import_react261.useState)([]);
57770
+ const [navOpen, setNavOpen] = (0, import_react261.useState)(initialNavOpen);
57771
+ const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react261.useState)({});
57729
57772
  const clientMutes = client.user?.mutes || [];
57730
57773
  const closeMobileNav = () => setNavOpen(false);
57731
57774
  const openMobileNav = () => setTimeout(() => setNavOpen(true), 100);
57732
- const appSettings = (0, import_react260.useRef)(
57775
+ const appSettings = (0, import_react261.useRef)(
57733
57776
  null
57734
57777
  );
57735
57778
  const getAppSettings = () => {
@@ -57739,9 +57782,9 @@ var useChat = ({
57739
57782
  appSettings.current = client.getAppSettings();
57740
57783
  return appSettings.current;
57741
57784
  };
57742
- (0, import_react260.useEffect)(() => {
57785
+ (0, import_react261.useEffect)(() => {
57743
57786
  if (!client) return;
57744
- const version = "12.14.0";
57787
+ const version = "12.15.1";
57745
57788
  const userAgent = client.getUserAgent();
57746
57789
  if (!userAgent.includes("stream-chat-react")) {
57747
57790
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -57753,7 +57796,7 @@ var useChat = ({
57753
57796
  client.polls.unregisterSubscriptions();
57754
57797
  };
57755
57798
  }, [client]);
57756
- (0, import_react260.useEffect)(() => {
57799
+ (0, import_react261.useEffect)(() => {
57757
57800
  setMutes(clientMutes);
57758
57801
  const handleEvent = (event) => {
57759
57802
  setMutes(event.me?.mutes || []);
@@ -57761,7 +57804,7 @@ var useChat = ({
57761
57804
  client.on("notification.mutes_updated", handleEvent);
57762
57805
  return () => client.off("notification.mutes_updated", handleEvent);
57763
57806
  }, [clientMutes?.length]);
57764
- (0, import_react260.useEffect)(() => {
57807
+ (0, import_react261.useEffect)(() => {
57765
57808
  let userLanguage = client.user?.language;
57766
57809
  if (!userLanguage) {
57767
57810
  const browserLanguage = window.navigator.language.slice(0, 2);
@@ -57778,7 +57821,7 @@ var useChat = ({
57778
57821
  });
57779
57822
  });
57780
57823
  }, [i18nInstance]);
57781
- const setActiveChannel = (0, import_react260.useCallback)(
57824
+ const setActiveChannel = (0, import_react261.useCallback)(
57782
57825
  async (activeChannel, watchers = {}, event) => {
57783
57826
  if (event && event.preventDefault) event.preventDefault();
57784
57827
  if (activeChannel && Object.keys(watchers).length) {
@@ -57789,7 +57832,7 @@ var useChat = ({
57789
57832
  },
57790
57833
  []
57791
57834
  );
57792
- (0, import_react260.useEffect)(() => {
57835
+ (0, import_react261.useEffect)(() => {
57793
57836
  setLatestMessageDatesByChannels({});
57794
57837
  }, [client.user?.id]);
57795
57838
  return {
@@ -57806,7 +57849,7 @@ var useChat = ({
57806
57849
  };
57807
57850
 
57808
57851
  // src/components/Chat/hooks/useCreateChatContext.ts
57809
- var import_react261 = require("react");
57852
+ var import_react262 = require("react");
57810
57853
  var useCreateChatContext = (value) => {
57811
57854
  const {
57812
57855
  channel,
@@ -57831,7 +57874,7 @@ var useCreateChatContext = (value) => {
57831
57874
  const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${Object.keys(client.listeners).length}${client.mutedChannels.length}
57832
57875
  ${client.user?.id}`;
57833
57876
  const mutedUsersLength = mutes.length;
57834
- const chatContext = (0, import_react261.useMemo)(
57877
+ const chatContext = (0, import_react262.useMemo)(
57835
57878
  () => ({
57836
57879
  channel,
57837
57880
  channelsQueryState,
@@ -57866,10 +57909,10 @@ var useCreateChatContext = (value) => {
57866
57909
  };
57867
57910
 
57868
57911
  // src/components/Chat/hooks/useChannelsQueryState.ts
57869
- var import_react262 = require("react");
57912
+ var import_react263 = require("react");
57870
57913
  var useChannelsQueryState = () => {
57871
- const [error, setError] = (0, import_react262.useState)(null);
57872
- const [queryInProgress, setQueryInProgress] = (0, import_react262.useState)("uninitialized");
57914
+ const [error, setError] = (0, import_react263.useState)(null);
57915
+ const [queryInProgress, setQueryInProgress] = (0, import_react263.useState)("uninitialized");
57873
57916
  return {
57874
57917
  error,
57875
57918
  queryInProgress,
@@ -57904,7 +57947,7 @@ var Chat = (props) => {
57904
57947
  translators
57905
57948
  } = useChat({ client, defaultLanguage, i18nInstance, initialNavOpen });
57906
57949
  const channelsQueryState = useChannelsQueryState();
57907
- const searchController = (0, import_react263.useMemo)(
57950
+ const searchController = (0, import_react264.useMemo)(
57908
57951
  () => customChannelSearchController ?? new import_stream_chat6.SearchController({
57909
57952
  sources: [
57910
57953
  new import_stream_chat6.ChannelSearchSource(client),
@@ -57932,11 +57975,11 @@ var Chat = (props) => {
57932
57975
  useImageFlagEmojisOnWindows
57933
57976
  });
57934
57977
  if (!translators.t) return null;
57935
- return /* @__PURE__ */ import_react263.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react263.default.createElement(TranslationProvider, { value: translators }, children));
57978
+ return /* @__PURE__ */ import_react264.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react264.default.createElement(TranslationProvider, { value: translators }, children));
57936
57979
  };
57937
57980
 
57938
57981
  // src/components/Chat/hooks/useCreateChatClient.ts
57939
- var import_react264 = require("react");
57982
+ var import_react265 = require("react");
57940
57983
  var import_stream_chat7 = require("stream-chat");
57941
57984
  var useCreateChatClient = ({
57942
57985
  apiKey,
@@ -57944,13 +57987,13 @@ var useCreateChatClient = ({
57944
57987
  tokenOrProvider,
57945
57988
  userData
57946
57989
  }) => {
57947
- const [chatClient, setChatClient] = (0, import_react264.useState)(null);
57948
- const [cachedUserData, setCachedUserData] = (0, import_react264.useState)(userData);
57990
+ const [chatClient, setChatClient] = (0, import_react265.useState)(null);
57991
+ const [cachedUserData, setCachedUserData] = (0, import_react265.useState)(userData);
57949
57992
  if (userData.id !== cachedUserData.id) {
57950
57993
  setCachedUserData(userData);
57951
57994
  }
57952
- const [cachedOptions] = (0, import_react264.useState)(options);
57953
- (0, import_react264.useEffect)(() => {
57995
+ const [cachedOptions] = (0, import_react265.useState)(options);
57996
+ (0, import_react265.useEffect)(() => {
57954
57997
  const client = new import_stream_chat7.StreamChat(apiKey, void 0, cachedOptions);
57955
57998
  let didUserConnectInterrupt = false;
57956
57999
  const connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(() => {
@@ -57968,17 +58011,17 @@ var useCreateChatClient = ({
57968
58011
  };
57969
58012
 
57970
58013
  // src/components/Thread/Thread.tsx
57971
- var import_react269 = __toESM(require("react"));
58014
+ var import_react270 = __toESM(require("react"));
57972
58015
  var import_clsx66 = __toESM(require("clsx"));
57973
58016
 
57974
58017
  // src/components/Thread/ThreadHeader.tsx
57975
- var import_react266 = __toESM(require("react"));
58018
+ var import_react267 = __toESM(require("react"));
57976
58019
 
57977
58020
  // src/components/Thread/icons.tsx
57978
- var import_react265 = __toESM(require("react"));
58021
+ var import_react266 = __toESM(require("react"));
57979
58022
  var CloseIcon3 = ({ title }) => {
57980
58023
  const { t: t2 } = useTranslationContext("CloseIcon");
57981
- return /* @__PURE__ */ import_react265.default.createElement(
58024
+ return /* @__PURE__ */ import_react266.default.createElement(
57982
58025
  "svg",
57983
58026
  {
57984
58027
  "data-testid": "close-no-outline",
@@ -57986,8 +58029,8 @@ var CloseIcon3 = ({ title }) => {
57986
58029
  viewBox: "0 0 24 24",
57987
58030
  xmlns: "http://www.w3.org/2000/svg"
57988
58031
  },
57989
- /* @__PURE__ */ import_react265.default.createElement("title", null, title ?? t2("Close")),
57990
- /* @__PURE__ */ import_react265.default.createElement(
58032
+ /* @__PURE__ */ import_react266.default.createElement("title", null, title ?? t2("Close")),
58033
+ /* @__PURE__ */ import_react266.default.createElement(
57991
58034
  "path",
57992
58035
  {
57993
58036
  d: "M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z",
@@ -58007,7 +58050,7 @@ var ThreadHeader = (props) => {
58007
58050
  overrideImage,
58008
58051
  overrideTitle
58009
58052
  });
58010
- return /* @__PURE__ */ import_react266.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react266.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react266.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react266.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react266.default.createElement(
58053
+ return /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react267.default.createElement(
58011
58054
  "button",
58012
58055
  {
58013
58056
  "aria-label": t2("aria/Close thread"),
@@ -58015,26 +58058,26 @@ var ThreadHeader = (props) => {
58015
58058
  "data-testid": "close-button",
58016
58059
  onClick: closeThread
58017
58060
  },
58018
- /* @__PURE__ */ import_react266.default.createElement(CloseIcon3, null)
58061
+ /* @__PURE__ */ import_react267.default.createElement(CloseIcon3, null)
58019
58062
  ));
58020
58063
  };
58021
58064
 
58022
58065
  // src/components/Thread/ThreadHead.tsx
58023
- var import_react268 = __toESM(require("react"));
58066
+ var import_react269 = __toESM(require("react"));
58024
58067
 
58025
58068
  // src/components/Thread/ThreadStart.tsx
58026
- var import_react267 = __toESM(require("react"));
58069
+ var import_react268 = __toESM(require("react"));
58027
58070
  var ThreadStart = () => {
58028
58071
  const { thread } = useChannelStateContext("ThreadStart");
58029
58072
  const { t: t2 } = useTranslationContext("ThreadStart");
58030
58073
  if (!thread?.reply_count) return null;
58031
- return /* @__PURE__ */ import_react267.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
58074
+ return /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
58032
58075
  };
58033
58076
 
58034
58077
  // src/components/Thread/ThreadHead.tsx
58035
58078
  var ThreadHead = (props) => {
58036
58079
  const { ThreadStart: ThreadStart2 = ThreadStart } = useComponentContext("ThreadHead");
58037
- return /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react268.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react268.default.createElement(ThreadStart2, null));
58080
+ return /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react269.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react269.default.createElement(ThreadStart2, null));
58038
58081
  };
58039
58082
 
58040
58083
  // src/components/Thread/Thread.tsx
@@ -58044,7 +58087,7 @@ var Thread = (props) => {
58044
58087
  if (!thread && !threadInstance || channelConfig?.replies === false) return null;
58045
58088
  return (
58046
58089
  // FIXME: TS is having trouble here as at least one of the two would always be defined
58047
- /* @__PURE__ */ import_react269.default.createElement(
58090
+ /* @__PURE__ */ import_react270.default.createElement(
58048
58091
  ThreadInner,
58049
58092
  {
58050
58093
  ...props,
@@ -58095,7 +58138,7 @@ var ThreadInner = (props) => {
58095
58138
  const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
58096
58139
  const MessageUIComponent = ThreadMessage || FallbackMessage;
58097
58140
  const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
58098
- (0, import_react269.useEffect)(() => {
58141
+ (0, import_react270.useEffect)(() => {
58099
58142
  if (thread?.id && thread?.reply_count) {
58100
58143
  loadMoreThread();
58101
58144
  }
@@ -58117,7 +58160,7 @@ var ThreadInner = (props) => {
58117
58160
  const threadClass = customClasses?.thread || (0, import_clsx66.default)("str-chat__thread-container str-chat__thread", {
58118
58161
  "str-chat__thread--virtualized": virtualized
58119
58162
  });
58120
- const head = /* @__PURE__ */ import_react269.default.createElement(
58163
+ const head = /* @__PURE__ */ import_react270.default.createElement(
58121
58164
  ThreadHead2,
58122
58165
  {
58123
58166
  key: messageAsThread.id,
@@ -58126,7 +58169,7 @@ var ThreadInner = (props) => {
58126
58169
  ...additionalParentMessageProps
58127
58170
  }
58128
58171
  );
58129
- return /* @__PURE__ */ import_react269.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react269.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react269.default.createElement(
58172
+ return /* @__PURE__ */ import_react270.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react270.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react270.default.createElement(
58130
58173
  ThreadMessageList,
58131
58174
  {
58132
58175
  disableDateSeparator: !enableDateSeparator,
@@ -58138,7 +58181,7 @@ var ThreadInner = (props) => {
58138
58181
  ...threadProps,
58139
58182
  ...virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps
58140
58183
  }
58141
- ), /* @__PURE__ */ import_react269.default.createElement(
58184
+ ), /* @__PURE__ */ import_react270.default.createElement(
58142
58185
  MessageInput,
58143
58186
  {
58144
58187
  focus: autoFocus,
@@ -58152,12 +58195,12 @@ var ThreadInner = (props) => {
58152
58195
  };
58153
58196
 
58154
58197
  // src/components/Window/Window.tsx
58155
- var import_react270 = __toESM(require("react"));
58198
+ var import_react271 = __toESM(require("react"));
58156
58199
  var import_clsx67 = __toESM(require("clsx"));
58157
58200
  var UnMemoizedWindow = (props) => {
58158
58201
  const { children, thread: propThread } = props;
58159
58202
  const { thread: contextThread } = useChannelStateContext("Window");
58160
- return /* @__PURE__ */ import_react270.default.createElement(
58203
+ return /* @__PURE__ */ import_react271.default.createElement(
58161
58204
  "div",
58162
58205
  {
58163
58206
  className: (0, import_clsx67.default)("str-chat__main-panel", {
@@ -58167,7 +58210,7 @@ var UnMemoizedWindow = (props) => {
58167
58210
  children
58168
58211
  );
58169
58212
  };
58170
- var Window = import_react270.default.memo(UnMemoizedWindow);
58213
+ var Window = import_react271.default.memo(UnMemoizedWindow);
58171
58214
  // Annotate the CommonJS export names for ESM import in node:
58172
58215
  0 && (module.exports = {
58173
58216
  ACTIONS_NOT_WORKING_IN_THREAD,
@@ -58374,6 +58417,7 @@ var Window = import_react270.default.memo(UnMemoizedWindow);
58374
58417
  WaveProgressBar,
58375
58418
  Window,
58376
58419
  WithComponents,
58420
+ WithDragAndDropUpload,
58377
58421
  areMessagePropsEqual,
58378
58422
  areMessageUIPropsEqual,
58379
58423
  attachmentTypeIconMap,