stream-chat-react 12.15.1 → 12.15.3
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.
- package/dist/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Dialog/DialogManager.js +2 -1
- package/dist/components/MessageInput/AttachmentSelector.js +3 -3
- package/dist/components/MessageInput/MessageInput.js +4 -2
- package/dist/components/MessageList/MessageList.js +4 -2
- package/dist/components/MessageList/VirtualizedMessageList.js +4 -2
- package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +3 -2
- package/dist/components/UtilityComponents/useStableId.d.ts +5 -0
- package/dist/components/UtilityComponents/useStableId.js +11 -0
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/experimental/index.browser.cjs.map +1 -1
- package/dist/experimental/index.node.cjs.map +1 -1
- package/dist/index.browser.cjs +687 -676
- package/dist/index.browser.cjs.map +4 -4
- package/dist/index.node.cjs +576 -565
- package/dist/index.node.cjs.map +4 -4
- package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +14 -0
- package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +11 -0
- package/dist/scss/v2/LinkPreview/LinkPreview-layout.scss +18 -0
- package/dist/scss/v2/LinkPreview/LinkPreview-theme.scss +15 -0
- package/dist/scss/v2/MessageInput/MessageInput-layout.scss +5 -0
- package/package.json +2 -2
package/dist/index.browser.cjs
CHANGED
|
@@ -16187,10 +16187,10 @@ function Parse(source, customConvertors) {
|
|
|
16187
16187
|
var XMLNodes = SourceToXML(source);
|
|
16188
16188
|
return XMLtoMMLTree(XMLNodes, customConvertors);
|
|
16189
16189
|
}
|
|
16190
|
-
var
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
16735
|
+
return import_react208.default.createElement("div", {
|
|
16736
16736
|
className: "mml-card-header " + className
|
|
16737
|
-
}, icon2 &&
|
|
16737
|
+
}, icon2 && import_react208.default.createElement(Icon3, {
|
|
16738
16738
|
name: icon2
|
|
16739
|
-
}),
|
|
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
|
|
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
|
|
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
|
|
16757
|
+
return import_react208.default.createElement("i", {
|
|
16758
16758
|
className: "mml-icon"
|
|
16759
|
-
},
|
|
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
|
-
},
|
|
16763
|
+
}, import_react208.default.createElement("path", {
|
|
16764
16764
|
d: path2
|
|
16765
16765
|
})));
|
|
16766
16766
|
};
|
|
16767
|
-
IconGoogle = /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
16829
|
+
return import_react208.default.createElement(Card2, {
|
|
16830
16830
|
className: "mml-add-to-calendar " + className
|
|
16831
|
-
},
|
|
16831
|
+
}, import_react208.default.createElement(CardHeader2, {
|
|
16832
16832
|
icon: "date_range",
|
|
16833
16833
|
text: "Add to My Calendar"
|
|
16834
|
-
}),
|
|
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
|
|
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
|
|
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 &&
|
|
16859
|
+
}, icon2 && import_react208.default.createElement(Icon3, {
|
|
16860
16860
|
name: icon2
|
|
16861
16861
|
}), text8);
|
|
16862
|
-
return
|
|
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 &&
|
|
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
|
|
16881
|
+
return import_react208.default.createElement("div", {
|
|
16882
16882
|
className: "mml-carousel " + className
|
|
16883
|
-
},
|
|
16883
|
+
}, import_react208.default.createElement("div", {
|
|
16884
16884
|
className: "mml-carousel__track"
|
|
16885
|
-
},
|
|
16885
|
+
}, import_react208.default.createElement("div", {
|
|
16886
16886
|
className: "mml-carousel__slides"
|
|
16887
|
-
},
|
|
16888
|
-
return (0,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
16932
|
+
var _useState = (0, import_react208.useState)(value), state = _useState[0], setState = _useState[1];
|
|
16933
16933
|
var id = "mml-" + name2;
|
|
16934
|
-
return
|
|
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
|
-
},
|
|
16937
|
+
}, import_react208.default.createElement("span", {
|
|
16938
16938
|
className: "mml-card-header__text"
|
|
16939
|
-
}, label)),
|
|
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
|
|
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
|
-
},
|
|
16964
|
+
}, import_react208.default.createElement("svg", {
|
|
16965
16965
|
className: "mml-progress__svg",
|
|
16966
16966
|
viewBox: SIZE / 2 + " " + SIZE / 2 + " " + SIZE + " " + SIZE
|
|
16967
|
-
},
|
|
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
|
|
16979
|
+
return import_react208.default.createElement("div", {
|
|
16980
16980
|
className: "mml-loading " + className
|
|
16981
|
-
},
|
|
16981
|
+
}, import_react208.default.createElement(Progress, Object.assign({}, {
|
|
16982
16982
|
size,
|
|
16983
16983
|
thickness,
|
|
16984
16984
|
color: color2
|
|
16985
|
-
})), text8 &&
|
|
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
|
|
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
|
|
17047
|
+
return import_react208.default.createElement("div", {
|
|
17048
17048
|
className: "mml-md"
|
|
17049
|
-
},
|
|
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,
|
|
17063
|
-
return
|
|
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
|
-
},
|
|
17065
|
+
}, import_react208.default.createElement("input", {
|
|
17066
17066
|
name: name2,
|
|
17067
17067
|
value: state,
|
|
17068
17068
|
type: "hidden"
|
|
17069
|
-
}),
|
|
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
|
-
},
|
|
17074
|
+
}, import_react208.default.createElement(Icon3, {
|
|
17075
17075
|
name: "remove"
|
|
17076
|
-
})),
|
|
17076
|
+
})), import_react208.default.createElement("span", {
|
|
17077
17077
|
className: "mml-number__count"
|
|
17078
|
-
}, state),
|
|
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
|
-
},
|
|
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
|
|
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,
|
|
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,
|
|
17112
|
-
var _useState2 = (0,
|
|
17113
|
-
var initialIndexOffset = (0,
|
|
17114
|
-
var _useState3 = (0,
|
|
17115
|
-
var handleClick = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
17186
|
+
return import_react208.default.createElement("div", {
|
|
17187
17187
|
className: "mml-datepicker__select mml-datepicker__date"
|
|
17188
|
-
},
|
|
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
|
|
17207
|
+
return import_react208.default.createElement("div", {
|
|
17208
17208
|
className: "mml-datepicker__select mml-datepicker__time"
|
|
17209
|
-
},
|
|
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,
|
|
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
|
|
17227
|
+
return import_react208.default.createElement("div", {
|
|
17228
17228
|
className: "mml-datepicker mml-datepicker--" + (fullDay ? "single" : "double")
|
|
17229
|
-
},
|
|
17229
|
+
}, import_react208.default.createElement("input", {
|
|
17230
17230
|
name: name2,
|
|
17231
17231
|
value: date.toISOString(),
|
|
17232
17232
|
type: "hidden"
|
|
17233
|
-
}),
|
|
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 &&
|
|
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,
|
|
17297
|
-
var _useState2 = (0,
|
|
17298
|
-
var _useState3 = (0,
|
|
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,
|
|
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
|
|
17316
|
+
return import_react208.default.createElement(Card2, {
|
|
17317
17317
|
className: "mml-scheduler"
|
|
17318
|
-
},
|
|
17318
|
+
}, import_react208.default.createElement(CardHeader2, {
|
|
17319
17319
|
icon: "date_range",
|
|
17320
17320
|
text: "Scheduler"
|
|
17321
|
-
}),
|
|
17321
|
+
}), import_react208.default.createElement(CardBody, null, error && !loading && import_react208.default.createElement(Error$1, {
|
|
17322
17322
|
error: "Failed, error: " + error
|
|
17323
|
-
}), !error && loading &&
|
|
17323
|
+
}), !error && loading && import_react208.default.createElement(Loading, {
|
|
17324
17324
|
loading: true,
|
|
17325
17325
|
text: "Loading availability"
|
|
17326
|
-
}), !error && !loading &&
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
17477
|
-
var _useState2 = (0,
|
|
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,
|
|
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,
|
|
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
|
|
17545
|
+
return import_react208.default.createElement("div", {
|
|
17546
17546
|
className: "mml-container " + theme + " " + className,
|
|
17547
17547
|
"data-testid": "mml-container"
|
|
17548
|
-
}, error ?
|
|
17548
|
+
}, error ? import_react208.default.createElement("div", {
|
|
17549
17549
|
className: "mml-wrap"
|
|
17550
|
-
}, Error3 &&
|
|
17550
|
+
}, Error3 && import_react208.default.createElement(Error3, {
|
|
17551
17551
|
error
|
|
17552
|
-
})) :
|
|
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 ?
|
|
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 &&
|
|
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 &&
|
|
17560
|
+
}), submitState.success && Success$1 && import_react208.default.createElement(Success$1, {
|
|
17561
17561
|
success: submitState.success
|
|
17562
|
-
}), submitState.error && 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 ?? (
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
40871
|
+
var import_react229 = __toESM(require("react"));
|
|
40871
40872
|
|
|
40872
40873
|
// src/components/Message/Message.tsx
|
|
40873
|
-
var
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
46901
|
+
id: (0, import_nanoid7.nanoid)(),
|
|
46901
46902
|
max_votes_allowed: "",
|
|
46902
46903
|
name: "",
|
|
46903
|
-
options: [{ id: (0,
|
|
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
|
|
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
|
|
47232
|
+
var import_nanoid8 = require("nanoid");
|
|
47233
47233
|
var LoadingIndicatorIcon = ({ size = 20 }) => {
|
|
47234
|
-
const id = (0, import_react184.useMemo)(() => (0,
|
|
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,
|
|
47429
|
-
const [labelElement, setLabelElement] = (0,
|
|
47430
|
-
const id = (
|
|
47431
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
47465
|
+
return /* @__PURE__ */ import_react188.default.createElement(AttachmentSelectorInitiationButtonContents, null);
|
|
47458
47466
|
}
|
|
47459
47467
|
if (FileUploadIcon) {
|
|
47460
|
-
return /* @__PURE__ */
|
|
47468
|
+
return /* @__PURE__ */ import_react188.default.createElement(FileUploadIcon, null);
|
|
47461
47469
|
}
|
|
47462
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
47533
|
-
const openModal = (0,
|
|
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,
|
|
47542
|
-
const [fileInput, setFileInput] = (0,
|
|
47543
|
-
const menuButtonRef = (0,
|
|
47544
|
-
const getDefaultPortalDestination = (0,
|
|
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__ */
|
|
47558
|
+
return /* @__PURE__ */ import_react188.default.createElement(SimpleAttachmentSelector, null);
|
|
47551
47559
|
const ModalContent = modalContentAction?.ModalContent;
|
|
47552
47560
|
const modalIsOpen = !!ModalContent;
|
|
47553
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
47565
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
47596
|
+
), /* @__PURE__ */ import_react188.default.createElement(
|
|
47589
47597
|
Portal,
|
|
47590
47598
|
{
|
|
47591
47599
|
getPortalDestination: getModalPortalDestination ?? getDefaultPortalDestination,
|
|
47592
47600
|
isOpen: modalIsOpen
|
|
47593
47601
|
},
|
|
47594
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
47615
|
+
var import_react200 = __toESM(require("react"));
|
|
47608
47616
|
|
|
47609
47617
|
// src/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.tsx
|
|
47610
|
-
var
|
|
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__ */
|
|
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__ */
|
|
47625
|
-
/* @__PURE__ */
|
|
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__ */
|
|
47641
|
+
/* @__PURE__ */ import_react189.default.createElement(CloseIcon, null)
|
|
47634
47642
|
),
|
|
47635
|
-
attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */
|
|
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__ */
|
|
47650
|
+
/* @__PURE__ */ import_react189.default.createElement(RetryIcon, null)
|
|
47643
47651
|
),
|
|
47644
|
-
/* @__PURE__ */
|
|
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__ */
|
|
47654
|
-
), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */
|
|
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
|
|
47667
|
+
var import_react197 = __toESM(require("react"));
|
|
47660
47668
|
|
|
47661
47669
|
// src/components/MediaRecorder/RecordingPermissionDeniedNotification.tsx
|
|
47662
|
-
var
|
|
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__ */
|
|
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
|
|
47697
|
+
var import_react195 = __toESM(require("react"));
|
|
47690
47698
|
|
|
47691
47699
|
// src/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.tsx
|
|
47692
|
-
var
|
|
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
|
|
47697
|
-
var RecordingTimer = ({ durationSeconds }) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
47727
|
-
), /* @__PURE__ */
|
|
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
|
|
47746
|
+
var import_react194 = __toESM(require("react"));
|
|
47739
47747
|
|
|
47740
47748
|
// src/components/MessageInput/hooks/useTimeElapsed.ts
|
|
47741
|
-
var
|
|
47749
|
+
var import_react193 = require("react");
|
|
47742
47750
|
var useTimeElapsed = ({ startOnMount } = {}) => {
|
|
47743
|
-
const [secondsElapsed, setSecondsElapsed] = (0,
|
|
47744
|
-
const updateInterval = (0,
|
|
47745
|
-
const startCounter = (0,
|
|
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,
|
|
47759
|
+
const stopCounter = (0, import_react193.useCallback)(() => {
|
|
47752
47760
|
clearInterval(updateInterval.current);
|
|
47753
47761
|
updateInterval.current = void 0;
|
|
47754
47762
|
}, []);
|
|
47755
|
-
(0,
|
|
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,
|
|
47775
|
-
(0,
|
|
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__ */
|
|
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,
|
|
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__ */
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
47843
|
-
), state.stopped && recording?.asset_url ? /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
47858
|
-
), state.recording && /* @__PURE__ */
|
|
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__ */
|
|
47866
|
-
), state.stopped ? /* @__PURE__ */
|
|
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__ */
|
|
47875
|
-
) : /* @__PURE__ */
|
|
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__ */
|
|
47890
|
+
/* @__PURE__ */ import_react195.default.createElement(CheckSignIcon, null)
|
|
47883
47891
|
)));
|
|
47884
47892
|
};
|
|
47885
47893
|
|
|
47886
47894
|
// src/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.tsx
|
|
47887
|
-
var
|
|
47888
|
-
var StartRecordingAudioButton = (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
47923
|
-
/* @__PURE__ */
|
|
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__ */
|
|
47939
|
+
/* @__PURE__ */ import_react197.default.createElement(CloseIcon, null)
|
|
47932
47940
|
),
|
|
47933
|
-
attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */
|
|
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__ */
|
|
47948
|
+
/* @__PURE__ */ import_react197.default.createElement(RetryIcon, null)
|
|
47941
47949
|
),
|
|
47942
|
-
/* @__PURE__ */
|
|
47943
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
47962
|
-
/* @__PURE__ */
|
|
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__ */
|
|
47979
|
+
/* @__PURE__ */ import_react198.default.createElement(CloseIcon, null)
|
|
47972
47980
|
),
|
|
47973
|
-
attachment.localMetadata?.uploadState === "failed" && !!handleRetry && /* @__PURE__ */
|
|
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__ */
|
|
47988
|
+
/* @__PURE__ */ import_react198.default.createElement(RetryIcon, null)
|
|
47981
47989
|
),
|
|
47982
|
-
/* @__PURE__ */
|
|
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__ */
|
|
47994
|
-
), attachment.localMetadata?.uploadState === "uploading" && /* @__PURE__ */
|
|
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
|
|
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,
|
|
48016
|
+
const [previewError, setPreviewError] = (0, import_react199.useState)(false);
|
|
48009
48017
|
const { id, uploadState } = attachment.localMetadata ?? {};
|
|
48010
|
-
const handleLoadError = (0,
|
|
48018
|
+
const handleLoadError = (0, import_react199.useCallback)(() => setPreviewError(true), []);
|
|
48011
48019
|
const assetUrl = attachment.image_url || attachment.localMetadata.previewUri;
|
|
48012
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
48037
|
+
/* @__PURE__ */ import_react199.default.createElement(CloseIcon, null)
|
|
48030
48038
|
),
|
|
48031
|
-
uploadState === "failed" && /* @__PURE__ */
|
|
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__ */
|
|
48046
|
+
/* @__PURE__ */ import_react199.default.createElement(RetryIcon, null)
|
|
48039
48047
|
),
|
|
48040
|
-
uploadState === "uploading" && /* @__PURE__ */
|
|
48041
|
-
assetUrl && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
48147
|
+
var import_react202 = __toESM(require("react"));
|
|
48140
48148
|
|
|
48141
48149
|
// src/components/MessageInput/hooks/useTimer.ts
|
|
48142
|
-
var
|
|
48150
|
+
var import_react201 = require("react");
|
|
48143
48151
|
var useTimer = ({ startFrom }) => {
|
|
48144
|
-
const [secondsLeft, setSecondsLeft] = (0,
|
|
48145
|
-
(0,
|
|
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,
|
|
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__ */
|
|
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
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
48437
|
+
return /* @__PURE__ */ import_react205.default.createElement(MessageInputContextProvider, { value: newValue }, children);
|
|
48430
48438
|
};
|
|
48431
48439
|
|
|
48432
48440
|
// src/components/MessageInput/EditMessageForm.tsx
|
|
48433
|
-
var
|
|
48441
|
+
var import_react219 = __toESM(require("react"));
|
|
48434
48442
|
|
|
48435
48443
|
// src/components/MessageInput/MessageInputFlat.tsx
|
|
48436
|
-
var
|
|
48444
|
+
var import_react218 = __toESM(require("react"));
|
|
48437
48445
|
|
|
48438
48446
|
// src/components/MessageInput/SendButton.tsx
|
|
48439
|
-
var
|
|
48447
|
+
var import_react206 = __toESM(require("react"));
|
|
48440
48448
|
var SendButton = ({
|
|
48441
48449
|
sendMessage,
|
|
48442
48450
|
...rest
|
|
48443
|
-
}) => /* @__PURE__ */
|
|
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__ */
|
|
48461
|
+
/* @__PURE__ */ import_react206.default.createElement(SendIcon, null)
|
|
48454
48462
|
);
|
|
48455
48463
|
|
|
48456
48464
|
// src/components/MessageInput/StopAIGenerationButton.tsx
|
|
48457
|
-
var
|
|
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__ */
|
|
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
|
|
48484
|
+
var import_react212 = __toESM(require("react"));
|
|
48477
48485
|
|
|
48478
48486
|
// src/components/Message/FixedHeightMessage.tsx
|
|
48479
|
-
var
|
|
48487
|
+
var import_react210 = __toESM(require("react"));
|
|
48480
48488
|
|
|
48481
48489
|
// src/components/MML/MML.tsx
|
|
48482
|
-
var
|
|
48483
|
-
var MMLReact =
|
|
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__ */
|
|
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,
|
|
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,
|
|
48534
|
-
const messageActionsHandler = (0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
48579
|
+
var FixedHeightMessage = import_react210.default.memo(
|
|
48572
48580
|
UnMemoizedFixedHeightMessage
|
|
48573
48581
|
);
|
|
48574
48582
|
|
|
48575
48583
|
// src/components/Message/StreamedMessageText.tsx
|
|
48576
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
48667
|
-
(linkPreview) => linkPreview.state === "loaded" /* LOADED */ ? /* @__PURE__ */
|
|
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,
|
|
48674
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
48707
|
+
/* @__PURE__ */ import_react213.default.createElement(LinkIcon, null)
|
|
48700
48708
|
),
|
|
48701
|
-
/* @__PURE__ */
|
|
48702
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
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__ */
|
|
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 =
|
|
48788
|
+
var ChatAutoComplete = import_react214.default.memo(
|
|
48781
48789
|
UnMemoizedChatAutoComplete
|
|
48782
48790
|
);
|
|
48783
48791
|
|
|
48784
48792
|
// src/components/AIStateIndicator/AIStateIndicator.tsx
|
|
48785
|
-
var
|
|
48793
|
+
var import_react216 = __toESM(require("react"));
|
|
48786
48794
|
|
|
48787
48795
|
// src/components/AIStateIndicator/hooks/useAIState.ts
|
|
48788
|
-
var
|
|
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,
|
|
48798
|
-
(0,
|
|
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__ */
|
|
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
|
|
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 =
|
|
48853
|
+
var DragAndDropUploadContext = import_react217.default.createContext({
|
|
48846
48854
|
subscribeToDrop: null
|
|
48847
48855
|
});
|
|
48848
|
-
var useDragAndDropUploadContext = () => (0,
|
|
48856
|
+
var useDragAndDropUploadContext = () => (0, import_react217.useContext)(DragAndDropUploadContext);
|
|
48849
48857
|
var useRegisterDropHandlers = ({ uploadNewFiles }) => {
|
|
48850
48858
|
const { subscribeToDrop } = useDragAndDropUploadContext();
|
|
48851
|
-
(0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
48902
|
+
return /* @__PURE__ */ import_react217.default.createElement(Component2, { className }, children);
|
|
48895
48903
|
}
|
|
48896
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
48911
|
-
isDragReject && /* @__PURE__ */
|
|
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,
|
|
48959
|
+
const stopGenerating = (0, import_react218.useCallback)(() => channel?.stopAIResponse(), [channel]);
|
|
48952
48960
|
const [
|
|
48953
48961
|
showRecordingPermissionDeniedNotification,
|
|
48954
48962
|
setShowRecordingPermissionDeniedNotification
|
|
48955
|
-
] = (0,
|
|
48956
|
-
const closePermissionDeniedNotification = (0,
|
|
48963
|
+
] = (0, import_react218.useState)(false);
|
|
48964
|
+
const closePermissionDeniedNotification = (0, import_react218.useCallback)(() => {
|
|
48957
48965
|
setShowRecordingPermissionDeniedNotification(false);
|
|
48958
48966
|
}, []);
|
|
48959
|
-
const failedUploadsCount = (0,
|
|
48967
|
+
const failedUploadsCount = (0, import_react218.useMemo)(
|
|
48960
48968
|
() => attachments.filter((a2) => a2.localMetadata?.uploadState === "failed").length,
|
|
48961
48969
|
[attachments]
|
|
48962
48970
|
);
|
|
48963
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
49036
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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 ?
|
|
49085
|
+
const dialogManagerId = props.isThreadInput ? `message-input-dialog-manager-thread-${id}` : `message-input-dialog-manager-${id}`;
|
|
49077
49086
|
if (dragAndDropWindow)
|
|
49078
|
-
return /* @__PURE__ */
|
|
49079
|
-
return /* @__PURE__ */
|
|
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 =
|
|
49090
|
+
var MessageInput = import_react220.default.memo(
|
|
49082
49091
|
UnMemoizedMessageInput
|
|
49083
49092
|
);
|
|
49084
49093
|
|
|
49085
49094
|
// src/components/Reactions/ReactionsList.tsx
|
|
49086
|
-
var
|
|
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
|
|
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
|
|
49103
|
+
var import_react221 = require("react");
|
|
49095
49104
|
function useFetchReactions(options) {
|
|
49096
49105
|
const { handleFetchReactions: contextHandleFetchReactions } = useMessageContext("useFetchReactions");
|
|
49097
|
-
const [reactions, setReactions] = (0,
|
|
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,
|
|
49113
|
+
const [isLoading, setIsLoading] = (0, import_react221.useState)(shouldFetch);
|
|
49105
49114
|
const handleFetchReactions = propHandleFetchReactions ?? contextHandleFetchReactions;
|
|
49106
|
-
(0,
|
|
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,
|
|
49171
|
+
const reactionDetailsWithLegacyFallback = (0, import_react222.useMemo)(
|
|
49163
49172
|
() => legacySortReactionDetails ? [...reactionDetails].sort(legacySortReactionDetails) : reactionDetails,
|
|
49164
49173
|
[legacySortReactionDetails, reactionDetails]
|
|
49165
49174
|
);
|
|
49166
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
49179
|
-
({ EmojiComponent, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
49202
|
+
/* @__PURE__ */ import_react222.default.createElement("span", { className: "str-chat__message-reaction-count" }, reactionCount)
|
|
49194
49203
|
)
|
|
49195
49204
|
)),
|
|
49196
|
-
SelectedEmojiComponent && /* @__PURE__ */
|
|
49197
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
49355
|
-
({ EmojiComponent, isOwnReaction, reactionCount, reactionType }) => EmojiComponent && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
49384
|
-
), selectedReactionType !== null && /* @__PURE__ */
|
|
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 =
|
|
49406
|
+
var ReactionsList = import_react224.default.memo(
|
|
49398
49407
|
UnMemoizedReactionsList
|
|
49399
49408
|
);
|
|
49400
49409
|
|
|
49401
49410
|
// src/components/Reactions/SimpleReactionsList.tsx
|
|
49402
|
-
var
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
49459
|
+
/* @__PURE__ */ import_react225.default.createElement(WithTooltip, { title: tooltipContent }, /* @__PURE__ */ import_react225.default.createElement(EmojiComponent, null))
|
|
49451
49460
|
);
|
|
49452
49461
|
}
|
|
49453
49462
|
),
|
|
49454
|
-
/* @__PURE__ */
|
|
49463
|
+
/* @__PURE__ */ import_react225.default.createElement("li", { className: "str-chat__simple-reactions-list-item--last-number" }, totalReactionCount)
|
|
49455
49464
|
));
|
|
49456
49465
|
};
|
|
49457
|
-
var SimpleReactionsList =
|
|
49466
|
+
var SimpleReactionsList = import_react225.default.memo(
|
|
49458
49467
|
UnMemoizedSimpleReactionsList
|
|
49459
49468
|
);
|
|
49460
49469
|
|
|
49461
49470
|
// src/components/Message/MessageEditedTimestamp.tsx
|
|
49462
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
49517
|
-
const [isEditedTimestampOpen, setEditedTimestampOpen] = (0,
|
|
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,
|
|
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__ */
|
|
49555
|
+
return /* @__PURE__ */ import_react227.default.createElement(MessageDeleted2, { message });
|
|
49547
49556
|
}
|
|
49548
49557
|
if (isMessageBlocked(message)) {
|
|
49549
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
49628
|
-
/* @__PURE__ */
|
|
49629
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
49643
|
-
), showReplyCountButton && /* @__PURE__ */
|
|
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__ */
|
|
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 =
|
|
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__ */
|
|
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,
|
|
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,
|
|
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__ */
|
|
49760
|
+
return /* @__PURE__ */ import_react228.default.createElement(MessageProvider, { value: messageContextValue }, /* @__PURE__ */ import_react228.default.createElement(MessageUIComponent, { groupedByUser }));
|
|
49752
49761
|
};
|
|
49753
|
-
var MemoizedMessage =
|
|
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__ */
|
|
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__ */
|
|
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
|
|
49886
|
+
var import_react248 = __toESM(require("react"));
|
|
49878
49887
|
|
|
49879
49888
|
// src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
|
|
49880
|
-
var
|
|
49889
|
+
var import_react230 = require("react");
|
|
49881
49890
|
|
|
49882
49891
|
// src/components/MessageList/utils.ts
|
|
49883
|
-
var
|
|
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,
|
|
49968
|
+
idSuffix = !date ? (0, import_nanoid10.nanoid)() : date instanceof Date ? date.toISOString() : date;
|
|
49960
49969
|
} catch (e2) {
|
|
49961
|
-
idSuffix = (0,
|
|
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,
|
|
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,
|
|
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
|
|
50130
|
+
var import_react232 = require("react");
|
|
50122
50131
|
|
|
50123
50132
|
// src/components/MessageList/hooks/useLastReadData.ts
|
|
50124
|
-
var
|
|
50133
|
+
var import_react231 = require("react");
|
|
50125
50134
|
var useLastReadData = (props) => {
|
|
50126
50135
|
const { messages, read, returnAllReadData, userID } = props;
|
|
50127
|
-
return (0,
|
|
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,
|
|
50168
|
+
const lastReceivedMessageId = (0, import_react232.useMemo)(
|
|
50160
50169
|
() => getLastReceived(enrichedMessages),
|
|
50161
50170
|
[enrichedMessages]
|
|
50162
50171
|
);
|
|
50163
|
-
const elements = (0,
|
|
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
|
|
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,
|
|
50210
|
+
const measures = (0, import_react233.useRef)({
|
|
50202
50211
|
offsetHeight: 0,
|
|
50203
50212
|
scrollHeight: 0
|
|
50204
50213
|
});
|
|
50205
|
-
const messages = (0,
|
|
50206
|
-
const scrollTop = (0,
|
|
50207
|
-
(0,
|
|
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
|
|
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,
|
|
50258
|
-
const [wrapperRect, setWrapperRect] = (0,
|
|
50259
|
-
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0,
|
|
50260
|
-
const closeToBottom = (0,
|
|
50261
|
-
const closeToTop = (0,
|
|
50262
|
-
const scrollToBottom = (0,
|
|
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,
|
|
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,
|
|
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
|
|
50331
|
+
var import_react237 = require("react");
|
|
50323
50332
|
|
|
50324
50333
|
// src/components/MessageList/MessageListMainPanel.tsx
|
|
50325
|
-
var
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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,
|
|
50364
|
-
const isScrolledAboveTargetTop = (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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__ */
|
|
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 =
|
|
50520
|
+
var MessageNotification = import_react239.default.memo(
|
|
50512
50521
|
UnMemoizedMessageNotification
|
|
50513
50522
|
);
|
|
50514
50523
|
|
|
50515
50524
|
// src/components/MessageList/MessageListNotifications.tsx
|
|
50516
|
-
var
|
|
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__ */
|
|
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
|
|
50552
|
+
var import_react242 = __toESM(require("react"));
|
|
50544
50553
|
|
|
50545
50554
|
// src/components/MessageList/icons.tsx
|
|
50546
|
-
var
|
|
50547
|
-
var ArrowDown = ({ className, color: color2 }) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
50585
|
-
/* @__PURE__ */
|
|
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
|
|
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,
|
|
50622
|
-
const previousOffset = (0,
|
|
50623
|
-
const previousReverseOffset = (0,
|
|
50624
|
-
const scrollListenerRef = (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,
|
|
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,
|
|
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,
|
|
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
|
|
50701
|
+
return import_react243.default.createElement(element4, attributes, childrenArray);
|
|
50693
50702
|
};
|
|
50694
50703
|
|
|
50695
50704
|
// src/components/TypingIndicator/TypingIndicator.tsx
|
|
50696
|
-
var
|
|
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__ */
|
|
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__ */
|
|
50743
|
-
/* @__PURE__ */
|
|
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 =
|
|
50755
|
+
var TypingIndicator = import_react244.default.memo(
|
|
50747
50756
|
UnMemoizedTypingIndicator
|
|
50748
50757
|
);
|
|
50749
50758
|
|
|
50750
50759
|
// src/components/MessageList/renderMessages.tsx
|
|
50751
|
-
var
|
|
50760
|
+
var import_react247 = __toESM(require("react"));
|
|
50752
50761
|
|
|
50753
50762
|
// src/components/DateSeparator/DateSeparator.tsx
|
|
50754
|
-
var
|
|
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__ */
|
|
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 =
|
|
50785
|
+
var DateSeparator = import_react245.default.memo(
|
|
50777
50786
|
UnMemoizedDateSeparator
|
|
50778
50787
|
);
|
|
50779
50788
|
|
|
50780
50789
|
// src/components/EventComponent/EventComponent.tsx
|
|
50781
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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] =
|
|
50941
|
-
const [ulElement, setUlElement] =
|
|
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 =
|
|
51038
|
+
const loadMore = import_react248.default.useCallback(() => {
|
|
51030
51039
|
if (loadMoreCallback) {
|
|
51031
51040
|
loadMoreCallback(messageLimit);
|
|
51032
51041
|
}
|
|
51033
51042
|
}, [loadMoreCallback, messageLimit]);
|
|
51034
|
-
const loadMoreNewer =
|
|
51043
|
+
const loadMoreNewer = import_react248.default.useCallback(() => {
|
|
51035
51044
|
if (loadMoreNewerCallback) {
|
|
51036
51045
|
loadMoreNewerCallback(messageLimit);
|
|
51037
51046
|
}
|
|
51038
51047
|
}, [loadMoreNewerCallback, messageLimit]);
|
|
51039
|
-
const scrollToBottomFromNotification =
|
|
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
|
-
|
|
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 ?
|
|
51056
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
51085
|
-
/* @__PURE__ */
|
|
51086
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
51133
|
-
const [replyCount, setReplyCount] = (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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
51176
|
-
countUnread > 0 && /* @__PURE__ */
|
|
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 =
|
|
51199
|
+
var ScrollToBottomButton = import_react249.default.memo(
|
|
51190
51200
|
UnMemoizedScrollToBottomButton
|
|
51191
51201
|
);
|
|
51192
51202
|
|
|
51193
51203
|
// src/components/MessageList/VirtualizedMessageList.tsx
|
|
51194
|
-
var
|
|
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
|
|
51208
|
+
var import_react250 = require("react");
|
|
51199
51209
|
function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
|
|
51200
|
-
const [newMessagesNotification, setNewMessagesNotification] = (0,
|
|
51201
|
-
const [isMessageListScrolledToBottom, setIsMessageListScrolledToBottom] = (0,
|
|
51202
|
-
const didMount = (0,
|
|
51203
|
-
const lastMessageId = (0,
|
|
51204
|
-
const atBottom = (0,
|
|
51205
|
-
(0,
|
|
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
|
|
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,
|
|
51239
|
-
const previousFirstMessageOnFirstLoadedPage = (0,
|
|
51240
|
-
const previousNumItemsPrepended = (0,
|
|
51241
|
-
const numItemsPrepended = (0,
|
|
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
|
|
51281
|
+
var import_react252 = require("react");
|
|
51272
51282
|
function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
51273
|
-
const lastFocusedOwnMessage = (0,
|
|
51274
|
-
const initialFocusRegistered = (0,
|
|
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,
|
|
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
|
|
51305
|
+
var import_react253 = require("react");
|
|
51296
51306
|
var useGiphyPreview = (separateGiphyPreview) => {
|
|
51297
|
-
const [giphyPreviewMessage, setGiphyPreviewMessage] = (0,
|
|
51307
|
+
const [giphyPreviewMessage, setGiphyPreviewMessage] = (0, import_react253.useState)();
|
|
51298
51308
|
const { client } = useChatContext("useGiphyPreview");
|
|
51299
|
-
(0,
|
|
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
|
|
51326
|
+
var import_react254 = require("react");
|
|
51317
51327
|
var useMessageSetKey = ({
|
|
51318
51328
|
messages
|
|
51319
51329
|
}) => {
|
|
51320
|
-
const [messageSetKey, setMessageSetKey] = (0,
|
|
51321
|
-
const firstMessageId = (0,
|
|
51322
|
-
(0,
|
|
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
|
|
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,
|
|
51344
|
-
const scrollToBottomIfConfigured = (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,
|
|
51361
|
+
(0, import_react255.useEffect)(() => {
|
|
51352
51362
|
setNewMessagesReceivedInBackground(true);
|
|
51353
51363
|
}, [messages]);
|
|
51354
|
-
(0,
|
|
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
|
|
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,
|
|
51380
|
-
const toggleShowUnreadMessagesNotification = (0,
|
|
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,
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
51493
|
+
if (!message) return /* @__PURE__ */ import_react257.default.createElement("div", { style: { height: "1px" } });
|
|
51484
51494
|
if (isDateSeparatorMessage(message)) {
|
|
51485
|
-
return DateSeparator2 ? /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
51532
|
-
var VirtualizedMessageListContext = (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__ */
|
|
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,
|
|
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,
|
|
51638
|
-
const lastRead = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 ?
|
|
51793
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
51809
|
+
), /* @__PURE__ */ import_react259.default.createElement(
|
|
51799
51810
|
"div",
|
|
51800
51811
|
{
|
|
51801
51812
|
className: customClasses?.virtualizedMessageList || "str-chat__virtual-list"
|
|
51802
51813
|
},
|
|
51803
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
52134
|
+
return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, EmptyPlaceholder2);
|
|
52124
52135
|
}
|
|
52125
|
-
return /* @__PURE__ */
|
|
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,
|
|
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,
|
|
52163
|
-
const [notifications, setNotifications] = (0,
|
|
52164
|
-
const [quotedMessage, setQuotedMessage] = (0,
|
|
52165
|
-
const [channelUnreadUiState, _setChannelUnreadUiState] = (0,
|
|
52166
|
-
const notificationTimeouts = (0,
|
|
52167
|
-
const channelReducer = (0,
|
|
52168
|
-
const [state, dispatch] = (0,
|
|
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,
|
|
52181
|
-
const lastRead = (0,
|
|
52182
|
-
const online = (0,
|
|
52183
|
-
const clearHighlightedMessageTimeoutId = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
52414
|
+
const addNotification = (0, import_react260.useMemo)(
|
|
52404
52415
|
() => makeAddNotifications(setNotifications, notificationTimeouts.current),
|
|
52405
52416
|
[]
|
|
52406
52417
|
);
|
|
52407
|
-
const loadMoreFinished = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
53021
|
+
return /* @__PURE__ */ import_react260.default.createElement(ChannelContainer, null, /* @__PURE__ */ import_react260.default.createElement("div", null, t2("Channel Missing")));
|
|
53011
53022
|
}
|
|
53012
|
-
return /* @__PURE__ */
|
|
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 =
|
|
53025
|
+
var Channel = import_react260.default.memo(UnMemoizedChannel);
|
|
53015
53026
|
|
|
53016
53027
|
// src/components/ChannelHeader/ChannelHeader.tsx
|
|
53017
|
-
var
|
|
53028
|
+
var import_react262 = __toESM(require("react"));
|
|
53018
53029
|
|
|
53019
53030
|
// src/components/ChannelHeader/icons.tsx
|
|
53020
|
-
var
|
|
53031
|
+
var import_react261 = __toESM(require("react"));
|
|
53021
53032
|
var MenuIcon2 = ({ title }) => {
|
|
53022
53033
|
const { t: t2 } = useTranslationContext("MenuIcon");
|
|
53023
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
53058
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
53089
|
-
const [mutes, setMutes] = (0,
|
|
53090
|
-
const [navOpen, setNavOpen] = (0,
|
|
53091
|
-
const [latestMessageDatesByChannels, setLatestMessageDatesByChannels] = (0,
|
|
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,
|
|
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,
|
|
53116
|
+
(0, import_react263.useEffect)(() => {
|
|
53106
53117
|
if (!client) return;
|
|
53107
|
-
const version = "12.15.
|
|
53118
|
+
const version = "12.15.3";
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
53243
|
+
var import_react265 = require("react");
|
|
53233
53244
|
var useChannelsQueryState = () => {
|
|
53234
|
-
const [error, setError] = (0,
|
|
53235
|
-
const [queryInProgress, setQueryInProgress] = (0,
|
|
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,
|
|
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__ */
|
|
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
|
|
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,
|
|
53311
|
-
const [cachedUserData, setCachedUserData] = (0,
|
|
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,
|
|
53316
|
-
(0,
|
|
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
|
|
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
|
|
53349
|
+
var import_react269 = __toESM(require("react"));
|
|
53339
53350
|
|
|
53340
53351
|
// src/components/Thread/icons.tsx
|
|
53341
|
-
var
|
|
53352
|
+
var import_react268 = __toESM(require("react"));
|
|
53342
53353
|
var CloseIcon3 = ({ title }) => {
|
|
53343
53354
|
const { t: t2 } = useTranslationContext("CloseIcon");
|
|
53344
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
53353
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
53392
|
+
/* @__PURE__ */ import_react269.default.createElement(CloseIcon3, null)
|
|
53382
53393
|
));
|
|
53383
53394
|
};
|
|
53384
53395
|
|
|
53385
53396
|
// src/components/Thread/ThreadHead.tsx
|
|
53386
|
-
var
|
|
53397
|
+
var import_react271 = __toESM(require("react"));
|
|
53387
53398
|
|
|
53388
53399
|
// src/components/Thread/ThreadStart.tsx
|
|
53389
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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 =
|
|
53544
|
+
var Window = import_react273.default.memo(UnMemoizedWindow);
|
|
53534
53545
|
/*! Bundled license information:
|
|
53535
53546
|
|
|
53536
53547
|
is-buffer/index.js:
|