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