stream-chat-react 12.14.0 → 12.15.0

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