stream-chat-react 12.15.1 → 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
  });
@@ -40039,7 +40040,7 @@ var BrowserPermission = class {
40039
40040
 
40040
40041
  // src/components/MediaRecorder/classes/MediaRecorderController.ts
40041
40042
  var import_fix_webm_duration = __toESM(require("fix-webm-duration"));
40042
- var import_nanoid3 = require("nanoid");
40043
+ var import_nanoid4 = require("nanoid");
40043
40044
 
40044
40045
  // src/utils/mergeDeep.ts
40045
40046
  var import_lodash6 = __toESM(require("lodash.mergewith"));
@@ -40319,7 +40320,7 @@ var MediaRecorderController = class {
40319
40320
  file_size: blob.size,
40320
40321
  localMetadata: {
40321
40322
  file,
40322
- id: (0, import_nanoid3.nanoid)()
40323
+ id: (0, import_nanoid4.nanoid)()
40323
40324
  },
40324
40325
  mime_type: blob.type,
40325
40326
  title: file.name,
@@ -40586,7 +40587,7 @@ var initState = (message) => {
40586
40587
  const attachments = message.attachments?.filter(({ og_scrape_url }) => !og_scrape_url).map(
40587
40588
  (att) => ({
40588
40589
  ...att,
40589
- localMetadata: { id: (0, import_nanoid4.nanoid)() }
40590
+ localMetadata: { id: (0, import_nanoid5.nanoid)() }
40590
40591
  })
40591
40592
  ) || [];
40592
40593
  const mentioned_users = message.mentioned_users || [];
@@ -40867,10 +40868,10 @@ var UnMemoizedConnectionStatus = () => {
40867
40868
  var ConnectionStatus = import_react80.default.memo(UnMemoizedConnectionStatus);
40868
40869
 
40869
40870
  // src/components/MessageList/GiphyPreviewMessage.tsx
40870
- var import_react228 = __toESM(require("react"));
40871
+ var import_react229 = __toESM(require("react"));
40871
40872
 
40872
40873
  // src/components/Message/Message.tsx
40873
- var import_react227 = __toESM(require("react"));
40874
+ var import_react228 = __toESM(require("react"));
40874
40875
 
40875
40876
  // src/components/Message/hooks/useActionHandler.ts
40876
40877
  var handleActionWarning = `Action handler was called, but it is missing one of its required arguments.
@@ -44445,7 +44446,7 @@ var useMessageTextStreaming = ({
44445
44446
  };
44446
44447
 
44447
44448
  // src/components/Message/MessageSimple.tsx
44448
- var import_react226 = __toESM(require("react"));
44449
+ var import_react227 = __toESM(require("react"));
44449
44450
  var import_clsx60 = __toESM(require("clsx"));
44450
44451
 
44451
44452
  // src/components/Message/icons.tsx
@@ -46580,12 +46581,12 @@ var Poll = ({
46580
46581
 
46581
46582
  // src/components/Poll/PollCreationDialog/PollCreationDialog.tsx
46582
46583
  var import_clsx48 = __toESM(require("clsx"));
46583
- var import_nanoid6 = require("nanoid");
46584
+ var import_nanoid7 = require("nanoid");
46584
46585
  var import_react179 = __toESM(require("react"));
46585
46586
 
46586
46587
  // src/components/Poll/PollCreationDialog/OptionFieldSet.tsx
46587
46588
  var import_clsx46 = __toESM(require("clsx"));
46588
- var import_nanoid5 = require("nanoid");
46589
+ var import_nanoid6 = require("nanoid");
46589
46590
  var import_react176 = __toESM(require("react"));
46590
46591
 
46591
46592
  // src/components/DragAndDrop/DragAndDropContainer.tsx
@@ -46768,7 +46769,7 @@ var OptionFieldSet = ({
46768
46769
  const shouldAddEmptyOption = prev.options.length < MAX_POLL_OPTIONS && (!prev.options || prev.options.slice(i + 1).length === 0 && !!e2.target.value);
46769
46770
  const shouldRemoveOption = prev.options && prev.options.slice(i + 1).length > 0 && !e2.target.value;
46770
46771
  const optionListHead = prev.options ? prev.options.slice(0, i) : [];
46771
- 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);
46772
46773
  if (errors[option.id] && !e2.target.value || VALIDATION_ERRORS[errors[option.id]] && !findOptionDuplicate({ id: e2.target.id, text: e2.target.value })) {
46773
46774
  setErrors((prev2) => {
46774
46775
  delete prev2[option.id];
@@ -46897,10 +46898,10 @@ var PollCreationDialog = ({ close }) => {
46897
46898
  allow_user_suggested_options: false,
46898
46899
  description: "",
46899
46900
  enforce_unique_vote: true,
46900
- id: (0, import_nanoid6.nanoid)(),
46901
+ id: (0, import_nanoid7.nanoid)(),
46901
46902
  max_votes_allowed: "",
46902
46903
  name: "",
46903
- options: [{ id: (0, import_nanoid6.nanoid)(), text: "" }],
46904
+ options: [{ id: (0, import_nanoid7.nanoid)(), text: "" }],
46904
46905
  user_id: client.user?.id,
46905
46906
  voting_visibility: "public"
46906
46907
  })
@@ -47000,7 +47001,7 @@ var PollCreationDialog = ({ close }) => {
47000
47001
  {
47001
47002
  id: "max_votes_allowed",
47002
47003
  onChange: (e2) => {
47003
- 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));
47004
47005
  if (!isValidValue) {
47005
47006
  setMultipleAnswerCountError(
47006
47007
  t2("Type a number from 2 to 10")
@@ -47224,14 +47225,13 @@ var CUSTOM_MESSAGE_TYPE = {
47224
47225
  };
47225
47226
 
47226
47227
  // src/components/MessageInput/AttachmentSelector.tsx
47227
- var import_nanoid8 = require("nanoid");
47228
- var import_react187 = __toESM(require("react"));
47228
+ var import_react188 = __toESM(require("react"));
47229
47229
 
47230
47230
  // src/components/MessageInput/icons.tsx
47231
47231
  var import_react184 = __toESM(require("react"));
47232
- var import_nanoid7 = require("nanoid");
47232
+ var import_nanoid8 = require("nanoid");
47233
47233
  var LoadingIndicatorIcon = ({ size = 20 }) => {
47234
- const id = (0, import_react184.useMemo)(() => (0, import_nanoid7.nanoid)(), []);
47234
+ const id = (0, import_react184.useMemo)(() => (0, import_nanoid8.nanoid)(), []);
47235
47235
  return /* @__PURE__ */ import_react184.default.createElement("div", { className: "str-chat__loading-indicator" }, /* @__PURE__ */ import_react184.default.createElement(
47236
47236
  "svg",
47237
47237
  {
@@ -47419,16 +47419,24 @@ var AttachmentSelectorContextProvider = ({
47419
47419
  }) => /* @__PURE__ */ import_react186.default.createElement(AttachmentSelectorContext.Provider, { value }, children);
47420
47420
  var useAttachmentSelectorContext = () => (0, import_react186.useContext)(AttachmentSelectorContext);
47421
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
+
47422
47430
  // src/components/MessageInput/AttachmentSelector.tsx
47423
47431
  var SimpleAttachmentSelector = () => {
47424
47432
  const {
47425
47433
  AttachmentSelectorInitiationButtonContents,
47426
47434
  FileUploadIcon = UploadIcon
47427
47435
  } = useComponentContext();
47428
- const inputRef = (0, import_react187.useRef)(null);
47429
- const [labelElement, setLabelElement] = (0, import_react187.useState)(null);
47430
- const id = (0, import_react187.useMemo)(() => (0, import_nanoid8.nanoid)(), []);
47431
- (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)(() => {
47432
47440
  if (!labelElement) return;
47433
47441
  const handleKeyUp = (event) => {
47434
47442
  if (![" ", "Enter"].includes(event.key) || !inputRef.current) return;
@@ -47440,7 +47448,7 @@ var SimpleAttachmentSelector = () => {
47440
47448
  labelElement.removeEventListener("keyup", handleKeyUp);
47441
47449
  };
47442
47450
  }, [labelElement]);
47443
- 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(
47444
47452
  "label",
47445
47453
  {
47446
47454
  className: "str-chat__file-input-label",
@@ -47448,24 +47456,24 @@ var SimpleAttachmentSelector = () => {
47448
47456
  ref: setLabelElement,
47449
47457
  tabIndex: 0
47450
47458
  },
47451
- 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)
47452
47460
  ));
47453
47461
  };
47454
47462
  var AttachmentSelectorMenuInitButtonIcon = () => {
47455
47463
  const { AttachmentSelectorInitiationButtonContents, FileUploadIcon } = useComponentContext("SimpleAttachmentSelector");
47456
47464
  if (AttachmentSelectorInitiationButtonContents) {
47457
- return /* @__PURE__ */ import_react187.default.createElement(AttachmentSelectorInitiationButtonContents, null);
47465
+ return /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorInitiationButtonContents, null);
47458
47466
  }
47459
47467
  if (FileUploadIcon) {
47460
- return /* @__PURE__ */ import_react187.default.createElement(FileUploadIcon, null);
47468
+ return /* @__PURE__ */ import_react188.default.createElement(FileUploadIcon, null);
47461
47469
  }
47462
- 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" });
47463
47471
  };
47464
47472
  var DefaultAttachmentSelectorComponents = {
47465
47473
  File({ closeMenu }) {
47466
47474
  const { t: t2 } = useTranslationContext();
47467
47475
  const { fileInput } = useAttachmentSelectorContext();
47468
- return /* @__PURE__ */ import_react187.default.createElement(
47476
+ return /* @__PURE__ */ import_react188.default.createElement(
47469
47477
  DialogMenuButton,
47470
47478
  {
47471
47479
  className: "str-chat__attachment-selector-actions-menu__button str-chat__attachment-selector-actions-menu__upload-file-button",
@@ -47479,7 +47487,7 @@ var DefaultAttachmentSelectorComponents = {
47479
47487
  },
47480
47488
  Poll({ closeMenu, openModalForAction }) {
47481
47489
  const { t: t2 } = useTranslationContext();
47482
- return /* @__PURE__ */ import_react187.default.createElement(
47490
+ return /* @__PURE__ */ import_react188.default.createElement(
47483
47491
  DialogMenuButton,
47484
47492
  {
47485
47493
  className: "str-chat__attachment-selector-actions-menu__button str-chat__attachment-selector-actions-menu__create-poll-button",
@@ -47529,8 +47537,8 @@ var AttachmentSelector = ({
47529
47537
  const menuDialogId = `attachment-actions-menu${isThreadInput ? "-thread" : ""}`;
47530
47538
  const menuDialog = useDialog({ id: menuDialogId });
47531
47539
  const menuDialogIsOpen = useDialogIsOpen(menuDialogId);
47532
- const [modalContentAction, setModalContentActionAction] = (0, import_react187.useState)();
47533
- const openModal = (0, import_react187.useCallback)(
47540
+ const [modalContentAction, setModalContentActionAction] = (0, import_react188.useState)();
47541
+ const openModal = (0, import_react188.useCallback)(
47534
47542
  (actionType) => {
47535
47543
  const action = actions.find((a2) => a2.type === actionType);
47536
47544
  if (!action?.ModalContent) return;
@@ -47538,19 +47546,19 @@ var AttachmentSelector = ({
47538
47546
  },
47539
47547
  [actions]
47540
47548
  );
47541
- const closeModal = (0, import_react187.useCallback)(() => setModalContentActionAction(void 0), []);
47542
- const [fileInput, setFileInput] = (0, import_react187.useState)(null);
47543
- const menuButtonRef = (0, import_react187.useRef)(null);
47544
- 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)(
47545
47553
  () => document.getElementById(CHANNEL_CONTAINER_ID),
47546
47554
  []
47547
47555
  );
47548
47556
  if (actions.length === 0) return null;
47549
47557
  if (actions.length === 1 && actions[0].type === "uploadFile")
47550
- return /* @__PURE__ */ import_react187.default.createElement(SimpleAttachmentSelector, null);
47558
+ return /* @__PURE__ */ import_react188.default.createElement(SimpleAttachmentSelector, null);
47551
47559
  const ModalContent = modalContentAction?.ModalContent;
47552
47560
  const modalIsOpen = !!ModalContent;
47553
- 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(
47554
47562
  "button",
47555
47563
  {
47556
47564
  "aria-expanded": menuDialogIsOpen,
@@ -47561,8 +47569,8 @@ var AttachmentSelector = ({
47561
47569
  onClick: () => menuDialog?.toggle(),
47562
47570
  ref: menuButtonRef
47563
47571
  },
47564
- /* @__PURE__ */ import_react187.default.createElement(AttachmentSelectorMenuInitButtonIcon, null)
47565
- ), /* @__PURE__ */ import_react187.default.createElement(
47572
+ /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorMenuInitButtonIcon, null)
47573
+ ), /* @__PURE__ */ import_react188.default.createElement(
47566
47574
  DialogAnchor,
47567
47575
  {
47568
47576
  id: menuDialogId,
@@ -47570,13 +47578,13 @@ var AttachmentSelector = ({
47570
47578
  referenceElement: menuButtonRef.current,
47571
47579
  trapFocus: true
47572
47580
  },
47573
- /* @__PURE__ */ import_react187.default.createElement(
47581
+ /* @__PURE__ */ import_react188.default.createElement(
47574
47582
  "div",
47575
47583
  {
47576
47584
  className: "str-chat__attachment-selector-actions-menu str-chat__dialog-menu",
47577
47585
  "data-testid": "attachment-selector-actions-menu"
47578
47586
  },
47579
- actions.map(({ ActionButton, type }) => /* @__PURE__ */ import_react187.default.createElement(
47587
+ actions.map(({ ActionButton, type }) => /* @__PURE__ */ import_react188.default.createElement(
47580
47588
  ActionButton,
47581
47589
  {
47582
47590
  closeMenu: menuDialog.close,
@@ -47585,29 +47593,29 @@ var AttachmentSelector = ({
47585
47593
  }
47586
47594
  ))
47587
47595
  )
47588
- ), /* @__PURE__ */ import_react187.default.createElement(
47596
+ ), /* @__PURE__ */ import_react188.default.createElement(
47589
47597
  Portal,
47590
47598
  {
47591
47599
  getPortalDestination: getModalPortalDestination ?? getDefaultPortalDestination,
47592
47600
  isOpen: modalIsOpen
47593
47601
  },
47594
- /* @__PURE__ */ import_react187.default.createElement(
47602
+ /* @__PURE__ */ import_react188.default.createElement(
47595
47603
  Modal,
47596
47604
  {
47597
47605
  className: "str-chat__create-poll-modal",
47598
47606
  onClose: closeModal,
47599
47607
  open: modalIsOpen
47600
47608
  },
47601
- ModalContent && /* @__PURE__ */ import_react187.default.createElement(ModalContent, { close: closeModal })
47609
+ ModalContent && /* @__PURE__ */ import_react188.default.createElement(ModalContent, { close: closeModal })
47602
47610
  )
47603
47611
  )));
47604
47612
  };
47605
47613
 
47606
47614
  // src/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.tsx
47607
- var import_react199 = __toESM(require("react"));
47615
+ var import_react200 = __toESM(require("react"));
47608
47616
 
47609
47617
  // src/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.tsx
47610
- var import_react188 = __toESM(require("react"));
47618
+ var import_react189 = __toESM(require("react"));
47611
47619
  var UnsupportedAttachmentPreview = ({
47612
47620
  attachment,
47613
47621
  handleRetry,
@@ -47615,14 +47623,14 @@ var UnsupportedAttachmentPreview = ({
47615
47623
  }) => {
47616
47624
  const { t: t2 } = useTranslationContext("UnsupportedAttachmentPreview");
47617
47625
  const title = attachment.title ?? t2("Unsupported attachment");
47618
- return /* @__PURE__ */ import_react188.default.createElement(
47626
+ return /* @__PURE__ */ import_react189.default.createElement(
47619
47627
  "div",
47620
47628
  {
47621
47629
  className: "str-chat__attachment-preview-unsupported",
47622
47630
  "data-testid": "attachment-preview-unknown"
47623
47631
  },
47624
- /* @__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 })),
47625
- /* @__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(
47626
47634
  "button",
47627
47635
  {
47628
47636
  className: "str-chat__attachment-preview-delete",
@@ -47630,18 +47638,18 @@ var UnsupportedAttachmentPreview = ({
47630
47638
  disabled: attachment.localMetadata?.uploadState === "uploading",
47631
47639
  onClick: () => attachment.localMetadata?.id && removeAttachments([attachment.localMetadata?.id])
47632
47640
  },
47633
- /* @__PURE__ */ import_react188.default.createElement(CloseIcon, null)
47641
+ /* @__PURE__ */ import_react189.default.createElement(CloseIcon, null)
47634
47642
  ),
47635
- attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react188.default.createElement(
47643
+ attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react189.default.createElement(
47636
47644
  "button",
47637
47645
  {
47638
47646
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-file",
47639
47647
  "data-testid": "file-preview-item-retry-button",
47640
47648
  onClick: () => handleRetry(attachment)
47641
47649
  },
47642
- /* @__PURE__ */ import_react188.default.createElement(RetryIcon, null)
47650
+ /* @__PURE__ */ import_react189.default.createElement(RetryIcon, null)
47643
47651
  ),
47644
- /* @__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(
47645
47653
  "a",
47646
47654
  {
47647
47655
  className: "str-chat__attachment-preview-file-download",
@@ -47650,16 +47658,16 @@ var UnsupportedAttachmentPreview = ({
47650
47658
  rel: "noreferrer",
47651
47659
  target: "_blank"
47652
47660
  },
47653
- /* @__PURE__ */ import_react188.default.createElement(DownloadIcon2, null)
47654
- ), 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 }))
47655
47663
  );
47656
47664
  };
47657
47665
 
47658
47666
  // src/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.tsx
47659
- var import_react196 = __toESM(require("react"));
47667
+ var import_react197 = __toESM(require("react"));
47660
47668
 
47661
47669
  // src/components/MediaRecorder/RecordingPermissionDeniedNotification.tsx
47662
- var import_react189 = __toESM(require("react"));
47670
+ var import_react190 = __toESM(require("react"));
47663
47671
  var RecordingPermissionDeniedNotification = ({
47664
47672
  onClose,
47665
47673
  permissionName
@@ -47675,7 +47683,7 @@ var RecordingPermissionDeniedNotification = ({
47675
47683
  microphone: t2("Allow access to microphone")
47676
47684
  }
47677
47685
  };
47678
- 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(
47679
47687
  "button",
47680
47688
  {
47681
47689
  className: "str-chat__recording-permission-denied-notification__dismiss-button",
@@ -47686,15 +47694,15 @@ var RecordingPermissionDeniedNotification = ({
47686
47694
  };
47687
47695
 
47688
47696
  // src/components/MediaRecorder/AudioRecorder/AudioRecorder.tsx
47689
- var import_react194 = __toESM(require("react"));
47697
+ var import_react195 = __toESM(require("react"));
47690
47698
 
47691
47699
  // src/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.tsx
47692
- var import_react191 = __toESM(require("react"));
47700
+ var import_react192 = __toESM(require("react"));
47693
47701
 
47694
47702
  // src/components/MediaRecorder/AudioRecorder/RecordingTimer.tsx
47695
47703
  var import_clsx52 = __toESM(require("clsx"));
47696
- var import_react190 = __toESM(require("react"));
47697
- var RecordingTimer = ({ durationSeconds }) => /* @__PURE__ */ import_react190.default.createElement(
47704
+ var import_react191 = __toESM(require("react"));
47705
+ var RecordingTimer = ({ durationSeconds }) => /* @__PURE__ */ import_react191.default.createElement(
47698
47706
  "div",
47699
47707
  {
47700
47708
  className: (0, import_clsx52.default)("str-chat__recording-timer", {
@@ -47716,15 +47724,15 @@ var AudioRecordingPreview = ({
47716
47724
  mimeType
47717
47725
  });
47718
47726
  const displayedDuration = secondsElapsed || durationSeconds;
47719
- 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(
47720
47728
  "button",
47721
47729
  {
47722
47730
  className: "str-chat__audio_recorder__toggle-playback-button",
47723
47731
  "data-testid": "audio-recording-preview-toggle-play-btn",
47724
47732
  onClick: togglePlay
47725
47733
  },
47726
- isPlaying ? /* @__PURE__ */ import_react191.default.createElement(PauseIcon2, null) : /* @__PURE__ */ import_react191.default.createElement(PlayIcon, null)
47727
- ), /* @__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(
47728
47736
  WaveProgressBar,
47729
47737
  {
47730
47738
  progress,
@@ -47735,24 +47743,24 @@ var AudioRecordingPreview = ({
47735
47743
  };
47736
47744
 
47737
47745
  // src/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.tsx
47738
- var import_react193 = __toESM(require("react"));
47746
+ var import_react194 = __toESM(require("react"));
47739
47747
 
47740
47748
  // src/components/MessageInput/hooks/useTimeElapsed.ts
47741
- var import_react192 = require("react");
47749
+ var import_react193 = require("react");
47742
47750
  var useTimeElapsed = ({ startOnMount } = {}) => {
47743
- const [secondsElapsed, setSecondsElapsed] = (0, import_react192.useState)(0);
47744
- const updateInterval = (0, import_react192.useRef)(void 0);
47745
- 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)(() => {
47746
47754
  if (updateInterval.current) return;
47747
47755
  updateInterval.current = setInterval(() => {
47748
47756
  setSecondsElapsed((prev) => prev + 1);
47749
47757
  }, 1e3);
47750
47758
  }, []);
47751
- const stopCounter = (0, import_react192.useCallback)(() => {
47759
+ const stopCounter = (0, import_react193.useCallback)(() => {
47752
47760
  clearInterval(updateInterval.current);
47753
47761
  updateInterval.current = void 0;
47754
47762
  }, []);
47755
- (0, import_react192.useEffect)(() => {
47763
+ (0, import_react193.useEffect)(() => {
47756
47764
  if (!startOnMount) return;
47757
47765
  startCounter();
47758
47766
  return () => {
@@ -47771,8 +47779,8 @@ var AudioRecordingWaveform = ({ maxDataPointsDrawn = 100 }) => {
47771
47779
  const {
47772
47780
  recordingController: { recorder }
47773
47781
  } = useMessageInputContext();
47774
- const [amplitudes, setAmplitudes] = (0, import_react193.useState)([]);
47775
- (0, import_react193.useEffect)(() => {
47782
+ const [amplitudes, setAmplitudes] = (0, import_react194.useState)([]);
47783
+ (0, import_react194.useEffect)(() => {
47776
47784
  if (!recorder?.amplitudeRecorder) return;
47777
47785
  const amplitudesSubscription = recorder.amplitudeRecorder.amplitudes.subscribe(setAmplitudes);
47778
47786
  return () => {
@@ -47780,7 +47788,7 @@ var AudioRecordingWaveform = ({ maxDataPointsDrawn = 100 }) => {
47780
47788
  };
47781
47789
  }, [recorder]);
47782
47790
  if (!recorder) return null;
47783
- 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(
47784
47792
  "div",
47785
47793
  {
47786
47794
  className: "str-chat__wave-progress-bar__amplitude-bar",
@@ -47796,7 +47804,7 @@ var AudioRecordingInProgress = () => {
47796
47804
  const {
47797
47805
  recordingController: { recorder }
47798
47806
  } = useMessageInputContext();
47799
- (0, import_react193.useEffect)(() => {
47807
+ (0, import_react194.useEffect)(() => {
47800
47808
  if (!recorder?.mediaRecorder) return;
47801
47809
  const { mediaRecorder } = recorder;
47802
47810
  if (mediaRecorder.state === "recording") {
@@ -47813,7 +47821,7 @@ var AudioRecordingInProgress = () => {
47813
47821
  mediaRecorder.removeEventListener("pause", stopCounter);
47814
47822
  };
47815
47823
  }, [recorder, startCounter, stopCounter]);
47816
- 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));
47817
47825
  };
47818
47826
 
47819
47827
  // src/components/MediaRecorder/AudioRecorder/AudioRecorder.tsx
@@ -47822,7 +47830,7 @@ var AudioRecorder = () => {
47822
47830
  recordingController: { completeRecording, recorder, recording, recordingState }
47823
47831
  } = useMessageInputContext();
47824
47832
  const isUploadingFile = recording?.localMetadata?.uploadState === "uploading";
47825
- const state = (0, import_react194.useMemo)(
47833
+ const state = (0, import_react195.useMemo)(
47826
47834
  () => ({
47827
47835
  paused: recordingState === "paused" /* PAUSED */,
47828
47836
  recording: recordingState === "recording" /* RECORDING */,
@@ -47831,7 +47839,7 @@ var AudioRecorder = () => {
47831
47839
  [recordingState]
47832
47840
  );
47833
47841
  if (!recorder) return null;
47834
- 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(
47835
47843
  "button",
47836
47844
  {
47837
47845
  className: "str-chat__audio_recorder__cancel-button",
@@ -47839,8 +47847,8 @@ var AudioRecorder = () => {
47839
47847
  disabled: isUploadingFile,
47840
47848
  onClick: recorder.cancel
47841
47849
  },
47842
- /* @__PURE__ */ import_react194.default.createElement(BinIcon, null)
47843
- ), 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(
47844
47852
  AudioRecordingPreview,
47845
47853
  {
47846
47854
  durationSeconds: recording.duration ?? 0,
@@ -47848,22 +47856,22 @@ var AudioRecorder = () => {
47848
47856
  src: recording.asset_url,
47849
47857
  waveformData: recording.waveform_data
47850
47858
  }
47851
- ) : 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(
47852
47860
  "button",
47853
47861
  {
47854
47862
  className: "str-chat__audio_recorder__resume-recording-button",
47855
47863
  onClick: recorder.resume
47856
47864
  },
47857
- /* @__PURE__ */ import_react194.default.createElement(MicIcon, null)
47858
- ), state.recording && /* @__PURE__ */ import_react194.default.createElement(
47865
+ /* @__PURE__ */ import_react195.default.createElement(MicIcon, null)
47866
+ ), state.recording && /* @__PURE__ */ import_react195.default.createElement(
47859
47867
  "button",
47860
47868
  {
47861
47869
  className: "str-chat__audio_recorder__pause-recording-button",
47862
47870
  "data-testid": "pause-recording-audio-button",
47863
47871
  onClick: recorder.pause
47864
47872
  },
47865
- /* @__PURE__ */ import_react194.default.createElement(PauseIcon2, null)
47866
- ), state.stopped ? /* @__PURE__ */ import_react194.default.createElement(
47873
+ /* @__PURE__ */ import_react195.default.createElement(PauseIcon2, null)
47874
+ ), state.stopped ? /* @__PURE__ */ import_react195.default.createElement(
47867
47875
  "button",
47868
47876
  {
47869
47877
  className: "str-chat__audio_recorder__complete-button",
@@ -47871,21 +47879,21 @@ var AudioRecorder = () => {
47871
47879
  disabled: isUploadingFile,
47872
47880
  onClick: completeRecording
47873
47881
  },
47874
- isUploadingFile ? /* @__PURE__ */ import_react194.default.createElement(LoadingIndicatorIcon, null) : /* @__PURE__ */ import_react194.default.createElement(SendIcon, null)
47875
- ) : /* @__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(
47876
47884
  "button",
47877
47885
  {
47878
47886
  className: "str-chat__audio_recorder__stop-button",
47879
47887
  "data-testid": "audio-recorder-stop-button",
47880
47888
  onClick: recorder.stop
47881
47889
  },
47882
- /* @__PURE__ */ import_react194.default.createElement(CheckSignIcon, null)
47890
+ /* @__PURE__ */ import_react195.default.createElement(CheckSignIcon, null)
47883
47891
  )));
47884
47892
  };
47885
47893
 
47886
47894
  // src/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.tsx
47887
- var import_react195 = __toESM(require("react"));
47888
- var StartRecordingAudioButton = (props) => /* @__PURE__ */ import_react195.default.createElement(
47895
+ var import_react196 = __toESM(require("react"));
47896
+ var StartRecordingAudioButton = (props) => /* @__PURE__ */ import_react196.default.createElement(
47889
47897
  "button",
47890
47898
  {
47891
47899
  "aria-label": "Start recording audio",
@@ -47893,7 +47901,7 @@ var StartRecordingAudioButton = (props) => /* @__PURE__ */ import_react195.defau
47893
47901
  "data-testid": "start-recording-audio-button",
47894
47902
  ...props
47895
47903
  },
47896
- /* @__PURE__ */ import_react195.default.createElement(MicIcon, null)
47904
+ /* @__PURE__ */ import_react196.default.createElement(MicIcon, null)
47897
47905
  );
47898
47906
 
47899
47907
  // src/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.tsx
@@ -47905,13 +47913,13 @@ var VoiceRecordingPreview = ({
47905
47913
  const { audioRef, isPlaying, secondsElapsed, togglePlay } = useAudioController({
47906
47914
  mimeType: attachment.mime_type
47907
47915
  });
47908
- return /* @__PURE__ */ import_react196.default.createElement(
47916
+ return /* @__PURE__ */ import_react197.default.createElement(
47909
47917
  "div",
47910
47918
  {
47911
47919
  className: "str-chat__attachment-preview-voice-recording",
47912
47920
  "data-testid": "attachment-preview-voice-recording"
47913
47921
  },
47914
- /* @__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(
47915
47923
  "source",
47916
47924
  {
47917
47925
  "data-testid": "audio-source",
@@ -47919,8 +47927,8 @@ var VoiceRecordingPreview = ({
47919
47927
  type: attachment.mime_type
47920
47928
  }
47921
47929
  )),
47922
- /* @__PURE__ */ import_react196.default.createElement(PlayButton, { isPlaying, onClick: togglePlay }),
47923
- /* @__PURE__ */ import_react196.default.createElement(
47930
+ /* @__PURE__ */ import_react197.default.createElement(PlayButton, { isPlaying, onClick: togglePlay }),
47931
+ /* @__PURE__ */ import_react197.default.createElement(
47924
47932
  "button",
47925
47933
  {
47926
47934
  className: "str-chat__attachment-preview-delete",
@@ -47928,38 +47936,38 @@ var VoiceRecordingPreview = ({
47928
47936
  disabled: attachment.localMetadata?.uploadState === "uploading",
47929
47937
  onClick: () => attachment.localMetadata?.id && removeAttachments([attachment.localMetadata.id])
47930
47938
  },
47931
- /* @__PURE__ */ import_react196.default.createElement(CloseIcon, null)
47939
+ /* @__PURE__ */ import_react197.default.createElement(CloseIcon, null)
47932
47940
  ),
47933
- attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react196.default.createElement(
47941
+ attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react197.default.createElement(
47934
47942
  "button",
47935
47943
  {
47936
47944
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-file",
47937
47945
  "data-testid": "file-preview-item-retry-button",
47938
47946
  onClick: () => handleRetry(attachment)
47939
47947
  },
47940
- /* @__PURE__ */ import_react196.default.createElement(RetryIcon, null)
47948
+ /* @__PURE__ */ import_react197.default.createElement(RetryIcon, null)
47941
47949
  ),
47942
- /* @__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 })),
47943
- /* @__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 }))
47944
47952
  );
47945
47953
  };
47946
47954
 
47947
47955
  // src/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.tsx
47948
- var import_react197 = __toESM(require("react"));
47956
+ var import_react198 = __toESM(require("react"));
47949
47957
  var FileAttachmentPreview = ({
47950
47958
  attachment,
47951
47959
  handleRetry,
47952
47960
  removeAttachments
47953
47961
  }) => {
47954
47962
  const { t: t2 } = useTranslationContext("FilePreview");
47955
- return /* @__PURE__ */ import_react197.default.createElement(
47963
+ return /* @__PURE__ */ import_react198.default.createElement(
47956
47964
  "div",
47957
47965
  {
47958
47966
  className: "str-chat__attachment-preview-file",
47959
47967
  "data-testid": "attachment-preview-file"
47960
47968
  },
47961
- /* @__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 })),
47962
- /* @__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(
47963
47971
  "button",
47964
47972
  {
47965
47973
  "aria-label": t2("aria/Remove attachment"),
@@ -47968,18 +47976,18 @@ var FileAttachmentPreview = ({
47968
47976
  disabled: attachment.localMetadata?.uploadState === "uploading",
47969
47977
  onClick: () => attachment.localMetadata?.id && removeAttachments([attachment.localMetadata?.id])
47970
47978
  },
47971
- /* @__PURE__ */ import_react197.default.createElement(CloseIcon, null)
47979
+ /* @__PURE__ */ import_react198.default.createElement(CloseIcon, null)
47972
47980
  ),
47973
- attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react197.default.createElement(
47981
+ attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */ import_react198.default.createElement(
47974
47982
  "button",
47975
47983
  {
47976
47984
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-file",
47977
47985
  "data-testid": "file-preview-item-retry-button",
47978
47986
  onClick: () => handleRetry(attachment)
47979
47987
  },
47980
- /* @__PURE__ */ import_react197.default.createElement(RetryIcon, null)
47988
+ /* @__PURE__ */ import_react198.default.createElement(RetryIcon, null)
47981
47989
  ),
47982
- /* @__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(
47983
47991
  "a",
47984
47992
  {
47985
47993
  "aria-label": t2("aria/Download attachment"),
@@ -47990,14 +47998,14 @@ var FileAttachmentPreview = ({
47990
47998
  target: "_blank",
47991
47999
  title: t2("Download attachment {{ name }}", { name: attachment.title })
47992
48000
  },
47993
- /* @__PURE__ */ import_react197.default.createElement(DownloadIcon2, null)
47994
- ), 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 }))
47995
48003
  );
47996
48004
  };
47997
48005
 
47998
48006
  // src/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.tsx
47999
48007
  var import_clsx53 = __toESM(require("clsx"));
48000
- var import_react198 = __toESM(require("react"));
48008
+ var import_react199 = __toESM(require("react"));
48001
48009
  var ImageAttachmentPreview = ({
48002
48010
  attachment,
48003
48011
  handleRetry,
@@ -48005,11 +48013,11 @@ var ImageAttachmentPreview = ({
48005
48013
  }) => {
48006
48014
  const { t: t2 } = useTranslationContext("ImagePreviewItem");
48007
48015
  const { BaseImage: BaseImage3 = BaseImage } = useComponentContext("ImagePreview");
48008
- const [previewError, setPreviewError] = (0, import_react198.useState)(false);
48016
+ const [previewError, setPreviewError] = (0, import_react199.useState)(false);
48009
48017
  const { id, uploadState } = attachment.localMetadata ?? {};
48010
- const handleLoadError = (0, import_react198.useCallback)(() => setPreviewError(true), []);
48018
+ const handleLoadError = (0, import_react199.useCallback)(() => setPreviewError(true), []);
48011
48019
  const assetUrl = attachment.image_url || attachment.localMetadata.previewUri;
48012
- return /* @__PURE__ */ import_react198.default.createElement(
48020
+ return /* @__PURE__ */ import_react199.default.createElement(
48013
48021
  "div",
48014
48022
  {
48015
48023
  className: (0, import_clsx53.default)("str-chat__attachment-preview-image", {
@@ -48017,7 +48025,7 @@ var ImageAttachmentPreview = ({
48017
48025
  }),
48018
48026
  "data-testid": "attachment-preview-image"
48019
48027
  },
48020
- /* @__PURE__ */ import_react198.default.createElement(
48028
+ /* @__PURE__ */ import_react199.default.createElement(
48021
48029
  "button",
48022
48030
  {
48023
48031
  "aria-label": t2("aria/Remove attachment"),
@@ -48026,19 +48034,19 @@ var ImageAttachmentPreview = ({
48026
48034
  disabled: uploadState === "uploading",
48027
48035
  onClick: () => id && removeAttachments([id])
48028
48036
  },
48029
- /* @__PURE__ */ import_react198.default.createElement(CloseIcon, null)
48037
+ /* @__PURE__ */ import_react199.default.createElement(CloseIcon, null)
48030
48038
  ),
48031
- uploadState === "failed" && /* @__PURE__ */ import_react198.default.createElement(
48039
+ uploadState === "failed" && /* @__PURE__ */ import_react199.default.createElement(
48032
48040
  "button",
48033
48041
  {
48034
48042
  className: "str-chat__attachment-preview-error str-chat__attachment-preview-error-image",
48035
48043
  "data-testid": "image-preview-item-retry-button",
48036
48044
  onClick: () => handleRetry(attachment)
48037
48045
  },
48038
- /* @__PURE__ */ import_react198.default.createElement(RetryIcon, null)
48046
+ /* @__PURE__ */ import_react199.default.createElement(RetryIcon, null)
48039
48047
  ),
48040
- uploadState === "uploading" && /* @__PURE__ */ import_react198.default.createElement("div", { className: "str-chat__attachment-preview-image-loading" }, /* @__PURE__ */ import_react198.default.createElement(LoadingIndicatorIcon, { size: 17 })),
48041
- 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(
48042
48050
  BaseImage3,
48043
48051
  {
48044
48052
  alt: attachment.fallback,
@@ -48061,7 +48069,7 @@ var AttachmentPreviewList = ({
48061
48069
  VoiceRecordingPreview: VoiceRecordingPreview2 = VoiceRecordingPreview
48062
48070
  }) => {
48063
48071
  const { attachments, removeAttachments, uploadAttachment } = useMessageInputContext("AttachmentPreviewList");
48064
- 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(
48065
48073
  "div",
48066
48074
  {
48067
48075
  className: "str-chat__attachment-list-scroll-container",
@@ -48070,7 +48078,7 @@ var AttachmentPreviewList = ({
48070
48078
  attachments.map((attachment) => {
48071
48079
  if (isScrapedContent(attachment)) return null;
48072
48080
  if (isLocalVoiceRecordingAttachment(attachment)) {
48073
- return /* @__PURE__ */ import_react199.default.createElement(
48081
+ return /* @__PURE__ */ import_react200.default.createElement(
48074
48082
  VoiceRecordingPreview2,
48075
48083
  {
48076
48084
  attachment,
@@ -48080,7 +48088,7 @@ var AttachmentPreviewList = ({
48080
48088
  }
48081
48089
  );
48082
48090
  } else if (isLocalAudioAttachment(attachment)) {
48083
- return /* @__PURE__ */ import_react199.default.createElement(
48091
+ return /* @__PURE__ */ import_react200.default.createElement(
48084
48092
  AudioAttachmentPreview,
48085
48093
  {
48086
48094
  attachment,
@@ -48090,7 +48098,7 @@ var AttachmentPreviewList = ({
48090
48098
  }
48091
48099
  );
48092
48100
  } else if (isLocalMediaAttachment(attachment)) {
48093
- return /* @__PURE__ */ import_react199.default.createElement(
48101
+ return /* @__PURE__ */ import_react200.default.createElement(
48094
48102
  VideoAttachmentPreview,
48095
48103
  {
48096
48104
  attachment,
@@ -48100,7 +48108,7 @@ var AttachmentPreviewList = ({
48100
48108
  }
48101
48109
  );
48102
48110
  } else if (isLocalImageAttachment(attachment)) {
48103
- return /* @__PURE__ */ import_react199.default.createElement(
48111
+ return /* @__PURE__ */ import_react200.default.createElement(
48104
48112
  ImageAttachmentPreview2,
48105
48113
  {
48106
48114
  attachment,
@@ -48110,7 +48118,7 @@ var AttachmentPreviewList = ({
48110
48118
  }
48111
48119
  );
48112
48120
  } else if (isLocalFileAttachment(attachment)) {
48113
- return /* @__PURE__ */ import_react199.default.createElement(
48121
+ return /* @__PURE__ */ import_react200.default.createElement(
48114
48122
  FileAttachmentPreview2,
48115
48123
  {
48116
48124
  attachment,
@@ -48120,7 +48128,7 @@ var AttachmentPreviewList = ({
48120
48128
  }
48121
48129
  );
48122
48130
  } else if (isLocalAttachment(attachment)) {
48123
- return /* @__PURE__ */ import_react199.default.createElement(
48131
+ return /* @__PURE__ */ import_react200.default.createElement(
48124
48132
  UnsupportedAttachmentPreview2,
48125
48133
  {
48126
48134
  attachment,
@@ -48136,13 +48144,13 @@ var AttachmentPreviewList = ({
48136
48144
  };
48137
48145
 
48138
48146
  // src/components/MessageInput/CooldownTimer.tsx
48139
- var import_react201 = __toESM(require("react"));
48147
+ var import_react202 = __toESM(require("react"));
48140
48148
 
48141
48149
  // src/components/MessageInput/hooks/useTimer.ts
48142
- var import_react200 = require("react");
48150
+ var import_react201 = require("react");
48143
48151
  var useTimer = ({ startFrom }) => {
48144
- const [secondsLeft, setSecondsLeft] = (0, import_react200.useState)();
48145
- (0, import_react200.useEffect)(() => {
48152
+ const [secondsLeft, setSecondsLeft] = (0, import_react201.useState)();
48153
+ (0, import_react201.useEffect)(() => {
48146
48154
  let countdownTimeout;
48147
48155
  if (typeof secondsLeft === "number" && secondsLeft > 0) {
48148
48156
  countdownTimeout = setTimeout(() => {
@@ -48153,7 +48161,7 @@ var useTimer = ({ startFrom }) => {
48153
48161
  clearTimeout(countdownTimeout);
48154
48162
  };
48155
48163
  }, [secondsLeft]);
48156
- (0, import_react200.useEffect)(() => {
48164
+ (0, import_react201.useEffect)(() => {
48157
48165
  setSecondsLeft(startFrom ?? 0);
48158
48166
  }, [startFrom]);
48159
48167
  return secondsLeft;
@@ -48162,11 +48170,11 @@ var useTimer = ({ startFrom }) => {
48162
48170
  // src/components/MessageInput/CooldownTimer.tsx
48163
48171
  var CooldownTimer = ({ cooldownInterval }) => {
48164
48172
  const secondsLeft = useTimer({ startFrom: cooldownInterval });
48165
- 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);
48166
48174
  };
48167
48175
 
48168
48176
  // src/components/MessageInput/DefaultTriggerProvider.tsx
48169
- var import_react204 = __toESM(require("react"));
48177
+ var import_react205 = __toESM(require("react"));
48170
48178
 
48171
48179
  // src/components/MessageInput/hooks/useCommandTrigger.ts
48172
48180
  var useCommandTrigger = () => {
@@ -48236,7 +48244,7 @@ var useCommandTrigger = () => {
48236
48244
  };
48237
48245
 
48238
48246
  // src/components/EmoticonItem/EmoticonItem.tsx
48239
- var import_react202 = __toESM(require("react"));
48247
+ var import_react203 = __toESM(require("react"));
48240
48248
  var UnMemoizedEmoticonItem = (props) => {
48241
48249
  const { entity } = props;
48242
48250
  const hasEntity = Object.keys(entity).length;
@@ -48244,12 +48252,12 @@ var UnMemoizedEmoticonItem = (props) => {
48244
48252
  const renderName = () => {
48245
48253
  if (!hasEntity) return null;
48246
48254
  return hasEntity && itemParts.parts.map(
48247
- (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)
48248
48256
  );
48249
48257
  };
48250
- 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()));
48251
48259
  };
48252
- var EmoticonItem = import_react202.default.memo(
48260
+ var EmoticonItem = import_react203.default.memo(
48253
48261
  UnMemoizedEmoticonItem
48254
48262
  );
48255
48263
 
@@ -48279,7 +48287,7 @@ var useEmojiTrigger = (emojiSearchIndex) => ({
48279
48287
  });
48280
48288
 
48281
48289
  // src/components/MessageInput/hooks/useUserTrigger.ts
48282
- var import_react203 = require("react");
48290
+ var import_react204 = require("react");
48283
48291
  var import_lodash20 = __toESM(require("lodash.throttle"));
48284
48292
  var useUserTrigger = (params) => {
48285
48293
  const {
@@ -48289,12 +48297,12 @@ var useUserTrigger = (params) => {
48289
48297
  onSelectUser,
48290
48298
  useMentionsTransliteration
48291
48299
  } = params;
48292
- const [searching, setSearching] = (0, import_react203.useState)(false);
48300
+ const [searching, setSearching] = (0, import_react204.useState)(false);
48293
48301
  const { client, mutes } = useChatContext("useUserTrigger");
48294
48302
  const { channel } = useChannelStateContext("useUserTrigger");
48295
48303
  const { members } = channel.state;
48296
48304
  const { watchers } = channel.state;
48297
- const getMembersAndWatchers = (0, import_react203.useCallback)(() => {
48305
+ const getMembersAndWatchers = (0, import_react204.useCallback)(() => {
48298
48306
  const memberUsers = members ? Object.values(members).map(({ user }) => user) : [];
48299
48307
  const watcherUsers = watchers ? Object.values(watchers) : [];
48300
48308
  const users = [...memberUsers, ...watcherUsers];
@@ -48306,7 +48314,7 @@ var useUserTrigger = (params) => {
48306
48314
  });
48307
48315
  return Object.values(uniqueUsers);
48308
48316
  }, [members, watchers]);
48309
- const queryMembersThrottled = (0, import_react203.useCallback)(
48317
+ const queryMembersThrottled = (0, import_react204.useCallback)(
48310
48318
  (0, import_lodash20.default)(
48311
48319
  async (query, onReady) => {
48312
48320
  try {
@@ -48426,21 +48434,21 @@ var DefaultTriggerProvider = ({
48426
48434
  ...currentValue,
48427
48435
  autocompleteTriggers: defaultAutocompleteTriggers
48428
48436
  };
48429
- return /* @__PURE__ */ import_react204.default.createElement(MessageInputContextProvider, { value: newValue }, children);
48437
+ return /* @__PURE__ */ import_react205.default.createElement(MessageInputContextProvider, { value: newValue }, children);
48430
48438
  };
48431
48439
 
48432
48440
  // src/components/MessageInput/EditMessageForm.tsx
48433
- var import_react218 = __toESM(require("react"));
48441
+ var import_react219 = __toESM(require("react"));
48434
48442
 
48435
48443
  // src/components/MessageInput/MessageInputFlat.tsx
48436
- var import_react217 = __toESM(require("react"));
48444
+ var import_react218 = __toESM(require("react"));
48437
48445
 
48438
48446
  // src/components/MessageInput/SendButton.tsx
48439
- var import_react205 = __toESM(require("react"));
48447
+ var import_react206 = __toESM(require("react"));
48440
48448
  var SendButton = ({
48441
48449
  sendMessage,
48442
48450
  ...rest
48443
- }) => /* @__PURE__ */ import_react205.default.createElement(
48451
+ }) => /* @__PURE__ */ import_react206.default.createElement(
48444
48452
  "button",
48445
48453
  {
48446
48454
  "aria-label": "Send",
@@ -48450,17 +48458,17 @@ var SendButton = ({
48450
48458
  type: "button",
48451
48459
  ...rest
48452
48460
  },
48453
- /* @__PURE__ */ import_react205.default.createElement(SendIcon, null)
48461
+ /* @__PURE__ */ import_react206.default.createElement(SendIcon, null)
48454
48462
  );
48455
48463
 
48456
48464
  // src/components/MessageInput/StopAIGenerationButton.tsx
48457
- var import_react206 = __toESM(require("react"));
48465
+ var import_react207 = __toESM(require("react"));
48458
48466
  var StopAIGenerationButton = ({
48459
48467
  onClick,
48460
48468
  ...restProps
48461
48469
  }) => {
48462
48470
  const { t: t2 } = useTranslationContext();
48463
- return /* @__PURE__ */ import_react206.default.createElement(
48471
+ return /* @__PURE__ */ import_react207.default.createElement(
48464
48472
  "button",
48465
48473
  {
48466
48474
  "aria-label": t2("aria/Stop AI Generation"),
@@ -48473,21 +48481,21 @@ var StopAIGenerationButton = ({
48473
48481
  };
48474
48482
 
48475
48483
  // src/components/MessageInput/QuotedMessagePreview.tsx
48476
- var import_react211 = __toESM(require("react"));
48484
+ var import_react212 = __toESM(require("react"));
48477
48485
 
48478
48486
  // src/components/Message/FixedHeightMessage.tsx
48479
- var import_react209 = __toESM(require("react"));
48487
+ var import_react210 = __toESM(require("react"));
48480
48488
 
48481
48489
  // src/components/MML/MML.tsx
48482
- var import_react208 = __toESM(require("react"));
48483
- var MMLReact = import_react208.default.lazy(async () => {
48490
+ var import_react209 = __toESM(require("react"));
48491
+ var MMLReact = import_react209.default.lazy(async () => {
48484
48492
  const mml = await Promise.resolve().then(() => (init_mml_react_esm(), mml_react_esm_exports));
48485
48493
  return { default: mml.MML };
48486
48494
  });
48487
48495
  var MML3 = (props) => {
48488
48496
  const { actionHandler, align = "right", source } = props;
48489
48497
  const { theme } = useChatContext("MML");
48490
- 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(
48491
48499
  MMLReact,
48492
48500
  {
48493
48501
  className: `mml-align-${align}`,
@@ -48525,24 +48533,24 @@ var UnMemoizedFixedHeightMessage = (props) => {
48525
48533
  const handleDelete2 = useDeleteHandler(message);
48526
48534
  const role = useUserRole(message);
48527
48535
  const messageTextToRender = message?.i18n?.[`${userLanguage}_text`] || message?.text;
48528
- const renderedText = (0, import_react209.useMemo)(
48536
+ const renderedText = (0, import_react210.useMemo)(
48529
48537
  () => renderText(messageTextToRender, message.mentioned_users),
48530
48538
  [message.mentioned_users, messageTextToRender]
48531
48539
  );
48532
48540
  const userId = message.user?.id || "";
48533
- const userColor = (0, import_react209.useMemo)(() => getUserColor(theme, userId), [userId, theme]);
48534
- 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)(
48535
48543
  () => getMessageActions(["delete"], { canDelete: role.canDelete }),
48536
48544
  [role]
48537
48545
  );
48538
48546
  const images = message?.attachments?.filter(({ type }) => type === "image");
48539
- return /* @__PURE__ */ import_react209.default.createElement(
48547
+ return /* @__PURE__ */ import_react210.default.createElement(
48540
48548
  "div",
48541
48549
  {
48542
48550
  className: `str-chat__virtual-message__wrapper ${role.isMyMessage ? "str-chat__virtual-message__wrapper--me" : ""} ${groupedByUser ? "str-chat__virtual-message__wrapper--group" : ""}`,
48543
48551
  key: message.id
48544
48552
  },
48545
- message.user && /* @__PURE__ */ import_react209.default.createElement(
48553
+ message.user && /* @__PURE__ */ import_react210.default.createElement(
48546
48554
  Avatar,
48547
48555
  {
48548
48556
  image: message.user.image,
@@ -48550,7 +48558,7 @@ var UnMemoizedFixedHeightMessage = (props) => {
48550
48558
  user: message.user
48551
48559
  }
48552
48560
  ),
48553
- /* @__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(
48554
48562
  MessageActions,
48555
48563
  {
48556
48564
  customWrapperClass: "str-chat__virtual-message__actions",
@@ -48559,7 +48567,7 @@ var UnMemoizedFixedHeightMessage = (props) => {
48559
48567
  message,
48560
48568
  mine: () => role.isMyMessage
48561
48569
  }
48562
- ), /* @__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(
48563
48571
  MessageTimestamp,
48564
48572
  {
48565
48573
  customClass: "str-chat__message-simple-timestamp",
@@ -48568,12 +48576,12 @@ var UnMemoizedFixedHeightMessage = (props) => {
48568
48576
  ))))))
48569
48577
  );
48570
48578
  };
48571
- var FixedHeightMessage = import_react209.default.memo(
48579
+ var FixedHeightMessage = import_react210.default.memo(
48572
48580
  UnMemoizedFixedHeightMessage
48573
48581
  );
48574
48582
 
48575
48583
  // src/components/Message/StreamedMessageText.tsx
48576
- var import_react210 = __toESM(require("react"));
48584
+ var import_react211 = __toESM(require("react"));
48577
48585
  var StreamedMessageText = (props) => {
48578
48586
  const {
48579
48587
  message: messageFromProps,
@@ -48589,7 +48597,7 @@ var StreamedMessageText = (props) => {
48589
48597
  streamingLetterIntervalMs,
48590
48598
  text: text8
48591
48599
  });
48592
- return /* @__PURE__ */ import_react210.default.createElement(
48600
+ return /* @__PURE__ */ import_react211.default.createElement(
48593
48601
  MessageText,
48594
48602
  {
48595
48603
  message: { ...message, text: streamedMessageText },
@@ -48602,14 +48610,14 @@ var StreamedMessageText = (props) => {
48602
48610
  var QuotedMessagePreviewHeader = () => {
48603
48611
  const { setQuotedMessage } = useChannelActionContext("QuotedMessagePreview");
48604
48612
  const { t: t2 } = useTranslationContext("QuotedMessagePreview");
48605
- 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(
48606
48614
  "button",
48607
48615
  {
48608
48616
  "aria-label": t2("aria/Cancel Reply"),
48609
48617
  className: "str-chat__quoted-message-remove",
48610
48618
  onClick: () => setQuotedMessage(void 0)
48611
48619
  },
48612
- /* @__PURE__ */ import_react211.default.createElement(CloseIcon, null)
48620
+ /* @__PURE__ */ import_react212.default.createElement(CloseIcon, null)
48613
48621
  ));
48614
48622
  };
48615
48623
  var QuotedMessagePreview = ({
@@ -48620,23 +48628,23 @@ var QuotedMessagePreview = ({
48620
48628
  const { Attachment: Attachment2 = Attachment, Avatar: Avatar2 = Avatar } = useComponentContext("QuotedMessagePreview");
48621
48629
  const { userLanguage } = useTranslationContext("QuotedMessagePreview");
48622
48630
  const quotedMessageText = quotedMessage.i18n?.[`${userLanguage}_text`] || quotedMessage.text;
48623
- const renderedText = (0, import_react211.useMemo)(
48631
+ const renderedText = (0, import_react212.useMemo)(
48624
48632
  () => renderText2(quotedMessageText, quotedMessage.mentioned_users),
48625
48633
  [quotedMessage.mentioned_users, quotedMessageText, renderText2]
48626
48634
  );
48627
- const quotedMessageAttachment = (0, import_react211.useMemo)(() => {
48635
+ const quotedMessageAttachment = (0, import_react212.useMemo)(() => {
48628
48636
  const [attachment] = quotedMessage.attachments ?? [];
48629
48637
  return attachment ? [attachment] : [];
48630
48638
  }, [quotedMessage.attachments]);
48631
48639
  if (!quotedMessageText && !quotedMessageAttachment) return null;
48632
48640
  const poll = quotedMessage.poll_id && client.polls.fromState(quotedMessage.poll_id);
48633
- return /* @__PURE__ */ import_react211.default.createElement(
48641
+ return /* @__PURE__ */ import_react212.default.createElement(
48634
48642
  "div",
48635
48643
  {
48636
48644
  className: "str-chat__quoted-message-preview",
48637
48645
  "data-testid": "quoted-message-preview"
48638
48646
  },
48639
- quotedMessage.user && /* @__PURE__ */ import_react211.default.createElement(
48647
+ quotedMessage.user && /* @__PURE__ */ import_react212.default.createElement(
48640
48648
  Avatar2,
48641
48649
  {
48642
48650
  className: "str-chat__avatar--quoted-message-sender",
@@ -48645,7 +48653,7 @@ var QuotedMessagePreview = ({
48645
48653
  user: quotedMessage.user
48646
48654
  }
48647
48655
  ),
48648
- /* @__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(
48649
48657
  "div",
48650
48658
  {
48651
48659
  className: "str-chat__quoted-message-text",
@@ -48658,20 +48666,20 @@ var QuotedMessagePreview = ({
48658
48666
 
48659
48667
  // src/components/MessageInput/LinkPreviewList.tsx
48660
48668
  var import_clsx54 = __toESM(require("clsx"));
48661
- var import_react212 = __toESM(require("react"));
48669
+ var import_react213 = __toESM(require("react"));
48662
48670
  var LinkPreviewList = ({ linkPreviews }) => {
48663
48671
  const { quotedMessage } = useChannelStateContext();
48664
48672
  const showLinkPreviews = linkPreviews.length > 0 && !quotedMessage;
48665
48673
  if (!showLinkPreviews) return null;
48666
- return /* @__PURE__ */ import_react212.default.createElement("div", { className: "str-chat__link-preview-list" }, Array.from(linkPreviews.values()).map(
48667
- (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
48668
48676
  ));
48669
48677
  };
48670
48678
  var LinkPreviewCard = ({ linkPreview }) => {
48671
48679
  const { dismissLinkPreview } = useMessageInputContext();
48672
48680
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers();
48673
- const [referenceElement, setReferenceElement] = (0, import_react212.useState)(null);
48674
- return /* @__PURE__ */ import_react212.default.createElement(
48681
+ const [referenceElement, setReferenceElement] = (0, import_react213.useState)(null);
48682
+ return /* @__PURE__ */ import_react213.default.createElement(
48675
48683
  "div",
48676
48684
  {
48677
48685
  className: (0, import_clsx54.default)("str-chat__link-preview-card", {
@@ -48679,7 +48687,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
48679
48687
  }),
48680
48688
  "data-testid": "link-preview-card"
48681
48689
  },
48682
- /* @__PURE__ */ import_react212.default.createElement(
48690
+ /* @__PURE__ */ import_react213.default.createElement(
48683
48691
  PopperTooltip,
48684
48692
  {
48685
48693
  offset: [0, 5],
@@ -48688,7 +48696,7 @@ var LinkPreviewCard = ({ linkPreview }) => {
48688
48696
  },
48689
48697
  linkPreview.og_scrape_url
48690
48698
  ),
48691
- /* @__PURE__ */ import_react212.default.createElement(
48699
+ /* @__PURE__ */ import_react213.default.createElement(
48692
48700
  "div",
48693
48701
  {
48694
48702
  className: "str-chat__link-preview-card__icon-container",
@@ -48696,23 +48704,23 @@ var LinkPreviewCard = ({ linkPreview }) => {
48696
48704
  onMouseLeave: handleLeave,
48697
48705
  ref: setReferenceElement
48698
48706
  },
48699
- /* @__PURE__ */ import_react212.default.createElement(LinkIcon, null)
48707
+ /* @__PURE__ */ import_react213.default.createElement(LinkIcon, null)
48700
48708
  ),
48701
- /* @__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)),
48702
- /* @__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(
48703
48711
  "button",
48704
48712
  {
48705
48713
  className: "str-chat__link-preview-card__dismiss-button",
48706
48714
  "data-testid": "link-preview-card-dismiss-btn",
48707
48715
  onClick: () => dismissLinkPreview(linkPreview)
48708
48716
  },
48709
- /* @__PURE__ */ import_react212.default.createElement(CloseIcon, null)
48717
+ /* @__PURE__ */ import_react213.default.createElement(CloseIcon, null)
48710
48718
  )
48711
48719
  );
48712
48720
  };
48713
48721
 
48714
48722
  // src/components/ChatAutoComplete/ChatAutoComplete.tsx
48715
- var import_react213 = __toESM(require("react"));
48723
+ var import_react214 = __toESM(require("react"));
48716
48724
  var UnMemoizedChatAutoComplete = (props) => {
48717
48725
  const {
48718
48726
  AutocompleteSuggestionItem: SuggestionItem,
@@ -48734,7 +48742,7 @@ var UnMemoizedChatAutoComplete = (props) => {
48734
48742
  const [firstSkin] = emoji.skins ?? [];
48735
48743
  return emoji.native ?? firstSkin.native;
48736
48744
  };
48737
- const updateInnerRef = (0, import_react213.useCallback)(
48745
+ const updateInnerRef = (0, import_react214.useCallback)(
48738
48746
  (ref) => {
48739
48747
  if (innerRef) {
48740
48748
  innerRef.current = ref;
@@ -48742,7 +48750,7 @@ var UnMemoizedChatAutoComplete = (props) => {
48742
48750
  },
48743
48751
  [innerRef]
48744
48752
  );
48745
- return /* @__PURE__ */ import_react213.default.createElement(
48753
+ return /* @__PURE__ */ import_react214.default.createElement(
48746
48754
  ReactTextareaAutocomplete,
48747
48755
  {
48748
48756
  additionalTextareaProps: messageInput.additionalTextareaProps,
@@ -48777,15 +48785,15 @@ var UnMemoizedChatAutoComplete = (props) => {
48777
48785
  }
48778
48786
  );
48779
48787
  };
48780
- var ChatAutoComplete = import_react213.default.memo(
48788
+ var ChatAutoComplete = import_react214.default.memo(
48781
48789
  UnMemoizedChatAutoComplete
48782
48790
  );
48783
48791
 
48784
48792
  // src/components/AIStateIndicator/AIStateIndicator.tsx
48785
- var import_react215 = __toESM(require("react"));
48793
+ var import_react216 = __toESM(require("react"));
48786
48794
 
48787
48795
  // src/components/AIStateIndicator/hooks/useAIState.ts
48788
- var import_react214 = require("react");
48796
+ var import_react215 = require("react");
48789
48797
  var AIStates = {
48790
48798
  Error: "AI_STATE_ERROR",
48791
48799
  ExternalSources: "AI_STATE_EXTERNAL_SOURCES",
@@ -48794,8 +48802,8 @@ var AIStates = {
48794
48802
  Thinking: "AI_STATE_THINKING"
48795
48803
  };
48796
48804
  var useAIState = (channel) => {
48797
- const [aiState, setAiState] = (0, import_react214.useState)(AIStates.Idle);
48798
- (0, import_react214.useEffect)(() => {
48805
+ const [aiState, setAiState] = (0, import_react215.useState)(AIStates.Idle);
48806
+ (0, import_react215.useEffect)(() => {
48799
48807
  if (!channel) {
48800
48808
  return;
48801
48809
  }
@@ -48835,20 +48843,20 @@ var AIStateIndicator = ({
48835
48843
  [AIStates.Thinking]: t2("Thinking..."),
48836
48844
  [AIStates.Generating]: t2("Generating...")
48837
48845
  };
48838
- 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;
48839
48847
  };
48840
48848
 
48841
48849
  // src/components/MessageInput/WithDragAndDropUpload.tsx
48842
- var import_react216 = __toESM(require("react"));
48850
+ var import_react217 = __toESM(require("react"));
48843
48851
  var import_react_dropzone2 = require("react-dropzone");
48844
48852
  var import_clsx55 = __toESM(require("clsx"));
48845
- var DragAndDropUploadContext = import_react216.default.createContext({
48853
+ var DragAndDropUploadContext = import_react217.default.createContext({
48846
48854
  subscribeToDrop: null
48847
48855
  });
48848
- var useDragAndDropUploadContext = () => (0, import_react216.useContext)(DragAndDropUploadContext);
48856
+ var useDragAndDropUploadContext = () => (0, import_react217.useContext)(DragAndDropUploadContext);
48849
48857
  var useRegisterDropHandlers = ({ uploadNewFiles }) => {
48850
48858
  const { subscribeToDrop } = useDragAndDropUploadContext();
48851
- (0, import_react216.useEffect)(() => {
48859
+ (0, import_react217.useEffect)(() => {
48852
48860
  const unsubscribe = subscribeToDrop?.(uploadNewFiles);
48853
48861
  return unsubscribe;
48854
48862
  }, [subscribeToDrop, uploadNewFiles]);
@@ -48859,26 +48867,26 @@ var WithDragAndDropUpload = ({
48859
48867
  component: Component2 = "div",
48860
48868
  style
48861
48869
  }) => {
48862
- const dropHandlersRef = (0, import_react216.useRef)(/* @__PURE__ */ new Set());
48870
+ const dropHandlersRef = (0, import_react217.useRef)(/* @__PURE__ */ new Set());
48863
48871
  const { acceptedFiles = [], multipleUploads } = useChannelStateContext();
48864
48872
  const { t: t2 } = useTranslationContext();
48865
48873
  const messageInputContext = useMessageInputContext();
48866
48874
  const dragAndDropUploadContext = useDragAndDropUploadContext();
48867
48875
  const isWithinMessageInputContext = typeof messageInputContext.uploadNewFiles === "function";
48868
- const accept = (0, import_react216.useMemo)(
48876
+ const accept = (0, import_react217.useMemo)(
48869
48877
  () => acceptedFiles.reduce((mediaTypeMap, mediaType) => {
48870
48878
  mediaTypeMap[mediaType] ?? (mediaTypeMap[mediaType] = []);
48871
48879
  return mediaTypeMap;
48872
48880
  }, {}),
48873
48881
  [acceptedFiles]
48874
48882
  );
48875
- const subscribeToDrop = (0, import_react216.useCallback)((fn) => {
48883
+ const subscribeToDrop = (0, import_react217.useCallback)((fn) => {
48876
48884
  dropHandlersRef.current.add(fn);
48877
48885
  return () => {
48878
48886
  dropHandlersRef.current.delete(fn);
48879
48887
  };
48880
48888
  }, []);
48881
- const handleDrop = (0, import_react216.useCallback)((files) => {
48889
+ const handleDrop = (0, import_react217.useCallback)((files) => {
48882
48890
  dropHandlersRef.current.forEach((fn) => fn(files));
48883
48891
  }, []);
48884
48892
  const { getRootProps, isDragActive, isDragReject } = (0, import_react_dropzone2.useDropzone)({
@@ -48891,24 +48899,24 @@ var WithDragAndDropUpload = ({
48891
48899
  onDrop: isWithinMessageInputContext ? messageInputContext.uploadNewFiles : handleDrop
48892
48900
  });
48893
48901
  if (dragAndDropUploadContext.subscribeToDrop !== null) {
48894
- return /* @__PURE__ */ import_react216.default.createElement(Component2, { className }, children);
48902
+ return /* @__PURE__ */ import_react217.default.createElement(Component2, { className }, children);
48895
48903
  }
48896
- return /* @__PURE__ */ import_react216.default.createElement(
48904
+ return /* @__PURE__ */ import_react217.default.createElement(
48897
48905
  DragAndDropUploadContext.Provider,
48898
48906
  {
48899
48907
  value: {
48900
48908
  subscribeToDrop
48901
48909
  }
48902
48910
  },
48903
- /* @__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(
48904
48912
  "div",
48905
48913
  {
48906
48914
  className: (0, import_clsx55.default)("str-chat__dropzone-container", {
48907
48915
  "str-chat__dropzone-container--not-accepted": isDragReject
48908
48916
  })
48909
48917
  },
48910
- !isDragReject && /* @__PURE__ */ import_react216.default.createElement("p", null, t2("Drag your files here")),
48911
- 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"))
48912
48920
  ), children)
48913
48921
  );
48914
48922
  };
@@ -48948,19 +48956,19 @@ var MessageInputFlat = () => {
48948
48956
  const { setQuotedMessage } = useChannelActionContext("MessageInputFlat");
48949
48957
  const { channel } = useChatContext("MessageInputFlat");
48950
48958
  const { aiState } = useAIState(channel);
48951
- const stopGenerating = (0, import_react217.useCallback)(() => channel?.stopAIResponse(), [channel]);
48959
+ const stopGenerating = (0, import_react218.useCallback)(() => channel?.stopAIResponse(), [channel]);
48952
48960
  const [
48953
48961
  showRecordingPermissionDeniedNotification,
48954
48962
  setShowRecordingPermissionDeniedNotification
48955
- ] = (0, import_react217.useState)(false);
48956
- const closePermissionDeniedNotification = (0, import_react217.useCallback)(() => {
48963
+ ] = (0, import_react218.useState)(false);
48964
+ const closePermissionDeniedNotification = (0, import_react218.useCallback)(() => {
48957
48965
  setShowRecordingPermissionDeniedNotification(false);
48958
48966
  }, []);
48959
- const failedUploadsCount = (0, import_react217.useMemo)(
48967
+ const failedUploadsCount = (0, import_react218.useMemo)(
48960
48968
  () => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
48961
48969
  [attachments]
48962
48970
  );
48963
- (0, import_react217.useEffect)(() => {
48971
+ (0, import_react218.useEffect)(() => {
48964
48972
  const handleQuotedMessageUpdate = (e2) => {
48965
48973
  if (e2.message?.id !== quotedMessage?.id) return;
48966
48974
  if (e2.type === "message.deleted") {
@@ -48976,31 +48984,31 @@ var MessageInputFlat = () => {
48976
48984
  channel?.off("message.updated", handleQuotedMessageUpdate);
48977
48985
  };
48978
48986
  }, [channel, quotedMessage]);
48979
- if (recordingController.recordingState) return /* @__PURE__ */ import_react217.default.createElement(AudioRecorder2, null);
48987
+ if (recordingController.recordingState) return /* @__PURE__ */ import_react218.default.createElement(AudioRecorder2, null);
48980
48988
  const displayQuotedMessage = !message && quotedMessage && quotedMessage.parent_id === parent?.id;
48981
48989
  const recordingEnabled = !!(recordingController.recorder && navigator.mediaDevices);
48982
48990
  const isRecording = !!recordingController.recordingState;
48983
48991
  const StopAIGenerationButton2 = StopAIGenerationButtonOverride === void 0 ? StopAIGenerationButton : StopAIGenerationButtonOverride;
48984
48992
  const shouldDisplayStopAIGeneration = [AIStates.Thinking, AIStates.Generating].includes(aiState) && !!StopAIGenerationButton2;
48985
- 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(
48986
48994
  RecordingPermissionDeniedNotification2,
48987
48995
  {
48988
48996
  onClose: closePermissionDeniedNotification,
48989
48997
  permissionName: "microphone" /* MIC */
48990
48998
  }
48991
- ), 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(
48992
49000
  CooldownTimer2,
48993
49001
  {
48994
49002
  cooldownInterval: cooldownRemaining,
48995
49003
  setCooldownRemaining
48996
49004
  }
48997
- ) : /* @__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(
48998
49006
  SendButton2,
48999
49007
  {
49000
49008
  disabled: !numberOfUploads && !text8.length && attachments.length - failedUploadsCount === 0,
49001
49009
  sendMessage: handleSubmit
49002
49010
  }
49003
- ), recordingEnabled && /* @__PURE__ */ import_react217.default.createElement(
49011
+ ), recordingEnabled && /* @__PURE__ */ import_react218.default.createElement(
49004
49012
  StartRecordingAudioButton2,
49005
49013
  {
49006
49014
  disabled: isRecording || !asyncMessagesMultiSendEnabled && attachments.some(
@@ -49018,22 +49026,22 @@ var MessageInputFlat = () => {
49018
49026
  var EditMessageForm = () => {
49019
49027
  const { t: t2 } = useTranslationContext("EditMessageForm");
49020
49028
  const { clearEditingState, handleSubmit } = useMessageInputContext("EditMessageForm");
49021
- (0, import_react218.useEffect)(() => {
49029
+ (0, import_react219.useEffect)(() => {
49022
49030
  const onKeyDown = (event) => {
49023
49031
  if (event.key === "Escape") clearEditingState?.();
49024
49032
  };
49025
49033
  document.addEventListener("keydown", onKeyDown);
49026
49034
  return () => document.removeEventListener("keydown", onKeyDown);
49027
49035
  }, [clearEditingState]);
49028
- return /* @__PURE__ */ import_react218.default.createElement(
49036
+ return /* @__PURE__ */ import_react219.default.createElement(
49029
49037
  "form",
49030
49038
  {
49031
49039
  autoComplete: "off",
49032
49040
  className: "str-chat__edit-message-form",
49033
49041
  onSubmit: handleSubmit
49034
49042
  },
49035
- /* @__PURE__ */ import_react218.default.createElement(MessageInputFlat, null),
49036
- /* @__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(
49037
49045
  "button",
49038
49046
  {
49039
49047
  className: "str-chat__edit-message-cancel",
@@ -49041,7 +49049,7 @@ var EditMessageForm = () => {
49041
49049
  onClick: clearEditingState
49042
49050
  },
49043
49051
  t2("Cancel")
49044
- ), /* @__PURE__ */ import_react218.default.createElement(
49052
+ ), /* @__PURE__ */ import_react219.default.createElement(
49045
49053
  "button",
49046
49054
  {
49047
49055
  className: "str-chat__edit-message-send",
@@ -49054,7 +49062,7 @@ var EditMessageForm = () => {
49054
49062
  };
49055
49063
 
49056
49064
  // src/components/MessageInput/MessageInput.tsx
49057
- var import_react219 = __toESM(require("react"));
49065
+ var import_react220 = __toESM(require("react"));
49058
49066
  var MessageInputProvider = (props) => {
49059
49067
  const cooldownTimerState = useCooldownTimer();
49060
49068
  const messageInputState = useMessageInputState(props);
@@ -49066,44 +49074,45 @@ var MessageInputProvider = (props) => {
49066
49074
  emojiSearchIndex: props.emojiSearchIndex ?? emojiSearchIndex
49067
49075
  });
49068
49076
  useRegisterDropHandlers(messageInputContextValue);
49069
- return /* @__PURE__ */ import_react219.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
49077
+ return /* @__PURE__ */ import_react220.default.createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children);
49070
49078
  };
49071
49079
  var UnMemoizedMessageInput = (props) => {
49072
49080
  const { Input: PropInput } = props;
49073
49081
  const { dragAndDropWindow } = useChannelStateContext();
49074
49082
  const { Input: ContextInput, TriggerProvider = DefaultTriggerProvider } = useComponentContext("MessageInput");
49083
+ const id = useStableId();
49075
49084
  const Input3 = PropInput || ContextInput || MessageInputFlat;
49076
- 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}`;
49077
49086
  if (dragAndDropWindow)
49078
- return /* @__PURE__ */ import_react219.default.createElement(DialogManagerProvider, { id: dialogManagerId }, /* @__PURE__ */ import_react219.default.createElement(TriggerProvider, null, /* @__PURE__ */ import_react219.default.createElement(Input3, null)));
49079
- 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))));
49080
49089
  };
49081
- var MessageInput = import_react219.default.memo(
49090
+ var MessageInput = import_react220.default.memo(
49082
49091
  UnMemoizedMessageInput
49083
49092
  );
49084
49093
 
49085
49094
  // src/components/Reactions/ReactionsList.tsx
49086
- var import_react223 = __toESM(require("react"));
49095
+ var import_react224 = __toESM(require("react"));
49087
49096
  var import_clsx57 = __toESM(require("clsx"));
49088
49097
 
49089
49098
  // src/components/Reactions/ReactionsListModal.tsx
49090
- var import_react221 = __toESM(require("react"));
49099
+ var import_react222 = __toESM(require("react"));
49091
49100
  var import_clsx56 = __toESM(require("clsx"));
49092
49101
 
49093
49102
  // src/components/Reactions/hooks/useFetchReactions.ts
49094
- var import_react220 = require("react");
49103
+ var import_react221 = require("react");
49095
49104
  function useFetchReactions(options) {
49096
49105
  const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
49097
- const [reactions, setReactions] = (0, import_react220.useState)([]);
49106
+ const [reactions, setReactions] = (0, import_react221.useState)([]);
49098
49107
  const {
49099
49108
  handleFetchReactions: propHandleFetchReactions,
49100
49109
  reactionType,
49101
49110
  shouldFetch,
49102
49111
  sort
49103
49112
  } = options;
49104
- const [isLoading, setIsLoading] = (0, import_react220.useState)(shouldFetch);
49113
+ const [isLoading, setIsLoading] = (0, import_react221.useState)(shouldFetch);
49105
49114
  const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
49106
- (0, import_react220.useEffect)(() => {
49115
+ (0, import_react221.useEffect)(() => {
49107
49116
  if (!shouldFetch) {
49108
49117
  return;
49109
49118
  }
@@ -49159,24 +49168,24 @@ function ReactionsListModal({
49159
49168
  shouldFetch: modalProps.open,
49160
49169
  sort: reactionDetailsSort
49161
49170
  });
49162
- const reactionDetailsWithLegacyFallback = (0, import_react221.useMemo)(
49171
+ const reactionDetailsWithLegacyFallback = (0, import_react222.useMemo)(
49163
49172
  () => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
49164
49173
  [legacySortReactionDetails, reactionDetails]
49165
49174
  );
49166
- return /* @__PURE__ */ import_react221.default.createElement(
49175
+ return /* @__PURE__ */ import_react222.default.createElement(
49167
49176
  Modal,
49168
49177
  {
49169
49178
  ...modalProps,
49170
49179
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-modal", modalProps.className)
49171
49180
  },
49172
- /* @__PURE__ */ import_react221.default.createElement(
49181
+ /* @__PURE__ */ import_react222.default.createElement(
49173
49182
  "div",
49174
49183
  {
49175
49184
  className: "str-chat__message-reactions-details",
49176
49185
  "data-testid": "reactions-list-modal"
49177
49186
  },
49178
- /* @__PURE__ */ import_react221.default.createElement("div", { className: "str-chat__message-reactions-details-reaction-types" }, reactions.map(
49179
- ({ 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(
49180
49189
  "div",
49181
49190
  {
49182
49191
  className: (0, import_clsx56.default)("str-chat__message-reactions-details-reaction-type", {
@@ -49188,25 +49197,25 @@ function ReactionsListModal({
49188
49197
  reactionType
49189
49198
  )
49190
49199
  },
49191
- /* @__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)),
49192
49201
  "\xA0",
49193
- /* @__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)
49194
49203
  )
49195
49204
  )),
49196
- 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)),
49197
- /* @__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(
49198
49207
  "div",
49199
49208
  {
49200
49209
  className: "str-chat__message-reactions-details-reacting-users",
49201
49210
  "data-testid": "all-reacting-users"
49202
49211
  },
49203
- 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(
49204
49213
  "div",
49205
49214
  {
49206
49215
  className: "str-chat__message-reactions-details-reacting-user",
49207
49216
  key: user?.id
49208
49217
  },
49209
- /* @__PURE__ */ import_react221.default.createElement(
49218
+ /* @__PURE__ */ import_react222.default.createElement(
49210
49219
  Avatar,
49211
49220
  {
49212
49221
  className: "stream-chat__avatar--reaction",
@@ -49215,7 +49224,7 @@ function ReactionsListModal({
49215
49224
  name: user?.name || user?.id
49216
49225
  }
49217
49226
  ),
49218
- /* @__PURE__ */ import_react221.default.createElement(
49227
+ /* @__PURE__ */ import_react222.default.createElement(
49219
49228
  "span",
49220
49229
  {
49221
49230
  className: "str-chat__user-item--name",
@@ -49230,7 +49239,7 @@ function ReactionsListModal({
49230
49239
  }
49231
49240
 
49232
49241
  // src/components/Reactions/hooks/useProcessReactions.tsx
49233
- var import_react222 = require("react");
49242
+ var import_react223 = require("react");
49234
49243
  var defaultReactionsSort = (a2, b) => {
49235
49244
  if (a2.firstReactionAt && b.firstReactionAt) {
49236
49245
  return +a2.firstReactionAt - +b.firstReactionAt;
@@ -49252,19 +49261,19 @@ var useProcessReactions = (params) => {
49252
49261
  const latestReactions = propReactions || message.latest_reactions;
49253
49262
  const ownReactions = propOwnReactions || message?.own_reactions;
49254
49263
  const reactionGroups = propReactionGroups || message?.reaction_groups;
49255
- const isOwnReaction = (0, import_react222.useCallback)(
49264
+ const isOwnReaction = (0, import_react223.useCallback)(
49256
49265
  (reactionType) => ownReactions?.some((reaction) => reaction.type === reactionType) ?? false,
49257
49266
  [ownReactions]
49258
49267
  );
49259
- const getEmojiByReactionType = (0, import_react222.useCallback)(
49268
+ const getEmojiByReactionType = (0, import_react223.useCallback)(
49260
49269
  (reactionType) => reactionOptions.find(({ type }) => type === reactionType)?.Component ?? null,
49261
49270
  [reactionOptions]
49262
49271
  );
49263
- const isSupportedReaction = (0, import_react222.useCallback)(
49272
+ const isSupportedReaction = (0, import_react223.useCallback)(
49264
49273
  (reactionType) => reactionOptions.some((reactionOption) => reactionOption.type === reactionType),
49265
49274
  [reactionOptions]
49266
49275
  );
49267
- const getLatestReactedUserNames = (0, import_react222.useCallback)(
49276
+ const getLatestReactedUserNames = (0, import_react223.useCallback)(
49268
49277
  (reactionType) => latestReactions?.flatMap((reaction) => {
49269
49278
  if (reactionType && reactionType === reaction.type) {
49270
49279
  const username = reaction.user?.name || reaction.user?.id;
@@ -49274,7 +49283,7 @@ var useProcessReactions = (params) => {
49274
49283
  }) ?? [],
49275
49284
  [latestReactions]
49276
49285
  );
49277
- const existingReactions = (0, import_react222.useMemo)(() => {
49286
+ const existingReactions = (0, import_react223.useMemo)(() => {
49278
49287
  if (!reactionGroups) {
49279
49288
  return [];
49280
49289
  }
@@ -49308,7 +49317,7 @@ var useProcessReactions = (params) => {
49308
49317
  sortReactions
49309
49318
  ]);
49310
49319
  const hasReactions = existingReactions.length > 0;
49311
- const totalReactionCount = (0, import_react222.useMemo)(
49320
+ const totalReactionCount = (0, import_react223.useMemo)(
49312
49321
  () => existingReactions.reduce((total, { reactionCount }) => total + reactionCount, 0),
49313
49322
  [existingReactions]
49314
49323
  );
@@ -49330,7 +49339,7 @@ var UnMemoizedReactionsList = (props) => {
49330
49339
  ...rest
49331
49340
  } = props;
49332
49341
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
49333
- const [selectedReactionType, setSelectedReactionType] = (0, import_react223.useState)(null);
49342
+ const [selectedReactionType, setSelectedReactionType] = (0, import_react224.useState)(null);
49334
49343
  const { t: t2 } = useTranslationContext("ReactionsList");
49335
49344
  const { ReactionsListModal: ReactionsListModal2 = ReactionsListModal } = useComponentContext();
49336
49345
  const handleReactionButtonClick = (reactionType) => {
@@ -49340,7 +49349,7 @@ var UnMemoizedReactionsList = (props) => {
49340
49349
  setSelectedReactionType(reactionType);
49341
49350
  };
49342
49351
  if (!hasReactions) return null;
49343
- 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(
49344
49353
  "div",
49345
49354
  {
49346
49355
  "aria-label": t2("aria/Reaction list"),
@@ -49351,8 +49360,8 @@ var UnMemoizedReactionsList = (props) => {
49351
49360
  "data-testid": "reaction-list",
49352
49361
  role: "figure"
49353
49362
  },
49354
- /* @__PURE__ */ import_react223.default.createElement("ul", { className: "str-chat__message-reactions" }, existingReactions.map(
49355
- ({ 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(
49356
49365
  "li",
49357
49366
  {
49358
49367
  className: (0, import_clsx57.default)("str-chat__message-reaction", {
@@ -49360,7 +49369,7 @@ var UnMemoizedReactionsList = (props) => {
49360
49369
  }),
49361
49370
  key: reactionType
49362
49371
  },
49363
- /* @__PURE__ */ import_react223.default.createElement(
49372
+ /* @__PURE__ */ import_react224.default.createElement(
49364
49373
  "button",
49365
49374
  {
49366
49375
  "aria-label": `Reactions: ${reactionType}`,
@@ -49368,9 +49377,9 @@ var UnMemoizedReactionsList = (props) => {
49368
49377
  onClick: () => handleReactionButtonClick(reactionType),
49369
49378
  type: "button"
49370
49379
  },
49371
- /* @__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)),
49372
49381
  "\xA0",
49373
- /* @__PURE__ */ import_react223.default.createElement(
49382
+ /* @__PURE__ */ import_react224.default.createElement(
49374
49383
  "span",
49375
49384
  {
49376
49385
  className: "str-chat__message-reaction-count",
@@ -49380,8 +49389,8 @@ var UnMemoizedReactionsList = (props) => {
49380
49389
  )
49381
49390
  )
49382
49391
  )
49383
- ), /* @__PURE__ */ import_react223.default.createElement("li", null, /* @__PURE__ */ import_react223.default.createElement("span", { className: "str-chat__reaction-list--counter" }, totalReactionCount)))
49384
- ), 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(
49385
49394
  ReactionsListModal2,
49386
49395
  {
49387
49396
  handleFetchReactions,
@@ -49394,12 +49403,12 @@ var UnMemoizedReactionsList = (props) => {
49394
49403
  }
49395
49404
  ));
49396
49405
  };
49397
- var ReactionsList = import_react223.default.memo(
49406
+ var ReactionsList = import_react224.default.memo(
49398
49407
  UnMemoizedReactionsList
49399
49408
  );
49400
49409
 
49401
49410
  // src/components/Reactions/SimpleReactionsList.tsx
49402
- var import_react224 = __toESM(require("react"));
49411
+ var import_react225 = __toESM(require("react"));
49403
49412
  var import_clsx58 = __toESM(require("clsx"));
49404
49413
  var WithTooltip = ({
49405
49414
  children,
@@ -49407,12 +49416,12 @@ var WithTooltip = ({
49407
49416
  onMouseLeave,
49408
49417
  title
49409
49418
  }) => {
49410
- const [referenceElement, setReferenceElement] = (0, import_react224.useState)(null);
49419
+ const [referenceElement, setReferenceElement] = (0, import_react225.useState)(null);
49411
49420
  const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers({
49412
49421
  onMouseEnter,
49413
49422
  onMouseLeave
49414
49423
  });
49415
- 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(
49416
49425
  "span",
49417
49426
  {
49418
49427
  onMouseEnter: handleEnter,
@@ -49428,7 +49437,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
49428
49437
  const { existingReactions, hasReactions, totalReactionCount } = useProcessReactions(rest);
49429
49438
  const handleReaction = propHandleReaction || contextHandleReaction;
49430
49439
  if (!hasReactions) return null;
49431
- 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(
49432
49441
  "ul",
49433
49442
  {
49434
49443
  className: "str-chat__simple-reactions-list str-chat__message-reactions",
@@ -49437,7 +49446,7 @@ var UnMemoizedSimpleReactionsList = (props) => {
49437
49446
  existingReactions.map(
49438
49447
  ({ EmojiComponent, isOwnReaction, latestReactedUserNames, reactionType }) => {
49439
49448
  const tooltipContent = latestReactedUserNames.join(", ");
49440
- return EmojiComponent && /* @__PURE__ */ import_react224.default.createElement(
49449
+ return EmojiComponent && /* @__PURE__ */ import_react225.default.createElement(
49441
49450
  "li",
49442
49451
  {
49443
49452
  className: (0, import_clsx58.default)("str-chat__simple-reactions-list-item", {
@@ -49447,19 +49456,19 @@ var UnMemoizedSimpleReactionsList = (props) => {
49447
49456
  onClick: (event) => handleReaction(reactionType, event),
49448
49457
  onKeyUp: (event) => handleReaction(reactionType, event)
49449
49458
  },
49450
- /* @__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))
49451
49460
  );
49452
49461
  }
49453
49462
  ),
49454
- /* @__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)
49455
49464
  ));
49456
49465
  };
49457
- var SimpleReactionsList = import_react224.default.memo(
49466
+ var SimpleReactionsList = import_react225.default.memo(
49458
49467
  UnMemoizedSimpleReactionsList
49459
49468
  );
49460
49469
 
49461
49470
  // src/components/Message/MessageEditedTimestamp.tsx
49462
- var import_react225 = __toESM(require("react"));
49471
+ var import_react226 = __toESM(require("react"));
49463
49472
  var import_clsx59 = __toESM(require("clsx"));
49464
49473
  function MessageEditedTimestamp({
49465
49474
  message: propMessage,
@@ -49475,7 +49484,7 @@ function MessageEditedTimestamp({
49475
49484
  if (!isMessageEdited(message)) {
49476
49485
  return null;
49477
49486
  }
49478
- return /* @__PURE__ */ import_react225.default.createElement(
49487
+ return /* @__PURE__ */ import_react226.default.createElement(
49479
49488
  "div",
49480
49489
  {
49481
49490
  className: (0, import_clsx59.default)(
@@ -49486,7 +49495,7 @@ function MessageEditedTimestamp({
49486
49495
  },
49487
49496
  t2("Edited"),
49488
49497
  " ",
49489
- /* @__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 })
49490
49499
  );
49491
49500
  }
49492
49501
 
@@ -49513,8 +49522,8 @@ var MessageSimpleWithContext = (props) => {
49513
49522
  } = props;
49514
49523
  const { client } = useChatContext("MessageSimple");
49515
49524
  const { t: t2 } = useTranslationContext("MessageSimple");
49516
- const [isBounceDialogOpen, setIsBounceDialogOpen] = (0, import_react226.useState)(false);
49517
- 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);
49518
49527
  const {
49519
49528
  Attachment: Attachment2 = Attachment,
49520
49529
  Avatar: Avatar2 = Avatar,
@@ -49535,7 +49544,7 @@ var MessageSimpleWithContext = (props) => {
49535
49544
  } = useComponentContext("MessageSimple");
49536
49545
  const hasAttachment = messageHasAttachments(message);
49537
49546
  const hasReactions = messageHasReactions(message);
49538
- const isAIGenerated = (0, import_react226.useMemo)(
49547
+ const isAIGenerated = (0, import_react227.useMemo)(
49539
49548
  () => isMessageAIGenerated?.(message),
49540
49549
  [isMessageAIGenerated, message]
49541
49550
  );
@@ -49543,10 +49552,10 @@ var MessageSimpleWithContext = (props) => {
49543
49552
  return null;
49544
49553
  }
49545
49554
  if (message.deleted_at || message.type === "deleted") {
49546
- return /* @__PURE__ */ import_react226.default.createElement(MessageDeleted2, { message });
49555
+ return /* @__PURE__ */ import_react227.default.createElement(MessageDeleted2, { message });
49547
49556
  }
49548
49557
  if (isMessageBlocked(message)) {
49549
- return /* @__PURE__ */ import_react226.default.createElement(MessageBlocked2, null);
49558
+ return /* @__PURE__ */ import_react227.default.createElement(MessageBlocked2, null);
49550
49559
  }
49551
49560
  const showMetadata = !groupedByUser || endOfGroup;
49552
49561
  const showReplyCountButton = !threadList && !!message.reply_count;
@@ -49580,14 +49589,14 @@ var MessageSimpleWithContext = (props) => {
49580
49589
  }
49581
49590
  );
49582
49591
  const poll = message.poll_id && client.polls.fromState(message.poll_id);
49583
- 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(
49584
49593
  Modal,
49585
49594
  {
49586
49595
  className: "str-chat__edit-message-modal",
49587
49596
  onClose: clearEditingState,
49588
49597
  open: editing
49589
49598
  },
49590
- /* @__PURE__ */ import_react226.default.createElement(
49599
+ /* @__PURE__ */ import_react227.default.createElement(
49591
49600
  MessageInput,
49592
49601
  {
49593
49602
  clearEditingState,
@@ -49598,14 +49607,14 @@ var MessageSimpleWithContext = (props) => {
49598
49607
  ...additionalMessageInputProps
49599
49608
  }
49600
49609
  )
49601
- ), isBounceDialogOpen && /* @__PURE__ */ import_react226.default.createElement(
49610
+ ), isBounceDialogOpen && /* @__PURE__ */ import_react227.default.createElement(
49602
49611
  MessageBounceModal,
49603
49612
  {
49604
49613
  MessageBouncePrompt: MessageBouncePrompt2,
49605
49614
  onClose: () => setIsBounceDialogOpen(false),
49606
49615
  open: isBounceDialogOpen
49607
49616
  }
49608
- ), /* @__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(
49609
49618
  Avatar2,
49610
49619
  {
49611
49620
  image: message.user.image,
@@ -49614,7 +49623,7 @@ var MessageSimpleWithContext = (props) => {
49614
49623
  onMouseOver: onUserHover,
49615
49624
  user: message.user
49616
49625
  }
49617
- ), /* @__PURE__ */ import_react226.default.createElement(
49626
+ ), /* @__PURE__ */ import_react227.default.createElement(
49618
49627
  "div",
49619
49628
  {
49620
49629
  className: (0, import_clsx60.default)("str-chat__message-inner", {
@@ -49624,37 +49633,37 @@ var MessageSimpleWithContext = (props) => {
49624
49633
  onClick: handleClick,
49625
49634
  onKeyUp: handleClick
49626
49635
  },
49627
- /* @__PURE__ */ import_react226.default.createElement(MessageActions2, null),
49628
- /* @__PURE__ */ import_react226.default.createElement("div", { className: "str-chat__message-reactions-host" }, hasReactions && /* @__PURE__ */ import_react226.default.createElement(ReactionsList2, { reverse: true })),
49629
- /* @__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(
49630
49639
  Attachment2,
49631
49640
  {
49632
49641
  actionHandler: handleAction,
49633
49642
  attachments: message.attachments
49634
49643
  }
49635
- ) : 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(
49636
49645
  MML3,
49637
49646
  {
49638
49647
  actionHandler: handleAction,
49639
49648
  align: isMyMessage() ? "right" : "left",
49640
49649
  source: message.mml
49641
49650
  }
49642
- ), /* @__PURE__ */ import_react226.default.createElement(MessageErrorIcon, null))
49643
- ), showReplyCountButton && /* @__PURE__ */ import_react226.default.createElement(
49651
+ ), /* @__PURE__ */ import_react227.default.createElement(MessageErrorIcon, null))
49652
+ ), showReplyCountButton && /* @__PURE__ */ import_react227.default.createElement(
49644
49653
  MessageRepliesCountButton2,
49645
49654
  {
49646
49655
  onClick: handleOpenThread,
49647
49656
  reply_count: message.reply_count
49648
49657
  }
49649
- ), 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 }))));
49650
49659
  };
49651
- var MemoizedMessageSimple = import_react226.default.memo(
49660
+ var MemoizedMessageSimple = import_react227.default.memo(
49652
49661
  MessageSimpleWithContext,
49653
49662
  areMessageUIPropsEqual
49654
49663
  );
49655
49664
  var MessageSimple = (props) => {
49656
49665
  const messageContext = useMessageContext("MessageSimple");
49657
- return /* @__PURE__ */ import_react226.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
49666
+ return /* @__PURE__ */ import_react227.default.createElement(MemoizedMessageSimple, { ...messageContext, ...props });
49658
49667
  };
49659
49668
 
49660
49669
  // src/components/Message/Message.tsx
@@ -49690,11 +49699,11 @@ var MessageWithContext = (props) => {
49690
49699
  canReply,
49691
49700
  isMyMessage
49692
49701
  } = userRoles;
49693
- const messageIsUnread = (0, import_react227.useMemo)(
49702
+ const messageIsUnread = (0, import_react228.useMemo)(
49694
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())),
49695
49704
  [client, isMyMessage, message.created_at, read]
49696
49705
  );
49697
- const messageActionsHandler = (0, import_react227.useCallback)(
49706
+ const messageActionsHandler = (0, import_react228.useCallback)(
49698
49707
  () => getMessageActions(messageActions, {
49699
49708
  canDelete,
49700
49709
  canEdit,
@@ -49748,9 +49757,9 @@ var MessageWithContext = (props) => {
49748
49757
  onUserHover,
49749
49758
  setEditingState: setEdit
49750
49759
  };
49751
- 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 }));
49752
49761
  };
49753
- var MemoizedMessage = import_react227.default.memo(
49762
+ var MemoizedMessage = import_react228.default.memo(
49754
49763
  MessageWithContext,
49755
49764
  areMessagePropsEqual
49756
49765
  );
@@ -49817,7 +49826,7 @@ var Message = (props) => {
49817
49826
  notify: addNotification
49818
49827
  });
49819
49828
  const highlighted = highlightedMessageId === message.id;
49820
- return /* @__PURE__ */ import_react227.default.createElement(
49829
+ return /* @__PURE__ */ import_react228.default.createElement(
49821
49830
  MemoizedMessage,
49822
49831
  {
49823
49832
  additionalMessageInputProps: props.additionalMessageInputProps,
@@ -49869,18 +49878,18 @@ var Message = (props) => {
49869
49878
  // src/components/MessageList/GiphyPreviewMessage.tsx
49870
49879
  var GiphyPreviewMessage = (props) => {
49871
49880
  const { message } = props;
49872
- 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 }));
49873
49882
  };
49874
49883
 
49875
49884
  // src/components/MessageList/MessageList.tsx
49876
49885
  var import_clsx62 = __toESM(require("clsx"));
49877
- var import_react247 = __toESM(require("react"));
49886
+ var import_react248 = __toESM(require("react"));
49878
49887
 
49879
49888
  // src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
49880
- var import_react229 = require("react");
49889
+ var import_react230 = require("react");
49881
49890
 
49882
49891
  // src/components/MessageList/utils.ts
49883
- var import_nanoid9 = require("nanoid");
49892
+ var import_nanoid10 = require("nanoid");
49884
49893
  var processMessages = (params) => {
49885
49894
  const { messages, reviewProcessedMessage, setGiphyPreviewMessage, ...context } = params;
49886
49895
  const {
@@ -49956,9 +49965,9 @@ var processMessages = (params) => {
49956
49965
  var makeDateMessageId = (date) => {
49957
49966
  let idSuffix;
49958
49967
  try {
49959
- 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;
49960
49969
  } catch (e2) {
49961
- idSuffix = (0, import_nanoid9.nanoid)();
49970
+ idSuffix = (0, import_nanoid10.nanoid)();
49962
49971
  }
49963
49972
  return `${CUSTOM_MESSAGE_TYPE.date}-${idSuffix}`;
49964
49973
  };
@@ -50084,7 +50093,7 @@ var useEnrichedMessages = (args) => {
50084
50093
  } = args;
50085
50094
  const { client } = useChatContext("useEnrichedMessages");
50086
50095
  const { HeaderComponent } = useComponentContext("useEnrichedMessages");
50087
- const lastRead = (0, import_react229.useMemo)(() => channel.lastRead?.(), [channel]);
50096
+ const lastRead = (0, import_react230.useMemo)(() => channel.lastRead?.(), [channel]);
50088
50097
  const enableDateSeparator = !disableDateSeparator;
50089
50098
  let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
50090
50099
  enableDateSeparator,
@@ -50099,7 +50108,7 @@ var useEnrichedMessages = (args) => {
50099
50108
  messagesWithDates = insertIntro(messagesWithDates, headerPosition);
50100
50109
  }
50101
50110
  const groupStylesFn = groupStyles || getGroupStyles;
50102
- const messageGroupStyles = (0, import_react229.useMemo)(
50111
+ const messageGroupStyles = (0, import_react230.useMemo)(
50103
50112
  () => messagesWithDates.reduce((acc, message, i) => {
50104
50113
  const style = groupStylesFn(
50105
50114
  message,
@@ -50118,13 +50127,13 @@ var useEnrichedMessages = (args) => {
50118
50127
  };
50119
50128
 
50120
50129
  // src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
50121
- var import_react231 = require("react");
50130
+ var import_react232 = require("react");
50122
50131
 
50123
50132
  // src/components/MessageList/hooks/useLastReadData.ts
50124
- var import_react230 = require("react");
50133
+ var import_react231 = require("react");
50125
50134
  var useLastReadData = (props) => {
50126
50135
  const { messages, read, returnAllReadData, userID } = props;
50127
- return (0, import_react230.useMemo)(
50136
+ return (0, import_react231.useMemo)(
50128
50137
  () => getReadStates(
50129
50138
  messages.filter(({ user }) => user?.id === userID),
50130
50139
  read,
@@ -50156,11 +50165,11 @@ var useMessageListElements = (props) => {
50156
50165
  returnAllReadData,
50157
50166
  userID: client.userID
50158
50167
  });
50159
- const lastReceivedMessageId = (0, import_react231.useMemo)(
50168
+ const lastReceivedMessageId = (0, import_react232.useMemo)(
50160
50169
  () => getLastReceived(enrichedMessages),
50161
50170
  [enrichedMessages]
50162
50171
  );
50163
- const elements = (0, import_react231.useMemo)(
50172
+ const elements = (0, import_react232.useMemo)(
50164
50173
  () => renderMessages({
50165
50174
  channelUnreadUiState,
50166
50175
  components,
@@ -50187,7 +50196,7 @@ var useMessageListElements = (props) => {
50187
50196
  };
50188
50197
 
50189
50198
  // src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts
50190
- var import_react232 = require("react");
50199
+ var import_react233 = require("react");
50191
50200
  function useMessageListScrollManager(params) {
50192
50201
  const {
50193
50202
  loadMoreScrollThreshold,
@@ -50198,13 +50207,13 @@ function useMessageListScrollManager(params) {
50198
50207
  showNewMessages
50199
50208
  } = params;
50200
50209
  const { client } = useChatContext("useMessageListScrollManager");
50201
- const measures = (0, import_react232.useRef)({
50210
+ const measures = (0, import_react233.useRef)({
50202
50211
  offsetHeight: 0,
50203
50212
  scrollHeight: 0
50204
50213
  });
50205
- const messages = (0, import_react232.useRef)(void 0);
50206
- const scrollTop = (0, import_react232.useRef)(0);
50207
- (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)(() => {
50208
50217
  const prevMeasures = measures.current;
50209
50218
  const prevMessages = messages.current;
50210
50219
  const newMessages = params.messages;
@@ -50244,7 +50253,7 @@ function useMessageListScrollManager(params) {
50244
50253
  }
50245
50254
 
50246
50255
  // src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx
50247
- var import_react233 = require("react");
50256
+ var import_react234 = require("react");
50248
50257
  var useScrollLocationLogic = (params) => {
50249
50258
  const {
50250
50259
  hasMoreNewer,
@@ -50254,12 +50263,12 @@ var useScrollLocationLogic = (params) => {
50254
50263
  scrolledUpThreshold = 200,
50255
50264
  suppressAutoscroll
50256
50265
  } = params;
50257
- const [hasNewMessages, setHasNewMessages] = (0, import_react233.useState)(false);
50258
- const [wrapperRect, setWrapperRect] = (0, import_react233.useState)();
50259
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react233.useState)(true);
50260
- const closeToBottom = (0, import_react233.useRef)(false);
50261
- const closeToTop = (0, import_react233.useRef)(false);
50262
- 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)(() => {
50263
50272
  if (!listElement?.scrollTo || hasMoreNewer || suppressAutoscroll) {
50264
50273
  return;
50265
50274
  }
@@ -50268,7 +50277,7 @@ var useScrollLocationLogic = (params) => {
50268
50277
  });
50269
50278
  setHasNewMessages(false);
50270
50279
  }, [listElement, hasMoreNewer, suppressAutoscroll]);
50271
- (0, import_react233.useLayoutEffect)(() => {
50280
+ (0, import_react234.useLayoutEffect)(() => {
50272
50281
  if (listElement) {
50273
50282
  setWrapperRect(listElement.getBoundingClientRect());
50274
50283
  scrollToBottom();
@@ -50288,7 +50297,7 @@ var useScrollLocationLogic = (params) => {
50288
50297
  scrollToBottom,
50289
50298
  showNewMessages: () => setHasNewMessages(true)
50290
50299
  });
50291
- const onScroll = (0, import_react233.useCallback)(
50300
+ const onScroll = (0, import_react234.useCallback)(
50292
50301
  (event) => {
50293
50302
  const element4 = event.target;
50294
50303
  const scrollTop = element4.scrollTop;
@@ -50319,22 +50328,22 @@ var useScrollLocationLogic = (params) => {
50319
50328
  };
50320
50329
 
50321
50330
  // src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
50322
- var import_react236 = require("react");
50331
+ var import_react237 = require("react");
50323
50332
 
50324
50333
  // src/components/MessageList/MessageListMainPanel.tsx
50325
- var import_react234 = __toESM(require("react"));
50334
+ var import_react235 = __toESM(require("react"));
50326
50335
  var MESSAGE_LIST_MAIN_PANEL_CLASS = "str-chat__main-panel-inner str-chat__message-list-main-panel";
50327
- 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);
50328
50337
 
50329
50338
  // src/components/MessageList/UnreadMessagesSeparator.tsx
50330
- var import_react235 = __toESM(require("react"));
50339
+ var import_react236 = __toESM(require("react"));
50331
50340
  var UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
50332
50341
  var UnreadMessagesSeparator = ({
50333
50342
  showCount,
50334
50343
  unreadCount
50335
50344
  }) => {
50336
50345
  const { t: t2 } = useTranslationContext("UnreadMessagesSeparator");
50337
- return /* @__PURE__ */ import_react235.default.createElement(
50346
+ return /* @__PURE__ */ import_react236.default.createElement(
50338
50347
  "div",
50339
50348
  {
50340
50349
  className: UNREAD_MESSAGE_SEPARATOR_CLASS,
@@ -50360,10 +50369,10 @@ var useUnreadMessagesNotification = ({
50360
50369
  unreadCount
50361
50370
  }) => {
50362
50371
  const { messages } = useChannelStateContext("UnreadMessagesNotification");
50363
- const [show, setShow] = (0, import_react236.useState)(false);
50364
- const isScrolledAboveTargetTop = (0, import_react236.useRef)(false);
50372
+ const [show, setShow] = (0, import_react237.useState)(false);
50373
+ const isScrolledAboveTargetTop = (0, import_react237.useRef)(false);
50365
50374
  const intersectionObserverIsSupported = typeof IntersectionObserver !== "undefined";
50366
- (0, import_react236.useEffect)(() => {
50375
+ (0, import_react237.useEffect)(() => {
50367
50376
  if (!(unreadCount && intersectionObserverIsSupported)) {
50368
50377
  setShow(false);
50369
50378
  return;
@@ -50410,7 +50419,7 @@ var useUnreadMessagesNotification = ({
50410
50419
  showAlways,
50411
50420
  unreadCount
50412
50421
  ]);
50413
- (0, import_react236.useEffect)(() => {
50422
+ (0, import_react237.useEffect)(() => {
50414
50423
  if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
50415
50424
  setShow(true);
50416
50425
  isScrolledAboveTargetTop.current = false;
@@ -50420,7 +50429,7 @@ var useUnreadMessagesNotification = ({
50420
50429
  };
50421
50430
 
50422
50431
  // src/components/MessageList/hooks/useMarkRead.ts
50423
- var import_react237 = require("react");
50432
+ var import_react238 = require("react");
50424
50433
  var hasReadLastMessage = (channel, userId) => {
50425
50434
  const latestMessageIdInChannel = channel.state.latestMessages.slice(-1)[0]?.id;
50426
50435
  const lastReadMessageIdServer = channel.state.read[userId]?.last_read_message_id;
@@ -50434,7 +50443,7 @@ var useMarkRead = ({
50434
50443
  const { client } = useChatContext("useMarkRead");
50435
50444
  const { markRead, setChannelUnreadUiState } = useChannelActionContext("useMarkRead");
50436
50445
  const { channel } = useChannelStateContext("useMarkRead");
50437
- (0, import_react237.useEffect)(() => {
50446
+ (0, import_react238.useEffect)(() => {
50438
50447
  const shouldMarkRead = () => !document.hidden && !wasMarkedUnread && !messageListIsThread && isMessageListScrolledToBottom && client.user?.id && !hasReadLastMessage(channel, client.user.id);
50439
50448
  const onVisibilityChange = () => {
50440
50449
  if (shouldMarkRead()) markRead();
@@ -50493,11 +50502,11 @@ function getPreviousLastMessage(messages, newMessage) {
50493
50502
  }
50494
50503
 
50495
50504
  // src/components/MessageList/MessageNotification.tsx
50496
- var import_react238 = __toESM(require("react"));
50505
+ var import_react239 = __toESM(require("react"));
50497
50506
  var UnMemoizedMessageNotification = (props) => {
50498
50507
  const { children, onClick, showNotification = true } = props;
50499
50508
  if (!showNotification) return null;
50500
- return /* @__PURE__ */ import_react238.default.createElement(
50509
+ return /* @__PURE__ */ import_react239.default.createElement(
50501
50510
  "button",
50502
50511
  {
50503
50512
  "aria-live": "polite",
@@ -50508,12 +50517,12 @@ var UnMemoizedMessageNotification = (props) => {
50508
50517
  children
50509
50518
  );
50510
50519
  };
50511
- var MessageNotification = import_react238.default.memo(
50520
+ var MessageNotification = import_react239.default.memo(
50512
50521
  UnMemoizedMessageNotification
50513
50522
  );
50514
50523
 
50515
50524
  // src/components/MessageList/MessageListNotifications.tsx
50516
- var import_react239 = __toESM(require("react"));
50525
+ var import_react240 = __toESM(require("react"));
50517
50526
  var MessageListNotifications = (props) => {
50518
50527
  const {
50519
50528
  hasNewMessages,
@@ -50526,7 +50535,7 @@ var MessageListNotifications = (props) => {
50526
50535
  unreadCount
50527
50536
  } = props;
50528
50537
  const { t: t2 } = useTranslationContext("MessageListNotifications");
50529
- 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(
50530
50539
  MessageNotification2,
50531
50540
  {
50532
50541
  isMessageListScrolledToBottom,
@@ -50540,11 +50549,11 @@ var MessageListNotifications = (props) => {
50540
50549
  };
50541
50550
 
50542
50551
  // src/components/MessageList/UnreadMessagesNotification.tsx
50543
- var import_react241 = __toESM(require("react"));
50552
+ var import_react242 = __toESM(require("react"));
50544
50553
 
50545
50554
  // src/components/MessageList/icons.tsx
50546
- var import_react240 = __toESM(require("react"));
50547
- 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(
50548
50557
  "svg",
50549
50558
  {
50550
50559
  className,
@@ -50555,7 +50564,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react24
50555
50564
  width: "24",
50556
50565
  xmlns: "http://www.w3.org/2000/svg"
50557
50566
  },
50558
- /* @__PURE__ */ import_react240.default.createElement(
50567
+ /* @__PURE__ */ import_react241.default.createElement(
50559
50568
  "path",
50560
50569
  {
50561
50570
  d: "M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z",
@@ -50563,7 +50572,7 @@ var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */ import_react24
50563
50572
  }
50564
50573
  )
50565
50574
  );
50566
- 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" }));
50567
50576
 
50568
50577
  // src/components/MessageList/UnreadMessagesNotification.tsx
50569
50578
  var UnreadMessagesNotification = ({
@@ -50575,19 +50584,19 @@ var UnreadMessagesNotification = ({
50575
50584
  "UnreadMessagesNotification"
50576
50585
  );
50577
50586
  const { t: t2 } = useTranslationContext("UnreadMessagesNotification");
50578
- return /* @__PURE__ */ import_react241.default.createElement(
50587
+ return /* @__PURE__ */ import_react242.default.createElement(
50579
50588
  "div",
50580
50589
  {
50581
50590
  className: "str-chat__unread-messages-notification",
50582
50591
  "data-testid": "unread-messages-notification"
50583
50592
  },
50584
- /* @__PURE__ */ import_react241.default.createElement("button", { onClick: () => jumpToFirstUnreadMessage(queryMessageLimit) }, unreadCount && showCount ? t2("{{count}} unread", { count: unreadCount ?? 0 }) : t2("Unread messages")),
50585
- /* @__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))
50586
50595
  );
50587
50596
  };
50588
50597
 
50589
50598
  // src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
50590
- var import_react242 = __toESM(require("react"));
50599
+ var import_react243 = __toESM(require("react"));
50591
50600
  var mousewheelListener2 = (event) => {
50592
50601
  if (event instanceof WheelEvent && event.deltaY === 1) {
50593
50602
  event.preventDefault();
@@ -50618,10 +50627,10 @@ var InfiniteScroll = (props) => {
50618
50627
  const loadPreviousPageFn = loadPreviousPage || loadMore;
50619
50628
  const hasNextPageFlag = hasNextPage || hasMoreNewer;
50620
50629
  const hasPreviousPageFlag = hasPreviousPage || hasMore;
50621
- const scrollComponent = (0, import_react242.useRef)(void 0);
50622
- const previousOffset = (0, import_react242.useRef)(void 0);
50623
- const previousReverseOffset = (0, import_react242.useRef)(void 0);
50624
- 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);
50625
50634
  scrollListenerRef.current = () => {
50626
50635
  const element5 = scrollComponent.current;
50627
50636
  if (!element5 || element5.offsetParent === null) {
@@ -50645,7 +50654,7 @@ var InfiniteScroll = (props) => {
50645
50654
  loadNextPageFn();
50646
50655
  }
50647
50656
  };
50648
- (0, import_react242.useEffect)(() => {
50657
+ (0, import_react243.useEffect)(() => {
50649
50658
  deprecationAndReplacementWarning(
50650
50659
  [
50651
50660
  [{ hasMoreNewer }, { hasNextPage }],
@@ -50656,7 +50665,7 @@ var InfiniteScroll = (props) => {
50656
50665
  "InfiniteScroll"
50657
50666
  );
50658
50667
  }, []);
50659
- (0, import_react242.useEffect)(() => {
50668
+ (0, import_react243.useEffect)(() => {
50660
50669
  const scrollElement = scrollComponent.current?.parentNode;
50661
50670
  if (!scrollElement) return;
50662
50671
  const scrollListener = () => scrollListenerRef.current?.();
@@ -50668,7 +50677,7 @@ var InfiniteScroll = (props) => {
50668
50677
  scrollElement.removeEventListener("resize", scrollListener, useCapture);
50669
50678
  };
50670
50679
  }, [initialLoad, useCapture]);
50671
- (0, import_react242.useEffect)(() => {
50680
+ (0, import_react243.useEffect)(() => {
50672
50681
  const scrollElement = scrollComponent.current?.parentNode;
50673
50682
  if (scrollElement) {
50674
50683
  scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
@@ -50689,11 +50698,11 @@ var InfiniteScroll = (props) => {
50689
50698
  if (head) {
50690
50699
  childrenArray.unshift(head);
50691
50700
  }
50692
- return import_react242.default.createElement(element4, attributes, childrenArray);
50701
+ return import_react243.default.createElement(element4, attributes, childrenArray);
50693
50702
  };
50694
50703
 
50695
50704
  // src/components/TypingIndicator/TypingIndicator.tsx
50696
- var import_react243 = __toESM(require("react"));
50705
+ var import_react244 = __toESM(require("react"));
50697
50706
  var import_clsx61 = __toESM(require("clsx"));
50698
50707
  var useJoinTypingUsers = (names) => {
50699
50708
  const { t: t2 } = useTranslationContext();
@@ -50731,7 +50740,7 @@ var UnMemoizedTypingIndicator = (props) => {
50731
50740
  return null;
50732
50741
  }
50733
50742
  if (!isTypingActive) return null;
50734
- return /* @__PURE__ */ import_react243.default.createElement(
50743
+ return /* @__PURE__ */ import_react244.default.createElement(
50735
50744
  "div",
50736
50745
  {
50737
50746
  className: (0, import_clsx61.default)("str-chat__typing-indicator", {
@@ -50739,19 +50748,19 @@ var UnMemoizedTypingIndicator = (props) => {
50739
50748
  }),
50740
50749
  "data-testid": "typing-indicator"
50741
50750
  },
50742
- /* @__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" })),
50743
- /* @__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)
50744
50753
  );
50745
50754
  };
50746
- var TypingIndicator = import_react243.default.memo(
50755
+ var TypingIndicator = import_react244.default.memo(
50747
50756
  UnMemoizedTypingIndicator
50748
50757
  );
50749
50758
 
50750
50759
  // src/components/MessageList/renderMessages.tsx
50751
- var import_react246 = __toESM(require("react"));
50760
+ var import_react247 = __toESM(require("react"));
50752
50761
 
50753
50762
  // src/components/DateSeparator/DateSeparator.tsx
50754
- var import_react244 = __toESM(require("react"));
50763
+ var import_react245 = __toESM(require("react"));
50755
50764
  var UnMemoizedDateSeparator = (props) => {
50756
50765
  const {
50757
50766
  calendar: calendar3,
@@ -50771,21 +50780,21 @@ var UnMemoizedDateSeparator = (props) => {
50771
50780
  tDateTimeParser,
50772
50781
  timestampTranslationKey: "timestamp/DateSeparator"
50773
50782
  });
50774
- 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" }));
50775
50784
  };
50776
- var DateSeparator = import_react244.default.memo(
50785
+ var DateSeparator = import_react245.default.memo(
50777
50786
  UnMemoizedDateSeparator
50778
50787
  );
50779
50788
 
50780
50789
  // src/components/EventComponent/EventComponent.tsx
50781
- var import_react245 = __toESM(require("react"));
50790
+ var import_react246 = __toESM(require("react"));
50782
50791
  var UnMemoizedEventComponent = (props) => {
50783
50792
  const { Avatar: Avatar2 = Avatar, calendar: calendar3, calendarFormats, format, message } = props;
50784
50793
  const { t: t2, tDateTimeParser } = useTranslationContext("EventComponent");
50785
50794
  const { created_at = "", event, text: text8, type } = message;
50786
50795
  const getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser };
50787
50796
  if (type === "system")
50788
- 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({
50789
50798
  ...getDateOptions,
50790
50799
  calendar: calendar3,
50791
50800
  calendarFormats,
@@ -50796,11 +50805,11 @@ var UnMemoizedEventComponent = (props) => {
50796
50805
  if (event?.type === "member.removed" || event?.type === "member.added") {
50797
50806
  const name2 = event.user?.name || event.user?.id;
50798
50807
  const sentence = `${name2} ${event.type === "member.added" ? "has joined the chat" : "was removed from the chat"}`;
50799
- 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" }))));
50800
50809
  }
50801
50810
  return null;
50802
50811
  };
50803
- var EventComponent = import_react245.default.memo(
50812
+ var EventComponent = import_react246.default.memo(
50804
50813
  UnMemoizedEventComponent
50805
50814
  );
50806
50815
 
@@ -50828,7 +50837,7 @@ function defaultRenderMessages({
50828
50837
  const message = messages[index3];
50829
50838
  if (isDateSeparatorMessage(message)) {
50830
50839
  renderedMessages.push(
50831
- /* @__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(
50832
50841
  DateSeparator2,
50833
50842
  {
50834
50843
  date: message.date,
@@ -50839,17 +50848,17 @@ function defaultRenderMessages({
50839
50848
  );
50840
50849
  } else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
50841
50850
  renderedMessages.push(
50842
- /* @__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))
50843
50852
  );
50844
50853
  } else if (message.type === "system") {
50845
50854
  renderedMessages.push(
50846
- /* @__PURE__ */ import_react246.default.createElement(
50855
+ /* @__PURE__ */ import_react247.default.createElement(
50847
50856
  "li",
50848
50857
  {
50849
50858
  "data-message-id": message.id,
50850
50859
  key: message.id || message.created_at
50851
50860
  },
50852
- /* @__PURE__ */ import_react246.default.createElement(MessageSystem, { message })
50861
+ /* @__PURE__ */ import_react247.default.createElement(MessageSystem, { message })
50853
50862
  )
50854
50863
  );
50855
50864
  } else {
@@ -50868,19 +50877,19 @@ function defaultRenderMessages({
50868
50877
  unreadMessageCount: channelUnreadUiState?.unread_messages
50869
50878
  });
50870
50879
  renderedMessages.push(
50871
- /* @__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(
50872
50881
  UnreadMessagesSeparator2,
50873
50882
  {
50874
50883
  unreadCount: channelUnreadUiState?.unread_messages
50875
50884
  }
50876
- )), /* @__PURE__ */ import_react246.default.createElement(
50885
+ )), /* @__PURE__ */ import_react247.default.createElement(
50877
50886
  "li",
50878
50887
  {
50879
50888
  className: messageClass,
50880
50889
  "data-message-id": message.id,
50881
50890
  "data-testid": messageClass
50882
50891
  },
50883
- /* @__PURE__ */ import_react246.default.createElement(
50892
+ /* @__PURE__ */ import_react247.default.createElement(
50884
50893
  Message,
50885
50894
  {
50886
50895
  groupStyles: [groupStyles],
@@ -50937,8 +50946,8 @@ var MessageListWithContext = (props) => {
50937
50946
  threadList = false,
50938
50947
  unsafeHTML = false
50939
50948
  } = props;
50940
- const [listElement, setListElement] = import_react247.default.useState(null);
50941
- 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);
50942
50951
  const { customClasses } = useChatContext("MessageList");
50943
50952
  const {
50944
50953
  EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator,
@@ -51026,24 +51035,24 @@ var MessageListWithContext = (props) => {
51026
51035
  threadList
51027
51036
  });
51028
51037
  const messageListClass = customClasses?.messageList || "str-chat__list";
51029
- const loadMore = import_react247.default.useCallback(() => {
51038
+ const loadMore = import_react248.default.useCallback(() => {
51030
51039
  if (loadMoreCallback) {
51031
51040
  loadMoreCallback(messageLimit);
51032
51041
  }
51033
51042
  }, [loadMoreCallback, messageLimit]);
51034
- const loadMoreNewer = import_react247.default.useCallback(() => {
51043
+ const loadMoreNewer = import_react248.default.useCallback(() => {
51035
51044
  if (loadMoreNewerCallback) {
51036
51045
  loadMoreNewerCallback(messageLimit);
51037
51046
  }
51038
51047
  }, [loadMoreNewerCallback, messageLimit]);
51039
- const scrollToBottomFromNotification = import_react247.default.useCallback(async () => {
51048
+ const scrollToBottomFromNotification = import_react248.default.useCallback(async () => {
51040
51049
  if (hasMoreNewer) {
51041
51050
  await jumpToLatestMessage();
51042
51051
  } else {
51043
51052
  scrollToBottom();
51044
51053
  }
51045
51054
  }, [scrollToBottom, hasMoreNewer]);
51046
- import_react247.default.useLayoutEffect(() => {
51055
+ import_react248.default.useLayoutEffect(() => {
51047
51056
  if (highlightedMessageId) {
51048
51057
  const element4 = ulElement?.querySelector(
51049
51058
  `[data-message-id='${highlightedMessageId}']`
@@ -51051,14 +51060,15 @@ var MessageListWithContext = (props) => {
51051
51060
  element4?.scrollIntoView({ block: "center" });
51052
51061
  }
51053
51062
  }, [highlightedMessageId]);
51063
+ const id = useStableId();
51054
51064
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
51055
- const dialogManagerId = threadList ? "message-list-dialog-manager-thread" : "message-list-dialog-manager";
51056
- 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(
51057
51067
  UnreadMessagesNotification2,
51058
51068
  {
51059
51069
  unreadCount: channelUnreadUiState?.unread_messages
51060
51070
  }
51061
- ), /* @__PURE__ */ import_react247.default.createElement(
51071
+ ), /* @__PURE__ */ import_react248.default.createElement(
51062
51072
  "div",
51063
51073
  {
51064
51074
  className: (0, import_clsx62.default)(messageListClass, customClasses?.threadList),
@@ -51066,7 +51076,7 @@ var MessageListWithContext = (props) => {
51066
51076
  ref: setListElement,
51067
51077
  tabIndex: 0
51068
51078
  },
51069
- 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(
51070
51080
  InfiniteScroll,
51071
51081
  {
51072
51082
  className: "str-chat__message-list-scroll",
@@ -51075,17 +51085,17 @@ var MessageListWithContext = (props) => {
51075
51085
  hasPreviousPage: props.hasMore,
51076
51086
  head: props.head,
51077
51087
  isLoading: props.loadingMore,
51078
- 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 })),
51079
51089
  loadNextPage: loadMoreNewer,
51080
51090
  loadPreviousPage: loadMore,
51081
51091
  threshold: loadMoreScrollThreshold,
51082
51092
  ...restInternalInfiniteScrollProps
51083
51093
  },
51084
- /* @__PURE__ */ import_react247.default.createElement("ul", { className: "str-chat__ul", ref: setUlElement }, elements),
51085
- /* @__PURE__ */ import_react247.default.createElement(TypingIndicator2, { threadList }),
51086
- /* @__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" })
51087
51097
  )
51088
- ))), /* @__PURE__ */ import_react247.default.createElement(
51098
+ ))), /* @__PURE__ */ import_react248.default.createElement(
51089
51099
  MessageListNotifications2,
51090
51100
  {
51091
51101
  hasNewMessages,
@@ -51110,7 +51120,7 @@ var MessageList = (props) => {
51110
51120
  // eslint-disable-line @typescript-eslint/no-unused-vars
51111
51121
  ...restChannelStateContext
51112
51122
  } = useChannelStateContext("MessageList");
51113
- return /* @__PURE__ */ import_react247.default.createElement(
51123
+ return /* @__PURE__ */ import_react248.default.createElement(
51114
51124
  MessageListWithContext,
51115
51125
  {
51116
51126
  jumpToLatestMessage,
@@ -51123,16 +51133,16 @@ var MessageList = (props) => {
51123
51133
  };
51124
51134
 
51125
51135
  // src/components/MessageList/ScrollToBottomButton.tsx
51126
- var import_react248 = __toESM(require("react"));
51136
+ var import_react249 = __toESM(require("react"));
51127
51137
  var import_clsx63 = __toESM(require("clsx"));
51128
51138
  var UnMemoizedScrollToBottomButton = (props) => {
51129
51139
  const { isMessageListScrolledToBottom, onClick, threadList } = props;
51130
51140
  const { channel: activeChannel, client } = useChatContext();
51131
51141
  const { thread } = useChannelStateContext();
51132
- const [countUnread, setCountUnread] = (0, import_react248.useState)(activeChannel?.countUnread() || 0);
51133
- 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);
51134
51144
  const observedEvent = threadList ? "message.updated" : "message.new";
51135
- (0, import_react248.useEffect)(() => {
51145
+ (0, import_react249.useEffect)(() => {
51136
51146
  const handleEvent = (event) => {
51137
51147
  const newMessageInAnotherChannel = event.cid !== activeChannel?.cid;
51138
51148
  const newMessageIsMine = event.user?.id === client.user?.id;
@@ -51154,14 +51164,14 @@ var UnMemoizedScrollToBottomButton = (props) => {
51154
51164
  client.off(observedEvent, handleEvent);
51155
51165
  };
51156
51166
  }, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
51157
- (0, import_react248.useEffect)(() => {
51167
+ (0, import_react249.useEffect)(() => {
51158
51168
  if (isMessageListScrolledToBottom) {
51159
51169
  setCountUnread(0);
51160
51170
  setReplyCount(thread?.reply_count || 0);
51161
51171
  }
51162
51172
  }, [isMessageListScrolledToBottom, thread]);
51163
51173
  if (isMessageListScrolledToBottom) return null;
51164
- 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(
51165
51175
  "button",
51166
51176
  {
51167
51177
  "aria-live": "polite",
@@ -51172,8 +51182,8 @@ var UnMemoizedScrollToBottomButton = (props) => {
51172
51182
  "data-testid": "message-notification",
51173
51183
  onClick
51174
51184
  },
51175
- /* @__PURE__ */ import_react248.default.createElement(ArrowDown, null),
51176
- countUnread > 0 && /* @__PURE__ */ import_react248.default.createElement(
51185
+ /* @__PURE__ */ import_react249.default.createElement(ArrowDown, null),
51186
+ countUnread > 0 && /* @__PURE__ */ import_react249.default.createElement(
51177
51187
  "div",
51178
51188
  {
51179
51189
  className: (0, import_clsx63.default)(
@@ -51186,23 +51196,23 @@ var UnMemoizedScrollToBottomButton = (props) => {
51186
51196
  )
51187
51197
  ));
51188
51198
  };
51189
- var ScrollToBottomButton = import_react248.default.memo(
51199
+ var ScrollToBottomButton = import_react249.default.memo(
51190
51200
  UnMemoizedScrollToBottomButton
51191
51201
  );
51192
51202
 
51193
51203
  // src/components/MessageList/VirtualizedMessageList.tsx
51194
- var import_react258 = __toESM(require("react"));
51204
+ var import_react259 = __toESM(require("react"));
51195
51205
  var import_react_virtuoso3 = require("react-virtuoso");
51196
51206
 
51197
51207
  // src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts
51198
- var import_react249 = require("react");
51208
+ var import_react250 = require("react");
51199
51209
  function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
51200
- const [newMessagesNotification, setNewMessagesNotification] = (0, import_react249.useState)(false);
51201
- const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0, import_react249.useState)(true);
51202
- const didMount = (0, import_react249.useRef)(false);
51203
- const lastMessageId = (0, import_react249.useRef)("");
51204
- const atBottom = (0, import_react249.useRef)(false);
51205
- (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)(() => {
51206
51216
  if (hasMoreNewer) {
51207
51217
  setNewMessagesNotification(true);
51208
51218
  return;
@@ -51228,17 +51238,17 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
51228
51238
  }
51229
51239
 
51230
51240
  // src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts
51231
- var import_react250 = require("react");
51241
+ var import_react251 = require("react");
51232
51242
  var STATUSES_EXCLUDED_FROM_PREPEND = {
51233
51243
  failed: true,
51234
51244
  sending: true
51235
51245
  };
51236
51246
  function usePrependedMessagesCount(messages, hasDateSeparator) {
51237
51247
  const firstRealMessageIndex = hasDateSeparator ? 1 : 0;
51238
- const firstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
51239
- const previousFirstMessageOnFirstLoadedPage = (0, import_react250.useRef)(void 0);
51240
- const previousNumItemsPrepended = (0, import_react250.useRef)(0);
51241
- 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)(() => {
51242
51252
  if (!messages || !messages.length) {
51243
51253
  previousNumItemsPrepended.current = 0;
51244
51254
  return 0;
@@ -51268,10 +51278,10 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
51268
51278
  }
51269
51279
 
51270
51280
  // src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts
51271
- var import_react251 = require("react");
51281
+ var import_react252 = require("react");
51272
51282
  function useShouldForceScrollToBottom(messages, currentUserId) {
51273
- const lastFocusedOwnMessage = (0, import_react251.useRef)("");
51274
- const initialFocusRegistered = (0, import_react251.useRef)(false);
51283
+ const lastFocusedOwnMessage = (0, import_react252.useRef)("");
51284
+ const initialFocusRegistered = (0, import_react252.useRef)(false);
51275
51285
  function recheckForNewOwnMessage() {
51276
51286
  if (messages && messages.length > 0) {
51277
51287
  const lastMessage = messages[messages.length - 1];
@@ -51282,7 +51292,7 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
51282
51292
  }
51283
51293
  return false;
51284
51294
  }
51285
- (0, import_react251.useEffect)(() => {
51295
+ (0, import_react252.useEffect)(() => {
51286
51296
  if (messages && messages.length && !initialFocusRegistered.current) {
51287
51297
  initialFocusRegistered.current = true;
51288
51298
  recheckForNewOwnMessage();
@@ -51292,11 +51302,11 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
51292
51302
  }
51293
51303
 
51294
51304
  // src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts
51295
- var import_react252 = require("react");
51305
+ var import_react253 = require("react");
51296
51306
  var useGiphyPreview = (separateGiphyPreview) => {
51297
- const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react252.useState)();
51307
+ const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react253.useState)();
51298
51308
  const { client } = useChatContext("useGiphyPreview");
51299
- (0, import_react252.useEffect)(() => {
51309
+ (0, import_react253.useEffect)(() => {
51300
51310
  const handleEvent = (event) => {
51301
51311
  const { message, user } = event;
51302
51312
  if (message?.command === "giphy" && user?.id === client.userID) {
@@ -51313,13 +51323,13 @@ var useGiphyPreview = (separateGiphyPreview) => {
51313
51323
  };
51314
51324
 
51315
51325
  // src/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.ts
51316
- var import_react253 = require("react");
51326
+ var import_react254 = require("react");
51317
51327
  var useMessageSetKey = ({
51318
51328
  messages
51319
51329
  }) => {
51320
- const [messageSetKey, setMessageSetKey] = (0, import_react253.useState)(+/* @__PURE__ */ new Date());
51321
- const firstMessageId = (0, import_react253.useRef)(void 0);
51322
- (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)(() => {
51323
51333
  const continuousSet = messages?.find(
51324
51334
  (message) => message.id === firstMessageId.current
51325
51335
  );
@@ -51334,24 +51344,24 @@ var useMessageSetKey = ({
51334
51344
  };
51335
51345
 
51336
51346
  // src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts
51337
- var import_react254 = require("react");
51347
+ var import_react255 = require("react");
51338
51348
  var useScrollToBottomOnNewMessage = ({
51339
51349
  messages,
51340
51350
  scrollToBottom,
51341
51351
  scrollToLatestMessageOnFocus
51342
51352
  }) => {
51343
- const [newMessagesReceivedInBackground, setNewMessagesReceivedInBackground] = (0, import_react254.useState)(false);
51344
- 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);
51345
51355
  scrollToBottomIfConfigured.current = (event) => {
51346
51356
  if (!scrollToLatestMessageOnFocus || !newMessagesReceivedInBackground || event.target !== window) {
51347
51357
  return;
51348
51358
  }
51349
51359
  setTimeout(scrollToBottom, 100);
51350
51360
  };
51351
- (0, import_react254.useEffect)(() => {
51361
+ (0, import_react255.useEffect)(() => {
51352
51362
  setNewMessagesReceivedInBackground(true);
51353
51363
  }, [messages]);
51354
- (0, import_react254.useEffect)(() => {
51364
+ (0, import_react255.useEffect)(() => {
51355
51365
  const handleFocus = (event) => {
51356
51366
  scrollToBottomIfConfigured.current?.(event);
51357
51367
  };
@@ -51370,14 +51380,14 @@ var useScrollToBottomOnNewMessage = ({
51370
51380
  };
51371
51381
 
51372
51382
  // src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts
51373
- var import_react255 = require("react");
51383
+ var import_react256 = require("react");
51374
51384
  var useUnreadMessagesNotificationVirtualized = ({
51375
51385
  lastRead,
51376
51386
  showAlways,
51377
51387
  unreadCount
51378
51388
  }) => {
51379
- const [show, setShow] = (0, import_react255.useState)(false);
51380
- const toggleShowUnreadMessagesNotification = (0, import_react255.useCallback)(
51389
+ const [show, setShow] = (0, import_react256.useState)(false);
51390
+ const toggleShowUnreadMessagesNotification = (0, import_react256.useCallback)(
51381
51391
  (renderedMessages) => {
51382
51392
  if (!unreadCount) return;
51383
51393
  const firstRenderedMessage = renderedMessages[0];
@@ -51391,7 +51401,7 @@ var useUnreadMessagesNotificationVirtualized = ({
51391
51401
  },
51392
51402
  [lastRead, showAlways, unreadCount]
51393
51403
  );
51394
- (0, import_react255.useEffect)(() => {
51404
+ (0, import_react256.useEffect)(() => {
51395
51405
  if (!unreadCount) setShow(false);
51396
51406
  }, [unreadCount]);
51397
51407
  return { show, toggleShowUnreadMessagesNotification };
@@ -51400,7 +51410,7 @@ var useUnreadMessagesNotificationVirtualized = ({
51400
51410
  // src/components/MessageList/VirtualizedMessageListComponents.tsx
51401
51411
  var import_clsx64 = __toESM(require("clsx"));
51402
51412
  var import_lodash21 = __toESM(require("lodash.throttle"));
51403
- var import_react256 = __toESM(require("react"));
51413
+ var import_react257 = __toESM(require("react"));
51404
51414
  var PREPEND_OFFSET = 10 ** 7;
51405
51415
  function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
51406
51416
  return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
@@ -51421,10 +51431,10 @@ var Item3 = ({
51421
51431
  context,
51422
51432
  ...props
51423
51433
  }) => {
51424
- 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);
51425
51435
  const message = context.processedMessages[calculateItemIndex(props["data-item-index"], context.numItemsPrepended)];
51426
51436
  const groupStyles = context.messageGroupStyles[message.id];
51427
- return /* @__PURE__ */ import_react256.default.createElement(
51437
+ return /* @__PURE__ */ import_react257.default.createElement(
51428
51438
  "div",
51429
51439
  {
51430
51440
  ...props,
@@ -51438,13 +51448,13 @@ var Header = ({
51438
51448
  context
51439
51449
  }) => {
51440
51450
  const { LoadingIndicator: LoadingIndicator2 = LoadingIndicator } = useComponentContext("VirtualizedMessageListHeader");
51441
- 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 })));
51442
51452
  };
51443
51453
  var EmptyPlaceholder = ({
51444
51454
  context
51445
51455
  }) => {
51446
51456
  const { EmptyStateIndicator: EmptyStateIndicator2 = EmptyStateIndicator } = useComponentContext("VirtualizedMessageList");
51447
- 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" }));
51448
51458
  };
51449
51459
  var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51450
51460
  const {
@@ -51480,12 +51490,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51480
51490
  return customMessageRenderer(messageList, streamMessageIndex);
51481
51491
  }
51482
51492
  const message = messageList[streamMessageIndex];
51483
- 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" } });
51484
51494
  if (isDateSeparatorMessage(message)) {
51485
- 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;
51486
51496
  }
51487
51497
  if (message.type === "system") {
51488
- return MessageSystem ? /* @__PURE__ */ import_react256.default.createElement(MessageSystem, { message }) : null;
51498
+ return MessageSystem ? /* @__PURE__ */ import_react257.default.createElement(MessageSystem, { message }) : null;
51489
51499
  }
51490
51500
  const groupedByUser = shouldGroupByUser && streamMessageIndex > 0 && message.user?.id === messageList[streamMessageIndex - 1].user?.id;
51491
51501
  const maybePrevMessage = messageList[streamMessageIndex - 1];
@@ -51501,7 +51511,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51501
51511
  previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
51502
51512
  unreadMessageCount
51503
51513
  });
51504
- 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(
51505
51515
  Message,
51506
51516
  {
51507
51517
  additionalMessageInputProps,
@@ -51528,12 +51538,12 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
51528
51538
  };
51529
51539
 
51530
51540
  // src/context/VirtualizedMessageListContext.tsx
51531
- var import_react257 = __toESM(require("react"));
51532
- var VirtualizedMessageListContext = (0, import_react257.createContext)(void 0);
51541
+ var import_react258 = __toESM(require("react"));
51542
+ var VirtualizedMessageListContext = (0, import_react258.createContext)(void 0);
51533
51543
  var VirtualizedMessageListContextProvider = ({
51534
51544
  children,
51535
51545
  value
51536
- }) => /* @__PURE__ */ import_react257.default.createElement(
51546
+ }) => /* @__PURE__ */ import_react258.default.createElement(
51537
51547
  VirtualizedMessageListContext.Provider,
51538
51548
  {
51539
51549
  value
@@ -51548,7 +51558,7 @@ function captureResizeObserverExceededError(e2) {
51548
51558
  }
51549
51559
  }
51550
51560
  function useCaptureResizeObserverExceededError() {
51551
- (0, import_react258.useEffect)(() => {
51561
+ (0, import_react259.useEffect)(() => {
51552
51562
  window.addEventListener("error", captureResizeObserverExceededError);
51553
51563
  return () => {
51554
51564
  window.removeEventListener("error", captureResizeObserverExceededError);
@@ -51634,15 +51644,15 @@ var VirtualizedMessageListWithContext = (props) => {
51634
51644
  const { client, customClasses } = useChatContext(
51635
51645
  "VirtualizedMessageList"
51636
51646
  );
51637
- const virtuoso = (0, import_react258.useRef)(null);
51638
- 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]);
51639
51649
  const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } = useUnreadMessagesNotificationVirtualized({
51640
51650
  lastRead: channelUnreadUiState?.last_read,
51641
51651
  showAlways: !!showUnreadNotificationAlways,
51642
51652
  unreadCount: channelUnreadUiState?.unread_messages ?? 0
51643
51653
  });
51644
51654
  const { giphyPreviewMessage, setGiphyPreviewMessage } = useGiphyPreview(separateGiphyPreview);
51645
- const processedMessages = (0, import_react258.useMemo)(() => {
51655
+ const processedMessages = (0, import_react259.useMemo)(() => {
51646
51656
  if (typeof messages === "undefined") {
51647
51657
  return [];
51648
51658
  }
@@ -51674,12 +51684,12 @@ var VirtualizedMessageListWithContext = (props) => {
51674
51684
  returnAllReadData,
51675
51685
  userID: client.userID
51676
51686
  });
51677
- const lastReceivedMessageId = (0, import_react258.useMemo)(
51687
+ const lastReceivedMessageId = (0, import_react259.useMemo)(
51678
51688
  () => getLastReceived(processedMessages),
51679
51689
  [processedMessages]
51680
51690
  );
51681
51691
  const groupStylesFn = groupStyles || getGroupStyles;
51682
- const messageGroupStyles = (0, import_react258.useMemo)(
51692
+ const messageGroupStyles = (0, import_react259.useMemo)(
51683
51693
  () => processedMessages.reduce((acc, message, i) => {
51684
51694
  const style = groupStylesFn(
51685
51695
  message,
@@ -51712,7 +51722,7 @@ var VirtualizedMessageListWithContext = (props) => {
51712
51722
  messageListIsThread: !!threadList,
51713
51723
  wasMarkedUnread: !!channelUnreadUiState?.first_unread_message_id
51714
51724
  });
51715
- const scrollToBottom = (0, import_react258.useCallback)(async () => {
51725
+ const scrollToBottom = (0, import_react259.useCallback)(async () => {
51716
51726
  if (hasMoreNewer) {
51717
51727
  await jumpToLatestMessage();
51718
51728
  return;
@@ -51744,7 +51754,7 @@ var VirtualizedMessageListWithContext = (props) => {
51744
51754
  processedMessages,
51745
51755
  client.userID
51746
51756
  );
51747
- const handleItemsRendered = (0, import_react258.useMemo)(
51757
+ const handleItemsRendered = (0, import_react259.useMemo)(
51748
51758
  () => makeItemsRenderedHandler([toggleShowUnreadMessagesNotification], processedMessages),
51749
51759
  [processedMessages, toggleShowUnreadMessagesNotification]
51750
51760
  );
@@ -51757,7 +51767,7 @@ var VirtualizedMessageListWithContext = (props) => {
51757
51767
  }
51758
51768
  return isAtBottom ? stickToBottomScrollBehavior : false;
51759
51769
  };
51760
- const computeItemKey2 = (0, import_react258.useCallback)(
51770
+ const computeItemKey2 = (0, import_react259.useCallback)(
51761
51771
  (index3, _, { numItemsPrepended: numItemsPrepended2, processedMessages: processedMessages2 }) => processedMessages2[calculateItemIndex(index3, numItemsPrepended2)].id,
51762
51772
  []
51763
51773
  );
@@ -51774,7 +51784,7 @@ var VirtualizedMessageListWithContext = (props) => {
51774
51784
  loadMore?.(messageLimit);
51775
51785
  }
51776
51786
  };
51777
- (0, import_react258.useEffect)(() => {
51787
+ (0, import_react259.useEffect)(() => {
51778
51788
  let scrollTimeout;
51779
51789
  if (highlightedMessageId) {
51780
51790
  const index3 = findMessageIndex(processedMessages, highlightedMessageId);
@@ -51788,19 +51798,20 @@ var VirtualizedMessageListWithContext = (props) => {
51788
51798
  clearTimeout(scrollTimeout);
51789
51799
  };
51790
51800
  }, [highlightedMessageId, processedMessages]);
51801
+ const id = useStableId();
51791
51802
  if (!processedMessages) return null;
51792
- const dialogManagerId = threadList ? "virtualized-message-list-dialog-manager-thread" : "virtualized-message-list-dialog-manager";
51793
- 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(
51794
51805
  UnreadMessagesNotification2,
51795
51806
  {
51796
51807
  unreadCount: channelUnreadUiState?.unread_messages
51797
51808
  }
51798
- ), /* @__PURE__ */ import_react258.default.createElement(
51809
+ ), /* @__PURE__ */ import_react259.default.createElement(
51799
51810
  "div",
51800
51811
  {
51801
51812
  className: customClasses?.virtualizedMessageList || "str-chat__virtual-list"
51802
51813
  },
51803
- /* @__PURE__ */ import_react258.default.createElement(
51814
+ /* @__PURE__ */ import_react259.default.createElement(
51804
51815
  import_react_virtuoso3.Virtuoso,
51805
51816
  {
51806
51817
  atBottomStateChange,
@@ -51866,7 +51877,7 @@ var VirtualizedMessageListWithContext = (props) => {
51866
51877
  ...defaultItemHeight ? { defaultItemHeight } : {}
51867
51878
  }
51868
51879
  )
51869
- )), 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(
51870
51881
  MessageListNotifications2,
51871
51882
  {
51872
51883
  hasNewMessages: newMessagesNotification,
@@ -51878,7 +51889,7 @@ var VirtualizedMessageListWithContext = (props) => {
51878
51889
  threadList,
51879
51890
  unreadCount: threadList ? void 0 : channelUnreadUiState?.unread_messages
51880
51891
  }
51881
- ), giphyPreviewMessage && /* @__PURE__ */ import_react258.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
51892
+ ), giphyPreviewMessage && /* @__PURE__ */ import_react259.default.createElement(GiphyPreviewMessage2, { message: giphyPreviewMessage }));
51882
51893
  };
51883
51894
  function VirtualizedMessageList(props) {
51884
51895
  const { jumpToLatestMessage, loadMore, loadMoreNewer } = useChannelActionContext("VirtualizedMessageList");
@@ -51896,7 +51907,7 @@ function VirtualizedMessageList(props) {
51896
51907
  suppressAutoscroll
51897
51908
  } = useChannelStateContext("VirtualizedMessageList");
51898
51909
  const messages = props.messages || contextMessages;
51899
- return /* @__PURE__ */ import_react258.default.createElement(
51910
+ return /* @__PURE__ */ import_react259.default.createElement(
51900
51911
  VirtualizedMessageListWithContext,
51901
51912
  {
51902
51913
  channel,
@@ -51937,12 +51948,12 @@ var useChannelContainerClasses = ({
51937
51948
  };
51938
51949
 
51939
51950
  // src/components/Channel/utils.ts
51940
- var import_nanoid10 = require("nanoid");
51951
+ var import_nanoid11 = require("nanoid");
51941
51952
  var makeAddNotifications = (setNotifications, notificationTimeouts) => (text8, type) => {
51942
51953
  if (typeof text8 !== "string" || type !== "success" && type !== "error") {
51943
51954
  return;
51944
51955
  }
51945
- const id = (0, import_nanoid10.nanoid)();
51956
+ const id = (0, import_nanoid11.nanoid)();
51946
51957
  setNotifications((prevNotifications) => [...prevNotifications, { id, text: text8, type }]);
51947
51958
  const timeout = setTimeout(
51948
51959
  () => setNotifications(
@@ -52102,7 +52113,7 @@ var ChannelContainer = ({
52102
52113
  customClasses
52103
52114
  });
52104
52115
  const className = (0, import_clsx65.default)(chatClass, theme, channelClass, additionalClassName);
52105
- 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);
52106
52117
  };
52107
52118
  var UnMemoizedChannel = (props) => {
52108
52119
  const {
@@ -52114,15 +52125,15 @@ var UnMemoizedChannel = (props) => {
52114
52125
  const { channel: contextChannel, channelsQueryState } = useChatContext("Channel");
52115
52126
  const channel = propsChannel || contextChannel;
52116
52127
  if (channelsQueryState.queryInProgress === "reload" && LoadingIndicator2) {
52117
- 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));
52118
52129
  }
52119
52130
  if (channelsQueryState.error && LoadingErrorIndicator2) {
52120
- 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 }));
52121
52132
  }
52122
52133
  if (!channel?.cid) {
52123
- return /* @__PURE__ */ import_react259.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
52134
+ return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
52124
52135
  }
52125
- 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 });
52126
52137
  };
52127
52138
  var ChannelInner = (props) => {
52128
52139
  const {
@@ -52148,7 +52159,7 @@ var ChannelInner = (props) => {
52148
52159
  optionalMessageInputProps = {},
52149
52160
  skipMessageDataMemoization
52150
52161
  } = props;
52151
- const channelQueryOptions = (0, import_react259.useMemo)(
52162
+ const channelQueryOptions = (0, import_react260.useMemo)(
52152
52163
  () => (0, import_lodash23.default)(propChannelQueryOptions, {
52153
52164
  messages: { limit: DEFAULT_INITIAL_CHANNEL_PAGE_SIZE }
52154
52165
  }),
@@ -52159,13 +52170,13 @@ var ChannelInner = (props) => {
52159
52170
  const chatContainerClass = getChatContainerClass(customClasses?.chatContainer);
52160
52171
  const windowsEmojiClass = useImageFlagEmojisOnWindowsClass();
52161
52172
  const thread = useThreadContext();
52162
- const [channelConfig, setChannelConfig] = (0, import_react259.useState)(channel.getConfig());
52163
- const [notifications, setNotifications] = (0, import_react259.useState)([]);
52164
- const [quotedMessage, setQuotedMessage] = (0, import_react259.useState)();
52165
- const [channelUnreadUiState, _setChannelUnreadUiState] = (0, import_react259.useState)();
52166
- const notificationTimeouts = (0, import_react259.useRef)([]);
52167
- const channelReducer = (0, import_react259.useMemo)(() => makeChannelReducer(), []);
52168
- 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)(
52169
52180
  channelReducer,
52170
52181
  // channel.initialized === false if client.channel().query() was not called, e.g. ChannelList is not used
52171
52182
  // => Channel will call channel.watch() in useLayoutEffect => state.loading is used to signal the watch() call state
@@ -52177,10 +52188,10 @@ var ChannelInner = (props) => {
52177
52188
  );
52178
52189
  const jumpToMessageFromSearch = useSearchFocusedMessage();
52179
52190
  const isMounted = useIsMounted();
52180
- const originalTitle = (0, import_react259.useRef)("");
52181
- const lastRead = (0, import_react259.useRef)(void 0);
52182
- const online = (0, import_react259.useRef)(true);
52183
- 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)(
52184
52195
  null
52185
52196
  );
52186
52197
  const channelCapabilitiesArray = channel.data?.own_capabilities;
@@ -52192,14 +52203,14 @@ var ChannelInner = (props) => {
52192
52203
  trailing: true
52193
52204
  }
52194
52205
  );
52195
- const setChannelUnreadUiState = (0, import_react259.useMemo)(
52206
+ const setChannelUnreadUiState = (0, import_react260.useMemo)(
52196
52207
  () => (0, import_lodash24.default)(_setChannelUnreadUiState, 200, {
52197
52208
  leading: true,
52198
52209
  trailing: false
52199
52210
  }),
52200
52211
  []
52201
52212
  );
52202
- const markRead = (0, import_react259.useMemo)(
52213
+ const markRead = (0, import_react260.useMemo)(
52203
52214
  () => (0, import_lodash24.default)(
52204
52215
  async (options) => {
52205
52216
  const { updateChannelUiUnreadState = true } = options ?? {};
@@ -52302,7 +52313,7 @@ var ChannelInner = (props) => {
52302
52313
  }
52303
52314
  throttledCopyStateFromChannel();
52304
52315
  };
52305
- (0, import_react259.useLayoutEffect)(() => {
52316
+ (0, import_react260.useLayoutEffect)(() => {
52306
52317
  let errored = false;
52307
52318
  let done = false;
52308
52319
  (async () => {
@@ -52368,12 +52379,12 @@ var ChannelInner = (props) => {
52368
52379
  channelConfig?.read_events,
52369
52380
  initializeOnMount
52370
52381
  ]);
52371
- (0, import_react259.useEffect)(() => {
52382
+ (0, import_react260.useEffect)(() => {
52372
52383
  if (!state.thread) return;
52373
52384
  const message = state.messages?.find((m) => m.id === state.thread?.id);
52374
52385
  if (message) dispatch({ message, type: "setThread" });
52375
52386
  }, [state.messages, state.thread]);
52376
- const handleHighlightedMessageChange = (0, import_react259.useCallback)(
52387
+ const handleHighlightedMessageChange = (0, import_react260.useCallback)(
52377
52388
  ({
52378
52389
  highlightDuration,
52379
52390
  highlightedMessageId
@@ -52396,15 +52407,15 @@ var ChannelInner = (props) => {
52396
52407
  },
52397
52408
  [channel, searchController]
52398
52409
  );
52399
- (0, import_react259.useEffect)(() => {
52410
+ (0, import_react260.useEffect)(() => {
52400
52411
  if (!jumpToMessageFromSearch?.id) return;
52401
52412
  handleHighlightedMessageChange({ highlightedMessageId: jumpToMessageFromSearch.id });
52402
52413
  }, [jumpToMessageFromSearch, handleHighlightedMessageChange]);
52403
- const addNotification = (0, import_react259.useMemo)(
52414
+ const addNotification = (0, import_react260.useMemo)(
52404
52415
  () => makeAddNotifications(setNotifications, notificationTimeouts.current),
52405
52416
  []
52406
52417
  );
52407
- const loadMoreFinished = (0, import_react259.useCallback)(
52418
+ const loadMoreFinished = (0, import_react260.useCallback)(
52408
52419
  (0, import_lodash22.default)(
52409
52420
  (hasMore, messages) => {
52410
52421
  if (!isMounted.current) return;
@@ -52465,7 +52476,7 @@ var ChannelInner = (props) => {
52465
52476
  });
52466
52477
  return queryResponse.messages.length;
52467
52478
  };
52468
- const jumpToMessage = (0, import_react259.useCallback)(
52479
+ const jumpToMessage = (0, import_react260.useCallback)(
52469
52480
  async (messageId, messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
52470
52481
  dispatch({ loadingMore: true, type: "setLoadingMore" });
52471
52482
  await channel.state.loadMessageIntoState(messageId, void 0, messageLimit);
@@ -52477,14 +52488,14 @@ var ChannelInner = (props) => {
52477
52488
  },
52478
52489
  [channel, handleHighlightedMessageChange, loadMoreFinished]
52479
52490
  );
52480
- const jumpToLatestMessage = (0, import_react259.useCallback)(async () => {
52491
+ const jumpToLatestMessage = (0, import_react260.useCallback)(async () => {
52481
52492
  await channel.state.loadMessageIntoState("latest");
52482
52493
  loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
52483
52494
  dispatch({
52484
52495
  type: "jumpToLatestMessage"
52485
52496
  });
52486
52497
  }, [channel, loadMoreFinished]);
52487
- const jumpToFirstUnreadMessage = (0, import_react259.useCallback)(
52498
+ const jumpToFirstUnreadMessage = (0, import_react260.useCallback)(
52488
52499
  async (queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE, highlightDuration = DEFAULT_HIGHLIGHT_DURATION) => {
52489
52500
  if (!channelUnreadUiState?.unread_messages) return;
52490
52501
  let lastReadMessageId = channelUnreadUiState?.last_read_message_id;
@@ -52607,7 +52618,7 @@ var ChannelInner = (props) => {
52607
52618
  channelUnreadUiState
52608
52619
  ]
52609
52620
  );
52610
- const deleteMessage = (0, import_react259.useCallback)(
52621
+ const deleteMessage = (0, import_react260.useCallback)(
52611
52622
  async (message) => {
52612
52623
  if (!message?.id) {
52613
52624
  throw new Error("Cannot delete a message - missing message ID.");
@@ -52712,7 +52723,7 @@ var ChannelInner = (props) => {
52712
52723
  attachments,
52713
52724
  created_at: /* @__PURE__ */ new Date(),
52714
52725
  html: text8,
52715
- id: customMessageData?.id ?? `${client.userID}-${(0, import_nanoid11.nanoid)()}`,
52726
+ id: customMessageData?.id ?? `${client.userID}-${(0, import_nanoid12.nanoid)()}`,
52716
52727
  mentioned_users,
52717
52728
  parent_id: parent?.id,
52718
52729
  reactions: [],
@@ -52764,7 +52775,7 @@ var ChannelInner = (props) => {
52764
52775
  event?.preventDefault();
52765
52776
  dispatch({ type: "closeThread" });
52766
52777
  };
52767
- const loadMoreThreadFinished = (0, import_react259.useCallback)(
52778
+ const loadMoreThreadFinished = (0, import_react260.useCallback)(
52768
52779
  (0, import_lodash22.default)(
52769
52780
  (threadHasMore, threadMessages) => {
52770
52781
  dispatch({
@@ -52828,7 +52839,7 @@ var ChannelInner = (props) => {
52828
52839
  videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration,
52829
52840
  watcher_count: state.watcherCount
52830
52841
  });
52831
- const channelActionContextValue = (0, import_react259.useMemo)(
52842
+ const channelActionContextValue = (0, import_react260.useMemo)(
52832
52843
  () => ({
52833
52844
  addNotification,
52834
52845
  closeThread,
@@ -52869,7 +52880,7 @@ var ChannelInner = (props) => {
52869
52880
  setChannelUnreadUiState
52870
52881
  ]
52871
52882
  );
52872
- const componentContextValue = (0, import_react259.useMemo)(
52883
+ const componentContextValue = (0, import_react260.useMemo)(
52873
52884
  () => ({
52874
52885
  Attachment: props.Attachment,
52875
52886
  AttachmentPreviewList: props.AttachmentPreviewList,
@@ -53001,26 +53012,26 @@ var ChannelInner = (props) => {
53001
53012
  typing
53002
53013
  });
53003
53014
  if (state.error) {
53004
- 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 }));
53005
53016
  }
53006
53017
  if (state.loading) {
53007
- 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));
53008
53019
  }
53009
53020
  if (!channel.watch) {
53010
- 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")));
53011
53022
  }
53012
- 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)))))));
53013
53024
  };
53014
- var Channel = import_react259.default.memo(UnMemoizedChannel);
53025
+ var Channel = import_react260.default.memo(UnMemoizedChannel);
53015
53026
 
53016
53027
  // src/components/ChannelHeader/ChannelHeader.tsx
53017
- var import_react261 = __toESM(require("react"));
53028
+ var import_react262 = __toESM(require("react"));
53018
53029
 
53019
53030
  // src/components/ChannelHeader/icons.tsx
53020
- var import_react260 = __toESM(require("react"));
53031
+ var import_react261 = __toESM(require("react"));
53021
53032
  var MenuIcon2 = ({ title }) => {
53022
53033
  const { t: t2 } = useTranslationContext("MenuIcon");
53023
- 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(
53024
53035
  "path",
53025
53036
  {
53026
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",
@@ -53047,15 +53058,15 @@ var ChannelHeader = (props) => {
53047
53058
  overrideTitle
53048
53059
  });
53049
53060
  const { member_count, subtitle } = channel?.data || {};
53050
- 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(
53051
53062
  "button",
53052
53063
  {
53053
53064
  "aria-label": t2("aria/Menu"),
53054
53065
  className: "str-chat__header-hamburger",
53055
53066
  onClick: openMobileNav
53056
53067
  },
53057
- /* @__PURE__ */ import_react261.default.createElement(MenuIcon3, null)
53058
- ), /* @__PURE__ */ import_react261.default.createElement(
53068
+ /* @__PURE__ */ import_react262.default.createElement(MenuIcon3, null)
53069
+ ), /* @__PURE__ */ import_react262.default.createElement(
53059
53070
  Avatar2,
53060
53071
  {
53061
53072
  className: "str-chat__avatar--channel-header",
@@ -53063,36 +53074,36 @@ var ChannelHeader = (props) => {
53063
53074
  image: displayImage,
53064
53075
  name: displayTitle
53065
53076
  }
53066
- ), /* @__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", {
53067
53078
  memberCount: member_count
53068
53079
  }), ",", " "), t2("{{ watcherCount }} online", { watcherCount: watcher_count }))));
53069
53080
  };
53070
53081
 
53071
53082
  // src/components/Chat/Chat.tsx
53072
- var import_react265 = __toESM(require("react"));
53083
+ var import_react266 = __toESM(require("react"));
53073
53084
  var import_stream_chat6 = require("stream-chat");
53074
53085
 
53075
53086
  // src/components/Chat/hooks/useChat.ts
53076
- var import_react262 = require("react");
53087
+ var import_react263 = require("react");
53077
53088
  var useChat = ({
53078
53089
  client,
53079
53090
  defaultLanguage = "en",
53080
53091
  i18nInstance,
53081
53092
  initialNavOpen
53082
53093
  }) => {
53083
- const [translators, setTranslators] = (0, import_react262.useState)({
53094
+ const [translators, setTranslators] = (0, import_react263.useState)({
53084
53095
  t: (key) => key,
53085
53096
  tDateTimeParser: defaultDateTimeParser,
53086
53097
  userLanguage: "en"
53087
53098
  });
53088
- const [channel, setChannel] = (0, import_react262.useState)();
53089
- const [mutes, setMutes] = (0, import_react262.useState)([]);
53090
- const [navOpen, setNavOpen] = (0, import_react262.useState)(initialNavOpen);
53091
- 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)({});
53092
53103
  const clientMutes = client.user?.mutes || [];
53093
53104
  const closeMobileNav = () => setNavOpen(false);
53094
53105
  const openMobileNav = () => setTimeout(() => setNavOpen(true), 100);
53095
- const appSettings = (0, import_react262.useRef)(
53106
+ const appSettings = (0, import_react263.useRef)(
53096
53107
  null
53097
53108
  );
53098
53109
  const getAppSettings = () => {
@@ -53102,9 +53113,9 @@ var useChat = ({
53102
53113
  appSettings.current = client.getAppSettings();
53103
53114
  return appSettings.current;
53104
53115
  };
53105
- (0, import_react262.useEffect)(() => {
53116
+ (0, import_react263.useEffect)(() => {
53106
53117
  if (!client) return;
53107
- const version = "12.15.1";
53118
+ const version = "12.15.2";
53108
53119
  const userAgent = client.getUserAgent();
53109
53120
  if (!userAgent.includes("stream-chat-react")) {
53110
53121
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -53116,7 +53127,7 @@ var useChat = ({
53116
53127
  client.polls.unregisterSubscriptions();
53117
53128
  };
53118
53129
  }, [client]);
53119
- (0, import_react262.useEffect)(() => {
53130
+ (0, import_react263.useEffect)(() => {
53120
53131
  setMutes(clientMutes);
53121
53132
  const handleEvent = (event) => {
53122
53133
  setMutes(event.me?.mutes || []);
@@ -53124,7 +53135,7 @@ var useChat = ({
53124
53135
  client.on("notification.mutes_updated", handleEvent);
53125
53136
  return () => client.off("notification.mutes_updated", handleEvent);
53126
53137
  }, [clientMutes?.length]);
53127
- (0, import_react262.useEffect)(() => {
53138
+ (0, import_react263.useEffect)(() => {
53128
53139
  let userLanguage = client.user?.language;
53129
53140
  if (!userLanguage) {
53130
53141
  const browserLanguage = window.navigator.language.slice(0, 2);
@@ -53141,7 +53152,7 @@ var useChat = ({
53141
53152
  });
53142
53153
  });
53143
53154
  }, [i18nInstance]);
53144
- const setActiveChannel = (0, import_react262.useCallback)(
53155
+ const setActiveChannel = (0, import_react263.useCallback)(
53145
53156
  async (activeChannel, watchers = {}, event) => {
53146
53157
  if (event && event.preventDefault) event.preventDefault();
53147
53158
  if (activeChannel && Object.keys(watchers).length) {
@@ -53152,7 +53163,7 @@ var useChat = ({
53152
53163
  },
53153
53164
  []
53154
53165
  );
53155
- (0, import_react262.useEffect)(() => {
53166
+ (0, import_react263.useEffect)(() => {
53156
53167
  setLatestMessageDatesByChannels({});
53157
53168
  }, [client.user?.id]);
53158
53169
  return {
@@ -53169,7 +53180,7 @@ var useChat = ({
53169
53180
  };
53170
53181
 
53171
53182
  // src/components/Chat/hooks/useCreateChatContext.ts
53172
- var import_react263 = require("react");
53183
+ var import_react264 = require("react");
53173
53184
  var useCreateChatContext = (value) => {
53174
53185
  const {
53175
53186
  channel,
@@ -53194,7 +53205,7 @@ var useCreateChatContext = (value) => {
53194
53205
  const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${Object.keys(client.listeners).length}${client.mutedChannels.length}
53195
53206
  ${client.user?.id}`;
53196
53207
  const mutedUsersLength = mutes.length;
53197
- const chatContext = (0, import_react263.useMemo)(
53208
+ const chatContext = (0, import_react264.useMemo)(
53198
53209
  () => ({
53199
53210
  channel,
53200
53211
  channelsQueryState,
@@ -53229,10 +53240,10 @@ var useCreateChatContext = (value) => {
53229
53240
  };
53230
53241
 
53231
53242
  // src/components/Chat/hooks/useChannelsQueryState.ts
53232
- var import_react264 = require("react");
53243
+ var import_react265 = require("react");
53233
53244
  var useChannelsQueryState = () => {
53234
- const [error, setError] = (0, import_react264.useState)(null);
53235
- 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");
53236
53247
  return {
53237
53248
  error,
53238
53249
  queryInProgress,
@@ -53267,7 +53278,7 @@ var Chat = (props) => {
53267
53278
  translators
53268
53279
  } = useChat({ client, defaultLanguage, i18nInstance, initialNavOpen });
53269
53280
  const channelsQueryState = useChannelsQueryState();
53270
- const searchController = (0, import_react265.useMemo)(
53281
+ const searchController = (0, import_react266.useMemo)(
53271
53282
  () => customChannelSearchController ?? new import_stream_chat6.SearchController({
53272
53283
  sources: [
53273
53284
  new import_stream_chat6.ChannelSearchSource(client),
@@ -53295,11 +53306,11 @@ var Chat = (props) => {
53295
53306
  useImageFlagEmojisOnWindows
53296
53307
  });
53297
53308
  if (!translators.t) return null;
53298
- 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));
53299
53310
  };
53300
53311
 
53301
53312
  // src/components/Chat/hooks/useCreateChatClient.ts
53302
- var import_react266 = require("react");
53313
+ var import_react267 = require("react");
53303
53314
  var import_stream_chat7 = require("stream-chat");
53304
53315
  var useCreateChatClient = ({
53305
53316
  apiKey,
@@ -53307,13 +53318,13 @@ var useCreateChatClient = ({
53307
53318
  tokenOrProvider,
53308
53319
  userData
53309
53320
  }) => {
53310
- const [chatClient, setChatClient] = (0, import_react266.useState)(null);
53311
- 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);
53312
53323
  if (userData.id !== cachedUserData.id) {
53313
53324
  setCachedUserData(userData);
53314
53325
  }
53315
- const [cachedOptions] = (0, import_react266.useState)(options);
53316
- (0, import_react266.useEffect)(() => {
53326
+ const [cachedOptions] = (0, import_react267.useState)(options);
53327
+ (0, import_react267.useEffect)(() => {
53317
53328
  const client = new import_stream_chat7.StreamChat(apiKey, void 0, cachedOptions);
53318
53329
  let didUserConnectInterrupt = false;
53319
53330
  const connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(() => {
@@ -53331,17 +53342,17 @@ var useCreateChatClient = ({
53331
53342
  };
53332
53343
 
53333
53344
  // src/components/Thread/Thread.tsx
53334
- var import_react271 = __toESM(require("react"));
53345
+ var import_react272 = __toESM(require("react"));
53335
53346
  var import_clsx66 = __toESM(require("clsx"));
53336
53347
 
53337
53348
  // src/components/Thread/ThreadHeader.tsx
53338
- var import_react268 = __toESM(require("react"));
53349
+ var import_react269 = __toESM(require("react"));
53339
53350
 
53340
53351
  // src/components/Thread/icons.tsx
53341
- var import_react267 = __toESM(require("react"));
53352
+ var import_react268 = __toESM(require("react"));
53342
53353
  var CloseIcon3 = ({ title }) => {
53343
53354
  const { t: t2 } = useTranslationContext("CloseIcon");
53344
- return /* @__PURE__ */ import_react267.default.createElement(
53355
+ return /* @__PURE__ */ import_react268.default.createElement(
53345
53356
  "svg",
53346
53357
  {
53347
53358
  "data-testid": "close-no-outline",
@@ -53349,8 +53360,8 @@ var CloseIcon3 = ({ title }) => {
53349
53360
  viewBox: "0 0 24 24",
53350
53361
  xmlns: "http://www.w3.org/2000/svg"
53351
53362
  },
53352
- /* @__PURE__ */ import_react267.default.createElement("title", null, title ?? t2("Close")),
53353
- /* @__PURE__ */ import_react267.default.createElement(
53363
+ /* @__PURE__ */ import_react268.default.createElement("title", null, title ?? t2("Close")),
53364
+ /* @__PURE__ */ import_react268.default.createElement(
53354
53365
  "path",
53355
53366
  {
53356
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",
@@ -53370,7 +53381,7 @@ var ThreadHeader = (props) => {
53370
53381
  overrideImage,
53371
53382
  overrideTitle
53372
53383
  });
53373
- 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(
53374
53385
  "button",
53375
53386
  {
53376
53387
  "aria-label": t2("aria/Close thread"),
@@ -53378,26 +53389,26 @@ var ThreadHeader = (props) => {
53378
53389
  "data-testid": "close-button",
53379
53390
  onClick: closeThread
53380
53391
  },
53381
- /* @__PURE__ */ import_react268.default.createElement(CloseIcon3, null)
53392
+ /* @__PURE__ */ import_react269.default.createElement(CloseIcon3, null)
53382
53393
  ));
53383
53394
  };
53384
53395
 
53385
53396
  // src/components/Thread/ThreadHead.tsx
53386
- var import_react270 = __toESM(require("react"));
53397
+ var import_react271 = __toESM(require("react"));
53387
53398
 
53388
53399
  // src/components/Thread/ThreadStart.tsx
53389
- var import_react269 = __toESM(require("react"));
53400
+ var import_react270 = __toESM(require("react"));
53390
53401
  var ThreadStart = () => {
53391
53402
  const { thread } = useChannelStateContext("ThreadStart");
53392
53403
  const { t: t2 } = useTranslationContext("ThreadStart");
53393
53404
  if (!thread?.reply_count) return null;
53394
- 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 }));
53395
53406
  };
53396
53407
 
53397
53408
  // src/components/Thread/ThreadHead.tsx
53398
53409
  var ThreadHead = (props) => {
53399
53410
  const { ThreadStart: ThreadStart2 = ThreadStart } = useComponentContext("ThreadHead");
53400
- 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));
53401
53412
  };
53402
53413
 
53403
53414
  // src/components/Thread/Thread.tsx
@@ -53407,7 +53418,7 @@ var Thread = (props) => {
53407
53418
  if (!thread && !threadInstance || channelConfig?.replies === false) return null;
53408
53419
  return (
53409
53420
  // FIXME: TS is having trouble here as at least one of the two would always be defined
53410
- /* @__PURE__ */ import_react271.default.createElement(
53421
+ /* @__PURE__ */ import_react272.default.createElement(
53411
53422
  ThreadInner,
53412
53423
  {
53413
53424
  ...props,
@@ -53458,7 +53469,7 @@ var ThreadInner = (props) => {
53458
53469
  const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
53459
53470
  const MessageUIComponent = ThreadMessage || FallbackMessage;
53460
53471
  const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
53461
- (0, import_react271.useEffect)(() => {
53472
+ (0, import_react272.useEffect)(() => {
53462
53473
  if (thread?.id && thread?.reply_count) {
53463
53474
  loadMoreThread();
53464
53475
  }
@@ -53480,7 +53491,7 @@ var ThreadInner = (props) => {
53480
53491
  const threadClass = customClasses?.thread || (0, import_clsx66.default)("str-chat__thread-container str-chat__thread", {
53481
53492
  "str-chat__thread--virtualized": virtualized
53482
53493
  });
53483
- const head = /* @__PURE__ */ import_react271.default.createElement(
53494
+ const head = /* @__PURE__ */ import_react272.default.createElement(
53484
53495
  ThreadHead2,
53485
53496
  {
53486
53497
  key: messageAsThread.id,
@@ -53489,7 +53500,7 @@ var ThreadInner = (props) => {
53489
53500
  ...additionalParentMessageProps
53490
53501
  }
53491
53502
  );
53492
- 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(
53493
53504
  ThreadMessageList,
53494
53505
  {
53495
53506
  disableDateSeparator: !enableDateSeparator,
@@ -53501,7 +53512,7 @@ var ThreadInner = (props) => {
53501
53512
  ...threadProps,
53502
53513
  ...virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps
53503
53514
  }
53504
- ), /* @__PURE__ */ import_react271.default.createElement(
53515
+ ), /* @__PURE__ */ import_react272.default.createElement(
53505
53516
  MessageInput,
53506
53517
  {
53507
53518
  focus: autoFocus,
@@ -53515,12 +53526,12 @@ var ThreadInner = (props) => {
53515
53526
  };
53516
53527
 
53517
53528
  // src/components/Window/Window.tsx
53518
- var import_react272 = __toESM(require("react"));
53529
+ var import_react273 = __toESM(require("react"));
53519
53530
  var import_clsx67 = __toESM(require("clsx"));
53520
53531
  var UnMemoizedWindow = (props) => {
53521
53532
  const { children, thread: propThread } = props;
53522
53533
  const { thread: contextThread } = useChannelStateContext("Window");
53523
- return /* @__PURE__ */ import_react272.default.createElement(
53534
+ return /* @__PURE__ */ import_react273.default.createElement(
53524
53535
  "div",
53525
53536
  {
53526
53537
  className: (0, import_clsx67.default)("str-chat__main-panel", {
@@ -53530,7 +53541,7 @@ var UnMemoizedWindow = (props) => {
53530
53541
  children
53531
53542
  );
53532
53543
  };
53533
- var Window = import_react272.default.memo(UnMemoizedWindow);
53544
+ var Window = import_react273.default.memo(UnMemoizedWindow);
53534
53545
  /*! Bundled license information:
53535
53546
 
53536
53547
  is-buffer/index.js: