stream-chat-react 12.15.0 → 12.15.2

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.
@@ -16187,10 +16187,10 @@ function Parse(source, customConvertors) {
16187
16187
  var XMLNodes = SourceToXML(source);
16188
16188
  return XMLtoMMLTree(XMLNodes, customConvertors);
16189
16189
  }
16190
- var import_react207, import_parse_xml, import_dayjs4, import_sanitize_url4, import_react_markdown3, import_linkifyjs3, import_ical_expander, import_react_virtuoso2, import_isBetween, runtime_1, MMLTag, Card2, Icon3, CardHeader2, CardBody, ButtonList, SvgIcon, IconGoogle, IconMicrosoft, IconApple, isIE, getCurrentURL, CALENDAR_SERVICES, AddToCalendar, Button, Carousel, CarouselItem, Col, Error$1, Image2, Input, SIZE, Progress, Loading, truncate, matchMarkdownLinks2, MDLinkRender, markDownRenderers2, allowedMarkups, MD, Number2, Row, ITEMS_PER_PAGE, VERTICAL_COMPENSATION, INITIAL_INDEX, VIRTUOSO_START_INDEX, DatePickerSelect, getItemData, DatePickerDate, getItemData$1, DatePickerTime, DatePicker, setupIcalFilter, Scheduler, Success, Text, converters, Tree, MML;
16190
+ var import_react208, import_parse_xml, import_dayjs4, import_sanitize_url4, import_react_markdown3, import_linkifyjs3, import_ical_expander, import_react_virtuoso2, import_isBetween, runtime_1, MMLTag, Card2, Icon3, CardHeader2, CardBody, ButtonList, SvgIcon, IconGoogle, IconMicrosoft, IconApple, isIE, getCurrentURL, CALENDAR_SERVICES, AddToCalendar, Button, Carousel, CarouselItem, Col, Error$1, Image2, Input, SIZE, Progress, Loading, truncate, matchMarkdownLinks2, MDLinkRender, markDownRenderers2, allowedMarkups, MD, Number2, Row, ITEMS_PER_PAGE, VERTICAL_COMPENSATION, INITIAL_INDEX, VIRTUOSO_START_INDEX, DatePickerSelect, getItemData, DatePickerDate, getItemData$1, DatePickerTime, DatePicker, setupIcalFilter, Scheduler, Success, Text, converters, Tree, MML;
16191
16191
  var init_mml_react_esm = __esm({
16192
16192
  "node_modules/mml-react/dist/mml-react.esm.js"() {
16193
- import_react207 = __toESM(require("react"));
16193
+ import_react208 = __toESM(require("react"));
16194
16194
  import_parse_xml = __toESM(require_src());
16195
16195
  import_dayjs4 = __toESM(require("dayjs"));
16196
16196
  import_sanitize_url4 = require("@braintree/sanitize-url");
@@ -16720,57 +16720,57 @@ var init_mml_react_esm = __esm({
16720
16720
  }();
16721
16721
  Card2 = function Card3(_ref) {
16722
16722
  var _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className, children = _ref.children;
16723
- return import_react207.default.createElement("div", {
16723
+ return import_react208.default.createElement("div", {
16724
16724
  className: "mml-card " + className
16725
16725
  }, children);
16726
16726
  };
16727
16727
  Icon3 = function Icon4(_ref) {
16728
16728
  var name2 = _ref.name;
16729
- return import_react207.default.createElement("i", {
16729
+ return import_react208.default.createElement("i", {
16730
16730
  className: "mml-icon material-icons"
16731
16731
  }, name2);
16732
16732
  };
16733
16733
  CardHeader2 = function CardHeader3(_ref) {
16734
16734
  var text8 = _ref.text, _ref$icon = _ref.icon, icon2 = _ref$icon === void 0 ? "" : _ref$icon, _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className;
16735
- return import_react207.default.createElement("div", {
16735
+ return import_react208.default.createElement("div", {
16736
16736
  className: "mml-card-header " + className
16737
- }, icon2 && import_react207.default.createElement(Icon3, {
16737
+ }, icon2 && import_react208.default.createElement(Icon3, {
16738
16738
  name: icon2
16739
- }), import_react207.default.createElement("span", {
16739
+ }), import_react208.default.createElement("span", {
16740
16740
  className: "mml-card-header__text"
16741
16741
  }, text8));
16742
16742
  };
16743
16743
  CardBody = function CardBody2(_ref) {
16744
16744
  var _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className, children = _ref.children;
16745
- return import_react207.default.createElement("div", {
16745
+ return import_react208.default.createElement("div", {
16746
16746
  className: "mml-card-body " + className
16747
16747
  }, children);
16748
16748
  };
16749
16749
  ButtonList = function ButtonList2(_ref) {
16750
16750
  var children = _ref.children, _ref$variant = _ref.variant, variant = _ref$variant === void 0 ? "" : _ref$variant;
16751
- return import_react207.default.createElement("div", {
16751
+ return import_react208.default.createElement("div", {
16752
16752
  className: "mml-btnlist " + (variant === "floating" ? " mml-btnlist--floating" : "mml-btnlist--grounded")
16753
16753
  }, children);
16754
16754
  };
16755
16755
  SvgIcon = function SvgIcon2(_ref) {
16756
16756
  var path2 = _ref.path;
16757
- return import_react207.default.createElement("i", {
16757
+ return import_react208.default.createElement("i", {
16758
16758
  className: "mml-icon"
16759
- }, import_react207.default.createElement("svg", {
16759
+ }, import_react208.default.createElement("svg", {
16760
16760
  className: "mml-icon__svg",
16761
16761
  xmlns: "http://www.w3.org/2000/svg",
16762
16762
  viewBox: "0 0 24 24"
16763
- }, import_react207.default.createElement("path", {
16763
+ }, import_react208.default.createElement("path", {
16764
16764
  d: path2
16765
16765
  })));
16766
16766
  };
16767
- IconGoogle = /* @__PURE__ */ import_react207.default.createElement(SvgIcon, {
16767
+ IconGoogle = /* @__PURE__ */ import_react208.default.createElement(SvgIcon, {
16768
16768
  path: "M21.35 11.1h-9.17v2.73h6.5c-.33 3.8-3.5 5.44-6.5 5.44C8.36 19.27 5 16.25 5 12c0-4.1 3.2-7.27 7.2-7.27 3.1 0 4.9 1.97 4.9 1.97L19 4.72S16.56 2 12.1 2C6.42 2 2.03 6.8 2.03 12c0 5.05 4.13 10 10.22 10 5.35 0 9.25-3.67 9.25-9.1 0-1.15-.15-1.8-.15-1.8h0z"
16769
16769
  });
16770
- IconMicrosoft = /* @__PURE__ */ import_react207.default.createElement(SvgIcon, {
16770
+ IconMicrosoft = /* @__PURE__ */ import_react208.default.createElement(SvgIcon, {
16771
16771
  path: "M3 12V6.75l6-1.32v6.48L3 12m17-9v8.75l-10 .15V5.2L20 3M3 13l6 .1v6.8l-6-1.15V13m17 .25V22l-10-1.9v-7l10 .15z"
16772
16772
  });
16773
- IconApple = /* @__PURE__ */ import_react207.default.createElement(SvgIcon, {
16773
+ IconApple = /* @__PURE__ */ import_react208.default.createElement(SvgIcon, {
16774
16774
  path: "M18.7 19.5c-.83 1.24-1.7 2.45-3.05 2.47-1.34.03-1.77-.8-3.3-.8-1.53 0-2 .77-3.27.82-1.3.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.4c.87-1.52 2.43-2.48 4.12-2.5 1.28-.02 2.5.87 3.3.87.78 0 2.26-1.07 3.8-.9.65.03 2.47.26 3.64 1.98-.1.06-2.17 1.28-2.15 3.8.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.2-.7.85-1.83 1.5-2.95 1.42-.15-1.15.4-2.35 1.05-3.1z"
16775
16775
  });
16776
16776
  isIE = typeof window !== "undefined" && window.navigator.msSaveOrOpenBlob && window.Blob;
@@ -16826,14 +16826,14 @@ var init_mml_react_esm = __esm({
16826
16826
  window.open(url, "_blank");
16827
16827
  }
16828
16828
  }
16829
- return import_react207.default.createElement(Card2, {
16829
+ return import_react208.default.createElement(Card2, {
16830
16830
  className: "mml-add-to-calendar " + className
16831
- }, import_react207.default.createElement(CardHeader2, {
16831
+ }, import_react208.default.createElement(CardHeader2, {
16832
16832
  icon: "date_range",
16833
16833
  text: "Add to My Calendar"
16834
- }), import_react207.default.createElement(CardBody, null, import_react207.default.createElement(ButtonList, null, CALENDAR_SERVICES.map(function(_ref3) {
16834
+ }), import_react208.default.createElement(CardBody, null, import_react208.default.createElement(ButtonList, null, CALENDAR_SERVICES.map(function(_ref3) {
16835
16835
  var id = _ref3.id, label = _ref3.label, Icon5 = _ref3.Icon;
16836
- return import_react207.default.createElement("a", {
16836
+ return import_react208.default.createElement("a", {
16837
16837
  key: id,
16838
16838
  className: "mml-btn " + (Icon5 ? "mml-btn--with-icon" : ""),
16839
16839
  onClick: handleLinkClick,
@@ -16851,15 +16851,15 @@ var init_mml_react_esm = __esm({
16851
16851
  className += " mml-btn--text";
16852
16852
  }
16853
16853
  className += variant === "floating" ? " mml-btn--floating" : " mml-btn--grounded";
16854
- if (url) return import_react207.default.createElement("a", {
16854
+ if (url) return import_react208.default.createElement("a", {
16855
16855
  className: "mml-btn " + className,
16856
16856
  href: (0, import_sanitize_url4.sanitizeUrl)(url),
16857
16857
  target: "_blank",
16858
16858
  rel: "nofollow noreferrer noopener"
16859
- }, icon2 && import_react207.default.createElement(Icon3, {
16859
+ }, icon2 && import_react208.default.createElement(Icon3, {
16860
16860
  name: icon2
16861
16861
  }), text8);
16862
- return import_react207.default.createElement("button", {
16862
+ return import_react208.default.createElement("button", {
16863
16863
  className: "mml-btn " + className,
16864
16864
  type: "submit",
16865
16865
  name: name2,
@@ -16872,20 +16872,20 @@ var init_mml_react_esm = __esm({
16872
16872
  input2.value = value || "";
16873
16873
  (_event$currentTarget = event.currentTarget) == null ? void 0 : (_event$currentTarget$ = _event$currentTarget.closest("form")) == null ? void 0 : _event$currentTarget$.appendChild(input2);
16874
16874
  }
16875
- }, icon2 && import_react207.default.createElement(Icon3, {
16875
+ }, icon2 && import_react208.default.createElement(Icon3, {
16876
16876
  name: icon2
16877
16877
  }), text8);
16878
16878
  };
16879
16879
  Carousel = function Carousel2(_ref) {
16880
16880
  var children = _ref.children, _ref$slideWidth = _ref.slideWidth, slideWidth = _ref$slideWidth === void 0 ? "120px" : _ref$slideWidth, _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className;
16881
- return import_react207.default.createElement("div", {
16881
+ return import_react208.default.createElement("div", {
16882
16882
  className: "mml-carousel " + className
16883
- }, import_react207.default.createElement("div", {
16883
+ }, import_react208.default.createElement("div", {
16884
16884
  className: "mml-carousel__track"
16885
- }, import_react207.default.createElement("div", {
16885
+ }, import_react208.default.createElement("div", {
16886
16886
  className: "mml-carousel__slides"
16887
- }, import_react207.Children.map(children, function(child) {
16888
- return (0, import_react207.cloneElement)(child, {
16887
+ }, import_react208.Children.map(children, function(child) {
16888
+ return (0, import_react208.cloneElement)(child, {
16889
16889
  className: "mml-carousel__slide",
16890
16890
  slideWidth
16891
16891
  });
@@ -16894,7 +16894,7 @@ var init_mml_react_esm = __esm({
16894
16894
  CarouselItem = function CarouselItem2(_ref) {
16895
16895
  var children = _ref.children, slideWidth = _ref.slideWidth, _ref$width = _ref.width, width = _ref$width === void 0 ? "" : _ref$width, _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className;
16896
16896
  var finalWidth = width || slideWidth;
16897
- return import_react207.default.createElement("div", {
16897
+ return import_react208.default.createElement("div", {
16898
16898
  className: "mml-carousel-item " + className,
16899
16899
  style: {
16900
16900
  flex: "0 0 " + finalWidth,
@@ -16907,20 +16907,20 @@ var init_mml_react_esm = __esm({
16907
16907
  var classNames = "mml-col-" + width;
16908
16908
  if (offset) classNames = classNames + (" mml-offset-" + offset);
16909
16909
  classNames = classNames + (" mml-align-" + align);
16910
- return import_react207.default.createElement("div", {
16910
+ return import_react208.default.createElement("div", {
16911
16911
  className: classNames
16912
16912
  }, children);
16913
16913
  };
16914
16914
  Error$1 = function Error2(_ref) {
16915
16915
  var _ref$error = _ref.error, error = _ref$error === void 0 ? "" : _ref$error;
16916
16916
  if (!error) return null;
16917
- return import_react207.default.createElement("span", {
16917
+ return import_react208.default.createElement("span", {
16918
16918
  className: "mml-error"
16919
16919
  }, error);
16920
16920
  };
16921
16921
  Image2 = function Image3(_ref) {
16922
16922
  var src = _ref.src, _ref$alt = _ref.alt, alt = _ref$alt === void 0 ? "" : _ref$alt, _ref$title = _ref.title, title = _ref$title === void 0 ? "" : _ref$title, _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className;
16923
- return import_react207.default.createElement("img", {
16923
+ return import_react208.default.createElement("img", {
16924
16924
  className: ("mml-image " + className).trim(),
16925
16925
  src,
16926
16926
  alt,
@@ -16929,14 +16929,14 @@ var init_mml_react_esm = __esm({
16929
16929
  };
16930
16930
  Input = function Input2(_ref) {
16931
16931
  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;
16932
- var _useState = (0, import_react207.useState)(value), state = _useState[0], setState = _useState[1];
16932
+ var _useState = (0, import_react208.useState)(value), state = _useState[0], setState = _useState[1];
16933
16933
  var id = "mml-" + name2;
16934
- return import_react207.default.createElement(import_react207.default.Fragment, null, label && import_react207.default.createElement("label", {
16934
+ return import_react208.default.createElement(import_react208.default.Fragment, null, label && import_react208.default.createElement("label", {
16935
16935
  className: "mml-card-header",
16936
16936
  htmlFor: id
16937
- }, import_react207.default.createElement("span", {
16937
+ }, import_react208.default.createElement("span", {
16938
16938
  className: "mml-card-header__text"
16939
- }, label)), import_react207.default.createElement("input", {
16939
+ }, label)), import_react208.default.createElement("input", {
16940
16940
  id,
16941
16941
  className: "mml-input",
16942
16942
  name: name2,
@@ -16953,7 +16953,7 @@ var init_mml_react_esm = __esm({
16953
16953
  var size = _ref.size, _ref$thickness = _ref.thickness, thickness = _ref$thickness === void 0 ? 3.6 : _ref$thickness, color2 = _ref.color;
16954
16954
  thickness = typeof thickness === "string" ? parseFloat(thickness) : thickness;
16955
16955
  size = typeof size === "string" && /^\d+$/.test(size) || typeof size === "number" ? size + "px" : size;
16956
- return import_react207.default.createElement("span", {
16956
+ return import_react208.default.createElement("span", {
16957
16957
  className: "mml-progress",
16958
16958
  role: "progressbar",
16959
16959
  style: {
@@ -16961,10 +16961,10 @@ var init_mml_react_esm = __esm({
16961
16961
  height: size,
16962
16962
  color: color2
16963
16963
  }
16964
- }, import_react207.default.createElement("svg", {
16964
+ }, import_react208.default.createElement("svg", {
16965
16965
  className: "mml-progress__svg",
16966
16966
  viewBox: SIZE / 2 + " " + SIZE / 2 + " " + SIZE + " " + SIZE
16967
- }, import_react207.default.createElement("circle", {
16967
+ }, import_react208.default.createElement("circle", {
16968
16968
  className: "mml-progress__circle",
16969
16969
  cx: SIZE,
16970
16970
  cy: SIZE,
@@ -16976,13 +16976,13 @@ var init_mml_react_esm = __esm({
16976
16976
  Loading = function Loading2(_ref) {
16977
16977
  var _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className, _ref$loading = _ref.loading, loading = _ref$loading === void 0 ? false : _ref$loading, text8 = _ref.text, size = _ref.size, thickness = _ref.thickness, color2 = _ref.color;
16978
16978
  if (!loading) return null;
16979
- return import_react207.default.createElement("div", {
16979
+ return import_react208.default.createElement("div", {
16980
16980
  className: "mml-loading " + className
16981
- }, import_react207.default.createElement(Progress, Object.assign({}, {
16981
+ }, import_react208.default.createElement(Progress, Object.assign({}, {
16982
16982
  size,
16983
16983
  thickness,
16984
16984
  color: color2
16985
- })), text8 && import_react207.default.createElement("div", {
16985
+ })), text8 && import_react208.default.createElement("div", {
16986
16986
  className: "mml-loading__text"
16987
16987
  }, text8));
16988
16988
  };
@@ -17005,7 +17005,7 @@ var init_mml_react_esm = __esm({
17005
17005
  };
17006
17006
  MDLinkRender = function MDLinkRender2(props) {
17007
17007
  if (!props.href || !props.href.startsWith("http") && !props.href.startsWith("mailto:")) return props.children;
17008
- return import_react207.default.createElement("a", {
17008
+ return import_react208.default.createElement("a", {
17009
17009
  href: props.href,
17010
17010
  target: "_blank",
17011
17011
  rel: "nofollow noreferrer noopener"
@@ -17044,9 +17044,9 @@ var init_mml_react_esm = __esm({
17044
17044
  var displayLink = type === "email" ? value : truncate(value.replace(/(http(s?):\/\/)?(www\.)?/, ""), 20);
17045
17045
  newText = newText.replace(value, "[" + displayLink + "](" + encodeURI(href) + ")");
17046
17046
  });
17047
- return import_react207.default.createElement("div", {
17047
+ return import_react208.default.createElement("div", {
17048
17048
  className: "mml-md"
17049
- }, import_react207.default.createElement(import_react_markdown3.default, {
17049
+ }, import_react208.default.createElement(import_react_markdown3.default, {
17050
17050
  allowedTypes: allowedMarkups,
17051
17051
  renderers: markDownRenderers2,
17052
17052
  source: newText,
@@ -17059,34 +17059,34 @@ var init_mml_react_esm = __esm({
17059
17059
  };
17060
17060
  Number2 = function Number3(_ref) {
17061
17061
  var name2 = _ref.name, value = _ref.value;
17062
- var _useState = (0, import_react207.useState)(parseInt("" + value, 10) || 0), state = _useState[0], setState = _useState[1];
17063
- return import_react207.default.createElement("div", {
17062
+ var _useState = (0, import_react208.useState)(parseInt("" + value, 10) || 0), state = _useState[0], setState = _useState[1];
17063
+ return import_react208.default.createElement("div", {
17064
17064
  className: "mml-number"
17065
- }, import_react207.default.createElement("input", {
17065
+ }, import_react208.default.createElement("input", {
17066
17066
  name: name2,
17067
17067
  value: state,
17068
17068
  type: "hidden"
17069
- }), import_react207.default.createElement("span", {
17069
+ }), import_react208.default.createElement("span", {
17070
17070
  className: "mml-btn mml-btn--floating mml-btn--icon mml-number__dec",
17071
17071
  onClick: function onClick() {
17072
17072
  return setState(state - 1);
17073
17073
  }
17074
- }, import_react207.default.createElement(Icon3, {
17074
+ }, import_react208.default.createElement(Icon3, {
17075
17075
  name: "remove"
17076
- })), import_react207.default.createElement("span", {
17076
+ })), import_react208.default.createElement("span", {
17077
17077
  className: "mml-number__count"
17078
- }, state), import_react207.default.createElement("span", {
17078
+ }, state), import_react208.default.createElement("span", {
17079
17079
  className: "mml-btn mml-btn--floating mml-btn--icon mml-number__inc",
17080
17080
  onClick: function onClick() {
17081
17081
  return setState(state + 1);
17082
17082
  }
17083
- }, import_react207.default.createElement(Icon3, {
17083
+ }, import_react208.default.createElement(Icon3, {
17084
17084
  name: "add"
17085
17085
  })));
17086
17086
  };
17087
17087
  Row = function Row2(_ref) {
17088
17088
  var children = _ref.children;
17089
- return import_react207.default.createElement("div", {
17089
+ return import_react208.default.createElement("div", {
17090
17090
  className: "mml-row"
17091
17091
  }, children);
17092
17092
  };
@@ -17096,7 +17096,7 @@ var init_mml_react_esm = __esm({
17096
17096
  VIRTUOSO_START_INDEX = 1e4;
17097
17097
  DatePickerSelect = function DatePickerSelect2(props) {
17098
17098
  var onChange = props.onChange, icalFilter = props.icalFilter, getItemData4 = props.getItemData, itemClassName = props.itemClassName, interval = props.interval, format = props.format, value = props.value;
17099
- var generateItems = (0, import_react207.useCallback)(function(quantity, firstIdx) {
17099
+ var generateItems = (0, import_react208.useCallback)(function(quantity, firstIdx) {
17100
17100
  return Array(quantity).fill(true).map(function(_, idx) {
17101
17101
  return getItemData4({
17102
17102
  interval,
@@ -17108,11 +17108,11 @@ var init_mml_react_esm = __esm({
17108
17108
  return !icalFilter || icalFilter && icalFilter(newItem.value);
17109
17109
  });
17110
17110
  }, [interval, format, value, icalFilter, getItemData4]);
17111
- var _useState = (0, import_react207.useState)(generateItems(ITEMS_PER_PAGE * 2, -ITEMS_PER_PAGE)), items = _useState[0], setItems = _useState[1];
17112
- var _useState2 = (0, import_react207.useState)(VIRTUOSO_START_INDEX), firstItemIndex = _useState2[0], setFirstItemIndex = _useState2[1];
17113
- var initialIndexOffset = (0, import_react207.useRef)(INITIAL_INDEX);
17114
- var _useState3 = (0, import_react207.useState)(null), selectedIdx = _useState3[0], setSelectedIdx = _useState3[1];
17115
- var handleClick = (0, import_react207.useCallback)(function(item2) {
17111
+ var _useState = (0, import_react208.useState)(generateItems(ITEMS_PER_PAGE * 2, -ITEMS_PER_PAGE)), items = _useState[0], setItems = _useState[1];
17112
+ var _useState2 = (0, import_react208.useState)(VIRTUOSO_START_INDEX), firstItemIndex = _useState2[0], setFirstItemIndex = _useState2[1];
17113
+ var initialIndexOffset = (0, import_react208.useRef)(INITIAL_INDEX);
17114
+ var _useState3 = (0, import_react208.useState)(null), selectedIdx = _useState3[0], setSelectedIdx = _useState3[1];
17115
+ var handleClick = (0, import_react208.useCallback)(function(item2) {
17116
17116
  onChange(item2.value);
17117
17117
  var firstItemIndex2 = initialIndexOffset.current || 0;
17118
17118
  var nextFirstItemIdx = firstItemIndex2 - INITIAL_INDEX - ITEMS_PER_PAGE;
@@ -17126,12 +17126,12 @@ var init_mml_react_esm = __esm({
17126
17126
  }
17127
17127
  setSelectedIdx(item2.idx);
17128
17128
  }, [setItems, generateItems, initialIndexOffset, onChange]);
17129
- var appendItems = (0, import_react207.useCallback)(function(lastItemIndex) {
17129
+ var appendItems = (0, import_react208.useCallback)(function(lastItemIndex) {
17130
17130
  setItems(function(items2) {
17131
17131
  return [].concat(items2, generateItems(ITEMS_PER_PAGE, lastItemIndex));
17132
17132
  });
17133
17133
  }, [setItems, generateItems]);
17134
- var prependItems = (0, import_react207.useCallback)(function() {
17134
+ var prependItems = (0, import_react208.useCallback)(function() {
17135
17135
  var firstItemIndex2 = initialIndexOffset.current || 0;
17136
17136
  var nextFirstItemIdx = firstItemIndex2 - INITIAL_INDEX - ITEMS_PER_PAGE;
17137
17137
  if (initialIndexOffset) {
@@ -17143,7 +17143,7 @@ var init_mml_react_esm = __esm({
17143
17143
  setFirstItemIndex(firstItemIndex2 - ITEMS_PER_PAGE);
17144
17144
  return false;
17145
17145
  }, [setItems, generateItems, initialIndexOffset]);
17146
- (0, import_react207.useEffect)(function() {
17146
+ (0, import_react208.useEffect)(function() {
17147
17147
  if (value) {
17148
17148
  var initialSelectedIdx = null;
17149
17149
  for (var i = 0; i < items.length; i++) {
@@ -17155,11 +17155,11 @@ var init_mml_react_esm = __esm({
17155
17155
  setSelectedIdx(initialSelectedIdx);
17156
17156
  }
17157
17157
  }, []);
17158
- return import_react207.default.createElement(import_react_virtuoso2.Virtuoso, {
17158
+ return import_react208.default.createElement(import_react_virtuoso2.Virtuoso, {
17159
17159
  data: items,
17160
17160
  firstItemIndex,
17161
17161
  itemContent: function itemContent(_, item2) {
17162
- return import_react207.default.createElement("div", {
17162
+ return import_react208.default.createElement("div", {
17163
17163
  className: itemClassName + (" mml-datepicker__item " + (item2.idx === selectedIdx ? "mml-datepicker__item--selected" : "")),
17164
17164
  onClick: function onClick() {
17165
17165
  return handleClick(item2);
@@ -17183,9 +17183,9 @@ var init_mml_react_esm = __esm({
17183
17183
  };
17184
17184
  };
17185
17185
  DatePickerDate = function DatePickerDate2(props) {
17186
- return import_react207.default.createElement("div", {
17186
+ return import_react208.default.createElement("div", {
17187
17187
  className: "mml-datepicker__select mml-datepicker__date"
17188
- }, import_react207.default.createElement(DatePickerSelect, Object.assign({}, props, {
17188
+ }, import_react208.default.createElement(DatePickerSelect, Object.assign({}, props, {
17189
17189
  itemClassName: "mml-datepicker__item--day",
17190
17190
  getItemData
17191
17191
  })));
@@ -17204,16 +17204,16 @@ var init_mml_react_esm = __esm({
17204
17204
  };
17205
17205
  };
17206
17206
  DatePickerTime = function DatePickerTime2(props) {
17207
- return import_react207.default.createElement("div", {
17207
+ return import_react208.default.createElement("div", {
17208
17208
  className: "mml-datepicker__select mml-datepicker__time"
17209
- }, import_react207.default.createElement(DatePickerSelect, Object.assign({}, props, {
17209
+ }, import_react208.default.createElement(DatePickerSelect, Object.assign({}, props, {
17210
17210
  itemClassName: "mml-datepicker__item--time",
17211
17211
  getItemData: getItemData$1
17212
17212
  })));
17213
17213
  };
17214
17214
  DatePicker = function DatePicker2(_ref) {
17215
17215
  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;
17216
- var _useState = (0, import_react207.useState)(selected), date = _useState[0], setDate = _useState[1];
17216
+ var _useState = (0, import_react208.useState)(selected), date = _useState[0], setDate = _useState[1];
17217
17217
  var handleChangeDate = function handleChangeDate2(value) {
17218
17218
  setDate(function(prevDate) {
17219
17219
  return prevDate.set("date", value.get("date")).set("month", value.get("month")).set("year", value.get("year"));
@@ -17224,19 +17224,19 @@ var init_mml_react_esm = __esm({
17224
17224
  return prevDate.set("minute", value.get("minute")).set("hour", value.get("hour"));
17225
17225
  });
17226
17226
  };
17227
- return import_react207.default.createElement("div", {
17227
+ return import_react208.default.createElement("div", {
17228
17228
  className: "mml-datepicker mml-datepicker--" + (fullDay ? "single" : "double")
17229
- }, import_react207.default.createElement("input", {
17229
+ }, import_react208.default.createElement("input", {
17230
17230
  name: name2,
17231
17231
  value: date.toISOString(),
17232
17232
  type: "hidden"
17233
- }), import_react207.default.createElement(DatePickerDate, {
17233
+ }), import_react208.default.createElement(DatePickerDate, {
17234
17234
  icalFilter,
17235
17235
  format: dateFormat,
17236
17236
  value: date,
17237
17237
  onChange: handleChangeDate,
17238
17238
  interval: dateInterval
17239
- }), !fullDay && import_react207.default.createElement(DatePickerTime, {
17239
+ }), !fullDay && import_react208.default.createElement(DatePickerTime, {
17240
17240
  icalFilter,
17241
17241
  format: timeFormat,
17242
17242
  value: date,
@@ -17293,14 +17293,14 @@ var init_mml_react_esm = __esm({
17293
17293
  }();
17294
17294
  Scheduler = function Scheduler2(_ref2) {
17295
17295
  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;
17296
- var _useState = (0, import_react207.useState)(false), loading = _useState[0], setLoading = _useState[1];
17297
- var _useState2 = (0, import_react207.useState)(""), error = _useState2[0], setError = _useState2[1];
17298
- var _useState3 = (0, import_react207.useState)(function() {
17296
+ var _useState = (0, import_react208.useState)(false), loading = _useState[0], setLoading = _useState[1];
17297
+ var _useState2 = (0, import_react208.useState)(""), error = _useState2[0], setError = _useState2[1];
17298
+ var _useState3 = (0, import_react208.useState)(function() {
17299
17299
  return function() {
17300
17300
  return true;
17301
17301
  };
17302
17302
  }), icalFilter = _useState3[0], setIcalFilter = _useState3[1];
17303
- (0, import_react207.useEffect)(function() {
17303
+ (0, import_react208.useEffect)(function() {
17304
17304
  if (!icalAvailability) return;
17305
17305
  setLoading(true);
17306
17306
  setupIcalFilter(icalAvailability, duration).then(setIcalFilter)["catch"](function(err) {
@@ -17313,17 +17313,17 @@ var init_mml_react_esm = __esm({
17313
17313
  return setLoading(false);
17314
17314
  });
17315
17315
  }, [icalAvailability, duration]);
17316
- return import_react207.default.createElement(Card2, {
17316
+ return import_react208.default.createElement(Card2, {
17317
17317
  className: "mml-scheduler"
17318
- }, import_react207.default.createElement(CardHeader2, {
17318
+ }, import_react208.default.createElement(CardHeader2, {
17319
17319
  icon: "date_range",
17320
17320
  text: "Scheduler"
17321
- }), import_react207.default.createElement(CardBody, null, error && !loading && import_react207.default.createElement(Error$1, {
17321
+ }), import_react208.default.createElement(CardBody, null, error && !loading && import_react208.default.createElement(Error$1, {
17322
17322
  error: "Failed, error: " + error
17323
- }), !error && loading && import_react207.default.createElement(Loading, {
17323
+ }), !error && loading && import_react208.default.createElement(Loading, {
17324
17324
  loading: true,
17325
17325
  text: "Loading availability"
17326
- }), !error && !loading && import_react207.default.createElement(DatePicker, {
17326
+ }), !error && !loading && import_react208.default.createElement(DatePicker, {
17327
17327
  name: name2,
17328
17328
  selected: selected ? (0, import_dayjs4.default)(selected) : (0, import_dayjs4.default)().startOf("hour"),
17329
17329
  dateInterval,
@@ -17336,20 +17336,20 @@ var init_mml_react_esm = __esm({
17336
17336
  };
17337
17337
  Success = function Success2(_ref) {
17338
17338
  var success = _ref.success;
17339
- if (success) return import_react207.default.createElement("div", {
17339
+ if (success) return import_react208.default.createElement("div", {
17340
17340
  className: "mml-success"
17341
17341
  }, success);
17342
17342
  return null;
17343
17343
  };
17344
17344
  Text = function Text2(_ref) {
17345
17345
  var text8 = _ref.text, _ref$className = _ref.className, className = _ref$className === void 0 ? "" : _ref$className;
17346
- return import_react207.default.createElement("div", {
17346
+ return import_react208.default.createElement("div", {
17347
17347
  className: ("mml-text " + className).trim()
17348
17348
  }, text8);
17349
17349
  };
17350
17350
  converters = {
17351
17351
  button: function button(tag) {
17352
- return import_react207.default.createElement(Button, Object.assign({}, tag.attributes, {
17352
+ return import_react208.default.createElement(Button, Object.assign({}, tag.attributes, {
17353
17353
  key: tag.key,
17354
17354
  text: tag.getText(),
17355
17355
  name: tag.attributes.name,
@@ -17357,19 +17357,19 @@ var init_mml_react_esm = __esm({
17357
17357
  }));
17358
17358
  },
17359
17359
  button_list: function button_list(tag, children) {
17360
- return import_react207.default.createElement(ButtonList, Object.assign({}, tag.attributes, {
17360
+ return import_react208.default.createElement(ButtonList, Object.assign({}, tag.attributes, {
17361
17361
  key: tag.key
17362
17362
  }), children);
17363
17363
  },
17364
17364
  input: function input(tag) {
17365
- return import_react207.default.createElement(Input, Object.assign({}, tag.attributes, {
17365
+ return import_react208.default.createElement(Input, Object.assign({}, tag.attributes, {
17366
17366
  key: tag.key,
17367
17367
  name: tag.attributes.name,
17368
17368
  value: tag.attributes.value
17369
17369
  }));
17370
17370
  },
17371
17371
  add_to_calendar: function add_to_calendar(tag) {
17372
- return import_react207.default.createElement(AddToCalendar, Object.assign({}, tag.attributes, {
17372
+ return import_react208.default.createElement(AddToCalendar, Object.assign({}, tag.attributes, {
17373
17373
  key: tag.key,
17374
17374
  title: tag.attributes.title,
17375
17375
  start: tag.attributes.start,
@@ -17377,41 +17377,41 @@ var init_mml_react_esm = __esm({
17377
17377
  }));
17378
17378
  },
17379
17379
  col: function col(tag, children) {
17380
- return import_react207.default.createElement(Col, Object.assign({}, tag.attributes, {
17380
+ return import_react208.default.createElement(Col, Object.assign({}, tag.attributes, {
17381
17381
  key: tag.key
17382
17382
  }), children);
17383
17383
  },
17384
17384
  row: function row(tag, children) {
17385
- return import_react207.default.createElement(Row, Object.assign({}, tag.attributes, {
17385
+ return import_react208.default.createElement(Row, Object.assign({}, tag.attributes, {
17386
17386
  key: tag.key
17387
17387
  }), children);
17388
17388
  },
17389
17389
  icon: function icon(tag) {
17390
- return import_react207.default.createElement(Icon3, Object.assign({}, tag.attributes, {
17390
+ return import_react208.default.createElement(Icon3, Object.assign({}, tag.attributes, {
17391
17391
  key: tag.key,
17392
17392
  name: tag.attributes.name
17393
17393
  }));
17394
17394
  },
17395
17395
  image: function image3(tag) {
17396
- return import_react207.default.createElement(Image2, Object.assign({}, tag.attributes, {
17396
+ return import_react208.default.createElement(Image2, Object.assign({}, tag.attributes, {
17397
17397
  key: tag.key,
17398
17398
  src: tag.attributes.src
17399
17399
  }));
17400
17400
  },
17401
17401
  md: function md(tag) {
17402
- return import_react207.default.createElement(MD, Object.assign({}, tag.attributes, {
17402
+ return import_react208.default.createElement(MD, Object.assign({}, tag.attributes, {
17403
17403
  key: tag.key,
17404
17404
  text: tag.getText()
17405
17405
  }));
17406
17406
  },
17407
17407
  text: function text7(tag) {
17408
- return import_react207.default.createElement(Text, Object.assign({}, tag.attributes, {
17408
+ return import_react208.default.createElement(Text, Object.assign({}, tag.attributes, {
17409
17409
  key: tag.key,
17410
17410
  text: tag.getText()
17411
17411
  }));
17412
17412
  },
17413
17413
  scheduler: function scheduler(tag) {
17414
- return import_react207.default.createElement(Scheduler, Object.assign({}, tag.attributes, {
17414
+ return import_react208.default.createElement(Scheduler, Object.assign({}, tag.attributes, {
17415
17415
  key: tag.key,
17416
17416
  name: tag.attributes.name,
17417
17417
  dateInterval: parseInt(tag.attributes.dateInterval, 10) || 1,
@@ -17423,19 +17423,19 @@ var init_mml_react_esm = __esm({
17423
17423
  }));
17424
17424
  },
17425
17425
  carousel: function carousel(tag, children) {
17426
- return import_react207.default.createElement(Carousel, Object.assign({
17426
+ return import_react208.default.createElement(Carousel, Object.assign({
17427
17427
  slideWidth: tag.attributes.slideWidth
17428
17428
  }, tag.attributes, {
17429
17429
  key: tag.key
17430
17430
  }), children);
17431
17431
  },
17432
17432
  item: function item(tag, children) {
17433
- return import_react207.default.createElement(CarouselItem, Object.assign({}, tag.attributes, {
17433
+ return import_react208.default.createElement(CarouselItem, Object.assign({}, tag.attributes, {
17434
17434
  key: tag.key
17435
17435
  }), children);
17436
17436
  },
17437
17437
  number: function number2(tag) {
17438
- return import_react207.default.createElement(Number2, Object.assign({}, tag.attributes, {
17438
+ return import_react208.default.createElement(Number2, Object.assign({}, tag.attributes, {
17439
17439
  key: tag.key,
17440
17440
  name: tag.attributes.name,
17441
17441
  value: tag.attributes.value
@@ -17473,13 +17473,13 @@ var init_mml_react_esm = __esm({
17473
17473
  }();
17474
17474
  MML = function MML2(_ref) {
17475
17475
  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, Error3 = _ref$Error === void 0 ? Error$1 : _ref$Error, _ref$Success = _ref.Success, Success$1 = _ref$Success === void 0 ? Success : _ref$Success;
17476
- var _useState = (0, import_react207.useState)(""), error = _useState[0], setError = _useState[1];
17477
- var _useState2 = (0, import_react207.useState)({
17476
+ var _useState = (0, import_react208.useState)(""), error = _useState[0], setError = _useState[1];
17477
+ var _useState2 = (0, import_react208.useState)({
17478
17478
  loading: false,
17479
17479
  error: "",
17480
17480
  success: ""
17481
17481
  }), submitState = _useState2[0], setSubmitState = _useState2[1];
17482
- var tree = (0, import_react207.useMemo)(function() {
17482
+ var tree = (0, import_react208.useMemo)(function() {
17483
17483
  try {
17484
17484
  return Parse(source, converters2);
17485
17485
  } catch (e2) {
@@ -17488,7 +17488,7 @@ var init_mml_react_esm = __esm({
17488
17488
  return null;
17489
17489
  }
17490
17490
  }, [source, converters2]);
17491
- var handleSubmit = (0, import_react207.useCallback)(/* @__PURE__ */ function() {
17491
+ var handleSubmit = (0, import_react208.useCallback)(/* @__PURE__ */ function() {
17492
17492
  var _ref2 = _asyncToGenerator(/* @__PURE__ */ runtime_1.mark(function _callee(event) {
17493
17493
  var state;
17494
17494
  return runtime_1.wrap(function _callee$(_context) {
@@ -17542,24 +17542,24 @@ var init_mml_react_esm = __esm({
17542
17542
  return _ref2.apply(this, arguments);
17543
17543
  };
17544
17544
  }(), [onSubmit, tree]);
17545
- return import_react207.default.createElement("div", {
17545
+ return import_react208.default.createElement("div", {
17546
17546
  className: "mml-container " + theme + " " + className,
17547
17547
  "data-testid": "mml-container"
17548
- }, error ? import_react207.default.createElement("div", {
17548
+ }, error ? import_react208.default.createElement("div", {
17549
17549
  className: "mml-wrap"
17550
- }, Error3 && import_react207.default.createElement(Error3, {
17550
+ }, Error3 && import_react208.default.createElement(Error3, {
17551
17551
  error
17552
- })) : import_react207.default.createElement("form", {
17552
+ })) : import_react208.default.createElement("form", {
17553
17553
  onSubmit: handleSubmit,
17554
17554
  className: "mml-wrap",
17555
17555
  "data-testid": "mml-form"
17556
- }, tree != null && tree.type ? import_react207.default.createElement("div", {
17556
+ }, tree != null && tree.type ? import_react208.default.createElement("div", {
17557
17557
  className: "mml-card"
17558
- }, tree == null ? void 0 : tree.reactElements) : tree == null ? void 0 : tree.reactElements, submitState.loading && Loading$1 && import_react207.default.createElement(Loading$1, {
17558
+ }, tree == null ? void 0 : tree.reactElements) : tree == null ? void 0 : tree.reactElements, submitState.loading && Loading$1 && import_react208.default.createElement(Loading$1, {
17559
17559
  loading: submitState.loading
17560
- }), submitState.success && Success$1 && import_react207.default.createElement(Success$1, {
17560
+ }), submitState.success && Success$1 && import_react208.default.createElement(Success$1, {
17561
17561
  success: submitState.success
17562
- }), submitState.error && Error3 && import_react207.default.createElement(Error3, {
17562
+ }), submitState.error && Error3 && import_react208.default.createElement(Error3, {
17563
17563
  error: submitState.error
17564
17564
  })));
17565
17565
  };
@@ -18130,13 +18130,14 @@ var withComponentContext = (Component2) => {
18130
18130
  var import_react10 = __toESM(require("react"));
18131
18131
 
18132
18132
  // src/components/Dialog/DialogManager.ts
18133
+ var import_nanoid = require("nanoid");
18133
18134
  var import_stream_chat = require("stream-chat");
18134
18135
  var DialogManager = class {
18135
18136
  constructor({ id } = {}) {
18136
18137
  this.state = new import_stream_chat.StateStore({
18137
18138
  dialogsById: {}
18138
18139
  });
18139
- this.id = id ?? (/* @__PURE__ */ new Date()).getTime().toString();
18140
+ this.id = id ?? (0, import_nanoid.nanoid)();
18140
18141
  }
18141
18142
  get openDialogCount() {
18142
18143
  return Object.values(this.state.getLatestValue().dialogsById).reduce(
@@ -20395,7 +20396,7 @@ var ImageDropzone = ({
20395
20396
 
20396
20397
  // src/components/ReactFileUtilities/UploadButton.tsx
20397
20398
  var import_clsx5 = __toESM(require("clsx"));
20398
- var import_nanoid = require("nanoid");
20399
+ var import_nanoid2 = require("nanoid");
20399
20400
  var import_react34 = __toESM(require("react"));
20400
20401
 
20401
20402
  // src/components/ReactFileUtilities/utils.ts
@@ -20511,7 +20512,7 @@ var UploadFileInput = (0, import_react34.forwardRef)(function UploadFileInput2({
20511
20512
  const { t: t2 } = useTranslationContext("UploadFileInput");
20512
20513
  const { acceptedFiles = [], multipleUploads } = useChannelStateContext("UploadFileInput");
20513
20514
  const { isUploadEnabled, maxFilesLeft, uploadNewFiles } = useMessageInputContext("UploadFileInput");
20514
- const id = (0, import_react34.useMemo)(() => (0, import_nanoid.nanoid)(), []);
20515
+ const id = (0, import_react34.useMemo)(() => (0, import_nanoid2.nanoid)(), []);
20515
20516
  const onFileChange = (0, import_react34.useCallback)(
20516
20517
  (files) => {
20517
20518
  uploadNewFiles(files);
@@ -35598,11 +35599,11 @@ ReactTextareaAutocomplete.propTypes = {
35598
35599
  };
35599
35600
 
35600
35601
  // src/components/Channel/Channel.tsx
35601
- var import_react259 = __toESM(require("react"));
35602
+ var import_react260 = __toESM(require("react"));
35602
35603
  var import_lodash22 = __toESM(require("lodash.debounce"));
35603
35604
  var import_lodash23 = __toESM(require("lodash.defaultsdeep"));
35604
35605
  var import_lodash24 = __toESM(require("lodash.throttle"));
35605
- var import_nanoid11 = require("nanoid");
35606
+ var import_nanoid12 = require("nanoid");
35606
35607
  var import_clsx65 = __toESM(require("clsx"));
35607
35608
 
35608
35609
  // src/components/Channel/channelState.ts
@@ -39276,11 +39277,11 @@ var useCreateMessageInputContext = (value) => {
39276
39277
 
39277
39278
  // src/components/MessageInput/hooks/useMessageInputState.ts
39278
39279
  var import_react77 = require("react");
39279
- var import_nanoid4 = require("nanoid");
39280
+ var import_nanoid5 = require("nanoid");
39280
39281
 
39281
39282
  // src/components/MessageInput/hooks/useAttachments.ts
39282
39283
  var import_react71 = require("react");
39283
- var import_nanoid2 = require("nanoid");
39284
+ var import_nanoid3 = require("nanoid");
39284
39285
  var apiMaxNumberOfFiles = 10;
39285
39286
  var isImageFile = (file) => file.type.startsWith("image/") && !file.type.endsWith(".photoshop");
39286
39287
  var getAttachmentTypeFromMime = (mimeType) => {
@@ -39297,7 +39298,7 @@ var ensureIsLocalAttachment = (attachment) => {
39297
39298
  return {
39298
39299
  localMetadata: {
39299
39300
  ...localMetadata ?? {},
39300
- id: localMetadata?.id || (0, import_nanoid2.nanoid)()
39301
+ id: localMetadata?.id || (0, import_nanoid3.nanoid)()
39301
39302
  },
39302
39303
  ...rest
39303
39304
  };
@@ -39345,7 +39346,7 @@ var useAttachments = (props, state, dispatch, textareaRef) => {
39345
39346
  uploadType: isImage ? "image" : "file"
39346
39347
  });
39347
39348
  if (!canUpload) return att;
39348
- localMetadata.id = localMetadata?.id ?? (0, import_nanoid2.nanoid)();
39349
+ localMetadata.id = localMetadata?.id ?? (0, import_nanoid3.nanoid)();
39349
39350
  const finalAttachment = {
39350
39351
  type: getAttachmentTypeFromMime(file.type)
39351
39352
  };
@@ -39457,7 +39458,7 @@ var useAttachments = (props, state, dispatch, textareaRef) => {
39457
39458
  fileName: generateFileName(fileLike.type),
39458
39459
  mimeType: fileLike.type
39459
39460
  }) : fileLike,
39460
- id: (0, import_nanoid2.nanoid)()
39461
+ id: (0, import_nanoid3.nanoid)()
39461
39462
  }
39462
39463
  });
39463
39464
  });
@@ -39726,10 +39727,12 @@ var useSubmitHandler = (props, state, dispatch, numberOfUploads, enrichURLsContr
39726
39727
  if (someAttachmentsUploading) {
39727
39728
  return addNotification(t2("Wait until all attachments have uploaded"), "error");
39728
39729
  }
39729
- const attachmentsFromUploads = attachments.filter(
39730
- (att) => att.localMetadata?.uploadState !== "failed" || findAndEnqueueURLsToEnrich && !att.og_scrape_url
39731
- // filter out all the attachments scraped before the message was edited
39732
- ).map((localAttachment) => {
39730
+ const attachmentsWithoutLinkPreviews = attachments.filter((att) => {
39731
+ const isSuccessfulUpload = att.localMetadata?.uploadState === "finished";
39732
+ const isNotUpload = !att.localMetadata?.uploadState;
39733
+ const isNotLinkPreview = !att.og_scrape_url;
39734
+ return isNotLinkPreview && (isSuccessfulUpload || isNotUpload);
39735
+ }).map((localAttachment) => {
39733
39736
  const { localMetadata: _, ...attachment } = localAttachment;
39734
39737
  return attachment;
39735
39738
  });
@@ -39743,17 +39746,16 @@ var useSubmitHandler = (props, state, dispatch, numberOfUploads, enrichURLsContr
39743
39746
  const someLinkPreviewsDismissed = Array.from(linkPreviews.values()).some(
39744
39747
  (linkPreview) => linkPreview.state === "dismissed" /* DISMISSED */
39745
39748
  );
39746
- attachmentsFromLinkPreviews = someLinkPreviewsLoading ? [] : Array.from(linkPreviews.values()).filter(
39747
- (linkPreview) => linkPreview.state === "loaded" /* LOADED */ && !attachmentsFromUploads.find(
39748
- (attFromUpload) => attFromUpload.og_scrape_url === linkPreview.og_scrape_url
39749
- )
39750
- ).map(
39749
+ attachmentsFromLinkPreviews = someLinkPreviewsLoading ? [] : Array.from(linkPreviews.values()).filter((linkPreview) => linkPreview.state === "loaded" /* LOADED */).map(
39751
39750
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
39752
39751
  ({ state: linkPreviewState, ...ogAttachment }) => ogAttachment
39753
39752
  );
39754
39753
  sendOptions.skip_enrich_url = !someLinkPreviewsLoading && attachmentsFromLinkPreviews.length > 0 || someLinkPreviewsDismissed;
39755
39754
  }
39756
- const newAttachments = [...attachmentsFromUploads, ...attachmentsFromLinkPreviews];
39755
+ const newAttachments = [
39756
+ ...attachmentsWithoutLinkPreviews,
39757
+ ...attachmentsFromLinkPreviews
39758
+ ];
39757
39759
  const actualMentionedUsers = Array.from(
39758
39760
  new Set(
39759
39761
  mentioned_users.filter(
@@ -40038,7 +40040,7 @@ var BrowserPermission = class {
40038
40040
 
40039
40041
  // src/components/MediaRecorder/classes/MediaRecorderController.ts
40040
40042
  var import_fix_webm_duration = __toESM(require("fix-webm-duration"));
40041
- var import_nanoid3 = require("nanoid");
40043
+ var import_nanoid4 = require("nanoid");
40042
40044
 
40043
40045
  // src/utils/mergeDeep.ts
40044
40046
  var import_lodash6 = __toESM(require("lodash.mergewith"));
@@ -40318,7 +40320,7 @@ var MediaRecorderController = class {
40318
40320
  file_size: blob.size,
40319
40321
  localMetadata: {
40320
40322
  file,
40321
- id: (0, import_nanoid3.nanoid)()
40323
+ id: (0, import_nanoid4.nanoid)()
40322
40324
  },
40323
40325
  mime_type: blob.type,
40324
40326
  title: file.name,
@@ -40585,7 +40587,7 @@ var initState = (message) => {
40585
40587
  const attachments = message.attachments?.filter(({ og_scrape_url }) => !og_scrape_url).map(
40586
40588
  (att) => ({
40587
40589
  ...att,
40588
- localMetadata: { id: (0, import_nanoid4.nanoid)() }
40590
+ localMetadata: { id: (0, import_nanoid5.nanoid)() }
40589
40591
  })
40590
40592
  ) || [];
40591
40593
  const mentioned_users = message.mentioned_users || [];
@@ -40866,10 +40868,10 @@ var UnMemoizedConnectionStatus = () => {
40866
40868
  var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
40867
40869
 
40868
40870
  // src/components/MessageList/GiphyPreviewMessage.tsx
40869
- var import_react228 = __toESM(require("react"));
40871
+ var import_react229 = __toESM(require("react"));
40870
40872
 
40871
40873
  // src/components/Message/Message.tsx
40872
- var import_react227 = __toESM(require("react"));
40874
+ var import_react228 = __toESM(require("react"));
40873
40875
 
40874
40876
  // src/components/Message/hooks/useActionHandler.ts
40875
40877
  var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
@@ -44444,7 +44446,7 @@ var useMessageTextStreaming = ({
44444
44446
  };
44445
44447
 
44446
44448
  // src/components/Message/MessageSimple.tsx
44447
- var import_react226 = __toESM(require("react"));
44449
+ var import_react227 = __toESM(require("react"));
44448
44450
  var import_clsx60 = __toESM(require("clsx"));
44449
44451
 
44450
44452
  // src/components/Message/icons.tsx
@@ -46387,7 +46389,7 @@ var PollOptionWithLatestVotes = ({
46387
46389
  // src/components/Poll/PollActions/PollResults/PollResults.tsx
46388
46390
  var pollStateSelector10 = (nextValue) => ({
46389
46391
  name: nextValue.name,
46390
- options: nextValue.options,
46392
+ options: [...nextValue.options],
46391
46393
  vote_counts_by_option: nextValue.vote_counts_by_option
46392
46394
  });
46393
46395
  var PollResults = ({
@@ -46579,12 +46581,12 @@ var Poll = ({
46579
46581
 
46580
46582
  // src/components/Poll/PollCreationDialog/PollCreationDialog.tsx
46581
46583
  var import_clsx48 = __toESM(require("clsx"));
46582
- var import_nanoid6 = require("nanoid");
46584
+ var import_nanoid7 = require("nanoid");
46583
46585
  var import_react179 = __toESM(require("react"));
46584
46586
 
46585
46587
  // src/components/Poll/PollCreationDialog/OptionFieldSet.tsx
46586
46588
  var import_clsx46 = __toESM(require("clsx"));
46587
- var import_nanoid5 = require("nanoid");
46589
+ var import_nanoid6 = require("nanoid");
46588
46590
  var import_react176 = __toESM(require("react"));
46589
46591
 
46590
46592
  // src/components/DragAndDrop/DragAndDropContainer.tsx
@@ -46767,7 +46769,7 @@ var OptionFieldSet = ({
46767
46769
  const shouldAddEmptyOption = prev.options.length < MAX_POLL_OPTIONS && (!prev.options || prev.options.slice(i + 1).length === 0 && !!e2.target.value);
46768
46770
  const shouldRemoveOption = prev.options && prev.options.slice(i + 1).length > 0 && !e2.target.value;
46769
46771
  const optionListHead = prev.options ? prev.options.slice(0, i) : [];
46770
- const optionListTail = shouldAddEmptyOption ? [{ id: (0, import_nanoid5.nanoid)(), text: "" }] : (prev.options || []).slice(i + 1);
46772
+ const optionListTail = shouldAddEmptyOption ? [{ id: (0, import_nanoid6.nanoid)(), text: "" }] : (prev.options || []).slice(i + 1);
46771
46773
  if (errors[option.id] && !e2.target.value || VALIDATION_ERRORS[errors[option.id]] && !findOptionDuplicate({ id: e2.target.id, text: e2.target.value })) {
46772
46774
  setErrors((prev2) => {
46773
46775
  delete prev2[option.id];
@@ -46896,10 +46898,10 @@ var PollCreationDialog = ({ close }) => {
46896
46898
  allow_user_suggested_options: false,
46897
46899
  description: "",
46898
46900
  enforce_unique_vote: true,
46899
- id: (0, import_nanoid6.nanoid)(),
46901
+ id: (0, import_nanoid7.nanoid)(),
46900
46902
  max_votes_allowed: "",
46901
46903
  name: "",
46902
- options: [{ id: (0, import_nanoid6.nanoid)(), text: "" }],
46904
+ options: [{ id: (0, import_nanoid7.nanoid)(), text: "" }],
46903
46905
  user_id: client.user?.id,
46904
46906
  voting_visibility: "public"
46905
46907
  })
@@ -46999,7 +47001,7 @@ var PollCreationDialog = ({ close }) => {
46999
47001
  {
47000
47002
  id: "max_votes_allowed",
47001
47003
  onChange: (e2) => {
47002
- const isValidValue = !e2.target.value || e2.target.value.match(VALID_MAX_VOTES_VALUE_REGEX);
47004
+ const isValidValue = e2.target.validity.valid && (!e2.target.value || e2.target.value.match(VALID_MAX_VOTES_VALUE_REGEX));
47003
47005
  if (!isValidValue) {
47004
47006
  setMultipleAnswerCountError(
47005
47007
  t2("Type a number from 2 to 10")
@@ -47223,14 +47225,13 @@ var CUSTOM_MESSAGE_TYPE = {
47223
47225
  };
47224
47226
 
47225
47227
  // src/components/MessageInput/AttachmentSelector.tsx
47226
- var import_nanoid8 = require("nanoid");
47227
- var import_react187 = __toESM(require("react"));
47228
+ var import_react188 = __toESM(require("react"));
47228
47229
 
47229
47230
  // src/components/MessageInput/icons.tsx
47230
47231
  var import_react184 = __toESM(require("react"));
47231
- var import_nanoid7 = require("nanoid");
47232
+ var import_nanoid8 = require("nanoid");
47232
47233
  var LoadingIndicatorIcon = ({ size = 20 }) => {
47233
- const id = (0, import_react184.useMemo)(() => (0, import_nanoid7.nanoid)(), []);
47234
+ const id = (0, import_react184.useMemo)(() => (0, import_nanoid8.nanoid)(), []);
47234
47235
  return /* @__PURE__ */ import_react184.default.createElement("div", { className: "str-chat__loading-indicator" }, /* @__PURE__ */ import_react184.default.createElement(
47235
47236
  "svg",
47236
47237
  {
@@ -47418,16 +47419,24 @@ var AttachmentSelectorContextProvider = ({
47418
47419
  }) => /* @__PURE__ */ import_react186.default.createElement(AttachmentSelectorContext.Provider, { value }, children);
47419
47420
  var useAttachmentSelectorContext = () => (0, import_react186.useContext)(AttachmentSelectorContext);
47420
47421
 
47422
+ // src/components/UtilityComponents/useStableId.ts
47423
+ var import_nanoid9 = require("nanoid");
47424
+ var import_react187 = require("react");
47425
+ var useStableId = (key) => {
47426
+ const id = (0, import_react187.useMemo)(() => (0, import_nanoid9.nanoid)(), [key]);
47427
+ return id;
47428
+ };
47429
+
47421
47430
  // src/components/MessageInput/AttachmentSelector.tsx
47422
47431
  var SimpleAttachmentSelector = () => {
47423
47432
  const {
47424
47433
  AttachmentSelectorInitiationButtonContents,
47425
47434
  FileUploadIcon = UploadIcon
47426
47435
  } = useComponentContext();
47427
- const inputRef = (0, import_react187.useRef)(null);
47428
- const [labelElement, setLabelElement] = (0, import_react187.useState)(null);
47429
- const id = (0, import_react187.useMemo)(() => (0, import_nanoid8.nanoid)(), []);
47430
- (0, import_react187.useEffect)(() => {
47436
+ const inputRef = (0, import_react188.useRef)(null);
47437
+ const [labelElement, setLabelElement] = (0, import_react188.useState)(null);
47438
+ const id = useStableId();
47439
+ (0, import_react188.useEffect)(() => {
47431
47440
  if (!labelElement) return;
47432
47441
  const handleKeyUp = (event) => {
47433
47442
  if (![" ", "Enter"].includes(event.key) || !inputRef.current) return;
@@ -47439,7 +47448,7 @@ var SimpleAttachmentSelector = () => {
47439
47448
  labelElement.removeEventListener("keyup", handleKeyUp);
47440
47449
  };
47441
47450
  }, [labelElement]);
47442
- return /* @__PURE__ */ import_react187.default.createElement("div", { className: "str-chat__file-input-container", "data-testid": "file-upload-button" }, /* @__PURE__ */ import_react187.default.createElement(UploadFileInput, { id, ref: inputRef }), /* @__PURE__ */ import_react187.default.createElement(
47451
+ return /* @__PURE__ */ import_react188.default.createElement("div", { className: "str-chat__file-input-container", "data-testid": "file-upload-button" }, /* @__PURE__ */ import_react188.default.createElement(UploadFileInput, { id, ref: inputRef }), /* @__PURE__ */ import_react188.default.createElement(
47443
47452
  "label",
47444
47453
  {
47445
47454
  className: "str-chat__file-input-label",
@@ -47447,24 +47456,24 @@ var SimpleAttachmentSelector = () => {
47447
47456
  ref: setLabelElement,
47448
47457
  tabIndex: 0
47449
47458
  },
47450
- AttachmentSelectorInitiationButtonContents ? /* @__PURE__ */ import_react187.default.createElement(AttachmentSelectorInitiationButtonContents, null) : /* @__PURE__ */ import_react187.default.createElement(FileUploadIcon, null)
47459
+ AttachmentSelectorInitiationButtonContents ? /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorInitiationButtonContents, null) : /* @__PURE__ */ import_react188.default.createElement(FileUploadIcon, null)
47451
47460
  ));
47452
47461
  };
47453
47462
  var AttachmentSelectorMenuInitButtonIcon = () => {
47454
47463
  const { AttachmentSelectorInitiationButtonContents, FileUploadIcon } = useComponentContext("SimpleAttachmentSelector");
47455
47464
  if (AttachmentSelectorInitiationButtonContents) {
47456
- return /* @__PURE__ */ import_react187.default.createElement(AttachmentSelectorInitiationButtonContents, null);
47465
+ return /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorInitiationButtonContents, null);
47457
47466
  }
47458
47467
  if (FileUploadIcon) {
47459
- return /* @__PURE__ */ import_react187.default.createElement(FileUploadIcon, null);
47468
+ return /* @__PURE__ */ import_react188.default.createElement(FileUploadIcon, null);
47460
47469
  }
47461
- return /* @__PURE__ */ import_react187.default.createElement("div", { className: "str-chat__attachment-selector__menu-button__icon" });
47470
+ return /* @__PURE__ */ import_react188.default.createElement("div", { className: "str-chat__attachment-selector__menu-button__icon" });
47462
47471
  };
47463
47472
  var DefaultAttachmentSelectorComponents = {
47464
47473
  File({ closeMenu }) {
47465
47474
  const { t: t2 } = useTranslationContext();
47466
47475
  const { fileInput } = useAttachmentSelectorContext();
47467
- return /* @__PURE__ */ import_react187.default.createElement(
47476
+ return /* @__PURE__ */ import_react188.default.createElement(
47468
47477
  DialogMenuButton,
47469
47478
  {
47470
47479
  className: "str-chat__attachment-selector-actions-menu__button str-chat__attachment-selector-actions-menu__upload-file-button",
@@ -47478,7 +47487,7 @@ var DefaultAttachmentSelectorComponents = {
47478
47487
  },
47479
47488
  Poll({ closeMenu, openModalForAction }) {
47480
47489
  const { t: t2 } = useTranslationContext();
47481
- return /* @__PURE__ */ import_react187.default.createElement(
47490
+ return /* @__PURE__ */ import_react188.default.createElement(
47482
47491
  DialogMenuButton,
47483
47492
  {
47484
47493
  className: "str-chat__attachment-selector-actions-menu__button str-chat__attachment-selector-actions-menu__create-poll-button",
@@ -47528,8 +47537,8 @@ var AttachmentSelector = ({
47528
47537
  const menuDialogId = `attachment-actions-menu${isThreadInput ? "-thread" : ""}`;
47529
47538
  const menuDialog = useDialog({ id: menuDialogId });
47530
47539
  const menuDialogIsOpen = useDialogIsOpen(menuDialogId);
47531
- const [modalContentAction, setModalContentActionAction] = (0, import_react187.useState)();
47532
- const openModal = (0, import_react187.useCallback)(
47540
+ const [modalContentAction, setModalContentActionAction] = (0, import_react188.useState)();
47541
+ const openModal = (0, import_react188.useCallback)(
47533
47542
  (actionType) => {
47534
47543
  const action = actions.find((a2) => a2.type === actionType);
47535
47544
  if (!action?.ModalContent) return;
@@ -47537,19 +47546,19 @@ var AttachmentSelector = ({
47537
47546
  },
47538
47547
  [actions]
47539
47548
  );
47540
- const closeModal = (0, import_react187.useCallback)(() => setModalContentActionAction(void 0), []);
47541
- const [fileInput, setFileInput] = (0, import_react187.useState)(null);
47542
- const menuButtonRef = (0, import_react187.useRef)(null);
47543
- const getDefaultPortalDestination = (0, import_react187.useCallback)(
47549
+ const closeModal = (0, import_react188.useCallback)(() => setModalContentActionAction(void 0), []);
47550
+ const [fileInput, setFileInput] = (0, import_react188.useState)(null);
47551
+ const menuButtonRef = (0, import_react188.useRef)(null);
47552
+ const getDefaultPortalDestination = (0, import_react188.useCallback)(
47544
47553
  () => document.getElementById(CHANNEL_CONTAINER_ID),
47545
47554
  []
47546
47555
  );
47547
47556
  if (actions.length === 0) return null;
47548
47557
  if (actions.length === 1 && actions[0].type === "uploadFile")
47549
- return /* @__PURE__ */ import_react187.default.createElement(SimpleAttachmentSelector, null);
47558
+ return /* @__PURE__ */ import_react188.default.createElement(SimpleAttachmentSelector, null);
47550
47559
  const ModalContent = modalContentAction?.ModalContent;
47551
47560
  const modalIsOpen = !!ModalContent;
47552
- return /* @__PURE__ */ import_react187.default.createElement(AttachmentSelectorContextProvider, { value: { fileInput } }, /* @__PURE__ */ import_react187.default.createElement("div", { className: "str-chat__attachment-selector" }, channelCapabilities["upload-file"] && /* @__PURE__ */ import_react187.default.createElement(UploadFileInput, { ref: setFileInput }), /* @__PURE__ */ import_react187.default.createElement(
47561
+ return /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorContextProvider, { value: { fileInput } }, /* @__PURE__ */ import_react188.default.createElement("div", { className: "str-chat__attachment-selector" }, channelCapabilities["upload-file"] && /* @__PURE__ */ import_react188.default.createElement(UploadFileInput, { ref: setFileInput }), /* @__PURE__ */ import_react188.default.createElement(
47553
47562
  "button",
47554
47563
  {
47555
47564
  "aria-expanded": menuDialogIsOpen,
@@ -47560,8 +47569,8 @@ var AttachmentSelector = ({
47560
47569
  onClick: () => menuDialog?.toggle(),
47561
47570
  ref: menuButtonRef
47562
47571
  },
47563
- /* @__PURE__ */ import_react187.default.createElement(AttachmentSelectorMenuInitButtonIcon, null)
47564
- ), /* @__PURE__ */ import_react187.default.createElement(
47572
+ /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorMenuInitButtonIcon, null)
47573
+ ), /* @__PURE__ */ import_react188.default.createElement(
47565
47574
  DialogAnchor,
47566
47575
  {
47567
47576
  id: menuDialogId,
@@ -47569,13 +47578,13 @@ var AttachmentSelector = ({
47569
47578
  referenceElement: menuButtonRef.current,
47570
47579
  trapFocus: true
47571
47580
  },
47572
- /* @__PURE__ */ import_react187.default.createElement(
47581
+ /* @__PURE__ */ import_react188.default.createElement(
47573
47582
  "div",
47574
47583
  {
47575
47584
  className: "str-chat__attachment-selector-actions-menu str-chat__dialog-menu",
47576
47585
  "data-testid": "attachment-selector-actions-menu"
47577
47586
  },
47578
- actions.map(({ ActionButton, type }) => /* @__PURE__ */ import_react187.default.createElement(
47587
+ actions.map(({ ActionButton, type }) => /* @__PURE__ */ import_react188.default.createElement(
47579
47588
  ActionButton,
47580
47589
  {
47581
47590
  closeMenu: menuDialog.close,
@@ -47584,29 +47593,29 @@ var AttachmentSelector = ({
47584
47593
  }
47585
47594
  ))
47586
47595
  )
47587
- ), /* @__PURE__ */ import_react187.default.createElement(
47596
+ ), /* @__PURE__ */ import_react188.default.createElement(
47588
47597
  Portal,
47589
47598
  {
47590
47599
  getPortalDestination: getModalPortalDestination ?? getDefaultPortalDestination,
47591
47600
  isOpen: modalIsOpen
47592
47601
  },
47593
- /* @__PURE__ */ import_react187.default.createElement(
47602
+ /* @__PURE__ */ import_react188.default.createElement(
47594
47603
  Modal,
47595
47604
  {
47596
47605
  className: "str-chat__create-poll-modal",
47597
47606
  onClose: closeModal,
47598
47607
  open: modalIsOpen
47599
47608
  },
47600
- ModalContent && /* @__PURE__ */ import_react187.default.createElement(ModalContent, { close: closeModal })
47609
+ ModalContent && /* @__PURE__ */ import_react188.default.createElement(ModalContent, { close: closeModal })
47601
47610
  )
47602
47611
  )));
47603
47612
  };
47604
47613
 
47605
47614
  // src/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.tsx
47606
- var import_react199 = __toESM(require("react"));
47615
+ var import_react200 = __toESM(require("react"));
47607
47616
 
47608
47617
  // src/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.tsx
47609
- var import_react188 = __toESM(require("react"));
47618
+ var import_react189 = __toESM(require("react"));
47610
47619
  var UnsupportedAttachmentPreview = ({
47611
47620
  attachment,
47612
47621
  handleRetry,
@@ -47614,14 +47623,14 @@ var UnsupportedAttachmentPreview = ({
47614
47623
  }) => {
47615
47624
  const { t: t2 } = useTranslationContext("UnsupportedAttachmentPreview");
47616
47625
  const title = attachment.title ?? t2("Unsupported attachment");
47617
- return /* @__PURE__ */ import_react188.default.createElement(
47626
+ return /* @__PURE__ */ import_react189.default.createElement(
47618
47627
  "div",
47619
47628
  {
47620
47629
  className: "str-chat__attachment-preview-unsupported",
47621
47630
  "data-testid": "attachment-preview-unknown"
47622
47631
  },
47623
- /* @__PURE__ */ import_react188.default.createElement("div", { className: "str-chat__attachment-preview-file-icon" }, /* @__PURE__ */ import_react188.default.createElement(FileIcon, { filename: title, mimeType: attachment.mime_type })),
47624
- /* @__PURE__ */ import_react188.default.createElement(
47632
+ /* @__PURE__ */ import_react189.default.createElement("div", { className: "str-chat__attachment-preview-file-icon" }, /* @__PURE__ */ import_react189.default.createElement(FileIcon, { filename: title, mimeType: attachment.mime_type })),
47633
+ /* @__PURE__ */ import_react189.default.createElement(
47625
47634
  "button",
47626
47635
  {
47627
47636
  className: "str-chat__attachment-preview-delete",
@@ -47629,18 +47638,18 @@ var UnsupportedAttachmentPreview = ({
47629
47638
  disabled: attachment.localMetadata?.uploadState === "uploading",
47630
47639
  onClick: () => attachment.localMetadata?.id && removeAttachments([attachment.localMetadata?.id])
47631
47640
  },
47632
- /* @__PURE__ */ import_react188.default.createElement(CloseIcon, null)
47641
+ /* @__PURE__ */ import_react189.default.createElement(CloseIcon, null)
47633
47642
  ),
47634
- attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react188.default.createElement(
47643
+ attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react189.default.createElement(
47635
47644
  "button",
47636
47645
  {
47637
47646
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-file",
47638
47647
  "data-testid": "file-preview-item-retry-button",
47639
47648
  onClick: () => handleRetry(attachment)
47640
47649
  },
47641
- /* @__PURE__ */ import_react188.default.createElement(RetryIcon, null)
47650
+ /* @__PURE__ */ import_react189.default.createElement(RetryIcon, null)
47642
47651
  ),
47643
- /* @__PURE__ */ import_react188.default.createElement("div", { className: "str-chat__attachment-preview-metadata" }, /* @__PURE__ */ import_react188.default.createElement("div", { className: "str-chat__attachment-preview-title", title }, title), attachment.localMetadata?.uploadState === "finished" && !!attachment.asset_url && /* @__PURE__ */ import_react188.default.createElement(
47652
+ /* @__PURE__ */ import_react189.default.createElement("div", { className: "str-chat__attachment-preview-metadata" }, /* @__PURE__ */ import_react189.default.createElement("div", { className: "str-chat__attachment-preview-title", title }, title), attachment.localMetadata?.uploadState === "finished" && !!attachment.asset_url && /* @__PURE__ */ import_react189.default.createElement(
47644
47653
  "a",
47645
47654
  {
47646
47655
  className: "str-chat__attachment-preview-file-download",
@@ -47649,16 +47658,16 @@ var UnsupportedAttachmentPreview = ({
47649
47658
  rel: "noreferrer",
47650
47659
  target: "_blank"
47651
47660
  },
47652
- /* @__PURE__ */ import_react188.default.createElement(DownloadIcon2, null)
47653
- ), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */ import_react188.default.createElement(LoadingIndicatorIcon, { size: 17 }))
47661
+ /* @__PURE__ */ import_react189.default.createElement(DownloadIcon2, null)
47662
+ ), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */ import_react189.default.createElement(LoadingIndicatorIcon, { size: 17 }))
47654
47663
  );
47655
47664
  };
47656
47665
 
47657
47666
  // src/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.tsx
47658
- var import_react196 = __toESM(require("react"));
47667
+ var import_react197 = __toESM(require("react"));
47659
47668
 
47660
47669
  // src/components/MediaRecorder/RecordingPermissionDeniedNotification.tsx
47661
- var import_react189 = __toESM(require("react"));
47670
+ var import_react190 = __toESM(require("react"));
47662
47671
  var RecordingPermissionDeniedNotification = ({
47663
47672
  onClose,
47664
47673
  permissionName
@@ -47674,7 +47683,7 @@ var RecordingPermissionDeniedNotification = ({
47674
47683
  microphone: t2("Allow access to microphone")
47675
47684
  }
47676
47685
  };
47677
- return /* @__PURE__ */ import_react189.default.createElement("div", { className: "str-chat__recording-permission-denied-notification" }, /* @__PURE__ */ import_react189.default.createElement("div", { className: "str-chat__recording-permission-denied-notification__heading" }, permissionTranslations.heading[permissionName]), /* @__PURE__ */ import_react189.default.createElement("p", { className: "str-chat__recording-permission-denied-notification__message" }, permissionTranslations.body[permissionName]), /* @__PURE__ */ import_react189.default.createElement("div", { className: "str-chat__recording-permission-denied-notification__dismiss-button-container" }, /* @__PURE__ */ import_react189.default.createElement(
47686
+ return /* @__PURE__ */ import_react190.default.createElement("div", { className: "str-chat__recording-permission-denied-notification" }, /* @__PURE__ */ import_react190.default.createElement("div", { className: "str-chat__recording-permission-denied-notification__heading" }, permissionTranslations.heading[permissionName]), /* @__PURE__ */ import_react190.default.createElement("p", { className: "str-chat__recording-permission-denied-notification__message" }, permissionTranslations.body[permissionName]), /* @__PURE__ */ import_react190.default.createElement("div", { className: "str-chat__recording-permission-denied-notification__dismiss-button-container" }, /* @__PURE__ */ import_react190.default.createElement(
47678
47687
  "button",
47679
47688
  {
47680
47689
  className: "str-chat__recording-permission-denied-notification__dismiss-button",
@@ -47685,15 +47694,15 @@ var RecordingPermissionDeniedNotification = ({
47685
47694
  };
47686
47695
 
47687
47696
  // src/components/MediaRecorder/AudioRecorder/AudioRecorder.tsx
47688
- var import_react194 = __toESM(require("react"));
47697
+ var import_react195 = __toESM(require("react"));
47689
47698
 
47690
47699
  // src/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.tsx
47691
- var import_react191 = __toESM(require("react"));
47700
+ var import_react192 = __toESM(require("react"));
47692
47701
 
47693
47702
  // src/components/MediaRecorder/AudioRecorder/RecordingTimer.tsx
47694
47703
  var import_clsx52 = __toESM(require("clsx"));
47695
- var import_react190 = __toESM(require("react"));
47696
- var RecordingTimer = ({ durationSeconds }) => /* @__PURE__ */ import_react190.default.createElement(
47704
+ var import_react191 = __toESM(require("react"));
47705
+ var RecordingTimer = ({ durationSeconds }) => /* @__PURE__ */ import_react191.default.createElement(
47697
47706
  "div",
47698
47707
  {
47699
47708
  className: (0, import_clsx52.default)("str-chat__recording-timer", {
@@ -47715,15 +47724,15 @@ var AudioRecordingPreview = ({
47715
47724
  mimeType
47716
47725
  });
47717
47726
  const displayedDuration = secondsElapsed || durationSeconds;
47718
- return /* @__PURE__ */ import_react191.default.createElement(import_react191.default.Fragment, null, /* @__PURE__ */ import_react191.default.createElement("audio", { ref: audioRef }, /* @__PURE__ */ import_react191.default.createElement("source", { src: props.src, type: mimeType })), /* @__PURE__ */ import_react191.default.createElement(
47727
+ return /* @__PURE__ */ import_react192.default.createElement(import_react192.default.Fragment, null, /* @__PURE__ */ import_react192.default.createElement("audio", { ref: audioRef }, /* @__PURE__ */ import_react192.default.createElement("source", { src: props.src, type: mimeType })), /* @__PURE__ */ import_react192.default.createElement(
47719
47728
  "button",
47720
47729
  {
47721
47730
  className: "str-chat__audio_recorder__toggle-playback-button",
47722
47731
  "data-testid": "audio-recording-preview-toggle-play-btn",
47723
47732
  onClick: togglePlay
47724
47733
  },
47725
- isPlaying ? /* @__PURE__ */ import_react191.default.createElement(PauseIcon2, null) : /* @__PURE__ */ import_react191.default.createElement(PlayIcon, null)
47726
- ), /* @__PURE__ */ import_react191.default.createElement(RecordingTimer, { durationSeconds: displayedDuration }), /* @__PURE__ */ import_react191.default.createElement("div", { className: "str-chat__wave-progress-bar__track-container" }, /* @__PURE__ */ import_react191.default.createElement(
47734
+ isPlaying ? /* @__PURE__ */ import_react192.default.createElement(PauseIcon2, null) : /* @__PURE__ */ import_react192.default.createElement(PlayIcon, null)
47735
+ ), /* @__PURE__ */ import_react192.default.createElement(RecordingTimer, { durationSeconds: displayedDuration }), /* @__PURE__ */ import_react192.default.createElement("div", { className: "str-chat__wave-progress-bar__track-container" }, /* @__PURE__ */ import_react192.default.createElement(
47727
47736
  WaveProgressBar,
47728
47737
  {
47729
47738
  progress,
@@ -47734,24 +47743,24 @@ var AudioRecordingPreview = ({
47734
47743
  };
47735
47744
 
47736
47745
  // src/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.tsx
47737
- var import_react193 = __toESM(require("react"));
47746
+ var import_react194 = __toESM(require("react"));
47738
47747
 
47739
47748
  // src/components/MessageInput/hooks/useTimeElapsed.ts
47740
- var import_react192 = require("react");
47749
+ var import_react193 = require("react");
47741
47750
  var useTimeElapsed = ({ startOnMount } = {}) => {
47742
- const [secondsElapsed, setSecondsElapsed] = (0, import_react192.useState)(0);
47743
- const updateInterval = (0, import_react192.useRef)(void 0);
47744
- const startCounter = (0, import_react192.useCallback)(() => {
47751
+ const [secondsElapsed, setSecondsElapsed] = (0, import_react193.useState)(0);
47752
+ const updateInterval = (0, import_react193.useRef)(void 0);
47753
+ const startCounter = (0, import_react193.useCallback)(() => {
47745
47754
  if (updateInterval.current) return;
47746
47755
  updateInterval.current = setInterval(() => {
47747
47756
  setSecondsElapsed((prev) => prev + 1);
47748
47757
  }, 1e3);
47749
47758
  }, []);
47750
- const stopCounter = (0, import_react192.useCallback)(() => {
47759
+ const stopCounter = (0, import_react193.useCallback)(() => {
47751
47760
  clearInterval(updateInterval.current);
47752
47761
  updateInterval.current = void 0;
47753
47762
  }, []);
47754
- (0, import_react192.useEffect)(() => {
47763
+ (0, import_react193.useEffect)(() => {
47755
47764
  if (!startOnMount) return;
47756
47765
  startCounter();
47757
47766
  return () => {
@@ -47770,8 +47779,8 @@ var AudioRecordingWaveform = ({ maxDataPointsDrawn = 100 }) => {
47770
47779
  const {
47771
47780
  recordingController: { recorder }
47772
47781
  } = useMessageInputContext();
47773
- const [amplitudes, setAmplitudes] = (0, import_react193.useState)([]);
47774
- (0, import_react193.useEffect)(() => {
47782
+ const [amplitudes, setAmplitudes] = (0, import_react194.useState)([]);
47783
+ (0, import_react194.useEffect)(() => {
47775
47784
  if (!recorder?.amplitudeRecorder) return;
47776
47785
  const amplitudesSubscription = recorder.amplitudeRecorder.amplitudes.subscribe(setAmplitudes);
47777
47786
  return () => {
@@ -47779,7 +47788,7 @@ var AudioRecordingWaveform = ({ maxDataPointsDrawn = 100 }) => {
47779
47788
  };
47780
47789
  }, [recorder]);
47781
47790
  if (!recorder) return null;
47782
- return /* @__PURE__ */ import_react193.default.createElement("div", { className: "str-chat__waveform-box-container" }, /* @__PURE__ */ import_react193.default.createElement("div", { className: "str-chat__audio_recorder__waveform-box" }, amplitudes.slice(-maxDataPointsDrawn).map((amplitude, i) => /* @__PURE__ */ import_react193.default.createElement(
47791
+ return /* @__PURE__ */ import_react194.default.createElement("div", { className: "str-chat__waveform-box-container" }, /* @__PURE__ */ import_react194.default.createElement("div", { className: "str-chat__audio_recorder__waveform-box" }, amplitudes.slice(-maxDataPointsDrawn).map((amplitude, i) => /* @__PURE__ */ import_react194.default.createElement(
47783
47792
  "div",
47784
47793
  {
47785
47794
  className: "str-chat__wave-progress-bar__amplitude-bar",
@@ -47795,7 +47804,7 @@ var AudioRecordingInProgress = () => {
47795
47804
  const {
47796
47805
  recordingController: { recorder }
47797
47806
  } = useMessageInputContext();
47798
- (0, import_react193.useEffect)(() => {
47807
+ (0, import_react194.useEffect)(() => {
47799
47808
  if (!recorder?.mediaRecorder) return;
47800
47809
  const { mediaRecorder } = recorder;
47801
47810
  if (mediaRecorder.state === "recording") {
@@ -47812,7 +47821,7 @@ var AudioRecordingInProgress = () => {
47812
47821
  mediaRecorder.removeEventListener("pause", stopCounter);
47813
47822
  };
47814
47823
  }, [recorder, startCounter, stopCounter]);
47815
- return /* @__PURE__ */ import_react193.default.createElement(import_react193.default.Fragment, null, /* @__PURE__ */ import_react193.default.createElement(RecordingTimer, { durationSeconds: secondsElapsed }), /* @__PURE__ */ import_react193.default.createElement(AudioRecordingWaveform, null));
47824
+ return /* @__PURE__ */ import_react194.default.createElement(import_react194.default.Fragment, null, /* @__PURE__ */ import_react194.default.createElement(RecordingTimer, { durationSeconds: secondsElapsed }), /* @__PURE__ */ import_react194.default.createElement(AudioRecordingWaveform, null));
47816
47825
  };
47817
47826
 
47818
47827
  // src/components/MediaRecorder/AudioRecorder/AudioRecorder.tsx
@@ -47821,7 +47830,7 @@ var AudioRecorder = () => {
47821
47830
  recordingController: { completeRecording, recorder, recording, recordingState }
47822
47831
  } = useMessageInputContext();
47823
47832
  const isUploadingFile = recording?.localMetadata?.uploadState === "uploading";
47824
- const state = (0, import_react194.useMemo)(
47833
+ const state = (0, import_react195.useMemo)(
47825
47834
  () => ({
47826
47835
  paused: recordingState === "paused" /* PAUSED */,
47827
47836
  recording: recordingState === "recording" /* RECORDING */,
@@ -47830,7 +47839,7 @@ var AudioRecorder = () => {
47830
47839
  [recordingState]
47831
47840
  );
47832
47841
  if (!recorder) return null;
47833
- return /* @__PURE__ */ import_react194.default.createElement("div", { className: "str-chat__audio_recorder-container" }, /* @__PURE__ */ import_react194.default.createElement("div", { className: "str-chat__audio_recorder", "data-testid": "audio-recorder" }, /* @__PURE__ */ import_react194.default.createElement(
47842
+ return /* @__PURE__ */ import_react195.default.createElement("div", { className: "str-chat__audio_recorder-container" }, /* @__PURE__ */ import_react195.default.createElement("div", { className: "str-chat__audio_recorder", "data-testid": "audio-recorder" }, /* @__PURE__ */ import_react195.default.createElement(
47834
47843
  "button",
47835
47844
  {
47836
47845
  className: "str-chat__audio_recorder__cancel-button",
@@ -47838,8 +47847,8 @@ var AudioRecorder = () => {
47838
47847
  disabled: isUploadingFile,
47839
47848
  onClick: recorder.cancel
47840
47849
  },
47841
- /* @__PURE__ */ import_react194.default.createElement(BinIcon, null)
47842
- ), state.stopped && recording?.asset_url ? /* @__PURE__ */ import_react194.default.createElement(
47850
+ /* @__PURE__ */ import_react195.default.createElement(BinIcon, null)
47851
+ ), state.stopped && recording?.asset_url ? /* @__PURE__ */ import_react195.default.createElement(
47843
47852
  AudioRecordingPreview,
47844
47853
  {
47845
47854
  durationSeconds: recording.duration ?? 0,
@@ -47847,22 +47856,22 @@ var AudioRecorder = () => {
47847
47856
  src: recording.asset_url,
47848
47857
  waveformData: recording.waveform_data
47849
47858
  }
47850
- ) : state.paused || state.recording ? /* @__PURE__ */ import_react194.default.createElement(AudioRecordingInProgress, null) : null, state.paused && /* @__PURE__ */ import_react194.default.createElement(
47859
+ ) : state.paused || state.recording ? /* @__PURE__ */ import_react195.default.createElement(AudioRecordingInProgress, null) : null, state.paused && /* @__PURE__ */ import_react195.default.createElement(
47851
47860
  "button",
47852
47861
  {
47853
47862
  className: "str-chat__audio_recorder__resume-recording-button",
47854
47863
  onClick: recorder.resume
47855
47864
  },
47856
- /* @__PURE__ */ import_react194.default.createElement(MicIcon, null)
47857
- ), state.recording && /* @__PURE__ */ import_react194.default.createElement(
47865
+ /* @__PURE__ */ import_react195.default.createElement(MicIcon, null)
47866
+ ), state.recording && /* @__PURE__ */ import_react195.default.createElement(
47858
47867
  "button",
47859
47868
  {
47860
47869
  className: "str-chat__audio_recorder__pause-recording-button",
47861
47870
  "data-testid": "pause-recording-audio-button",
47862
47871
  onClick: recorder.pause
47863
47872
  },
47864
- /* @__PURE__ */ import_react194.default.createElement(PauseIcon2, null)
47865
- ), state.stopped ? /* @__PURE__ */ import_react194.default.createElement(
47873
+ /* @__PURE__ */ import_react195.default.createElement(PauseIcon2, null)
47874
+ ), state.stopped ? /* @__PURE__ */ import_react195.default.createElement(
47866
47875
  "button",
47867
47876
  {
47868
47877
  className: "str-chat__audio_recorder__complete-button",
@@ -47870,21 +47879,21 @@ var AudioRecorder = () => {
47870
47879
  disabled: isUploadingFile,
47871
47880
  onClick: completeRecording
47872
47881
  },
47873
- isUploadingFile ? /* @__PURE__ */ import_react194.default.createElement(LoadingIndicatorIcon, null) : /* @__PURE__ */ import_react194.default.createElement(SendIcon, null)
47874
- ) : /* @__PURE__ */ import_react194.default.createElement(
47882
+ isUploadingFile ? /* @__PURE__ */ import_react195.default.createElement(LoadingIndicatorIcon, null) : /* @__PURE__ */ import_react195.default.createElement(SendIcon, null)
47883
+ ) : /* @__PURE__ */ import_react195.default.createElement(
47875
47884
  "button",
47876
47885
  {
47877
47886
  className: "str-chat__audio_recorder__stop-button",
47878
47887
  "data-testid": "audio-recorder-stop-button",
47879
47888
  onClick: recorder.stop
47880
47889
  },
47881
- /* @__PURE__ */ import_react194.default.createElement(CheckSignIcon, null)
47890
+ /* @__PURE__ */ import_react195.default.createElement(CheckSignIcon, null)
47882
47891
  )));
47883
47892
  };
47884
47893
 
47885
47894
  // src/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.tsx
47886
- var import_react195 = __toESM(require("react"));
47887
- var StartRecordingAudioButton = (props) => /* @__PURE__ */ import_react195.default.createElement(
47895
+ var import_react196 = __toESM(require("react"));
47896
+ var StartRecordingAudioButton = (props) => /* @__PURE__ */ import_react196.default.createElement(
47888
47897
  "button",
47889
47898
  {
47890
47899
  "aria-label": "Start recording audio",
@@ -47892,7 +47901,7 @@ var StartRecordingAudioButton = (props) => /* @__PURE__ */ import_react195.defau
47892
47901
  "data-testid": "start-recording-audio-button",
47893
47902
  ...props
47894
47903
  },
47895
- /* @__PURE__ */ import_react195.default.createElement(MicIcon, null)
47904
+ /* @__PURE__ */ import_react196.default.createElement(MicIcon, null)
47896
47905
  );
47897
47906
 
47898
47907
  // src/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.tsx
@@ -47904,13 +47913,13 @@ var VoiceRecordingPreview = ({
47904
47913
  const { audioRef, isPlaying, secondsElapsed, togglePlay } = useAudioController({
47905
47914
  mimeType: attachment.mime_type
47906
47915
  });
47907
- return /* @__PURE__ */ import_react196.default.createElement(
47916
+ return /* @__PURE__ */ import_react197.default.createElement(
47908
47917
  "div",
47909
47918
  {
47910
47919
  className: "str-chat__attachment-preview-voice-recording",
47911
47920
  "data-testid": "attachment-preview-voice-recording"
47912
47921
  },
47913
- /* @__PURE__ */ import_react196.default.createElement("audio", { ref: audioRef }, /* @__PURE__ */ import_react196.default.createElement(
47922
+ /* @__PURE__ */ import_react197.default.createElement("audio", { ref: audioRef }, /* @__PURE__ */ import_react197.default.createElement(
47914
47923
  "source",
47915
47924
  {
47916
47925
  "data-testid": "audio-source",
@@ -47918,8 +47927,8 @@ var VoiceRecordingPreview = ({
47918
47927
  type: attachment.mime_type
47919
47928
  }
47920
47929
  )),
47921
- /* @__PURE__ */ import_react196.default.createElement(PlayButton, { isPlaying, onClick: togglePlay }),
47922
- /* @__PURE__ */ import_react196.default.createElement(
47930
+ /* @__PURE__ */ import_react197.default.createElement(PlayButton, { isPlaying, onClick: togglePlay }),
47931
+ /* @__PURE__ */ import_react197.default.createElement(
47923
47932
  "button",
47924
47933
  {
47925
47934
  className: "str-chat__attachment-preview-delete",
@@ -47927,38 +47936,38 @@ var VoiceRecordingPreview = ({
47927
47936
  disabled: attachment.localMetadata?.uploadState === "uploading",
47928
47937
  onClick: () => attachment.localMetadata?.id && removeAttachments([attachment.localMetadata.id])
47929
47938
  },
47930
- /* @__PURE__ */ import_react196.default.createElement(CloseIcon, null)
47939
+ /* @__PURE__ */ import_react197.default.createElement(CloseIcon, null)
47931
47940
  ),
47932
- attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react196.default.createElement(
47941
+ attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react197.default.createElement(
47933
47942
  "button",
47934
47943
  {
47935
47944
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-file",
47936
47945
  "data-testid": "file-preview-item-retry-button",
47937
47946
  onClick: () => handleRetry(attachment)
47938
47947
  },
47939
- /* @__PURE__ */ import_react196.default.createElement(RetryIcon, null)
47948
+ /* @__PURE__ */ import_react197.default.createElement(RetryIcon, null)
47940
47949
  ),
47941
- /* @__PURE__ */ import_react196.default.createElement("div", { className: "str-chat__attachment-preview-metadata" }, /* @__PURE__ */ import_react196.default.createElement("div", { className: "str-chat__attachment-preview-file-name", title: attachment.title }, attachment.title), typeof attachment.duration !== "undefined" && /* @__PURE__ */ import_react196.default.createElement(RecordingTimer, { durationSeconds: secondsElapsed || attachment.duration }), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */ import_react196.default.createElement(LoadingIndicatorIcon, { size: 17 })),
47942
- /* @__PURE__ */ import_react196.default.createElement("div", { className: "str-chat__attachment-preview-file-icon" }, /* @__PURE__ */ import_react196.default.createElement(FileIcon, { filename: attachment.title, mimeType: attachment.mime_type }))
47950
+ /* @__PURE__ */ import_react197.default.createElement("div", { className: "str-chat__attachment-preview-metadata" }, /* @__PURE__ */ import_react197.default.createElement("div", { className: "str-chat__attachment-preview-file-name", title: attachment.title }, attachment.title), typeof attachment.duration !== "undefined" && /* @__PURE__ */ import_react197.default.createElement(RecordingTimer, { durationSeconds: secondsElapsed || attachment.duration }), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */ import_react197.default.createElement(LoadingIndicatorIcon, { size: 17 })),
47951
+ /* @__PURE__ */ import_react197.default.createElement("div", { className: "str-chat__attachment-preview-file-icon" }, /* @__PURE__ */ import_react197.default.createElement(FileIcon, { filename: attachment.title, mimeType: attachment.mime_type }))
47943
47952
  );
47944
47953
  };
47945
47954
 
47946
47955
  // src/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.tsx
47947
- var import_react197 = __toESM(require("react"));
47956
+ var import_react198 = __toESM(require("react"));
47948
47957
  var FileAttachmentPreview = ({
47949
47958
  attachment,
47950
47959
  handleRetry,
47951
47960
  removeAttachments
47952
47961
  }) => {
47953
47962
  const { t: t2 } = useTranslationContext("FilePreview");
47954
- return /* @__PURE__ */ import_react197.default.createElement(
47963
+ return /* @__PURE__ */ import_react198.default.createElement(
47955
47964
  "div",
47956
47965
  {
47957
47966
  className: "str-chat__attachment-preview-file",
47958
47967
  "data-testid": "attachment-preview-file"
47959
47968
  },
47960
- /* @__PURE__ */ import_react197.default.createElement("div", { className: "str-chat__attachment-preview-file-icon" }, /* @__PURE__ */ import_react197.default.createElement(FileIcon, { filename: attachment.title, mimeType: attachment.mime_type })),
47961
- /* @__PURE__ */ import_react197.default.createElement(
47969
+ /* @__PURE__ */ import_react198.default.createElement("div", { className: "str-chat__attachment-preview-file-icon" }, /* @__PURE__ */ import_react198.default.createElement(FileIcon, { filename: attachment.title, mimeType: attachment.mime_type })),
47970
+ /* @__PURE__ */ import_react198.default.createElement(
47962
47971
  "button",
47963
47972
  {
47964
47973
  "aria-label": t2("aria/Remove attachment"),
@@ -47967,18 +47976,18 @@ var FileAttachmentPreview = ({
47967
47976
  disabled: attachment.localMetadata?.uploadState === "uploading",
47968
47977
  onClick: () => attachment.localMetadata?.id && removeAttachments([attachment.localMetadata?.id])
47969
47978
  },
47970
- /* @__PURE__ */ import_react197.default.createElement(CloseIcon, null)
47979
+ /* @__PURE__ */ import_react198.default.createElement(CloseIcon, null)
47971
47980
  ),
47972
- attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react197.default.createElement(
47981
+ attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react198.default.createElement(
47973
47982
  "button",
47974
47983
  {
47975
47984
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-file",
47976
47985
  "data-testid": "file-preview-item-retry-button",
47977
47986
  onClick: () => handleRetry(attachment)
47978
47987
  },
47979
- /* @__PURE__ */ import_react197.default.createElement(RetryIcon, null)
47988
+ /* @__PURE__ */ import_react198.default.createElement(RetryIcon, null)
47980
47989
  ),
47981
- /* @__PURE__ */ import_react197.default.createElement("div", { className: "str-chat__attachment-preview-file-end" }, /* @__PURE__ */ import_react197.default.createElement("div", { className: "str-chat__attachment-preview-file-name", title: attachment.title }, attachment.title), attachment.localMetadata?.uploadState === "finished" && !!attachment.asset_url && /* @__PURE__ */ import_react197.default.createElement(
47990
+ /* @__PURE__ */ import_react198.default.createElement("div", { className: "str-chat__attachment-preview-file-end" }, /* @__PURE__ */ import_react198.default.createElement("div", { className: "str-chat__attachment-preview-file-name", title: attachment.title }, attachment.title), attachment.localMetadata?.uploadState === "finished" && !!attachment.asset_url && /* @__PURE__ */ import_react198.default.createElement(
47982
47991
  "a",
47983
47992
  {
47984
47993
  "aria-label": t2("aria/Download attachment"),
@@ -47989,14 +47998,14 @@ var FileAttachmentPreview = ({
47989
47998
  target: "_blank",
47990
47999
  title: t2("Download attachment {{ name }}", { name: attachment.title })
47991
48000
  },
47992
- /* @__PURE__ */ import_react197.default.createElement(DownloadIcon2, null)
47993
- ), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */ import_react197.default.createElement(LoadingIndicatorIcon, { size: 17 }))
48001
+ /* @__PURE__ */ import_react198.default.createElement(DownloadIcon2, null)
48002
+ ), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */ import_react198.default.createElement(LoadingIndicatorIcon, { size: 17 }))
47994
48003
  );
47995
48004
  };
47996
48005
 
47997
48006
  // src/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.tsx
47998
48007
  var import_clsx53 = __toESM(require("clsx"));
47999
- var import_react198 = __toESM(require("react"));
48008
+ var import_react199 = __toESM(require("react"));
48000
48009
  var ImageAttachmentPreview = ({
48001
48010
  attachment,
48002
48011
  handleRetry,
@@ -48004,11 +48013,11 @@ var ImageAttachmentPreview = ({
48004
48013
  }) => {
48005
48014
  const { t: t2 } = useTranslationContext("ImagePreviewItem");
48006
48015
  const { BaseImage: BaseImage3 = BaseImage } = useComponentContext("ImagePreview");
48007
- const [previewError, setPreviewError] = (0, import_react198.useState)(false);
48016
+ const [previewError, setPreviewError] = (0, import_react199.useState)(false);
48008
48017
  const { id, uploadState } = attachment.localMetadata ?? {};
48009
- const handleLoadError = (0, import_react198.useCallback)(() => setPreviewError(true), []);
48018
+ const handleLoadError = (0, import_react199.useCallback)(() => setPreviewError(true), []);
48010
48019
  const assetUrl = attachment.image_url || attachment.localMetadata.previewUri;
48011
- return /* @__PURE__ */ import_react198.default.createElement(
48020
+ return /* @__PURE__ */ import_react199.default.createElement(
48012
48021
  "div",
48013
48022
  {
48014
48023
  className: (0, import_clsx53.default)("str-chat__attachment-preview-image", {
@@ -48016,7 +48025,7 @@ var ImageAttachmentPreview = ({
48016
48025
  }),
48017
48026
  "data-testid": "attachment-preview-image"
48018
48027
  },
48019
- /* @__PURE__ */ import_react198.default.createElement(
48028
+ /* @__PURE__ */ import_react199.default.createElement(
48020
48029
  "button",
48021
48030
  {
48022
48031
  "aria-label": t2("aria/Remove attachment"),
@@ -48025,19 +48034,19 @@ var ImageAttachmentPreview = ({
48025
48034
  disabled: uploadState === "uploading",
48026
48035
  onClick: () => id && removeAttachments([id])
48027
48036
  },
48028
- /* @__PURE__ */ import_react198.default.createElement(CloseIcon, null)
48037
+ /* @__PURE__ */ import_react199.default.createElement(CloseIcon, null)
48029
48038
  ),
48030
- uploadState === "failed" && /* @__PURE__ */ import_react198.default.createElement(
48039
+ uploadState === "failed" && /* @__PURE__ */ import_react199.default.createElement(
48031
48040
  "button",
48032
48041
  {
48033
48042
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-image",
48034
48043
  "data-testid": "image-preview-item-retry-button",
48035
48044
  onClick: () => handleRetry(attachment)
48036
48045
  },
48037
- /* @__PURE__ */ import_react198.default.createElement(RetryIcon, null)
48046
+ /* @__PURE__ */ import_react199.default.createElement(RetryIcon, null)
48038
48047
  ),
48039
- uploadState === "uploading" && /* @__PURE__ */ import_react198.default.createElement("div", { className: "str-chat__attachment-preview-image-loading" }, /* @__PURE__ */ import_react198.default.createElement(LoadingIndicatorIcon, { size: 17 })),
48040
- assetUrl && /* @__PURE__ */ import_react198.default.createElement(
48048
+ uploadState === "uploading" && /* @__PURE__ */ import_react199.default.createElement("div", { className: "str-chat__attachment-preview-image-loading" }, /* @__PURE__ */ import_react199.default.createElement(LoadingIndicatorIcon, { size: 17 })),
48049
+ assetUrl && /* @__PURE__ */ import_react199.default.createElement(
48041
48050
  BaseImage3,
48042
48051
  {
48043
48052
  alt: attachment.fallback,
@@ -48060,7 +48069,7 @@ var AttachmentPreviewList = ({
48060
48069
  VoiceRecordingPreview: VoiceRecordingPreview2 = VoiceRecordingPreview
48061
48070
  }) => {
48062
48071
  const { attachments, removeAttachments, uploadAttachment } = useMessageInputContext("AttachmentPreviewList");
48063
- return /* @__PURE__ */ import_react199.default.createElement("div", { className: "str-chat__attachment-preview-list" }, /* @__PURE__ */ import_react199.default.createElement(
48072
+ return /* @__PURE__ */ import_react200.default.createElement("div", { className: "str-chat__attachment-preview-list" }, /* @__PURE__ */ import_react200.default.createElement(
48064
48073
  "div",
48065
48074
  {
48066
48075
  className: "str-chat__attachment-list-scroll-container",
@@ -48069,7 +48078,7 @@ var AttachmentPreviewList = ({
48069
48078
  attachments.map((attachment) => {
48070
48079
  if (isScrapedContent(attachment)) return null;
48071
48080
  if (isLocalVoiceRecordingAttachment(attachment)) {
48072
- return /* @__PURE__ */ import_react199.default.createElement(
48081
+ return /* @__PURE__ */ import_react200.default.createElement(
48073
48082
  VoiceRecordingPreview2,
48074
48083
  {
48075
48084
  attachment,
@@ -48079,7 +48088,7 @@ var AttachmentPreviewList = ({
48079
48088
  }
48080
48089
  );
48081
48090
  } else if (isLocalAudioAttachment(attachment)) {
48082
- return /* @__PURE__ */ import_react199.default.createElement(
48091
+ return /* @__PURE__ */ import_react200.default.createElement(
48083
48092
  AudioAttachmentPreview,
48084
48093
  {
48085
48094
  attachment,
@@ -48089,7 +48098,7 @@ var AttachmentPreviewList = ({
48089
48098
  }
48090
48099
  );
48091
48100
  } else if (isLocalMediaAttachment(attachment)) {
48092
- return /* @__PURE__ */ import_react199.default.createElement(
48101
+ return /* @__PURE__ */ import_react200.default.createElement(
48093
48102
  VideoAttachmentPreview,
48094
48103
  {
48095
48104
  attachment,
@@ -48099,7 +48108,7 @@ var AttachmentPreviewList = ({
48099
48108
  }
48100
48109
  );
48101
48110
  } else if (isLocalImageAttachment(attachment)) {
48102
- return /* @__PURE__ */ import_react199.default.createElement(
48111
+ return /* @__PURE__ */ import_react200.default.createElement(
48103
48112
  ImageAttachmentPreview2,
48104
48113
  {
48105
48114
  attachment,
@@ -48109,7 +48118,7 @@ var AttachmentPreviewList = ({
48109
48118
  }
48110
48119
  );
48111
48120
  } else if (isLocalFileAttachment(attachment)) {
48112
- return /* @__PURE__ */ import_react199.default.createElement(
48121
+ return /* @__PURE__ */ import_react200.default.createElement(
48113
48122
  FileAttachmentPreview2,
48114
48123
  {
48115
48124
  attachment,
@@ -48119,7 +48128,7 @@ var AttachmentPreviewList = ({
48119
48128
  }
48120
48129
  );
48121
48130
  } else if (isLocalAttachment(attachment)) {
48122
- return /* @__PURE__ */ import_react199.default.createElement(
48131
+ return /* @__PURE__ */ import_react200.default.createElement(
48123
48132
  UnsupportedAttachmentPreview2,
48124
48133
  {
48125
48134
  attachment,
@@ -48135,13 +48144,13 @@ var AttachmentPreviewList = ({
48135
48144
  };
48136
48145
 
48137
48146
  // src/components/MessageInput/CooldownTimer.tsx
48138
- var import_react201 = __toESM(require("react"));
48147
+ var import_react202 = __toESM(require("react"));
48139
48148
 
48140
48149
  // src/components/MessageInput/hooks/useTimer.ts
48141
- var import_react200 = require("react");
48150
+ var import_react201 = require("react");
48142
48151
  var useTimer = ({ startFrom }) => {
48143
- const [secondsLeft, setSecondsLeft] = (0, import_react200.useState)();
48144
- (0, import_react200.useEffect)(() => {
48152
+ const [secondsLeft, setSecondsLeft] = (0, import_react201.useState)();
48153
+ (0, import_react201.useEffect)(() => {
48145
48154
  let countdownTimeout;
48146
48155
  if (typeof secondsLeft === "number" && secondsLeft > 0) {
48147
48156
  countdownTimeout = setTimeout(() => {
@@ -48152,7 +48161,7 @@ var useTimer = ({ startFrom }) => {
48152
48161
  clearTimeout(countdownTimeout);
48153
48162
  };
48154
48163
  }, [secondsLeft]);
48155
- (0, import_react200.useEffect)(() => {
48164
+ (0, import_react201.useEffect)(() => {
48156
48165
  setSecondsLeft(startFrom ?? 0);
48157
48166
  }, [startFrom]);
48158
48167
  return secondsLeft;
@@ -48161,11 +48170,11 @@ var useTimer = ({ startFrom }) => {
48161
48170
  // src/components/MessageInput/CooldownTimer.tsx
48162
48171
  var CooldownTimer = ({ cooldownInterval }) => {
48163
48172
  const secondsLeft = useTimer({ startFrom: cooldownInterval });
48164
- return /* @__PURE__ */ import_react201.default.createElement("div", { className: "str-chat__message-input-cooldown", "data-testid": "cooldown-timer" }, secondsLeft);
48173
+ return /* @__PURE__ */ import_react202.default.createElement("div", { className: "str-chat__message-input-cooldown", "data-testid": "cooldown-timer" }, secondsLeft);
48165
48174
  };
48166
48175
 
48167
48176
  // src/components/MessageInput/DefaultTriggerProvider.tsx
48168
- var import_react204 = __toESM(require("react"));
48177
+ var import_react205 = __toESM(require("react"));
48169
48178
 
48170
48179
  // src/components/MessageInput/hooks/useCommandTrigger.ts
48171
48180
  var useCommandTrigger = () => {
@@ -48235,7 +48244,7 @@ var useCommandTrigger = () => {
48235
48244
  };
48236
48245
 
48237
48246
  // src/components/EmoticonItem/EmoticonItem.tsx
48238
- var import_react202 = __toESM(require("react"));
48247
+ var import_react203 = __toESM(require("react"));
48239
48248
  var UnMemoizedEmoticonItem = (props) => {
48240
48249
  const { entity } = props;
48241
48250
  const hasEntity = Object.keys(entity).length;
@@ -48243,12 +48252,12 @@ var UnMemoizedEmoticonItem = (props) => {
48243
48252
  const renderName = () => {
48244
48253
  if (!hasEntity) return null;
48245
48254
  return hasEntity && itemParts.parts.map(
48246
- (part, i) => part.toLowerCase() === itemParts.match.toLowerCase() ? /* @__PURE__ */ import_react202.default.createElement("span", { className: "str-chat__emoji-item--highlight", key: `part-${i}` }, part) : /* @__PURE__ */ import_react202.default.createElement("span", { className: "str-chat__emoji-item--part", key: `part-${i}` }, part)
48255
+ (part, i) => part.toLowerCase() === itemParts.match.toLowerCase() ? /* @__PURE__ */ import_react203.default.createElement("span", { className: "str-chat__emoji-item--highlight", key: `part-${i}` }, part) : /* @__PURE__ */ import_react203.default.createElement("span", { className: "str-chat__emoji-item--part", key: `part-${i}` }, part)
48247
48256
  );
48248
48257
  };
48249
- return /* @__PURE__ */ import_react202.default.createElement("div", { className: "str-chat__emoji-item" }, /* @__PURE__ */ import_react202.default.createElement("span", { className: "str-chat__emoji-item--entity" }, entity.native), /* @__PURE__ */ import_react202.default.createElement("span", { className: "str-chat__emoji-item--name" }, renderName()));
48258
+ return /* @__PURE__ */ import_react203.default.createElement("div", { className: "str-chat__emoji-item" }, /* @__PURE__ */ import_react203.default.createElement("span", { className: "str-chat__emoji-item--entity" }, entity.native), /* @__PURE__ */ import_react203.default.createElement("span", { className: "str-chat__emoji-item--name" }, renderName()));
48250
48259
  };
48251
- var EmoticonItem = import_react202.default.memo(
48260
+ var EmoticonItem = import_react203.default.memo(
48252
48261
  UnMemoizedEmoticonItem
48253
48262
  );
48254
48263
 
@@ -48278,7 +48287,7 @@ var useEmojiTrigger = (emojiSearchIndex) => ({
48278
48287
  });
48279
48288
 
48280
48289
  // src/components/MessageInput/hooks/useUserTrigger.ts
48281
- var import_react203 = require("react");
48290
+ var import_react204 = require("react");
48282
48291
  var import_lodash20 = __toESM(require("lodash.throttle"));
48283
48292
  var useUserTrigger = (params) => {
48284
48293
  const {
@@ -48288,12 +48297,12 @@ var useUserTrigger = (params) => {
48288
48297
  onSelectUser,
48289
48298
  useMentionsTransliteration
48290
48299
  } = params;
48291
- const [searching, setSearching] = (0, import_react203.useState)(false);
48300
+ const [searching, setSearching] = (0, import_react204.useState)(false);
48292
48301
  const { client, mutes } = useChatContext("useUserTrigger");
48293
48302
  const { channel } = useChannelStateContext("useUserTrigger");
48294
48303
  const { members } = channel.state;
48295
48304
  const { watchers } = channel.state;
48296
- const getMembersAndWatchers = (0, import_react203.useCallback)(() => {
48305
+ const getMembersAndWatchers = (0, import_react204.useCallback)(() => {
48297
48306
  const memberUsers = members ? Object.values(members).map(({ user }) => user) : [];
48298
48307
  const watcherUsers = watchers ? Object.values(watchers) : [];
48299
48308
  const users = [...memberUsers, ...watcherUsers];
@@ -48305,7 +48314,7 @@ var useUserTrigger = (params) => {
48305
48314
  });
48306
48315
  return Object.values(uniqueUsers);
48307
48316
  }, [members, watchers]);
48308
- const queryMembersThrottled = (0, import_react203.useCallback)(
48317
+ const queryMembersThrottled = (0, import_react204.useCallback)(
48309
48318
  (0, import_lodash20.default)(
48310
48319
  async (query, onReady) => {
48311
48320
  try {
@@ -48425,21 +48434,21 @@ var DefaultTriggerProvider = ({
48425
48434
  ...currentValue,
48426
48435
  autocompleteTriggers: defaultAutocompleteTriggers
48427
48436
  };
48428
- return /* @__PURE__ */ import_react204.default.createElement(MessageInputContextProvider, { value: newValue }, children);
48437
+ return /* @__PURE__ */ import_react205.default.createElement(MessageInputContextProvider, { value: newValue }, children);
48429
48438
  };
48430
48439
 
48431
48440
  // src/components/MessageInput/EditMessageForm.tsx
48432
- var import_react218 = __toESM(require("react"));
48441
+ var import_react219 = __toESM(require("react"));
48433
48442
 
48434
48443
  // src/components/MessageInput/MessageInputFlat.tsx
48435
- var import_react217 = __toESM(require("react"));
48444
+ var import_react218 = __toESM(require("react"));
48436
48445
 
48437
48446
  // src/components/MessageInput/SendButton.tsx
48438
- var import_react205 = __toESM(require("react"));
48447
+ var import_react206 = __toESM(require("react"));
48439
48448
  var SendButton = ({
48440
48449
  sendMessage,
48441
48450
  ...rest
48442
- }) => /* @__PURE__ */ import_react205.default.createElement(
48451
+ }) => /* @__PURE__ */ import_react206.default.createElement(
48443
48452
  "button",
48444
48453
  {
48445
48454
  "aria-label": "Send",
@@ -48449,17 +48458,17 @@ var SendButton = ({
48449
48458
  type: "button",
48450
48459
  ...rest
48451
48460
  },
48452
- /* @__PURE__ */ import_react205.default.createElement(SendIcon, null)
48461
+ /* @__PURE__ */ import_react206.default.createElement(SendIcon, null)
48453
48462
  );
48454
48463
 
48455
48464
  // src/components/MessageInput/StopAIGenerationButton.tsx
48456
- var import_react206 = __toESM(require("react"));
48465
+ var import_react207 = __toESM(require("react"));
48457
48466
  var StopAIGenerationButton = ({
48458
48467
  onClick,
48459
48468
  ...restProps
48460
48469
  }) => {
48461
48470
  const { t: t2 } = useTranslationContext();
48462
- return /* @__PURE__ */ import_react206.default.createElement(
48471
+ return /* @__PURE__ */ import_react207.default.createElement(
48463
48472
  "button",
48464
48473
  {
48465
48474
  "aria-label": t2("aria/Stop AI Generation"),
@@ -48472,21 +48481,21 @@ var StopAIGenerationButton = ({
48472
48481
  };
48473
48482
 
48474
48483
  // src/components/MessageInput/QuotedMessagePreview.tsx
48475
- var import_react211 = __toESM(require("react"));
48484
+ var import_react212 = __toESM(require("react"));
48476
48485
 
48477
48486
  // src/components/Message/FixedHeightMessage.tsx
48478
- var import_react209 = __toESM(require("react"));
48487
+ var import_react210 = __toESM(require("react"));
48479
48488
 
48480
48489
  // src/components/MML/MML.tsx
48481
- var import_react208 = __toESM(require("react"));
48482
- var MMLReact = import_react208.default.lazy(async () => {
48490
+ var import_react209 = __toESM(require("react"));
48491
+ var MMLReact = import_react209.default.lazy(async () => {
48483
48492
  const mml = await Promise.resolve().then(() => (init_mml_react_esm(), mml_react_esm_exports));
48484
48493
  return { default: mml.MML };
48485
48494
  });
48486
48495
  var MML3 = (props) => {
48487
48496
  const { actionHandler, align = "right", source } = props;
48488
48497
  const { theme } = useChatContext("MML");
48489
- return /* @__PURE__ */ import_react208.default.createElement(import_react208.Suspense, { fallback: null }, /* @__PURE__ */ import_react208.default.createElement(
48498
+ return /* @__PURE__ */ import_react209.default.createElement(import_react209.Suspense, { fallback: null }, /* @__PURE__ */ import_react209.default.createElement(
48490
48499
  MMLReact,
48491
48500
  {
48492
48501
  className: `mml-align-${align}`,
@@ -48524,24 +48533,24 @@ var UnMemoizedFixedHeightMessage = (props) => {
48524
48533
  const handleDelete2 = useDeleteHandler(message);
48525
48534
  const role = useUserRole(message);
48526
48535
  const messageTextToRender = message?.i18n?.[`${userLanguage}_text`] || message?.text;
48527
- const renderedText = (0, import_react209.useMemo)(
48536
+ const renderedText = (0, import_react210.useMemo)(
48528
48537
  () => renderText(messageTextToRender, message.mentioned_users),
48529
48538
  [message.mentioned_users, messageTextToRender]
48530
48539
  );
48531
48540
  const userId = message.user?.id || "";
48532
- const userColor = (0, import_react209.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
48533
- const messageActionsHandler = (0, import_react209.useCallback)(
48541
+ const userColor = (0, import_react210.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
48542
+ const messageActionsHandler = (0, import_react210.useCallback)(
48534
48543
  () => getMessageActions(["delete"], { canDelete: role.canDelete }),
48535
48544
  [role]
48536
48545
  );
48537
48546
  const images = message?.attachments?.filter(({ type }) => type === "image");
48538
- return /* @__PURE__ */ import_react209.default.createElement(
48547
+ return /* @__PURE__ */ import_react210.default.createElement(
48539
48548
  "div",
48540
48549
  {
48541
48550
  className: `str-chat__virtual-message__wrapper ${role.isMyMessage ? "str-chat__virtual-message__wrapper--me" : ""} ${groupedByUser ? "str-chat__virtual-message__wrapper--group" : ""}`,
48542
48551
  key: message.id
48543
48552
  },
48544
- message.user && /* @__PURE__ */ import_react209.default.createElement(
48553
+ message.user && /* @__PURE__ */ import_react210.default.createElement(
48545
48554
  Avatar,
48546
48555
  {
48547
48556
  image: message.user.image,
@@ -48549,7 +48558,7 @@ var UnMemoizedFixedHeightMessage = (props) => {
48549
48558
  user: message.user
48550
48559
  }
48551
48560
  ),
48552
- /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__virtual-message__content" }, /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__virtual-message__meta" }, /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__virtual-message__author", style: { color: userColor } }, /* @__PURE__ */ import_react209.default.createElement("strong", null, message.user?.name || "unknown"))), message.deleted_at || message.type === "deleted" ? /* @__PURE__ */ import_react209.default.createElement(MessageDeleted2, { message }) : /* @__PURE__ */ import_react209.default.createElement(import_react209.default.Fragment, null, images && /* @__PURE__ */ import_react209.default.createElement(Gallery, { images }), /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__virtual-message__text", "data-testid": "msg-text" }, renderedText, message.mml && /* @__PURE__ */ import_react209.default.createElement(MML3, { actionHandler: handleAction, align: "left", source: message.mml }), /* @__PURE__ */ import_react209.default.createElement("div", { className: "str-chat__virtual-message__data" }, /* @__PURE__ */ import_react209.default.createElement(
48561
+ /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__virtual-message__content" }, /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__virtual-message__meta" }, /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__virtual-message__author", style: { color: userColor } }, /* @__PURE__ */ import_react210.default.createElement("strong", null, message.user?.name || "unknown"))), message.deleted_at || message.type === "deleted" ? /* @__PURE__ */ import_react210.default.createElement(MessageDeleted2, { message }) : /* @__PURE__ */ import_react210.default.createElement(import_react210.default.Fragment, null, images && /* @__PURE__ */ import_react210.default.createElement(Gallery, { images }), /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__virtual-message__text", "data-testid": "msg-text" }, renderedText, message.mml && /* @__PURE__ */ import_react210.default.createElement(MML3, { actionHandler: handleAction, align: "left", source: message.mml }), /* @__PURE__ */ import_react210.default.createElement("div", { className: "str-chat__virtual-message__data" }, /* @__PURE__ */ import_react210.default.createElement(
48553
48562
  MessageActions,
48554
48563
  {
48555
48564
  customWrapperClass: "str-chat__virtual-message__actions",
@@ -48558,7 +48567,7 @@ var UnMemoizedFixedHeightMessage = (props) => {
48558
48567
  message,
48559
48568
  mine: () => role.isMyMessage
48560
48569
  }
48561
- ), /* @__PURE__ */ import_react209.default.createElement("span", { className: "str-chat__virtual-message__date" }, /* @__PURE__ */ import_react209.default.createElement(
48570
+ ), /* @__PURE__ */ import_react210.default.createElement("span", { className: "str-chat__virtual-message__date" }, /* @__PURE__ */ import_react210.default.createElement(
48562
48571
  MessageTimestamp,
48563
48572
  {
48564
48573
  customClass: "str-chat__message-simple-timestamp",
@@ -48567,12 +48576,12 @@ var UnMemoizedFixedHeightMessage = (props) => {
48567
48576
  ))))))
48568
48577
  );
48569
48578
  };
48570
- var FixedHeightMessage = import_react209.default.memo(
48579
+ var FixedHeightMessage = import_react210.default.memo(
48571
48580
  UnMemoizedFixedHeightMessage
48572
48581
  );
48573
48582
 
48574
48583
  // src/components/Message/StreamedMessageText.tsx
48575
- var import_react210 = __toESM(require("react"));
48584
+ var import_react211 = __toESM(require("react"));
48576
48585
  var StreamedMessageText = (props) => {
48577
48586
  const {
48578
48587
  message: messageFromProps,
@@ -48588,7 +48597,7 @@ var StreamedMessageText = (props) => {
48588
48597
  streamingLetterIntervalMs,
48589
48598
  text: text8
48590
48599
  });
48591
- return /* @__PURE__ */ import_react210.default.createElement(
48600
+ return /* @__PURE__ */ import_react211.default.createElement(
48592
48601
  MessageText,
48593
48602
  {
48594
48603
  message: { ...message, text: streamedMessageText },
@@ -48601,14 +48610,14 @@ var StreamedMessageText = (props) => {
48601
48610
  var QuotedMessagePreviewHeader = () => {
48602
48611
  const { setQuotedMessage } = useChannelActionContext("QuotedMessagePreview");
48603
48612
  const { t: t2 } = useTranslationContext("QuotedMessagePreview");
48604
- return /* @__PURE__ */ import_react211.default.createElement("div", { className: "str-chat__quoted-message-preview-header" }, /* @__PURE__ */ import_react211.default.createElement("div", { className: "str-chat__quoted-message-reply-to-message" }, t2("Reply to Message")), /* @__PURE__ */ import_react211.default.createElement(
48613
+ return /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__quoted-message-preview-header" }, /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__quoted-message-reply-to-message" }, t2("Reply to Message")), /* @__PURE__ */ import_react212.default.createElement(
48605
48614
  "button",
48606
48615
  {
48607
48616
  "aria-label": t2("aria/Cancel Reply"),
48608
48617
  className: "str-chat__quoted-message-remove",
48609
48618
  onClick: () => setQuotedMessage(void 0)
48610
48619
  },
48611
- /* @__PURE__ */ import_react211.default.createElement(CloseIcon, null)
48620
+ /* @__PURE__ */ import_react212.default.createElement(CloseIcon, null)
48612
48621
  ));
48613
48622
  };
48614
48623
  var QuotedMessagePreview = ({
@@ -48619,23 +48628,23 @@ var QuotedMessagePreview = ({
48619
48628
  const { Attachment: Attachment2 = Attachment, Avatar: Avatar2 = Avatar } = useComponentContext("QuotedMessagePreview");
48620
48629
  const { userLanguage } = useTranslationContext("QuotedMessagePreview");
48621
48630
  const quotedMessageText = quotedMessage.i18n?.[`${userLanguage}_text`] || quotedMessage.text;
48622
- const renderedText = (0, import_react211.useMemo)(
48631
+ const renderedText = (0, import_react212.useMemo)(
48623
48632
  () => renderText2(quotedMessageText, quotedMessage.mentioned_users),
48624
48633
  [quotedMessage.mentioned_users, quotedMessageText, renderText2]
48625
48634
  );
48626
- const quotedMessageAttachment = (0, import_react211.useMemo)(() => {
48635
+ const quotedMessageAttachment = (0, import_react212.useMemo)(() => {
48627
48636
  const [attachment] = quotedMessage.attachments ?? [];
48628
48637
  return attachment ? [attachment] : [];
48629
48638
  }, [quotedMessage.attachments]);
48630
48639
  if (!quotedMessageText && !quotedMessageAttachment) return null;
48631
48640
  const poll = quotedMessage.poll_id && client.polls.fromState(quotedMessage.poll_id);
48632
- return /* @__PURE__ */ import_react211.default.createElement(
48641
+ return /* @__PURE__ */ import_react212.default.createElement(
48633
48642
  "div",
48634
48643
  {
48635
48644
  className: "str-chat__quoted-message-preview",
48636
48645
  "data-testid": "quoted-message-preview"
48637
48646
  },
48638
- quotedMessage.user && /* @__PURE__ */ import_react211.default.createElement(
48647
+ quotedMessage.user && /* @__PURE__ */ import_react212.default.createElement(
48639
48648
  Avatar2,
48640
48649
  {
48641
48650
  className: "str-chat__avatar--quoted-message-sender",
@@ -48644,7 +48653,7 @@ var QuotedMessagePreview = ({
48644
48653
  user: quotedMessage.user
48645
48654
  }
48646
48655
  ),
48647
- /* @__PURE__ */ import_react211.default.createElement("div", { className: "str-chat__quoted-message-bubble" }, poll ? /* @__PURE__ */ import_react211.default.createElement(Poll, { isQuoted: true, poll }) : /* @__PURE__ */ import_react211.default.createElement(import_react211.default.Fragment, null, !!quotedMessageAttachment.length && /* @__PURE__ */ import_react211.default.createElement(Attachment2, { attachments: quotedMessageAttachment, isQuoted: true }), /* @__PURE__ */ import_react211.default.createElement(
48656
+ /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__quoted-message-bubble" }, poll ? /* @__PURE__ */ import_react212.default.createElement(Poll, { isQuoted: true, poll }) : /* @__PURE__ */ import_react212.default.createElement(import_react212.default.Fragment, null, !!quotedMessageAttachment.length && /* @__PURE__ */ import_react212.default.createElement(Attachment2, { attachments: quotedMessageAttachment, isQuoted: true }), /* @__PURE__ */ import_react212.default.createElement(
48648
48657
  "div",
48649
48658
  {
48650
48659
  className: "str-chat__quoted-message-text",
@@ -48657,20 +48666,20 @@ var QuotedMessagePreview = ({
48657
48666
 
48658
48667
  // src/components/MessageInput/LinkPreviewList.tsx
48659
48668
  var import_clsx54 = __toESM(require("clsx"));
48660
- var import_react212 = __toESM(require("react"));
48669
+ var import_react213 = __toESM(require("react"));
48661
48670
  var LinkPreviewList = ({ linkPreviews }) => {
48662
48671
  const { quotedMessage } = useChannelStateContext();
48663
48672
  const showLinkPreviews = linkPreviews.length > 0 && !quotedMessage;
48664
48673
  if (!showLinkPreviews) return null;
48665
- return /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__link-preview-list" }, Array.from(linkPreviews.values()).map(
48666
- (linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */ import_react212.default.createElement(LinkPreviewCard, { key: linkPreview.og_scrape_url, linkPreview }) : null
48674
+ return /* @__PURE__ */ import_react213.default.createElement("div", { className: "str-chat__link-preview-list" }, Array.from(linkPreviews.values()).map(
48675
+ (linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */ import_react213.default.createElement(LinkPreviewCard, { key: linkPreview.og_scrape_url, linkPreview }) : null
48667
48676
  ));
48668
48677
  };
48669
48678
  var LinkPreviewCard = ({ linkPreview }) => {
48670
48679
  const { dismissLinkPreview } = useMessageInputContext();
48671
48680
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers();
48672
- const [referenceElement, setReferenceElement] = (0, import_react212.useState)(null);
48673
- return /* @__PURE__ */ import_react212.default.createElement(
48681
+ const [referenceElement, setReferenceElement] = (0, import_react213.useState)(null);
48682
+ return /* @__PURE__ */ import_react213.default.createElement(
48674
48683
  "div",
48675
48684
  {
48676
48685
  className: (0, import_clsx54.default)("str-chat__link-preview-card", {
@@ -48678,7 +48687,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
48678
48687
  }),
48679
48688
  "data-testid": "link-preview-card"
48680
48689
  },
48681
- /* @__PURE__ */ import_react212.default.createElement(
48690
+ /* @__PURE__ */ import_react213.default.createElement(
48682
48691
  PopperTooltip,
48683
48692
  {
48684
48693
  offset: [0, 5],
@@ -48687,7 +48696,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
48687
48696
  },
48688
48697
  linkPreview.og_scrape_url
48689
48698
  ),
48690
- /* @__PURE__ */ import_react212.default.createElement(
48699
+ /* @__PURE__ */ import_react213.default.createElement(
48691
48700
  "div",
48692
48701
  {
48693
48702
  className: "str-chat__link-preview-card__icon-container",
@@ -48695,23 +48704,23 @@ var LinkPreviewCard = ({ linkPreview }) => {
48695
48704
  onMouseLeave: handleLeave,
48696
48705
  ref: setReferenceElement
48697
48706
  },
48698
- /* @__PURE__ */ import_react212.default.createElement(LinkIcon, null)
48707
+ /* @__PURE__ */ import_react213.default.createElement(LinkIcon, null)
48699
48708
  ),
48700
- /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__link-preview-card__content" }, /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__link-preview-card__content-title" }, linkPreview.title), /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__link-preview-card__content-description" }, linkPreview.text)),
48701
- /* @__PURE__ */ import_react212.default.createElement(
48709
+ /* @__PURE__ */ import_react213.default.createElement("div", { className: "str-chat__link-preview-card__content" }, /* @__PURE__ */ import_react213.default.createElement("div", { className: "str-chat__link-preview-card__content-title" }, linkPreview.title), /* @__PURE__ */ import_react213.default.createElement("div", { className: "str-chat__link-preview-card__content-description" }, linkPreview.text)),
48710
+ /* @__PURE__ */ import_react213.default.createElement(
48702
48711
  "button",
48703
48712
  {
48704
48713
  className: "str-chat__link-preview-card__dismiss-button",
48705
48714
  "data-testid": "link-preview-card-dismiss-btn",
48706
48715
  onClick: () => dismissLinkPreview(linkPreview)
48707
48716
  },
48708
- /* @__PURE__ */ import_react212.default.createElement(CloseIcon, null)
48717
+ /* @__PURE__ */ import_react213.default.createElement(CloseIcon, null)
48709
48718
  )
48710
48719
  );
48711
48720
  };
48712
48721
 
48713
48722
  // src/components/ChatAutoComplete/ChatAutoComplete.tsx
48714
- var import_react213 = __toESM(require("react"));
48723
+ var import_react214 = __toESM(require("react"));
48715
48724
  var UnMemoizedChatAutoComplete = (props) => {
48716
48725
  const {
48717
48726
  AutocompleteSuggestionItem: SuggestionItem,
@@ -48733,7 +48742,7 @@ var UnMemoizedChatAutoComplete = (props) => {
48733
48742
  const [firstSkin] = emoji.skins ?? [];
48734
48743
  return emoji.native ?? firstSkin.native;
48735
48744
  };
48736
- const updateInnerRef = (0, import_react213.useCallback)(
48745
+ const updateInnerRef = (0, import_react214.useCallback)(
48737
48746
  (ref) => {
48738
48747
  if (innerRef) {
48739
48748
  innerRef.current = ref;
@@ -48741,7 +48750,7 @@ var UnMemoizedChatAutoComplete = (props) => {
48741
48750
  },
48742
48751
  [innerRef]
48743
48752
  );
48744
- return /* @__PURE__ */ import_react213.default.createElement(
48753
+ return /* @__PURE__ */ import_react214.default.createElement(
48745
48754
  ReactTextareaAutocomplete,
48746
48755
  {
48747
48756
  additionalTextareaProps: messageInput.additionalTextareaProps,
@@ -48776,15 +48785,15 @@ var UnMemoizedChatAutoComplete = (props) => {
48776
48785
  }
48777
48786
  );
48778
48787
  };
48779
- var ChatAutoComplete = import_react213.default.memo(
48788
+ var ChatAutoComplete = import_react214.default.memo(
48780
48789
  UnMemoizedChatAutoComplete
48781
48790
  );
48782
48791
 
48783
48792
  // src/components/AIStateIndicator/AIStateIndicator.tsx
48784
- var import_react215 = __toESM(require("react"));
48793
+ var import_react216 = __toESM(require("react"));
48785
48794
 
48786
48795
  // src/components/AIStateIndicator/hooks/useAIState.ts
48787
- var import_react214 = require("react");
48796
+ var import_react215 = require("react");
48788
48797
  var AIStates = {
48789
48798
  Error: "AI_STATE_ERROR",
48790
48799
  ExternalSources: "AI_STATE_EXTERNAL_SOURCES",
@@ -48793,8 +48802,8 @@ var AIStates = {
48793
48802
  Thinking: "AI_STATE_THINKING"
48794
48803
  };
48795
48804
  var useAIState = (channel) => {
48796
- const [aiState, setAiState] = (0, import_react214.useState)(AIStates.Idle);
48797
- (0, import_react214.useEffect)(() => {
48805
+ const [aiState, setAiState] = (0, import_react215.useState)(AIStates.Idle);
48806
+ (0, import_react215.useEffect)(() => {
48798
48807
  if (!channel) {
48799
48808
  return;
48800
48809
  }
@@ -48834,20 +48843,20 @@ var AIStateIndicator = ({
48834
48843
  [AIStates.Thinking]: t2("Thinking..."),
48835
48844
  [AIStates.Generating]: t2("Generating...")
48836
48845
  };
48837
- return aiState in allowedStates ? /* @__PURE__ */ import_react215.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react215.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
48846
+ return aiState in allowedStates ? /* @__PURE__ */ import_react216.default.createElement("div", { className: "str-chat__ai-state-indicator-container" }, /* @__PURE__ */ import_react216.default.createElement("p", { className: "str-chat__ai-state-indicator-text" }, allowedStates[aiState])) : null;
48838
48847
  };
48839
48848
 
48840
48849
  // src/components/MessageInput/WithDragAndDropUpload.tsx
48841
- var import_react216 = __toESM(require("react"));
48850
+ var import_react217 = __toESM(require("react"));
48842
48851
  var import_react_dropzone2 = require("react-dropzone");
48843
48852
  var import_clsx55 = __toESM(require("clsx"));
48844
- var DragAndDropUploadContext = import_react216.default.createContext({
48853
+ var DragAndDropUploadContext = import_react217.default.createContext({
48845
48854
  subscribeToDrop: null
48846
48855
  });
48847
- var useDragAndDropUploadContext = () => (0, import_react216.useContext)(DragAndDropUploadContext);
48856
+ var useDragAndDropUploadContext = () => (0, import_react217.useContext)(DragAndDropUploadContext);
48848
48857
  var useRegisterDropHandlers = ({ uploadNewFiles }) => {
48849
48858
  const { subscribeToDrop } = useDragAndDropUploadContext();
48850
- (0, import_react216.useEffect)(() => {
48859
+ (0, import_react217.useEffect)(() => {
48851
48860
  const unsubscribe = subscribeToDrop?.(uploadNewFiles);
48852
48861
  return unsubscribe;
48853
48862
  }, [subscribeToDrop, uploadNewFiles]);
@@ -48858,26 +48867,26 @@ var WithDragAndDropUpload = ({
48858
48867
  component: Component2 = "div",
48859
48868
  style
48860
48869
  }) => {
48861
- const dropHandlersRef = (0, import_react216.useRef)(/* @__PURE__ */ new Set());
48870
+ const dropHandlersRef = (0, import_react217.useRef)(/* @__PURE__ */ new Set());
48862
48871
  const { acceptedFiles = [], multipleUploads } = useChannelStateContext();
48863
48872
  const { t: t2 } = useTranslationContext();
48864
48873
  const messageInputContext = useMessageInputContext();
48865
48874
  const dragAndDropUploadContext = useDragAndDropUploadContext();
48866
48875
  const isWithinMessageInputContext = typeof messageInputContext.uploadNewFiles === "function";
48867
- const accept = (0, import_react216.useMemo)(
48876
+ const accept = (0, import_react217.useMemo)(
48868
48877
  () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
48869
48878
  mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
48870
48879
  return mediaTypeMap;
48871
48880
  }, {}),
48872
48881
  [acceptedFiles]
48873
48882
  );
48874
- const subscribeToDrop = (0, import_react216.useCallback)((fn) => {
48883
+ const subscribeToDrop = (0, import_react217.useCallback)((fn) => {
48875
48884
  dropHandlersRef.current.add(fn);
48876
48885
  return () => {
48877
48886
  dropHandlersRef.current.delete(fn);
48878
48887
  };
48879
48888
  }, []);
48880
- const handleDrop = (0, import_react216.useCallback)((files) => {
48889
+ const handleDrop = (0, import_react217.useCallback)((files) => {
48881
48890
  dropHandlersRef.current.forEach((fn) => fn(files));
48882
48891
  }, []);
48883
48892
  const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
@@ -48890,24 +48899,24 @@ var WithDragAndDropUpload = ({
48890
48899
  onDrop: isWithinMessageInputContext ? messageInputContext.uploadNewFiles : handleDrop
48891
48900
  });
48892
48901
  if (dragAndDropUploadContext.subscribeToDrop !== null) {
48893
- return /* @__PURE__ */ import_react216.default.createElement(Component2, { className }, children);
48902
+ return /* @__PURE__ */ import_react217.default.createElement(Component2, { className }, children);
48894
48903
  }
48895
- return /* @__PURE__ */ import_react216.default.createElement(
48904
+ return /* @__PURE__ */ import_react217.default.createElement(
48896
48905
  DragAndDropUploadContext.Provider,
48897
48906
  {
48898
48907
  value: {
48899
48908
  subscribeToDrop
48900
48909
  }
48901
48910
  },
48902
- /* @__PURE__ */ import_react216.default.createElement(Component2, { ...getRootProps({ className, style }) }, isDragActive && /* @__PURE__ */ import_react216.default.createElement(
48911
+ /* @__PURE__ */ import_react217.default.createElement(Component2, { ...getRootProps({ className, style }) }, isDragActive && /* @__PURE__ */ import_react217.default.createElement(
48903
48912
  "div",
48904
48913
  {
48905
48914
  className: (0, import_clsx55.default)("str-chat__dropzone-container", {
48906
48915
  "str-chat__dropzone-container--not-accepted": isDragReject
48907
48916
  })
48908
48917
  },
48909
- !isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Drag your files here")),
48910
- isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Some of the files will not be accepted"))
48918
+ !isDragReject && /* @__PURE__ */ import_react217.default.createElement("p", null, t2("Drag your files here")),
48919
+ isDragReject && /* @__PURE__ */ import_react217.default.createElement("p", null, t2("Some of the files will not be accepted"))
48911
48920
  ), children)
48912
48921
  );
48913
48922
  };
@@ -48947,19 +48956,19 @@ var MessageInputFlat = () => {
48947
48956
  const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
48948
48957
  const { channel } = useChatContext("MessageInputFlat");
48949
48958
  const { aiState } = useAIState(channel);
48950
- const stopGenerating = (0, import_react217.useCallback)(() => channel?.stopAIResponse(), [channel]);
48959
+ const stopGenerating = (0, import_react218.useCallback)(() => channel?.stopAIResponse(), [channel]);
48951
48960
  const [
48952
48961
  showRecordingPermissionDeniedNotification,
48953
48962
  setShowRecordingPermissionDeniedNotification
48954
- ] = (0, import_react217.useState)(false);
48955
- const closePermissionDeniedNotification = (0, import_react217.useCallback)(() => {
48963
+ ] = (0, import_react218.useState)(false);
48964
+ const closePermissionDeniedNotification = (0, import_react218.useCallback)(() => {
48956
48965
  setShowRecordingPermissionDeniedNotification(false);
48957
48966
  }, []);
48958
- const failedUploadsCount = (0, import_react217.useMemo)(
48967
+ const failedUploadsCount = (0, import_react218.useMemo)(
48959
48968
  () => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
48960
48969
  [attachments]
48961
48970
  );
48962
- (0, import_react217.useEffect)(() => {
48971
+ (0, import_react218.useEffect)(() => {
48963
48972
  const handleQuotedMessageUpdate = (e2) => {
48964
48973
  if (e2.message?.id !== quotedMessage?.id) return;
48965
48974
  if (e2.type === "message.deleted") {
@@ -48975,31 +48984,31 @@ var MessageInputFlat = () => {
48975
48984
  channel?.off("message.updated", handleQuotedMessageUpdate);
48976
48985
  };
48977
48986
  }, [channel, quotedMessage]);
48978
- if (recordingController.recordingState) return /* @__PURE__ */ import_react217.default.createElement(AudioRecorder2, null);
48987
+ if (recordingController.recordingState) return /* @__PURE__ */ import_react218.default.createElement(AudioRecorder2, null);
48979
48988
  const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
48980
48989
  const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
48981
48990
  const isRecording = !!recordingController.recordingState;
48982
48991
  const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
48983
48992
  const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
48984
- return /* @__PURE__ */ import_react217.default.createElement(WithDragAndDropUpload, { className: "str-chat__message-input", component: "div" }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react217.default.createElement(
48993
+ return /* @__PURE__ */ import_react218.default.createElement(WithDragAndDropUpload, { className: "str-chat__message-input", component: "div" }, recordingEnabled && recordingController.permissionState === "denied" && showRecordingPermissionDeniedNotification && /* @__PURE__ */ import_react218.default.createElement(
48985
48994
  RecordingPermissionDeniedNotification2,
48986
48995
  {
48987
48996
  onClose: closePermissionDeniedNotification,
48988
48997
  permissionName: "microphone" /* MIC */
48989
48998
  }
48990
- ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react217.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), displayQuotedMessage && /* @__PURE__ */ import_react217.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react217.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react217.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react217.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react217.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react217.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react217.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react217.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react217.default.createElement(import_react217.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react217.default.createElement(
48999
+ ), findAndEnqueueURLsToEnrich && /* @__PURE__ */ import_react218.default.createElement(LinkPreviewList2, { linkPreviews: Array.from(linkPreviews.values()) }), displayQuotedMessage && /* @__PURE__ */ import_react218.default.createElement(QuotedMessagePreviewHeader, null), /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-input-inner" }, /* @__PURE__ */ import_react218.default.createElement(AttachmentSelector2, null), /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-textarea-container" }, displayQuotedMessage && /* @__PURE__ */ import_react218.default.createElement(QuotedMessagePreview2, { quotedMessage }), isUploadEnabled && !!(numberOfUploads + failedUploadsCount || attachments.length > 0) && /* @__PURE__ */ import_react218.default.createElement(AttachmentPreviewList2, null), /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__message-textarea-with-emoji-picker" }, /* @__PURE__ */ import_react218.default.createElement(ChatAutoComplete, null), EmojiPicker && /* @__PURE__ */ import_react218.default.createElement(EmojiPicker, null))), shouldDisplayStopAIGeneration ? /* @__PURE__ */ import_react218.default.createElement(StopAIGenerationButton2, { onClick: stopGenerating }) : !hideSendButton && /* @__PURE__ */ import_react218.default.createElement(import_react218.default.Fragment, null, cooldownRemaining ? /* @__PURE__ */ import_react218.default.createElement(
48991
49000
  CooldownTimer2,
48992
49001
  {
48993
49002
  cooldownInterval: cooldownRemaining,
48994
49003
  setCooldownRemaining
48995
49004
  }
48996
- ) : /* @__PURE__ */ import_react217.default.createElement(import_react217.default.Fragment, null, /* @__PURE__ */ import_react217.default.createElement(
49005
+ ) : /* @__PURE__ */ import_react218.default.createElement(import_react218.default.Fragment, null, /* @__PURE__ */ import_react218.default.createElement(
48997
49006
  SendButton2,
48998
49007
  {
48999
49008
  disabled: !numberOfUploads && !text8.length && attachments.length - failedUploadsCount === 0,
49000
49009
  sendMessage: handleSubmit
49001
49010
  }
49002
- ), recordingEnabled && /* @__PURE__ */ import_react217.default.createElement(
49011
+ ), recordingEnabled && /* @__PURE__ */ import_react218.default.createElement(
49003
49012
  StartRecordingAudioButton2,
49004
49013
  {
49005
49014
  disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
@@ -49017,22 +49026,22 @@ var MessageInputFlat = () => {
49017
49026
  var EditMessageForm = () => {
49018
49027
  const { t: t2 } = useTranslationContext("EditMessageForm");
49019
49028
  const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
49020
- (0, import_react218.useEffect)(() => {
49029
+ (0, import_react219.useEffect)(() => {
49021
49030
  const onKeyDown = (event) => {
49022
49031
  if (event.key === "Escape") clearEditingState?.();
49023
49032
  };
49024
49033
  document.addEventListener("keydown", onKeyDown);
49025
49034
  return () => document.removeEventListener("keydown", onKeyDown);
49026
49035
  }, [clearEditingState]);
49027
- return /* @__PURE__ */ import_react218.default.createElement(
49036
+ return /* @__PURE__ */ import_react219.default.createElement(
49028
49037
  "form",
49029
49038
  {
49030
49039
  autoComplete: "off",
49031
49040
  className: "str-chat__edit-message-form",
49032
49041
  onSubmit: handleSubmit
49033
49042
  },
49034
- /* @__PURE__ */ import_react218.default.createElement(MessageInputFlat, null),
49035
- /* @__PURE__ */ import_react218.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react218.default.createElement(
49043
+ /* @__PURE__ */ import_react219.default.createElement(MessageInputFlat, null),
49044
+ /* @__PURE__ */ import_react219.default.createElement("div", { className: "str-chat__edit-message-form-options" }, /* @__PURE__ */ import_react219.default.createElement(
49036
49045
  "button",
49037
49046
  {
49038
49047
  className: "str-chat__edit-message-cancel",
@@ -49040,7 +49049,7 @@ var EditMessageForm = () => {
49040
49049
  onClick: clearEditingState
49041
49050
  },
49042
49051
  t2("Cancel")
49043
- ), /* @__PURE__ */ import_react218.default.createElement(
49052
+ ), /* @__PURE__ */ import_react219.default.createElement(
49044
49053
  "button",
49045
49054
  {
49046
49055
  className: "str-chat__edit-message-send",
@@ -49053,7 +49062,7 @@ var EditMessageForm = () => {
49053
49062
  };
49054
49063
 
49055
49064
  // src/components/MessageInput/MessageInput.tsx
49056
- var import_react219 = __toESM(require("react"));
49065
+ var import_react220 = __toESM(require("react"));
49057
49066
  var MessageInputProvider = (props) => {
49058
49067
  const cooldownTimerState = useCooldownTimer();
49059
49068
  const messageInputState = useMessageInputState(props);
@@ -49065,44 +49074,45 @@ var MessageInputProvider = (props) => {
49065
49074
  emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
49066
49075
  });
49067
49076
  useRegisterDropHandlers(messageInputContextValue);
49068
- return /* @__PURE__ */ import_react219.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
49077
+ return /* @__PURE__ */ import_react220.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
49069
49078
  };
49070
49079
  var UnMemoizedMessageInput = (props) => {
49071
49080
  const { Input: PropInput } = props;
49072
49081
  const { dragAndDropWindow } = useChannelStateContext();
49073
49082
  const { Input: ContextInput, TriggerProvider = DefaultTriggerProvider } = useComponentContext("MessageInput");
49083
+ const id = useStableId();
49074
49084
  const Input3 = PropInput || ContextInput || MessageInputFlat;
49075
- const dialogManagerId = props.isThreadInput ? "message-input-dialog-manager-thread" : "message-input-dialog-manager";
49085
+ const dialogManagerId = props.isThreadInput ? `message-input-dialog-manager-thread-${id}` : `message-input-dialog-manager-${id}`;
49076
49086
  if (dragAndDropWindow)
49077
- return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null)));
49078
- return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null))));
49087
+ return /* @__PURE__ */ import_react220.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react220.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react220.default.createElement(Input3, null)));
49088
+ return /* @__PURE__ */ import_react220.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react220.default.createElement(MessageInputProvider, { ...props }, /* @__PURE__ */ import_react220.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react220.default.createElement(Input3, null))));
49079
49089
  };
49080
- var MessageInput = import_react219.default.memo(
49090
+ var MessageInput = import_react220.default.memo(
49081
49091
  UnMemoizedMessageInput
49082
49092
  );
49083
49093
 
49084
49094
  // src/components/Reactions/ReactionsList.tsx
49085
- var import_react223 = __toESM(require("react"));
49095
+ var import_react224 = __toESM(require("react"));
49086
49096
  var import_clsx57 = __toESM(require("clsx"));
49087
49097
 
49088
49098
  // src/components/Reactions/ReactionsListModal.tsx
49089
- var import_react221 = __toESM(require("react"));
49099
+ var import_react222 = __toESM(require("react"));
49090
49100
  var import_clsx56 = __toESM(require("clsx"));
49091
49101
 
49092
49102
  // src/components/Reactions/hooks/useFetchReactions.ts
49093
- var import_react220 = require("react");
49103
+ var import_react221 = require("react");
49094
49104
  function useFetchReactions(options) {
49095
49105
  const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
49096
- const [reactions, setReactions] = (0, import_react220.useState)([]);
49106
+ const [reactions, setReactions] = (0, import_react221.useState)([]);
49097
49107
  const {
49098
49108
  handleFetchReactions: propHandleFetchReactions,
49099
49109
  reactionType,
49100
49110
  shouldFetch,
49101
49111
  sort
49102
49112
  } = options;
49103
- const [isLoading, setIsLoading] = (0, import_react220.useState)(shouldFetch);
49113
+ const [isLoading, setIsLoading] = (0, import_react221.useState)(shouldFetch);
49104
49114
  const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
49105
- (0, import_react220.useEffect)(() => {
49115
+ (0, import_react221.useEffect)(() => {
49106
49116
  if (!shouldFetch) {
49107
49117
  return;
49108
49118
  }
@@ -49158,24 +49168,24 @@ function ReactionsListModal({
49158
49168
  shouldFetch: modalProps.open,
49159
49169
  sort: reactionDetailsSort
49160
49170
  });
49161
- const reactionDetailsWithLegacyFallback = (0, import_react221.useMemo)(
49171
+ const reactionDetailsWithLegacyFallback = (0, import_react222.useMemo)(
49162
49172
  () => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
49163
49173
  [legacySortReactionDetails, reactionDetails]
49164
49174
  );
49165
- return /* @__PURE__ */ import_react221.default.createElement(
49175
+ return /* @__PURE__ */ import_react222.default.createElement(
49166
49176
  Modal,
49167
49177
  {
49168
49178
  ...modalProps,
49169
49179
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-modal", modalProps.className)
49170
49180
  },
49171
- /* @__PURE__ */ import_react221.default.createElement(
49181
+ /* @__PURE__ */ import_react222.default.createElement(
49172
49182
  "div",
49173
49183
  {
49174
49184
  className: "str-chat__message-reactions-details",
49175
49185
  "data-testid": "reactions-list-modal"
49176
49186
  },
49177
- /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
49178
- ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react221.default.createElement(
49187
+ /* @__PURE__ */ import_react222.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
49188
+ ({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react222.default.createElement(
49179
49189
  "div",
49180
49190
  {
49181
49191
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-reaction-type", {
@@ -49187,25 +49197,25 @@ function ReactionsListModal({
49187
49197
  reactionType
49188
49198
  )
49189
49199
  },
49190
- /* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react221.default.createElement(EmojiComponent, null)),
49200
+ /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback" }, /* @__PURE__ */ import_react222.default.createElement(EmojiComponent, null)),
49191
49201
  "\xA0",
49192
- /* @__PURE__ */ import_react221.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
49202
+ /* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
49193
49203
  )
49194
49204
  )),
49195
- SelectedEmojiComponent && /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react221.default.createElement(SelectedEmojiComponent, null)),
49196
- /* @__PURE__ */ import_react221.default.createElement(
49205
+ SelectedEmojiComponent && /* @__PURE__ */ import_react222.default.createElement("div", { className: "str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big" }, /* @__PURE__ */ import_react222.default.createElement(SelectedEmojiComponent, null)),
49206
+ /* @__PURE__ */ import_react222.default.createElement(
49197
49207
  "div",
49198
49208
  {
49199
49209
  className: "str-chat__message-reactions-details-reacting-users",
49200
49210
  "data-testid": "all-reacting-users"
49201
49211
  },
49202
- areReactionsLoading ? /* @__PURE__ */ import_react221.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react221.default.createElement(
49212
+ areReactionsLoading ? /* @__PURE__ */ import_react222.default.createElement(LoadingIndicator, null) : reactionDetailsWithLegacyFallback.map(({ user }) => /* @__PURE__ */ import_react222.default.createElement(
49203
49213
  "div",
49204
49214
  {
49205
49215
  className: "str-chat__message-reactions-details-reacting-user",
49206
49216
  key: user?.id
49207
49217
  },
49208
- /* @__PURE__ */ import_react221.default.createElement(
49218
+ /* @__PURE__ */ import_react222.default.createElement(
49209
49219
  Avatar,
49210
49220
  {
49211
49221
  className: "stream-chat__avatar--reaction",
@@ -49214,7 +49224,7 @@ function ReactionsListModal({
49214
49224
  name: user?.name || user?.id
49215
49225
  }
49216
49226
  ),
49217
- /* @__PURE__ */ import_react221.default.createElement(
49227
+ /* @__PURE__ */ import_react222.default.createElement(
49218
49228
  "span",
49219
49229
  {
49220
49230
  className: "str-chat__user-item--name",
@@ -49229,7 +49239,7 @@ function ReactionsListModal({
49229
49239
  }
49230
49240
 
49231
49241
  // src/components/Reactions/hooks/useProcessReactions.tsx
49232
- var import_react222 = require("react");
49242
+ var import_react223 = require("react");
49233
49243
  var defaultReactionsSort = (a2, b) => {
49234
49244
  if (a2.firstReactionAt && b.firstReactionAt) {
49235
49245
  return +a2.firstReactionAt - +b.firstReactionAt;
@@ -49251,19 +49261,19 @@ var useProcessReactions = (params) => {
49251
49261
  const latestReactions = propReactions || message.latest_reactions;
49252
49262
  const ownReactions = propOwnReactions || message?.own_reactions;
49253
49263
  const reactionGroups = propReactionGroups || message?.reaction_groups;
49254
- const isOwnReaction = (0, import_react222.useCallback)(
49264
+ const isOwnReaction = (0, import_react223.useCallback)(
49255
49265
  (reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
49256
49266
  [ownReactions]
49257
49267
  );
49258
- const getEmojiByReactionType = (0, import_react222.useCallback)(
49268
+ const getEmojiByReactionType = (0, import_react223.useCallback)(
49259
49269
  (reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
49260
49270
  [reactionOptions]
49261
49271
  );
49262
- const isSupportedReaction = (0, import_react222.useCallback)(
49272
+ const isSupportedReaction = (0, import_react223.useCallback)(
49263
49273
  (reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
49264
49274
  [reactionOptions]
49265
49275
  );
49266
- const getLatestReactedUserNames = (0, import_react222.useCallback)(
49276
+ const getLatestReactedUserNames = (0, import_react223.useCallback)(
49267
49277
  (reactionType) => latestReactions?.flatMap((reaction) => {
49268
49278
  if (reactionType && reactionType === reaction.type) {
49269
49279
  const username = reaction.user?.name || reaction.user?.id;
@@ -49273,7 +49283,7 @@ var useProcessReactions = (params) => {
49273
49283
  }) ?? [],
49274
49284
  [latestReactions]
49275
49285
  );
49276
- const existingReactions = (0, import_react222.useMemo)(() => {
49286
+ const existingReactions = (0, import_react223.useMemo)(() => {
49277
49287
  if (!reactionGroups) {
49278
49288
  return [];
49279
49289
  }
@@ -49307,7 +49317,7 @@ var useProcessReactions = (params) => {
49307
49317
  sortReactions
49308
49318
  ]);
49309
49319
  const hasReactions = existingReactions.length > 0;
49310
- const totalReactionCount = (0, import_react222.useMemo)(
49320
+ const totalReactionCount = (0, import_react223.useMemo)(
49311
49321
  () => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
49312
49322
  [existingReactions]
49313
49323
  );
@@ -49329,7 +49339,7 @@ var UnMemoizedReactionsList = (props) => {
49329
49339
  ...rest
49330
49340
  } = props;
49331
49341
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
49332
- const [selectedReactionType, setSelectedReactionType] = (0, import_react223.useState)(null);
49342
+ const [selectedReactionType, setSelectedReactionType] = (0, import_react224.useState)(null);
49333
49343
  const { t: t2 } = useTranslationContext("ReactionsList");
49334
49344
  const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
49335
49345
  const handleReactionButtonClick = (reactionType) => {
@@ -49339,7 +49349,7 @@ var UnMemoizedReactionsList = (props) => {
49339
49349
  setSelectedReactionType(reactionType);
49340
49350
  };
49341
49351
  if (!hasReactions) return null;
49342
- return /* @__PURE__ */ import_react223.default.createElement(import_react223.default.Fragment, null, /* @__PURE__ */ import_react223.default.createElement(
49352
+ return /* @__PURE__ */ import_react224.default.createElement(import_react224.default.Fragment, null, /* @__PURE__ */ import_react224.default.createElement(
49343
49353
  "div",
49344
49354
  {
49345
49355
  "aria-label": t2("aria/Reaction list"),
@@ -49350,8 +49360,8 @@ var UnMemoizedReactionsList = (props) => {
49350
49360
  "data-testid": "reaction-list",
49351
49361
  role: "figure"
49352
49362
  },
49353
- /* @__PURE__ */ import_react223.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
49354
- ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react223.default.createElement(
49363
+ /* @__PURE__ */ import_react224.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
49364
+ ({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */ import_react224.default.createElement(
49355
49365
  "li",
49356
49366
  {
49357
49367
  className: (0, import_clsx57.default)("str-chat__message-reaction", {
@@ -49359,7 +49369,7 @@ var UnMemoizedReactionsList = (props) => {
49359
49369
  }),
49360
49370
  key: reactionType
49361
49371
  },
49362
- /* @__PURE__ */ import_react223.default.createElement(
49372
+ /* @__PURE__ */ import_react224.default.createElement(
49363
49373
  "button",
49364
49374
  {
49365
49375
  "aria-label": `Reactions: ${reactionType}`,
@@ -49367,9 +49377,9 @@ var UnMemoizedReactionsList = (props) => {
49367
49377
  onClick: () => handleReactionButtonClick(reactionType),
49368
49378
  type: "button"
49369
49379
  },
49370
- /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react223.default.createElement(EmojiComponent, null)),
49380
+ /* @__PURE__ */ import_react224.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react224.default.createElement(EmojiComponent, null)),
49371
49381
  "\xA0",
49372
- /* @__PURE__ */ import_react223.default.createElement(
49382
+ /* @__PURE__ */ import_react224.default.createElement(
49373
49383
  "span",
49374
49384
  {
49375
49385
  className: "str-chat__message-reaction-count",
@@ -49379,8 +49389,8 @@ var UnMemoizedReactionsList = (props) => {
49379
49389
  )
49380
49390
  )
49381
49391
  )
49382
- ), /* @__PURE__ */ import_react223.default.createElement("li", null, /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
49383
- ), selectedReactionType !== null && /* @__PURE__ */ import_react223.default.createElement(
49392
+ ), /* @__PURE__ */ import_react224.default.createElement("li", null, /* @__PURE__ */ import_react224.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
49393
+ ), selectedReactionType !== null && /* @__PURE__ */ import_react224.default.createElement(
49384
49394
  ReactionsListModal2,
49385
49395
  {
49386
49396
  handleFetchReactions,
@@ -49393,12 +49403,12 @@ var UnMemoizedReactionsList = (props) => {
49393
49403
  }
49394
49404
  ));
49395
49405
  };
49396
- var ReactionsList = import_react223.default.memo(
49406
+ var ReactionsList = import_react224.default.memo(
49397
49407
  UnMemoizedReactionsList
49398
49408
  );
49399
49409
 
49400
49410
  // src/components/Reactions/SimpleReactionsList.tsx
49401
- var import_react224 = __toESM(require("react"));
49411
+ var import_react225 = __toESM(require("react"));
49402
49412
  var import_clsx58 = __toESM(require("clsx"));
49403
49413
  var WithTooltip = ({
49404
49414
  children,
@@ -49406,12 +49416,12 @@ var WithTooltip = ({
49406
49416
  onMouseLeave,
49407
49417
  title
49408
49418
  }) => {
49409
- const [referenceElement, setReferenceElement] = (0, import_react224.useState)(null);
49419
+ const [referenceElement, setReferenceElement] = (0, import_react225.useState)(null);
49410
49420
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
49411
49421
  onMouseEnter,
49412
49422
  onMouseLeave
49413
49423
  });
49414
- return /* @__PURE__ */ import_react224.default.createElement(import_react224.default.Fragment, null, /* @__PURE__ */ import_react224.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react224.default.createElement(
49424
+ return /* @__PURE__ */ import_react225.default.createElement(import_react225.default.Fragment, null, /* @__PURE__ */ import_react225.default.createElement(PopperTooltip, { referenceElement, visible: tooltipVisible }, title), /* @__PURE__ */ import_react225.default.createElement(
49415
49425
  "span",
49416
49426
  {
49417
49427
  onMouseEnter: handleEnter,
@@ -49427,7 +49437,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
49427
49437
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
49428
49438
  const handleReaction = propHandleReaction || contextHandleReaction;
49429
49439
  if (!hasReactions) return null;
49430
- return /* @__PURE__ */ import_react224.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react224.default.createElement(
49440
+ return /* @__PURE__ */ import_react225.default.createElement("div", { className: "str-chat__message-reactions-container" }, /* @__PURE__ */ import_react225.default.createElement(
49431
49441
  "ul",
49432
49442
  {
49433
49443
  className: "str-chat__simple-reactions-list str-chat__message-reactions",
@@ -49436,7 +49446,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
49436
49446
  existingReactions.map(
49437
49447
  ({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
49438
49448
  const tooltipContent = latestReactedUserNames.join(", ");
49439
- return EmojiComponent && /* @__PURE__ */ import_react224.default.createElement(
49449
+ return EmojiComponent && /* @__PURE__ */ import_react225.default.createElement(
49440
49450
  "li",
49441
49451
  {
49442
49452
  className: (0, import_clsx58.default)("str-chat__simple-reactions-list-item", {
@@ -49446,19 +49456,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
49446
49456
  onClick: (event) => handleReaction(reactionType, event),
49447
49457
  onKeyUp: (event) => handleReaction(reactionType, event)
49448
49458
  },
49449
- /* @__PURE__ */ import_react224.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react224.default.createElement(EmojiComponent, null))
49459
+ /* @__PURE__ */ import_react225.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react225.default.createElement(EmojiComponent, null))
49450
49460
  );
49451
49461
  }
49452
49462
  ),
49453
- /* @__PURE__ */ import_react224.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
49463
+ /* @__PURE__ */ import_react225.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
49454
49464
  ));
49455
49465
  };
49456
- var SimpleReactionsList = import_react224.default.memo(
49466
+ var SimpleReactionsList = import_react225.default.memo(
49457
49467
  UnMemoizedSimpleReactionsList
49458
49468
  );
49459
49469
 
49460
49470
  // src/components/Message/MessageEditedTimestamp.tsx
49461
- var import_react225 = __toESM(require("react"));
49471
+ var import_react226 = __toESM(require("react"));
49462
49472
  var import_clsx59 = __toESM(require("clsx"));
49463
49473
  function MessageEditedTimestamp({
49464
49474
  message: propMessage,
@@ -49474,7 +49484,7 @@ function MessageEditedTimestamp({
49474
49484
  if (!isMessageEdited(message)) {
49475
49485
  return null;
49476
49486
  }
49477
- return /* @__PURE__ */ import_react225.default.createElement(
49487
+ return /* @__PURE__ */ import_react226.default.createElement(
49478
49488
  "div",
49479
49489
  {
49480
49490
  className: (0, import_clsx59.default)(
@@ -49485,7 +49495,7 @@ function MessageEditedTimestamp({
49485
49495
  },
49486
49496
  t2("Edited"),
49487
49497
  " ",
49488
- /* @__PURE__ */ import_react225.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
49498
+ /* @__PURE__ */ import_react226.default.createElement(Timestamp2, { timestamp: message.message_text_updated_at, ...timestampProps })
49489
49499
  );
49490
49500
  }
49491
49501
 
@@ -49512,8 +49522,8 @@ var MessageSimpleWithContext = (props) => {
49512
49522
  } = props;
49513
49523
  const { client } = useChatContext("MessageSimple");
49514
49524
  const { t: t2 } = useTranslationContext("MessageSimple");
49515
- const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react226.useState)(false);
49516
- const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react226.useState)(false);
49525
+ const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react227.useState)(false);
49526
+ const [isEditedTimestampOpen, setEditedTimestampOpen] = (0, import_react227.useState)(false);
49517
49527
  const {
49518
49528
  Attachment: Attachment2 = Attachment,
49519
49529
  Avatar: Avatar2 = Avatar,
@@ -49534,7 +49544,7 @@ var MessageSimpleWithContext = (props) => {
49534
49544
  } = useComponentContext("MessageSimple");
49535
49545
  const hasAttachment = messageHasAttachments(message);
49536
49546
  const hasReactions = messageHasReactions(message);
49537
- const isAIGenerated = (0, import_react226.useMemo)(
49547
+ const isAIGenerated = (0, import_react227.useMemo)(
49538
49548
  () => isMessageAIGenerated?.(message),
49539
49549
  [isMessageAIGenerated, message]
49540
49550
  );
@@ -49542,10 +49552,10 @@ var MessageSimpleWithContext = (props) => {
49542
49552
  return null;
49543
49553
  }
49544
49554
  if (message.deleted_at || message.type === "deleted") {
49545
- return /* @__PURE__ */ import_react226.default.createElement(MessageDeleted2, { message });
49555
+ return /* @__PURE__ */ import_react227.default.createElement(MessageDeleted2, { message });
49546
49556
  }
49547
49557
  if (isMessageBlocked(message)) {
49548
- return /* @__PURE__ */ import_react226.default.createElement(MessageBlocked2, null);
49558
+ return /* @__PURE__ */ import_react227.default.createElement(MessageBlocked2, null);
49549
49559
  }
49550
49560
  const showMetadata = !groupedByUser || endOfGroup;
49551
49561
  const showReplyCountButton = !threadList && !!message.reply_count;
@@ -49579,14 +49589,14 @@ var MessageSimpleWithContext = (props) => {
49579
49589
  }
49580
49590
  );
49581
49591
  const poll = message.poll_id && client.polls.fromState(message.poll_id);
49582
- return /* @__PURE__ */ import_react226.default.createElement(import_react226.default.Fragment, null, editing && /* @__PURE__ */ import_react226.default.createElement(
49592
+ return /* @__PURE__ */ import_react227.default.createElement(import_react227.default.Fragment, null, editing && /* @__PURE__ */ import_react227.default.createElement(
49583
49593
  Modal,
49584
49594
  {
49585
49595
  className: "str-chat__edit-message-modal",
49586
49596
  onClose: clearEditingState,
49587
49597
  open: editing
49588
49598
  },
49589
- /* @__PURE__ */ import_react226.default.createElement(
49599
+ /* @__PURE__ */ import_react227.default.createElement(
49590
49600
  MessageInput,
49591
49601
  {
49592
49602
  clearEditingState,
@@ -49597,14 +49607,14 @@ var MessageSimpleWithContext = (props) => {
49597
49607
  ...additionalMessageInputProps
49598
49608
  }
49599
49609
  )
49600
- ), isBounceDialogOpen && /* @__PURE__ */ import_react226.default.createElement(
49610
+ ), isBounceDialogOpen && /* @__PURE__ */ import_react227.default.createElement(
49601
49611
  MessageBounceModal,
49602
49612
  {
49603
49613
  MessageBouncePrompt: MessageBouncePrompt2,
49604
49614
  onClose: () => setIsBounceDialogOpen(false),
49605
49615
  open: isBounceDialogOpen
49606
49616
  }
49607
- ), /* @__PURE__ */ import_react226.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react226.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react226.default.createElement(
49617
+ ), /* @__PURE__ */ import_react227.default.createElement("div", { className: rootClassName2, key: message.id }, PinIndicator2 && /* @__PURE__ */ import_react227.default.createElement(PinIndicator2, null), message.user && /* @__PURE__ */ import_react227.default.createElement(
49608
49618
  Avatar2,
49609
49619
  {
49610
49620
  image: message.user.image,
@@ -49613,7 +49623,7 @@ var MessageSimpleWithContext = (props) => {
49613
49623
  onMouseOver: onUserHover,
49614
49624
  user: message.user
49615
49625
  }
49616
- ), /* @__PURE__ */ import_react226.default.createElement(
49626
+ ), /* @__PURE__ */ import_react227.default.createElement(
49617
49627
  "div",
49618
49628
  {
49619
49629
  className: (0, import_clsx60.default)("str-chat__message-inner", {
@@ -49623,37 +49633,37 @@ var MessageSimpleWithContext = (props) => {
49623
49633
  onClick: handleClick,
49624
49634
  onKeyUp: handleClick
49625
49635
  },
49626
- /* @__PURE__ */ import_react226.default.createElement(MessageActions2, null),
49627
- /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react226.default.createElement(ReactionsList2, { reverse: true })),
49628
- /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react226.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react226.default.createElement(
49636
+ /* @__PURE__ */ import_react227.default.createElement(MessageActions2, null),
49637
+ /* @__PURE__ */ import_react227.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react227.default.createElement(ReactionsList2, { reverse: true })),
49638
+ /* @__PURE__ */ import_react227.default.createElement("div", { className: "str-chat__message-bubble" }, poll && /* @__PURE__ */ import_react227.default.createElement(Poll, { poll }), message.attachments?.length && !message.quoted_message ? /* @__PURE__ */ import_react227.default.createElement(
49629
49639
  Attachment2,
49630
49640
  {
49631
49641
  actionHandler: handleAction,
49632
49642
  attachments: message.attachments
49633
49643
  }
49634
- ) : null, isAIGenerated ? /* @__PURE__ */ import_react226.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react226.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react226.default.createElement(
49644
+ ) : null, isAIGenerated ? /* @__PURE__ */ import_react227.default.createElement(StreamedMessageText2, { message, renderText: renderText2 }) : /* @__PURE__ */ import_react227.default.createElement(MessageText, { message, renderText: renderText2 }), message.mml && /* @__PURE__ */ import_react227.default.createElement(
49635
49645
  MML3,
49636
49646
  {
49637
49647
  actionHandler: handleAction,
49638
49648
  align: isMyMessage() ? "right" : "left",
49639
49649
  source: message.mml
49640
49650
  }
49641
- ), /* @__PURE__ */ import_react226.default.createElement(MessageErrorIcon, null))
49642
- ), showReplyCountButton && /* @__PURE__ */ import_react226.default.createElement(
49651
+ ), /* @__PURE__ */ import_react227.default.createElement(MessageErrorIcon, null))
49652
+ ), showReplyCountButton && /* @__PURE__ */ import_react227.default.createElement(
49643
49653
  MessageRepliesCountButton2,
49644
49654
  {
49645
49655
  onClick: handleOpenThread,
49646
49656
  reply_count: message.reply_count
49647
49657
  }
49648
- ), showMetadata && /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react226.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react226.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react226.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react226.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react226.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
49658
+ ), showMetadata && /* @__PURE__ */ import_react227.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react227.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react227.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react227.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react227.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t2("Edited")), isEdited && /* @__PURE__ */ import_react227.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
49649
49659
  };
49650
- var MemoizedMessageSimple = import_react226.default.memo(
49660
+ var MemoizedMessageSimple = import_react227.default.memo(
49651
49661
  MessageSimpleWithContext,
49652
49662
  areMessageUIPropsEqual
49653
49663
  );
49654
49664
  var MessageSimple = (props) => {
49655
49665
  const messageContext = useMessageContext("MessageSimple");
49656
- return /* @__PURE__ */ import_react226.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
49666
+ return /* @__PURE__ */ import_react227.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
49657
49667
  };
49658
49668
 
49659
49669
  // src/components/Message/Message.tsx
@@ -49689,11 +49699,11 @@ var MessageWithContext = (props) => {
49689
49699
  canReply,
49690
49700
  isMyMessage
49691
49701
  } = userRoles;
49692
- const messageIsUnread = (0, import_react227.useMemo)(
49702
+ const messageIsUnread = (0, import_react228.useMemo)(
49693
49703
  () => !!(!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())),
49694
49704
  [client, isMyMessage, message.created_at, read]
49695
49705
  );
49696
- const messageActionsHandler = (0, import_react227.useCallback)(
49706
+ const messageActionsHandler = (0, import_react228.useCallback)(
49697
49707
  () => getMessageActions(messageActions, {
49698
49708
  canDelete,
49699
49709
  canEdit,
@@ -49747,9 +49757,9 @@ var MessageWithContext = (props) => {
49747
49757
  onUserHover,
49748
49758
  setEditingState: setEdit
49749
49759
  };
49750
- return /* @__PURE__ */ import_react227.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react227.default.createElement(MessageUIComponent, { groupedByUser }));
49760
+ return /* @__PURE__ */ import_react228.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react228.default.createElement(MessageUIComponent, { groupedByUser }));
49751
49761
  };
49752
- var MemoizedMessage = import_react227.default.memo(
49762
+ var MemoizedMessage = import_react228.default.memo(
49753
49763
  MessageWithContext,
49754
49764
  areMessagePropsEqual
49755
49765
  );
@@ -49816,7 +49826,7 @@ var Message = (props) => {
49816
49826
  notify: addNotification
49817
49827
  });
49818
49828
  const highlighted = highlightedMessageId === message.id;
49819
- return /* @__PURE__ */ import_react227.default.createElement(
49829
+ return /* @__PURE__ */ import_react228.default.createElement(
49820
49830
  MemoizedMessage,
49821
49831
  {
49822
49832
  additionalMessageInputProps: props.additionalMessageInputProps,
@@ -49868,18 +49878,18 @@ var Message = (props) => {
49868
49878
  // src/components/MessageList/GiphyPreviewMessage.tsx
49869
49879
  var GiphyPreviewMessage = (props) => {
49870
49880
  const { message } = props;
49871
- return /* @__PURE__ */ import_react228.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react228.default.createElement(Message, { message }));
49881
+ return /* @__PURE__ */ import_react229.default.createElement("div", { className: "giphy-preview-message" }, /* @__PURE__ */ import_react229.default.createElement(Message, { message }));
49872
49882
  };
49873
49883
 
49874
49884
  // src/components/MessageList/MessageList.tsx
49875
49885
  var import_clsx62 = __toESM(require("clsx"));
49876
- var import_react247 = __toESM(require("react"));
49886
+ var import_react248 = __toESM(require("react"));
49877
49887
 
49878
49888
  // src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
49879
- var import_react229 = require("react");
49889
+ var import_react230 = require("react");
49880
49890
 
49881
49891
  // src/components/MessageList/utils.ts
49882
- var import_nanoid9 = require("nanoid");
49892
+ var import_nanoid10 = require("nanoid");
49883
49893
  var processMessages = (params) => {
49884
49894
  const { messages, reviewProcessedMessage, setGiphyPreviewMessage, ...context } = params;
49885
49895
  const {
@@ -49955,9 +49965,9 @@ var processMessages = (params) => {
49955
49965
  var makeDateMessageId = (date) => {
49956
49966
  let idSuffix;
49957
49967
  try {
49958
- idSuffix = !date ? (0, import_nanoid9.nanoid)() : date instanceof Date ? date.toISOString() : date;
49968
+ idSuffix = !date ? (0, import_nanoid10.nanoid)() : date instanceof Date ? date.toISOString() : date;
49959
49969
  } catch (e2) {
49960
- idSuffix = (0, import_nanoid9.nanoid)();
49970
+ idSuffix = (0, import_nanoid10.nanoid)();
49961
49971
  }
49962
49972
  return `${CUSTOM_MESSAGE_TYPE.date}-${idSuffix}`;
49963
49973
  };
@@ -50083,7 +50093,7 @@ var useEnrichedMessages = (args) => {
50083
50093
  } = args;
50084
50094
  const { client } = useChatContext("useEnrichedMessages");
50085
50095
  const { HeaderComponent } = useComponentContext("useEnrichedMessages");
50086
- const lastRead = (0, import_react229.useMemo)(() => channel.lastRead?.(), [channel]);
50096
+ const lastRead = (0, import_react230.useMemo)(() => channel.lastRead?.(), [channel]);
50087
50097
  const enableDateSeparator = !disableDateSeparator;
50088
50098
  let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
50089
50099
  enableDateSeparator,
@@ -50098,7 +50108,7 @@ var useEnrichedMessages = (args) => {
50098
50108
  messagesWithDates = insertIntro(messagesWithDates, headerPosition);
50099
50109
  }
50100
50110
  const groupStylesFn = groupStyles || getGroupStyles;
50101
- const messageGroupStyles = (0, import_react229.useMemo)(
50111
+ const messageGroupStyles = (0, import_react230.useMemo)(
50102
50112
  () => messagesWithDates.reduce((acc, message, i) => {
50103
50113
  const style = groupStylesFn(
50104
50114
  message,
@@ -50117,13 +50127,13 @@ var useEnrichedMessages = (args) => {
50117
50127
  };
50118
50128
 
50119
50129
  // src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
50120
- var import_react231 = require("react");
50130
+ var import_react232 = require("react");
50121
50131
 
50122
50132
  // src/components/MessageList/hooks/useLastReadData.ts
50123
- var import_react230 = require("react");
50133
+ var import_react231 = require("react");
50124
50134
  var useLastReadData = (props) => {
50125
50135
  const { messages, read, returnAllReadData, userID } = props;
50126
- return (0, import_react230.useMemo)(
50136
+ return (0, import_react231.useMemo)(
50127
50137
  () => getReadStates(
50128
50138
  messages.filter(({ user }) => user?.id === userID),
50129
50139
  read,
@@ -50155,11 +50165,11 @@ var useMessageListElements = (props) => {
50155
50165
  returnAllReadData,
50156
50166
  userID: client.userID
50157
50167
  });
50158
- const lastReceivedMessageId = (0, import_react231.useMemo)(
50168
+ const lastReceivedMessageId = (0, import_react232.useMemo)(
50159
50169
  () => getLastReceived(enrichedMessages),
50160
50170
  [enrichedMessages]
50161
50171
  );
50162
- const elements = (0, import_react231.useMemo)(
50172
+ const elements = (0, import_react232.useMemo)(
50163
50173
  () => renderMessages({
50164
50174
  channelUnreadUiState,
50165
50175
  components,
@@ -50186,7 +50196,7 @@ var useMessageListElements = (props) => {
50186
50196
  };
50187
50197
 
50188
50198
  // src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
50189
- var import_react232 = require("react");
50199
+ var import_react233 = require("react");
50190
50200
  function useMessageListScrollManager(params) {
50191
50201
  const {
50192
50202
  loadMoreScrollThreshold,
@@ -50197,13 +50207,13 @@ function useMessageListScrollManager(params) {
50197
50207
  showNewMessages
50198
50208
  } = params;
50199
50209
  const { client } = useChatContext("useMessageListScrollManager");
50200
- const measures = (0, import_react232.useRef)({
50210
+ const measures = (0, import_react233.useRef)({
50201
50211
  offsetHeight: 0,
50202
50212
  scrollHeight: 0
50203
50213
  });
50204
- const messages = (0, import_react232.useRef)(void 0);
50205
- const scrollTop = (0, import_react232.useRef)(0);
50206
- (0, import_react232.useLayoutEffect)(() => {
50214
+ const messages = (0, import_react233.useRef)(void 0);
50215
+ const scrollTop = (0, import_react233.useRef)(0);
50216
+ (0, import_react233.useLayoutEffect)(() => {
50207
50217
  const prevMeasures = measures.current;
50208
50218
  const prevMessages = messages.current;
50209
50219
  const newMessages = params.messages;
@@ -50243,7 +50253,7 @@ function useMessageListScrollManager(params) {
50243
50253
  }
50244
50254
 
50245
50255
  // src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
50246
- var import_react233 = require("react");
50256
+ var import_react234 = require("react");
50247
50257
  var useScrollLocationLogic = (params) => {
50248
50258
  const {
50249
50259
  hasMoreNewer,
@@ -50253,12 +50263,12 @@ var useScrollLocationLogic = (params) => {
50253
50263
  scrolledUpThreshold = 200,
50254
50264
  suppressAutoscroll
50255
50265
  } = params;
50256
- const [hasNewMessages, setHasNewMessages] = (0, import_react233.useState)(false);
50257
- const [wrapperRect, setWrapperRect] = (0, import_react233.useState)();
50258
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react233.useState)(true);
50259
- const closeToBottom = (0, import_react233.useRef)(false);
50260
- const closeToTop = (0, import_react233.useRef)(false);
50261
- const scrollToBottom = (0, import_react233.useCallback)(() => {
50266
+ const [hasNewMessages, setHasNewMessages] = (0, import_react234.useState)(false);
50267
+ const [wrapperRect, setWrapperRect] = (0, import_react234.useState)();
50268
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react234.useState)(true);
50269
+ const closeToBottom = (0, import_react234.useRef)(false);
50270
+ const closeToTop = (0, import_react234.useRef)(false);
50271
+ const scrollToBottom = (0, import_react234.useCallback)(() => {
50262
50272
  if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
50263
50273
  return;
50264
50274
  }
@@ -50267,7 +50277,7 @@ var useScrollLocationLogic = (params) => {
50267
50277
  });
50268
50278
  setHasNewMessages(false);
50269
50279
  }, [listElement, hasMoreNewer, suppressAutoscroll]);
50270
- (0, import_react233.useLayoutEffect)(() => {
50280
+ (0, import_react234.useLayoutEffect)(() => {
50271
50281
  if (listElement) {
50272
50282
  setWrapperRect(listElement.getBoundingClientRect());
50273
50283
  scrollToBottom();
@@ -50287,7 +50297,7 @@ var useScrollLocationLogic = (params) => {
50287
50297
  scrollToBottom,
50288
50298
  showNewMessages: () => setHasNewMessages(true)
50289
50299
  });
50290
- const onScroll = (0, import_react233.useCallback)(
50300
+ const onScroll = (0, import_react234.useCallback)(
50291
50301
  (event) => {
50292
50302
  const element4 = event.target;
50293
50303
  const scrollTop = element4.scrollTop;
@@ -50318,22 +50328,22 @@ var useScrollLocationLogic = (params) => {
50318
50328
  };
50319
50329
 
50320
50330
  // src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
50321
- var import_react236 = require("react");
50331
+ var import_react237 = require("react");
50322
50332
 
50323
50333
  // src/components/MessageList/MessageListMainPanel.tsx
50324
- var import_react234 = __toESM(require("react"));
50334
+ var import_react235 = __toESM(require("react"));
50325
50335
  var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
50326
- var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react234.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
50336
+ var MessageListMainPanel = ({ children }) => /* @__PURE__ */ import_react235.default.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
50327
50337
 
50328
50338
  // src/components/MessageList/UnreadMessagesSeparator.tsx
50329
- var import_react235 = __toESM(require("react"));
50339
+ var import_react236 = __toESM(require("react"));
50330
50340
  var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
50331
50341
  var UnreadMessagesSeparator = ({
50332
50342
  showCount,
50333
50343
  unreadCount
50334
50344
  }) => {
50335
50345
  const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
50336
- return /* @__PURE__ */ import_react235.default.createElement(
50346
+ return /* @__PURE__ */ import_react236.default.createElement(
50337
50347
  "div",
50338
50348
  {
50339
50349
  className: UNREAD_MESSAGE_SEPARATOR_CLASS,
@@ -50359,10 +50369,10 @@ var useUnreadMessagesNotification = ({
50359
50369
  unreadCount
50360
50370
  }) => {
50361
50371
  const { messages } = useChannelStateContext("UnreadMessagesNotification");
50362
- const [show, setShow] = (0, import_react236.useState)(false);
50363
- const isScrolledAboveTargetTop = (0, import_react236.useRef)(false);
50372
+ const [show, setShow] = (0, import_react237.useState)(false);
50373
+ const isScrolledAboveTargetTop = (0, import_react237.useRef)(false);
50364
50374
  const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
50365
- (0, import_react236.useEffect)(() => {
50375
+ (0, import_react237.useEffect)(() => {
50366
50376
  if (!(unreadCount && intersectionObserverIsSupported)) {
50367
50377
  setShow(false);
50368
50378
  return;
@@ -50409,7 +50419,7 @@ var useUnreadMessagesNotification = ({
50409
50419
  showAlways,
50410
50420
  unreadCount
50411
50421
  ]);
50412
- (0, import_react236.useEffect)(() => {
50422
+ (0, import_react237.useEffect)(() => {
50413
50423
  if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
50414
50424
  setShow(true);
50415
50425
  isScrolledAboveTargetTop.current = false;
@@ -50419,7 +50429,7 @@ var useUnreadMessagesNotification = ({
50419
50429
  };
50420
50430
 
50421
50431
  // src/components/MessageList/hooks/useMarkRead.ts
50422
- var import_react237 = require("react");
50432
+ var import_react238 = require("react");
50423
50433
  var hasReadLastMessage = (channel, userId) => {
50424
50434
  const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
50425
50435
  const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
@@ -50433,7 +50443,7 @@ var useMarkRead = ({
50433
50443
  const { client } = useChatContext("useMarkRead");
50434
50444
  const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
50435
50445
  const { channel } = useChannelStateContext("useMarkRead");
50436
- (0, import_react237.useEffect)(() => {
50446
+ (0, import_react238.useEffect)(() => {
50437
50447
  const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
50438
50448
  const onVisibilityChange = () => {
50439
50449
  if (shouldMarkRead()) markRead();
@@ -50492,11 +50502,11 @@ function getPreviousLastMessage(messages, newMessage) {
50492
50502
  }
50493
50503
 
50494
50504
  // src/components/MessageList/MessageNotification.tsx
50495
- var import_react238 = __toESM(require("react"));
50505
+ var import_react239 = __toESM(require("react"));
50496
50506
  var UnMemoizedMessageNotification = (props) => {
50497
50507
  const { children, onClick, showNotification = true } = props;
50498
50508
  if (!showNotification) return null;
50499
- return /* @__PURE__ */ import_react238.default.createElement(
50509
+ return /* @__PURE__ */ import_react239.default.createElement(
50500
50510
  "button",
50501
50511
  {
50502
50512
  "aria-live": "polite",
@@ -50507,12 +50517,12 @@ var UnMemoizedMessageNotification = (props) => {
50507
50517
  children
50508
50518
  );
50509
50519
  };
50510
- var MessageNotification = import_react238.default.memo(
50520
+ var MessageNotification = import_react239.default.memo(
50511
50521
  UnMemoizedMessageNotification
50512
50522
  );
50513
50523
 
50514
50524
  // src/components/MessageList/MessageListNotifications.tsx
50515
- var import_react239 = __toESM(require("react"));
50525
+ var import_react240 = __toESM(require("react"));
50516
50526
  var MessageListNotifications = (props) => {
50517
50527
  const {
50518
50528
  hasNewMessages,
@@ -50525,7 +50535,7 @@ var MessageListNotifications = (props) => {
50525
50535
  unreadCount
50526
50536
  } = props;
50527
50537
  const { t: t2 } = useTranslationContext("MessageListNotifications");
50528
- return /* @__PURE__ */ import_react239.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react239.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react239.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react239.default.createElement(
50538
+ return /* @__PURE__ */ import_react240.default.createElement("div", { className: "str-chat__list-notifications" }, notifications.map((notification) => /* @__PURE__ */ import_react240.default.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)), /* @__PURE__ */ import_react240.default.createElement(ConnectionStatus, null), /* @__PURE__ */ import_react240.default.createElement(
50529
50539
  MessageNotification2,
50530
50540
  {
50531
50541
  isMessageListScrolledToBottom,
@@ -50539,11 +50549,11 @@ var MessageListNotifications = (props) => {
50539
50549
  };
50540
50550
 
50541
50551
  // src/components/MessageList/UnreadMessagesNotification.tsx
50542
- var import_react241 = __toESM(require("react"));
50552
+ var import_react242 = __toESM(require("react"));
50543
50553
 
50544
50554
  // src/components/MessageList/icons.tsx
50545
- var import_react240 = __toESM(require("react"));
50546
- var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react240.default.createElement(
50555
+ var import_react241 = __toESM(require("react"));
50556
+ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react241.default.createElement(
50547
50557
  "svg",
50548
50558
  {
50549
50559
  className,
@@ -50554,7 +50564,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react24
50554
50564
  width: "24",
50555
50565
  xmlns: "http://www.w3.org/2000/svg"
50556
50566
  },
50557
- /* @__PURE__ */ import_react240.default.createElement(
50567
+ /* @__PURE__ */ import_react241.default.createElement(
50558
50568
  "path",
50559
50569
  {
50560
50570
  d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
@@ -50562,7 +50572,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react24
50562
50572
  }
50563
50573
  )
50564
50574
  );
50565
- var CloseIcon2 = () => /* @__PURE__ */ import_react240.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react240.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" }));
50575
+ var CloseIcon2 = () => /* @__PURE__ */ import_react241.default.createElement("svg", { fill: "currentColor", viewBox: "0 0 14 13", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react241.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" }));
50566
50576
 
50567
50577
  // src/components/MessageList/UnreadMessagesNotification.tsx
50568
50578
  var UnreadMessagesNotification = ({
@@ -50574,19 +50584,19 @@ var UnreadMessagesNotification = ({
50574
50584
  "UnreadMessagesNotification"
50575
50585
  );
50576
50586
  const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
50577
- return /* @__PURE__ */ import_react241.default.createElement(
50587
+ return /* @__PURE__ */ import_react242.default.createElement(
50578
50588
  "div",
50579
50589
  {
50580
50590
  className: "str-chat__unread-messages-notification",
50581
50591
  "data-testid": "unread-messages-notification"
50582
50592
  },
50583
- /* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
50584
- /* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react241.default.createElement(CloseIcon2, null))
50593
+ /* @__PURE__ */ import_react242.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
50594
+ /* @__PURE__ */ import_react242.default.createElement("button", { onClick: () => markRead() }, /* @__PURE__ */ import_react242.default.createElement(CloseIcon2, null))
50585
50595
  );
50586
50596
  };
50587
50597
 
50588
50598
  // src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
50589
- var import_react242 = __toESM(require("react"));
50599
+ var import_react243 = __toESM(require("react"));
50590
50600
  var mousewheelListener2 = (event) => {
50591
50601
  if (event instanceof WheelEvent && event.deltaY === 1) {
50592
50602
  event.preventDefault();
@@ -50617,10 +50627,10 @@ var InfiniteScroll = (props) => {
50617
50627
  const loadPreviousPageFn = loadPreviousPage || loadMore;
50618
50628
  const hasNextPageFlag = hasNextPage || hasMoreNewer;
50619
50629
  const hasPreviousPageFlag = hasPreviousPage || hasMore;
50620
- const scrollComponent = (0, import_react242.useRef)(void 0);
50621
- const previousOffset = (0, import_react242.useRef)(void 0);
50622
- const previousReverseOffset = (0, import_react242.useRef)(void 0);
50623
- const scrollListenerRef = (0, import_react242.useRef)(void 0);
50630
+ const scrollComponent = (0, import_react243.useRef)(void 0);
50631
+ const previousOffset = (0, import_react243.useRef)(void 0);
50632
+ const previousReverseOffset = (0, import_react243.useRef)(void 0);
50633
+ const scrollListenerRef = (0, import_react243.useRef)(void 0);
50624
50634
  scrollListenerRef.current = () => {
50625
50635
  const element5 = scrollComponent.current;
50626
50636
  if (!element5 || element5.offsetParent === null) {
@@ -50644,7 +50654,7 @@ var InfiniteScroll = (props) => {
50644
50654
  loadNextPageFn();
50645
50655
  }
50646
50656
  };
50647
- (0, import_react242.useEffect)(() => {
50657
+ (0, import_react243.useEffect)(() => {
50648
50658
  deprecationAndReplacementWarning(
50649
50659
  [
50650
50660
  [{ hasMoreNewer }, { hasNextPage }],
@@ -50655,7 +50665,7 @@ var InfiniteScroll = (props) => {
50655
50665
  "InfiniteScroll"
50656
50666
  );
50657
50667
  }, []);
50658
- (0, import_react242.useEffect)(() => {
50668
+ (0, import_react243.useEffect)(() => {
50659
50669
  const scrollElement = scrollComponent.current?.parentNode;
50660
50670
  if (!scrollElement) return;
50661
50671
  const scrollListener = () => scrollListenerRef.current?.();
@@ -50667,7 +50677,7 @@ var InfiniteScroll = (props) => {
50667
50677
  scrollElement.removeEventListener("resize", scrollListener, useCapture);
50668
50678
  };
50669
50679
  }, [initialLoad, useCapture]);
50670
- (0, import_react242.useEffect)(() => {
50680
+ (0, import_react243.useEffect)(() => {
50671
50681
  const scrollElement = scrollComponent.current?.parentNode;
50672
50682
  if (scrollElement) {
50673
50683
  scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
@@ -50688,11 +50698,11 @@ var InfiniteScroll = (props) => {
50688
50698
  if (head) {
50689
50699
  childrenArray.unshift(head);
50690
50700
  }
50691
- return import_react242.default.createElement(element4, attributes, childrenArray);
50701
+ return import_react243.default.createElement(element4, attributes, childrenArray);
50692
50702
  };
50693
50703
 
50694
50704
  // src/components/TypingIndicator/TypingIndicator.tsx
50695
- var import_react243 = __toESM(require("react"));
50705
+ var import_react244 = __toESM(require("react"));
50696
50706
  var import_clsx61 = __toESM(require("clsx"));
50697
50707
  var useJoinTypingUsers = (names) => {
50698
50708
  const { t: t2 } = useTranslationContext();
@@ -50730,7 +50740,7 @@ var UnMemoizedTypingIndicator = (props) => {
50730
50740
  return null;
50731
50741
  }
50732
50742
  if (!isTypingActive) return null;
50733
- return /* @__PURE__ */ import_react243.default.createElement(
50743
+ return /* @__PURE__ */ import_react244.default.createElement(
50734
50744
  "div",
50735
50745
  {
50736
50746
  className: (0, import_clsx61.default)("str-chat__typing-indicator", {
@@ -50738,19 +50748,19 @@ var UnMemoizedTypingIndicator = (props) => {
50738
50748
  }),
50739
50749
  "data-testid": "typing-indicator"
50740
50750
  },
50741
- /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react243.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
50742
- /* @__PURE__ */ import_react243.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
50751
+ /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__typing-indicator__dots" }, /* @__PURE__ */ import_react244.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react244.default.createElement("span", { className: "str-chat__typing-indicator__dot" }), /* @__PURE__ */ import_react244.default.createElement("span", { className: "str-chat__typing-indicator__dot" })),
50752
+ /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__typing-indicator__users", "data-testid": "typing-users" }, joinedTypingUsers)
50743
50753
  );
50744
50754
  };
50745
- var TypingIndicator = import_react243.default.memo(
50755
+ var TypingIndicator = import_react244.default.memo(
50746
50756
  UnMemoizedTypingIndicator
50747
50757
  );
50748
50758
 
50749
50759
  // src/components/MessageList/renderMessages.tsx
50750
- var import_react246 = __toESM(require("react"));
50760
+ var import_react247 = __toESM(require("react"));
50751
50761
 
50752
50762
  // src/components/DateSeparator/DateSeparator.tsx
50753
- var import_react244 = __toESM(require("react"));
50763
+ var import_react245 = __toESM(require("react"));
50754
50764
  var UnMemoizedDateSeparator = (props) => {
50755
50765
  const {
50756
50766
  calendar: calendar3,
@@ -50770,21 +50780,21 @@ var UnMemoizedDateSeparator = (props) => {
50770
50780
  tDateTimeParser,
50771
50781
  timestampTranslationKey: "timestamp/DateSeparator"
50772
50782
  });
50773
- return /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react244.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react244.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react244.default.createElement("hr", { className: "str-chat__date-separator-line" }));
50783
+ return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__date-separator", "data-testid": "date-separator" }, (position4 === "right" || position4 === "center") && /* @__PURE__ */ import_react245.default.createElement("hr", { className: "str-chat__date-separator-line" }), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__date-separator-date" }, unread ? `${t2("New")} - ${formattedDate}` : formattedDate), (position4 === "left" || position4 === "center") && /* @__PURE__ */ import_react245.default.createElement("hr", { className: "str-chat__date-separator-line" }));
50774
50784
  };
50775
- var DateSeparator = import_react244.default.memo(
50785
+ var DateSeparator = import_react245.default.memo(
50776
50786
  UnMemoizedDateSeparator
50777
50787
  );
50778
50788
 
50779
50789
  // src/components/EventComponent/EventComponent.tsx
50780
- var import_react245 = __toESM(require("react"));
50790
+ var import_react246 = __toESM(require("react"));
50781
50791
  var UnMemoizedEventComponent = (props) => {
50782
50792
  const { Avatar: Avatar2 = Avatar, calendar: calendar3, calendarFormats, format, message } = props;
50783
50793
  const { t: t2, tDateTimeParser } = useTranslationContext("EventComponent");
50784
50794
  const { created_at = "", event, text: text8, type } = message;
50785
50795
  const getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser };
50786
50796
  if (type === "system")
50787
- return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react245.default.createElement("p", null, text8), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react245.default.createElement("strong", null, getDateString({
50797
+ return /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__message--system", "data-testid": "message-system" }, /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__message--system__text" }, /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__message--system__line" }), /* @__PURE__ */ import_react246.default.createElement("p", null, text8), /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__message--system__line" })), /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__message--system__date" }, /* @__PURE__ */ import_react246.default.createElement("strong", null, getDateString({
50788
50798
  ...getDateOptions,
50789
50799
  calendar: calendar3,
50790
50800
  calendarFormats,
@@ -50795,11 +50805,11 @@ var UnMemoizedEventComponent = (props) => {
50795
50805
  if (event?.type === "member.removed" || event?.type === "member.added") {
50796
50806
  const name2 = event.user?.name || event.user?.id;
50797
50807
  const sentence = `${name2} ${event.type === "member.added" ? "has joined the chat" : "was removed from the chat"}`;
50798
- return /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react245.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react245.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react245.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
50808
+ return /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__event-component__channel-event" }, /* @__PURE__ */ import_react246.default.createElement(Avatar2, { image: event.user?.image, name: name2, user: event.user }), /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__event-component__channel-event__content" }, /* @__PURE__ */ import_react246.default.createElement("em", { className: "str-chat__event-component__channel-event__sentence" }, sentence), /* @__PURE__ */ import_react246.default.createElement("div", { className: "str-chat__event-component__channel-event__date" }, getDateString({ ...getDateOptions, format: "LT" }))));
50799
50809
  }
50800
50810
  return null;
50801
50811
  };
50802
- var EventComponent = import_react245.default.memo(
50812
+ var EventComponent = import_react246.default.memo(
50803
50813
  UnMemoizedEventComponent
50804
50814
  );
50805
50815
 
@@ -50827,7 +50837,7 @@ function defaultRenderMessages({
50827
50837
  const message = messages[index3];
50828
50838
  if (isDateSeparatorMessage(message)) {
50829
50839
  renderedMessages.push(
50830
- /* @__PURE__ */ import_react246.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react246.default.createElement(
50840
+ /* @__PURE__ */ import_react247.default.createElement("li", { key: `${message.date.toISOString()}-i` }, /* @__PURE__ */ import_react247.default.createElement(
50831
50841
  DateSeparator2,
50832
50842
  {
50833
50843
  date: message.date,
@@ -50838,17 +50848,17 @@ function defaultRenderMessages({
50838
50848
  );
50839
50849
  } else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
50840
50850
  renderedMessages.push(
50841
- /* @__PURE__ */ import_react246.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react246.default.createElement(HeaderComponent, null))
50851
+ /* @__PURE__ */ import_react247.default.createElement("li", { key: "intro" }, /* @__PURE__ */ import_react247.default.createElement(HeaderComponent, null))
50842
50852
  );
50843
50853
  } else if (message.type === "system") {
50844
50854
  renderedMessages.push(
50845
- /* @__PURE__ */ import_react246.default.createElement(
50855
+ /* @__PURE__ */ import_react247.default.createElement(
50846
50856
  "li",
50847
50857
  {
50848
50858
  "data-message-id": message.id,
50849
50859
  key: message.id || message.created_at
50850
50860
  },
50851
- /* @__PURE__ */ import_react246.default.createElement(MessageSystem, { message })
50861
+ /* @__PURE__ */ import_react247.default.createElement(MessageSystem, { message })
50852
50862
  )
50853
50863
  );
50854
50864
  } else {
@@ -50867,19 +50877,19 @@ function defaultRenderMessages({
50867
50877
  unreadMessageCount: channelUnreadUiState?.unread_messages
50868
50878
  });
50869
50879
  renderedMessages.push(
50870
- /* @__PURE__ */ import_react246.default.createElement(import_react246.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react246.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react246.default.createElement(
50880
+ /* @__PURE__ */ import_react247.default.createElement(import_react247.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react247.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react247.default.createElement(
50871
50881
  UnreadMessagesSeparator2,
50872
50882
  {
50873
50883
  unreadCount: channelUnreadUiState?.unread_messages
50874
50884
  }
50875
- )), /* @__PURE__ */ import_react246.default.createElement(
50885
+ )), /* @__PURE__ */ import_react247.default.createElement(
50876
50886
  "li",
50877
50887
  {
50878
50888
  className: messageClass,
50879
50889
  "data-message-id": message.id,
50880
50890
  "data-testid": messageClass
50881
50891
  },
50882
- /* @__PURE__ */ import_react246.default.createElement(
50892
+ /* @__PURE__ */ import_react247.default.createElement(
50883
50893
  Message,
50884
50894
  {
50885
50895
  groupStyles: [groupStyles],
@@ -50936,8 +50946,8 @@ var MessageListWithContext = (props) => {
50936
50946
  threadList = false,
50937
50947
  unsafeHTML = false
50938
50948
  } = props;
50939
- const [listElement, setListElement] = import_react247.default.useState(null);
50940
- const [ulElement, setUlElement] = import_react247.default.useState(null);
50949
+ const [listElement, setListElement] = import_react248.default.useState(null);
50950
+ const [ulElement, setUlElement] = import_react248.default.useState(null);
50941
50951
  const { customClasses } = useChatContext("MessageList");
50942
50952
  const {
50943
50953
  EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator,
@@ -51025,24 +51035,24 @@ var MessageListWithContext = (props) => {
51025
51035
  threadList
51026
51036
  });
51027
51037
  const messageListClass = customClasses?.messageList || "str-chat__list";
51028
- const loadMore = import_react247.default.useCallback(() => {
51038
+ const loadMore = import_react248.default.useCallback(() => {
51029
51039
  if (loadMoreCallback) {
51030
51040
  loadMoreCallback(messageLimit);
51031
51041
  }
51032
51042
  }, [loadMoreCallback, messageLimit]);
51033
- const loadMoreNewer = import_react247.default.useCallback(() => {
51043
+ const loadMoreNewer = import_react248.default.useCallback(() => {
51034
51044
  if (loadMoreNewerCallback) {
51035
51045
  loadMoreNewerCallback(messageLimit);
51036
51046
  }
51037
51047
  }, [loadMoreNewerCallback, messageLimit]);
51038
- const scrollToBottomFromNotification = import_react247.default.useCallback(async () => {
51048
+ const scrollToBottomFromNotification = import_react248.default.useCallback(async () => {
51039
51049
  if (hasMoreNewer) {
51040
51050
  await jumpToLatestMessage();
51041
51051
  } else {
51042
51052
  scrollToBottom();
51043
51053
  }
51044
51054
  }, [scrollToBottom, hasMoreNewer]);
51045
- import_react247.default.useLayoutEffect(() => {
51055
+ import_react248.default.useLayoutEffect(() => {
51046
51056
  if (highlightedMessageId) {
51047
51057
  const element4 = ulElement?.querySelector(
51048
51058
  `[data-message-id='${highlightedMessageId}']`
@@ -51050,14 +51060,15 @@ var MessageListWithContext = (props) => {
51050
51060
  element4?.scrollIntoView({ block: "center" });
51051
51061
  }
51052
51062
  }, [highlightedMessageId]);
51063
+ const id = useStableId();
51053
51064
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
51054
- const dialogManagerId = threadList ? "message-list-dialog-manager-thread" : "message-list-dialog-manager";
51055
- return /* @__PURE__ */ import_react247.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react247.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react247.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react247.default.createElement(
51065
+ const dialogManagerId = threadList ? `message-list-dialog-manager-thread-${id}` : `message-list-dialog-manager-${id}`;
51066
+ return /* @__PURE__ */ import_react248.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react248.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react248.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react248.default.createElement(
51056
51067
  UnreadMessagesNotification2,
51057
51068
  {
51058
51069
  unreadCount: channelUnreadUiState?.unread_messages
51059
51070
  }
51060
- ), /* @__PURE__ */ import_react247.default.createElement(
51071
+ ), /* @__PURE__ */ import_react248.default.createElement(
51061
51072
  "div",
51062
51073
  {
51063
51074
  className: (0, import_clsx62.default)(messageListClass, customClasses?.threadList),
@@ -51065,7 +51076,7 @@ var MessageListWithContext = (props) => {
51065
51076
  ref: setListElement,
51066
51077
  tabIndex: 0
51067
51078
  },
51068
- showEmptyStateIndicator ? /* @__PURE__ */ import_react247.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react247.default.createElement(
51079
+ showEmptyStateIndicator ? /* @__PURE__ */ import_react248.default.createElement(EmptyStateIndicator2, { listType: threadList ? "thread" : "message" }) : /* @__PURE__ */ import_react248.default.createElement(
51069
51080
  InfiniteScroll,
51070
51081
  {
51071
51082
  className: "str-chat__message-list-scroll",
@@ -51074,17 +51085,17 @@ var MessageListWithContext = (props) => {
51074
51085
  hasPreviousPage: props.hasMore,
51075
51086
  head: props.head,
51076
51087
  isLoading: props.loadingMore,
51077
- loader: /* @__PURE__ */ import_react247.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react247.default.createElement(LoadingIndicator2, { size: 20 })),
51088
+ loader: /* @__PURE__ */ import_react248.default.createElement("div", { className: "str-chat__list__loading", key: "loading-indicator" }, props.loadingMore && /* @__PURE__ */ import_react248.default.createElement(LoadingIndicator2, { size: 20 })),
51078
51089
  loadNextPage: loadMoreNewer,
51079
51090
  loadPreviousPage: loadMore,
51080
51091
  threshold: loadMoreScrollThreshold,
51081
51092
  ...restInternalInfiniteScrollProps
51082
51093
  },
51083
- /* @__PURE__ */ import_react247.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
51084
- /* @__PURE__ */ import_react247.default.createElement(TypingIndicator2, { threadList }),
51085
- /* @__PURE__ */ import_react247.default.createElement("div", { key: "bottom" })
51094
+ /* @__PURE__ */ import_react248.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
51095
+ /* @__PURE__ */ import_react248.default.createElement(TypingIndicator2, { threadList }),
51096
+ /* @__PURE__ */ import_react248.default.createElement("div", { key: "bottom" })
51086
51097
  )
51087
- ))), /* @__PURE__ */ import_react247.default.createElement(
51098
+ ))), /* @__PURE__ */ import_react248.default.createElement(
51088
51099
  MessageListNotifications2,
51089
51100
  {
51090
51101
  hasNewMessages,
@@ -51109,7 +51120,7 @@ var MessageList = (props) => {
51109
51120
  // eslint-disable-line @typescript-eslint/no-unused-vars
51110
51121
  ...restChannelStateContext
51111
51122
  } = useChannelStateContext("MessageList");
51112
- return /* @__PURE__ */ import_react247.default.createElement(
51123
+ return /* @__PURE__ */ import_react248.default.createElement(
51113
51124
  MessageListWithContext,
51114
51125
  {
51115
51126
  jumpToLatestMessage,
@@ -51122,16 +51133,16 @@ var MessageList = (props) => {
51122
51133
  };
51123
51134
 
51124
51135
  // src/components/MessageList/ScrollToBottomButton.tsx
51125
- var import_react248 = __toESM(require("react"));
51136
+ var import_react249 = __toESM(require("react"));
51126
51137
  var import_clsx63 = __toESM(require("clsx"));
51127
51138
  var UnMemoizedScrollToBottomButton = (props) => {
51128
51139
  const { isMessageListScrolledToBottom, onClick, threadList } = props;
51129
51140
  const { channel: activeChannel, client } = useChatContext();
51130
51141
  const { thread } = useChannelStateContext();
51131
- const [countUnread, setCountUnread] = (0, import_react248.useState)(activeChannel?.countUnread() || 0);
51132
- const [replyCount, setReplyCount] = (0, import_react248.useState)(thread?.reply_count || 0);
51142
+ const [countUnread, setCountUnread] = (0, import_react249.useState)(activeChannel?.countUnread() || 0);
51143
+ const [replyCount, setReplyCount] = (0, import_react249.useState)(thread?.reply_count || 0);
51133
51144
  const observedEvent = threadList ? "message.updated" : "message.new";
51134
- (0, import_react248.useEffect)(() => {
51145
+ (0, import_react249.useEffect)(() => {
51135
51146
  const handleEvent = (event) => {
51136
51147
  const newMessageInAnotherChannel = event.cid !== activeChannel?.cid;
51137
51148
  const newMessageIsMine = event.user?.id === client.user?.id;
@@ -51153,14 +51164,14 @@ var UnMemoizedScrollToBottomButton = (props) => {
51153
51164
  client.off(observedEvent, handleEvent);
51154
51165
  };
51155
51166
  }, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
51156
- (0, import_react248.useEffect)(() => {
51167
+ (0, import_react249.useEffect)(() => {
51157
51168
  if (isMessageListScrolledToBottom) {
51158
51169
  setCountUnread(0);
51159
51170
  setReplyCount(thread?.reply_count || 0);
51160
51171
  }
51161
51172
  }, [isMessageListScrolledToBottom, thread]);
51162
51173
  if (isMessageListScrolledToBottom) return null;
51163
- return /* @__PURE__ */ import_react248.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react248.default.createElement(
51174
+ return /* @__PURE__ */ import_react249.default.createElement("div", { className: "str-chat__jump-to-latest-message" }, /* @__PURE__ */ import_react249.default.createElement(
51164
51175
  "button",
51165
51176
  {
51166
51177
  "aria-live": "polite",
@@ -51171,8 +51182,8 @@ var UnMemoizedScrollToBottomButton = (props) => {
51171
51182
  "data-testid": "message-notification",
51172
51183
  onClick
51173
51184
  },
51174
- /* @__PURE__ */ import_react248.default.createElement(ArrowDown, null),
51175
- countUnread > 0 && /* @__PURE__ */ import_react248.default.createElement(
51185
+ /* @__PURE__ */ import_react249.default.createElement(ArrowDown, null),
51186
+ countUnread > 0 && /* @__PURE__ */ import_react249.default.createElement(
51176
51187
  "div",
51177
51188
  {
51178
51189
  className: (0, import_clsx63.default)(
@@ -51185,23 +51196,23 @@ var UnMemoizedScrollToBottomButton = (props) => {
51185
51196
  )
51186
51197
  ));
51187
51198
  };
51188
- var ScrollToBottomButton = import_react248.default.memo(
51199
+ var ScrollToBottomButton = import_react249.default.memo(
51189
51200
  UnMemoizedScrollToBottomButton
51190
51201
  );
51191
51202
 
51192
51203
  // src/components/MessageList/VirtualizedMessageList.tsx
51193
- var import_react258 = __toESM(require("react"));
51204
+ var import_react259 = __toESM(require("react"));
51194
51205
  var import_react_virtuoso3 = require("react-virtuoso");
51195
51206
 
51196
51207
  // src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts
51197
- var import_react249 = require("react");
51208
+ var import_react250 = require("react");
51198
51209
  function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
51199
- const [newMessagesNotification, setNewMessagesNotification] = (0, import_react249.useState)(false);
51200
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react249.useState)(true);
51201
- const didMount = (0, import_react249.useRef)(false);
51202
- const lastMessageId = (0, import_react249.useRef)("");
51203
- const atBottom = (0, import_react249.useRef)(false);
51204
- (0, import_react249.useEffect)(() => {
51210
+ const [newMessagesNotification, setNewMessagesNotification] = (0, import_react250.useState)(false);
51211
+ const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react250.useState)(true);
51212
+ const didMount = (0, import_react250.useRef)(false);
51213
+ const lastMessageId = (0, import_react250.useRef)("");
51214
+ const atBottom = (0, import_react250.useRef)(false);
51215
+ (0, import_react250.useEffect)(() => {
51205
51216
  if (hasMoreNewer) {
51206
51217
  setNewMessagesNotification(true);
51207
51218
  return;
@@ -51227,17 +51238,17 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
51227
51238
  }
51228
51239
 
51229
51240
  // src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts
51230
- var import_react250 = require("react");
51241
+ var import_react251 = require("react");
51231
51242
  var STATUSES_EXCLUDED_FROM_PREPEND = {
51232
51243
  failed: true,
51233
51244
  sending: true
51234
51245
  };
51235
51246
  function usePrependedMessagesCount(messages, hasDateSeparator) {
51236
51247
  const firstRealMessageIndex = hasDateSeparator ? 1 : 0;
51237
- const firstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
51238
- const previousFirstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
51239
- const previousNumItemsPrepended = (0, import_react250.useRef)(0);
51240
- const numItemsPrepended = (0, import_react250.useMemo)(() => {
51248
+ const firstMessageOnFirstLoadedPage = (0, import_react251.useRef)(void 0);
51249
+ const previousFirstMessageOnFirstLoadedPage = (0, import_react251.useRef)(void 0);
51250
+ const previousNumItemsPrepended = (0, import_react251.useRef)(0);
51251
+ const numItemsPrepended = (0, import_react251.useMemo)(() => {
51241
51252
  if (!messages || !messages.length) {
51242
51253
  previousNumItemsPrepended.current = 0;
51243
51254
  return 0;
@@ -51267,10 +51278,10 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
51267
51278
  }
51268
51279
 
51269
51280
  // src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts
51270
- var import_react251 = require("react");
51281
+ var import_react252 = require("react");
51271
51282
  function useShouldForceScrollToBottom(messages, currentUserId) {
51272
- const lastFocusedOwnMessage = (0, import_react251.useRef)("");
51273
- const initialFocusRegistered = (0, import_react251.useRef)(false);
51283
+ const lastFocusedOwnMessage = (0, import_react252.useRef)("");
51284
+ const initialFocusRegistered = (0, import_react252.useRef)(false);
51274
51285
  function recheckForNewOwnMessage() {
51275
51286
  if (messages && messages.length > 0) {
51276
51287
  const lastMessage = messages[messages.length - 1];
@@ -51281,7 +51292,7 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
51281
51292
  }
51282
51293
  return false;
51283
51294
  }
51284
- (0, import_react251.useEffect)(() => {
51295
+ (0, import_react252.useEffect)(() => {
51285
51296
  if (messages && messages.length && !initialFocusRegistered.current) {
51286
51297
  initialFocusRegistered.current = true;
51287
51298
  recheckForNewOwnMessage();
@@ -51291,11 +51302,11 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
51291
51302
  }
51292
51303
 
51293
51304
  // src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts
51294
- var import_react252 = require("react");
51305
+ var import_react253 = require("react");
51295
51306
  var useGiphyPreview = (separateGiphyPreview) => {
51296
- const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react252.useState)();
51307
+ const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react253.useState)();
51297
51308
  const { client } = useChatContext("useGiphyPreview");
51298
- (0, import_react252.useEffect)(() => {
51309
+ (0, import_react253.useEffect)(() => {
51299
51310
  const handleEvent = (event) => {
51300
51311
  const { message, user } = event;
51301
51312
  if (message?.command === "giphy" && user?.id === client.userID) {
@@ -51312,13 +51323,13 @@ var useGiphyPreview = (separateGiphyPreview) => {
51312
51323
  };
51313
51324
 
51314
51325
  // src/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.ts
51315
- var import_react253 = require("react");
51326
+ var import_react254 = require("react");
51316
51327
  var useMessageSetKey = ({
51317
51328
  messages
51318
51329
  }) => {
51319
- const [messageSetKey, setMessageSetKey] = (0, import_react253.useState)(+/* @__PURE__ */ new Date());
51320
- const firstMessageId = (0, import_react253.useRef)(void 0);
51321
- (0, import_react253.useEffect)(() => {
51330
+ const [messageSetKey, setMessageSetKey] = (0, import_react254.useState)(+/* @__PURE__ */ new Date());
51331
+ const firstMessageId = (0, import_react254.useRef)(void 0);
51332
+ (0, import_react254.useEffect)(() => {
51322
51333
  const continuousSet = messages?.find(
51323
51334
  (message) => message.id === firstMessageId.current
51324
51335
  );
@@ -51333,24 +51344,24 @@ var useMessageSetKey = ({
51333
51344
  };
51334
51345
 
51335
51346
  // src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
51336
- var import_react254 = require("react");
51347
+ var import_react255 = require("react");
51337
51348
  var useScrollToBottomOnNewMessage = ({
51338
51349
  messages,
51339
51350
  scrollToBottom,
51340
51351
  scrollToLatestMessageOnFocus
51341
51352
  }) => {
51342
- const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react254.useState)(false);
51343
- const scrollToBottomIfConfigured = (0, import_react254.useRef)(void 0);
51353
+ const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react255.useState)(false);
51354
+ const scrollToBottomIfConfigured = (0, import_react255.useRef)(void 0);
51344
51355
  scrollToBottomIfConfigured.current = (event) => {
51345
51356
  if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
51346
51357
  return;
51347
51358
  }
51348
51359
  setTimeout(scrollToBottom, 100);
51349
51360
  };
51350
- (0, import_react254.useEffect)(() => {
51361
+ (0, import_react255.useEffect)(() => {
51351
51362
  setNewMessagesReceivedInBackground(true);
51352
51363
  }, [messages]);
51353
- (0, import_react254.useEffect)(() => {
51364
+ (0, import_react255.useEffect)(() => {
51354
51365
  const handleFocus = (event) => {
51355
51366
  scrollToBottomIfConfigured.current?.(event);
51356
51367
  };
@@ -51369,14 +51380,14 @@ var useScrollToBottomOnNewMessage = ({
51369
51380
  };
51370
51381
 
51371
51382
  // src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
51372
- var import_react255 = require("react");
51383
+ var import_react256 = require("react");
51373
51384
  var useUnreadMessagesNotificationVirtualized = ({
51374
51385
  lastRead,
51375
51386
  showAlways,
51376
51387
  unreadCount
51377
51388
  }) => {
51378
- const [show, setShow] = (0, import_react255.useState)(false);
51379
- const toggleShowUnreadMessagesNotification = (0, import_react255.useCallback)(
51389
+ const [show, setShow] = (0, import_react256.useState)(false);
51390
+ const toggleShowUnreadMessagesNotification = (0, import_react256.useCallback)(
51380
51391
  (renderedMessages) => {
51381
51392
  if (!unreadCount) return;
51382
51393
  const firstRenderedMessage = renderedMessages[0];
@@ -51390,7 +51401,7 @@ var useUnreadMessagesNotificationVirtualized = ({
51390
51401
  },
51391
51402
  [lastRead, showAlways, unreadCount]
51392
51403
  );
51393
- (0, import_react255.useEffect)(() => {
51404
+ (0, import_react256.useEffect)(() => {
51394
51405
  if (!unreadCount) setShow(false);
51395
51406
  }, [unreadCount]);
51396
51407
  return { show, toggleShowUnreadMessagesNotification };
@@ -51399,7 +51410,7 @@ var useUnreadMessagesNotificationVirtualized = ({
51399
51410
  // src/components/MessageList/VirtualizedMessageListComponents.tsx
51400
51411
  var import_clsx64 = __toESM(require("clsx"));
51401
51412
  var import_lodash21 = __toESM(require("lodash.throttle"));
51402
- var import_react256 = __toESM(require("react"));
51413
+ var import_react257 = __toESM(require("react"));
51403
51414
  var PREPEND_OFFSET = 10 ** 7;
51404
51415
  function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
51405
51416
  return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
@@ -51420,10 +51431,10 @@ var Item3 = ({
51420
51431
  context,
51421
51432
  ...props
51422
51433
  }) => {
51423
- if (!context) return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null);
51434
+ if (!context) return /* @__PURE__ */ import_react257.default.createElement(import_react257.default.Fragment, null);
51424
51435
  const message = context.processedMessages[calculateItemIndex(props["data-item-index"], context.numItemsPrepended)];
51425
51436
  const groupStyles = context.messageGroupStyles[message.id];
51426
- return /* @__PURE__ */ import_react256.default.createElement(
51437
+ return /* @__PURE__ */ import_react257.default.createElement(
51427
51438
  "div",
51428
51439
  {
51429
51440
  ...props,
@@ -51437,13 +51448,13 @@ var Header = ({
51437
51448
  context
51438
51449
  }) => {
51439
51450
  const { LoadingIndicator: LoadingIndicator2 = LoadingIndicator } = useComponentContext("VirtualizedMessageListHeader");
51440
- return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react256.default.createElement(LoadingIndicator2, { size: 20 })));
51451
+ return /* @__PURE__ */ import_react257.default.createElement(import_react257.default.Fragment, null, context?.head, context?.loadingMore && LoadingIndicator2 && /* @__PURE__ */ import_react257.default.createElement("div", { className: "str-chat__virtual-list__loading" }, /* @__PURE__ */ import_react257.default.createElement(LoadingIndicator2, { size: 20 })));
51441
51452
  };
51442
51453
  var EmptyPlaceholder = ({
51443
51454
  context
51444
51455
  }) => {
51445
51456
  const { EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator } = useComponentContext("VirtualizedMessageList");
51446
- return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react256.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
51457
+ return /* @__PURE__ */ import_react257.default.createElement(import_react257.default.Fragment, null, EmptyStateIndicator2 && /* @__PURE__ */ import_react257.default.createElement(EmptyStateIndicator2, { listType: context?.threadList ? "thread" : "message" }));
51447
51458
  };
51448
51459
  var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51449
51460
  const {
@@ -51479,12 +51490,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51479
51490
  return customMessageRenderer(messageList, streamMessageIndex);
51480
51491
  }
51481
51492
  const message = messageList[streamMessageIndex];
51482
- if (!message) return /* @__PURE__ */ import_react256.default.createElement("div", { style: { height: "1px" } });
51493
+ if (!message) return /* @__PURE__ */ import_react257.default.createElement("div", { style: { height: "1px" } });
51483
51494
  if (isDateSeparatorMessage(message)) {
51484
- return DateSeparator2 ? /* @__PURE__ */ import_react256.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
51495
+ return DateSeparator2 ? /* @__PURE__ */ import_react257.default.createElement(DateSeparator2, { date: message.date, unread: message.unread }) : null;
51485
51496
  }
51486
51497
  if (message.type === "system") {
51487
- return MessageSystem ? /* @__PURE__ */ import_react256.default.createElement(MessageSystem, { message }) : null;
51498
+ return MessageSystem ? /* @__PURE__ */ import_react257.default.createElement(MessageSystem, { message }) : null;
51488
51499
  }
51489
51500
  const groupedByUser = shouldGroupByUser && streamMessageIndex > 0 && message.user?.id === messageList[streamMessageIndex - 1].user?.id;
51490
51501
  const maybePrevMessage = messageList[streamMessageIndex - 1];
@@ -51500,7 +51511,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51500
51511
  previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
51501
51512
  unreadMessageCount
51502
51513
  });
51503
- return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react256.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react256.default.createElement(
51514
+ return /* @__PURE__ */ import_react257.default.createElement(import_react257.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react257.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react257.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react257.default.createElement(
51504
51515
  Message,
51505
51516
  {
51506
51517
  additionalMessageInputProps,
@@ -51527,12 +51538,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51527
51538
  };
51528
51539
 
51529
51540
  // src/context/VirtualizedMessageListContext.tsx
51530
- var import_react257 = __toESM(require("react"));
51531
- var VirtualizedMessageListContext = (0, import_react257.createContext)(void 0);
51541
+ var import_react258 = __toESM(require("react"));
51542
+ var VirtualizedMessageListContext = (0, import_react258.createContext)(void 0);
51532
51543
  var VirtualizedMessageListContextProvider = ({
51533
51544
  children,
51534
51545
  value
51535
- }) => /* @__PURE__ */ import_react257.default.createElement(
51546
+ }) => /* @__PURE__ */ import_react258.default.createElement(
51536
51547
  VirtualizedMessageListContext.Provider,
51537
51548
  {
51538
51549
  value
@@ -51547,7 +51558,7 @@ function captureResizeObserverExceededError(e2) {
51547
51558
  }
51548
51559
  }
51549
51560
  function useCaptureResizeObserverExceededError() {
51550
- (0, import_react258.useEffect)(() => {
51561
+ (0, import_react259.useEffect)(() => {
51551
51562
  window.addEventListener("error", captureResizeObserverExceededError);
51552
51563
  return () => {
51553
51564
  window.removeEventListener("error", captureResizeObserverExceededError);
@@ -51633,15 +51644,15 @@ var VirtualizedMessageListWithContext = (props) => {
51633
51644
  const { client, customClasses } = useChatContext(
51634
51645
  "VirtualizedMessageList"
51635
51646
  );
51636
- const virtuoso = (0, import_react258.useRef)(null);
51637
- const lastRead = (0, import_react258.useMemo)(() => channel.lastRead?.(), [channel]);
51647
+ const virtuoso = (0, import_react259.useRef)(null);
51648
+ const lastRead = (0, import_react259.useMemo)(() => channel.lastRead?.(), [channel]);
51638
51649
  const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } = useUnreadMessagesNotificationVirtualized({
51639
51650
  lastRead: channelUnreadUiState?.last_read,
51640
51651
  showAlways: !!showUnreadNotificationAlways,
51641
51652
  unreadCount: channelUnreadUiState?.unread_messages ?? 0
51642
51653
  });
51643
51654
  const { giphyPreviewMessage, setGiphyPreviewMessage } = useGiphyPreview(separateGiphyPreview);
51644
- const processedMessages = (0, import_react258.useMemo)(() => {
51655
+ const processedMessages = (0, import_react259.useMemo)(() => {
51645
51656
  if (typeof messages === "undefined") {
51646
51657
  return [];
51647
51658
  }
@@ -51673,12 +51684,12 @@ var VirtualizedMessageListWithContext = (props) => {
51673
51684
  returnAllReadData,
51674
51685
  userID: client.userID
51675
51686
  });
51676
- const lastReceivedMessageId = (0, import_react258.useMemo)(
51687
+ const lastReceivedMessageId = (0, import_react259.useMemo)(
51677
51688
  () => getLastReceived(processedMessages),
51678
51689
  [processedMessages]
51679
51690
  );
51680
51691
  const groupStylesFn = groupStyles || getGroupStyles;
51681
- const messageGroupStyles = (0, import_react258.useMemo)(
51692
+ const messageGroupStyles = (0, import_react259.useMemo)(
51682
51693
  () => processedMessages.reduce((acc, message, i) => {
51683
51694
  const style = groupStylesFn(
51684
51695
  message,
@@ -51711,7 +51722,7 @@ var VirtualizedMessageListWithContext = (props) => {
51711
51722
  messageListIsThread: !!threadList,
51712
51723
  wasMarkedUnread: !!channelUnreadUiState?.first_unread_message_id
51713
51724
  });
51714
- const scrollToBottom = (0, import_react258.useCallback)(async () => {
51725
+ const scrollToBottom = (0, import_react259.useCallback)(async () => {
51715
51726
  if (hasMoreNewer) {
51716
51727
  await jumpToLatestMessage();
51717
51728
  return;
@@ -51743,7 +51754,7 @@ var VirtualizedMessageListWithContext = (props) => {
51743
51754
  processedMessages,
51744
51755
  client.userID
51745
51756
  );
51746
- const handleItemsRendered = (0, import_react258.useMemo)(
51757
+ const handleItemsRendered = (0, import_react259.useMemo)(
51747
51758
  () => makeItemsRenderedHandler([toggleShowUnreadMessagesNotification], processedMessages),
51748
51759
  [processedMessages, toggleShowUnreadMessagesNotification]
51749
51760
  );
@@ -51756,7 +51767,7 @@ var VirtualizedMessageListWithContext = (props) => {
51756
51767
  }
51757
51768
  return isAtBottom ? stickToBottomScrollBehavior : false;
51758
51769
  };
51759
- const computeItemKey2 = (0, import_react258.useCallback)(
51770
+ const computeItemKey2 = (0, import_react259.useCallback)(
51760
51771
  (index3, _, { numItemsPrepended: numItemsPrepended2, processedMessages: processedMessages2 }) => processedMessages2[calculateItemIndex(index3, numItemsPrepended2)].id,
51761
51772
  []
51762
51773
  );
@@ -51773,7 +51784,7 @@ var VirtualizedMessageListWithContext = (props) => {
51773
51784
  loadMore?.(messageLimit);
51774
51785
  }
51775
51786
  };
51776
- (0, import_react258.useEffect)(() => {
51787
+ (0, import_react259.useEffect)(() => {
51777
51788
  let scrollTimeout;
51778
51789
  if (highlightedMessageId) {
51779
51790
  const index3 = findMessageIndex(processedMessages, highlightedMessageId);
@@ -51787,19 +51798,20 @@ var VirtualizedMessageListWithContext = (props) => {
51787
51798
  clearTimeout(scrollTimeout);
51788
51799
  };
51789
51800
  }, [highlightedMessageId, processedMessages]);
51801
+ const id = useStableId();
51790
51802
  if (!processedMessages) return null;
51791
- const dialogManagerId = threadList ? "virtualized-message-list-dialog-manager-thread" : "virtualized-message-list-dialog-manager";
51792
- return /* @__PURE__ */ import_react258.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react258.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react258.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react258.default.createElement(
51803
+ const dialogManagerId = threadList ? `virtualized-message-list-dialog-manager-thread-${id}` : `virtualized-message-list-dialog-manager-${id}`;
51804
+ return /* @__PURE__ */ import_react259.default.createElement(VirtualizedMessageListContextProvider, { value: { scrollToBottom } }, /* @__PURE__ */ import_react259.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react259.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react259.default.createElement(
51793
51805
  UnreadMessagesNotification2,
51794
51806
  {
51795
51807
  unreadCount: channelUnreadUiState?.unread_messages
51796
51808
  }
51797
- ), /* @__PURE__ */ import_react258.default.createElement(
51809
+ ), /* @__PURE__ */ import_react259.default.createElement(
51798
51810
  "div",
51799
51811
  {
51800
51812
  className: customClasses?.virtualizedMessageList || "str-chat__virtual-list"
51801
51813
  },
51802
- /* @__PURE__ */ import_react258.default.createElement(
51814
+ /* @__PURE__ */ import_react259.default.createElement(
51803
51815
  import_react_virtuoso3.Virtuoso,
51804
51816
  {
51805
51817
  atBottomStateChange,
@@ -51865,7 +51877,7 @@ var VirtualizedMessageListWithContext = (props) => {
51865
51877
  ...defaultItemHeight ? { defaultItemHeight } : {}
51866
51878
  }
51867
51879
  )
51868
- )), TypingIndicator2 && /* @__PURE__ */ import_react258.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react258.default.createElement(
51880
+ )), TypingIndicator2 && /* @__PURE__ */ import_react259.default.createElement(TypingIndicator2, null)), /* @__PURE__ */ import_react259.default.createElement(
51869
51881
  MessageListNotifications2,
51870
51882
  {
51871
51883
  hasNewMessages: newMessagesNotification,
@@ -51877,7 +51889,7 @@ var VirtualizedMessageListWithContext = (props) => {
51877
51889
  threadList,
51878
51890
  unreadCount: threadList ? void 0 : channelUnreadUiState?.unread_messages
51879
51891
  }
51880
- ), giphyPreviewMessage && /* @__PURE__ */ import_react258.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
51892
+ ), giphyPreviewMessage && /* @__PURE__ */ import_react259.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
51881
51893
  };
51882
51894
  function VirtualizedMessageList(props) {
51883
51895
  const { jumpToLatestMessage, loadMore, loadMoreNewer } = useChannelActionContext("VirtualizedMessageList");
@@ -51895,7 +51907,7 @@ function VirtualizedMessageList(props) {
51895
51907
  suppressAutoscroll
51896
51908
  } = useChannelStateContext("VirtualizedMessageList");
51897
51909
  const messages = props.messages || contextMessages;
51898
- return /* @__PURE__ */ import_react258.default.createElement(
51910
+ return /* @__PURE__ */ import_react259.default.createElement(
51899
51911
  VirtualizedMessageListWithContext,
51900
51912
  {
51901
51913
  channel,
@@ -51936,12 +51948,12 @@ var useChannelContainerClasses = ({
51936
51948
  };
51937
51949
 
51938
51950
  // src/components/Channel/utils.ts
51939
- var import_nanoid10 = require("nanoid");
51951
+ var import_nanoid11 = require("nanoid");
51940
51952
  var makeAddNotifications = (setNotifications, notificationTimeouts) => (text8, type) => {
51941
51953
  if (typeof text8 !== "string" || type !== "success" && type !== "error") {
51942
51954
  return;
51943
51955
  }
51944
- const id = (0, import_nanoid10.nanoid)();
51956
+ const id = (0, import_nanoid11.nanoid)();
51945
51957
  setNotifications((prevNotifications) => [...prevNotifications, { id, text: text8, type }]);
51946
51958
  const timeout = setTimeout(
51947
51959
  () => setNotifications(
@@ -52101,7 +52113,7 @@ var ChannelContainer = ({
52101
52113
  customClasses
52102
52114
  });
52103
52115
  const className = (0, import_clsx65.default)(chatClass, theme, channelClass, additionalClassName);
52104
- return /* @__PURE__ */ import_react259.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
52116
+ return /* @__PURE__ */ import_react260.default.createElement("div", { id: CHANNEL_CONTAINER_ID, ...props, className }, children);
52105
52117
  };
52106
52118
  var UnMemoizedChannel = (props) => {
52107
52119
  const {
@@ -52113,15 +52125,15 @@ var UnMemoizedChannel = (props) => {
52113
52125
  const { channel: contextChannel, channelsQueryState } = useChatContext("Channel");
52114
52126
  const channel = propsChannel || contextChannel;
52115
52127
  if (channelsQueryState.queryInProgress === "reload" && LoadingIndicator2) {
52116
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingIndicator2, null));
52128
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react260.default.createElement(LoadingIndicator2, null));
52117
52129
  }
52118
52130
  if (channelsQueryState.error && LoadingErrorIndicator2) {
52119
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
52131
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react260.default.createElement(LoadingErrorIndicator2, { error: channelsQueryState.error }));
52120
52132
  }
52121
52133
  if (!channel?.cid) {
52122
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
52134
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
52123
52135
  }
52124
- return /* @__PURE__ */ import_react259.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
52136
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelInner, { ...props, channel, key: channel.cid });
52125
52137
  };
52126
52138
  var ChannelInner = (props) => {
52127
52139
  const {
@@ -52147,7 +52159,7 @@ var ChannelInner = (props) => {
52147
52159
  optionalMessageInputProps = {},
52148
52160
  skipMessageDataMemoization
52149
52161
  } = props;
52150
- const channelQueryOptions = (0, import_react259.useMemo)(
52162
+ const channelQueryOptions = (0, import_react260.useMemo)(
52151
52163
  () => (0, import_lodash23.default)(propChannelQueryOptions, {
52152
52164
  messages: { limit: DEFAULT_INITIAL_CHANNEL_PAGE_SIZE }
52153
52165
  }),
@@ -52158,13 +52170,13 @@ var ChannelInner = (props) => {
52158
52170
  const chatContainerClass = getChatContainerClass(customClasses?.chatContainer);
52159
52171
  const windowsEmojiClass = useImageFlagEmojisOnWindowsClass();
52160
52172
  const thread = useThreadContext();
52161
- const [channelConfig, setChannelConfig] = (0, import_react259.useState)(channel.getConfig());
52162
- const [notifications, setNotifications] = (0, import_react259.useState)([]);
52163
- const [quotedMessage, setQuotedMessage] = (0, import_react259.useState)();
52164
- const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react259.useState)();
52165
- const notificationTimeouts = (0, import_react259.useRef)([]);
52166
- const channelReducer = (0, import_react259.useMemo)(() => makeChannelReducer(), []);
52167
- const [state, dispatch] = (0, import_react259.useReducer)(
52173
+ const [channelConfig, setChannelConfig] = (0, import_react260.useState)(channel.getConfig());
52174
+ const [notifications, setNotifications] = (0, import_react260.useState)([]);
52175
+ const [quotedMessage, setQuotedMessage] = (0, import_react260.useState)();
52176
+ const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react260.useState)();
52177
+ const notificationTimeouts = (0, import_react260.useRef)([]);
52178
+ const channelReducer = (0, import_react260.useMemo)(() => makeChannelReducer(), []);
52179
+ const [state, dispatch] = (0, import_react260.useReducer)(
52168
52180
  channelReducer,
52169
52181
  // channel.initialized === false if client.channel().query() was not called, e.g. ChannelList is not used
52170
52182
  // => Channel will call channel.watch() in useLayoutEffect => state.loading is used to signal the watch() call state
@@ -52176,10 +52188,10 @@ var ChannelInner = (props) => {
52176
52188
  );
52177
52189
  const jumpToMessageFromSearch = useSearchFocusedMessage();
52178
52190
  const isMounted = useIsMounted();
52179
- const originalTitle = (0, import_react259.useRef)("");
52180
- const lastRead = (0, import_react259.useRef)(void 0);
52181
- const online = (0, import_react259.useRef)(true);
52182
- const clearHighlightedMessageTimeoutId = (0, import_react259.useRef)(
52191
+ const originalTitle = (0, import_react260.useRef)("");
52192
+ const lastRead = (0, import_react260.useRef)(void 0);
52193
+ const online = (0, import_react260.useRef)(true);
52194
+ const clearHighlightedMessageTimeoutId = (0, import_react260.useRef)(
52183
52195
  null
52184
52196
  );
52185
52197
  const channelCapabilitiesArray = channel.data?.own_capabilities;
@@ -52191,14 +52203,14 @@ var ChannelInner = (props) => {
52191
52203
  trailing: true
52192
52204
  }
52193
52205
  );
52194
- const setChannelUnreadUiState = (0, import_react259.useMemo)(
52206
+ const setChannelUnreadUiState = (0, import_react260.useMemo)(
52195
52207
  () => (0, import_lodash24.default)(_setChannelUnreadUiState, 200, {
52196
52208
  leading: true,
52197
52209
  trailing: false
52198
52210
  }),
52199
52211
  []
52200
52212
  );
52201
- const markRead = (0, import_react259.useMemo)(
52213
+ const markRead = (0, import_react260.useMemo)(
52202
52214
  () => (0, import_lodash24.default)(
52203
52215
  async (options) => {
52204
52216
  const { updateChannelUiUnreadState = true } = options ?? {};
@@ -52301,7 +52313,7 @@ var ChannelInner = (props) => {
52301
52313
  }
52302
52314
  throttledCopyStateFromChannel();
52303
52315
  };
52304
- (0, import_react259.useLayoutEffect)(() => {
52316
+ (0, import_react260.useLayoutEffect)(() => {
52305
52317
  let errored = false;
52306
52318
  let done = false;
52307
52319
  (async () => {
@@ -52367,12 +52379,12 @@ var ChannelInner = (props) => {
52367
52379
  channelConfig?.read_events,
52368
52380
  initializeOnMount
52369
52381
  ]);
52370
- (0, import_react259.useEffect)(() => {
52382
+ (0, import_react260.useEffect)(() => {
52371
52383
  if (!state.thread) return;
52372
52384
  const message = state.messages?.find((m) => m.id === state.thread?.id);
52373
52385
  if (message) dispatch({ message, type: "setThread" });
52374
52386
  }, [state.messages, state.thread]);
52375
- const handleHighlightedMessageChange = (0, import_react259.useCallback)(
52387
+ const handleHighlightedMessageChange = (0, import_react260.useCallback)(
52376
52388
  ({
52377
52389
  highlightDuration,
52378
52390
  highlightedMessageId
@@ -52395,15 +52407,15 @@ var ChannelInner = (props) => {
52395
52407
  },
52396
52408
  [channel, searchController]
52397
52409
  );
52398
- (0, import_react259.useEffect)(() => {
52410
+ (0, import_react260.useEffect)(() => {
52399
52411
  if (!jumpToMessageFromSearch?.id) return;
52400
52412
  handleHighlightedMessageChange({ highlightedMessageId: jumpToMessageFromSearch.id });
52401
52413
  }, [jumpToMessageFromSearch, handleHighlightedMessageChange]);
52402
- const addNotification = (0, import_react259.useMemo)(
52414
+ const addNotification = (0, import_react260.useMemo)(
52403
52415
  () => makeAddNotifications(setNotifications, notificationTimeouts.current),
52404
52416
  []
52405
52417
  );
52406
- const loadMoreFinished = (0, import_react259.useCallback)(
52418
+ const loadMoreFinished = (0, import_react260.useCallback)(
52407
52419
  (0, import_lodash22.default)(
52408
52420
  (hasMore, messages) => {
52409
52421
  if (!isMounted.current) return;
@@ -52464,7 +52476,7 @@ var ChannelInner = (props) => {
52464
52476
  });
52465
52477
  return queryResponse.messages.length;
52466
52478
  };
52467
- const jumpToMessage = (0, import_react259.useCallback)(
52479
+ const jumpToMessage = (0, import_react260.useCallback)(
52468
52480
  async (messageId, messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
52469
52481
  dispatch({ loadingMore: true, type: "setLoadingMore" });
52470
52482
  await channel.state.loadMessageIntoState(messageId, void 0, messageLimit);
@@ -52476,14 +52488,14 @@ var ChannelInner = (props) => {
52476
52488
  },
52477
52489
  [channel, handleHighlightedMessageChange, loadMoreFinished]
52478
52490
  );
52479
- const jumpToLatestMessage = (0, import_react259.useCallback)(async () => {
52491
+ const jumpToLatestMessage = (0, import_react260.useCallback)(async () => {
52480
52492
  await channel.state.loadMessageIntoState("latest");
52481
52493
  loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
52482
52494
  dispatch({
52483
52495
  type: "jumpToLatestMessage"
52484
52496
  });
52485
52497
  }, [channel, loadMoreFinished]);
52486
- const jumpToFirstUnreadMessage = (0, import_react259.useCallback)(
52498
+ const jumpToFirstUnreadMessage = (0, import_react260.useCallback)(
52487
52499
  async (queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
52488
52500
  if (!channelUnreadUiState?.unread_messages) return;
52489
52501
  let lastReadMessageId = channelUnreadUiState?.last_read_message_id;
@@ -52606,7 +52618,7 @@ var ChannelInner = (props) => {
52606
52618
  channelUnreadUiState
52607
52619
  ]
52608
52620
  );
52609
- const deleteMessage = (0, import_react259.useCallback)(
52621
+ const deleteMessage = (0, import_react260.useCallback)(
52610
52622
  async (message) => {
52611
52623
  if (!message?.id) {
52612
52624
  throw new Error("Cannot delete a message - missing message ID.");
@@ -52711,7 +52723,7 @@ var ChannelInner = (props) => {
52711
52723
  attachments,
52712
52724
  created_at: /* @__PURE__ */ new Date(),
52713
52725
  html: text8,
52714
- id: customMessageData?.id ?? `${client.userID}-${(0, import_nanoid11.nanoid)()}`,
52726
+ id: customMessageData?.id ?? `${client.userID}-${(0, import_nanoid12.nanoid)()}`,
52715
52727
  mentioned_users,
52716
52728
  parent_id: parent?.id,
52717
52729
  reactions: [],
@@ -52763,7 +52775,7 @@ var ChannelInner = (props) => {
52763
52775
  event?.preventDefault();
52764
52776
  dispatch({ type: "closeThread" });
52765
52777
  };
52766
- const loadMoreThreadFinished = (0, import_react259.useCallback)(
52778
+ const loadMoreThreadFinished = (0, import_react260.useCallback)(
52767
52779
  (0, import_lodash22.default)(
52768
52780
  (threadHasMore, threadMessages) => {
52769
52781
  dispatch({
@@ -52827,7 +52839,7 @@ var ChannelInner = (props) => {
52827
52839
  videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration,
52828
52840
  watcher_count: state.watcherCount
52829
52841
  });
52830
- const channelActionContextValue = (0, import_react259.useMemo)(
52842
+ const channelActionContextValue = (0, import_react260.useMemo)(
52831
52843
  () => ({
52832
52844
  addNotification,
52833
52845
  closeThread,
@@ -52868,7 +52880,7 @@ var ChannelInner = (props) => {
52868
52880
  setChannelUnreadUiState
52869
52881
  ]
52870
52882
  );
52871
- const componentContextValue = (0, import_react259.useMemo)(
52883
+ const componentContextValue = (0, import_react260.useMemo)(
52872
52884
  () => ({
52873
52885
  Attachment: props.Attachment,
52874
52886
  AttachmentPreviewList: props.AttachmentPreviewList,
@@ -53000,26 +53012,26 @@ var ChannelInner = (props) => {
53000
53012
  typing
53001
53013
  });
53002
53014
  if (state.error) {
53003
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingErrorIndicator2, { error: state.error }));
53015
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react260.default.createElement(LoadingErrorIndicator2, { error: state.error }));
53004
53016
  }
53005
53017
  if (state.loading) {
53006
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement(LoadingIndicator2, null));
53018
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react260.default.createElement(LoadingIndicator2, null));
53007
53019
  }
53008
53020
  if (!channel.watch) {
53009
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react259.default.createElement("div", null, t2("Channel Missing")));
53021
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react260.default.createElement("div", null, t2("Channel Missing")));
53010
53022
  }
53011
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react259.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react259.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react259.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react259.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react259.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react259.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react259.default.createElement(import_react259.default.Fragment, null, children)))))));
53023
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, { className: windowsEmojiClass }, /* @__PURE__ */ import_react260.default.createElement(ChannelStateProvider, { value: channelStateContextValue }, /* @__PURE__ */ import_react260.default.createElement(ChannelActionProvider, { value: channelActionContextValue }, /* @__PURE__ */ import_react260.default.createElement(WithComponents, { overrides: componentContextValue }, /* @__PURE__ */ import_react260.default.createElement(TypingProvider, { value: typingContextValue }, /* @__PURE__ */ import_react260.default.createElement("div", { className: `${chatContainerClass}` }, dragAndDropWindow && /* @__PURE__ */ import_react260.default.createElement(DropzoneProvider, { ...optionalMessageInputProps }, children), !dragAndDropWindow && /* @__PURE__ */ import_react260.default.createElement(import_react260.default.Fragment, null, children)))))));
53012
53024
  };
53013
- var Channel = import_react259.default.memo(UnMemoizedChannel);
53025
+ var Channel = import_react260.default.memo(UnMemoizedChannel);
53014
53026
 
53015
53027
  // src/components/ChannelHeader/ChannelHeader.tsx
53016
- var import_react261 = __toESM(require("react"));
53028
+ var import_react262 = __toESM(require("react"));
53017
53029
 
53018
53030
  // src/components/ChannelHeader/icons.tsx
53019
- var import_react260 = __toESM(require("react"));
53031
+ var import_react261 = __toESM(require("react"));
53020
53032
  var MenuIcon2 = ({ title }) => {
53021
53033
  const { t: t2 } = useTranslationContext("MenuIcon");
53022
- return /* @__PURE__ */ import_react260.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react260.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react260.default.createElement(
53034
+ return /* @__PURE__ */ import_react261.default.createElement("svg", { "data-testid": "menu-icon", viewBox: "0 0 448 512", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react261.default.createElement("title", null, title ?? t2("Menu")), /* @__PURE__ */ import_react261.default.createElement(
53023
53035
  "path",
53024
53036
  {
53025
53037
  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",
@@ -53046,15 +53058,15 @@ var ChannelHeader = (props) => {
53046
53058
  overrideTitle
53047
53059
  });
53048
53060
  const { member_count, subtitle } = channel?.data || {};
53049
- return /* @__PURE__ */ import_react261.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react261.default.createElement(
53061
+ return /* @__PURE__ */ import_react262.default.createElement("div", { className: "str-chat__channel-header" }, /* @__PURE__ */ import_react262.default.createElement(
53050
53062
  "button",
53051
53063
  {
53052
53064
  "aria-label": t2("aria/Menu"),
53053
53065
  className: "str-chat__header-hamburger",
53054
53066
  onClick: openMobileNav
53055
53067
  },
53056
- /* @__PURE__ */ import_react261.default.createElement(MenuIcon3, null)
53057
- ), /* @__PURE__ */ import_react261.default.createElement(
53068
+ /* @__PURE__ */ import_react262.default.createElement(MenuIcon3, null)
53069
+ ), /* @__PURE__ */ import_react262.default.createElement(
53058
53070
  Avatar2,
53059
53071
  {
53060
53072
  className: "str-chat__avatar--channel-header",
@@ -53062,36 +53074,36 @@ var ChannelHeader = (props) => {
53062
53074
  image: displayImage,
53063
53075
  name: displayTitle
53064
53076
  }
53065
- ), /* @__PURE__ */ import_react261.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react261.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react261.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react261.default.createElement(import_react261.default.Fragment, null, t2("{{ memberCount }} members", {
53077
+ ), /* @__PURE__ */ import_react262.default.createElement("div", { className: "str-chat__channel-header-end" }, /* @__PURE__ */ import_react262.default.createElement("p", { className: "str-chat__channel-header-title" }, displayTitle, " ", live && /* @__PURE__ */ import_react262.default.createElement("span", { className: "str-chat__header-livestream-livelabel" }, t2("live"))), subtitle && /* @__PURE__ */ import_react262.default.createElement("p", { className: "str-chat__channel-header-subtitle" }, subtitle), /* @__PURE__ */ import_react262.default.createElement("p", { className: "str-chat__channel-header-info" }, !live && !!member_count && member_count > 0 && /* @__PURE__ */ import_react262.default.createElement(import_react262.default.Fragment, null, t2("{{ memberCount }} members", {
53066
53078
  memberCount: member_count
53067
53079
  }), ",", " "), t2("{{ watcherCount }} online", { watcherCount: watcher_count }))));
53068
53080
  };
53069
53081
 
53070
53082
  // src/components/Chat/Chat.tsx
53071
- var import_react265 = __toESM(require("react"));
53083
+ var import_react266 = __toESM(require("react"));
53072
53084
  var import_stream_chat6 = require("stream-chat");
53073
53085
 
53074
53086
  // src/components/Chat/hooks/useChat.ts
53075
- var import_react262 = require("react");
53087
+ var import_react263 = require("react");
53076
53088
  var useChat = ({
53077
53089
  client,
53078
53090
  defaultLanguage = "en",
53079
53091
  i18nInstance,
53080
53092
  initialNavOpen
53081
53093
  }) => {
53082
- const [translators, setTranslators] = (0, import_react262.useState)({
53094
+ const [translators, setTranslators] = (0, import_react263.useState)({
53083
53095
  t: (key) => key,
53084
53096
  tDateTimeParser: defaultDateTimeParser,
53085
53097
  userLanguage: "en"
53086
53098
  });
53087
- const [channel, setChannel] = (0, import_react262.useState)();
53088
- const [mutes, setMutes] = (0, import_react262.useState)([]);
53089
- const [navOpen, setNavOpen] = (0, import_react262.useState)(initialNavOpen);
53090
- const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react262.useState)({});
53099
+ const [channel, setChannel] = (0, import_react263.useState)();
53100
+ const [mutes, setMutes] = (0, import_react263.useState)([]);
53101
+ const [navOpen, setNavOpen] = (0, import_react263.useState)(initialNavOpen);
53102
+ const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0, import_react263.useState)({});
53091
53103
  const clientMutes = client.user?.mutes || [];
53092
53104
  const closeMobileNav = () => setNavOpen(false);
53093
53105
  const openMobileNav = () => setTimeout(() => setNavOpen(true), 100);
53094
- const appSettings = (0, import_react262.useRef)(
53106
+ const appSettings = (0, import_react263.useRef)(
53095
53107
  null
53096
53108
  );
53097
53109
  const getAppSettings = () => {
@@ -53101,9 +53113,9 @@ var useChat = ({
53101
53113
  appSettings.current = client.getAppSettings();
53102
53114
  return appSettings.current;
53103
53115
  };
53104
- (0, import_react262.useEffect)(() => {
53116
+ (0, import_react263.useEffect)(() => {
53105
53117
  if (!client) return;
53106
- const version = "12.15.0";
53118
+ const version = "12.15.2";
53107
53119
  const userAgent = client.getUserAgent();
53108
53120
  if (!userAgent.includes("stream-chat-react")) {
53109
53121
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -53115,7 +53127,7 @@ var useChat = ({
53115
53127
  client.polls.unregisterSubscriptions();
53116
53128
  };
53117
53129
  }, [client]);
53118
- (0, import_react262.useEffect)(() => {
53130
+ (0, import_react263.useEffect)(() => {
53119
53131
  setMutes(clientMutes);
53120
53132
  const handleEvent = (event) => {
53121
53133
  setMutes(event.me?.mutes || []);
@@ -53123,7 +53135,7 @@ var useChat = ({
53123
53135
  client.on("notification.mutes_updated", handleEvent);
53124
53136
  return () => client.off("notification.mutes_updated", handleEvent);
53125
53137
  }, [clientMutes?.length]);
53126
- (0, import_react262.useEffect)(() => {
53138
+ (0, import_react263.useEffect)(() => {
53127
53139
  let userLanguage = client.user?.language;
53128
53140
  if (!userLanguage) {
53129
53141
  const browserLanguage = window.navigator.language.slice(0, 2);
@@ -53140,7 +53152,7 @@ var useChat = ({
53140
53152
  });
53141
53153
  });
53142
53154
  }, [i18nInstance]);
53143
- const setActiveChannel = (0, import_react262.useCallback)(
53155
+ const setActiveChannel = (0, import_react263.useCallback)(
53144
53156
  async (activeChannel, watchers = {}, event) => {
53145
53157
  if (event && event.preventDefault) event.preventDefault();
53146
53158
  if (activeChannel && Object.keys(watchers).length) {
@@ -53151,7 +53163,7 @@ var useChat = ({
53151
53163
  },
53152
53164
  []
53153
53165
  );
53154
- (0, import_react262.useEffect)(() => {
53166
+ (0, import_react263.useEffect)(() => {
53155
53167
  setLatestMessageDatesByChannels({});
53156
53168
  }, [client.user?.id]);
53157
53169
  return {
@@ -53168,7 +53180,7 @@ var useChat = ({
53168
53180
  };
53169
53181
 
53170
53182
  // src/components/Chat/hooks/useCreateChatContext.ts
53171
- var import_react263 = require("react");
53183
+ var import_react264 = require("react");
53172
53184
  var useCreateChatContext = (value) => {
53173
53185
  const {
53174
53186
  channel,
@@ -53193,7 +53205,7 @@ var useCreateChatContext = (value) => {
53193
53205
  const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${Object.keys(client.listeners).length}${client.mutedChannels.length}
53194
53206
  ${client.user?.id}`;
53195
53207
  const mutedUsersLength = mutes.length;
53196
- const chatContext = (0, import_react263.useMemo)(
53208
+ const chatContext = (0, import_react264.useMemo)(
53197
53209
  () => ({
53198
53210
  channel,
53199
53211
  channelsQueryState,
@@ -53228,10 +53240,10 @@ var useCreateChatContext = (value) => {
53228
53240
  };
53229
53241
 
53230
53242
  // src/components/Chat/hooks/useChannelsQueryState.ts
53231
- var import_react264 = require("react");
53243
+ var import_react265 = require("react");
53232
53244
  var useChannelsQueryState = () => {
53233
- const [error, setError] = (0, import_react264.useState)(null);
53234
- const [queryInProgress, setQueryInProgress] = (0, import_react264.useState)("uninitialized");
53245
+ const [error, setError] = (0, import_react265.useState)(null);
53246
+ const [queryInProgress, setQueryInProgress] = (0, import_react265.useState)("uninitialized");
53235
53247
  return {
53236
53248
  error,
53237
53249
  queryInProgress,
@@ -53266,7 +53278,7 @@ var Chat = (props) => {
53266
53278
  translators
53267
53279
  } = useChat({ client, defaultLanguage, i18nInstance, initialNavOpen });
53268
53280
  const channelsQueryState = useChannelsQueryState();
53269
- const searchController = (0, import_react265.useMemo)(
53281
+ const searchController = (0, import_react266.useMemo)(
53270
53282
  () => customChannelSearchController ?? new import_stream_chat6.SearchController({
53271
53283
  sources: [
53272
53284
  new import_stream_chat6.ChannelSearchSource(client),
@@ -53294,11 +53306,11 @@ var Chat = (props) => {
53294
53306
  useImageFlagEmojisOnWindows
53295
53307
  });
53296
53308
  if (!translators.t) return null;
53297
- return /* @__PURE__ */ import_react265.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react265.default.createElement(TranslationProvider, { value: translators }, children));
53309
+ return /* @__PURE__ */ import_react266.default.createElement(ChatProvider, { value: chatContextValue }, /* @__PURE__ */ import_react266.default.createElement(TranslationProvider, { value: translators }, children));
53298
53310
  };
53299
53311
 
53300
53312
  // src/components/Chat/hooks/useCreateChatClient.ts
53301
- var import_react266 = require("react");
53313
+ var import_react267 = require("react");
53302
53314
  var import_stream_chat7 = require("stream-chat");
53303
53315
  var useCreateChatClient = ({
53304
53316
  apiKey,
@@ -53306,13 +53318,13 @@ var useCreateChatClient = ({
53306
53318
  tokenOrProvider,
53307
53319
  userData
53308
53320
  }) => {
53309
- const [chatClient, setChatClient] = (0, import_react266.useState)(null);
53310
- const [cachedUserData, setCachedUserData] = (0, import_react266.useState)(userData);
53321
+ const [chatClient, setChatClient] = (0, import_react267.useState)(null);
53322
+ const [cachedUserData, setCachedUserData] = (0, import_react267.useState)(userData);
53311
53323
  if (userData.id !== cachedUserData.id) {
53312
53324
  setCachedUserData(userData);
53313
53325
  }
53314
- const [cachedOptions] = (0, import_react266.useState)(options);
53315
- (0, import_react266.useEffect)(() => {
53326
+ const [cachedOptions] = (0, import_react267.useState)(options);
53327
+ (0, import_react267.useEffect)(() => {
53316
53328
  const client = new import_stream_chat7.StreamChat(apiKey, void 0, cachedOptions);
53317
53329
  let didUserConnectInterrupt = false;
53318
53330
  const connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(() => {
@@ -53330,17 +53342,17 @@ var useCreateChatClient = ({
53330
53342
  };
53331
53343
 
53332
53344
  // src/components/Thread/Thread.tsx
53333
- var import_react271 = __toESM(require("react"));
53345
+ var import_react272 = __toESM(require("react"));
53334
53346
  var import_clsx66 = __toESM(require("clsx"));
53335
53347
 
53336
53348
  // src/components/Thread/ThreadHeader.tsx
53337
- var import_react268 = __toESM(require("react"));
53349
+ var import_react269 = __toESM(require("react"));
53338
53350
 
53339
53351
  // src/components/Thread/icons.tsx
53340
- var import_react267 = __toESM(require("react"));
53352
+ var import_react268 = __toESM(require("react"));
53341
53353
  var CloseIcon3 = ({ title }) => {
53342
53354
  const { t: t2 } = useTranslationContext("CloseIcon");
53343
- return /* @__PURE__ */ import_react267.default.createElement(
53355
+ return /* @__PURE__ */ import_react268.default.createElement(
53344
53356
  "svg",
53345
53357
  {
53346
53358
  "data-testid": "close-no-outline",
@@ -53348,8 +53360,8 @@ var CloseIcon3 = ({ title }) => {
53348
53360
  viewBox: "0 0 24 24",
53349
53361
  xmlns: "http://www.w3.org/2000/svg"
53350
53362
  },
53351
- /* @__PURE__ */ import_react267.default.createElement("title", null, title ?? t2("Close")),
53352
- /* @__PURE__ */ import_react267.default.createElement(
53363
+ /* @__PURE__ */ import_react268.default.createElement("title", null, title ?? t2("Close")),
53364
+ /* @__PURE__ */ import_react268.default.createElement(
53353
53365
  "path",
53354
53366
  {
53355
53367
  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",
@@ -53369,7 +53381,7 @@ var ThreadHeader = (props) => {
53369
53381
  overrideImage,
53370
53382
  overrideTitle
53371
53383
  });
53372
- return /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react268.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react268.default.createElement(
53384
+ return /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-header" }, /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-header-details" }, /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-header-title" }, t2("Thread")), /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-header-subtitle" }, displayTitle)), /* @__PURE__ */ import_react269.default.createElement(
53373
53385
  "button",
53374
53386
  {
53375
53387
  "aria-label": t2("aria/Close thread"),
@@ -53377,26 +53389,26 @@ var ThreadHeader = (props) => {
53377
53389
  "data-testid": "close-button",
53378
53390
  onClick: closeThread
53379
53391
  },
53380
- /* @__PURE__ */ import_react268.default.createElement(CloseIcon3, null)
53392
+ /* @__PURE__ */ import_react269.default.createElement(CloseIcon3, null)
53381
53393
  ));
53382
53394
  };
53383
53395
 
53384
53396
  // src/components/Thread/ThreadHead.tsx
53385
- var import_react270 = __toESM(require("react"));
53397
+ var import_react271 = __toESM(require("react"));
53386
53398
 
53387
53399
  // src/components/Thread/ThreadStart.tsx
53388
- var import_react269 = __toESM(require("react"));
53400
+ var import_react270 = __toESM(require("react"));
53389
53401
  var ThreadStart = () => {
53390
53402
  const { thread } = useChannelStateContext("ThreadStart");
53391
53403
  const { t: t2 } = useTranslationContext("ThreadStart");
53392
53404
  if (!thread?.reply_count) return null;
53393
- return /* @__PURE__ */ import_react269.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
53405
+ return /* @__PURE__ */ import_react270.default.createElement("div", { className: "str-chat__thread-start" }, t2("replyCount", { count: thread.reply_count }));
53394
53406
  };
53395
53407
 
53396
53408
  // src/components/Thread/ThreadHead.tsx
53397
53409
  var ThreadHead = (props) => {
53398
53410
  const { ThreadStart: ThreadStart2 = ThreadStart } = useComponentContext("ThreadHead");
53399
- return /* @__PURE__ */ import_react270.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react270.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react270.default.createElement(ThreadStart2, null));
53411
+ return /* @__PURE__ */ import_react271.default.createElement("div", { className: "str-chat__parent-message-li" }, /* @__PURE__ */ import_react271.default.createElement(Message, { initialMessage: true, threadList: true, ...props }), /* @__PURE__ */ import_react271.default.createElement(ThreadStart2, null));
53400
53412
  };
53401
53413
 
53402
53414
  // src/components/Thread/Thread.tsx
@@ -53406,7 +53418,7 @@ var Thread = (props) => {
53406
53418
  if (!thread && !threadInstance || channelConfig?.replies === false) return null;
53407
53419
  return (
53408
53420
  // FIXME: TS is having trouble here as at least one of the two would always be defined
53409
- /* @__PURE__ */ import_react271.default.createElement(
53421
+ /* @__PURE__ */ import_react272.default.createElement(
53410
53422
  ThreadInner,
53411
53423
  {
53412
53424
  ...props,
@@ -53457,7 +53469,7 @@ var ThreadInner = (props) => {
53457
53469
  const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
53458
53470
  const MessageUIComponent = ThreadMessage || FallbackMessage;
53459
53471
  const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
53460
- (0, import_react271.useEffect)(() => {
53472
+ (0, import_react272.useEffect)(() => {
53461
53473
  if (thread?.id && thread?.reply_count) {
53462
53474
  loadMoreThread();
53463
53475
  }
@@ -53479,7 +53491,7 @@ var ThreadInner = (props) => {
53479
53491
  const threadClass = customClasses?.thread || (0, import_clsx66.default)("str-chat__thread-container str-chat__thread", {
53480
53492
  "str-chat__thread--virtualized": virtualized
53481
53493
  });
53482
- const head = /* @__PURE__ */ import_react271.default.createElement(
53494
+ const head = /* @__PURE__ */ import_react272.default.createElement(
53483
53495
  ThreadHead2,
53484
53496
  {
53485
53497
  key: messageAsThread.id,
@@ -53488,7 +53500,7 @@ var ThreadInner = (props) => {
53488
53500
  ...additionalParentMessageProps
53489
53501
  }
53490
53502
  );
53491
- return /* @__PURE__ */ import_react271.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react271.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react271.default.createElement(
53503
+ return /* @__PURE__ */ import_react272.default.createElement("div", { className: threadClass }, /* @__PURE__ */ import_react272.default.createElement(ThreadHeader2, { closeThread, thread: messageAsThread }), /* @__PURE__ */ import_react272.default.createElement(
53492
53504
  ThreadMessageList,
53493
53505
  {
53494
53506
  disableDateSeparator: !enableDateSeparator,
@@ -53500,7 +53512,7 @@ var ThreadInner = (props) => {
53500
53512
  ...threadProps,
53501
53513
  ...virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps
53502
53514
  }
53503
- ), /* @__PURE__ */ import_react271.default.createElement(
53515
+ ), /* @__PURE__ */ import_react272.default.createElement(
53504
53516
  MessageInput,
53505
53517
  {
53506
53518
  focus: autoFocus,
@@ -53514,12 +53526,12 @@ var ThreadInner = (props) => {
53514
53526
  };
53515
53527
 
53516
53528
  // src/components/Window/Window.tsx
53517
- var import_react272 = __toESM(require("react"));
53529
+ var import_react273 = __toESM(require("react"));
53518
53530
  var import_clsx67 = __toESM(require("clsx"));
53519
53531
  var UnMemoizedWindow = (props) => {
53520
53532
  const { children, thread: propThread } = props;
53521
53533
  const { thread: contextThread } = useChannelStateContext("Window");
53522
- return /* @__PURE__ */ import_react272.default.createElement(
53534
+ return /* @__PURE__ */ import_react273.default.createElement(
53523
53535
  "div",
53524
53536
  {
53525
53537
  className: (0, import_clsx67.default)("str-chat__main-panel", {
@@ -53529,7 +53541,7 @@ var UnMemoizedWindow = (props) => {
53529
53541
  children
53530
53542
  );
53531
53543
  };
53532
- var Window = import_react272.default.memo(UnMemoizedWindow);
53544
+ var Window = import_react273.default.memo(UnMemoizedWindow);
53533
53545
  /*! Bundled license information:
53534
53546
 
53535
53547
  is-buffer/index.js: